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

Side by Side Diff: gpu/command_buffer/tests/gl_manager.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
« no previous file with comments | « gpu/command_buffer/tests/gl_manager.h ('k') | mandoline/ui/aura/surface_context_factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/tests/gl_manager.h" 5 #include "gpu/command_buffer/tests/gl_manager.h"
6 6
7 #include <GLES2/gl2.h> 7 #include <GLES2/gl2.h>
8 #include <GLES2/gl2ext.h> 8 #include <GLES2/gl2ext.h>
9 #include <GLES2/gl2extchromium.h> 9 #include <GLES2/gl2extchromium.h>
10 10
(...skipping 21 matching lines...) Expand all
32 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
33 #include "ui/gfx/gpu_memory_buffer.h" 33 #include "ui/gfx/gpu_memory_buffer.h"
34 #include "ui/gl/gl_context.h" 34 #include "ui/gl/gl_context.h"
35 #include "ui/gl/gl_image_ref_counted_memory.h" 35 #include "ui/gl/gl_image_ref_counted_memory.h"
36 #include "ui/gl/gl_share_group.h" 36 #include "ui/gl/gl_share_group.h"
37 #include "ui/gl/gl_surface.h" 37 #include "ui/gl/gl_surface.h"
38 38
39 namespace gpu { 39 namespace gpu {
40 namespace { 40 namespace {
41 41
42 size_t NumberOfPlanesForGpuMemoryBufferFormat( 42 size_t NumberOfPlanesForGpuMemoryBufferFormat(gfx::BufferFormat format) {
43 gfx::GpuMemoryBuffer::Format format) {
44 switch (format) { 43 switch (format) {
45 case gfx::GpuMemoryBuffer::ATC: 44 case gfx::BufferFormat::ATC:
46 case gfx::GpuMemoryBuffer::ATCIA: 45 case gfx::BufferFormat::ATCIA:
47 case gfx::GpuMemoryBuffer::DXT1: 46 case gfx::BufferFormat::DXT1:
48 case gfx::GpuMemoryBuffer::DXT5: 47 case gfx::BufferFormat::DXT5:
49 case gfx::GpuMemoryBuffer::ETC1: 48 case gfx::BufferFormat::ETC1:
50 case gfx::GpuMemoryBuffer::R_8: 49 case gfx::BufferFormat::R_8:
51 case gfx::GpuMemoryBuffer::RGBA_4444: 50 case gfx::BufferFormat::RGBA_4444:
52 case gfx::GpuMemoryBuffer::RGBA_8888: 51 case gfx::BufferFormat::RGBA_8888:
53 case gfx::GpuMemoryBuffer::RGBX_8888: 52 case gfx::BufferFormat::RGBX_8888:
54 case gfx::GpuMemoryBuffer::BGRA_8888: 53 case gfx::BufferFormat::BGRA_8888:
55 return 1; 54 return 1;
56 case gfx::GpuMemoryBuffer::YUV_420: 55 case gfx::BufferFormat::YUV_420:
57 return 3; 56 return 3;
58 } 57 }
59 NOTREACHED(); 58 NOTREACHED();
60 return 0; 59 return 0;
61 } 60 }
62 61
63 size_t SubsamplingFactor(gfx::GpuMemoryBuffer::Format format, int plane) { 62 size_t SubsamplingFactor(gfx::BufferFormat format, int plane) {
64 switch (format) { 63 switch (format) {
65 case gfx::GpuMemoryBuffer::ATC: 64 case gfx::BufferFormat::ATC:
66 case gfx::GpuMemoryBuffer::ATCIA: 65 case gfx::BufferFormat::ATCIA:
67 case gfx::GpuMemoryBuffer::DXT1: 66 case gfx::BufferFormat::DXT1:
68 case gfx::GpuMemoryBuffer::DXT5: 67 case gfx::BufferFormat::DXT5:
69 case gfx::GpuMemoryBuffer::ETC1: 68 case gfx::BufferFormat::ETC1:
70 case gfx::GpuMemoryBuffer::R_8: 69 case gfx::BufferFormat::R_8:
71 case gfx::GpuMemoryBuffer::RGBA_4444: 70 case gfx::BufferFormat::RGBA_4444:
72 case gfx::GpuMemoryBuffer::RGBA_8888: 71 case gfx::BufferFormat::RGBA_8888:
73 case gfx::GpuMemoryBuffer::RGBX_8888: 72 case gfx::BufferFormat::RGBX_8888:
74 case gfx::GpuMemoryBuffer::BGRA_8888: 73 case gfx::BufferFormat::BGRA_8888:
75 return 1; 74 return 1;
76 case gfx::GpuMemoryBuffer::YUV_420: { 75 case gfx::BufferFormat::YUV_420: {
77 static size_t factor[] = {1, 2, 2}; 76 static size_t factor[] = {1, 2, 2};
78 DCHECK_LT(static_cast<size_t>(plane), arraysize(factor)); 77 DCHECK_LT(static_cast<size_t>(plane), arraysize(factor));
79 return factor[plane]; 78 return factor[plane];
80 } 79 }
81 } 80 }
82 NOTREACHED(); 81 NOTREACHED();
83 return 0; 82 return 0;
84 } 83 }
85 84
86 size_t StrideInBytes(size_t width, 85 size_t StrideInBytes(size_t width, gfx::BufferFormat format, int plane) {
87 gfx::GpuMemoryBuffer::Format format,
88 int plane) {
89 switch (format) { 86 switch (format) {
90 case gfx::GpuMemoryBuffer::ATCIA: 87 case gfx::BufferFormat::ATCIA:
91 case gfx::GpuMemoryBuffer::DXT5: 88 case gfx::BufferFormat::DXT5:
92 DCHECK_EQ(plane, 0); 89 DCHECK_EQ(plane, 0);
93 return width; 90 return width;
94 case gfx::GpuMemoryBuffer::ATC: 91 case gfx::BufferFormat::ATC:
95 case gfx::GpuMemoryBuffer::DXT1: 92 case gfx::BufferFormat::DXT1:
96 case gfx::GpuMemoryBuffer::ETC1: 93 case gfx::BufferFormat::ETC1:
97 DCHECK_EQ(plane, 0); 94 DCHECK_EQ(plane, 0);
98 DCHECK_EQ(width % 2, 0U); 95 DCHECK_EQ(width % 2, 0U);
99 return width / 2; 96 return width / 2;
100 case gfx::GpuMemoryBuffer::R_8: 97 case gfx::BufferFormat::R_8:
101 return (width + 3) & ~0x3; 98 return (width + 3) & ~0x3;
102 case gfx::GpuMemoryBuffer::RGBA_4444: 99 case gfx::BufferFormat::RGBA_4444:
103 DCHECK_EQ(plane, 0); 100 DCHECK_EQ(plane, 0);
104 return width * 2; 101 return width * 2;
105 case gfx::GpuMemoryBuffer::RGBA_8888: 102 case gfx::BufferFormat::RGBA_8888:
106 case gfx::GpuMemoryBuffer::BGRA_8888: 103 case gfx::BufferFormat::BGRA_8888:
107 DCHECK_EQ(plane, 0); 104 DCHECK_EQ(plane, 0);
108 return width * 4; 105 return width * 4;
109 case gfx::GpuMemoryBuffer::RGBX_8888: 106 case gfx::BufferFormat::RGBX_8888:
110 NOTREACHED(); 107 NOTREACHED();
111 return 0; 108 return 0;
112 case gfx::GpuMemoryBuffer::YUV_420: 109 case gfx::BufferFormat::YUV_420:
113 return width / SubsamplingFactor(format, plane); 110 return width / SubsamplingFactor(format, plane);
114 } 111 }
115 112
116 NOTREACHED(); 113 NOTREACHED();
117 return 0; 114 return 0;
118 } 115 }
119 116
120 size_t BufferSizeInBytes(const gfx::Size& size, 117 size_t BufferSizeInBytes(const gfx::Size& size, gfx::BufferFormat format) {
121 gfx::GpuMemoryBuffer::Format format) {
122 size_t size_in_bytes = 0; 118 size_t size_in_bytes = 0;
123 size_t num_planes = NumberOfPlanesForGpuMemoryBufferFormat(format); 119 size_t num_planes = NumberOfPlanesForGpuMemoryBufferFormat(format);
124 for (size_t i = 0; i < num_planes; ++i) { 120 for (size_t i = 0; i < num_planes; ++i) {
125 size_in_bytes += StrideInBytes(size.width(), format, i) * 121 size_in_bytes += StrideInBytes(size.width(), format, i) *
126 (size.height() / SubsamplingFactor(format, i)); 122 (size.height() / SubsamplingFactor(format, i));
127 } 123 }
128 return size_in_bytes; 124 return size_in_bytes;
129 } 125 }
130 126
131 class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { 127 class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer {
132 public: 128 public:
133 GpuMemoryBufferImpl(base::RefCountedBytes* bytes, 129 GpuMemoryBufferImpl(base::RefCountedBytes* bytes,
134 const gfx::Size& size, 130 const gfx::Size& size,
135 gfx::GpuMemoryBuffer::Format format) 131 gfx::BufferFormat format)
136 : bytes_(bytes), size_(size), format_(format), mapped_(false) {} 132 : bytes_(bytes), size_(size), format_(format), mapped_(false) {}
137 133
138 static GpuMemoryBufferImpl* FromClientBuffer(ClientBuffer buffer) { 134 static GpuMemoryBufferImpl* FromClientBuffer(ClientBuffer buffer) {
139 return reinterpret_cast<GpuMemoryBufferImpl*>(buffer); 135 return reinterpret_cast<GpuMemoryBufferImpl*>(buffer);
140 } 136 }
141 137
142 // Overridden from gfx::GpuMemoryBuffer: 138 // Overridden from gfx::GpuMemoryBuffer:
143 bool Map(void** data) override { 139 bool Map(void** data) override {
144 size_t offset = 0; 140 size_t offset = 0;
145 size_t num_planes = NumberOfPlanesForGpuMemoryBufferFormat(format_); 141 size_t num_planes = NumberOfPlanesForGpuMemoryBufferFormat(format_);
146 for (size_t i = 0; i < num_planes; ++i) { 142 for (size_t i = 0; i < num_planes; ++i) {
147 data[i] = reinterpret_cast<uint8*>(&bytes_->data().front()) + offset; 143 data[i] = reinterpret_cast<uint8*>(&bytes_->data().front()) + offset;
148 offset += StrideInBytes(size_.width(), format_, i) * 144 offset += StrideInBytes(size_.width(), format_, i) *
149 (size_.height() / SubsamplingFactor(format_, i)); 145 (size_.height() / SubsamplingFactor(format_, i));
150 } 146 }
151 mapped_ = true; 147 mapped_ = true;
152 return true; 148 return true;
153 } 149 }
154 void Unmap() override { mapped_ = false; } 150 void Unmap() override { mapped_ = false; }
155 bool IsMapped() const override { return mapped_; } 151 bool IsMapped() const override { return mapped_; }
156 Format GetFormat() const override { return format_; } 152 gfx::BufferFormat GetFormat() const override { return format_; }
157 void GetStride(int* stride) const override { 153 void GetStride(int* stride) const override {
158 size_t num_planes = NumberOfPlanesForGpuMemoryBufferFormat(format_); 154 size_t num_planes = NumberOfPlanesForGpuMemoryBufferFormat(format_);
159 for (size_t i = 0; i < num_planes; ++i) 155 for (size_t i = 0; i < num_planes; ++i)
160 stride[i] = StrideInBytes(size_.width(), format_, i); 156 stride[i] = StrideInBytes(size_.width(), format_, i);
161 } 157 }
162 gfx::GpuMemoryBufferId GetId() const override { 158 gfx::GpuMemoryBufferId GetId() const override {
163 NOTREACHED(); 159 NOTREACHED();
164 return 0; 160 return 0;
165 } 161 }
166 gfx::GpuMemoryBufferHandle GetHandle() const override { 162 gfx::GpuMemoryBufferHandle GetHandle() const override {
167 NOTREACHED(); 163 NOTREACHED();
168 return gfx::GpuMemoryBufferHandle(); 164 return gfx::GpuMemoryBufferHandle();
169 } 165 }
170 ClientBuffer AsClientBuffer() override { 166 ClientBuffer AsClientBuffer() override {
171 return reinterpret_cast<ClientBuffer>(this); 167 return reinterpret_cast<ClientBuffer>(this);
172 } 168 }
173 169
174 base::RefCountedBytes* bytes() { return bytes_.get(); } 170 base::RefCountedBytes* bytes() { return bytes_.get(); }
175 171
176 private: 172 private:
177 scoped_refptr<base::RefCountedBytes> bytes_; 173 scoped_refptr<base::RefCountedBytes> bytes_;
178 const gfx::Size size_; 174 const gfx::Size size_;
179 gfx::GpuMemoryBuffer::Format format_; 175 gfx::BufferFormat format_;
180 bool mapped_; 176 bool mapped_;
181 }; 177 };
182 178
183 } // namespace 179 } // namespace
184 180
185 int GLManager::use_count_; 181 int GLManager::use_count_;
186 scoped_refptr<gfx::GLShareGroup>* GLManager::base_share_group_; 182 scoped_refptr<gfx::GLShareGroup>* GLManager::base_share_group_;
187 scoped_refptr<gfx::GLSurface>* GLManager::base_surface_; 183 scoped_refptr<gfx::GLSurface>* GLManager::base_surface_;
188 scoped_refptr<gfx::GLContext>* GLManager::base_context_; 184 scoped_refptr<gfx::GLContext>* GLManager::base_context_;
189 185
(...skipping 26 matching lines...) Expand all
216 if (base_context_) { 212 if (base_context_) {
217 delete base_context_; 213 delete base_context_;
218 base_context_ = NULL; 214 base_context_ = NULL;
219 } 215 }
220 } 216 }
221 } 217 }
222 218
223 // static 219 // static
224 scoped_ptr<gfx::GpuMemoryBuffer> GLManager::CreateGpuMemoryBuffer( 220 scoped_ptr<gfx::GpuMemoryBuffer> GLManager::CreateGpuMemoryBuffer(
225 const gfx::Size& size, 221 const gfx::Size& size,
226 gfx::GpuMemoryBuffer::Format format) { 222 gfx::BufferFormat format) {
227 std::vector<unsigned char> data(BufferSizeInBytes(size, format), 0); 223 std::vector<unsigned char> data(BufferSizeInBytes(size, format), 0);
228 scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data)); 224 scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data));
229 return make_scoped_ptr<gfx::GpuMemoryBuffer>( 225 return make_scoped_ptr<gfx::GpuMemoryBuffer>(
230 new GpuMemoryBufferImpl(bytes.get(), size, format)); 226 new GpuMemoryBufferImpl(bytes.get(), size, format));
231 } 227 }
232 228
233 void GLManager::Initialize(const GLManager::Options& options) { 229 void GLManager::Initialize(const GLManager::Options& options) {
234 InitializeWithCommandLine(options, nullptr); 230 InitializeWithCommandLine(options, nullptr);
235 } 231 }
236 void GLManager::InitializeWithCommandLine(const GLManager::Options& options, 232 void GLManager::InitializeWithCommandLine(const GLManager::Options& options,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 image_manager->AddImage(image.get(), new_id); 466 image_manager->AddImage(image.get(), new_id);
471 return new_id; 467 return new_id;
472 } 468 }
473 469
474 int32 GLManager::CreateGpuMemoryBufferImage(size_t width, 470 int32 GLManager::CreateGpuMemoryBufferImage(size_t width,
475 size_t height, 471 size_t height,
476 unsigned internalformat, 472 unsigned internalformat,
477 unsigned usage) { 473 unsigned usage) {
478 DCHECK_EQ(usage, static_cast<unsigned>(GL_MAP_CHROMIUM)); 474 DCHECK_EQ(usage, static_cast<unsigned>(GL_MAP_CHROMIUM));
479 scoped_ptr<gfx::GpuMemoryBuffer> buffer = GLManager::CreateGpuMemoryBuffer( 475 scoped_ptr<gfx::GpuMemoryBuffer> buffer = GLManager::CreateGpuMemoryBuffer(
480 gfx::Size(width, height), gfx::GpuMemoryBuffer::RGBA_8888); 476 gfx::Size(width, height), gfx::BufferFormat::RGBA_8888);
481 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); 477 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat);
482 } 478 }
483 479
484 void GLManager::DestroyImage(int32 id) { 480 void GLManager::DestroyImage(int32 id) {
485 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); 481 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager();
486 DCHECK(image_manager); 482 DCHECK(image_manager);
487 image_manager->RemoveImage(id); 483 image_manager->RemoveImage(id);
488 } 484 }
489 485
490 uint32 GLManager::InsertSyncPoint() { 486 uint32 GLManager::InsertSyncPoint() {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 void GLManager::SetLock(base::Lock*) { 518 void GLManager::SetLock(base::Lock*) {
523 NOTIMPLEMENTED(); 519 NOTIMPLEMENTED();
524 } 520 }
525 521
526 bool GLManager::IsGpuChannelLost() { 522 bool GLManager::IsGpuChannelLost() {
527 NOTIMPLEMENTED(); 523 NOTIMPLEMENTED();
528 return false; 524 return false;
529 } 525 }
530 526
531 } // namespace gpu 527 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/tests/gl_manager.h ('k') | mandoline/ui/aura/surface_context_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698