Index: gpu/ipc/client/gpu_memory_buffer_impl_io_surface.cc |
diff --git a/gpu/ipc/client/gpu_memory_buffer_impl_io_surface.cc b/gpu/ipc/client/gpu_memory_buffer_impl_io_surface.cc |
index 438cc04a16adefe3ab9b827fe7a78f8ca2480d7d..f77895c0e03308fc245c4c814db6c891d743e9eb 100644 |
--- a/gpu/ipc/client/gpu_memory_buffer_impl_io_surface.cc |
+++ b/gpu/ipc/client/gpu_memory_buffer_impl_io_surface.cc |
@@ -8,6 +8,7 @@ |
#include "base/memory/ptr_util.h" |
#include "gpu/ipc/common/gpu_memory_buffer_support.h" |
#include "ui/gfx/buffer_format_util.h" |
+#include "ui/gfx/color_space.h" |
#include "ui/gfx/mac/io_surface.h" |
namespace gpu { |
@@ -109,6 +110,18 @@ int GpuMemoryBufferImplIOSurface::stride(size_t plane) const { |
return IOSurfaceGetBytesPerRowOfPlane(io_surface_, plane); |
} |
+void GpuMemoryBufferImplIOSurface::SetColorSpaceForScanout( |
+ const gfx::ColorSpace& color_space) { |
+ const std::vector<char>& icc_profile = color_space.GetICCProfile(); |
+ if (icc_profile.size()) { |
+ base::ScopedCFTypeRef<CFDataRef> cf_data_icc_profile(CFDataCreate( |
+ nullptr, reinterpret_cast<const UInt8*>(icc_profile.data()), |
+ icc_profile.size())); |
+ IOSurfaceSetValue(io_surface_, CFSTR("IOSurfaceColorSpace"), |
+ cf_data_icc_profile); |
+ } |
+} |
+ |
gfx::GpuMemoryBufferHandle GpuMemoryBufferImplIOSurface::GetHandle() const { |
gfx::GpuMemoryBufferHandle handle; |
handle.type = gfx::IO_SURFACE_BUFFER; |