X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fvbo%2Fvbo_attrib.h;h=165734b30a66bd28fe0fc606cae0d6bf6bde0883;hb=b78ab9c741ac758e9d1eb237f7e8ddc3b70235f5;hp=0ae928f2af4891f3e18ae95cffc1c05b3d496b22;hpb=675f7f627bec92315bf168a9c872ffc05f88c69c;p=mesa.git diff --git a/src/mesa/vbo/vbo_attrib.h b/src/mesa/vbo/vbo_attrib.h index 0ae928f2af4..165734b30a6 100644 --- a/src/mesa/vbo/vbo_attrib.h +++ b/src/mesa/vbo/vbo_attrib.h @@ -1,6 +1,6 @@ /* Copyright (C) Intel Corp. 2006. All Rights Reserved. - Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to + Intel funded Tungsten Graphics to develop this 3D driver. Permission is hereby granted, free of charge, to any person obtaining @@ -26,82 +26,96 @@ **********************************************************************/ /* * Authors: - * Keith Whitwell + * Keith Whitwell */ #ifndef VBO_ATTRIB_H #define VBO_ATTRIB_H - /* - * Note: The first attributes match the VERT_ATTRIB_* definitions - * in mtypes.h. However, the tnl module has additional attributes - * for materials, color indexes, edge flags, etc. - */ -/* Although it's nice to use these as bit indexes in a DWORD flag, we - * could manage without if necessary. Another limit currently is the - * number of bits allocated for these numbers in places like vertex - * program instruction formats and register layouts. + * Note: The first 32 attributes match the VERT_ATTRIB_* definitions. + * However, we have extra attributes for storing per-vertex glMaterial + * values. The material attributes get shifted into the generic positions + * at draw time. + * + * One reason we can't alias materials and generics here is display lists. + * A display list might contain both generic attributes and material + * attributes which are selected at draw time depending on whether we're + * using fixed function or a shader. */ -enum { - VBO_ATTRIB_POS = 0, - VBO_ATTRIB_WEIGHT = 1, - VBO_ATTRIB_NORMAL = 2, - VBO_ATTRIB_COLOR0 = 3, - VBO_ATTRIB_COLOR1 = 4, - VBO_ATTRIB_FOG = 5, - VBO_ATTRIB_INDEX = 6, - VBO_ATTRIB_EDGEFLAG = 7, - VBO_ATTRIB_TEX0 = 8, - VBO_ATTRIB_TEX1 = 9, - VBO_ATTRIB_TEX2 = 10, - VBO_ATTRIB_TEX3 = 11, - VBO_ATTRIB_TEX4 = 12, - VBO_ATTRIB_TEX5 = 13, - VBO_ATTRIB_TEX6 = 14, - VBO_ATTRIB_TEX7 = 15, +enum vbo_attrib { + VBO_ATTRIB_POS, + VBO_ATTRIB_NORMAL, + VBO_ATTRIB_COLOR0, + VBO_ATTRIB_COLOR1, + VBO_ATTRIB_FOG, + VBO_ATTRIB_COLOR_INDEX, + VBO_ATTRIB_EDGEFLAG, + VBO_ATTRIB_TEX0, + VBO_ATTRIB_TEX1, + VBO_ATTRIB_TEX2, + VBO_ATTRIB_TEX3, + VBO_ATTRIB_TEX4, + VBO_ATTRIB_TEX5, + VBO_ATTRIB_TEX6, + VBO_ATTRIB_TEX7, + VBO_ATTRIB_POINT_SIZE, - VBO_ATTRIB_GENERIC0 = 16, /* Not used? */ - VBO_ATTRIB_GENERIC1 = 17, - VBO_ATTRIB_GENERIC2 = 18, - VBO_ATTRIB_GENERIC3 = 19, - VBO_ATTRIB_GENERIC4 = 20, - VBO_ATTRIB_GENERIC5 = 21, - VBO_ATTRIB_GENERIC6 = 22, - VBO_ATTRIB_GENERIC7 = 23, - VBO_ATTRIB_GENERIC8 = 24, - VBO_ATTRIB_GENERIC9 = 25, - VBO_ATTRIB_GENERIC10 = 26, - VBO_ATTRIB_GENERIC11 = 27, - VBO_ATTRIB_GENERIC12 = 28, - VBO_ATTRIB_GENERIC13 = 29, - VBO_ATTRIB_GENERIC14 = 30, - VBO_ATTRIB_GENERIC15 = 31, + VBO_ATTRIB_GENERIC0, /* Not used? */ + VBO_ATTRIB_GENERIC1, + VBO_ATTRIB_GENERIC2, + VBO_ATTRIB_GENERIC3, + VBO_ATTRIB_GENERIC4, + VBO_ATTRIB_GENERIC5, + VBO_ATTRIB_GENERIC6, + VBO_ATTRIB_GENERIC7, + VBO_ATTRIB_GENERIC8, + VBO_ATTRIB_GENERIC9, + VBO_ATTRIB_GENERIC10, + VBO_ATTRIB_GENERIC11, + VBO_ATTRIB_GENERIC12, + VBO_ATTRIB_GENERIC13, + VBO_ATTRIB_GENERIC14, + VBO_ATTRIB_GENERIC15, - /* XXX: in the vertex program InputsRead flag, we alias - * materials and generics and use knowledge about the program - * (whether it is a fixed-function emulation) to - * differentiate. Here we must keep them apart instead. - */ - VBO_ATTRIB_MAT_FRONT_AMBIENT = 32, - VBO_ATTRIB_MAT_BACK_AMBIENT = 33, - VBO_ATTRIB_MAT_FRONT_DIFFUSE = 34, - VBO_ATTRIB_MAT_BACK_DIFFUSE = 35, - VBO_ATTRIB_MAT_FRONT_SPECULAR = 36, - VBO_ATTRIB_MAT_BACK_SPECULAR = 37, - VBO_ATTRIB_MAT_FRONT_EMISSION = 38, - VBO_ATTRIB_MAT_BACK_EMISSION = 39, - VBO_ATTRIB_MAT_FRONT_SHININESS = 40, - VBO_ATTRIB_MAT_BACK_SHININESS = 41, - VBO_ATTRIB_MAT_FRONT_INDEXES = 42, - VBO_ATTRIB_MAT_BACK_INDEXES = 43, + /* XXX: in the vertex program inputs_read flag, we alias + * materials and generics and use knowledge about the program + * (whether it is a fixed-function emulation) to + * differentiate. Here we must keep them apart instead. + */ + VBO_ATTRIB_MAT_FRONT_AMBIENT, + VBO_ATTRIB_MAT_BACK_AMBIENT, + VBO_ATTRIB_MAT_FRONT_DIFFUSE, + VBO_ATTRIB_MAT_BACK_DIFFUSE, + VBO_ATTRIB_MAT_FRONT_SPECULAR, + VBO_ATTRIB_MAT_BACK_SPECULAR, + VBO_ATTRIB_MAT_FRONT_EMISSION, + VBO_ATTRIB_MAT_BACK_EMISSION, + VBO_ATTRIB_MAT_FRONT_SHININESS, + VBO_ATTRIB_MAT_BACK_SHININESS, + VBO_ATTRIB_MAT_FRONT_INDEXES, + VBO_ATTRIB_MAT_BACK_INDEXES, - VBO_ATTRIB_MAX = 44 + VBO_ATTRIB_MAX }; #define VBO_ATTRIB_FIRST_MATERIAL VBO_ATTRIB_MAT_FRONT_AMBIENT #define VBO_ATTRIB_LAST_MATERIAL VBO_ATTRIB_MAT_BACK_INDEXES + +/** VBO_ATTRIB_POS .. VBO_ATTRIB_POINT_SIZE */ +#define VBO_ATTRIBS_LEGACY BITFIELD64_MASK(VBO_ATTRIB_GENERIC0) + +/** 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) + + + #define VBO_MAX_COPIED_VERTS 3 #endif