gles: remove pallete textures from compressed texture format support list for gles2 am: 41ab282144 am: 5d41f08df5 am: 7bf0ce9198
Original change: https://android-review.googlesource.com/c/device/generic/vulkan-cereal/+/1708268
Change-Id: Icb969ff358e9fb533c925d1d8f6fec70956fe965
diff --git a/stream-servers/glestranslator/GLES_CM/GLEScmImp.cpp b/stream-servers/glestranslator/GLES_CM/GLEScmImp.cpp
index 2479750..fb00d41 100644
--- a/stream-servers/glestranslator/GLES_CM/GLEScmImp.cpp
+++ b/stream-servers/glestranslator/GLES_CM/GLEScmImp.cpp
@@ -1064,14 +1064,14 @@
}
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
- *params = (GLboolean)getCompressedFormats(NULL);
+ *params = (GLboolean)getCompressedFormats(1, NULL);
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
{
- int nparams = getCompressedFormats(NULL);
+ int nparams = getCompressedFormats(1, NULL);
if (nparams>0) {
int * iparams = new int[nparams];
- getCompressedFormats(iparams);
+ getCompressedFormats(1, iparams);
for (int i=0; i<nparams; i++) params[i] = (GLboolean)iparams[i];
delete [] iparams;
}
@@ -1162,15 +1162,15 @@
glGetFloatv(pname,&fParams[0]);
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
- *params = I2X(getCompressedFormats(NULL));
+ *params = I2X(getCompressedFormats(1, NULL));
return;
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
{
- int nparams = getCompressedFormats(NULL);
+ int nparams = getCompressedFormats(1, NULL);
if (nparams>0) {
int * iparams = new int[nparams];
- getCompressedFormats(iparams);
+ getCompressedFormats(1, iparams);
for (int i=0; i<nparams; i++) params[i] = I2X(iparams[i]);
delete [] iparams;
}
@@ -1208,14 +1208,14 @@
*params = (GLfloat)i;
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
- *params = (GLfloat)getCompressedFormats(NULL);
+ *params = (GLfloat)getCompressedFormats(1, NULL);
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
{
- int nparams = getCompressedFormats(NULL);
+ int nparams = getCompressedFormats(1, NULL);
if (nparams>0) {
int * iparams = new int[nparams];
- getCompressedFormats(iparams);
+ getCompressedFormats(1, iparams);
for (int i=0; i<nparams; i++) params[i] = (GLfloat)iparams[i];
delete [] iparams;
}
@@ -1266,10 +1266,10 @@
}
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
- *params = getCompressedFormats(NULL);
+ *params = getCompressedFormats(1, NULL);
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
- getCompressedFormats(params);
+ getCompressedFormats(1, params);
break;
case GL_MAX_CLIP_PLANES:
ctx->dispatcher().glGetIntegerv(pname,params);
diff --git a/stream-servers/glestranslator/GLES_V2/GLESv2Imp.cpp b/stream-servers/glestranslator/GLES_V2/GLESv2Imp.cpp
index 4b2855e..b31fa34 100644
--- a/stream-servers/glestranslator/GLES_V2/GLESv2Imp.cpp
+++ b/stream-servers/glestranslator/GLES_V2/GLESv2Imp.cpp
@@ -2086,14 +2086,14 @@
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
- *params = (T)getCompressedFormats(NULL);
+ *params = (T)getCompressedFormats(2, NULL);
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
{
- int nparams = getCompressedFormats(NULL);
+ int nparams = getCompressedFormats(2, NULL);
if (nparams > 0) {
int* iparams = new int[nparams];
- getCompressedFormats(iparams);
+ getCompressedFormats(2, iparams);
for (int i = 0; i < nparams; i++) {
params[i] = (T)iparams[i];
}
diff --git a/stream-servers/glestranslator/GLcommon/TextureUtils.cpp b/stream-servers/glestranslator/GLcommon/TextureUtils.cpp
index 6e61e64..f47d6cd 100644
--- a/stream-servers/glestranslator/GLcommon/TextureUtils.cpp
+++ b/stream-servers/glestranslator/GLcommon/TextureUtils.cpp
@@ -64,26 +64,30 @@
EXPAND_MACRO(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, astc_codec::FootprintType::k12x10, true) \
EXPAND_MACRO(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, astc_codec::FootprintType::k12x12, true) \
-int getCompressedFormats(int* formats) {
+int getCompressedFormats(int majorVersion, int* formats) {
static constexpr size_t kCount = MAX_SUPPORTED_PALETTE + MAX_ETC_SUPPORTED + kASTCFormatsCount;
+ int res = kCount;
+
+ if (majorVersion > 1) {
+ res -= MAX_SUPPORTED_PALETTE;
+ }
if (formats) {
size_t i = 0;
- // Palette
- formats[i++] = GL_PALETTE4_RGBA8_OES;
- formats[i++] = GL_PALETTE4_RGBA4_OES;
- formats[i++] = GL_PALETTE8_RGBA8_OES;
- formats[i++] = GL_PALETTE8_RGBA4_OES;
- formats[i++] = GL_PALETTE4_RGB8_OES;
- formats[i++] = GL_PALETTE8_RGB8_OES;
- formats[i++] = GL_PALETTE4_RGB5_A1_OES;
- formats[i++] = GL_PALETTE8_RGB5_A1_OES;
- formats[i++] = GL_PALETTE4_R5_G6_B5_OES;
- formats[i++] = GL_PALETTE8_R5_G6_B5_OES;
-
- assert(i == MAX_SUPPORTED_PALETTE &&
- "getCompressedFormats size mismatch");
+ if (1 == majorVersion) {
+ // Palette
+ formats[i++] = GL_PALETTE4_RGBA8_OES;
+ formats[i++] = GL_PALETTE4_RGBA4_OES;
+ formats[i++] = GL_PALETTE8_RGBA8_OES;
+ formats[i++] = GL_PALETTE8_RGBA4_OES;
+ formats[i++] = GL_PALETTE4_RGB8_OES;
+ formats[i++] = GL_PALETTE8_RGB8_OES;
+ formats[i++] = GL_PALETTE4_RGB5_A1_OES;
+ formats[i++] = GL_PALETTE8_RGB5_A1_OES;
+ formats[i++] = GL_PALETTE4_R5_G6_B5_OES;
+ formats[i++] = GL_PALETTE8_R5_G6_B5_OES;
+ }
// ETC
formats[i++] = GL_ETC1_RGB8_OES;
@@ -99,9 +103,6 @@
formats[i++] = GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC;
formats[i++] = GL_COMPRESSED_R11_EAC;
- assert(i == MAX_SUPPORTED_PALETTE + MAX_ETC_SUPPORTED &&
- "getCompressedFormats size mismatch");
-
// ASTC
#define ASTC_FORMAT(typeName, footprintType, srgbValue) \
formats[i++] = typeName;
@@ -109,10 +110,9 @@
ASTC_FORMATS_LIST(ASTC_FORMAT)
#undef ASTC_FORMAT
- assert(i == kCount && "getCompressedFormats size mismatch");
}
- return kCount;
+ return res;
}
ETC2ImageFormat getEtcFormat(GLenum internalformat) {
diff --git a/stream-servers/glestranslator/include/GLcommon/TextureUtils.h b/stream-servers/glestranslator/include/GLcommon/TextureUtils.h
index 641011e..b5034d0 100644
--- a/stream-servers/glestranslator/include/GLcommon/TextureUtils.h
+++ b/stream-servers/glestranslator/include/GLcommon/TextureUtils.h
@@ -37,7 +37,7 @@
bool isBptcFormat(GLenum internalformat);
bool isS3tcFormat(GLenum internalformat);
bool isPaletteFormat(GLenum internalformat);
-int getCompressedFormats(int* formats);
+int getCompressedFormats(int majorVersion, int* formats);
void doCompressedTexImage2D(GLEScontext* ctx, GLenum target, GLint level,
GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei imageSize,