Thomas Harte
|
1157bde453
|
Sketches interface for a GPU data bookender, to avoid stray errors with packed pixel formats.
|
2017-10-22 10:48:10 -04:00 |
|
Thomas Harte
|
ad9df4bb90
|
Commutes uint8_t * , uint16_t * , uint32_t * , size_t , off_t and long to functional-style casts.
|
2017-10-21 22:30:15 -04:00 |
|
Thomas Harte
|
e983854e71
|
Converts all uint8_t and uint16_t casts to the functional style.
|
2017-10-21 21:50:53 -04:00 |
|
Thomas Harte
|
ec999446e8
|
Commutes int and unsigned casts to the functional style.
|
2017-10-21 21:00:40 -04:00 |
|
Thomas Harte
|
5e3e91373a
|
Switches all unsigned int and double casts to functional style.
|
2017-10-21 19:49:04 -04:00 |
|
Thomas Harte
|
b5b6219cb7
|
Slightly simplifies TextureBuilder arithmetic.
|
2017-10-19 22:02:00 -04:00 |
|
Thomas Harte
|
ce78d9d12c
|
Introduces buffer alignment when writing to textures.
To avoid cross-boundary writes and hopefully to eke out a little better performance.
|
2017-10-17 22:09:48 -04:00 |
|
Thomas Harte
|
edbc60a3fb
|
Various undefined behaviour fixes.
Primarily around uninitialised variables, but also with an attempted use of a negative pointer.
|
2017-10-17 21:29:19 -04:00 |
|
Thomas Harte
|
c6e6c3fcfb
|
Resolves all current analyser warnings.
|
2017-08-24 22:18:44 -04:00 |
|
Thomas Harte
|
2d81acb82e
|
Upped C++ standard to C++14 and added an #if that's intended to use the built-in std::gcd when compiled on C++17 or better. Fixed for new signedness warnings resulting for taking the step to C++14.
|
2017-08-11 19:18:45 -04:00 |
|
Thomas Harte
|
ad8c8166bc
|
Built in gamma conversion for all machines, assuming an output of 2.8 for PAL, 2.2 for NTSC.
|
2017-08-10 15:17:08 -04:00 |
|
Thomas Harte
|
449c33ee8b
|
Signedness fixes.
|
2017-07-21 21:28:04 -04:00 |
|
Thomas Harte
|
ef03c84b21
|
More definitively removed the old sample-offset blending approach to filtering.
|
2017-07-21 20:58:55 -04:00 |
|
Thomas Harte
|
8ccec37a4b
|
Eliminated a further potential cause of texture/geometry mismatch: the texture retain succeeded but then there wasn't room for geometry.
|
2017-07-09 19:11:38 -04:00 |
|
Thomas Harte
|
a25c2fd6b5
|
Got more explicit about what the thinking is here re: multiple sources of action.
|
2017-07-09 17:54:26 -04:00 |
|
Thomas Harte
|
ee1a9a4781
|
Eliminates attempts cleverly to shuffle unsubmitted runs, because no mechanism exists to stop them overwriting previously-submitted-but-not-yet-flushed runs. Which implies that the buffer must be fully circular. The cost of which is sometimes having to make two calls to glTexSubImage2D . Also added some TODOs, and a means for reporting when a retain_latest is ineffective, in which situation it would be inappropriate to attempt to generate correlated geometry
|
2017-07-09 17:50:22 -04:00 |
|
Thomas Harte
|
2f90f35478
|
Ensured the same write area can be submitted multiple times — this is actively used if a run of data overlaps a flywheel-suggested sync. Which nullifies the idea of not having a write area in the barrel, at least as soon as any one has been allocated.
|
2017-07-07 23:37:44 -04:00 |
|
Thomas Harte
|
bfbe12b94b
|
Made an attempt further to tie geometry and texture generation fully together, removing the assumption that the caller will achieve one-to-one calling.
|
2017-07-07 22:25:05 -04:00 |
|
Thomas Harte
|
344d267fd2
|
Introduced sharper chrominance for genuinely black-and-white signals.
|
2017-07-06 21:38:33 -04:00 |
|
Thomas Harte
|
4211389ac7
|
Connected machine-supplied colour burst amplitude to shader, discarding hard-coded value. Net effect: the colour component is now discarded for the ZX80 and 81.
|
2017-07-06 21:29:08 -04:00 |
|
Thomas Harte
|
c6d00ec7d1
|
Switched phase and amplitude varying to a 3d vector; the third component is 1/amplitude if amplitude is non-zero, and zero otherwise. So you can multiply by that to get chrominance, rather than dividing by amplitude. With the direct effect that detected chrominance should automatically be zero if the colour burst didn't exist (i.e. had zero amplitude).
|
2017-07-06 21:25:38 -04:00 |
|
Thomas Harte
|
c2b5a9bb1f
|
Minor fix: given that phase is now a function of position, stop nudging position.
|
2017-05-13 21:50:48 -04:00 |
|
Thomas Harte
|
b14c892740
|
Switched to a safer RAII approach to this lock.
|
2017-05-10 21:29:39 -04:00 |
|
Thomas Harte
|
e01f3f06c8
|
Completed curly bracket movement.
|
2017-03-26 14:34:47 -04:00 |
|
Thomas Harte
|
6cb95b4fc5
|
Switched to passing around std::string s rather than char * s, because they should be easier to capture.
|
2017-02-20 10:35:33 -05:00 |
|
Thomas Harte
|
fccdce65b9
|
Switched to lock guards.
|
2017-02-19 21:45:28 -05:00 |
|
Thomas Harte
|
97cdfea9e9
|
Resolved spurious static analyser complaint: input_size and output_size aren't supposed to have defined values if input or output is null. But whatever.
|
2017-02-11 13:36:09 -05:00 |
|
Thomas Harte
|
23f3ccd77a
|
Made a further attempt to prevent overwrites.
|
2017-02-05 17:47:34 -05:00 |
|
Thomas Harte
|
ebde955356
|
This needs to be a memmove as the areas may overlap.
|
2017-01-29 16:12:48 -05:00 |
|
Thomas Harte
|
7fd02e7f4c
|
Added an extra flag to avoid potential race condition on is_full_, being reset from the background despite a write area not having been allocated.
|
2017-01-29 16:11:29 -05:00 |
|
Thomas Harte
|
c2d7e36c8f
|
Ensured logic for whether composite output is in use is consistent.
|
2017-01-25 21:25:03 -05:00 |
|
Thomas Harte
|
5761c8267b
|
[Re-]Eliminated connection between colour subcarrier frequency and monitor output mode.
|
2017-01-24 20:48:54 -05:00 |
|
Thomas Harte
|
b4159295f6
|
Switched to using quads for intermediate draws. The specific concern is the flexibility offered in the GL spec as to line drawing algorithms. And even if a driver implements exactly to spec then it should omit the final pixel.
|
2017-01-11 21:18:41 -05:00 |
|
Thomas Harte
|
d0a93409e6
|
Made an attempt to simplify in-shader phase calculation, now that output position is a direct multiple of phase.
|
2017-01-11 08:18:00 -05:00 |
|
Thomas Harte
|
4c3669f210
|
Reduced precision of input phase, but I'm not necessarily persuaded by it as a move. However it's clear that something is off in that whole area. But if phase is locked by output position, do I need to retain this level of complexity? Also ensured that intermediate buffers prior to the final are sampled using the nearest sampling mode, also to reduce precision errors.
|
2017-01-10 22:08:07 -05:00 |
|
Thomas Harte
|
eeb646868b
|
Switched off filtering, at least temporarily, to try to ensure that sampling is all where it should be.
|
2017-01-08 19:53:08 -05:00 |
|
Thomas Harte
|
3d789732a2
|
Switched back to full buffer clearing. Until I can figure out the source of noise.
|
2017-01-08 19:50:31 -05:00 |
|
Thomas Harte
|
9521718120
|
Colour phase is multiplied by 255, not 256.
|
2017-01-08 17:21:26 -05:00 |
|
Thomas Harte
|
28909e33ca
|
Eliminated phaseCyclesPerTick as implied.
|
2017-01-08 16:48:02 -05:00 |
|
Thomas Harte
|
79632b1d34
|
Instituted de-escalating phase-related extensions, definitively to kill rounding error edges.
|
2017-01-08 16:24:22 -05:00 |
|
Thomas Harte
|
7ad64ff16b
|
Made further efforts to support throughput via memory barrier.
|
2017-01-08 14:47:16 -05:00 |
|
Thomas Harte
|
be48c950b4
|
Started taking steps towards using a texture barrier where possible to reduce all of my framebuffer binds. Some output appears, but it's not correct.
|
2017-01-08 11:13:20 -05:00 |
|
Thomas Harte
|
0487b8c178
|
Definitively eliminated the additional y filtering step; if I'm going to work to ensure always four samples per colour cycle, I can put the channel separation coefficients directly into their shaders, cutting down on samples.
|
2017-01-07 16:02:33 -05:00 |
|
Thomas Harte
|
5740015f56
|
Temporarily disabled composite processing to show the pure stream. Fixed both automatic calculations of phase — per line and, at input, per pixel.
|
2017-01-07 12:38:00 -05:00 |
|
Thomas Harte
|
c746a3711f
|
Temporarily disabled my attempt to be clever with bilinear filtering when applying a lowpass filter. Will need to investigate.
|
2017-01-04 08:06:18 -05:00 |
|
Thomas Harte
|
aa7774a9a6
|
Experimental: up the chroma accuracy, just let the luma go straight through. Subject to figuring out how I'm still losing so much precision.
|
2017-01-03 22:41:34 -05:00 |
|
Thomas Harte
|
a836120945
|
Restored proper colour separation, but somewhere a massive hit in horizontal resolution is happening — much greater than one would expect from the sample size picked. So investigation to come.
|
2017-01-03 22:32:07 -05:00 |
|
Thomas Harte
|
7d60df9075
|
Added the option for both intermediate and output shaders to use only a portion of the input/output texture; made an attempt to pick an appropriate proportion in order to align signal sampling with the colour subcarrier.
|
2017-01-03 22:16:52 -05:00 |
|
Thomas Harte
|
f2b8b26bc4
|
Started throwing some comments into my shaders.
|
2017-01-03 21:16:38 -05:00 |
|
Thomas Harte
|
34d213dec4
|
Decreased Y resolution, again also hopefully temporarily.
|
2016-12-10 15:35:38 -05:00 |
|