mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 02:10:11 +01:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
Previously when considering whether to rematerialize or spill/fill ssa_1954, we would go for a spill/fill : vec4 32 ssa_388 = (float32)txf ssa_387 (texture_handle), ssa_86 (coord), ssa_23 (lod), 0 (texture), 0 (sampler) ... vec1 32 ssa_1953 = load_const (0xbd23d70a = -0.040000) vec1 32 ssa_1954 = fadd ssa_388.x, ssa_1953 vec1 32 ssa_1955 = fneg ssa_1954 This is because when looking at ssa_1955 the first time, we would consider ssa_388 unrematerialiable, and therefore all values built on top of it would be considered unrematerialiable as well. The missing piece when considering whether to rematerialize ssa_1954 is that we should look at filled values. Now that ssa_388 has been spilled/filled, we can rebuild ssa_1955 on top of the filled value and avoid spilling/filling ssa_1955 at all. This requires a bit more work though. We can't just look at an instruction in isolation, we need to go through the ssa chains until we find values we can rematerialize or not. In this change we build a list of all ssa values involved in building a given value, up to the point there we find a filled or a rematerializable value. In this particular case, looking at ssa_1955 : * We can rematerialize ssa_388 from its filled value * We can rematerialize ssa_1953 trivially * We can rematerialize ssa_1954 because its 2 inputs are rematerializable * We can rematerialize ssa_1955 because ssa_1954 is rematerializable Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16556> |
||
|---|---|---|
| .github/workflows | ||
| .gitlab/issue_templates | ||
| .gitlab-ci | ||
| android | ||
| bin | ||
| build-support | ||
| docs | ||
| include | ||
| src | ||
| subprojects | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .graphqlrc.yml | ||
| .mailmap | ||
| CODEOWNERS | ||
| meson.build | ||
| meson_options.txt | ||
| README.rst | ||
| VERSION | ||
`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.