1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-26 23:52:26 +00:00
Commit Graph

229 Commits

Author SHA1 Message Date
Thomas Harte
a8fbd82a3d Made an attempt at correctly mapping to eye coordinates. 2016-04-17 17:21:24 -04:00
Thomas Harte
ece51917fa Added first attempt at performing the first step of television output: mapping from source data to the first of the processing buffers. It's immediately obvious that my eye coordinates are off. 2016-04-17 17:17:59 -04:00
Thomas Harte
abce0ed3c4 Added setup of the source vertex array. 2016-04-17 16:17:23 -04:00
Thomas Harte
6ff9ffba6c Switching temporarily to an attempt to draw input runs as if RGB: shader compiles, fixed a race condition on out-of-bounds accesses for the source buffer. 2016-04-17 15:51:28 -04:00
Thomas Harte
104f44f27f Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio. 2016-04-14 22:20:47 -04:00
Thomas Harte
323f1a24db Introduced blackout period solution to vertical sync confusing horizontal sync. Need to find out whether it's accurate. 2016-04-14 20:30:45 -04:00
Thomas Harte
6a17c2992d Introduced a compile-time configurable audio divider, set it arbitrarily to '8' for now. Discovered why my graphics aren't centred and added a TODO. 2016-04-13 22:31:59 -04:00
Thomas Harte
026ce0255f Source runs are now captured, and that buffer appropriately reset. 2016-04-13 22:20:13 -04:00
Thomas Harte
2ea02ed127 A source array buffer is also now created, mapped, unmapped, etc. 2016-04-13 22:14:18 -04:00
Thomas Harte
04d1b65c93 Reinstated texture target creation, cut them down to merely RGB. 2016-04-12 22:48:47 -04:00
Thomas Harte
4be8053ba9 Updated documentation. 2016-04-12 22:38:49 -04:00
Thomas Harte
4d889d9c7f Made an attempt slightly to simplify the fragment processor, at both ends. 2016-04-12 22:35:11 -04:00
Thomas Harte
fe8b0ebc7e Tidied up a little, mostly bumping things out of just-in-time creation that I can just do well in advance. 2016-04-12 22:31:13 -04:00
Thomas Harte
069ec2e889 In search of the cause of performance issues again, excised the per-pixel sin until it can be further evaluated. 2016-04-11 23:13:54 -04:00
Thomas Harte
d100c755b7 The final line runs on a diagonal. Leave room for that. 2016-04-11 23:13:14 -04:00
Thomas Harte
7276a06cc0 Added a helper to calculate a visible rect based on output timings, used it to scale the Electron output up to the full window size. 2016-04-11 21:47:23 -04:00
Thomas Harte
e45fe43801 Removed some dead caveman debugging. 2016-04-10 23:02:34 -04:00
Thomas Harte
bdb99ba92f Corrections back towards composite output: fixed misnamed constant, ensured the CRT doesn't write nonsense to the output buffer, ensured it grows three vertices at a time rather than six when desired. Net effect should be that the output stage is working again, with the input processing remaining to fill in. 2016-04-10 22:56:52 -04:00
Thomas Harte
8701366277 Switched horizontal sync detection back to differential, switched the Electron to an XOR-style sync output (believed to be accurate, but I need to check), fixed some latent issues around vertical sync detection. 2016-04-10 21:34:40 -04:00
Thomas Harte
fc5530b513 Realising I've managed to confuse input and output, started shift to 'source' for what 'input' was. 2016-04-10 15:58:43 -04:00
Thomas Harte
6dbd20ffde Expanded interface to rgb_sample to eliminate its need to make assumptions about globals, used expanded interface to compact Electron data to two pixels per byte. 2016-04-05 20:32:55 -04:00
Thomas Harte
c0cd1ed89e Made an attempt to consolidate timestamp bases to a single vector and hence to lump all geometry into one or two calls, with no repetitive setting of a uniform. I'm not sure the result is correct yet. 2016-04-04 21:57:27 -04:00
Thomas Harte
729fddea1c Switched to integer textures, likely to simplify for most use cases. 2016-04-04 19:39:01 -04:00
Thomas Harte
3ca58b2a57 Attemted further to diminish jumpiness. 2016-03-22 22:07:30 -04:00
Thomas Harte
8cd5d40e00 Made an attempt to reduce the amount of data heading to the GPU. 2016-03-22 21:16:32 -04:00
Thomas Harte
3038704977 Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working. 2016-03-21 22:01:25 -04:00
Thomas Harte
197cf2a834 Commented out sync; it can probably be implicit. 2016-03-20 21:42:05 -04:00
Thomas Harte
9da7716c72 Attempted to simplify threading, thereby allowing machines to be constructed within a valid GL context, and started adding appropriate GL syncs. Which all oddly drops everything to a negligible FPS. Investigation will follow. 2016-03-19 22:46:17 -04:00
Thomas Harte
aa8a192c7e Simplified API down to their being a single texture with a specified depth. 2016-03-19 17:37:55 -04:00
Thomas Harte
4ac1f959e9 A shortcut here and a shortcut there; this allows me at least to determine whether use of a PBO gains anything. 2016-03-19 17:07:05 -04:00
Thomas Harte
5b37a651ac Made an attemp to deal with glUnmapBuffer(GL_ARRAY_BUFFER) == GL_FALSE. 2016-03-18 21:35:52 -04:00
Thomas Harte
0b1c9fb291 Ensured I don't interrupt triangle strips for the purpose of glDrawArrays. 2016-03-18 21:28:53 -04:00
Thomas Harte
620257e29e Switched to a client wait, as I try to figure out what's going on. 2016-03-18 21:21:35 -04:00
Thomas Harte
2e4af90e2d Resolved output errors. 2016-03-18 21:19:11 -04:00
Thomas Harte
10bc33464d I don't think this is quite correct, but it's better. 2016-03-18 21:14:06 -04:00
Thomas Harte
61e880de03 Keeping a buffer permanently bound is apparently illegal. So back to copying in on demand. Which I think still improves on synchronisation, but not much. 2016-03-18 21:11:09 -04:00
Thomas Harte
c8ecfb89d8 Some cleaning. 2016-03-16 22:52:33 -04:00
Thomas Harte
0d27d3bb7f As messy as it is, this use glMapBufferRange to avoid explicit buffer submits. 2016-03-16 22:29:22 -04:00
Thomas Harte
ca35a7e222 Ensured that a much greater input rate than output is handled correctly. 2016-03-16 20:38:17 -04:00
Thomas Harte
4cd0aa3416 Completed FIR filter based audio output. 2016-03-15 23:37:35 -04:00
Thomas Harte
726c98446a Fixed a couple of memory leaks, at least got as far as instantiating a filter. 2016-03-15 21:34:00 -04:00
Thomas Harte
67dffc89e0 Stripped unnecessary includes. 2016-03-13 13:25:34 -04:00
Thomas Harte
7255408313 Experimented with going back to horizontal sync on leading edge; not sure so (temporarily?) disabled. 2016-03-08 22:54:05 -05:00
Thomas Harte
68da673a95 Wrapped this up as explicitly only the Mac thing to do. 2016-03-08 22:53:29 -05:00
Thomas Harte
bf5747f83e Made an attempt to chop out all the stuff of building up the OpenGL data from the stuff of parsing input. 2016-03-08 22:40:23 -05:00
Thomas Harte
14b2927275 Made further attempts to tidy up; trying to demarcate between public interface and private. 2016-03-08 20:59:16 -05:00
Thomas Harte
c7976dd657 Started trying to clean up my Outputs namespace by moving stuff related to the CRT underneath a separate subnamespace. 2016-03-08 20:49:07 -05:00
Thomas Harte
bb09a5f58c The attribute locations don't really need to be stored. They can be transient. 2016-03-07 21:42:21 -05:00
Thomas Harte
6dfe877c43 Basic attempts to organise myself into shape for composite output continue. 2016-03-07 21:22:47 -05:00
Thomas Harte
1e5fe2b2c1 Made an attempt to reestablish the Atari 2600 output connection despite various changes (TODO: generalise that stuff), and to start creating the composite shader. 2016-03-07 21:04:04 -05:00
Thomas Harte
2de229152f Started sketching out shaders to do the first part of the composite conversion. 2016-03-07 19:21:04 -05:00
Thomas Harte
cd9c62acca Still stepping slowly towards a working composite mode, switched the RGB sampling function to returning a vec4, which may be of benefit to any machine with a brightness part of an RGB signal, and started edging towards at least having the correct GLSL programs ready for converting composite output. 2016-03-07 19:08:26 -05:00
Thomas Harte
3b6c9c15a1 Switching momentarily back to monitor mode, resolved why I was suddenly getting no output upon creating some texture targets. 2016-03-07 18:55:15 -05:00
Thomas Harte
eefd17ed4c Fixed sync response in composite scan output generation and stored texture coordinates. 2016-03-05 21:52:22 -05:00
Thomas Harte
6cddb4c9c8 Added a first attempt to generate output scans for composite mode. So this in theory completes the CPU side of composite operations. Though I'm sure problems will reveal themselves. 2016-03-05 21:18:28 -05:00
Thomas Harte
3f39803d32 Switched to triangle strips, to eliminate the need for any temporary storage for the composite output path. 2016-03-05 20:47:11 -05:00
Thomas Harte
23c223e2ed Started edging towards completing the CPU side of accumulating enough data for composite decoding. 2016-03-05 17:55:18 -05:00
Thomas Harte
5c8db71c64 Corrected some constants, ensured both machines (so far) are setting the output device. 2016-03-05 16:19:10 -05:00
Thomas Harte
70b6d51451 Ever more baby steps back towards composite decoding. 2016-03-05 14:36:12 -05:00
Thomas Harte
2f7626a5e0 Okay, this definitely definitely is supposed to be this way around. 2016-02-28 22:00:05 -05:00
Thomas Harte
3449120c24 Added a note to future self, put the scan edge generator back to the way round it was before. 2016-02-27 22:51:37 -05:00
Thomas Harte
7839d93344 With the provision of an extra hint to the CRT and, finally, the realisation about why my scans weren't exactly joining up, improved output precision. 2016-02-27 22:39:01 -05:00
Thomas Harte
1c6de7692d Made an attempt to fix tape output interrupts; offloaded raster width and placing conversion to the GPU. 2016-02-27 20:37:41 -05:00
Thomas Harte
db18c85423 Simplified the run builder rather; put a double check of Electron timing in place. 2016-02-25 22:01:42 -05:00
Thomas Harte
1eea28b692 Disabled some debugging parts, added some others, marked some things as inline. Ticking over. 2016-02-22 23:35:42 -05:00
Thomas Harte
4b28e7b974 Switched back to a single array and vertex buffer. 2016-02-21 22:54:55 -05:00
Thomas Harte
574985f9a2 Fixed interlaced timing; switched to a more robust detector for horizontal sync; eliminated some test logging. 2016-02-20 20:29:40 -05:00
Thomas Harte
00f414d757 Made an attempt to reintroduce interlacing and screen modes with gaps. Something's wrong with synchronisation though, so most likely I'm outputting a bad signal. 2016-02-20 17:32:51 -05:00
Thomas Harte
68992a62f9 Switched to a subtler to out-of-band syncs. 2016-02-20 00:16:07 -05:00
Thomas Harte
1954f7bcbd Got back to a stable image, at least when staying in a mode. Which is what I was trying to fix. Hmmm. 2016-02-19 23:41:09 -05:00
Thomas Harte
570d88a876 Added a simple metric for measuring surprise. Which will hopefully allow me to reimplement PAL/NTSC auto-selection for the Atari 2600. 2016-02-18 23:22:06 -05:00
Thomas Harte
ce3c098c28 Widened beam a little, moved to a linear approximation of age across scans, cut number of stored frames. 2016-02-16 21:48:09 -05:00
Thomas Harte
b261e86c62 Reintroduced lateral as a parameter in CRT drawing, to simulate a rounded raster. 2016-02-16 20:37:04 -05:00
Thomas Harte
a01f90ff3e Attempted a switch to the real PAL visible area and to something a bit like a real phosphor decay. 2016-02-14 21:57:23 -05:00
Thomas Harte
7580d192d5 Fixes: now setting correct frame time estimate, properly enabling the timestamp attribute, and ensuring that the Electron flushes screen work at least once per host frame update. 2016-02-14 19:28:02 -05:00
Thomas Harte
752db78431 No doubt still imperfect but killed the repeated whole texture uploads. 2016-02-13 23:55:02 -05:00
Thomas Harte
697e50c0cc Screen output is back, no matter how inefficiently. 2016-02-13 23:50:18 -05:00
Thomas Harte
d0b2d840da A minor fix to data queuing. Display still absent. 2016-02-13 20:57:41 -05:00
Thomas Harte
eeb0e134fd Started the transition towards a more natural collection of rolling buffers, with phosphor decay in mind. 2016-02-13 20:52:23 -05:00
Thomas Harte
fd2d5c78f8 Started trying to nudge towards the multistage approach to video decoding. 2016-02-12 22:31:05 -05:00
Thomas Harte
0a09762be6 Fixed output precision compared to the new approach of trusting the flywheel for position, and eliminated fixed-Acorn constants. Also re-enabled the faded previous frame, at least temporarily. 2016-02-12 19:53:49 -05:00
Thomas Harte
1d20a29d97 Made an attempt to switch to the flywheels for both vertical and horizontal sync, and to act more appropriately for out-of-bounds sync requests. Lots of tweaking to do, I fear. 2016-02-11 23:43:08 -05:00
Thomas Harte
c81891ec43 Minor tidying and at least acknowledged the new flywheel encapsulation. 2016-02-11 22:13:38 -05:00
Thomas Harte
a6574d1f96 Made an attempt to factor out and more clearly to document my implementation of flywheel synchronisation. 2016-02-11 22:12:12 -05:00
Thomas Harte
c66409421e Switched to generating an interlaced output, that apparently being correct. Enabled a poor man's version of phosphor persistence to smooth things out a little. It's not completely unconvincing. 2016-02-10 23:11:25 -05:00
Thomas Harte
b5bcadb8d3 Reinstated clipped CRT output, with more appropriate ownership of the decision. 2016-02-07 22:18:55 -05:00
Thomas Harte
3a689d14cc Added padding of supplied data to correct for any potential rounding errors when rendering. 2016-02-07 20:29:32 -05:00
Thomas Harte
3a9ea66f8b Filled in shader class. 2016-02-07 19:21:22 -05:00
Thomas Harte
4d0a218a57 Certainly at least seriously considering a separate holder for the "compile a shader" logic. Otherwise taking steps back towards PAL/NTSC decoding. 2016-02-07 17:32:38 -05:00
Thomas Harte
602327cd9d Sketched out a quick class for rendering to texture. 2016-02-07 15:42:02 -05:00
thomasharte
2cb12a7513 Allowed overly aggressive allocations to be cleared up after the fact. 2016-02-06 16:07:23 -05:00
Thomas Harte
bf348ccb96 Fixed clearing logic. 2016-02-05 22:47:12 -05:00
Thomas Harte
6ab425deda There is now a semi-reasonable amount of screen output again. 2016-02-05 21:35:39 -05:00
Thomas Harte
80e7e5e602 Updated to return old behaviour of drawing only upon changes. 2016-02-04 23:05:47 -05:00
Thomas Harte
8bc3f8046d This endeavours to move everything into the CRT class except the final version of shader building. 2016-02-04 22:57:46 -05:00
Thomas Harte
e0d51408e4 Onward with carrying this through to the bitter end, this at least results in all the appropriate knowledge and call-ins occuring at the CRT. 2016-02-04 22:28:50 -05:00
Thomas Harte
09e11469c3 Simplified further: eliminated delegate. Which means I can go frame-free internally to the CRT at some point, if I want. 2016-02-03 19:11:18 -05:00
Thomas Harte
19393390ac It's broken now, but this is what I now intend the full public interface of the CRT to be. 2016-02-02 22:41:33 -05:00
Thomas Harte
4554abb755 Made an attempt to be more rigorous in display generation on the Electron, to make sure I deal with mid-line changes to/from blank line mode. Even if it turns out that they generate pixels. 2016-01-29 21:14:13 -05:00
Thomas Harte
adc6838ba0 Continued slow migration of shader ownership to CRT. Attempted to start debugging the tape interface. 2016-01-27 21:35:57 -05:00