Add symbol visibility annotations to symbols in SPIRV/
Symbols in the SPIRV/ directory that are meant to be part of the public API of glslangnow have GLSLANG_EXPORT annotations that make sure they will be accessible when building glslang as a shared library if -fvisibility=hidden is enabled.
This commit is contained in:
parent
9cd7ca26a2
commit
b1fac200c4
4 changed files with 35 additions and 28 deletions
|
|
@ -39,6 +39,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
#include "glslang/Include/visibility.h"
|
||||||
|
|
||||||
namespace glslang {
|
namespace glslang {
|
||||||
class TIntermediate;
|
class TIntermediate;
|
||||||
|
|
@ -56,13 +57,13 @@ struct SpvOptions {
|
||||||
bool optimizerAllowExpandedIDBound{false};
|
bool optimizerAllowExpandedIDBound{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
void GetSpirvVersion(std::string&);
|
GLSLANG_EXPORT void GetSpirvVersion(std::string&);
|
||||||
int GetSpirvGeneratorVersion();
|
GLSLANG_EXPORT int GetSpirvGeneratorVersion();
|
||||||
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
||||||
SpvOptions* options = nullptr);
|
SpvOptions* options = nullptr);
|
||||||
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
||||||
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
|
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
|
||||||
bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
GLSLANG_EXPORT bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
|
||||||
bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
GLSLANG_EXPORT bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include "glslang/Include/visibility.h"
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
|
|
||||||
|
|
@ -58,7 +59,7 @@ public:
|
||||||
|
|
||||||
// Returns all messages accumulated in the order of:
|
// Returns all messages accumulated in the order of:
|
||||||
// TBD functionalities, missing functionalities, warnings, errors.
|
// TBD functionalities, missing functionalities, warnings, errors.
|
||||||
std::string getAllMessages() const;
|
GLSLANG_EXPORT std::string getAllMessages() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SpvBuildLogger(const SpvBuildLogger&);
|
SpvBuildLogger(const SpvBuildLogger&);
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "glslang/MachineIndependent/Versions.h"
|
#include "glslang/MachineIndependent/Versions.h"
|
||||||
|
#include "glslang/Include/visibility.h"
|
||||||
#include "GlslangToSpv.h"
|
#include "GlslangToSpv.h"
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
|
|
@ -59,44 +60,46 @@ namespace glslang {
|
||||||
class TIntermediate;
|
class TIntermediate;
|
||||||
|
|
||||||
// Translate glslang's view of target versioning to what SPIRV-Tools uses.
|
// Translate glslang's view of target versioning to what SPIRV-Tools uses.
|
||||||
spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger);
|
GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger);
|
||||||
|
|
||||||
// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment.
|
// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment.
|
||||||
void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv);
|
GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv);
|
||||||
|
|
||||||
// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment.
|
// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment.
|
||||||
void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv,
|
||||||
spv_target_env requested_context);
|
spv_target_env requested_context);
|
||||||
|
|
||||||
// Apply the SPIRV-Tools validator to generated SPIR-V.
|
// Apply the SPIRV-Tools validator to generated SPIR-V.
|
||||||
void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
||||||
spv::SpvBuildLogger*, bool prelegalization);
|
spv::SpvBuildLogger*, bool prelegalization);
|
||||||
|
|
||||||
// Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process.
|
// Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process.
|
||||||
void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
|
||||||
spv::SpvBuildLogger*, const SpvOptions*);
|
spv::SpvBuildLogger*, const SpvOptions*);
|
||||||
|
|
||||||
// Apply the SPIRV-Tools EliminateDeadInputComponents pass to generated SPIR-V. Put result in |spirv|.
|
// Apply the SPIRV-Tools EliminateDeadInputComponents pass to generated SPIR-V. Put result in |spirv|.
|
||||||
void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||||
spv::SpvBuildLogger*);
|
spv::SpvBuildLogger*);
|
||||||
|
|
||||||
// Apply the SPIRV-Tools AnalyzeDeadOutputStores pass to generated SPIR-V. Put result in |live_locs|.
|
// Apply the SPIRV-Tools AnalyzeDeadOutputStores pass to generated SPIR-V. Put result in |live_locs|.
|
||||||
// Return true if the result is valid.
|
// Return true if the result is valid.
|
||||||
bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||||
std::unordered_set<uint32_t>* live_locs,
|
std::unordered_set<uint32_t>* live_locs,
|
||||||
std::unordered_set<uint32_t>* live_builtins, spv::SpvBuildLogger*);
|
std::unordered_set<uint32_t>* live_builtins,
|
||||||
|
spv::SpvBuildLogger*);
|
||||||
|
|
||||||
// Apply the SPIRV-Tools EliminateDeadOutputStores and AggressiveDeadCodeElimination passes to generated SPIR-V using
|
// Apply the SPIRV-Tools EliminateDeadOutputStores and AggressiveDeadCodeElimination passes to generated SPIR-V using
|
||||||
// |live_locs|. Put result in |spirv|.
|
// |live_locs|. Put result in |spirv|.
|
||||||
void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
GLSLANG_EXPORT void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv,
|
||||||
std::unordered_set<uint32_t>* live_locs,
|
std::unordered_set<uint32_t>* live_locs,
|
||||||
std::unordered_set<uint32_t>* live_builtins, spv::SpvBuildLogger*);
|
std::unordered_set<uint32_t>* live_builtins,
|
||||||
|
spv::SpvBuildLogger*);
|
||||||
|
|
||||||
// Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by
|
// Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by
|
||||||
// SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if
|
// SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if
|
||||||
// optimization is disabled.
|
// optimization is disabled.
|
||||||
void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate,
|
GLSLANG_EXPORT void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate,
|
||||||
std::vector<unsigned int>& spirv, spv::SpvBuildLogger*);
|
std::vector<unsigned int>& spirv, spv::SpvBuildLogger*);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,10 +43,12 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "glslang/Include/visibility.h"
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
|
|
||||||
// disassemble with glslang custom disassembler
|
// disassemble with glslang custom disassembler
|
||||||
void Disassemble(std::ostream& out, const std::vector<unsigned int>&);
|
GLSLANG_EXPORT void Disassemble(std::ostream& out, const std::vector<unsigned int>&);
|
||||||
|
|
||||||
} // end namespace spv
|
} // end namespace spv
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue