1 /************************************************************************** 2 * 3 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 28 29 #include "main/context.h" 30 #include "program/prog_print.h" 31 32 #include "pipe/p_state.h" 33 #include "pipe/p_shader_tokens.h" 34 #include "tgsi/tgsi_dump.h" 35 36 #include "cso_cache/cso_cache.h" 37 38 #include "st_context.h" 39 #include "st_debug.h" 40 #include "st_program.h" 41 42 43 44 #ifdef DEBUG 45 int ST_DEBUG = 0; 46 47 static const struct debug_named_value st_debug_flags[] = { 48 { "mesa", DEBUG_MESA, NULL }, 49 { "tgsi", DEBUG_TGSI, NULL }, 50 { "constants",DEBUG_CONSTANTS, NULL }, 51 { "pipe", DEBUG_PIPE, NULL }, 52 { "tex", DEBUG_TEX, NULL }, 53 { "fallback", DEBUG_FALLBACK, NULL }, 54 { "screen", DEBUG_SCREEN, NULL }, 55 { "query", DEBUG_QUERY, NULL }, 56 DEBUG_NAMED_VALUE_END 57 }; 58 59 DEBUG_GET_ONCE_FLAGS_OPTION(st_debug, "ST_DEBUG", st_debug_flags, 0) 60 #endif 61 62 63 void 64 st_debug_init(void) 65 { 66 #ifdef DEBUG 67 ST_DEBUG = debug_get_option_st_debug(); 68 #endif 69 } 70 71 72 73 /** 74 * Print current state. May be called from inside gdb to see currently 75 * bound vertex/fragment shaders and associated constants. 76 */ 77 void 78 st_print_current(void) 79 { 80 GET_CURRENT_CONTEXT(ctx); 81 struct st_context *st = st_context(ctx); 82 83 #if 0 84 int i; 85 86 printf("Vertex Transform Inputs:\n"); 87 for (i = 0; i < st->vp->state.num_inputs; i++) { 88 printf(" Slot %d: VERT_ATTRIB_%d\n", i, st->vp->index_to_input[i]); 89 } 90 #endif 91 92 if (st->vp->variants) 93 tgsi_dump( st->vp->variants[0].tgsi.tokens, 0 ); 94 if (st->vp->Base.Base.Parameters) 95 _mesa_print_parameter_list(st->vp->Base.Base.Parameters); 96 97 tgsi_dump( st->fp->variants[0].tgsi.tokens, 0 ); 98 if (st->fp->Base.Base.Parameters) 99 _mesa_print_parameter_list(st->fp->Base.Base.Parameters); 100 } 101 102 103