| // Copyright 2017 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This file contains the command parser class. |
| |
| #ifndef GPU_COMMAND_BUFFER_SERVICE_ASYNC_API_INTERFACE_H_ |
| #define GPU_COMMAND_BUFFER_SERVICE_ASYNC_API_INTERFACE_H_ |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include <string_view> |
| |
| #include "gpu/command_buffer/common/constants.h" |
| #include "gpu/command_buffer/service/gpu_command_buffer_service_export.h" |
| |
| namespace gpu { |
| |
| // This class defines the interface for an asynchronous API handler, that |
| // is responsible for de-multiplexing commands and their arguments. |
| class GPU_COMMAND_BUFFER_SERVICE_EXPORT AsyncAPIInterface { |
| public: |
| AsyncAPIInterface() = default; |
| virtual ~AsyncAPIInterface() = default; |
| |
| virtual void BeginDecoding() = 0; |
| virtual void EndDecoding() = 0; |
| |
| // Executes multiple commands. |
| // Parameters: |
| // num_commands: maximum number of commands to execute from buffer. |
| // buffer: pointer to first command entry to process. |
| // num_entries: number of sequential command buffer entries in buffer. |
| // entries_processed: if not 0, is set to the number of entries processed. |
| virtual error::Error DoCommands(unsigned int num_commands, |
| const volatile void* buffer, |
| int num_entries, |
| int* entries_processed) = 0; |
| |
| virtual std::string_view GetLogPrefix() = 0; |
| }; |
| |
| } // namespace gpu |
| |
| #endif // GPU_COMMAND_BUFFER_SERVICE_ASYNC_API_INTERFACE_H_ |