// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef GPU_IPC_SERVICE_IMAGE_DECODE_ACCELERATOR_STUB_H_ #define GPU_IPC_SERVICE_IMAGE_DECODE_ACCELERATOR_STUB_H_ #include <stdint.h> #include <memory> #include "base/containers/queue.h" #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" #include "base/thread_annotations.h" #include "gpu/command_buffer/service/sequence_id.h" #include "gpu/ipc/common/gpu_channel.mojom.h" #include "gpu/ipc/service/gpu_ipc_service_export.h" #include "gpu/ipc/service/image_decode_accelerator_worker.h" #include "ui/gfx/geometry/size.h" namespace base { class SingleThreadTaskRunner; } // namespace base namespace gpu { class GpuChannel; class SyncPointClientState; // Processes incoming image decode requests from renderers: it schedules the // decode with the appropriate hardware decode accelerator and releases sync // tokens as decodes complete. These sync tokens must be generated on the client // side (in ImageDecodeAcceleratorProxy) using the following information: // // - The command buffer namespace is GPU_IO. // - The command buffer ID is created using the // CommandBufferIdFromChannelAndRoute() function using // GpuChannelReservedRoutes::kImageDecodeAccelerator as the route ID. // - The release count should be incremented for each decode request. // // An object of this class is meant to be used in // both the IO thread (for receiving decode requests) and the main thread (for // processing completed decodes). class GPU_IPC_SERVICE_EXPORT ImageDecodeAcceleratorStub : public base::RefCountedThreadSafe<ImageDecodeAcceleratorStub> { … }; } // namespace gpu #endif // GPU_IPC_SERVICE_IMAGE_DECODE_ACCELERATOR_STUB_H_