dw2 = GEN6_CLIP_DW2_CLIP_ENABLE |
GEN6_CLIP_DW2_XY_TEST_ENABLE |
- GEN6_CLIP_DW2_APIMODE_OGL |
(vs->enable_user_clip ? 1 : 0) << GEN6_CLIP_DW2_UCP_CLIP_ENABLES__SHIFT |
pipeline->provoking_vertex_tri << GEN6_CLIP_DW2_TRI_PROVOKE__SHIFT |
pipeline->provoking_vertex_line << GEN6_CLIP_DW2_LINE_PROVOKE__SHIFT |
pipeline->provoking_vertex_trifan << GEN6_CLIP_DW2_TRIFAN_PROVOKE__SHIFT;
+ if (pipeline->depth_zero_to_one)
+ dw2 |= GEN6_CLIP_DW2_APIMODE_D3D;
+ else
+ dw2 |= GEN6_CLIP_DW2_APIMODE_OGL;
+
if (pipeline->rasterizerDiscardEnable)
dw2 |= GEN6_CLIP_DW2_CLIPMODE_REJECT_ALL;
else
}
}
+static void pipeline_build_viewport(struct intel_pipeline *pipeline,
+ const struct intel_pipeline_create_info *info)
+{
+ switch (info->vp.depthMode) {
+ case XGL_DEPTH_MODE_ZERO_TO_ONE:
+ pipeline->depth_zero_to_one = true;
+ break;
+ case XGL_DEPTH_MODE_NEGATIVE_ONE_TO_ONE:
+ default:
+ pipeline->depth_zero_to_one = false;
+ break;
+ }
+}
+
static void pipeline_build_fragment_SBE(struct intel_pipeline *pipeline,
const struct intel_pipeline_create_info *info)
{
sizeof(pipeline->vb[0]) * pipeline->vb_count);
pipeline_build_vertex_elements(pipeline, info);
+ pipeline_build_viewport(pipeline, info);
pipeline_build_fragment_SBE(pipeline, info);
pipeline_build_msaa(pipeline, info);
pipeline_build_depth_stencil(pipeline, info);
/* Depth Buffer format */
XGL_FORMAT db_format;
+ bool depth_zero_to_one;
+
XGL_PIPELINE_CB_STATE_CREATE_INFO cb_state;
// XGL_PIPELINE_RS_STATE_CREATE_INFO rs_state;