MCPcopy Create free account
hub / github.com/KhronosGroup/glslang / createTextureQueryCall

Method createTextureQueryCall

SPIRV/SpvBuilder.cpp:3992–4053  ·  view source on GitHub ↗

Comments in header

Source from the content-addressed store, hash-verified

3990
3991// Comments in header
3992Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameters, bool isUnsignedResult)
3993{
3994 // Figure out the result type
3995 Id resultType = 0;
3996 switch (opCode) {
3997 case Op::OpImageQuerySize:
3998 case Op::OpImageQuerySizeLod:
3999 {
4000 int numComponents = 0;
4001 switch (getTypeDimensionality(getImageType(parameters.sampler))) {
4002 case Dim::Dim1D:
4003 case Dim::Buffer:
4004 numComponents = 1;
4005 break;
4006 case Dim::Dim2D:
4007 case Dim::Cube:
4008 case Dim::Rect:
4009 case Dim::SubpassData:
4010 numComponents = 2;
4011 break;
4012 case Dim::Dim3D:
4013 numComponents = 3;
4014 break;
4015
4016 default:
4017 assert(0);
4018 break;
4019 }
4020 if (isArrayedImageType(getImageType(parameters.sampler)))
4021 ++numComponents;
4022
4023 Id intType = isUnsignedResult ? makeUintType(32) : makeIntType(32);
4024 if (numComponents == 1)
4025 resultType = intType;
4026 else
4027 resultType = makeVectorType(intType, numComponents);
4028
4029 break;
4030 }
4031 case Op::OpImageQueryLod:
4032 resultType = makeVectorType(getScalarTypeId(getTypeId(parameters.coords)), 2);
4033 break;
4034 case Op::OpImageQueryLevels:
4035 case Op::OpImageQuerySamples:
4036 resultType = isUnsignedResult ? makeUintType(32) : makeIntType(32);
4037 break;
4038 default:
4039 assert(0);
4040 break;
4041 }
4042
4043 Instruction* query = new Instruction(getUniqueId(), resultType, opCode);
4044 query->addIdOperand(parameters.sampler);
4045 if (parameters.coords)
4046 query->addIdOperand(parameters.coords);
4047 if (parameters.lod)
4048 query->addIdOperand(parameters.lod);
4049 addInstruction(std::unique_ptr<Instruction>(query));

Callers 1

Calls 2

addIdOperandMethod · 0.80
getResultIdMethod · 0.80

Tested by

no test coverage detected