mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
zink: add extension loading framework for spirv builder
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5969>
This commit is contained in:
parent
a91011c9ec
commit
f3509c0766
2 changed files with 16 additions and 0 deletions
|
|
@ -96,6 +96,16 @@ spirv_builder_emit_cap(struct spirv_builder *b, SpvCapability cap)
|
|||
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)
|
||||
|
|
@ -1106,6 +1116,7 @@ spirv_builder_get_num_words(struct spirv_builder *b)
|
|||
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 +
|
||||
|
|
@ -1131,6 +1142,7 @@ spirv_builder_get_words(struct spirv_builder *b, uint32_t *words,
|
|||
|
||||
const struct spirv_buffer *buffers[] = {
|
||||
&b->capabilities,
|
||||
&b->extensions,
|
||||
&b->imports,
|
||||
&b->memory_model,
|
||||
&b->entry_points,
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ 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;
|
||||
|
|
@ -66,6 +67,9 @@ spirv_builder_new_id(struct spirv_builder *b)
|
|||
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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue