Index: cc/output/program_binding.h |
diff --git a/cc/output/program_binding.h b/cc/output/program_binding.h |
index a95587f8554a0e49509b2356b01d9107f3a05208..e8cfe6815d8c2d6b23c62035235067985dd1fc0a 100644 |
--- a/cc/output/program_binding.h |
+++ b/cc/output/program_binding.h |
@@ -92,9 +92,9 @@ class CC_EXPORT ProgramKey { |
static ProgramKey VideoStream(TexCoordPrecision precision); |
static ProgramKey YUVVideo(TexCoordPrecision precision, |
SamplerType sampler, |
- bool use_alpha_texture, |
- bool use_nv12, |
- bool use_color_lut); |
+ YUVAlphaTextureMode yuv_alpha_texture_mode, |
+ UVTextureMode uv_texture_mode, |
+ ColorConversionMode color_conversion_mode); |
bool operator==(const ProgramKey& other) const; |
@@ -118,9 +118,10 @@ class CC_EXPORT ProgramKey { |
bool mask_for_background_ = false; |
bool has_color_matrix_ = false; |
- bool use_alpha_texture_ = false; |
- bool use_nv12_ = false; |
- bool use_color_lut_ = false; |
+ YUVAlphaTextureMode yuv_alpha_texture_mode_ = YUV_NO_ALPHA_TEXTURE; |
+ UVTextureMode uv_texture_mode_ = UV_TEXTURE_MODE_NA; |
+ |
+ ColorConversionMode color_conversion_mode_ = COLOR_CONVERSION_MODE_NONE; |
}; |
struct ProgramKeyHash { |
@@ -137,9 +138,9 @@ struct ProgramKeyHash { |
(static_cast<size_t>(key.mask_mode_) << 21) ^ |
(static_cast<size_t>(key.mask_for_background_) << 22) ^ |
(static_cast<size_t>(key.has_color_matrix_) << 23) ^ |
- (static_cast<size_t>(key.use_alpha_texture_) << 24) ^ |
- (static_cast<size_t>(key.use_nv12_) << 25) ^ |
- (static_cast<size_t>(key.use_color_lut_) << 26); |
+ (static_cast<size_t>(key.yuv_alpha_texture_mode_) << 24) ^ |
+ (static_cast<size_t>(key.uv_texture_mode_) << 25) ^ |
+ (static_cast<size_t>(key.color_conversion_mode_) << 26); |
} |
}; |
@@ -384,9 +385,10 @@ class Program : public ProgramBindingBase { |
vertex_shader_.is_ya_uv_ = true; |
fragment_shader_.input_color_type_ = INPUT_COLOR_SOURCE_YUV_TEXTURES; |
- fragment_shader_.use_alpha_texture_ = key.use_alpha_texture_; |
- fragment_shader_.use_nv12_ = key.use_nv12_; |
- fragment_shader_.use_color_lut_ = key.use_color_lut_; |
+ fragment_shader_.has_uniform_alpha_ = true; |
+ fragment_shader_.yuv_alpha_texture_mode_ = key.yuv_alpha_texture_mode_; |
+ fragment_shader_.uv_texture_mode_ = key.uv_texture_mode_; |
+ fragment_shader_.color_conversion_mode_ = key.color_conversion_mode_; |
} |
void InitializeInternal(ContextProvider* context_provider) { |