4#include <glslang/Include/glslang_c_interface.h>
5#include <glslang/Include/glslang_c_shader_types.h>
6#include <glslang/Public/resource_limits_c.h>
10#include <ae2f/errGlob.h>
12#include <ae2f/Macro.h>
16 glslang_shader_t* restrict m_shader;
17 glslang_program_t* restrict m_programme;
18 unsigned int* restrict m_spirv_words;
26 ,
ae2f_FREE(ae2fVK_SpvcDel, __ae2fVK_SpvcDel)
27 ae2fVK_Spvc* restrict
const ret
28 ,
const glslang_input_t*
const restrict inp
32 ae2fVK_Spvc* restrict
const block
37#define ae2fVK_SpvcMk __ae2fVK_SpvcMk_C
38#define ae2fVK_SpvcDel __ae2fVK_SpvcDel_C
50#include <ae2fVK/Spvc.h>
51#include <ae2f/Macro.h>
60 ,
const glslang_input_t*
const restrict inp
66 (v_ret).m_shader = glslang_shader_create(inp);
67 (v_ret).m_programme = glslang_program_create();
69 assert(((v_ret).m_shader && (v_ret).m_programme) &&
"initiating has failed.");
70 if(!(v_ret).m_shader) {
74 (v_ret_isgood) = glslang_shader_preprocess((v_ret).m_shader, inp);
75 assert((v_ret_isgood) &&
"GLSL preprocessing failed.");
80 (v_ret_isgood) = glslang_shader_parse((v_ret).m_shader, inp);
81 assert((v_ret_isgood) &&
"GLSL parsing failed.");
86 glslang_program_add_shader(
91 (v_ret_isgood) = glslang_program_link(
96 (v_ret_isgood) = glslang_shader_parse((v_ret).m_shader, inp);
97 assert((v_ret_isgood) &&
"GLSL linking failed.");
102 glslang_program_SPIRV_generate((v_ret).m_programme, (inp)->stage);
103 (v_ret).m_spirv_words = glslang_program_SPIRV_get_ptr((v_ret).m_programme);
104 (v_ret).m_spirv_sz = glslang_program_SPIRV_get_size((v_ret).m_programme);
106 assert((v_ret).m_spirv_words);
107 assert((v_ret).m_spirv_sz);
111#define __ae2fVK_SpvcMk_imp(v_ret_isgood, v_ret, inp)
112 __ae2fVK_SpvcMkWithMsg_imp(v_ret_isgood, v_ret, inp, GLSLANG_MSG_VULKAN_RULES_BIT | GLSLANG_MSG_SPV_RULES_BIT)
117 , ae2fVK_Spvc* restrict
const ret
118 ,
const glslang_input_t*
const restrict inp
122 if((reterr) && *(reterr))
134#define __ae2fVK_SpvcMk_C __ae2fVK_SpvcMk
136ae2f_MAC() _ae2fVK_SpvcDel_imp(ae2fVK_Spvc v_block) {
137 if((v_block).m_programme)
138 glslang_program_delete((v_block).m_programme);
139 if((v_block).m_shader)
140 glslang_shader_delete((v_block).m_shader);
144ae2f_MAC() _ae2fVK_SpvcDel(ae2fVK_Spvc* restrict
const block)
146 __ae2fVK_SpvcDel_imp(*(block));
147 (block)->m_programme = 0;
148 (block)->m_shader = 0;
149 (block)->m_spirv_words = 0;
150 (block)->m_spirv_sz = 0;
153#define __ae2fVK_SpvcDel_C __ae2fVK_SpvcDel
#define ae2f_structdef(key, name)
#define unless(...)
Invokes when condition is false.
#define ae2f_extern
Suggests the existence of external variable or function, in naming of C. [non-mangling].
#define ae2f_errGlob_ALLOC_FAILED
stdlib allocating functions (malloc, calloc, realloc) has been failed.
uint8_t ae2f_err_t
Informs that this number represents the error.
#define ae2f_errGlob_PTR_IS_NULL
Failed to refer the pointer either l-value inside the function.
#define __ae2f_MACRO_GENERATED
#define __ae2fVK_SpvcMk_imp(v_ret_isgood, v_ret, inp)