Use correct channel for gather with offset. (#648)
This commit is contained in:
Родитель
f169e6f238
Коммит
58b7f88864
|
@ -2787,17 +2787,17 @@ void GenerateDxilGather(CallInst *CI, Function *F,
|
|||
|
||||
helper.UpdateOffsetInGatherArgs(gatherArgs, /*sampleIdx*/ 1);
|
||||
CallInst *callY = Builder.CreateCall(F, gatherArgs);
|
||||
elt = Builder.CreateExtractValue(callY, (uint64_t)0);
|
||||
elt = Builder.CreateExtractValue(callY, (uint64_t)1);
|
||||
retVal = Builder.CreateInsertElement(retVal, elt, 1);
|
||||
|
||||
helper.UpdateOffsetInGatherArgs(gatherArgs, /*sampleIdx*/ 2);
|
||||
CallInst *callZ = Builder.CreateCall(F, gatherArgs);
|
||||
elt = Builder.CreateExtractValue(callZ, (uint64_t)0);
|
||||
elt = Builder.CreateExtractValue(callZ, (uint64_t)2);
|
||||
retVal = Builder.CreateInsertElement(retVal, elt, 2);
|
||||
|
||||
helper.UpdateOffsetInGatherArgs(gatherArgs, /*sampleIdx*/ 3);
|
||||
CallInst *callW = Builder.CreateCall(F, gatherArgs);
|
||||
elt = Builder.CreateExtractValue(callW, (uint64_t)0);
|
||||
elt = Builder.CreateExtractValue(callW, (uint64_t)3);
|
||||
retVal = Builder.CreateInsertElement(retVal, elt, 3);
|
||||
// Replace ret val.
|
||||
CI->replaceAllUsesWith(retVal);
|
||||
|
|
|
@ -1,17 +1,29 @@
|
|||
// RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
|
||||
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 0
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 1
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 2
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 3
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 0
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 1
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 2
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 3
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 0
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 1
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 2
|
||||
// CHECK: dx.op.textureGather.f32(i32 73
|
||||
// CHECK: extractvalue {{.*}}, 3
|
||||
|
||||
|
||||
SamplerState samp1;
|
||||
|
|
Загрузка…
Ссылка в новой задаче