// 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_
