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
5d4d2119
Unverified
Commit
5d4d2119
authored
Jul 02, 2020
by
John Kessenich
Committed by
GitHub
Jul 02, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2303 from ben-clayton/limit-public-2
glslang: Only export public interface for SOs
parents
9e4429f3
d64e8599
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
128 additions
and
98 deletions
+128
-98
CMakeLists.txt
CMakeLists.txt
+15
-0
StandAlone.cpp
StandAlone/StandAlone.cpp
+1
-1
CMakeLists.txt
glslang/CMakeLists.txt
+2
-0
ShaderLang.h
glslang/Public/ShaderLang.h
+110
-97
No files found.
CMakeLists.txt
View file @
5d4d2119
...
@@ -205,6 +205,21 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
...
@@ -205,6 +205,21 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
add_subdirectory
(
External
)
add_subdirectory
(
External
)
endif
()
endif
()
# glslang_only_export_explicit_symbols() makes the symbol visibility hidden by
# default for <target> when building shared libraries, and sets the
# GLSLANG_IS_SHARED_LIBRARY define, and GLSLANG_EXPORTING to 1 when specifically
# building <target>.
function
(
glslang_only_export_explicit_symbols target
)
target_compile_definitions
(
${
target
}
PUBLIC
"GLSLANG_IS_SHARED_LIBRARY=1"
)
if
(
BUILD_SHARED_LIBS
)
if
(
WIN32
)
target_compile_definitions
(
${
target
}
PRIVATE
"GLSLANG_EXPORTING=1"
)
else
()
target_compile_options
(
${
target
}
PRIVATE
"-fvisibility=hidden"
)
endif
()
endif
()
endfunction
()
if
(
NOT TARGET SPIRV-Tools-opt
)
if
(
NOT TARGET SPIRV-Tools-opt
)
set
(
ENABLE_OPT OFF
)
set
(
ENABLE_OPT OFF
)
endif
()
endif
()
...
...
StandAlone/StandAlone.cpp
View file @
5d4d2119
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
#include "../glslang/OSDependent/osinclude.h"
#include "../glslang/OSDependent/osinclude.h"
extern
"C"
{
extern
"C"
{
SH_IMPORT
_EXPORT
void
ShOutputHtml
();
GLSLANG
_EXPORT
void
ShOutputHtml
();
}
}
// Command-line options
// Command-line options
...
...
glslang/CMakeLists.txt
View file @
5d4d2119
...
@@ -132,6 +132,8 @@ target_include_directories(glslang PUBLIC
...
@@ -132,6 +132,8 @@ target_include_directories(glslang PUBLIC
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
/..>
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
/..>
$<INSTALL_INTERFACE:
${
CMAKE_INSTALL_INCLUDEDIR
}
>
)
$<INSTALL_INTERFACE:
${
CMAKE_INSTALL_INCLUDEDIR
}
>
)
glslang_only_export_explicit_symbols
(
glslang
)
if
(
WIN32 AND BUILD_SHARED_LIBS
)
if
(
WIN32 AND BUILD_SHARED_LIBS
)
set_target_properties
(
glslang PROPERTIES PREFIX
""
)
set_target_properties
(
glslang PROPERTIES PREFIX
""
)
endif
()
endif
()
...
...
glslang/Public/ShaderLang.h
View file @
5d4d2119
...
@@ -44,18 +44,27 @@
...
@@ -44,18 +44,27 @@
#include <vector>
#include <vector>
#ifdef _WIN32
#ifdef _WIN32
#define C_DECL __cdecl
#define C_DECL __cdecl
//#ifdef SH_EXPORTING
// #define SH_IMPORT_EXPORT __declspec(dllexport)
//#else
// #define SH_IMPORT_EXPORT __declspec(dllimport)
//#endif
#define SH_IMPORT_EXPORT
#else
#else
#define SH_IMPORT_EXPORT
#define C_DECL
#define C_DECL
#endif
#endif
#ifdef GLSLANG_IS_SHARED_LIBRARY
#ifdef _WIN32
#ifdef GLSLANG_EXPORTING
#define GLSLANG_EXPORT __declspec(dllexport)
#else
#define GLSLANG_EXPORT __declspec(dllimport)
#endif
#elif __GNUC__ >= 4
#define GLSLANG_EXPORT __attribute__((visibility("default")))
#else
#define GLSLANG_EXPORT
#endif
#else // GLSLANG_IS_SHARED_LIBRARY
#define GLSLANG_EXPORT
#endif // GLSLANG_IS_SHARED_LIBRARY
//
//
// This is the platform independent interface between an OGL driver
// This is the platform independent interface between an OGL driver
// and the shading language compiler/linker.
// and the shading language compiler/linker.
...
@@ -75,12 +84,12 @@
...
@@ -75,12 +84,12 @@
//
//
// (Call once per process, not once per thread.)
// (Call once per process, not once per thread.)
//
//
SH_IMPORT
_EXPORT
int
ShInitialize
();
GLSLANG
_EXPORT
int
ShInitialize
();
//
//
// Call this at process shutdown to clean up memory.
// Call this at process shutdown to clean up memory.
//
//
SH_IMPORT
_EXPORT
int
ShFinalize
();
GLSLANG
_EXPORT
int
ShFinalize
();
//
//
// Types of languages the compiler can consume.
// Types of languages the compiler can consume.
...
@@ -205,7 +214,7 @@ struct TEnvironment {
...
@@ -205,7 +214,7 @@ struct TEnvironment {
TTarget
target
;
// what to generate
TTarget
target
;
// what to generate
};
};
const
char
*
StageName
(
EShLanguage
);
GLSLANG_EXPORT
const
char
*
StageName
(
EShLanguage
);
}
// end namespace glslang
}
// end namespace glslang
...
@@ -306,10 +315,10 @@ typedef void* ShHandle;
...
@@ -306,10 +315,10 @@ typedef void* ShHandle;
// Driver calls these to create and destroy compiler/linker
// Driver calls these to create and destroy compiler/linker
// objects.
// objects.
//
//
SH_IMPORT
_EXPORT
ShHandle
ShConstructCompiler
(
const
EShLanguage
,
int
debugOptions
);
// one per shader
GLSLANG
_EXPORT
ShHandle
ShConstructCompiler
(
const
EShLanguage
,
int
debugOptions
);
// one per shader
SH_IMPORT
_EXPORT
ShHandle
ShConstructLinker
(
const
EShExecutable
,
int
debugOptions
);
// one per shader pair
GLSLANG
_EXPORT
ShHandle
ShConstructLinker
(
const
EShExecutable
,
int
debugOptions
);
// one per shader pair
SH_IMPORT
_EXPORT
ShHandle
ShConstructUniformMap
();
// one per uniform namespace (currently entire program object)
GLSLANG
_EXPORT
ShHandle
ShConstructUniformMap
();
// one per uniform namespace (currently entire program object)
SH_IMPORT
_EXPORT
void
ShDestruct
(
ShHandle
);
GLSLANG
_EXPORT
void
ShDestruct
(
ShHandle
);
//
//
// The return value of ShCompile is boolean, non-zero indicating
// The return value of ShCompile is boolean, non-zero indicating
...
@@ -318,7 +327,7 @@ SH_IMPORT_EXPORT void ShDestruct(ShHandle);
...
@@ -318,7 +327,7 @@ SH_IMPORT_EXPORT void ShDestruct(ShHandle);
// The info-log should be written by ShCompile into
// The info-log should be written by ShCompile into
// ShHandle, so it can answer future queries.
// ShHandle, so it can answer future queries.
//
//
SH_IMPORT
_EXPORT
int
ShCompile
(
GLSLANG
_EXPORT
int
ShCompile
(
const
ShHandle
,
const
ShHandle
,
const
char
*
const
shaderStrings
[],
const
char
*
const
shaderStrings
[],
const
int
numStrings
,
const
int
numStrings
,
...
@@ -331,7 +340,7 @@ SH_IMPORT_EXPORT int ShCompile(
...
@@ -331,7 +340,7 @@ SH_IMPORT_EXPORT int ShCompile(
EShMessages
messages
=
EShMsgDefault
// warnings and errors
EShMessages
messages
=
EShMsgDefault
// warnings and errors
);
);
SH_IMPORT
_EXPORT
int
ShLinkExt
(
GLSLANG
_EXPORT
int
ShLinkExt
(
const
ShHandle
,
// linker object
const
ShHandle
,
// linker object
const
ShHandle
h
[],
// compiler objects to link together
const
ShHandle
h
[],
// compiler objects to link together
const
int
numHandles
);
const
int
numHandles
);
...
@@ -340,26 +349,26 @@ SH_IMPORT_EXPORT int ShLinkExt(
...
@@ -340,26 +349,26 @@ SH_IMPORT_EXPORT int ShLinkExt(
// ShSetEncrpytionMethod is a place-holder for specifying
// ShSetEncrpytionMethod is a place-holder for specifying
// how source code is encrypted.
// how source code is encrypted.
//
//
SH_IMPORT
_EXPORT
void
ShSetEncryptionMethod
(
ShHandle
);
GLSLANG
_EXPORT
void
ShSetEncryptionMethod
(
ShHandle
);
//
//
// All the following return 0 if the information is not
// All the following return 0 if the information is not
// available in the object passed down, or the object is bad.
// available in the object passed down, or the object is bad.
//
//
SH_IMPORT
_EXPORT
const
char
*
ShGetInfoLog
(
const
ShHandle
);
GLSLANG
_EXPORT
const
char
*
ShGetInfoLog
(
const
ShHandle
);
SH_IMPORT
_EXPORT
const
void
*
ShGetExecutable
(
const
ShHandle
);
GLSLANG
_EXPORT
const
void
*
ShGetExecutable
(
const
ShHandle
);
SH_IMPORT
_EXPORT
int
ShSetVirtualAttributeBindings
(
const
ShHandle
,
const
ShBindingTable
*
);
// to detect user aliasing
GLSLANG
_EXPORT
int
ShSetVirtualAttributeBindings
(
const
ShHandle
,
const
ShBindingTable
*
);
// to detect user aliasing
SH_IMPORT
_EXPORT
int
ShSetFixedAttributeBindings
(
const
ShHandle
,
const
ShBindingTable
*
);
// to force any physical mappings
GLSLANG
_EXPORT
int
ShSetFixedAttributeBindings
(
const
ShHandle
,
const
ShBindingTable
*
);
// to force any physical mappings
//
//
// Tell the linker to never assign a vertex attribute to this list of physical attributes
// Tell the linker to never assign a vertex attribute to this list of physical attributes
//
//
SH_IMPORT
_EXPORT
int
ShExcludeAttributes
(
const
ShHandle
,
int
*
attributes
,
int
count
);
GLSLANG
_EXPORT
int
ShExcludeAttributes
(
const
ShHandle
,
int
*
attributes
,
int
count
);
//
//
// Returns the location ID of the named uniform.
// Returns the location ID of the named uniform.
// Returns -1 if error.
// Returns -1 if error.
//
//
SH_IMPORT
_EXPORT
int
ShGetUniformLocation
(
const
ShHandle
uniformMap
,
const
char
*
name
);
GLSLANG
_EXPORT
int
ShGetUniformLocation
(
const
ShHandle
uniformMap
,
const
char
*
name
);
#ifdef __cplusplus
#ifdef __cplusplus
}
// end extern "C"
}
// end extern "C"
...
@@ -390,19 +399,19 @@ class TInfoSink;
...
@@ -390,19 +399,19 @@ class TInfoSink;
namespace
glslang
{
namespace
glslang
{
const
char
*
GetEsslVersionString
();
GLSLANG_EXPORT
const
char
*
GetEsslVersionString
();
const
char
*
GetGlslVersionString
();
GLSLANG_EXPORT
const
char
*
GetGlslVersionString
();
int
GetKhronosToolId
();
GLSLANG_EXPORT
int
GetKhronosToolId
();
class
TIntermediate
;
class
TIntermediate
;
class
TProgram
;
class
TProgram
;
class
TPoolAllocator
;
class
TPoolAllocator
;
// Call this exactly once per process before using anything else
// Call this exactly once per process before using anything else
bool
InitializeProcess
();
GLSLANG_EXPORT
bool
InitializeProcess
();
// Call once per process to tear down everything
// Call once per process to tear down everything
void
FinalizeProcess
();
GLSLANG_EXPORT
void
FinalizeProcess
();
// Resource type for IO resolver
// Resource type for IO resolver
enum
TResourceType
{
enum
TResourceType
{
...
@@ -435,40 +444,41 @@ enum TResourceType {
...
@@ -435,40 +444,41 @@ enum TResourceType {
//
//
class
TShader
{
class
TShader
{
public
:
public
:
explicit
TShader
(
EShLanguage
);
GLSLANG_EXPORT
explicit
TShader
(
EShLanguage
);
virtual
~
TShader
();
GLSLANG_EXPORT
virtual
~
TShader
();
void
setStrings
(
const
char
*
const
*
s
,
int
n
);
GLSLANG_EXPORT
void
setStrings
(
const
char
*
const
*
s
,
int
n
);
void
setStringsWithLengths
(
const
char
*
const
*
s
,
const
int
*
l
,
int
n
);
GLSLANG_EXPORT
void
setStringsWithLengths
(
void
setStringsWithLengthsAndNames
(
const
char
*
const
*
s
,
const
int
*
l
,
int
n
);
GLSLANG_EXPORT
void
setStringsWithLengthsAndNames
(
const
char
*
const
*
s
,
const
int
*
l
,
const
char
*
const
*
names
,
int
n
);
const
char
*
const
*
s
,
const
int
*
l
,
const
char
*
const
*
names
,
int
n
);
void
setPreamble
(
const
char
*
s
)
{
preamble
=
s
;
}
void
setPreamble
(
const
char
*
s
)
{
preamble
=
s
;
}
void
setEntryPoint
(
const
char
*
entryPoint
);
GLSLANG_EXPORT
void
setEntryPoint
(
const
char
*
entryPoint
);
void
setSourceEntryPoint
(
const
char
*
sourceEntryPointName
);
GLSLANG_EXPORT
void
setSourceEntryPoint
(
const
char
*
sourceEntryPointName
);
void
addProcesses
(
const
std
::
vector
<
std
::
string
>&
);
GLSLANG_EXPORT
void
addProcesses
(
const
std
::
vector
<
std
::
string
>&
);
// IO resolver binding data: see comments in ShaderLang.cpp
// IO resolver binding data: see comments in ShaderLang.cpp
void
setShiftBinding
(
TResourceType
res
,
unsigned
int
base
);
GLSLANG_EXPORT
void
setShiftBinding
(
TResourceType
res
,
unsigned
int
base
);
void
setShiftSamplerBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
GLSLANG_EXPORT
void
setShiftSamplerBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
void
setShiftTextureBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
GLSLANG_EXPORT
void
setShiftTextureBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
void
setShiftImageBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
GLSLANG_EXPORT
void
setShiftImageBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
void
setShiftUboBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
GLSLANG_EXPORT
void
setShiftUboBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
void
setShiftUavBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
GLSLANG_EXPORT
void
setShiftUavBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
void
setShiftCbufferBinding
(
unsigned
int
base
);
// synonym for setShiftUboBinding
GLSLANG_EXPORT
void
setShiftCbufferBinding
(
unsigned
int
base
);
// synonym for setShiftUboBinding
void
setShiftSsboBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
GLSLANG_EXPORT
void
setShiftSsboBinding
(
unsigned
int
base
);
// DEPRECATED: use setShiftBinding
void
setShiftBindingForSet
(
TResourceType
res
,
unsigned
int
base
,
unsigned
int
set
);
GLSLANG_EXPORT
void
setShiftBindingForSet
(
TResourceType
res
,
unsigned
int
base
,
unsigned
int
set
);
void
setResourceSetBinding
(
const
std
::
vector
<
std
::
string
>&
base
);
GLSLANG_EXPORT
void
setResourceSetBinding
(
const
std
::
vector
<
std
::
string
>&
base
);
void
setAutoMapBindings
(
bool
map
);
GLSLANG_EXPORT
void
setAutoMapBindings
(
bool
map
);
void
setAutoMapLocations
(
bool
map
);
GLSLANG_EXPORT
void
setAutoMapLocations
(
bool
map
);
void
addUniformLocationOverride
(
const
char
*
name
,
int
loc
);
GLSLANG_EXPORT
void
addUniformLocationOverride
(
const
char
*
name
,
int
loc
);
void
setUniformLocationBase
(
int
base
);
GLSLANG_EXPORT
void
setUniformLocationBase
(
int
base
);
void
setInvertY
(
bool
invert
);
GLSLANG_EXPORT
void
setInvertY
(
bool
invert
);
#ifdef ENABLE_HLSL
#ifdef ENABLE_HLSL
void
setHlslIoMapping
(
bool
hlslIoMap
);
GLSLANG_EXPORT
void
setHlslIoMapping
(
bool
hlslIoMap
);
void
setFlattenUniformArrays
(
bool
flatten
);
GLSLANG_EXPORT
void
setFlattenUniformArrays
(
bool
flatten
);
#endif
#endif
void
setNoStorageFormat
(
bool
useUnknownFormat
);
GLSLANG_EXPORT
void
setNoStorageFormat
(
bool
useUnknownFormat
);
void
setNanMinMaxClamp
(
bool
nanMinMaxClamp
);
GLSLANG_EXPORT
void
setNanMinMaxClamp
(
bool
nanMinMaxClamp
);
void
setTextureSamplerTransformMode
(
EShTextureSamplerTransformMode
mode
);
GLSLANG_EXPORT
void
setTextureSamplerTransformMode
(
EShTextureSamplerTransformMode
mode
);
// For setting up the environment (cleared to nothingness in the constructor).
// For setting up the environment (cleared to nothingness in the constructor).
// These must be called so that parsing is done for the right source language and
// These must be called so that parsing is done for the right source language and
...
@@ -608,8 +618,10 @@ public:
...
@@ -608,8 +618,10 @@ public:
virtual
void
releaseInclude
(
IncludeResult
*
)
override
{
}
virtual
void
releaseInclude
(
IncludeResult
*
)
override
{
}
};
};
bool
parse
(
const
TBuiltInResource
*
,
int
defaultVersion
,
EProfile
defaultProfile
,
bool
forceDefaultVersionAndProfile
,
GLSLANG_EXPORT
bool
parse
(
bool
forwardCompatible
,
EShMessages
,
Includer
&
);
const
TBuiltInResource
*
,
int
defaultVersion
,
EProfile
defaultProfile
,
bool
forceDefaultVersionAndProfile
,
bool
forwardCompatible
,
EShMessages
,
Includer
&
);
bool
parse
(
const
TBuiltInResource
*
res
,
int
defaultVersion
,
EProfile
defaultProfile
,
bool
forceDefaultVersionAndProfile
,
bool
parse
(
const
TBuiltInResource
*
res
,
int
defaultVersion
,
EProfile
defaultProfile
,
bool
forceDefaultVersionAndProfile
,
bool
forwardCompatible
,
EShMessages
messages
)
bool
forwardCompatible
,
EShMessages
messages
)
...
@@ -632,13 +644,14 @@ public:
...
@@ -632,13 +644,14 @@ public:
// NOTE: Doing just preprocessing to obtain a correct preprocessed shader string
// NOTE: Doing just preprocessing to obtain a correct preprocessed shader string
// is not an officially supported or fully working path.
// is not an officially supported or fully working path.
bool
preprocess
(
const
TBuiltInResource
*
builtInResources
,
GLSLANG_EXPORT
bool
preprocess
(
int
defaultVersion
,
EProfile
defaultProfile
,
bool
forceDefaultVersionAndProfile
,
const
TBuiltInResource
*
builtInResources
,
int
defaultVersion
,
bool
forwardCompatible
,
EShMessages
message
,
std
::
string
*
outputString
,
EProfile
defaultProfile
,
bool
forceDefaultVersionAndProfile
,
Includer
&
includer
);
bool
forwardCompatible
,
EShMessages
message
,
std
::
string
*
outputString
,
Includer
&
includer
);
const
char
*
getInfoLog
();
const
char
*
getInfoDebugLog
();
GLSLANG_EXPORT
const
char
*
getInfoLog
();
GLSLANG_EXPORT
const
char
*
getInfoDebugLog
();
EShLanguage
getStage
()
const
{
return
stage
;
}
EShLanguage
getStage
()
const
{
return
stage
;
}
TIntermediate
*
getIntermediate
()
const
{
return
intermediate
;
}
TIntermediate
*
getIntermediate
()
const
{
return
intermediate
;
}
...
@@ -683,11 +696,11 @@ private:
...
@@ -683,11 +696,11 @@ private:
// Data needed for just a single object at the granularity exchanged by the reflection API
// Data needed for just a single object at the granularity exchanged by the reflection API
class
TObjectReflection
{
class
TObjectReflection
{
public
:
public
:
TObjectReflection
(
const
std
::
string
&
pName
,
const
TType
&
pType
,
int
pOffset
,
int
pGLDefineType
,
int
pSize
,
int
pIndex
);
GLSLANG_EXPORT
TObjectReflection
(
const
std
::
string
&
pName
,
const
TType
&
pType
,
int
pOffset
,
int
pGLDefineType
,
int
pSize
,
int
pIndex
);
const
TType
*
getType
()
const
{
return
type
;
}
GLSLANG_EXPORT
const
TType
*
getType
()
const
{
return
type
;
}
int
getBinding
()
const
;
GLSLANG_EXPORT
int
getBinding
()
const
;
void
dump
()
const
;
GLSLANG_EXPORT
void
dump
()
const
;
static
TObjectReflection
badReflection
()
{
return
TObjectReflection
();
}
static
TObjectReflection
badReflection
()
{
return
TObjectReflection
();
}
std
::
string
name
;
std
::
string
name
;
...
@@ -802,14 +815,14 @@ public:
...
@@ -802,14 +815,14 @@ public:
//
//
class
TProgram
{
class
TProgram
{
public
:
public
:
TProgram
();
GLSLANG_EXPORT
TProgram
();
virtual
~
TProgram
();
GLSLANG_EXPORT
virtual
~
TProgram
();
void
addShader
(
TShader
*
shader
)
{
stages
[
shader
->
stage
].
push_back
(
shader
);
}
void
addShader
(
TShader
*
shader
)
{
stages
[
shader
->
stage
].
push_back
(
shader
);
}
std
::
list
<
TShader
*>&
getShaders
(
EShLanguage
stage
)
{
return
stages
[
stage
];
}
std
::
list
<
TShader
*>&
getShaders
(
EShLanguage
stage
)
{
return
stages
[
stage
];
}
// Link Validation interface
// Link Validation interface
bool
link
(
EShMessages
);
GLSLANG_EXPORT
bool
link
(
EShMessages
);
const
char
*
getInfoLog
();
GLSLANG_EXPORT
const
char
*
getInfoLog
();
const
char
*
getInfoDebugLog
();
GLSLANG_EXPORT
const
char
*
getInfoDebugLog
();
TIntermediate
*
getIntermediate
(
EShLanguage
stage
)
const
{
return
intermediate
[
stage
];
}
TIntermediate
*
getIntermediate
(
EShLanguage
stage
)
const
{
return
intermediate
[
stage
];
}
...
@@ -818,24 +831,24 @@ public:
...
@@ -818,24 +831,24 @@ public:
// Reflection Interface
// Reflection Interface
// call first, to do liveness analysis, index mapping, etc.; returns false on failure
// call first, to do liveness analysis, index mapping, etc.; returns false on failure
bool
buildReflection
(
int
opts
=
EShReflectionDefault
);
GLSLANG_EXPORT
bool
buildReflection
(
int
opts
=
EShReflectionDefault
);
unsigned
getLocalSize
(
int
dim
)
const
;
// return dim'th local size
GLSLANG_EXPORT
unsigned
getLocalSize
(
int
dim
)
const
;
// return dim'th local size
int
getReflectionIndex
(
const
char
*
name
)
const
;
GLSLANG_EXPORT
int
getReflectionIndex
(
const
char
*
name
)
const
;
int
getReflectionPipeIOIndex
(
const
char
*
name
,
const
bool
inOrOut
)
const
;
GLSLANG_EXPORT
int
getReflectionPipeIOIndex
(
const
char
*
name
,
const
bool
inOrOut
)
const
;
int
getNumUniformVariables
()
const
;
GLSLANG_EXPORT
int
getNumUniformVariables
()
const
;
const
TObjectReflection
&
getUniform
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getUniform
(
int
index
)
const
;
int
getNumUniformBlocks
()
const
;
GLSLANG_EXPORT
int
getNumUniformBlocks
()
const
;
const
TObjectReflection
&
getUniformBlock
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getUniformBlock
(
int
index
)
const
;
int
getNumPipeInputs
()
const
;
GLSLANG_EXPORT
int
getNumPipeInputs
()
const
;
const
TObjectReflection
&
getPipeInput
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getPipeInput
(
int
index
)
const
;
int
getNumPipeOutputs
()
const
;
GLSLANG_EXPORT
int
getNumPipeOutputs
()
const
;
const
TObjectReflection
&
getPipeOutput
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getPipeOutput
(
int
index
)
const
;
int
getNumBufferVariables
()
const
;
GLSLANG_EXPORT
int
getNumBufferVariables
()
const
;
const
TObjectReflection
&
getBufferVariable
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getBufferVariable
(
int
index
)
const
;
int
getNumBufferBlocks
()
const
;
GLSLANG_EXPORT
int
getNumBufferBlocks
()
const
;
const
TObjectReflection
&
getBufferBlock
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getBufferBlock
(
int
index
)
const
;
int
getNumAtomicCounters
()
const
;
GLSLANG_EXPORT
int
getNumAtomicCounters
()
const
;
const
TObjectReflection
&
getAtomicCounter
(
int
index
)
const
;
GLSLANG_EXPORT
const
TObjectReflection
&
getAtomicCounter
(
int
index
)
const
;
// Legacy Reflection Interface - expressed in terms of above interface
// Legacy Reflection Interface - expressed in terms of above interface
...
@@ -902,15 +915,15 @@ public:
...
@@ -902,15 +915,15 @@ public:
// returns a TType*
// returns a TType*
const
TType
*
getAttributeTType
(
int
index
)
const
{
return
getPipeInput
(
index
).
getType
();
}
const
TType
*
getAttributeTType
(
int
index
)
const
{
return
getPipeInput
(
index
).
getType
();
}
void
dumpReflection
();
GLSLANG_EXPORT
void
dumpReflection
();
// I/O mapping: apply base offsets and map live unbound variables
// I/O mapping: apply base offsets and map live unbound variables
// If resolver is not provided it uses the previous approach
// If resolver is not provided it uses the previous approach
// and respects auto assignment and offsets.
// and respects auto assignment and offsets.
bool
mapIO
(
TIoMapResolver
*
pResolver
=
nullptr
,
TIoMapper
*
pIoMapper
=
nullptr
);
GLSLANG_EXPORT
bool
mapIO
(
TIoMapResolver
*
pResolver
=
nullptr
,
TIoMapper
*
pIoMapper
=
nullptr
);
#endif
#endif
protected
:
protected
:
bool
linkStage
(
EShLanguage
,
EShMessages
);
GLSLANG_EXPORT
bool
linkStage
(
EShLanguage
,
EShMessages
);
TPoolAllocator
*
pool
;
TPoolAllocator
*
pool
;
std
::
list
<
TShader
*>
stages
[
EShLangCount
];
std
::
list
<
TShader
*>
stages
[
EShLangCount
];
...
...
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