=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d: Implement primitive restart.
Alexandre Julliard
julliard at winehq.org
Mon Dec 3 15:23:59 CST 2018
Module: vkd3d
Branch: master
Commit: afb648d19da2f645f09771240f257e6d85fd0301
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=afb648d19da2f645f09771240f257e6d85fd0301
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Mon Dec 3 11:31:28 2018 +0100
vkd3d: Implement primitive restart.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
libs/vkd3d/state.c | 17 ++++++++++++++++-
libs/vkd3d/vkd3d_private.h | 1 +
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c
index 1fefb61..03d8ef3 100644
--- a/libs/vkd3d/state.c
+++ b/libs/vkd3d/state.c
@@ -2233,6 +2233,21 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
graphics->attribute_count = j;
vkd3d_shader_free_shader_signature(&input_signature);
+ switch (desc->IBStripCutValue)
+ {
+ case D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED:
+ graphics->primitive_restart_enable = VK_FALSE;
+ break;
+ case D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF:
+ case D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF:
+ graphics->primitive_restart_enable = VK_TRUE;
+ break;
+ default:
+ WARN("Invalid index buffer strip cut value %#x.\n", desc->IBStripCutValue);
+ hr = E_INVALIDARG;
+ goto fail;
+ }
+
sub_pass_desc.flags = 0;
sub_pass_desc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
sub_pass_desc.inputAttachmentCount = 0;
@@ -2491,7 +2506,7 @@ VkPipeline d3d12_pipeline_state_get_or_create_pipeline(struct d3d12_pipeline_sta
ia_desc.pNext = NULL;
ia_desc.flags = 0;
ia_desc.topology = topology;
- ia_desc.primitiveRestartEnable = VK_FALSE;
+ ia_desc.primitiveRestartEnable = graphics->primitive_restart_enable;
blend_desc.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
blend_desc.pNext = NULL;
diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h
index 2fc31da..f977559 100644
--- a/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/vkd3d_private.h
@@ -531,6 +531,7 @@ struct d3d12_graphics_pipeline_state
size_t attachment_count, rt_idx;
VkRenderPass render_pass;
+ VkBool32 primitive_restart_enable;
struct VkPipelineRasterizationStateCreateInfo rs_desc;
struct VkPipelineMultisampleStateCreateInfo ms_desc;
struct VkPipelineDepthStencilStateCreateInfo ds_desc;
More information about the wine-cvs
mailing list