add c interface support for TBuiltInResource and glslang::DefaultTBuiltInResource

This commit is contained in:
Travis Fort 2020-03-05 16:05:07 -05:00
parent c6a4c6d3d8
commit bdcfc48466
2 changed files with 122 additions and 3 deletions

View file

@ -54,6 +54,8 @@ static_assert(int(GLSLANG_TEX_SAMP_TRANS_COUNT) == EShTexSampTransCount, "");
static_assert(int(GLSLANG_MSG_COUNT) == EShMsgCount, "");
static_assert(int(GLSLANG_REFLECTION_COUNT) == EShReflectionCount, "");
static_assert(int(GLSLANG_PROFILE_COUNT) == EProfileCount, "");
static_assert(sizeof(glslang_limits_t) == sizeof(TLimits), "");
static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), "");
typedef struct glslang_shader_s {
glslang::TShader* shader;
@ -165,6 +167,11 @@ int glslang_initialize_process() { return static_cast<int>(glslang::InitializePr
void glslang_finalize_process() { glslang::FinalizeProcess(); }
const glslang_resource_t* glslang_default_resource(void)
{
return reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource);
}
static EShLanguage c_shader_stage(glslang_stage_t stage)
{
switch (stage) {
@ -355,7 +362,7 @@ int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* i
DirStackFileIncluder Includer;
/* TODO: use custom callbacks if they are available in 'i->callbacks' */
return shader->shader->preprocess(
input->resource,
reinterpret_cast<const TBuiltInResource*>(input->resource),
input->default_version,
c_shader_profile(input->default_profile),
input->force_default_version_and_profile != 0,
@ -372,7 +379,7 @@ int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input)
shader->shader->setStrings(&preprocessedCStr, 1);
return shader->shader->parse(
input->resource,
reinterpret_cast<const TBuiltInResource*>(input->resource),
input->default_version,
input->forward_compatible != 0,
(EShMessages)c_shader_messages(input->messages)