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

Side by Side Diff: ui/gl/gl_image_memory.cc

Issue 1484473003: gl, ozone: enable GLImageBindTest unittests Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
OLDNEW
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/numerics/safe_conversions.h" 8 #include "base/numerics/safe_conversions.h"
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "ui/gfx/buffer_format_util.h" 10 #include "ui/gfx/buffer_format_util.h"
11 #include "ui/gl/gl_bindings.h" 11 #include "ui/gl/gl_bindings.h"
12 #include "ui/gl/gl_context.h" 12 #include "ui/gl/gl_context.h"
13 #include "ui/gl/gl_utils.h"
13 #include "ui/gl/gl_version_info.h" 14 #include "ui/gl/gl_version_info.h"
14 15
15 using gfx::BufferFormat; 16 using gfx::BufferFormat;
16 17
17 namespace gl { 18 namespace gl {
18 namespace { 19 namespace {
19 20
20 bool ValidInternalFormat(unsigned internalformat) { 21 bool ValidInternalFormat(unsigned internalformat) {
21 switch (internalformat) { 22 switch (internalformat) {
22 case GL_ATC_RGB_AMD: 23 case GL_ATC_RGB_AMD:
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 case BufferFormat::YUV_420_BIPLANAR: 78 case BufferFormat::YUV_420_BIPLANAR:
78 case BufferFormat::UYVY_422: 79 case BufferFormat::UYVY_422:
79 NOTREACHED(); 80 NOTREACHED();
80 return false; 81 return false;
81 } 82 }
82 83
83 NOTREACHED(); 84 NOTREACHED();
84 return false; 85 return false;
85 } 86 }
86 87
87 GLenum TextureFormat(BufferFormat format) {
88 switch (format) {
89 case BufferFormat::ATC:
90 return GL_ATC_RGB_AMD;
91 case BufferFormat::ATCIA:
92 return GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD;
93 case BufferFormat::DXT1:
94 return GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
95 case BufferFormat::DXT5:
96 return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
97 case BufferFormat::ETC1:
98 return GL_ETC1_RGB8_OES;
99 case BufferFormat::R_8:
100 return GL_RED;
101 case BufferFormat::RGBA_4444:
102 case BufferFormat::RGBA_8888:
103 return GL_RGBA;
104 case BufferFormat::BGRA_8888:
105 return GL_BGRA_EXT;
106 case BufferFormat::RGBX_8888:
107 case BufferFormat::BGRX_8888:
108 return GL_RGB;
109 case BufferFormat::YUV_420:
110 case BufferFormat::YUV_420_BIPLANAR:
111 case BufferFormat::UYVY_422:
112 NOTREACHED();
113 return 0;
114 }
115
116 NOTREACHED();
117 return 0;
118 }
119
120 GLenum DataFormat(BufferFormat format) { 88 GLenum DataFormat(BufferFormat format) {
121 switch (format) { 89 switch (format) {
122 case BufferFormat::RGBX_8888: 90 case BufferFormat::RGBX_8888:
123 return GL_RGBA; 91 return GL_RGBA;
124 case BufferFormat::BGRX_8888: 92 case BufferFormat::BGRX_8888:
125 return GL_BGRA_EXT; 93 return GL_BGRA_EXT;
126 case BufferFormat::RGBA_4444: 94 case BufferFormat::RGBA_4444:
127 case BufferFormat::RGBA_8888: 95 case BufferFormat::RGBA_8888:
128 case BufferFormat::BGRA_8888: 96 case BufferFormat::BGRA_8888:
129 case BufferFormat::R_8: 97 case BufferFormat::R_8:
130 case BufferFormat::ATC: 98 case BufferFormat::ATC:
131 case BufferFormat::ATCIA: 99 case BufferFormat::ATCIA:
132 case BufferFormat::DXT1: 100 case BufferFormat::DXT1:
133 case BufferFormat::DXT5: 101 case BufferFormat::DXT5:
134 case BufferFormat::ETC1: 102 case BufferFormat::ETC1:
135 return TextureFormat(format); 103 return GetTextureFormatFrom(format);
136 case BufferFormat::YUV_420: 104 case BufferFormat::YUV_420:
137 case BufferFormat::YUV_420_BIPLANAR: 105 case BufferFormat::YUV_420_BIPLANAR:
138 case BufferFormat::UYVY_422: 106 case BufferFormat::UYVY_422:
139 NOTREACHED(); 107 NOTREACHED();
140 return 0; 108 return 0;
141 } 109 }
142 110
143 NOTREACHED(); 111 NOTREACHED();
144 return 0; 112 return 0;
145 } 113 }
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 bool GLImageMemory::CopyTexImage(unsigned target) { 316 bool GLImageMemory::CopyTexImage(unsigned target) {
349 TRACE_EVENT2("gpu", "GLImageMemory::CopyTexImage", "width", size_.width(), 317 TRACE_EVENT2("gpu", "GLImageMemory::CopyTexImage", "width", size_.width(),
350 "height", size_.height()); 318 "height", size_.height());
351 319
352 // GL_TEXTURE_EXTERNAL_OES is not a supported target. 320 // GL_TEXTURE_EXTERNAL_OES is not a supported target.
353 if (target == GL_TEXTURE_EXTERNAL_OES) 321 if (target == GL_TEXTURE_EXTERNAL_OES)
354 return false; 322 return false;
355 323
356 if (IsCompressedFormat(format_)) { 324 if (IsCompressedFormat(format_)) {
357 glCompressedTexImage2D( 325 glCompressedTexImage2D(
358 target, 0, TextureFormat(format_), size_.width(), size_.height(), 0, 326 target, 0, GetTextureFormatFrom(format_), size_.width(), size_.height(),
359 static_cast<GLsizei>(BufferSizeForBufferFormat(size_, format_)), 327 0, static_cast<GLsizei>(BufferSizeForBufferFormat(size_, format_)),
360 memory_); 328 memory_);
361 } else { 329 } else {
362 GLenum data_format = DataFormat(format_); 330 GLenum data_format = DataFormat(format_);
363 GLenum data_type = DataType(format_); 331 GLenum data_type = DataType(format_);
364 GLint data_row_length = DataRowLength(stride_, format_); 332 GLint data_row_length = DataRowLength(stride_, format_);
365 scoped_ptr<uint8_t[]> gles2_data; 333 scoped_ptr<uint8_t[]> gles2_data;
366 334
367 if (gfx::GLContext::GetCurrent()->GetVersionInfo()->is_es) { 335 if (gfx::GLContext::GetCurrent()->GetVersionInfo()->is_es) {
368 gles2_data = GLES2Data(size_, format_, stride_, memory_, &data_format, 336 gles2_data = GLES2Data(size_, format_, stride_, memory_, &data_format,
369 &data_type, &data_row_length); 337 &data_type, &data_row_length);
370 } 338 }
371 339
372 if (data_row_length != size_.width()) 340 if (data_row_length != size_.width())
373 glPixelStorei(GL_UNPACK_ROW_LENGTH, data_row_length); 341 glPixelStorei(GL_UNPACK_ROW_LENGTH, data_row_length);
374 342
375 glTexImage2D(target, 0, TextureFormat(format_), size_.width(), 343 glTexImage2D(target, 0, GetTextureFormatFrom(format_), size_.width(),
376 size_.height(), 0, data_format, data_type, 344 size_.height(), 0, data_format, data_type,
377 gles2_data ? gles2_data.get() : memory_); 345 gles2_data ? gles2_data.get() : memory_);
378 346
379 if (data_row_length != size_.width()) 347 if (data_row_length != size_.width())
380 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); 348 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
381 } 349 }
382 350
383 return true; 351 return true;
384 } 352 }
385 353
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 } 402 }
435 403
436 bool GLImageMemory::ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 404 bool GLImageMemory::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
437 int z_order, 405 int z_order,
438 gfx::OverlayTransform transform, 406 gfx::OverlayTransform transform,
439 const gfx::Rect& bounds_rect, 407 const gfx::Rect& bounds_rect,
440 const gfx::RectF& crop_rect) { 408 const gfx::RectF& crop_rect) {
441 return false; 409 return false;
442 } 410 }
443 411
444 // static
445 unsigned GLImageMemory::GetInternalFormatForTesting(BufferFormat format) {
446 DCHECK(ValidFormat(format));
447 return TextureFormat(format);
448 }
449
450 } // namespace gl 412 } // namespace gl
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698