mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
libs/vkd3d: Prefer VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
Use VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL if depth/stencil writes are disabled.
This commit is contained in:
parent
b109a1fc73
commit
7e5dd39f5f
@ -1953,6 +1953,9 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
|||||||
graphics->rt_idx = 0;
|
graphics->rt_idx = 0;
|
||||||
if (desc->DepthStencilState.DepthEnable || desc->DepthStencilState.StencilEnable)
|
if (desc->DepthStencilState.DepthEnable || desc->DepthStencilState.StencilEnable)
|
||||||
{
|
{
|
||||||
|
const D3D12_DEPTH_STENCIL_DESC *ds_desc = &desc->DepthStencilState;
|
||||||
|
VkImageLayout depth_layout;
|
||||||
|
|
||||||
if (!(format = vkd3d_get_format(desc->DSVFormat, true)))
|
if (!(format = vkd3d_get_format(desc->DSVFormat, true)))
|
||||||
{
|
{
|
||||||
WARN("Invalid DXGI format %#x.\n", desc->DSVFormat);
|
WARN("Invalid DXGI format %#x.\n", desc->DSVFormat);
|
||||||
@ -1960,6 +1963,12 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((ds_desc->DepthEnable && ds_desc->DepthWriteMask)
|
||||||
|
|| (ds_desc->StencilEnable && ds_desc->StencilWriteMask))
|
||||||
|
depth_layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
|
||||||
|
else
|
||||||
|
depth_layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL;
|
||||||
|
|
||||||
graphics->attachments[0].flags = 0;
|
graphics->attachments[0].flags = 0;
|
||||||
graphics->attachments[0].format = format->vk_format;
|
graphics->attachments[0].format = format->vk_format;
|
||||||
graphics->attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;
|
graphics->attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;
|
||||||
@ -1983,11 +1992,11 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
|||||||
graphics->attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
graphics->attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||||
graphics->attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
graphics->attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
||||||
}
|
}
|
||||||
graphics->attachments[0].initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
|
graphics->attachments[0].initialLayout = depth_layout;
|
||||||
graphics->attachments[0].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
|
graphics->attachments[0].finalLayout = depth_layout;
|
||||||
|
|
||||||
graphics->attachment_references[0].attachment = 0;
|
graphics->attachment_references[0].attachment = 0;
|
||||||
graphics->attachment_references[0].layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
|
graphics->attachment_references[0].layout = depth_layout;
|
||||||
++graphics->rt_idx;
|
++graphics->rt_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user