[Mesa-dev] [PATCH 62/92] radeonsi/nir: set si_shader_context::num_{sampler, images}
Nicolai Hähnle
nhaehnle at gmail.com
Mon Jun 26 14:10:41 UTC 2017
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
src/gallium/drivers/radeonsi/si_shader_nir.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 91796a8..a278ef2 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -368,20 +368,22 @@ si_nir_load_sampler_desc(struct ac_shader_abi *abi,
index = si_llvm_bound_index(ctx, index, ctx->num_samplers);
index = LLVMBuildAdd(ctx->gallivm.builder, index,
LLVMConstInt(ctx->i32, SI_NUM_IMAGES / 2, 0), "");
return si_load_sampler_desc(ctx, list, index, desc_type);
}
bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
{
+ struct tgsi_shader_info *info = &ctx->shader->selector->info;
+
unsigned fs_attr_idx = 0;
nir_foreach_variable(variable, &nir->inputs) {
unsigned attrib_count = glsl_count_attribute_slots(variable->type,
nir->stage == MESA_SHADER_VERTEX);
unsigned input_idx = variable->data.driver_location;
for (unsigned i = 0; i < attrib_count; ++i) {
LLVMValueRef data[4];
if (nir->stage == MESA_SHADER_VERTEX)
@@ -392,14 +394,17 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
for (unsigned chan = 0; chan < 4; chan++) {
ctx->inputs[input_idx + chan] =
LLVMBuildBitCast(ctx->ac.builder, data[chan], ctx->ac.i32, "");
}
}
}
ctx->abi.inputs = &ctx->inputs[0];
ctx->abi.load_sampler_desc = si_nir_load_sampler_desc;
+ ctx->num_samplers = util_last_bit(info->samplers_declared);
+ ctx->num_images = util_last_bit(info->images_declared);
+
ac_nir_translate(&ctx->ac, &ctx->abi, nir, NULL);
return true;
}
--
2.9.3
More information about the mesa-dev
mailing list