Dance around a driver issue that generates garbage pixels

We're getting reports of garbage pixels on the (PowerVR) Apple A10x. Restating the shader clipping logic in a different way appears to make these go away. This is probably a driver issue, since "coverage" should never be NaN and both versions ought be be equivalent.

Fixes #7423

Diffs=
b2894c99d Dance around a driver issue that generates garbage pixels (#8077)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
This commit is contained in:
csmartdalton
2024-09-06 04:26:55 +00:00
parent 41efaaf853
commit c6f5ae2bde
3 changed files with 7 additions and 8 deletions

View File

@@ -1 +1 @@
0dcbf4d1f22fa237f76def86c83ccfd8381458f1
b2894c99d818c5155d90425e71327de847a833ae

View File

@@ -433,8 +433,7 @@ PLS_MAIN(@drawFragmentMain)
// check exact equality of the clipID.
half2 clipData = unpackHalf2x16(PLS_LOADUI(clipBuffer));
half clipContentID = clipData.g;
half clipCoverage = clipContentID == v_clipID ? clipData.r : make_half(.0);
coverage = min(coverage, clipCoverage);
coverage = (clipContentID == v_clipID) ? min(clipData.r, coverage) : make_half(.0);
}
PLS_PRESERVE_UI(clipBuffer);
}

View File

@@ -400,11 +400,11 @@ def launch_goldens(test_harness_server):
print("Can't find rivspath " + args.src, flush=True)
return -1;
src = glob.glob(os.path.join(args.src, "*.riv"))
n = len(src)
for riv in src:
rivsqueue.put(riv)
if os.path.isdir(args.src):
for riv in glob.iglob(os.path.join(args.src, "*.riv")):
rivsqueue.put(riv)
else:
rivsqueue.put(args.src)
cmd = [tool,
"--test_harness", "%s:%u" % test_harness_server.server_address,