mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Change CachedTexture::frameBufferTexture type to enum.
Need to separate one-sampled frame buffer textures from multosampled ones.
This commit is contained in:
parent
dbbb7da427
commit
eabbd252f8
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user