From 710ad8ce1bd5d01ce048851d210ac3831ca17dde Mon Sep 17 00:00:00 2001 From: Andrew Knight Date: Wed, 3 Apr 2013 19:57:09 +0300 Subject: Upgrade ANGLE to DX11 Proto Upgrades ANGLE to dx11proto (dx11-MRT-support tag), which splits out support for DirectX9 & DirectX11. The DX9 codepath is used by default; CONFIG+=angle_d3d11 must be passed to the ANGLE project to build for DX11. Existing patches to ANGLE have been updated (or removed if no longer needed), and a patch has been added to make DX9/DX11 codepaths mutually exclusive. Change-Id: Ibe13befadb94f04883eca449d0ee1f0da955ff92 Reviewed-by: Oswald Buddenhagen Reviewed-by: Gunnar Sletta Reviewed-by: Friedemann Kleint Reviewed-by: Axel Waggershauser --- src/3rdparty/angle/include/GLSLANG/ShaderLang.h | 103 +++++++++++++++++++++--- 1 file changed, 91 insertions(+), 12 deletions(-) (limited to 'src/3rdparty/angle/include/GLSLANG') diff --git a/src/3rdparty/angle/include/GLSLANG/ShaderLang.h b/src/3rdparty/angle/include/GLSLANG/ShaderLang.h index d925029a2c..da0f87aed9 100644 --- a/src/3rdparty/angle/include/GLSLANG/ShaderLang.h +++ b/src/3rdparty/angle/include/GLSLANG/ShaderLang.h @@ -1,5 +1,5 @@ // -// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // @@ -23,6 +23,9 @@ #define COMPILER_EXPORT #endif +#include "KHR/khrplatform.h" +#include + // // This is the platform independent interface between an OGL driver // and the shading language compiler. @@ -34,7 +37,7 @@ extern "C" { // Version number for shader translation API. // It is incremented everytime the API changes. -#define SH_VERSION 107 +#define ANGLE_SH_VERSION 110 // // The names of the following enums have been derived by replacing GL prefix @@ -75,9 +78,11 @@ typedef enum { } ShShaderSpec; typedef enum { - SH_ESSL_OUTPUT = 0x8B45, - SH_GLSL_OUTPUT = 0x8B46, - SH_HLSL_OUTPUT = 0x8B47 + SH_ESSL_OUTPUT = 0x8B45, + SH_GLSL_OUTPUT = 0x8B46, + SH_HLSL_OUTPUT = 0x8B47, + SH_HLSL9_OUTPUT = 0x8B47, + SH_HLSL11_OUTPUT = 0x8B48 } ShShaderOutput; typedef enum { @@ -110,7 +115,11 @@ typedef enum { SH_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87, SH_ACTIVE_ATTRIBUTES = 0x8B89, SH_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A, - SH_MAPPED_NAME_MAX_LENGTH = 0x8B8B + SH_MAPPED_NAME_MAX_LENGTH = 0x6000, + SH_NAME_MAX_LENGTH = 0x6001, + SH_HASHED_NAME_MAX_LENGTH = 0x6002, + SH_HASHED_NAMES_COUNT = 0x6003, + SH_ACTIVE_UNIFORMS_ARRAY = 0x6004 } ShShaderInfo; // Compile options. @@ -146,8 +155,25 @@ typedef enum { // Enforce the GLSL 1.017 Appendix A section 7 packing restrictions. SH_ENFORCE_PACKING_RESTRICTIONS = 0x0800, + + // This flag ensures all indirect (expression-based) array indexing + // is clamped to the bounds of the array. This ensures, for example, + // that you cannot read off the end of a uniform, whether an array + // vec234, or mat234 type. The ShArrayIndexClampingStrategy enum, + // specified in the ShBuiltInResources when constructing the + // compiler, selects the strategy for the clamping implementation. + SH_CLAMP_INDIRECT_ARRAY_BOUNDS = 0x1000 } ShCompileOptions; +// Defines alternate strategies for implementing array index clamping. +typedef enum { + // Use the clamp intrinsic for array index clamping. + SH_CLAMP_WITH_CLAMP_INTRINSIC = 1, + + // Use a user-defined function for array index clamping. + SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION +} ShArrayIndexClampingStrategy; + // // Driver must call this first, once, before doing any other // compiler operations. @@ -160,6 +186,10 @@ COMPILER_EXPORT int ShInitialize(); // COMPILER_EXPORT int ShFinalize(); +// The 64 bits hash function. The first parameter is the input string; the +// second parameter is the string length. +typedef khronos_uint64_t (*ShHashFunction64)(const char*, size_t); + // // Implementation dependent built-in resources (constants and extensions). // The names for these resources has been obtained by stripping gl_/GL_. @@ -181,6 +211,20 @@ typedef struct int OES_standard_derivatives; int OES_EGL_image_external; int ARB_texture_rectangle; + int EXT_draw_buffers; + + // Set to 1 if highp precision is supported in the fragment language. + // Default is 0. + int FragmentPrecisionHigh; + + // Name Hashing. + // Set a 64 bit hash function to enable user-defined name hashing. + // Default is NULL. + ShHashFunction64 HashFunction; + + // Selects a strategy to use when implementing array index clamping. + // Default is SH_CLAMP_WITH_CLAMP_INTRINSIC. + ShArrayIndexClampingStrategy ArrayIndexClampingStrategy; } ShBuiltInResources; // @@ -207,7 +251,7 @@ typedef void* ShHandle; // spec: Specifies the language spec the compiler must conform to - // SH_GLES2_SPEC or SH_WEBGL_SPEC. // output: Specifies the output code type - SH_ESSL_OUTPUT, SH_GLSL_OUTPUT, -// or SH_HLSL_OUTPUT. +// SH_HLSL9_OUTPUT or SH_HLSL11_OUTPUT. // resources: Specifies the built-in resources. COMPILER_EXPORT ShHandle ShConstructCompiler( ShShaderType type, @@ -244,7 +288,7 @@ COMPILER_EXPORT void ShDestruct(ShHandle handle); COMPILER_EXPORT int ShCompile( const ShHandle handle, const char* const shaderStrings[], - const int numStrings, + size_t numStrings, int compileOptions ); @@ -267,11 +311,16 @@ COMPILER_EXPORT int ShCompile( // termination character. // SH_MAPPED_NAME_MAX_LENGTH: the length of the mapped variable name including // the null termination character. -// +// SH_NAME_MAX_LENGTH: the max length of a user-defined name including the +// null termination character. +// SH_HASHED_NAME_MAX_LENGTH: the max length of a hashed name including the +// null termination character. +// SH_HASHED_NAMES_COUNT: the number of hashed names from the latest compile. +// // params: Requested parameter COMPILER_EXPORT void ShGetInfo(const ShHandle handle, ShShaderInfo pname, - int* params); + size_t* params); // Returns nul-terminated information log for a compiled shader. // Parameters: @@ -314,7 +363,7 @@ COMPILER_EXPORT void ShGetObjectCode(const ShHandle handle, char* objCode); // mappedName are the same. COMPILER_EXPORT void ShGetActiveAttrib(const ShHandle handle, int index, - int* length, + size_t* length, int* size, ShDataType* type, char* name, @@ -341,12 +390,42 @@ COMPILER_EXPORT void ShGetActiveAttrib(const ShHandle handle, // mappedName are the same. COMPILER_EXPORT void ShGetActiveUniform(const ShHandle handle, int index, - int* length, + size_t* length, int* size, ShDataType* type, char* name, char* mappedName); +// Returns information about a name hashing entry from the latest compile. +// Parameters: +// handle: Specifies the compiler +// index: Specifies the index of the name hashing entry to be queried. +// name: Returns a null terminated string containing the user defined name. +// It is assumed that name has enough memory to accomodate the name. +// The size of the buffer required to store the user defined name can +// be obtained by calling ShGetInfo with SH_NAME_MAX_LENGTH. +// hashedName: Returns a null terminated string containing the hashed name of +// the uniform variable, It is assumed that hashedName has enough +// memory to accomodate the name. The size of the buffer required +// to store the name can be obtained by calling ShGetInfo with +// SH_HASHED_NAME_MAX_LENGTH. +COMPILER_EXPORT void ShGetNameHashingEntry(const ShHandle handle, + int index, + char* name, + char* hashedName); + +// Returns a parameter from a compiled shader. +// Parameters: +// handle: Specifies the compiler +// pname: Specifies the parameter to query. +// The following parameters are defined: +// SH_ACTIVE_UNIFORMS_ARRAY: an STL vector of active uniforms. Valid only for +// HLSL output. +// params: Requested parameter +COMPILER_EXPORT void ShGetInfoPointer(const ShHandle handle, + ShShaderInfo pname, + void** params); + #ifdef __cplusplus } #endif -- cgit v1.2.3