diff --git a/core/rend/vulkan/buffer.cpp b/core/rend/vulkan/buffer.cpp index e7dbbf0b4..70e96421d 100644 --- a/core/rend/vulkan/buffer.cpp +++ b/core/rend/vulkan/buffer.cpp @@ -23,10 +23,7 @@ #include "vulkan_context.h" BufferData::BufferData(vk::DeviceSize size, vk::BufferUsageFlags usage, vk::MemoryPropertyFlags propertyFlags) - : bufferSize(size) -#if !defined(NDEBUG) - , m_usage(usage), m_propertyFlags(propertyFlags) -#endif + : bufferSize(size), m_usage(usage), m_propertyFlags(propertyFlags) { VulkanContext *context = VulkanContext::Instance(); buffer = context->GetDevice().createBufferUnique(vk::BufferCreateInfo(vk::BufferCreateFlags(), size, usage)); diff --git a/core/rend/vulkan/buffer.h b/core/rend/vulkan/buffer.h index 00da94347..1275a061f 100644 --- a/core/rend/vulkan/buffer.h +++ b/core/rend/vulkan/buffer.h @@ -78,9 +78,7 @@ struct BufferData vk::DeviceSize bufferSize; Allocation allocation; -#if !defined(NDEBUG) private: vk::BufferUsageFlags m_usage; vk::MemoryPropertyFlags m_propertyFlags; -#endif }; diff --git a/core/rend/vulkan/drawer.cpp b/core/rend/vulkan/drawer.cpp index c2913b0ba..612e09ac1 100644 --- a/core/rend/vulkan/drawer.cpp +++ b/core/rend/vulkan/drawer.cpp @@ -149,15 +149,17 @@ void BaseDrawer::SetBaseScissor() baseScissor = vk::Rect2D(vk::Offset2D(0, 0), vk::Extent2D(screen_width, screen_height)); } + currentScissor = { 0, 0, 0, 0 }; } void Drawer::DrawPoly(const vk::CommandBuffer& cmdBuffer, u32 listType, bool sortTriangles, const PolyParam& poly, u32 first, u32 count) { vk::Rect2D scissorRect; TileClipping tileClip = SetTileClip(poly.tileclip, scissorRect); - if (tileClip != TileClipping::Outside) - scissorRect = baseScissor; - SetScissor(cmdBuffer, scissorRect); + if (tileClip == TileClipping::Outside) + SetScissor(cmdBuffer, scissorRect); + else + SetScissor(cmdBuffer, baseScissor); float trilinearAlpha = 1.f; if (poly.tsp.FilterMode > 1 && poly.pcw.Texture && listType != ListType_Punch_Through) diff --git a/core/rend/vulkan/oit/oit_drawer.cpp b/core/rend/vulkan/oit/oit_drawer.cpp index 787c38f3b..241bc31cd 100644 --- a/core/rend/vulkan/oit/oit_drawer.cpp +++ b/core/rend/vulkan/oit/oit_drawer.cpp @@ -27,9 +27,10 @@ void OITDrawer::DrawPoly(const vk::CommandBuffer& cmdBuffer, u32 listType, bool { vk::Rect2D scissorRect; TileClipping tileClip = SetTileClip(poly.tileclip, scissorRect); - if (tileClip != TileClipping::Outside) - scissorRect = baseScissor; - SetScissor(cmdBuffer, scissorRect); + if (tileClip == TileClipping::Outside) + SetScissor(cmdBuffer, scissorRect); + else + SetScissor(cmdBuffer, baseScissor); float trilinearAlpha = 1.f; if (poly.tsp.FilterMode > 1 && poly.pcw.Texture && listType != ListType_Punch_Through) @@ -95,6 +96,7 @@ void OITDrawer::DrawModifierVolumes(const vk::CommandBuffer& cmdBuffer, int firs vk::Buffer buffer = GetMainBuffer(0)->buffer.get(); cmdBuffer.bindVertexBuffers(0, 1, &buffer, &offsets.modVolOffset); + SetScissor(cmdBuffer, baseScissor); ModifierVolumeParam* params = Translucent ? &pvrrc.global_param_mvo_tr.head()[first] : &pvrrc.global_param_mvo.head()[first]; @@ -309,6 +311,7 @@ bool OITDrawer::Draw(const Texture *fogTexture) // Final subpass cmdBuffer.nextSubpass(vk::SubpassContents::eInline); GetCurrentDescSet().BindColorInputDescSet(cmdBuffer, (pvrrc.render_passes.used() - 1 - render_pass) % 2); + SetScissor(cmdBuffer, baseScissor); if (!oitBuffers->isFirstFrameAfterInit()) {