Skip to content

Commit

Permalink
Merge pull request wheremyfoodat#505 from wheremyfoodat/moar-hle-dsp
Browse files Browse the repository at this point in the history
GPU: Handle invalid floating point uniform writes
  • Loading branch information
wheremyfoodat authored May 1, 2024
2 parents 64dc0a0 + 8193242 commit 70f443b
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions include/PICA/shader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,14 +256,16 @@ class PICAShader {

void uploadFloatUniform(u32 word) {
floatUniformBuffer[floatUniformWordCount++] = word;
if (floatUniformIndex >= 96) {
Helpers::panic("[PICA] Tried to write float uniform %d", floatUniformIndex);
}

if ((f32UniformTransfer && floatUniformWordCount >= 4) || (!f32UniformTransfer && floatUniformWordCount >= 3)) {
vec4f& uniform = floatUniforms[floatUniformIndex++];
floatUniformWordCount = 0;

// Check if the program tries to upload to a non-existent uniform, and empty the queue without writing in that case
if (floatUniformIndex >= 96) [[unlikely]] {
return;
}
vec4f& uniform = floatUniforms[floatUniformIndex++];

if (f32UniformTransfer) {
uniform[0] = f24::fromFloat32(*(float*)&floatUniformBuffer[3]);
uniform[1] = f24::fromFloat32(*(float*)&floatUniformBuffer[2]);
Expand Down

0 comments on commit 70f443b

Please sign in to comment.