[Mesa-dev] [PATCH] i965/sbe: fix active components for SSO programs with over 16 inputs
Iago Toral
itoral at igalia.com
Wed Oct 18 06:41:16 UTC 2017
Ken, do you have any thoughts on this patch?
Iago
On Fri, 2017-10-13 at 11:10 +0200, Iago Toral Quiroga wrote:
> When we have up to 16 FS inputs, the SF unit will reorder our inputs
> to be consecutive, however, when we have more than 16 we need to
> to read our inputs from the URB exactly as they have been
> output from the previous stage. This means that for SSO we have to
> consider if we have URB padding due to unused input locations.
>
> Specifically, this affects gen9 active components programming, since
> for things to work in scenarios with over 16 inputs that have padded
> regions we need to ensure that we program active components for the
> padded regions too. If we don't do this the hardware won't read
> the URB properly for inputs located after padded regions.
>
> Found empirically.
>
> Fixes (these also require a patch in CTS):
> KHR-GL45.enhanced_layouts.varying_locations
> KHR-GL45.enhanced_layouts.varying_array_locations
> ---
> src/mesa/drivers/dri/i965/genX_state_upload.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c
> b/src/mesa/drivers/dri/i965/genX_state_upload.c
> index ecf5a9ae68..2137de9597 100644
> --- a/src/mesa/drivers/dri/i965/genX_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
> @@ -3452,15 +3452,9 @@ genX(upload_sbe)(struct brw_context *brw)
>
> #if GEN_GEN >= 9
> /* prepare the active component dwords */
> - int input_index = 0;
> - for (int attr = 0; attr < VARYING_SLOT_MAX; attr++) {
> - if (!(fp->info.inputs_read & BITFIELD64_BIT(attr)))
> - continue;
> -
> - assert(input_index < 32);
> -
> + const int num_inputs = urb_entry_read_length * 2;
> + for (int input_index = 0; input_index < num_inputs;
> input_index++) {
> sbe.AttributeActiveComponentFormat[input_index] =
> ACTIVE_COMPONENT_XYZW;
> - ++input_index;
> }
> #endif
> }
More information about the mesa-dev
mailing list