Fix checks for individual features in EXT dyn state 2

This commit is contained in:
baldurk
2022-06-16 15:53:49 +01:00
parent 31b97ab0e8
commit 15a99155ce
3 changed files with 16 additions and 4 deletions
+4
View File
@@ -415,6 +415,8 @@ private:
bool m_NULLDescriptorsAllowed = false;
bool m_ExtendedDynState = false;
bool m_ExtendedDynState2 = false;
bool m_ExtendedDynState2Logic = false;
bool m_ExtendedDynState2CPs = false;
bool m_FragmentShadingRate = false;
bool m_DynColorWrite = false;
bool m_DynVertexInput = false;
@@ -1164,6 +1166,8 @@ public:
bool NULLDescriptorsAllowed() const { return m_NULLDescriptorsAllowed; }
bool ExtendedDynamicState() const { return m_ExtendedDynState; }
bool ExtendedDynamicState2() const { return m_ExtendedDynState2; }
bool ExtendedDynamicState2Logic() const { return m_ExtendedDynState2Logic; }
bool ExtendedDynamicState2CPs() const { return m_ExtendedDynState2CPs; }
bool FragmentShadingRate() const { return m_FragmentShadingRate; }
bool DynamicColorWrite() const { return m_DynColorWrite; }
bool DynamicVertexInput() const { return m_DynVertexInput; }
+10 -4
View File
@@ -384,15 +384,21 @@ void VulkanRenderState::BindPipeline(WrappedVulkan *vk, VkCommandBuffer cmd,
{
if(dynamicStates[VkDynamicDepthBiasEnable])
ObjDisp(cmd)->CmdSetDepthBiasEnableEXT(Unwrap(cmd), depthBiasEnable);
if(dynamicStates[VkDynamicLogicOpEXT])
ObjDisp(cmd)->CmdSetLogicOpEXT(Unwrap(cmd), logicOp);
if(dynamicStates[VkDynamicControlPointsEXT])
ObjDisp(cmd)->CmdSetPatchControlPointsEXT(Unwrap(cmd), patchControlPoints);
if(dynamicStates[VkDynamicPrimRestart])
ObjDisp(cmd)->CmdSetPrimitiveRestartEnableEXT(Unwrap(cmd), primRestartEnable);
if(dynamicStates[VkDynamicRastDiscard])
ObjDisp(cmd)->CmdSetRasterizerDiscardEnableEXT(Unwrap(cmd), rastDiscardEnable);
}
if(vk->ExtendedDynamicState2Logic())
{
if(dynamicStates[VkDynamicLogicOpEXT])
ObjDisp(cmd)->CmdSetLogicOpEXT(Unwrap(cmd), logicOp);
}
if(vk->ExtendedDynamicState2CPs())
{
if(dynamicStates[VkDynamicControlPointsEXT])
ObjDisp(cmd)->CmdSetPatchControlPointsEXT(Unwrap(cmd), patchControlPoints);
}
if(dynamicStates[VkDynamicLineWidth])
ObjDisp(cmd)->CmdSetLineWidth(Unwrap(cmd), lineWidth);
@@ -2893,6 +2893,8 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
CHECK_PHYS_EXT_FEATURE(extendedDynamicState2PatchControlPoints);
m_ExtendedDynState2 = (ext->extendedDynamicState2 != VK_FALSE);
m_ExtendedDynState2Logic = (ext->extendedDynamicState2LogicOp != VK_FALSE);
m_ExtendedDynState2CPs = (ext->extendedDynamicState2PatchControlPoints != VK_FALSE);
}
END_PHYS_EXT_CHECK();