| Index: gpu/command_buffer/service/async_pixel_transfer_manager_sync.cc
|
| diff --git a/gpu/command_buffer/service/async_pixel_transfer_manager_sync.cc b/gpu/command_buffer/service/async_pixel_transfer_manager_sync.cc
|
| index 4bc2ba20ea014f1bf918bf94eec1f8329e27d89d..b231f2f44d840094b43bb588bccda07b028e6f09 100644
|
| --- a/gpu/command_buffer/service/async_pixel_transfer_manager_sync.cc
|
| +++ b/gpu/command_buffer/service/async_pixel_transfer_manager_sync.cc
|
| @@ -21,6 +21,13 @@ class AsyncPixelTransferDelegateSync : public AsyncPixelTransferDelegate {
|
| const base::Closure& bind_callback) override;
|
| void AsyncTexSubImage2D(const AsyncTexSubImage2DParams& tex_params,
|
| const AsyncMemoryParams& mem_params) override;
|
| + void AsyncCompressedTexImage2D(
|
| + const AsyncCompressedTexImage2DParams& tex_params,
|
| + const AsyncMemoryParams& mem_params,
|
| + const base::Closure& bind_callback) override;
|
| + void AsyncCompressedTexSubImage2D(
|
| + const AsyncCompressedTexSubImage2DParams& tex_params,
|
| + const AsyncMemoryParams& mem_params) override;
|
| bool TransferIsInProgress() override;
|
| void WaitForTransferCompletion() override;
|
|
|
| @@ -83,6 +90,39 @@ void AsyncPixelTransferDelegateSync::AsyncTexSubImage2D(
|
| base::TimeTicks::HighResNow() - begin_time;
|
| }
|
|
|
| +void AsyncPixelTransferDelegateSync::AsyncCompressedTexImage2D(
|
| + const AsyncCompressedTexImage2DParams& tex_params,
|
| + const AsyncMemoryParams& mem_params,
|
| + const base::Closure& bind_callback) {
|
| + // Save the define params to return later during deferred
|
| + // binding of the transfer texture.
|
| + void* data = mem_params.GetDataAddress();
|
| + base::TimeTicks begin_time(base::TimeTicks::HighResNow());
|
| + glCompressedTexImage2D(tex_params.target, tex_params.level,
|
| + tex_params.internal_format, tex_params.width,
|
| + tex_params.height, tex_params.border,
|
| + tex_params.image_size, data);
|
| + shared_state_->texture_upload_count++;
|
| + shared_state_->total_texture_upload_time +=
|
| + base::TimeTicks::HighResNow() - begin_time;
|
| + // The texture is already fully bound so just call it now.
|
| + bind_callback.Run();
|
| +}
|
| +
|
| +void AsyncPixelTransferDelegateSync::AsyncCompressedTexSubImage2D(
|
| + const AsyncCompressedTexSubImage2DParams& tex_params,
|
| + const AsyncMemoryParams& mem_params) {
|
| + void* data = mem_params.GetDataAddress();
|
| + base::TimeTicks begin_time(base::TimeTicks::HighResNow());
|
| + glCompressedTexSubImage2D(tex_params.target, tex_params.level,
|
| + tex_params.xoffset, tex_params.yoffset,
|
| + tex_params.width, tex_params.height,
|
| + tex_params.format, tex_params.image_size, data);
|
| + shared_state_->texture_upload_count++;
|
| + shared_state_->total_texture_upload_time +=
|
| + base::TimeTicks::HighResNow() - begin_time;
|
| +}
|
| +
|
| bool AsyncPixelTransferDelegateSync::TransferIsInProgress() {
|
| // Already done.
|
| return false;
|
| @@ -136,4 +176,11 @@ AsyncPixelTransferManagerSync::CreatePixelTransferDelegateImpl(
|
| return new AsyncPixelTransferDelegateSync(&shared_state_);
|
| }
|
|
|
| +AsyncPixelTransferDelegate*
|
| +AsyncPixelTransferManagerSync::CreatePixelTransferDelegateImpl(
|
| + gles2::TextureRef* ref,
|
| + const AsyncCompressedTexImage2DParams& define_params) {
|
| + return new AsyncPixelTransferDelegateSync(&shared_state_);
|
| +}
|
| +
|
| } // namespace gpu
|
|
|