Summary: | Black squares in the Spec Ops: The Line chapter select screen | ||
---|---|---|---|
Product: | Mesa | Reporter: | Daniel Scharrer <daniel> |
Component: | Drivers/Gallium/radeonsi | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED FIXED | QA Contact: | Default DRI bug account <dri-devel> |
Severity: | normal | ||
Priority: | medium | ||
Version: | git | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Screenshot showing the bug (frame 89)
Screenshot showing the bug (frame 91) Problematic fragment shader |
Description
Daniel Scharrer
2016-08-14 01:09:11 UTC
Created attachment 125774 [details] Screenshot showing the bug (frame 91) May or may not be related to bug #90481 - I haven't seen any gpu lockups or crashes in the menu. Hi Daniel, thank you for the detailed report and the initial investigation! I can indeed reproduce this (including the NaN values) on Polaris. Created attachment 126172 [details]
Problematic fragment shader
Okay, so here's a bit more detail of what is happening: the attached fragment shader (shader object 31) samples a 2D vector from PSampler2 (texture object 3153) and does some computations on it involving inversesqrt, under the assumption that the dot product of the vector is <= 1. This is false: looking at level 0 of texture 3153 reveals e.g. a unorm value (142, 255) at texel 155,263.
The likely cause here is that this is a port from D3D, which specifies that rsq should take the absolute value of its argument, to GLSL, which says that inversesqrt is undefined for values <= 0.
I've raised this issue with Virtual Programming. If it's undefined, doing abs is probably a good idea to at least reduce the number of bug reports. A possible fix here: https://lists.freedesktop.org/archives/mesa-dev/2017-January/139686.html People might be interested by https://github.com/virtual-programming/specops-linux/issues/20 (In reply to Samuel Pitoiset from comment #6) > A possible fix here: > https://lists.freedesktop.org/archives/mesa-dev/2017-January/139686.html I get a build failure after applying this patch: si_shader_tgsi_alu.c: In function ‘emit_rsq’: si_shader_tgsi_alu.c:759:43: error: ‘TGSI_OPCODE_ABS’ undeclared (first use in this function) abs = lp_build_emit_llvm_unary(bld_base, TGSI_OPCODE_ABS, ^~~~~~~~~~~~~~~ si_shader_tgsi_alu.c:759:43: note: each undeclared identifier is reported only once for each function it appears in make[4]: *** [Makefile:701: si_shader_tgsi_alu.lo] Error 1 Makes sense. TGSI_OPCODE_ABS has been removed after this patch, but it fixes the issue (I tested myself). The patch is still pending for some reasons, I will let you know when something change. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.