Chromium Code Reviews| Index: gpu/command_buffer/common/gles2_cmd_utils.cc |
| diff --git a/gpu/command_buffer/common/gles2_cmd_utils.cc b/gpu/command_buffer/common/gles2_cmd_utils.cc |
| index 3a43215e3e5910d528dce4e27fcacfcc13a19f9c..08ce9c385d915bdb8622366b1c2e5dde7e0139ac 100644 |
| --- a/gpu/command_buffer/common/gles2_cmd_utils.cc |
| +++ b/gpu/command_buffer/common/gles2_cmd_utils.cc |
| @@ -1189,6 +1189,251 @@ uint32_t GLES2Util::GetChannelsForFormat(int format) { |
| } |
| } |
| +bool GLES2Util::IsSizedColorFormat(uint32_t internal_format) { |
| + switch (internal_format) { |
| + case GL_ALPHA16F_EXT: |
| + case GL_ALPHA32F_EXT: |
| + case GL_RGB8: |
| + case GL_RGB565: |
| + case GL_RGB16F: |
| + case GL_RGB32F: |
| + case GL_SRGB8: |
| + case GL_RGB8_SNORM: |
| + case GL_R11F_G11F_B10F: |
| + case GL_RGB9_E5: |
| + case GL_RGB8UI: |
| + case GL_RGB8I: |
| + case GL_RGB16UI: |
| + case GL_RGB16I: |
| + case GL_RGB32UI: |
| + case GL_RGB32I: |
| + case GL_BGRA8_EXT: |
| + case GL_RGBA16F: |
| + case GL_RGBA32F: |
| + case GL_RGBA8_OES: |
| + case GL_RGBA4: |
| + case GL_RGB5_A1: |
| + case GL_SRGB8_ALPHA8: |
| + case GL_RGBA8_SNORM: |
| + case GL_RGB10_A2: |
| + case GL_RGBA8UI: |
| + case GL_RGBA8I: |
| + case GL_RGB10_A2UI: |
| + case GL_RGBA16UI: |
| + case GL_RGBA16I: |
| + case GL_RGBA32UI: |
| + case GL_RGBA32I: |
| + case GL_R8: |
| + case GL_R8_SNORM: |
| + case GL_R16F: |
| + case GL_R32F: |
| + case GL_R8UI: |
| + case GL_R8I: |
| + case GL_R16UI: |
| + case GL_R16I: |
| + case GL_R32UI: |
| + case GL_R32I: |
| + case GL_RG8: |
| + case GL_RG8_SNORM: |
| + case GL_RG16F: |
| + case GL_RG32F: |
| + case GL_RG8UI: |
| + case GL_RG8I: |
| + case GL_RG16UI: |
| + case GL_RG16I: |
| + case GL_RG32UI: |
| + case GL_RG32I: |
| + return true; |
| + default: |
| + return false; |
| + } |
| +} |
| + |
| +void GLES2Util::GetColorFormatComponentSizes( |
| + uint32_t internal_format, uint32_t type, int* r, int* g, int* b, int* a) { |
| + DCHECK(r && g && b && a); |
| + switch (internal_format) { |
| + case GL_RGB: |
| + switch (type) { |
| + case GL_UNSIGNED_BYTE: |
| + internal_format = GL_RGB8; |
| + break; |
| + case GL_UNSIGNED_SHORT_5_6_5: |
| + internal_format = GL_RGB565; |
| + break; |
| + default: |
|
Corentin Wallez
2016/06/02 21:29:40
All the default cases could be UNREACHABLE()
Zhenyao Mo
2016/06/03 18:29:48
Good idea. Done.
|
| + break; |
| + } |
| + break; |
| + case GL_SRGB_EXT: |
| + switch (type) { |
| + case GL_UNSIGNED_BYTE: |
| + internal_format = GL_SRGB8; |
| + break; |
| + default: |
| + break; |
| + } |
| + break; |
| + case GL_BGRA_EXT: |
| + switch (type) { |
| + case GL_UNSIGNED_BYTE: |
| + internal_format = GL_BGRA8_EXT; |
| + break; |
| + default: |
| + break; |
| + } |
| + break; |
| + case GL_RGBA: |
| + switch (type) { |
| + case GL_UNSIGNED_BYTE: |
| + internal_format = GL_RGBA8; |
| + break; |
| + default: |
| + break; |
| + } |
| + break; |
| + case GL_SRGB_ALPHA_EXT: |
| + switch (type) { |
| + case GL_UNSIGNED_BYTE: |
| + internal_format = GL_SRGB8_ALPHA8; |
| + break; |
| + default: |
| + break; |
| + } |
| + break; |
| + default: |
| + break; |
| + } |
| + |
| + *r = 0; |
| + *g = 0; |
| + *b = 0; |
| + *a = 0; |
| + switch (internal_format) { |
| + case GL_RGB8_OES: |
| + case GL_SRGB8: |
| + case GL_RGB8_SNORM: |
| + case GL_RGB8UI: |
| + case GL_RGB8I: |
| + *r = 8; |
| + *g = 8; |
| + *b = 8; |
| + break; |
| + case GL_RGB565: |
| + *r = 5; |
| + *g = 6; |
| + *b = 5; |
| + break; |
| + case GL_RGB16F: |
| + case GL_RGB16UI: |
| + case GL_RGB16I: |
| + *r = 16; |
| + *g = 16; |
| + *b = 16; |
| + break; |
| + case GL_RGB32F: |
| + case GL_RGB32UI: |
| + case GL_RGB32I: |
| + *r = 32; |
| + *g = 32; |
| + *b = 32; |
| + break; |
| + case GL_R11F_G11F_B10F: |
| + *r = 11; |
| + *g = 11; |
| + *b = 10; |
| + break; |
| + case GL_RGB9_E5: |
| + *r = 9; |
| + *g = 9; |
| + *b = 9; |
| + break; |
| + case GL_BGRA8_EXT: |
| + case GL_RGBA8: |
| + case GL_SRGB8_ALPHA8: |
| + case GL_RGBA8_SNORM: |
| + case GL_RGBA8UI: |
| + case GL_RGBA8I: |
| + *r = 8; |
| + *g = 8; |
| + *b = 8; |
| + *a = 8; |
| + break; |
| + case GL_RGBA16F_EXT: |
| + case GL_RGBA16UI: |
| + case GL_RGBA16I: |
| + *r = 16; |
| + *g = 16; |
| + *b = 16; |
| + *a = 16; |
| + break; |
| + case GL_RGBA32F_EXT: |
| + case GL_RGBA32UI: |
| + case GL_RGBA32I: |
| + *r = 32; |
| + *g = 32; |
| + *b = 32; |
| + *a = 32; |
| + break; |
| + case GL_RGBA4: |
| + *r = 4; |
| + *g = 4; |
| + *b = 4; |
| + *a = 4; |
| + break; |
| + case GL_RGB5_A1: |
| + *r = 5; |
| + *g = 5; |
| + *b = 5; |
| + *a = 1; |
| + break; |
| + case GL_RGB10_A2: |
| + case GL_RGB10_A2UI: |
| + *r = 10; |
| + *g = 10; |
| + *b = 10; |
| + *a = 2; |
| + break; |
| + case GL_R8: |
| + case GL_R8_SNORM: |
| + case GL_R8UI: |
| + case GL_R8I: |
| + *r = 8; |
| + break; |
| + case GL_R16F: |
| + case GL_R16UI: |
| + case GL_R16I: |
| + *r = 16; |
| + break; |
| + case GL_R32F: |
| + case GL_R32UI: |
| + case GL_R32I: |
| + *r = 32; |
| + break; |
| + case GL_RG8: |
| + case GL_RG8_SNORM: |
| + case GL_RG8UI: |
| + case GL_RG8I: |
| + *r = 8; |
| + *g = 8; |
| + break; |
| + case GL_RG16F: |
| + case GL_RG16UI: |
| + case GL_RG16I: |
| + *r = 16; |
| + *g = 16; |
| + break; |
| + case GL_RG32F: |
| + case GL_RG32UI: |
| + case GL_RG32I: |
| + *r = 32; |
| + *g = 32; |
| + break; |
| + default: |
| + break; |
| + } |
| +} |
| + |
| uint32_t GLES2Util::GetChannelsNeededForAttachmentType( |
| int type, |
| uint32_t max_color_attachments) { |