summaryrefslogtreecommitdiffstats
path: root/src/gui/rhi/qrhivulkan.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2019-07-01 11:18:10 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2019-07-31 09:04:45 +0200
commit493ce2f3d40d23682a9492e8995067f50f9edeea (patch)
treeba89a7965b8f2b28cad485d21260e1722c7ca588 /src/gui/rhi/qrhivulkan.cpp
parentc95542694527d66361b9882ad39db5eb06cca3fe (diff)
rhi: gl: Add support for compute
...and storage buffers and images. Change-Id: If38a51322e3187088a13cf4e9b88cb40c8af8621 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhivulkan.cpp')
-rw-r--r--src/gui/rhi/qrhivulkan.cpp36
1 files changed, 4 insertions, 32 deletions
diff --git a/src/gui/rhi/qrhivulkan.cpp b/src/gui/rhi/qrhivulkan.cpp
index 2caa6cdec4..f48a8a3cfe 100644
--- a/src/gui/rhi/qrhivulkan.cpp
+++ b/src/gui/rhi/qrhivulkan.cpp
@@ -3664,34 +3664,6 @@ void QRhiVulkan::setGraphicsPipeline(QRhiCommandBuffer *cb, QRhiGraphicsPipeline
psD->lastActiveFrameSlot = currentFrameSlot;
}
-QRhiPassResourceTracker::BufferStage toPassTrackerBufferStage(QRhiShaderResourceBinding::StageFlags stages)
-{
- // pick the earlier stage (as this is going to be dstAccessMask)
- if (stages.testFlag(QRhiShaderResourceBinding::VertexStage))
- return QRhiPassResourceTracker::BufVertexStage;
- if (stages.testFlag(QRhiShaderResourceBinding::FragmentStage))
- return QRhiPassResourceTracker::BufFragmentStage;
- if (stages.testFlag(QRhiShaderResourceBinding::ComputeStage))
- return QRhiPassResourceTracker::BufComputeStage;
-
- Q_UNREACHABLE();
- return QRhiPassResourceTracker::BufVertexStage;
-}
-
-QRhiPassResourceTracker::TextureStage toPassTrackerTextureStage(QRhiShaderResourceBinding::StageFlags stages)
-{
- // pick the earlier stage (as this is going to be dstAccessMask)
- if (stages.testFlag(QRhiShaderResourceBinding::VertexStage))
- return QRhiPassResourceTracker::TexVertexStage;
- if (stages.testFlag(QRhiShaderResourceBinding::FragmentStage))
- return QRhiPassResourceTracker::TexFragmentStage;
- if (stages.testFlag(QRhiShaderResourceBinding::ComputeStage))
- return QRhiPassResourceTracker::TexComputeStage;
-
- Q_UNREACHABLE();
- return QRhiPassResourceTracker::TexVertexStage;
-}
-
void QRhiVulkan::setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBindings *srb,
int dynamicOffsetCount,
const QRhiCommandBuffer::DynamicOffset *dynamicOffsets)
@@ -3747,7 +3719,7 @@ void QRhiVulkan::setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBin
bufD->lastActiveFrameSlot = currentFrameSlot;
trackedRegisterBuffer(&passResTracker, bufD, bufD->m_type == QRhiBuffer::Dynamic ? currentFrameSlot : 0,
QRhiPassResourceTracker::BufUniformRead,
- toPassTrackerBufferStage(b->stage));
+ QRhiPassResourceTracker::toPassTrackerBufferStage(b->stage));
// Check both the "local" id (the generation counter) and the
// global id. The latter is relevant when a newly allocated
@@ -3768,7 +3740,7 @@ void QRhiVulkan::setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBin
samplerD->lastActiveFrameSlot = currentFrameSlot;
trackedRegisterTexture(&passResTracker, texD,
QRhiPassResourceTracker::TexSample,
- toPassTrackerTextureStage(b->stage));
+ QRhiPassResourceTracker::toPassTrackerTextureStage(b->stage));
if (texD->generation != bd.stex.texGeneration
|| texD->m_id != bd.stex.texId
@@ -3801,7 +3773,7 @@ void QRhiVulkan::setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBin
access = QRhiPassResourceTracker::TexStorageLoadStore;
trackedRegisterTexture(&passResTracker, texD,
access,
- toPassTrackerTextureStage(b->stage));
+ QRhiPassResourceTracker::toPassTrackerTextureStage(b->stage));
if (texD->generation != bd.simage.generation || texD->m_id != bd.simage.id) {
rewriteDescSet = true;
@@ -3832,7 +3804,7 @@ void QRhiVulkan::setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBin
access = QRhiPassResourceTracker::BufStorageLoadStore;
trackedRegisterBuffer(&passResTracker, bufD, bufD->m_type == QRhiBuffer::Dynamic ? currentFrameSlot : 0,
access,
- toPassTrackerBufferStage(b->stage));
+ QRhiPassResourceTracker::toPassTrackerBufferStage(b->stage));
if (bufD->generation != bd.sbuf.generation || bufD->m_id != bd.sbuf.id) {
rewriteDescSet = true;