- 11 Aug, 2021 40 commits
-
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com>
-
Alyssa Rosenzweig authored
I want to test SSBOs with the standalone compiler while retaining full support for mediump qualifiers. v2: Actually test SSBOs on compute shaders. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com>
-
Dave Airlie authored
This is the equivalent of idr's intel/fs: sel.cond writes the flags on Gfx4 and Gfx5 except for the vec4 backend. This fixes buggy rendering seen with crocus on a qt trace. v2 (idr): Trivial whitespace change. Add unit tests. v3: Fix type in comment in unit tests. Noticed by Jason and Priit. Reviewed-by:
Jason Ekstrand <jason@jlekstrand.net> Iron Lake total instructions in shared programs: 8183077 -> 8184543 (0.02%) instructions in affected programs: 198990 -> 200456 (0.74%) helped: 0 HURT: 1355 HURT stats (abs) min: 1 max: 8 x̄: 1.08 x̃: 1 HURT stats (rel) min: 0.29% max: 6.00% x̄: 0.99% x̃: 0.70% 95% mean confidence interval for instructions value: 1.04 1.12 95% mean confidence interval for instructions %-change: 0.96% 1.03% Instructions are HURT. total cycles in shared programs: 238967672 -> 238962784 (<.01%) cycles in affected programs: 4666014 -> 4661126 (-0.10%) helped: 406 HURT: 314 helped stats (abs) min: 4 max: 54 x̄: 22.46 ...
-
Ian Romanick authored
On Gfx4 and Gfx5, sel.l (for min) and sel.ge (for max) are implemented using a separte cmpn and sel instruction. This lowering occurs in fs_vistor::lower_minmax which is called very, very late... a long, long time after the first calls to opt_cmod_propagation. As a result, conditional modifiers can be incorrectly propagated across sel.cond on those platforms. No tests were affected by this change, and I find that quite shocking. After just changing flags_written(), all of the atan tests started failing on ILK. That required the change in cmod_propagatin (and the addition of the prop_across_into_sel_gfx5 unit test). Shader-db results for ILK and GM45 are below. I looked at a couple before and after shaders... and every case that I looked at had experienced incorrect cmod propagation. This affected a LOT of apps! Euro Truck Simulator 2, The Talos Principle, Serious Sam 3, Sanctum 2, Gang Beasts, and on and on... :( I discovered this bug while work...
-
Dave Airlie authored
Aligning the pitch to 4 bytes allows the BLT engine to be used for transfers to/from these surfaces. Fixes: f3630548 ("crocus: initial gallium driver for Intel gfx 4-7") Part-of: <mesa/mesa!12329>
-
Dave Airlie authored
I lost these in my conversion from i965 but they are necessary. This should fix corruption in qt fonts at seen in the minecraft launcher. Fixes: f3630548 ("crocus: initial gallium driver for Intel gfx 4-7") Part-of: <mesa/mesa!12329>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
The negative cases here did not pass before this series, showing the bug in the clamp optimization. By introducing the FCLAMP pseudo op, the bug is fixed. Let's ensure we don't regress. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Map nir_op_fsat/etc to FCLAMP pseudo ops, instead of FADD. There are significantly fewer knobs on FCLAMP, meaning significantly fewer things to get wrong. This fixes two(!) classes of bugs: * Swizzles (failing to lower/compose swizzles on clamps) * Numerical bugs (incorrectly treating +0.0 as an additive identity) Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Cc: mesa-stable Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Writing these tests brought to light the cluster of bugs fixed in the previous commits. Now that things work, let's ensure they stay working. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Simplifies pattern matching. This commit by itself fixes multiple numerical issues -- the previous fabsneg check failed to check the round mode or the sign of the zero. That will break Vulkan/OpenCL. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Cc: mesa-stable Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Optimizer tests really are global. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Some of these Bifrost restrictions may be skipped on Valhall. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Realized this trick when reversing Valhall. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
This ensures we can constant fold the ALU ops used to lower: * explicit LOD calculations * array textures * texture offsets * multisample indices Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
These rules are not obvious. But they turn out to be exactly what's required by the spec. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12205>
-
Alyssa Rosenzweig authored
Validates the prior commit. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
Bifrost adds a value for the C factor equaling 2*src. This does not correspond directly to API blend modes so it is not too useful in general. However, it's required for src*dest + dest*src blending to be done in hardware instead of a blend shader. GFXbench uses that blend mode, so it must be important ;-) Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
Add unit tests for the fixed-function blending helpers in pan_blend.c. Each test consists of a Porter-Duff blend mode and the associated hardware state. In this commit, we add tests for the most common modes. For motivation, this code has NOT been properly tested in CI. True, functional correctness of the blend module as a whole is tested by dEQP-GLES3.functional.fragment_ops.blend.* among other integration tests. However, this testing is insufficient to check for regressions. Crucially, the following broken patch would clear CI: bool pan_can_fixed_function(...) { return false; } In that case, blend shaders are used 100% of the time, which will regress performance horribly but still pass dEQP. The only clue something went wrong would be some traces changing checksum due to the fixed-function blender producing slightly different output than equivalent blend shaders. By unit testing the fixed blend path, we ensure we always use the fixed-function path when we expect it to. Similarly, using incorrect values for the blend metadata may not affect functional correctness but will increase power consumption. Let's check all the data we export to drivers. Note: due to additive commutativity, there are many pairs of equivalent Mali blend modes. Unfortunately, the vendor is... inconsistent about how to resolve ambiguous modes. Our algorithm for computing modes is correct; the "preferred" values are left in comments since otherwise our tests fail despite correct code. I want to blame Bifrost for this, but Midgard was patient zero. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
Needed to pass the "replace" unit test. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
This is more convenient for the Gallium driver and easier to test. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
This is required to disable dithering on a per-draw basis when OPAQUE output is used (bypassing the blender which normally uses the round_to_framebuffer_precision flag to do the same). This functionally reverts: ebc07f4b ("panfrost: Remove padded unorm blendable formats") fae90a79 ("panfrost: Always pick dithered tb formats") while adding the functionality to make them useful. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12152>
-
Alyssa Rosenzweig authored
Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12328>
-
Alyssa Rosenzweig authored
Useful to cross off CPU texture tiling as the source of bugs. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12328>
-
Alyssa Rosenzweig authored
To rule out buggy optimization passes when debugging. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12328>
-
Alyssa Rosenzweig authored
It's an optimization pass -- omitting it should not cause MMU faults (!). Make sure the UBO push mask is set regardless of whether the pass is called, and just call the pass when required. Signed-off-by:
Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <mesa/mesa!12328>
-
Lionel Landwerlin authored
This is confusing opt_cse. Signed-off-by:
Lionel Landwerlin <lionel.g.landwerlin@intel.com> Fixes: 8dfb240b ("nir: Add raytracing shader call lowering pass.") Reviewed-by:
Daniel Schürmann <daniel@schuermann.dev> Part-of: <mesa/mesa!11953>
-
Marcin Ślusarz authored
Changes: - nir_metadata_preserve(..., nir_metadata_dominance) is called only when pass makes progress - nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't make progress Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <mesa/mesa!12324>
-
Marcin Ślusarz authored
Changes: - nir_metadata_preserve(..., nir_metadata_dominance) is called only when pass makes progress - nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't make progress Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <mesa/mesa!12324>
-
Marcin Ślusarz authored
No functional changes. Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Jesse Natalie <jenatali@microsoft.com> Part-of: <mesa/mesa!12324>
-
Marcin Ślusarz authored
No functional changes. v2: fix build Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Jesse Natalie <jenatali@microsoft.com> Part-of: <mesa/mesa!12324>
-
Marcin Ślusarz authored
Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Jesse Natalie <jenatali@microsoft.com> Part-of: <mesa/mesa!12324>
-
Marcin Ślusarz authored
Changes: - nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't make progress v2: fix build Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Jesse Natalie <jenatali@microsoft.com> Part-of: <mesa/mesa!12324>
-
Marcin Ślusarz authored
Signed-off-by:
Marcin Ślusarz <marcin.slusarz@intel.com> Reviewed-by:
Jesse Natalie <jenatali@microsoft.com> Part-of: <mesa/mesa!12324>
-