[Mesa-dev] [PATCH 2/8] glsl: Override the # of varying slots for ClipDistance and TessLevel*.
Marek Olšák
maraeo at gmail.com
Sat Jan 7 15:17:50 UTC 2017
Hi, this breaks drawing for Qt apps on radeonsi. I won't look into it
right now, maybe next week. Any idea what's wrong here?
Marek
On Wed, Jan 4, 2017 at 12:07 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> Right now, this shouldn't have any effect, as all drivers use
> LowerClipDist and LowerTessFactors to turn the float[] arrays into
> vectors.
>
> However, it should help make it possible for drivers to avoid that
> lowering.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/compiler/glsl/ir.cpp | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp
> index a77b9a9d857..69f1f1a7e5d 100644
> --- a/src/compiler/glsl/ir.cpp
> +++ b/src/compiler/glsl/ir.cpp
> @@ -1621,6 +1621,24 @@ ir_variable::get_extension_warning() const
> unsigned
> ir_variable::count_attribute_slots(bool is_vertex_stage) const
> {
> + /* GLSL contains several built-in arrays that control fixed-function
> + * hardware, and are somewhat special. Clip distances and tessellation
> + * factors are exposed as float[] arrays, but typically are packed
> + * tightly. We want to expose these as taking a single varying slot
> + * and let drivers handle laying them out appropriately.
> + *
> + * Skip this override if the arrays were lowered to vectors.
> + */
> + if (type->without_array()->is_scalar() &&
> + (data.mode == ir_var_shader_in || data.mode == ir_var_shader_out) &&
> + (data.location == VARYING_SLOT_CLIP_DIST0 ||
> + data.location == VARYING_SLOT_CULL_DIST0 ||
> + data.location == VARYING_SLOT_TESS_LEVEL_OUTER ||
> + data.location == VARYING_SLOT_TESS_LEVEL_INNER)) {
> + return type->length / 4;
> + }
> +
> + /* For normal variables, simply consult the type. */
> bool is_vs_input = is_vertex_stage && this->data.mode == ir_var_shader_in;
> return this->type->count_attribute_slots(is_vs_input);
> }
> --
> 2.11.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list