mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-18 08:00:34 +01:00
nvk: Pull shaders from the state command buffer in nvk_cmd_process_cmds()
Found by the VKD3D test suite.
Fixes: 976f22a5da ("nvk: Implement CmdProcess/ExecuteGeneratedCommandsEXT")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33610>
This commit is contained in:
parent
55bdae03cc
commit
39ae06e153
3 changed files with 10 additions and 7 deletions
|
|
@ -365,6 +365,7 @@ nvk_cmd_buffer_get_cbuf_descriptor_addr(struct nvk_cmd_buffer *cmd,
|
|||
const struct nvk_cbuf *cbuf);
|
||||
|
||||
VkResult nvk_cmd_flush_cs_qmd(struct nvk_cmd_buffer *cmd,
|
||||
const struct nvk_cmd_state *state,
|
||||
uint32_t global_size[3],
|
||||
uint64_t *qmd_addr_out,
|
||||
uint64_t *root_desc_addr_out);
|
||||
|
|
|
|||
|
|
@ -202,13 +202,14 @@ nvk_cmd_upload_qmd(struct nvk_cmd_buffer *cmd,
|
|||
|
||||
VkResult
|
||||
nvk_cmd_flush_cs_qmd(struct nvk_cmd_buffer *cmd,
|
||||
const struct nvk_cmd_state *state,
|
||||
uint32_t global_size[3],
|
||||
uint64_t *qmd_addr_out,
|
||||
uint64_t *root_desc_addr_out)
|
||||
{
|
||||
struct nvk_descriptor_state *desc = &cmd->state.cs.descriptors;
|
||||
const struct nvk_descriptor_state *desc = &state->cs.descriptors;
|
||||
|
||||
return nvk_cmd_upload_qmd(cmd, cmd->state.cs.shader,
|
||||
return nvk_cmd_upload_qmd(cmd, state->cs.shader,
|
||||
desc, (void *)desc->root, global_size,
|
||||
qmd_addr_out, root_desc_addr_out);
|
||||
}
|
||||
|
|
@ -257,7 +258,8 @@ nvk_CmdDispatchBase(VkCommandBuffer commandBuffer,
|
|||
nvk_flush_compute_state(cmd, base_workgroup, global_size);
|
||||
|
||||
uint64_t qmd_addr = 0;
|
||||
VkResult result = nvk_cmd_flush_cs_qmd(cmd, global_size, &qmd_addr, NULL);
|
||||
VkResult result = nvk_cmd_flush_cs_qmd(cmd, &cmd->state, global_size,
|
||||
&qmd_addr, NULL);
|
||||
if (result != VK_SUCCESS) {
|
||||
vk_command_buffer_set_error(&cmd->vk, result);
|
||||
return;
|
||||
|
|
@ -496,8 +498,8 @@ nvk_CmdDispatchIndirect(VkCommandBuffer commandBuffer,
|
|||
nvk_flush_compute_state(cmd, base_workgroup, global_size);
|
||||
|
||||
uint64_t qmd_addr = 0, root_desc_addr = 0;
|
||||
VkResult result = nvk_cmd_flush_cs_qmd(cmd, global_size, &qmd_addr,
|
||||
&root_desc_addr);
|
||||
VkResult result = nvk_cmd_flush_cs_qmd(cmd, &cmd->state, global_size,
|
||||
&qmd_addr, &root_desc_addr);
|
||||
if (result != VK_SUCCESS) {
|
||||
vk_command_buffer_set_error(&cmd->vk, result);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -947,8 +947,8 @@ nvk_cmd_process_cmds(struct nvk_cmd_buffer *cmd,
|
|||
uint64_t qmd_addr = 0;
|
||||
if (layout->stages & VK_SHADER_STAGE_COMPUTE_BIT) {
|
||||
uint32_t global_size[3] = { 0, 0, 0 };
|
||||
VkResult result = nvk_cmd_flush_cs_qmd(cmd, global_size, &qmd_addr,
|
||||
&push.root_addr);
|
||||
VkResult result = nvk_cmd_flush_cs_qmd(cmd, state, global_size,
|
||||
&qmd_addr, &push.root_addr);
|
||||
if (unlikely(result != VK_SUCCESS)) {
|
||||
vk_command_buffer_set_error(&cmd->vk, result);
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue