1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-17 13:29:02 +00:00
Commit Graph

294 Commits

Author SHA1 Message Date
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
Thomas Harte
535d272039 Tweaks here, tweaks there. 2016-05-03 18:15:24 -04:00
Thomas Harte
6d5a1b33ee Turned the colour up just a little, slightly lowered luminance signal strength. 2016-05-03 07:51:14 -04:00
Thomas Harte
31f1e6d5c0 Introduced a separate stage for luminance filtering. 2016-05-03 07:46:40 -04:00
Thomas Harte
29e7c96e4c Brought monitor mode inside the pipeline and added an intermediate filter. 2016-05-02 21:05:58 -04:00
Thomas Harte
4a0e1dc789 Switched to explicit flushing of data. 2016-05-01 22:33:00 -04:00
Thomas Harte
c93bcf9f28 Discovered cause of clears: stale code. Tweaked persistence, again. 2016-05-01 22:28:33 -04:00
Thomas Harte
09ed8eb654 Quelle surprise, failure to find strikes again. Fixed. 2016-05-01 21:07:27 -04:00
Thomas Harte
1b6754c5f8 Shuffled code, realised I wasn't actually binding my shader. 2016-05-01 19:22:24 -04:00
Thomas Harte
69984b54e5 Fixed aspect ratio storage. Adjusted indentation slightly. 2016-05-01 16:49:44 -04:00
Thomas Harte
6982e945fb Fixed those issues breaking GL state, I hope. 2016-05-01 16:17:52 -04:00
Thomas Harte
4ec4cceb84 Made a first attempt at adding draw-as-a-quad functionality to texture targets. 2016-05-01 13:52:35 -04:00
Thomas Harte
2616d748fe Introduced bind-if-necessary/unbind semantics for shaders. 2016-05-01 11:07:49 -04:00
Thomas Harte
fe2abbd4ed Minor adjustments to ensure sampling occurs as intended. 2016-04-30 20:48:09 -04:00
Thomas Harte
16ef09fc2b Made an attempt intelligently to use bilinear filtering to increase filtering quality with the same number of samples. 2016-04-29 18:37:35 -04:00
Thomas Harte
501ab74eaf Fixed time multiplier calculation. 2016-04-28 22:12:59 -04:00
Thomas Harte
23ea832f41 Increased brightness in television mode, added a clear if screen resolution changes. 2016-04-28 22:04:47 -04:00
Thomas Harte
3638414b37 Added additional comments. 2016-04-28 21:55:14 -04:00
Thomas Harte
e6c3b148ac Switched wholeheartedly to the new shader. 2016-04-28 21:45:44 -04:00
Thomas Harte
8538b62ea2 Made an attempt to extract and consolidate the logic behind the intermediate shaders. 2016-04-28 21:04:59 -04:00
Thomas Harte
ef3647f6cf Being bold: per-scan timing isn't coming back, I think, so started completely removing it. 2016-04-27 23:00:43 -04:00