From f95ab4a0fa7d728b7e6565fe48b2c9f149ceaa43 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 15 Feb 2017 12:18:08 +0100 Subject: [PATCH] One more step --- GPU/Common/FramebufferCommon.h | 1 + GPU/D3D11/FramebufferManagerD3D11.h | 3 --- GPU/GLES/FramebufferManagerGLES.cpp | 15 ++++++--------- GPU/GLES/FramebufferManagerGLES.h | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/GPU/Common/FramebufferCommon.h b/GPU/Common/FramebufferCommon.h index fd8977794b..96ad6d0e6a 100644 --- a/GPU/Common/FramebufferCommon.h +++ b/GPU/Common/FramebufferCommon.h @@ -259,6 +259,7 @@ public: protected: void CalculatePostShaderUniforms(int bufferWidth, int bufferHeight, int renderWidth, int renderHeight, PostShaderUniforms *uniforms); + virtual void BindPostShader(const PostShaderUniforms &uniforms) {} // Cardboard Settings Calculator void GetCardboardSettings(CardboardSettings *cardboardSettings); diff --git a/GPU/D3D11/FramebufferManagerD3D11.h b/GPU/D3D11/FramebufferManagerD3D11.h index 2eaba71829..4ec4de9b00 100644 --- a/GPU/D3D11/FramebufferManagerD3D11.h +++ b/GPU/D3D11/FramebufferManagerD3D11.h @@ -100,9 +100,6 @@ protected: private: void MakePixelTexture(const u8 *srcPixels, GEBufferFormat srcPixelFormat, int srcStride, int width, int height); - void CompileDraw2DProgram(); - void DestroyDraw2DProgram(); - void PackFramebufferD3D11_(VirtualFramebuffer *vfb, int x, int y, int w, int h); void PackDepthbuffer(VirtualFramebuffer *vfb, int x, int y, int w, int h); diff --git a/GPU/GLES/FramebufferManagerGLES.cpp b/GPU/GLES/FramebufferManagerGLES.cpp index ae4053ff8c..3ce0035368 100644 --- a/GPU/GLES/FramebufferManagerGLES.cpp +++ b/GPU/GLES/FramebufferManagerGLES.cpp @@ -181,7 +181,8 @@ void FramebufferManagerGLES::CompileDraw2DProgram() { } } -void FramebufferManagerGLES::SetPostShaderUniforms(const PostShaderUniforms &uniforms) { +void FramebufferManagerGLES::BindPostShader(const PostShaderUniforms &uniforms) { + glsl_bind(postShaderProgram_); if (deltaLoc_ != -1) glUniform2f(deltaLoc_, uniforms.texelDelta[0], uniforms.texelDelta[1]); if (pixelDeltaLoc_ != -1) @@ -354,7 +355,6 @@ void FramebufferManagerGLES::DrawPixels(VirtualFramebuffer *vfb, int dstX, int d void FramebufferManagerGLES::DrawFramebufferToOutput(const u8 *srcPixels, GEBufferFormat srcPixelFormat, int srcStride, bool applyPostShader) { MakePixelTexture(srcPixels, srcPixelFormat, srcStride, 512, 272); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, g_Config.iTexFiltering == TEX_FILTER_NEAREST ? GL_NEAREST : GL_LINEAR); DisableState(); @@ -367,17 +367,16 @@ void FramebufferManagerGLES::DrawFramebufferToOutput(const u8 *srcPixels, GEBuff float x, y, w, h; int uvRotation = (g_Config.iRenderingMode != FB_NON_BUFFERED_MODE) ? g_Config.iInternalScreenRotation : ROTATION_LOCKED_HORIZONTAL; CenterDisplayOutputRect(&x, &y, &w, &h, 480.0f, 272.0f, (float)pixelWidth_, (float)pixelHeight_, uvRotation); - if (applyPostShader) { + if (applyPostShader && useBufferedRendering_) { // Make sure we've compiled the shader. if (!postShaderProgram_) { CompileDraw2DProgram(); } // Might've changed if the shader was just changed to Off. if (usePostShader_) { - glsl_bind(postShaderProgram_); PostShaderUniforms uniforms{}; CalculatePostShaderUniforms(480, 272, renderWidth_, renderHeight_, &uniforms); - SetPostShaderUniforms(uniforms); + BindPostShader(uniforms); } } float u0 = 0.0f, u1 = 480.0f / 512.0f; @@ -775,10 +774,9 @@ void FramebufferManagerGLES::CopyDisplayToOutput() { draw_->GetFramebufferDimensions(extraFBOs_[0], &fbo_w, &fbo_h); glstate.viewport.set(0, 0, fbo_w, fbo_h); shaderManager_->DirtyLastShader(); // dirty lastShader_ - glsl_bind(postShaderProgram_); PostShaderUniforms uniforms{}; CalculatePostShaderUniforms(vfb->bufferWidth, vfb->bufferHeight, renderWidth_, renderHeight_, &uniforms); - SetPostShaderUniforms(uniforms); + BindPostShader(uniforms); bool linearFilter = g_Config.iBufFilter == SCALE_LINEAR; DrawActiveTexture(0, 0, fbo_w, fbo_h, fbo_w, fbo_h, 0.0f, 0.0f, 1.0f, 1.0f, postShaderProgram_, ROTATION_LOCKED_HORIZONTAL, linearFilter); @@ -825,8 +823,7 @@ void FramebufferManagerGLES::CopyDisplayToOutput() { shaderManager_->DirtyLastShader(); // dirty lastShader_ PostShaderUniforms uniforms{}; CalculatePostShaderUniforms(vfb->bufferWidth, vfb->bufferHeight, vfb->renderWidth, vfb->renderHeight, &uniforms); - glsl_bind(postShaderProgram_); - SetPostShaderUniforms(uniforms); + BindPostShader(uniforms); if (g_Config.bEnableCardboard) { // Left Eye Image glstate.viewport.set(cardboardSettings.leftEyeXPosition, cardboardSettings.screenYPosition, cardboardSettings.screenWidth, cardboardSettings.screenHeight); diff --git a/GPU/GLES/FramebufferManagerGLES.h b/GPU/GLES/FramebufferManagerGLES.h index e4a12d30b6..4df10c791a 100644 --- a/GPU/GLES/FramebufferManagerGLES.h +++ b/GPU/GLES/FramebufferManagerGLES.h @@ -113,7 +113,7 @@ protected: private: void MakePixelTexture(const u8 *srcPixels, GEBufferFormat srcPixelFormat, int srcStride, int width, int height); - void SetPostShaderUniforms(const PostShaderUniforms &uniforms); + void BindPostShader(const PostShaderUniforms &uniforms) override; void CompileDraw2DProgram(); void DestroyDraw2DProgram();