GL error checks, remove GL_ALPHA_TEST check, which doesn't work in GLES2.

This commit is contained in:
elasota
2020-10-16 20:06:32 -04:00
parent febd0e05ac
commit ad5a0795f4

View File

@@ -207,6 +207,12 @@ struct GpGLFunctions
bool LookUpFunctions(); bool LookUpFunctions();
}; };
static void CheckGLError(const GpGLFunctions &gl)
{
GLenum errorCode = gl.GetError();
assert(errorCode == 0);
}
class GpGLObject class GpGLObject
{ {
public: public:
@@ -942,8 +948,7 @@ void GpDisplayDriverSurface_GL2::UploadEntire(const void *data, size_t pitch)
{ {
assert(pitch == m_pitch); assert(pitch == m_pitch);
GLenum preError = m_gl->GetError(); CheckGLError(*m_gl);
GLenum preError2 = m_gl->GetError();
const GLint internalFormat = ResolveGLInternalFormat(); const GLint internalFormat = ResolveGLInternalFormat();
const GLenum glFormat = ResolveGLFormat(); const GLenum glFormat = ResolveGLFormat();
@@ -953,9 +958,7 @@ void GpDisplayDriverSurface_GL2::UploadEntire(const void *data, size_t pitch)
m_gl->TexImage2D(GL_TEXTURE_2D, 0, internalFormat, m_paddedTextureWidth, m_height, 0, glFormat, glType, data); m_gl->TexImage2D(GL_TEXTURE_2D, 0, internalFormat, m_paddedTextureWidth, m_height, 0, glFormat, glType, data);
m_gl->BindTexture(GL_TEXTURE_2D, 0); m_gl->BindTexture(GL_TEXTURE_2D, 0);
GLenum postError = m_gl->GetError(); CheckGLError(*m_gl);
int n = 0;
} }
void GpDisplayDriverSurface_GL2::Destroy() void GpDisplayDriverSurface_GL2::Destroy()
@@ -992,6 +995,8 @@ GpGLTexture *GpDisplayDriverSurface_GL2::GetTexture() const
bool GpDisplayDriverSurface_GL2::Init() bool GpDisplayDriverSurface_GL2::Init()
{ {
CheckGLError(*m_gl);
m_gl->BindTexture(GL_TEXTURE_2D, m_texture->GetID()); m_gl->BindTexture(GL_TEXTURE_2D, m_texture->GetID());
m_gl->PixelStorei(GL_UNPACK_ALIGNMENT, 1); m_gl->PixelStorei(GL_UNPACK_ALIGNMENT, 1);
m_gl->TexImage2D(GL_TEXTURE_2D, 0, ResolveGLInternalFormat(), m_paddedTextureWidth, m_height, 0, ResolveGLFormat(), ResolveGLType(), nullptr); m_gl->TexImage2D(GL_TEXTURE_2D, 0, ResolveGLInternalFormat(), m_paddedTextureWidth, m_height, 0, ResolveGLFormat(), ResolveGLType(), nullptr);
@@ -1001,6 +1006,8 @@ bool GpDisplayDriverSurface_GL2::Init()
m_gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); m_gl->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
m_gl->BindTexture(GL_TEXTURE_2D, 0); m_gl->BindTexture(GL_TEXTURE_2D, 0);
CheckGLError(*m_gl);
return true; return true;
} }
@@ -1872,8 +1879,12 @@ void GpDisplayDriver_SDL_GL2::DrawSurface(IGpDisplayDriverSurface *surface, int3
return; return;
} }
CheckGLError(m_gl);
m_gl.UseProgram(program->m_program->GetID()); m_gl.UseProgram(program->m_program->GetID());
CheckGLError(m_gl);
{ {
const float twoDivWidth = 2.0f / static_cast<float>(m_windowWidthVirtual); const float twoDivWidth = 2.0f / static_cast<float>(m_windowWidthVirtual);
const float negativeTwoDivHeight = -2.0f / static_cast<float>(m_windowHeightVirtual); const float negativeTwoDivHeight = -2.0f / static_cast<float>(m_windowHeightVirtual);
@@ -1943,6 +1954,7 @@ void GpDisplayDriver_SDL_GL2::DrawSurface(IGpDisplayDriverSurface *surface, int3
m_gl.DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr); m_gl.DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
m_gl.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); m_gl.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
CheckGLError(m_gl);
if (pixelFormat == GpPixelFormats::k8BitStandard || pixelFormat == GpPixelFormats::k8BitCustom) if (pixelFormat == GpPixelFormats::k8BitStandard || pixelFormat == GpPixelFormats::k8BitCustom)
{ {
@@ -1957,8 +1969,7 @@ void GpDisplayDriver_SDL_GL2::DrawSurface(IGpDisplayDriverSurface *surface, int3
m_gl.UseProgram(0); m_gl.UseProgram(0);
if (effects->m_flicker) CheckGLError(m_gl);
m_gl.Disable(GL_ALPHA_TEST);
} }
@@ -2507,7 +2518,7 @@ void GpDisplayDriver_SDL_GL2::ScaleVirtualScreen()
m_gl.ActiveTexture(GL_TEXTURE0 + 0); m_gl.ActiveTexture(GL_TEXTURE0 + 0);
m_gl.BindTexture(GL_TEXTURE_2D, m_virtualScreenTexture->GetID()); m_gl.BindTexture(GL_TEXTURE_2D, m_virtualScreenTexture->GetID());
m_gl.Uniform1i(m_scaleQuadProgram.m_pixelSurfaceTextureLocation, 0); m_gl.Uniform1i(program.m_pixelSurfaceTextureLocation, 0);
m_gl.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_quadIndexBuffer->GetID()); m_gl.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_quadIndexBuffer->GetID());
m_gl.DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr); m_gl.DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
@@ -2633,7 +2644,7 @@ GpDisplayDriverTickStatus_t GpDisplayDriver_SDL_GL2::PresentFrameAndSync()
ScaleVirtualScreen(); ScaleVirtualScreen();
GLenum errorCode = m_gl.GetError(); CheckGLError(m_gl);
SDL_GL_SwapWindow(m_window); SDL_GL_SwapWindow(m_window);
@@ -2732,7 +2743,12 @@ GpDisplayDriverTickStatus_t GpDisplayDriver_SDL_GL2::PresentFrameAndSync()
GpDisplayDriverTickStatus_t tickStatus = m_properties.m_tickFunc(m_properties.m_tickFuncContext, m_vosFiber); GpDisplayDriverTickStatus_t tickStatus = m_properties.m_tickFunc(m_properties.m_tickFuncContext, m_vosFiber);
m_frameTimeAccumulated -= m_frameTimeSliceSize; m_frameTimeAccumulated -= m_frameTimeSliceSize;
if (tickStatus != GpDisplayDriverTickStatuses::kOK) if (tickStatus == GpDisplayDriverTickStatuses::kSynchronizing)
{
m_frameTimeAccumulated = std::chrono::high_resolution_clock::duration::zero();
break;
}
else if (tickStatus != GpDisplayDriverTickStatuses::kOK)
return tickStatus; return tickStatus;
} }
} }