Merge pull request #2985 from jeremy-lunarg/hayes-nonsemantic-shader-debuginfo-rebase
[platform/upstream/glslang.git] / SPIRV / CInterface / spirv_c_interface.cpp
index a0790f4..d56ad46 100644 (file)
@@ -36,6 +36,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "SPIRV/Logger.h"
 #include "SPIRV/SpvTools.h"
 
+static_assert(sizeof(glslang_spv_options_t) == sizeof(glslang::SpvOptions), "");
+
 typedef struct glslang_program_s {
     glslang::TProgram* program;
     std::vector<unsigned int> spirv;
@@ -57,22 +59,22 @@ static EShLanguage c_shader_stage(glslang_stage_t stage)
         return EShLangFragment;
     case GLSLANG_STAGE_COMPUTE:
         return EShLangCompute;
-    case GLSLANG_STAGE_RAYGEN_NV:
+    case GLSLANG_STAGE_RAYGEN:
         return EShLangRayGen;
-    case GLSLANG_STAGE_INTERSECT_NV:
+    case GLSLANG_STAGE_INTERSECT:
         return EShLangIntersect;
-    case GLSLANG_STAGE_ANYHIT_NV:
+    case GLSLANG_STAGE_ANYHIT:
         return EShLangAnyHit;
-    case GLSLANG_STAGE_CLOSESTHIT_NV:
+    case GLSLANG_STAGE_CLOSESTHIT:
         return EShLangClosestHit;
-    case GLSLANG_STAGE_MISS_NV:
+    case GLSLANG_STAGE_MISS:
         return EShLangMiss;
-    case GLSLANG_STAGE_CALLABLE_NV:
+    case GLSLANG_STAGE_CALLABLE:
         return EShLangCallable;
-    case GLSLANG_STAGE_TASK_NV:
-        return EShLangTaskNV;
-    case GLSLANG_STAGE_MESH_NV:
-        return EShLangMeshNV;
+    case GLSLANG_STAGE_TASK:
+        return EShLangTask;
+    case GLSLANG_STAGE_MESH:
+        return EShLangMesh;
     default:
         break;
     }
@@ -81,13 +83,25 @@ static EShLanguage c_shader_stage(glslang_stage_t stage)
 
 GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage)
 {
+    glslang_spv_options_t spv_options;
+    spv_options.generate_debug_info = false;
+    spv_options.strip_debug_info = false;
+    spv_options.emit_nonsemantic_shader_debug_info = false;
+    spv_options.emit_nonsemantic_shader_debug_source = false;
+    spv_options.disable_optimizer = true;
+    spv_options.optimize_size = false;
+    spv_options.disassemble = false;
+    spv_options.validate = true;
+
+    glslang_program_SPIRV_generate_with_options(program, stage, &spv_options);
+}
+
+GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options) {
     spv::SpvBuildLogger logger;
-    glslang::SpvOptions spvOptions;
-    spvOptions.validate = true;
 
     const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage));
 
-    glslang::GlslangToSpv(*intermediate, program->spirv, &logger, &spvOptions);
+    glslang::GlslangToSpv(*intermediate, program->spirv, &logger, reinterpret_cast<glslang::SpvOptions*>(spv_options));
 
     program->loggerMessages = logger.getAllMessages();
 }