vk: Assert that the SPIR-V module has the magic number
authorKristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
Thu, 3 Sep 2015 19:27:28 +0000 (12:27 -0700)
committerKristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
Thu, 3 Sep 2015 19:27:28 +0000 (12:27 -0700)
Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
src/vulkan/anv_compiler.cpp

index 1f961eb043b19de394d1cf2238ffe05c2745a543..070fd1e1121ef336a2420b4414666feca2efb8d2 100644 (file)
@@ -974,6 +974,7 @@ anv_compile_shader_spirv(struct anv_compiler *compiler,
    struct anv_shader *shader = pipeline->shaders[stage];
    struct gl_shader *mesa_shader;
    int name = 0;
+   uint32_t *spirv;
 
    mesa_shader = brw_new_shader(&brw->ctx, name, stage_info[stage].token);
    fail_if(mesa_shader == NULL,
@@ -1012,13 +1013,15 @@ anv_compile_shader_spirv(struct anv_compiler *compiler,
    mesa_shader->Type = stage_info[stage].token;
    mesa_shader->Stage = stage_info[stage].stage;
 
-   assert(shader->module->size % 4 == 0);
-
    struct gl_shader_compiler_options *glsl_options =
       &compiler->screen->compiler->glsl_compiler_options[stage_info[stage].stage];
 
+   spirv = (uint32_t *) shader->module->data;
+   assert(spirv[0] == SPIR_V_MAGIC_NUMBER);
+   assert(shader->module->size % 4 == 0);
+
    mesa_shader->Program->nir =
-      spirv_to_nir((uint32_t *)shader->module->data, shader->module->size / 4,
+      spirv_to_nir(spirv, shader->module->size / 4,
                    stage_info[stage].stage, glsl_options->NirOptions);
    nir_validate_shader(mesa_shader->Program->nir);