ObjFW  History of src/OFMatrix4x4.m of 431696dee53c5f65

History of the file that is called src/OFMatrix4x4.m at check-in 431696dee53c5f65

2024-05-01
15:19
[c9b2db710c] part of check-in [0c3c3b6efa] Document a lot of undocumented functions & macros

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

2024-04-03
02:16
[a90d32dcbf] part of check-in [7413a728a7] Change license to LGPLv3 only (check-in: [7413a728a7] user: js, branch: trunk, size: 10553) [annotate] [blame] [check-ins using] [diff]
2024-04-02
03:21
[0c5b86a89a] part of check-in [1af54eb2c2] 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. (check-in: [1af54eb2c2] user: js, branch: trunk, size: 10345) [annotate] [blame] [check-ins using] [diff]

2024-03-28
15:58
[67c177d7d9] part of check-in [71237f1a49] OFMatrix4x4: Move values to ivars

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

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

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

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

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

2023-11-05
18:18
[b31d5e9464] part of check-in [3280466d35] OFMatrix4x4: Unroll inner loop in 3DNow! version

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

13:37
[66a4a58f6e] part of check-in [34b48a4208] OFMatrix4x4: Improve 3DNow! implementation

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

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

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

13:06
[1cf8596c69] part of check-in [055e14fc75] Work around Clang not aligning ivars correctly (check-in: [055e14fc75] user: js, branch: trunk, size: 10447) [annotate] [blame] [check-ins using] [diff]
2023-11-03
00:16
[46f1ac4383] part of check-in [7f304f573b] 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.) (check-in: [7f304f573b] user: js, branch: trunk, size: 11520) [annotate] [blame] [check-ins using] [diff]

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

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

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

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

20:25
[c5f86994f5] part of check-in [d9af65de97] Don't use -masm=intel

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

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

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

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

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

2023-02-18
23:53
[81834eec17] part of check-in [b924571763] OFMatrix4x4: Don't create a singleton

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

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

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

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

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

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