glsl: Fix GetAttribute return values
fixes font rendering issues as these were used to index into the ssbos
This commit is contained in:
		| @@ -83,7 +83,7 @@ void Invoke(EmitContext& ctx, IR::Inst* inst) { | |||||||
| } | } | ||||||
|  |  | ||||||
| void EmitInst(EmitContext& ctx, IR::Inst* inst) { | void EmitInst(EmitContext& ctx, IR::Inst* inst) { | ||||||
|     // ctx.Add("/* {} */", inst->GetOpcode()); |     // ctx.Add("/* $ {} $ */", inst->GetOpcode()); | ||||||
|     switch (inst->GetOpcode()) { |     switch (inst->GetOpcode()) { | ||||||
| #define OPCODE(name, result_type, ...)                                                             \ | #define OPCODE(name, result_type, ...)                                                             \ | ||||||
|     case IR::Opcode::name:                                                                         \ |     case IR::Opcode::name:                                                                         \ | ||||||
| @@ -183,11 +183,13 @@ std::string EmitGLSL(const Profile& profile, const RuntimeInfo& runtime_info, IR | |||||||
|     for (size_t index = 0; index < ctx.reg_alloc.num_used_registers; ++index) { |     for (size_t index = 0; index < ctx.reg_alloc.num_used_registers; ++index) { | ||||||
|         ctx.header += fmt::format("{} R{};", ctx.reg_alloc.reg_types[index], index); |         ctx.header += fmt::format("{} R{};", ctx.reg_alloc.reg_types[index], index); | ||||||
|     } |     } | ||||||
|     // TODO: track usage |     if (ctx.uses_cc_carry) { | ||||||
|         ctx.header += "uint carry;"; |         ctx.header += "uint carry;"; | ||||||
|     if (program.info.uses_subgroup_shuffles) { |  | ||||||
|         ctx.header += "bool shfl_in_bounds;\n"; |  | ||||||
|     } |     } | ||||||
|  |     if (program.info.uses_subgroup_shuffles) { | ||||||
|  |         ctx.header += "bool shfl_in_bounds;"; | ||||||
|  |     } | ||||||
|  |     ctx.header += "\n"; | ||||||
|     ctx.code.insert(0, ctx.header); |     ctx.code.insert(0, ctx.header); | ||||||
|     ctx.code += "}"; |     ctx.code += "}"; | ||||||
|     // fmt::print("\n{}\n", ctx.code); |     // fmt::print("\n{}\n", ctx.code); | ||||||
|   | |||||||
| @@ -149,13 +149,13 @@ void EmitGetAttribute(EmitContext& ctx, IR::Inst& inst, IR::Attribute attr, | |||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|     case IR::Attribute::InstanceId: |     case IR::Attribute::InstanceId: | ||||||
|         ctx.AddS32("{}=gl_InstanceID;", inst); |         ctx.AddF32("{}=intBitsToFloat(gl_InstanceID);", inst); | ||||||
|         break; |         break; | ||||||
|     case IR::Attribute::VertexId: |     case IR::Attribute::VertexId: | ||||||
|         ctx.AddS32("{}=gl_VertexID;", inst); |         ctx.AddF32("{}=intBitsToFloat(gl_VertexID);", inst); | ||||||
|         break; |         break; | ||||||
|     case IR::Attribute::FrontFace: |     case IR::Attribute::FrontFace: | ||||||
|         ctx.AddS32("{}=gl_FrontFacing?-1:0;", inst); |         ctx.AddF32("{}=intBitsToFloat(gl_FrontFacing?-1:0);", inst); | ||||||
|         break; |         break; | ||||||
|     default: |     default: | ||||||
|         fmt::print("Get attribute {}", attr); |         fmt::print("Get attribute {}", attr); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user