i965: Call spirv_to_nir() instead of glsl_to_nir() for SPIR-V shaders
This is the main fork of the shader compilation code-path, where a NIR shader is obtained by calling spirv_to_nir() or glsl_to_nir(), depending on its nature.. v2: Use 'spirv_data' member from gl_linked_shader to know which method to call. (Timothy Arceri) Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
committed by
Alejandro Piñeiro
parent
abb6d0797c
commit
e7d97aa75d
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <pthread.h>
|
||||
#include "main/imports.h"
|
||||
#include "main/glspirv.h"
|
||||
#include "program/prog_parameter.h"
|
||||
#include "program/prog_print.h"
|
||||
#include "program/prog_to_nir.h"
|
||||
@@ -74,9 +75,14 @@ brw_create_nir(struct brw_context *brw,
|
||||
ctx->Const.ShaderCompilerOptions[stage].NirOptions;
|
||||
nir_shader *nir;
|
||||
|
||||
/* First, lower the GLSL IR or Mesa IR to NIR */
|
||||
/* First, lower the GLSL/Mesa IR or SPIR-V to NIR */
|
||||
if (shader_prog) {
|
||||
nir = glsl_to_nir(shader_prog, stage, options);
|
||||
if (shader_prog->_LinkedShaders[stage]->spirv_data)
|
||||
nir = _mesa_spirv_to_nir(ctx, shader_prog, stage, options);
|
||||
else
|
||||
nir = glsl_to_nir(shader_prog, stage, options);
|
||||
assert (nir);
|
||||
|
||||
nir_remove_dead_variables(nir, nir_var_shader_in | nir_var_shader_out);
|
||||
nir_lower_returns(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
Reference in New Issue
Block a user