Thomas Harte
ea3e9a96f1
Detect and expose is-interlaced flag.
...
With plenty of exposition to avoid confusing the reader into thinking that the emulator is predicated on this in an unrealistic fashion.
2026-02-21 21:17:35 -05:00
Thomas Harte
406fc85186
First blush: force always-horizontal, always.
2026-02-16 23:35:30 -05:00
Thomas Harte
abe844505f
Eliminate LineMetadata, redundant memory barriers.
2026-02-15 15:53:26 -05:00
Thomas Harte
0562a5aa00
Consume Frames correctly.
2026-02-15 15:49:56 -05:00
Thomas Harte
742bf46297
Attempt to consume Frames. Seems faulty.
2026-02-15 14:03:48 -05:00
Thomas Harte
dc9e9f194c
Capture completeness.
2026-02-15 13:35:32 -05:00
Thomas Harte
5abff02d56
Factor out the stuff of being a circular counter.
2026-02-15 13:10:24 -05:00
Thomas Harte
a8761bdd43
Complete relocation.
2026-02-15 13:02:10 -05:00
Thomas Harte
45602cf5f1
Relocalise PointerSet definition.
2026-02-15 11:04:36 -05:00
Thomas Harte
694ffea92d
Add justification.
2026-02-15 07:54:15 -05:00
Thomas Harte
f24a8ea93f
Continue baby steps towards keeping per-frame records.
2026-02-14 18:17:08 -05:00
Thomas Harte
031f00cd1e
Eliminate 'frame's from 'PointerSet'.
2026-02-14 11:56:08 -05:00
Thomas Harte
2311707764
Restore header for lock_guard, etc.
2026-02-14 11:39:54 -05:00
Thomas Harte
9a55cc1f55
Eat own dogfood on spin locks.
2026-02-14 11:21:23 -05:00
Thomas Harte
ed061fa9b3
Factor out spin lock, get a bit stricter on PointerSets.
2026-02-14 11:14:20 -05:00
Thomas Harte
6d52fdea4d
Factor out and unify line/scan frame subdivision.
2026-02-13 21:57:59 -05:00
Thomas Harte
b64da038d6
Eliminate unused Line properties.
2026-02-13 21:17:17 -05:00
Thomas Harte
0650eb9d16
Adopt idiomatic name.
2026-02-05 12:32:45 -05:00
Thomas Harte
65ebcd9c99
Attempt a line output shader.
2026-02-04 14:41:34 -05:00
Thomas Harte
7fb594d571
Reduce #includes.
2026-02-03 22:59:49 -05:00
Thomas Harte
961669168a
Slim perform call path; establish that uniforms are now in place.
2026-02-02 11:00:02 -05:00
Thomas Harte
2c2216afae
Further eliminate file-relative includes.
2025-02-28 13:18:48 -05:00
Thomas Harte
ce5aae3f7d
Adjust more dangling indentation changes.
2024-12-04 22:29:08 -05:00
Thomas Harte
d639dc8bcb
Hit up some more = default opportunities.
2024-02-17 15:42:31 -05:00
Thomas Harte
a3d37640aa
Switch include guards to #pragma once.
2024-01-16 23:34:46 -05:00
Thomas Harte
2b56b7be0d
Simplify namespace syntax.
2023-05-10 16:02:18 -05:00
Thomas Harte
51ed3f2ed0
Reduce modal-related thread hopping.
2022-07-09 13:03:45 -04:00
Thomas Harte
c7ab3d4075
Reduces cost of bookending video data.
2020-11-18 17:32:11 -05:00
Thomas Harte
7dd4c67304
Corrects access to data_type_size, adds sanity check on output area return.
2020-09-13 18:59:27 -04:00
Thomas Harte
246b474a25
Removes ONE_BIG_LOCK, having effectively neutered it anyway.
...
Starts work on more explicit API usage validation. Maybe the issue isn't a race condition?
2020-08-16 22:09:25 -04:00
Thomas Harte
940e9e037e
Adds first_scan to LineMetadata.
...
Also reorders `Line` fields to match `Scan` fields, just for visual consistency.
2020-08-16 08:59:37 -04:00
Thomas Harte
230b9fc9e6
Permits multiple simultaneous scan reading ranges.
...
Also updates the OpenGL scan target as per the latest movements of things.
2020-08-12 22:08:41 -04:00
Thomas Harte
ced4a75a1a
Adds note on the buffering scan target's minor adaptation of data_offset.
2020-08-09 20:44:46 -04:00
Thomas Harte
bdcf266e45
Having learnt a bit more: eliminates Metal attribute tags, switches to more natural expression of structs.
...
Also thereby eliminates the need for a forced alignas(4) on various structs.
2020-08-08 17:27:32 -04:00
Thomas Harte
583f6b1ba2
Modifies BufferingScanTarget to allow has-a relationship.
...
I might switch fully to has-a. Further consideration required.
2020-08-07 22:03:27 -04:00
Thomas Harte
4c9418f59a
Guarantees alignof(4) on all GPU-bound structures.
...
Taken as given: Metal's requirement here is reasonable enough that it'll either be the same as other frameworks, or at least possibly help them down a fast path.
2020-08-07 21:18:08 -04:00
Thomas Harte
23f381f381
Fixes frame_is_complete_, gets rid of active_line_, explains ONE_BIG_LOCK in set_write_area.
2020-07-29 23:03:38 -04:00
Thomas Harte
51ad423eca
Resolves off-by-one error in line writing, adds diagnostic one-big-lock option.
2020-07-29 22:45:13 -04:00
Thomas Harte
02f41ee513
This has become the general producer mutex, might as well name it as such.
2020-07-29 21:34:07 -04:00
Thomas Harte
b7760bb052
Reorders code, gets explicit about memory ordering.
2020-07-28 22:02:22 -04:00
Thomas Harte
2470055d90
Hides the modals.
2020-07-27 23:33:39 -04:00
Thomas Harte
77c5b86acc
Moves ownership of the scan and line buffers out of the BufferingScanTarget.
2020-07-26 22:46:03 -04:00
Thomas Harte
bc6426313e
Localises three of the four macros.
2020-07-26 17:54:33 -04:00
Thomas Harte
8bef7ff4c5
Makes all three PointerSets and is_updating_ private.
2020-07-26 17:27:19 -04:00
Thomas Harte
89acb70091
Slightly reorganise.
2020-07-24 16:20:20 -04:00
Thomas Harte
ee1d7eb61f
Makes more buffer-specific stuff private.
2020-07-23 23:06:14 -04:00
Thomas Harte
e260f92988
Privatises write_pointers_mutex_ and write_pointers_.
...
Also gives subclasses control over write-area texture space allocation.
2020-07-23 22:54:40 -04:00
Thomas Harte
74788ccf8e
Pulls the BufferingScanTarget into a separate file.
2020-07-22 22:16:47 -04:00