static void
gen6_upload_clip_vp(struct brw_context *brw)
{
- struct gl_context *ctx = &brw->intel.ctx;
+ struct gl_context *ctx = &brw->ctx;
struct brw_clipper_viewport *vp;
vp = brw_state_batch(brw, AUB_TRACE_CLIP_VP_STATE,
sizeof(*vp), 32, &brw->clip.vp_offset);
- /* According to the Sandybridge PRM, Volume 2, Part 1, Section 6.3.8
- * "Vertex X,Y Clamping and Quantization", the screen-aligned 2D
- * bounding-box of an object must not exceed 16K pixels in either X or Y.
+ /* According to the "Vertex X,Y Clamping and Quantization" section of the
+ * Strips and Fans documentation, objects must not have a screen-space
+ * extents of over 8192 pixels, or they may be mis-rasterized. The maximum
+ * screen space coordinates of a small object may larger, but we have no
+ * way to enforce the object size other than through clipping.
+ *
+ * If you're surprised that we set clip to -gbx to +gbx and it seems like
+ * we'll end up with 16384 wide, note that for a 8192-wide render target,
+ * we'll end up with a normal (-1, 1) clip volume that just covers the
+ * drawable.
*/
- const float maximum_post_clamp_delta = 16384;
+ const float maximum_post_clamp_delta = 8192;
float gbx = maximum_post_clamp_delta / (float) ctx->Viewport.Width;
float gby = maximum_post_clamp_delta / (float) ctx->Viewport.Height;
static void
gen6_upload_sf_vp(struct brw_context *brw)
{
- struct gl_context *ctx = &brw->intel.ctx;
+ struct gl_context *ctx = &brw->ctx;
const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
struct brw_sf_viewport *sfv;
GLfloat y_scale, y_bias;
static void upload_viewport_state_pointers(struct brw_context *brw)
{
- struct intel_context *intel = &brw->intel;
-
BEGIN_BATCH(4);
OUT_BATCH(_3DSTATE_VIEWPORT_STATE_POINTERS << 16 | (4 - 2) |
GEN6_CC_VIEWPORT_MODIFY |