nvk: Remove prims from tess state

Reviewed-by: Mary Guillemard <mary@mary.zone>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39571>
This commit is contained in:
Mel Henning 2026-01-27 14:36:24 -05:00 committed by Marge Bot
parent cfa81a7460
commit 3723855646
7 changed files with 17 additions and 49 deletions

View file

@ -100,13 +100,6 @@ enum ENUM_PACKED nak_ts_spacing {
NAK_TS_SPACING_FRACT_EVEN = 2,
};
enum ENUM_PACKED nak_ts_prims {
NAK_TS_PRIMS_POINTS = 0,
NAK_TS_PRIMS_LINES = 1,
NAK_TS_PRIMS_TRIANGLES_CW = 2,
NAK_TS_PRIMS_TRIANGLES_CCW = 3,
};
struct nak_xfb_info {
uint32_t stride[4];
uint8_t stream[4];
@ -190,11 +183,10 @@ struct nak_shader_info {
struct {
enum nak_ts_domain domain;
enum nak_ts_spacing spacing;
enum nak_ts_prims prims;
bool ccw;
bool point_mode;
uint8_t _pad[7];
uint8_t _pad[8];
} ts;
/* Used to initialize the union for other stages */

View file

@ -303,7 +303,6 @@ impl ShaderBin {
ts: nak_shader_info__bindgen_ty_1__bindgen_ty_3 {
domain: ts_info.domain as u8,
spacing: ts_info.spacing as u8,
prims: ts_info.primitives as u8,
ccw: ts_info.ccw,
point_mode: ts_info.point_mode,
_pad: Default::default(),

View file

@ -109,17 +109,6 @@ fn init_info_from_nir(nak: &nak_compiler, nir: &nir_shader) -> ShaderInfo {
}
_ => panic!("Invalid gl_tess_spacing"),
},
primitives: if info_tess.point_mode() {
TessellationPrimitives::Points
} else if info_tess._primitive_mode
== TESS_PRIMITIVE_ISOLINES
{
TessellationPrimitives::Lines
} else if info_tess.ccw() {
TessellationPrimitives::TrianglesCCW
} else {
TessellationPrimitives::TrianglesCW
},
point_mode: info_tess.point_mode(),
ccw: info_tess.ccw(),
})

View file

@ -9147,20 +9147,10 @@ pub enum TessellationSpacing {
FractionalEven = NAK_TS_SPACING_FRACT_EVEN,
}
#[repr(u8)]
#[derive(Clone, Copy, Debug)]
pub enum TessellationPrimitives {
Points = NAK_TS_PRIMS_POINTS,
Lines = NAK_TS_PRIMS_LINES,
TrianglesCW = NAK_TS_PRIMS_TRIANGLES_CW,
TrianglesCCW = NAK_TS_PRIMS_TRIANGLES_CCW,
}
#[derive(Debug)]
pub struct TessellationShaderInfo {
pub domain: TessellationDomain,
pub spacing: TessellationSpacing,
pub primitives: TessellationPrimitives,
pub ccw: bool,
pub point_mode: bool,
}

View file

@ -1610,8 +1610,10 @@ nvk_cmd_bind_graphics_shader(struct nvk_cmd_buffer *cmd,
NVDEF(NV9097, SET_TESSELLATION_PARAMETERS, SPACING, spacing) | \
NVDEF(NV9097, SET_TESSELLATION_PARAMETERS, OUTPUT_PRIMITIVES, prims)
#define NVK_MME_TESS_STATE(domain, spacing, prims, flags) \
(NVK_MME_TESS_PARAMS(domain, spacing, prims) | flags)
#define NVK_MME_TESS_STATE(domain, spacing, flags) \
NVDEF(NV9097, SET_TESSELLATION_PARAMETERS, DOMAIN_TYPE, domain) | \
NVDEF(NV9097, SET_TESSELLATION_PARAMETERS, SPACING, spacing) | \
flags
#define LOWER_LEFT_BIT 12
#define POINT_MODE_BIT 13
@ -1624,15 +1626,13 @@ nvk_cmd_bind_graphics_shader(struct nvk_cmd_buffer *cmd,
uint32_t
nvk_mme_tess_params(enum nak_ts_domain domain,
enum nak_ts_spacing spacing,
enum nak_ts_prims prims,
bool ccw, bool point_mode)
{
/* This is laid out the same as SET_TESSELLATION_PARAMETERS, only with an
* extra bit for lower_left
*/
uint16_t params = ((uint16_t)domain << 0) |
((uint16_t)spacing << 4) |
((uint16_t)prims << 8);
((uint16_t)spacing << 4);
if (ccw)
params |= CCW;
if (point_mode)
@ -1722,12 +1722,12 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
{ }
},
.params = (uint32_t[]) {
NVK_MME_VAL_MASK(NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CW, 0), 0xffff)
NVK_MME_VAL_MASK(NVK_MME_TESS_STATE(TRIANGLE, INTEGER, 0), 0xffff)
},
.expected = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CW, 0)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, 0)
},
{
NV9097_SET_TESSELLATION_PARAMETERS,
@ -1739,7 +1739,7 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.init = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CW, 0)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, 0)
},
{ }
},
@ -1747,7 +1747,7 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.expected = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CW, LOWER_LEFT)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, LOWER_LEFT)
},
{
NV9097_SET_TESSELLATION_PARAMETERS,
@ -1759,7 +1759,7 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.init = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CCW, CCW)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, CCW)
},
{ }
},
@ -1767,7 +1767,7 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.expected = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CCW, LOWER_LEFT | CCW)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, LOWER_LEFT | CCW)
},
{
NV9097_SET_TESSELLATION_PARAMETERS,
@ -1779,7 +1779,7 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.init = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CCW, CCW)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, CCW)
},
{ }
},
@ -1787,7 +1787,7 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.expected = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CCW, CCW | POINT_MODE)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, CCW | POINT_MODE)
},
{
NV9097_SET_TESSELLATION_PARAMETERS,
@ -1799,17 +1799,17 @@ const struct nvk_mme_test_case nvk_mme_set_tess_params_tests[] = {{
.init = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, TRIANGLES_CW, 0)
NVK_MME_TESS_STATE(TRIANGLE, INTEGER, 0)
},
{ }
},
.params = (uint32_t[]) {
NVK_MME_VAL_MASK(NVK_MME_TESS_STATE(ISOLINE, INTEGER, TRIANGLES_CW, 0), 0xffff)
NVK_MME_VAL_MASK(NVK_MME_TESS_STATE(ISOLINE, INTEGER, 0), 0xffff)
},
.expected = (struct nvk_mme_mthd_data[]) {
{
NVK_SET_MME_SCRATCH(TESS_PARAMS),
NVK_MME_TESS_STATE(ISOLINE, INTEGER, TRIANGLES_CW, 0)
NVK_MME_TESS_STATE(ISOLINE, INTEGER, 0)
},
{
NV9097_SET_TESSELLATION_PARAMETERS,

View file

@ -251,7 +251,6 @@ void nvk_mme_set_z_clamp(struct mme_builder *b);
uint32_t nvk_mme_tess_params(enum nak_ts_domain domain,
enum nak_ts_spacing spacing,
enum nak_ts_prims prims,
bool ccw, bool point_mode);
uint32_t nvk_mme_anti_alias_min_sample_shading(float mss);
uint32_t nvk_mme_shading_rate_control_sample_shading(bool sample_shading);

View file

@ -691,7 +691,6 @@ nvk_shader_fill_push(struct nvk_device *dev,
P_1INC(p, NVB197, CALL_MME_MACRO(NVK_MME_SET_TESS_PARAMS));
P_INLINE_DATA(p, nvk_mme_tess_params(shader->info.ts.domain,
shader->info.ts.spacing,
shader->info.ts.prims,
shader->info.ts.ccw,
shader->info.ts.point_mode));
}