1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Change CachedTexture::frameBufferTexture type to enum.

Need to separate one-sampled frame buffer textures from multosampled ones.
This commit is contained in:
Sergey Lipskiy 2015-05-06 19:47:12 +06:00
parent dbbb7da427
commit eabbd252f8
6 changed files with 25 additions and 19 deletions

View File

@ -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
{

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;
};