glsl: Fix image gather logic
This commit is contained in:
parent
35e78d558d
commit
d41aef03c7
|
@ -343,11 +343,13 @@ void EmitImageGather([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Ins
|
||||||
if (offset.IsEmpty()) {
|
if (offset.IsEmpty()) {
|
||||||
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherARB({},{},{},int({})));",
|
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherARB({},{},{},int({})));",
|
||||||
*sparse_inst, texture, coords, texel, info.gather_component);
|
*sparse_inst, texture, coords, texel, info.gather_component);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (offset2.IsEmpty()) {
|
if (offset2.IsEmpty()) {
|
||||||
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherOffsetARB({},{},{},{},int({})));",
|
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherOffsetARB({},{},{},{},int({})));",
|
||||||
*sparse_inst, texture, CastToIntVec(coords, info), GetOffsetVec(ctx, offset),
|
*sparse_inst, texture, CastToIntVec(coords, info), GetOffsetVec(ctx, offset),
|
||||||
texel, info.gather_component);
|
texel, info.gather_component);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
// PTP
|
// PTP
|
||||||
const auto offsets{PtpOffsets(offset, offset2)};
|
const auto offsets{PtpOffsets(offset, offset2)};
|
||||||
|
@ -385,11 +387,13 @@ void EmitImageGatherDref([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR:
|
||||||
if (offset.IsEmpty()) {
|
if (offset.IsEmpty()) {
|
||||||
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherARB({},{},{},{}));", *sparse_inst,
|
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherARB({},{},{},{}));", *sparse_inst,
|
||||||
texture, coords, dref, texel);
|
texture, coords, dref, texel);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (offset2.IsEmpty()) {
|
if (offset2.IsEmpty()) {
|
||||||
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherOffsetARB({},{},{},,{},{}));",
|
ctx.AddU1("{}=sparseTexelsResidentARB(sparseTextureGatherOffsetARB({},{},{},,{},{}));",
|
||||||
*sparse_inst, texture, CastToIntVec(coords, info), dref,
|
*sparse_inst, texture, CastToIntVec(coords, info), dref,
|
||||||
GetOffsetVec(ctx, offset), texel);
|
GetOffsetVec(ctx, offset), texel);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
// PTP
|
// PTP
|
||||||
const auto offsets{PtpOffsets(offset, offset2)};
|
const auto offsets{PtpOffsets(offset, offset2)};
|
||||||
|
|
Reference in New Issue