diff options
Diffstat (limited to 'src/angle/src')
-rw-r--r-- | src/angle/src/common/common.pri | 6 | ||||
-rw-r--r-- | src/angle/src/compiler/translator.pro | 34 | ||||
-rw-r--r-- | src/angle/src/config.pri | 18 | ||||
-rw-r--r-- | src/angle/src/d3dcompiler/d3dcompiler.pro | 17 | ||||
-rw-r--r-- | src/angle/src/d3dcompiler/d3dcompiler_qt.def | 3 | ||||
-rw-r--r-- | src/angle/src/d3dcompiler/d3dcompiler_qtd.def | 3 | ||||
-rw-r--r-- | src/angle/src/d3dcompiler/main.cpp | 328 | ||||
-rw-r--r-- | src/angle/src/libGLESv2/libGLESv2.pro | 376 | ||||
-rw-r--r-- | src/angle/src/src.pro | 1 |
9 files changed, 264 insertions, 522 deletions
diff --git a/src/angle/src/common/common.pri b/src/angle/src/common/common.pri index 0943b3f299..dfe15546f5 100644 --- a/src/angle/src/common/common.pri +++ b/src/angle/src/common/common.pri @@ -47,11 +47,15 @@ HEADERS += \ $$ANGLE_DIR/src/common/angleutils.h \ $$ANGLE_DIR/src/common/debug.h \ $$ANGLE_DIR/src/common/event_tracer.h \ + $$ANGLE_DIR/src/common/mathutil.h \ + $$ANGLE_DIR/src/common/platform.h \ $$ANGLE_DIR/src/common/RefCountObject.h \ + $$ANGLE_DIR/src/common/tls.h \ $$ANGLE_DIR/src/common/version.h SOURCES += \ $$ANGLE_DIR/src/common/debug.cpp \ $$ANGLE_DIR/src/common/event_tracer.cpp \ - $$ANGLE_DIR/src/common/RefCountObject.cpp + $$ANGLE_DIR/src/common/RefCountObject.cpp \ + $$ANGLE_DIR/src/common/tls.cpp diff --git a/src/angle/src/compiler/translator.pro b/src/angle/src/compiler/translator.pro index 18c3978e0f..104eac5de3 100644 --- a/src/angle/src/compiler/translator.pro +++ b/src/angle/src/compiler/translator.pro @@ -16,9 +16,17 @@ BISON_SOURCES = $$ANGLE_DIR/src/compiler/translator/glslang.y HEADERS += \ $$ANGLE_DIR/include/GLSLANG/ResourceLimits.h \ $$ANGLE_DIR/include/GLSLANG/ShaderLang.h \ + $$ANGLE_DIR/src/common/angleutils.h \ + $$ANGLE_DIR/src/common/blocklayout.h \ + $$ANGLE_DIR/src/common/debug.h \ + $$ANGLE_DIR/src/common/platform.h \ + $$ANGLE_DIR/src/common/shadervars.h \ + $$ANGLE_DIR/src/common/tls.h \ + $$ANGLE_DIR/src/common/utilities.h \ $$ANGLE_DIR/src/compiler/translator/BaseTypes.h \ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulator.h \ $$ANGLE_DIR/src/compiler/translator/Common.h \ + $$ANGLE_DIR/src/compiler/translator/Compiler.h \ $$ANGLE_DIR/src/compiler/translator/compilerdebug.h \ $$ANGLE_DIR/src/compiler/translator/ConstantUnion.h \ $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraph.h \ @@ -29,6 +37,7 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/Diagnostics.h \ $$ANGLE_DIR/src/compiler/translator/DirectiveHandler.h \ $$ANGLE_DIR/src/compiler/translator/ExtensionBehavior.h \ + $$ANGLE_DIR/src/compiler/translator/FlagStd140Structs.h \ $$ANGLE_DIR/src/compiler/translator/ForLoopUnroll.h \ $$ANGLE_DIR/src/compiler/translator/HashNames.h \ $$ANGLE_DIR/src/compiler/translator/InfoSink.h \ @@ -38,7 +47,7 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/InitializeVariables.h \ $$ANGLE_DIR/src/compiler/translator/intermediate.h \ $$ANGLE_DIR/src/compiler/translator/localintermediate.h \ - $$ANGLE_DIR/src/compiler/translator/MapLongVariableNames.h \ + $$ANGLE_DIR/src/compiler/translator/LoopInfo.h \ $$ANGLE_DIR/src/compiler/translator/MMap.h \ $$ANGLE_DIR/src/compiler/translator/NodeSearch.h \ $$ANGLE_DIR/src/compiler/translator/osinclude.h \ @@ -53,8 +62,10 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/RemoveTree.h \ $$ANGLE_DIR/src/compiler/translator/RenameFunction.h \ $$ANGLE_DIR/src/compiler/translator/RewriteElseBlocks.h \ + $$ANGLE_DIR/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.h \ $$ANGLE_DIR/src/compiler/translator/SearchSymbol.h \ $$ANGLE_DIR/src/compiler/translator/ShHandle.h \ + $$ANGLE_DIR/src/compiler/translator/StructureHLSL.h \ $$ANGLE_DIR/src/compiler/translator/SymbolTable.h \ $$ANGLE_DIR/src/compiler/translator/timing/RestrictFragmentShaderTiming.h \ $$ANGLE_DIR/src/compiler/translator/timing/RestrictVertexShaderTiming.h \ @@ -64,9 +75,11 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/translator/Types.h \ $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuit.h \ $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuitAST.h \ - $$ANGLE_DIR/src/compiler/translator/Uniform.h \ + $$ANGLE_DIR/src/compiler/translator/UniformHLSL.h \ + $$ANGLE_DIR/src/compiler/translator/UtilsHLSL.h \ $$ANGLE_DIR/src/compiler/translator/util.h \ $$ANGLE_DIR/src/compiler/translator/ValidateLimitations.h \ + $$ANGLE_DIR/src/compiler/translator/ValidateOutputs.h \ $$ANGLE_DIR/src/compiler/translator/VariableInfo.h \ $$ANGLE_DIR/src/compiler/translator/VariablePacker.h \ $$ANGLE_DIR/src/compiler/translator/VersionGLSL.h \ @@ -74,6 +87,7 @@ HEADERS += \ SOURCES += \ + $$ANGLE_DIR/src/common/tls.cpp \ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulator.cpp \ $$ANGLE_DIR/src/compiler/translator/CodeGen.cpp \ $$ANGLE_DIR/src/compiler/translator/Compiler.cpp \ @@ -86,6 +100,7 @@ SOURCES += \ $$ANGLE_DIR/src/compiler/translator/DetectDiscontinuity.cpp \ $$ANGLE_DIR/src/compiler/translator/Diagnostics.cpp \ $$ANGLE_DIR/src/compiler/translator/DirectiveHandler.cpp \ + $$ANGLE_DIR/src/compiler/translator/FlagStd140Structs.cpp \ $$ANGLE_DIR/src/compiler/translator/ForLoopUnroll.cpp \ $$ANGLE_DIR/src/compiler/translator/InfoSink.cpp \ $$ANGLE_DIR/src/compiler/translator/Initialize.cpp \ @@ -95,7 +110,7 @@ SOURCES += \ $$ANGLE_DIR/src/compiler/translator/Intermediate.cpp \ $$ANGLE_DIR/src/compiler/translator/intermOut.cpp \ $$ANGLE_DIR/src/compiler/translator/IntermTraverse.cpp \ - $$ANGLE_DIR/src/compiler/translator/MapLongVariableNames.cpp \ + $$ANGLE_DIR/src/compiler/translator/LoopInfo.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputESSL.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputGLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/OutputGLSLBase.cpp \ @@ -106,31 +121,30 @@ SOURCES += \ $$ANGLE_DIR/src/compiler/translator/QualifierAlive.cpp \ $$ANGLE_DIR/src/compiler/translator/RemoveTree.cpp \ $$ANGLE_DIR/src/compiler/translator/RewriteElseBlocks.cpp \ + $$ANGLE_DIR/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp \ $$ANGLE_DIR/src/compiler/translator/SearchSymbol.cpp \ $$ANGLE_DIR/src/compiler/translator/ShaderLang.cpp \ + $$ANGLE_DIR/src/compiler/translator/StructureHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/SymbolTable.cpp \ $$ANGLE_DIR/src/compiler/translator/timing/RestrictFragmentShaderTiming.cpp \ $$ANGLE_DIR/src/compiler/translator/timing/RestrictVertexShaderTiming.cpp \ $$ANGLE_DIR/src/compiler/translator/TranslatorESSL.cpp \ $$ANGLE_DIR/src/compiler/translator/TranslatorGLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/TranslatorHLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/Types.cpp \ $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuit.cpp \ $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuitAST.cpp \ - $$ANGLE_DIR/src/compiler/translator/Uniform.cpp \ + $$ANGLE_DIR/src/compiler/translator/UniformHLSL.cpp \ + $$ANGLE_DIR/src/compiler/translator/UtilsHLSL.cpp \ $$ANGLE_DIR/src/compiler/translator/util.cpp \ $$ANGLE_DIR/src/compiler/translator/ValidateLimitations.cpp \ + $$ANGLE_DIR/src/compiler/translator/ValidateOutputs.cpp \ $$ANGLE_DIR/src/compiler/translator/VariableInfo.cpp \ $$ANGLE_DIR/src/compiler/translator/VariablePacker.cpp \ $$ANGLE_DIR/src/compiler/translator/VersionGLSL.cpp \ $$ANGLE_DIR/src/third_party/compiler/ArrayBoundsClamper.cpp -winrt { - SOURCES += $$ANGLE_DIR/src/compiler/translator/ossource_winrt.cpp -} else { - SOURCES += $$ANGLE_DIR/src/compiler/translator/ossource_win.cpp -} - # NOTE: 'win_flex' and 'bison' can be found in qt5/gnuwin32/bin flex.commands = $$addGnuPath(win_flex) --noline --nounistd --outfile=${QMAKE_FILE_BASE}_lex.cpp ${QMAKE_FILE_NAME} flex.output = ${QMAKE_FILE_BASE}_lex.cpp diff --git a/src/angle/src/config.pri b/src/angle/src/config.pri index aa777c356f..ccc4cb16a1 100644 --- a/src/angle/src/config.pri +++ b/src/angle/src/config.pri @@ -37,17 +37,10 @@ DEFINES += _WINDOWS \ NOMINMAX \ WIN32_LEAN_AND_MEAN=1 -# Defines specifying the API version (0x0600 = Vista, 0x0602 = Win8)) -winrt { - DEFINES += _WIN32_WINNT=0x0602 WINVER=0x0602 - DEFINES += ANGLE_ENABLE_UNIVERSAL_BINARY -} else { - DEFINES += _WIN32_WINNT=0x0600 WINVER=0x0600 - DEFINES += ANGLE_ENABLE_D3D9 -} +!winrt: DEFINES += ANGLE_ENABLE_D3D9 angle_d3d11 { - DEFINES += ANGLE_ENABLE_D3D11 + DEFINES += ANGLE_ENABLE_D3D11 ANGLE_DEFAULT_D3D11=1 !build_pass: message("Enabling D3D11 mode for ANGLE") } @@ -71,11 +64,12 @@ msvc { # 4239: nonstandard extension used : 'token' : conversion from 'type' to 'type' # 4244: 'argument' : conversion from 'type1' to 'type2', possible loss of data # 4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch + # 4267: coversion from 'size_t' to 'int', possible loss of data # 4275: non - DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier' # 4512: 'class' : assignment operator could not be generated # 4702: unreachable code QMAKE_CFLAGS_WARN_ON -= -W3 - QMAKE_CFLAGS_WARN_ON += -W4 -wd"4100" -wd"4127" -wd"4189" -wd"4239" -wd"4244" -wd"4245" -wd"4275" -wd"4512" -wd"4702" + QMAKE_CFLAGS_WARN_ON += -W4 -wd"4100" -wd"4127" -wd"4189" -wd"4239" -wd"4244" -wd"4245" -wd"4267" -wd"4275" -wd"4512" -wd"4702" # Optimizations # /Oy: Omits frame pointer (x86 only). # /Gy: Enables function-level linking. @@ -93,9 +87,11 @@ gcc { QMAKE_CFLAGS_WARN_ON += -Wno-unknown-pragmas -Wno-comment -Wno-missing-field-initializers \ -Wno-switch -Wno-unused-parameter -Wno-write-strings -Wno-sign-compare -Wno-missing-braces \ -Wno-unused-but-set-variable -Wno-unused-variable -Wno-narrowing -Wno-maybe-uninitialized \ - -Wno-strict-aliasing -Wno-type-limits + -Wno-strict-aliasing -Wno-type-limits -Wno-unused-local-typedefs QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -Wno-reorder -Wno-conversion-null -Wno-delete-non-virtual-dtor + + sse2: QMAKE_CXXFLAGS += -march=native } QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG diff --git a/src/angle/src/d3dcompiler/d3dcompiler.pro b/src/angle/src/d3dcompiler/d3dcompiler.pro deleted file mode 100644 index 04b1de895d..0000000000 --- a/src/angle/src/d3dcompiler/d3dcompiler.pro +++ /dev/null @@ -1,17 +0,0 @@ -TARGET = d3dcompiler_qt -CONFIG += installed -include(../config.pri) - -CONFIG += qt -QT = core -DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII -SOURCES += main.cpp -win32:!winrt: LIBS += -lole32 - -winrt:equals(WINSDK_VER, 8.1) { - DEFINES += D3DCOMPILER_LINKED - LIBS += -ld3dcompiler -} - -# __stdcall exports get mangled, so use a def file -DEF_FILE += $${TARGET}.def diff --git a/src/angle/src/d3dcompiler/d3dcompiler_qt.def b/src/angle/src/d3dcompiler/d3dcompiler_qt.def deleted file mode 100644 index 0b8679c8e0..0000000000 --- a/src/angle/src/d3dcompiler/d3dcompiler_qt.def +++ /dev/null @@ -1,3 +0,0 @@ -LIBRARY d3dcompiler_qt -EXPORTS - D3DCompile @1 diff --git a/src/angle/src/d3dcompiler/d3dcompiler_qtd.def b/src/angle/src/d3dcompiler/d3dcompiler_qtd.def deleted file mode 100644 index 0bdd0a1ffd..0000000000 --- a/src/angle/src/d3dcompiler/d3dcompiler_qtd.def +++ /dev/null @@ -1,3 +0,0 @@ -LIBRARY d3dcompiler_qtd -EXPORTS - D3DCompile @1 diff --git a/src/angle/src/d3dcompiler/main.cpp b/src/angle/src/d3dcompiler/main.cpp deleted file mode 100644 index 7647319396..0000000000 --- a/src/angle/src/d3dcompiler/main.cpp +++ /dev/null @@ -1,328 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QByteArray> -#include <QCryptographicHash> -#include <QDateTime> -#include <QDir> -#include <QElapsedTimer> -#include <QFile> -#include <QLoggingCategory> -#include <QStandardPaths> -#include <QThread> - -#include <qt_windows.h> -#include <d3dcommon.h> - -#ifdef D3DCOMPILER_LINKED -namespace D3D { -# include <d3dcompiler.h> -} -#endif // D3DCOMPILER_LINKED - -Q_LOGGING_CATEGORY(QT_D3DCOMPILER, "qt.angle.d3dcompiler") - -namespace D3DCompiler { - -typedef HRESULT (WINAPI *D3DCompileFunc)(const void *data, SIZE_T data_size, const char *filename, - const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, - const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages); -static D3DCompileFunc compile; - -class Blob : public ID3DBlob -{ -public: - Blob(const QByteArray &data) : m_data(data) - { - IIDFromString(L"00000000-0000-0000-C000-000000000046", &IID_IUnknown); - IIDFromString(L"8BA5FB08-5195-40e2-AC58-0D989C3A0102", &IID_ID3DBlob); - } - - virtual ~Blob() - { - } - - // ID3DBlob - LPVOID __stdcall GetBufferPointer() - { - return m_data.data(); - } - - SIZE_T __stdcall GetBufferSize() - { - return m_data.size(); - } - - // IUnknown - HRESULT __stdcall QueryInterface(REFIID riid, void **ppv) - { - IUnknown *out = 0; - if (riid == IID_IUnknown) - out = static_cast<IUnknown*>(this); - else if (riid == IID_ID3DBlob) - out = this; - - *ppv = out; - if (!out) - return E_NOINTERFACE; - - out->AddRef(); - return S_OK; - } - - ULONG __stdcall AddRef() - { - return ++m_ref; - } - - ULONG __stdcall Release() - { - ULONG ref = --m_ref; - if (!m_ref) - delete this; - - return ref; - } - -private: - QByteArray m_data; - ULONG m_ref; - - // These symbols might be missing, so define them here - IID IID_IUnknown; - IID IID_ID3DBlob; -}; - -static bool loadCompiler() -{ -#ifndef D3DCOMPILER_LINKED - static HMODULE d3dcompiler = 0; - if (!d3dcompiler) { - const wchar_t *dllNames[] = { - L"d3dcompiler_47.dll", - L"d3dcompiler_46.dll", - L"d3dcompiler_45.dll", - L"d3dcompiler_44.dll", - L"d3dcompiler_43.dll", - 0 - }; - for (int i = 0; const wchar_t *name = dllNames[i]; ++i) { -#ifndef Q_OS_WINRT - d3dcompiler = LoadLibrary(name); -#else - d3dcompiler = LoadPackagedLibrary(name, NULL); -#endif - if (d3dcompiler) { - qCDebug(QT_D3DCOMPILER) << "Found" << QString::fromWCharArray(name); - D3DCompiler::compile = reinterpret_cast<D3DCompiler::D3DCompileFunc>(GetProcAddress(d3dcompiler, "D3DCompile")); - if (D3DCompiler::compile) { - qCDebug(QT_D3DCOMPILER) << "Loaded" << QString::fromWCharArray(name); - break; - } - qCDebug(QT_D3DCOMPILER) << "Failed to load" << QString::fromWCharArray(name); - } - } - - if (!d3dcompiler) - qCDebug(QT_D3DCOMPILER) << "Unable to load D3D shader compiler."; - } -#else // !D3DCOMPILER_LINKED - compile = &D3D::D3DCompile; -#endif // D3DCOMPILER_LINKED - return bool(compile); -} - -static QString cacheKeyFor(const void *data) -{ - return QString::fromUtf8(QCryptographicHash::hash(reinterpret_cast<const char *>(data), QCryptographicHash::Sha1).toHex()); -} - -} // namespace D3DCompiler - -#ifdef __MINGW32__ -extern "C" -#endif -__declspec(dllexport) HRESULT WINAPI D3DCompile( - const void *, SIZE_T, const char *, const D3D_SHADER_MACRO *, ID3DInclude *, - const char *, const char *, UINT, UINT, ID3DBlob **, ID3DBlob **); - -HRESULT WINAPI D3DCompile( - const void *data, SIZE_T data_size, const char *filename, - const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, - const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **errorMsgs) -{ - // Shortcut to compile using the runtime compiler if it is available - static bool compilerAvailable = - !qgetenv("QT_D3DCOMPILER_DISABLE_DLL").toInt() && D3DCompiler::loadCompiler(); - if (compilerAvailable) { - HRESULT hr = D3DCompiler::compile(data, data_size, filename, defines, include, entrypoint, - target, sflags, eflags, shader, errorMsgs); - return hr; - } - - static bool initialized = false; - static QStringList binaryPaths; - static QString sourcePath; - if (!initialized) { - // Precompiled directory - QString precompiledPath; - if (qEnvironmentVariableIsSet("QT_D3DCOMPILER_BINARY_DIR")) - precompiledPath = QString::fromLocal8Bit(qgetenv("QT_D3DCOMPILER_BINARY_DIR")); - else - precompiledPath = QStringLiteral(":/qt.d3dcompiler/"); // Default QRC path - if (QDir(precompiledPath).exists()) - binaryPaths.append(precompiledPath); - - // Service directory - QString base; - if (qEnvironmentVariableIsSet("QT_D3DCOMPILER_DIR")) - base = QString::fromLocal8Bit(qgetenv("QT_D3DCOMPILER_DIR")); - - if (base.isEmpty()) { - const QString location = QStandardPaths::writableLocation(QStandardPaths::DataLocation); - if (!location.isEmpty()) - base = location + QStringLiteral("/d3dcompiler"); - } - - // Create the directory structure - QDir baseDir(base); - if (!baseDir.exists()) { - baseDir.cdUp(); - if (!baseDir.mkdir(QStringLiteral("d3dcompiler"))) { - qCWarning(QT_D3DCOMPILER) << "Unable to create shader base directory:" - << QDir::toNativeSeparators(baseDir.absolutePath()); - if (binaryPaths.isEmpty()) // No possibility to get a shader, abort - return E_FAIL; - } - baseDir.cd(QStringLiteral("d3dcompiler")); - } - - if (!baseDir.exists(QStringLiteral("binary")) && !baseDir.mkdir(QStringLiteral("binary"))) { - qCWarning(QT_D3DCOMPILER) << "Unable to create shader binary directory:" - << QDir::toNativeSeparators(baseDir.absoluteFilePath(QStringLiteral("binary"))); - if (binaryPaths.isEmpty()) // No possibility to get a shader, abort - return E_FAIL; - } else { - binaryPaths.append(baseDir.absoluteFilePath(QStringLiteral("binary/"))); - } - - if (!baseDir.exists(QStringLiteral("source")) && !baseDir.mkdir(QStringLiteral("source"))) { - qCWarning(QT_D3DCOMPILER) << "Unable to create shader source directory:" - << QDir::toNativeSeparators(baseDir.absoluteFilePath(QStringLiteral("source"))); - } else { - sourcePath = baseDir.absoluteFilePath(QStringLiteral("source/")); - } - - initialized = true; - } - - QByteArray macros; - if (const D3D_SHADER_MACRO *macro = defines) { - while (macro) { - macros.append('#').append(macro->Name).append(' ').append(macro->Definition).append('\n'); - ++macro; - } - } - - const QByteArray sourceData = macros + QByteArray::fromRawData(reinterpret_cast<const char *>(data), data_size); - const QString fileName = D3DCompiler::cacheKeyFor(sourceData) - + QLatin1Char('!') + QString::fromUtf8(entrypoint) - + QLatin1Char('!') + QString::fromUtf8(target) - + QLatin1Char('!') + QString::number(sflags); - - // Check if pre-compiled shader blob is available - foreach (const QString &path, binaryPaths) { - QString blobName = path + fileName; - QFile blob(blobName); - while (!blob.exists()) { - // Progressively drop optional parts - blobName.truncate(blobName.lastIndexOf(QLatin1Char('!'))); - if (blobName.isEmpty()) - break; - blob.setFileName(blobName); - } - if (blob.exists()) { - if (blob.open(QFile::ReadOnly)) { - qCDebug(QT_D3DCOMPILER) << "Opening precompiled shader blob at" << blob.fileName(); - *shader = new D3DCompiler::Blob(blob.readAll()); - return S_FALSE; - } - qCDebug(QT_D3DCOMPILER) << "Found, but unable to open, precompiled shader blob at" << blob.fileName(); - break; - } - } - - // Shader blob is not available; write out shader source - if (!sourcePath.isEmpty()) { - // Dump source to source path; wait for blob to appear - QFile source(sourcePath + fileName); - if (!source.open(QFile::WriteOnly)) { - qCDebug(QT_D3DCOMPILER) << "Unable to write shader source to file:" << source.fileName() << source.errorString(); - return E_ACCESSDENIED; - } - - source.write(sourceData); - qCDebug(QT_D3DCOMPILER) << "Wrote shader source, waiting for blob:" << source.fileName(); - source.close(); - - qint64 timeout = qgetenv("QT_D3DCOMPILER_TIMEOUT").toLong(); - if (!timeout) - timeout = 3000; - - QElapsedTimer timer; - timer.start(); - QFile blob(binaryPaths.last() + fileName); - while (!(blob.exists() && blob.open(QFile::ReadOnly)) && timer.elapsed() < timeout) - QThread::msleep(100); - - if (blob.isOpen()) { - *shader = new D3DCompiler::Blob(blob.readAll()); - return S_FALSE; - } - - qCDebug(QT_D3DCOMPILER) << "Shader blob failed to materialize after" << timeout << "ms."; - *errorMsgs = new D3DCompiler::Blob("Shader compilation timeout."); - return E_ABORT; - } - - *errorMsgs = new D3DCompiler::Blob("No shader compiler or service could be found."); - return E_FAIL; -} diff --git a/src/angle/src/libGLESv2/libGLESv2.pro b/src/angle/src/libGLESv2/libGLESv2.pro index 70c58dc5a4..8109c34942 100644 --- a/src/angle/src/libGLESv2/libGLESv2.pro +++ b/src/angle/src/libGLESv2/libGLESv2.pro @@ -8,6 +8,8 @@ angle_d3d11: \ LIBS_PRIVATE += -ldxgi -ld3d11 !winrt: \ LIBS_PRIVATE += -ld3d9 +winrt: \ + LIBS_PRIVATE += -ld3dcompiler LIBS_PRIVATE += -ldxguid @@ -21,138 +23,201 @@ for(libname, STATICLIBS) { } HEADERS += \ - $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.h \ + $$ANGLE_DIR/src/common/blocklayout.h \ + $$ANGLE_DIR/src/common/shadervars.h \ + $$ANGLE_DIR/src/common/utilities.h \ + $$ANGLE_DIR/src/libGLESv2/angletypes.h \ $$ANGLE_DIR/src/libGLESv2/BinaryStream.h \ $$ANGLE_DIR/src/libGLESv2/Buffer.h \ + $$ANGLE_DIR/src/libGLESv2/Caps.h \ $$ANGLE_DIR/src/libGLESv2/Context.h \ + $$ANGLE_DIR/src/libGLESv2/DynamicHLSL.h \ $$ANGLE_DIR/src/libGLESv2/Fence.h \ + $$ANGLE_DIR/src/libGLESv2/formatutils.h \ $$ANGLE_DIR/src/libGLESv2/Framebuffer.h \ + $$ANGLE_DIR/src/libGLESv2/FramebufferAttachment.h \ $$ANGLE_DIR/src/libGLESv2/HandleAllocator.h \ $$ANGLE_DIR/src/libGLESv2/main.h \ - $$ANGLE_DIR/src/libGLESv2/mathutil.h \ + $$ANGLE_DIR/src/libGLESv2/precompiled.h \ $$ANGLE_DIR/src/libGLESv2/Program.h \ $$ANGLE_DIR/src/libGLESv2/ProgramBinary.h \ $$ANGLE_DIR/src/libGLESv2/Query.h \ + $$ANGLE_DIR/src/libGLESv2/queryconversions.h \ $$ANGLE_DIR/src/libGLESv2/Renderbuffer.h \ - $$ANGLE_DIR/src/libGLESv2/resource.h \ - $$ANGLE_DIR/src/libGLESv2/ResourceManager.h \ - $$ANGLE_DIR/src/libGLESv2/Shader.h \ - $$ANGLE_DIR/src/libGLESv2/Texture.h \ - $$ANGLE_DIR/src/libGLESv2/Uniform.h \ - $$ANGLE_DIR/src/libGLESv2/utilities.h \ - $$ANGLE_DIR/src/libGLESv2/vertexconversion.h \ - $$ANGLE_DIR/src/libGLESv2/precompiled.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferImpl.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/copyimage.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/copyvertex.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/BufferD3D.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/HLSLCompiler.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ImageD3D.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexBuffer.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexDataManager.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/MemoryBuffer.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureD3D.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureStorage.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexArrayImpl.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexBuffer.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/vertexconversion.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexDataManager.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/FenceImpl.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/generatemip.h \ $$ANGLE_DIR/src/libGLESv2/renderer/Image.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/IndexDataManager.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/imageformats.h \ $$ANGLE_DIR/src/libGLESv2/renderer/IndexCacheRange.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/loadimage.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/QueryImpl.h \ $$ANGLE_DIR/src/libGLESv2/renderer/Renderer.h \ $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget.h \ $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable.h \ $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/VertexDataManager.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/VertexDeclarationCache.h + $$ANGLE_DIR/src/libGLESv2/renderer/TextureImpl.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexDeclarationCache.h \ + $$ANGLE_DIR/src/libGLESv2/resource.h \ + $$ANGLE_DIR/src/libGLESv2/ResourceManager.h \ + $$ANGLE_DIR/src/libGLESv2/Sampler.h \ + $$ANGLE_DIR/src/libGLESv2/Shader.h \ + $$ANGLE_DIR/src/libGLESv2/State.h \ + $$ANGLE_DIR/src/libGLESv2/Texture.h \ + $$ANGLE_DIR/src/libGLESv2/TransformFeedback.h \ + $$ANGLE_DIR/src/libGLESv2/Uniform.h \ + $$ANGLE_DIR/src/libGLESv2/validationES.h \ + $$ANGLE_DIR/src/libGLESv2/validationES2.h \ + $$ANGLE_DIR/src/libGLESv2/validationES3.h \ + $$ANGLE_DIR/src/libGLESv2/VertexArray.h \ + $$ANGLE_DIR/src/libGLESv2/VertexAttribute.h \ + $$ANGLE_DIR/src/libGLESv2/vertexconversion.h \ + $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.h \ SOURCES += \ + $$ANGLE_DIR/src/common/blocklayout.cpp \ + $$ANGLE_DIR/src/common/mathutil.cpp \ + $$ANGLE_DIR/src/common/utilities.cpp \ $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.cpp \ + $$ANGLE_DIR/src/libGLESv2/angletypes.cpp \ $$ANGLE_DIR/src/libGLESv2/Buffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/Caps.cpp \ $$ANGLE_DIR/src/libGLESv2/Context.cpp \ + $$ANGLE_DIR/src/libGLESv2/DynamicHLSL.cpp \ $$ANGLE_DIR/src/libGLESv2/Fence.cpp \ $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.cpp \ $$ANGLE_DIR/src/libGLESv2/Framebuffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/FramebufferAttachment.cpp \ + $$ANGLE_DIR/src/libGLESv2/formatutils.cpp \ $$ANGLE_DIR/src/libGLESv2/HandleAllocator.cpp \ $$ANGLE_DIR/src/libGLESv2/libGLESv2.cpp \ $$ANGLE_DIR/src/libGLESv2/main.cpp \ $$ANGLE_DIR/src/libGLESv2/Program.cpp \ $$ANGLE_DIR/src/libGLESv2/ProgramBinary.cpp \ $$ANGLE_DIR/src/libGLESv2/Query.cpp \ + $$ANGLE_DIR/src/libGLESv2/queryconversions.cpp \ $$ANGLE_DIR/src/libGLESv2/Renderbuffer.cpp \ $$ANGLE_DIR/src/libGLESv2/ResourceManager.cpp \ + $$ANGLE_DIR/src/libGLESv2/Sampler.cpp \ $$ANGLE_DIR/src/libGLESv2/Shader.cpp \ + $$ANGLE_DIR/src/libGLESv2/State.cpp \ $$ANGLE_DIR/src/libGLESv2/Texture.cpp \ + $$ANGLE_DIR/src/libGLESv2/TransformFeedback.cpp \ $$ANGLE_DIR/src/libGLESv2/Uniform.cpp \ - $$ANGLE_DIR/src/libGLESv2/utilities.cpp \ + $$ANGLE_DIR/src/libGLESv2/validationES.cpp \ + $$ANGLE_DIR/src/libGLESv2/validationES2.cpp \ + $$ANGLE_DIR/src/libGLESv2/validationES3.cpp \ + $$ANGLE_DIR/src/libGLESv2/VertexArray.cpp \ + $$ANGLE_DIR/src/libGLESv2/VertexAttribute.cpp \ $$ANGLE_DIR/src/libGLESv2/precompiled.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/copyimage.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/loadimage.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/loadimageSSE2.cpp \ $$ANGLE_DIR/src/libGLESv2/renderer/Image.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/IndexDataManager.cpp \ $$ANGLE_DIR/src/libGLESv2/renderer/IndexRangeCache.cpp \ $$ANGLE_DIR/src/libGLESv2/renderer/Renderer.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/VertexDataManager.cpp - -SSE2_SOURCES += $$ANGLE_DIR/src/libGLESv2/renderer/ImageSSE2.cpp + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/BufferD3D.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ImageD3D.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexBuffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexDataManager.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/MemoryBuffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureD3D.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureStorage.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexBuffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexDataManager.cpp angle_d3d11 { HEADERS += \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/BufferStorage11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Fence11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Image11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/IndexBuffer11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/InputLayoutCache.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Query11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Renderer11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/renderer11_utils.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/RenderTarget11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/RenderStateCache.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/ShaderExecutable11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/SwapChain11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/TextureStorage11.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/VertexBuffer11.h + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Blit11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Buffer11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Clear11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Fence11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/formatutils11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Image11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/IndexBuffer11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Query11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderTarget11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderStateCache.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/ShaderExecutable11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/VertexBuffer11.h SOURCES += \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/BufferStorage11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Fence11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Image11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/IndexBuffer11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/InputLayoutCache.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Query11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/Renderer11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/renderer11_utils.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/RenderTarget11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/RenderStateCache.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/ShaderExecutable11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/SwapChain11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/TextureStorage11.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/VertexBuffer11.cpp + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Fence11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/formatutils11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Image11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/IndexBuffer11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Query11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderTarget11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderStateCache.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/ShaderExecutable11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/VertexBuffer11.cpp } !winrt { HEADERS += \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Blit.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/BufferStorage9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Fence9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Image9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/IndexBuffer9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Query9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Renderer9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/renderer9_utils.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/RenderTarget9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/ShaderExecutable9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/SwapChain9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/TextureStorage9.h \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/VertexBuffer9.h + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Blit9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Buffer9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Fence9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/formatutils9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Image9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/IndexBuffer9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Query9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/renderer9_utils.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/RenderTarget9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/ShaderExecutable9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/TextureStorage9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/VertexBuffer9.h \ + $$ANGLE_DIR/src/third_party/systeminfo/SystemInfo.h SOURCES += \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Blit.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/BufferStorage9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Fence9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Image9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/IndexBuffer9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Query9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/Renderer9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/renderer9_utils.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/RenderTarget9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/ShaderExecutable9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/SwapChain9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/TextureStorage9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/VertexBuffer9.cpp \ - $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/VertexDeclarationCache.cpp + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Buffer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Fence9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/formatutils9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Image9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/IndexBuffer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Query9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/renderer9_utils.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/RenderTarget9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/ShaderExecutable9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/TextureStorage9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/VertexBuffer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/VertexDeclarationCache.cpp \ + $$ANGLE_DIR/src/third_party/systeminfo/SystemInfo.cpp } !static { @@ -166,73 +231,82 @@ float_converter.commands = python $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.py QMAKE_EXTRA_TARGETS += float_converter # Generate the shader header files. -PS_BLIT_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/shaders/Blit.ps -VS_BLIT_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/d3d9/shaders/Blit.vs -PASSTHROUGH_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/shaders/Passthrough11.hlsl -CLEAR_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/d3d11/shaders/Clear11.hlsl -PIXEL_SHADERS_BLIT = passthroughps luminanceps componentmaskps -PIXEL_SHADERS_PASSTHROUGH = PassthroughRGBA PassthroughRGB \ - PassthroughLum PassthroughLumAlpha -PIXEL_SHADERS_CLEAR = ClearSingle ClearMultiple -VERTEX_SHADERS_BLIT = standardvs flipyvs -VERTEX_SHADERS_PASSTHROUGH = Passthrough -VERTEX_SHADERS_CLEAR = Clear -SHADER_DIR_9 = $$OUT_PWD/renderer/d3d9/shaders/compiled -SHADER_DIR_11 = $$OUT_PWD/renderer/d3d11/shaders/compiled - -for (ps, PIXEL_SHADERS_BLIT) { - fxc_ps_$${ps}.commands = $$FXC /nologo /E $$ps /T ps_2_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_ps_$${ps}.output = $$SHADER_DIR_9/$${ps}.h - fxc_ps_$${ps}.input = PS_BLIT_INPUT - fxc_ps_$${ps}.dependency_type = TYPE_C - fxc_ps_$${ps}.variable_out = HEADERS - fxc_ps_$${ps}.CONFIG += target_predeps - !winrt: QMAKE_EXTRA_COMPILERS += fxc_ps_$${ps} -} -for (ps, PIXEL_SHADERS_PASSTHROUGH) { - fxc_ps_$${ps}.commands = $$FXC /nologo /E PS_$$ps /T ps_4_0_level_9_1 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_ps_$${ps}.output = $$SHADER_DIR_11/$${ps}11ps.h - fxc_ps_$${ps}.input = PASSTHROUGH_INPUT - fxc_ps_$${ps}.dependency_type = TYPE_C - fxc_ps_$${ps}.variable_out = HEADERS - fxc_ps_$${ps}.CONFIG += target_predeps - angle_d3d11: QMAKE_EXTRA_COMPILERS += fxc_ps_$${ps} -} -for (ps, PIXEL_SHADERS_CLEAR) { - fxc_ps_$${ps}.commands = $$FXC /nologo /E PS_$$ps /T ps_4_0_level_9_1 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_ps_$${ps}.output = $$SHADER_DIR_11/$${ps}11ps.h - fxc_ps_$${ps}.input = CLEAR_INPUT - fxc_ps_$${ps}.dependency_type = TYPE_C - fxc_ps_$${ps}.variable_out = HEADERS - fxc_ps_$${ps}.CONFIG += target_predeps - angle_d3d11: QMAKE_EXTRA_COMPILERS += fxc_ps_$${ps} -} -for (vs, VERTEX_SHADERS_BLIT) { - fxc_vs_$${vs}.commands = $$FXC /nologo /E $$vs /T vs_2_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_vs_$${vs}.output = $$SHADER_DIR_9/$${vs}.h - fxc_vs_$${vs}.input = VS_BLIT_INPUT - fxc_vs_$${vs}.dependency_type = TYPE_C - fxc_vs_$${vs}.variable_out = HEADERS - fxc_vs_$${vs}.CONFIG += target_predeps - !winrt: QMAKE_EXTRA_COMPILERS += fxc_vs_$${vs} -} -for (vs, VERTEX_SHADERS_PASSTHROUGH) { - fxc_vs_$${vs}.commands = $$FXC /nologo /E VS_$$vs /T vs_4_0_level_9_1 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_vs_$${vs}.output = $$SHADER_DIR_11/$${vs}11vs.h - fxc_vs_$${vs}.input = PASSTHROUGH_INPUT - fxc_vs_$${vs}.dependency_type = TYPE_C - fxc_vs_$${vs}.variable_out = HEADERS - fxc_vs_$${vs}.CONFIG += target_predeps - angle_d3d11: QMAKE_EXTRA_COMPILERS += fxc_vs_$${vs} -} -for (vs, VERTEX_SHADERS_CLEAR) { - fxc_vs_$${vs}.commands = $$FXC /nologo /E VS_$$vs /T vs_4_0_level_9_1 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_vs_$${vs}.output = $$SHADER_DIR_11/$${vs}11vs.h - fxc_vs_$${vs}.input = CLEAR_INPUT - fxc_vs_$${vs}.dependency_type = TYPE_C - fxc_vs_$${vs}.variable_out = HEADERS - fxc_vs_$${vs}.CONFIG += target_predeps - angle_d3d11: QMAKE_EXTRA_COMPILERS += fxc_vs_$${vs} +SHADER9_INPUT_DIR = $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/shaders +SHADER11_INPUT_DIR = $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/shaders + +BLITPS_INPUT = $$SHADER9_INPUT_DIR/Blit.ps +BLITPS.shaders = PS_passthrough PS_luminance PS_componentmask +BLITPS.profile = 2_0 + +BLITVS_INPUT = $$SHADER9_INPUT_DIR/Blit.vs +BLITVS.shaders = VS_standard VS_flipy +BLITVS.profile = 2_0 + +BUFFERTOTEXTURE_INPUT = $$SHADER11_INPUT_DIR/BufferToTexture11.hlsl +BUFFERTOTEXTURE.shaders = \ + PS_BufferToTexture_4F PS_BufferToTexture_4I PS_BufferToTexture_4UI \ + VS_BufferToTexture GS_BufferToTexture +BUFFERTOTEXTURE.profile = 4_0 + +CLEAR_INPUT = $$SHADER11_INPUT_DIR/Clear11.hlsl +CLEAR.shaders = \ + PS_ClearUint PS_ClearSint \ + VS_ClearUint VS_ClearSint +CLEAR.shaders_compat = PS_ClearFloat VS_ClearFloat +CLEAR.profile = 4_0 + +PASSTHROUGH2D_INPUT = $$SHADER11_INPUT_DIR/Passthrough2D11.hlsl +PASSTHROUGH2D.shaders = \ + PS_PassthroughRGBA2DUI PS_PassthroughRGBA2DI \ + PS_PassthroughRGB2DUI PS_PassthroughRGB2DI \ + PS_PassthroughRG2DUI PS_PassthroughRG2DI \ + PS_PassthroughR2DUI PS_PassthroughR2DI \ + PS_PassthroughDepth2D +PASSTHROUGH2D.shaders_compat = \ + PS_PassthroughRGBA2D PS_PassthroughRGB2D \ + PS_PassthroughRG2D PS_PassthroughR2D \ + PS_PassthroughLum2D PS_PassthroughLumAlpha2D \ + VS_Passthrough2D +PASSTHROUGH2D.profile = 4_0 + +PASSTHROUGH3D_INPUT = $$SHADER11_INPUT_DIR/Passthrough3D11.hlsl +PASSTHROUGH3D.shaders = \ + PS_PassthroughRGBA3D PS_PassthroughRGBA3DUI PS_PassthroughRGBA3DI \ + PS_PassthroughRGB3D PS_PassthroughRGB3DUI PS_PassthroughRGB3DI \ + PS_PassthroughRG3D PS_PassthroughRG3DUI PS_PassthroughRG3DI \ + PS_PassthroughR3D PS_PassthroughR3DUI PS_PassthroughR3DI \ + PS_PassthroughLum3D PS_PassthroughLumAlpha3D \ + VS_Passthrough3D GS_Passthrough3D +PASSTHROUGH3D.profile = 4_0 + +SWIZZLE_INPUT = $$SHADER11_INPUT_DIR/Swizzle11.hlsl +SWIZZLE.shaders = \ + PS_SwizzleI2D PS_SwizzleUI2D \ + PS_SwizzleF3D PS_SwizzleI3D PS_SwizzleUI3D \ + PS_SwizzleF2DArray PS_SwizzleI2DArray PS_SwizzleUI2DArray +SWIZZLE.shaders_compat = PS_SwizzleF2D +SWIZZLE.profile = 4_0 + +angle_d3d11: FXC_JOBS = BUFFERTOTEXTURE CLEAR PASSTHROUGH2D PASSTHROUGH3D SWIZZLE +!winrt: FXC_JOBS += BLITPS BLITVS + +for (JOB, FXC_JOBS) { + INPUT = $${JOB}_INPUT + OUT_DIR = $$OUT_PWD/$$relative_path($$dirname($$INPUT), $$ANGLE_DIR/src/libGLESv2)/compiled + SHADERS_COMPAT = $$eval($${JOB}.shaders_compat) + SHADERS = $$eval($${JOB}.shaders) $$SHADERS_COMPAT + for(SHADER, SHADERS) { + TYPE = $$lower($$section(SHADER, _, 0, 0)) + PROFILE = $${TYPE}_$$eval($${JOB}.profile) + contains(SHADERS_COMPAT, $$SHADER): PROFILE = $${PROFILE}_level_9_1 + fxc_$${SHADER}_$${PROFILE}.commands = $$FXC /nologo /E $${SHADER} /T $${PROFILE} /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_$${SHADER}_$${PROFILE}.output = $$OUT_DIR/$$section(SHADER, _, 1)$${TYPE}.h + fxc_$${SHADER}_$${PROFILE}.input = $$INPUT + fxc_$${SHADER}_$${PROFILE}.dependency_type = TYPE_C + fxc_$${SHADER}_$${PROFILE}.variable_out = HEADERS + fxc_$${SHADER}_$${PROFILE}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_$${SHADER}_$${PROFILE} + } } khr_headers.files = $$ANGLE_DIR/include/KHR/khrplatform.h @@ -242,4 +316,10 @@ gles2_headers.files = \ $$ANGLE_DIR/include/GLES2/gl2ext.h \ $$ANGLE_DIR/include/GLES2/gl2platform.h gles2_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/GLES2 +gles3_headers.files = \ + $$ANGLE_DIR/include/GLES3/gl3.h \ + $$ANGLE_DIR/include/GLES3/gl3ext.h \ + $$ANGLE_DIR/include/GLES3/gl3platform.h +gles3_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/GLES3 INSTALLS += khr_headers gles2_headers +angle_d3d11: INSTALLS += gles3_headers diff --git a/src/angle/src/src.pro b/src/angle/src/src.pro index 2b7d523207..d1f5f57591 100644 --- a/src/angle/src/src.pro +++ b/src/angle/src/src.pro @@ -1,4 +1,3 @@ TEMPLATE = subdirs SUBDIRS += compiler libGLESv2 libEGL -angle_d3d11: SUBDIRS += d3dcompiler CONFIG += ordered |