89873e5e5ce98c811968f38eb7d1a7953476fe97
The problem is when we have DP2 or DP3 instruction that writes a w channel like here: DP3 temp[148].w, -temp[147].xyz_, temp[57].xyz_; will get pair-converted to src0.xyz = temp[147], src1.xyz = temp[57] DP3, -src0.xyz, src1.xyz DP3 temp[148].w, -src0._, src0._ where the alpha instruction is a basically just a replicate of the result from the RGB sub intruction. However the destination register index in the RBG slot is also 148. Now we pair-schedule and regalloc src0.xyz = temp[13], src1.xyz = temp[3] DP3, -src0.xyz, src1.xyz DP3 temp[3].w, -src0._, src0._ We properly regalloc the alpha channel, but we obviously skip the rgb, because the writemask is empty there. However when we emit the shader later, we actually check the number of used regs based on the maximum used register index and we don't consider the writemasks, so we would think we use 149 temps. AFAIK the shader would be still completelly OK. But we would think it hits the HW limits and used a dummy one instead. Fix this by checking for empty writemasks when marking the registers as used. GAINED: shaders/glmark/1-22.shader_test FS This is also needed to prevent another lost Trine shader from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23089 Reviewed-by: Filip Gawin <filip.gawin@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23838>
`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library ====================================================== Source ------ This repository lives at https://gitlab.freedesktop.org/mesa/mesa. Other repositories are likely forks, and code found there is not supported. Build & install --------------- You can find more information in our documentation (`docs/install.rst <https://mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_): .. code-block:: sh $ mkdir build $ cd build $ meson .. $ sudo ninja install Support ------- Many Mesa devs hang on IRC; if you're not sure which channel is appropriate, you should ask your question on `OFTC's #dri-devel <irc://irc.oftc.net/dri-devel>`_, someone will redirect you if necessary. Remember that not everyone is in the same timezone as you, so it might take a while before someone qualified sees your question. To figure out who you're talking to, or which nick to ping for your question, check out `Who's Who on IRC <https://dri.freedesktop.org/wiki/WhosWho/>`_. The next best option is to ask your question in an email to the mailing lists: `mesa-dev\@lists.freedesktop.org <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ Bug reports ----------- If you think something isn't working properly, please file a bug report (`docs/bugs.rst <https://mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.
Description
Languages
C
75.5%
C++
17.2%
Python
2.7%
Rust
1.8%
Assembly
1.5%
Other
1%