static void
upload_clip_state(struct brw_context *brw)
{
- struct intel_context *intel = &brw->intel;
- struct gl_context *ctx = &intel->ctx;
+ struct gl_context *ctx = &brw->ctx;
uint32_t dw1 = 0, dw2 = 0;
/* _NEW_BUFFERS */
dw2 |= GEN6_CLIP_GB_TEST;
}
+ /* BRW_NEW_RASTERIZER_DISCARD */
+ if (ctx->RasterDiscard) {
+ dw2 |= GEN6_CLIP_MODE_REJECT_ALL;
+ perf_debug("Rasterizer discard is currently implemented via the clipper; "
+ "using the SOL unit may be faster.");
+ }
+
BEGIN_BATCH(4);
OUT_BATCH(_3DSTATE_CLIP << 16 | (4 - 2));
OUT_BATCH(dw1);
dw2);
OUT_BATCH(U_FIXED(0.125, 3) << GEN6_CLIP_MIN_POINT_WIDTH_SHIFT |
U_FIXED(255.875, 3) << GEN6_CLIP_MAX_POINT_WIDTH_SHIFT |
- GEN6_CLIP_FORCE_ZERO_RTAINDEX);
+ (fb->Layered ? 0 : GEN6_CLIP_FORCE_ZERO_RTAINDEX));
ADVANCE_BATCH();
}
_NEW_POLYGON |
_NEW_LIGHT |
_NEW_TRANSFORM),
- .brw = BRW_NEW_CONTEXT | BRW_NEW_META_IN_PROGRESS,
+ .brw = BRW_NEW_CONTEXT |
+ BRW_NEW_META_IN_PROGRESS |
+ BRW_NEW_RASTERIZER_DISCARD,
.cache = CACHE_NEW_WM_PROG
},
.emit = upload_clip_state,