r600g: setup const texture buffers for geom shaders
authorDave Airlie <airlied@redhat.com>
Tue, 28 Jan 2014 02:06:49 +0000 (12:06 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 5 Feb 2014 00:49:41 +0000 (10:49 +1000)
This just enables the workarounds we have for vertex/pixel shaders
for geom shaders as well.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
src/gallium/drivers/r600/r600_state_common.c

index 96fdd0e00ad16208c3800183ada82f2571be59a1..0c32974430f4c51253b8bfbdabfa7adb5953b0b4 100644 (file)
@@ -1252,11 +1252,15 @@ static bool r600_update_derived_state(struct r600_context *rctx)
                        r600_setup_buffer_constants(rctx, PIPE_SHADER_FRAGMENT);
                if (rctx->vs_shader && rctx->vs_shader->current->shader.uses_tex_buffers)
                        r600_setup_buffer_constants(rctx, PIPE_SHADER_VERTEX);
+               if (rctx->gs_shader && rctx->gs_shader->current->shader.uses_tex_buffers)
+                       r600_setup_buffer_constants(rctx, PIPE_SHADER_GEOMETRY);
        } else {
                if (rctx->ps_shader && rctx->ps_shader->current->shader.uses_tex_buffers)
                        eg_setup_buffer_constants(rctx, PIPE_SHADER_FRAGMENT);
                if (rctx->vs_shader && rctx->vs_shader->current->shader.uses_tex_buffers)
                        eg_setup_buffer_constants(rctx, PIPE_SHADER_VERTEX);
+               if (rctx->gs_shader && rctx->gs_shader->current->shader.uses_tex_buffers)
+                       eg_setup_buffer_constants(rctx, PIPE_SHADER_GEOMETRY);
        }
 
 
@@ -1264,6 +1268,8 @@ static bool r600_update_derived_state(struct r600_context *rctx)
                r600_setup_txq_cube_array_constants(rctx, PIPE_SHADER_FRAGMENT);
        if (rctx->vs_shader && rctx->vs_shader->current->shader.has_txq_cube_array_z_comp)
                r600_setup_txq_cube_array_constants(rctx, PIPE_SHADER_VERTEX);
+       if (rctx->gs_shader && rctx->gs_shader->current->shader.has_txq_cube_array_z_comp)
+               r600_setup_txq_cube_array_constants(rctx, PIPE_SHADER_GEOMETRY);
 
        if (rctx->b.chip_class < EVERGREEN && rctx->ps_shader && rctx->vs_shader) {
                if (!r600_adjust_gprs(rctx)) {