ObjFW  History of src/OFMatrix4x4.m of ddcef349e53b0a77

History of file src/OFMatrix4x4.m at check-in ddcef349e53b0a77

2024-05-01
15:19
Document a lot of undocumented functions & macros

Also fixes Doxygen not creating documentation for `static OF_INLINE`
functions. file: [c9b2db710c] check-in: [0c3c3b6efa] user: js, branch: trunk, size: 10567 [annotate] [blame] [check-ins using] [diff]

2024-04-03
02:16
Change license to LGPLv3 only file: [a90d32dcbf] check-in: [7413a728a7] user: js, branch: trunk, size: 10553 [annotate] [blame] [check-ins using] [diff]
2024-04-02
03:21
Only align OFVector4D where necessary

Changing the alignment of OFVector4D globally (as was done previously)
would have technically been an ABI break in extremely rare cases.
However, since we only need the alignment for the methods added after
1.0, it's better to only have the alignment there and get back to full
ABI compatibility with 1.0. file: [0c5b86a89a] check-in: [1af54eb2c2] user: js, branch: trunk, size: 10345 [annotate] [blame] [check-ins using] [diff]

2024-03-28
15:58
OFMatrix4x4: Move values to ivars

This should work now that objects are properly aligned. file: [67c177d7d9] check-in: [71237f1a49] user: js, branch: trunk, size: 10332 [annotate] [blame] [check-ins using] [diff]

2024-02-03
11:41
Update copyright file: [2c87027fdc] check-in: [7324ec8590] user: js, branch: 1.0, size: 5609 [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
Update copyright file: [9ade524fc2] check-in: [26ddd2e4e4] user: js, branch: trunk, size: 10533 [annotate] [blame] [check-ins using] [diff]
2023-11-09
21:09
Use named operands for __asm__ file: [c5d68e8b03] check-in: [1b22456db6] user: js, branch: trunk, size: 10533 [annotate] [blame] [check-ins using] [diff]
2023-11-06
20:17
OFMatrix4x4: Use an extra SSE register on AMD64

This gives another nice speed improvement. file: [a4f9a5f812] check-in: [5edf0d083d] user: js, branch: trunk, size: 9943 [annotate] [blame] [check-ins using] [diff]

20:11
OFMatrix4x4: Fix missing vector reload in SSE file: [b53637018a] check-in: [9ba7594f7b] user: js, branch: trunk, size: 9780 [annotate] [blame] [check-ins using] [diff]
00:59
OFMatrix4x4: SSE1 for -[transformVectors:count:]

This new SSE1 implementation is better than the SSE4.1 implementation,
hence this also deletes the SSE4.1 implementation. file: [ac56c8b767] check-in: [cf955413ab] user: js, branch: trunk, size: 9770 [annotate] [blame] [check-ins using] [diff]

2023-11-05
18:18
OFMatrix4x4: Unroll inner loop in 3DNow! version

This results in a ~ 16% performance improvement on a Duron 750. file: [b31d5e9464] check-in: [3280466d35] user: js, branch: trunk, size: 9256 [annotate] [blame] [check-ins using] [diff]

13:37
OFMatrix4x4: Improve 3DNow! implementation

The new 3DNow! implementation is now better than the Enhanced 3DNow!
implementation, hence this also deletes the Enhanced 3DNow!
implementation. file: [66a4a58f6e] check-in: [34b48a4208] user: js, branch: trunk, size: 8587 [annotate] [blame] [check-ins using] [diff]

2023-11-04
13:13
Make GCC happy again file: [6d7dc755b7] check-in: [998478014d] user: js, branch: trunk, size: 11724 [annotate] [blame] [check-ins using] [diff]
13:10
OFMatrix4x4: Restore SSE4.1 code

The Clang alignment bug has been worked around in the previous commit,
so now it works. file: [52a22d3f60] check-in: [0eb97e4612] user: js, branch: trunk, size: 11699 [annotate] [blame] [check-ins using] [diff]

13:06
Work around Clang not aligning ivars correctly file: [1cf8596c69] check-in: [055e14fc75] user: js, branch: trunk, size: 10447 [annotate] [blame] [check-ins using] [diff]
2023-11-03
00:16
OFMatrix4x4: SSE4.1 for -[transformVectors:count:]

This requires the vectors to be 16 byte aligned. In order to achieve
this, the OFVector4D type is changed to have an alignment of 16 bytes.
However, this does *not* break ABI because the only method actually
requiring 16 byte alignment is -[transformVectors:count:], which was not
in ObjFW 1.0. Hence binaries compiled for ObjFW 1.0 have no 16 byte
alignment for OFVector4D, but also cannot ever call into any code that
needs it. (-[transformedVector:] calls into -[transformVectors:count:],
but creates a properly aligned copy that it passes.) file: [46f1ac4383] check-in: [7f304f573b] user: js, branch: trunk, size: 11520 [annotate] [blame] [check-ins using] [diff]

2023-11-02
23:00
OFMatrix4x4: Minor cleanups file: [740fcdd16f] check-in: [b5c3a36731] user: js, branch: trunk, size: 10267 [annotate] [blame] [check-ins using] [diff]
22:48
OFMatrix4x4: Move __asm__ out of loop file: [a12ee064b0] check-in: [0d671245d4] user: js, branch: trunk, size: 10093 [annotate] [blame] [check-ins using] [diff]
2023-11-01
21:22
OFMatrix4x4: Use __asm__ __volatile__

The outputs aren't consumed as they are used as inputs that can be
modified. file: [b42a0641ea] check-in: [f949f7775b] user: js, branch: trunk, size: 9582 [annotate] [blame] [check-ins using] [diff]

20:54
Add -[OFMatrix4x4 transformVectors:count:] file: [43a6889a80] check-in: [ad6b3e6442] user: js, branch: trunk, size: 9504 [annotate] [blame] [check-ins using] [diff]
2023-10-31
23:53
OFMatrix4x4: Add Enhanced 3DNow! implementation file: [e50ac72e61] check-in: [089a51310c] user: js, branch: trunk, size: 8936 [annotate] [blame] [check-ins using] [diff]
22:14
OFMatrix4x4: Add #pragma GCC target("3dnow") file: [240d8b02dd] check-in: [fa3c89f802] user: js, branch: trunk, size: 6771 [annotate] [blame] [check-ins using] [diff]
20:27
OFMatrix4x4: Partially unroll multiplication loop

This way, `result` doesn't need to be initialized. file: [b494f24572] check-in: [d53c87e7bb] user: js, branch: trunk, size: 6634 [annotate] [blame] [check-ins using] [diff]

20:25
Don't use -masm=intel

It's broken in older versions of Clang (e.g. Clang 12). file: [c5f86994f5] check-in: [d9af65de97] user: js, branch: trunk, size: 6546 [annotate] [blame] [check-ins using] [diff]

2023-10-30
23:58
OFMatrix4x4: Use 3DNow! to transform vectors file: [9f0079818c] check-in: [1ac0583aae] user: js, branch: trunk, size: 6482 [annotate] [blame] [check-ins using] [diff]
23:31
OFMatrix4x4: Use 3DNow! for multiplication file: [5d349ae57d] check-in: [5b213166ee] user: js, branch: trunk, size: 4918 [annotate] [blame] [check-ins using] [diff]
2023-10-29
12:03
OFMatrix4x4: Convert multiplication to loop

This should make vectorization easier. file: [ccf7b44cda] check-in: [cf4d6a3dfa] user: js, branch: trunk, size: 3699 [annotate] [blame] [check-ins using] [diff]

2023-08-17
14:53
Add more designated initializers file: [7871015766] check-in: [abc315cc89] user: js, branch: trunk, size: 5609 [annotate] [blame] [check-ins using] [diff]
2023-02-19
17:40
Make GCC happy again file: [77a89afbe5] check-in: [d377e8819e] user: js, branch: trunk, size: 5559 [annotate] [blame] [check-ins using] [diff]
13:37
OFMatrix4x4: Use 2D arrays in row-major format

This allows writing matrices more naturally, without having to transpose
them in the source. file: [37363ee709] check-in: [975a812f36] user: js, branch: trunk, size: 5526 [annotate] [blame] [check-ins using] [diff]

2023-02-18
23:53
OFMatrix4x4: Don't create a singleton

A singleton for the identity matrix makes no sense since OFMatrix4x4 is
mutable. file: [81834eec17] check-in: [b924571763] user: js, branch: trunk, size: 4218 [annotate] [blame] [check-ins using] [diff]

12:01
OFMatrix4x4: Transform vectors in 4D space file: [2f91cc67c5] check-in: [e31a31bdcb] user: js, branch: trunk, size: 4483 [annotate] [blame] [check-ins using] [diff]
2023-02-16
21:37
OFMatrix4x4: Add translation and scaling file: [284898f541] check-in: [3e4ed4e59f] user: js, branch: trunk, size: 6201 [annotate] [blame] [check-ins using] [diff]
19:59
OFVector3D -> OFPoint3D

For now, we're only interested in transformed points. file: [630e704e06] check-in: [db7991d07b] user: js, branch: trunk, size: 5642 [annotate] [blame] [check-ins using] [diff]

2023-02-15
21:54
OFMatrix4x4: Add -[transformedVector3D:] file: [97bdb88364] check-in: [1e550fabe3] user: js, branch: trunk, size: 5614 [annotate] [blame] [check-ins using] [diff]
2023-02-13
20:32
Support for storing OFColors in tagged pointers file: [61d81a3bf6] check-in: [51c8047121] user: js, branch: trunk, size: 5286 [annotate] [blame] [check-ins using] [diff]
2023-02-12
22:20
Add OFMatrix4x4 and OFVector3D

These will be useful for 3D graphics. file: [8c09d10573] check-in: [44eb35b212] user: js, branch: trunk, size: 5287 [annotate] [blame] [check-ins using]

2021-09-26
20:48
OF4x4Matrix: Add -[multiplyWithMatrix:] file: [cd962a5d85] check-in: [42b5eee531] user: js, branch: 3d-affine-transforms, size: 5098 [annotate] [blame] [check-ins using] [diff]
2021-09-24
01:35
Added: Add initial OF4x4Matrix file: [070da82233] check-in: [831ce30929] user: js, branch: 3d-affine-transforms, size: 2414 [annotate] [blame] [check-ins using]