26 #include <glslang/Include/ResourceLimits.h> 27 #include <glslang/Include/revision.h> 28 #include <glslang/Public/ShaderLang.h> 29 #include <glslang/SPIRV/GlslangToSpv.h> 39 #define GLSL_VERSION EShTargetVulkan_1_1 42 #define SPIRV_VERSION EShTargetSpv_1_3 159 static const EShLanguage lang[] = {
166 TShader *shader =
new TShader(lang[stage]);
174 shader->setStrings(&glsl, 1);
182 TProgram *prog =
new TProgram();
189 prog->addShader(shader);
190 if (!prog->link(EShMsgDefault)) {
198 std::vector<unsigned int> spirv;
201 options.generateDebugInfo =
false;
202 options.disassemble =
false;
203 options.validate =
false;
204 options.disableOptimizer =
false;
205 options.optimizeSize =
true;
207 GlslangToSpv(*prog->getIntermediate(lang[stage]), spirv,
NULL, &
options);
209 res->
size = spirv.size()*
sizeof(
unsigned int);
230 ret = !InitializeProcess();
#define pthread_mutex_lock(a)
Memory handling functions.
static const TBuiltInResource DefaultTBuiltInResource
#define av_assert0(cond)
assert() equivalent, that is always enabled.
simple assert() macros that are a bit more flexible than ISO C assert().
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
void * av_memdup(const void *p, size_t size)
Duplicate a buffer with av_malloc().
void glslang_uninit(void)
#define pthread_mutex_unlock(a)
static pthread_mutex_t glslang_mutex
#define PTHREAD_MUTEX_INITIALIZER
GLSlangResult * glslang_compile(const char *glsl, enum GLSlangStage stage)
char * av_strdup(const char *s)
Duplicate a string.
static int glslang_refcount
const OptionDef options[]
#define AVERROR_EXTERNAL
Generic error in an external library.