From eabbd252f84a62dbda336841a2ee9569cbc2f9e9 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Wed, 6 May 2015 19:47:12 +0600 Subject: [PATCH] Change CachedTexture::frameBufferTexture type to enum. Need to separate one-sampled frame buffer textures from multosampled ones. --- src/DepthBuffer.cpp | 5 +++-- src/FrameBuffer.cpp | 11 ++++++----- src/GLSLCombiner.cpp | 10 +++++----- src/PostProcessor.cpp | 2 +- src/Textures.cpp | 8 ++++---- src/Textures.h | 8 ++++++-- 6 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/DepthBuffer.cpp b/src/DepthBuffer.cpp index d6c160b6..f6c4c4f5 100644 --- a/src/DepthBuffer.cpp +++ b/src/DepthBuffer.cpp @@ -64,7 +64,7 @@ void DepthBuffer::initDepthImageTexture(FrameBuffer * _pBuffer) m_pDepthImageTexture->address = _pBuffer->m_startAddress; m_pDepthImageTexture->clampWidth = _pBuffer->m_width; m_pDepthImageTexture->clampHeight = _pBuffer->m_height; - m_pDepthImageTexture->frameBufferTexture = TRUE; + m_pDepthImageTexture->frameBufferTexture = CachedTexture::fbOneSample; m_pDepthImageTexture->maskS = 0; m_pDepthImageTexture->maskT = 0; m_pDepthImageTexture->mirrorS = 0; @@ -110,7 +110,7 @@ void DepthBuffer::_initDepthBufferTexture(FrameBuffer * _pBuffer, CachedTexture _pTexture->size = 2; _pTexture->clampS = 1; _pTexture->clampT = 1; - _pTexture->frameBufferTexture = TRUE; + _pTexture->frameBufferTexture = CachedTexture::fbOneSample; _pTexture->maskS = 0; _pTexture->maskT = 0; _pTexture->mirrorS = 0; @@ -134,6 +134,7 @@ void DepthBuffer::_initDepthBufferTexture(FrameBuffer * _pBuffer, CachedTexture else glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, GL_DEPTH_COMPONENT, video().getWidth(), video().getHeight(), false); #endif + _pTexture->frameBufferTexture = CachedTexture::fbMultiSample; } else #endif // GL_MULTISAMPLING_SUPPORT { diff --git a/src/FrameBuffer.cpp b/src/FrameBuffer.cpp index ff71437c..ffed72ce 100644 --- a/src/FrameBuffer.cpp +++ b/src/FrameBuffer.cpp @@ -146,7 +146,7 @@ void FrameBuffer::_initTexture(u16 _format, u16 _size, CachedTexture *_pTexture) _pTexture->address = m_startAddress; _pTexture->clampWidth = m_width; _pTexture->clampHeight = m_height; - _pTexture->frameBufferTexture = TRUE; + _pTexture->frameBufferTexture = CachedTexture::fbOneSample; _pTexture->maskS = 0; _pTexture->maskT = 0; _pTexture->mirrorS = 0; @@ -215,6 +215,7 @@ void FrameBuffer::init(u32 _address, u32 _endAddress, u16 _format, u16 _size, u1 else glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.video.multisampling, monohromeInternalformat, m_pTexture->realWidth, m_pTexture->realHeight, false); #endif + m_pTexture->frameBufferTexture = CachedTexture::fbMultiSample; glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, m_pTexture->glName, 0); m_pResolveTexture = textureCache().addFrameBufferTexture(); @@ -846,7 +847,7 @@ void FrameBufferToRDRAM::Init() m_pTexture->format = G_IM_FMT_RGBA; m_pTexture->clampS = 1; m_pTexture->clampT = 1; - m_pTexture->frameBufferTexture = TRUE; + m_pTexture->frameBufferTexture = CachedTexture::fbOneSample; m_pTexture->maskS = 0; m_pTexture->maskT = 0; m_pTexture->mirrorS = 0; @@ -1016,7 +1017,7 @@ void DepthBufferToRDRAM::Init() m_pColorTexture->format = G_IM_FMT_I; m_pColorTexture->clampS = 1; m_pColorTexture->clampT = 1; - m_pColorTexture->frameBufferTexture = TRUE; + m_pColorTexture->frameBufferTexture = CachedTexture::fbOneSample; m_pColorTexture->maskS = 0; m_pColorTexture->maskT = 0; m_pColorTexture->mirrorS = 0; @@ -1030,7 +1031,7 @@ void DepthBufferToRDRAM::Init() m_pDepthTexture->format = G_IM_FMT_I; m_pDepthTexture->clampS = 1; m_pDepthTexture->clampT = 1; - m_pDepthTexture->frameBufferTexture = TRUE; + m_pDepthTexture->frameBufferTexture = CachedTexture::fbOneSample; m_pDepthTexture->maskS = 0; m_pDepthTexture->maskT = 0; m_pDepthTexture->mirrorS = 0; @@ -1163,7 +1164,7 @@ void RDRAMtoFrameBuffer::Init() m_pTexture->format = G_IM_FMT_RGBA; m_pTexture->clampS = 1; m_pTexture->clampT = 1; - m_pTexture->frameBufferTexture = TRUE; + m_pTexture->frameBufferTexture = CachedTexture::fbOneSample; m_pTexture->maskS = 0; m_pTexture->maskT = 0; m_pTexture->mirrorS = 0; diff --git a/src/GLSLCombiner.cpp b/src/GLSLCombiner.cpp index ad1625af..485eb6c8 100644 --- a/src/GLSLCombiner.cpp +++ b/src/GLSLCombiner.cpp @@ -95,7 +95,7 @@ void NoiseTexture::init() m_pTexture->format = G_IM_FMT_RGBA; m_pTexture->clampS = 1; m_pTexture->clampT = 1; - m_pTexture->frameBufferTexture = TRUE; + m_pTexture->frameBufferTexture = CachedTexture::fbOneSample; m_pTexture->maskS = 0; m_pTexture->maskT = 0; m_pTexture->mirrorS = 0; @@ -895,21 +895,21 @@ void ShaderCombiner::updateFBInfo(bool _bForce) { int nFb8bitMode = 0, nFbFixedAlpha = 0; int nMSTex0Enabled = 0, nMSTex1Enabled = 0; TextureCache & cache = textureCache(); - if (cache.current[0] != NULL && cache.current[0]->frameBufferTexture == TRUE) { + if (cache.current[0] != NULL && cache.current[0]->frameBufferTexture != CachedTexture::fbNone) { if (cache.current[0]->size == G_IM_SIZ_8b) { nFb8bitMode |= 1; if (gDP.otherMode.imageRead == 0) nFbFixedAlpha |= 1; } - nMSTex0Enabled = config.video.multisampling; + nMSTex0Enabled = cache.current[0]->frameBufferTexture == CachedTexture::fbMultiSample ? 1 : 0; } - if (cache.current[1] != NULL && cache.current[1]->frameBufferTexture == TRUE) { + if (cache.current[1] != NULL && cache.current[1]->frameBufferTexture != CachedTexture::fbNone) { if (cache.current[1]->size == G_IM_SIZ_8b) { nFb8bitMode |= 2; if (gDP.otherMode.imageRead == 0) nFbFixedAlpha |= 2; } - nMSTex1Enabled = config.video.multisampling; + nMSTex1Enabled = cache.current[1]->frameBufferTexture == CachedTexture::fbMultiSample ? 1 : 0; } _setIUniform(m_uniforms.uFb8Bit, nFb8bitMode, _bForce); _setIUniform(m_uniforms.uFbFixedAlpha, nFbFixedAlpha, _bForce); diff --git a/src/PostProcessor.cpp b/src/PostProcessor.cpp index a1275021..5987d05a 100644 --- a/src/PostProcessor.cpp +++ b/src/PostProcessor.cpp @@ -201,7 +201,7 @@ CachedTexture * _createTexture() pTexture->format = G_IM_FMT_RGBA; pTexture->clampS = 1; pTexture->clampT = 1; - pTexture->frameBufferTexture = TRUE; + pTexture->frameBufferTexture = CachedTexture::fbOneSample; pTexture->maskS = 0; pTexture->maskT = 0; pTexture->mirrorS = 0; diff --git a/src/Textures.cpp b/src/Textures.cpp index a100fff3..a713a084 100644 --- a/src/Textures.cpp +++ b/src/Textures.cpp @@ -449,7 +449,7 @@ void TextureCache::_initDummyTexture(CachedTexture * _pDummy) _pDummy->crc = 0; _pDummy->format = 0; _pDummy->size = 0; - _pDummy->frameBufferTexture = FALSE; + _pDummy->frameBufferTexture = CachedTexture::fbNone; _pDummy->width = 2; _pDummy->height = 2; _pDummy->realWidth = 2; @@ -1073,7 +1073,7 @@ u32 _calculateCRC(u32 t, const TextureParams & _params) void TextureCache::activateTexture(u32 _t, CachedTexture *_pTexture) { #ifdef GL_MULTISAMPLING_SUPPORT - if (config.video.multisampling > 0 && _pTexture->frameBufferTexture == TRUE) { + if (config.video.multisampling > 0 && _pTexture->frameBufferTexture == CachedTexture::fbMultiSample) { glActiveTexture(GL_TEXTURE0 + g_MSTex0Index + _t); // Bind the cached texture glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, _pTexture->glName); @@ -1216,7 +1216,7 @@ void TextureCache::_updateBackground() pCurrent->line = 0; pCurrent->tMem = 0; pCurrent->lastDList = RSP.DList; - pCurrent->frameBufferTexture = FALSE; + pCurrent->frameBufferTexture = CachedTexture::fbNone; pCurrent->realWidth = gSP.bgImage.width; pCurrent->realHeight = gSP.bgImage.height; @@ -1378,7 +1378,7 @@ void TextureCache::update(u32 _t) pCurrent->line = gSP.textureTile[_t]->line; pCurrent->tMem = gSP.textureTile[_t]->tmem; pCurrent->lastDList = RSP.DList; - pCurrent->frameBufferTexture = FALSE; + pCurrent->frameBufferTexture = CachedTexture::fbNone; pCurrent->realWidth = sizes.realWidth; pCurrent->realHeight = sizes.realHeight; diff --git a/src/Textures.h b/src/Textures.h index 221fbb1e..b62344e1 100644 --- a/src/Textures.h +++ b/src/Textures.h @@ -11,7 +11,7 @@ extern const GLuint g_MSTex0Index; struct CachedTexture { - CachedTexture(GLuint _glName) : glName(_glName), max_level(0) {} + CachedTexture(GLuint _glName) : glName(_glName), max_level(0), frameBufferTexture(fbNone) {} GLuint glName; u32 crc; @@ -36,7 +36,11 @@ struct CachedTexture u32 lastDList; u32 address; u8 max_level; - u8 frameBufferTexture; + enum { + fbNone = 0, + fbOneSample = 1, + fbMultiSample = 2 + } frameBufferTexture; };