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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 16175005: GPU: Replace AsyncPixelTransferState with AsyncPixelTransferDelegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 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 | Annotate | Revision Log
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/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 virtual Logger* GetLogger() OVERRIDE; 568 virtual Logger* GetLogger() OVERRIDE;
569 virtual ErrorState* GetErrorState() OVERRIDE; 569 virtual ErrorState* GetErrorState() OVERRIDE;
570 570
571 virtual void SetShaderCacheCallback( 571 virtual void SetShaderCacheCallback(
572 const ShaderCacheCallback& callback) OVERRIDE; 572 const ShaderCacheCallback& callback) OVERRIDE;
573 virtual void SetWaitSyncPointCallback( 573 virtual void SetWaitSyncPointCallback(
574 const WaitSyncPointCallback& callback) OVERRIDE; 574 const WaitSyncPointCallback& callback) OVERRIDE;
575 575
576 virtual void SetStreamTextureManager(StreamTextureManager* manager) OVERRIDE; 576 virtual void SetStreamTextureManager(StreamTextureManager* manager) OVERRIDE;
577 577
578 virtual AsyncPixelTransferDelegate*
579 GetAsyncPixelTransferDelegate() OVERRIDE;
580 virtual AsyncPixelTransferManager* 578 virtual AsyncPixelTransferManager*
581 GetAsyncPixelTransferManager() OVERRIDE; 579 GetAsyncPixelTransferManager() OVERRIDE;
582 virtual void ResetAsyncPixelTransferManagerForTest() OVERRIDE; 580 virtual void ResetAsyncPixelTransferManagerForTest() OVERRIDE;
583 virtual void SetAsyncPixelTransferManagerForTest( 581 virtual void SetAsyncPixelTransferManagerForTest(
584 AsyncPixelTransferManager* manager) OVERRIDE; 582 AsyncPixelTransferManager* manager) OVERRIDE;
585 void ProcessFinishedAsyncTransfers(); 583 void ProcessFinishedAsyncTransfers();
586 584
587 virtual bool GetServiceTextureId(uint32 client_texture_id, 585 virtual bool GetServiceTextureId(uint32 client_texture_id,
588 uint32* service_texture_id) OVERRIDE; 586 uint32* service_texture_id) OVERRIDE;
589 587
(...skipping 2451 matching lines...) Expand 10 before | Expand all | Expand 10 after
3041 3039
3042 void GLES2DecoderImpl::SetWaitSyncPointCallback( 3040 void GLES2DecoderImpl::SetWaitSyncPointCallback(
3043 const WaitSyncPointCallback& callback) { 3041 const WaitSyncPointCallback& callback) {
3044 wait_sync_point_callback_ = callback; 3042 wait_sync_point_callback_ = callback;
3045 } 3043 }
3046 3044
3047 void GLES2DecoderImpl::SetStreamTextureManager(StreamTextureManager* manager) { 3045 void GLES2DecoderImpl::SetStreamTextureManager(StreamTextureManager* manager) {
3048 stream_texture_manager_ = manager; 3046 stream_texture_manager_ = manager;
3049 } 3047 }
3050 3048
3051 AsyncPixelTransferDelegate*
3052 GLES2DecoderImpl::GetAsyncPixelTransferDelegate() {
3053 return async_pixel_transfer_manager_->GetAsyncPixelTransferDelegate();
3054 }
3055
3056 AsyncPixelTransferManager* 3049 AsyncPixelTransferManager*
3057 GLES2DecoderImpl::GetAsyncPixelTransferManager() { 3050 GLES2DecoderImpl::GetAsyncPixelTransferManager() {
3058 return async_pixel_transfer_manager_.get(); 3051 return async_pixel_transfer_manager_.get();
3059 } 3052 }
3060 3053
3061 void GLES2DecoderImpl::ResetAsyncPixelTransferManagerForTest() { 3054 void GLES2DecoderImpl::ResetAsyncPixelTransferManagerForTest() {
3062 async_pixel_transfer_manager_.reset(); 3055 async_pixel_transfer_manager_.reset();
3063 } 3056 }
3064 3057
3065 void GLES2DecoderImpl::SetAsyncPixelTransferManagerForTest( 3058 void GLES2DecoderImpl::SetAsyncPixelTransferManagerForTest(
(...skipping 7108 matching lines...) Expand 10 before | Expand all | Expand 10 after
10174 // Setup the parameters. 10167 // Setup the parameters.
10175 AsyncTexImage2DParams tex_params = { 10168 AsyncTexImage2DParams tex_params = {
10176 target, level, static_cast<GLenum>(internal_format), 10169 target, level, static_cast<GLenum>(internal_format),
10177 width, height, border, format, type}; 10170 width, height, border, format, type};
10178 AsyncMemoryParams mem_params = { 10171 AsyncMemoryParams mem_params = {
10179 shared_memory, shm_size, shm_data_offset, shm_data_size}; 10172 shared_memory, shm_size, shm_data_offset, shm_data_size};
10180 10173
10181 // Set up the async state if needed, and make the texture 10174 // Set up the async state if needed, and make the texture
10182 // immutable so the async state stays valid. The level info 10175 // immutable so the async state stays valid. The level info
10183 // is set up lazily when the transfer completes. 10176 // is set up lazily when the transfer completes.
10184 AsyncPixelTransferState* state = 10177 AsyncPixelTransferDelegate* delegate =
10185 async_pixel_transfer_manager_->CreatePixelTransferState(texture_ref, 10178 async_pixel_transfer_manager_->CreatePixelTransferDelegate(texture_ref,
10186 tex_params); 10179 tex_params);
10187 texture->SetImmutable(true); 10180 texture->SetImmutable(true);
10188 10181
10189 GetAsyncPixelTransferDelegate()->AsyncTexImage2D( 10182 delegate->AsyncTexImage2D(
10190 state,
10191 tex_params, 10183 tex_params,
10192 mem_params, 10184 mem_params,
10193 base::Bind(&TextureManager::SetLevelInfoFromParams, 10185 base::Bind(&TextureManager::SetLevelInfoFromParams,
10194 // The callback is only invoked if the transfer delegate still 10186 // The callback is only invoked if the transfer delegate still
10195 // exists, which implies through manager->texture_ref->state 10187 // exists, which implies through manager->texture_ref->state
10196 // ownership that both of these pointers are valid. 10188 // ownership that both of these pointers are valid.
10197 base::Unretained(texture_manager()), 10189 base::Unretained(texture_manager()),
10198 base::Unretained(texture_ref), 10190 base::Unretained(texture_ref),
10199 tex_params)); 10191 tex_params));
10200 return error::kNoError; 10192 return error::kNoError;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
10259 base::SharedMemory* shared_memory = buffer.shared_memory; 10251 base::SharedMemory* shared_memory = buffer.shared_memory;
10260 uint32 shm_size = buffer.size; 10252 uint32 shm_size = buffer.size;
10261 uint32 shm_data_offset = c.data_shm_offset; 10253 uint32 shm_data_offset = c.data_shm_offset;
10262 uint32 shm_data_size = data_size; 10254 uint32 shm_data_size = data_size;
10263 10255
10264 // Setup the parameters. 10256 // Setup the parameters.
10265 AsyncTexSubImage2DParams tex_params = {target, level, xoffset, yoffset, 10257 AsyncTexSubImage2DParams tex_params = {target, level, xoffset, yoffset,
10266 width, height, format, type}; 10258 width, height, format, type};
10267 AsyncMemoryParams mem_params = {shared_memory, shm_size, 10259 AsyncMemoryParams mem_params = {shared_memory, shm_size,
10268 shm_data_offset, shm_data_size}; 10260 shm_data_offset, shm_data_size};
10269 AsyncPixelTransferState* state = 10261 AsyncPixelTransferDelegate* delegate =
10270 async_pixel_transfer_manager_->GetPixelTransferState(texture_ref); 10262 async_pixel_transfer_manager_->GetPixelTransferDelegate(texture_ref);
10271 if (!state) { 10263 if (!delegate) {
10272 // TODO(epenner): We may want to enforce exclusive use 10264 // TODO(epenner): We may want to enforce exclusive use
10273 // of async APIs in which case this should become an error, 10265 // of async APIs in which case this should become an error,
10274 // (the texture should have been async defined). 10266 // (the texture should have been async defined).
10275 AsyncTexImage2DParams define_params = {target, level, 10267 AsyncTexImage2DParams define_params = {target, level,
10276 0, 0, 0, 0, 0, 0}; 10268 0, 0, 0, 0, 0, 0};
10277 texture->GetLevelSize(target, level, &define_params.width, 10269 texture->GetLevelSize(target, level, &define_params.width,
10278 &define_params.height); 10270 &define_params.height);
10279 texture->GetLevelType(target, level, &define_params.type, 10271 texture->GetLevelType(target, level, &define_params.type,
10280 &define_params.internal_format); 10272 &define_params.internal_format);
10281 // Set up the async state if needed, and make the texture 10273 // Set up the async state if needed, and make the texture
10282 // immutable so the async state stays valid. 10274 // immutable so the async state stays valid.
10283 state = async_pixel_transfer_manager_->CreatePixelTransferState( 10275 delegate = async_pixel_transfer_manager_->CreatePixelTransferDelegate(
10284 texture_ref, define_params); 10276 texture_ref, define_params);
10285 texture->SetImmutable(true); 10277 texture->SetImmutable(true);
10286 } 10278 }
10287 10279
10288 GetAsyncPixelTransferDelegate()->AsyncTexSubImage2D( 10280 delegate->AsyncTexSubImage2D(tex_params, mem_params);
10289 state, tex_params, mem_params);
10290 return error::kNoError; 10281 return error::kNoError;
10291 } 10282 }
10292 10283
10293 error::Error GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM( 10284 error::Error GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM(
10294 uint32 immediate_data_size, const cmds::WaitAsyncTexImage2DCHROMIUM& c) { 10285 uint32 immediate_data_size, const cmds::WaitAsyncTexImage2DCHROMIUM& c) {
10295 TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM"); 10286 TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM");
10296 GLenum target = static_cast<GLenum>(c.target); 10287 GLenum target = static_cast<GLenum>(c.target);
10297 10288
10298 if (GL_TEXTURE_2D != target) { 10289 if (GL_TEXTURE_2D != target) {
10299 LOCAL_SET_GL_ERROR( 10290 LOCAL_SET_GL_ERROR(
10300 GL_INVALID_ENUM, "glWaitAsyncTexImage2DCHROMIUM", "target"); 10291 GL_INVALID_ENUM, "glWaitAsyncTexImage2DCHROMIUM", "target");
10301 return error::kNoError; 10292 return error::kNoError;
10302 } 10293 }
10303 TextureRef* texture_ref = GetTextureInfoForTarget(target); 10294 TextureRef* texture_ref = GetTextureInfoForTarget(target);
10304 if (!texture_ref) { 10295 if (!texture_ref) {
10305 LOCAL_SET_GL_ERROR( 10296 LOCAL_SET_GL_ERROR(
10306 GL_INVALID_OPERATION, 10297 GL_INVALID_OPERATION,
10307 "glWaitAsyncTexImage2DCHROMIUM", "unknown texture"); 10298 "glWaitAsyncTexImage2DCHROMIUM", "unknown texture");
10308 return error::kNoError; 10299 return error::kNoError;
10309 } 10300 }
10310 AsyncPixelTransferState* state = 10301 AsyncPixelTransferDelegate* delegate =
10311 async_pixel_transfer_manager_->GetPixelTransferState(texture_ref); 10302 async_pixel_transfer_manager_->GetPixelTransferDelegate(texture_ref);
10312 if (!state) { 10303 if (!delegate) {
10313 LOCAL_SET_GL_ERROR( 10304 LOCAL_SET_GL_ERROR(
10314 GL_INVALID_OPERATION, 10305 GL_INVALID_OPERATION,
10315 "glWaitAsyncTexImage2DCHROMIUM", "No async transfer started"); 10306 "glWaitAsyncTexImage2DCHROMIUM", "No async transfer started");
10316 return error::kNoError; 10307 return error::kNoError;
10317 } 10308 }
10318 GetAsyncPixelTransferDelegate()->WaitForTransferCompletion(state); 10309 delegate->WaitForTransferCompletion();
10319 ProcessFinishedAsyncTransfers(); 10310 ProcessFinishedAsyncTransfers();
10320 return error::kNoError; 10311 return error::kNoError;
10321 } 10312 }
10322 10313
10323 // Include the auto-generated part of this file. We split this because it means 10314 // Include the auto-generated part of this file. We split this because it means
10324 // we can easily edit the non-auto generated parts right here in this file 10315 // we can easily edit the non-auto generated parts right here in this file
10325 // instead of having to edit some template or the code generator. 10316 // instead of having to edit some template or the code generator.
10326 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 10317 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
10327 10318
10328 } // namespace gles2 10319 } // namespace gles2
10329 } // namespace gpu 10320 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698