mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 12:20:10 +01:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
Get comfy. llvmpipe coroutines have a stack frame. This is created by hooking in malloc and coro.alloc and coro.size intrinsics. LLVM has an CoroElide pass that is meant to allow that stack frame to be done as an alloca in the caller instead of using the malloc path. The CoroElide pass relies on the coroutine being inlined (fixed that). The CoroElide pass relies on there being a direct connect between coro.destroy(i8 *arg) and arg = coro.begin(id). However due to the way the compute shaders are launched, there is no way to ensure that link. Fixing the CoroElide pass seems quite difficult, I considered having a force CoroElide always flag to make it dtrt, however I'm not sure how ugly that would end up. My first attempt tried to preallocate the stacks at a fixed size, this turned out to be naive as the stack frame size was not sized like I expected. Instead the first coro to run allocs enough for everyone, so avoid the massive amounts of small allocations. This remove coro malloc from a lot of profiles and shaves another 30s or so from OpenCL ./conversions/test_conversions uchar_uin (from 4.40m to just under 4m on my ryzen 7 1800x) Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12432> |
||
|---|---|---|
| .gitlab/issue_templates | ||
| .gitlab-ci | ||
| android | ||
| bin | ||
| build-support | ||
| docs | ||
| include | ||
| src | ||
| subprojects | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .mailmap | ||
| .travis.yml | ||
| meson.build | ||
| meson_options.txt | ||
| README.rst | ||
| REVIEWERS | ||
| 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.