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

Method addSamplingFunctions

glslang/MachineIndependent/Initialize.cpp:7860–8120  ·  view source on GitHub ↗

Helper function for add2ndGenerationSamplingImaging(), when adding context-independent built-in functions. Add all the texture lookup functions for the given type.

Source from the content-addressed store, hash-verified

7858// Add all the texture lookup functions for the given type.
7859//
7860void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
7861{
7862 //
7863 // texturing
7864 //
7865 for (int proj = 0; proj <= 1; ++proj) { // loop over "bool" projective or not
7866
7867 if (proj && (sampler.dim == EsdCube || sampler.isBuffer() || sampler.arrayed || sampler.isMultiSample()
7868 || !sampler.isCombined()))
7869 continue;
7870
7871 for (int lod = 0; lod <= 1; ++lod) {
7872
7873 if (lod && (sampler.isBuffer() || sampler.isRect() || sampler.isMultiSample() || !sampler.isCombined()))
7874 continue;
7875 if (lod && sampler.dim == Esd2D && sampler.arrayed && sampler.shadow)
7876 continue;
7877 if (lod && sampler.dim == EsdCube && sampler.shadow)
7878 continue;
7879
7880 for (int bias = 0; bias <= 1; ++bias) {
7881
7882 if (bias && (lod || sampler.isMultiSample() || !sampler.isCombined()))
7883 continue;
7884 if (bias && (sampler.dim == Esd2D || sampler.dim == EsdCube) && sampler.shadow && sampler.arrayed)
7885 continue;
7886 if (bias && (sampler.isRect() || sampler.isBuffer()))
7887 continue;
7888
7889 for (int offset = 0; offset <= 1; ++offset) { // loop over "bool" offset or not
7890
7891 if (proj + offset + bias + lod > 3)
7892 continue;
7893 if (offset && (sampler.dim == EsdCube || sampler.isBuffer() || sampler.isMultiSample()))
7894 continue;
7895
7896 for (int fetch = 0; fetch <= 1; ++fetch) { // loop over "bool" fetch or not
7897
7898 if (proj + offset + fetch + bias + lod > 3)
7899 continue;
7900 if (fetch && (lod || bias))
7901 continue;
7902 if (fetch && (sampler.shadow || sampler.dim == EsdCube))
7903 continue;
7904 if (fetch == 0 && (sampler.isMultiSample() || sampler.isBuffer()
7905 || !sampler.isCombined()))
7906 continue;
7907
7908 for (int grad = 0; grad <= 1; ++grad) { // loop over "bool" grad or not
7909
7910 if (grad && (lod || bias || sampler.isMultiSample() || !sampler.isCombined()))
7911 continue;
7912 if (grad && sampler.isBuffer())
7913 continue;
7914 if (proj + offset + fetch + grad + bias + lod > 3)
7915 continue;
7916
7917 for (int extraProj = 0; extraProj <= 1; ++extraProj) {

Callers

nothing calls this directly

Calls 6

isBufferMethod · 0.80
isMultiSampleMethod · 0.80
isCombinedMethod · 0.80
isRectMethod · 0.80
is1DMethod · 0.80
appendMethod · 0.80

Tested by

no test coverage detected