From f0d178122ed33972360ba9c268b0f814e45e0536 Mon Sep 17 00:00:00 2001 From: Rodolfo Osvaldo Bogado Date: Sat, 12 Jun 2010 15:38:42 +0000 Subject: [PATCH] revert my last change to vertex manager as the performance difference is negligible an causes performance drop in higher definitions git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5658 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/LinearDiskCache.cpp | 2 +- .../Plugin_VideoDX9/Src/VertexManager.cpp | 27 +++++++------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/Source/Core/Common/Src/LinearDiskCache.cpp b/Source/Core/Common/Src/LinearDiskCache.cpp index 96d47a3b26..57635a3bb0 100644 --- a/Source/Core/Common/Src/LinearDiskCache.cpp +++ b/Source/Core/Common/Src/LinearDiskCache.cpp @@ -22,7 +22,7 @@ static const char ID[4] = {'D', 'C', 'A', 'C'}; // Update this to the current SVN revision every time you change shader generation code. // We don't automatically get this from SVN_REV because that would mean regenerating the // shader cache for every revision, graphics-related or not, which is simply annoying. -const int version = 5653; +const int version = 5658; LinearDiskCache::LinearDiskCache() : file_(NULL), num_entries_(0) { diff --git a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp index 083fa1af2f..bc739498d0 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp @@ -19,7 +19,6 @@ #include "FileUtil.h" #include "D3DBase.h" -#include "D3DUtil.h" #include "Statistics.h" #include "Profiler.h" @@ -293,30 +292,24 @@ void Flush() int stride = g_nativeVertexFmt->GetVertexStride(); g_nativeVertexFmt->SetupVertexPointers(); - if(bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate) - { - D3D::SetRenderState(D3DRS_STENCILENABLE, TRUE ); - D3D::SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS ); - D3D::SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE ); - D3D::SetRenderState(D3DRS_STENCILREF, 1); - } - Draw(stride); if (bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate) { - - D3D::SetRenderState(D3DRS_STENCILFUNC, D3DCMP_EQUAL ); - D3D::SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_DECR ); - + DWORD write = 0; + if (!PixelShaderCache::SetShader(true)) + { + DEBUGGER_PAUSE_LOG_AT(NEXT_ERROR,true,{printf("Fail to set pixel shader\n");}); + goto shader_fail; + } + // update alpha only D3D::ChangeRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA); D3D::ChangeRenderState(D3DRS_ALPHABLENDENABLE, false); - D3D::ChangeRenderState(D3DRS_ZWRITEENABLE, false); - D3D::drawClearQuad((bpmem.dstalpha.hex & 0xff)<<24,0.0f,PixelShaderCache::GetClearProgram(),VertexShaderCache::GetClearVertexShader()); - D3D::RefreshRenderState(D3DRS_ZWRITEENABLE); + + Draw(stride); + D3D::RefreshRenderState(D3DRS_COLORWRITEENABLE); D3D::RefreshRenderState(D3DRS_ALPHABLENDENABLE); - D3D::SetRenderState(D3DRS_STENCILENABLE, false ); } DEBUGGER_PAUSE_AT(NEXT_FLUSH,true);