anv_pipeline.c revision 832bcc36133107e604a89f1762b9794fa7fc52ca
1832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke/*
2832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
3832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * Copyright © 2006 Intel Corporation
4832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke *
5832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * Permission is hereby granted, free of charge, to any person obtaining a
6832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * copy of this software and associated documentation files (the "Software"),
7832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * to deal in the Software without restriction, including without limitation
8832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * and/or sell copies of the Software, and to permit persons to whom the
10832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * Software is furnished to do so, subject to the following conditions:
11832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke *
12832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * The above copyright notice and this permission notice (including the next
13832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * paragraph) shall be included in all copies or substantial portions of the
14832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * Software.
15832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke *
16832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * IN THE SOFTWARE.
23832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke */
24832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
25832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke/**
26832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * \file intel_debug.c
27832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke *
28832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * Support for the INTEL_DEBUG environment variable, along with other
29832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke * miscellaneous debugging code.
30832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke */
31832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
32832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke#include "brw_context.h"
33832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke#include "intel_debug.h"
34832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke#include "utils.h"
35832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
36832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunkeint INTEL_DEBUG = 0;
37832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
38832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunkestatic const struct dri_debug_control debug_control[] = {
39832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "tex",   DEBUG_TEXTURE},
40832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "state", DEBUG_STATE},
41832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "ioctl", DEBUG_IOCTL},
42832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "blit",  DEBUG_BLIT},
43832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "mip",   DEBUG_MIPTREE},
44832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "fall",  DEBUG_PERF},
45832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "perf",  DEBUG_PERF},
46832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "bat",   DEBUG_BATCH},
47832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "pix",   DEBUG_PIXEL},
48832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "buf",   DEBUG_BUFMGR},
49832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "reg",   DEBUG_REGION},
50832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "fbo",   DEBUG_FBO},
51832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "fs",    DEBUG_WM },
52832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "gs",    DEBUG_GS},
53832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "sync",  DEBUG_SYNC},
54832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "prim",  DEBUG_PRIMS },
55832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "vert",  DEBUG_VERTS },
56832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "dri",   DEBUG_DRI },
57832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "sf",    DEBUG_SF },
58832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "stats", DEBUG_STATS },
59832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "wm",    DEBUG_WM },
60832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "urb",   DEBUG_URB },
61832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "vs",    DEBUG_VS },
62832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "clip",  DEBUG_CLIP },
63832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "aub",   DEBUG_AUB },
64832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "shader_time", DEBUG_SHADER_TIME },
65832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "no16",  DEBUG_NO16 },
66832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { "blorp", DEBUG_BLORP },
67832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   { NULL,    0 }
68832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke};
69832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
70832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunkevoid
71832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunkebrw_process_intel_debug_variable(struct brw_context *brw)
72832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke{
73832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   INTEL_DEBUG = driParseDebugString(getenv("INTEL_DEBUG"), debug_control);
74832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   if (INTEL_DEBUG & DEBUG_BUFMGR)
75832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke      dri_bufmgr_set_debug(brw->bufmgr, true);
76832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
77832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   if ((INTEL_DEBUG & DEBUG_SHADER_TIME) && brw->gen < 7) {
78832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke      fprintf(stderr,
79832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke              "shader_time debugging requires gen7 (Ivybridge) or better.\n");
80832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke      INTEL_DEBUG &= ~DEBUG_SHADER_TIME;
81832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   }
82832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
83832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   if (INTEL_DEBUG & DEBUG_PERF)
84832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke      brw->perf_debug = true;
85832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke
86832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke   if (INTEL_DEBUG & DEBUG_AUB)
87832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke      drm_intel_bufmgr_gem_set_aub_dump(brw->bufmgr, true);
88832bcc36133107e604a89f1762b9794fa7fc52caKenneth Graunke}
89