spirv_buffer_emit_word(&b->capabilities, cap);
}
+void
+spirv_builder_emit_extension(struct spirv_builder *b, const char *name)
+{
+ size_t pos = b->extensions.num_words;
+ spirv_buffer_prepare(&b->extensions, b->mem_ctx, 1);
+ spirv_buffer_emit_word(&b->extensions, SpvOpExtension);
+ int len = spirv_buffer_emit_string(&b->extensions, b->mem_ctx, name);
+ b->extensions.words[pos] |= (1 + len) << 16;
+}
+
void
spirv_builder_emit_source(struct spirv_builder *b, SpvSourceLanguage lang,
uint32_t version)
const size_t header_size = 5;
return header_size +
b->capabilities.num_words +
+ b->extensions.num_words +
b->imports.num_words +
b->memory_model.num_words +
b->entry_points.num_words +
const struct spirv_buffer *buffers[] = {
&b->capabilities,
+ &b->extensions,
&b->imports,
&b->memory_model,
&b->entry_points,
void *mem_ctx;
struct spirv_buffer capabilities;
+ struct spirv_buffer extensions;
struct spirv_buffer imports;
struct spirv_buffer memory_model;
struct spirv_buffer entry_points;
void
spirv_builder_emit_cap(struct spirv_builder *b, SpvCapability cap);
+void
+spirv_builder_emit_extension(struct spirv_builder *b, const char *ext);
+
void
spirv_builder_emit_source(struct spirv_builder *b, SpvSourceLanguage lang,
uint32_t version);