mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
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:
parent
cfa81a7460
commit
3723855646
7 changed files with 17 additions and 49 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue