CInterface: added _BIT suffix to glslang_messages_t and glslang_reflection_options_t, fixed const-correctness
This commit is contained in:
parent
ca593a98f9
commit
e9ddba8fd8
@ -1,3 +1,7 @@
|
|||||||
|
/**
|
||||||
|
This code is based on the glslang_c_interface implementation by Viktor Latypov
|
||||||
|
**/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
BSD 2-Clause License
|
BSD 2-Clause License
|
||||||
|
|
||||||
@ -26,7 +30,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#include "glslang_c_interface.h"
|
#include "glslang/Include/glslang_c_interface.h"
|
||||||
|
|
||||||
#include "SPIRV/GlslangToSpv.h"
|
#include "SPIRV/GlslangToSpv.h"
|
||||||
#include "SPIRV/Logger.h"
|
#include "SPIRV/Logger.h"
|
||||||
@ -185,43 +189,31 @@ static EShLanguage c_shader_stage(glslang_stage_t stage)
|
|||||||
return EShLangCount;
|
return EShLangCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
static EShMessages c_shader_messages(glslang_messages_t messages)
|
static int c_shader_messages(glslang_messages_t messages)
|
||||||
{
|
{
|
||||||
switch (messages) {
|
#define CONVERT_MSG(in, out) \
|
||||||
case SH_MSG_RELAXED_ERRORS:
|
if ((messages & in) == in) \
|
||||||
return EShMsgRelaxedErrors;
|
res |= out;
|
||||||
case SH_MSG_SUPPRESS_WARNINGS:
|
|
||||||
return EShMsgSuppressWarnings;
|
int res = 0;
|
||||||
case SH_MSG_AST:
|
|
||||||
return EShMsgAST;
|
CONVERT_MSG(SH_MSG_RELAXED_ERRORS_BIT, EShMsgRelaxedErrors);
|
||||||
case SH_MSG_SPV_RULES:
|
CONVERT_MSG(SH_MSG_SUPPRESS_WARNINGS_BIT, EShMsgSuppressWarnings);
|
||||||
return EShMsgSpvRules;
|
CONVERT_MSG(SH_MSG_AST_BIT, EShMsgAST);
|
||||||
case SH_MSG_VULKAN_RULES:
|
CONVERT_MSG(SH_MSG_SPV_RULES_BIT, EShMsgSpvRules);
|
||||||
return EShMsgVulkanRules;
|
CONVERT_MSG(SH_MSG_VULKAN_RULES_BIT, EShMsgVulkanRules);
|
||||||
case SH_MSG_ONLY_PREPROCESSOR:
|
CONVERT_MSG(SH_MSG_ONLY_PREPROCESSOR_BIT, EShMsgOnlyPreprocessor);
|
||||||
return EShMsgOnlyPreprocessor;
|
CONVERT_MSG(SH_MSG_READ_HLSL_BIT, EShMsgReadHlsl);
|
||||||
case SH_MSG_READ_HLSL:
|
CONVERT_MSG(SH_MSG_CASCADING_ERRORS_BIT, EShMsgCascadingErrors);
|
||||||
return EShMsgReadHlsl;
|
CONVERT_MSG(SH_MSG_KEEP_UNCALLED_BIT, EShMsgKeepUncalled);
|
||||||
case SH_MSG_CASCADING_ERRORS:
|
CONVERT_MSG(SH_MSG_HLSL_OFFSETS_BIT, EShMsgHlslOffsets);
|
||||||
return EShMsgCascadingErrors;
|
CONVERT_MSG(SH_MSG_DEBUG_INFO_BIT, EShMsgDebugInfo);
|
||||||
case SH_MSG_KEEP_UNCALLED:
|
CONVERT_MSG(SH_MSG_HLSL_ENABLE_16BIT_TYPES_BIT, EShMsgHlslEnable16BitTypes);
|
||||||
return EShMsgKeepUncalled;
|
CONVERT_MSG(SH_MSG_HLSL_LEGALIZATION_BIT, EShMsgHlslLegalization);
|
||||||
case SH_MSG_HLSL_OFFSETS:
|
CONVERT_MSG(SH_MSG_HLSL_DX9_COMPATIBLE_BIT, EShMsgHlslDX9Compatible);
|
||||||
return EShMsgHlslOffsets;
|
CONVERT_MSG(SH_MSG_BUILTIN_SYMBOL_TABLE_BIT, EShMsgBuiltinSymbolTable);
|
||||||
case SH_MSG_DEBUG_INFO:
|
return res;
|
||||||
return EShMsgDebugInfo;
|
#undef CONVERT_MSG
|
||||||
case SH_MSG_HLSL_ENABLE_16BIT_TYPES:
|
|
||||||
return EShMsgHlslEnable16BitTypes;
|
|
||||||
case SH_MSG_HLSL_LEGALIZATION:
|
|
||||||
return EShMsgHlslLegalization;
|
|
||||||
case SH_MSG_HLSL_DX9_COMPATIBLE:
|
|
||||||
return EShMsgHlslDX9Compatible;
|
|
||||||
case SH_MSG_BUILTIN_SYMBOL_TABLE:
|
|
||||||
return EShMsgBuiltinSymbolTable;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return EShMsgDefault;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static glslang::EShTargetLanguageVersion
|
static glslang::EShTargetLanguageVersion
|
||||||
@ -314,7 +306,7 @@ static EProfile c_shader_profile(glslang_profile_t profile)
|
|||||||
return EProfile();
|
return EProfile();
|
||||||
}
|
}
|
||||||
|
|
||||||
glslang_shader_t* glslang_shader_create(glslang_input_t* input)
|
glslang_shader_t* glslang_shader_create(const glslang_input_t* input)
|
||||||
{
|
{
|
||||||
if (!input || !input->code) {
|
if (!input || !input->code) {
|
||||||
printf("Error creating shader: null input(%p)/input->code\n", input);
|
printf("Error creating shader: null input(%p)/input->code\n", input);
|
||||||
@ -340,18 +332,18 @@ glslang_shader_t* glslang_shader_create(glslang_input_t* input)
|
|||||||
|
|
||||||
const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); }
|
const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); }
|
||||||
|
|
||||||
int glslang_shader_preprocess(glslang_shader_t* shader, glslang_input_t* i)
|
int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* i)
|
||||||
{
|
{
|
||||||
DirStackFileIncluder Includer;
|
DirStackFileIncluder Includer;
|
||||||
/* TODO: use custom callbacks if they are available in 'i->callbacks' */
|
/* TODO: use custom callbacks if they are available in 'i->callbacks' */
|
||||||
return shader->shader->preprocess(
|
return shader->shader->preprocess(
|
||||||
/* No user-defined resources limit */
|
/* No user-defined resources limit */
|
||||||
&glslang::DefaultTBuiltInResource, i->default_version, c_shader_profile(i->default_profile),
|
&glslang::DefaultTBuiltInResource, i->default_version, c_shader_profile(i->default_profile),
|
||||||
(bool)i->force_default_version_and_profile, (bool)i->forward_compatible, c_shader_messages(i->messages),
|
(bool)i->force_default_version_and_profile, (bool)i->forward_compatible,
|
||||||
&shader->preprocessedGLSL, Includer);
|
(EShMessages)c_shader_messages(i->messages), &shader->preprocessedGLSL, Includer);
|
||||||
}
|
}
|
||||||
|
|
||||||
int glslang_shader_parse(glslang_shader_t* shader, glslang_input_t* input)
|
int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input)
|
||||||
{
|
{
|
||||||
const char* preprocessedCStr = shader->preprocessedGLSL.c_str();
|
const char* preprocessedCStr = shader->preprocessedGLSL.c_str();
|
||||||
shader->shader->setStrings(&preprocessedCStr, 1);
|
shader->shader->setStrings(&preprocessedCStr, 1);
|
||||||
@ -359,7 +351,7 @@ int glslang_shader_parse(glslang_shader_t* shader, glslang_input_t* input)
|
|||||||
return shader->shader->parse(
|
return shader->shader->parse(
|
||||||
/* No user-defined resource limits for now */
|
/* No user-defined resource limits for now */
|
||||||
&glslang::DefaultTBuiltInResource, input->default_version, (bool)input->forward_compatible,
|
&glslang::DefaultTBuiltInResource, input->default_version, (bool)input->forward_compatible,
|
||||||
c_shader_messages(input->messages));
|
(EShMessages)c_shader_messages(input->messages));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); }
|
const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); }
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
/**
|
||||||
|
This code is based on the glslang_c_interface implementation by Viktor Latypov
|
||||||
|
**/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
BSD 2-Clause License
|
BSD 2-Clause License
|
||||||
|
|
||||||
@ -31,7 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "c_shader_types.h"
|
#include "glslang_c_shader_types.h"
|
||||||
|
|
||||||
typedef struct glslang_shader_s glslang_shader_t;
|
typedef struct glslang_shader_s glslang_shader_t;
|
||||||
typedef struct glslang_program_s glslang_program_t;
|
typedef struct glslang_program_s glslang_program_t;
|
||||||
@ -88,10 +92,10 @@ extern "C" {
|
|||||||
int glslang_initialize_process();
|
int glslang_initialize_process();
|
||||||
void glslang_finalize_process();
|
void glslang_finalize_process();
|
||||||
|
|
||||||
glslang_shader_t* glslang_shader_create(glslang_input_t* input);
|
glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
|
||||||
void glslang_shader_delete(glslang_shader_t* shader);
|
void glslang_shader_delete(glslang_shader_t* shader);
|
||||||
int glslang_shader_preprocess(glslang_shader_t* shader, glslang_input_t* input);
|
int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
|
||||||
int glslang_shader_parse(glslang_shader_t* shader, glslang_input_t* input);
|
int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input);
|
||||||
const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
|
const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
|
||||||
const char* glslang_shader_get_info_log(glslang_shader_t* shader);
|
const char* glslang_shader_get_info_log(glslang_shader_t* shader);
|
||||||
const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
|
const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
|
||||||
@ -99,7 +103,7 @@ const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
|
|||||||
glslang_program_t* glslang_program_create();
|
glslang_program_t* glslang_program_create();
|
||||||
void glslang_program_delete(glslang_program_t* program);
|
void glslang_program_delete(glslang_program_t* program);
|
||||||
void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
|
void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
|
||||||
int glslang_program_link(glslang_program_t* program, int messages);
|
int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t
|
||||||
void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
|
void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
|
||||||
size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
|
size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
|
||||||
void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
|
void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
|
This code is based on the glslang_c_interface implementation by Viktor Latypov
|
||||||
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
BSD 2-Clause License
|
BSD 2-Clause License
|
||||||
|
|
||||||
Copyright (c) 2019, Viktor Latypov
|
Copyright (c) 2019, Viktor Latypov
|
||||||
@ -122,33 +126,33 @@ typedef enum {
|
|||||||
|
|
||||||
/* EShMessages counterpart */
|
/* EShMessages counterpart */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SH_MSG_DEFAULT = 0,
|
SH_MSG_DEFAULT_BIT = 0,
|
||||||
SH_MSG_RELAXED_ERRORS = (1 << 0),
|
SH_MSG_RELAXED_ERRORS_BIT = (1 << 0),
|
||||||
SH_MSG_SUPPRESS_WARNINGS = (1 << 1),
|
SH_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1),
|
||||||
SH_MSG_AST = (1 << 2),
|
SH_MSG_AST_BIT = (1 << 2),
|
||||||
SH_MSG_SPV_RULES = (1 << 3),
|
SH_MSG_SPV_RULES_BIT = (1 << 3),
|
||||||
SH_MSG_VULKAN_RULES = (1 << 4),
|
SH_MSG_VULKAN_RULES_BIT = (1 << 4),
|
||||||
SH_MSG_ONLY_PREPROCESSOR = (1 << 5),
|
SH_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5),
|
||||||
SH_MSG_READ_HLSL = (1 << 6),
|
SH_MSG_READ_HLSL_BIT = (1 << 6),
|
||||||
SH_MSG_CASCADING_ERRORS = (1 << 7),
|
SH_MSG_CASCADING_ERRORS_BIT = (1 << 7),
|
||||||
SH_MSG_KEEP_UNCALLED = (1 << 8),
|
SH_MSG_KEEP_UNCALLED_BIT = (1 << 8),
|
||||||
SH_MSG_HLSL_OFFSETS = (1 << 9),
|
SH_MSG_HLSL_OFFSETS_BIT = (1 << 9),
|
||||||
SH_MSG_DEBUG_INFO = (1 << 10),
|
SH_MSG_DEBUG_INFO_BIT = (1 << 10),
|
||||||
SH_MSG_HLSL_ENABLE_16BIT_TYPES = (1 << 11),
|
SH_MSG_HLSL_ENABLE_16BIT_TYPES_BIT = (1 << 11),
|
||||||
SH_MSG_HLSL_LEGALIZATION = (1 << 12),
|
SH_MSG_HLSL_LEGALIZATION_BIT = (1 << 12),
|
||||||
SH_MSG_HLSL_DX9_COMPATIBLE = (1 << 13),
|
SH_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13),
|
||||||
SH_MSG_BUILTIN_SYMBOL_TABLE = (1 << 14),
|
SH_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14),
|
||||||
} glslang_messages_t;
|
} glslang_messages_t;
|
||||||
|
|
||||||
/* EShReflectionOptions counterpart */
|
/* EShReflectionOptions counterpart */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SH_REFLECTION_DEFAULT = 0,
|
SH_REFLECTION_DEFAULT_BIT = 0,
|
||||||
SH_REFLECTION_STRICT_ARRAY_SUFFIX = (1 << 0),
|
SH_REFLECTION_STRICT_ARRAY_SUFFIX_BIT = (1 << 0),
|
||||||
SH_REFLECTION_BASIC_ARRAY_SUFFIX = (1 << 1),
|
SH_REFLECTION_BASIC_ARRAY_SUFFIX_BIT = (1 << 1),
|
||||||
SH_REFLECTION_INTERMEDIATE_IOO = (1 << 2),
|
SH_REFLECTION_INTERMEDIATE_IOO_BIT = (1 << 2),
|
||||||
SH_REFLECTION_SEPARATE_BUFFERS = (1 << 3),
|
SH_REFLECTION_SEPARATE_BUFFERS_BIT = (1 << 3),
|
||||||
SH_REFLECTION_ALL_BLOCK_VARIABLES = (1 << 4),
|
SH_REFLECTION_ALL_BLOCK_VARIABLES_BIT = (1 << 4),
|
||||||
SH_REFLECTION_UNWRAP_IO_BLOCKS = (1 << 5),
|
SH_REFLECTION_UNWRAP_IO_BLOCKS_BIT = (1 << 5),
|
||||||
} glslang_reflection_options_t;
|
} glslang_reflection_options_t;
|
||||||
|
|
||||||
/* EProfile counterpart (from Versions.h) */
|
/* EProfile counterpart (from Versions.h) */
|
Loading…
x
Reference in New Issue
Block a user