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 45int ST_DEBUG = 0; 46 47static 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 59DEBUG_GET_ONCE_FLAGS_OPTION(st_debug, "ST_DEBUG", st_debug_flags, 0) 60#endif 61 62 63void 64st_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 */ 77void 78st_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