mesa: add _mesa_lookup_shader_include() helper

This will be used both by the glsl compiler and the GL API.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Witold Baryluk <witold.baryluk@gmail.com>
This commit is contained in:
Timothy Arceri 2019-08-23 14:36:53 +10:00
parent 643a533fc2
commit 8acab84f93
2 changed files with 37 additions and 0 deletions

View File

@ -3275,6 +3275,40 @@ validate_and_tokenise_sh_incl(struct gl_context *ctx,
return true;
}
const char *
_mesa_lookup_shader_include(struct gl_context *ctx, char *path)
{
void *mem_ctx = ralloc_context(NULL);
struct sh_incl_path_entry *path_list;
if (!validate_and_tokenise_sh_incl(ctx, mem_ctx, &path_list, path)) {
ralloc_free(mem_ctx);
return NULL;
}
struct sh_incl_path_ht_entry *sh_incl_ht_entry = NULL;
struct hash_table *path_ht =
ctx->Shared->ShaderIncludes->shader_include_tree;
struct sh_incl_path_entry *entry;
foreach(entry, path_list) {
struct hash_entry *ht_entry =
_mesa_hash_table_search(path_ht, entry->path);
if (!ht_entry) {
return NULL;
} else {
sh_incl_ht_entry = (struct sh_incl_path_ht_entry *) ht_entry->data;
}
path_ht = sh_incl_ht_entry->path;
}
ralloc_free(mem_ctx);
return sh_incl_ht_entry ? sh_incl_ht_entry->shader_source : NULL;
}
GLvoid GLAPIENTRY
_mesa_NamedStringARB(GLenum type, GLint namelen, const GLchar *name,
GLint stringlen, const GLchar *string)

View File

@ -415,6 +415,9 @@ _mesa_init_shader_includes(struct gl_shared_state *shared);
void
_mesa_destroy_shader_includes(struct gl_shared_state *shared);
const char *
_mesa_lookup_shader_include(struct gl_context *ctx, char *path);
#ifdef __cplusplus
}
#endif