Home | History | Annotate | Download | only in intel
      1 //
      2 // Copyright 2016 Google Inc.
      3 //
      4 // Use of this source code is governed by a BSD-style
      5 // license that can be found in the LICENSE file.
      6 //
      7 
      8 #ifndef HS_GLSL_MACROS_VENDOR_ONCE
      9 #define HS_GLSL_MACROS_VENDOR_ONCE
     10 
     11 //
     12 //
     13 //
     14 
     15 #include "../hs_glsl_macros.h"
     16 
     17 //
     18 // Waiting for Intel's to provide an equivalent to their OpenCL
     19 // "reqd_subgroup_size" attribute.
     20 //
     21 
     22 #define HS_GLSL_SUBGROUP_SIZE()
     23 
     24 //
     25 // OVERRIDE SUBGROUP IDENTIFIERS BECAUSE INTEL ISN'T GUARANTEEING A
     26 // FIXED SUBGROUP SIZE AT THIS POINT IN TIME
     27 //
     28 
     29 #if 1
     30 
     31 #define HS_SUBGROUP_PREAMBLE()                                          \
     32   const uint hs_subgroup_id      = gl_LocalInvocationID.x / HS_SLAB_THREADS; \
     33   const uint hs_subgroup_lane_id = gl_LocalInvocationID.x & (HS_SLAB_THREADS-1);
     34 
     35 #define HS_SUBGROUP_ID()        hs_subgroup_id
     36 #define HS_SUBGROUP_LANE_ID()   hs_subgroup_lane_id
     37 
     38 #else
     39 
     40 #define HS_SUBGROUP_PREAMBLE()
     41 
     42 #define HS_SUBGROUP_ID()        gl_SubgroupID
     43 #define HS_SUBGROUP_LANE_ID()   gl_SubgroupInvocationID
     44 
     45 #endif
     46 
     47 //
     48 // CHOOSE A COMPARE-EXCHANGE IMPLEMENTATION
     49 //
     50 
     51 #if   (HS_KEY_WORDS == 1)
     52 #define HS_CMP_XCHG(a,b)  HS_CMP_XCHG_V0(a,b)
     53 #elif (HS_KEY_WORDS == 2)
     54 #define HS_CMP_XCHG(a,b)  HS_CMP_XCHG_V1(a,b)
     55 #endif
     56 
     57 //
     58 // CHOOSE A CONDITIONAL MIN/MAX IMPLEMENTATION
     59 //
     60 
     61 #if   (HS_KEY_WORDS == 1)
     62 #define HS_COND_MIN_MAX(lt,a,b) HS_COND_MIN_MAX_V0(lt,a,b)
     63 #elif (HS_KEY_WORDS == 2)
     64 #define HS_COND_MIN_MAX(lt,a,b) HS_COND_MIN_MAX_V0(lt,a,b)
     65 #endif
     66 
     67 //
     68 //
     69 //
     70 
     71 #endif
     72 
     73 //
     74 //
     75 //
     76