- Jun 11, 2024
-
-
Jakub Vaněk authored
The __sync_val_compare_and_swap() function is defined as [1]: > type __sync_val_compare_and_swap (type *ptr, type oldval, type newval, ...) However, the pre-C11 orc_once_enter() function is calling the function like __sync_val_compare_and_swap(ptr, newval, oldval). This breaks the orconce implementation: the atomic variable is never set to the initialized state and so the initialization function is called every time orc_once_enter() is called. This bug was originally discovered through Buildroot. GStreamer packages are currently build with -std=c99 or -std=gnu99 there. These flags disable the C11 orconce codepath and instead the old __sync codepath is selected. The ultimate effect of this was that all elements relying on ORC (e.g. videotestsrc, videoconvert) were slowed down significantly by repeated recompiling of the ORC programs. [1]: https://gcc.gnu.org/onlinedocs/gcc-12.3.0/gcc/_005f_005fsync-Builtins.html Part-of: <gstreamer/orc!185>
-
- Jun 02, 2024
-
-
The current approximation employs unsigned division by 256, which yields an incorrect answer 50% of the time [1]. The correct approach, if one is trying to avoid the usage of integer division, is to instead divide by 0x800000 / 0x8081 (~254.9996), which is done by multiplying by the divisor, extracting the upper half of each result, and then right shifting (dividing) 7 times, in this case. Alternatively, one can reinterpret each temporary register as 32-bit, and shift by 23 in situ, then extract the low half of each. This approach was validated in a Godbolt of the C emulation [2]. See also [3] for another reference of the approach. Closes #7 [1]: https://tttapa.github.io/Pages/Raspberry-Pi/NEON/Division.html#dividing-by-255 [2]: https://godbolt.org/z/vWPzToMxb, https://godbolt.org/z/e73s85Kh8 [3]: Van Aken, J. R. (2022). Alpha Blending with No Division Operations. arXiv preprint arXiv:2202.02864. Part-of: <gstreamer/orc!134>
-
It asks for a hardcoded byte sized register, irrespective of the size of the operands. Part-of: <gstreamer/orc!134>
-
The size of a i16 register is 2, not 16, and especially not when a quad is wanted. Part-of: <gstreamer/orc!134>
-
- May 18, 2024
-
-
amyspark authored
See gstreamer/orc#65 (comment 2407239) Part-of: <gstreamer/orc!184>
-
- May 15, 2024
-
-
amyspark authored
The `UnwindData` member is supposed to be an union, but MSYS2 defines it as `UnwindInfoAddress` only on IA64. Part-of: <gstreamer/orc!183>
-
Part-of: <gstreamer/orc!181>
-
__STDC_NO_ATOMICS doesn't seem to exist. In fact the only compiler I've found that sets any of those is msvc, but it sets __STDC_NO_ATOMICS__, not __STDC_NO_ATOMICS. __STDC_NO_ATOMICS__ is the one documented by C11 standard. Part-of: <gstreamer/orc!182>
-
- Apr 26, 2024
-
-
amyspark authored
Based on the SSE listing, there are two missing entries that I believed were not used. However, they are used by the CPUID test. Part-of: <gstreamer/orc!180>
-
- Apr 15, 2024
-
-
Part-of: <gstreamer/orc!176>
-
This enables falling back to emulation when mmap(2) is not available for executable pages. This seems to be the case under a combination of SELinux sandboxing and noexec mounting. Part-of: <gstreamer/orc!176>
-
Part-of: <gstreamer/orc!176>
-
Part-of: <gstreamer/orc!176>
-
Part-of: <gstreamer/orc!176>
-
- Apr 13, 2024
-
-
amyspark authored
strcmp() is ok to use, just not without the requisite include. Part-of: <gstreamer/orc!177>
-
amyspark authored
Fixes #67 Part-of: <gstreamer/orc!177>
-
- Mar 21, 2024
-
-
Piotr Brzeziński authored
Part-of: <gstreamer/orc!175>
-
- Mar 12, 2024
-
-
Sebastian Dröge authored
Part-of: <gstreamer/orc!174>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <!148>
-
Jorge Zapata authored
Part-of: <!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Move the sys opcodes into its own file Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-
Jorge Zapata authored
Part-of: <gstreamer/orc!148>
-