Thomas Harte
b4f3c41aae
Formalises naming of shader inputs and related guarantees.
2017-11-24 18:45:24 -05:00
Matt Godbolt
bded406caa
Initialize all const
members.
...
Without this change, GCC versions >4.8 will error with things like:
```
./CLK/Outputs/CRT/Internals/CRTOpenGL.cpp:154:2:error: uninitialized const member
'Outputs::CRT::OpenGLOutputBuilder::draw_frame(unsigned int, unsigned int, bool)::RenderStage::target'
```
2017-11-24 12:09:10 -06:00
Thomas Harte
fd96e3e657
Eliminates all unused #ifdef GL_NV_texture_barrier code.
2017-11-13 22:39:18 -05:00
Thomas Harte
70039d22f1
Allows a CRT machine owner to set the target frame buffer for OpenGL output, breaking the assumption that it'll be zero.
2017-11-12 19:29:22 -05:00
Thomas Harte
aa77be1c10
Introduces missing include.
2017-11-12 17:20:37 -05:00
Thomas Harte
c827d14d97
Corrects various GCC warnings across the 6560, CPC, TIA, Oric video and elsewhere.
2017-11-12 17:17:27 -05:00
Thomas Harte
5aef81cf24
Commutes cross-platform #pragma mark
s to //MARK:
s.
2017-11-12 15:59:11 -05:00
Thomas Harte
2e15fab651
Doubles down on <cX> over <X.h> for C includes, and usage of the namespace for those types and functions.
2017-11-11 15:28:40 -05:00
Thomas Harte
c0055a5a5f
Further builds up SConstruct, correcting many missed imports and a couple of improper uses of C99 in C++ code.
2017-11-09 22:04:49 -05:00
Thomas Harte
5e3e91373a
Switches all unsigned int
and double
casts to functional style.
2017-10-21 19:49:04 -04:00
Thomas Harte
c6e6c3fcfb
Resolves all current analyser warnings.
2017-08-24 22:18:44 -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
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
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
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
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
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
34d213dec4
Decreased Y resolution, again also hopefully temporarily.
2016-12-10 15:35:38 -05:00
Thomas Harte
7c85cb62e4
Moved underscores, removed indirections where they're not necessary, converted those names that were still looking very Objective-C and moved the GL fence variable into the private area, where it should always have been.
2016-11-21 12:14:52 +08:00
Thomas Harte
e1285028aa
Removed a redundant clear and some dead code.
2016-11-21 11:42:45 +08:00
Thomas Harte
7b38247ab3
Updated outdated comments.
2016-11-21 11:40:13 +08:00
Thomas Harte
d7d0ed378a
Only the final intermediate buffer needs clearing, on reflection.
2016-11-21 11:26:07 +08:00
Thomas Harte
32dbfe947d
With hindsight, the elimination of this might have been overzealous.
2016-11-20 10:53:35 +08:00
Thomas Harte
1f91d29434
Progressed to usage of an array builder and a texture builder up to the point of a successful build.
2016-11-17 12:26:04 +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
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
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
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