mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 13:20:54 +00:00
Ensure pNext chain structs are properly reset when making create infos
This commit is contained in:
@@ -661,6 +661,8 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
static VkPipelineInputAssemblyStateCreateInfo ia = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO};
|
||||
|
||||
ia.pNext = NULL;
|
||||
|
||||
ia.topology = pipeInfo.topology;
|
||||
ia.primitiveRestartEnable = pipeInfo.primitiveRestartEnable;
|
||||
|
||||
@@ -685,10 +687,11 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
|
||||
static VkPipelineViewportStateCreateInfo vp = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO};
|
||||
|
||||
static VkViewport views[32] = {};
|
||||
static VkRect2D scissors[32] = {};
|
||||
|
||||
vp.pNext = NULL;
|
||||
|
||||
memcpy(views, &pipeInfo.viewports[0], pipeInfo.viewports.size() * sizeof(VkViewport));
|
||||
|
||||
vp.pViewports = &views[0];
|
||||
@@ -702,6 +705,18 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
RDCASSERT(ARRAY_COUNT(views) >= pipeInfo.viewports.size());
|
||||
RDCASSERT(ARRAY_COUNT(scissors) >= pipeInfo.scissors.size());
|
||||
|
||||
static VkPipelineViewportDepthClipControlCreateInfoEXT depthClipControl = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
|
||||
};
|
||||
|
||||
if(m_pDriver->GetExtensions(GetRecord(m_Device)).ext_EXT_depth_clip_control)
|
||||
{
|
||||
depthClipControl.negativeOneToOne = pipeInfo.negativeOneToOne;
|
||||
|
||||
depthClipControl.pNext = vp.pNext;
|
||||
vp.pNext = &depthClipControl;
|
||||
}
|
||||
|
||||
static VkPipelineRasterizationStateCreateInfo rs = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
|
||||
};
|
||||
@@ -807,6 +822,8 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
static VkPipelineDepthStencilStateCreateInfo ds = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO};
|
||||
|
||||
ds.pNext = NULL;
|
||||
|
||||
ds.depthTestEnable = pipeInfo.depthTestEnable;
|
||||
ds.depthWriteEnable = pipeInfo.depthWriteEnable;
|
||||
ds.depthCompareOp = pipeInfo.depthCompareOp;
|
||||
@@ -820,6 +837,8 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
static VkPipelineColorBlendStateCreateInfo cb = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO};
|
||||
|
||||
cb.pNext = NULL;
|
||||
|
||||
cb.logicOpEnable = pipeInfo.logicOpEnable;
|
||||
cb.logicOp = pipeInfo.logicOp;
|
||||
memcpy(cb.blendConstants, pipeInfo.blendConst, sizeof(cb.blendConstants));
|
||||
@@ -847,6 +866,8 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
|
||||
static VkPipelineDynamicStateCreateInfo dyn = {VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO};
|
||||
|
||||
dyn.pNext = NULL;
|
||||
|
||||
dyn.dynamicStateCount = 0;
|
||||
dyn.pDynamicStates = dynSt;
|
||||
|
||||
@@ -962,18 +983,6 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
|
||||
ret.pNext = &shadingRate;
|
||||
}
|
||||
|
||||
static VkPipelineViewportDepthClipControlCreateInfoEXT depthClipControl = {
|
||||
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
|
||||
};
|
||||
|
||||
if(m_pDriver->GetExtensions(GetRecord(m_Device)).ext_EXT_depth_clip_control)
|
||||
{
|
||||
depthClipControl.negativeOneToOne = pipeInfo.negativeOneToOne;
|
||||
|
||||
depthClipControl.pNext = vp.pNext;
|
||||
vp.pNext = &depthClipControl;
|
||||
}
|
||||
|
||||
// never create derivatives
|
||||
ret.flags &= ~VK_PIPELINE_CREATE_DERIVATIVE_BIT;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user