anv/cmd_buffer: Re-emit push constants packets for all stages
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 29 Feb 2016 22:27:10 +0000 (14:27 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 29 Feb 2016 22:36:24 +0000 (14:36 -0800)
src/intel/vulkan/gen7_cmd_buffer.c
src/intel/vulkan/gen8_cmd_buffer.c

index 26339bbf0d968d2a4d7227ac9000ac6db694a7bc..b0456ae4c67108af02103dba81e336ce04bda992 100644 (file)
@@ -52,20 +52,20 @@ cmd_buffer_flush_push_constants(struct anv_cmd_buffer *cmd_buffer)
 
       struct anv_state state = anv_cmd_buffer_push_constants(cmd_buffer, stage);
 
-      if (state.offset == 0)
-         continue;
-
-      anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CONSTANT_VS),
-                     ._3DCommandSubOpcode = push_constant_opcodes[stage],
-                     .ConstantBody = {
-                        .PointerToConstantBuffer0 = { .offset = state.offset },
-                        .ConstantBuffer0ReadLength = DIV_ROUND_UP(state.alloc_size, 32),
-                     });
-
-      flushed |= mesa_to_vk_shader_stage(stage);
+      if (state.offset == 0) {
+         anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CONSTANT_VS),
+                        ._3DCommandSubOpcode = push_constant_opcodes[stage]);
+      } else {
+         anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CONSTANT_VS),
+                        ._3DCommandSubOpcode = push_constant_opcodes[stage],
+                        .ConstantBody = {
+                           .PointerToConstantBuffer0 = { .offset = state.offset },
+                           .ConstantBuffer0ReadLength = DIV_ROUND_UP(state.alloc_size, 32),
+                        });
+      }
    }
 
-   cmd_buffer->state.push_constants_dirty &= ~flushed;
+   cmd_buffer->state.push_constants_dirty &= ~VK_SHADER_STAGE_ALL_GRAPHICS;
 
    return flushed;
 }
index 3221f5e2dc4d92e46c9d88e446ee8cea4d41c443..2e979d92760623335df31ab3399dfecba99cc3f0 100644 (file)
@@ -52,20 +52,20 @@ cmd_buffer_flush_push_constants(struct anv_cmd_buffer *cmd_buffer)
 
       struct anv_state state = anv_cmd_buffer_push_constants(cmd_buffer, stage);
 
-      if (state.offset == 0)
-         continue;
-
-      anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CONSTANT_VS),
-                     ._3DCommandSubOpcode = push_constant_opcodes[stage],
-                     .ConstantBody = {
-                        .PointerToConstantBuffer2 = { &cmd_buffer->device->dynamic_state_block_pool.bo, state.offset },
-                        .ConstantBuffer2ReadLength = DIV_ROUND_UP(state.alloc_size, 32),
-                     });
-
-      flushed |= mesa_to_vk_shader_stage(stage);
+      if (state.offset == 0) {
+         anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CONSTANT_VS),
+                        ._3DCommandSubOpcode = push_constant_opcodes[stage]);
+      } else {
+         anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CONSTANT_VS),
+                        ._3DCommandSubOpcode = push_constant_opcodes[stage],
+                        .ConstantBody = {
+                           .PointerToConstantBuffer2 = { &cmd_buffer->device->dynamic_state_block_pool.bo, state.offset },
+                           .ConstantBuffer2ReadLength = DIV_ROUND_UP(state.alloc_size, 32),
+                        });
+      }
    }
 
-   cmd_buffer->state.push_constants_dirty &= ~flushed;
+   cmd_buffer->state.push_constants_dirty &= ~VK_SHADER_STAGE_ALL_GRAPHICS;
 
    return flushed;
 }