Helper function for add2ndGenerationSamplingImaging(), when adding context-independent built-in functions. Add all the texture lookup functions for the given type.
| 7858 | // Add all the texture lookup functions for the given type. |
| 7859 | // |
| 7860 | void 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) { |
nothing calls this directly
no test coverage detected