summaryrefslogtreecommitdiff
path: root/chromium/third_party/angle/util
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/angle/util')
-rw-r--r--chromium/third_party/angle/util/BUILD.gn2
-rw-r--r--chromium/third_party/angle/util/EGLPlatformParameters.h26
-rw-r--r--chromium/third_party/angle/util/EGLWindow.cpp7
-rw-r--r--chromium/third_party/angle/util/OSPixmap.h2
-rw-r--r--chromium/third_party/angle/util/egl_loader_autogen.cpp9
-rw-r--r--chromium/third_party/angle/util/egl_loader_autogen.h6
-rw-r--r--chromium/third_party/angle/util/frame_capture_utils.h5
-rw-r--r--chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.cpp14
-rw-r--r--chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.h14
-rw-r--r--chromium/third_party/angle/util/posix/test_utils_posix.cpp11
-rw-r--r--chromium/third_party/angle/util/shader_utils.cpp39
-rw-r--r--chromium/third_party/angle/util/shader_utils.h9
-rw-r--r--chromium/third_party/angle/util/test_utils.h1
-rw-r--r--chromium/third_party/angle/util/windows/WGLWindow.cpp1
-rw-r--r--chromium/third_party/angle/util/windows/test_utils_win.cpp5
-rw-r--r--chromium/third_party/angle/util/x11/X11Pixmap.cpp17
-rw-r--r--chromium/third_party/angle/util/x11/X11Pixmap.h5
17 files changed, 157 insertions, 16 deletions
diff --git a/chromium/third_party/angle/util/BUILD.gn b/chromium/third_party/angle/util/BUILD.gn
index a4ac0cd3601..73681e39296 100644
--- a/chromium/third_party/angle/util/BUILD.gn
+++ b/chromium/third_party/angle/util/BUILD.gn
@@ -51,6 +51,8 @@ if (angle_use_x11) {
if (is_fuchsia) {
_util_sources += [
+ "fuchsia/FuchsiaPixmap.cpp",
+ "fuchsia/FuchsiaPixmap.h",
"fuchsia/ScenicWindow.cpp",
"fuchsia/ScenicWindow.h",
]
diff --git a/chromium/third_party/angle/util/EGLPlatformParameters.h b/chromium/third_party/angle/util/EGLPlatformParameters.h
index 9122367ca7d..94aa6d171d2 100644
--- a/chromium/third_party/angle/util/EGLPlatformParameters.h
+++ b/chromium/third_party/angle/util/EGLPlatformParameters.h
@@ -60,20 +60,22 @@ struct EGLPlatformParameters
{
return std::tie(renderer, majorVersion, minorVersion, deviceType, presentPath,
debugLayersEnabled, contextVirtualization, transformFeedbackFeature,
- allocateNonZeroMemoryFeature, platformMethods, robustness);
+ allocateNonZeroMemoryFeature, emulateCopyTexImage2DFromRenderbuffers,
+ platformMethods, robustness);
}
- EGLint renderer = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
- EGLint majorVersion = EGL_DONT_CARE;
- EGLint minorVersion = EGL_DONT_CARE;
- EGLint deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
- EGLint presentPath = EGL_DONT_CARE;
- EGLint debugLayersEnabled = EGL_DONT_CARE;
- EGLint contextVirtualization = EGL_DONT_CARE;
- EGLint robustness = EGL_DONT_CARE;
- EGLint transformFeedbackFeature = EGL_DONT_CARE;
- EGLint allocateNonZeroMemoryFeature = EGL_DONT_CARE;
- angle::PlatformMethods *platformMethods = nullptr;
+ EGLint renderer = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
+ EGLint majorVersion = EGL_DONT_CARE;
+ EGLint minorVersion = EGL_DONT_CARE;
+ EGLint deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
+ EGLint presentPath = EGL_DONT_CARE;
+ EGLint debugLayersEnabled = EGL_DONT_CARE;
+ EGLint contextVirtualization = EGL_DONT_CARE;
+ EGLint robustness = EGL_DONT_CARE;
+ EGLint transformFeedbackFeature = EGL_DONT_CARE;
+ EGLint allocateNonZeroMemoryFeature = EGL_DONT_CARE;
+ EGLint emulateCopyTexImage2DFromRenderbuffers = EGL_DONT_CARE;
+ angle::PlatformMethods *platformMethods = nullptr;
};
inline bool operator<(const EGLPlatformParameters &a, const EGLPlatformParameters &b)
diff --git a/chromium/third_party/angle/util/EGLWindow.cpp b/chromium/third_party/angle/util/EGLWindow.cpp
index c257290dfc4..d3495423dc4 100644
--- a/chromium/third_party/angle/util/EGLWindow.cpp
+++ b/chromium/third_party/angle/util/EGLWindow.cpp
@@ -13,7 +13,7 @@
#include <string.h>
#include "common/system_utils.h"
-#include "platform/Platform.h"
+#include "platform/PlatformMethods.h"
#include "util/OSWindow.h"
// ConfigParameters implementation.
@@ -191,6 +191,11 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow,
disabledFeatureOverrides.push_back("allocate_non_zero_memory");
}
+ if (params.emulateCopyTexImage2DFromRenderbuffers == EGL_TRUE)
+ {
+ enabledFeatureOverrides.push_back("emulate_copyteximage2d_from_renderbuffers");
+ }
+
if (!disabledFeatureOverrides.empty())
{
if (strstr(extensionString, "EGL_ANGLE_feature_control") == nullptr)
diff --git a/chromium/third_party/angle/util/OSPixmap.h b/chromium/third_party/angle/util/OSPixmap.h
index 6f1400e4e79..9beec2d0e3b 100644
--- a/chromium/third_party/angle/util/OSPixmap.h
+++ b/chromium/third_party/angle/util/OSPixmap.h
@@ -26,7 +26,7 @@ class ANGLE_UTIL_EXPORT OSPixmap
virtual bool initialize(EGLNativeDisplayType display,
size_t width,
size_t height,
- int depth) = 0;
+ int nativeVisual) = 0;
virtual EGLNativePixmapType getNativePixmap() const = 0;
};
diff --git a/chromium/third_party/angle/util/egl_loader_autogen.cpp b/chromium/third_party/angle/util/egl_loader_autogen.cpp
index 77d1012ebc4..06e18f76df2 100644
--- a/chromium/third_party/angle/util/egl_loader_autogen.cpp
+++ b/chromium/third_party/angle/util/egl_loader_autogen.cpp
@@ -69,6 +69,9 @@ ANGLE_UTIL_EXPORT PFNEGLCREATEDEVICEANGLEPROC l_eglCreateDeviceANGLE;
ANGLE_UTIL_EXPORT PFNEGLRELEASEDEVICEANGLEPROC l_eglReleaseDeviceANGLE;
ANGLE_UTIL_EXPORT PFNEGLQUERYDISPLAYATTRIBANGLEPROC l_eglQueryDisplayAttribANGLE;
ANGLE_UTIL_EXPORT PFNEGLQUERYSTRINGIANGLEPROC l_eglQueryStringiANGLE;
+ANGLE_UTIL_EXPORT PFNEGLHANDLEGPUSWITCHANGLEPROC l_eglHandleGPUSwitchANGLE;
+ANGLE_UTIL_EXPORT PFNEGLREACQUIREHIGHPOWERGPUANGLEPROC l_eglReacquireHighPowerGPUANGLE;
+ANGLE_UTIL_EXPORT PFNEGLRELEASEHIGHPOWERGPUANGLEPROC l_eglReleaseHighPowerGPUANGLE;
ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC l_eglProgramCacheGetAttribANGLE;
ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEPOPULATEANGLEPROC l_eglProgramCachePopulateANGLE;
ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEQUERYANGLEPROC l_eglProgramCacheQueryANGLE;
@@ -198,6 +201,12 @@ void LoadEGL(LoadProc loadProc)
reinterpret_cast<PFNEGLQUERYDISPLAYATTRIBANGLEPROC>(loadProc("eglQueryDisplayAttribANGLE"));
l_eglQueryStringiANGLE =
reinterpret_cast<PFNEGLQUERYSTRINGIANGLEPROC>(loadProc("eglQueryStringiANGLE"));
+ l_eglHandleGPUSwitchANGLE =
+ reinterpret_cast<PFNEGLHANDLEGPUSWITCHANGLEPROC>(loadProc("eglHandleGPUSwitchANGLE"));
+ l_eglReacquireHighPowerGPUANGLE = reinterpret_cast<PFNEGLREACQUIREHIGHPOWERGPUANGLEPROC>(
+ loadProc("eglReacquireHighPowerGPUANGLE"));
+ l_eglReleaseHighPowerGPUANGLE = reinterpret_cast<PFNEGLRELEASEHIGHPOWERGPUANGLEPROC>(
+ loadProc("eglReleaseHighPowerGPUANGLE"));
l_eglProgramCacheGetAttribANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC>(
loadProc("eglProgramCacheGetAttribANGLE"));
l_eglProgramCachePopulateANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEPOPULATEANGLEPROC>(
diff --git a/chromium/third_party/angle/util/egl_loader_autogen.h b/chromium/third_party/angle/util/egl_loader_autogen.h
index ee7162de287..1dfaec274c3 100644
--- a/chromium/third_party/angle/util/egl_loader_autogen.h
+++ b/chromium/third_party/angle/util/egl_loader_autogen.h
@@ -73,6 +73,9 @@
#define eglReleaseDeviceANGLE l_eglReleaseDeviceANGLE
#define eglQueryDisplayAttribANGLE l_eglQueryDisplayAttribANGLE
#define eglQueryStringiANGLE l_eglQueryStringiANGLE
+#define eglHandleGPUSwitchANGLE l_eglHandleGPUSwitchANGLE
+#define eglReacquireHighPowerGPUANGLE l_eglReacquireHighPowerGPUANGLE
+#define eglReleaseHighPowerGPUANGLE l_eglReleaseHighPowerGPUANGLE
#define eglProgramCacheGetAttribANGLE l_eglProgramCacheGetAttribANGLE
#define eglProgramCachePopulateANGLE l_eglProgramCachePopulateANGLE
#define eglProgramCacheQueryANGLE l_eglProgramCacheQueryANGLE
@@ -169,6 +172,9 @@ ANGLE_UTIL_EXPORT extern PFNEGLCREATEDEVICEANGLEPROC l_eglCreateDeviceANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLRELEASEDEVICEANGLEPROC l_eglReleaseDeviceANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC l_eglQueryDisplayAttribANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYSTRINGIANGLEPROC l_eglQueryStringiANGLE;
+ANGLE_UTIL_EXPORT extern PFNEGLHANDLEGPUSWITCHANGLEPROC l_eglHandleGPUSwitchANGLE;
+ANGLE_UTIL_EXPORT extern PFNEGLREACQUIREHIGHPOWERGPUANGLEPROC l_eglReacquireHighPowerGPUANGLE;
+ANGLE_UTIL_EXPORT extern PFNEGLRELEASEHIGHPOWERGPUANGLEPROC l_eglReleaseHighPowerGPUANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC l_eglProgramCacheGetAttribANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC l_eglProgramCachePopulateANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEQUERYANGLEPROC l_eglProgramCacheQueryANGLE;
diff --git a/chromium/third_party/angle/util/frame_capture_utils.h b/chromium/third_party/angle/util/frame_capture_utils.h
index 11ae2564bf2..1cd2d7c2bfc 100644
--- a/chromium/third_party/angle/util/frame_capture_utils.h
+++ b/chromium/third_party/angle/util/frame_capture_utils.h
@@ -19,6 +19,11 @@
#define USE_SYSTEM_ZLIB
#include "compression_utils_portable.h"
+#define ANGLE_MACRO_STRINGIZE_AUX(a) #a
+#define ANGLE_MACRO_STRINGIZE(a) ANGLE_MACRO_STRINGIZE_AUX(a)
+#define ANGLE_MACRO_CONCAT_AUX(a, b) a##b
+#define ANGLE_MACRO_CONCAT(a, b) ANGLE_MACRO_CONCAT_AUX(a, b)
+
namespace angle
{
diff --git a/chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.cpp b/chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.cpp
new file mode 100644
index 00000000000..552e13d2c6d
--- /dev/null
+++ b/chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.cpp
@@ -0,0 +1,14 @@
+//
+// Copyright 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.
+//
+
+// FuchsiaPixmap.cpp: Implementation of OSPixmap for Fuchsia
+
+#include "util/fuchsia/FuchsiaPixmap.h"
+
+OSPixmap *CreateOSPixmap()
+{
+ return nullptr;
+}
diff --git a/chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.h b/chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.h
new file mode 100644
index 00000000000..51abcb434e2
--- /dev/null
+++ b/chromium/third_party/angle/util/fuchsia/FuchsiaPixmap.h
@@ -0,0 +1,14 @@
+//
+// Copyright 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.
+//
+
+// FuchsiaPixmap.h: Definition of the implementation of OSPixmap for Fuchsia
+
+#ifndef UTIL_FUCHSIA_FUCHSIAPIXMAP_H_
+#define UTIL_FUCHSIA_FUCHSIAPIXMAP_H_
+
+#include "util/OSPixmap.h"
+
+#endif // UTIL_FUCHSIA_FUCHSIAPIXMAP_H_
diff --git a/chromium/third_party/angle/util/posix/test_utils_posix.cpp b/chromium/third_party/angle/util/posix/test_utils_posix.cpp
index b1ec61ce9b5..2c2afafd193 100644
--- a/chromium/third_party/angle/util/posix/test_utils_posix.cpp
+++ b/chromium/third_party/angle/util/posix/test_utils_posix.cpp
@@ -433,4 +433,15 @@ int NumberOfProcessors()
return static_cast<int>(res);
}
+
+const char *GetNativeEGLLibraryNameWithExtension()
+{
+#if defined(ANGLE_PLATFORM_ANDROID)
+ return "libEGL.so";
+#elif defined(ANGLE_PLATFORM_LINUX)
+ return "libEGL.so.1";
+#else
+ return "unknown_libegl";
+#endif
+}
} // namespace angle
diff --git a/chromium/third_party/angle/util/shader_utils.cpp b/chromium/third_party/angle/util/shader_utils.cpp
index 6d94734a7df..c09b0dca19f 100644
--- a/chromium/third_party/angle/util/shader_utils.cpp
+++ b/chromium/third_party/angle/util/shader_utils.cpp
@@ -447,6 +447,14 @@ const char *PositionAttrib()
{
return "a_position";
}
+const char *Texture2DUniform()
+{
+ return "u_tex2D";
+}
+const char *LodUniform()
+{
+ return "u_lod";
+}
namespace vs
{
@@ -486,6 +494,21 @@ void main()
})";
}
+// A shader that simply passes through attribute a_position, setting it to gl_Position and varying
+// texcoord.
+const char *Texture2DLod()
+{
+ return R"(#version 300 es
+in vec4 a_position;
+out vec2 v_texCoord;
+
+void main()
+{
+ gl_Position = vec4(a_position.xy, 0.0, 1.0);
+ v_texCoord = a_position.xy * 0.5 + vec2(0.5);
+})";
+}
+
} // namespace vs
namespace fs
@@ -527,6 +550,22 @@ void main()
})";
}
+// A shader that samples the texture at a given lod.
+const char *Texture2DLod()
+{
+ return R"(#version 300 es
+precision mediump float;
+uniform sampler2D u_tex2D;
+uniform float u_lod;
+in vec2 v_texCoord;
+out vec4 my_FragColor;
+
+void main()
+{
+ my_FragColor = textureLod(u_tex2D, v_texCoord, u_lod);
+})";
+}
+
} // namespace fs
} // namespace essl3_shaders
diff --git a/chromium/third_party/angle/util/shader_utils.h b/chromium/third_party/angle/util/shader_utils.h
index 98233888773..aaadd6428c8 100644
--- a/chromium/third_party/angle/util/shader_utils.h
+++ b/chromium/third_party/angle/util/shader_utils.h
@@ -103,6 +103,8 @@ namespace essl3_shaders
{
ANGLE_UTIL_EXPORT const char *PositionAttrib();
+ANGLE_UTIL_EXPORT const char *Texture2DUniform();
+ANGLE_UTIL_EXPORT const char *LodUniform();
namespace vs
{
@@ -117,6 +119,10 @@ ANGLE_UTIL_EXPORT const char *Simple();
// v_position.
ANGLE_UTIL_EXPORT const char *Passthrough();
+// A shader that simply passes through attribute a_position, setting it to gl_Position and varying
+// texcoord.
+ANGLE_UTIL_EXPORT const char *Texture2DLod();
+
} // namespace vs
namespace fs
@@ -131,6 +137,9 @@ ANGLE_UTIL_EXPORT const char *Green();
// A shader that fills with 100% opaque blue.
ANGLE_UTIL_EXPORT const char *Blue();
+// A shader that samples the texture at a given lod.
+ANGLE_UTIL_EXPORT const char *Texture2DLod();
+
} // namespace fs
} // namespace essl3_shaders
diff --git a/chromium/third_party/angle/util/test_utils.h b/chromium/third_party/angle/util/test_utils.h
index 43e996f21b6..6b821916d46 100644
--- a/chromium/third_party/angle/util/test_utils.h
+++ b/chromium/third_party/angle/util/test_utils.h
@@ -120,6 +120,7 @@ Process *LaunchProcess(const std::vector<const char *> &args,
int NumberOfProcessors();
+const char *GetNativeEGLLibraryNameWithExtension();
} // namespace angle
#endif // UTIL_TEST_UTILS_H_
diff --git a/chromium/third_party/angle/util/windows/WGLWindow.cpp b/chromium/third_party/angle/util/windows/WGLWindow.cpp
index 68edea5e335..afb970011cb 100644
--- a/chromium/third_party/angle/util/windows/WGLWindow.cpp
+++ b/chromium/third_party/angle/util/windows/WGLWindow.cpp
@@ -77,6 +77,7 @@ bool WGLWindow::initializeGL(OSWindow *osWindow,
{
if (driverType != angle::GLESDriverType::SystemWGL)
{
+ std::cerr << "WGLWindow requires angle::GLESDriverType::SystemWGL.\n";
return false;
}
diff --git a/chromium/third_party/angle/util/windows/test_utils_win.cpp b/chromium/third_party/angle/util/windows/test_utils_win.cpp
index bdaf7e8eac3..d7f5ef45da5 100644
--- a/chromium/third_party/angle/util/windows/test_utils_win.cpp
+++ b/chromium/third_party/angle/util/windows/test_utils_win.cpp
@@ -444,4 +444,9 @@ bool DeleteFile(const char *path)
return !!::DeleteFileA(path) ? true : ReturnSuccessOnNotFound();
}
+
+const char *GetNativeEGLLibraryNameWithExtension()
+{
+ return "libEGL.dll";
+}
} // namespace angle
diff --git a/chromium/third_party/angle/util/x11/X11Pixmap.cpp b/chromium/third_party/angle/util/x11/X11Pixmap.cpp
index 2d81e0e433d..74a71f7585b 100644
--- a/chromium/third_party/angle/util/x11/X11Pixmap.cpp
+++ b/chromium/third_party/angle/util/x11/X11Pixmap.cpp
@@ -18,12 +18,27 @@ X11Pixmap::~X11Pixmap()
}
}
-bool X11Pixmap::initialize(EGLNativeDisplayType display, size_t width, size_t height, int depth)
+bool X11Pixmap::initialize(EGLNativeDisplayType display,
+ size_t width,
+ size_t height,
+ int nativeVisual)
{
mDisplay = display;
int screen = DefaultScreen(mDisplay);
Window root = RootWindow(mDisplay, screen);
+ int depth = 0;
+
+ XVisualInfo visualTemplate;
+ visualTemplate.visualid = nativeVisual;
+
+ int numVisuals = 0;
+ XVisualInfo *info = XGetVisualInfo(mDisplay, VisualIDMask, &visualTemplate, &numVisuals);
+ if (numVisuals == 1)
+ {
+ depth = info->depth;
+ }
+ XFree(info);
mPixmap = XCreatePixmap(mDisplay, root, static_cast<unsigned int>(width),
static_cast<unsigned int>(height), depth);
diff --git a/chromium/third_party/angle/util/x11/X11Pixmap.h b/chromium/third_party/angle/util/x11/X11Pixmap.h
index f338891cb30..c7b6c96c9f9 100644
--- a/chromium/third_party/angle/util/x11/X11Pixmap.h
+++ b/chromium/third_party/angle/util/x11/X11Pixmap.h
@@ -20,7 +20,10 @@ class X11Pixmap : public OSPixmap
X11Pixmap();
~X11Pixmap() override;
- bool initialize(EGLNativeDisplayType display, size_t width, size_t height, int depth) override;
+ bool initialize(EGLNativeDisplayType display,
+ size_t width,
+ size_t height,
+ int nativeVisual) override;
EGLNativePixmapType getNativePixmap() const override;