Henri Verbeet : wined3d: Set the correct patch vertex count for the Vulkan adapter.
Alexandre Julliard
julliard at winehq.org
Wed May 20 15:35:39 CDT 2020
Module: wine
Branch: master
Commit: 13e1ac0e99aa73070a65014e88dbf237c810cc65
URL: https://source.winehq.org/git/wine.git/?a=commit;h=13e1ac0e99aa73070a65014e88dbf237c810cc65
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Wed May 20 18:30:32 2020 +0430
wined3d: Set the correct patch vertex count for the Vulkan adapter.
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wined3d/context_vk.c | 13 +++++++++++++
dlls/wined3d/wined3d_private.h | 1 +
2 files changed, 14 insertions(+)
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index 8ab0f6366c..97d05f1dc8 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -1427,6 +1427,9 @@ static int wined3d_graphics_pipeline_vk_compare(const void *key, const struct wi
if (a->ia_desc.primitiveRestartEnable != b->ia_desc.primitiveRestartEnable)
return a->ia_desc.primitiveRestartEnable - b->ia_desc.primitiveRestartEnable;
+ if (a->ts_desc.patchControlPoints != b->ts_desc.patchControlPoints)
+ return a->ts_desc.patchControlPoints - b->ts_desc.patchControlPoints;
+
if ((ret = memcmp(&a->viewport, &b->viewport, sizeof(a->viewport))))
return ret;
@@ -1496,6 +1499,8 @@ static void wined3d_context_vk_init_graphics_pipeline_key(struct wined3d_context
key->ia_desc.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
+ key->ts_desc.sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;
+
key->vp_desc.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
key->vp_desc.viewportCount = 1;
key->vp_desc.pViewports = &key->viewport;
@@ -1526,6 +1531,7 @@ static void wined3d_context_vk_init_graphics_pipeline_key(struct wined3d_context
key->pipeline_desc.pStages = key->stages;
key->pipeline_desc.pVertexInputState = &key->input_desc;
key->pipeline_desc.pInputAssemblyState = &key->ia_desc;
+ key->pipeline_desc.pTessellationState = &key->ts_desc;
key->pipeline_desc.pViewportState = &key->vp_desc;
key->pipeline_desc.pRasterizationState = &key->rs_desc;
key->pipeline_desc.pMultisampleState = &key->ms_desc;
@@ -1751,6 +1757,13 @@ static bool wined3d_context_vk_update_graphics_pipeline_key(struct wined3d_conte
update = true;
}
+ if (key->ts_desc.patchControlPoints != state->patch_vertex_count)
+ {
+ key->ts_desc.patchControlPoints = state->patch_vertex_count;
+
+ update = true;
+ }
+
if (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_VIEWPORT)
|| wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_SCISSORRECT)
|| wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_RASTERIZER))
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 3450633b61..ab5df330e7 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2331,6 +2331,7 @@ struct wined3d_graphics_pipeline_key_vk
VkPipelineVertexInputStateCreateInfo input_desc;
VkPipelineInputAssemblyStateCreateInfo ia_desc;
+ VkPipelineTessellationStateCreateInfo ts_desc;
VkPipelineViewportStateCreateInfo vp_desc;
VkPipelineRasterizationStateCreateInfo rs_desc;
VkPipelineMultisampleStateCreateInfo ms_desc;
More information about the wine-cvs
mailing list