* If we have e.g. Input Float* and Output Float* when we patch they will both
become Private Float* and we collapse the types together. When that happens,
don't rename names for the losing type, just remove names.
* This was an experiment that accidentally got included, these shaders are only
compatible with SM5 due to dynamic sample indexing and use of SV_SampleIndex
* This isn't relevant for Vulkan, but in GL it's valid to not specify a binding
and fetch it at runtime (and even if a binding is specified, it's not
immutable and can be changed).
* Similarly GL allows bare uniforms that aren't in a buffer, which we handle in
the same way by wrapping them into a $Globals UBO.
* It gets a couple of things less than ideal, mostly glsl block names being on
the next line, but otherwise it's readable and stops mixed tabs/spaces which
had snuck in without checks.
* This isn't perfect and has the risk of false positives, e.g. 0x10 for a
bitfield might be identified as the object with handle 16. Without doing more
advanced string processing like trying to identify 'image 0x10' vs
'aspectFlags 0x10' this is unavoidable, and adding a nonsense ResourceId where
context makes it clear that it's nonsense isn't too bad.
* If in future the validation layers are updated to consistently pass objects
through the debug_utils interface, this may become redundant.
* This allows us to add rich text support much more easily into other itemviews
like RDTableView.
* We set it up for debug messages so that resource links in debug messages can
be linked.
Predicate state is displayed in the raster state.
"Draw Call" and "Wireframe" overlays are visible even if predicate doesn't pass.
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
* Supported textures are decoded into standard format of YUVA, displayed
visually with Y in green, U in blue, V in red.
* A new texture display mode 'YUVA decode' has been added which does a default
full-range conversion from YUV to RGB.
* Custom shaders can be used to implement a custom decode matrix.
* This needs a separate pass for the stencil because GL/Vulkan treat stencil
separately as a uint, whereas on D3D we can get away with binding a combined
view and the stencil comes out as normalised floats.
* Unfortunately ID3D11Multithread::SetMultithreadProtected adds an auto-locking
thread safe mode for all D3D functions, so we have to add a check for it and a
lock to every context function. This will add a small amount of overhead even
when the mode isn't enabled, but it shouldn't be significant.