From df5a2bbb41552cb030000ca4421fd1a4036ca974 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 26 May 2021 21:14:56 -0400 Subject: [PATCH] shader_enums,mesa: move VERT_ATTRIB_EDGEFLAG to slot 31 for st/mesa A future commit will replace st_vertex_program::input_to_index with a prefix bitcount of inputs_read, but it needs vertex inputs to be in the same order as vertex attribs. Some of the FF definitions don't make sense with this ordering and are removed. Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/compiler/shader_enums.c | 2 +- src/compiler/shader_enums.h | 18 +++++++----------- src/mesa/main/arrayobj.c | 12 ++++++------ src/mesa/main/dlist.c | 2 +- src/mesa/main/state.c | 2 +- src/mesa/program/prog_print.c | 6 +++--- src/mesa/tnl/t_context.h | 2 +- src/mesa/vbo/vbo_attrib.h | 13 ++++++++----- src/mesa/vbo/vbo_context.c | 7 ++++--- src/mesa/vbo/vbo_exec.c | 8 ++++---- src/mesa/vbo/vbo_save_api.c | 2 +- 11 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c index c8529cd..4ac7758 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -123,7 +123,6 @@ gl_vert_attrib_name(gl_vert_attrib attrib) ENUM(VERT_ATTRIB_COLOR1), ENUM(VERT_ATTRIB_FOG), ENUM(VERT_ATTRIB_COLOR_INDEX), - ENUM(VERT_ATTRIB_EDGEFLAG), ENUM(VERT_ATTRIB_TEX0), ENUM(VERT_ATTRIB_TEX1), ENUM(VERT_ATTRIB_TEX2), @@ -149,6 +148,7 @@ gl_vert_attrib_name(gl_vert_attrib attrib) ENUM(VERT_ATTRIB_GENERIC13), ENUM(VERT_ATTRIB_GENERIC14), ENUM(VERT_ATTRIB_GENERIC15), + ENUM(VERT_ATTRIB_EDGEFLAG), }; STATIC_ASSERT(ARRAY_SIZE(names) == VERT_ATTRIB_MAX); return NAME(attrib); diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 0bb722d..8ae14bc 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -144,7 +144,6 @@ typedef enum VERT_ATTRIB_COLOR1, VERT_ATTRIB_FOG, VERT_ATTRIB_COLOR_INDEX, - VERT_ATTRIB_EDGEFLAG, VERT_ATTRIB_TEX0, VERT_ATTRIB_TEX1, VERT_ATTRIB_TEX2, @@ -170,6 +169,10 @@ typedef enum VERT_ATTRIB_GENERIC13, VERT_ATTRIB_GENERIC14, VERT_ATTRIB_GENERIC15, + /* This must be last to keep VS inputs and vertex attributes in the same + * order in st/mesa, and st/mesa always adds edgeflags as the last input. + */ + VERT_ATTRIB_EDGEFLAG, VERT_ATTRIB_MAX } gl_vert_attrib; @@ -187,12 +190,8 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib); * Symbolic constats to help iterating over * specific blocks of vertex attributes. * - * VERT_ATTRIB_FF - * includes all fixed function attributes as well as - * the aliased GL_NV_vertex_program shader attributes. * VERT_ATTRIB_TEX * include the classic texture coordinate attributes. - * Is a subset of VERT_ATTRIB_FF. * VERT_ATTRIB_GENERIC * include the OpenGL 2.0+ GLSL generic shader attributes. * These alias the generic GL_ARB_vertex_shader attributes. @@ -202,9 +201,6 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib); * They are located at the end of the generic attribute * block not to overlap with the generic 0 attribute. */ -#define VERT_ATTRIB_FF(i) (VERT_ATTRIB_POS + (i)) -#define VERT_ATTRIB_FF_MAX VERT_ATTRIB_GENERIC0 - #define VERT_ATTRIB_TEX(i) (VERT_ATTRIB_TEX0 + (i)) #define VERT_ATTRIB_TEX_MAX MAX_TEXTURE_COORD_UNITS @@ -228,7 +224,6 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib); #define VERT_BIT_COLOR1 BITFIELD_BIT(VERT_ATTRIB_COLOR1) #define VERT_BIT_FOG BITFIELD_BIT(VERT_ATTRIB_FOG) #define VERT_BIT_COLOR_INDEX BITFIELD_BIT(VERT_ATTRIB_COLOR_INDEX) -#define VERT_BIT_EDGEFLAG BITFIELD_BIT(VERT_ATTRIB_EDGEFLAG) #define VERT_BIT_TEX0 BITFIELD_BIT(VERT_ATTRIB_TEX0) #define VERT_BIT_TEX1 BITFIELD_BIT(VERT_ATTRIB_TEX1) #define VERT_BIT_TEX2 BITFIELD_BIT(VERT_ATTRIB_TEX2) @@ -239,12 +234,13 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib); #define VERT_BIT_TEX7 BITFIELD_BIT(VERT_ATTRIB_TEX7) #define VERT_BIT_POINT_SIZE BITFIELD_BIT(VERT_ATTRIB_POINT_SIZE) #define VERT_BIT_GENERIC0 BITFIELD_BIT(VERT_ATTRIB_GENERIC0) +#define VERT_BIT_EDGEFLAG BITFIELD_BIT(VERT_ATTRIB_EDGEFLAG) #define VERT_BIT(i) BITFIELD_BIT(i) #define VERT_BIT_ALL BITFIELD_RANGE(0, VERT_ATTRIB_MAX) -#define VERT_BIT_FF(i) VERT_BIT(i) -#define VERT_BIT_FF_ALL BITFIELD_RANGE(0, VERT_ATTRIB_FF_MAX) +#define VERT_BIT_FF_ALL (BITFIELD_RANGE(0, VERT_ATTRIB_GENERIC0) | \ + VERT_BIT_EDGEFLAG) #define VERT_BIT_TEX(i) VERT_BIT(VERT_ATTRIB_TEX(i)) #define VERT_BIT_TEX_ALL \ BITFIELD_RANGE(VERT_ATTRIB_TEX(0), VERT_ATTRIB_TEX_MAX) diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index b668fb7..1537178 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -75,7 +75,6 @@ _mesa_vao_attribute_map[ATTRIBUTE_MAP_MODE_MAX][VERT_ATTRIB_MAX] = VERT_ATTRIB_COLOR1, /* VERT_ATTRIB_COLOR1 */ VERT_ATTRIB_FOG, /* VERT_ATTRIB_FOG */ VERT_ATTRIB_COLOR_INDEX, /* VERT_ATTRIB_COLOR_INDEX */ - VERT_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ VERT_ATTRIB_TEX0, /* VERT_ATTRIB_TEX0 */ VERT_ATTRIB_TEX1, /* VERT_ATTRIB_TEX1 */ VERT_ATTRIB_TEX2, /* VERT_ATTRIB_TEX2 */ @@ -100,7 +99,8 @@ _mesa_vao_attribute_map[ATTRIBUTE_MAP_MODE_MAX][VERT_ATTRIB_MAX] = VERT_ATTRIB_GENERIC12, /* VERT_ATTRIB_GENERIC12 */ VERT_ATTRIB_GENERIC13, /* VERT_ATTRIB_GENERIC13 */ VERT_ATTRIB_GENERIC14, /* VERT_ATTRIB_GENERIC14 */ - VERT_ATTRIB_GENERIC15 /* VERT_ATTRIB_GENERIC15 */ + VERT_ATTRIB_GENERIC15, /* VERT_ATTRIB_GENERIC15 */ + VERT_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ }, /* ATTRIBUTE_MAP_MODE_POSITION @@ -116,7 +116,6 @@ _mesa_vao_attribute_map[ATTRIBUTE_MAP_MODE_MAX][VERT_ATTRIB_MAX] = VERT_ATTRIB_COLOR1, /* VERT_ATTRIB_COLOR1 */ VERT_ATTRIB_FOG, /* VERT_ATTRIB_FOG */ VERT_ATTRIB_COLOR_INDEX, /* VERT_ATTRIB_COLOR_INDEX */ - VERT_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ VERT_ATTRIB_TEX0, /* VERT_ATTRIB_TEX0 */ VERT_ATTRIB_TEX1, /* VERT_ATTRIB_TEX1 */ VERT_ATTRIB_TEX2, /* VERT_ATTRIB_TEX2 */ @@ -141,7 +140,8 @@ _mesa_vao_attribute_map[ATTRIBUTE_MAP_MODE_MAX][VERT_ATTRIB_MAX] = VERT_ATTRIB_GENERIC12, /* VERT_ATTRIB_GENERIC12 */ VERT_ATTRIB_GENERIC13, /* VERT_ATTRIB_GENERIC13 */ VERT_ATTRIB_GENERIC14, /* VERT_ATTRIB_GENERIC14 */ - VERT_ATTRIB_GENERIC15 /* VERT_ATTRIB_GENERIC15 */ + VERT_ATTRIB_GENERIC15, /* VERT_ATTRIB_GENERIC15 */ + VERT_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ }, /* ATTRIBUTE_MAP_MODE_GENERIC0 @@ -157,7 +157,6 @@ _mesa_vao_attribute_map[ATTRIBUTE_MAP_MODE_MAX][VERT_ATTRIB_MAX] = VERT_ATTRIB_COLOR1, /* VERT_ATTRIB_COLOR1 */ VERT_ATTRIB_FOG, /* VERT_ATTRIB_FOG */ VERT_ATTRIB_COLOR_INDEX, /* VERT_ATTRIB_COLOR_INDEX */ - VERT_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ VERT_ATTRIB_TEX0, /* VERT_ATTRIB_TEX0 */ VERT_ATTRIB_TEX1, /* VERT_ATTRIB_TEX1 */ VERT_ATTRIB_TEX2, /* VERT_ATTRIB_TEX2 */ @@ -182,7 +181,8 @@ _mesa_vao_attribute_map[ATTRIBUTE_MAP_MODE_MAX][VERT_ATTRIB_MAX] = VERT_ATTRIB_GENERIC12, /* VERT_ATTRIB_GENERIC12 */ VERT_ATTRIB_GENERIC13, /* VERT_ATTRIB_GENERIC13 */ VERT_ATTRIB_GENERIC14, /* VERT_ATTRIB_GENERIC14 */ - VERT_ATTRIB_GENERIC15 /* VERT_ATTRIB_GENERIC15 */ + VERT_ATTRIB_GENERIC15, /* VERT_ATTRIB_GENERIC15 */ + VERT_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ } }; diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 2a00d0f..71daa77 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -6201,7 +6201,7 @@ save_Attr32bit(struct gl_context *ctx, unsigned attr, unsigned size, * FLOAT and INT. */ if (type == GL_FLOAT) { - if (attr >= VERT_ATTRIB_GENERIC0) { + if (VERT_BIT(attr) & VERT_BIT_GENERIC_ALL) { base_op = OPCODE_ATTR_1F_ARB; attr -= VERT_ATTRIB_GENERIC0; } else { diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 7ed93f9..f4f5a5f 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -566,7 +566,7 @@ set_vertex_processing_mode(struct gl_context *ctx, gl_vertex_processing_mode m) assert(ctx->API != API_OPENGLES); /* Other parts of the code assume that inputs[VERT_ATTRIB_POS] through - * inputs[VERT_ATTRIB_FF_MAX] will be non-NULL. However, in OpenGL + * inputs[VERT_ATTRIB_GENERIC0-1] will be non-NULL. However, in OpenGL * ES 2.0+ or OpenGL core profile, none of these arrays should ever * be enabled. */ diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index 6d67eb4..edf3263 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -107,7 +107,6 @@ arb_input_attrib_string(GLuint index, GLenum progType) "vertex.color.secondary", "vertex.fogcoord", "vertex.(six)", /* VERT_ATTRIB_COLOR_INDEX */ - "vertex.(seven)", /* VERT_ATTRIB_EDGEFLAG */ "vertex.texcoord[0]", "vertex.texcoord[1]", "vertex.texcoord[2]", @@ -116,7 +115,7 @@ arb_input_attrib_string(GLuint index, GLenum progType) "vertex.texcoord[5]", "vertex.texcoord[6]", "vertex.texcoord[7]", - "vertex.(sixteen)", /* VERT_ATTRIB_POINT_SIZE */ + "vertex.(pointsize)", /* VERT_ATTRIB_POINT_SIZE */ "vertex.attrib[0]", "vertex.attrib[1]", "vertex.attrib[2]", @@ -132,7 +131,8 @@ arb_input_attrib_string(GLuint index, GLenum progType) "vertex.attrib[12]", "vertex.attrib[13]", "vertex.attrib[14]", - "vertex.attrib[15]" /* MAX_VARYING = 16 */ + "vertex.attrib[15]", /* MAX_VARYING = 16 */ + "vertex.(edgeflag)", /* VERT_ATTRIB_EDGEFLAG */ }; static const char *const fragAttribs[] = { "fragment.position", diff --git a/src/mesa/tnl/t_context.h b/src/mesa/tnl/t_context.h index a5bcdb8..e675639 100644 --- a/src/mesa/tnl/t_context.h +++ b/src/mesa/tnl/t_context.h @@ -84,7 +84,6 @@ enum { _TNL_ATTRIB_COLOR1, _TNL_ATTRIB_FOG, _TNL_ATTRIB_COLOR_INDEX, - _TNL_ATTRIB_EDGEFLAG, _TNL_ATTRIB_TEX0, _TNL_ATTRIB_TEX1, _TNL_ATTRIB_TEX2, @@ -115,6 +114,7 @@ enum { _TNL_ATTRIB_GENERIC13, _TNL_ATTRIB_GENERIC14, _TNL_ATTRIB_GENERIC15, + _TNL_ATTRIB_EDGEFLAG, _TNL_ATTRIB_MAX, diff --git a/src/mesa/vbo/vbo_attrib.h b/src/mesa/vbo/vbo_attrib.h index e32b2f4..57346cb 100644 --- a/src/mesa/vbo/vbo_attrib.h +++ b/src/mesa/vbo/vbo_attrib.h @@ -50,7 +50,6 @@ enum vbo_attrib { VBO_ATTRIB_COLOR1, VBO_ATTRIB_FOG, VBO_ATTRIB_COLOR_INDEX, - VBO_ATTRIB_EDGEFLAG, VBO_ATTRIB_TEX0, VBO_ATTRIB_TEX1, VBO_ATTRIB_TEX2, @@ -77,6 +76,7 @@ enum vbo_attrib { VBO_ATTRIB_GENERIC13, VBO_ATTRIB_GENERIC14, VBO_ATTRIB_GENERIC15, + VBO_ATTRIB_EDGEFLAG, /* XXX: in the vertex program inputs_read flag, we alias * materials and generics and use knowledge about the program @@ -104,15 +104,18 @@ enum vbo_attrib { /** VBO_ATTRIB_POS .. VBO_ATTRIB_POINT_SIZE */ -#define VBO_ATTRIBS_LEGACY BITFIELD64_MASK(VBO_ATTRIB_GENERIC0) +#define VBO_ATTRIBS_LEGACY (BITFIELD64_MASK(VBO_ATTRIB_GENERIC0) | \ + BITFIELD64_BIT(VBO_ATTRIB_EDGEFLAG)) /** VBO_ATTRIB_MAT_FRONT_AMBIENT .. VBO_ATTRIB_MAT_BACK_INDEXES */ #define VBO_ATTRIBS_MATERIALS BITFIELD64_RANGE(VBO_ATTRIB_MAT_FRONT_AMBIENT, \ VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1) -/** Shift to move legacy material attribs into generic slots */ -#define VBO_MATERIAL_SHIFT \ - (VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_FIRST_MATERIAL + 1) +/** + * Move material attribs to the last generic attribs, moving LAST_MATERIAL + * to GENERIC15, etc. + */ +#define VBO_MATERIAL_SHIFT (VBO_ATTRIB_LAST_MATERIAL - VBO_ATTRIB_GENERIC15) diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 9cef640..fcbb22b 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -73,13 +73,14 @@ static void init_legacy_currval(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); - GLuint i; /* Set up a constant (Stride == 0) array for each current * attribute: */ - for (i = 0; i < VERT_ATTRIB_FF_MAX; i++) { - const unsigned attr = VERT_ATTRIB_FF(i); + for (int attr = 0; attr < VERT_ATTRIB_MAX; attr++) { + if (VERT_BIT(attr) & VERT_BIT_GENERIC_ALL) + continue; + struct gl_array_attributes *attrib = &vbo->current[attr]; init_array(ctx, attrib, check_size(ctx->Current.Attrib[attr]), diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index 6619618..7bc8520 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -42,7 +42,6 @@ _vbo_attribute_alias_map[VP_MODE_MAX][VERT_ATTRIB_MAX] = { VBO_ATTRIB_COLOR1, /* VERT_ATTRIB_COLOR1 */ VBO_ATTRIB_FOG, /* VERT_ATTRIB_FOG */ VBO_ATTRIB_COLOR_INDEX, /* VERT_ATTRIB_COLOR_INDEX */ - VBO_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ VBO_ATTRIB_TEX0, /* VERT_ATTRIB_TEX0 */ VBO_ATTRIB_TEX1, /* VERT_ATTRIB_TEX1 */ VBO_ATTRIB_TEX2, /* VERT_ATTRIB_TEX2 */ @@ -67,7 +66,8 @@ _vbo_attribute_alias_map[VP_MODE_MAX][VERT_ATTRIB_MAX] = { VBO_ATTRIB_MAT_FRONT_SHININESS, /* VERT_ATTRIB_GENERIC12 */ VBO_ATTRIB_MAT_BACK_SHININESS, /* VERT_ATTRIB_GENERIC13 */ VBO_ATTRIB_MAT_FRONT_INDEXES, /* VERT_ATTRIB_GENERIC14 */ - VBO_ATTRIB_MAT_BACK_INDEXES /* VERT_ATTRIB_GENERIC15 */ + VBO_ATTRIB_MAT_BACK_INDEXES, /* VERT_ATTRIB_GENERIC15 */ + VBO_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ }, /* VP_MODE_SHADER: */ @@ -78,7 +78,6 @@ _vbo_attribute_alias_map[VP_MODE_MAX][VERT_ATTRIB_MAX] = { VBO_ATTRIB_COLOR1, /* VERT_ATTRIB_COLOR1 */ VBO_ATTRIB_FOG, /* VERT_ATTRIB_FOG */ VBO_ATTRIB_COLOR_INDEX, /* VERT_ATTRIB_COLOR_INDEX */ - VBO_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ VBO_ATTRIB_TEX0, /* VERT_ATTRIB_TEX0 */ VBO_ATTRIB_TEX1, /* VERT_ATTRIB_TEX1 */ VBO_ATTRIB_TEX2, /* VERT_ATTRIB_TEX2 */ @@ -103,7 +102,8 @@ _vbo_attribute_alias_map[VP_MODE_MAX][VERT_ATTRIB_MAX] = { VBO_ATTRIB_GENERIC12, /* VERT_ATTRIB_GENERIC12 */ VBO_ATTRIB_GENERIC13, /* VERT_ATTRIB_GENERIC13 */ VBO_ATTRIB_GENERIC14, /* VERT_ATTRIB_GENERIC14 */ - VBO_ATTRIB_GENERIC15 /* VERT_ATTRIB_GENERIC15 */ + VBO_ATTRIB_GENERIC15, /* VERT_ATTRIB_GENERIC15 */ + VBO_ATTRIB_EDGEFLAG, /* VERT_ATTRIB_EDGEFLAG */ } }; diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index f36fa41..b06fc05 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -1992,7 +1992,7 @@ current_init(struct gl_context *ctx) struct vbo_save_context *save = &vbo_context(ctx)->save; GLint i; - for (i = VBO_ATTRIB_POS; i <= VBO_ATTRIB_GENERIC15; i++) { + for (i = VBO_ATTRIB_POS; i <= VBO_ATTRIB_EDGEFLAG; i++) { const GLuint j = i - VBO_ATTRIB_POS; assert(j < VERT_ATTRIB_MAX); save->currentsz[i] = &ctx->ListState.ActiveAttribSize[j]; -- 2.7.4