Skip to content
Snippets Groups Projects
Commit 346012f2 authored by Tony Wasserka's avatar Tony Wasserka
Browse files

Pica/CommandProcessor: Add a safety check for invalid (?) GPU configurations.

parent 1e960e9e
No related branches found
No related tags found
No related merge requests found
...@@ -110,6 +110,13 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { ...@@ -110,6 +110,13 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
for (int i = 0; i < attribute_config.GetNumTotalAttributes(); ++i) { for (int i = 0; i < attribute_config.GetNumTotalAttributes(); ++i) {
for (unsigned int comp = 0; comp < vertex_attribute_elements[i]; ++comp) { for (unsigned int comp = 0; comp < vertex_attribute_elements[i]; ++comp) {
const u8* srcdata = Memory::GetPointer(PAddrToVAddr(vertex_attribute_sources[i] + vertex_attribute_strides[i] * vertex + comp * vertex_attribute_element_size[i])); const u8* srcdata = Memory::GetPointer(PAddrToVAddr(vertex_attribute_sources[i] + vertex_attribute_strides[i] * vertex + comp * vertex_attribute_element_size[i]));
// TODO(neobrain): Ocarina of Time 3D has GetNumTotalAttributes return 8,
// yet only provides 2 valid source data addresses. Need to figure out
// what's wrong there, until then we just continue when address lookup fails
if (srcdata == nullptr)
continue;
const float srcval = (vertex_attribute_formats[i] == 0) ? *(s8*)srcdata : const float srcval = (vertex_attribute_formats[i] == 0) ? *(s8*)srcdata :
(vertex_attribute_formats[i] == 1) ? *(u8*)srcdata : (vertex_attribute_formats[i] == 1) ? *(u8*)srcdata :
(vertex_attribute_formats[i] == 2) ? *(s16*)srcdata : (vertex_attribute_formats[i] == 2) ? *(s16*)srcdata :
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment