From a680fdd91b22d8897a43373b46f7e06a1e56e393 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Mon, 28 Nov 2016 11:19:12 +0100 Subject: [PATCH] libs/vkd3d: Implement d3d12_command_list_OMSetStencilRef(). --- libs/vkd3d/command.c | 9 ++++++++- libs/vkd3d/state.c | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index 7d03fee6..bb1a706f 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -1465,6 +1465,7 @@ static bool d3d12_command_list_update_current_pipeline(struct d3d12_command_list { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, + VK_DYNAMIC_STATE_STENCIL_REFERENCE, }; static const struct VkPipelineDynamicStateCreateInfo dynamic_desc = { @@ -1859,7 +1860,13 @@ static void STDMETHODCALLTYPE d3d12_command_list_OMSetBlendFactor(ID3D12Graphics static void STDMETHODCALLTYPE d3d12_command_list_OMSetStencilRef(ID3D12GraphicsCommandList *iface, UINT stencil_ref) { - FIXME("iface %p, stencil_ref %u stub!\n", iface, stencil_ref); + struct d3d12_command_list *list = impl_from_ID3D12GraphicsCommandList(iface); + const struct vkd3d_vk_device_procs *vk_procs; + + TRACE("iface %p, stencil_ref %u.\n", iface, stencil_ref); + + vk_procs = &list->device->vk_procs; + VK_CALL(vkCmdSetStencilReference(list->vk_command_buffer, VK_STENCIL_FRONT_AND_BACK, stencil_ref)); } static void STDMETHODCALLTYPE d3d12_command_list_SetPipelineState(ID3D12GraphicsCommandList *iface, diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c index d4483831..994ff0e8 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -654,7 +654,8 @@ static void vk_stencil_op_state_from_d3d12(struct VkStencilOpState *vk_desc, vk_desc->compareOp = vk_compare_op_from_d3d12(d3d12_desc->StencilFunc); vk_desc->compareMask = compare_mask; vk_desc->writeMask = write_mask; - vk_desc->reference = 0; /* FIXME: From OMSetStencilRef(). */ + /* The stencil reference value is a dynamic state. Set by OMSetStencilRef(). */ + vk_desc->reference = 0; } static void ds_desc_from_d3d12(struct VkPipelineDepthStencilStateCreateInfo *vk_desc,