anv: use primitive ID override when shader does not supply it
Patch moves over this fix from iris driver. Fixes following test on DG2: dEQP-VK.rasterization.culling.primitive_id Cc: mesa-stable Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Ivan Briano <ivan.briano@intel.com> [v1] Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22130>
This commit is contained in:
@@ -512,6 +512,19 @@ emit_3dstate_sbe(struct anv_graphics_pipeline *pipeline)
|
||||
sbe.VertexURBEntryReadLength = DIV_ROUND_UP(max_source_attr + 1, 2);
|
||||
sbe.ForceVertexURBEntryReadOffset = true;
|
||||
sbe.ForceVertexURBEntryReadLength = true;
|
||||
|
||||
/* Ask the hardware to supply PrimitiveID if the fragment shader
|
||||
* reads it but a previous stage didn't write one.
|
||||
*/
|
||||
if ((wm_prog_data->inputs & VARYING_BIT_PRIMITIVE_ID) &&
|
||||
fs_input_map->varying_to_slot[VARYING_SLOT_PRIMITIVE_ID] == -1) {
|
||||
sbe.PrimitiveIDOverrideAttributeSelect =
|
||||
wm_prog_data->urb_setup[VARYING_SLOT_PRIMITIVE_ID];
|
||||
sbe.PrimitiveIDOverrideComponentX = true;
|
||||
sbe.PrimitiveIDOverrideComponentY = true;
|
||||
sbe.PrimitiveIDOverrideComponentZ = true;
|
||||
sbe.PrimitiveIDOverrideComponentW = true;
|
||||
}
|
||||
} else {
|
||||
assert(anv_pipeline_is_mesh(pipeline));
|
||||
#if GFX_VERx10 >= 125
|
||||
|
Reference in New Issue
Block a user