mesa: remove unused vertex attrib WEIGHT

We don't support ARB_vertex_blend.

Note that the attribute aliasing check for ARB_vertex_program had to be
rewritten.

vbo_context: 20344 -> 20008 bytes
gl_context: 74672 -> 74616 bytes

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Marek Olšák
2017-11-15 23:24:56 +01:00
parent 2116b97418
commit 43abaf2ad0
11 changed files with 24 additions and 27 deletions

View File

@@ -91,7 +91,6 @@ gl_vert_attrib_name(gl_vert_attrib attrib)
{ {
static const char *names[] = { static const char *names[] = {
ENUM(VERT_ATTRIB_POS), ENUM(VERT_ATTRIB_POS),
ENUM(VERT_ATTRIB_WEIGHT),
ENUM(VERT_ATTRIB_NORMAL), ENUM(VERT_ATTRIB_NORMAL),
ENUM(VERT_ATTRIB_COLOR0), ENUM(VERT_ATTRIB_COLOR0),
ENUM(VERT_ATTRIB_COLOR1), ENUM(VERT_ATTRIB_COLOR1),

View File

@@ -75,7 +75,6 @@ const char *_mesa_shader_stage_to_abbrev(unsigned stage);
typedef enum typedef enum
{ {
VERT_ATTRIB_POS, VERT_ATTRIB_POS,
VERT_ATTRIB_WEIGHT,
VERT_ATTRIB_NORMAL, VERT_ATTRIB_NORMAL,
VERT_ATTRIB_COLOR0, VERT_ATTRIB_COLOR0,
VERT_ATTRIB_COLOR1, VERT_ATTRIB_COLOR1,
@@ -141,7 +140,6 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib);
*/ */
/*@{*/ /*@{*/
#define VERT_BIT_POS BITFIELD64_BIT(VERT_ATTRIB_POS) #define VERT_BIT_POS BITFIELD64_BIT(VERT_ATTRIB_POS)
#define VERT_BIT_WEIGHT BITFIELD64_BIT(VERT_ATTRIB_WEIGHT)
#define VERT_BIT_NORMAL BITFIELD64_BIT(VERT_ATTRIB_NORMAL) #define VERT_BIT_NORMAL BITFIELD64_BIT(VERT_ATTRIB_NORMAL)
#define VERT_BIT_COLOR0 BITFIELD64_BIT(VERT_ATTRIB_COLOR0) #define VERT_BIT_COLOR0 BITFIELD64_BIT(VERT_ATTRIB_COLOR0)
#define VERT_BIT_COLOR1 BITFIELD64_BIT(VERT_ATTRIB_COLOR1) #define VERT_BIT_COLOR1 BITFIELD64_BIT(VERT_ATTRIB_COLOR1)

View File

@@ -102,9 +102,7 @@ void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev )
} }
break; break;
case 1: case 1:
assert(attrib == VERT_ATTRIB_WEIGHT); unreachable("r200: vertex weight attrib unsupported");
emitsize = (VB->AttribPtr[attrib]->size);
vfmt0 |= emitsize << R200_VTX_WEIGHT_COUNT_SHIFT;
break; break;
case 2: case 2:
assert(attrib == VERT_ATTRIB_NORMAL); assert(attrib == VERT_ATTRIB_NORMAL);

View File

@@ -498,11 +498,6 @@ static GLboolean r200_translate_vertex_program(struct gl_context *ctx, struct r2
free_inputs &= ~(1 << 0); free_inputs &= ~(1 << 0);
array_count++; array_count++;
} }
if (mesa_vp->info.inputs_read & VERT_BIT_WEIGHT) {
vp->inputs[VERT_ATTRIB_WEIGHT] = 12;
vp->inputmap_rev[1] = VERT_ATTRIB_WEIGHT;
array_count++;
}
if (mesa_vp->info.inputs_read & VERT_BIT_NORMAL) { if (mesa_vp->info.inputs_read & VERT_BIT_NORMAL) {
vp->inputs[VERT_ATTRIB_NORMAL] = 1; vp->inputs[VERT_ATTRIB_NORMAL] = 1;
vp->inputmap_rev[2] = VERT_ATTRIB_NORMAL; vp->inputmap_rev[2] = VERT_ATTRIB_NORMAL;

View File

@@ -277,9 +277,6 @@ _mesa_initialize_vao(struct gl_context *ctx,
/* Init the individual arrays */ /* Init the individual arrays */
for (i = 0; i < ARRAY_SIZE(vao->VertexAttrib); i++) { for (i = 0; i < ARRAY_SIZE(vao->VertexAttrib); i++) {
switch (i) { switch (i) {
case VERT_ATTRIB_WEIGHT:
init_array(ctx, vao, VERT_ATTRIB_WEIGHT, 1, GL_FLOAT);
break;
case VERT_ATTRIB_NORMAL: case VERT_ATTRIB_NORMAL:
init_array(ctx, vao, VERT_ATTRIB_NORMAL, 3, GL_FLOAT); init_array(ctx, vao, VERT_ATTRIB_NORMAL, 3, GL_FLOAT);
break; break;

View File

@@ -436,7 +436,6 @@ _mesa_init_current(struct gl_context *ctx)
} }
/* redo special cases: */ /* redo special cases: */
ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_WEIGHT], 1.0, 0.0, 0.0, 0.0 );
ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 1.0 ); ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 1.0 );
ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], 1.0, 1.0, 1.0, 1.0 ); ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], 1.0, 1.0, 1.0, 1.0 );
ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR1], 0.0, 0.0, 0.0, 1.0 ); ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR1], 0.0, 0.0, 0.0, 1.0 );

View File

@@ -89,7 +89,6 @@ arb_input_attrib_string(GLuint index, GLenum progType)
*/ */
static const char *const vertAttribs[] = { static const char *const vertAttribs[] = {
"vertex.position", "vertex.position",
"vertex.weight",
"vertex.normal", "vertex.normal",
"vertex.color.primary", "vertex.color.primary",
"vertex.color.secondary", "vertex.color.secondary",

View File

@@ -289,7 +289,6 @@ result { return RESULT; }
{dot}texture { return TEXTURE; } {dot}texture { return TEXTURE; }
{dot}transpose { return TRANSPOSE; } {dot}transpose { return TRANSPOSE; }
{dot}attrib { return_token_or_DOT(require_ARB_vp, VTXATTRIB); } {dot}attrib { return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
{dot}weight { return_token_or_DOT(require_ARB_vp, WEIGHT); }
texture { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); } texture { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
1D { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); } 1D { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }

View File

@@ -186,7 +186,6 @@ static struct asm_instruction *asm_instruction_copy_ctor(
%token TEX_SHADOW1D TEX_SHADOW2D TEX_SHADOWRECT %token TEX_SHADOW1D TEX_SHADOW2D TEX_SHADOWRECT
%token TEX_ARRAY1D TEX_ARRAY2D TEX_ARRAYSHADOW1D TEX_ARRAYSHADOW2D %token TEX_ARRAY1D TEX_ARRAY2D TEX_ARRAYSHADOW1D TEX_ARRAYSHADOW2D
%token VERTEX VTXATTRIB %token VERTEX VTXATTRIB
%token WEIGHT
%token <string> IDENTIFIER USED_IDENTIFIER %token <string> IDENTIFIER USED_IDENTIFIER
%type <string> string %type <string> string
@@ -1007,10 +1006,6 @@ vtxAttribItem: POSITION
{ {
$$ = VERT_ATTRIB_POS; $$ = VERT_ATTRIB_POS;
} }
| WEIGHT vtxOptWeightNum
{
$$ = VERT_ATTRIB_WEIGHT;
}
| NORMAL | NORMAL
{ {
$$ = VERT_ATTRIB_NORMAL; $$ = VERT_ATTRIB_NORMAL;
@@ -1049,7 +1044,6 @@ vtxAttribNum: INTEGER
} }
; ;
vtxOptWeightNum: | '[' vtxWeightNum ']';
vtxWeightNum: INTEGER; vtxWeightNum: INTEGER;
fragAttribItem: POSITION fragAttribItem: POSITION
@@ -2219,8 +2213,29 @@ int
validate_inputs(struct YYLTYPE *locp, struct asm_parser_state *state) validate_inputs(struct YYLTYPE *locp, struct asm_parser_state *state)
{ {
const GLbitfield64 inputs = state->prog->info.inputs_read | state->InputsBound; const GLbitfield64 inputs = state->prog->info.inputs_read | state->InputsBound;
GLbitfield ff_inputs = 0;
if (((inputs & VERT_BIT_FF_ALL) & (inputs >> VERT_ATTRIB_GENERIC0)) != 0) { /* Since Mesa internal attribute indices are different from
* how NV_vertex_program defines attribute aliasing, we have to construct
* a separate usage mask based on how the aliasing is defined.
*
* Note that attribute aliasing is optional if NV_vertex_program is
* unsupported.
*/
if (inputs & VERT_BIT_POS)
ff_inputs |= 1 << 0;
if (inputs & VERT_BIT_NORMAL)
ff_inputs |= 1 << 2;
if (inputs & VERT_BIT_COLOR0)
ff_inputs |= 1 << 3;
if (inputs & VERT_BIT_COLOR1)
ff_inputs |= 1 << 4;
if (inputs & VERT_BIT_FOG)
ff_inputs |= 1 << 5;
ff_inputs |= ((inputs & VERT_BIT_TEX_ALL) >> VERT_ATTRIB_TEX0) << 8;
if ((ff_inputs & (inputs >> VERT_ATTRIB_GENERIC0)) != 0) {
yyerror(locp, state, "illegal use of generic attribute and name attribute"); yyerror(locp, state, "illegal use of generic attribute and name attribute");
return 0; return 0;
} }

View File

@@ -77,7 +77,6 @@
*/ */
enum { enum {
_TNL_ATTRIB_POS, _TNL_ATTRIB_POS,
_TNL_ATTRIB_WEIGHT,
_TNL_ATTRIB_NORMAL, _TNL_ATTRIB_NORMAL,
_TNL_ATTRIB_COLOR0, _TNL_ATTRIB_COLOR0,
_TNL_ATTRIB_COLOR1, _TNL_ATTRIB_COLOR1,
@@ -150,7 +149,7 @@ enum {
/** /**
* Handy attribute ranges: * Handy attribute ranges:
*/ */
#define _TNL_FIRST_PROG _TNL_ATTRIB_WEIGHT #define _TNL_FIRST_PROG _TNL_ATTRIB_NORMAL
#define _TNL_LAST_PROG _TNL_ATTRIB_TEX7 #define _TNL_LAST_PROG _TNL_ATTRIB_TEX7
#define _TNL_FIRST_TEX _TNL_ATTRIB_TEX0 #define _TNL_FIRST_TEX _TNL_ATTRIB_TEX0

View File

@@ -45,7 +45,6 @@
*/ */
enum { enum {
VBO_ATTRIB_POS, VBO_ATTRIB_POS,
VBO_ATTRIB_WEIGHT,
VBO_ATTRIB_NORMAL, VBO_ATTRIB_NORMAL,
VBO_ATTRIB_COLOR0, VBO_ATTRIB_COLOR0,
VBO_ATTRIB_COLOR1, VBO_ATTRIB_COLOR1,