From ed465bf7387ef6b49b2cfafbdf39dd49ea04b931 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Mon, 25 Mar 2024 11:38:04 -0700 Subject: [PATCH] dzn: Delete dzn structs for indirect draw args and use D3D ones Part-of: --- src/microsoft/vulkan/dzn_cmd_buffer.c | 16 ++++++++-------- src/microsoft/vulkan/dzn_nir.c | 2 +- src/microsoft/vulkan/dzn_nir.h | 23 ++++------------------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/microsoft/vulkan/dzn_cmd_buffer.c b/src/microsoft/vulkan/dzn_cmd_buffer.c index 35f078fd4e2..5f3a1fdbf24 100644 --- a/src/microsoft/vulkan/dzn_cmd_buffer.c +++ b/src/microsoft/vulkan/dzn_cmd_buffer.c @@ -3789,8 +3789,8 @@ dzn_cmd_buffer_indirect_draw(struct dzn_cmd_buffer *cmdbuf, cmdbuf->state.bindpoint[VK_PIPELINE_BIND_POINT_GRAPHICS].pipeline; uint32_t min_draw_buf_stride = indexed ? - sizeof(struct dzn_indirect_indexed_draw_params) : - sizeof(struct dzn_indirect_draw_params); + sizeof(D3D12_DRAW_INDEXED_ARGUMENTS) : + sizeof(D3D12_DRAW_ARGUMENTS); bool prim_restart = dzn_graphics_pipeline_get_desc_template(pipeline, ib_strip_cut) != NULL; @@ -5314,12 +5314,12 @@ dzn_CmdDrawIndexed(VkCommandBuffer commandBuffer, * count passed to the draw call, which forces us to use the indirect * path. */ - struct dzn_indirect_indexed_draw_params params = { - .index_count = indexCount, - .instance_count = instanceCount, - .first_index = firstIndex, - .vertex_offset = vertexOffset, - .first_instance = firstInstance, + D3D12_DRAW_INDEXED_ARGUMENTS params = { + .IndexCountPerInstance = indexCount, + .InstanceCount = instanceCount, + .StartIndexLocation = firstIndex, + .BaseVertexLocation = vertexOffset, + .StartInstanceLocation = firstInstance, }; ID3D12Resource *draw_buf; diff --git a/src/microsoft/vulkan/dzn_nir.c b/src/microsoft/vulkan/dzn_nir.c index ba03f2bb7e8..3007a228264 100644 --- a/src/microsoft/vulkan/dzn_nir.c +++ b/src/microsoft/vulkan/dzn_nir.c @@ -229,7 +229,7 @@ dzn_nir_indirect_draw_shader(enum dzn_indirect_draw_type type) triangle_fan_exec_vals[triangle_fan_exec_param_count++] = nir_channel(&b, draw_info1, 2); triangle_fan_exec_vals[triangle_fan_exec_param_count++] = nir_channel(&b, draw_info1, 0); uint32_t index_count_offset = - offsetof(struct dzn_indirect_triangle_fan_draw_exec_params, indexed_draw.index_count); + offsetof(struct dzn_indirect_triangle_fan_draw_exec_params, indexed_draw.IndexCountPerInstance); nir_def *exec_buf_start = nir_load_ubo(&b, 2, 32, params_desc, nir_imm_int(&b, 16), diff --git a/src/microsoft/vulkan/dzn_nir.h b/src/microsoft/vulkan/dzn_nir.h index 0fb33a175f8..9dcbf9072c1 100644 --- a/src/microsoft/vulkan/dzn_nir.h +++ b/src/microsoft/vulkan/dzn_nir.h @@ -31,21 +31,6 @@ #include "nir.h" -struct dzn_indirect_draw_params { - uint32_t vertex_count; - uint32_t instance_count; - uint32_t first_vertex; - uint32_t first_instance; -}; - -struct dzn_indirect_indexed_draw_params { - uint32_t index_count; - uint32_t instance_count; - uint32_t first_index; - int32_t vertex_offset; - uint32_t first_instance; -}; - struct dzn_indirect_draw_rewrite_params { uint32_t draw_buf_stride; }; @@ -70,8 +55,8 @@ struct dzn_indirect_draw_exec_params { uint32_t draw_id; } sysvals; union { - struct dzn_indirect_draw_params draw; - struct dzn_indirect_indexed_draw_params indexed_draw; + D3D12_DRAW_ARGUMENTS draw; + D3D12_DRAW_INDEXED_ARGUMENTS indexed_draw; }; }; @@ -83,8 +68,8 @@ struct dzn_indirect_triangle_fan_draw_exec_params { uint32_t draw_id; } sysvals; union { - struct dzn_indirect_draw_params draw; - struct dzn_indirect_indexed_draw_params indexed_draw; + D3D12_DRAW_ARGUMENTS draw; + D3D12_DRAW_INDEXED_ARGUMENTS indexed_draw; }; };