[Mesa-dev] [PATCH v3] main: use new driver flag for conservative rasterization state

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Dec 13 13:47:57 UTC 2016


Hi Marek,

Can I have your r-b with this patch?

Cheers,

-
Lionel

On 12/12/16 12:30, Lionel Landwerlin wrote:
> Suggested by Marek.
>
> v2: Use new driver flag (Marek)
>
> v3: Fix i965 comments (Lionel)
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> Cc: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: Marek Olšák <marek.olsak at amd.com>
> ---
>   src/mesa/drivers/dri/i965/brw_context.h      | 2 ++
>   src/mesa/drivers/dri/i965/brw_state_upload.c | 2 ++
>   src/mesa/drivers/dri/i965/gen8_ps_state.c    | 8 ++++----
>   src/mesa/drivers/dri/i965/gen8_sf_state.c    | 5 +++--
>   src/mesa/main/enable.c                       | 4 +++-
>   src/mesa/main/mtypes.h                       | 5 +++++
>   6 files changed, 19 insertions(+), 7 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
> index 550eefedcc..dc47fb17c5 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.h
> +++ b/src/mesa/drivers/dri/i965/brw_context.h
> @@ -226,6 +226,7 @@ enum brw_state_id {
>      BRW_STATE_CC_STATE,
>      BRW_STATE_BLORP,
>      BRW_STATE_VIEWPORT_COUNT,
> +   BRW_STATE_CONSERVATIVE_RASTERIZATION,
>      BRW_NUM_STATE_BITS
>   };
>
> @@ -316,6 +317,7 @@ enum brw_state_id {
>   #define BRW_NEW_URB_SIZE                (1ull << BRW_STATE_URB_SIZE)
>   #define BRW_NEW_CC_STATE                (1ull << BRW_STATE_CC_STATE)
>   #define BRW_NEW_BLORP                   (1ull << BRW_STATE_BLORP)
> +#define BRW_NEW_CONSERVATIVE_RASTERIZATION (1ull << BRW_STATE_CONSERVATIVE_RASTERIZATION)
>
>   struct brw_state_flags {
>      /** State update flags signalled by mesa internals */
> diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c
> index b689ae41f6..d0be6acaf0 100644
> --- a/src/mesa/drivers/dri/i965/brw_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c
> @@ -529,6 +529,7 @@ void brw_init_state( struct brw_context *brw )
>      ctx->DriverFlags.NewAtomicBuffer = BRW_NEW_ATOMIC_BUFFER;
>      ctx->DriverFlags.NewImageUnits = BRW_NEW_IMAGE_UNITS;
>      ctx->DriverFlags.NewDefaultTessLevels = BRW_NEW_DEFAULT_TESS_LEVELS;
> +   ctx->DriverFlags.NewIntelConservativeRasterization = BRW_NEW_CONSERVATIVE_RASTERIZATION;
>   }
>
>
> @@ -663,6 +664,7 @@ static struct dirty_bit_map brw_bits[] = {
>      DEFINE_BIT(BRW_NEW_CC_STATE),
>      DEFINE_BIT(BRW_NEW_BLORP),
>      DEFINE_BIT(BRW_NEW_VIEWPORT_COUNT),
> +   DEFINE_BIT(BRW_NEW_CONSERVATIVE_RASTERIZATION),
>      {0, 0, 0}
>   };
>
> diff --git a/src/mesa/drivers/dri/i965/gen8_ps_state.c b/src/mesa/drivers/dri/i965/gen8_ps_state.c
> index e43192d362..03468267ce 100644
> --- a/src/mesa/drivers/dri/i965/gen8_ps_state.c
> +++ b/src/mesa/drivers/dri/i965/gen8_ps_state.c
> @@ -53,7 +53,7 @@ gen8_upload_ps_extra(struct brw_context *brw,
>      if (prog_data->persample_dispatch)
>         dw1 |= GEN8_PSX_SHADER_IS_PER_SAMPLE;
>
> -   /* _NEW_POLYGON */
> +   /* _NEW_MULTISAMPLE | BRW_NEW_CONSERVATIVE_RASTERIZATION */
>      if (prog_data->uses_sample_mask) {
>         if (brw->gen >= 9) {
>            if (prog_data->post_depth_coverage)
> @@ -131,7 +131,8 @@ const struct brw_tracked_state gen8_ps_extra = {
>         .brw   = BRW_NEW_BLORP |
>                  BRW_NEW_CONTEXT |
>                  BRW_NEW_FRAGMENT_PROGRAM |
> -               BRW_NEW_FS_PROG_DATA,
> +               BRW_NEW_FS_PROG_DATA |
> +               BRW_NEW_CONSERVATIVE_RASTERIZATION,
>      },
>      .emit = upload_ps_extra,
>   };
> @@ -291,8 +292,7 @@ upload_ps_state(struct brw_context *brw)
>
>   const struct brw_tracked_state gen8_ps_state = {
>      .dirty = {
> -      .mesa  = _NEW_MULTISAMPLE |
> -               _NEW_POLYGON,
> +      .mesa  = _NEW_MULTISAMPLE,
>         .brw   = BRW_NEW_BATCH |
>                  BRW_NEW_BLORP |
>                  BRW_NEW_FS_PROG_DATA,
> diff --git a/src/mesa/drivers/dri/i965/gen8_sf_state.c b/src/mesa/drivers/dri/i965/gen8_sf_state.c
> index afe7b52b52..41e94fb504 100644
> --- a/src/mesa/drivers/dri/i965/gen8_sf_state.c
> +++ b/src/mesa/drivers/dri/i965/gen8_sf_state.c
> @@ -319,7 +319,7 @@ upload_raster(struct brw_context *brw)
>         }
>      }
>
> -   /* _NEW_POLYGON */
> +   /* BRW_NEW_CONSERVATIVE_RASTERIZATION */
>      if (ctx->IntelConservativeRasterization) {
>         if (brw->gen >= 9)
>            dw1 |= GEN9_RASTER_CONSERVATIVE_RASTERIZATION_ENABLE;
> @@ -344,7 +344,8 @@ const struct brw_tracked_state gen8_raster_state = {
>                  _NEW_SCISSOR |
>                  _NEW_TRANSFORM,
>         .brw   = BRW_NEW_BLORP |
> -               BRW_NEW_CONTEXT,
> +               BRW_NEW_CONTEXT |
> +               BRW_NEW_CONSERVATIVE_RASTERIZATION,
>      },
>      .emit = upload_raster,
>   };
> diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
> index c9f10abb38..669fe167a5 100644
> --- a/src/mesa/main/enable.c
> +++ b/src/mesa/main/enable.c
> @@ -444,7 +444,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
>               goto invalid_enum_error;
>            if (ctx->IntelConservativeRasterization == state)
>               return;
> -         FLUSH_VERTICES(ctx, _NEW_POLYGON);
> +         FLUSH_VERTICES(ctx, 0);
> +         ctx->NewDriverState |=
> +            ctx->DriverFlags.NewIntelConservativeRasterization;
>            ctx->IntelConservativeRasterization = state;
>            break;
>         case GL_COLOR_LOGIC_OP:
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 71bd89e510..36d48e2115 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -4222,6 +4222,11 @@ struct gl_driver_flags
>       * gl_context::TessCtrlProgram::patch_default_*
>       */
>      uint64_t NewDefaultTessLevels;
> +
> +   /**
> +    * gl_context::IntelConservativeRasterization
> +    */
> +   uint64_t NewIntelConservativeRasterization;
>   };
>
>   struct gl_uniform_buffer_binding
> --
> 2.11.0
>



More information about the mesa-dev mailing list