OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/gl/gl_image_io_surface.h" | 5 #include "ui/gl/gl_image_io_surface.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/mac/foundation_util.h" | 10 #include "base/mac/foundation_util.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 bool ValidInternalFormat(unsigned internalformat) { | 24 bool ValidInternalFormat(unsigned internalformat) { |
25 switch (internalformat) { | 25 switch (internalformat) { |
26 case GL_R8: | 26 case GL_R8: |
27 case GL_BGRA_EXT: | 27 case GL_BGRA_EXT: |
28 return true; | 28 return true; |
29 default: | 29 default: |
30 return false; | 30 return false; |
31 } | 31 } |
32 } | 32 } |
33 | 33 |
34 bool ValidFormat(GpuMemoryBuffer::Format format) { | 34 bool ValidFormat(BufferFormat format) { |
35 switch (format) { | 35 switch (format) { |
36 case GpuMemoryBuffer::R_8: | 36 case BufferFormat::R_8: |
37 case GpuMemoryBuffer::BGRA_8888: | 37 case BufferFormat::BGRA_8888: |
38 return true; | 38 return true; |
39 case GpuMemoryBuffer::ATC: | 39 case BufferFormat::ATC: |
40 case GpuMemoryBuffer::ATCIA: | 40 case BufferFormat::ATCIA: |
41 case GpuMemoryBuffer::DXT1: | 41 case BufferFormat::DXT1: |
42 case GpuMemoryBuffer::DXT5: | 42 case BufferFormat::DXT5: |
43 case GpuMemoryBuffer::ETC1: | 43 case BufferFormat::ETC1: |
44 case GpuMemoryBuffer::RGBA_4444: | 44 case BufferFormat::RGBA_4444: |
45 case GpuMemoryBuffer::RGBA_8888: | 45 case BufferFormat::RGBA_8888: |
46 case GpuMemoryBuffer::RGBX_8888: | 46 case BufferFormat::RGBX_8888: |
47 case GpuMemoryBuffer::YUV_420: | 47 case BufferFormat::YUV_420: |
48 return false; | 48 return false; |
49 } | 49 } |
50 | 50 |
51 NOTREACHED(); | 51 NOTREACHED(); |
52 return false; | 52 return false; |
53 } | 53 } |
54 | 54 |
55 GLenum TextureFormat(GpuMemoryBuffer::Format format) { | 55 GLenum TextureFormat(BufferFormat format) { |
56 switch (format) { | 56 switch (format) { |
57 case GpuMemoryBuffer::R_8: | 57 case BufferFormat::R_8: |
58 return GL_RED; | 58 return GL_RED; |
59 case GpuMemoryBuffer::BGRA_8888: | 59 case BufferFormat::BGRA_8888: |
60 return GL_RGBA; | 60 return GL_RGBA; |
61 case GpuMemoryBuffer::ATC: | 61 case BufferFormat::ATC: |
62 case GpuMemoryBuffer::ATCIA: | 62 case BufferFormat::ATCIA: |
63 case GpuMemoryBuffer::DXT1: | 63 case BufferFormat::DXT1: |
64 case GpuMemoryBuffer::DXT5: | 64 case BufferFormat::DXT5: |
65 case GpuMemoryBuffer::ETC1: | 65 case BufferFormat::ETC1: |
66 case GpuMemoryBuffer::RGBA_4444: | 66 case BufferFormat::RGBA_4444: |
67 case GpuMemoryBuffer::RGBA_8888: | 67 case BufferFormat::RGBA_8888: |
68 case GpuMemoryBuffer::RGBX_8888: | 68 case BufferFormat::RGBX_8888: |
69 case GpuMemoryBuffer::YUV_420: | 69 case BufferFormat::YUV_420: |
70 NOTREACHED(); | 70 NOTREACHED(); |
71 return 0; | 71 return 0; |
72 } | 72 } |
73 | 73 |
74 NOTREACHED(); | 74 NOTREACHED(); |
75 return 0; | 75 return 0; |
76 } | 76 } |
77 | 77 |
78 GLenum DataFormat(GpuMemoryBuffer::Format format) { | 78 GLenum DataFormat(BufferFormat format) { |
79 switch (format) { | 79 switch (format) { |
80 case GpuMemoryBuffer::R_8: | 80 case BufferFormat::R_8: |
81 return GL_RED; | 81 return GL_RED; |
82 case GpuMemoryBuffer::BGRA_8888: | 82 case BufferFormat::BGRA_8888: |
83 return GL_BGRA; | 83 return GL_BGRA; |
84 case GpuMemoryBuffer::ATC: | 84 case BufferFormat::ATC: |
85 case GpuMemoryBuffer::ATCIA: | 85 case BufferFormat::ATCIA: |
86 case GpuMemoryBuffer::DXT1: | 86 case BufferFormat::DXT1: |
87 case GpuMemoryBuffer::DXT5: | 87 case BufferFormat::DXT5: |
88 case GpuMemoryBuffer::ETC1: | 88 case BufferFormat::ETC1: |
89 case GpuMemoryBuffer::RGBA_4444: | 89 case BufferFormat::RGBA_4444: |
90 case GpuMemoryBuffer::RGBA_8888: | 90 case BufferFormat::RGBA_8888: |
91 case GpuMemoryBuffer::RGBX_8888: | 91 case BufferFormat::RGBX_8888: |
92 case GpuMemoryBuffer::YUV_420: | 92 case BufferFormat::YUV_420: |
93 NOTREACHED(); | 93 NOTREACHED(); |
94 return 0; | 94 return 0; |
95 } | 95 } |
96 | 96 |
97 NOTREACHED(); | 97 NOTREACHED(); |
98 return 0; | 98 return 0; |
99 } | 99 } |
100 | 100 |
101 GLenum DataType(GpuMemoryBuffer::Format format) { | 101 GLenum DataType(BufferFormat format) { |
102 switch (format) { | 102 switch (format) { |
103 case GpuMemoryBuffer::R_8: | 103 case BufferFormat::R_8: |
104 return GL_UNSIGNED_BYTE; | 104 return GL_UNSIGNED_BYTE; |
105 case GpuMemoryBuffer::BGRA_8888: | 105 case BufferFormat::BGRA_8888: |
106 return GL_UNSIGNED_INT_8_8_8_8_REV; | 106 return GL_UNSIGNED_INT_8_8_8_8_REV; |
107 case GpuMemoryBuffer::ATC: | 107 case BufferFormat::ATC: |
108 case GpuMemoryBuffer::ATCIA: | 108 case BufferFormat::ATCIA: |
109 case GpuMemoryBuffer::DXT1: | 109 case BufferFormat::DXT1: |
110 case GpuMemoryBuffer::DXT5: | 110 case BufferFormat::DXT5: |
111 case GpuMemoryBuffer::ETC1: | 111 case BufferFormat::ETC1: |
112 case GpuMemoryBuffer::RGBA_4444: | 112 case BufferFormat::RGBA_4444: |
113 case GpuMemoryBuffer::RGBA_8888: | 113 case BufferFormat::RGBA_8888: |
114 case GpuMemoryBuffer::RGBX_8888: | 114 case BufferFormat::RGBX_8888: |
115 case GpuMemoryBuffer::YUV_420: | 115 case BufferFormat::YUV_420: |
116 NOTREACHED(); | 116 NOTREACHED(); |
117 return 0; | 117 return 0; |
118 } | 118 } |
119 | 119 |
120 NOTREACHED(); | 120 NOTREACHED(); |
121 return 0; | 121 return 0; |
122 } | 122 } |
123 | 123 |
124 } // namespace | 124 } // namespace |
125 | 125 |
126 GLImageIOSurface::GLImageIOSurface(const gfx::Size& size, | 126 GLImageIOSurface::GLImageIOSurface(const gfx::Size& size, |
127 unsigned internalformat) | 127 unsigned internalformat) |
128 : size_(size), | 128 : size_(size), |
129 internalformat_(internalformat), | 129 internalformat_(internalformat), |
130 format_(GpuMemoryBuffer::RGBA_8888) { | 130 format_(BufferFormat::RGBA_8888) {} |
131 } | |
132 | 131 |
133 GLImageIOSurface::~GLImageIOSurface() { | 132 GLImageIOSurface::~GLImageIOSurface() { |
134 DCHECK(thread_checker_.CalledOnValidThread()); | 133 DCHECK(thread_checker_.CalledOnValidThread()); |
135 DCHECK(!io_surface_); | 134 DCHECK(!io_surface_); |
136 } | 135 } |
137 | 136 |
138 bool GLImageIOSurface::Initialize(IOSurfaceRef io_surface, | 137 bool GLImageIOSurface::Initialize(IOSurfaceRef io_surface, |
139 GpuMemoryBuffer::Format format) { | 138 BufferFormat format) { |
140 DCHECK(thread_checker_.CalledOnValidThread()); | 139 DCHECK(thread_checker_.CalledOnValidThread()); |
141 DCHECK(!io_surface_); | 140 DCHECK(!io_surface_); |
142 | 141 |
143 if (!ValidInternalFormat(internalformat_)) { | 142 if (!ValidInternalFormat(internalformat_)) { |
144 LOG(ERROR) << "Invalid internalformat: " << internalformat_; | 143 LOG(ERROR) << "Invalid internalformat: " << internalformat_; |
145 return false; | 144 return false; |
146 } | 145 } |
147 | 146 |
148 if (!ValidFormat(format)) { | 147 if (!ValidFormat(format)) { |
149 LOG(ERROR) << "Invalid format: " << format; | 148 LOG(ERROR) << "Invalid format: " << static_cast<int>(format); |
150 return false; | 149 return false; |
151 } | 150 } |
152 | 151 |
153 format_ = format; | 152 format_ = format; |
154 io_surface_.reset(io_surface, base::scoped_policy::RETAIN); | 153 io_surface_.reset(io_surface, base::scoped_policy::RETAIN); |
155 return true; | 154 return true; |
156 } | 155 } |
157 | 156 |
158 void GLImageIOSurface::Destroy(bool have_context) { | 157 void GLImageIOSurface::Destroy(bool have_context) { |
159 DCHECK(thread_checker_.CalledOnValidThread()); | 158 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 // static | 220 // static |
222 void GLImageIOSurface::SetLayerForWidget( | 221 void GLImageIOSurface::SetLayerForWidget( |
223 gfx::AcceleratedWidget widget, CALayer* layer) { | 222 gfx::AcceleratedWidget widget, CALayer* layer) { |
224 if (layer) | 223 if (layer) |
225 g_widget_to_layer_map.Pointer()->insert(std::make_pair(widget, layer)); | 224 g_widget_to_layer_map.Pointer()->insert(std::make_pair(widget, layer)); |
226 else | 225 else |
227 g_widget_to_layer_map.Pointer()->erase(widget); | 226 g_widget_to_layer_map.Pointer()->erase(widget); |
228 } | 227 } |
229 | 228 |
230 } // namespace gfx | 229 } // namespace gfx |
OLD | NEW |