[Mesa-dev] [PATCH 2/4] gallium: Add PIPE_CAP_START_INSTANCE

Brian Paul brianp at vmware.com
Mon Jun 18 11:30:51 PDT 2012


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
> @@ -126,7 +126,8 @@ 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
> +++ b/src/gallium/drivers/i915/i915_screen.c
> @@ -206,6 +206,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
>      case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
>      case PIPE_CAP_VERTEX_COLOR_UNCLAMPED:
>      case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
> +   case PIPE_CAP_START_INSTANCE:
>         return 0;
>
>      case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
> diff --git a/src/gallium/drivers/nv30/nv30_screen.c b/src/gallium/drivers/nv30/nv30_screen.c
> index f9e647d..ffb49c9 100644
> --- a/src/gallium/drivers/nv30/nv30_screen.c
> +++ b/src/gallium/drivers/nv30/nv30_screen.c
> @@ -115,6 +115,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>      case PIPE_CAP_VERTEX_COLOR_UNCLAMPED:
>      case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
>      case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
> +   case PIPE_CAP_START_INSTANCE:
>         return 0;
>      case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
>      case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
> diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
> index 9567abb..6c3f69f 100644
> --- a/src/gallium/drivers/nv50/nv50_screen.c
> +++ b/src/gallium/drivers/nv50/nv50_screen.c
> @@ -148,6 +148,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>      case PIPE_CAP_CONDITIONAL_RENDER:
>      case PIPE_CAP_TEXTURE_BARRIER:
>      case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
> +   case PIPE_CAP_START_INSTANCE:
>         return 1;
>      case PIPE_CAP_TGSI_CAN_COMPACT_VARYINGS:
>      case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
> diff --git a/src/gallium/drivers/nvc0/nvc0_screen.c b/src/gallium/drivers/nvc0/nvc0_screen.c
> index 49d6118..0ed3a56 100644
> --- a/src/gallium/drivers/nvc0/nvc0_screen.c
> +++ b/src/gallium/drivers/nvc0/nvc0_screen.c
> @@ -136,6 +136,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>      case PIPE_CAP_CONDITIONAL_RENDER:
>      case PIPE_CAP_TEXTURE_BARRIER:
>      case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
> +   case PIPE_CAP_START_INSTANCE:
>         return 1;
>      case PIPE_CAP_TGSI_CAN_COMPACT_VARYINGS:
>      case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
> diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
> index da47fa2..749c850 100644
> --- a/src/gallium/drivers/r300/r300_screen.c
> +++ b/src/gallium/drivers/r300/r300_screen.c
> @@ -147,6 +147,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
>           case PIPE_CAP_FRAGMENT_COLOR_CLAMPED:
>           case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
>           case PIPE_CAP_COMPUTE:
> +        case PIPE_CAP_START_INSTANCE:
>               return 0;
>
>           /* SWTCL-only features. */
> diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
> index e0ee823..2155ad7 100644
> --- a/src/gallium/drivers/r600/r600_pipe.c
> +++ b/src/gallium/drivers/r600/r600_pipe.c
> @@ -383,6 +383,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
>   	case PIPE_CAP_USER_INDEX_BUFFERS:
>   	case PIPE_CAP_USER_CONSTANT_BUFFERS:
>   	case PIPE_CAP_COMPUTE:
> +	case PIPE_CAP_START_INSTANCE:
>   		return 1;
>
>   	case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
> diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
> index 8dd7137..e58a35d 100644
> --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
> +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
> @@ -325,6 +325,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
>   	case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
>   	case PIPE_CAP_USER_INDEX_BUFFERS:
>   	case PIPE_CAP_USER_CONSTANT_BUFFERS:
> +	case PIPE_CAP_START_INSTANCE:
>   		return 1;
>
>   	case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
> diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
> index 64ec658..b137e95 100644
> --- a/src/gallium/drivers/svga/svga_screen.c
> +++ b/src/gallium/drivers/svga/svga_screen.c
> @@ -243,6 +243,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
>      case PIPE_CAP_GLSL_FEATURE_LEVEL:
>      case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
>      case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
> +   case PIPE_CAP_START_INSTANCE:
>         return 0;
>      case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
>         return 1;
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index 585cab2..479b26e 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -484,7 +484,8 @@ enum pipe_cap {
>      PIPE_CAP_COMPUTE = 68,
>      PIPE_CAP_USER_INDEX_BUFFERS = 69,
>      PIPE_CAP_USER_CONSTANT_BUFFERS = 70,
> -   PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT = 71
> +   PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT = 71,
> +   PIPE_CAP_START_INSTANCE = 72
>   };
>
>   /**

Looks good.  I didn't realize that we already had the 
pipe_draw_info::tart_instance field.

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


More information about the mesa-dev mailing list