OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_memory.h" | 5 #include "ui/gl/gl_image_memory.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/trace_event/trace_event.h" | 8 #include "base/trace_event/trace_event.h" |
9 #include "ui/gl/gl_bindings.h" | 9 #include "ui/gl/gl_bindings.h" |
10 #include "ui/gl/scoped_binders.h" | 10 #include "ui/gl/scoped_binders.h" |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 return true; | 176 return true; |
177 case gfx::GpuMemoryBuffer::RGBX_8888: | 177 case gfx::GpuMemoryBuffer::RGBX_8888: |
178 NOTREACHED(); | 178 NOTREACHED(); |
179 return false; | 179 return false; |
180 } | 180 } |
181 | 181 |
182 NOTREACHED(); | 182 NOTREACHED(); |
183 return false; | 183 return false; |
184 } | 184 } |
185 | 185 |
186 // static | |
187 bool GLImageMemory::ValidSize(const gfx::Size& size, | |
188 gfx::GpuMemoryBuffer::Format format) { | |
189 switch (format) { | |
190 case gfx::GpuMemoryBuffer::ATC: | |
191 case gfx::GpuMemoryBuffer::ATCIA: | |
192 case gfx::GpuMemoryBuffer::DXT1: | |
193 case gfx::GpuMemoryBuffer::DXT5: | |
194 case gfx::GpuMemoryBuffer::ETC1: | |
195 // Compressed images must have a width and height that's evenly divisible | |
196 // by the block size. | |
197 return size.width() % 4 == 0 && size.height() % 4 == 0; | |
198 case gfx::GpuMemoryBuffer::RGBA_8888: | |
199 case gfx::GpuMemoryBuffer::BGRA_8888: | |
200 return true; | |
201 case gfx::GpuMemoryBuffer::RGBX_8888: | |
202 NOTREACHED(); | |
203 return false; | |
204 } | |
205 | |
206 NOTREACHED(); | |
207 return false; | |
208 } | |
209 | |
210 bool GLImageMemory::Initialize(const unsigned char* memory, | 186 bool GLImageMemory::Initialize(const unsigned char* memory, |
211 gfx::GpuMemoryBuffer::Format format) { | 187 gfx::GpuMemoryBuffer::Format format) { |
212 if (!ValidInternalFormat(internalformat_)) { | 188 if (!ValidInternalFormat(internalformat_)) { |
213 LOG(ERROR) << "Invalid internalformat: " << internalformat_; | 189 LOG(ERROR) << "Invalid internalformat: " << internalformat_; |
214 return false; | 190 return false; |
215 } | 191 } |
216 | 192 |
217 if (!ValidFormat(format)) { | 193 if (!ValidFormat(format)) { |
218 LOG(ERROR) << "Invalid format: " << format; | 194 LOG(ERROR) << "Invalid format: " << format; |
219 return false; | 195 return false; |
220 } | 196 } |
221 | 197 |
222 DCHECK(memory); | 198 DCHECK(memory); |
223 DCHECK(!memory_); | 199 DCHECK(!memory_); |
| 200 DCHECK_IMPLIES(IsCompressedFormat(format), size_.width() % 4 == 0); |
| 201 DCHECK_IMPLIES(IsCompressedFormat(format), size_.height() % 4 == 0); |
224 memory_ = memory; | 202 memory_ = memory; |
225 format_ = format; | 203 format_ = format; |
226 return true; | 204 return true; |
227 } | 205 } |
228 | 206 |
229 void GLImageMemory::Destroy(bool have_context) { | 207 void GLImageMemory::Destroy(bool have_context) { |
230 #if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \ | 208 #if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \ |
231 defined(USE_OZONE) | 209 defined(USE_OZONE) |
232 if (egl_image_ != EGL_NO_IMAGE_KHR) { | 210 if (egl_image_ != EGL_NO_IMAGE_KHR) { |
233 eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_); | 211 eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 size_.width(), | 390 size_.width(), |
413 size_.height(), | 391 size_.height(), |
414 0, // border | 392 0, // border |
415 DataFormat(format_), | 393 DataFormat(format_), |
416 DataType(format_), | 394 DataType(format_), |
417 memory_); | 395 memory_); |
418 } | 396 } |
419 } | 397 } |
420 | 398 |
421 } // namespace gfx | 399 } // namespace gfx |
OLD | NEW |