mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-26 09:02:44 -06:00
Vertex Shader: Zero OutputVertex to avoid denormals
Unused OutputVertex attributes were being left un-initialized. The leftover garbage sometimes decoded as floating-point denormalized values, causing fallbacks to microcode and massive slowdowns in the rest of the rasterization pipeline even though the results were unused. By zeroing the structure we ensure these attributes only contain harmless zeros.
This commit is contained in:
parent
487a80f9f7
commit
d151d797b1
1 changed files with 4 additions and 0 deletions
|
@ -469,6 +469,10 @@ OutputVertex RunShader(const InputVertex& input, int num_attributes)
|
|||
|
||||
// Setup output register table
|
||||
OutputVertex ret;
|
||||
// Zero output so that attributes which aren't output won't have denormals in them, which will
|
||||
// slow us down later.
|
||||
memset(&ret, 0, sizeof(ret));
|
||||
|
||||
for (int i = 0; i < 7; ++i) {
|
||||
const auto& output_register_map = registers.vs_output_attributes[i];
|
||||
|
||||
|
|
Loading…
Reference in a new issue