Począwszy od zadania nr 4, koszty niektórych instrukcji uległy zmianie. Wynika to z lepszego dopasowania aproksymacji kosztów tych operacji do rzeczywistych GPU. Tabele poniżej zawierają jedynie instrukcje, których koszty uległy zmianom; reszta instrukcji zachowuje się identycznie, jak w rewizjach bazowej i 1.
SPIR-V opcodes | Constant latency | Variable latency (* operand) |
---|---|---|
OpFwidthCoarse | 36 | 0 |
OpDPdyCoarse | 20 | 0 |
OpDPdxCoarse | 20 | 0 |
OpFwidthFine | 36 | 0 |
OpDPdyFine | 20 | 0 |
OpDPdxFine | 20 | 0 |
OpFwidth | 36 | 0 |
OpDPdy | 20 | 0 |
OpDPdx | 20 | 0 |
OpConvertUToPtr | 0 | 0 |
OpConvertPtrToU | 0 | 0 |
OpSDiv | 144 | 0 |
OpUDiv | 112 | 0 |
OpIMul | 8 | 0 |
OpSMulExtended | 16 | 0 |
OpUMulExtended | 16 | 0 |
OpSwitch | 16 | 0 |
OpBranchConditional | 16 | 0 |
Począwszy od zadania nr 5, koszty niektórych instrukcji uległy zmianie. Wynika to z lepszego dopasowania aproksymacji kosztów tych operacji do rzeczywistych GPU. Tabele poniżej zawierają jedynie instrukcje, których koszty uległy zmianom; reszta instrukcji zachowuje się identycznie, jak w rewizjach bazowej, 1 i 2. Jednocześnie, począwszy od rewizji 3, kompilator shaderów jest w stanie łączyć sekwencje operacji `OpFMul` + `OpFAdd` oraz `OpFMul` + `OpFSub` w tańsze operacje dodawania i mnożenia w jednym kroku (`GLSLstd450Fma`), z dodatkiem instrukcji `OpFNegate` w celu odwrócenia znaku w przypadku łączenia instrukcji `OpFSub`.
SPIR-V opcodes | Constant latency | Variable latency (* operand) |
---|---|---|
OpFNegate | 1 | 0 |