All of lore.kernel.org
 help / color / mirror / Atom feed
* Small patch for nv50_vbo.c
@ 2020-10-19  7:53 Andrew Randrianasulu
       [not found] ` <202010191053.23735.randrianasulu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Andrew Randrianasulu @ 2020-10-19  7:53 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Hi all!

I saw TODO comment in nv50_vbo.c and decided to look at similar file, nvc0_vbo.c. I copied those two lines into nv50 with slight name change (nvc0->nv50) and apparently it doesn't fix any OpenGL app I have, but does not broke them further (I have compute pacthes currently applied, so some breakage expected).

diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
index 8d1c8c7665b..29b63a525aa 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
@@ -189,8 +189,12 @@ nv50_user_vbuf_range(struct nv50_context *nv50, unsigned vbi,
    assert(vbi < PIPE_MAX_ATTRIBS);
    if (unlikely(nv50->vertex->instance_bufs & (1 << vbi))) {
       /* TODO: use min and max instance divisor to get a proper range */
-      *base = 0;
-      *size = nv50->vtxbuf[vbi].buffer.resource->width0;
+      const uint32_t div = nv50->vertex->min_instance_div[vbi];
+      *base = nv50->instance_off * nv50->vtxbuf[vbi].stride;
+      *size = (nv50->instance_max / div) * nv50->vtxbuf[vbi].stride +
+         nv50->vertex->vb_access_size[vbi];
+//      *base = 0;
+//      *size = nv50->vtxbuf[vbi].buffer.resource->width0;
    } else {
       /* NOTE: if there are user buffers, we *must* have index bounds */
       assert(nv50->vb_elt_limit != ~0);

Does this look correct?

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: Small patch for nv50_vbo.c
       [not found] ` <202010191053.23735.randrianasulu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2020-10-19 13:55   ` Ilia Mirkin
  0 siblings, 0 replies; 2+ messages in thread
From: Ilia Mirkin @ 2020-10-19 13:55 UTC (permalink / raw)
  To: Andrew Randrianasulu; +Cc: nouveau

This isn't meant to fix applications, it's meant to limit the range of
access to the buffer, for robustness/etc reasons. One would have to
look very carefully, as all this logic is rather tricky.

On Mon, Oct 19, 2020 at 4:07 AM Andrew Randrianasulu
<randrianasulu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> Hi all!
>
> I saw TODO comment in nv50_vbo.c and decided to look at similar file, nvc0_vbo.c. I copied those two lines into nv50 with slight name change (nvc0->nv50) and apparently it doesn't fix any OpenGL app I have, but does not broke them further (I have compute pacthes currently applied, so some breakage expected).
>
> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
> index 8d1c8c7665b..29b63a525aa 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
> +++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
> @@ -189,8 +189,12 @@ nv50_user_vbuf_range(struct nv50_context *nv50, unsigned vbi,
>     assert(vbi < PIPE_MAX_ATTRIBS);
>     if (unlikely(nv50->vertex->instance_bufs & (1 << vbi))) {
>        /* TODO: use min and max instance divisor to get a proper range */
> -      *base = 0;
> -      *size = nv50->vtxbuf[vbi].buffer.resource->width0;
> +      const uint32_t div = nv50->vertex->min_instance_div[vbi];
> +      *base = nv50->instance_off * nv50->vtxbuf[vbi].stride;
> +      *size = (nv50->instance_max / div) * nv50->vtxbuf[vbi].stride +
> +         nv50->vertex->vb_access_size[vbi];
> +//      *base = 0;
> +//      *size = nv50->vtxbuf[vbi].buffer.resource->width0;
>     } else {
>        /* NOTE: if there are user buffers, we *must* have index bounds */
>        assert(nv50->vb_elt_limit != ~0);
>
> Does this look correct?
>
>
> _______________________________________________
> Nouveau mailing list
> Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-10-19 13:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-19  7:53 Small patch for nv50_vbo.c Andrew Randrianasulu
     [not found] ` <202010191053.23735.randrianasulu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-10-19 13:55   ` Ilia Mirkin

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.