From 811bf6f44919203d9119c48f3448c5ab83aa5977 Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Tue, 7 Feb 2023 11:28:14 +0100 Subject: [PATCH] Revert "vk oit: tentative workaround for AMD crash" This reverts commit 084066bde787f62ed5173f505815df0f8fe622f0. --- core/rend/vulkan/oit/oit_drawer.cpp | 33 +---------------------------- core/rend/vulkan/oit/oit_drawer.h | 1 - 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/core/rend/vulkan/oit/oit_drawer.cpp b/core/rend/vulkan/oit/oit_drawer.cpp index fad674a44..7f0d3da6c 100644 --- a/core/rend/vulkan/oit/oit_drawer.cpp +++ b/core/rend/vulkan/oit/oit_drawer.cpp @@ -212,32 +212,6 @@ void OITDrawer::UploadMainBuffer(const OITDescriptorSets::VertexShaderUniforms& { BufferPacker packer; - // Add a dummy transparent triangle to work around an AMD crash if nothing is drawn - PolyParam poly{}; - poly.init(); - poly.first = pvrrc.idx.size(); - poly.count = 3; - poly.isp.DepthMode = 6; - poly.pcw.Gouraud = 1; - poly.tsp.SrcInstr = 4; - poly.tsp.DstInstr = 5; - poly.tsp.FogCtrl = 2; - poly.tsp.UseAlpha = 1; - dummyTrPolyIndex = pvrrc.global_param_tr.size(); - pvrrc.global_param_tr.push_back(poly); - Vertex v{}; - v.col[3] = 1; // non null alpha so it's not optimized out - v.z = 1.f; - pvrrc.idx.push_back(pvrrc.verts.size()); - pvrrc.verts.push_back(v); - v.x = 1.f; - pvrrc.idx.push_back(pvrrc.verts.size()); - pvrrc.verts.push_back(v); - v.x = 0.f; - v.y = 1.f; - pvrrc.idx.push_back(pvrrc.verts.size()); - pvrrc.verts.push_back(v); - // Vertex packer.add(&pvrrc.verts[0], pvrrc.verts.size() * sizeof(decltype(pvrrc.verts[0]))); // Modifier Volumes @@ -390,12 +364,7 @@ bool OITDrawer::Draw(const Texture *fogTexture, const Texture *paletteTexture) if (current_pass.autosort) { if (!firstFrameAfterInit) - { - if (previous_pass.tr_count == current_pass.tr_count) - DrawList(cmdBuffer, ListType_Translucent, true, Pass::OIT, pvrrc.global_param_tr, dummyTrPolyIndex, dummyTrPolyIndex + 1); - else - DrawList(cmdBuffer, ListType_Translucent, true, Pass::OIT, pvrrc.global_param_tr, previous_pass.tr_count, current_pass.tr_count); - } + DrawList(cmdBuffer, ListType_Translucent, true, Pass::OIT, pvrrc.global_param_tr, previous_pass.tr_count, current_pass.tr_count); } else DrawList(cmdBuffer, ListType_Translucent, false, Pass::Color, pvrrc.global_param_tr, previous_pass.tr_count, current_pass.tr_count); diff --git a/core/rend/vulkan/oit/oit_drawer.h b/core/rend/vulkan/oit/oit_drawer.h index a88ed24b2..fa6837280 100644 --- a/core/rend/vulkan/oit/oit_drawer.h +++ b/core/rend/vulkan/oit/oit_drawer.h @@ -152,7 +152,6 @@ private: int renderPass = 0; OITDescriptorSets descriptorSets; std::vector> mainBuffers; - int dummyTrPolyIndex = 0; }; class OITScreenDrawer : public OITDrawer