| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |