Index: cc/resources/resource_format.cc |
diff --git a/cc/resources/resource_format.cc b/cc/resources/resource_format.cc |
index 2d139ab5c0465e910b289844893c6acb63a3653f..a7db8a780823461b560942dee98a6f581eda4041 100644 |
--- a/cc/resources/resource_format.cc |
+++ b/cc/resources/resource_format.cc |
@@ -12,6 +12,8 @@ namespace cc { |
int BitsPerPixel(ResourceFormat format) { |
switch (format) { |
+ case RGBA_F16: |
+ return 64; |
case BGRA_8888: |
case RGBA_8888: |
return 32; |
@@ -42,6 +44,7 @@ GLenum GLDataType(ResourceFormat format) { |
GL_UNSIGNED_BYTE, // ETC1 |
GL_UNSIGNED_BYTE, // RED_8 |
GL_HALF_FLOAT_OES, // LUMINANCE_F16 |
+ GL_HALF_FLOAT_OES, // RGBA_F16 |
}; |
static_assert(arraysize(format_gl_data_type) == (RESOURCE_FORMAT_MAX + 1), |
"format_gl_data_type does not handle all cases."); |
@@ -61,6 +64,7 @@ GLenum GLDataFormat(ResourceFormat format) { |
GL_ETC1_RGB8_OES, // ETC1 |
GL_RED_EXT, // RED_8 |
GL_LUMINANCE, // LUMINANCE_F16 |
+ GL_RGBA, // RGBA_F16 |
}; |
static_assert(arraysize(format_gl_data_format) == (RESOURCE_FORMAT_MAX + 1), |
"format_gl_data_format does not handle all cases."); |
@@ -91,6 +95,7 @@ GLenum GLCopyTextureInternalFormat(ResourceFormat format) { |
GL_RGB, // ETC1 |
GL_LUMINANCE, // RED_8 |
GL_LUMINANCE, // LUMINANCE_F16 |
+ GL_RGBA, // RGBA_F16 |
}; |
static_assert(arraysize(format_gl_data_format) == (RESOURCE_FORMAT_MAX + 1), |
"format_gl_data_format does not handle all cases."); |
@@ -113,6 +118,7 @@ gfx::BufferFormat BufferFormat(ResourceFormat format) { |
case LUMINANCE_8: |
case RGB_565: |
case LUMINANCE_F16: |
+ case RGBA_F16: |
break; |
} |
NOTREACHED(); |
@@ -129,6 +135,7 @@ bool DoesResourceFormatSupportAlpha(ResourceFormat format) { |
case RGBA_8888: |
case BGRA_8888: |
case ALPHA_8: |
+ case RGBA_F16: |
return true; |
case LUMINANCE_8: |
case RGB_565: |