Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 1 | // Copyright (c) 2017 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef GPU_COMMAND_BUFFER_SERVICE_RASTER_DECODER_H_ |
| 6 | #define GPU_COMMAND_BUFFER_SERVICE_RASTER_DECODER_H_ |
| 7 | |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 8 | #include "base/macros.h" |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 9 | #include "gpu/command_buffer/service/common_decoder.h" |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 10 | #include "gpu/command_buffer/service/decoder_context.h" |
Antoine Labour | 83a0aed1 | 2018-01-10 04:52:38 | [diff] [blame] | 11 | #include "gpu/gpu_gles2_export.h" |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 12 | |
| 13 | namespace gpu { |
Antoine Labour | 40b0ca4 | 2018-01-03 20:15:34 | [diff] [blame] | 14 | |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 15 | class DecoderClient; |
Jonathan Backer | 862b08d | 2018-05-10 15:37:04 | [diff] [blame] | 16 | class ServiceTransferCache; |
Antoine Labour | 40b0ca4 | 2018-01-03 20:15:34 | [diff] [blame] | 17 | |
Jonathan Backer | 7471b278 | 2018-01-25 18:14:19 | [diff] [blame] | 18 | namespace gles2 { |
Jonathan Backer | 10821a8 | 2018-04-04 23:56:03 | [diff] [blame] | 19 | class CopyTextureCHROMIUMResourceManager; |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 20 | class GLES2Util; |
Jonathan Backer | ac62dde | 2018-03-27 21:26:09 | [diff] [blame] | 21 | class ImageManager; |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 22 | class Logger; |
Jonathan Backer | 7471b278 | 2018-01-25 18:14:19 | [diff] [blame] | 23 | class Outputter; |
| 24 | } // namespace gles2 |
| 25 | |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 26 | namespace raster { |
Khushal | db2d4ad7 | 2018-07-03 22:36:27 | [diff] [blame^] | 27 | struct RasterDecoderContextState; |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 28 | |
| 29 | // This class implements the AsyncAPIInterface interface, decoding |
| 30 | // RasterInterface commands and calling GL. |
Antoine Labour | 83a0aed1 | 2018-01-10 04:52:38 | [diff] [blame] | 31 | class GPU_GLES2_EXPORT RasterDecoder : public DecoderContext, |
Jonathan Backer | 7471b278 | 2018-01-25 18:14:19 | [diff] [blame] | 32 | public CommonDecoder { |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 33 | public: |
Khushal | db2d4ad7 | 2018-07-03 22:36:27 | [diff] [blame^] | 34 | static RasterDecoder* Create( |
| 35 | DecoderClient* client, |
| 36 | CommandBufferServiceBase* command_buffer_service, |
| 37 | gles2::Outputter* outputter, |
| 38 | gles2::ContextGroup* group, |
| 39 | scoped_refptr<RasterDecoderContextState> raster_decoder_context_state); |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 40 | |
| 41 | ~RasterDecoder() override; |
| 42 | |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 43 | // DecoderContext implementation. |
| 44 | bool initialized() const override; |
| 45 | TextureBase* GetTextureBase(uint32_t client_id) override; |
Julien Isorce | fd6c15f | 2018-03-15 16:51:17 | [diff] [blame] | 46 | void SetLevelInfo(uint32_t client_id, |
| 47 | int level, |
| 48 | unsigned internal_format, |
| 49 | unsigned width, |
| 50 | unsigned height, |
| 51 | unsigned depth, |
| 52 | unsigned format, |
| 53 | unsigned type, |
| 54 | const gfx::Rect& cleared_rect) override; |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 55 | void BeginDecoding() override; |
| 56 | void EndDecoding() override; |
| 57 | base::StringPiece GetLogPrefix() override; |
| 58 | |
| 59 | virtual gles2::GLES2Util* GetGLES2Util() = 0; |
| 60 | virtual gles2::Logger* GetLogger() = 0; |
| 61 | virtual void SetIgnoreCachedStateForTest(bool ignore) = 0; |
| 62 | |
Jonathan Backer | ac62dde | 2018-03-27 21:26:09 | [diff] [blame] | 63 | // Gets the ImageManager for this context. |
| 64 | virtual gles2::ImageManager* GetImageManagerForTest() = 0; |
| 65 | |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 66 | void set_initialized() { initialized_ = true; } |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 67 | |
| 68 | // Set to true to call glGetError after every command. |
| 69 | void set_debug(bool debug) { debug_ = debug; } |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 70 | bool debug() const { return debug_; } |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 71 | |
| 72 | // Set to true to LOG every command. |
Jonathan Backer | 0cd1c432 | 2018-04-17 16:57:10 | [diff] [blame] | 73 | void SetLogCommands(bool log_commands) override; |
Jonathan Backer | e26739c | 2018-05-15 13:27:07 | [diff] [blame] | 74 | gles2::Outputter* outputter() const override; |
Jonathan Backer | a4568da1 | 2018-01-31 16:25:04 | [diff] [blame] | 75 | bool log_commands() const { return log_commands_; } |
Jonathan Backer | 1d807a4 | 2018-01-08 20:45:54 | [diff] [blame] | 76 | |
Jonathan Backer | 10821a8 | 2018-04-04 23:56:03 | [diff] [blame] | 77 | virtual void SetCopyTextureResourceManagerForTest( |
| 78 | gles2::CopyTextureCHROMIUMResourceManager* |
| 79 | copy_texture_resource_manager) = 0; |
| 80 | |
Jonathan Backer | 862b08d | 2018-05-10 15:37:04 | [diff] [blame] | 81 | virtual ServiceTransferCache* GetTransferCacheForTest() = 0; |
| 82 | |
Khushal | 15b6abb | 2018-06-28 00:16:25 | [diff] [blame] | 83 | virtual void SetUpForRasterCHROMIUMForTest() = 0; |
| 84 | |
Jonathan Backer | 7471b278 | 2018-01-25 18:14:19 | [diff] [blame] | 85 | protected: |
Jonathan Backer | e26739c | 2018-05-15 13:27:07 | [diff] [blame] | 86 | RasterDecoder(CommandBufferServiceBase* command_buffer_service, |
| 87 | gles2::Outputter* outputter); |
Jonathan Backer | 7471b278 | 2018-01-25 18:14:19 | [diff] [blame] | 88 | |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 89 | private: |
Jonathan Backer | e26739c | 2018-05-15 13:27:07 | [diff] [blame] | 90 | bool initialized_ = false; |
| 91 | bool debug_ = false; |
| 92 | bool log_commands_ = false; |
| 93 | gles2::Outputter* outputter_ = nullptr; |
Jonathan Backer | 7f90dfb66 | 2017-12-18 16:52:04 | [diff] [blame] | 94 | |
| 95 | DISALLOW_COPY_AND_ASSIGN(RasterDecoder); |
| 96 | }; |
| 97 | |
| 98 | } // namespace raster |
| 99 | } // namespace gpu |
| 100 | |
| 101 | #endif // GPU_COMMAND_BUFFER_SERVICE_RASTER_DECODER_H_ |