Skip to content

Commit ea648f7

Browse files
committed
OpenGL Renderer: Do some minor tune-ups.
- Remove some methods in OpenGLRenderer_2_0 and OpenGLRenderer_2_1 that have negligible contribution to either performance or code simplicity. - OpenGLRenderer_1_2, OpenGLRenderer_2_0, and OpenGLRenderer_2_1 are now instantiated with their specific variant IDs. - Calls to malloc_alignedCacheLine() have been replaced with the more appropriate malloc_alignedPage(). - Do some misc. code cleanup.
1 parent c75c1ce commit ea648f7

File tree

2 files changed

+18
-88
lines changed

2 files changed

+18
-88
lines changed

desmume/src/OGLRender.cpp

+14-84
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,7 @@ OpenGLRenderer::OpenGLRenderer()
12901290
memset(ref, 0, sizeof(OGLRenderRef));
12911291

12921292
_mappedFramebuffer = NULL;
1293-
_workingTextureUnpackBuffer = (Color4u8 *)malloc_alignedCacheLine(1024 * 1024 * sizeof(Color4u8));
1293+
_workingTextureUnpackBuffer = (Color4u8 *)malloc_alignedPage(1024 * 1024 * sizeof(Color4u8));
12941294
_pixelReadNeedsFinish = false;
12951295
_needsZeroDstAlphaPass = true;
12961296
_currentPolyIndex = 0;
@@ -2292,6 +2292,8 @@ Render3DError OpenGLRenderer::ApplyRenderingSettings(const GFX3D_State &renderSt
22922292

22932293
OpenGLRenderer_1_2::OpenGLRenderer_1_2()
22942294
{
2295+
_variantID = OpenGLVariantID_Legacy_1_2;
2296+
22952297
_geometryDrawBuffersEnum = GeometryDrawBuffersEnumStandard;
22962298
_geometryAttachmentWorkingBuffer = GeometryAttachmentWorkingBufferStandard;
22972299
_geometryAttachmentPolyID = GeometryAttachmentPolyIDStandard;
@@ -5167,7 +5169,7 @@ Render3DError OpenGLRenderer_1_2::Reset()
51675169
{
51685170
OGLRenderRef &OGLRef = *this->ref;
51695171

5170-
if(!BEGINGL())
5172+
if (!BEGINGL())
51715173
{
51725174
return OGLERROR_BEGINGL_FAILED;
51735175
}
@@ -5227,7 +5229,7 @@ Render3DError OpenGLRenderer_1_2::RenderPowerOff()
52275229
memset(GPU->GetEngineMain()->Get3DFramebufferMain(), 0, this->_framebufferColorSizeBytes);
52285230
memset(GPU->GetEngineMain()->Get3DFramebuffer16(), 0, this->_framebufferPixCount * sizeof(u16));
52295231

5230-
if(!BEGINGL())
5232+
if (!BEGINGL())
52315233
{
52325234
return OGLERROR_BEGINGL_FAILED;
52335235
}
@@ -5272,7 +5274,7 @@ Render3DError OpenGLRenderer_1_2::RenderFinish()
52725274
{
52735275
this->_pixelReadNeedsFinish = false;
52745276

5275-
if(!BEGINGL())
5277+
if (!BEGINGL())
52765278
{
52775279
return OGLERROR_BEGINGL_FAILED;
52785280
}
@@ -5394,7 +5396,7 @@ Render3DError OpenGLRenderer_1_2::SetFramebufferSize(size_t w, size_t h)
53945396
else
53955397
{
53965398
Color4u8 *oldFramebufferColor = this->_framebufferColor;
5397-
Color4u8 *newFramebufferColor = (Color4u8 *)malloc_alignedCacheLine(newFramebufferColorSizeBytes);
5399+
Color4u8 *newFramebufferColor = (Color4u8 *)malloc_alignedPage(newFramebufferColorSizeBytes);
53985400
this->_framebufferColor = newFramebufferColor;
53995401
free_aligned(oldFramebufferColor);
54005402
}
@@ -5442,6 +5444,11 @@ Render3DError OpenGLRenderer_1_2::SetFramebufferSize(size_t w, size_t h)
54425444
return error;
54435445
}
54445446

5447+
OpenGLRenderer_2_0::OpenGLRenderer_2_0()
5448+
{
5449+
_variantID = OpenGLVariantID_Legacy_2_0;
5450+
}
5451+
54455452
Render3DError OpenGLRenderer_2_0::InitFinalRenderStates(const std::set<std::string> *oglExtensionSet)
54465453
{
54475454
OGLRenderRef &OGLRef = *this->ref;
@@ -5674,86 +5681,9 @@ Render3DError OpenGLRenderer_2_0::BeginRender(const GFX3D_State &renderState, co
56745681
return OGLERROR_NOERR;
56755682
}
56765683

5677-
Render3DError OpenGLRenderer_2_0::SetupTexture(const POLY &thePoly, size_t polyRenderIndex)
5684+
OpenGLRenderer_2_1::OpenGLRenderer_2_1()
56785685
{
5679-
OpenGLTexture *theTexture = (OpenGLTexture *)this->_textureList[polyRenderIndex];
5680-
const NDSTextureFormat packFormat = theTexture->GetPackFormat();
5681-
const OGLRenderRef &OGLRef = *this->ref;
5682-
5683-
glUniform2f(OGLRef.uniformPolyTexScale[this->_geometryProgramFlags.value], theTexture->GetInvWidth(), theTexture->GetInvHeight());
5684-
5685-
// Check if we need to use textures
5686-
if (!theTexture->IsSamplingEnabled())
5687-
{
5688-
glUniform1i(OGLRef.uniformPolyEnableTexture[this->_geometryProgramFlags.value], GL_FALSE);
5689-
glUniform1i(OGLRef.uniformTexSingleBitAlpha[this->_geometryProgramFlags.value], GL_FALSE);
5690-
return OGLERROR_NOERR;
5691-
}
5692-
5693-
glUniform1i(OGLRef.uniformPolyEnableTexture[this->_geometryProgramFlags.value], GL_TRUE);
5694-
glUniform1i(OGLRef.uniformTexSingleBitAlpha[this->_geometryProgramFlags.value], (packFormat != TEXMODE_A3I5 && packFormat != TEXMODE_A5I3) ? GL_TRUE : GL_FALSE);
5695-
5696-
glBindTexture(GL_TEXTURE_2D, theTexture->GetID());
5697-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ((thePoly.texParam.RepeatS_Enable) ? ((thePoly.texParam.MirroredRepeatS_Enable) ? GL_MIRRORED_REPEAT : GL_REPEAT) : GL_CLAMP_TO_EDGE));
5698-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ((thePoly.texParam.RepeatT_Enable) ? ((thePoly.texParam.MirroredRepeatT_Enable) ? GL_MIRRORED_REPEAT : GL_REPEAT) : GL_CLAMP_TO_EDGE));
5699-
5700-
if (this->_enableTextureSmoothing)
5701-
{
5702-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (this->_textureScalingFactor > 1) ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR);
5703-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
5704-
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, this->_deviceInfo.maxAnisotropy);
5705-
}
5706-
else
5707-
{
5708-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
5709-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
5710-
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f);
5711-
}
5712-
5713-
theTexture->ResetCacheAge();
5714-
theTexture->IncreaseCacheUsageCount(1);
5715-
5716-
return OGLERROR_NOERR;
5717-
}
5718-
5719-
Render3DError OpenGLRenderer_2_1::RenderFinish()
5720-
{
5721-
if (!this->_renderNeedsFinish)
5722-
{
5723-
return OGLERROR_NOERR;
5724-
}
5725-
5726-
if (this->_pixelReadNeedsFinish)
5727-
{
5728-
this->_pixelReadNeedsFinish = false;
5729-
5730-
if(!BEGINGL())
5731-
{
5732-
return OGLERROR_BEGINGL_FAILED;
5733-
}
5734-
this->_mappedFramebuffer = (Color4u8 *__restrict)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
5735-
ENDGL();
5736-
}
5737-
5738-
this->_renderNeedsFlushMain = true;
5739-
this->_renderNeedsFlush16 = true;
5740-
5741-
return OGLERROR_NOERR;
5742-
}
5743-
5744-
Render3DError OpenGLRenderer_2_1::RenderFlush(bool willFlushBuffer32, bool willFlushBuffer16)
5745-
{
5746-
if (!this->_isPoweredOn)
5747-
{
5748-
return RENDER3DERROR_NOERR;
5749-
}
5750-
5751-
Color4u8 *framebufferMain = (willFlushBuffer32) ? GPU->GetEngineMain()->Get3DFramebufferMain() : NULL;
5752-
u16 *framebuffer16 = (willFlushBuffer16) ? GPU->GetEngineMain()->Get3DFramebuffer16() : NULL;
5753-
5754-
this->FlushFramebuffer(this->_mappedFramebuffer, framebufferMain, framebuffer16);
5755-
5756-
return RENDER3DERROR_NOERR;
5686+
_variantID = OpenGLVariantID_Legacy_2_1;
57575687
}
57585688

57595689
template size_t OpenGLRenderer::DrawPolygonsForIndexRange<OGLPolyDrawMode_DrawOpaquePolys>(const POLY *rawPolyList, const CPoly *clippedPolyList, const size_t clippedPolyCount, size_t firstIndex, size_t lastIndex, size_t &indexOffset, POLYGON_ATTR &lastPolyAttr);

desmume/src/OGLRender.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -1077,22 +1077,22 @@ class OpenGLRenderer_1_2 : public OpenGLRenderer
10771077

10781078
class OpenGLRenderer_2_0 : public OpenGLRenderer_1_2
10791079
{
1080+
public:
1081+
OpenGLRenderer_2_0();
1082+
10801083
protected:
10811084
virtual Render3DError InitFinalRenderStates(const std::set<std::string> *oglExtensionSet);
10821085

10831086
virtual Render3DError EnableVertexAttributes();
10841087
virtual Render3DError DisableVertexAttributes();
10851088

10861089
virtual Render3DError BeginRender(const GFX3D_State &renderState, const GFX3D_GeometryList &renderGList);
1087-
1088-
virtual Render3DError SetupTexture(const POLY &thePoly, size_t polyRenderIndex);
10891090
};
10901091

10911092
class OpenGLRenderer_2_1 : public OpenGLRenderer_2_0
10921093
{
10931094
public:
1094-
virtual Render3DError RenderFinish();
1095-
virtual Render3DError RenderFlush(bool willFlushBuffer32, bool willFlushBuffer16);
1095+
OpenGLRenderer_2_1();
10961096
};
10971097

10981098
#endif // OGLRENDER_H

0 commit comments

Comments
 (0)