| Index: gpu/command_buffer/tests/gl_manager.cc
|
| diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc
|
| index 2a837eb42c4f3f07ff7a953464bbae27b1f87091..c9c3b6ba24982df36671cfd504c037d02e0a139a 100644
|
| --- a/gpu/command_buffer/tests/gl_manager.cc
|
| +++ b/gpu/command_buffer/tests/gl_manager.cc
|
| @@ -35,25 +35,29 @@
|
| namespace gpu {
|
| namespace {
|
|
|
| -int BytesPerPixel(unsigned internalformat) {
|
| - switch (internalformat) {
|
| - case GL_RGBA8_OES:
|
| +size_t BytesPerPixel(gfx::GpuMemoryBuffer::Format format) {
|
| + switch (format) {
|
| + case gfx::GpuMemoryBuffer::RGBA_8888:
|
| + case gfx::GpuMemoryBuffer::BGRA_8888:
|
| return 4;
|
| - default:
|
| - NOTREACHED();
|
| - return 0;
|
| + case gfx::GpuMemoryBuffer::RGBX_8888:
|
| + break;
|
| }
|
| +
|
| + NOTREACHED();
|
| + return 0;
|
| }
|
|
|
| class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer {
|
| public:
|
| GpuMemoryBufferImpl(base::RefCountedBytes* bytes,
|
| const gfx::Size& size,
|
| - unsigned internalformat)
|
| - : bytes_(bytes),
|
| - size_(size),
|
| - internalformat_(internalformat),
|
| - mapped_(false) {}
|
| + gfx::GpuMemoryBuffer::Format format)
|
| + : bytes_(bytes), size_(size), format_(format), mapped_(false) {}
|
| +
|
| + static GpuMemoryBufferImpl* FromClientBuffer(ClientBuffer buffer) {
|
| + return reinterpret_cast<GpuMemoryBufferImpl*>(buffer);
|
| + }
|
|
|
| // Overridden from gfx::GpuMemoryBuffer:
|
| virtual void* Map() override {
|
| @@ -62,18 +66,24 @@ class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer {
|
| }
|
| virtual void Unmap() override { mapped_ = false; }
|
| virtual bool IsMapped() const override { return mapped_; }
|
| + virtual Format GetFormat() const override { return format_; }
|
| virtual uint32 GetStride() const override {
|
| - return size_.width() * BytesPerPixel(internalformat_);
|
| + return size_.width() * BytesPerPixel(format_);
|
| }
|
| virtual gfx::GpuMemoryBufferHandle GetHandle() const override {
|
| NOTREACHED();
|
| return gfx::GpuMemoryBufferHandle();
|
| }
|
| + virtual ClientBuffer AsClientBuffer() override {
|
| + return reinterpret_cast<ClientBuffer>(this);
|
| + }
|
| +
|
| + base::RefCountedBytes* bytes() { return bytes_.get(); }
|
|
|
| private:
|
| scoped_refptr<base::RefCountedBytes> bytes_;
|
| const gfx::Size size_;
|
| - unsigned internalformat_;
|
| + gfx::GpuMemoryBuffer::Format format_;
|
| bool mapped_;
|
| };
|
|
|
| @@ -116,6 +126,16 @@ GLManager::~GLManager() {
|
| }
|
| }
|
|
|
| +// static
|
| +scoped_ptr<gfx::GpuMemoryBuffer> GLManager::CreateGpuMemoryBuffer(
|
| + const gfx::Size& size,
|
| + gfx::GpuMemoryBuffer::Format format) {
|
| + std::vector<unsigned char> data(size.GetArea() * BytesPerPixel(format), 0);
|
| + scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data));
|
| + return make_scoped_ptr<gfx::GpuMemoryBuffer>(
|
| + new GpuMemoryBufferImpl(bytes.get(), size, format));
|
| +}
|
| +
|
| void GLManager::Initialize(const GLManager::Options& options) {
|
| const int32 kCommandBufferSize = 1024 * 1024;
|
| const size_t kStartTransferBufferSize = 4 * 1024 * 1024;
|
| @@ -315,45 +335,44 @@ Capabilities GLManager::GetCapabilities() {
|
| return decoder_->GetCapabilities();
|
| }
|
|
|
| -gfx::GpuMemoryBuffer* GLManager::CreateGpuMemoryBuffer(
|
| - size_t width,
|
| - size_t height,
|
| - unsigned internalformat,
|
| - unsigned usage,
|
| - int32* id) {
|
| - gfx::Size size(width, height);
|
| +int32 GLManager::CreateImage(ClientBuffer buffer,
|
| + size_t width,
|
| + size_t height,
|
| + unsigned internalformat) {
|
| + GpuMemoryBufferImpl* gpu_memory_buffer =
|
| + GpuMemoryBufferImpl::FromClientBuffer(buffer);
|
|
|
| - *id = -1;
|
| -
|
| - std::vector<unsigned char> data(
|
| - size.GetArea() * BytesPerPixel(internalformat), 0);
|
| - scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data));
|
| - scoped_ptr<gfx::GpuMemoryBuffer> buffer(
|
| - new GpuMemoryBufferImpl(bytes.get(), size, internalformat));
|
| + scoped_refptr<gfx::GLImageRefCountedMemory> image(
|
| + new gfx::GLImageRefCountedMemory(gfx::Size(width, height),
|
| + internalformat));
|
| + if (!image->Initialize(gpu_memory_buffer->bytes(),
|
| + gpu_memory_buffer->GetFormat())) {
|
| + return -1;
|
| + }
|
|
|
| static int32 next_id = 1;
|
| int32 new_id = next_id++;
|
|
|
| - scoped_refptr<gfx::GLImageRefCountedMemory> image(
|
| - new gfx::GLImageRefCountedMemory(size, internalformat));
|
| - if (!image->Initialize(bytes.get()))
|
| - return NULL;
|
| -
|
| gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager();
|
| DCHECK(image_manager);
|
| image_manager->AddImage(image.get(), new_id);
|
| + return new_id;
|
| +}
|
|
|
| - *id = new_id;
|
| - DCHECK(gpu_memory_buffers_.find(new_id) == gpu_memory_buffers_.end());
|
| - return gpu_memory_buffers_.add(new_id, buffer.Pass()).first->second;
|
| +int32 GLManager::CreateGpuMemoryBufferImage(size_t width,
|
| + size_t height,
|
| + unsigned internalformat,
|
| + unsigned usage) {
|
| + DCHECK_EQ(usage, static_cast<unsigned>(GL_MAP_CHROMIUM));
|
| + scoped_ptr<gfx::GpuMemoryBuffer> buffer = GLManager::CreateGpuMemoryBuffer(
|
| + gfx::Size(width, height), gfx::GpuMemoryBuffer::RGBA_8888);
|
| + return CreateImage(buffer->AsClientBuffer(), width, height, internalformat);
|
| }
|
|
|
| -void GLManager::DestroyGpuMemoryBuffer(int32 id) {
|
| +void GLManager::DestroyImage(int32 id) {
|
| gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager();
|
| DCHECK(image_manager);
|
| image_manager->RemoveImage(id);
|
| -
|
| - gpu_memory_buffers_.erase(id);
|
| }
|
|
|
| uint32 GLManager::InsertSyncPoint() {
|
|
|