File: builtin-overload-matching.frag

package info (click to toggle)
piglit 0~git20150829-59d7066-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 39,280 kB
  • sloc: ansic: 191,513; xml: 43,580; cpp: 29,351; python: 18,307; lisp: 8,347; sh: 507; makefile: 17; pascal: 5
file content (35 lines) | stat: -rw-r--r-- 789 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// [config]
// expect_result: pass
// glsl_version: 1.30
// [end config]

/**
 * PASS
 *
 * This shader triggered a bug in Mesa's lazy built-in prototype importing.
 *
 * The first call, abs(f), would fail to find a local signature, look through
 * the built-ins, and import the signature
 *
 *    float abs(float);
 *
 * The second call, abs(i), would also look for a local signature first,
 * finding the float signature.  Unfortunately, it settled for this inexact
 * match, failing to search the built-ins to find the correct signature:
 *
 *    int abs(int);
 *
 * So abs(i) ended up being a float, leading to bizarre type errors.
 */
#version 130

uniform float f;
uniform int i;

void main()
{
    float af = abs(f);
    int ai = abs(i);

    gl_FragColor = vec4(af, af, ai, ai);
}