diff options
Diffstat (limited to 'src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp')
-rw-r--r-- | src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp | 54 |
1 files changed, 1 insertions, 53 deletions
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp index b4fb721a8b..1f574a9802 100644 --- a/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp +++ b/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp @@ -78,32 +78,6 @@ void QSGD3D12ShaderLinker::reset(const QByteArray &vertBlob, const QByteArray &f textureNameMap.clear(); } -void QSGD3D12ShaderLinker::feedVertexInput(const QSGShaderEffectNode::ShaderData &shader) -{ - bool foundPos = false, foundTexCoord = false; - - for (const auto &ip : qAsConst(shader.shaderInfo.inputParameters)) { - if (ip.semanticName == QByteArrayLiteral("POSITION")) - foundPos = true; - else if (ip.semanticName == QByteArrayLiteral("TEXCOORD")) - foundTexCoord = true; - } - - if (!foundPos) { - qWarning("ShaderEffect: No POSITION input found."); - error = true; - } - if (!foundTexCoord) { - qWarning("ShaderEffect: No TEXCOORD input found."); - error = true; - } - - // Nothing else to do here, the QSGGeometry::AttributeSet decides anyway - // and that is already generated by QQuickShaderEffectMesh via - // QSGGeometry::defaultAttributes_TexturedPoint2D() and has the semantics - // so it will just work. -} - void QSGD3D12ShaderLinker::feedConstants(const QSGShaderEffectNode::ShaderData &shader, const QSet<int> *dirtyIndices) { Q_ASSERT(shader.shaderInfo.variables.count() == shader.varData.count()); @@ -634,19 +608,12 @@ void QSGD3D12ShaderEffectNode::syncMaterial(SyncData *syncData) m_material.linker.reset(vertBlob, fragBlob); if (m_material.hasCustomVertexShader) { - m_material.linker.feedVertexInput(*syncData->vertex.shader); m_material.linker.feedConstants(*syncData->vertex.shader); } else { QSGShaderEffectNode::ShaderData defaultSD; defaultSD.shaderInfo.blob = vertBlob; defaultSD.shaderInfo.type = QSGGuiThreadShaderEffectManager::ShaderInfo::TypeVertex; - QSGGuiThreadShaderEffectManager::ShaderInfo::InputParameter ip; - ip.semanticName = QByteArrayLiteral("POSITION"); - defaultSD.shaderInfo.inputParameters.append(ip); - ip.semanticName = QByteArrayLiteral("TEXCOORD"); - defaultSD.shaderInfo.inputParameters.append(ip); - // { float4x4 qt_Matrix; float qt_Opacity; } where only the matrix is used QSGGuiThreadShaderEffectManager::ShaderInfo::Variable v; v.name = QByteArrayLiteral("qt_Matrix"); @@ -656,10 +623,7 @@ void QSGD3D12ShaderEffectNode::syncMaterial(SyncData *syncData) QSGShaderEffectNode::VariableData vd; vd.specialType = QSGShaderEffectNode::VariableData::Matrix; defaultSD.varData.append(vd); - defaultSD.shaderInfo.constantDataSize = (16 + 1) * sizeof(float); - - m_material.linker.feedVertexInput(defaultSD); m_material.linker.feedConstants(defaultSD); } @@ -943,20 +907,6 @@ bool QSGD3D12GuiThreadShaderEffectManager::reflect(ShaderInfo *result) qDebug("Shader reflection size %d type %d v%u.%u input elems %d cbuffers %d boundres %d", result->blob.size(), result->type, major, minor, ieCount, cbufferCount, boundResCount); - for (int i = 0; i < ieCount; ++i) { - D3D12_SIGNATURE_PARAMETER_DESC desc; - if (FAILED(reflector->GetInputParameterDesc(i, &desc))) { - qWarning("D3D reflection: Failed to query input parameter %d", i); - return false; - } - if (desc.SystemValueType != D3D_NAME_UNDEFINED) - continue; - ShaderInfo::InputParameter param; - param.semanticName = QByteArray(desc.SemanticName); - param.semanticIndex = desc.SemanticIndex; - result->inputParameters.append(param); - } - for (int i = 0; i < boundResCount; ++i) { D3D12_SHADER_INPUT_BIND_DESC desc; if (FAILED(reflector->GetResourceBindingDesc(i, &desc))) { @@ -1036,10 +986,8 @@ bool QSGD3D12GuiThreadShaderEffectManager::reflect(ShaderInfo *result) } } - if (Q_UNLIKELY(debug_shader())) { - qDebug() << "Input:" << result->inputParameters; + if (Q_UNLIKELY(debug_shader())) qDebug() << "Variables:" << result->variables << "cbuffer size" << result->constantDataSize; - } return true; } |