| Index: gpu/command_buffer/build_gles2_cmd_buffer.py
|
| diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
|
| index bf5b19ef8b4e78ae5d1a6ccabeed338e9a57f19f..d5b799e5d855c5cab1677eacaaecc6994c8884a8 100755
|
| --- a/gpu/command_buffer/build_gles2_cmd_buffer.py
|
| +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
|
| @@ -547,6 +547,8 @@ _STATES = {
|
| # valid_es3: The list of values that are valid in OpenGL ES 3, but not ES 2.
|
| # invalid: Examples of invalid values for the type. At least these values
|
| # should be tested to be invalid.
|
| +# deprecated_es3: The list of values that are valid in OpenGL ES 2, but
|
| +# deprecated in ES 3.
|
| # is_complete: The list of valid values of type are final and will not be
|
| # modified during runtime.
|
| _NAMED_TYPE_INFO = {
|
| @@ -776,6 +778,10 @@ _NAMED_TYPE_INFO = {
|
| 'GL_TEXTURE_2D',
|
| 'GL_TEXTURE_CUBE_MAP',
|
| ],
|
| + 'valid_es3': [
|
| + 'GL_TEXTURE_3D',
|
| + 'GL_TEXTURE_2D_ARRAY',
|
| + ],
|
| 'invalid': [
|
| 'GL_TEXTURE_1D',
|
| 'GL_TEXTURE_3D',
|
| @@ -1223,9 +1229,22 @@ _NAMED_TYPE_INFO = {
|
| 'GL_UNSIGNED_SHORT_4_4_4_4',
|
| 'GL_UNSIGNED_SHORT_5_5_5_1',
|
| ],
|
| - 'invalid': [
|
| + 'valid_es3': [
|
| + 'GL_BYTE',
|
| + 'GL_UNSIGNED_SHORT',
|
| 'GL_SHORT',
|
| + 'GL_UNSIGNED_INT',
|
| 'GL_INT',
|
| + 'GL_HALF_FLOAT',
|
| + 'GL_FLOAT',
|
| + 'GL_UNSIGNED_INT_2_10_10_10_REV',
|
| + 'GL_UNSIGNED_INT_10F_11F_11F_REV',
|
| + 'GL_UNSIGNED_INT_5_9_9_9_REV',
|
| + 'GL_UNSIGNED_INT_24_8',
|
| + 'GL_FLOAT_32_UNSIGNED_INT_24_8_REV',
|
| + ],
|
| + 'invalid': [
|
| + 'GL_UNSIGNED_BYTE_3_3_2',
|
| ],
|
| },
|
| 'ReadPixelType': {
|
| @@ -1278,6 +1297,16 @@ _NAMED_TYPE_INFO = {
|
| 'GL_RGB',
|
| 'GL_RGBA',
|
| ],
|
| + 'valid_es3': [
|
| + 'GL_RED',
|
| + 'GL_RED_INTEGER',
|
| + 'GL_RG',
|
| + 'GL_RG_INTEGER',
|
| + 'GL_RGB_INTEGER',
|
| + 'GL_RGBA_INTEGER',
|
| + 'GL_DEPTH_COMPONENT',
|
| + 'GL_DEPTH_STENCIL',
|
| + ],
|
| 'invalid': [
|
| 'GL_BGRA',
|
| 'GL_BGR',
|
| @@ -1292,6 +1321,64 @@ _NAMED_TYPE_INFO = {
|
| 'GL_RGB',
|
| 'GL_RGBA',
|
| ],
|
| + 'valid_es3': [
|
| + 'GL_R8',
|
| + 'GL_R8_SNORM',
|
| + 'GL_R16F',
|
| + 'GL_R32F',
|
| + 'GL_R8UI',
|
| + 'GL_R8I',
|
| + 'GL_R16UI',
|
| + 'GL_R16I',
|
| + 'GL_R32UI',
|
| + 'GL_R32I',
|
| + 'GL_RG8',
|
| + 'GL_RG8_SNORM',
|
| + 'GL_RG16F',
|
| + 'GL_RG32F',
|
| + 'GL_RG8UI',
|
| + 'GL_RG8I',
|
| + 'GL_RG16UI',
|
| + 'GL_RG16I',
|
| + 'GL_RG32UI',
|
| + 'GL_RG32I',
|
| + 'GL_RGB8',
|
| + 'GL_SRGB8',
|
| + 'GL_RGB565',
|
| + 'GL_RGB8_SNORM',
|
| + 'GL_R11F_G11F_B10F',
|
| + 'GL_RGB9_E5',
|
| + 'GL_RGB16F',
|
| + 'GL_RGB32F',
|
| + 'GL_RGB8UI',
|
| + 'GL_RGB8I',
|
| + 'GL_RGB16UI',
|
| + 'GL_RGB16I',
|
| + 'GL_RGB32UI',
|
| + 'GL_RGB32I',
|
| + 'GL_RGBA8',
|
| + 'GL_SRGB8_ALPHA8',
|
| + 'GL_RGBA8_SNORM',
|
| + 'GL_RGB5_A1',
|
| + 'GL_RGBA4',
|
| + 'GL_RGB10_A2',
|
| + 'GL_RGBA16F',
|
| + 'GL_RGBA32F',
|
| + 'GL_RGBA8UI',
|
| + 'GL_RGBA8I',
|
| + 'GL_RGB10_A2UI',
|
| + 'GL_RGBA16UI',
|
| + 'GL_RGBA16I',
|
| + 'GL_RGBA32UI',
|
| + 'GL_RGBA32I',
|
| + # The DEPTH/STENCIL formats are not supported in CopyTexImage2D.
|
| + # We will reject them dynamically in GPU command buffer.
|
| + 'GL_DEPTH_COMPONENT16',
|
| + 'GL_DEPTH_COMPONENT24',
|
| + 'GL_DEPTH_COMPONENT32F',
|
| + 'GL_DEPTH24_STENCIL8',
|
| + 'GL_DEPTH32F_STENCIL8',
|
| + ],
|
| 'invalid': [
|
| 'GL_BGRA',
|
| 'GL_BGR',
|
| @@ -1309,6 +1396,78 @@ _NAMED_TYPE_INFO = {
|
| 'GL_RGB8_OES',
|
| 'GL_RGBA8_OES',
|
| ],
|
| + 'valid_es3': [
|
| + 'GL_R8',
|
| + 'GL_R8_SNORM',
|
| + 'GL_R16F',
|
| + 'GL_R32F',
|
| + 'GL_R8UI',
|
| + 'GL_R8I',
|
| + 'GL_R16UI',
|
| + 'GL_R16I',
|
| + 'GL_R32UI',
|
| + 'GL_R32I',
|
| + 'GL_RG8',
|
| + 'GL_RG8_SNORM',
|
| + 'GL_RG16F',
|
| + 'GL_RG32F',
|
| + 'GL_RG8UI',
|
| + 'GL_RG8I',
|
| + 'GL_RG16UI',
|
| + 'GL_RG16I',
|
| + 'GL_RG32UI',
|
| + 'GL_RG32I',
|
| + 'GL_SRGB8',
|
| + 'GL_RGB8_SNORM',
|
| + 'GL_R11F_G11F_B10F',
|
| + 'GL_RGB9_E5',
|
| + 'GL_RGB16F',
|
| + 'GL_RGB32F',
|
| + 'GL_RGB8UI',
|
| + 'GL_RGB8I',
|
| + 'GL_RGB16UI',
|
| + 'GL_RGB16I',
|
| + 'GL_RGB32UI',
|
| + 'GL_RGB32I',
|
| + 'GL_SRGB8_ALPHA8',
|
| + 'GL_RGBA8_SNORM',
|
| + 'GL_RGB10_A2',
|
| + 'GL_RGBA16F',
|
| + 'GL_RGBA32F',
|
| + 'GL_RGBA8UI',
|
| + 'GL_RGBA8I',
|
| + 'GL_RGB10_A2UI',
|
| + 'GL_RGBA16UI',
|
| + 'GL_RGBA16I',
|
| + 'GL_RGBA32UI',
|
| + 'GL_RGBA32I',
|
| + 'GL_DEPTH_COMPONENT16',
|
| + 'GL_DEPTH_COMPONENT24',
|
| + 'GL_DEPTH_COMPONENT32F',
|
| + 'GL_DEPTH24_STENCIL8',
|
| + 'GL_DEPTH32F_STENCIL8',
|
| + 'GL_COMPRESSED_R11_EAC',
|
| + 'GL_COMPRESSED_SIGNED_R11_EAC',
|
| + 'GL_COMPRESSED_RG11_EAC',
|
| + 'GL_COMPRESSED_SIGNED_RG11_EAC',
|
| + 'GL_COMPRESSED_RGB8_ETC2',
|
| + 'GL_COMPRESSED_SRGB8_ETC2',
|
| + 'GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2',
|
| + 'GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2',
|
| + 'GL_COMPRESSED_RGBA8_ETC2_EAC',
|
| + 'GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC',
|
| + ],
|
| + 'deprecated_es3': [
|
| + 'GL_ALPHA8_EXT',
|
| + 'GL_LUMINANCE8_EXT',
|
| + 'GL_LUMINANCE8_ALPHA8_EXT',
|
| + 'GL_ALPHA16F_EXT',
|
| + 'GL_LUMINANCE16F_EXT',
|
| + 'GL_LUMINANCE_ALPHA16F_EXT',
|
| + 'GL_ALPHA32F_EXT',
|
| + 'GL_LUMINANCE32F_EXT',
|
| + 'GL_LUMINANCE_ALPHA32F_EXT',
|
| + ],
|
| },
|
| 'ImageInternalFormat': {
|
| 'type': 'GLenum',
|
| @@ -7553,6 +7712,10 @@ class NamedType(object):
|
| self.valid_es3 = info['valid_es3']
|
| else:
|
| self.valid_es3 = []
|
| + if 'deprecated_es3' in info:
|
| + self.deprecated_es3 = info['deprecated_es3']
|
| + else:
|
| + self.deprecated_es3 = []
|
|
|
| def GetType(self):
|
| return self.info['type']
|
| @@ -7566,6 +7729,9 @@ class NamedType(object):
|
| def GetValidValuesES3(self):
|
| return self.valid_es3
|
|
|
| + def GetDeprecatedValuesES3(self):
|
| + return self.deprecated_es3
|
| +
|
| def IsConstant(self):
|
| if not 'is_complete' in self.info:
|
| return False
|
| @@ -9872,6 +10038,13 @@ extern const NameToFunc g_gles2_function_table[] = {
|
| file.Write(" %s,\n" % value)
|
| file.Write("};\n")
|
| file.Write("\n")
|
| + if named_type.GetDeprecatedValuesES3():
|
| + file.Write("static const %s deprecated_%s_table_es3[] = {\n" %
|
| + (named_type.GetType(), ToUnderscore(name)))
|
| + for value in named_type.GetDeprecatedValuesES3():
|
| + file.Write(" %s,\n" % value)
|
| + file.Write("};\n")
|
| + file.Write("\n")
|
| file.Write("Validators::Validators()")
|
| pre = ' : '
|
| for count, name in enumerate(names):
|
| @@ -9891,9 +10064,16 @@ extern const NameToFunc g_gles2_function_table[] = {
|
| file.Write(" {\n");
|
| file.Write("}\n\n");
|
|
|
| - file.Write("void Validators::AddES3Values() {\n")
|
| + file.Write("void Validators::UpdateValuesES3() {\n")
|
| for name in names:
|
| named_type = NamedType(_NAMED_TYPE_INFO[name])
|
| + if named_type.GetDeprecatedValuesES3():
|
| + code = """ %(name)s.RemoveValues(
|
| + deprecated_%(name)s_table_es3, arraysize(deprecated_%(name)s_table_es3));
|
| +"""
|
| + file.Write(code % {
|
| + 'name': ToUnderscore(name),
|
| + })
|
| if named_type.GetValidValuesES3():
|
| code = """ %(name)s.AddValues(
|
| valid_%(name)s_table_es3, arraysize(valid_%(name)s_table_es3));
|
|
|