dzn: Support vkCmdDispatchBase

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20823>
This commit is contained in:
Jesse Natalie
2023-01-11 15:10:15 -08:00
committed by Marge Bot
parent 296ad630db
commit 0bae7a307c
2 changed files with 14 additions and 4 deletions

View File

@@ -4080,16 +4080,22 @@ dzn_CmdClearDepthStencilImage(VkCommandBuffer commandBuffer,
} }
VKAPI_ATTR void VKAPI_CALL VKAPI_ATTR void VKAPI_CALL
dzn_CmdDispatch(VkCommandBuffer commandBuffer, dzn_CmdDispatchBase(VkCommandBuffer commandBuffer,
uint32_t groupCountX, uint32_t baseGroupX,
uint32_t groupCountY, uint32_t baseGroupY,
uint32_t groupCountZ) uint32_t baseGroupZ,
uint32_t groupCountX,
uint32_t groupCountY,
uint32_t groupCountZ)
{ {
VK_FROM_HANDLE(dzn_cmd_buffer, cmdbuf, commandBuffer); VK_FROM_HANDLE(dzn_cmd_buffer, cmdbuf, commandBuffer);
cmdbuf->state.sysvals.compute.group_count_x = groupCountX; cmdbuf->state.sysvals.compute.group_count_x = groupCountX;
cmdbuf->state.sysvals.compute.group_count_y = groupCountY; cmdbuf->state.sysvals.compute.group_count_y = groupCountY;
cmdbuf->state.sysvals.compute.group_count_z = groupCountZ; cmdbuf->state.sysvals.compute.group_count_z = groupCountZ;
cmdbuf->state.sysvals.compute.base_group_x = baseGroupX;
cmdbuf->state.sysvals.compute.base_group_y = baseGroupY;
cmdbuf->state.sysvals.compute.base_group_z = baseGroupZ;
cmdbuf->state.bindpoint[VK_PIPELINE_BIND_POINT_COMPUTE].dirty |= cmdbuf->state.bindpoint[VK_PIPELINE_BIND_POINT_COMPUTE].dirty |=
DZN_CMD_BINDPOINT_DIRTY_SYSVALS; DZN_CMD_BINDPOINT_DIRTY_SYSVALS;
@@ -5359,6 +5365,9 @@ dzn_CmdDispatchIndirect(VkCommandBuffer commandBuffer,
cmdbuf->state.sysvals.compute.group_count_x = 0; cmdbuf->state.sysvals.compute.group_count_x = 0;
cmdbuf->state.sysvals.compute.group_count_y = 0; cmdbuf->state.sysvals.compute.group_count_y = 0;
cmdbuf->state.sysvals.compute.group_count_z = 0; cmdbuf->state.sysvals.compute.group_count_z = 0;
cmdbuf->state.sysvals.compute.base_group_x = 0;
cmdbuf->state.sysvals.compute.base_group_y = 0;
cmdbuf->state.sysvals.compute.base_group_z = 0;
cmdbuf->state.bindpoint[VK_PIPELINE_BIND_POINT_COMPUTE].dirty |= cmdbuf->state.bindpoint[VK_PIPELINE_BIND_POINT_COMPUTE].dirty |=
DZN_CMD_BINDPOINT_DIRTY_SYSVALS; DZN_CMD_BINDPOINT_DIRTY_SYSVALS;

View File

@@ -250,6 +250,7 @@ dzn_pipeline_get_nir_shader(struct dzn_device *device,
.base_shader_register = 0, .base_shader_register = 0,
}, },
.zero_based_vertex_instance_id = false, .zero_based_vertex_instance_id = false,
.zero_based_compute_workgroup_id = false,
.yz_flip = { .yz_flip = {
.mode = options->yz_flip_mode, .mode = options->yz_flip_mode,
.y_mask = options->y_flip_mask, .y_mask = options->y_flip_mask,