Skip to content

Commit 1cff9c4

Browse files
committed
[angle] Update to chromium_7258, add metal support, fix Windows build
1 parent 8f28427 commit 1cff9c4

12 files changed

+102
-79
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
diff --git a/src/gpu_info_util/SystemInfo_win.cpp b/src/gpu_info_util/SystemInfo_win.cpp
2+
index f4bb137f2..86495013b 100644
3+
--- a/src/gpu_info_util/SystemInfo_win.cpp
4+
+++ b/src/gpu_info_util/SystemInfo_win.cpp
5+
@@ -6,11 +6,6 @@
6+
7+
// SystemInfo_win.cpp: implementation of the Windows-specific parts of SystemInfo.h
8+
9+
-#include "gpu_info_util/SystemInfo_internal.h"
10+
-
11+
-#include "common/debug.h"
12+
-#include "common/string_utils.h"
13+
-
14+
// Windows.h needs to be included first
15+
#include <windows.h>
16+
17+
@@ -19,6 +14,11 @@
18+
#include <array>
19+
#include <sstream>
20+
21+
+#include "gpu_info_util/SystemInfo_internal.h"
22+
+
23+
+#include "common/debug.h"
24+
+#include "common/string_utils.h"
25+
+
26+
namespace angle
27+
{
28+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#cmakedefine ANGLE_PROGRAM_VERSION "@ANGLE_PROGRAM_VERSION@"
2+
#cmakedefine ANGLE_PROGRAM_VERSION_HASH_SIZE @ANGLE_PROGRAM_VERSION_HASH_SIZE@

ports/angle/angle_commit.h.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#cmakedefine ANGLE_COMMIT_HASH "@ANGLE_COMMIT_HASH@"
2-
#cmakedefine ANGLE_COMMIT_HASH_SIZE @ANGLE_COMMIT_HASH_SIZE@
3-
#cmakedefine ANGLE_COMMIT_DATE "@ANGLE_COMMIT_DATE@"
4-
#cmakedefine ANGLE_REVISION @ANGLE_REVISION@
1+
#cmakedefine ANGLE_COMMIT_HASH "@ANGLE_COMMIT_HASH@"
2+
#cmakedefine ANGLE_COMMIT_HASH_SIZE @ANGLE_COMMIT_HASH_SIZE@
3+
#cmakedefine ANGLE_COMMIT_DATE "@ANGLE_COMMIT_DATE@"
4+
#cmakedefine ANGLE_REVISION @ANGLE_REVISION@

ports/angle/cmake-buildsystem/CMakeLists.txt

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ include(WebKitCommon-minimal)
77
set(ANGLE_FRAMEWORK_HEADERS_DIR "${CMAKE_BINARY_DIR}/ANGLE/headers")
88

99
set(USE_ANGLE_EGL ON)
10-
if (NOT WINDOWS_STORE)
10+
if (NOT WINDOWS_STORE AND NOT USE_METAL)
1111
set(USE_OPENGL ON)
1212
endif()
1313

@@ -106,9 +106,6 @@ elseif (WIN32)
106106
set(angle_enable_d3d11 TRUE)
107107
elseif (UNIX)
108108
set(is_linux TRUE)
109-
if(LINUX)
110-
set(angle_use_x11 TRUE)
111-
endif()
112109
endif ()
113110
# VCPKG EDIT: end vcpkg modified block
114111

@@ -235,13 +232,6 @@ set(angle_gl_enum_utils # VCPKG EDIT: Update paths
235232
"src/common/gl_enum_utils_autogen.h"
236233
)
237234

238-
set(angle_glslang_wrapper
239-
"src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.cpp"
240-
"src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.h"
241-
"src/libANGLE/renderer/glslang_wrapper_utils.cpp"
242-
"src/libANGLE/renderer/glslang_wrapper_utils.h"
243-
)
244-
245235
WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
246236

247237
add_subdirectory(include)
@@ -271,6 +261,7 @@ if (USE_ANGLE_EGL OR ENABLE_WEBGL)
271261
target_compile_definitions(ANGLEFramework INTERFACE ${gl_prototypes})
272262

273263
add_library(GLESv2 ${GLESv2_LIBRARY_TYPE}
264+
${libglesv2_entry_point_sources}
274265
${libglesv2_sources}
275266
)
276267
target_include_directories(GLESv2 PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES})
@@ -391,16 +382,6 @@ add_library(ANGLE::ANGLE ALIAS ANGLEFramework)
391382
#### VCPKG EDIT:
392383
#### various vcpkg additions and install commands
393384

394-
# X11 support
395-
if (angle_use_x11)
396-
find_package(X11 COMPONENTS Xext Xi REQUIRED)
397-
target_include_directories(ANGLE PRIVATE ${X11_INCLUDE_DIR})
398-
target_sources(ANGLE PRIVATE ${libangle_gpu_info_util_x11_sources})
399-
target_sources(ANGLE PRIVATE "src/gpu_info_util/SystemInfo_x11.cpp")
400-
target_compile_definitions(ANGLE PRIVATE ANGLE_USE_X11 GPU_INFO_USE_X11)
401-
target_link_libraries(ANGLE PRIVATE ${X11_LIBRARIES} X11::X11 X11::Xi X11::Xext)
402-
endif()
403-
404385
# set export names of some targets to match prior vcpkg port buildsystem
405386
if(TARGET EGL)
406387
set_target_properties(EGL PROPERTIES EXPORT_NAME libEGL)
@@ -414,7 +395,6 @@ set(_possibleTargets EGL GLESv2 ANGLE)
414395
foreach(_target IN LISTS _possibleTargets)
415396
if(TARGET ${_target})
416397
list(APPEND _installableTargets "${_target}")
417-
target_include_directories(${_target} INTERFACE $<INSTALL_INTERFACE:include>)
418398
endif()
419399
endforeach()
420400

ports/angle/cmake-buildsystem/PlatformLinux.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ endif ()
88

99
if (USE_ANGLE_EGL OR ENABLE_WEBGL)
1010
list(APPEND ANGLE_SOURCES
11-
${_gl_backend_sources}
11+
${gl_backend_sources}
1212

1313
${angle_system_utils_sources_linux}
1414
${angle_system_utils_sources_posix}

ports/angle/cmake-buildsystem/PlatformMac.cmake

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ list(APPEND ANGLEGLESv2_LIBRARIES
1717
# Metal backend
1818
if(USE_METAL)
1919
list(APPEND ANGLE_SOURCES
20-
${_metal_backend_sources}
20+
${metal_backend_sources}
2121

22-
${angle_translator_lib_metal_sources}
23-
24-
${angle_glslang_wrapper}
22+
${angle_translator_lib_msl_sources}
23+
24+
${angle_translator_glsl_apple_sources}
2525
)
2626

2727
list(APPEND ANGLE_DEFINITIONS
@@ -38,15 +38,14 @@ if(USE_OPENGL)
3838
list(APPEND ANGLE_SOURCES
3939
${angle_translator_glsl_base_sources}
4040
${angle_translator_glsl_sources}
41-
${angle_translator_apple_sources}
4241
)
4342
# Enable GLSL compiler output.
44-
list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_GLSL ANGLE_ENABLE_GL_DESKTOP_BACKEND ANGLE_ENABLE_APPLE_WORKAROUNDS)
43+
list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_GLSL ANGLE_ENABLE_GL_DESKTOP_BACKEND ANGLE_ENABLE_APPLE_WORKAROUNDS ANGLE_ENABLE_CGL)
4544
endif()
4645

47-
if(USE_ANGLE_EGL OR ENABLE_WEBGL)
46+
if(USE_OPENGL OR ENABLE_WEBGL)
4847
list(APPEND ANGLE_SOURCES
49-
${_gl_backend_sources}
48+
${gl_backend_sources}
5049

5150
${libangle_gl_egl_dl_sources}
5251
${libangle_gl_egl_sources}

ports/angle/cmake-buildsystem/PlatformWin.cmake

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ list(APPEND ANGLE_DEFINITIONS
99

1010
# We're targeting Windows 10 which will have DirectX 11
1111
list(APPEND ANGLE_SOURCES
12-
${_d3d11_backend_sources}
13-
${_d3d_shared_sources}
12+
${d3d11_backend_sources}
13+
${d3d_shared_sources}
1414

1515
${angle_translator_hlsl_sources}
1616

@@ -25,11 +25,12 @@ list(APPEND ANGLE_DEFINITIONS
2525
"-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
2626
)
2727

28-
list(APPEND ANGLEGLESv2_LIBRARIES dxguid dxgi)
28+
# https://issues.angleproject.org/issues/345274916
29+
list(APPEND ANGLEGLESv2_LIBRARIES dxguid dxgi synchronization)
2930

3031
if(NOT angle_is_winuwp) # vcpkg EDIT: Exclude DirectX 9 on UWP
3132
# DirectX 9 support should be optional but ANGLE will not compile without it
32-
list(APPEND ANGLE_SOURCES ${_d3d9_backend_sources})
33+
list(APPEND ANGLE_SOURCES ${d3d9_backend_sources})
3334
list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_D3D9)
3435
list(APPEND ANGLEGLESv2_LIBRARIES d3d9)
3536
endif()
@@ -52,7 +53,7 @@ if(USE_OPENGL)
5253

5354
if(USE_ANGLE_EGL OR ENABLE_WEBGL)
5455
list(APPEND ANGLE_SOURCES
55-
${_gl_backend_sources}
56+
${gl_backend_sources}
5657

5758
${libangle_gl_egl_dl_sources}
5859
${libangle_gl_egl_sources}

ports/angle/portfile.cmake

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
if (VCPKG_TARGET_IS_LINUX)
22
message(WARNING "Building with a gcc version less than 6.1 is not supported.")
3-
message(WARNING "${PORT} currently requires the following libraries from the system package manager:\n libx11-dev\n mesa-common-dev\n libxi-dev\n libxext-dev\n\nThese can be installed on Ubuntu systems via apt-get install libx11-dev mesa-common-dev libxi-dev libxext-dev.")
3+
message(WARNING "${PORT} currently requires the following libraries from the system package manager:\n mesa-common-dev\n\nThese can be installed on Ubuntu systems via apt-get install mesa-common-dev.")
44
endif()
55

66
if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
@@ -30,11 +30,16 @@ else()
3030
set(ANGLE_BUILDSYSTEM_PORT "Linux")
3131
endif()
3232

33-
# chromium/5414
34-
set(ANGLE_COMMIT aa63ea230e0c507e7b4b164a30e502fb17168c17)
35-
set(ANGLE_VERSION 5414)
36-
set(ANGLE_SHA512 a3b55d4b484e1e9ece515d60af1d47a80a0576b198d9a2397e4e68b16efd83468dcdfadc98dae57ff17f01d02d74526f8b59fdf00661b70a45b6dd266e5ffe38)
37-
set(ANGLE_THIRDPARTY_ZLIB_COMMIT 44d9b490c721abdb923d5c6c23ac211e45ffb1a5)
33+
set(USE_METAL OFF)
34+
if ("metal" IN_LIST FEATURES)
35+
set(USE_METAL ON)
36+
endif()
37+
38+
# chromium/7258
39+
set(ANGLE_COMMIT 79ac1a8cd767a32cce6401203e20c4bd4ca4d539)
40+
set(ANGLE_VERSION 7258)
41+
set(ANGLE_SHA512 a3d5d09460f05f1f1c081411bf15f585bb8add5f3db7c4854dc2cf2ef1fd22dd5b2dd5d3de78bfb8bcdae8459dd9581f7dce331acd34053c87c84cfe6c3d134c)
42+
set(ANGLE_THIRDPARTY_ZLIB_COMMIT 4028ebf8710ee39d2286cb0f847f9b95c59f84d8)
3843

3944
vcpkg_from_github(
4045
OUT_SOURCE_PATH SOURCE_PATH
@@ -43,9 +48,7 @@ vcpkg_from_github(
4348
SHA512 ${ANGLE_SHA512}
4449
# On update check headers against opengl-registry
4550
PATCHES
46-
001-fix-uwp.patch
47-
002-fix-builder-error.patch
48-
003-fix-mingw.patch
51+
001-fix-builder-error.patch
4952
)
5053

5154
# Generate angle_commit.h
@@ -55,19 +58,29 @@ set(ANGLE_COMMIT_DATE "invalid-date")
5558
set(ANGLE_REVISION "${ANGLE_VERSION}")
5659
configure_file("${CMAKE_CURRENT_LIST_DIR}/angle_commit.h.in" "${SOURCE_PATH}/angle_commit.h" @ONLY)
5760
configure_file("${CMAKE_CURRENT_LIST_DIR}/angle_commit.h.in" "${SOURCE_PATH}/src/common/angle_commit.h" @ONLY)
61+
62+
# Generate ANGLEShaderProgramVersion.h.in
63+
# FIXME: ANGLE's build system hashes the renderer files to determine the program version hash.
64+
# For now, we'll just use the ANGLE commit hash.
65+
# See: https://github.com/google/angle/commit/82826be01fcc4d02a637312f4df3ba97e74f7226#diff-81195814d06b98e6258a63901769078f42c522448b2847a33bd51e24ac9faef6
66+
set(ANGLE_PROGRAM_VERSION_HASH_SIZE 12)
67+
string(SUBSTRING "${ANGLE_COMMIT}" 0 ${ANGLE_PROGRAM_VERSION_HASH_SIZE} ANGLE_PROGRAM_VERSION)
68+
configure_file("${CMAKE_CURRENT_LIST_DIR}/ANGLEShaderProgramVersion.h.in" "${SOURCE_PATH}/ANGLEShaderProgramVersion.h" @ONLY)
69+
configure_file("${CMAKE_CURRENT_LIST_DIR}/ANGLEShaderProgramVersion.h.in" "${SOURCE_PATH}/src/common/ANGLEShaderProgramVersion.h" @ONLY)
70+
5871
file(COPY "${CMAKE_CURRENT_LIST_DIR}/unofficial-angle-config.cmake" DESTINATION "${SOURCE_PATH}")
5972

60-
set(ANGLE_WEBKIT_BUILDSYSTEM_COMMIT "bb1da00b9ba878d228a5e9834a0767dbca2fee43")
73+
set(ANGLE_WEBKIT_BUILDSYSTEM_COMMIT "0742522b24152262b04913242cb0b3c48de92ba0")
6174

6275
# Download WebKit gni-to-cmake.py conversion script
6376
vcpkg_download_distfile(GNI_TO_CMAKE_PY
6477
URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/ThirdParty/ANGLE/gni-to-cmake.py"
6578
FILENAME "gni-to-cmake.py"
66-
SHA512 9da35caf2db2e849d6cc85721ba0b77eee06b6f65a7c5314fb80483db4949b0b6e9bf4b2d4fc63613665629b24e9b052e03fb1451b09313d881297771a4f2736
79+
SHA512 cf9dab1b59cd44b9ce05a2dc4636115e770dfe7d5cfbd90c3fef659628ac8155c57b866480f7cfe9a0afeb31ff5ce5eed74473f386120a7fc5910e8b032bd61d
6780
)
6881

6982
# Generate CMake files from GN / GNI files
70-
vcpkg_find_acquire_program(PYTHON3)
83+
x_vcpkg_get_python_packages(PYTHON_VERSION "3" OUT_PYTHON_VAR "PYTHON3" PACKAGES ply)
7184

7285
set(_root_gni_files_to_convert
7386
"compiler.gni Compiler.cmake"
@@ -113,7 +126,7 @@ configure_file("${WK_ANGLE_INCLUDE_CMAKELISTS}" "${SOURCE_PATH}/include/CMakeLis
113126
vcpkg_download_distfile(WK_ANGLE_CMAKE_WEBKITCOMPILERFLAGS
114127
URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/cmake/WebKitCompilerFlags.cmake"
115128
FILENAME "WebKitCompilerFlags.cmake"
116-
SHA512 63f981694ae37d4c4ca4c34e2bf62b4d4602b6a1a660851304fa7a6ee834fc58fa6730eeb41ef4e075550f3c8b675823d4d00bdcd72ca869c6d5ab11196b33bb
129+
SHA512 8b281ffcf9209c845a5fdae48a4e05f08ca677c37a7fb00d9270de81bd103160d26e091724ce8df8d428ad604900b5202b221fed5bafffd4bf00025718ef9d8e
117130
)
118131
file(COPY "${WK_ANGLE_CMAKE_WEBKITCOMPILERFLAGS}" DESTINATION "${SOURCE_PATH}/cmake")
119132

@@ -127,7 +140,7 @@ file(COPY "${WK_ANGLE_CMAKE_DETECTSSE2}" DESTINATION "${SOURCE_PATH}/cmake")
127140
vcpkg_download_distfile(WK_ANGLE_CMAKE_WEBKITMACROS
128141
URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/cmake/WebKitMacros.cmake"
129142
FILENAME "WebKitMacros.cmake"
130-
SHA512 0d126b1d1b0ca995c2ea6e51c73326db363f560f3f07912ce58c7c022d9257d27b963dac56aee0e9604ca7a3d74c5aa9f0451c243fec922fb485dd2253685ab6
143+
SHA512 565175443d5d1b8119af504164bf93840e8c786fc479e45feb98ca542351b91d2ea00265d7f8dfa6960975de81802bc43b2a2af2c90fc44bda1ae46d96c89247
131144
)
132145
file(COPY "${WK_ANGLE_CMAKE_WEBKITMACROS}" DESTINATION "${SOURCE_PATH}/cmake")
133146

@@ -138,16 +151,16 @@ file(GLOB MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake-buildsystem/cmake/*.cmake")
138151
file(COPY ${MODULES} DESTINATION "${SOURCE_PATH}/cmake")
139152

140153
function(checkout_in_path PATH URL REF)
141-
if(EXISTS "${PATH}")
142-
return()
143-
endif()
144-
145154
vcpkg_from_git(
146155
OUT_SOURCE_PATH DEP_SOURCE_PATH
147156
URL "${URL}"
148157
REF "${REF}"
149158
)
150-
file(RENAME "${DEP_SOURCE_PATH}" "${PATH}")
159+
if (CMAKE_HOST_WIN32)
160+
file(COPY "${DEP_SOURCE_PATH}/" DESTINATION "${PATH}")
161+
else()
162+
file(RENAME "${DEP_SOURCE_PATH}" "${PATH}")
163+
endif()
151164
file(REMOVE_RECURSE "${DEP_SOURCE_PATH}")
152165
endfunction()
153166

@@ -165,6 +178,7 @@ vcpkg_cmake_configure(
165178
"-DPORT=${ANGLE_BUILDSYSTEM_PORT}"
166179
"-DANGLE_USE_D3D11_COMPOSITOR_NATIVE_WINDOW=${ANGLE_USE_D3D11_COMPOSITOR_NATIVE_WINDOW}"
167180
"-DVCPKG_TARGET_IS_WINDOWS=${VCPKG_TARGET_IS_WINDOWS}"
181+
"-DUSE_METAL=${USE_METAL}"
168182
)
169183

170184
vcpkg_cmake_install()
Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
include(CMakeFindDependencyMacro)
22
find_dependency(ZLIB)
3-
if(UNIX AND NOT APPLE)
4-
find_dependency(X11 COMPONENTS Xext Xi)
5-
endif()
63

74
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-angle-targets.cmake")

ports/angle/vcpkg.json

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
22
"name": "angle",
3-
"version-string": "chromium_5414",
4-
"port-version": 10,
3+
"version-string": "chromium_7258",
54
"description": [
65
"A conformant OpenGL ES implementation for Windows, Mac and Linux.",
76
"The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support."
@@ -10,18 +9,6 @@
109
"license": "BSD-3-Clause",
1110
"dependencies": [
1211
"egl-registry",
13-
{
14-
"name": "libx11",
15-
"platform": "linux"
16-
},
17-
{
18-
"name": "libxext",
19-
"platform": "linux"
20-
},
21-
{
22-
"name": "libxi",
23-
"platform": "linux"
24-
},
2512
"opengl-registry",
2613
{
2714
"name": "vcpkg-cmake",
@@ -31,6 +18,16 @@
3118
"name": "vcpkg-cmake-config",
3219
"host": true
3320
},
21+
{
22+
"name": "vcpkg-get-python-packages",
23+
"host": true
24+
},
3425
"zlib"
35-
]
26+
],
27+
"features": {
28+
"metal": {
29+
"description": "Metal support for angle",
30+
"supports": "osx | ios"
31+
}
32+
}
3633
}

0 commit comments

Comments
 (0)