mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
VertexLoader: Change VtxDesc to use u64 instead of u32
This is required to make packing consistent between compilers: with u32, MSVC would not allocate a bitfield that spans two u32s (it would leave a "hole").
This commit is contained in:
@ -518,14 +518,11 @@ void VertexLoader::CompileVertexTranslator()
|
||||
#endif
|
||||
|
||||
// Colors
|
||||
const u32 col[2] = {m_VtxDesc.Color0, m_VtxDesc.Color1};
|
||||
const u64 col[2] = {m_VtxDesc.Color0, m_VtxDesc.Color1};
|
||||
// TextureCoord
|
||||
// Since m_VtxDesc.Text7Coord is broken across a 32 bit word boundary, retrieve its value manually.
|
||||
// If we didn't do this, the vertex format would be read as one bit offset from where it should be, making
|
||||
// 01 become 00, and 10/11 become 01
|
||||
const u32 tc[8] = {
|
||||
const u64 tc[8] = {
|
||||
m_VtxDesc.Tex0Coord, m_VtxDesc.Tex1Coord, m_VtxDesc.Tex2Coord, m_VtxDesc.Tex3Coord,
|
||||
m_VtxDesc.Tex4Coord, m_VtxDesc.Tex5Coord, m_VtxDesc.Tex6Coord, (const u32)((m_VtxDesc.Hex >> 31) & 3)
|
||||
m_VtxDesc.Tex4Coord, m_VtxDesc.Tex5Coord, m_VtxDesc.Tex6Coord, m_VtxDesc.Tex7Coord
|
||||
};
|
||||
|
||||
u32 components = 0;
|
||||
@ -583,7 +580,7 @@ void VertexLoader::CompileVertexTranslator()
|
||||
{
|
||||
Host_SysMessage(
|
||||
StringFromFormat("VertexLoader_Normal::GetFunction(%i %i %i %i) returned zero!",
|
||||
m_VtxDesc.Normal, m_VtxAttr.NormalFormat,
|
||||
(u32)m_VtxDesc.Normal, m_VtxAttr.NormalFormat,
|
||||
m_VtxAttr.NormalElements, m_VtxAttr.NormalIndex3).c_str());
|
||||
}
|
||||
WriteCall(pFunc);
|
||||
@ -677,7 +674,7 @@ void VertexLoader::CompileVertexTranslator()
|
||||
}
|
||||
else
|
||||
{
|
||||
_assert_msg_(VIDEO, DIRECT <= tc[i] && tc[i] <= INDEX16, "Invalid texture coordinates!\n(tc[i] = %d)", tc[i]);
|
||||
_assert_msg_(VIDEO, DIRECT <= tc[i] && tc[i] <= INDEX16, "Invalid texture coordinates!\n(tc[i] = %d)", (u32)tc[i]);
|
||||
_assert_msg_(VIDEO, FORMAT_UBYTE <= format && format <= FORMAT_FLOAT, "Invalid texture coordinates format!\n(format = %d)", format);
|
||||
_assert_msg_(VIDEO, 0 <= elements && elements <= 1, "Invalid number of texture coordinates elements!\n(elements = %d)", elements);
|
||||
|
||||
@ -913,7 +910,7 @@ void VertexLoader::AppendToString(std::string *dest) const
|
||||
};
|
||||
|
||||
dest->append(StringFromFormat("%ib skin: %i P: %i %s-%s ",
|
||||
m_VertexSize, m_VtxDesc.PosMatIdx,
|
||||
m_VertexSize, (u32)m_VtxDesc.PosMatIdx,
|
||||
m_VtxAttr.PosElements ? 3 : 2, posMode[m_VtxDesc.Position], posFormats[m_VtxAttr.PosFormat]));
|
||||
|
||||
if (m_VtxDesc.Normal)
|
||||
@ -922,7 +919,7 @@ void VertexLoader::AppendToString(std::string *dest) const
|
||||
m_VtxAttr.NormalElements, posMode[m_VtxDesc.Normal], posFormats[m_VtxAttr.NormalFormat]));
|
||||
}
|
||||
|
||||
u32 color_mode[2] = {m_VtxDesc.Color0, m_VtxDesc.Color1};
|
||||
u64 color_mode[2] = {m_VtxDesc.Color0, m_VtxDesc.Color1};
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
if (color_mode[i])
|
||||
@ -930,7 +927,7 @@ void VertexLoader::AppendToString(std::string *dest) const
|
||||
dest->append(StringFromFormat("C%i: %i %s-%s ", i, m_VtxAttr.color[i].Elements, posMode[color_mode[i]], colorFormat[m_VtxAttr.color[i].Comp]));
|
||||
}
|
||||
}
|
||||
u32 tex_mode[8] = {
|
||||
u64 tex_mode[8] = {
|
||||
m_VtxDesc.Tex0Coord, m_VtxDesc.Tex1Coord, m_VtxDesc.Tex2Coord, m_VtxDesc.Tex3Coord,
|
||||
m_VtxDesc.Tex4Coord, m_VtxDesc.Tex5Coord, m_VtxDesc.Tex6Coord, m_VtxDesc.Tex7Coord
|
||||
};
|
||||
|
Reference in New Issue
Block a user