fbaf5955eee6b028e7f301dd0609a413f5aa2f3e |
|
01-Mar-2017 |
Jonas Pfeil <pfeiljonas@gmx.de> |
ralloc: Make sure ralloc() allocations match malloc()'s alignment. The header of ralloc needs to be aligned, because the compiler assumes that malloc returns will be aligned to 8/16 bytes depending on the platform, leading to degraded performance or alignment faults with ralloc. Fixes SIGBUS on Raspberry Pi at high optimization levels. This patch is not perfect for MSVC, as maybe in the future the alignment for the most demanding data type might change to more than 8. v2: Commit message reword/typo fix, and add a bigger explanation in the code (by anholt) Signed-off-by: Jonas Pfeil <pfeiljonas@gmx.de> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Cc: mesa-stable@lists.freedesktop.org (cherry picked from commit cd2b55e536dc806f9358f71db438dd9c246cdb14) Squashed with ralloc: don't leave out the alignment factor Experimentation shows that without alignment factor gcc and clang choose a factor of 16 even on IA-32, which doesn't match what malloc() uses (8). The problem is it makes gcc assume the pointer is 16 byte aligned, so with -O3 it starts using aligned SSE instructions that later fault, so always specify a suitable alignment factor. Cc: Jonas Pfeil <pfeiljonas@gmx.de> Fixes: cd2b55e5 "ralloc: Make sure ralloc() allocations match malloc()'s alignment." Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100049 Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Tested by: Mike Lothian <mike@fireburn.co.uk> Tested by: Jonas Pfeil <pfeiljonas@gmx.de> (cherry picked from commit ff494fe999510ea40e3ed5827e7818550b6de126)
/external/mesa3d/src/util/ralloc.c
|
6608dbf540c3724f8cc20619ef3ffb23257dc721 |
|
07-Oct-2016 |
Marek Olšák <marek.olsak@amd.com> |
ralloc: add a linear allocator as a child node of ralloc v2: remove goto, cosmetic changes Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com> (v1) Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/util/ralloc.c
|
acc23b04cfd64e0f1dcdb699aaf653376ca6df15 |
|
07-Oct-2016 |
Marek Olšák <marek.olsak@amd.com> |
ralloc: remove memset from ralloc_size only do it in rzalloc_size as it was supposed to be Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
/external/mesa3d/src/util/ralloc.c
|
330482177c45dceb71e5787c1a7e7fc87308c144 |
|
07-Oct-2016 |
Marek Olšák <marek.olsak@amd.com> |
ralloc: don't memset ralloc_header, clear it manually time GALLIUM_NOOP=1 ./run shaders/private/alien_isolation/ >/dev/null Before (2 takes): real 0m8.734s 0m8.773s user 0m34.232s 0m34.348s sys 0m0.084s 0m0.056s After (2 takes): real 0m8.448s 0m8.463s user 0m33.104s 0m33.160s sys 0m0.088s 0m0.076s Average change in "real" time spent: -3.4% calloc should only do 2 things compared to malloc: - check for overflow of "n * size" - call memset I'm not sure if that explains the difference. v2: clear "parent" and "next" in the caller of add_child. Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> (v1) Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com> (v1) Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> (v1)
/external/mesa3d/src/util/ralloc.c
|
2c1c060b031a7c179653ee83f28f7325c47ebd04 |
|
10-May-2016 |
Jordan Justen <jordan.l.justen@intel.com> |
util/ralloc: Remove double zero'ing of rzalloc buffers Juha-Pekka found this back in May 2015: <1430915727-28677-1-git-send-email-juhapekka.heikkila@gmail.com> From the discussion, obviously it would be preferable to make ralloc_size no longer return zeroed memory, but Juha-Pekka found that it would break Mesa. In <56AF1C57.2030904@gmail.com>, Juha-Pekka mentioned that patches exist to fix i965 when ralloc_size is fixed to not zero memory, but the patches have not made their way to mesa-dev yet. For now, let's stop doing the double zeroing of rzalloc buffers. v2: * Move ralloc_size code to rzalloc_size, and add a comment as suggested by Ken. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/util/ralloc.c
|
14193e4643370db92210710f2ef152c693d6c4ff |
|
18-Dec-2015 |
Kenneth Graunke <kenneth@whitecape.org> |
ralloc: Fix ralloc_adopt() to the old context's last child's parent. I was cleverly using one iteration to obtain a pointer to the last item in ralloc's singly list child list, while also setting parents. Unfortunately, I forgot to set the parent on that last item. Cc: "11.1 11.0 10.6" <mesa-stable@lists.freedesktop.org> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/util/ralloc.c
|
238877207eda2d7513cb0d2b415f8fc7ac821d0e |
|
30-Jun-2015 |
Matt Turner <mattst88@gmail.com> |
ralloc: Set *start in ralloc_vasprintf_rewrite_tail() if str is NULL. We were leaving it undefined, even though we were writing a string to *str. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/util/ralloc.c
|
f3afcbecc63ec565a0386cda554d145ca908367d |
|
29-Sep-2015 |
Samuel Iglesias Gonsalvez <siglesias@igalia.com> |
util: use strnlen() in strndup() implementations If the string being copied is not NULL-terminated the result of strlen() is undefined. Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Neil Roberts <neil@linux.intel.com> Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/util/ralloc.c
|
33f0f68d590a460f84a0df0de10f29c4a582d7e7 |
|
28-Mar-2015 |
Kenneth Graunke <kenneth@whitecape.org> |
ralloc: Implement a new ralloc_adopt() API. ralloc_adopt() reparents all children from one context to another. Conceptually, ralloc_adopt(new_ctx, old_ctx) behaves like this pseudocode: foreach child of old_ctx: ralloc_steal(new_ctx, child) However, ralloc provides no way to iterate over a memory context's children, and ralloc_adopt does this task more efficiently anyway. One potential use of this is to implement a memory-sweeper pass: first, steal all of a context's memory to a temporary context. Then, walk over anything that should be kept, and ralloc_steal it back to the original context. Finally, free the temporary context. This works when the context is something that can't be freed (i.e. an important structure). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
/external/mesa3d/src/util/ralloc.c
|
1e0da6233be6e5fb0143615d5e3d3642ddb7964f |
|
25-Feb-2014 |
Kenneth Graunke <kenneth@whitecape.org> |
util: Move ralloc to a new src/util directory. For a long time, we've wanted a place to put utility code which isn't directly tied to Mesa or Gallium internals. This patch creates a new src/util directory for exactly that purpose, and builds the contents as libmesautil.la. ralloc seemed like a good first candidate. These days, it's directly used by mesa/main, i965, i915, and r300g, so keeping it in src/glsl didn't make much sense. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> v2 (Jason Ekstrand): More realloc uses and some scons fixes Signed-off-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/util/ralloc.c
|