Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2317)

Unified Diff: cc/surfaces/surface_aggregator.h

Issue 2728173004: HDR: Do nonlinear blending in the compositor (Closed)
Patch Set: Roll in sRGB-extended Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/surfaces/surface_aggregator.h
diff --git a/cc/surfaces/surface_aggregator.h b/cc/surfaces/surface_aggregator.h
index 8e9c2906ae4b509cb884aeab003f0da0718d7e5b..3b5e80b581e731d4b5b3d05799b2d5c93b7ebe35 100644
--- a/cc/surfaces/surface_aggregator.h
+++ b/cc/surfaces/surface_aggregator.h
@@ -47,7 +47,8 @@ class CC_SURFACES_EXPORT SurfaceAggregator {
// Set the color spaces for the created RenderPasses, which is propagated
// to the output surface.
- void SetOutputColorSpace(const gfx::ColorSpace& output_color_space);
+ void SetOutputColorSpace(const gfx::ColorSpace& blending_color_space,
+ const gfx::ColorSpace& output_color_space);
private:
struct ClipData {
@@ -107,6 +108,7 @@ class CC_SURFACES_EXPORT SurfaceAggregator {
PrewalkResult* result);
void CopyUndrawnSurfaces(PrewalkResult* prewalk);
void CopyPasses(const CompositorFrame& frame, Surface* surface);
+ void AddColorConversionPass();
// Remove Surfaces that were referenced before but aren't currently
// referenced from the ResourceProvider.
@@ -134,7 +136,16 @@ class CC_SURFACES_EXPORT SurfaceAggregator {
int next_render_pass_id_;
const bool aggregate_only_damaged_;
bool output_is_secure_;
+
+ // The color space for the root render pass. If this is different from
+ // |blending_color_space_|, then a final render pass to convert between
+ // the two will be added.
gfx::ColorSpace output_color_space_;
+ // The color space in which blending is done, used for all non-root render
+ // passes.
+ gfx::ColorSpace blending_color_space_;
+ // The id for the final color conversion render pass.
+ int color_conversion_render_pass_id_ = 0;
using SurfaceToResourceChildIdMap =
std::unordered_map<SurfaceId, int, SurfaceIdHash>;

Powered by Google App Engine
This is Rietveld 408576698