* [mesa PATCH] nv50: handle VP without inputs
@ 2012-05-06 18:53 Marcin Slusarz
[not found] ` <20120506185308.GC4311-OI9uyE9O0yo@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Marcin Slusarz @ 2012-05-06 18:53 UTC (permalink / raw)
To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Fixes 3 piglit tests:
general/pos-array
shaders/glsl-novertexdata
shaders/glsl-vs-point-size
and makes shaders/vp-ignore-input not trigger PGRAPH DATA_ERROR
---
It's a bit ugly... If there's a way to fix it properly, I'm open to suggestions.
---
src/gallium/drivers/nv50/nv50_program.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index 48e8db3..c44f537 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -53,6 +53,13 @@ nv50_vertprog_assign_slots(struct nv50_ir_prog_info *info)
if (info->in[i].mask & (1 << c))
info->in[i].slot[c] = n++;
}
+
+ // Corner case: VP has no inputs, but we will still need to submit data to
+ // draw it. HW will shout at us and won't draw anything if we don't enable
+ // any input, so let's just pretend it's the first one.
+ if (info->numInputs == 0)
+ prog->vp.attrs[0] |= 0xf;
+
prog->in_nr = info->numInputs;
for (i = 0; i < info->numSysVals; ++i) {
--
1.7.8.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [mesa PATCH] nv50: handle VP without inputs
[not found] ` <20120506185308.GC4311-OI9uyE9O0yo@public.gmane.org>
@ 2012-05-06 19:05 ` Christoph Bumiller
[not found] ` <4FA6CB71.9070308-oe7qfRrRQffzPE21tAIdciO7C/xPubJB@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Christoph Bumiller @ 2012-05-06 19:05 UTC (permalink / raw)
To: Marcin Slusarz; +Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
On 06.05.2012 20:53, Marcin Slusarz wrote:
> Fixes 3 piglit tests:
> general/pos-array
> shaders/glsl-novertexdata
> shaders/glsl-vs-point-size
> and makes shaders/vp-ignore-input not trigger PGRAPH DATA_ERROR
> ---
> It's a bit ugly... If there's a way to fix it properly, I'm open to suggestions.
> ---
> src/gallium/drivers/nv50/nv50_program.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
> index 48e8db3..c44f537 100644
> --- a/src/gallium/drivers/nv50/nv50_program.c
> +++ b/src/gallium/drivers/nv50/nv50_program.c
> @@ -53,6 +53,13 @@ nv50_vertprog_assign_slots(struct nv50_ir_prog_info *info)
> if (info->in[i].mask & (1 << c))
> info->in[i].slot[c] = n++;
> }
> +
> + // Corner case: VP has no inputs, but we will still need to submit data to
> + // draw it. HW will shout at us and won't draw anything if we don't enable
> + // any input, so let's just pretend it's the first one.
> + if (info->numInputs == 0)
> + prog->vp.attrs[0] |= 0xf;
> +
> prog->in_nr = info->numInputs;
>
> for (i = 0; i < info->numSysVals; ++i) {
Ah thank you, I've been wondering how to make the nv50 draw without any
inputs (on nvc0 it just works even if you don't enable any).
2 issues though:
- please don't use C++ style comments in here (the style guardians would
sooner or later patch this up)
- if InstanceID or VertexID are used, enabling any inputs will move them
to a different position in input space, they always come after all the
ordinary vertex attributes; see usage of the "unsigned n" in the code
directly above & below
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [mesa PATCH] nv50: handle VP without inputs
[not found] ` <4FA6CB71.9070308-oe7qfRrRQffzPE21tAIdciO7C/xPubJB@public.gmane.org>
@ 2012-05-06 20:54 ` Marcin Slusarz
0 siblings, 0 replies; 3+ messages in thread
From: Marcin Slusarz @ 2012-05-06 20:54 UTC (permalink / raw)
To: Christoph Bumiller; +Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
On Sun, May 06, 2012 at 09:05:21PM +0200, Christoph Bumiller wrote:
> On 06.05.2012 20:53, Marcin Slusarz wrote:
> > Fixes 3 piglit tests:
> > general/pos-array
> > shaders/glsl-novertexdata
> > shaders/glsl-vs-point-size
> > and makes shaders/vp-ignore-input not trigger PGRAPH DATA_ERROR
> > ---
> > It's a bit ugly... If there's a way to fix it properly, I'm open to suggestions.
> > ---
> > src/gallium/drivers/nv50/nv50_program.c | 7 +++++++
> > 1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
> > index 48e8db3..c44f537 100644
> > --- a/src/gallium/drivers/nv50/nv50_program.c
> > +++ b/src/gallium/drivers/nv50/nv50_program.c
> > @@ -53,6 +53,13 @@ nv50_vertprog_assign_slots(struct nv50_ir_prog_info *info)
> > if (info->in[i].mask & (1 << c))
> > info->in[i].slot[c] = n++;
> > }
> > +
> > + // Corner case: VP has no inputs, but we will still need to submit data to
> > + // draw it. HW will shout at us and won't draw anything if we don't enable
> > + // any input, so let's just pretend it's the first one.
> > + if (info->numInputs == 0)
> > + prog->vp.attrs[0] |= 0xf;
> > +
> > prog->in_nr = info->numInputs;
> >
> > for (i = 0; i < info->numSysVals; ++i) {
> Ah thank you, I've been wondering how to make the nv50 draw without any
> inputs (on nvc0 it just works even if you don't enable any).
>
> 2 issues though:
> - please don't use C++ style comments in here (the style guardians would
> sooner or later patch this up)
> - if InstanceID or VertexID are used, enabling any inputs will move them
> to a different position in input space, they always come after all the
> ordinary vertex attributes; see usage of the "unsigned n" in the code
> directly above & below
Thanks. I hacked glsl-vs-point-size test to use gl_VertexID/gl_InstanceID and
it indeed failed. But patch below works in all cases :).
---
From: Marcin Slusarz <marcin.slusarz-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: [PATCH] nv50: handle VP without inputs
Fixes 3 piglit tests:
general/pos-array
shaders/glsl-novertexdata
shaders/glsl-vs-point-size
and makes shaders/vp-ignore-input not trigger PGRAPH DATA_ERROR
---
src/gallium/drivers/nv50/nv50_program.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index 48e8db3..e6f1097 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -68,6 +68,17 @@ nv50_vertprog_assign_slots(struct nv50_ir_prog_info *info)
break;
}
}
+
+ /*
+ * Corner case: VP has no inputs, but we will still need to submit data to
+ * draw it. HW will shout at us and won't draw anything if we don't enable
+ * any input, so let's just pretend it's the first one.
+ */
+ if (prog->vp.attrs[0] == 0 &&
+ prog->vp.attrs[1] == 0 &&
+ prog->vp.attrs[2] == 0)
+ prog->vp.attrs[0] |= 0xf;
+
/* VertexID before InstanceID */
if (info->io.vertexId < info->numSysVals)
info->sv[info->io.vertexId].slot[0] = n++;
--
1.7.8.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-05-06 20:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-06 18:53 [mesa PATCH] nv50: handle VP without inputs Marcin Slusarz
[not found] ` <20120506185308.GC4311-OI9uyE9O0yo@public.gmane.org>
2012-05-06 19:05 ` Christoph Bumiller
[not found] ` <4FA6CB71.9070308-oe7qfRrRQffzPE21tAIdciO7C/xPubJB@public.gmane.org>
2012-05-06 20:54 ` Marcin Slusarz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.