[Mesa-dev] [PATCH 14/20] radeonsi: reserve a parameter slot for FMASK resources in shaders
Michel Dänzer
michel at daenzer.net
Thu Aug 8 08:36:09 PDT 2013
On Don, 2013-08-08 at 08:00 -0700, Tom Stellard wrote:
> On Thu, Aug 08, 2013 at 02:20:54AM +0200, Marek Olšák wrote:
> >
> > diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
> > index 746ace6..4208fa7 100644
> > --- a/src/gallium/drivers/radeonsi/si_state_draw.c
> > +++ b/src/gallium/drivers/radeonsi/si_state_draw.c
> > @@ -241,6 +241,7 @@ static void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *s
> > /* Last 2 reserved SGPRs are used for VCC */
> > num_sgprs = num_user_sgprs + 2;
> > }
> > + num_sgprs += 1; /* XXX this fixes VM faults */
>
> One problem is that the compiler is under reporting the number of SGPRs,
> when there are unused USER_SGPRs in the shader. It should always be
> reporting a number greater than or equal to the number of USER_SGPRs.
That itself shouldn't be a problem, as the radeonsi code ensures this.
> I think Michel mentioned this earlier, but there may also be a problem
> with the way we determine usage of the VCC register in the shader, maybe
> it is being used for more instructions than we realize.
I was just worrying that AMDGPUAsmPrinter::EmitProgramInfoSI() might not
take implicit access to VCC into account, but Christian confirmed it
should. AFAICT we should be encoding any such implicit access correctly
(except for V_DIV_SCALE_F* and V_DIV_FMAS_F*, which aren't used yet).
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
More information about the mesa-dev
mailing list