mojoshader.c
changeset 1255 0135d797e287
parent 1254 422f68756c9f
child 1261 3405ca546164
equal deleted inserted replaced
1254:422f68756c9f 1255:0135d797e287
   234 #define AT_LEAST_ONE_PROFILE 1
   234 #define AT_LEAST_ONE_PROFILE 1
   235 #define PROFILE_EMITTER_D3D(op) emit_D3D_##op,
   235 #define PROFILE_EMITTER_D3D(op) emit_D3D_##op,
   236 PREDECLARE_PROFILE(D3D)
   236 PREDECLARE_PROFILE(D3D)
   237 #endif
   237 #endif
   238 
   238 
       
   239 #if !SUPPORT_PROFILE_HLSL
       
   240 #define PROFILE_EMITTER_HLSL(op)
       
   241 #else
       
   242 #undef AT_LEAST_ONE_PROFILE
       
   243 #define AT_LEAST_ONE_PROFILE 1
       
   244 #define PROFILE_EMITTER_HLSL(op) emit_HLSL_##op,
       
   245 PREDECLARE_PROFILE(HLSL)
       
   246 #endif
       
   247 
   239 #if !SUPPORT_PROFILE_GLSL
   248 #if !SUPPORT_PROFILE_GLSL
   240 #define PROFILE_EMITTER_GLSL(op)
   249 #define PROFILE_EMITTER_GLSL(op)
   241 #else
   250 #else
   242 #undef AT_LEAST_ONE_PROFILE
   251 #undef AT_LEAST_ONE_PROFILE
   243 #define AT_LEAST_ONE_PROFILE 1
   252 #define AT_LEAST_ONE_PROFILE 1
   298     DEFINE_PROFILE(D3D)
   307     DEFINE_PROFILE(D3D)
   299 #endif
   308 #endif
   300 #if SUPPORT_PROFILE_BYTECODE
   309 #if SUPPORT_PROFILE_BYTECODE
   301     DEFINE_PROFILE(BYTECODE)
   310     DEFINE_PROFILE(BYTECODE)
   302 #endif
   311 #endif
       
   312 #if SUPPORT_PROFILE_HLSL
       
   313     DEFINE_PROFILE(HLSL)
       
   314 #endif
   303 #if SUPPORT_PROFILE_GLSL
   315 #if SUPPORT_PROFILE_GLSL
   304     DEFINE_PROFILE(GLSL)
   316     DEFINE_PROFILE(GLSL)
   305 #endif
   317 #endif
   306 #if SUPPORT_PROFILE_ARB1
   318 #if SUPPORT_PROFILE_ARB1
   307     DEFINE_PROFILE(ARB1)
   319     DEFINE_PROFILE(ARB1)
   329 
   341 
   330 // The PROFILE_EMITTER_* items MUST be in the same order as profiles[]!
   342 // The PROFILE_EMITTER_* items MUST be in the same order as profiles[]!
   331 #define PROFILE_EMITTERS(op) { \
   343 #define PROFILE_EMITTERS(op) { \
   332      PROFILE_EMITTER_D3D(op) \
   344      PROFILE_EMITTER_D3D(op) \
   333      PROFILE_EMITTER_BYTECODE(op) \
   345      PROFILE_EMITTER_BYTECODE(op) \
       
   346      PROFILE_EMITTER_HLSL(op) \
   334      PROFILE_EMITTER_GLSL(op) \
   347      PROFILE_EMITTER_GLSL(op) \
   335      PROFILE_EMITTER_ARB1(op) \
   348      PROFILE_EMITTER_ARB1(op) \
   336      PROFILE_EMITTER_METAL(op) \
   349      PROFILE_EMITTER_METAL(op) \
   337      PROFILE_EMITTER_SPIRV(op) \
   350      PROFILE_EMITTER_SPIRV(op) \
   338 }
   351 }
  3864 int MOJOSHADER_maxShaderModel(const char *profile)
  3877 int MOJOSHADER_maxShaderModel(const char *profile)
  3865 {
  3878 {
  3866     #define PROFILE_SHADER_MODEL(p,v) if (strcmp(profile, p) == 0) return v;
  3879     #define PROFILE_SHADER_MODEL(p,v) if (strcmp(profile, p) == 0) return v;
  3867     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_D3D, 3);
  3880     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_D3D, 3);
  3868     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_BYTECODE, 3);
  3881     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_BYTECODE, 3);
       
  3882     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_HLSL, 3);
  3869     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_GLSL, 3);
  3883     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_GLSL, 3);
  3870     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_GLSL120, 3);
  3884     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_GLSL120, 3);
  3871     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_GLSLES, 3);
  3885     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_GLSLES, 3);
  3872     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_ARB1, 2);
  3886     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_ARB1, 2);
  3873     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_NV2, 2);
  3887     PROFILE_SHADER_MODEL(MOJOSHADER_PROFILE_NV2, 2);