Fredrik Höglund | 15 Jun 2012 23:38
Picon
Favicon

[PATCH 0/4] Implement GL_ARB_base_instance

This patch series adds support for ARB_base_instance in core mesa
and the mesa state tracker.

According to the ARB_draw_instanced spec it's not legal to call
the DrawInstanced entry points during display list compilation,
but the ARB_base_instance spec doesn't say anything about this.
I made the new entry points generate the same error for now,
since I assume that this is an omission.

Also note I'm not all that familiar with the vbo module, so it's
quite possible that I've overlooked something there.

Please review and push if there are no issues.

Fredrik Höglund (4):
      mesa: Add support for GL_ARB_base_instance
      gallium: Add PIPE_CAP_START_INSTANCE
      st/mesa: Add support for GL_ARB_base_instance
      docs: update GL3.txt for ARB_base_instance

 docs/GL3.txt                                 |    2 +-
 src/gallium/docs/source/screen.rst           |    3 +-
 src/gallium/drivers/i915/i915_screen.c       |    1 +
 src/gallium/drivers/nv30/nv30_screen.c       |    1 +
 src/gallium/drivers/nv50/nv50_screen.c       |    1 +
 src/gallium/drivers/nvc0/nvc0_screen.c       |    1 +
 src/gallium/drivers/r300/r300_screen.c       |    1 +
 src/gallium/drivers/r600/r600_pipe.c         |    1 +
 src/gallium/drivers/radeonsi/radeonsi_pipe.c |    1 +
 src/gallium/drivers/svga/svga_screen.c       |    1 +
(Continue reading)

Fredrik Höglund | 15 Jun 2012 23:38
Picon
Favicon

[PATCH 3/4] st/mesa: Add support for GL_ARB_base_instance

---
 src/mesa/state_tracker/st_draw.c       |    1 +
 src/mesa/state_tracker/st_extensions.c |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index db8caa5..5084912 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
 <at>  <at>  -246,6 +246,7  <at>  <at>  st_draw_vbo(struct gl_context *ctx,
       info.mode = translate_prim( ctx, prims[i].mode );
       info.start = prims[i].start;
       info.count = prims[i].count;
+      info.start_instance = prims[i].baseinstance;
       info.instance_count = prims[i].num_instances;
       info.index_bias = prims[i].basevertex;
       if (!ib) {
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index a9071f5..17f271f 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
 <at>  <at>  -337,6 +337,7  <at>  <at>  void st_init_extensions(struct st_context *st)
    GLboolean *extensions = (GLboolean *) &ctx->Extensions;

    static const struct st_extension_cap_mapping cap_mapping[] = {
+      { o(ARB_base_instance),                PIPE_CAP_START_INSTANCE                   },
       { o(ARB_depth_clamp),                  PIPE_CAP_DEPTH_CLIP_DISABLE               },
       { o(ARB_depth_texture),                PIPE_CAP_TEXTURE_SHADOW_MAP               },
       { o(ARB_draw_buffers_blend),           PIPE_CAP_INDEP_BLEND_FUNC                 },
--

-- 
(Continue reading)

Brian Paul | 18 Jun 2012 20:31
Favicon

Re: [PATCH 3/4] st/mesa: Add support for GL_ARB_base_instance

On 06/15/2012 03:38 PM, Fredrik Höglund wrote:
> ---
>   src/mesa/state_tracker/st_draw.c       |    1 +
>   src/mesa/state_tracker/st_extensions.c |    1 +
>   2 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
> index db8caa5..5084912 100644
> --- a/src/mesa/state_tracker/st_draw.c
> +++ b/src/mesa/state_tracker/st_draw.c
>  <at>  <at>  -246,6 +246,7  <at>  <at>  st_draw_vbo(struct gl_context *ctx,
>         info.mode = translate_prim( ctx, prims[i].mode );
>         info.start = prims[i].start;
>         info.count = prims[i].count;
> +      info.start_instance = prims[i].baseinstance;
>         info.instance_count = prims[i].num_instances;
>         info.index_bias = prims[i].basevertex;
>         if (!ib) {
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index a9071f5..17f271f 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
>  <at>  <at>  -337,6 +337,7  <at>  <at>  void st_init_extensions(struct st_context *st)
>      GLboolean *extensions = (GLboolean *)&ctx->Extensions;
>
>      static const struct st_extension_cap_mapping cap_mapping[] = {
> +      { o(ARB_base_instance),                PIPE_CAP_START_INSTANCE                   },
>         { o(ARB_depth_clamp),                  PIPE_CAP_DEPTH_CLIP_DISABLE               },
>         { o(ARB_depth_texture),                PIPE_CAP_TEXTURE_SHADOW_MAP               },
>         { o(ARB_draw_buffers_blend),           PIPE_CAP_INDEP_BLEND_FUNC                 },
(Continue reading)

Fredrik Höglund | 15 Jun 2012 23:38
Picon
Favicon

[PATCH 1/4] mesa: Add support for GL_ARB_base_instance

---
 src/mapi/glapi/gen/ARB_base_instance.xml |   40 +++++++++++
 src/mapi/glapi/gen/Makefile              |    1 +
 src/mapi/glapi/gen/gl_API.xml            |    3 +-
 src/mesa/main/dd.h                       |   10 +++
 src/mesa/main/dlist.c                    |   45 ++++++++++++
 src/mesa/main/extensions.c               |    1 +
 src/mesa/main/mtypes.h                   |    1 +
 src/mesa/main/vtxfmt.c                   |    3 +
 src/mesa/vbo/vbo.h                       |    1 +
 src/mesa/vbo/vbo_exec_api.c              |    1 +
 src/mesa/vbo/vbo_exec_array.c            |  114 +++++++++++++++++++++++++++---
 src/mesa/vbo/vbo_save_api.c              |    2 +
 src/mesa/vbo/vbo_split_inplace.c         |    6 +-
 13 files changed, 216 insertions(+), 12 deletions(-)
 create mode 100644 src/mapi/glapi/gen/ARB_base_instance.xml

diff --git a/src/mapi/glapi/gen/ARB_base_instance.xml b/src/mapi/glapi/gen/ARB_base_instance.xml
new file mode 100644
index 0000000..8e81553
--- /dev/null
+++ b/src/mapi/glapi/gen/ARB_base_instance.xml
 <at>  <at>  -0,0 +1,40  <at>  <at> 
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
(Continue reading)

Brian Paul | 18 Jun 2012 20:28
Favicon

Re: [PATCH 1/4] mesa: Add support for GL_ARB_base_instance

On 06/15/2012 03:38 PM, Fredrik Höglund wrote:
> ---
>   src/mapi/glapi/gen/ARB_base_instance.xml |   40 +++++++++++
>   src/mapi/glapi/gen/Makefile              |    1 +
>   src/mapi/glapi/gen/gl_API.xml            |    3 +-
>   src/mesa/main/dd.h                       |   10 +++
>   src/mesa/main/dlist.c                    |   45 ++++++++++++
>   src/mesa/main/extensions.c               |    1 +
>   src/mesa/main/mtypes.h                   |    1 +
>   src/mesa/main/vtxfmt.c                   |    3 +
>   src/mesa/vbo/vbo.h                       |    1 +
>   src/mesa/vbo/vbo_exec_api.c              |    1 +
>   src/mesa/vbo/vbo_exec_array.c            |  114 +++++++++++++++++++++++++++---
>   src/mesa/vbo/vbo_save_api.c              |    2 +
>   src/mesa/vbo/vbo_split_inplace.c         |    6 +-
>   13 files changed, 216 insertions(+), 12 deletions(-)
>   create mode 100644 src/mapi/glapi/gen/ARB_base_instance.xml
>
> diff --git a/src/mapi/glapi/gen/ARB_base_instance.xml b/src/mapi/glapi/gen/ARB_base_instance.xml
> new file mode 100644
> index 0000000..8e81553
> --- /dev/null
> +++ b/src/mapi/glapi/gen/ARB_base_instance.xml
>  <at>  <at>  -0,0 +1,40  <at>  <at> 
> +<?xml version="1.0"?>
> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> +
> +<!-- Note: no GLX protocol info yet. -->
> +
> +
(Continue reading)

Fredrik Höglund | 18 Jun 2012 22:08
Picon
Favicon

Re: [PATCH 1/4] mesa: Add support for GL_ARB_base_instance

On Monday 18 June 2012, Brian Paul wrote:
> On 06/15/2012 03:38 PM, Fredrik Höglund wrote:
> > ---
> >   src/mapi/glapi/gen/ARB_base_instance.xml |   40 +++++++++++
> >   src/mapi/glapi/gen/Makefile              |    1 +
> >   src/mapi/glapi/gen/gl_API.xml            |    3 +-
> >   src/mesa/main/dd.h                       |   10 +++
> >   src/mesa/main/dlist.c                    |   45 ++++++++++++
> >   src/mesa/main/extensions.c               |    1 +
> >   src/mesa/main/mtypes.h                   |    1 +
> >   src/mesa/main/vtxfmt.c                   |    3 +
> >   src/mesa/vbo/vbo.h                       |    1 +
> >   src/mesa/vbo/vbo_exec_api.c              |    1 +
> >   src/mesa/vbo/vbo_exec_array.c            |  114 +++++++++++++++++++++++++++---
> >   src/mesa/vbo/vbo_save_api.c              |    2 +
> >   src/mesa/vbo/vbo_split_inplace.c         |    6 +-
> >   13 files changed, 216 insertions(+), 12 deletions(-)
> >   create mode 100644 src/mapi/glapi/gen/ARB_base_instance.xml
> >
> > diff --git a/src/mapi/glapi/gen/ARB_base_instance.xml b/src/mapi/glapi/gen/ARB_base_instance.xml
> > new file mode 100644
> > index 0000000..8e81553
> > --- /dev/null
> > +++ b/src/mapi/glapi/gen/ARB_base_instance.xml
> >  <at>  <at>  -0,0 +1,40  <at>  <at> 
> > +<?xml version="1.0"?>
> > +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> > +
> > +<!-- Note: no GLX protocol info yet. -->
> > +
(Continue reading)

Fredrik Höglund | 15 Jun 2012 23:38
Picon
Favicon

[PATCH 4/4] docs: update GL3.txt for ARB_base_instance

---
 docs/GL3.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/docs/GL3.txt b/docs/GL3.txt
index 17136de..89b46c0 100644
--- a/docs/GL3.txt
+++ b/docs/GL3.txt
 <at>  <at>  -119,7 +119,7  <at>  <at>  GL_ARB_compressed_texture_pixel_storage              not started
 GL_ARB_shader_atomic_counters                        not started
 GL_ARB_texture_storage                               DONE (r300, r600, swrast)
 GL_ARB_transform_feedback_instanced                  not started
-GL_ARB_base_instance                                 not started
+GL_ARB_base_instance                                 DONE (nv50, nvc0, r600, radeonsi)
 GL_ARB_shader_image_load_store                       not started
 GL_ARB_conservative_depth                            DONE (softpipe)
 GL_ARB_shading_language_420pack                      not started
--

-- 
1.7.7.3
Brian Paul | 18 Jun 2012 20:32
Favicon

Re: [PATCH 4/4] docs: update GL3.txt for ARB_base_instance

On 06/15/2012 03:38 PM, Fredrik Höglund wrote:
> ---
>   docs/GL3.txt |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/docs/GL3.txt b/docs/GL3.txt
> index 17136de..89b46c0 100644
> --- a/docs/GL3.txt
> +++ b/docs/GL3.txt
>  <at>  <at>  -119,7 +119,7  <at>  <at>  GL_ARB_compressed_texture_pixel_storage              not started
>   GL_ARB_shader_atomic_counters                        not started
>   GL_ARB_texture_storage                               DONE (r300, r600, swrast)
>   GL_ARB_transform_feedback_instanced                  not started
> -GL_ARB_base_instance                                 not started
> +GL_ARB_base_instance                                 DONE (nv50, nvc0, r600, radeonsi)
>   GL_ARB_shader_image_load_store                       not started
>   GL_ARB_conservative_depth                            DONE (softpipe)
>   GL_ARB_shading_language_420pack                      not started

Reviewed-by: Brian Paul <brianp <at> vmware.com>

We should start a docs/relnotes-8.1.html file and list this extension 
as a new feature...

-Brian
Fredrik Höglund | 15 Jun 2012 23:38
Picon
Favicon

[PATCH 2/4] gallium: Add PIPE_CAP_START_INSTANCE

---
 src/gallium/docs/source/screen.rst           |    3 ++-
 src/gallium/drivers/i915/i915_screen.c       |    1 +
 src/gallium/drivers/nv30/nv30_screen.c       |    1 +
 src/gallium/drivers/nv50/nv50_screen.c       |    1 +
 src/gallium/drivers/nvc0/nvc0_screen.c       |    1 +
 src/gallium/drivers/r300/r300_screen.c       |    1 +
 src/gallium/drivers/r600/r600_pipe.c         |    1 +
 src/gallium/drivers/radeonsi/radeonsi_pipe.c |    1 +
 src/gallium/drivers/svga/svga_screen.c       |    1 +
 src/gallium/include/pipe/p_defines.h         |    3 ++-
 10 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
index c86e1c6..2c683ef 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
 <at>  <at>  -126,7 +126,8  <at>  <at>  The integer capabilities:
   resources.
 * ``PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT``: Describes the required
   alignment of pipe_constant_buffer::buffer_offset.
-
+* ``PIPE_CAP_START_INSTANCE``: Whether the driver supports
+  pipe_draw_info::start_instance.

 
 .. _pipe_capf:
diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c
index 0046860..9f29339 100644
--- a/src/gallium/drivers/i915/i915_screen.c
(Continue reading)

Brian Paul | 18 Jun 2012 20:30
Favicon

Re: [PATCH 2/4] gallium: Add PIPE_CAP_START_INSTANCE

On 06/15/2012 03:38 PM, Fredrik Höglund wrote:
> ---
>   src/gallium/docs/source/screen.rst           |    3 ++-
>   src/gallium/drivers/i915/i915_screen.c       |    1 +
>   src/gallium/drivers/nv30/nv30_screen.c       |    1 +
>   src/gallium/drivers/nv50/nv50_screen.c       |    1 +
>   src/gallium/drivers/nvc0/nvc0_screen.c       |    1 +
>   src/gallium/drivers/r300/r300_screen.c       |    1 +
>   src/gallium/drivers/r600/r600_pipe.c         |    1 +
>   src/gallium/drivers/radeonsi/radeonsi_pipe.c |    1 +
>   src/gallium/drivers/svga/svga_screen.c       |    1 +
>   src/gallium/include/pipe/p_defines.h         |    3 ++-
>   10 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
> index c86e1c6..2c683ef 100644
> --- a/src/gallium/docs/source/screen.rst
> +++ b/src/gallium/docs/source/screen.rst
>  <at>  <at>  -126,7 +126,8  <at>  <at>  The integer capabilities:
>     resources.
>   * ``PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT``: Describes the required
>     alignment of pipe_constant_buffer::buffer_offset.
> -
> +* ``PIPE_CAP_START_INSTANCE``: Whether the driver supports
> +  pipe_draw_info::start_instance.
>
>
>   .. _pipe_capf:
> diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c
> index 0046860..9f29339 100644
(Continue reading)


Gmane