Index: cc/output/shader.h |
diff --git a/cc/output/shader.h b/cc/output/shader.h |
index 6550f90118c28e4ca8c40458eb7cb6b924971ddc..e69d4f4d16e7d635431134e3445a6975d6cf8644 100644 |
--- a/cc/output/shader.h |
+++ b/cc/output/shader.h |
@@ -114,6 +114,29 @@ enum InputColorSource { |
INPUT_COLOR_SOURCE_UNIFORM, |
}; |
+enum UVTextureMode { |
+ // Shader does not use YUV textures. |
+ UV_TEXTURE_MODE_NA, |
+ // UV plane is a single texture. |
+ UV_TEXTURE_MODE_UV, |
+ // U and V planes have separate textures. |
+ UV_TEXTURE_MODE_U_V, |
+}; |
+ |
+enum YUVAlphaTextureMode { |
+ YUV_ALPHA_TEXTURE_MODE_NA, |
+ YUV_NO_ALPHA_TEXTURE, |
+ YUV_HAS_ALPHA_TEXTURE, |
+}; |
+ |
+enum ColorConversionMode { |
+ // No color conversion is performed. |
+ COLOR_CONVERSION_MODE_NONE, |
+ // Conversion is done directly from YUV to output RGB space, via a 3D texture |
+ // represented as a 2D texture. |
+ COLOR_CONVERSION_MODE_2D_LUT_AS_3D_FROM_YUV, |
+}; |
+ |
// TODO(ccameron): Merge this with BlendMode. |
enum FragColorMode { |
FRAG_COLOR_MODE_DEFAULT, |
@@ -256,9 +279,10 @@ class FragmentShader { |
bool mask_for_background_ = false; |
// YUV-only parameters. |
- bool use_alpha_texture_ = false; |
- bool use_nv12_ = false; |
- bool use_color_lut_ = false; |
+ YUVAlphaTextureMode yuv_alpha_texture_mode_ = YUV_ALPHA_TEXTURE_MODE_NA; |
+ UVTextureMode uv_texture_mode_ = UV_TEXTURE_MODE_UV; |
+ |
+ ColorConversionMode color_conversion_mode_ = COLOR_CONVERSION_MODE_NONE; |
// YUV uniform locations. |
int y_texture_location_ = -1; |