1 // 2 // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 #ifndef LIBANGLE_FEATURES_H_ 8 #define LIBANGLE_FEATURES_H_ 9 10 #include "common/platform.h" 11 12 #define ANGLE_DISABLED 0 13 #define ANGLE_ENABLED 1 14 15 // Feature defaults 16 17 // Direct3D9EX 18 // The "Debug This Pixel..." feature in PIX often fails when using the 19 // D3D9Ex interfaces. In order to get debug pixel to work on a Vista/Win 7 20 // machine, define "ANGLE_D3D9EX=0" in your project file. 21 #if !defined(ANGLE_D3D9EX) 22 #define ANGLE_D3D9EX ANGLE_ENABLED 23 #endif 24 25 // Vsync 26 // ENABLED allows Vsync to be configured at runtime 27 // DISABLED disallows Vsync 28 #if !defined(ANGLE_VSYNC) 29 #define ANGLE_VSYNC ANGLE_ENABLED 30 #endif 31 32 // Program binary loading 33 #if !defined(ANGLE_PROGRAM_BINARY_LOAD) 34 #define ANGLE_PROGRAM_BINARY_LOAD ANGLE_ENABLED 35 #endif 36 37 // Append HLSL assembly to shader debug info. Defaults to enabled in Debug and off in Release. 38 #if !defined(ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO) 39 #if !defined(NDEBUG) 40 #define ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO ANGLE_ENABLED 41 #else 42 #define ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO ANGLE_DISABLED 43 #endif // !defined(NDEBUG) 44 #endif // !defined(ANGLE_APPEND_ASSEMBLY_TO_SHADER_DEBUG_INFO) 45 46 // Program link validation of precisions for uniforms. This feature was 47 // requested by developers to allow non-conformant shaders to be used which 48 // contain mismatched precisions. 49 // ENABLED validate that precision for uniforms match between vertex and fragment shaders 50 // DISABLED allow precision for uniforms to differ between vertex and fragment shaders 51 #if !defined(ANGLE_PROGRAM_LINK_VALIDATE_UNIFORM_PRECISION) 52 #define ANGLE_PROGRAM_LINK_VALIDATE_UNIFORM_PRECISION ANGLE_ENABLED 53 #endif 54 55 // Controls if our threading code uses std::async or falls back to single-threaded operations. 56 // TODO(jmadill): Enable on Linux once STL chrono headers are updated. 57 #if !defined(ANGLE_STD_ASYNC_WORKERS) 58 #if defined(ANGLE_PLATFORM_WINDOWS) 59 #define ANGLE_STD_ASYNC_WORKERS ANGLE_ENABLED 60 #else 61 #define ANGLE_STD_ASYNC_WORKERS ANGLE_DISABLED 62 #endif // defined(ANGLE_PLATFORM_WINDOWS) 63 #endif // !defined(ANGLE_STD_ASYNC_WORKERS) 64 65 #endif // LIBANGLE_FEATURES_H_ 66