From a841e2c747d71916cd6d5cdfd3e66e17912ab9d7 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Wed, 8 Jul 2015 21:47:43 -0400 Subject: [PATCH] vk/compiler: mark inputs/outputs as read/written This doesn't handle inputs and outputs larger than a vec4, but we plan to add a varyiing splitting/packing pass to handle those anyways. --- src/vulkan/compiler.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/vulkan/compiler.cpp b/src/vulkan/compiler.cpp index fb9615306e6..0a8ec87415f 100644 --- a/src/vulkan/compiler.cpp +++ b/src/vulkan/compiler.cpp @@ -950,6 +950,23 @@ anv_compile_shader_glsl(struct anv_compiler *compiler, program->NumShaders++; } +static void +setup_nir_io(struct gl_program *prog, + nir_shader *shader) +{ + foreach_list_typed(nir_variable, var, node, &shader->inputs) { + prog->InputsRead |= BITFIELD64_BIT(var->data.location); + } + + foreach_list_typed(nir_variable, var, node, &shader->outputs) { + /* XXX glslang gives us this but we never use it */ + if (!strcmp(var->name, "gl_PerVertex")) + continue; + + prog->OutputsWritten |= BITFIELD64_BIT(var->data.location); + } +} + static void anv_compile_shader_spirv(struct anv_compiler *compiler, struct gl_shader_program *program, @@ -982,6 +999,8 @@ anv_compile_shader_spirv(struct anv_compiler *compiler, compiler->screen->devinfo, NULL, mesa_shader->Stage); + setup_nir_io(mesa_shader->Program, mesa_shader->Program->nir); + fail_if(mesa_shader->Program->nir == NULL, "failed to translate SPIR-V to NIR\n"); -- 2.30.2