shader: Reimplement GetCbufU64 as GetCbufU32x2
It may generate better code on some compilers and it's easier to handle.
This commit is contained in:
		| @@ -308,8 +308,8 @@ void EmitContext::DefineConstantBuffers(const Info& info, u32& binding) { | ||||
|     if (True(info.used_constant_buffer_types & IR::Type::F32)) { | ||||
|         DefineConstantBuffers(info, &UniformDefinitions::F32, binding, F32[1], 'f', sizeof(f32)); | ||||
|     } | ||||
|     if (True(info.used_constant_buffer_types & IR::Type::U64)) { | ||||
|         DefineConstantBuffers(info, &UniformDefinitions::U64, binding, U64, 'u', sizeof(u64)); | ||||
|     if (True(info.used_constant_buffer_types & IR::Type::U32x2)) { | ||||
|         DefineConstantBuffers(info, &UniformDefinitions::U32x2, binding, U32[2], 'u', sizeof(u64)); | ||||
|     } | ||||
|     for (const ConstantBufferDescriptor& desc : info.constant_buffer_descriptors) { | ||||
|         binding += desc.count; | ||||
|   | ||||
| @@ -42,7 +42,7 @@ struct UniformDefinitions { | ||||
|     Id S16{}; | ||||
|     Id U32{}; | ||||
|     Id F32{}; | ||||
|     Id U64{}; | ||||
|     Id U32x2{}; | ||||
| }; | ||||
|  | ||||
| class EmitContext final : public Sirit::Module { | ||||
|   | ||||
| @@ -47,7 +47,7 @@ Id EmitGetCbufU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& o | ||||
| Id EmitGetCbufS16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); | ||||
| Id EmitGetCbufU32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); | ||||
| Id EmitGetCbufF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); | ||||
| Id EmitGetCbufU64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); | ||||
| Id EmitGetCbufU32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); | ||||
| Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr); | ||||
| void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, Id value); | ||||
| void EmitGetAttributeIndexed(EmitContext& ctx); | ||||
|   | ||||
| @@ -153,8 +153,8 @@ Id EmitGetCbufF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& o | ||||
|     return GetCbuf(ctx, ctx.F32[1], &UniformDefinitions::F32, sizeof(f32), binding, offset); | ||||
| } | ||||
|  | ||||
| Id EmitGetCbufU64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { | ||||
|     return GetCbuf(ctx, ctx.U64, &UniformDefinitions::U64, sizeof(u64), binding, offset); | ||||
| Id EmitGetCbufU32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { | ||||
|     return GetCbuf(ctx, ctx.U32[2], &UniformDefinitions::U32x2, sizeof(u32[2]), binding, offset); | ||||
| } | ||||
|  | ||||
| Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user