Requesting input on Bug 1346: checking in, turned off, enum-based operators for texturing and image operations. Please reply there with any input, thanks.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31289 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
92993c5e2f
commit
2fde45a1eb
@ -328,6 +328,52 @@ enum TOperator {
|
||||
//
|
||||
|
||||
EOpArrayLength, // "Array" distinguishes from length(v) built-in function, but it applies to vectors and matrices as well.
|
||||
|
||||
//
|
||||
// Image operations
|
||||
//
|
||||
|
||||
// N.B. The following is not being used yet, pending input, as switching
|
||||
// to it from the current text-based approach will break existing consumers.
|
||||
|
||||
EImageQuerySize,
|
||||
EImageQuerySamples,
|
||||
EImageLoad,
|
||||
EImageStore,
|
||||
EImageAtomicAdd,
|
||||
EImageAtomicMin,
|
||||
EImageAtomicMax,
|
||||
EImageAtomicAnd,
|
||||
EImageAtomicOr,
|
||||
EImageAtomicXor,
|
||||
EImageAtomicExchange,
|
||||
EImageAtomicCompSwap,
|
||||
|
||||
//
|
||||
// Texture operations
|
||||
//
|
||||
|
||||
ETextureQuerySize,
|
||||
ETextureQueryLod,
|
||||
ETextureQueryLevels,
|
||||
ETextureQuerySamples,
|
||||
ETexture,
|
||||
ETextureProj,
|
||||
ETextureLod,
|
||||
ETextureOffset,
|
||||
ETextureFetch,
|
||||
ETextureFetchOffset,
|
||||
ETextureProjOffset,
|
||||
ETextureLodOffset,
|
||||
ETextureProjLod,
|
||||
ETextureProjLodOffset,
|
||||
ETextureGrad,
|
||||
ETextureGradOffset,
|
||||
ETextureProjGrad,
|
||||
ETextureProjGradOffset,
|
||||
ETextureGather,
|
||||
ETextureGatherOffset,
|
||||
ETextureGatherOffsets,
|
||||
};
|
||||
|
||||
class TIntermTraverser;
|
||||
|
@ -57,6 +57,7 @@ namespace glslang {
|
||||
bool ARBCompatibility = true;
|
||||
|
||||
const bool ForwardCompatibility = false;
|
||||
const bool PureOperatorBuiltins = false; // could break backward compatibility; pending feedback
|
||||
|
||||
inline bool IncludeLegacy(int version, EProfile profile)
|
||||
{
|
||||
@ -2965,6 +2966,69 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
|
||||
symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer);
|
||||
symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage);
|
||||
|
||||
if (PureOperatorBuiltins) {
|
||||
symbolTable.relateToOperator("imageQuerySize", EImageQuerySize);
|
||||
symbolTable.relateToOperator("imageQuerySamples", EImageQuerySamples);
|
||||
symbolTable.relateToOperator("imageLoad", EImageLoad);
|
||||
symbolTable.relateToOperator("imageStore", EImageStore);
|
||||
symbolTable.relateToOperator("imageAtomicAdd", EImageAtomicAdd);
|
||||
symbolTable.relateToOperator("imageAtomicMin", EImageAtomicMin);
|
||||
symbolTable.relateToOperator("imageAtomicMax", EImageAtomicMax);
|
||||
symbolTable.relateToOperator("imageAtomicAnd", EImageAtomicAnd);
|
||||
symbolTable.relateToOperator("imageAtomicOr", EImageAtomicOr);
|
||||
symbolTable.relateToOperator("imageAtomicXor", EImageAtomicXor);
|
||||
symbolTable.relateToOperator("imageAtomicExchange", EImageAtomicExchange);
|
||||
symbolTable.relateToOperator("imageAtomicCompSwap", EImageAtomicCompSwap);
|
||||
|
||||
symbolTable.relateToOperator("textureSize", ETextureQuerySize);
|
||||
symbolTable.relateToOperator("textureQueryLod", ETextureQueryLod);
|
||||
symbolTable.relateToOperator("textureQueryLevels", ETextureQueryLevels);
|
||||
symbolTable.relateToOperator("textureSamples", ETextureQuerySamples);
|
||||
symbolTable.relateToOperator("texture", ETexture);
|
||||
symbolTable.relateToOperator("textureProj", ETextureProj);
|
||||
symbolTable.relateToOperator("textureLod", ETextureLod);
|
||||
symbolTable.relateToOperator("textureOffset", ETextureOffset);
|
||||
symbolTable.relateToOperator("textureFetch", ETextureFetch);
|
||||
symbolTable.relateToOperator("textureFetchOffset", ETextureFetchOffset);
|
||||
symbolTable.relateToOperator("textureProjOffset", ETextureProjOffset);
|
||||
symbolTable.relateToOperator("textureLodOffset", ETextureLodOffset);
|
||||
symbolTable.relateToOperator("textureProjLod", ETextureProjLod);
|
||||
symbolTable.relateToOperator("textureProjLodOffset", ETextureProjLodOffset);
|
||||
symbolTable.relateToOperator("textureGrad", ETextureGrad);
|
||||
symbolTable.relateToOperator("textureGradOffset", ETextureGradOffset);
|
||||
symbolTable.relateToOperator("textureProjGrad", ETextureProjGrad);
|
||||
symbolTable.relateToOperator("textureProjGradOffset", ETextureProjGradOffset);
|
||||
symbolTable.relateToOperator("textureGather", ETextureGather);
|
||||
symbolTable.relateToOperator("textureGatherOffset", ETextureGatherOffset);
|
||||
symbolTable.relateToOperator("textureGatherOffsets", ETextureGatherOffsets);
|
||||
|
||||
if (IncludeLegacy(version, profile)) {
|
||||
// TBD: add ftransform(), any others?
|
||||
symbolTable.relateToOperator("texture1D", ETexture);
|
||||
symbolTable.relateToOperator("texture1DProj", ETextureProj);
|
||||
symbolTable.relateToOperator("texture1DLod", ETextureLod);
|
||||
symbolTable.relateToOperator("texture1DProjLod", ETextureProjLod);
|
||||
symbolTable.relateToOperator("texture2D", ETexture);
|
||||
symbolTable.relateToOperator("texture2DProj", ETextureProj);
|
||||
symbolTable.relateToOperator("texture2DLod", ETextureLod);
|
||||
symbolTable.relateToOperator("texture2DProjLod", ETextureProjLod);
|
||||
symbolTable.relateToOperator("texture3D", ETexture);
|
||||
symbolTable.relateToOperator("texture3DProj", ETextureProj);
|
||||
symbolTable.relateToOperator("texture3DLod", ETextureLod);
|
||||
symbolTable.relateToOperator("texture3DProjLod", ETextureProjLod);
|
||||
symbolTable.relateToOperator("textureCube", ETexture);
|
||||
symbolTable.relateToOperator("textureCubeLod", ETextureLod);
|
||||
symbolTable.relateToOperator("shadow1D", ETexture);
|
||||
symbolTable.relateToOperator("shadow2D", ETexture);
|
||||
symbolTable.relateToOperator("shadow1DProj", ETextureProj);
|
||||
symbolTable.relateToOperator("shadow2DProj", ETextureProj);
|
||||
symbolTable.relateToOperator("shadow1DLod", ETextureLod);
|
||||
symbolTable.relateToOperator("shadow2DLod", ETextureLod);
|
||||
symbolTable.relateToOperator("shadow1DProjLod", ETextureProjLod);
|
||||
symbolTable.relateToOperator("shadow2DProjLod", ETextureProjLod);
|
||||
}
|
||||
}
|
||||
|
||||
switch(language) {
|
||||
case EShLangVertex:
|
||||
break;
|
||||
|
@ -395,6 +395,41 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
||||
case EOpMemoryBarrierShared: out.debug << "MemoryBarrierShared"; break;
|
||||
case EOpGroupMemoryBarrier: out.debug << "GroupMemoryBarrier"; break;
|
||||
|
||||
case EImageQuerySize: out.debug << "imageQuerySize"; break;
|
||||
case EImageQuerySamples: out.debug << "imageQuerySamples"; break;
|
||||
case EImageLoad: out.debug << "imageLoad"; break;
|
||||
case EImageStore: out.debug << "imageStore"; break;
|
||||
case EImageAtomicAdd: out.debug << "imageAtomicAdd"; break;
|
||||
case EImageAtomicMin: out.debug << "imageAtomicMin"; break;
|
||||
case EImageAtomicMax: out.debug << "imageAtomicMax"; break;
|
||||
case EImageAtomicAnd: out.debug << "imageAtomicAnd"; break;
|
||||
case EImageAtomicOr: out.debug << "imageAtomicOr"; break;
|
||||
case EImageAtomicXor: out.debug << "imageAtomicXor"; break;
|
||||
case EImageAtomicExchange: out.debug << "imageAtomicExchange"; break;
|
||||
case EImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break;
|
||||
|
||||
case ETextureQuerySize: out.debug << "textureSize"; break;
|
||||
case ETextureQueryLod: out.debug << "textureQueryLod"; break;
|
||||
case ETextureQueryLevels: out.debug << "textureQueryLevels"; break;
|
||||
case ETextureQuerySamples: out.debug << "textureSamples"; break;
|
||||
case ETexture: out.debug << "texture"; break;
|
||||
case ETextureProj: out.debug << "textureProj"; break;
|
||||
case ETextureLod: out.debug << "textureLod"; break;
|
||||
case ETextureOffset: out.debug << "textureOffset"; break;
|
||||
case ETextureFetch: out.debug << "textureFetch"; break;
|
||||
case ETextureFetchOffset: out.debug << "textureFetchOffset"; break;
|
||||
case ETextureProjOffset: out.debug << "textureProjOffset"; break;
|
||||
case ETextureLodOffset: out.debug << "textureLodOffset"; break;
|
||||
case ETextureProjLod: out.debug << "textureProjLod"; break;
|
||||
case ETextureProjLodOffset: out.debug << "textureProjLodOffset"; break;
|
||||
case ETextureGrad: out.debug << "textureGrad"; break;
|
||||
case ETextureGradOffset: out.debug << "textureGradOffset"; break;
|
||||
case ETextureProjGrad: out.debug << "textureProjGrad"; break;
|
||||
case ETextureProjGradOffset: out.debug << "textureProjGradOffset"; break;
|
||||
case ETextureGather: out.debug << "textureGather"; break;
|
||||
case ETextureGatherOffset: out.debug << "textureGatherOffset"; break;
|
||||
case ETextureGatherOffsets: out.debug << "textureGatherOffsets"; break;
|
||||
|
||||
default: out.debug.message(EPrefixError, "Bad aggregation op");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user