Commit Graph
58 Commits
Author SHA1 Message Date
Thomas Harte 6b160810b1 Use more rational std::memory_order::. 2026-10-06 22:59:25 -04:00
Thomas Harte ca25358b7b Make conversion explicit, to avoid false expectations with e.g. x + 3. 2026-04-23 21:33:54 -04:00
Thomas Harte 0643a81e4f Always alternate fields. 2026-02-23 16:47:12 -05:00
Thomas Harte 26afdf972c Explain fields. 2026-02-23 14:20:26 -05:00
Thomas Harte 486a67586a Include interlacing information in Field. 2026-02-22 23:16:33 -05:00
Thomas Harte 2cf0c4f8aa Switch horses only when certain. 2026-02-21 22:42:22 -05:00
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 69b9aa9b57 Remove done TODO. 2026-02-19 12:31:45 -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 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 4b9e37f163 Attempt to update frame areas. 2026-02-15 07:51:38 -05:00
Thomas Harte f24a8ea93f Continue baby steps towards keeping per-frame records. 2026-02-14 18:17:08 -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 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 961669168a Slim perform call path; establish that uniforms are now in place. 2026-02-02 11:00:02 -05:00
Thomas Harte c491ba5cac Use sized types and std::copy_n. 2025-12-10 17:24:07 -05:00
Thomas Harte 00a2fd5cb0 Add consts, avoid macros. 2025-12-10 09:18:27 -05:00
Thomas Harte 8fdf32cde8 Avoid OpenGL churn. 2025-10-06 20:43:12 -04:00
Thomas Harte e008a02b99 Shuffle further to avoid optics of a fallthrough. 2025-04-21 15:13:10 -04:00
Thomas Harte eab4274737 Capture 'this' by reference. 2025-02-27 11:56:51 -05:00
Thomas Harte 348a593dc1 Flail in attempt to implement fast loading. 2025-01-21 14:13:42 -05:00
Thomas Harte 58f04848a9 Fix: allow allocations on invisible areas. 2024-06-02 21:59:27 -04:00
Thomas Harte 71d337c10e Avoid std::memory_order::. 2024-05-29 21:51:07 -04:00
Thomas Harte 51ed3f2ed0 Reduce modal-related thread hopping. 2022-07-09 13:03:45 -04:00
Thomas Harte 73d28838c0 Slightly rebalances template.
More clearly to ensure the lock_guard stays in the correct place.
2020-11-26 13:08:40 -05:00
Thomas Harte c6c12209e8 Corrects end_data thread safety; permits caller not to have reached new_modals before a machine starts trying to push data. 2020-11-25 23:32:37 -05:00
Thomas Harte dd816c5a0a Restore valid buffering. 2020-11-21 22:55:54 -05:00
Thomas Harte 3cc89cb4d2 Seeks to avoid false assert failures. 2020-11-21 22:52:19 -05:00
Thomas Harte c7ab3d4075 Reduces cost of bookending video data. 2020-11-18 17:32:11 -05:00
Thomas Harte b831b31382 Adds a further sanity check. 2020-09-15 17:04:04 -04:00
Thomas Harte 2fd5cc056c Adds std::atomic_thread_fences, but these seem not to be a magic bullet. 2020-09-15 16:34:34 -04:00
Thomas Harte eb9903cd10 Defensively disables allocation of anything outside of visible lines. 2020-09-14 22:29:05 -04:00
Thomas Harte 227e98d6d7 Slightly simplifies control flow. 2020-09-14 22:27:25 -04: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 7e58648743 Corrects front-running bug, plays further with colour amplitude. 2020-09-02 15:51:48 -04:00
Thomas Harte c40d858f02 Switches back to angular stuff at input resolution; ensures all S-Video modes work.
Now to roll back onto composite. Fingers crossed!
2020-08-29 20:54:46 -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 745797b596 Introduces a stencil buffer plus the inter-frame clearing it allows. 2020-08-16 16:42:32 -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 6384ff3ee7 Add fix for data_type_size_ for owners that don't change texture pointer upon new modals. 2020-08-09 21:17:51 -04:00
Thomas Harte 6bc66d8b96 Tidies, ensures ::will_change_owner acquires the producer mutex. 2020-07-29 23:18:03 -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 72a8fef989 Switches to much more straightforward Line/LineMetadata storage.
Spoiler: covering this whole segment behind producer_mutex_ seems to resolve all output issues, so clearly the existing logic isn't functioning correctly. Making it simpler seems like a pretty obvious way to get to the bottom of that.
2020-07-29 21:49:17 -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