tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

base.glsl (2551B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2  * License, v. 2.0. If a copy of the MPL was not distributed with this
      3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #if defined(GL_ES)
      6     #if GL_ES == 1
      7         // Sampler default precision is lowp on mobile GPUs.
      8         // This causes RGBA32F texture data to be clamped to 16 bit floats on some GPUs (e.g. Mali-T880).
      9         // Define highp precision macro to allow lossless FLOAT texture sampling.
     10         #define HIGHP_SAMPLER_FLOAT highp
     11 
     12         // Default int precision in GLES 3 is highp (32 bits) in vertex shaders
     13         // and mediump (16 bits) in fragment shaders. If an int is being used as
     14         // a texel address in a fragment shader it, and therefore requires > 16
     15         // bits, it must be qualified with this.
     16         #define HIGHP_FS_ADDRESS highp
     17 
     18         // texelFetchOffset is buggy on some Android GPUs (see issue #1694).
     19         // Fallback to texelFetch on mobile GPUs.
     20         #define TEXEL_FETCH(sampler, position, lod, offset) texelFetch(sampler, position + offset, lod)
     21     #else
     22         #define HIGHP_SAMPLER_FLOAT
     23         #define HIGHP_FS_ADDRESS
     24         #define TEXEL_FETCH(sampler, position, lod, offset) texelFetchOffset(sampler, position, lod, offset)
     25     #endif
     26 #else
     27     #define HIGHP_SAMPLER_FLOAT
     28     #define HIGHP_FS_ADDRESS
     29     #if defined(PLATFORM_MACOS) && !defined(SWGL)
     30         // texelFetchOffset introduces a variety of shader compilation bugs on macOS Intel so avoid it.
     31         #define TEXEL_FETCH(sampler, position, lod, offset) texelFetch(sampler, position + offset, lod)
     32     #else
     33         #define TEXEL_FETCH(sampler, position, lod, offset) texelFetchOffset(sampler, position, lod, offset)
     34     #endif
     35 #endif
     36 
     37 #ifdef SWGL
     38     #define SWGL_DRAW_SPAN
     39     #define SWGL_CLIP_MASK
     40     #define SWGL_ANTIALIAS
     41     #define SWGL_BLEND
     42     #define SWGL_CLIP_DIST
     43 #endif
     44 
     45 #ifdef WR_VERTEX_SHADER
     46     #ifdef SWGL
     47         // Annotate a vertex attribute as being flat per each drawn primitive instance.
     48         // SWGL can use this information to avoid redundantly loading the attribute in all SIMD lanes.
     49         #define PER_INSTANCE flat
     50     #else
     51         #define PER_INSTANCE
     52     #endif
     53 
     54     #if __VERSION__ != 100
     55         #define varying out
     56         #define attribute in
     57     #endif
     58 #endif
     59 
     60 #ifdef WR_FRAGMENT_SHADER
     61     precision highp float;
     62     #if __VERSION__ != 100
     63         #define varying in
     64     #endif
     65 #endif
     66 
     67 // Flat interpolation is not supported on ESSL 1
     68 #if __VERSION__ == 100
     69     #define flat
     70 #endif