mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 22:50:08 +01:00
anv/cmd_buffer: Move num_workgroups to compute state
While we're here, make it an anv_address. Tested-by: Józef Kucia <joseph.kucia@gmail.com> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com> Cc: "18.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
95ff232294
commit
38ec78049f
2 changed files with 12 additions and 9 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue