nak: Add support for gl_PrimitiveShadingRateEXT

This aliases gl_ViewportIndex in the NVIDIA attribute space.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31585>
This commit is contained in:
Faith Ekstrand
2024-10-04 20:25:08 -05:00
committed by Marge Bot
parent ab8e6bf4c3
commit 99107ef8d4
4 changed files with 12 additions and 0 deletions
+3
View File
@@ -183,9 +183,12 @@ struct nak_shader_info {
struct {
bool writes_layer;
bool writes_point_size;
bool writes_vprs_table_index;
uint8_t clip_enable;
uint8_t cull_enable;
uint8_t _pad[3];
struct nak_xfb_info xfb;
} vtg;
+3
View File
@@ -290,6 +290,8 @@ impl ShaderBin {
ShaderIoInfo::Vtg(io) => nak_shader_info__bindgen_ty_2 {
writes_layer: io.attr_written(NAK_ATTR_RT_ARRAY_INDEX),
writes_point_size: io.attr_written(NAK_ATTR_POINT_SIZE),
writes_vprs_table_index: io
.attr_written(NAK_ATTR_VPRS_TABLE_INDEX),
clip_enable: io.clip_enable.try_into().unwrap(),
cull_enable: io.cull_enable.try_into().unwrap(),
xfb: if let Some(xfb) = &io.xfb {
@@ -297,6 +299,7 @@ impl ShaderBin {
} else {
unsafe { std::mem::zeroed() }
},
_pad: Default::default(),
},
_ => unsafe { std::mem::zeroed() },
},
+3
View File
@@ -351,6 +351,9 @@ nak_varying_attr_addr(const struct nak_compiler *nak, gl_varying_slot slot)
case VARYING_SLOT_POS: return NAK_ATTR_POSITION;
case VARYING_SLOT_CLIP_DIST0: return NAK_ATTR_CLIP_CULL_DIST_0;
case VARYING_SLOT_CLIP_DIST1: return NAK_ATTR_CLIP_CULL_DIST_4;
case VARYING_SLOT_PRIMITIVE_SHADING_RATE:
return nak->sm >= 86 ? NAK_ATTR_VPRS_TABLE_INDEX
: NAK_ATTR_VIEWPORT_INDEX;
default: unreachable("Invalid varying slot");
}
}
+3
View File
@@ -37,6 +37,9 @@ enum ENUM_PACKED nak_attr {
/* Patch attributes */
NAK_ATTR_PATCH_START = 0x020,
/* System values B? */
NAK_ATTR_VPRS_TABLE_INDEX = 0x5c,
/* System values B */
NAK_ATTR_PRIMITIVE_ID = 0x060,
NAK_ATTR_RT_ARRAY_INDEX = 0x064,