gen8/cmd_buffer: Don't push CS constants if there aren't any
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 11 Dec 2015 02:56:15 +0000 (18:56 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 11 Dec 2015 02:56:27 +0000 (18:56 -0800)
Issuing MEDIA_CURB_LOAD with a size of zero causes GPU hangs on BDW.

src/vulkan/gen8_cmd_buffer.c

index 8d17066ee6ffd8f4cbe64b7e354be4a087767151..5e566d3aaa16e49718867bfde81bab30919cb3a1 100644 (file)
@@ -525,9 +525,11 @@ flush_compute_descriptor_set(struct anv_cmd_buffer *cmd_buffer)
    unsigned reg_aligned_constant_size = ALIGN(push_constant_data_size, 32);
    unsigned push_constant_regs = reg_aligned_constant_size / 32;
 
-   anv_batch_emit(&cmd_buffer->batch, GENX(MEDIA_CURBE_LOAD),
-                  .CURBETotalDataLength = push_state.alloc_size,
-                  .CURBEDataStartAddress = push_state.offset);
+   if (push_state.alloc_size) {
+      anv_batch_emit(&cmd_buffer->batch, GENX(MEDIA_CURBE_LOAD),
+                     .CURBETotalDataLength = push_state.alloc_size,
+                     .CURBEDataStartAddress = push_state.offset);
+   }
 
    struct anv_state state =
       anv_state_pool_emit(&device->dynamic_state_pool,