From 311157c3c6849e8efccd88f7594bb34c570a6780 Mon Sep 17 00:00:00 2001 From: Andrew Knight Date: Thu, 25 Sep 2014 13:22:55 +0300 Subject: ANGLE: Upgrade to 2.1~abce76206141 Upgrade to address issues discovered since the last upgrade. Patch notes: 0000-General-fixes-for-ANGLE-2.1.patch added removal of the unused third-party tracing functions 0003-Fix-compilation-with-MinGW-gcc-64-bit.patch removed as it is no longer needed 0011-ANGLE-Fix-compilation-error-on-MinGW-caused-by-trace.patch removed as it is no longer needed 0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch now supports MinGW 64-bit [ChangeLog][Third-party libraries] ANGLE updated to 2.1~f8602ad91e4f Task-number: QTBUG-40649 Task-number: QTBUG-40658 Task-number: QTBUG-41031 Task-number: QTBUG-41081 Task-number: QTBUG-41308 Task-number: QTBUG-41563 Change-Id: I9f776c8d5cb94ddb12d608a8d5630bfc54437bea Reviewed-by: Friedemann Kleint Reviewed-by: Oliver Wolff Reviewed-by: Kai Koehne --- src/3rdparty/angle/include/GLSLANG/ShaderLang.h | 43 +++++---- src/3rdparty/angle/include/GLSLANG/ShaderVars.h | 123 ++++++++++++++++++++++++ src/3rdparty/angle/include/angle_gl.h | 3 - 3 files changed, 147 insertions(+), 22 deletions(-) create mode 100644 src/3rdparty/angle/include/GLSLANG/ShaderVars.h (limited to 'src/3rdparty/angle/include') diff --git a/src/3rdparty/angle/include/GLSLANG/ShaderLang.h b/src/3rdparty/angle/include/GLSLANG/ShaderLang.h index 4b69fb1fb0..b7989f5f7e 100644 --- a/src/3rdparty/angle/include/GLSLANG/ShaderLang.h +++ b/src/3rdparty/angle/include/GLSLANG/ShaderLang.h @@ -23,9 +23,10 @@ #define COMPILER_EXPORT #endif -#include "KHR/khrplatform.h" #include +#include "KHR/khrplatform.h" + // // This is the platform independent interface between an OGL driver // and the shading language compiler. @@ -37,13 +38,17 @@ namespace sh typedef unsigned int GLenum; } +// Must be included after GLenum proxy typedef +// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h +#include "ShaderVars.h" + #ifdef __cplusplus extern "C" { #endif // Version number for shader translation API. // It is incremented every time the API changes. -#define ANGLE_SH_VERSION 128 +#define ANGLE_SH_VERSION 130 typedef enum { SH_GLES2_SPEC = 0x8B40, @@ -100,14 +105,9 @@ typedef enum { SH_NAME_MAX_LENGTH = 0x6001, SH_HASHED_NAME_MAX_LENGTH = 0x6002, SH_HASHED_NAMES_COUNT = 0x6003, - SH_ACTIVE_UNIFORMS_ARRAY = 0x6004, - SH_SHADER_VERSION = 0x6005, - SH_ACTIVE_INTERFACE_BLOCKS_ARRAY = 0x6006, - SH_ACTIVE_OUTPUT_VARIABLES_ARRAY = 0x6007, - SH_ACTIVE_ATTRIBUTES_ARRAY = 0x6008, - SH_ACTIVE_VARYINGS_ARRAY = 0x6009, - SH_RESOURCES_STRING_LENGTH = 0x600A, - SH_OUTPUT_TYPE = 0x600B + SH_SHADER_VERSION = 0x6004, + SH_RESOURCES_STRING_LENGTH = 0x6005, + SH_OUTPUT_TYPE = 0x6006 } ShShaderInfo; // Compile options. @@ -189,6 +189,11 @@ typedef enum { // This flag scalarizes vec/ivec/bvec/mat constructor args. // It is intended as a workaround for Linux/Mac driver bugs. SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS = 0x40000, + + // This flag overwrites a struct name with a unique prefix. + // It is intended as a workaround for drivers that do not handle + // struct scopes correctly, including all Mac drivers and Linux AMD. + SH_REGENERATE_STRUCT_NAMES = 0x80000, } ShCompileOptions; // Defines alternate strategies for implementing array index clamping. @@ -453,17 +458,17 @@ COMPILER_EXPORT void ShGetNameHashingEntry(const ShHandle handle, char* name, char* hashedName); -// Returns a parameter from a compiled shader. +// Shader variable inspection. +// Returns a pointer to a list of variables of the designated type. +// (See ShaderVars.h for type definitions, included above) +// Returns NULL on failure. // 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); +COMPILER_EXPORT const std::vector *ShGetUniforms(const ShHandle handle); +COMPILER_EXPORT const std::vector *ShGetVaryings(const ShHandle handle); +COMPILER_EXPORT const std::vector *ShGetAttributes(const ShHandle handle); +COMPILER_EXPORT const std::vector *ShGetOutputVariables(const ShHandle handle); +COMPILER_EXPORT const std::vector *ShGetInterfaceBlocks(const ShHandle handle); typedef struct { diff --git a/src/3rdparty/angle/include/GLSLANG/ShaderVars.h b/src/3rdparty/angle/include/GLSLANG/ShaderVars.h new file mode 100644 index 0000000000..9c38647dda --- /dev/null +++ b/src/3rdparty/angle/include/GLSLANG/ShaderVars.h @@ -0,0 +1,123 @@ +// +// Copyright (c) 2013-2014 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. +// +// ShaderVars.h: +// Types to represent GL variables (varyings, uniforms, etc) +// + +#ifndef _COMPILER_INTERFACE_VARIABLES_ +#define _COMPILER_INTERFACE_VARIABLES_ + +#include +#include +#include + +// Assume ShaderLang.h is included before ShaderVars.h, for sh::GLenum +// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h + +namespace sh +{ + +// Varying interpolation qualifier, see section 4.3.9 of the ESSL 3.00.4 spec +enum InterpolationType +{ + INTERPOLATION_SMOOTH, + INTERPOLATION_CENTROID, + INTERPOLATION_FLAT +}; + +// Uniform block layout qualifier, see section 4.3.8.3 of the ESSL 3.00.4 spec +enum BlockLayoutType +{ + BLOCKLAYOUT_STANDARD, + BLOCKLAYOUT_PACKED, + BLOCKLAYOUT_SHARED +}; + +// Base class for all variables defined in shaders, including Varyings, Uniforms, etc +// Note: we must override the copy constructor and assignment operator so we can +// work around excessive GCC binary bloating: +// See https://code.google.com/p/angleproject/issues/detail?id=697 +struct COMPILER_EXPORT ShaderVariable +{ + ShaderVariable(); + ShaderVariable(GLenum typeIn, unsigned int arraySizeIn); + ~ShaderVariable(); + ShaderVariable(const ShaderVariable &other); + ShaderVariable &operator=(const ShaderVariable &other); + + bool isArray() const { return arraySize > 0; } + unsigned int elementCount() const { return std::max(1u, arraySize); } + bool isStruct() const { return !fields.empty(); } + + GLenum type; + GLenum precision; + std::string name; + std::string mappedName; + unsigned int arraySize; + bool staticUse; + std::vector fields; + std::string structName; +}; + +struct COMPILER_EXPORT Uniform : public ShaderVariable +{ + Uniform(); + ~Uniform(); + Uniform(const Uniform &other); + Uniform &operator=(const Uniform &other); +}; + +struct COMPILER_EXPORT Attribute : public ShaderVariable +{ + Attribute(); + ~Attribute(); + Attribute(const Attribute &other); + Attribute &operator=(const Attribute &other); + + int location; +}; + +struct COMPILER_EXPORT InterfaceBlockField : public ShaderVariable +{ + InterfaceBlockField(); + ~InterfaceBlockField(); + InterfaceBlockField(const InterfaceBlockField &other); + InterfaceBlockField &operator=(const InterfaceBlockField &other); + + bool isRowMajorLayout; +}; + +struct COMPILER_EXPORT Varying : public ShaderVariable +{ + Varying(); + ~Varying(); + Varying(const Varying &other); + Varying &operator=(const Varying &other); + + InterpolationType interpolation; + bool isInvariant; +}; + +struct COMPILER_EXPORT InterfaceBlock +{ + InterfaceBlock(); + ~InterfaceBlock(); + InterfaceBlock(const InterfaceBlock &other); + InterfaceBlock &operator=(const InterfaceBlock &other); + + std::string name; + std::string mappedName; + std::string instanceName; + unsigned int arraySize; + BlockLayoutType layout; + bool isRowMajorLayout; + bool staticUse; + std::vector fields; +}; + +} + +#endif // _COMPILER_INTERFACE_VARIABLES_ diff --git a/src/3rdparty/angle/include/angle_gl.h b/src/3rdparty/angle/include/angle_gl.h index 663aa259ea..d093f75ee2 100644 --- a/src/3rdparty/angle/include/angle_gl.h +++ b/src/3rdparty/angle/include/angle_gl.h @@ -10,9 +10,6 @@ #ifndef ANGLE_GL_H_ #define ANGLE_GL_H_ -#define GL_GLEXT_PROTOTYPES -#define GL_APICALL - #include "GLES2/gl2.h" #include "GLES2/gl2ext.h" #include "GLES3/gl3.h" -- cgit v1.2.3