1 /* $Id: t_imm_debug.c,v 1.9 2002/10/24 23:57:25 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 #include "t_context.h"
31 #include "t_imm_debug.h"
34 void _tnl_print_vert_flags( const char *name
, GLuint flags
)
37 "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
40 (flags
& VERT_BIT_CLIP
) ? "clip/proj-clip/glend, " : "",
41 (flags
& VERT_BIT_EDGEFLAG
) ? "edgeflag, " : "",
42 (flags
& VERT_BIT_ELT
) ? "array-elt, " : "",
43 (flags
& VERT_BIT_END_VB
) ? "end-vb, " : "",
44 (flags
& VERT_BITS_EVAL_ANY
) ? "eval-coord, " : "",
45 (flags
& VERT_BIT_EYE
) ? "eye/glbegin, " : "",
46 (flags
& VERT_BIT_FOG
) ? "fog-coord, " : "",
47 (flags
& VERT_BIT_INDEX
) ? "index, " : "",
48 (flags
& VERT_BIT_MATERIAL
) ? "material, " : "",
49 (flags
& VERT_BIT_NORMAL
) ? "normals, " : "",
50 (flags
& VERT_BIT_POS
) ? "obj, " : "",
51 (flags
& VERT_BIT_OBJ_3
) ? "obj-3, " : "",
52 (flags
& VERT_BIT_OBJ_4
) ? "obj-4, " : "",
53 (flags
& VERT_BIT_POINT_SIZE
) ? "point-size, " : "",
54 (flags
& VERT_BIT_COLOR0
) ? "colors, " : "",
55 (flags
& VERT_BIT_COLOR1
) ? "specular, " : "",
56 (flags
& VERT_BIT_TEX0
) ? "texcoord0, " : "",
57 (flags
& VERT_BIT_TEX1
) ? "texcoord1, " : "",
58 (flags
& VERT_BIT_TEX2
) ? "texcoord2, " : "",
59 (flags
& VERT_BIT_TEX3
) ? "texcoord3, " : "",
60 (flags
& VERT_BIT_TEX4
) ? "texcoord4, " : "",
61 (flags
& VERT_BIT_TEX5
) ? "texcoord5, " : "",
62 (flags
& VERT_BIT_TEX6
) ? "texcoord6, " : "",
63 (flags
& VERT_BIT_TEX7
) ? "texcoord7, " : ""
67 void _tnl_print_cassette( struct immediate
*IM
)
70 GLuint
*flags
= IM
->Flag
;
71 GLuint andflag
= IM
->CopyAndFlag
;
72 GLuint orflag
= (IM
->CopyOrFlag
|IM
->Evaluated
);
73 GLuint state
= IM
->BeginState
;
76 _mesa_debug(NULL
, "Cassette id %d, %u rows.\n", IM
->id
,
77 IM
->Count
- IM
->CopyStart
);
79 _tnl_print_vert_flags("Contains at least one", orflag
);
81 if (IM
->Count
!= IM
->CopyStart
)
83 _tnl_print_vert_flags("Contains a full complement of", andflag
);
85 _mesa_debug(NULL
, "Final begin/end state %s/%s, errors %s/%s\n",
86 (state
& VERT_BEGIN_0
) ? "in" : "out",
87 (state
& VERT_BEGIN_1
) ? "in" : "out",
88 (state
& VERT_ERROR_0
) ? "y" : "n",
89 (state
& VERT_ERROR_1
) ? "y" : "n");
93 for (i
= IM
->CopyStart
; i
<= IM
->Count
; i
++) {
94 _mesa_debug(NULL
, "%u: ", i
);
95 if (req
& VERT_BITS_OBJ_234
) {
96 if (flags
[i
] & VERT_BIT_EVAL_C1
)
97 _mesa_debug(NULL
, "EvalCoord %f ",
98 IM
->Attrib
[VERT_ATTRIB_POS
][i
][0]);
99 else if (flags
[i
] & VERT_BIT_EVAL_P1
)
100 _mesa_debug(NULL
, "EvalPoint %.0f ",
101 IM
->Attrib
[VERT_ATTRIB_POS
][i
][0]);
102 else if (flags
[i
] & VERT_BIT_EVAL_C2
)
103 _mesa_debug(NULL
, "EvalCoord %f %f ",
104 IM
->Attrib
[VERT_ATTRIB_POS
][i
][0],
105 IM
->Attrib
[VERT_ATTRIB_POS
][i
][1]);
106 else if (flags
[i
] & VERT_BIT_EVAL_P2
)
107 _mesa_debug(NULL
, "EvalPoint %.0f %.0f ",
108 IM
->Attrib
[VERT_ATTRIB_POS
][i
][0],
109 IM
->Attrib
[VERT_ATTRIB_POS
][i
][1]);
110 else if (i
< IM
->Count
&& (flags
[i
] & VERT_BITS_OBJ_234
)) {
111 _mesa_debug(NULL
, "Obj %f %f %f %f",
112 IM
->Attrib
[VERT_ATTRIB_POS
][i
][0],
113 IM
->Attrib
[VERT_ATTRIB_POS
][i
][1],
114 IM
->Attrib
[VERT_ATTRIB_POS
][i
][2],
115 IM
->Attrib
[VERT_ATTRIB_POS
][i
][3]);
119 if (req
& flags
[i
] & VERT_BIT_ELT
)
120 _mesa_debug(NULL
, " Elt %u\t", IM
->Elt
[i
]);
122 if (req
& flags
[i
] & VERT_BIT_NORMAL
)
123 _mesa_debug(NULL
, " Norm %f %f %f ",
124 IM
->Attrib
[VERT_ATTRIB_NORMAL
][i
][0],
125 IM
->Attrib
[VERT_ATTRIB_NORMAL
][i
][1],
126 IM
->Attrib
[VERT_ATTRIB_NORMAL
][i
][2]);
128 if (req
& flags
[i
] & VERT_BITS_TEX_ANY
) {
130 for (j
= 0 ; j
< MAX_TEXTURE_UNITS
; j
++) {
131 if (req
& flags
[i
] & VERT_BIT_TEX(j
)) {
132 _mesa_debug(NULL
, "TC%d %f %f %f %f", j
,
133 IM
->Attrib
[VERT_ATTRIB_TEX0
+ j
][i
][0],
134 IM
->Attrib
[VERT_ATTRIB_TEX0
+ j
][i
][1],
135 IM
->Attrib
[VERT_ATTRIB_TEX0
+ j
][i
][2],
136 IM
->Attrib
[VERT_ATTRIB_TEX0
+ j
][i
][3]);
141 if (req
& flags
[i
] & VERT_BIT_COLOR0
)
142 _mesa_debug(NULL
, " Rgba %f %f %f %f ",
143 IM
->Attrib
[VERT_ATTRIB_COLOR0
][i
][0],
144 IM
->Attrib
[VERT_ATTRIB_COLOR0
][i
][1],
145 IM
->Attrib
[VERT_ATTRIB_COLOR0
][i
][2],
146 IM
->Attrib
[VERT_ATTRIB_COLOR0
][i
][3]);
148 if (req
& flags
[i
] & VERT_BIT_COLOR1
)
149 _mesa_debug(NULL
, " Spec %f %f %f ",
150 IM
->Attrib
[VERT_ATTRIB_COLOR1
][i
][0],
151 IM
->Attrib
[VERT_ATTRIB_COLOR1
][i
][1],
152 IM
->Attrib
[VERT_ATTRIB_COLOR1
][i
][2]);
154 if (req
& flags
[i
] & VERT_BIT_FOG
)
155 _mesa_debug(NULL
, " Fog %f ", IM
->Attrib
[VERT_ATTRIB_FOG
][i
][0]);
157 if (req
& flags
[i
] & VERT_BIT_INDEX
)
158 _mesa_debug(NULL
, " Index %u ", IM
->Index
[i
]);
160 if (req
& flags
[i
] & VERT_BIT_EDGEFLAG
)
161 _mesa_debug(NULL
, " Edgeflag %d ", IM
->EdgeFlag
[i
]);
163 if (req
& flags
[i
] & VERT_BIT_MATERIAL
)
164 _mesa_debug(NULL
, " Material ");
167 /* The order of these two is not easily knowable, but this is
168 * the usually correct way to look at them.
170 if (req
& flags
[i
] & VERT_BIT_END
)
171 _mesa_debug(NULL
, " END ");
173 if (req
& flags
[i
] & VERT_BIT_BEGIN
)
174 _mesa_debug(NULL
, " BEGIN(%s) (%s%s%s%s)",
175 _mesa_prim_name
[IM
->Primitive
[i
] & PRIM_MODE_MASK
],
176 (IM
->Primitive
[i
] & PRIM_LAST
) ? "LAST," : "",
177 (IM
->Primitive
[i
] & PRIM_BEGIN
) ? "BEGIN," : "",
178 (IM
->Primitive
[i
] & PRIM_END
) ? "END," : "",
179 (IM
->Primitive
[i
] & PRIM_PARITY
) ? "PARITY," : "");
181 _mesa_debug(NULL
, "\n");