diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/rhi/qrhid3d11.cpp | 9 | ||||
-rw-r--r-- | src/gui/rhi/qrhigles2.cpp | 12 | ||||
-rw-r--r-- | src/gui/rhi/qrhimetal.mm | 9 | ||||
-rw-r--r-- | src/gui/rhi/qshader.cpp | 23 | ||||
-rw-r--r-- | src/gui/rhi/qshader_p.h | 4 |
5 files changed, 26 insertions, 31 deletions
diff --git a/src/gui/rhi/qrhid3d11.cpp b/src/gui/rhi/qrhid3d11.cpp index 74abfdff87..eaaf0c6991 100644 --- a/src/gui/rhi/qrhid3d11.cpp +++ b/src/gui/rhi/qrhid3d11.cpp @@ -4156,8 +4156,7 @@ bool QD3D11GraphicsPipeline::create() return false; } vsByteCode = bytecode; - if (const QShader::NativeResourceBindingMap *map = shaderStage.shader().nativeResourceBindingMap(shaderKey)) - vs.nativeResourceBindingMap = *map; + vs.nativeResourceBindingMap = shaderStage.shader().nativeResourceBindingMap(shaderKey); rhiD->m_shaderCache.insert(shaderStage, QRhiD3D11::Shader(vs.shader, bytecode, vs.nativeResourceBindingMap)); vs.shader->AddRef(); break; @@ -4167,8 +4166,7 @@ bool QD3D11GraphicsPipeline::create() qWarning("Failed to create pixel shader: %s", qPrintable(comErrorMessage(hr))); return false; } - if (const QShader::NativeResourceBindingMap *map = shaderStage.shader().nativeResourceBindingMap(shaderKey)) - fs.nativeResourceBindingMap = *map; + fs.nativeResourceBindingMap = shaderStage.shader().nativeResourceBindingMap(shaderKey); rhiD->m_shaderCache.insert(shaderStage, QRhiD3D11::Shader(fs.shader, bytecode, fs.nativeResourceBindingMap)); fs.shader->AddRef(); break; @@ -4286,8 +4284,7 @@ bool QD3D11ComputePipeline::create() return false; } - if (const QShader::NativeResourceBindingMap *map = m_shaderStage.shader().nativeResourceBindingMap(shaderKey)) - cs.nativeResourceBindingMap = *map; + cs.nativeResourceBindingMap = m_shaderStage.shader().nativeResourceBindingMap(shaderKey); if (rhiD->m_shaderCache.count() >= QRhiD3D11::MAX_SHADER_CACHE_ENTRIES) rhiD->clearShaderCache(); diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp index 02fbb5ec40..b67f87ed6e 100644 --- a/src/gui/rhi/qrhigles2.cpp +++ b/src/gui/rhi/qrhigles2.cpp @@ -5341,14 +5341,14 @@ bool QGles2GraphicsPipeline::create() if (shaderStage.type() == QRhiShaderStage::Vertex) { vsDesc = shader.description(); if (!rhiD->shaderSource(shaderStage, &glslVersion).isEmpty()) { - if (auto *m = shader.separateToCombinedImageSamplerMappingList({ QShader::GlslShader, glslVersion, shaderStage.shaderVariant() })) - vsSamplerMappingList = *m; + vsSamplerMappingList = shader.separateToCombinedImageSamplerMappingList( + { QShader::GlslShader, glslVersion, shaderStage.shaderVariant() }); } } else if (shaderStage.type() == QRhiShaderStage::Fragment) { fsDesc = shader.description(); if (!rhiD->shaderSource(shaderStage, &glslVersion).isEmpty()) { - if (auto *m = shader.separateToCombinedImageSamplerMappingList({ QShader::GlslShader, glslVersion, shaderStage.shaderVariant() })) - fsSamplerMappingList = *m; + fsSamplerMappingList = shader.separateToCombinedImageSamplerMappingList( + { QShader::GlslShader, glslVersion, shaderStage.shaderVariant() }); } } } @@ -5484,8 +5484,8 @@ bool QGles2ComputePipeline::create() QShader::SeparateToCombinedImageSamplerMappingList csSamplerMappingList; int glslVersion = 0; if (!rhiD->shaderSource(m_shaderStage, &glslVersion).isEmpty()) { - if (auto *m = m_shaderStage.shader().separateToCombinedImageSamplerMappingList({ QShader::GlslShader, glslVersion, m_shaderStage.shaderVariant() })) - csSamplerMappingList = *m; + csSamplerMappingList = m_shaderStage.shader().separateToCombinedImageSamplerMappingList( + { QShader::GlslShader, glslVersion, m_shaderStage.shaderVariant() }); } program = rhiD->f->glCreateProgram(); diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm index 3a1eaccc92..ff136debe9 100644 --- a/src/gui/rhi/qrhimetal.mm +++ b/src/gui/rhi/qrhimetal.mm @@ -3642,8 +3642,7 @@ bool QMetalGraphicsPipeline::create() case QRhiShaderStage::Vertex: d->vs.lib = lib; d->vs.func = func; - if (const QShader::NativeResourceBindingMap *map = shader.nativeResourceBindingMap(activeKey)) - d->vs.nativeResourceBindingMap = *map; + d->vs.nativeResourceBindingMap = shader.nativeResourceBindingMap(activeKey); rhiD->d->shaderCache.insert(shaderStage, d->vs); [d->vs.lib retain]; [d->vs.func retain]; @@ -3652,8 +3651,7 @@ bool QMetalGraphicsPipeline::create() case QRhiShaderStage::Fragment: d->fs.lib = lib; d->fs.func = func; - if (const QShader::NativeResourceBindingMap *map = shader.nativeResourceBindingMap(activeKey)) - d->fs.nativeResourceBindingMap = *map; + d->fs.nativeResourceBindingMap = shader.nativeResourceBindingMap(activeKey); rhiD->d->shaderCache.insert(shaderStage, d->fs); [d->fs.lib retain]; [d->fs.func retain]; @@ -3810,8 +3808,7 @@ bool QMetalComputePipeline::create() d->cs.lib = lib; d->cs.func = func; d->cs.localSize = shader.description().computeShaderLocalSize(); - if (const QShader::NativeResourceBindingMap *map = shader.nativeResourceBindingMap(activeKey)) - d->cs.nativeResourceBindingMap = *map; + d->cs.nativeResourceBindingMap = shader.nativeResourceBindingMap(activeKey); if (rhiD->d->shaderCache.count() >= QRhiMetal::MAX_SHADER_CACHE_ENTRIES) { for (QMetalShader &s : rhiD->d->shaderCache) diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp index b29abe2778..7c77803f12 100644 --- a/src/gui/rhi/qshader.cpp +++ b/src/gui/rhi/qshader.cpp @@ -742,16 +742,17 @@ QDebug operator<<(QDebug dbg, const QShaderVersion &v) */ /*! - \return the native binding map for \a key or null if no extra mapping is - available, or is not applicable. + \return the native binding map for \a key. The map is empty if no mapping + is available for \a key (for example, because the map is not applicable for + the API and shading language described by \a key). */ -const QShader::NativeResourceBindingMap *QShader::nativeResourceBindingMap(const QShaderKey &key) const +QShader::NativeResourceBindingMap QShader::nativeResourceBindingMap(const QShaderKey &key) const { auto it = d->bindings.constFind(key); if (it == d->bindings.cend()) - return nullptr; + return {}; - return &it.value(); + return it.value(); } /*! @@ -798,17 +799,17 @@ void QShader::removeResourceBindingMap(const QShaderKey &key) */ /*! - \return the combined image sampler mapping list for \a key or null if there - is no data available for \a key, for example because such a mapping is not - applicable for the shading language. + \return the combined image sampler mapping list for \a key, or an empty + list if there is no data available for \a key, for example because such a + mapping is not applicable for the shading language. */ -const QShader::SeparateToCombinedImageSamplerMappingList *QShader::separateToCombinedImageSamplerMappingList(const QShaderKey &key) const +QShader::SeparateToCombinedImageSamplerMappingList QShader::separateToCombinedImageSamplerMappingList(const QShaderKey &key) const { auto it = d->combinedImageMap.constFind(key); if (it == d->combinedImageMap.cend()) - return nullptr; + return {}; - return &it.value(); + return it.value(); } /*! diff --git a/src/gui/rhi/qshader_p.h b/src/gui/rhi/qshader_p.h index 6dca86b1c4..29235c6b0b 100644 --- a/src/gui/rhi/qshader_p.h +++ b/src/gui/rhi/qshader_p.h @@ -163,7 +163,7 @@ public: static QShader fromSerialized(const QByteArray &data); using NativeResourceBindingMap = QHash<int, QPair<int, int> >; // binding -> native_binding[, native_binding] - const NativeResourceBindingMap *nativeResourceBindingMap(const QShaderKey &key) const; + NativeResourceBindingMap nativeResourceBindingMap(const QShaderKey &key) const; void setResourceBindingMap(const QShaderKey &key, const NativeResourceBindingMap &map); void removeResourceBindingMap(const QShaderKey &key); @@ -173,7 +173,7 @@ public: int samplerBinding; }; using SeparateToCombinedImageSamplerMappingList = QList<SeparateToCombinedImageSamplerMapping>; - const SeparateToCombinedImageSamplerMappingList *separateToCombinedImageSamplerMappingList(const QShaderKey &key) const; + SeparateToCombinedImageSamplerMappingList separateToCombinedImageSamplerMappingList(const QShaderKey &key) const; void setSeparateToCombinedImageSamplerMappingList(const QShaderKey &key, const SeparateToCombinedImageSamplerMappingList &list); void removeSeparateToCombinedImageSamplerMappingList(const QShaderKey &key); |