diff options
author | Brian <brian.paul@tungstengraphics.com> | 2007-08-31 11:27:16 -0600 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2007-08-31 11:27:16 -0600 |
commit | 2e21058e3d2c484b282cbc0bb5e7169b9a8d4fc7 (patch) | |
tree | 240d5bbd4a45a98e19d104f62e7e3a687209ca1e /src/mesa/pipe/draw | |
parent | 898d68a3762f84f0d435cda2f6aafddd356d1788 (diff) |
Define attrib_format and interp_mode enum typedefs and use where appropriate.
Diffstat (limited to 'src/mesa/pipe/draw')
-rw-r--r-- | src/mesa/pipe/draw/draw_context.h | 10 | ||||
-rw-r--r-- | src/mesa/pipe/draw/draw_flatshade.c | 4 | ||||
-rw-r--r-- | src/mesa/pipe/draw/draw_vertex.c | 10 | ||||
-rw-r--r-- | src/mesa/pipe/draw/draw_vertex.h | 51 |
4 files changed, 44 insertions, 31 deletions
diff --git a/src/mesa/pipe/draw/draw_context.h b/src/mesa/pipe/draw/draw_context.h index 03679848b5..7c4f1a1297 100644 --- a/src/mesa/pipe/draw/draw_context.h +++ b/src/mesa/pipe/draw/draw_context.h @@ -89,16 +89,6 @@ void draw_set_setup_state( struct draw_context *draw, void draw_set_setup_stage( struct draw_context *draw, struct draw_stage *stage ); -void draw_set_vertex_attributes( struct draw_context *draw, - const uint *attrs, const uint *interp_mode, - unsigned nr_attrs ); - -void draw_set_twoside_attributes(struct draw_context *draw, - uint front0, uint back0, - uint front1, uint back1); - -void draw_compute_vertex_size(struct vertex_info *vinfo); - unsigned draw_prim_info( unsigned prim, unsigned *first, unsigned *incr ); unsigned draw_trim( unsigned count, unsigned first, unsigned incr ); diff --git a/src/mesa/pipe/draw/draw_flatshade.c b/src/mesa/pipe/draw/draw_flatshade.c index ae7bd24554..2ba0d5820e 100644 --- a/src/mesa/pipe/draw/draw_flatshade.c +++ b/src/mesa/pipe/draw/draw_flatshade.c @@ -56,12 +56,12 @@ static INLINE void copy_colors( struct draw_stage *stage, const struct vertex_header *src ) { const uint num_attribs = stage->draw->vertex_info.num_attribs; - const uint *interp_mode = stage->draw->vertex_info.interp_mode; + const interp_mode *interp = stage->draw->vertex_info.interp_mode; uint i; /* Look for constant/flat attribs and duplicate from src to dst vertex */ for (i = 1; i < num_attribs - 2; i++) { - if (interp_mode[i + 2] == INTERP_CONSTANT) { + if (interp[i + 2] == INTERP_CONSTANT) { copy_attr( i, dst, src ); } } diff --git a/src/mesa/pipe/draw/draw_vertex.c b/src/mesa/pipe/draw/draw_vertex.c index 64bc323207..1c7e1d8662 100644 --- a/src/mesa/pipe/draw/draw_vertex.c +++ b/src/mesa/pipe/draw/draw_vertex.c @@ -45,8 +45,8 @@ static INLINE void -emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, uint format, - uint interp) +emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, + attrib_format format, interp_mode interp) { const uint n = vinfo->num_attribs; vinfo->attr_mask |= (1 << vfAttr); @@ -59,7 +59,6 @@ emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, uint format, vinfo->interp_mode[n] = interp; vinfo->format[n] = format; vinfo->num_attribs++; - } @@ -89,6 +88,7 @@ draw_compute_vertex_size(struct vertex_info *vinfo) vinfo->size += 3; break; case FORMAT_4F: + case FORMAT_4F_VIEWPORT: vinfo->size += 4; break; default: @@ -104,7 +104,7 @@ draw_compute_vertex_size(struct vertex_info *vinfo) void draw_set_vertex_attributes( struct draw_context *draw, const uint *slot_to_vf_attr, - const uint *interp_mode, + const interp_mode *interps, unsigned nr_attrs ) { struct vertex_info *vinfo = &draw->vertex_info; @@ -125,7 +125,7 @@ draw_set_vertex_attributes( struct draw_context *draw, * Remaining attribs (color, texcoords, etc) */ for (i = 1; i < nr_attrs; i++) { - emit_vertex_attr(vinfo, slot_to_vf_attr[i], FORMAT_4F, interp_mode[i]); + emit_vertex_attr(vinfo, slot_to_vf_attr[i], FORMAT_4F, interps[i]); } draw_compute_vertex_size(vinfo); diff --git a/src/mesa/pipe/draw/draw_vertex.h b/src/mesa/pipe/draw/draw_vertex.h index f696475510..391058af26 100644 --- a/src/mesa/pipe/draw/draw_vertex.h +++ b/src/mesa/pipe/draw/draw_vertex.h @@ -38,21 +38,34 @@ #define MAX_VERT_ATTRIBS 12 /* OK? */ -#define FORMAT_OMIT 0 -#define FORMAT_1F 1 -#define FORMAT_2F 2 -#define FORMAT_3F 3 -#define FORMAT_4F 4 -#define FORMAT_4F_VIEWPORT 4 -#define FORMAT_4UB 5 + +struct draw_context; + + + +/** + * Vertex attribute format + */ +typedef enum { + FORMAT_OMIT, + FORMAT_1F, + FORMAT_2F, + FORMAT_3F, + FORMAT_4F, + FORMAT_4F_VIEWPORT, + FORMAT_4UB +} attrib_format; -enum interp_mode { +/** + * Attribute interpolation mode + */ +typedef enum { INTERP_NONE, /**< never interpolate vertex header info */ INTERP_CONSTANT, INTERP_LINEAR, INTERP_PERSPECTIVE -}; +} interp_mode; @@ -63,8 +76,8 @@ struct vertex_info uint attr_mask; /**< mask of VF_ATTR_ bits */ uint slot_to_attrib[MAX_VERT_ATTRIBS]; uint attrib_to_slot[TGSI_ATTRIB_MAX]; - uint interp_mode[MAX_VERT_ATTRIBS]; - uint format[MAX_VERT_ATTRIBS]; /**< FORMAT_x */ + interp_mode interp_mode[MAX_VERT_ATTRIBS]; + attrib_format format[MAX_VERT_ATTRIBS]; /**< FORMAT_x */ uint size; /**< total vertex size in dwords */ }; @@ -75,10 +88,11 @@ struct vertex_info * \return slot in which the attribute was added */ static INLINE uint -draw_emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, uint format, - uint interp) +draw_emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, + attrib_format format, interp_mode interp) { const uint n = vinfo->num_attribs; + assert(n < MAX_VERT_ATTRIBS); vinfo->attr_mask |= (1 << vfAttr); vinfo->slot_to_attrib[n] = vfAttr; vinfo->format[n] = format; @@ -88,8 +102,17 @@ draw_emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, uint format, } +extern void draw_set_vertex_attributes( struct draw_context *draw, + const uint *attrs, + const interp_mode *interps, + unsigned nr_attrs ); + +extern void draw_set_twoside_attributes(struct draw_context *draw, + uint front0, uint back0, + uint front1, uint back1); + +extern void draw_compute_vertex_size(struct vertex_info *vinfo); -struct draw_context; extern int draw_vertex_cache_check_space( struct draw_context *draw, unsigned nr_verts ); |