1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-05 21:05:51 +00:00
Commit Graph

314 Commits

Author SHA1 Message Date
Thomas Harte
cb3c837e30 Simplified interface by baking in last-minute-only updates. 2016-12-03 18:19:12 -05:00
Thomas Harte
0220d33562 Resolved failure of initial state setting, which was causing tests sometimes to fail. 2016-12-03 16:42:10 -05:00
Thomas Harte
7c85cb62e4 Moved underscores, removed indirections where they're not necessary, converted those names that were still looking very Objective-C and moved the GL fence variable into the private area, where it should always have been. 2016-11-21 12:14:52 +08:00
Thomas Harte
bc03e12dc5 Switched to suffix underscores. 2016-11-21 11:57:45 +08:00
Thomas Harte
340607e13e Switched the flywheel to suffix underscores. 2016-11-21 11:48:31 +08:00
Thomas Harte
e1285028aa Removed a redundant clear and some dead code. 2016-11-21 11:42:45 +08:00
Thomas Harte
7b38247ab3 Updated outdated comments. 2016-11-21 11:40:13 +08:00
Thomas Harte
d7d0ed378a Only the final intermediate buffer needs clearing, on reflection. 2016-11-21 11:26:07 +08:00
Thomas Harte
c89345c639 Reduced buffer size. 2016-11-21 11:21:14 +08:00
Thomas Harte
32dbfe947d With hindsight, the elimination of this might have been overzealous. 2016-11-20 10:53:35 +08:00
Thomas Harte
ef0367d4a4 Corrected typo. 2016-11-20 09:12:43 +08:00
Thomas Harte
5bc165960a Completed refactoring. 2016-11-20 09:12:06 +08:00
Thomas Harte
fda90c5aef Documented. 2016-11-20 09:11:24 +08:00
Thomas Harte
c2349ee3f4 This thing has clearly becoma a real class. 2016-11-19 20:12:40 +08:00
Thomas Harte
7857ef774f Ensured resets genuinely kill outstanding data. 2016-11-19 20:09:38 +08:00
Thomas Harte
a4c7b00ecd Fixed code that was causing the failing test. 2016-11-19 19:55:30 +08:00
Thomas Harte
f59537bce9 Added a testing hook, but as of yet no tests. 2016-11-17 14:06:16 +08:00
Thomas Harte
aca1fa0577 Returned some video output. Enough significantly to reduce my paranoia. 2016-11-17 13:37:53 +08:00
Thomas Harte
1f91d29434 Progressed to usage of an array builder and a texture builder up to the point of a successful build. 2016-11-17 12:26:04 +08:00
Thomas Harte
0f3b02edb7 Switched to postfix underscores and gave this class ownership of a texture builder and an array builder, though it presently uses neither. 2016-11-17 11:00:11 +08:00
Thomas Harte
57f0648742 Fleshed out first implementation of ArrayBuilder, albeit that I need to implement exhaustion properly, as soon as I think of a sensible way to handle synchronisation. 2016-11-17 10:39:30 +08:00
Thomas Harte
324a1de43d Started pulling out array construction as a separate task. 2016-11-17 09:20:49 +08:00
Thomas Harte
c04a116a05 Fixed comment. 2016-11-16 23:14:56 +08:00
Thomas Harte
edeafd4d94 Wait, OpenGL textures go the other way. 2016-11-16 23:14:15 +08:00
Thomas Harte
6ac20e0066 Pushed responsibility for submitting texture contents up to the texture builder, simplifying the interface. 2016-11-16 23:13:06 +08:00
Thomas Harte
5c5e44874f Even better: why include the 'Input' prefix when there's only one? 2016-11-16 22:57:17 +08:00
Thomas Harte
04b2688683 Attempted to reduce allocations. 2016-11-16 13:25:50 +08:00
Thomas Harte
c1a509910d Documented this interface, albeit that the English could do with a second pass, and very sightly simplified inline with current usage. 2016-11-16 13:15:50 +08:00
Thomas Harte
4d0d5eb919 Renamed the 'input buffer builder' to the 'input texture builder' to be explicit about what sort of buffer, and killed the prefix since it's namespaced. Also switched to std::vector. 2016-11-16 12:31:32 +08:00
Thomas Harte
4ee4400801 Removed dead code. 2016-11-16 11:57:22 +08:00
Thomas Harte
6cb4950db4 Improved run-off area. 2016-11-16 11:53:15 +08:00
Thomas Harte
9ee11d7765 At the expense of API simplicity, at least for now, resolved the most glaring cause of dirty lines. 2016-11-16 11:34:05 +08:00
Thomas Harte
44d3fd6d5b Fixed mistimed reset of the target output line. Now all that's left is occasional noise. 2016-11-16 11:22:12 +08:00
Thomas Harte
7a737e0790 Both pathways start with a buffer that clears to black. So no need to keep going on about it. 2016-11-16 11:12:08 +08:00
Thomas Harte
f63e849092 Sought completely to eliminate the outgoing concept of 'clearing zones'. 2016-11-16 11:10:34 +08:00
Thomas Harte
294adde344 Eliminated zoned clearing, in favour of a complete buffer clear on each load and attempted to reduce locking. But imperfectly. 2016-11-16 10:59:12 +08:00
Thomas Harte
ccedb6bea6 Introduced an intermediate buffer that collects lines before flushing them to the output buffer. 2016-11-16 10:49:18 +08:00
Thomas Harte
ba2adf8bb1 Normalised on std::vector rather than std::unique_ptr<uint8_t *> as (probably?) more idiomatic. Improved structure slightly. Introduced a container for line data, albeit one that isn't yet used. 2016-11-16 10:34:54 +08:00
Thomas Harte
c628b7c5c5 This is the real PAL frequency, I think. 2016-10-17 08:05:02 -04:00
Thomas Harte
1f857c619b Fixed timing issues. Static box of frame achieved! 2016-10-12 21:42:36 -04:00
Thomas Harte
eefd0c17b6 Actually, I guess that to fulfil the contract I can't silently decide not to draw if I'm being told I definitely need to draw. 2016-07-01 16:27:45 -04:00
Thomas Harte
4ac619f569 glClientWaitSync appears to be a busy wait, at least on my machine. But why wait indefinitely anyway? 2016-06-29 21:32:47 -04:00
Thomas Harte
ff53accca0 Demonstrated that issue is coloured borders, made a guess as to buffer exhaustion, upped limits as a temporary fix. 2016-06-29 21:16:34 -04:00
Thomas Harte
2bd71e7e9b .reset is the more normal way to reassign a unique_ptr. 2016-06-23 20:52:44 -04:00
Thomas Harte
c18cc4c8f5 It appears the Vic's output is sine-ish, after all. Also adjusted centre of display, simultaneously adding some validation on that. 2016-06-14 07:29:35 -04:00
Thomas Harte
2992183aae Switched to a lookup table for phase, temporarily in YUV colour space, probably. Working on it. 2016-06-12 14:39:17 -04:00
Thomas Harte
68a8851c52 Increased parallelism, allowing a simplification in the GL view. 2016-06-02 22:29:09 -04:00
Thomas Harte
4ad074fc78 Introduced a four-cycle delay between playfield fetch and display, curing Yar's Revenge. Also disabled barrel roll scanling colouring again. I really need to make my mind up on that. 2016-05-16 19:55:56 -04:00
Thomas Harte
9d92ad659f Established the basic timing loop, albeit without clocking delays yet. 2016-05-16 08:01:29 -04:00
Thomas Harte
00a2b42080 Made thread-safe. 2016-05-15 15:19:52 -04:00
Thomas Harte
091516e3cb The semantics might need better exposition but: fixed UniformXfv calls plus matrix calls, documented new semantics on all setters. 2016-05-15 14:59:59 -04:00
Thomas Harte
328fabcd10 Ensured values aren't dangling pointers. 2016-05-14 18:15:10 -04:00
Thomas Harte
492dc7ccbf Made an attempt to queue uniform changes until the next call to bind. That's to allow usage from other threads. 2016-05-14 18:06:55 -04:00
Thomas Harte
30f335fa35 Switched pervasively to using the named slot uniform setters on Shader. 2016-05-13 22:08:32 -04:00
Thomas Harte
8d52765f40 Realised why new shaders weren't taking. Very negligibly decreased Atari drawing cost. 2016-05-12 22:22:24 -04:00
Thomas Harte
6d65bc9b3a Permitted a wider error window on vertical sync, tidied things up a little and started trying to move towards full implementation of the OpenGL contract. 2016-05-11 22:11:01 -04:00
Thomas Harte
4b3c4082d2 These functions appear correctly to model the NTSC and PAL palettes; the CRT's attempt to switch function doesn't work properly yet though. 2016-05-11 21:07:18 -04:00
Thomas Harte
a8ce021136 Fixed comment. 2016-05-10 19:59:03 -04:00
Thomas Harte
0d2d6a452d Fixed some dangling buffer management issues. 2016-05-10 19:55:34 -04:00
Thomas Harte
b6d2c8cb63 Switched to instaced drawing for source[/intermediate] runs too, reducing that data transfer footprint by 50%. 2016-05-10 19:50:12 -04:00
Thomas Harte
7369139f7e Realised that phase time can fit inside a single byte, since it's always (well) within the first quarter of the line — and if it somehow weren't (?) then taking it modulo the frequency would do. 2016-05-10 19:14:57 -04:00
Thomas Harte
47ae402f7e Introduced a shorthand for setting up array attributes. 2016-05-10 19:11:48 -04:00
Thomas Harte
257420b0f7 Fixed potential output error if buffer top were hit; clarified buffer size constants. 2016-05-10 19:04:03 -04:00
Thomas Harte
309313c470 Update CRTConstants.hpp
Lack of data duplication means this storage can be smaller.
2016-05-10 10:49:48 -04:00
Thomas Harte
1d0bcb416d Dropped the size per output run back down to 8 bytes. 2016-05-10 07:47:47 -04:00
Thomas Harte
b0f0315f12 Fixed: this now implements 12-byte instancing for output runs. 2016-05-10 07:30:12 -04:00
Thomas Harte
86dab3a5d6 Quickest first attempt to switch to instancing for the output array. Texture coordinates seem to be off. 2016-05-10 07:23:47 -04:00
Thomas Harte
daec21d3d8 Found and fixed off-by-one error. Display should now be completely fixed. 2016-05-09 21:14:59 -04:00
Thomas Harte
59d766b325 Rationalised buffer sizes. 2016-05-09 19:17:03 -04:00
Thomas Harte
7e2bd78891 With an eye towards instancing, moved away from circular buffers. 2016-05-09 19:14:30 -04:00
Thomas Harte
ad734f341f Attempted fully to perfect memove, albeit that it's not affecting either current machine. 2016-05-09 07:44:05 -04:00
Thomas Harte
8eb058064c Fixed: ensured that the attempt to plot a misplaced write occurs correctly. 2016-05-09 07:42:26 -04:00
Thomas Harte
e6a7161e87 Made some minor corrections on the copyback of misplaced write data. 2016-05-09 07:39:57 -04:00
Thomas Harte
45af963b9a Moved more of the circular logic inside getCircularRanges in order to eliminate one more potential source of error. 2016-05-09 07:34:37 -04:00
Thomas Harte
cec9ad0dc6 Switched to a more rational interface, ensured output_level will work when eventually needed, and that neither it nor output_data attempts a recursive lock. 2016-05-09 07:02:12 -04:00
Thomas Harte
a82fa31370 Switched back to broad locking for CRT updates. To eliminate one more thing. 2016-05-09 06:58:26 -04:00
Thomas Harte
47302de23a Switched to simpler storage for _image. 2016-05-08 21:11:56 -04:00
Thomas Harte
1f02c5df88 Tidied up some further loose ends. 2016-05-08 20:58:18 -04:00
Thomas Harte
7b5982e455 Removed last mentions of 'lateral'. 2016-05-08 20:51:28 -04:00
Thomas Harte
986019f9f9 Fixed error that could lead to split output run vertex writes. 2016-05-08 20:30:59 -04:00
Thomas Harte
1a214a8308 Fence sync tied up. Remaining glitches are likely off-by-one-type errors but we'll see. 2016-05-08 19:45:36 -04:00
Thomas Harte
ef3b91d3aa Made an attempt to get formal on synchronisation. 2016-05-08 19:42:33 -04:00
Thomas Harte
dd469fe83a Switched back to normal frame drawing logic and cleaned up the circular range stuff a little, to make it clear that no errors lie there. 2016-05-08 18:50:30 -04:00
Thomas Harte
ccdbec3ffc Corrected for potential lost lines. 2016-05-08 16:43:11 -04:00
Thomas Harte
a75259ce9f Removed some dead caveman debugging statements. 2016-05-08 16:18:42 -04:00
Thomas Harte
9b2061be98 Actually, that should probably be 1/outputTextureSize, as the output range is -1 to +1. 2016-05-08 16:09:39 -04:00
Thomas Harte
9485ef2c8c At last a genuine bug fixed: was nudging the wrong amount in intermediate shaders. 2016-05-08 16:07:36 -04:00
Thomas Harte
8e4ab37719 Things are back pretty much to where they were, but offset is eliminated as an input. 2016-05-07 18:37:18 -04:00
Thomas Harte
c73751b15a Reverted deliberately broken segments to produce something mergeable. 2016-05-05 21:27:13 -04:00
Thomas Harte
a74f081aa9 Put lateral lookup table directly into the shader. 2016-05-05 21:21:27 -04:00
Thomas Harte
8284b272ad Picked appropriate new-world values for various buffers. 2016-05-05 20:00:28 -04:00
Thomas Harte
284b310074 Attempted to implement end-of-buffer tests for all stages. 2016-05-05 19:52:05 -04:00
Thomas Harte
e9a9cfb09f Fixed off-by-one error on texture upload. 2016-05-05 07:22:49 -04:00
Thomas Harte
f621cc8523 Withdrew the pixel unpack buffer in order to avoid the potential for a paused machine to be undrawable. The cost is at least an extra memcpy per frame; I'm letting the driver worry about the whole process for now. 2016-05-04 21:27:10 -04:00
Thomas Harte
2e7ac0e6db With a lot of logging also currently ongoing, fixed circular ranges for clearing and when covering an entire buffer. 2016-05-04 21:08:38 -04:00
Thomas Harte
87df57195d Started on an attempt not to treat the various buffers as free to loop within, starting with the input texture. 2016-05-04 07:39:45 -04:00
Thomas Harte
3684c6404f Proven through deliberate inefficiency: the issues are (i) texture upload; and (ii) buffer wraparound. 2016-05-03 22:22:12 -04:00
Thomas Harte
759fbd89ca Switched pixel unpack buffer back to explicit flushes. 2016-05-03 21:26:09 -04:00
Thomas Harte
2541711061 Made attempts (i) to flush buffers before unmapping them; and (ii) to bring texture uploads within the new orthodoxy. 2016-05-03 20:56:47 -04:00
Thomas Harte
fc1a67c157 Lateral is no longer written per vertex. It's a fixed list. 2016-05-03 18:45:55 -04:00