Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
e9ddba8f
Commit
e9ddba8f
authored
Dec 25, 2019
by
Sergey Kosarevsky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CInterface: added _BIT suffix to glslang_messages_t and…
CInterface: added _BIT suffix to glslang_messages_t and glslang_reflection_options_t, fixed const-correctness
parent
ca593a98
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
71 additions
and
71 deletions
+71
-71
glslang_c_interface.cpp
glslang/CInterface/glslang_c_interface.cpp
+35
-43
glslang_c_interface.h
glslang/Include/glslang_c_interface.h
+9
-5
glslang_c_shader_types.h
glslang/Include/glslang_c_shader_types.h
+27
-23
No files found.
glslang/CInterface/glslang_c_interface.cpp
View file @
e9ddba8f
/**
This code is based on the glslang_c_interface implementation by Viktor Latypov
**/
/**
BSD 2-Clause License
Copyright (c) 2019, Viktor Latypov
...
...
@@ -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.
**/
#include "glslang_c_interface.h"
#include "glslang
/Include/glslang
_c_interface.h"
#include "SPIRV/GlslangToSpv.h"
#include "SPIRV/Logger.h"
...
...
@@ -185,43 +189,31 @@ static EShLanguage c_shader_stage(glslang_stage_t stage)
return
EShLangCount
;
}
static
EShMessages
c_shader_messages
(
glslang_messages_t
messages
)
static
int
c_shader_messages
(
glslang_messages_t
messages
)
{
switch
(
messages
)
{
case
SH_MSG_RELAXED_ERRORS
:
return
EShMsgRelaxedErrors
;
case
SH_MSG_SUPPRESS_WARNINGS
:
return
EShMsgSuppressWarnings
;
case
SH_MSG_AST
:
return
EShMsgAST
;
case
SH_MSG_SPV_RULES
:
return
EShMsgSpvRules
;
case
SH_MSG_VULKAN_RULES
:
return
EShMsgVulkanRules
;
case
SH_MSG_ONLY_PREPROCESSOR
:
return
EShMsgOnlyPreprocessor
;
case
SH_MSG_READ_HLSL
:
return
EShMsgReadHlsl
;
case
SH_MSG_CASCADING_ERRORS
:
return
EShMsgCascadingErrors
;
case
SH_MSG_KEEP_UNCALLED
:
return
EShMsgKeepUncalled
;
case
SH_MSG_HLSL_OFFSETS
:
return
EShMsgHlslOffsets
;
case
SH_MSG_DEBUG_INFO
:
return
EShMsgDebugInfo
;
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
;
#define CONVERT_MSG(in, out) \
if ((messages & in) == in) \
res |= out;
int
res
=
0
;
CONVERT_MSG
(
SH_MSG_RELAXED_ERRORS_BIT
,
EShMsgRelaxedErrors
);
CONVERT_MSG
(
SH_MSG_SUPPRESS_WARNINGS_BIT
,
EShMsgSuppressWarnings
);
CONVERT_MSG
(
SH_MSG_AST_BIT
,
EShMsgAST
);
CONVERT_MSG
(
SH_MSG_SPV_RULES_BIT
,
EShMsgSpvRules
);
CONVERT_MSG
(
SH_MSG_VULKAN_RULES_BIT
,
EShMsgVulkanRules
);
CONVERT_MSG
(
SH_MSG_ONLY_PREPROCESSOR_BIT
,
EShMsgOnlyPreprocessor
);
CONVERT_MSG
(
SH_MSG_READ_HLSL_BIT
,
EShMsgReadHlsl
);
CONVERT_MSG
(
SH_MSG_CASCADING_ERRORS_BIT
,
EShMsgCascadingErrors
);
CONVERT_MSG
(
SH_MSG_KEEP_UNCALLED_BIT
,
EShMsgKeepUncalled
);
CONVERT_MSG
(
SH_MSG_HLSL_OFFSETS_BIT
,
EShMsgHlslOffsets
);
CONVERT_MSG
(
SH_MSG_DEBUG_INFO_BIT
,
EShMsgDebugInfo
);
CONVERT_MSG
(
SH_MSG_HLSL_ENABLE_16BIT_TYPES_BIT
,
EShMsgHlslEnable16BitTypes
);
CONVERT_MSG
(
SH_MSG_HLSL_LEGALIZATION_BIT
,
EShMsgHlslLegalization
);
CONVERT_MSG
(
SH_MSG_HLSL_DX9_COMPATIBLE_BIT
,
EShMsgHlslDX9Compatible
);
CONVERT_MSG
(
SH_MSG_BUILTIN_SYMBOL_TABLE_BIT
,
EShMsgBuiltinSymbolTable
);
return
res
;
#undef CONVERT_MSG
}
static
glslang
::
EShTargetLanguageVersion
...
...
@@ -314,7 +306,7 @@ static EProfile c_shader_profile(glslang_profile_t profile)
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
)
{
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
();
}
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
;
/* TODO: use custom callbacks if they are available in 'i->callbacks' */
return
shader
->
shader
->
preprocess
(
/* No user-defined resources limit */
&
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
),
&
shader
->
preprocessedGLSL
,
Includer
);
(
bool
)
i
->
force_default_version_and_profile
,
(
bool
)
i
->
forward_compatible
,
(
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
();
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
(
/* No user-defined resource limits for now */
&
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
();
}
...
...
glslang/Include/glslang_c_interface.h
View file @
e9ddba8f
/**
This code is based on the glslang_c_interface implementation by Viktor Latypov
**/
/**
BSD 2-Clause License
Copyright (c) 2019, Viktor Latypov
...
...
@@ -31,7 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#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_program_s
glslang_program_t
;
...
...
@@ -88,10 +92,10 @@ extern "C" {
int
glslang_initialize_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
);
int
glslang_shader_preprocess
(
glslang_shader_t
*
shader
,
glslang_input_t
*
input
);
int
glslang_shader_parse
(
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
,
const
glslang_input_t
*
input
);
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_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
();
void
glslang_program_delete
(
glslang_program_t
*
program
);
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
);
size_t
glslang_program_SPIRV_get_size
(
glslang_program_t
*
program
);
void
glslang_program_SPIRV_get
(
glslang_program_t
*
program
,
unsigned
int
*
);
...
...
glslang/Include/c_shader_types.h
→
glslang/Include/
glslang_
c_shader_types.h
View file @
e9ddba8f
/**
This code is based on the glslang_c_interface implementation by Viktor Latypov
**/
/**
BSD 2-Clause License
Copyright (c) 2019, Viktor Latypov
...
...
@@ -122,33 +126,33 @@ typedef enum {
/* EShMessages counterpart */
typedef
enum
{
SH_MSG_DEFAULT
=
0
,
SH_MSG_RELAXED_ERRORS
=
(
1
<<
0
),
SH_MSG_SUPPRESS_WARNINGS
=
(
1
<<
1
),
SH_MSG_AST
=
(
1
<<
2
),
SH_MSG_SPV_RULES
=
(
1
<<
3
),
SH_MSG_VULKAN_RULES
=
(
1
<<
4
),
SH_MSG_ONLY_PREPROCESSOR
=
(
1
<<
5
),
SH_MSG_READ_HLSL
=
(
1
<<
6
),
SH_MSG_CASCADING_ERRORS
=
(
1
<<
7
),
SH_MSG_KEEP_UNCALLED
=
(
1
<<
8
),
SH_MSG_HLSL_OFFSETS
=
(
1
<<
9
),
SH_MSG_DEBUG_INFO
=
(
1
<<
10
),
SH_MSG_HLSL_ENABLE_16BIT_TYPES
=
(
1
<<
11
),
SH_MSG_HLSL_LEGALIZATION
=
(
1
<<
12
),
SH_MSG_HLSL_DX9_COMPATIBLE
=
(
1
<<
13
),
SH_MSG_BUILTIN_SYMBOL_TABLE
=
(
1
<<
14
),
SH_MSG_DEFAULT
_BIT
=
0
,
SH_MSG_RELAXED_ERRORS
_BIT
=
(
1
<<
0
),
SH_MSG_SUPPRESS_WARNINGS
_BIT
=
(
1
<<
1
),
SH_MSG_AST
_BIT
=
(
1
<<
2
),
SH_MSG_SPV_RULES
_BIT
=
(
1
<<
3
),
SH_MSG_VULKAN_RULES
_BIT
=
(
1
<<
4
),
SH_MSG_ONLY_PREPROCESSOR
_BIT
=
(
1
<<
5
),
SH_MSG_READ_HLSL
_BIT
=
(
1
<<
6
),
SH_MSG_CASCADING_ERRORS
_BIT
=
(
1
<<
7
),
SH_MSG_KEEP_UNCALLED
_BIT
=
(
1
<<
8
),
SH_MSG_HLSL_OFFSETS
_BIT
=
(
1
<<
9
),
SH_MSG_DEBUG_INFO
_BIT
=
(
1
<<
10
),
SH_MSG_HLSL_ENABLE_16BIT_TYPES
_BIT
=
(
1
<<
11
),
SH_MSG_HLSL_LEGALIZATION
_BIT
=
(
1
<<
12
),
SH_MSG_HLSL_DX9_COMPATIBLE
_BIT
=
(
1
<<
13
),
SH_MSG_BUILTIN_SYMBOL_TABLE
_BIT
=
(
1
<<
14
),
}
glslang_messages_t
;
/* EShReflectionOptions counterpart */
typedef
enum
{
SH_REFLECTION_DEFAULT
=
0
,
SH_REFLECTION_STRICT_ARRAY_SUFFIX
=
(
1
<<
0
),
SH_REFLECTION_BASIC_ARRAY_SUFFIX
=
(
1
<<
1
),
SH_REFLECTION_INTERMEDIATE_IOO
=
(
1
<<
2
),
SH_REFLECTION_SEPARATE_BUFFERS
=
(
1
<<
3
),
SH_REFLECTION_ALL_BLOCK_VARIABLES
=
(
1
<<
4
),
SH_REFLECTION_UNWRAP_IO_BLOCKS
=
(
1
<<
5
),
SH_REFLECTION_DEFAULT
_BIT
=
0
,
SH_REFLECTION_STRICT_ARRAY_SUFFIX
_BIT
=
(
1
<<
0
),
SH_REFLECTION_BASIC_ARRAY_SUFFIX
_BIT
=
(
1
<<
1
),
SH_REFLECTION_INTERMEDIATE_IOO
_BIT
=
(
1
<<
2
),
SH_REFLECTION_SEPARATE_BUFFERS
_BIT
=
(
1
<<
3
),
SH_REFLECTION_ALL_BLOCK_VARIABLES
_BIT
=
(
1
<<
4
),
SH_REFLECTION_UNWRAP_IO_BLOCKS
_BIT
=
(
1
<<
5
),
}
glslang_reflection_options_t
;
/* EProfile counterpart (from Versions.h) */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment