i965: use L3 data cache for SSBOs
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Mon, 26 Sep 2016 14:08:52 +0000 (15:08 +0100)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 5 Oct 2016 11:24:04 +0000 (12:24 +0100)
Anv programs the hardware to use L3 data cache if we use either SSBOs or
images in the shaders, we can program i965 the same way.

gl_shader_program has a bit of a confusing named field with
'NumAtomicBuffers'. It doesn't tell how many buffers are accessed by the
shader in an atomic way but instead the number of atomic counters
manipulated by the shader.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/gen7_l3_state.c

index ad704916c29fec962fa64f44eb371dc387fc42f0..0692b081b834a6036120fedb386f8c99ac2a216b 100644 (file)
@@ -53,7 +53,8 @@ get_pipeline_state_l3_weights(const struct brw_context *brw)
          brw->ctx._Shader->CurrentProgram[stage_states[i]->stage];
       const struct brw_stage_prog_data *prog_data = stage_states[i]->prog_data;
 
-      needs_dc |= (prog && prog->NumAtomicBuffers) ||
+      needs_dc |= (prog && (prog->NumAtomicBuffers ||
+                            prog->NumShaderStorageBlocks)) ||
          (prog_data && (prog_data->total_scratch || prog_data->nr_image_params));
       needs_slm |= prog_data && prog_data->total_shared;
    }