gsdx: add glsl debug capabilities

Useful to debug bad texture sampling
This commit is contained in:
Gregory Hainaut 2015-04-08 10:15:25 +02:00
parent 98d8ad7484
commit 05eb1641f2
2 changed files with 30 additions and 0 deletions

View File

@ -458,7 +458,12 @@ static const char* tfx_glsl =
"#define FMT_16 2\n"
"#define FMT_PAL 4 /* flag bit */\n"
"\n"
"// APITRACE_DEBUG allows to force pixel output to easily detect \n"
"// the fragment computed by primitive \n"
"#define APITRACE_DEBUG 0\n"
"// TEX_COORD_DEBUG output the uv coordinate as color. It is useful\n"
"// to detect bad sampling due to upscaling\n"
"//#define TEX_COORD_DEBUG\n"
"\n"
"// Not sure we have same issue on opengl. Doesn't work anyway on ATI card\n"
"// And I say this as an ATI user.\n"
@ -1057,6 +1062,9 @@ static const char* tfx_glsl =
" if (PS_LTF == 0 && PS_FMT <= FMT_16 && PS_WMS < 3 && PS_WMT < 3)\n"
" {\n"
" c[0] = sample_c(clampuv(st));\n"
"#ifdef TEX_COORD_DEBUG\n"
" c[0].rg = clampuv(st).xy;\n"
"#endif\n"
" }\n"
" else\n"
" {\n"
@ -1082,6 +1090,9 @@ static const char* tfx_glsl =
" {\n"
" c = sample_4c(uv);\n"
" }\n"
"#ifdef TEX_COORD_DEBUG\n"
" c[0].rg = uv.xy;\n"
"#endif\n"
" }\n"
"\n"
" // PERF: see the impact of the exansion before/after the interpolation\n"
@ -1436,11 +1447,15 @@ static const char* tfx_glsl =
"\n"
" vec4 zero = vec4(0.0f, 0.0f, 0.0f, 0.0f);\n"
" vec4 one = vec4(1.0f, 1.0f, 1.0f, 1.0f);\n"
"#ifdef TEX_COORD_DEBUG\n"
" vec4 c = clamp(t, zero, one);\n"
"#else\n"
"#if PS_IIP == 1\n"
" vec4 c = clamp(tfx(t, PSin_c), zero, one);\n"
"#else\n"
" vec4 c = clamp(tfx(t, PSin_fc), zero, one);\n"
"#endif\n"
"#endif\n"
"\n"
" atst(c);\n"
"\n"

View File

@ -7,7 +7,12 @@
#define FMT_16 2
#define FMT_PAL 4 /* flag bit */
// APITRACE_DEBUG allows to force pixel output to easily detect
// the fragment computed by primitive
#define APITRACE_DEBUG 0
// TEX_COORD_DEBUG output the uv coordinate as color. It is useful
// to detect bad sampling due to upscaling
//#define TEX_COORD_DEBUG
// Not sure we have same issue on opengl. Doesn't work anyway on ATI card
// And I say this as an ATI user.
@ -606,6 +611,9 @@ vec4 sample_color(vec2 st, float q)
if (PS_LTF == 0 && PS_FMT <= FMT_16 && PS_WMS < 3 && PS_WMT < 3)
{
c[0] = sample_c(clampuv(st));
#ifdef TEX_COORD_DEBUG
c[0].rg = clampuv(st).xy;
#endif
}
else
{
@ -631,6 +639,9 @@ vec4 sample_color(vec2 st, float q)
{
c = sample_4c(uv);
}
#ifdef TEX_COORD_DEBUG
c[0].rg = uv.xy;
#endif
}
// PERF: see the impact of the exansion before/after the interpolation
@ -985,10 +996,14 @@ vec4 ps_color()
vec4 zero = vec4(0.0f, 0.0f, 0.0f, 0.0f);
vec4 one = vec4(1.0f, 1.0f, 1.0f, 1.0f);
#ifdef TEX_COORD_DEBUG
vec4 c = clamp(t, zero, one);
#else
#if PS_IIP == 1
vec4 c = clamp(tfx(t, PSin_c), zero, one);
#else
vec4 c = clamp(tfx(t, PSin_fc), zero, one);
#endif
#endif
atst(c);