Browse Source

[test] Change forcerd order for CompareMask + forced refresh/ emit

lizzie/vkexperiments1-highp-fucked
CamilleLaVey 5 days ago
committed by lizzie
parent
commit
15d575aa31
  1. 6
      src/video_core/renderer_vulkan/vk_rasterizer.cpp
  2. 4
      src/video_core/renderer_vulkan/vk_state_tracker.h

6
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@ -1075,7 +1075,6 @@ void RasterizerVulkan::UpdateDynamicStates() {
UpdateDepthBias(regs); UpdateDepthBias(regs);
UpdateBlendConstants(regs); UpdateBlendConstants(regs);
UpdateDepthBounds(regs); UpdateDepthBounds(regs);
UpdateStencilFaces(regs);
UpdateLineWidth(regs); UpdateLineWidth(regs);
UpdateLineStipple(regs); UpdateLineStipple(regs);
@ -1094,6 +1093,8 @@ void RasterizerVulkan::UpdateDynamicStates() {
} }
} }
UpdateStencilFaces(regs);
// EDS2: PrimitiveRestart, RasterizerDiscard, DepthBias enable/disable // EDS2: PrimitiveRestart, RasterizerDiscard, DepthBias enable/disable
if (device.IsExtExtendedDynamicState2Supported() && pipeline && pipeline->UsesExtendedDynamicState2()) { if (device.IsExtExtendedDynamicState2Supported() && pipeline && pipeline->UsesExtendedDynamicState2()) {
UpdatePrimitiveRestartEnable(regs); UpdatePrimitiveRestartEnable(regs);
@ -1640,6 +1641,9 @@ void RasterizerVulkan::UpdateStencilTestEnable(Tegra::Engines::Maxwell3D::Regs&
if (!state_tracker.TouchStencilTestEnable()) { if (!state_tracker.TouchStencilTestEnable()) {
return; return;
} }
if (regs.stencil_enable != 0) {
state_tracker.ResetStencilState();
}
scheduler.Record([enable = regs.stencil_enable](vk::CommandBuffer cmdbuf) { scheduler.Record([enable = regs.stencil_enable](vk::CommandBuffer cmdbuf) {
cmdbuf.SetStencilTestEnableEXT(enable); cmdbuf.SetStencilTestEnableEXT(enable);
}); });

4
src/video_core/renderer_vulkan/vk_state_tracker.h

@ -170,6 +170,10 @@ public:
return ExchangeCheck(back.compare_mask, new_value) || stencil_reset; return ExchangeCheck(back.compare_mask, new_value) || stencil_reset;
} }
void ResetStencilState() {
stencil_reset = true;
}
void ClearStencilReset() { void ClearStencilReset() {
stencil_reset = false; stencil_reset = false;
} }

Loading…
Cancel
Save