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

Side by Side Diff: gpu/command_buffer/tests/gl_manager.cc

Issue 1974163003: Expose GpuMemoryBufferId through glGetImageivCHROMIUM. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Created 4 years, 6 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') | gpu/gles2_conform_support/egl/context.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 #include <stddef.h> 10 #include <stddef.h>
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 DCHECK(mapped_); 140 DCHECK(mapped_);
141 mapped_ = false; 141 mapped_ = false;
142 } 142 }
143 gfx::Size GetSize() const override { return size_; } 143 gfx::Size GetSize() const override { return size_; }
144 gfx::BufferFormat GetFormat() const override { return format_; } 144 gfx::BufferFormat GetFormat() const override { return format_; }
145 int stride(size_t plane) const override { 145 int stride(size_t plane) const override {
146 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_)); 146 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_));
147 return IOSurfaceGetWidthOfPlane(iosurface_, plane); 147 return IOSurfaceGetWidthOfPlane(iosurface_, plane);
148 } 148 }
149 gfx::GpuMemoryBufferId GetId() const override { 149 gfx::GpuMemoryBufferId GetId() const override {
150 NOTREACHED();
151 return gfx::GpuMemoryBufferId(0); 150 return gfx::GpuMemoryBufferId(0);
152 } 151 }
153 gfx::GpuMemoryBufferHandle GetHandle() const override { 152 gfx::GpuMemoryBufferHandle GetHandle() const override {
154 NOTREACHED(); 153 NOTREACHED();
155 return gfx::GpuMemoryBufferHandle(); 154 return gfx::GpuMemoryBufferHandle();
156 } 155 }
157 ClientBuffer AsClientBuffer() override { 156 ClientBuffer AsClientBuffer() override {
158 return reinterpret_cast<ClientBuffer>(this); 157 return reinterpret_cast<ClientBuffer>(this);
159 } 158 }
160 159
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 return decoder_->GetCapabilities(); 508 return decoder_->GetCapabilities();
510 } 509 }
511 510
512 int32_t GLManager::CreateImage(ClientBuffer buffer, 511 int32_t GLManager::CreateImage(ClientBuffer buffer,
513 size_t width, 512 size_t width,
514 size_t height, 513 size_t height,
515 unsigned internalformat) { 514 unsigned internalformat) {
516 gfx::Size size(width, height); 515 gfx::Size size(width, height);
517 scoped_refptr<gl::GLImage> gl_image; 516 scoped_refptr<gl::GLImage> gl_image;
518 517
518 int gmb_id = -1;
519 #if defined(OS_MACOSX) 519 #if defined(OS_MACOSX)
520 if (use_iosurface_memory_buffers_) { 520 if (use_iosurface_memory_buffers_) {
521 IOSurfaceGpuMemoryBuffer* gpu_memory_buffer = 521 IOSurfaceGpuMemoryBuffer* gpu_memory_buffer =
522 IOSurfaceGpuMemoryBuffer::FromClientBuffer(buffer); 522 IOSurfaceGpuMemoryBuffer::FromClientBuffer(buffer);
523 scoped_refptr<gl::GLImageIOSurface> image( 523 scoped_refptr<gl::GLImageIOSurface> image(
524 new gl::GLImageIOSurface(size, internalformat)); 524 new gl::GLImageIOSurface(size, internalformat));
525 if (!image->Initialize(gpu_memory_buffer->iosurface(), 525 if (!image->Initialize(gpu_memory_buffer->iosurface(),
526 gfx::GenericSharedMemoryId(1), 526 gfx::GenericSharedMemoryId(1),
527 gfx::BufferFormat::BGRA_8888)) { 527 gfx::BufferFormat::BGRA_8888)) {
528 return -1; 528 return -1;
529 } 529 }
530 gl_image = image; 530 gl_image = image;
531 gmb_id = gpu_memory_buffer->GetId().id;
531 } 532 }
532 #endif // defined(OS_MACOSX) 533 #endif // defined(OS_MACOSX)
533 if (!gl_image) { 534 if (!gl_image) {
534 GpuMemoryBufferImpl* gpu_memory_buffer = 535 GpuMemoryBufferImpl* gpu_memory_buffer =
535 GpuMemoryBufferImpl::FromClientBuffer(buffer); 536 GpuMemoryBufferImpl::FromClientBuffer(buffer);
536 537
537 scoped_refptr<gl::GLImageRefCountedMemory> image( 538 scoped_refptr<gl::GLImageRefCountedMemory> image(
538 new gl::GLImageRefCountedMemory(size, internalformat)); 539 new gl::GLImageRefCountedMemory(size, internalformat));
539 if (!image->Initialize(gpu_memory_buffer->bytes(), 540 if (!image->Initialize(gpu_memory_buffer->bytes(),
540 gpu_memory_buffer->GetFormat())) { 541 gpu_memory_buffer->GetFormat())) {
541 return -1; 542 return -1;
542 } 543 }
543 gl_image = image; 544 gl_image = image;
544 } 545 }
545 546
546 static int32_t next_id = 1; 547 static int32_t next_id = 1;
547 int32_t new_id = next_id++; 548 int32_t new_id = next_id++;
548 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); 549 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager();
549 DCHECK(image_manager); 550 DCHECK(image_manager);
550 image_manager->AddImage(gl_image.get(), new_id); 551 image_manager->AddImage(gl_image.get(), new_id);
552
553 if (gmb_id != -1) {
554 DCHECK(image_gmb_ids_map_.find(new_id) == image_gmb_ids_map_.end());
555 image_gmb_ids_map_[new_id] = gmb_id;
556 }
557
551 return new_id; 558 return new_id;
552 } 559 }
553 560
554 int32_t GLManager::CreateGpuMemoryBufferImage(size_t width, 561 int32_t GLManager::CreateGpuMemoryBufferImage(size_t width,
555 size_t height, 562 size_t height,
556 unsigned internalformat, 563 unsigned internalformat,
557 unsigned usage) { 564 unsigned usage) {
558 DCHECK_EQ(usage, static_cast<unsigned>(GL_READ_WRITE_CHROMIUM)); 565 DCHECK_EQ(usage, static_cast<unsigned>(GL_READ_WRITE_CHROMIUM));
559 std::unique_ptr<gfx::GpuMemoryBuffer> buffer = CreateGpuMemoryBuffer( 566 std::unique_ptr<gfx::GpuMemoryBuffer> buffer = CreateGpuMemoryBuffer(
560 gfx::Size(width, height), gfx::BufferFormat::RGBA_8888); 567 gfx::Size(width, height), gfx::BufferFormat::RGBA_8888);
561 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); 568 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat);
562 } 569 }
563 570
571 int32_t GLManager::GetImageGpuMemoryBufferId(unsigned image_id) {
572 auto it = image_gmb_ids_map_.find(image_id);
573 if (it != image_gmb_ids_map_.end())
574 return it->second;
575 return -1;
576 }
577
564 void GLManager::DestroyImage(int32_t id) { 578 void GLManager::DestroyImage(int32_t id) {
579 auto it = image_gmb_ids_map_.find(id);
580 if (it != image_gmb_ids_map_.end())
581 image_gmb_ids_map_.erase(it);
582
565 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); 583 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager();
566 DCHECK(image_manager); 584 DCHECK(image_manager);
567 image_manager->RemoveImage(id); 585 image_manager->RemoveImage(id);
568 } 586 }
569 587
570 void GLManager::SignalQuery(uint32_t query, const base::Closure& callback) { 588 void GLManager::SignalQuery(uint32_t query, const base::Closure& callback) {
571 NOTIMPLEMENTED(); 589 NOTIMPLEMENTED();
572 } 590 }
573 591
574 void GLManager::SetLock(base::Lock*) { 592 void GLManager::SetLock(base::Lock*) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 641
624 // Something went wrong, just run the callback now. 642 // Something went wrong, just run the callback now.
625 callback.Run(); 643 callback.Run();
626 } 644 }
627 645
628 bool GLManager::CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) { 646 bool GLManager::CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) {
629 return false; 647 return false;
630 } 648 }
631 649
632 } // namespace gpu 650 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/tests/gl_manager.h ('k') | gpu/gles2_conform_support/egl/context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698