| 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(); |
| 150 return gfx::GpuMemoryBufferId(0); | 151 return gfx::GpuMemoryBufferId(0); |
| 151 } | 152 } |
| 152 gfx::GpuMemoryBufferHandle GetHandle() const override { | 153 gfx::GpuMemoryBufferHandle GetHandle() const override { |
| 153 NOTREACHED(); | 154 NOTREACHED(); |
| 154 return gfx::GpuMemoryBufferHandle(); | 155 return gfx::GpuMemoryBufferHandle(); |
| 155 } | 156 } |
| 156 ClientBuffer AsClientBuffer() override { | 157 ClientBuffer AsClientBuffer() override { |
| 157 return reinterpret_cast<ClientBuffer>(this); | 158 return reinterpret_cast<ClientBuffer>(this); |
| 158 } | 159 } |
| 159 | 160 |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 return decoder_->GetCapabilities(); | 514 return decoder_->GetCapabilities(); |
| 514 } | 515 } |
| 515 | 516 |
| 516 int32_t GLManager::CreateImage(ClientBuffer buffer, | 517 int32_t GLManager::CreateImage(ClientBuffer buffer, |
| 517 size_t width, | 518 size_t width, |
| 518 size_t height, | 519 size_t height, |
| 519 unsigned internalformat) { | 520 unsigned internalformat) { |
| 520 gfx::Size size(width, height); | 521 gfx::Size size(width, height); |
| 521 scoped_refptr<gl::GLImage> gl_image; | 522 scoped_refptr<gl::GLImage> gl_image; |
| 522 | 523 |
| 523 int gmb_id = -1; | |
| 524 #if defined(OS_MACOSX) | 524 #if defined(OS_MACOSX) |
| 525 if (use_iosurface_memory_buffers_) { | 525 if (use_iosurface_memory_buffers_) { |
| 526 IOSurfaceGpuMemoryBuffer* gpu_memory_buffer = | 526 IOSurfaceGpuMemoryBuffer* gpu_memory_buffer = |
| 527 IOSurfaceGpuMemoryBuffer::FromClientBuffer(buffer); | 527 IOSurfaceGpuMemoryBuffer::FromClientBuffer(buffer); |
| 528 scoped_refptr<gl::GLImageIOSurface> image( | 528 scoped_refptr<gl::GLImageIOSurface> image( |
| 529 new gl::GLImageIOSurface(size, internalformat)); | 529 new gl::GLImageIOSurface(size, internalformat)); |
| 530 if (!image->Initialize(gpu_memory_buffer->iosurface(), | 530 if (!image->Initialize(gpu_memory_buffer->iosurface(), |
| 531 gfx::GenericSharedMemoryId(1), | 531 gfx::GenericSharedMemoryId(1), |
| 532 gfx::BufferFormat::BGRA_8888)) { | 532 gfx::BufferFormat::BGRA_8888)) { |
| 533 return -1; | 533 return -1; |
| 534 } | 534 } |
| 535 gl_image = image; | 535 gl_image = image; |
| 536 gmb_id = gpu_memory_buffer->GetId().id; | |
| 537 } | 536 } |
| 538 #endif // defined(OS_MACOSX) | 537 #endif // defined(OS_MACOSX) |
| 539 if (!gl_image) { | 538 if (!gl_image) { |
| 540 GpuMemoryBufferImpl* gpu_memory_buffer = | 539 GpuMemoryBufferImpl* gpu_memory_buffer = |
| 541 GpuMemoryBufferImpl::FromClientBuffer(buffer); | 540 GpuMemoryBufferImpl::FromClientBuffer(buffer); |
| 542 | 541 |
| 543 scoped_refptr<gl::GLImageRefCountedMemory> image( | 542 scoped_refptr<gl::GLImageRefCountedMemory> image( |
| 544 new gl::GLImageRefCountedMemory(size, internalformat)); | 543 new gl::GLImageRefCountedMemory(size, internalformat)); |
| 545 if (!image->Initialize(gpu_memory_buffer->bytes(), | 544 if (!image->Initialize(gpu_memory_buffer->bytes(), |
| 546 gpu_memory_buffer->GetFormat())) { | 545 gpu_memory_buffer->GetFormat())) { |
| 547 return -1; | 546 return -1; |
| 548 } | 547 } |
| 549 gl_image = image; | 548 gl_image = image; |
| 550 } | 549 } |
| 551 | 550 |
| 552 static int32_t next_id = 1; | 551 static int32_t next_id = 1; |
| 553 int32_t new_id = next_id++; | 552 int32_t new_id = next_id++; |
| 554 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); | 553 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); |
| 555 DCHECK(image_manager); | 554 DCHECK(image_manager); |
| 556 image_manager->AddImage(gl_image.get(), new_id); | 555 image_manager->AddImage(gl_image.get(), new_id); |
| 557 | |
| 558 if (gmb_id != -1) { | |
| 559 DCHECK(image_gmb_ids_map_.find(new_id) == image_gmb_ids_map_.end()); | |
| 560 image_gmb_ids_map_[new_id] = gmb_id; | |
| 561 } | |
| 562 | |
| 563 return new_id; | 556 return new_id; |
| 564 } | 557 } |
| 565 | 558 |
| 566 int32_t GLManager::CreateGpuMemoryBufferImage(size_t width, | 559 int32_t GLManager::CreateGpuMemoryBufferImage(size_t width, |
| 567 size_t height, | 560 size_t height, |
| 568 unsigned internalformat, | 561 unsigned internalformat, |
| 569 unsigned usage) { | 562 unsigned usage) { |
| 570 DCHECK_EQ(usage, static_cast<unsigned>(GL_READ_WRITE_CHROMIUM)); | 563 DCHECK_EQ(usage, static_cast<unsigned>(GL_READ_WRITE_CHROMIUM)); |
| 571 std::unique_ptr<gfx::GpuMemoryBuffer> buffer = CreateGpuMemoryBuffer( | 564 std::unique_ptr<gfx::GpuMemoryBuffer> buffer = CreateGpuMemoryBuffer( |
| 572 gfx::Size(width, height), gfx::BufferFormat::RGBA_8888); | 565 gfx::Size(width, height), gfx::BufferFormat::RGBA_8888); |
| 573 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); | 566 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); |
| 574 } | 567 } |
| 575 | 568 |
| 576 int32_t GLManager::GetImageGpuMemoryBufferId(unsigned image_id) { | |
| 577 auto it = image_gmb_ids_map_.find(image_id); | |
| 578 if (it != image_gmb_ids_map_.end()) | |
| 579 return it->second; | |
| 580 return -1; | |
| 581 } | |
| 582 | |
| 583 void GLManager::DestroyImage(int32_t id) { | 569 void GLManager::DestroyImage(int32_t id) { |
| 584 auto it = image_gmb_ids_map_.find(id); | |
| 585 if (it != image_gmb_ids_map_.end()) | |
| 586 image_gmb_ids_map_.erase(it); | |
| 587 | |
| 588 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); | 570 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); |
| 589 DCHECK(image_manager); | 571 DCHECK(image_manager); |
| 590 image_manager->RemoveImage(id); | 572 image_manager->RemoveImage(id); |
| 591 } | 573 } |
| 592 | 574 |
| 593 void GLManager::SignalQuery(uint32_t query, const base::Closure& callback) { | 575 void GLManager::SignalQuery(uint32_t query, const base::Closure& callback) { |
| 594 NOTIMPLEMENTED(); | 576 NOTIMPLEMENTED(); |
| 595 } | 577 } |
| 596 | 578 |
| 597 void GLManager::SetLock(base::Lock*) { | 579 void GLManager::SetLock(base::Lock*) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 646 | 628 |
| 647 // Something went wrong, just run the callback now. | 629 // Something went wrong, just run the callback now. |
| 648 callback.Run(); | 630 callback.Run(); |
| 649 } | 631 } |
| 650 | 632 |
| 651 bool GLManager::CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) { | 633 bool GLManager::CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) { |
| 652 return false; | 634 return false; |
| 653 } | 635 } |
| 654 | 636 |
| 655 } // namespace gpu | 637 } // namespace gpu |
| OLD | NEW |