Fix internal format handling for OpenGL ES 1.1.
With the egl::Image class now only storing the sized internal format,
some OpenGL ES 1.1 functionality broke because it was still expecting a
base format.
Change-Id: Ib41e91f371a06b2a09471ea45dd1f8f56b94091f
Reviewed-on: https://swiftshader-review.googlesource.com/17468
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGLES_CM/Context.cpp b/src/OpenGL/libGLES_CM/Context.cpp
index 91f865c..99abd4e 100644
--- a/src/OpenGL/libGLES_CM/Context.cpp
+++ b/src/OpenGL/libGLES_CM/Context.cpp
@@ -2444,12 +2444,12 @@
unsigned short *dest16 = (unsigned short*)dest;
unsigned int *dest32 = (unsigned int*)dest;
- if(renderTarget->getInternalFormat() == sw::FORMAT_A8B8G8R8 &&
+ if(renderTarget->getExternalFormat() == sw::FORMAT_A8B8G8R8 &&
format == GL_RGBA && type == GL_UNSIGNED_BYTE)
{
memcpy(dest, source, (rect.x1 - rect.x0) * 4);
}
- else if(renderTarget->getInternalFormat() == sw::FORMAT_A8R8G8B8 &&
+ else if(renderTarget->getExternalFormat() == sw::FORMAT_A8R8G8B8 &&
format == GL_RGBA && type == GL_UNSIGNED_BYTE)
{
for(int i = 0; i < rect.x1 - rect.x0; i++)
@@ -2459,7 +2459,7 @@
dest32[i] = (argb & 0xFF00FF00) | ((argb & 0x000000FF) << 16) | ((argb & 0x00FF0000) >> 16);
}
}
- else if(renderTarget->getInternalFormat() == sw::FORMAT_X8R8G8B8 &&
+ else if(renderTarget->getExternalFormat() == sw::FORMAT_X8R8G8B8 &&
format == GL_RGBA && type == GL_UNSIGNED_BYTE)
{
for(int i = 0; i < rect.x1 - rect.x0; i++)
@@ -2469,7 +2469,7 @@
dest32[i] = (xrgb & 0xFF00FF00) | ((xrgb & 0x000000FF) << 16) | ((xrgb & 0x00FF0000) >> 16) | 0xFF000000;
}
}
- else if(renderTarget->getInternalFormat() == sw::FORMAT_X8R8G8B8 &&
+ else if(renderTarget->getExternalFormat() == sw::FORMAT_X8R8G8B8 &&
format == GL_BGRA_EXT && type == GL_UNSIGNED_BYTE)
{
for(int i = 0; i < rect.x1 - rect.x0; i++)
@@ -2479,17 +2479,17 @@
dest32[i] = xrgb | 0xFF000000;
}
}
- else if(renderTarget->getInternalFormat() == sw::FORMAT_A8R8G8B8 &&
+ else if(renderTarget->getExternalFormat() == sw::FORMAT_A8R8G8B8 &&
format == GL_BGRA_EXT && type == GL_UNSIGNED_BYTE)
{
memcpy(dest, source, (rect.x1 - rect.x0) * 4);
}
- else if(renderTarget->getInternalFormat() == sw::FORMAT_A1R5G5B5 &&
+ else if(renderTarget->getExternalFormat() == sw::FORMAT_A1R5G5B5 &&
format == GL_BGRA_EXT && type == GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT)
{
memcpy(dest, source, (rect.x1 - rect.x0) * 2);
}
- else if(renderTarget->getInternalFormat() == sw::FORMAT_R5G6B5 &&
+ else if(renderTarget->getExternalFormat() == sw::FORMAT_R5G6B5 &&
format == 0x80E0 && type == GL_UNSIGNED_SHORT_5_6_5) // GL_BGR_EXT
{
memcpy(dest, source, (rect.x1 - rect.x0) * 2);
@@ -2503,7 +2503,7 @@
float b;
float a;
- switch(renderTarget->getInternalFormat())
+ switch(renderTarget->getExternalFormat())
{
case sw::FORMAT_R5G6B5:
{
@@ -2577,7 +2577,7 @@
break;
default:
UNIMPLEMENTED(); // FIXME
- UNREACHABLE(renderTarget->getInternalFormat());
+ UNREACHABLE(renderTarget->getExternalFormat());
}
switch(format)