summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2020-05-18 15:16:30 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2020-05-26 15:11:40 +0200
commit752497910b67b2a1a80560840ca44548d8893434 (patch)
tree541501c9abfd97c3d2fa450d2e6abb60582c4420 /src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h
parent7db527dbdd911c79f31425d099d1fc9c63e42453 (diff)
Remove ANGLE
This marks the end of EGL and OpenGL ES support on Windows. The concepts of -opengl dynamic, -opengl desktop, QT_OPENGL=software, etc. remain unchanged, with the exception of the disapperance of everything ANGLE related. CMake builds now work identically to qmake on Windows: they default to 'dynamic' OpenGL on Windows, unless -DINPUT_opengl=desktop is specified. On Windows, Qt 6 is expected to default to the "dynamic" OpenGL model by default, just like Qt 5.15. This can be changed by switching to "desktop" OpenGL, which will link to opengl32 (publicly, so other libs and applications will do so as well) and disallows using another OpenGL DLL. The "dynamic" mode is essential still because the fallback to a software rasterizer, such as the opengl32sw.dll we ship with the Qt packages, has to to work exactly like in Qt 5, the removal of ANGLE does not change this concept in any way (except of course that the middle option of using ANGLE is now gone) When it comes to the windows plugin's OpenGL blacklist feature, it works like before and accepts the ANGLE/D3D related keywords. They will then be ignored. Similarly, requesting QT_OPENGL=angle is ignored (but will show a warning). The D3D11 and DXGI configure time tests are removed: Qt 5.14 already depends on D3D 11.1 and DXGI 1.3 headers being available unconditionally on Win32 (in QRhi's D3D11 backend). No need to test for these. [ChangeLog][Windows] ANGLE is no longer included with Qt. Dynamic OpenGL builds work like before but ANGLE is no longer an option. OpenGL proper or an alternative opengl32 implementation are the two remaining options now. Attempting to set QT_OPENGL=angle or Qt::AA_UseOpenGLES will have no effect on Windows. Fixes: QTBUG-79103 Change-Id: Ia404e0d07f3fe191b27434d863c81180112ecb3b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h254
1 files changed, 0 insertions, 254 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h b/src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h
deleted file mode 100644
index 5a1cb38a6a..0000000000
--- a/src/3rdparty/angle/src/libANGLE/renderer/renderer_utils.h
+++ /dev/null
@@ -1,254 +0,0 @@
-//
-// Copyright 2016 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.
-//
-// renderer_utils:
-// Helper methods pertaining to most or all back-ends.
-//
-
-#ifndef LIBANGLE_RENDERER_RENDERER_UTILS_H_
-#define LIBANGLE_RENDERER_RENDERER_UTILS_H_
-
-#include <cstdint>
-
-#include <limits>
-#include <map>
-
-#include "common/angleutils.h"
-#include "libANGLE/angletypes.h"
-
-namespace angle
-{
-struct Format;
-} // namespace angle
-
-namespace gl
-{
-struct FormatType;
-struct InternalFormat;
-} // namespace gl
-
-namespace egl
-{
-class AttributeMap;
-} // namespace egl
-
-namespace rx
-{
-
-class ResourceSerial
-{
- public:
- constexpr ResourceSerial() : mValue(kDirty) {}
- explicit constexpr ResourceSerial(uintptr_t value) : mValue(value) {}
- constexpr bool operator==(ResourceSerial other) const { return mValue == other.mValue; }
- constexpr bool operator!=(ResourceSerial other) const { return mValue != other.mValue; }
-
- void dirty() { mValue = kDirty; }
- void clear() { mValue = kEmpty; }
-
- constexpr bool valid() const { return mValue != kEmpty && mValue != kDirty; }
- constexpr bool empty() const { return mValue == kEmpty; }
-
- private:
- constexpr static uintptr_t kDirty = std::numeric_limits<uintptr_t>::max();
- constexpr static uintptr_t kEmpty = 0;
-
- uintptr_t mValue;
-};
-
-class SerialFactory;
-
-class Serial final
-{
- public:
- constexpr Serial() : mValue(kInvalid) {}
- constexpr Serial(const Serial &other) = default;
- Serial &operator=(const Serial &other) = default;
-
- constexpr bool operator==(const Serial &other) const
- {
- return mValue != kInvalid && mValue == other.mValue;
- }
- constexpr bool operator!=(const Serial &other) const
- {
- return mValue == kInvalid || mValue != other.mValue;
- }
- constexpr bool operator>(const Serial &other) const { return mValue > other.mValue; }
- constexpr bool operator>=(const Serial &other) const { return mValue >= other.mValue; }
- constexpr bool operator<(const Serial &other) const { return mValue < other.mValue; }
- constexpr bool operator<=(const Serial &other) const { return mValue <= other.mValue; }
-
- private:
- friend class SerialFactory;
- constexpr explicit Serial(uint64_t value) : mValue(value) {}
- uint64_t mValue;
- static constexpr uint64_t kInvalid = 0;
-};
-
-class SerialFactory final : angle::NonCopyable
-{
- public:
- SerialFactory() : mSerial(1) {}
-
- Serial generate()
- {
- ASSERT(mSerial != std::numeric_limits<uint64_t>::max());
- return Serial(mSerial++);
- }
-
- private:
- uint64_t mSerial;
-};
-
-using MipGenerationFunction = void (*)(size_t sourceWidth,
- size_t sourceHeight,
- size_t sourceDepth,
- const uint8_t *sourceData,
- size_t sourceRowPitch,
- size_t sourceDepthPitch,
- uint8_t *destData,
- size_t destRowPitch,
- size_t destDepthPitch);
-
-typedef void (*ColorReadFunction)(const uint8_t *source, uint8_t *dest);
-typedef void (*ColorWriteFunction)(const uint8_t *source, uint8_t *dest);
-typedef void (*ColorCopyFunction)(const uint8_t *source, uint8_t *dest);
-
-class FastCopyFunctionMap
-{
- public:
- struct Entry
- {
- GLenum format;
- GLenum type;
- ColorCopyFunction func;
- };
-
- constexpr FastCopyFunctionMap() : FastCopyFunctionMap(nullptr, 0) {}
-
- constexpr FastCopyFunctionMap(const Entry *data, size_t size) : mSize(size), mData(data) {}
-
- bool has(const gl::FormatType &formatType) const;
- ColorCopyFunction get(const gl::FormatType &formatType) const;
-
- private:
- size_t mSize;
- const Entry *mData;
-};
-
-struct PackPixelsParams
-{
- PackPixelsParams();
- PackPixelsParams(const gl::Rectangle &area,
- GLenum format,
- GLenum type,
- GLuint outputPitch,
- const gl::PixelPackState &pack,
- gl::Buffer *packBufferIn,
- ptrdiff_t offset);
-
- gl::Rectangle area;
- GLenum format;
- GLenum type;
- GLuint outputPitch;
- gl::Buffer *packBuffer;
- gl::PixelPackState pack;
- ptrdiff_t offset;
-};
-
-void PackPixels(const PackPixelsParams &params,
- const angle::Format &sourceFormat,
- int inputPitch,
- const uint8_t *source,
- uint8_t *destination);
-
-ColorWriteFunction GetColorWriteFunction(const gl::FormatType &formatType);
-ColorCopyFunction GetFastCopyFunction(const FastCopyFunctionMap &fastCopyFunctions,
- const gl::FormatType &formatType);
-
-using InitializeTextureDataFunction = void (*)(size_t width,
- size_t height,
- size_t depth,
- uint8_t *output,
- size_t outputRowPitch,
- size_t outputDepthPitch);
-
-using LoadImageFunction = void (*)(size_t width,
- size_t height,
- size_t depth,
- const uint8_t *input,
- size_t inputRowPitch,
- size_t inputDepthPitch,
- uint8_t *output,
- size_t outputRowPitch,
- size_t outputDepthPitch);
-
-struct LoadImageFunctionInfo
-{
- LoadImageFunctionInfo() : loadFunction(nullptr), requiresConversion(false) {}
- LoadImageFunctionInfo(LoadImageFunction loadFunction, bool requiresConversion)
- : loadFunction(loadFunction), requiresConversion(requiresConversion)
- {
- }
-
- LoadImageFunction loadFunction;
- bool requiresConversion;
-};
-
-using LoadFunctionMap = LoadImageFunctionInfo (*)(GLenum);
-
-bool ShouldUseDebugLayers(const egl::AttributeMap &attribs);
-
-void CopyImageCHROMIUM(const uint8_t *sourceData,
- size_t sourceRowPitch,
- size_t sourcePixelBytes,
- ColorReadFunction readFunction,
- uint8_t *destData,
- size_t destRowPitch,
- size_t destPixelBytes,
- ColorWriteFunction colorWriteFunction,
- GLenum destUnsizedFormat,
- GLenum destComponentType,
- size_t width,
- size_t height,
- bool unpackFlipY,
- bool unpackPremultiplyAlpha,
- bool unpackUnmultiplyAlpha);
-
-// Incomplete textures are 1x1 textures filled with black, used when samplers are incomplete.
-// This helper class encapsulates handling incomplete textures. Because the GL back-end
-// can take advantage of the driver's incomplete textures, and because clearing multisample
-// textures is so difficult, we can keep an instance of this class in the back-end instead
-// of moving the logic to the Context front-end.
-
-// This interface allows us to call-back to init a multisample texture.
-class MultisampleTextureInitializer
-{
- public:
- virtual ~MultisampleTextureInitializer() {}
- virtual gl::Error initializeMultisampleTextureToBlack(const gl::Context *context,
- gl::Texture *glTexture) = 0;
-};
-
-class IncompleteTextureSet final : angle::NonCopyable
-{
- public:
- IncompleteTextureSet();
- ~IncompleteTextureSet();
-
- void onDestroy(const gl::Context *context);
-
- gl::Error getIncompleteTexture(const gl::Context *context,
- GLenum type,
- MultisampleTextureInitializer *multisampleInitializer,
- gl::Texture **textureOut);
-
- private:
- gl::TextureMap mIncompleteTextures;
-};
-
-} // namespace rx
-
-#endif // LIBANGLE_RENDERER_RENDERER_UTILS_H_