mesa: Put materials at the end of the generic block.
The materials are now moved to the end of the generic attributes block to the range 4-15. Before, the way the position and generic 0 attribute is handled was dependent on the presence and kind of the currently attached vertex program. With this change the way the position attribute and the generic 0 attribute is treated only depends on the enabled flag of those two arrays. This will later help to untangle the update dependencies between enabled arrays and shader inputs. v2: s,VERT_ATTRIB_MAT_OFFSET,VERT_ATTRIB_MAT0,g Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:

committed by
Mathias Fröhlich

parent
38b41fd718
commit
186f03cfb0
@@ -127,6 +127,8 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib);
|
|||||||
* VERT_ATTRIB_MAT
|
* VERT_ATTRIB_MAT
|
||||||
* include the generic shader attributes used to alias
|
* include the generic shader attributes used to alias
|
||||||
* varying material values for the TNL shader programs.
|
* varying material values for the TNL shader programs.
|
||||||
|
* 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(i) (VERT_ATTRIB_POS + (i))
|
||||||
#define VERT_ATTRIB_FF_MAX VERT_ATTRIB_GENERIC0
|
#define VERT_ATTRIB_FF_MAX VERT_ATTRIB_GENERIC0
|
||||||
@@ -137,7 +139,10 @@ const char *gl_vert_attrib_name(gl_vert_attrib attrib);
|
|||||||
#define VERT_ATTRIB_GENERIC(i) (VERT_ATTRIB_GENERIC0 + (i))
|
#define VERT_ATTRIB_GENERIC(i) (VERT_ATTRIB_GENERIC0 + (i))
|
||||||
#define VERT_ATTRIB_GENERIC_MAX MAX_VERTEX_GENERIC_ATTRIBS
|
#define VERT_ATTRIB_GENERIC_MAX MAX_VERTEX_GENERIC_ATTRIBS
|
||||||
|
|
||||||
#define VERT_ATTRIB_MAT(i) VERT_ATTRIB_GENERIC(i)
|
#define VERT_ATTRIB_MAT0 \
|
||||||
|
(VERT_ATTRIB_GENERIC_MAX - VERT_ATTRIB_MAT_MAX)
|
||||||
|
#define VERT_ATTRIB_MAT(i) \
|
||||||
|
VERT_ATTRIB_GENERIC((i) + VERT_ATTRIB_MAT0)
|
||||||
#define VERT_ATTRIB_MAT_MAX MAT_ATTRIB_MAX
|
#define VERT_ATTRIB_MAT_MAX MAT_ATTRIB_MAX
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -158,8 +158,8 @@ enum {
|
|||||||
#define _TNL_FIRST_GENERIC _TNL_ATTRIB_GENERIC0
|
#define _TNL_FIRST_GENERIC _TNL_ATTRIB_GENERIC0
|
||||||
#define _TNL_LAST_GENERIC _TNL_ATTRIB_GENERIC15
|
#define _TNL_LAST_GENERIC _TNL_ATTRIB_GENERIC15
|
||||||
|
|
||||||
#define _TNL_FIRST_MAT _TNL_ATTRIB_MAT_FRONT_AMBIENT /* GENERIC0 */
|
#define _TNL_FIRST_MAT _TNL_ATTRIB_MAT_FRONT_AMBIENT /* GENERIC4 */
|
||||||
#define _TNL_LAST_MAT _TNL_ATTRIB_MAT_BACK_INDEXES /* GENERIC11 */
|
#define _TNL_LAST_MAT _TNL_ATTRIB_MAT_BACK_INDEXES /* GENERIC15 */
|
||||||
|
|
||||||
/* Number of available texture attributes */
|
/* Number of available texture attributes */
|
||||||
#define _TNL_NUM_TEX 8
|
#define _TNL_NUM_TEX 8
|
||||||
|
@@ -335,20 +335,20 @@ recalculate_input_bindings(struct gl_context *ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Could use just about anything, just to fill in the empty
|
||||||
|
* slots:
|
||||||
|
*/
|
||||||
|
for (i = 0; i < VERT_ATTRIB_MAT0; i++) {
|
||||||
|
inputs[VERT_ATTRIB_GENERIC(i)] =
|
||||||
|
&vbo->currval[VBO_ATTRIB_GENERIC0 + i];
|
||||||
|
const_inputs |= VERT_BIT_GENERIC(i);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < VERT_ATTRIB_MAT_MAX; i++) {
|
for (i = 0; i < VERT_ATTRIB_MAT_MAX; i++) {
|
||||||
inputs[VERT_ATTRIB_MAT(i)] =
|
inputs[VERT_ATTRIB_MAT(i)] =
|
||||||
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT + i];
|
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT + i];
|
||||||
const_inputs |= VERT_BIT_MAT(i);
|
const_inputs |= VERT_BIT_MAT(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Could use just about anything, just to fill in the empty
|
|
||||||
* slots:
|
|
||||||
*/
|
|
||||||
for (i = VERT_ATTRIB_MAT_MAX; i < VERT_ATTRIB_GENERIC_MAX; i++) {
|
|
||||||
inputs[VERT_ATTRIB_GENERIC(i)] =
|
|
||||||
&vbo->currval[VBO_ATTRIB_GENERIC0 + i];
|
|
||||||
const_inputs |= VERT_BIT_GENERIC(i);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VP_SHADER:
|
case VP_SHADER:
|
||||||
|
@@ -187,16 +187,16 @@ vbo_exec_bind_arrays(struct gl_context *ctx)
|
|||||||
/* Overlay other active attributes */
|
/* Overlay other active attributes */
|
||||||
switch (get_vp_mode(exec->ctx)) {
|
switch (get_vp_mode(exec->ctx)) {
|
||||||
case VP_FF:
|
case VP_FF:
|
||||||
|
for (attr = 0; attr < VERT_ATTRIB_MAT0; attr++) {
|
||||||
|
assert(VERT_ATTRIB_GENERIC(attr) < ARRAY_SIZE(exec->vtx.inputs));
|
||||||
|
exec->vtx.inputs[VERT_ATTRIB_GENERIC(attr)] =
|
||||||
|
&vbo->currval[VBO_ATTRIB_GENERIC0+attr];
|
||||||
|
}
|
||||||
for (attr = 0; attr < VERT_ATTRIB_MAT_MAX; attr++) {
|
for (attr = 0; attr < VERT_ATTRIB_MAT_MAX; attr++) {
|
||||||
assert(VERT_ATTRIB_MAT(attr) < ARRAY_SIZE(exec->vtx.inputs));
|
assert(VERT_ATTRIB_MAT(attr) < ARRAY_SIZE(exec->vtx.inputs));
|
||||||
exec->vtx.inputs[VERT_ATTRIB_MAT(attr)] =
|
exec->vtx.inputs[VERT_ATTRIB_MAT(attr)] =
|
||||||
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT+attr];
|
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT+attr];
|
||||||
}
|
}
|
||||||
for (attr = VERT_ATTRIB_MAT_MAX; attr < VERT_ATTRIB_GENERIC_MAX; attr++) {
|
|
||||||
assert(VERT_ATTRIB_GENERIC(attr) < ARRAY_SIZE(exec->vtx.inputs));
|
|
||||||
exec->vtx.inputs[VERT_ATTRIB_GENERIC(attr)] =
|
|
||||||
&vbo->currval[VBO_ATTRIB_GENERIC0+attr];
|
|
||||||
}
|
|
||||||
map = vbo->map_vp_none;
|
map = vbo->map_vp_none;
|
||||||
break;
|
break;
|
||||||
case VP_SHADER:
|
case VP_SHADER:
|
||||||
|
@@ -151,14 +151,14 @@ bind_vertex_list(struct gl_context *ctx,
|
|||||||
/* Overlay other active attributes */
|
/* Overlay other active attributes */
|
||||||
switch (get_vp_mode(ctx)) {
|
switch (get_vp_mode(ctx)) {
|
||||||
case VP_FF:
|
case VP_FF:
|
||||||
|
for (attr = 0; attr < VERT_ATTRIB_MAT0; attr++) {
|
||||||
|
save->inputs[VERT_ATTRIB_GENERIC(attr)] =
|
||||||
|
&vbo->currval[VBO_ATTRIB_GENERIC0+attr];
|
||||||
|
}
|
||||||
for (attr = 0; attr < VERT_ATTRIB_MAT_MAX; attr++) {
|
for (attr = 0; attr < VERT_ATTRIB_MAT_MAX; attr++) {
|
||||||
save->inputs[VERT_ATTRIB_MAT(attr)] =
|
save->inputs[VERT_ATTRIB_MAT(attr)] =
|
||||||
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT+attr];
|
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT+attr];
|
||||||
}
|
}
|
||||||
for (attr = VERT_ATTRIB_MAT_MAX; attr < VERT_ATTRIB_GENERIC_MAX; attr++) {
|
|
||||||
save->inputs[VERT_ATTRIB_GENERIC(attr)] =
|
|
||||||
&vbo->currval[VBO_ATTRIB_GENERIC0+attr];
|
|
||||||
}
|
|
||||||
map = vbo->map_vp_none;
|
map = vbo->map_vp_none;
|
||||||
break;
|
break;
|
||||||
case VP_SHADER:
|
case VP_SHADER:
|
||||||
|
Reference in New Issue
Block a user