// 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 wgDissociateMailbox (GLuint texture_id, GLuint texture_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);
