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

Side by Side Diff: gpu/command_buffer/service/image_factory.cc

Issue 1269503007: Unify graphics buffer format & usage enums for GpuMemoryBuffer & SurfaceFactoryOzone (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add header to BUILD.gn Created 5 years, 4 months 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 "gpu/command_buffer/service/image_factory.h" 5 #include "gpu/command_buffer/service/image_factory.h"
6 6
7 #include "gpu/command_buffer/common/capabilities.h" 7 #include "gpu/command_buffer/common/capabilities.h"
8 #include "ui/gl/gl_bindings.h" 8 #include "ui/gl/gl_bindings.h"
9 9
10 namespace gpu { 10 namespace gpu {
11 11
12 ImageFactory::ImageFactory() { 12 ImageFactory::ImageFactory() {
13 } 13 }
14 14
15 ImageFactory::~ImageFactory() { 15 ImageFactory::~ImageFactory() {
16 } 16 }
17 17
18 // static 18 // static
19 gfx::GpuMemoryBuffer::Format ImageFactory::ImageFormatToGpuMemoryBufferFormat( 19 gfx::BufferFormat ImageFactory::ImageFormatToGpuMemoryBufferFormat(
20 unsigned internalformat) { 20 unsigned internalformat) {
21 switch (internalformat) { 21 switch (internalformat) {
22 case GL_R8: 22 case GL_R8:
23 return gfx::GpuMemoryBuffer::R_8; 23 return gfx::BufferFormat::R_8;
24 case GL_RGB: 24 case GL_RGB:
25 return gfx::GpuMemoryBuffer::RGBX_8888; 25 return gfx::BufferFormat::RGBX_8888;
26 case GL_RGBA: 26 case GL_RGBA:
27 return gfx::GpuMemoryBuffer::RGBA_8888; 27 return gfx::BufferFormat::RGBA_8888;
28 case GL_BGRA_EXT: 28 case GL_BGRA_EXT:
29 return gfx::GpuMemoryBuffer::BGRA_8888; 29 return gfx::BufferFormat::BGRA_8888;
30 case GL_ATC_RGB_AMD: 30 case GL_ATC_RGB_AMD:
31 return gfx::GpuMemoryBuffer::ATC; 31 return gfx::BufferFormat::ATC;
32 case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD: 32 case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD:
33 return gfx::GpuMemoryBuffer::ATCIA; 33 return gfx::BufferFormat::ATCIA;
34 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: 34 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
35 return gfx::GpuMemoryBuffer::DXT1; 35 return gfx::BufferFormat::DXT1;
36 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: 36 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
37 return gfx::GpuMemoryBuffer::DXT5; 37 return gfx::BufferFormat::DXT5;
38 case GL_ETC1_RGB8_OES: 38 case GL_ETC1_RGB8_OES:
39 return gfx::GpuMemoryBuffer::ETC1; 39 return gfx::BufferFormat::ETC1;
40 case GL_RGB_YUV_420_CHROMIUM: 40 case GL_RGB_YUV_420_CHROMIUM:
41 return gfx::GpuMemoryBuffer::YUV_420; 41 return gfx::BufferFormat::YUV_420;
42 default: 42 default:
43 NOTREACHED(); 43 NOTREACHED();
44 return gfx::GpuMemoryBuffer::RGBA_8888; 44 return gfx::BufferFormat::RGBA_8888;
45 } 45 }
46 } 46 }
47 47
48 // static 48 // static
49 gfx::GpuMemoryBuffer::Usage ImageFactory::ImageUsageToGpuMemoryBufferUsage( 49 gfx::BufferUsage ImageFactory::ImageUsageToGpuMemoryBufferUsage(
50 unsigned usage) { 50 unsigned usage) {
51 switch (usage) { 51 switch (usage) {
52 case GL_MAP_CHROMIUM: 52 case GL_MAP_CHROMIUM:
53 return gfx::GpuMemoryBuffer::MAP; 53 return gfx::BufferUsage::MAP;
54 case GL_SCANOUT_CHROMIUM: 54 case GL_SCANOUT_CHROMIUM:
55 return gfx::GpuMemoryBuffer::SCANOUT; 55 return gfx::BufferUsage::SCANOUT;
56 default: 56 default:
57 NOTREACHED(); 57 NOTREACHED();
58 return gfx::GpuMemoryBuffer::MAP; 58 return gfx::BufferUsage::MAP;
59 } 59 }
60 } 60 }
61 61
62 // static 62 // static
63 bool ImageFactory::IsImageFormatCompatibleWithGpuMemoryBufferFormat( 63 bool ImageFactory::IsImageFormatCompatibleWithGpuMemoryBufferFormat(
64 unsigned internalformat, 64 unsigned internalformat,
65 gfx::GpuMemoryBuffer::Format format) { 65 gfx::BufferFormat format) {
66 return ImageFormatToGpuMemoryBufferFormat(internalformat) == format; 66 return ImageFormatToGpuMemoryBufferFormat(internalformat) == format;
67 } 67 }
68 68
69 // static 69 // static
70 bool ImageFactory::IsGpuMemoryBufferFormatSupported( 70 bool ImageFactory::IsGpuMemoryBufferFormatSupported(
71 gfx::GpuMemoryBuffer::Format format, 71 gfx::BufferFormat format,
72 const gpu::Capabilities& capabilities) { 72 const gpu::Capabilities& capabilities) {
73 switch (format) { 73 switch (format) {
74 case gfx::GpuMemoryBuffer::ATC: 74 case gfx::BufferFormat::ATC:
75 case gfx::GpuMemoryBuffer::ATCIA: 75 case gfx::BufferFormat::ATCIA:
76 return capabilities.texture_format_atc; 76 return capabilities.texture_format_atc;
77 case gfx::GpuMemoryBuffer::BGRA_8888: 77 case gfx::BufferFormat::BGRA_8888:
78 return capabilities.texture_format_bgra8888; 78 return capabilities.texture_format_bgra8888;
79 case gfx::GpuMemoryBuffer::DXT1: 79 case gfx::BufferFormat::DXT1:
80 return capabilities.texture_format_dxt1; 80 return capabilities.texture_format_dxt1;
81 case gfx::GpuMemoryBuffer::DXT5: 81 case gfx::BufferFormat::DXT5:
82 return capabilities.texture_format_dxt5; 82 return capabilities.texture_format_dxt5;
83 case gfx::GpuMemoryBuffer::ETC1: 83 case gfx::BufferFormat::ETC1:
84 return capabilities.texture_format_etc1; 84 return capabilities.texture_format_etc1;
85 case gfx::GpuMemoryBuffer::R_8: 85 case gfx::BufferFormat::R_8:
86 return capabilities.texture_rg; 86 return capabilities.texture_rg;
87 case gfx::GpuMemoryBuffer::RGBA_4444: 87 case gfx::BufferFormat::RGBA_4444:
88 case gfx::GpuMemoryBuffer::RGBA_8888: 88 case gfx::BufferFormat::RGBA_8888:
89 case gfx::GpuMemoryBuffer::RGBX_8888: 89 case gfx::BufferFormat::RGBX_8888:
90 case gfx::GpuMemoryBuffer::YUV_420: 90 case gfx::BufferFormat::YUV_420:
91 return true; 91 return true;
92 } 92 }
93 93
94 NOTREACHED(); 94 NOTREACHED();
95 return false; 95 return false;
96 } 96 }
97 97
98 // static 98 // static
99 bool ImageFactory::IsImageSizeValidForGpuMemoryBufferFormat( 99 bool ImageFactory::IsImageSizeValidForGpuMemoryBufferFormat(
100 const gfx::Size& size, 100 const gfx::Size& size,
101 gfx::GpuMemoryBuffer::Format format) { 101 gfx::BufferFormat format) {
102 switch (format) { 102 switch (format) {
103 case gfx::GpuMemoryBuffer::ATC: 103 case gfx::BufferFormat::ATC:
104 case gfx::GpuMemoryBuffer::ATCIA: 104 case gfx::BufferFormat::ATCIA:
105 case gfx::GpuMemoryBuffer::DXT1: 105 case gfx::BufferFormat::DXT1:
106 case gfx::GpuMemoryBuffer::DXT5: 106 case gfx::BufferFormat::DXT5:
107 case gfx::GpuMemoryBuffer::ETC1: 107 case gfx::BufferFormat::ETC1:
108 // Compressed images must have a width and height that's evenly divisible 108 // Compressed images must have a width and height that's evenly divisible
109 // by the block size. 109 // by the block size.
110 return size.width() % 4 == 0 && size.height() % 4 == 0; 110 return size.width() % 4 == 0 && size.height() % 4 == 0;
111 case gfx::GpuMemoryBuffer::R_8: 111 case gfx::BufferFormat::R_8:
112 case gfx::GpuMemoryBuffer::RGBA_4444: 112 case gfx::BufferFormat::RGBA_4444:
113 case gfx::GpuMemoryBuffer::RGBA_8888: 113 case gfx::BufferFormat::RGBA_8888:
114 case gfx::GpuMemoryBuffer::BGRA_8888: 114 case gfx::BufferFormat::BGRA_8888:
115 case gfx::GpuMemoryBuffer::RGBX_8888: 115 case gfx::BufferFormat::RGBX_8888:
116 return true; 116 return true;
117 case gfx::GpuMemoryBuffer::YUV_420: 117 case gfx::BufferFormat::YUV_420:
118 // U and V planes are subsampled by a factor of 2. 118 // U and V planes are subsampled by a factor of 2.
119 return size.width() % 2 == 0 && size.height() % 2 == 0; 119 return size.width() % 2 == 0 && size.height() % 2 == 0;
120 } 120 }
121 121
122 NOTREACHED(); 122 NOTREACHED();
123 return false; 123 return false;
124 } 124 }
125 125
126 } // namespace gpu 126 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/image_factory.h ('k') | gpu/command_buffer/service/in_process_command_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698