required by OpenCL Signed-off-by: Karol Herbst <kher...@redhat.com> Reviewed-by: Pierre Moreau <pierre.mor...@free.fr> --- .../nouveau/codegen/nv50_ir_from_nir.cpp | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp index 02ae5d73b99..8dded71f461 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -1169,6 +1169,7 @@ bool Converter::assignSlots() { info->io.viewportId = -1; info->numInputs = 0; + info->numOutputs = 0; // we have to fixup the uniform locations for arrays unsigned numImages = 0; @@ -1180,6 +1181,37 @@ bool Converter::assignSlots() { numImages += type->is_array() ? type->arrays_of_arrays_size() : 1; } + info->numSysVals = 0; + for (uint8_t i = 0; i < 64; ++i) { + if (!(nir->info.system_values_read & 1ll << i)) + continue; + + system_val_to_tgsi_semantic(i, &name, &index); + info->sv[info->numSysVals].sn = name; + info->sv[info->numSysVals].si = index; + info->sv[info->numSysVals].input = 0; // TODO inferSysValDirection(sn); + + switch (i) { + case SYSTEM_VALUE_INSTANCE_ID: + info->io.instanceId = info->numSysVals; + break; + case SYSTEM_VALUE_TESS_LEVEL_INNER: + case SYSTEM_VALUE_TESS_LEVEL_OUTER: + info->sv[info->numSysVals].patch = 1; + break; + case SYSTEM_VALUE_VERTEX_ID: + info->io.vertexId = info->numSysVals; + break; + default: + break; + } + + info->numSysVals += 1; + } + + if (prog->getType() == Program::TYPE_COMPUTE) + return true; + nir_foreach_variable(var, &nir->inputs) { const glsl_type *type = var->type; int slot = var->data.location; @@ -1244,7 +1276,6 @@ bool Converter::assignSlots() { info->numInputs = std::max<uint8_t>(info->numInputs, vary); } - info->numOutputs = 0; nir_foreach_variable(var, &nir->outputs) { const glsl_type *type = var->type; int slot = var->data.location; @@ -1336,34 +1367,6 @@ bool Converter::assignSlots() { info->numOutputs = std::max<uint8_t>(info->numOutputs, vary); } - info->numSysVals = 0; - for (uint8_t i = 0; i < 64; ++i) { - if (!(nir->info.system_values_read & 1ll << i)) - continue; - - system_val_to_tgsi_semantic(i, &name, &index); - info->sv[info->numSysVals].sn = name; - info->sv[info->numSysVals].si = index; - info->sv[info->numSysVals].input = 0; // TODO inferSysValDirection(sn); - - switch (i) { - case SYSTEM_VALUE_INSTANCE_ID: - info->io.instanceId = info->numSysVals; - break; - case SYSTEM_VALUE_TESS_LEVEL_INNER: - case SYSTEM_VALUE_TESS_LEVEL_OUTER: - info->sv[info->numSysVals].patch = 1; - break; - case SYSTEM_VALUE_VERTEX_ID: - info->io.vertexId = info->numSysVals; - break; - default: - break; - } - - info->numSysVals += 1; - } - if (info->io.genUserClip > 0) { info->io.clipDistances = info->io.genUserClip; -- 2.21.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev