main: use new driver flag for conservative rasterization state
Suggested by Marek. v2: Use new driver flag (Marek) v3: Fix i965 comments (Lionel) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -226,6 +226,7 @@ enum brw_state_id {
|
|||||||
BRW_STATE_CC_STATE,
|
BRW_STATE_CC_STATE,
|
||||||
BRW_STATE_BLORP,
|
BRW_STATE_BLORP,
|
||||||
BRW_STATE_VIEWPORT_COUNT,
|
BRW_STATE_VIEWPORT_COUNT,
|
||||||
|
BRW_STATE_CONSERVATIVE_RASTERIZATION,
|
||||||
BRW_NUM_STATE_BITS
|
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_URB_SIZE (1ull << BRW_STATE_URB_SIZE)
|
||||||
#define BRW_NEW_CC_STATE (1ull << BRW_STATE_CC_STATE)
|
#define BRW_NEW_CC_STATE (1ull << BRW_STATE_CC_STATE)
|
||||||
#define BRW_NEW_BLORP (1ull << BRW_STATE_BLORP)
|
#define BRW_NEW_BLORP (1ull << BRW_STATE_BLORP)
|
||||||
|
#define BRW_NEW_CONSERVATIVE_RASTERIZATION (1ull << BRW_STATE_CONSERVATIVE_RASTERIZATION)
|
||||||
|
|
||||||
struct brw_state_flags {
|
struct brw_state_flags {
|
||||||
/** State update flags signalled by mesa internals */
|
/** State update flags signalled by mesa internals */
|
||||||
|
@@ -529,6 +529,7 @@ void brw_init_state( struct brw_context *brw )
|
|||||||
ctx->DriverFlags.NewAtomicBuffer = BRW_NEW_ATOMIC_BUFFER;
|
ctx->DriverFlags.NewAtomicBuffer = BRW_NEW_ATOMIC_BUFFER;
|
||||||
ctx->DriverFlags.NewImageUnits = BRW_NEW_IMAGE_UNITS;
|
ctx->DriverFlags.NewImageUnits = BRW_NEW_IMAGE_UNITS;
|
||||||
ctx->DriverFlags.NewDefaultTessLevels = BRW_NEW_DEFAULT_TESS_LEVELS;
|
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_CC_STATE),
|
||||||
DEFINE_BIT(BRW_NEW_BLORP),
|
DEFINE_BIT(BRW_NEW_BLORP),
|
||||||
DEFINE_BIT(BRW_NEW_VIEWPORT_COUNT),
|
DEFINE_BIT(BRW_NEW_VIEWPORT_COUNT),
|
||||||
|
DEFINE_BIT(BRW_NEW_CONSERVATIVE_RASTERIZATION),
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -53,7 +53,7 @@ gen8_upload_ps_extra(struct brw_context *brw,
|
|||||||
if (prog_data->persample_dispatch)
|
if (prog_data->persample_dispatch)
|
||||||
dw1 |= GEN8_PSX_SHADER_IS_PER_SAMPLE;
|
dw1 |= GEN8_PSX_SHADER_IS_PER_SAMPLE;
|
||||||
|
|
||||||
/* _NEW_POLYGON */
|
/* _NEW_MULTISAMPLE | BRW_NEW_CONSERVATIVE_RASTERIZATION */
|
||||||
if (prog_data->uses_sample_mask) {
|
if (prog_data->uses_sample_mask) {
|
||||||
if (brw->gen >= 9) {
|
if (brw->gen >= 9) {
|
||||||
if (prog_data->post_depth_coverage)
|
if (prog_data->post_depth_coverage)
|
||||||
@@ -131,7 +131,8 @@ const struct brw_tracked_state gen8_ps_extra = {
|
|||||||
.brw = BRW_NEW_BLORP |
|
.brw = BRW_NEW_BLORP |
|
||||||
BRW_NEW_CONTEXT |
|
BRW_NEW_CONTEXT |
|
||||||
BRW_NEW_FRAGMENT_PROGRAM |
|
BRW_NEW_FRAGMENT_PROGRAM |
|
||||||
BRW_NEW_FS_PROG_DATA,
|
BRW_NEW_FS_PROG_DATA |
|
||||||
|
BRW_NEW_CONSERVATIVE_RASTERIZATION,
|
||||||
},
|
},
|
||||||
.emit = upload_ps_extra,
|
.emit = upload_ps_extra,
|
||||||
};
|
};
|
||||||
@@ -291,8 +292,7 @@ upload_ps_state(struct brw_context *brw)
|
|||||||
|
|
||||||
const struct brw_tracked_state gen8_ps_state = {
|
const struct brw_tracked_state gen8_ps_state = {
|
||||||
.dirty = {
|
.dirty = {
|
||||||
.mesa = _NEW_MULTISAMPLE |
|
.mesa = _NEW_MULTISAMPLE,
|
||||||
_NEW_POLYGON,
|
|
||||||
.brw = BRW_NEW_BATCH |
|
.brw = BRW_NEW_BATCH |
|
||||||
BRW_NEW_BLORP |
|
BRW_NEW_BLORP |
|
||||||
BRW_NEW_FS_PROG_DATA,
|
BRW_NEW_FS_PROG_DATA,
|
||||||
|
@@ -319,7 +319,7 @@ upload_raster(struct brw_context *brw)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* _NEW_POLYGON */
|
/* BRW_NEW_CONSERVATIVE_RASTERIZATION */
|
||||||
if (ctx->IntelConservativeRasterization) {
|
if (ctx->IntelConservativeRasterization) {
|
||||||
if (brw->gen >= 9)
|
if (brw->gen >= 9)
|
||||||
dw1 |= GEN9_RASTER_CONSERVATIVE_RASTERIZATION_ENABLE;
|
dw1 |= GEN9_RASTER_CONSERVATIVE_RASTERIZATION_ENABLE;
|
||||||
@@ -344,7 +344,8 @@ const struct brw_tracked_state gen8_raster_state = {
|
|||||||
_NEW_SCISSOR |
|
_NEW_SCISSOR |
|
||||||
_NEW_TRANSFORM,
|
_NEW_TRANSFORM,
|
||||||
.brw = BRW_NEW_BLORP |
|
.brw = BRW_NEW_BLORP |
|
||||||
BRW_NEW_CONTEXT,
|
BRW_NEW_CONTEXT |
|
||||||
|
BRW_NEW_CONSERVATIVE_RASTERIZATION,
|
||||||
},
|
},
|
||||||
.emit = upload_raster,
|
.emit = upload_raster,
|
||||||
};
|
};
|
||||||
|
@@ -444,7 +444,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
|||||||
goto invalid_enum_error;
|
goto invalid_enum_error;
|
||||||
if (ctx->IntelConservativeRasterization == state)
|
if (ctx->IntelConservativeRasterization == state)
|
||||||
return;
|
return;
|
||||||
FLUSH_VERTICES(ctx, _NEW_POLYGON);
|
FLUSH_VERTICES(ctx, 0);
|
||||||
|
ctx->NewDriverState |=
|
||||||
|
ctx->DriverFlags.NewIntelConservativeRasterization;
|
||||||
ctx->IntelConservativeRasterization = state;
|
ctx->IntelConservativeRasterization = state;
|
||||||
break;
|
break;
|
||||||
case GL_COLOR_LOGIC_OP:
|
case GL_COLOR_LOGIC_OP:
|
||||||
|
@@ -4222,6 +4222,11 @@ struct gl_driver_flags
|
|||||||
* gl_context::TessCtrlProgram::patch_default_*
|
* gl_context::TessCtrlProgram::patch_default_*
|
||||||
*/
|
*/
|
||||||
uint64_t NewDefaultTessLevels;
|
uint64_t NewDefaultTessLevels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gl_context::IntelConservativeRasterization
|
||||||
|
*/
|
||||||
|
uint64_t NewIntelConservativeRasterization;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gl_uniform_buffer_binding
|
struct gl_uniform_buffer_binding
|
||||||
|
Reference in New Issue
Block a user