summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrChat <arkolbed@gmail.com>2018-04-14 17:51:57 -0500
committerDrChat <arkolbed@gmail.com>2018-04-14 17:51:57 -0500
commit6ca771d26f2b377357d5c8ab26e31574f4c5c3a5 (patch)
tree28d31a23704eb75ba626c8d1db7f43f4a32f60b7
parentf8319ec12fffac03f2ea3d87f436f5b9e9e3c9a2 (diff)
[Vulkan] Handle window scissor window_offset_disable
-rw-r--r--src/xenia/gpu/vulkan/pipeline_cache.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/xenia/gpu/vulkan/pipeline_cache.cc b/src/xenia/gpu/vulkan/pipeline_cache.cc
index 4d5594276..cc7f8a627 100644
--- a/src/xenia/gpu/vulkan/pipeline_cache.cc
+++ b/src/xenia/gpu/vulkan/pipeline_cache.cc
@@ -593,8 +593,11 @@ bool PipelineCache::SetDynamicState(VkCommandBuffer command_buffer,
int32_t ws_y = (regs.pa_sc_window_scissor_tl >> 16) & 0x7FFF;
int32_t ws_w = (regs.pa_sc_window_scissor_br & 0x7FFF) - ws_x;
int32_t ws_h = ((regs.pa_sc_window_scissor_br >> 16) & 0x7FFF) - ws_y;
- ws_x += window_offset_x;
- ws_y += window_offset_y;
+ if (!(regs.pa_sc_window_scissor_tl & 0x80000000)) {
+ // ! WINDOW_OFFSET_DISABLE
+ ws_x += window_offset_x;
+ ws_y += window_offset_y;
+ }
int32_t adj_x = ws_x - std::max(ws_x, 0);
int32_t adj_y = ws_y - std::max(ws_y, 0);