home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mesa5.zip / mesa5src.zip / tnl / t_imm_debug.cpp < prev    next >
C/C++ Source or Header  |  2002-10-24  |  7KB  |  184 lines

  1. /* $Id: t_imm_debug.c,v 1.9 2002/10/24 23:57:25 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  3.5
  6.  *
  7.  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  8.  *
  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:
  15.  *
  16.  * The above copyright notice and this permission notice shall be included
  17.  * in all copies or substantial portions of the Software.
  18.  *
  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.
  25.  */
  26.  
  27. #include "mtypes.h"
  28. #include "context.h"
  29. #include "imports.h"
  30. #include "t_context.h"
  31. #include "t_imm_debug.h"
  32.  
  33.  
  34. void _tnl_print_vert_flags( const char *name, GLuint flags )
  35. {
  36.    _mesa_debug(NULL,
  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",
  38.        name,
  39.        flags,
  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, " : ""
  64.       );
  65. }
  66.  
  67. void _tnl_print_cassette( struct immediate *IM )
  68. {
  69.    GLuint i;
  70.    GLuint *flags = IM->Flag;
  71.    GLuint andflag = IM->CopyAndFlag;
  72.    GLuint orflag = (IM->CopyOrFlag|IM->Evaluated);
  73.    GLuint state = IM->BeginState;
  74.    GLuint req = ~0;
  75.  
  76.    _mesa_debug(NULL, "Cassette id %d, %u rows.\n", IM->id,
  77.        IM->Count - IM->CopyStart);
  78.  
  79.    _tnl_print_vert_flags("Contains at least one", orflag);
  80.  
  81.    if (IM->Count != IM->CopyStart)
  82.    {
  83.       _tnl_print_vert_flags("Contains a full complement of", andflag);
  84.  
  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");
  90.  
  91.    }
  92.  
  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]);
  116.      }
  117.       }
  118.  
  119.       if (req & flags[i] & VERT_BIT_ELT)
  120.      _mesa_debug(NULL, " Elt %u\t", IM->Elt[i]);
  121.  
  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]);
  127.  
  128.       if (req & flags[i] & VERT_BITS_TEX_ANY) {
  129.      GLuint j;
  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]);
  137.         }
  138.      }
  139.       }
  140.  
  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]);
  147.  
  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]);
  153.  
  154.       if (req & flags[i] & VERT_BIT_FOG)
  155.      _mesa_debug(NULL, " Fog %f ", IM->Attrib[VERT_ATTRIB_FOG][i][0]);
  156.  
  157.       if (req & flags[i] & VERT_BIT_INDEX)
  158.      _mesa_debug(NULL, " Index %u ", IM->Index[i]);
  159.  
  160.       if (req & flags[i] & VERT_BIT_EDGEFLAG)
  161.      _mesa_debug(NULL, " Edgeflag %d ", IM->EdgeFlag[i]);
  162.  
  163.       if (req & flags[i] & VERT_BIT_MATERIAL)
  164.      _mesa_debug(NULL, " Material ");
  165.  
  166.  
  167.       /* The order of these two is not easily knowable, but this is
  168.        * the usually correct way to look at them.
  169.        */
  170.       if (req & flags[i] & VERT_BIT_END)
  171.      _mesa_debug(NULL, " END ");
  172.  
  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," : "");
  180.  
  181.       _mesa_debug(NULL, "\n");
  182.    }
  183. }
  184.