compare vs attrib specs by default, ignore NumberFmt when vertex input dynamic state is supported

This commit is contained in:
Frodo Baggins 2025-03-02 17:52:31 -08:00
parent 2bc8a944d4
commit 47db86c3cd

View File

@ -90,12 +90,13 @@ struct StageSpecialization {
Backend::Bindings start_)
: info{&info_}, runtime_info{runtime_info_}, start{start_} {
fetch_shader_data = Gcn::ParseFetchShader(info_);
if (info_.stage == Stage::Vertex && fetch_shader_data &&
!profile_.support_legacy_vertex_attributes) {
if (info_.stage == Stage::Vertex && fetch_shader_data) {
// Specialize shader on VS input number types to follow spec.
ForEachSharp(vs_attribs, fetch_shader_data->attributes,
[](auto& spec, const auto& desc, AmdGpu::Buffer sharp) {
spec.num_class = AmdGpu::GetNumberClass(sharp.GetNumberFmt());
[&profile_](auto& spec, const auto& desc, AmdGpu::Buffer sharp) {
spec.num_class = profile_.support_legacy_vertex_attributes
? AmdGpu::NumberClass{}
: AmdGpu::GetNumberClass(sharp.GetNumberFmt());
spec.dst_select = sharp.DstSelect();
});
}