Commit de6b75c6 by Nicolas Capens

Use matching internal and external formats for RGBA8 images.

Change-Id: I056e1a4c7ace83207bed85ce28aca187d72adc6f Reviewed-on: https://swiftshader-review.googlesource.com/2757Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com>
parent edb2e172
......@@ -406,10 +406,13 @@ GLenum Framebuffer::getImplementationColorReadFormat()
if(colorbuffer)
{
// Don't return GL_RGBA since that's always supported. Provide a second option here.
switch(colorbuffer->getInternalFormat())
{
case sw::FORMAT_A8R8G8B8: return GL_BGRA_EXT;
case sw::FORMAT_X8R8G8B8: return GL_BGRA_EXT;
case sw::FORMAT_A8B8G8R8: return GL_BGRA_EXT;
case sw::FORMAT_X8R8G8B8: return 0x80E0; // GL_BGR_EXT
case sw::FORMAT_X8B8G8R8: return 0x80E0; // GL_BGR_EXT
case sw::FORMAT_A1R5G5B5: return GL_BGRA_EXT;
case sw::FORMAT_R5G6B5: return 0x80E0; // GL_BGR_EXT
default:
......@@ -429,7 +432,9 @@ GLenum Framebuffer::getImplementationColorReadType()
switch(colorbuffer->getInternalFormat())
{
case sw::FORMAT_A8R8G8B8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_A8B8G8R8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_X8R8G8B8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_X8B8G8R8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_A1R5G5B5: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT;
case sw::FORMAT_R5G6B5: return GL_UNSIGNED_SHORT_5_6_5;
default:
......
......@@ -118,13 +118,17 @@ namespace es1
{
return sw::FORMAT_A8L8;
}
else if(format == GL_RGBA || format == GL_BGRA_EXT)
else if(format == GL_RGBA)
{
return sw::FORMAT_A8B8G8R8;
}
else if(format == GL_BGRA_EXT)
{
return sw::FORMAT_A8R8G8B8;
}
else if(format == GL_RGB)
{
return sw::FORMAT_X8R8G8B8;
return sw::FORMAT_X8B8G8R8;
}
else if(format == GL_ALPHA)
{
......@@ -154,7 +158,7 @@ namespace es1
}
else UNREACHABLE();
return sw::FORMAT_A8R8G8B8;
return sw::FORMAT_A8B8G8R8;
}
void Image::loadImageData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *input)
......@@ -184,10 +188,8 @@ namespace es1
loadRGBUByteImageData(xoffset, yoffset, width, height, inputPitch, input, buffer);
break;
case GL_RGBA:
loadRGBAUByteImageData(xoffset, yoffset, width, height, inputPitch, input, buffer);
break;
case GL_BGRA_EXT:
loadBGRAImageData(xoffset, yoffset, width, height, inputPitch, input, buffer);
loadRGBAUByteImageData(xoffset, yoffset, width, height, inputPitch, input, buffer);
break;
default: UNREACHABLE();
}
......@@ -350,9 +352,9 @@ namespace es1
for(int x = 0; x < width; x++)
{
dest[4 * x + 0] = source[x * 3 + 2];
dest[4 * x + 0] = source[x * 3 + 0];
dest[4 * x + 1] = source[x * 3 + 1];
dest[4 * x + 2] = source[x * 3 + 0];
dest[4 * x + 2] = source[x * 3 + 2];
dest[4 * x + 3] = 0xFF;
}
}
......@@ -400,11 +402,7 @@ namespace es1
const unsigned int *source = reinterpret_cast<const unsigned int*>(static_cast<const unsigned char*>(input) + y * inputPitch);
unsigned int *dest = reinterpret_cast<unsigned int*>(static_cast<unsigned char*>(buffer) + (y + yoffset) * getPitch() + xoffset * 4);
for(int x = 0; x < width; x++)
{
unsigned int rgba = source[x];
dest[x] = (rgba & 0xFF00FF00) | ((rgba << 16) & 0x00FF0000) | ((rgba >> 16) & 0x000000FF);
}
memcpy(dest, source, width * 4);
}
}
......@@ -455,17 +453,6 @@ namespace es1
}
}
void Image::loadBGRAImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const
{
for(int y = 0; y < height; y++)
{
const unsigned char *source = static_cast<const unsigned char*>(input) + y * inputPitch;
unsigned char *dest = static_cast<unsigned char*>(buffer) + (y + yoffset) * getPitch() + xoffset * 4;
memcpy(dest, source, width*4);
}
}
void Image::loadD16ImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const
{
for(int y = 0; y < height; y++)
......
......@@ -58,7 +58,6 @@ namespace es1
void loadRGBA4444ImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const;
void loadRGBA5551ImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const;
void loadRGBAFloatImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const;
void loadBGRAImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const;
void loadD16ImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const;
void loadD32ImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer) const;
void loadD24S8ImageData(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, int inputPitch, const void *input, void *buffer);
......
......@@ -250,7 +250,7 @@ RenderbufferStorage::RenderbufferStorage()
mWidth = 0;
mHeight = 0;
format = GL_RGBA4_OES;
internalFormat = sw::FORMAT_A8R8G8B8;
internalFormat = sw::FORMAT_A8B8G8R8;
mSamples = 0;
}
......
......@@ -444,9 +444,13 @@ void Texture2D::bindTexImage(egl::Surface *surface)
switch(surface->getInternalFormat())
{
case sw::FORMAT_A8R8G8B8:
format = GL_BGRA_EXT;
break;
case sw::FORMAT_A8B8G8R8:
format = GL_RGBA;
break;
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
case sw::FORMAT_X8R8G8B8:
format = GL_RGB;
break;
default:
......
......@@ -458,13 +458,13 @@ namespace es2sw
{
case GL_RGBA4_OES:
case GL_RGB5_A1_OES:
case GL_RGBA8_OES: return sw::FORMAT_A8R8G8B8;
case GL_RGBA8_OES: return sw::FORMAT_A8B8G8R8;
case GL_RGB565_OES: return sw::FORMAT_R5G6B5;
case GL_RGB8_OES: return sw::FORMAT_X8R8G8B8;
case GL_RGB8_OES: return sw::FORMAT_X8B8G8R8;
case GL_DEPTH_COMPONENT16_OES:
case GL_STENCIL_INDEX8_OES:
case GL_STENCIL_INDEX8_OES:
case GL_DEPTH24_STENCIL8_OES: return sw::FORMAT_D24S8;
default: UNREACHABLE(); return sw::FORMAT_A8R8G8B8;
default: UNREACHABLE(); return sw::FORMAT_A8B8G8R8;
}
}
......@@ -560,10 +560,12 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 2;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
return 1;
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
case sw::FORMAT_R5G6B5:
return 0;
default:
......@@ -582,7 +584,9 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 10;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
case sw::FORMAT_R5G6B5:
......@@ -603,7 +607,9 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 10;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
return 5;
......@@ -625,7 +631,9 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 10;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
case sw::FORMAT_R5G6B5:
......@@ -661,9 +669,11 @@ namespace sw2es
{
case sw::FORMAT_A4R4G4B4: return GL_RGBA4_OES;
case sw::FORMAT_A8R8G8B8: return GL_RGBA8_OES;
case sw::FORMAT_A8B8G8R8: return GL_RGBA8_OES;
case sw::FORMAT_A1R5G5B5: return GL_RGB5_A1_OES;
case sw::FORMAT_R5G6B5: return GL_RGB565_OES;
case sw::FORMAT_X8R8G8B8: return GL_RGB8_OES;
case sw::FORMAT_X8B8G8R8: return GL_RGB8_OES;
default:
UNREACHABLE();
}
......
......@@ -405,12 +405,15 @@ GLenum Framebuffer::getImplementationColorReadFormat()
if(colorbuffer)
{
// Don't return GL_RGBA since that's always supported. Provide a second option here.
switch(colorbuffer->getInternalFormat())
{
case sw::FORMAT_A16B16G16R16F: return GL_RGBA;
case sw::FORMAT_A32B32G32R32F: return GL_RGBA;
case sw::FORMAT_A16B16G16R16F: return GL_BGRA_EXT;
case sw::FORMAT_A32B32G32R32F: return GL_BGRA_EXT;
case sw::FORMAT_A8R8G8B8: return GL_BGRA_EXT;
case sw::FORMAT_X8R8G8B8: return GL_BGRA_EXT;
case sw::FORMAT_A8B8G8R8: return GL_BGRA_EXT;
case sw::FORMAT_X8R8G8B8: return 0x80E0; // GL_BGR_EXT
case sw::FORMAT_X8B8G8R8: return 0x80E0; // GL_BGR_EXT
case sw::FORMAT_A1R5G5B5: return GL_BGRA_EXT;
case sw::FORMAT_R5G6B5: return 0x80E0; // GL_BGR_EXT
default:
......@@ -432,7 +435,9 @@ GLenum Framebuffer::getImplementationColorReadType()
case sw::FORMAT_A16B16G16R16F: return GL_HALF_FLOAT_OES;
case sw::FORMAT_A32B32G32R32F: return GL_FLOAT;
case sw::FORMAT_A8R8G8B8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_A8B8G8R8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_X8R8G8B8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_X8B8G8R8: return GL_UNSIGNED_BYTE;
case sw::FORMAT_A1R5G5B5: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT;
case sw::FORMAT_R5G6B5: return GL_UNSIGNED_SHORT_5_6_5;
default:
......
......@@ -31,16 +31,15 @@ namespace
LuminanceAlpha,
LuminanceAlphaFloat,
LuminanceAlphaHalfFloat,
RGBUByte,
UByteRGB,
RGB565,
RGBFloat,
RGBHalfFloat,
RGBAUByte,
FloatRGB,
HalfFloatRGB,
UByte4,
RGBA4444,
RGBA5551,
RGBAFloat,
RGBAHalfFloat,
BGRA,
Float4,
HalfFloat4,
D16,
D24,
D32,
......@@ -162,15 +161,15 @@ namespace
}
template<>
void LoadImageRow<RGBUByte>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
void LoadImageRow<UByteRGB>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
unsigned char *destB = dest + xoffset * 4;
for(int x = 0; x < width; x++)
{
destB[4 * x + 0] = source[x * 3 + 2];
destB[4 * x + 0] = source[x * 3 + 0];
destB[4 * x + 1] = source[x * 3 + 1];
destB[4 * x + 2] = source[x * 3 + 0];
destB[4 * x + 2] = source[x * 3 + 2];
destB[4 * x + 3] = 0xFF;
}
}
......@@ -192,7 +191,7 @@ namespace
}
template<>
void LoadImageRow<RGBFloat>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
void LoadImageRow<FloatRGB>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
const float *sourceF = reinterpret_cast<const float*>(source);
float *destF = reinterpret_cast<float*>(dest + xoffset * 16);
......@@ -207,7 +206,7 @@ namespace
}
template<>
void LoadImageRow<RGBHalfFloat>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
void LoadImageRow<HalfFloatRGB>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
const unsigned short *sourceH = reinterpret_cast<const unsigned short*>(source);
unsigned short *destH = reinterpret_cast<unsigned short*>(dest + xoffset * 8);
......@@ -222,15 +221,14 @@ namespace
}
template<>
void LoadImageRow<RGBAUByte>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
void LoadImageRow<UByte4>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
const unsigned int *sourceI = reinterpret_cast<const unsigned int*>(source);
unsigned int *destI = reinterpret_cast<unsigned int*>(dest + xoffset * 4);
for(int x = 0; x < width; x++)
{
unsigned int rgba = sourceI[x];
destI[x] = (rgba & 0xFF00FF00) | ((rgba << 16) & 0x00FF0000) | ((rgba >> 16) & 0x000000FF);
memcpy(dest + xoffset * 4, source, width * 4);
}
}
......@@ -267,24 +265,18 @@ namespace
}
template<>
void LoadImageRow<RGBAFloat>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
void LoadImageRow<Float4>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
memcpy(dest + xoffset * 16, source, width * 16);
}
template<>
void LoadImageRow<RGBAHalfFloat>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
void LoadImageRow<HalfFloat4>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
memcpy(dest + xoffset * 8, source, width * 8);
}
template<>
void LoadImageRow<BGRA>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
memcpy(dest + xoffset * 4, source, width * 4);
}
template<>
void LoadImageRow<D16>(const unsigned char *source, unsigned char *dest, GLint xoffset, GLsizei width)
{
const unsigned short *sourceD16 = reinterpret_cast<const unsigned short*>(source);
......@@ -337,8 +329,8 @@ namespace
{
for(int z = 0; z < depth; ++z)
{
const unsigned char *inputStart = static_cast<const unsigned char*>(input)+(z * inputPitch * height);
unsigned char *destStart = static_cast<unsigned char*>(buffer)+((zoffset + z) * destPitch * destHeight);
const unsigned char *inputStart = static_cast<const unsigned char*>(input) + (z * inputPitch * height);
unsigned char *destStart = static_cast<unsigned char*>(buffer) + ((zoffset + z) * destPitch * destHeight);
for(int y = 0; y < height; ++y)
{
const unsigned char *source = inputStart + y * inputPitch;
......@@ -468,13 +460,17 @@ namespace es2
{
return sw::FORMAT_A8L8;
}
else if(format == GL_RGBA || format == GL_BGRA_EXT)
else if(format == GL_RGBA)
{
return sw::FORMAT_A8B8G8R8;
}
else if(format == GL_BGRA_EXT)
{
return sw::FORMAT_A8R8G8B8;
}
else if(format == GL_RGB)
{
return sw::FORMAT_X8R8G8B8;
return sw::FORMAT_X8B8G8R8;
}
else if(format == GL_ALPHA)
{
......@@ -512,7 +508,7 @@ namespace es2
}
else UNREACHABLE();
return sw::FORMAT_A8R8G8B8;
return sw::FORMAT_A8B8G8R8;
}
void Image::loadImageData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *input)
......@@ -537,13 +533,11 @@ namespace es2
LoadImageData<LuminanceAlpha>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_RGB:
LoadImageData<RGBUByte>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
LoadImageData<UByteRGB>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_RGBA:
LoadImageData<RGBAUByte>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_BGRA_EXT:
LoadImageData<BGRA>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
LoadImageData<UByte4>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
default: UNREACHABLE();
}
......@@ -578,7 +572,6 @@ namespace es2
case GL_FLOAT:
switch(format)
{
// float textures are converted to RGBA, not BGRA
case GL_ALPHA:
LoadImageData<AlphaFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
......@@ -589,10 +582,10 @@ namespace es2
LoadImageData<LuminanceAlphaFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_RGB:
LoadImageData<RGBFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
LoadImageData<FloatRGB>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_RGBA:
LoadImageData<RGBAFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
LoadImageData<Float4>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
default: UNREACHABLE();
}
......@@ -600,7 +593,6 @@ namespace es2
case GL_HALF_FLOAT_OES:
switch(format)
{
// float textures are converted to RGBA, not BGRA
case GL_ALPHA:
LoadImageData<AlphaHalfFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
......@@ -611,10 +603,10 @@ namespace es2
LoadImageData<LuminanceAlphaHalfFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_RGB:
LoadImageData<RGBHalfFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
LoadImageData<HalfFloatRGB>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
case GL_RGBA:
LoadImageData<RGBAHalfFloat>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
LoadImageData<HalfFloat4>(xoffset, yoffset, zoffset, width, height, depth, inputPitch, getPitch(), getHeight(), input, buffer);
break;
default: UNREACHABLE();
}
......@@ -653,7 +645,7 @@ namespace es2
{
if(zoffset != 0 || depth != 1)
{
UNIMPLEMENTED(); // FIXME
UNIMPLEMENTED(); // FIXME
}
int inputPitch = ComputeCompressedPitch(width, format);
......
......@@ -386,7 +386,7 @@ RenderbufferStorage::RenderbufferStorage()
mWidth = 0;
mHeight = 0;
format = GL_RGBA4;
internalFormat = sw::FORMAT_A8R8G8B8;
internalFormat = sw::FORMAT_A8B8G8R8;
mSamples = 0;
}
......
......@@ -444,9 +444,13 @@ void Texture2D::bindTexImage(egl::Surface *surface)
switch(surface->getInternalFormat())
{
case sw::FORMAT_A8R8G8B8:
format = GL_BGRA_EXT;
break;
case sw::FORMAT_A8B8G8R8:
format = GL_RGBA;
break;
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
case sw::FORMAT_X8R8G8B8:
format = GL_RGB;
break;
default:
......
......@@ -673,13 +673,13 @@ namespace es2sw
{
case GL_RGBA4:
case GL_RGB5_A1:
case GL_RGBA8_OES: return sw::FORMAT_A8R8G8B8;
case GL_RGBA8_OES: return sw::FORMAT_A8B8G8R8;
case GL_RGB565: return sw::FORMAT_R5G6B5;
case GL_RGB8_OES: return sw::FORMAT_X8R8G8B8;
case GL_RGB8_OES: return sw::FORMAT_X8B8G8R8;
case GL_DEPTH_COMPONENT16:
case GL_STENCIL_INDEX8:
case GL_DEPTH24_STENCIL8_OES: return sw::FORMAT_D24S8;
default: UNREACHABLE(); return sw::FORMAT_A8R8G8B8;
default: UNREACHABLE(); return sw::FORMAT_A8B8G8R8;
}
}
}
......@@ -722,10 +722,12 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 2;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
return 1;
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
case sw::FORMAT_R5G6B5:
return 0;
default:
......@@ -744,7 +746,9 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 10;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
case sw::FORMAT_R5G6B5:
......@@ -765,7 +769,9 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 10;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
return 5;
......@@ -787,7 +793,9 @@ namespace sw2es
case sw::FORMAT_A2R10G10B10:
return 10;
case sw::FORMAT_A8R8G8B8:
case sw::FORMAT_A8B8G8R8:
case sw::FORMAT_X8R8G8B8:
case sw::FORMAT_X8B8G8R8:
return 8;
case sw::FORMAT_A1R5G5B5:
case sw::FORMAT_R5G6B5:
......@@ -823,9 +831,11 @@ namespace sw2es
{
case sw::FORMAT_A4R4G4B4: return GL_RGBA4;
case sw::FORMAT_A8R8G8B8: return GL_RGBA8_OES;
case sw::FORMAT_A8B8G8R8: return GL_RGBA8_OES;
case sw::FORMAT_A1R5G5B5: return GL_RGB5_A1;
case sw::FORMAT_R5G6B5: return GL_RGB565;
case sw::FORMAT_X8R8G8B8: return GL_RGB8_OES;
case sw::FORMAT_X8B8G8R8: return GL_RGB8_OES;
default:
UNREACHABLE();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment