diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2022-03-18 12:36:07 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2022-03-24 19:19:35 +0100 |
commit | e25fc5a19774a0774148f194ebbb4571e730d4c1 (patch) | |
tree | 3cabb6445e1fa54d584e6a1c4c6dfb8a25115fc9 /src/gui/rhi/qrhi_p.h | |
parent | 1fe5ea3f836c3962a5919a48b46275545e008cf6 (diff) |
rhi: d3d11/vulkan: Allow passing in an array range override
Only (straightforwardly) implementable with modern APIs, and
only really exists to handle special platform cases, such as
when a video framework gives us a D3D texture array with
D3D11_BIND_DECODER | D3D11_BIND_SHADER_RESOURCE
which is only possible to use as a shader resource if the SRV
selects a single array layer.
Has no effect on the normal usage of texture arrays, where all
array layers are exposed, and it is the shader that selects the
layer when sampling or loading via the sampler2DArray. That
continues to be the standard way to work with texture arrays.
Change-Id: I0a656b605da21f50239b38abb83067e0208c1dbe
Reviewed-by: Piotr Srebrny <piotr.srebrny@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhi_p.h')
-rw-r--r-- | src/gui/rhi/qrhi_p.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gui/rhi/qrhi_p.h b/src/gui/rhi/qrhi_p.h index c96b773e0b..07f3ad69be 100644 --- a/src/gui/rhi/qrhi_p.h +++ b/src/gui/rhi/qrhi_p.h @@ -866,6 +866,14 @@ public: int arraySize() const { return m_arraySize; } void setArraySize(int arraySize) { m_arraySize = arraySize; } + int arrayRangeStart() const { return m_arrayRangeStart; } + int arrayRangeLength() const { return m_arrayRangeLength; } + void setArrayRange(int startIndex, int count) + { + m_arrayRangeStart = startIndex; + m_arrayRangeLength = count; + } + Flags flags() const { return m_flags; } void setFlags(Flags f) { m_flags = f; } @@ -886,6 +894,8 @@ protected: int m_arraySize; int m_sampleCount; Flags m_flags; + int m_arrayRangeStart = -1; + int m_arrayRangeLength = -1; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QRhiTexture::Flags) @@ -1676,7 +1686,8 @@ public: RenderTo3DTextureSlice, TextureArrays, Tessellation, - GeometryShader + GeometryShader, + TextureArrayRange }; enum BeginFrameFlag { |