Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/vkd3d-proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-09-08 16:18:13 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2022-09-08 17:33:08 +0300
commit2be740beb15ca46b9f560d5de3130753a3df4603 (patch)
tree4b4204cbba6752327e6cd7647e00d2b779a2a7f6
parent6673bd875497fdf2735e41b7f0b60ea566b4b653 (diff)
vkd3d: Introduce VKD3D_PIPELINE_TYPE_MESH_GRAPHICS.
This is required to use the correct pipeline layout for mesh shading pipelines. Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
-rw-r--r--libs/vkd3d/command.c6
-rw-r--r--libs/vkd3d/state.c3
-rw-r--r--libs/vkd3d/vkd3d_private.h9
3 files changed, 14 insertions, 4 deletions
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c
index 0a321321..7f558fe1 100644
--- a/libs/vkd3d/command.c
+++ b/libs/vkd3d/command.c
@@ -7512,7 +7512,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_SetPipelineState(d3d12_command_
{
TRACE("Binding compute module with hash: %016"PRIx64".\n", state->compute.code.meta.hash);
}
- else if (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS)
+ else if (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS ||
+ state->pipeline_type == VKD3D_PIPELINE_TYPE_MESH_GRAPHICS)
{
for (i = 0; i < state->graphics.stage_count; i++)
{
@@ -7535,7 +7536,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_SetPipelineState(d3d12_command_
cmd.shader.stage = VK_SHADER_STAGE_COMPUTE_BIT;
vkd3d_breadcrumb_tracer_add_command(list, &cmd);
}
- else if (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS)
+ else if (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS ||
+ state->pipeline_type == VKD3D_PIPELINE_TYPE_MESH_GRAPHICS)
{
for (i = 0; i < state->graphics.stage_count; i++)
{
diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c
index 3d76049d..9303fd0c 100644
--- a/libs/vkd3d/state.c
+++ b/libs/vkd3d/state.c
@@ -3700,7 +3700,8 @@ bool d3d12_pipeline_state_has_replaced_shaders(struct d3d12_pipeline_state *stat
unsigned int i;
if (state->pipeline_type == VKD3D_PIPELINE_TYPE_COMPUTE)
return !!(state->compute.code.meta.flags & VKD3D_SHADER_META_FLAG_REPLACED);
- else if (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS)
+ else if (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS ||
+ state->pipeline_type == VKD3D_PIPELINE_TYPE_MESH_GRAPHICS)
{
for (i = 0; i < state->graphics.stage_count; i++)
if (state->graphics.code[i].meta.flags & VKD3D_SHADER_META_FLAG_REPLACED)
diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h
index c71019dc..92eed5ca 100644
--- a/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/vkd3d_private.h
@@ -1373,6 +1373,7 @@ enum vkd3d_pipeline_type
{
VKD3D_PIPELINE_TYPE_NONE,
VKD3D_PIPELINE_TYPE_GRAPHICS,
+ VKD3D_PIPELINE_TYPE_MESH_GRAPHICS,
VKD3D_PIPELINE_TYPE_COMPUTE,
VKD3D_PIPELINE_TYPE_RAY_TRACING,
};
@@ -1384,6 +1385,7 @@ static inline VkPipelineBindPoint vk_bind_point_from_pipeline_type(enum vkd3d_pi
case VKD3D_PIPELINE_TYPE_NONE:
break;
case VKD3D_PIPELINE_TYPE_GRAPHICS:
+ case VKD3D_PIPELINE_TYPE_MESH_GRAPHICS:
return VK_PIPELINE_BIND_POINT_GRAPHICS;
case VKD3D_PIPELINE_TYPE_COMPUTE:
return VK_PIPELINE_BIND_POINT_COMPUTE;
@@ -1531,6 +1533,9 @@ static inline const struct d3d12_bind_point_layout *d3d12_root_signature_get_lay
case VKD3D_PIPELINE_TYPE_GRAPHICS:
return &root_signature->graphics;
+ case VKD3D_PIPELINE_TYPE_MESH_GRAPHICS:
+ return &root_signature->mesh;
+
case VKD3D_PIPELINE_TYPE_COMPUTE:
return &root_signature->compute;
@@ -1677,7 +1682,8 @@ static inline bool d3d12_pipeline_state_is_compute(const struct d3d12_pipeline_s
static inline bool d3d12_pipeline_state_is_graphics(const struct d3d12_pipeline_state *state)
{
- return state && state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS;
+ return state && (state->pipeline_type == VKD3D_PIPELINE_TYPE_GRAPHICS ||
+ state->pipeline_type == VKD3D_PIPELINE_TYPE_MESH_GRAPHICS);
}
/* This returns true for invalid D3D12 API usage. Game intends to use depth-stencil tests,
@@ -2333,6 +2339,7 @@ static inline struct vkd3d_pipeline_bindings *d3d12_command_list_get_bindings(
break;
case VKD3D_PIPELINE_TYPE_GRAPHICS:
+ case VKD3D_PIPELINE_TYPE_MESH_GRAPHICS:
return &list->graphics_bindings;
case VKD3D_PIPELINE_TYPE_COMPUTE: