From: Nicolai Hähnle <nicolai.haeh...@amd.com>

Fixes 
GL45-CTS.gtf40.GL3Tests.transform_feedback3.transform_feedback3_geometry_instanced.

Cc: mesa-sta...@lists.freedesktop.org
---
 src/gallium/drivers/radeonsi/si_state_shaders.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 0afc3b4..ea71569 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -2031,24 +2031,29 @@ static bool si_update_gs_ring_buffers(struct si_context 
*sctx)
 
        /* Set ring bindings. */
        if (sctx->esgs_ring) {
                si_set_ring_buffer(&sctx->b.b, SI_ES_RING_ESGS,
                                   sctx->esgs_ring, 0, sctx->esgs_ring->width0,
                                   true, true, 4, 64, 0);
                si_set_ring_buffer(&sctx->b.b, SI_GS_RING_ESGS,
                                   sctx->esgs_ring, 0, sctx->esgs_ring->width0,
                                   false, false, 0, 0, 0);
        }
-       if (sctx->gsvs_ring)
+       if (sctx->gsvs_ring) {
                si_set_ring_buffer(&sctx->b.b, SI_VS_RING_GSVS,
                                   sctx->gsvs_ring, 0, sctx->gsvs_ring->width0,
                                   false, false, 0, 0, 0);
+
+               /* Also update SI_GS_RING_GSVSi descriptors. */
+               sctx->last_gsvs_itemsize = 0;
+       }
+
        return true;
 }
 
 static void si_update_gsvs_ring_bindings(struct si_context *sctx)
 {
        unsigned gsvs_itemsize = sctx->gs_shader.cso->max_gsvs_emit_size;
        uint64_t offset;
 
        if (!sctx->gsvs_ring || gsvs_itemsize == sctx->last_gsvs_itemsize)
                return;
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to