[Mesa-dev] [PATCH 2/2] i965/gen7.5: Allow HW primitive restart for all primitive types.

Jordan Justen jljusten at gmail.com
Mon Apr 8 13:46:31 PDT 2013


Series Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On Mon, Apr 8, 2013 at 11:57 AM, Paul Berry <stereotype441 at gmail.com> wrote:
> Gen7.5 (Haswell) hardware supports primitive restart for all primitive
> types.  It also handles all possible primitive restart indices.
> Rather than specialize both can_cut_index_handle_restart_index() and
> the switch statement in can_cut_index_handle_prims() for Haswell, just
> return early if the hardware is Haswell because we know it can handle
> everything.
>
> Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_primitive_restart.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_primitive_restart.c b/src/mesa/drivers/dri/i965/brw_primitive_restart.c
> index e6902b4..10581b3 100644
> --- a/src/mesa/drivers/dri/i965/brw_primitive_restart.c
> +++ b/src/mesa/drivers/dri/i965/brw_primitive_restart.c
> @@ -36,18 +36,12 @@
>
>  /**
>   * Check if the hardware's cut index support can handle the primitive
> - * restart index value.
> + * restart index value (pre-Haswell only).
>   */
>  static bool
>  can_cut_index_handle_restart_index(struct gl_context *ctx,
>                                     const struct _mesa_index_buffer *ib)
>  {
> -   struct intel_context *intel = intel_context(ctx);
> -
> -   /* Haswell supports an arbitrary cut index. */
> -   if (intel->is_haswell)
> -      return true;
> -
>     bool cut_index_will_work;
>
>     switch (ib->type) {
> @@ -78,6 +72,7 @@ can_cut_index_handle_prims(struct gl_context *ctx,
>                             GLuint nr_prims,
>                             const struct _mesa_index_buffer *ib)
>  {
> +   struct intel_context *intel = intel_context(ctx);
>     struct brw_context *brw = brw_context(ctx);
>
>     if (brw->sol.counting_primitives_generated ||
> @@ -90,6 +85,10 @@ can_cut_index_handle_prims(struct gl_context *ctx,
>        return false;
>     }
>
> +   /* Otherwise Haswell can do it all. */
> +   if (intel->is_haswell)
> +      return true;
> +
>     if (!can_cut_index_handle_restart_index(ctx, ib)) {
>        /* The primitive restart index can't be handled, so take
>         * the software path
> --
> 1.8.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list