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

// This file is read by build_webgpu_cmd_buffer.py to generate commands.

// WebGPU commands. Note the first 2 characters (usually 'wg') are
// completely ignored.
GL_APICALL void GL_APIENTRY wgDawnCommands (uint32_t trace_id_high, uint32_t trace_id_low, const char* commands, size_t size);
GL_APICALL void GL_APIENTRY wgAssociateMailbox (GLuint device_id, GLuint device_generation, GLuint id, GLuint generation, uint64_t usage, uint64_t internal_usage, MailboxFlags flags, GLuint view_format_count, GLuint count, const GLuint* mailbox_and_view_formats);
GL_APICALL void GL_APIENTRY wgAssociateMailboxForBuffer (GLuint device_id, GLuint device_generation, GLuint id, GLuint generation, uint64_t usage, const GLuint* mailbox);
GL_APICALL void GL_APIENTRY wgDissociateMailbox (GLuint texture_id, GLuint texture_generation);
GL_APICALL void GL_APIENTRY wgDissociateMailboxForBuffer (GLuint buffer_id, GLuint buffer_generation);
GL_APICALL void GL_APIENTRY wgDissociateMailboxForPresent (GLuint device_id, GLuint device_generation, GLuint texture_id, GLuint texture_generation);

// The WebGPUExecutionContextTokens are represented by two 64 bit uints, but the
// generator only supports 32 bit members so we break the token into 4 parts.
GL_APICALL void GL_APIENTRY wgSetWebGPUExecutionContextToken (uint32_t type, uint32_t high_high, uint32_t high_low, uint32_t low_high, uint32_t low_low);
