diff options
author | Jason Ekstrand <[email protected]> | 2017-12-15 16:53:03 -0800 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2018-01-26 19:53:00 +0000 |
commit | 19b3e2b7818465eb5a69ceb8c1915987f914b227 (patch) | |
tree | 452d10f77b7f02820d2fd1c1f5ab0e3d173ebee7 | |
parent | 81a740b94180ddcbd5448ca0bd89ae55f34f12c2 (diff) |
anv/cmd_buffer: Move num_workgroups to compute state
While we're here, make it an anv_address.
Tested-by: Józef Kucia <[email protected]>
Reviewed-by: Topi Pohjolainen <[email protected]>
Cc: "18.0" <[email protected]>
(cherry picked from commit 38ec78049f69821091a2d42b0f457a1b044d4273)
-rw-r--r-- | src/intel/vulkan/anv_private.h | 4 | ||||
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 17 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index f3d2558cb78..c6fab614a90 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1709,6 +1709,8 @@ struct anv_cmd_compute_state { struct anv_cmd_pipeline_state base; bool pipeline_dirty; + + struct anv_address num_workgroups; }; /** State required while building cmd buffer */ @@ -1721,8 +1723,6 @@ struct anv_cmd_state { struct anv_cmd_compute_state compute; enum anv_pipe_bits pending_pipe_bits; - uint32_t num_workgroups_offset; - struct anv_bo *num_workgroups_bo; VkShaderStageFlags descriptors_dirty; VkShaderStageFlags push_constants_dirty; diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index f4b44111e3d..c23a54fb7b9 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1534,8 +1534,8 @@ emit_binding_table(struct anv_cmd_buffer *cmd_buffer, if (stage == MESA_SHADER_COMPUTE && get_cs_prog_data(pipeline)->uses_num_work_groups) { - struct anv_bo *bo = cmd_buffer->state.num_workgroups_bo; - uint32_t bo_offset = cmd_buffer->state.num_workgroups_offset; + struct anv_bo *bo = cmd_buffer->state.compute.num_workgroups.bo; + uint32_t bo_offset = cmd_buffer->state.compute.num_workgroups.offset; struct anv_state surface_state; surface_state = @@ -2623,9 +2623,10 @@ void genX(CmdDispatch)( sizes[1] = y; sizes[2] = z; anv_state_flush(cmd_buffer->device, state); - cmd_buffer->state.num_workgroups_offset = state.offset; - cmd_buffer->state.num_workgroups_bo = - &cmd_buffer->device->dynamic_state_pool.block_pool.bo; + cmd_buffer->state.compute.num_workgroups = (struct anv_address) { + .bo = &cmd_buffer->device->dynamic_state_pool.block_pool.bo, + .offset = state.offset, + }; } genX(cmd_buffer_flush_compute_state)(cmd_buffer); @@ -2672,8 +2673,10 @@ void genX(CmdDispatchIndirect)( #endif if (prog_data->uses_num_work_groups) { - cmd_buffer->state.num_workgroups_offset = bo_offset; - cmd_buffer->state.num_workgroups_bo = bo; + cmd_buffer->state.compute.num_workgroups = (struct anv_address) { + .bo = bo, + .offset = bo_offset, + }; } genX(cmd_buffer_flush_compute_state)(cmd_buffer); |