};
struct spirv_builder {
+ 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);
spirv_builder_emit_array_stride(struct spirv_builder *b, SpvId target,
uint32_t stride);
+void
+spirv_builder_emit_offset(struct spirv_builder *b, SpvId target,
+ uint32_t offset);
+
+void
+spirv_builder_emit_xfb_buffer(struct spirv_builder *b, SpvId target,
+ uint32_t buffer);
+
+void
+spirv_builder_emit_xfb_stride(struct spirv_builder *b, SpvId target,
+ uint32_t stride);
+
void
spirv_builder_emit_member_offset(struct spirv_builder *b, SpvId target,
uint32_t member, uint32_t offset);
SpvId vector_1, SpvId vector_2,
const uint32_t components[],
size_t num_components);
-
+SpvId
+spirv_builder_emit_vector_extract(struct spirv_builder *b, SpvId result_type,
+ SpvId vector_1,
+ uint32_t component);
+SpvId
+spirv_builder_emit_vector_insert(struct spirv_builder *b, SpvId result_type,
+ SpvId vector_1,
+ SpvId component,
+ uint32_t index);
void
spirv_builder_emit_branch(struct spirv_builder *b, SpvId label);