From 6b0db73ecd558ecfbfa199aeec7a1512e637fff6 Mon Sep 17 00:00:00 2001 From: Ivan Chikish Date: Fri, 28 Jul 2023 14:37:18 +0300 Subject: [PATCH] Fragment: fix sin/cos constants --- hw/amdgpu/shader/src/Fragment.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/hw/amdgpu/shader/src/Fragment.cpp b/hw/amdgpu/shader/src/Fragment.cpp index fea40aa52..75dbb778e 100644 --- a/hw/amdgpu/shader/src/Fragment.cpp +++ b/hw/amdgpu/shader/src/Fragment.cpp @@ -3832,8 +3832,7 @@ void convertVop1(Fragment &fragment, Vop1 inst) { auto src = spirv::cast( fragment.getScalarOperand(inst.src0, TypeId::Float32).value); auto floatT = fragment.context->getFloat32Type(); - auto constant = spirv::cast( - fragment.getScalarOperand(248, TypeId::Float32).value); // 2pi + auto constant = fragment.context->getFloat32(M_PI * 2); // 2pi src = fragment.builder.createFMul(floatT, src, constant); auto glslStd450 = fragment.context->getGlslStd450(); @@ -3847,8 +3846,7 @@ void convertVop1(Fragment &fragment, Vop1 inst) { auto src = spirv::cast( fragment.getScalarOperand(inst.src0, TypeId::Float32).value); auto floatT = fragment.context->getFloat32Type(); - auto constant = spirv::cast( - fragment.getScalarOperand(248, TypeId::Float32).value); // 2pi + auto constant = fragment.context->getFloat32(M_PI * 2); // 2pi src = fragment.builder.createFMul(floatT, src, constant); auto glslStd450 = fragment.context->getGlslStd450(); @@ -5627,8 +5625,8 @@ Value amdgpu::shader::Fragment::getRegister(RegisterId id) { return {context->getFloat32Type(), context->getFloat32(4.0f)}; case 247: return {context->getFloat32Type(), context->getFloat32(-4.0f)}; - case 248: - return {context->getFloat32Type(), context->getFloat32(M_PI * 2)}; + // case 248: + // return {context->getFloat32Type(), context->getFloat32(1 / M_PI * 2)}; case 255: { context->dependencies->map(registers->pc, registers->pc + sizeof(std::uint32_t));