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

Side by Side Diff: cc/resources/resource_provider.cc

Issue 2120713002: Fix use_image_texture_target inconsistencies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix content browsertests Created 4 years, 5 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 | « cc/resources/resource_provider.h ('k') | cc/resources/resource_provider_unittest.cc » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/resources/resource_provider.h" 5 #include "cc/resources/resource_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 383
384 ResourceProvider::ResourceProvider( 384 ResourceProvider::ResourceProvider(
385 ContextProvider* compositor_context_provider, 385 ContextProvider* compositor_context_provider,
386 SharedBitmapManager* shared_bitmap_manager, 386 SharedBitmapManager* shared_bitmap_manager,
387 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 387 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
388 BlockingTaskRunner* blocking_main_thread_task_runner, 388 BlockingTaskRunner* blocking_main_thread_task_runner,
389 int highp_threshold_min, 389 int highp_threshold_min,
390 size_t id_allocation_chunk_size, 390 size_t id_allocation_chunk_size,
391 bool delegated_sync_points_required, 391 bool delegated_sync_points_required,
392 bool use_gpu_memory_buffer_resources, 392 bool use_gpu_memory_buffer_resources,
393 const std::vector<unsigned>& use_image_texture_targets) 393 const BufferToTextureTargetMap& buffer_to_texture_target_map)
394 : compositor_context_provider_(compositor_context_provider), 394 : compositor_context_provider_(compositor_context_provider),
395 shared_bitmap_manager_(shared_bitmap_manager), 395 shared_bitmap_manager_(shared_bitmap_manager),
396 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), 396 gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
397 blocking_main_thread_task_runner_(blocking_main_thread_task_runner), 397 blocking_main_thread_task_runner_(blocking_main_thread_task_runner),
398 lost_output_surface_(false), 398 lost_output_surface_(false),
399 highp_threshold_min_(highp_threshold_min), 399 highp_threshold_min_(highp_threshold_min),
400 next_id_(1), 400 next_id_(1),
401 next_child_(1), 401 next_child_(1),
402 delegated_sync_points_required_(delegated_sync_points_required), 402 delegated_sync_points_required_(delegated_sync_points_required),
403 default_resource_type_(use_gpu_memory_buffer_resources 403 default_resource_type_(use_gpu_memory_buffer_resources
404 ? RESOURCE_TYPE_GPU_MEMORY_BUFFER 404 ? RESOURCE_TYPE_GPU_MEMORY_BUFFER
405 : RESOURCE_TYPE_GL_TEXTURE), 405 : RESOURCE_TYPE_GL_TEXTURE),
406 use_texture_storage_ext_(false), 406 use_texture_storage_ext_(false),
407 use_texture_format_bgra_(false), 407 use_texture_format_bgra_(false),
408 use_texture_usage_hint_(false), 408 use_texture_usage_hint_(false),
409 use_compressed_texture_etc1_(false), 409 use_compressed_texture_etc1_(false),
410 yuv_resource_format_(LUMINANCE_8), 410 yuv_resource_format_(LUMINANCE_8),
411 max_texture_size_(0), 411 max_texture_size_(0),
412 best_texture_format_(RGBA_8888), 412 best_texture_format_(RGBA_8888),
413 best_render_buffer_format_(RGBA_8888), 413 best_render_buffer_format_(RGBA_8888),
414 id_allocation_chunk_size_(id_allocation_chunk_size), 414 id_allocation_chunk_size_(id_allocation_chunk_size),
415 use_sync_query_(false), 415 use_sync_query_(false),
416 use_image_texture_targets_(use_image_texture_targets), 416 buffer_to_texture_target_map_(buffer_to_texture_target_map),
417 tracing_id_(g_next_resource_provider_tracing_id.GetNext()) { 417 tracing_id_(g_next_resource_provider_tracing_id.GetNext()) {
418 DCHECK(id_allocation_chunk_size_); 418 DCHECK(id_allocation_chunk_size_);
419 DCHECK(thread_checker_.CalledOnValidThread()); 419 DCHECK(thread_checker_.CalledOnValidThread());
420 420
421 // In certain cases, ThreadTaskRunnerHandle isn't set (Android Webview). 421 // In certain cases, ThreadTaskRunnerHandle isn't set (Android Webview).
422 // Don't register a dump provider in these cases. 422 // Don't register a dump provider in these cases.
423 // TODO(ericrk): Get this working in Android Webview. crbug.com/517156 423 // TODO(ericrk): Get this working in Android Webview. crbug.com/517156
424 if (base::ThreadTaskRunnerHandle::IsSet()) { 424 if (base::ThreadTaskRunnerHandle::IsSet()) {
425 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( 425 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
426 this, "cc::ResourceProvider", base::ThreadTaskRunnerHandle::Get()); 426 this, "cc::ResourceProvider", base::ThreadTaskRunnerHandle::Get());
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 } 592 }
593 593
594 ResourceId ResourceProvider::CreateGLTexture(const gfx::Size& size, 594 ResourceId ResourceProvider::CreateGLTexture(const gfx::Size& size,
595 TextureHint hint, 595 TextureHint hint,
596 ResourceType type, 596 ResourceType type,
597 ResourceFormat format) { 597 ResourceFormat format) {
598 DCHECK_LE(size.width(), max_texture_size_); 598 DCHECK_LE(size.width(), max_texture_size_);
599 DCHECK_LE(size.height(), max_texture_size_); 599 DCHECK_LE(size.height(), max_texture_size_);
600 DCHECK(thread_checker_.CalledOnValidThread()); 600 DCHECK(thread_checker_.CalledOnValidThread());
601 601
602 // TODO(crbug.com/590317): We should not assume that all resources created by
603 // ResourceProvider are GPU_READ_CPU_READ_WRITE. We should determine this
604 // based on the current RasterBufferProvider's needs.
602 GLenum target = type == RESOURCE_TYPE_GPU_MEMORY_BUFFER 605 GLenum target = type == RESOURCE_TYPE_GPU_MEMORY_BUFFER
603 ? GetImageTextureTarget(format) 606 ? GetImageTextureTarget(
607 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, format)
604 : GL_TEXTURE_2D; 608 : GL_TEXTURE_2D;
605 609
606 ResourceId id = next_id_++; 610 ResourceId id = next_id_++;
607 Resource* resource = 611 Resource* resource =
608 InsertResource(id, Resource(0, size, Resource::INTERNAL, target, 612 InsertResource(id, Resource(0, size, Resource::INTERNAL, target,
609 GL_LINEAR, hint, type, format)); 613 GL_LINEAR, hint, type, format));
610 resource->allocated = false; 614 resource->allocated = false;
611 return id; 615 return id;
612 } 616 }
613 617
(...skipping 1279 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 resource->WaitSyncToken(gl); 1897 resource->WaitSyncToken(gl);
1894 } 1898 }
1895 } 1899 }
1896 1900
1897 GLint ResourceProvider::GetActiveTextureUnit(GLES2Interface* gl) { 1901 GLint ResourceProvider::GetActiveTextureUnit(GLES2Interface* gl) {
1898 GLint active_unit = 0; 1902 GLint active_unit = 0;
1899 gl->GetIntegerv(GL_ACTIVE_TEXTURE, &active_unit); 1903 gl->GetIntegerv(GL_ACTIVE_TEXTURE, &active_unit);
1900 return active_unit; 1904 return active_unit;
1901 } 1905 }
1902 1906
1903 GLenum ResourceProvider::GetImageTextureTarget(ResourceFormat format) { 1907 GLenum ResourceProvider::GetImageTextureTarget(gfx::BufferUsage usage,
1908 ResourceFormat format) {
1904 gfx::BufferFormat buffer_format = BufferFormat(format); 1909 gfx::BufferFormat buffer_format = BufferFormat(format);
1905 DCHECK_GT(use_image_texture_targets_.size(), 1910 auto found = buffer_to_texture_target_map_.find(
1906 static_cast<size_t>(buffer_format)); 1911 BufferToTextureTargetKey(usage, buffer_format));
1907 return use_image_texture_targets_[static_cast<size_t>(buffer_format)]; 1912 DCHECK(found != buffer_to_texture_target_map_.end());
1913 return found->second;
1908 } 1914 }
1909 1915
1910 void ResourceProvider::ValidateResource(ResourceId id) const { 1916 void ResourceProvider::ValidateResource(ResourceId id) const {
1911 DCHECK(thread_checker_.CalledOnValidThread()); 1917 DCHECK(thread_checker_.CalledOnValidThread());
1912 DCHECK(id); 1918 DCHECK(id);
1913 DCHECK(resources_.find(id) != resources_.end()); 1919 DCHECK(resources_.find(id) != resources_.end());
1914 } 1920 }
1915 1921
1916 GLES2Interface* ResourceProvider::ContextGL() const { 1922 GLES2Interface* ResourceProvider::ContextGL() const {
1917 ContextProvider* context_provider = compositor_context_provider_; 1923 ContextProvider* context_provider = compositor_context_provider_;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1991 1997
1992 const int kImportance = 2; 1998 const int kImportance = 2;
1993 pmd->CreateSharedGlobalAllocatorDump(guid); 1999 pmd->CreateSharedGlobalAllocatorDump(guid);
1994 pmd->AddOwnershipEdge(dump->guid(), guid, kImportance); 2000 pmd->AddOwnershipEdge(dump->guid(), guid, kImportance);
1995 } 2001 }
1996 2002
1997 return true; 2003 return true;
1998 } 2004 }
1999 2005
2000 } // namespace cc 2006 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/resource_provider.h ('k') | cc/resources/resource_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698