1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-28 22:30:30 +00:00
Commit Graph

602 Commits

Author SHA1 Message Date
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
2cc72169ff Ensured machines can nominate their own aspect ratio windows. Switched to 11/10 for the Electron. 2016-04-11 23:12:56 -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
a3c2cd880e I discovered a further post on this on the STH forums; apparently the Electron simply asserts sync continuously. No breaks. 2016-04-11 21:01:09 -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
e617bd2bb3 Turned audio quality up to the maximum, at least for now. 2016-04-06 21:12:22 -04:00
Thomas Harte
28e6517234 Switched away from tracking absolute time to tracking relative. 2016-04-06 20:46:00 -04:00
Thomas Harte
d4be4c4769 Of course, I want min. Not max. 2016-04-06 20:27:48 -04:00
Thomas Harte
fd1f6a7e1f Expanded on thinking. 2016-04-06 19:35:53 -04:00
Thomas Harte
e885438363 The penny has finally dropped that I can drive the CPU stuff in a manner completely decoupled from the GPU stuff. For much improved parallelisation. 2016-04-06 19:34:34 -04:00
Thomas Harte
5aa6da221f Shifted responsibility for byte shifts, probably to a more logical place. 2016-04-05 22:19:14 -04:00
Thomas Harte
2248769df9 Pulled a bunch of selection parts outside of the loops. Probably exhausting this angle of attack. 2016-04-05 22:17:44 -04:00
Thomas Harte
8f87973a96 Switched to table-based byte to output conversion. 2016-04-05 22:07:10 -04:00
Thomas Harte
e35456612a Simplified 40-column to pixel conversion. 2016-04-05 20:44:05 -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
7838507a7a Simplified sound generation. 2016-04-04 22:22:19 -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
4595741ab0 Made an attempt not to interrupt the display link queue too much when emulation is running slowly. 2016-04-04 20:22:33 -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
a6ef78862c This'll probably do for now. 2016-03-24 22:20:00 -04:00
Thomas Harte
f1caf62ff2 Continuing the switch around. 2016-03-24 19:31:41 -04:00
Thomas Harte
738186e323 Edging back towards shifting things to the stack. 2016-03-24 19:17:44 -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
5db0f9e2d5 Shunted a few more things onto the stack. 2016-03-20 22:59:21 -04:00
Thomas Harte
9a82f028aa operation is now also stack local. 2016-03-20 22:52:49 -04:00
Thomas Harte
2f174b3a3e Moved operand to stack-local storage. 2016-03-20 22:50:16 -04:00
Thomas Harte
5966ac845f Switched symbols and updated all-RAM 6502 in order to fix unit test target. 2016-03-20 22:48:56 -04:00
Thomas Harte
197cf2a834 Commented out sync; it can probably be implicit. 2016-03-20 21:42:05 -04:00
Thomas Harte
902017a962 Fixes: drop any processing backlog, try not to allow an Electron document to close mid-draw, perform a frame grab even if the emulated machine is over-processing, really really don't create a CRT until it's safe. 2016-03-20 18:42:37 -04:00
Thomas Harte
fb6fb5d948 Switched to two-phase setup to deal with OpenGL scheduling. 2016-03-20 13:50:13 -04:00
Thomas Harte
eabc382540 Fixed: of course I can't rely on the pointer to CVTimeStamp not becoming dangling during a queue jump. 2016-03-19 23:02:42 -04:00
Thomas Harte
4c5d66c317 Made sure GL context isn't activated until it's locked. 2016-03-19 22:54:56 -04:00
Thomas Harte
a546277f88 Added the simplest mechanism to decouple emulation from the display link queue. 2016-03-19 22:53:37 -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
b074860031 Updated to latest information on interrupt timing. 2016-03-18 21:11:25 -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