anv/cmd_buffer: Set the L3 atomic disable mask bit in CHICKEN3 on HSW
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 12 Sep 2016 19:58:38 +0000 (12:58 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 15 Sep 2016 00:53:16 +0000 (17:53 -0700)
Without this bit set, the value in "L3 Atomic Disable" won't get applied by
the hardware so we won't properly get L3 atomic caching.

Fixes dEQP-VK.spirv_assembly.instruction.compute.opatomic.compex and 198 of
the dEQP-VK.image.atomic_operations.* tests on HSW

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/intel/genxml/gen75.xml
src/intel/vulkan/genX_cmd_buffer.c

index 27112b6..1debc3a 100644 (file)
 
   <register name="CHICKEN3" length="1" num="0xe49c">
     <field name="L3 Atomic Disable" start="6" end="6" type="uint"/>
+    <field name="L3 Atomic Disable Mask" start="22" end="22" type="uint"/>
   </register>
 
 </genxml>
index b6f93e7..6a84383 100644 (file)
@@ -296,6 +296,7 @@ genX(cmd_buffer_config_l3)(struct anv_cmd_buffer *cmd_buffer,
       anv_pack_struct(&scratch1, GENX(SCRATCH1),
                       .L3AtomicDisable = !has_dc);
       anv_pack_struct(&chicken3, GENX(CHICKEN3),
+                      .L3AtomicDisableMask = true,
                       .L3AtomicDisable = !has_dc);
       emit_lri(&cmd_buffer->batch, GENX(SCRATCH1_num), scratch1);
       emit_lri(&cmd_buffer->batch, GENX(CHICKEN3_num), chicken3);