mirror of https://git.suyu.dev/suyu/suyu
shader/shader_ir: Change declare output attribute to a switch
This commit is contained in:
parent
4dfd5c84ea
commit
464bd5fad7
|
@ -106,7 +106,8 @@ Node ShaderIR::GetPhysicalInputAttribute(Tegra::Shader::Register physical_addres
|
||||||
}
|
}
|
||||||
|
|
||||||
Node ShaderIR::GetOutputAttribute(Attribute::Index index, u64 element, Node buffer) {
|
Node ShaderIR::GetOutputAttribute(Attribute::Index index, u64 element, Node buffer) {
|
||||||
if (index == Attribute::Index::LayerViewportPointSize) {
|
switch (index) {
|
||||||
|
case Attribute::Index::LayerViewportPointSize:
|
||||||
switch (element) {
|
switch (element) {
|
||||||
case 0:
|
case 0:
|
||||||
UNIMPLEMENTED();
|
UNIMPLEMENTED();
|
||||||
|
@ -121,8 +122,8 @@ Node ShaderIR::GetOutputAttribute(Attribute::Index index, u64 element, Node buff
|
||||||
uses_point_size = true;
|
uses_point_size = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
if (index == Attribute::Index::TessCoordInstanceIDVertexID) {
|
case Attribute::Index::TessCoordInstanceIDVertexID:
|
||||||
switch (element) {
|
switch (element) {
|
||||||
case 2:
|
case 2:
|
||||||
uses_instance_id = true;
|
uses_instance_id = true;
|
||||||
|
@ -130,18 +131,17 @@ Node ShaderIR::GetOutputAttribute(Attribute::Index index, u64 element, Node buff
|
||||||
case 3:
|
case 3:
|
||||||
uses_vertex_id = true;
|
uses_vertex_id = true;
|
||||||
break;
|
break;
|
||||||
default:
|
}
|
||||||
break;
|
break;
|
||||||
}
|
case Attribute::Index::ClipDistances0123:
|
||||||
}
|
case Attribute::Index::ClipDistances4567: {
|
||||||
if (index == Attribute::Index::ClipDistances0123 ||
|
|
||||||
index == Attribute::Index::ClipDistances4567) {
|
|
||||||
const auto clip_index =
|
const auto clip_index =
|
||||||
static_cast<u32>((index == Attribute::Index::ClipDistances4567 ? 1 : 0) + element);
|
static_cast<u32>((index == Attribute::Index::ClipDistances4567 ? 1 : 0) + element);
|
||||||
used_clip_distances.at(clip_index) = true;
|
used_clip_distances.at(clip_index) = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
used_output_attributes.insert(index);
|
used_output_attributes.insert(index);
|
||||||
|
|
||||||
return MakeNode<AbufNode>(index, static_cast<u32>(element), std::move(buffer));
|
return MakeNode<AbufNode>(index, static_cast<u32>(element), std::move(buffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue