| 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 |