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
|
9c550c594a
|
Moved audio work back into its own thread, but this time it queues up an all happens only upon a flush. Hopefully to resolve synchronisation cost concerns.
|
2016-11-09 21:17:50 -05:00 |
|
Thomas Harte
|
eccfdabeab
|
Temporarily disabled thread hop, until I can find a way to batch these things.
|
2016-11-03 22:52:02 -04:00 |
|
Thomas Harte
|
4258401384
|
Implemented flush , added a call to it from the filter speaker's destructor, to ensure no race conditions on accessing the various bits of instance state there and below.
|
2016-10-19 21:15:04 -04: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
|
00e3ad9b04
|
Added a bit more ceiling for lowpass filtering on constrained machines.
|
2016-10-10 07:51:01 -04:00 |
|
Thomas Harte
|
e53455a936
|
Not having read the C++ synchronisation primitives before, this async task queue is probably incorrect. But nevertheless, let's have a quick go at employing it — in a hideously thread unsafe fashion — for audio generation. What can possibly go wrong?
|
2016-10-07 16:56:34 -04:00 |
|
Thomas Harte
|
dab3580111
|
Experimental: can I afford a lower sampling rate if there's a low-pass filter in effect?
|
2016-08-22 22:18:05 -04:00 |
|
Thomas Harte
|
1541273785
|
Moved responsibility for throwing in a low-pass filter up to the Vic, appropriately.
|
2016-08-21 18:13:31 -04:00 |
|
Thomas Harte
|
c783090980
|
It turns out that the Vic has a 1.6Khz low-pass filter. So added that.
|
2016-08-21 12:13:41 -04:00 |
|
Thomas Harte
|
fef316932f
|
Moved opening bracket appropriately.
|
2016-07-04 21:14:28 -04:00 |
|
Thomas Harte
|
8db44eed3e
|
Added a default implementation of Speaker::skip_samples .
|
2016-07-04 20:48:27 -04:00 |
|
Thomas Harte
|
2bc87ee095
|
Merge branch 'master' of github.com:TomHarte/CLK
|
2016-07-01 16:28:18 -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
|
ed8f4d0476
|
Added some minor additional bits of documentation.
|
2016-06-30 08:46:29 -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
|
fcf4b14344
|
Extended to allow floating-point sampling rates. Which makes sense.
|
2016-06-13 19:30:41 -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
|
1e0fcbbee8
|
Made a very basic stab at a couple of the tone generators, added straight-through path for the speaker when input rate exactly equals output rate.
|
2016-06-01 19:53:16 -04:00 |
|
Thomas Harte
|
5c4f35e13f
|
Finally started on generalising the C++ stuff so as to be able to be able to get a working audio binding on the OS-specific side without further repetition by factoring an appropriate protocol out from the Electron and sketching out the correct speaker class for the Atari. Added a method to ask it what a good output frequency would be.
|
2016-05-31 21:23:44 -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 |
|