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 |