blob: a9ed1832c2daab85aba6f38b68e7fc694c527b44 [file]
// Copyright 2021 The IREE Authors
//
// Licensed under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
include "iree/schemas/executable_debug_info.fbs";
namespace iree.hal.webgpu;
// 'WGSL v1 Executable'.
file_identifier "WGS1";
file_extension "wgs1";
// Contents of one WGPUShaderModule, possibly with multiple entry points.
// Entry points have the name "dN" where N is the executable-wide entry point
// ordinal.
table ShaderModuleDef {
// WGSL source code.
wgsl_source:string;
// Optional `source-map-v3` format source map.
source_map:string;
}
// A struct for the kernel workgroup size along each dimension.
struct WorkgroupSize {
x:uint32;
y:uint32;
z:uint32;
}
// Describes the behavior of each binding.
enum BindingBits:uint64 (bit_flags) {
READ_ONLY = 0, // 1u << 0
INDIRECT = 1, // 1u << 1
}
// Information about an exported compute entry point.
table ExportDef {
// Ordinal of the shader module containing the entry point in the executable
// shader module list.
shader_module_ordinal:uint32;
// String name of the entry point function in the shader module.
entry_point:string;
// Static workgroup size for the export.
workgroup_size:WorkgroupSize;
// Total number of 32-bit push constants used by the export.
constant_count:uint32;
// Binding count and flags for each binding.
binding_flags:[BindingBits];
// Optional debug information related to the export.
debug_info:iree.hal.debug.ExportDef;
}
table ExecutableDef {
// Exported functions in canonical executable entry point order.
exports:[ExportDef];
// An ordered list of shader modules, each containing 1+ entry points.
shader_modules:[ShaderModuleDef];
// Embedded source files sorted ascending by path.
source_files:[iree.hal.debug.SourceFileDef];
}
root_type ExecutableDef;