diff options
author | android-autoroll <android-autoroll@skia-public.iam.gserviceaccount.com> | 2022-04-20 08:50:23 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-20 08:50:23 +0000 |
commit | 12660312c2f452cd17be0a66282f0b2cc854132a (patch) | |
tree | 971e53a018c73848e828663bc8997dc2d458d2eb | |
parent | ad1aed6a494c6573bc5cef9ccc53b49dd513b601 (diff) | |
parent | 421b9dc037958111da0b1f0ea15bb08f558b0514 (diff) | |
download | angle-12660312c2f452cd17be0a66282f0b2cc854132a.tar.gz |
Roll ANGLE from c3f1596293c9 to cfc92ebf1f1e (31 revisions) am: 345b350a2a am: fab0221071 am: 1ac5a560a0 am: 421b9dc037
Original change: https://android-review.googlesource.com/c/platform/external/angle/+/2068368
Change-Id: I6a0c2fbb4a3b23a2e7d97f66dfe63c9d0a47f99b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
65 files changed, 1279 insertions, 574 deletions
diff --git a/Android.bp b/Android.bp index 53f76d00b9..e087741206 100644 --- a/Android.bp +++ b/Android.bp @@ -16,7 +16,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -28,6 +28,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -77,7 +78,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_EGL_LOADER", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DEGL_EGLEXT_PROTOTYPES", "-DEGL_EGL_PROTOTYPES=1", @@ -92,6 +93,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -166,7 +168,7 @@ cc_library_shared { "-DANGLE_GLESV2_LIBRARY_NAME=\"libGLESv2_angle\"", "-DANGLE_USE_ABSEIL", "-DANGLE_USE_EGL_LOADER", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DEGLAPI=__attribute__((visibility(\"default\")))", "-DEGL_EGLEXT_PROTOTYPES", @@ -183,6 +185,7 @@ cc_library_shared { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -254,7 +257,7 @@ cc_library_shared { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DEGL_EGLEXT_PROTOTYPES", "-DEGL_EGL_PROTOTYPES=1", @@ -271,6 +274,7 @@ cc_library_shared { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -305,7 +309,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -321,6 +325,7 @@ cc_defaults { "-Wno-builtin-macro-redefined", "-Wno-c++98-compat-extra-semi", "-Wno-deprecated-copy", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-implicit-fallthrough", "-Wno-missing-field-initializers", @@ -359,7 +364,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_SHARED_LIBVULKAN=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -375,6 +380,7 @@ cc_defaults { "-Wno-builtin-macro-redefined", "-Wno-c++98-compat-extra-semi", "-Wno-deprecated-copy", + "-Wno-deprecated-non-prototype", "-Wno-extra-semi-stmt", "-Wno-ignored-pragma-optimize", "-Wno-implicit-fallthrough", @@ -432,7 +438,7 @@ cc_defaults { "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_SHARED_LIBVULKAN=1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -444,6 +450,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -499,7 +506,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -510,6 +517,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -553,7 +561,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DLIBANGLE_IMPLEMENTATION", @@ -565,6 +573,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -672,7 +681,7 @@ cc_defaults { "-DANGLE_USE_ABSEIL", "-DANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1", "-DANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DLIBANGLE_IMPLEMENTATION", @@ -685,6 +694,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1005,7 +1015,7 @@ cc_library_static { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1016,6 +1026,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-implicit-fallthrough", "-Wno-missing-field-initializers", @@ -1111,7 +1122,7 @@ cc_library_static { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1122,6 +1133,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-implicit-fallthrough", "-Wno-missing-field-initializers", @@ -1166,7 +1178,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1177,6 +1189,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1200,7 +1213,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1211,6 +1224,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1233,7 +1247,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1244,6 +1258,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1281,7 +1296,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1292,6 +1307,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1330,7 +1346,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1341,6 +1357,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1392,7 +1409,7 @@ cc_library_static { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1403,6 +1420,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1579,7 +1597,7 @@ cc_library_static { "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_ENABLE_VULKAN", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1590,6 +1608,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1621,7 +1640,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1632,6 +1651,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1668,7 +1688,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DLIBANGLE_IMPLEMENTATION", @@ -1680,6 +1700,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1720,7 +1741,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1731,6 +1752,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1760,7 +1782,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1771,6 +1793,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1807,7 +1830,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1818,6 +1841,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1857,7 +1881,7 @@ cc_library_static { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1868,6 +1892,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1889,7 +1914,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1901,6 +1926,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1931,7 +1957,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1943,6 +1969,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -1971,7 +1998,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_SHARED_LIBVULKAN=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -1983,6 +2010,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2027,7 +2055,7 @@ cc_defaults { "-DANGLE_USE_ABSEIL", "-DANGLE_VK_LAYERS_DIR=\"angledata\"", "-DANGLE_VK_MOCK_ICD_JSON=\"angledata/VkICD_mock_icd.json\"", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2039,6 +2067,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2078,7 +2107,7 @@ cc_defaults { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2089,6 +2118,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2133,7 +2163,7 @@ cc_library_static { "-DANGLE_USE_ABSEIL", "-DANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1", "-DANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2145,6 +2175,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2171,7 +2202,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2183,6 +2214,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2236,7 +2268,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2246,6 +2278,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2304,7 +2337,7 @@ cc_defaults { "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DARMV8_OS_ANDROID", "-DCRC32_ARMV8_CRC32", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2316,6 +2349,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2340,7 +2374,7 @@ cc_defaults { "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DARMV8_OS_ANDROID", "-DCRC32_ARMV8_CRC32", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2352,6 +2386,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2376,7 +2411,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2387,6 +2422,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2414,7 +2450,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2426,6 +2462,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2477,7 +2514,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2486,6 +2523,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2532,7 +2570,7 @@ cc_library_static { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2542,6 +2580,7 @@ cc_library_static { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2621,7 +2660,7 @@ cc_library_static { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2632,6 +2671,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -2672,7 +2712,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2683,6 +2723,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-implicit-fallthrough", "-Wno-missing-field-initializers", @@ -2707,7 +2748,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2716,6 +2757,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2751,7 +2793,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2760,6 +2802,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2797,7 +2840,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2806,6 +2849,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2844,7 +2888,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2853,6 +2897,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2883,7 +2928,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2892,6 +2937,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2922,7 +2968,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2931,6 +2977,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -2965,7 +3012,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -2974,6 +3021,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3016,7 +3064,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3025,6 +3073,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3057,7 +3106,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3066,6 +3115,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3104,7 +3154,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3113,6 +3163,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3152,7 +3203,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3161,6 +3212,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3191,7 +3243,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3200,6 +3252,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3234,7 +3287,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3243,6 +3296,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3273,7 +3327,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3282,6 +3336,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3324,7 +3379,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3333,6 +3388,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3367,7 +3423,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3376,6 +3432,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3413,7 +3470,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3422,6 +3479,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3458,7 +3516,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3467,6 +3525,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3502,7 +3561,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3511,6 +3570,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3549,7 +3609,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3558,6 +3618,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3593,7 +3654,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3602,6 +3663,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3643,7 +3705,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3652,6 +3714,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3696,7 +3759,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3705,6 +3768,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3750,7 +3814,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3759,6 +3823,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3797,7 +3862,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3806,6 +3871,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3843,7 +3909,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3852,6 +3918,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3888,7 +3955,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3897,6 +3964,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3942,7 +4010,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3951,6 +4019,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -3985,7 +4054,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -3994,6 +4063,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4027,7 +4097,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4036,6 +4106,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4080,7 +4151,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4089,6 +4160,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4131,7 +4203,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4140,6 +4212,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4173,7 +4246,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4182,6 +4255,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4216,7 +4290,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4225,6 +4299,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4263,7 +4338,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4272,6 +4347,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4325,7 +4401,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4334,6 +4410,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4365,7 +4442,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4374,6 +4451,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4412,7 +4490,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4421,6 +4499,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4452,7 +4531,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4461,6 +4540,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4502,7 +4582,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4511,6 +4591,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4560,7 +4641,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4569,6 +4650,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4612,7 +4694,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4621,6 +4703,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4653,7 +4736,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4662,6 +4745,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4696,7 +4780,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4705,6 +4789,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4741,7 +4826,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4750,6 +4835,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4782,7 +4868,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4791,6 +4877,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4823,7 +4910,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4832,6 +4919,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4865,7 +4953,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4874,6 +4962,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4905,7 +4994,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4914,6 +5003,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4950,7 +5040,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -4959,6 +5049,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -4992,7 +5083,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5001,6 +5092,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5036,7 +5128,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5045,6 +5137,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5081,7 +5174,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5090,6 +5183,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5121,7 +5215,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5130,6 +5224,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5161,7 +5256,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5170,6 +5265,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5208,7 +5304,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5217,6 +5313,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5255,7 +5352,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5264,6 +5361,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5299,7 +5397,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5308,6 +5406,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5350,7 +5449,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5359,6 +5458,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5392,7 +5492,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5401,6 +5501,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5432,7 +5533,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5441,6 +5542,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5473,7 +5575,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5482,6 +5584,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5513,7 +5616,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5522,6 +5625,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5555,7 +5659,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5564,6 +5668,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5594,7 +5699,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5603,6 +5708,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5629,7 +5735,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5638,6 +5744,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5669,7 +5776,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5678,6 +5785,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5708,7 +5816,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5717,6 +5825,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5749,7 +5858,7 @@ cc_defaults { "-DABSL_ALLOCATOR_NOTHROW=1", "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5758,6 +5867,7 @@ cc_defaults { "-Os", "-Wno-builtin-macro-redefined", "-Wno-c++11-narrowing", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-misleading-indentation", "-Wno-missing-field-initializers", @@ -5839,7 +5949,7 @@ cc_library_static { "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", "-DANGLE_USE_ABSEIL", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -5850,6 +5960,7 @@ cc_library_static { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -6015,7 +6126,7 @@ cc_defaults { "-DANGLE_USE_ABSEIL", "-DANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1", "-DANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DLIBANGLE_IMPLEMENTATION", @@ -6028,6 +6139,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -6107,7 +6219,7 @@ cc_defaults { "-DANGLE_USE_ABSEIL", "-DANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1", "-DANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DLIBANGLE_IMPLEMENTATION", @@ -6120,6 +6232,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -6141,7 +6254,7 @@ cc_defaults { cflags: [ "-DANDROID", "-DANDROID_NDK_VERSION_ROLL=r23_1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DHAVE_SYS_UIO_H", "-DNDEBUG", @@ -6152,6 +6265,7 @@ cc_defaults { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -6242,7 +6356,7 @@ cc_library_shared { "-DANGLE_USE_ABSEIL", "-DANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS=1", "-DANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS=1", - "-DCR_CLANG_REVISION=\"llvmorg-15-init-7040-g50de659a-3\"", + "-DCR_CLANG_REVISION=\"llvmorg-15-init-7570-gba4537b2-1\"", "-DDYNAMIC_ANNOTATIONS_ENABLED=0", "-DEGL_EGLEXT_PROTOTYPES", "-DEGL_EGL_PROTOTYPES=1", @@ -6262,6 +6376,7 @@ cc_library_shared { "-D__STDC_FORMAT_MACROS", "-Os", "-Wno-builtin-macro-redefined", + "-Wno-deprecated-non-prototype", "-Wno-ignored-pragma-optimize", "-Wno-missing-field-initializers", "-Wno-psabi", @@ -34,13 +34,13 @@ vars = { 'checkout_android_native_support': 'checkout_android or checkout_chromeos', # Version of Chromium our Chromium-based DEPS are mirrored from. - 'chromium_revision': 'e6765ea8299f1aa4afbe0994f415ce3e25d24435', + 'chromium_revision': 'e1b5a693bbfe7aa10c629797365770749dd90dcd', # We never want to checkout chromium, # but need a dummy DEPS entry for the autoroller 'dummy_checkout_chromium': False, # Current revision of VK-GL-CTS (a.k.a dEQP). - 'vk_gl_cts_revision': '20a474e64382e8f5144122b30b3d7cab182421b8', + 'vk_gl_cts_revision': 'a22069b4e3b7f68cc0c161e8c93b1308bff0925f', # Current revision of googletest. # Note: this dep cannot be auto-rolled b/c of nesting. @@ -79,7 +79,7 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'e9e999a4a88a2963b60bec778f340d3c3d00fa1a', + 'catapult_revision': '28b8ede735b79253b8689d5e270f4783e8413649', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling luci-go @@ -119,7 +119,7 @@ vars = { deps = { 'build': { - 'url': '{chromium_git}/chromium/src/build.git@bb1c23c67d2328cbb89966535bfca2916854bb8e', + 'url': '{chromium_git}/chromium/src/build.git@7aeed11a9ec1ee0818210ea49573d0008a9df2bb', 'condition': 'not build_with_chromium', }, @@ -137,7 +137,7 @@ deps = { 'packages': [ { 'package': 'gn/gn/linux-amd64', - 'version': 'git_revision:c114b7e0b3a327e854cae6b560902230436f1ac7', + 'version': 'git_revision:1cdd270be9803dbfcdd0343f6104ad4dc30c38ce', } ], 'dep_type': 'cipd', @@ -148,7 +148,7 @@ deps = { 'packages': [ { 'package': 'gn/gn/mac-${{arch}}', - 'version': 'git_revision:c114b7e0b3a327e854cae6b560902230436f1ac7', + 'version': 'git_revision:1cdd270be9803dbfcdd0343f6104ad4dc30c38ce', } ], 'dep_type': 'cipd', @@ -166,7 +166,7 @@ deps = { }, 'buildtools/third_party/libunwind/trunk': { - 'url': '{chromium_git}/external/github.com/llvm/llvm-project/libunwind.git@bbcbce996866ff1f947414a8d9db1e79bdc7dca2', + 'url': '{chromium_git}/external/github.com/llvm/llvm-project/libunwind.git@1acfbbb4747081789ba48bc8c042fa3c5c8ccaa3', 'condition': 'not build_with_chromium', }, @@ -174,7 +174,7 @@ deps = { 'packages': [ { 'package': 'gn/gn/windows-amd64', - 'version': 'git_revision:c114b7e0b3a327e854cae6b560902230436f1ac7', + 'version': 'git_revision:1cdd270be9803dbfcdd0343f6104ad4dc30c38ce', } ], 'dep_type': 'cipd', @@ -182,12 +182,12 @@ deps = { }, 'testing': { - 'url': '{chromium_git}/chromium/src/testing@533b4e6461e1c4867f9950ff7147c7e889ed97d0', + 'url': '{chromium_git}/chromium/src/testing@e895c544f6a584dbb48f85f43bd4e117c550b3e4', 'condition': 'not build_with_chromium', }, 'third_party/abseil-cpp': { - 'url': '{chromium_git}/chromium/src/third_party/abseil-cpp@1f41b4fc8f4e69c27772a6ea14e534a7197568d3', + 'url': '{chromium_git}/chromium/src/third_party/abseil-cpp@b0f34841aff13dac98725010b6ca401747d9b475', 'condition': 'not build_with_chromium', }, @@ -332,7 +332,7 @@ deps = { }, 'third_party/depot_tools': { - 'url': '{chromium_git}/chromium/tools/depot_tools.git@3c6f0eb95fddb6833820d3a10e80a7a2fb5d0167', + 'url': '{chromium_git}/chromium/tools/depot_tools.git@7d2693ad8d9d304391b1c1fee9f88f258af5a211', 'condition': 'not build_with_chromium', }, @@ -496,7 +496,7 @@ deps = { }, 'third_party/SwiftShader': { - 'url': '{swiftshader_git}/SwiftShader@1d450ae99a0f4ade28dd55dac962f8b28d990376', + 'url': '{swiftshader_git}/SwiftShader@103a69bd6c82980c967c2f4002c9a302ea67c716', 'condition': 'not build_with_chromium', }, @@ -516,7 +516,7 @@ deps = { }, 'third_party/vulkan-deps': { - 'url': '{chromium_git}/vulkan-deps@c9be322642fb4c85bf70615bdbd2d206e60c19f5', + 'url': '{chromium_git}/vulkan-deps@00e1ddd4230c7804ee732092af6dd0a79a7d9bfe', 'condition': 'not build_with_chromium', }, @@ -531,7 +531,7 @@ deps = { }, 'third_party/zlib': { - 'url': '{chromium_git}/chromium/src/third_party/zlib@a6d209ab932df0f1c9d5b7dc67cfa74e8a3272c0', + 'url': '{chromium_git}/chromium/src/third_party/zlib@be2c3787c0b6fc5d7abf63b057b039a05acb94ce', 'condition': 'not build_with_chromium', }, @@ -541,7 +541,7 @@ deps = { }, 'tools/clang': { - 'url': '{chromium_git}/chromium/src/tools/clang.git@d82302711f8b44cb5a4adffa044343342a08118d', + 'url': '{chromium_git}/chromium/src/tools/clang.git@7d4922aa8773389043e52575b706b94c7511d3d1', 'condition': 'not build_with_chromium', }, @@ -572,7 +572,7 @@ deps = { }, 'tools/mb': { - 'url': '{chromium_git}/chromium/src/tools/mb@f70aa510c468deff8c02bb15e69eababb31ea43a', + 'url': '{chromium_git}/chromium/src/tools/mb@36b318c3885b77de69cccaa2b88eaa8b3309dbd9', 'condition': 'not build_with_chromium', }, @@ -587,7 +587,7 @@ deps = { }, 'tools/perf': { - 'url': '{chromium_git}/chromium/src/tools/perf@7b9534832c3f0bab0835e78a455ca4bd7d9107ec', + 'url': '{chromium_git}/chromium/src/tools/perf@25916f0211676eabd25ed9949f7e4625981522a5', 'condition': 'not build_with_chromium', }, @@ -1461,6 +1461,16 @@ deps = { 'dep_type': 'cipd', 'condition': 'checkout_angle_restricted_traces', }, + 'src/tests/restricted_traces/monster_strike': { + 'packages': [ + { + 'package': 'angle/traces/monster_strike', + 'version': 'version:1', + }, + ], + 'dep_type': 'cipd', + 'condition': 'checkout_angle_restricted_traces', + }, 'src/tests/restricted_traces/my_talking_tom2': { 'packages': [ { @@ -1801,6 +1811,16 @@ deps = { 'dep_type': 'cipd', 'condition': 'checkout_angle_restricted_traces', }, + 'src/tests/restricted_traces/special_forces_group_2': { + 'packages': [ + { + 'package': 'angle/traces/special_forces_group_2', + 'version': 'version:1', + }, + ], + 'dep_type': 'cipd', + 'condition': 'checkout_angle_restricted_traces', + }, 'src/tests/restricted_traces/standoff_2': { 'packages': [ { diff --git a/scripts/code_generation_hashes/Test_spec_JSON.json b/scripts/code_generation_hashes/Test_spec_JSON.json index 7f189a99e8..50d529f65b 100644 --- a/scripts/code_generation_hashes/Test_spec_JSON.json +++ b/scripts/code_generation_hashes/Test_spec_JSON.json @@ -14,7 +14,7 @@ "infra/specs/waterfalls.pyl": "db329524ea9686da7b32544a26b13203", "testing/buildbot/generate_buildbot_json.py": - "b00cff8aba6d321d560c09ed7d8cba03", + "dedd849a6d73b647daaeef0e7ab837a5", "testing/buildbot/mixins.pyl": - "b07ead4820f0abe6d61d373552ad0736" + "eed9c6f949d0e25d8229f84dac2fb50a" }
\ No newline at end of file diff --git a/scripts/code_generation_hashes/restricted_traces.json b/scripts/code_generation_hashes/restricted_traces.json index 80bc8a1ca4..756ff7d7b4 100644 --- a/scripts/code_generation_hashes/restricted_traces.json +++ b/scripts/code_generation_hashes/restricted_traces.json @@ -4,5 +4,5 @@ "src/tests/restricted_traces/gen_restricted_traces.py": "7780405f8e0d92fa87a772dd64c62efb", "src/tests/restricted_traces/restricted_traces.json": - "ff125728ca8c236edb9587a5c437a4a2" + "a14ef4e7bedcb42355134661e7cb5ebe" }
\ No newline at end of file diff --git a/src/common/FastVector.h b/src/common/FastVector.h index 1b7db50a69..faa8e499c5 100644 --- a/src/common/FastVector.h +++ b/src/common/FastVector.h @@ -448,6 +448,45 @@ void FastVector<T, N, Storage>::ensure_capacity(size_t capacity) } } +template <class Value, size_t N> +class FastMap final +{ + public: + FastMap() {} + ~FastMap() {} + + Value &operator[](uint32_t key) + { + if (mData.size() <= key) + { + mData.resize(key + 1, {}); + } + return mData[key]; + } + + const Value &operator[](uint32_t key) const + { + ASSERT(key < mData.size()); + return mData[key]; + } + + void clear() { mData.clear(); } + + bool empty() const { return mData.empty(); } + size_t size() const { return mData.size(); } + + const Value *data() const { return mData.data(); } + + bool operator==(const FastMap<Value, N> &other) const + { + return (size() == other.size()) && + (memcmp(data(), other.data(), size() * sizeof(Value)) == 0); + } + + private: + FastVector<Value, N> mData; +}; + template <class Key, class Value, size_t N> class FlatUnorderedMap final { diff --git a/src/common/FastVector_unittest.cpp b/src/common/FastVector_unittest.cpp index f774bc1a3d..33068f6c53 100644 --- a/src/common/FastVector_unittest.cpp +++ b/src/common/FastVector_unittest.cpp @@ -384,4 +384,27 @@ TEST(FastIntegerMap, BasicUsage) EXPECT_TRUE(testMap.empty()); EXPECT_EQ(testMap.size(), 0u); } + +// Basic usage tests of fast map. +TEST(FastMap, Basic) +{ + FastMap<int, 5> testMap; + EXPECT_TRUE(testMap.empty()); + + testMap[5] = 5; + EXPECT_FALSE(testMap.empty()); + + testMap.clear(); + EXPECT_TRUE(testMap.empty()); + + for (int i = 0; i < 10; ++i) + { + testMap[i] = i; + } + + for (int i = 0; i < 10; ++i) + { + EXPECT_TRUE(testMap[i] == i); + } +} } // namespace angle diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp index 80226fb3e0..a2c0899f6a 100644 --- a/src/compiler/translator/ParseContext.cpp +++ b/src/compiler/translator/ParseContext.cpp @@ -1427,7 +1427,8 @@ void TParseContext::checkIsParameterQualifierValid( TType *type) { // The only parameter qualifiers a parameter can have are in, out, inout or const. - TTypeQualifier typeQualifier = typeQualifierBuilder.getParameterTypeQualifier(mDiagnostics); + TTypeQualifier typeQualifier = + typeQualifierBuilder.getParameterTypeQualifier(type->getBasicType(), mDiagnostics); if (typeQualifier.qualifier == EvqParamOut || typeQualifier.qualifier == EvqParamInOut) { diff --git a/src/compiler/translator/QualifierTypes.cpp b/src/compiler/translator/QualifierTypes.cpp index 814298dc6a..e524146cd3 100644 --- a/src/compiler/translator/QualifierTypes.cpp +++ b/src/compiler/translator/QualifierTypes.cpp @@ -630,6 +630,7 @@ TTypeQualifier GetVariableTypeQualifierFromSortedSequence( } TTypeQualifier GetParameterTypeQualifierFromSortedSequence( + TBasicType parameterBasicType, const TTypeQualifierBuilder::QualifierSequence &sortedSequence, TDiagnostics *diagnostics) { @@ -684,7 +685,9 @@ TTypeQualifier GetParameterTypeQualifierFromSortedSequence( case EvqParamInOut: break; case EvqConst: - typeQualifier.qualifier = EvqParamConst; + // Opaque parameters can only be |in|. |const| is allowed, but is meaningless and is + // dropped. + typeQualifier.qualifier = IsOpaqueType(parameterBasicType) ? EvqParamIn : EvqParamConst; break; case EvqTemporary: // no qualifier has been specified, set it to EvqParamIn which is the default @@ -950,7 +953,8 @@ bool TTypeQualifierBuilder::checkSequenceIsValid(TDiagnostics *diagnostics) cons return true; } -TTypeQualifier TTypeQualifierBuilder::getParameterTypeQualifier(TDiagnostics *diagnostics) const +TTypeQualifier TTypeQualifierBuilder::getParameterTypeQualifier(TBasicType parameterBasicType, + TDiagnostics *diagnostics) const { ASSERT(IsInvariantCorrect(mQualifiers)); ASSERT(static_cast<const TStorageQualifierWrapper *>(mQualifiers[0])->getQualifier() == @@ -969,9 +973,11 @@ TTypeQualifier TTypeQualifierBuilder::getParameterTypeQualifier(TDiagnostics *di // Copy the qualifier sequence so that we can sort them. QualifierSequence sortedQualifierSequence = mQualifiers; SortSequence(sortedQualifierSequence); - return GetParameterTypeQualifierFromSortedSequence(sortedQualifierSequence, diagnostics); + return GetParameterTypeQualifierFromSortedSequence(parameterBasicType, + sortedQualifierSequence, diagnostics); } - return GetParameterTypeQualifierFromSortedSequence(mQualifiers, diagnostics); + return GetParameterTypeQualifierFromSortedSequence(parameterBasicType, mQualifiers, + diagnostics); } TTypeQualifier TTypeQualifierBuilder::getVariableTypeQualifier(TDiagnostics *diagnostics) const diff --git a/src/compiler/translator/QualifierTypes.h b/src/compiler/translator/QualifierTypes.h index 022f339b8d..b98f300ce8 100644 --- a/src/compiler/translator/QualifierTypes.h +++ b/src/compiler/translator/QualifierTypes.h @@ -198,7 +198,8 @@ class TTypeQualifierBuilder : angle::NonCopyable // Goes over the qualifier sequence and parses it to form a type qualifier for a function // parameter. // The returned object is initialized even if the parsing fails. - TTypeQualifier getParameterTypeQualifier(TDiagnostics *diagnostics) const; + TTypeQualifier getParameterTypeQualifier(TBasicType parameterBasicType, + TDiagnostics *diagnostics) const; // Goes over the qualifier sequence and parses it to form a type qualifier for a variable. // The returned object is initialized even if the parsing fails. TTypeQualifier getVariableTypeQualifier(TDiagnostics *diagnostics) const; diff --git a/src/compiler/translator/ValidateAST.cpp b/src/compiler/translator/ValidateAST.cpp index 8de75abed7..77dcfc14d5 100644 --- a/src/compiler/translator/ValidateAST.cpp +++ b/src/compiler/translator/ValidateAST.cpp @@ -816,6 +816,16 @@ void ValidateAST::visitFunctionPrototype(TIntermFunctionPrototype *node) param->name().data()); mQualifiersFailed = true; } + + if (IsOpaqueType(paramType.getBasicType()) && qualifier != EvqParamIn) + { + mDiagnostics->error( + node->getLine(), + "Found function prototype with an invalid qualifier on opaque parameter " + "<validateQualifiers>", + param->name().data()); + mQualifiersFailed = true; + } } if (mOptions.validatePrecision && IsPrecisionApplicableToType(paramType.getBasicType()) && diff --git a/src/compiler/translator/ValidateAST.h b/src/compiler/translator/ValidateAST.h index c3dc7cd11c..8afe94244e 100644 --- a/src/compiler/translator/ValidateAST.h +++ b/src/compiler/translator/ValidateAST.h @@ -48,6 +48,7 @@ struct ValidateASTOptions // Implemented: // // - Function parameters having one of EvqParam* qualifiers. + // - No const qualifier on opaque function parameters. // - gl_ClipDistance, gl_CullDistance and gl_LastFragData are correctly qualified even when // redeclared in the shader. // diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp index bd9e3cd6aa..9356bf22a5 100644 --- a/src/libANGLE/Context.cpp +++ b/src/libANGLE/Context.cpp @@ -358,6 +358,43 @@ void GetPerfMonitorString(const std::string &name, memcpy(stringOut, name.c_str(), numCharsWritten); } } + +bool CanSupportAEP(const gl::Version &version, const gl::Extensions &extensions) +{ + // From the GL_ANDROID_extension_pack_es31a extension spec: + // OpenGL ES 3.1 and GLSL ES 3.10 are required. + // The following extensions are required: + // * KHR_debug + // * KHR_texture_compression_astc_ldr + // * KHR_blend_equation_advanced + // * OES_sample_shading + // * OES_sample_variables + // * OES_shader_image_atomic + // * OES_shader_multisample_interpolation + // * OES_texture_stencil8 + // * OES_texture_storage_multisample_2d_array + // * EXT_copy_image + // * EXT_draw_buffers_indexed + // * EXT_geometry_shader + // * EXT_gpu_shader5 + // * EXT_primitive_bounding_box + // * EXT_shader_io_blocks + // * EXT_tessellation_shader + // * EXT_texture_border_clamp + // * EXT_texture_buffer + // * EXT_texture_cube_map_array + // * EXT_texture_sRGB_decode + return (version >= ES_3_1 && extensions.debugKHR && extensions.textureCompressionAstcLdrKHR && + extensions.blendEquationAdvancedKHR && extensions.sampleShadingOES && + extensions.sampleVariablesOES && extensions.shaderImageAtomicOES && + extensions.shaderMultisampleInterpolationOES && extensions.textureStencil8OES && + extensions.textureStorageMultisample2dArrayOES && extensions.copyImageEXT && + extensions.drawBuffersIndexedEXT && extensions.geometryShaderEXT && + extensions.gpuShader5EXT && extensions.primitiveBoundingBoxEXT && + extensions.shaderIoBlocksEXT && extensions.tessellationShaderEXT && + extensions.textureBorderClampEXT && extensions.textureBufferEXT && + extensions.textureCubeMapArrayEXT && extensions.textureSRGBDecodeEXT); +} } // anonymous namespace #if defined(ANGLE_PLATFORM_APPLE) @@ -3617,17 +3654,16 @@ Extensions Context::generateSupportedExtensions() const if (getClientVersion() < ES_3_1) { // Disable ES3.1+ extensions - supportedExtensions.geometryShaderEXT = false; - supportedExtensions.geometryShaderOES = false; - supportedExtensions.tessellationShaderEXT = false; - supportedExtensions.extensionPackEs31aANDROID = false; - supportedExtensions.gpuShader5EXT = false; - supportedExtensions.primitiveBoundingBoxEXT = false; - supportedExtensions.shaderImageAtomicOES = false; - supportedExtensions.shaderIoBlocksEXT = false; - supportedExtensions.shaderIoBlocksOES = false; - supportedExtensions.textureBufferEXT = false; - supportedExtensions.textureBufferOES = false; + supportedExtensions.geometryShaderEXT = false; + supportedExtensions.geometryShaderOES = false; + supportedExtensions.tessellationShaderEXT = false; + supportedExtensions.gpuShader5EXT = false; + supportedExtensions.primitiveBoundingBoxEXT = false; + supportedExtensions.shaderImageAtomicOES = false; + supportedExtensions.shaderIoBlocksEXT = false; + supportedExtensions.shaderIoBlocksOES = false; + supportedExtensions.textureBufferEXT = false; + supportedExtensions.textureBufferOES = false; // TODO(http://anglebug.com/2775): Multisample arrays could be supported on ES 3.0 as well // once 2D multisample texture extension is exposed there. @@ -3750,6 +3786,10 @@ Extensions Context::generateSupportedExtensions() const // Performance counter queries are always supported. Different groups exist on each back-end. supportedExtensions.performanceMonitorAMD = true; + // GL_ANDROID_extension_pack_es31a + supportedExtensions.extensionPackEs31aANDROID = + CanSupportAEP(getClientVersion(), supportedExtensions); + return supportedExtensions; } @@ -8909,6 +8949,8 @@ void Context::importSemaphoreZirconHandle(SemaphoreID semaphore, void Context::eGLImageTargetTexStorage(GLenum target, GLeglImageOES image, const GLint *attrib_list) { + setShared(); + Texture *texture = getTextureByType(FromGLenum<TextureType>(target)); egl::Image *imageObject = static_cast<egl::Image *>(image); ANGLE_CONTEXT_TRY(texture->setStorageEGLImageTarget(this, FromGLenum<TextureType>(target), @@ -8919,11 +8961,15 @@ void Context::eGLImageTargetTextureStorage(GLuint texture, GLeglImageOES image, const GLint *attrib_list) { + setShared(); + return; } void Context::eGLImageTargetTexture2D(TextureType target, GLeglImageOES image) { + setShared(); + Texture *texture = getTextureByType(target); egl::Image *imageObject = static_cast<egl::Image *>(image); ANGLE_CONTEXT_TRY(texture->setEGLImageTarget(this, target, imageObject)); @@ -8931,6 +8977,8 @@ void Context::eGLImageTargetTexture2D(TextureType target, GLeglImageOES image) void Context::eGLImageTargetRenderbufferStorage(GLenum target, GLeglImageOES image) { + setShared(); + Renderbuffer *renderbuffer = mState.getCurrentRenderbuffer(); egl::Image *imageObject = static_cast<egl::Image *>(image); ANGLE_CONTEXT_TRY(renderbuffer->setStorageEGLImageTarget(this, imageObject)); diff --git a/src/libANGLE/Display.cpp b/src/libANGLE/Display.cpp index bd2bd59d77..d7b75bf625 100644 --- a/src/libANGLE/Display.cpp +++ b/src/libANGLE/Display.cpp @@ -1325,7 +1325,7 @@ Error Display::createPixmapSurface(const Config *configuration, return NoError(); } -Error Display::createImage(const gl::Context *context, +Error Display::createImage(gl::Context *context, EGLenum target, EGLClientBuffer buffer, const AttributeMap &attribs, @@ -1357,6 +1357,13 @@ Error Display::createImage(const gl::Context *context, } ASSERT(sibling != nullptr); + if (context) + { + // If the source comes from a context, make sure it's marked as shared because its resources + // can now be used by contects outside of its share group. + context->setShared(); + } + angle::UniqueObjectPointer<Image, Display> imagePtr( new Image(mImplementation, context, target, sibling, attribs), this); ANGLE_TRY(imagePtr->initialize(this)); diff --git a/src/libANGLE/Display.h b/src/libANGLE/Display.h index 7e7abb695f..46aedc60b9 100644 --- a/src/libANGLE/Display.h +++ b/src/libANGLE/Display.h @@ -180,7 +180,7 @@ class Display final : public LabeledObject, const AttributeMap &attribs, Surface **outSurface); - Error createImage(const gl::Context *context, + Error createImage(gl::Context *context, EGLenum target, EGLClientBuffer buffer, const AttributeMap &attribs, diff --git a/src/libANGLE/Image.cpp b/src/libANGLE/Image.cpp index 995cb41e40..83e1a89618 100644 --- a/src/libANGLE/Image.cpp +++ b/src/libANGLE/Image.cpp @@ -291,6 +291,7 @@ Image::Image(rx::EGLImplFactory *factory, { ASSERT(mImplementation != nullptr); ASSERT(buffer != nullptr); + ASSERT(context == nullptr || context->isShared()); mState.source->addImageSource(this); } diff --git a/src/libANGLE/Program.cpp b/src/libANGLE/Program.cpp index 46a6d57c66..73d89bee44 100644 --- a/src/libANGLE/Program.cpp +++ b/src/libANGLE/Program.cpp @@ -1357,6 +1357,8 @@ angle::Result Program::linkImpl(const Context *context) } } + mState.mExecutable->saveLinkedStateInfo(mState); + mLinkingState = std::move(linkingState); mLinkingState->linkingFromBinary = false; mLinkingState->programHash = programHash; @@ -1366,11 +1368,8 @@ angle::Result Program::linkImpl(const Context *context) mState.updateProgramInterfaceInputs(); mState.updateProgramInterfaceOutputs(); - // Linking has succeeded, so we need to save some information that may get overwritten by a - // later linkProgram() that could fail. if (mState.mSeparable) { - mState.mExecutable->saveLinkedStateInfo(mState); mLinkingState->linkedExecutable = mState.mExecutable; } diff --git a/src/libANGLE/ProgramExecutable.cpp b/src/libANGLE/ProgramExecutable.cpp index 9eb6831c65..6c01d70979 100644 --- a/src/libANGLE/ProgramExecutable.cpp +++ b/src/libANGLE/ProgramExecutable.cpp @@ -167,6 +167,20 @@ RangeUI AddUniforms(const ShaderMap<Program *> &programs, } return RangeUI(startRange, static_cast<unsigned int>(outputUniforms.size())); } + +template <typename BlockT> +void AppendActiveBlocks(ShaderType shaderType, + const std::vector<BlockT> &blocksIn, + std::vector<BlockT> &blocksOut) +{ + for (const BlockT &block : blocksIn) + { + if (block.isActive(shaderType)) + { + blocksOut.push_back(block); + } + } +} } // anonymous namespace ProgramExecutable::ProgramExecutable() @@ -1665,16 +1679,17 @@ bool ProgramExecutable::linkAtomicCounterBuffers(const Context *context, InfoLog return true; } -void ProgramExecutable::copyShaderBuffersFromProgram(const ProgramState &programState) +void ProgramExecutable::copyInputsFromProgram(const ProgramState &programState) { - const std::vector<InterfaceBlock> &ubos = programState.getUniformBlocks(); - mUniformBlocks.insert(mUniformBlocks.end(), ubos.begin(), ubos.end()); - - const std::vector<InterfaceBlock> &ssbos = programState.getShaderStorageBlocks(); - mShaderStorageBlocks.insert(mShaderStorageBlocks.end(), ssbos.begin(), ssbos.end()); + mProgramInputs = programState.getProgramInputs(); +} - const std::vector<AtomicCounterBuffer> &atomics = programState.getAtomicCounterBuffers(); - mAtomicCounterBuffers.insert(mAtomicCounterBuffers.end(), atomics.begin(), atomics.end()); +void ProgramExecutable::copyShaderBuffersFromProgram(const ProgramState &programState, + ShaderType shaderType) +{ + AppendActiveBlocks(shaderType, programState.getUniformBlocks(), mUniformBlocks); + AppendActiveBlocks(shaderType, programState.getShaderStorageBlocks(), mShaderStorageBlocks); + AppendActiveBlocks(shaderType, programState.getAtomicCounterBuffers(), mAtomicCounterBuffers); } void ProgramExecutable::clearSamplerBindings() @@ -1694,6 +1709,13 @@ void ProgramExecutable::copyImageBindingsFromProgram(const ProgramState &program mImageBindings.insert(mImageBindings.end(), bindings.begin(), bindings.end()); } +void ProgramExecutable::copyOutputsFromProgram(const ProgramState &programState) +{ + mOutputVariables = programState.getOutputVariables(); + mOutputLocations = programState.getOutputLocations(); + mSecondaryOutputLocations = programState.getSecondaryOutputLocations(); +} + void ProgramExecutable::copyUniformsFromProgramMap(const ShaderMap<Program *> &programs) { // Merge default uniforms. diff --git a/src/libANGLE/ProgramExecutable.h b/src/libANGLE/ProgramExecutable.h index ef8e386b93..41b18e891d 100644 --- a/src/libANGLE/ProgramExecutable.h +++ b/src/libANGLE/ProgramExecutable.h @@ -137,6 +137,11 @@ class ProgramExecutable final : public angle::Subject return mLinkedShaderStages[shaderType]; } size_t getLinkedShaderStageCount() const { return mLinkedShaderStages.count(); } + bool hasLinkedGraphicsShader() const + { + return mLinkedShaderStages.any() && + mLinkedShaderStages != gl::ShaderBitSet{gl::ShaderType::Compute}; + } bool hasLinkedTessellationShader() const { return mLinkedShaderStages[ShaderType::TessEvaluation]; @@ -342,10 +347,12 @@ class ProgramExecutable final : public angle::Subject std::vector<UnusedUniform> *unusedUniforms, std::vector<VariableLocation> *uniformLocationsOutOrNull); - void copyShaderBuffersFromProgram(const ProgramState &programState); + void copyInputsFromProgram(const ProgramState &programState); + void copyShaderBuffersFromProgram(const ProgramState &programState, ShaderType shaderType); void clearSamplerBindings(); void copySamplerBindingsFromProgram(const ProgramState &programState); void copyImageBindingsFromProgram(const ProgramState &programState); + void copyOutputsFromProgram(const ProgramState &programState); void copyUniformsFromProgramMap(const ShaderMap<Program *> &programs); private: diff --git a/src/libANGLE/ProgramPipeline.cpp b/src/libANGLE/ProgramPipeline.cpp index 5578d9f1f2..33da7c2b67 100644 --- a/src/libANGLE/ProgramPipeline.cpp +++ b/src/libANGLE/ProgramPipeline.cpp @@ -524,16 +524,28 @@ angle::Result ProgramPipeline::link(const Context *context) // Merge uniforms. mState.mExecutable->copyUniformsFromProgramMap(mState.mPrograms); + if (mState.mExecutable->hasLinkedShaderStage(gl::ShaderType::Vertex)) + { + const ProgramState &programState = mState.mPrograms[gl::ShaderType::Vertex]->getState(); + mState.mExecutable->copyInputsFromProgram(programState); + } + // Merge shader buffers (UBOs, SSBOs, and atomic counter buffers) into the executable. // Also copy over image and sampler bindings. for (ShaderType shaderType : mState.mExecutable->getLinkedShaderStages()) { const ProgramState &programState = mState.mPrograms[shaderType]->getState(); - mState.mExecutable->copyShaderBuffersFromProgram(programState); + mState.mExecutable->copyShaderBuffersFromProgram(programState, shaderType); mState.mExecutable->copySamplerBindingsFromProgram(programState); mState.mExecutable->copyImageBindingsFromProgram(programState); } + if (mState.mExecutable->hasLinkedShaderStage(gl::ShaderType::Fragment)) + { + const ProgramState &programState = mState.mPrograms[gl::ShaderType::Fragment]->getState(); + mState.mExecutable->copyOutputsFromProgram(programState); + } + if (mState.mExecutable->hasLinkedShaderStage(gl::ShaderType::Vertex) || mState.mExecutable->hasLinkedShaderStage(gl::ShaderType::Compute)) { diff --git a/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.cpp b/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.cpp index 7352f4c804..88ad6503de 100644 --- a/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.cpp +++ b/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.cpp @@ -20,60 +20,100 @@ ShaderInterfaceVariableInfoMap::~ShaderInterfaceVariableInfoMap() = default; void ShaderInterfaceVariableInfoMap::clear() { - for (VariableNameToInfoMap &shaderMap : mData) + for (gl::ShaderType shaderType : gl::AllShaderTypes()) { - shaderMap.clear(); + for (VariableNameToInfoMap &typeMap : mData[shaderType]) + { + typeMap.clear(); + } + mNameToTypeMap[shaderType].clear(); } } -bool ShaderInterfaceVariableInfoMap::contains(gl::ShaderType shaderType, - const std::string &variableName) const -{ - return mData[shaderType].find(variableName) != mData[shaderType].end(); -} - const ShaderInterfaceVariableInfo &ShaderInterfaceVariableInfoMap::get( gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &variableName) const { - auto it = mData[shaderType].find(variableName); - ASSERT(it != mData[shaderType].end()); + auto it = mData[shaderType][variableType].find(variableName); + ASSERT(it != mData[shaderType][variableType].end()); return it->second; } -ShaderInterfaceVariableInfo &ShaderInterfaceVariableInfoMap::get(gl::ShaderType shaderType, - const std::string &variableName) +void ShaderInterfaceVariableInfoMap::setActiveStages(gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName, + gl::ShaderBitSet activeStages) +{ + auto it = mData[shaderType][variableType].find(variableName); + ASSERT(it != mData[shaderType][variableType].end()); + it->second.activeStages = activeStages; +} + +ShaderInterfaceVariableInfo &ShaderInterfaceVariableInfoMap::getMutable( + gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName) { - auto it = mData[shaderType].find(variableName); - ASSERT(it != mData[shaderType].end()); + auto it = mData[shaderType][variableType].find(variableName); + ASSERT(it != mData[shaderType][variableType].end()); return it->second; } void ShaderInterfaceVariableInfoMap::markAsDuplicate(gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &variableName) { - ASSERT(contains(shaderType, variableName)); - mData[shaderType][variableName].isDuplicate = true; + ASSERT(hasVariable(shaderType, variableName)); + mData[shaderType][variableType][variableName].isDuplicate = true; } ShaderInterfaceVariableInfo &ShaderInterfaceVariableInfoMap::add(gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &variableName) { - ASSERT(!contains(shaderType, variableName)); - return mData[shaderType][variableName]; + ASSERT(!hasVariable(shaderType, variableName)); + mNameToTypeMap[shaderType][variableName] = variableType; + return mData[shaderType][variableType][variableName]; } ShaderInterfaceVariableInfo &ShaderInterfaceVariableInfoMap::addOrGet( gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &variableName) { - return mData[shaderType][variableName]; + mNameToTypeMap[shaderType][variableName] = variableType; + return mData[shaderType][variableType][variableName]; } ShaderInterfaceVariableInfoMap::Iterator ShaderInterfaceVariableInfoMap::getIterator( - gl::ShaderType shaderType) const + gl::ShaderType shaderType, + ShaderVariableType variableType) const { - return Iterator(mData[shaderType].begin(), mData[shaderType].end()); + return Iterator(mData[shaderType][variableType].begin(), mData[shaderType][variableType].end()); } +bool ShaderInterfaceVariableInfoMap::hasVariable(gl::ShaderType shaderType, + const std::string &variableName) const +{ + auto iter = mNameToTypeMap[shaderType].find(variableName); + return (iter != mNameToTypeMap[shaderType].end()); +} + +const ShaderInterfaceVariableInfo &ShaderInterfaceVariableInfoMap::getVariableByName( + gl::ShaderType shaderType, + const std::string &variableName) const +{ + auto iter = mNameToTypeMap[shaderType].find(variableName); + ASSERT(iter != mNameToTypeMap[shaderType].end()); + ShaderVariableType variableType = iter->second; + return get(shaderType, variableType, variableName); +} + +bool ShaderInterfaceVariableInfoMap::hasTransformFeedbackInfo(gl::ShaderType shaderType, + uint32_t bufferIndex) const +{ + std::string bufferName = rx::GetXfbBufferName(bufferIndex); + return hasVariable(shaderType, bufferName); +} } // namespace rx diff --git a/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.h b/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.h index 0040333d4e..f62e3b81d1 100644 --- a/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.h +++ b/src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.h @@ -18,6 +18,24 @@ namespace rx { +enum class ShaderVariableType +{ + AtomicCounter, + Attribute, + DefaultUniform, + DriverUniform, + FramebufferFetch, + Image, + Output, + SecondaryOutput, + ShaderStorageBuffer, + Texture, + TransformFeedback, + UniformBuffer, + Varying, + EnumCount, +}; + // TODO: http://anglebug.com/4524: Need a different hash key than a string, since that's slow to // calculate. class ShaderInterfaceVariableInfoMap final : angle::NonCopyable @@ -27,17 +45,45 @@ class ShaderInterfaceVariableInfoMap final : angle::NonCopyable ~ShaderInterfaceVariableInfoMap(); void clear(); - bool contains(gl::ShaderType shaderType, const std::string &variableName) const; - const ShaderInterfaceVariableInfo &get(gl::ShaderType shaderType, - const std::string &variableName) const; - ShaderInterfaceVariableInfo &get(gl::ShaderType shaderType, const std::string &variableName); - ShaderInterfaceVariableInfo &add(gl::ShaderType shaderType, const std::string &variableName); - void markAsDuplicate(gl::ShaderType shaderType, const std::string &variableName); + ShaderInterfaceVariableInfo &add(gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName); + void markAsDuplicate(gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName); ShaderInterfaceVariableInfo &addOrGet(gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &variableName); - size_t variableCount(gl::ShaderType shaderType) const { return mData[shaderType].size(); } + size_t variableCount(gl::ShaderType shaderType, ShaderVariableType variableType) const + { + return mData[shaderType][variableType].size(); + } + + void setActiveStages(gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName, + gl::ShaderBitSet activeStages); + ShaderInterfaceVariableInfo &getMutable(gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName); + + const ShaderInterfaceVariableInfo &getDefaultUniformInfo(gl::ShaderType shaderType) const; + const ShaderInterfaceVariableInfo &getIndexedVariableInfo( + const gl::ProgramExecutable &executable, + gl::ShaderType shaderType, + ShaderVariableType variableType, + uint32_t variableIndex) const; + bool hasAtomicCounterInfo(gl::ShaderType shaderType) const; + const ShaderInterfaceVariableInfo &getAtomicCounterInfo(gl::ShaderType shaderType) const; + const ShaderInterfaceVariableInfo &getFramebufferFetchInfo( + const gl::ProgramExecutable &executable, + gl::ShaderType shaderType) const; + bool hasTransformFeedbackInfo(gl::ShaderType shaderType, uint32_t bufferIndex) const; + const ShaderInterfaceVariableInfo &getTransformFeedbackInfo(gl::ShaderType shaderType, + uint32_t bufferIndex) const; using VariableNameToInfoMap = angle::HashMap<std::string, ShaderInterfaceVariableInfo>; + using VariableTypeToInfoMap = angle::PackedEnumMap<ShaderVariableType, VariableNameToInfoMap>; class Iterator final { @@ -54,11 +100,104 @@ class ShaderInterfaceVariableInfoMap final : angle::NonCopyable VariableNameToInfoMap::const_iterator mEndIt; }; - Iterator getIterator(gl::ShaderType shaderType) const; + Iterator getIterator(gl::ShaderType shaderType, ShaderVariableType variableType) const; + + bool hasVariable(gl::ShaderType shaderType, const std::string &variableName) const; + const ShaderInterfaceVariableInfo &getVariableByName(gl::ShaderType shaderType, + const std::string &variableName) const; private: - gl::ShaderMap<VariableNameToInfoMap> mData; + const ShaderInterfaceVariableInfo &get(gl::ShaderType shaderType, + ShaderVariableType variableType, + const std::string &variableName) const; + gl::ShaderMap<VariableTypeToInfoMap> mData; + gl::ShaderMap<angle::HashMap<std::string, ShaderVariableType>> mNameToTypeMap; }; +ANGLE_INLINE const ShaderInterfaceVariableInfo & +ShaderInterfaceVariableInfoMap::getDefaultUniformInfo(gl::ShaderType shaderType) const +{ + const char *uniformName = kDefaultUniformNames[shaderType]; + return get(shaderType, ShaderVariableType::DefaultUniform, uniformName); +} + +ANGLE_INLINE const ShaderInterfaceVariableInfo & +ShaderInterfaceVariableInfoMap::getIndexedVariableInfo(const gl::ProgramExecutable &executable, + gl::ShaderType shaderType, + ShaderVariableType variableType, + uint32_t variableIndex) const +{ + switch (variableType) + { + case ShaderVariableType::Image: + { + const std::vector<gl::LinkedUniform> &uniforms = executable.getUniforms(); + uint32_t uniformIndex = executable.getUniformIndexFromImageIndex(variableIndex); + const gl::LinkedUniform &imageUniform = uniforms[uniformIndex]; + const std::string samplerName = GlslangGetMappedSamplerName(imageUniform.name); + return get(shaderType, variableType, samplerName); + } + case ShaderVariableType::ShaderStorageBuffer: + { + const std::vector<gl::InterfaceBlock> &blocks = executable.getShaderStorageBlocks(); + const gl::InterfaceBlock &block = blocks[variableIndex]; + const std::string blockName = block.mappedName; + return get(shaderType, variableType, blockName); + } + case ShaderVariableType::Texture: + { + const std::vector<gl::LinkedUniform> &uniforms = executable.getUniforms(); + uint32_t uniformIndex = executable.getUniformIndexFromSamplerIndex(variableIndex); + const gl::LinkedUniform &samplerUniform = uniforms[uniformIndex]; + const std::string samplerName = GlslangGetMappedSamplerName(samplerUniform.name); + return get(shaderType, variableType, samplerName); + } + case ShaderVariableType::UniformBuffer: + { + const std::vector<gl::InterfaceBlock> &blocks = executable.getUniformBlocks(); + const gl::InterfaceBlock &block = blocks[variableIndex]; + const std::string blockName = block.mappedName; + return get(shaderType, variableType, blockName); + } + + default: + break; + } + + UNREACHABLE(); + return mData[shaderType].begin()->begin()->second; +} + +ANGLE_INLINE bool ShaderInterfaceVariableInfoMap::hasAtomicCounterInfo( + gl::ShaderType shaderType) const +{ + return !mData[shaderType][ShaderVariableType::AtomicCounter].empty(); +} + +ANGLE_INLINE const ShaderInterfaceVariableInfo & +ShaderInterfaceVariableInfoMap::getAtomicCounterInfo(gl::ShaderType shaderType) const +{ + std::string blockName(sh::vk::kAtomicCountersBlockName); + return get(shaderType, ShaderVariableType::AtomicCounter, blockName); +} + +ANGLE_INLINE const ShaderInterfaceVariableInfo & +ShaderInterfaceVariableInfoMap::getFramebufferFetchInfo(const gl::ProgramExecutable &executable, + gl::ShaderType shaderType) const +{ + const std::vector<gl::LinkedUniform> &uniforms = executable.getUniforms(); + const uint32_t baseUniformIndex = executable.getFragmentInoutRange().low(); + const gl::LinkedUniform &baseInputAttachment = uniforms.at(baseUniformIndex); + std::string baseMappedName = baseInputAttachment.mappedName; + return get(shaderType, ShaderVariableType::FramebufferFetch, baseMappedName); +} + +ANGLE_INLINE const ShaderInterfaceVariableInfo & +ShaderInterfaceVariableInfoMap::getTransformFeedbackInfo(gl::ShaderType shaderType, + uint32_t bufferIndex) const +{ + const std::string bufferName = GetXfbBufferName(bufferIndex); + return get(shaderType, ShaderVariableType::TransformFeedback, bufferName); +} } // namespace rx #endif // LIBANGLE_RENDERER_SHADERINTERFACEVARIABLEINFOMAP_H_ diff --git a/src/libANGLE/renderer/glslang_wrapper_utils.cpp b/src/libANGLE/renderer/glslang_wrapper_utils.cpp index eced0ce2bf..f1fc5dc8f7 100644 --- a/src/libANGLE/renderer/glslang_wrapper_utils.cpp +++ b/src/libANGLE/renderer/glslang_wrapper_utils.cpp @@ -92,6 +92,7 @@ uint32_t CountExplicitOutputs(OutputIter outputsBegin, ShaderInterfaceVariableInfo *AddResourceInfoToAllStages(ShaderInterfaceVariableInfoMap *infoMap, gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &varName, uint32_t descriptorSet, uint32_t binding) @@ -99,7 +100,7 @@ ShaderInterfaceVariableInfo *AddResourceInfoToAllStages(ShaderInterfaceVariableI gl::ShaderBitSet allStages; allStages.set(); - ShaderInterfaceVariableInfo &info = infoMap->add(shaderType, varName); + ShaderInterfaceVariableInfo &info = infoMap->add(shaderType, variableType, varName); info.descriptorSet = descriptorSet; info.binding = binding; info.activeStages = allStages; @@ -109,11 +110,12 @@ ShaderInterfaceVariableInfo *AddResourceInfoToAllStages(ShaderInterfaceVariableI ShaderInterfaceVariableInfo *AddResourceInfo(ShaderInterfaceVariableInfoMap *infoMap, gl::ShaderBitSet stages, gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &varName, uint32_t descriptorSet, uint32_t binding) { - ShaderInterfaceVariableInfo &info = infoMap->add(shaderType, varName); + ShaderInterfaceVariableInfo &info = infoMap->add(shaderType, variableType, varName); info.descriptorSet = descriptorSet; info.binding = binding; info.activeStages = stages; @@ -123,6 +125,7 @@ ShaderInterfaceVariableInfo *AddResourceInfo(ShaderInterfaceVariableInfoMap *inf // Add location information for an in/out variable. ShaderInterfaceVariableInfo *AddLocationInfo(ShaderInterfaceVariableInfoMap *infoMap, gl::ShaderType shaderType, + ShaderVariableType variableType, const std::string &varName, uint32_t location, uint32_t component, @@ -131,7 +134,7 @@ ShaderInterfaceVariableInfo *AddLocationInfo(ShaderInterfaceVariableInfoMap *inf { // The info map for this name may or may not exist already. This function merges the // location/component information. - ShaderInterfaceVariableInfo &info = infoMap->addOrGet(shaderType, varName); + ShaderInterfaceVariableInfo &info = infoMap->addOrGet(shaderType, variableType, varName); ASSERT(info.descriptorSet == ShaderInterfaceVariableInfo::kInvalid); ASSERT(info.binding == ShaderInterfaceVariableInfo::kInvalid); @@ -161,7 +164,8 @@ void AddVaryingLocationInfo(ShaderInterfaceVariableInfoMap *infoMap, const uint32_t component) { const std::string &name = isStructField ? ref.parentStructMappedName : ref.varying->mappedName; - AddLocationInfo(infoMap, ref.stage, name, location, component, 0, 0); + AddLocationInfo(infoMap, ref.stage, ShaderVariableType::Varying, name, location, component, 0, + 0); } // Modify an existing out variable and add transform feedback information. @@ -178,7 +182,8 @@ ShaderInterfaceVariableInfo *SetXfbInfo(ShaderInterfaceVariableInfoMap *infoMap, uint32_t arrayIndex, GLenum componentType) { - ShaderInterfaceVariableInfo &info = infoMap->get(shaderType, varName); + ShaderInterfaceVariableInfo &info = + infoMap->getMutable(shaderType, ShaderVariableType::Varying, varName); ShaderInterfaceVariableXfbInfo *xfb = &info.xfb; if (fieldIndex >= 0) @@ -213,7 +218,7 @@ ShaderInterfaceVariableInfo *SetXfbInfo(ShaderInterfaceVariableInfoMap *infoMap, } void AssignTransformFeedbackEmulationBindings(gl::ShaderType shaderType, - const gl::ProgramState &programState, + const gl::ProgramExecutable &programExecutable, bool isTransformFeedbackStage, GlslangProgramInterfaceInfo *programInterfaceInfo, ShaderInterfaceVariableInfoMap *variableInfoMapOut) @@ -221,10 +226,11 @@ void AssignTransformFeedbackEmulationBindings(gl::ShaderType shaderType, size_t bufferCount = 0; if (isTransformFeedbackStage) { - ASSERT(!programState.getLinkedTransformFeedbackVaryings().empty()); + ASSERT(!programExecutable.getLinkedTransformFeedbackVaryings().empty()); const bool isInterleaved = - programState.getTransformFeedbackBufferMode() == GL_INTERLEAVED_ATTRIBS; - bufferCount = isInterleaved ? 1 : programState.getLinkedTransformFeedbackVaryings().size(); + programExecutable.getTransformFeedbackBufferMode() == GL_INTERLEAVED_ATTRIBS; + bufferCount = + isInterleaved ? 1 : programExecutable.getLinkedTransformFeedbackVaryings().size(); } // Add entries for the transform feedback buffers to the info map, so they can have correct @@ -232,7 +238,7 @@ void AssignTransformFeedbackEmulationBindings(gl::ShaderType shaderType, for (uint32_t bufferIndex = 0; bufferIndex < bufferCount; ++bufferIndex) { AddResourceInfo(variableInfoMapOut, gl::ShaderBitSet().set(shaderType), shaderType, - GetXfbBufferName(bufferIndex), + ShaderVariableType::TransformFeedback, GetXfbBufferName(bufferIndex), programInterfaceInfo->uniformsAndXfbDescriptorSetIndex, programInterfaceInfo->currentUniformBindingIndex); ++programInterfaceInfo->currentUniformBindingIndex; @@ -242,7 +248,8 @@ void AssignTransformFeedbackEmulationBindings(gl::ShaderType shaderType, for (uint32_t bufferIndex = static_cast<uint32_t>(bufferCount); bufferIndex < gl::IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_BUFFERS; ++bufferIndex) { - variableInfoMapOut->add(shaderType, GetXfbBufferName(bufferIndex)); + variableInfoMapOut->add(shaderType, ShaderVariableType::TransformFeedback, + GetXfbBufferName(bufferIndex)); } } @@ -292,17 +299,17 @@ void AssignAttributeLocations(const gl::ProgramExecutable &programExecutable, const uint8_t componentCount = isMatrix ? rowCount : colCount; const uint8_t locationCount = isMatrix ? colCount : rowCount; - AddLocationInfo(variableInfoMapOut, shaderType, attribute.mappedName, attribute.location, + AddLocationInfo(variableInfoMapOut, shaderType, ShaderVariableType::Attribute, + attribute.mappedName, attribute.location, ShaderInterfaceVariableInfo::kInvalid, componentCount, locationCount); } } -void AssignSecondaryOutputLocations(const gl::ProgramState &programState, +void AssignSecondaryOutputLocations(const gl::ProgramExecutable &programExecutable, ShaderInterfaceVariableInfoMap *variableInfoMapOut) { - const auto &secondaryOutputLocations = - programState.getExecutable().getSecondaryOutputLocations(); - const auto &outputVariables = programState.getExecutable().getOutputVariables(); + const auto &secondaryOutputLocations = programExecutable.getSecondaryOutputLocations(); + const auto &outputVariables = programExecutable.getOutputVariables(); // Handle EXT_blend_func_extended secondary outputs (ones with index=1) for (const gl::VariableLocation &outputLocation : secondaryOutputLocations) @@ -317,9 +324,9 @@ void AssignSecondaryOutputLocations(const gl::ProgramState &programState, location = outputVar.location; } - ShaderInterfaceVariableInfo *info = - AddLocationInfo(variableInfoMapOut, gl::ShaderType::Fragment, outputVar.mappedName, - location, ShaderInterfaceVariableInfo::kInvalid, 0, 0); + ShaderInterfaceVariableInfo *info = AddLocationInfo( + variableInfoMapOut, gl::ShaderType::Fragment, ShaderVariableType::SecondaryOutput, + outputVar.mappedName, location, ShaderInterfaceVariableInfo::kInvalid, 0, 0); // If the shader source has not specified the index, specify it here. if (outputVar.index == -1) @@ -331,36 +338,36 @@ void AssignSecondaryOutputLocations(const gl::ProgramState &programState, } } // Handle secondary outputs for ESSL version less than 3.00 - gl::Shader *fragmentShader = programState.getAttachedShader(gl::ShaderType::Fragment); - if (fragmentShader && fragmentShader->getShaderVersion() == 100) + if (programExecutable.hasLinkedShaderStage(gl::ShaderType::Fragment) && + programExecutable.getLinkedShaderVersion(gl::ShaderType::Fragment) == 100) { - const auto &shaderOutputs = fragmentShader->getActiveOutputVariables(); - for (const auto &outputVar : shaderOutputs) + const std::vector<sh::ShaderVariable> &shaderOutputs = + programExecutable.getOutputVariables(); + for (const sh::ShaderVariable &outputVar : shaderOutputs) { if (outputVar.name == "gl_SecondaryFragColorEXT") { AddLocationInfo(variableInfoMapOut, gl::ShaderType::Fragment, - "webgl_SecondaryFragColor", 0, + ShaderVariableType::SecondaryOutput, "webgl_SecondaryFragColor", 0, ShaderInterfaceVariableInfo::kInvalid, 0, 0); } else if (outputVar.name == "gl_SecondaryFragDataEXT") { AddLocationInfo(variableInfoMapOut, gl::ShaderType::Fragment, - "webgl_SecondaryFragData", 0, ShaderInterfaceVariableInfo::kInvalid, - 0, 0); + ShaderVariableType::SecondaryOutput, "webgl_SecondaryFragData", 0, + ShaderInterfaceVariableInfo::kInvalid, 0, 0); } } } } -void AssignOutputLocations(const gl::ProgramState &programState, +void AssignOutputLocations(const gl::ProgramExecutable &programExecutable, const gl::ShaderType shaderType, ShaderInterfaceVariableInfoMap *variableInfoMapOut) { // Assign output locations for the fragment shader. ASSERT(shaderType == gl::ShaderType::Fragment); - const gl::ProgramExecutable &programExecutable = programState.getExecutable(); const auto &outputLocations = programExecutable.getOutputLocations(); const auto &outputVariables = programExecutable.getOutputVariables(); const std::array<std::string, 3> implicitOutputs = {"gl_FragDepth", "gl_SampleMask", @@ -386,20 +393,23 @@ void AssignOutputLocations(const gl::ProgramState &programState, implicitOutputs.begin(), implicitOutputs.end()) == 1); } - AddLocationInfo(variableInfoMapOut, shaderType, outputVar.mappedName, location, - ShaderInterfaceVariableInfo::kInvalid, 0, 0); + AddLocationInfo(variableInfoMapOut, shaderType, ShaderVariableType::Output, + outputVar.mappedName, location, ShaderInterfaceVariableInfo::kInvalid, + 0, 0); } } - AssignSecondaryOutputLocations(programState, variableInfoMapOut); + AssignSecondaryOutputLocations(programExecutable, variableInfoMapOut); // When no fragment output is specified by the shader, the translator outputs webgl_FragColor or // webgl_FragData. Add an entry for these. Even though the translator is already assigning // location 0 to these entries, adding an entry for them here allows us to ASSERT that every // shader interface variable is processed during the SPIR-V transformation. This is done when // iterating the ids provided by OpEntryPoint. - AddLocationInfo(variableInfoMapOut, shaderType, "webgl_FragColor", 0, 0, 0, 0); - AddLocationInfo(variableInfoMapOut, shaderType, "webgl_FragData", 0, 0, 0, 0); + AddLocationInfo(variableInfoMapOut, shaderType, ShaderVariableType::Output, "webgl_FragColor", + 0, 0, 0, 0); + AddLocationInfo(variableInfoMapOut, shaderType, ShaderVariableType::Output, "webgl_FragData", 0, + 0, 0, 0); } void AssignVaryingLocations(const GlslangSourceOptions &options, @@ -417,9 +427,9 @@ void AssignVaryingLocations(const GlslangSourceOptions &options, { uint32_t lineRasterEmulationPositionLocation = locationsUsedForEmulation++; - AddLocationInfo(variableInfoMapOut, shaderType, sh::vk::kLineRasterEmulationPosition, - lineRasterEmulationPositionLocation, ShaderInterfaceVariableInfo::kInvalid, - 0, 0); + AddLocationInfo(variableInfoMapOut, shaderType, ShaderVariableType::Varying, + sh::vk::kLineRasterEmulationPosition, lineRasterEmulationPositionLocation, + ShaderInterfaceVariableInfo::kInvalid, 0, 0); } // Assign varying locations. @@ -470,13 +480,14 @@ void AssignVaryingLocations(const GlslangSourceOptions &options, // If name is already in the map, it will automatically have marked all other stages // inactive. - if (variableInfoMapOut->contains(shaderType, varyingName)) + if (variableInfoMapOut->hasVariable(shaderType, varyingName)) { continue; } // Otherwise, add an entry for it with all locations inactive. - ShaderInterfaceVariableInfo &info = variableInfoMapOut->addOrGet(shaderType, varyingName); + ShaderInterfaceVariableInfo &info = + variableInfoMapOut->addOrGet(shaderType, ShaderVariableType::Varying, varyingName); ASSERT(info.location == ShaderInterfaceVariableInfo::kInvalid); } @@ -488,7 +499,8 @@ void AssignVaryingLocations(const GlslangSourceOptions &options, { ASSERT(gl::IsBuiltInName(builtInName)); - ShaderInterfaceVariableInfo &info = variableInfoMapOut->addOrGet(shaderType, builtInName); + ShaderInterfaceVariableInfo &info = + variableInfoMapOut->addOrGet(shaderType, ShaderVariableType::Varying, builtInName); info.activeStages.set(shaderType); info.varyingIsOutput = true; } @@ -502,18 +514,19 @@ void AssignVaryingLocations(const GlslangSourceOptions &options, ASSERT(gl::IsBuiltInName(builtInName)); ShaderInterfaceVariableInfo &info = - variableInfoMapOut->addOrGet(shaderType, builtInName); + variableInfoMapOut->addOrGet(shaderType, ShaderVariableType::Varying, builtInName); info.activeStages.set(shaderType); info.varyingIsInput = true; } } // Add an entry for gl_PerVertex, for use with transform feedback capture of built-ins. - ShaderInterfaceVariableInfo &info = variableInfoMapOut->addOrGet(shaderType, "gl_PerVertex"); + ShaderInterfaceVariableInfo &info = + variableInfoMapOut->addOrGet(shaderType, ShaderVariableType::Varying, "gl_PerVertex"); info.activeStages.set(shaderType); } -// Calculates XFB layout qualifier arguments for each tranform feedback varying. Stores calculated +// Calculates XFB layout qualifier arguments for each transform feedback varying. Stores calculated // values for the SPIR-V transformation. void AssignTransformFeedbackQualifiers(const gl::ProgramExecutable &programExecutable, const gl::VaryingPacking &varyingPacking, @@ -679,13 +692,15 @@ void AssignUniformBindings(const GlslangSourceOptions &options, if (programExecutable.hasLinkedShaderStage(shaderType)) { AddResourceInfo(variableInfoMapOut, gl::ShaderBitSet().set(shaderType), shaderType, - kDefaultUniformNames[shaderType], + ShaderVariableType::DefaultUniform, kDefaultUniformNames[shaderType], programInterfaceInfo->uniformsAndXfbDescriptorSetIndex, programInterfaceInfo->currentUniformBindingIndex); ++programInterfaceInfo->currentUniformBindingIndex; // Assign binding to the driver uniforms block - AddResourceInfoToAllStages(variableInfoMapOut, shaderType, sh::vk::kDriverUniformsBlockName, + AddResourceInfoToAllStages(variableInfoMapOut, shaderType, + ShaderVariableType::DriverUniform, + sh::vk::kDriverUniformsBlockName, programInterfaceInfo->driverUniformsDescriptorSetIndex, 0); } } @@ -705,6 +720,7 @@ bool InsertIfAbsent(UniformBindingIndexMap *uniformBindingIndexMapOut, } void AddAndUpdateResourceMaps(const gl::ShaderType shaderType, + ShaderVariableType variableType, std::string name, uint32_t *binding, bool updateBinding, @@ -721,8 +737,8 @@ void AddAndUpdateResourceMaps(const gl::ShaderType shaderType, } UniformBindingInfo &uniformBindingInfo = (*uniformBindingIndexMapOut)[name]; uniformBindingInfo.shaderBitSet.set(shaderType); - AddResourceInfo(variableInfoMapOut, uniformBindingInfo.shaderBitSet, shaderType, name, - descriptorSetIndex, uniformBindingInfo.bindingIndex); + AddResourceInfo(variableInfoMapOut, uniformBindingInfo.shaderBitSet, shaderType, variableType, + name, descriptorSetIndex, uniformBindingInfo.bindingIndex); if (!isUniqueName) { if (updateFrontShaderType) @@ -731,12 +747,12 @@ void AddAndUpdateResourceMaps(const gl::ShaderType shaderType, } else { - variableInfoMapOut->markAsDuplicate(shaderType, name); + variableInfoMapOut->markAsDuplicate(shaderType, variableType, name); } } - ShaderInterfaceVariableInfo &info = - variableInfoMapOut->get(uniformBindingInfo.frontShaderType, name); - info.activeStages = uniformBindingInfo.shaderBitSet; + + variableInfoMapOut->setActiveStages(uniformBindingInfo.frontShaderType, variableType, name, + uniformBindingInfo.shaderBitSet); } void AssignInputAttachmentBindings(const GlslangSourceOptions &options, @@ -764,8 +780,9 @@ void AssignInputAttachmentBindings(const GlslangSourceOptions &options, { uint32_t inputAttachmentBindingIndex = baseInputAttachmentBindingIndex + inputAttachmentUniform.location; - AddAndUpdateResourceMaps(shaderType, mappedInputAttachmentName, - &(inputAttachmentBindingIndex), false, false, + AddAndUpdateResourceMaps(shaderType, ShaderVariableType::FramebufferFetch, + mappedInputAttachmentName, &(inputAttachmentBindingIndex), + false, false, programInterfaceInfo->shaderResourceDescriptorSetIndex, uniformBindingIndexMapOut, variableInfoMapOut); hasFragmentInOutVars = true; @@ -785,6 +802,7 @@ void AssignInterfaceBlockBindings(const GlslangSourceOptions &options, const gl::ProgramExecutable &programExecutable, const std::vector<gl::InterfaceBlock> &blocks, const gl::ShaderType shaderType, + ShaderVariableType variableType, GlslangProgramInterfaceInfo *programInterfaceInfo, UniformBindingIndexMap *uniformBindingIndexMapOut, ShaderInterfaceVariableInfoMap *variableInfoMapOut) @@ -796,7 +814,7 @@ void AssignInterfaceBlockBindings(const GlslangSourceOptions &options, // TODO: http://anglebug.com/4523: All blocks should be active if (programExecutable.hasLinkedShaderStage(shaderType) && block.isActive(shaderType)) { - AddAndUpdateResourceMaps(shaderType, block.mappedName, + AddAndUpdateResourceMaps(shaderType, variableType, block.mappedName, &(programInterfaceInfo->currentShaderResourceBindingIndex), true, false, programInterfaceInfo->shaderResourceDescriptorSetIndex, @@ -821,7 +839,8 @@ void AssignAtomicCounterBufferBindings(const GlslangSourceOptions &options, if (programExecutable.hasLinkedShaderStage(shaderType)) { - AddAndUpdateResourceMaps(shaderType, sh::vk::kAtomicCountersBlockName, + AddAndUpdateResourceMaps(shaderType, ShaderVariableType::AtomicCounter, + sh::vk::kAtomicCountersBlockName, &(programInterfaceInfo->currentShaderResourceBindingIndex), true, false, programInterfaceInfo->shaderResourceDescriptorSetIndex, uniformBindingIndexMapOut, variableInfoMapOut); @@ -853,7 +872,7 @@ void AssignImageBindings(const GlslangSourceOptions &options, updateFrontShaderType = !imageUniform.isActive(uniformBindingInfo.frontShaderType); } - AddAndUpdateResourceMaps(shaderType, name, + AddAndUpdateResourceMaps(shaderType, ShaderVariableType::Image, name, &(programInterfaceInfo->currentShaderResourceBindingIndex), true, updateFrontShaderType, programInterfaceInfo->shaderResourceDescriptorSetIndex, @@ -878,14 +897,14 @@ void AssignNonTextureBindings(const GlslangSourceOptions &options, const std::vector<gl::InterfaceBlock> &uniformBlocks = programExecutable.getUniformBlocks(); AssignInterfaceBlockBindings(options, programExecutable, uniformBlocks, shaderType, - programInterfaceInfo, uniformBindingIndexMapOut, - variableInfoMapOut); + ShaderVariableType::UniformBuffer, programInterfaceInfo, + uniformBindingIndexMapOut, variableInfoMapOut); const std::vector<gl::InterfaceBlock> &storageBlocks = programExecutable.getShaderStorageBlocks(); AssignInterfaceBlockBindings(options, programExecutable, storageBlocks, shaderType, - programInterfaceInfo, uniformBindingIndexMapOut, - variableInfoMapOut); + ShaderVariableType::ShaderStorageBuffer, programInterfaceInfo, + uniformBindingIndexMapOut, variableInfoMapOut); const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers = programExecutable.getAtomicCounterBuffers(); @@ -926,7 +945,7 @@ void AssignTextureBindings(const GlslangSourceOptions &options, if (programExecutable.hasLinkedShaderStage(shaderType) && samplerUniform.isActive(shaderType)) { - AddAndUpdateResourceMaps(shaderType, samplerName, + AddAndUpdateResourceMaps(shaderType, ShaderVariableType::Texture, samplerName, &(programInterfaceInfo->currentTextureBindingIndex), true, false, programInterfaceInfo->textureDescriptorSetIndex, uniformBindingIndexMapOut, variableInfoMapOut); @@ -2133,10 +2152,10 @@ TransformationState SpirvTransformFeedbackCodeGenerator::transformVariable( { // The ANGLEXfbN variables are unconditionally generated and may be inactive. Remove these // variables in that case. - ASSERT(&info == &variableInfoMap.get(shaderType, GetXfbBufferName(0)) || - &info == &variableInfoMap.get(shaderType, GetXfbBufferName(1)) || - &info == &variableInfoMap.get(shaderType, GetXfbBufferName(2)) || - &info == &variableInfoMap.get(shaderType, GetXfbBufferName(3))); + ASSERT(&info == &variableInfoMap.getVariableByName(shaderType, GetXfbBufferName(0)) || + &info == &variableInfoMap.getVariableByName(shaderType, GetXfbBufferName(1)) || + &info == &variableInfoMap.getVariableByName(shaderType, GetXfbBufferName(2)) || + &info == &variableInfoMap.getVariableByName(shaderType, GetXfbBufferName(3))); // Drop the declaration. return TransformationState::Transformed; @@ -3200,7 +3219,7 @@ void SpirvTransformer::writeOutputPrologue() return; } - // Whether gl_Position should be transformed to account for prerotation and Vulkan clip space. + // Whether gl_Position should be transformed to account for pre-rotation and Vulkan clip space. const bool transformPosition = !IsRotationIdentity(mOptions.preRotation) || mOptions.transformPositionToVulkanClipSpace; const bool isXfbExtensionStage = @@ -3252,8 +3271,9 @@ void SpirvTransformer::visitDecorate(const uint32_t *instruction) spirv::LiteralString name = mIds.getName(id); ASSERT(name != nullptr); - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mOptions.shaderType, name); - mVariableInfoById[id] = &info; + const ShaderInterfaceVariableInfo &info = + mVariableInfoMap.getVariableByName(mOptions.shaderType, name); + mVariableInfoById[id] = &info; } } @@ -3274,12 +3294,13 @@ void SpirvTransformer::visitMemberName(const uint32_t *instruction) spirv::LiteralString name; spirv::ParseMemberName(instruction, &id, &member, &name); - if (!mVariableInfoMap.contains(mOptions.shaderType, name)) + if (!mVariableInfoMap.hasVariable(mOptions.shaderType, name)) { return; } - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mOptions.shaderType, name); + const ShaderInterfaceVariableInfo &info = + mVariableInfoMap.getVariableByName(mOptions.shaderType, name); mIds.visitMemberName(info, id, member, name); } @@ -3365,7 +3386,8 @@ void SpirvTransformer::visitVariable(const uint32_t *instruction) } // Every shader interface variable should have an associated data. - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mOptions.shaderType, name); + const ShaderInterfaceVariableInfo &info = + mVariableInfoMap.getVariableByName(mOptions.shaderType, name); // Associate the id of this name with its info. mVariableInfoById[id] = &info; @@ -4672,7 +4694,8 @@ bool HasAliasingAttributes(const ShaderInterfaceVariableInfoMap &variableInfoMap { gl::AttributesMask isLocationAssigned; - for (const auto &infoIter : variableInfoMap.getIterator(gl::ShaderType::Vertex)) + for (const auto &infoIter : + variableInfoMap.getIterator(gl::ShaderType::Vertex, ShaderVariableType::Attribute)) { const ShaderInterfaceVariableInfo &info = infoIter.second; @@ -4772,7 +4795,7 @@ std::string GetXfbBufferName(const uint32_t bufferIndex) } void GlslangAssignLocations(const GlslangSourceOptions &options, - const gl::ProgramState &programState, + const gl::ProgramExecutable &programExecutable, const gl::ProgramVaryingPacking &varyingPacking, const gl::ShaderType shaderType, const gl::ShaderType frontShaderType, @@ -4781,13 +4804,11 @@ void GlslangAssignLocations(const GlslangSourceOptions &options, UniformBindingIndexMap *uniformBindingIndexMapOut, ShaderInterfaceVariableInfoMap *variableInfoMapOut) { - const gl::ProgramExecutable &programExecutable = programState.getExecutable(); - // Assign outputs to the fragment shader, if any. if ((shaderType == gl::ShaderType::Fragment) && programExecutable.hasLinkedShaderStage(gl::ShaderType::Fragment)) { - AssignOutputLocations(programState, gl::ShaderType::Fragment, variableInfoMapOut); + AssignOutputLocations(programExecutable, gl::ShaderType::Fragment, variableInfoMapOut); } // Assign attributes to the vertex shader, if any. @@ -4797,7 +4818,7 @@ void GlslangAssignLocations(const GlslangSourceOptions &options, AssignAttributeLocations(programExecutable, gl::ShaderType::Vertex, variableInfoMapOut); } - if (!programExecutable.hasLinkedShaderStage(gl::ShaderType::Compute)) + if (programExecutable.hasLinkedGraphicsShader()) { const gl::VaryingPacking &inputPacking = varyingPacking.getInputPacking(shaderType); const gl::VaryingPacking &outputPacking = varyingPacking.getOutputPacking(shaderType); @@ -4839,13 +4860,14 @@ void GlslangAssignLocations(const GlslangSourceOptions &options, isTransformFeedbackStage = isTransformFeedbackStage && options.enableTransformFeedbackEmulation; - AssignTransformFeedbackEmulationBindings(shaderType, programState, isTransformFeedbackStage, - programInterfaceInfo, variableInfoMapOut); + AssignTransformFeedbackEmulationBindings(shaderType, programExecutable, + isTransformFeedbackStage, programInterfaceInfo, + variableInfoMapOut); } } void GlslangAssignTransformFeedbackLocations(gl::ShaderType shaderType, - const gl::ProgramState &programState, + const gl::ProgramExecutable &programExecutable, bool isTransformFeedbackStage, GlslangProgramInterfaceInfo *programInterfaceInfo, ShaderInterfaceVariableInfoMap *variableInfoMapOut) @@ -4854,7 +4876,7 @@ void GlslangAssignTransformFeedbackLocations(gl::ShaderType shaderType, // captured through ANGLEXfbPosition. const std::vector<gl::TransformFeedbackVarying> &tfVaryings = - programState.getLinkedTransformFeedbackVaryings(); + programExecutable.getLinkedTransformFeedbackVaryings(); bool capturesPosition = false; @@ -4876,7 +4898,8 @@ void GlslangAssignTransformFeedbackLocations(gl::ShaderType shaderType, if (capturesPosition) { - AddLocationInfo(variableInfoMapOut, shaderType, sh::vk::kXfbExtensionPositionOutName, + AddLocationInfo(variableInfoMapOut, shaderType, ShaderVariableType::Varying, + sh::vk::kXfbExtensionPositionOutName, programInterfaceInfo->locationsUsedForXfbExtension, 0, 0, 0); ++programInterfaceInfo->locationsUsedForXfbExtension; } @@ -4884,7 +4907,8 @@ void GlslangAssignTransformFeedbackLocations(gl::ShaderType shaderType, { // Make sure this varying is removed from the other stages, or if position is not captured // at all. - variableInfoMapOut->add(shaderType, sh::vk::kXfbExtensionPositionOutName); + variableInfoMapOut->add(shaderType, ShaderVariableType::Varying, + sh::vk::kXfbExtensionPositionOutName); } } @@ -4901,29 +4925,30 @@ void GlslangGetShaderSpirvCode(const GlslangSourceOptions &options, (*spirvBlobsOut)[shaderType] = glShader ? &glShader->getCompiledBinary() : nullptr; } + const gl::ProgramExecutable &programExecutable = programState.getExecutable(); gl::ShaderType xfbStage = programState.getAttachedTransformFeedbackStage(); gl::ShaderType frontShaderType = gl::ShaderType::InvalidEnum; // This should be done before assigning varying location. Otherwise, We can encounter shader // interface mismatching problem in case the transformFeedback stage is not Vertex stage. - for (const gl::ShaderType shaderType : programState.getExecutable().getLinkedShaderStages()) + for (const gl::ShaderType shaderType : programExecutable.getLinkedShaderStages()) { // Assign location to varyings generated for transform feedback capture - const bool isXfbStage = - shaderType == xfbStage && !programState.getLinkedTransformFeedbackVaryings().empty(); + const bool isXfbStage = shaderType == xfbStage && + !programExecutable.getLinkedTransformFeedbackVaryings().empty(); if (options.supportsTransformFeedbackExtension && gl::ShaderTypeSupportsTransformFeedback(shaderType)) { - GlslangAssignTransformFeedbackLocations(shaderType, programState, isXfbStage, + GlslangAssignTransformFeedbackLocations(shaderType, programExecutable, isXfbStage, programInterfaceInfo, variableInfoMapOut); } } UniformBindingIndexMap uniformBindingIndexMap; - for (const gl::ShaderType shaderType : programState.getExecutable().getLinkedShaderStages()) + for (const gl::ShaderType shaderType : programExecutable.getLinkedShaderStages()) { - const bool isXfbStage = - shaderType == xfbStage && !programState.getLinkedTransformFeedbackVaryings().empty(); - GlslangAssignLocations(options, programState, resources.varyingPacking, shaderType, + const bool isXfbStage = shaderType == xfbStage && + !programExecutable.getLinkedTransformFeedbackVaryings().empty(); + GlslangAssignLocations(options, programExecutable, resources.varyingPacking, shaderType, frontShaderType, isXfbStage, programInterfaceInfo, &uniformBindingIndexMap, variableInfoMapOut); diff --git a/src/libANGLE/renderer/glslang_wrapper_utils.h b/src/libANGLE/renderer/glslang_wrapper_utils.h index d27715d949..285734ba96 100644 --- a/src/libANGLE/renderer/glslang_wrapper_utils.h +++ b/src/libANGLE/renderer/glslang_wrapper_utils.h @@ -144,7 +144,7 @@ std::string GlslangGetMappedSamplerName(const std::string &originalName); std::string GetXfbBufferName(const uint32_t bufferIndex); void GlslangAssignLocations(const GlslangSourceOptions &options, - const gl::ProgramState &programState, + const gl::ProgramExecutable &programExecutable, const gl::ProgramVaryingPacking &varyingPacking, const gl::ShaderType shaderType, const gl::ShaderType frontShaderType, @@ -154,7 +154,7 @@ void GlslangAssignLocations(const GlslangSourceOptions &options, ShaderInterfaceVariableInfoMap *variableInfoMapOut); void GlslangAssignTransformFeedbackLocations(gl::ShaderType shaderType, - const gl::ProgramState &programState, + const gl::ProgramExecutable &programExecutable, bool isTransformFeedbackStage, GlslangProgramInterfaceInfo *programInterfaceInfo, ShaderInterfaceVariableInfoMap *variableInfoMapOut); diff --git a/src/libANGLE/renderer/metal/mtl_glslang_utils.mm b/src/libANGLE/renderer/metal/mtl_glslang_utils.mm index e2ecc03598..f70742ed69 100644 --- a/src/libANGLE/renderer/metal/mtl_glslang_utils.mm +++ b/src/libANGLE/renderer/metal/mtl_glslang_utils.mm @@ -393,15 +393,17 @@ void GlslangGetShaderSpirvCode(const gl::ProgramState &programState, rx::GlslangGetShaderSpirvCode(options, programState, resources, &programInterfaceInfo, spirvBlobsOut, variableInfoMapOut); + const gl::ProgramExecutable &programExecutable = programState.getExecutable(); + // Fill variable info map with transform feedback enabled. - if (!programState.getLinkedTransformFeedbackVaryings().empty()) + if (!programExecutable.getLinkedTransformFeedbackVaryings().empty()) { GlslangProgramInterfaceInfo xfbOnlyInterfaceInfo; ResetGlslangProgramInterfaceInfo(&xfbOnlyInterfaceInfo); options.enableTransformFeedbackEmulation = true; UniformBindingIndexMap uniformBindingIndexMap; - GlslangAssignLocations(options, programState, resources.varyingPacking, + GlslangAssignLocations(options, programExecutable, resources.varyingPacking, gl::ShaderType::Vertex, gl::ShaderType::InvalidEnum, true, &xfbOnlyInterfaceInfo, &uniformBindingIndexMap, xfbOnlyVSVariableInfoMapOut); @@ -457,11 +459,10 @@ angle::Result SpirvCodeToMsl(Context *context, angle::HashMap<uint32_t, uint32_t> xfbOriginalBindings; for (uint32_t bufferIdx = 0; bufferIdx < kMaxShaderXFBs; ++bufferIdx) { - std::string bufferName = rx::GetXfbBufferName(bufferIdx); - if (xfbVSVariableInfoMap.contains(gl::ShaderType::Vertex, bufferName)) + if (xfbVSVariableInfoMap.hasTransformFeedbackInfo(gl::ShaderType::Vertex, bufferIdx)) { const ShaderInterfaceVariableInfo &info = - xfbVSVariableInfoMap.get(gl::ShaderType::Vertex, bufferName); + xfbVSVariableInfoMap.getTransformFeedbackInfo(gl::ShaderType::Vertex, bufferIdx); xfbOriginalBindings[info.binding] = bufferIdx; } } diff --git a/src/libANGLE/renderer/metal/mtl_utils.mm b/src/libANGLE/renderer/metal/mtl_utils.mm index ced5a7bd5d..d70684cac3 100644 --- a/src/libANGLE/renderer/metal/mtl_utils.mm +++ b/src/libANGLE/renderer/metal/mtl_utils.mm @@ -278,19 +278,20 @@ bool GetCompressedBufferSizeAndRowLengthForTextureWithFormat(const TextureRef &t { gl::Extents size = texture->size(index); GLuint bufferSizeInBytes; - uint32_t bufferRowLength; + GLuint bufferRowInBytes; if (!textureObjFormat.intendedInternalFormat().computeCompressedImageSize(size, &bufferSizeInBytes)) { return false; } - if (!textureObjFormat.intendedInternalFormat().computeBufferRowLength(size.width, - &bufferRowLength)) + size.height = 1; + if (!textureObjFormat.intendedInternalFormat().computeCompressedImageSize(size, + &bufferRowInBytes)) { return false; } *bytesPerImageOut = bufferSizeInBytes; - *bytesPerRowOut = bufferRowLength; + *bytesPerRowOut = bufferRowInBytes; return true; } static angle::Result InitializeCompressedTextureContents(const gl::Context *context, diff --git a/src/libANGLE/renderer/vulkan/BufferVk.cpp b/src/libANGLE/renderer/vulkan/BufferVk.cpp index 9c9cee78d8..120db49aae 100644 --- a/src/libANGLE/renderer/vulkan/BufferVk.cpp +++ b/src/libANGLE/renderer/vulkan/BufferVk.cpp @@ -548,7 +548,7 @@ angle::Result BufferVk::ghostMappedBuffer(ContextVk *contextVk, GLbitfield access, void **mapPtr) { - // We should't get to here if it is external memory + // We shouldn't get here if it is external memory ASSERT(!isExternalBuffer()); ++contextVk->getPerfCounters().buffersGhosted; @@ -558,9 +558,6 @@ angle::Result BufferVk::ghostMappedBuffer(ContextVk *contextVk, // case the caller only updates a portion of the new buffer. vk::BufferHelper src = std::move(mBuffer); - // Retain it to prevent acquireBufferHelper from actually releasing it. - src.retainReadOnly(&contextVk->getResourceUseList()); - ANGLE_TRY(acquireBufferHelper(contextVk, static_cast<size_t>(mState.getSize()), BufferUpdateType::ContentsUpdate)); @@ -861,12 +858,6 @@ angle::Result BufferVk::acquireAndUpdate(ContextVk *contextVk, { src = std::move(mBuffer); - // It's possible for acquireBufferHelper() to garbage collect the original (src) buffer - // before copyFromBuffer() has a chance to retain it, so retain it now. This may end up - // double-retaining the buffer, which is a necessary side-effect to prevent a - // use-after-free. - src.retainReadOnly(&contextVk->getResourceUseList()); - // The total bytes that we need to copy from old buffer to new buffer size_t copySize = bufferSize - updateSize; diff --git a/src/libANGLE/renderer/vulkan/ContextVk.cpp b/src/libANGLE/renderer/vulkan/ContextVk.cpp index 90ecf42b2c..bdc4ea1726 100644 --- a/src/libANGLE/renderer/vulkan/ContextVk.cpp +++ b/src/libANGLE/renderer/vulkan/ContextVk.cpp @@ -827,6 +827,7 @@ ContextVk::ContextVk(const gl::State &state, gl::ErrorSet *errorSet, RendererVk mGraphicsDirtyBitHandlers[DIRTY_BIT_VERTEX_BUFFERS] = &ContextVk::handleDirtyGraphicsVertexBuffers; mGraphicsDirtyBitHandlers[DIRTY_BIT_INDEX_BUFFER] = &ContextVk::handleDirtyGraphicsIndexBuffer; + mGraphicsDirtyBitHandlers[DIRTY_BIT_UNIFORMS] = &ContextVk::handleDirtyGraphicsUniforms; mGraphicsDirtyBitHandlers[DIRTY_BIT_DRIVER_UNIFORMS] = &ContextVk::handleDirtyGraphicsDriverUniforms; mGraphicsDirtyBitHandlers[DIRTY_BIT_DRIVER_UNIFORMS_BINDING] = @@ -863,6 +864,7 @@ ContextVk::ContextVk(const gl::State &state, gl::ErrorSet *errorSet, RendererVk mComputeDirtyBitHandlers[DIRTY_BIT_PIPELINE_BINDING] = &ContextVk::handleDirtyComputePipelineBinding; mComputeDirtyBitHandlers[DIRTY_BIT_TEXTURES] = &ContextVk::handleDirtyComputeTextures; + mComputeDirtyBitHandlers[DIRTY_BIT_UNIFORMS] = &ContextVk::handleDirtyComputeUniforms; mComputeDirtyBitHandlers[DIRTY_BIT_DRIVER_UNIFORMS] = &ContextVk::handleDirtyComputeDriverUniforms; mComputeDirtyBitHandlers[DIRTY_BIT_DRIVER_UNIFORMS_BINDING] = @@ -928,7 +930,7 @@ ContextVk::~ContextVk() = default; void ContextVk::onDestroy(const gl::Context *context) { // Remove context from the share group - mShareGroupVk->getContexts()->erase(this); + mShareGroupVk->removeContext(this); // This will not destroy any resources. It will release them to be collected after finish. mIncompleteTextures.onDestroy(context); @@ -1149,7 +1151,7 @@ angle::Result ContextVk::initialize() ANGLE_TRY(mEmptyBuffer.init(this, emptyBufferInfo, kMemoryType)); // Add context into the share group - mShareGroupVk->getContexts()->insert(this); + mShareGroupVk->addContext(this); return angle::Result::Continue; } @@ -1220,13 +1222,7 @@ angle::Result ContextVk::setupDraw(const gl::Context *context, ProgramExecutableVk *programExecutableVk = getExecutable(); if (programExecutableVk->hasDirtyUniforms()) { - TransformFeedbackVk *transformFeedbackVk = - vk::SafeGetImpl(mState.getCurrentTransformFeedback()); - ANGLE_TRY(programExecutableVk->updateUniforms( - this, &mUpdateDescriptorSetsBuilder, &mResourceUseList, &mEmptyBuffer, - *mState.getProgramExecutable(), &mDefaultUniformStorage, - mState.isTransformFeedbackActiveUnpaused(), transformFeedbackVk)); - mGraphicsDirtyBits.set(DIRTY_BIT_DESCRIPTOR_SETS); + mGraphicsDirtyBits.set(DIRTY_BIT_UNIFORMS); } // Update transform feedback offsets on every draw call when emulating transform feedback. This @@ -1476,12 +1472,7 @@ angle::Result ContextVk::setupDispatch(const gl::Context *context) ProgramExecutableVk *programExecutableVk = getExecutable(); if (programExecutableVk->hasDirtyUniforms()) { - TransformFeedbackVk *transformFeedbackVk = - vk::SafeGetImpl(mState.getCurrentTransformFeedback()); - ANGLE_TRY(programExecutableVk->updateUniforms( - this, &mUpdateDescriptorSetsBuilder, &mResourceUseList, &mEmptyBuffer, - *mState.getProgramExecutable(), &mDefaultUniformStorage, - mState.isTransformFeedbackActiveUnpaused(), transformFeedbackVk)); + mComputeDirtyBits.set(DIRTY_BIT_UNIFORMS); mComputeDirtyBits.set(DIRTY_BIT_DESCRIPTOR_SETS); } @@ -2390,6 +2381,31 @@ angle::Result ContextVk::handleDirtyGraphicsDescriptorSets(DirtyBits::Iterator * return handleDirtyDescriptorSetsImpl(mRenderPassCommandBuffer, PipelineType::Graphics); } +angle::Result ContextVk::handleDirtyGraphicsUniforms(DirtyBits::Iterator *dirtyBitsIterator, + DirtyBits dirtyBitMask) +{ + dirtyBitsIterator->setLaterBit(DIRTY_BIT_DESCRIPTOR_SETS); + return handleDirtyUniformsImpl(); +} + +angle::Result ContextVk::handleDirtyComputeUniforms() +{ + return handleDirtyUniformsImpl(); +} + +angle::Result ContextVk::handleDirtyUniformsImpl() +{ + ProgramExecutableVk *programExecutableVk = getExecutable(); + TransformFeedbackVk *transformFeedbackVk = + vk::SafeGetImpl(mState.getCurrentTransformFeedback()); + ANGLE_TRY(programExecutableVk->updateUniforms( + this, &mUpdateDescriptorSetsBuilder, &mResourceUseList, &mEmptyBuffer, + *mState.getProgramExecutable(), &mDefaultUniformStorage, + mState.isTransformFeedbackActiveUnpaused(), transformFeedbackVk)); + + return angle::Result::Continue; +} + angle::Result ContextVk::handleDirtyGraphicsViewport(DirtyBits::Iterator *dirtyBitsIterator, DirtyBits dirtyBitMask) { diff --git a/src/libANGLE/renderer/vulkan/ContextVk.h b/src/libANGLE/renderer/vulkan/ContextVk.h index 6c6a3797c6..85f64ae14f 100644 --- a/src/libANGLE/renderer/vulkan/ContextVk.h +++ b/src/libANGLE/renderer/vulkan/ContextVk.h @@ -777,6 +777,7 @@ class ContextVk : public ContextImpl, public vk::Context, public MultisampleText DIRTY_BIT_TEXTURES, DIRTY_BIT_VERTEX_BUFFERS, DIRTY_BIT_INDEX_BUFFER, + DIRTY_BIT_UNIFORMS, DIRTY_BIT_DRIVER_UNIFORMS, DIRTY_BIT_DRIVER_UNIFORMS_BINDING, // Shader resources excluding textures, which are handled separately. @@ -835,6 +836,8 @@ class ContextVk : public ContextImpl, public vk::Context, public MultisampleText "Render pass using dirty bit must be handled after the render pass dirty bit"); static_assert(DIRTY_BIT_DESCRIPTOR_SETS > DIRTY_BIT_RENDER_PASS, "Render pass using dirty bit must be handled after the render pass dirty bit"); + static_assert(DIRTY_BIT_UNIFORMS > DIRTY_BIT_RENDER_PASS, + "Render pass using dirty bit must be handled after the render pass dirty bit"); static_assert(DIRTY_BIT_FRAMEBUFFER_FETCH_BARRIER > DIRTY_BIT_RENDER_PASS, "Render pass using dirty bit must be handled after the render pass dirty bit"); static_assert(DIRTY_BIT_BLEND_BARRIER > DIRTY_BIT_RENDER_PASS, @@ -1031,6 +1034,8 @@ class ContextVk : public ContextImpl, public vk::Context, public MultisampleText DirtyBits dirtyBitMask); angle::Result handleDirtyGraphicsDescriptorSets(DirtyBits::Iterator *dirtyBitsIterator, DirtyBits dirtyBitMask); + angle::Result handleDirtyGraphicsUniforms(DirtyBits::Iterator *dirtyBitsIterator, + DirtyBits dirtyBitMask); angle::Result handleDirtyGraphicsViewport(DirtyBits::Iterator *dirtyBitsIterator, DirtyBits dirtyBitMask); angle::Result handleDirtyGraphicsScissor(DirtyBits::Iterator *dirtyBitsIterator, @@ -1046,8 +1051,10 @@ class ContextVk : public ContextImpl, public vk::Context, public MultisampleText angle::Result handleDirtyComputeDriverUniformsBinding(); angle::Result handleDirtyComputeShaderResources(); angle::Result handleDirtyComputeDescriptorSets(); + angle::Result handleDirtyComputeUniforms(); // Common parts of the common dirty bit handlers. + angle::Result handleDirtyUniformsImpl(); angle::Result handleDirtyMemoryBarrierImpl(DirtyBits::Iterator *dirtyBitsIterator, DirtyBits dirtyBitMask); template <typename CommandBufferT> diff --git a/src/libANGLE/renderer/vulkan/DisplayVk.cpp b/src/libANGLE/renderer/vulkan/DisplayVk.cpp index 324c4d608f..6f13790e48 100644 --- a/src/libANGLE/renderer/vulkan/DisplayVk.cpp +++ b/src/libANGLE/renderer/vulkan/DisplayVk.cpp @@ -412,6 +412,16 @@ ShareGroupVk::ShareGroupVk() mLastPruneTime = angle::GetCurrentSystemTime(); } +void ShareGroupVk::addContext(ContextVk *contextVk) +{ + mContexts.insert(contextVk); +} + +void ShareGroupVk::removeContext(ContextVk *contextVk) +{ + mContexts.erase(contextVk); +} + void ShareGroupVk::onDestroy(const egl::Display *display) { RendererVk *renderer = vk::GetImpl(display)->getRenderer(); diff --git a/src/libANGLE/renderer/vulkan/DisplayVk.h b/src/libANGLE/renderer/vulkan/DisplayVk.h index c5f22c8fde..4ce0c22485 100644 --- a/src/libANGLE/renderer/vulkan/DisplayVk.h +++ b/src/libANGLE/renderer/vulkan/DisplayVk.h @@ -34,19 +34,13 @@ class ShareGroupVk : public ShareGroupImpl // synchronous update to the caches. PipelineLayoutCache &getPipelineLayoutCache() { return mPipelineLayoutCache; } DescriptorSetLayoutCache &getDescriptorSetLayoutCache() { return mDescriptorSetLayoutCache; } - ContextVkSet *getContexts() { return &mContexts; } + const ContextVkSet &getContexts() const { return mContexts; } void releaseResourceUseLists(const Serial &submitSerial); void acquireResourceUseList(vk::ResourceUseList &&resourceUseList) { mResourceUseLists.emplace_back(std::move(resourceUseList)); } - void copyResourceUseList(vk::ResourceUseList &resourceUseList) - { - vk::ResourceUseList copyResourceUseList; - copyResourceUseList.copy(resourceUseList); - mResourceUseLists.emplace_back(std::move(copyResourceUseList)); - } vk::BufferPool *getDefaultBufferPool(RendererVk *renderer, VkDeviceSize size, @@ -54,6 +48,9 @@ class ShareGroupVk : public ShareGroupImpl void pruneDefaultBufferPools(RendererVk *renderer); bool isDueForBufferPoolPrune(); + void addContext(ContextVk *contextVk); + void removeContext(ContextVk *contextVk); + private: // ANGLE uses a PipelineLayout cache to store compatible pipeline layouts. PipelineLayoutCache mPipelineLayoutCache; diff --git a/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp b/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp index 3e47d035c7..a192d822f7 100644 --- a/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp +++ b/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp @@ -305,32 +305,36 @@ std::unique_ptr<rx::LinkEvent> ProgramExecutableVk::load(ContextVk *contextVk, for (gl::ShaderType shaderType : gl::AllShaderTypes()) { - size_t variableInfoMapSize = stream->readInt<size_t>(); - - for (size_t i = 0; i < variableInfoMapSize; ++i) + for (ShaderVariableType variableType : angle::AllEnums<ShaderVariableType>()) { - const std::string variableName = stream->readString(); - ShaderInterfaceVariableInfo &info = mVariableInfoMap.add(shaderType, variableName); - - info.descriptorSet = stream->readInt<uint32_t>(); - info.binding = stream->readInt<uint32_t>(); - info.location = stream->readInt<uint32_t>(); - info.component = stream->readInt<uint32_t>(); - info.index = stream->readInt<uint32_t>(); - // PackedEnumBitSet uses uint8_t - info.activeStages = gl::ShaderBitSet(stream->readInt<uint8_t>()); - LoadShaderInterfaceVariableXfbInfo(stream, &info.xfb); - info.fieldXfb.resize(stream->readInt<size_t>()); - for (ShaderInterfaceVariableXfbInfo &xfb : info.fieldXfb) + size_t variableInfoMapSize = stream->readInt<size_t>(); + + for (size_t i = 0; i < variableInfoMapSize; ++i) { - LoadShaderInterfaceVariableXfbInfo(stream, &xfb); + const std::string variableName = stream->readString(); + ShaderInterfaceVariableInfo &info = + mVariableInfoMap.add(shaderType, variableType, variableName); + + info.descriptorSet = stream->readInt<uint32_t>(); + info.binding = stream->readInt<uint32_t>(); + info.location = stream->readInt<uint32_t>(); + info.component = stream->readInt<uint32_t>(); + info.index = stream->readInt<uint32_t>(); + // PackedEnumBitSet uses uint8_t + info.activeStages = gl::ShaderBitSet(stream->readInt<uint8_t>()); + LoadShaderInterfaceVariableXfbInfo(stream, &info.xfb); + info.fieldXfb.resize(stream->readInt<size_t>()); + for (ShaderInterfaceVariableXfbInfo &xfb : info.fieldXfb) + { + LoadShaderInterfaceVariableXfbInfo(stream, &xfb); + } + info.useRelaxedPrecision = stream->readBool(); + info.varyingIsInput = stream->readBool(); + info.varyingIsOutput = stream->readBool(); + info.attributeComponentCount = stream->readInt<uint8_t>(); + info.attributeLocationCount = stream->readInt<uint8_t>(); + info.isDuplicate = stream->readBool(); } - info.useRelaxedPrecision = stream->readBool(); - info.varyingIsInput = stream->readBool(); - info.varyingIsOutput = stream->readBool(); - info.attributeComponentCount = stream->readInt<uint8_t>(); - info.attributeLocationCount = stream->readInt<uint8_t>(); - info.isDuplicate = stream->readBool(); } } @@ -371,32 +375,35 @@ void ProgramExecutableVk::save(gl::BinaryOutputStream *stream) { for (gl::ShaderType shaderType : gl::AllShaderTypes()) { - stream->writeInt(mVariableInfoMap.variableCount(shaderType)); - for (const auto &it : mVariableInfoMap.getIterator(shaderType)) + for (ShaderVariableType variableType : angle::AllEnums<ShaderVariableType>()) { - const std::string &name = it.first; - const ShaderInterfaceVariableInfo &info = it.second; - - stream->writeString(name); - stream->writeInt(info.descriptorSet); - stream->writeInt(info.binding); - stream->writeInt(info.location); - stream->writeInt(info.component); - stream->writeInt(info.index); - // PackedEnumBitSet uses uint8_t - stream->writeInt(info.activeStages.bits()); - SaveShaderInterfaceVariableXfbInfo(info.xfb, stream); - stream->writeInt(info.fieldXfb.size()); - for (const ShaderInterfaceVariableXfbInfo &xfb : info.fieldXfb) + stream->writeInt(mVariableInfoMap.variableCount(shaderType, variableType)); + for (const auto &it : mVariableInfoMap.getIterator(shaderType, variableType)) { - SaveShaderInterfaceVariableXfbInfo(xfb, stream); + const std::string &name = it.first; + const ShaderInterfaceVariableInfo &info = it.second; + + stream->writeString(name); + stream->writeInt(info.descriptorSet); + stream->writeInt(info.binding); + stream->writeInt(info.location); + stream->writeInt(info.component); + stream->writeInt(info.index); + // PackedEnumBitSet uses uint8_t + stream->writeInt(info.activeStages.bits()); + SaveShaderInterfaceVariableXfbInfo(info.xfb, stream); + stream->writeInt(info.fieldXfb.size()); + for (const ShaderInterfaceVariableXfbInfo &xfb : info.fieldXfb) + { + SaveShaderInterfaceVariableXfbInfo(xfb, stream); + } + stream->writeBool(info.useRelaxedPrecision); + stream->writeBool(info.varyingIsInput); + stream->writeBool(info.varyingIsOutput); + stream->writeInt(info.attributeComponentCount); + stream->writeInt(info.attributeLocationCount); + stream->writeBool(info.isDuplicate); } - stream->writeBool(info.useRelaxedPrecision); - stream->writeBool(info.varyingIsInput); - stream->writeBool(info.varyingIsOutput); - stream->writeInt(info.attributeComponentCount); - stream->writeInt(info.attributeLocationCount); - stream->writeBool(info.isDuplicate); } } @@ -531,25 +538,26 @@ angle::Result ProgramExecutableVk::allocateDescriptorSetAndGetInfo( } void ProgramExecutableVk::addInterfaceBlockDescriptorSetDesc( + const gl::ProgramExecutable &glExecutable, const std::vector<gl::InterfaceBlock> &blocks, gl::ShaderType shaderType, + ShaderVariableType variableType, VkDescriptorType descType, vk::DescriptorSetLayoutDesc *descOut) { - for (uint32_t bufferIndex = 0; bufferIndex < blocks.size();) + for (uint32_t bufferIndex = 0, arraySize = 0; bufferIndex < blocks.size(); + bufferIndex += arraySize) { gl::InterfaceBlock block = blocks[bufferIndex]; - const uint32_t arraySize = GetInterfaceBlockArraySize(blocks, bufferIndex); - bufferIndex += arraySize; + arraySize = GetInterfaceBlockArraySize(blocks, bufferIndex); if (!block.isActive(shaderType)) { continue; } - const std::string blockName = block.mappedName; - - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, blockName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getIndexedVariableInfo( + glExecutable, shaderType, variableType, bufferIndex); if (info.isDuplicate) { continue; @@ -566,19 +574,12 @@ void ProgramExecutableVk::addAtomicCounterBufferDescriptorSetDesc( gl::ShaderType shaderType, vk::DescriptorSetLayoutDesc *descOut) { - if (atomicCounterBuffers.empty()) + if (atomicCounterBuffers.empty() || !mVariableInfoMap.hasAtomicCounterInfo(shaderType)) { return; } - std::string blockName(sh::vk::kAtomicCountersBlockName); - - if (!mVariableInfoMap.contains(shaderType, blockName)) - { - return; - } - - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, blockName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getAtomicCounterInfo(shaderType); if (info.isDuplicate || !info.activeStages[shaderType]) { return; @@ -599,23 +600,23 @@ void ProgramExecutableVk::addImageDescriptorSetDesc(const gl::ProgramExecutable for (uint32_t imageIndex = 0; imageIndex < imageBindings.size(); ++imageIndex) { - const gl::ImageBinding &imageBinding = imageBindings[imageIndex]; - uint32_t uniformIndex = executable.getUniformIndexFromImageIndex(imageIndex); + uint32_t uniformIndex = executable.getUniformIndexFromImageIndex(imageIndex); const gl::LinkedUniform &imageUniform = uniforms[uniformIndex]; - std::string imageName = GlslangGetMappedSamplerName(imageUniform.name); - - // The front-end always binds array image units sequentially. - uint32_t arraySize = static_cast<uint32_t>(imageBinding.boundImageUnits.size()); - // 2D arrays are split into multiple 1D arrays when generating LinkedUniforms. Since they // are flattened into one array, ignore the nonzero elements and expand the array to the // total array size. - if (gl::SamplerNameContainsNonZeroArrayElement(imageUniform.name)) + if (imageUniform.outerArrayOffset > 0) { + ASSERT(gl::SamplerNameContainsNonZeroArrayElement(imageUniform.name)); continue; } + ASSERT(!gl::SamplerNameContainsNonZeroArrayElement(imageUniform.name)); + + // The front-end always binds array image units sequentially. + const gl::ImageBinding &imageBinding = imageBindings[imageIndex]; + uint32_t arraySize = static_cast<uint32_t>(imageBinding.boundImageUnits.size()); for (unsigned int outerArraySize : imageUniform.outerArraySizes) { arraySize *= outerArraySize; @@ -628,8 +629,8 @@ void ProgramExecutableVk::addImageDescriptorSetDesc(const gl::ProgramExecutable continue; } - GetImageNameWithoutIndices(&imageName); - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, imageName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getIndexedVariableInfo( + executable, shaderType, ShaderVariableType::Image, imageIndex); if (info.isDuplicate) { continue; @@ -655,23 +656,21 @@ void ProgramExecutableVk::addInputAttachmentDescriptorSetDesc( return; } - const std::vector<gl::LinkedUniform> &uniforms = executable.getUniforms(); - if (!executable.usesFramebufferFetch()) { return; } - const uint32_t baseUniformIndex = executable.getFragmentInoutRange().low(); - const gl::LinkedUniform &baseInputAttachment = uniforms.at(baseUniformIndex); - std::string baseMappedName = baseInputAttachment.mappedName; - ShaderInterfaceVariableInfo &baseInfo = mVariableInfoMap.get(shaderType, baseMappedName); - + const ShaderInterfaceVariableInfo &baseInfo = + mVariableInfoMap.getFramebufferFetchInfo(executable, shaderType); if (baseInfo.isDuplicate) { return; } + const std::vector<gl::LinkedUniform> &uniforms = executable.getUniforms(); + const uint32_t baseUniformIndex = executable.getFragmentInoutRange().low(); + const gl::LinkedUniform &baseInputAttachment = uniforms.at(baseUniformIndex); uint32_t baseBinding = baseInfo.binding - baseInputAttachment.location; for (uint32_t colorIndex = 0; colorIndex < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; ++colorIndex) @@ -693,24 +692,23 @@ angle::Result ProgramExecutableVk::addTextureDescriptorSetDesc( for (uint32_t textureIndex = 0; textureIndex < samplerBindings.size(); ++textureIndex) { - const gl::SamplerBinding &samplerBinding = samplerBindings[textureIndex]; - uint32_t uniformIndex = executable.getUniformIndexFromSamplerIndex(textureIndex); const gl::LinkedUniform &samplerUniform = uniforms[uniformIndex]; - const std::string samplerName = GlslangGetMappedSamplerName(samplerUniform.name); - - // The front-end always binds array sampler units sequentially. - uint32_t arraySize = static_cast<uint32_t>(samplerBinding.boundTextureUnits.size()); - // 2D arrays are split into multiple 1D arrays when generating LinkedUniforms. Since they // are flattened into one array, ignore the nonzero elements and expand the array to the // total array size. - if (gl::SamplerNameContainsNonZeroArrayElement(samplerUniform.name)) + if (samplerUniform.outerArrayOffset > 0) { + ASSERT(gl::SamplerNameContainsNonZeroArrayElement(samplerUniform.name)); continue; } + ASSERT(!gl::SamplerNameContainsNonZeroArrayElement(samplerUniform.name)); + + // The front-end always binds array sampler units sequentially. + const gl::SamplerBinding &samplerBinding = samplerBindings[textureIndex]; + uint32_t arraySize = static_cast<uint32_t>(samplerBinding.boundTextureUnits.size()); for (unsigned int outerArraySize : samplerUniform.outerArraySizes) { arraySize *= outerArraySize; @@ -723,7 +721,8 @@ angle::Result ProgramExecutableVk::addTextureDescriptorSetDesc( continue; } - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, samplerName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getIndexedVariableInfo( + executable, shaderType, ShaderVariableType::Texture, textureIndex); if (info.isDuplicate) { continue; @@ -1005,9 +1004,8 @@ angle::Result ProgramExecutableVk::createPipelineLayout( mNumDefaultUniformDescriptors = 0; for (gl::ShaderType shaderType : linkedShaderStages) { - const std::string uniformBlockName = kDefaultUniformNames[shaderType]; const ShaderInterfaceVariableInfo &info = - mVariableInfoMap.get(shaderType, uniformBlockName); + mVariableInfoMap.getDefaultUniformInfo(shaderType); if (info.isDuplicate || !info.activeStages[shaderType]) { continue; @@ -1072,9 +1070,11 @@ angle::Result ProgramExecutableVk::createPipelineLayout( for (gl::ShaderType shaderType : linkedShaderStages) { - addInterfaceBlockDescriptorSetDesc(glExecutable.getUniformBlocks(), shaderType, + addInterfaceBlockDescriptorSetDesc(glExecutable, glExecutable.getUniformBlocks(), + shaderType, ShaderVariableType::UniformBuffer, mUniformBufferDescriptorType, &resourcesSetDesc); - addInterfaceBlockDescriptorSetDesc(glExecutable.getShaderStorageBlocks(), shaderType, + addInterfaceBlockDescriptorSetDesc(glExecutable, glExecutable.getShaderStorageBlocks(), + shaderType, ShaderVariableType::ShaderStorageBuffer, kStorageBufferDescriptorType, &resourcesSetDesc); addAtomicCounterBufferDescriptorSetDesc(glExecutable.getAtomicCounterBuffers(), shaderType, &resourcesSetDesc); @@ -1163,8 +1163,9 @@ void ProgramExecutableVk::resolvePrecisionMismatch(const gl::ProgramMergedVaryin if (frontPrecision > backPrecision) { // The output is higher precision than the input - ShaderInterfaceVariableInfo &info = mVariableInfoMap.get( - mergedVarying.frontShaderStage, mergedVarying.frontShader->mappedName); + ShaderInterfaceVariableInfo &info = mVariableInfoMap.getMutable( + mergedVarying.frontShaderStage, ShaderVariableType::Varying, + mergedVarying.frontShader->mappedName); info.varyingIsOutput = true; info.useRelaxedPrecision = true; } @@ -1172,8 +1173,9 @@ void ProgramExecutableVk::resolvePrecisionMismatch(const gl::ProgramMergedVaryin { // The output is lower precision than the input, adjust the input ASSERT(backPrecision > frontPrecision); - ShaderInterfaceVariableInfo &info = mVariableInfoMap.get( - mergedVarying.backShaderStage, mergedVarying.backShader->mappedName); + ShaderInterfaceVariableInfo &info = mVariableInfoMap.getMutable( + mergedVarying.backShaderStage, ShaderVariableType::Varying, + mergedVarying.backShader->mappedName); info.varyingIsInput = true; info.useRelaxedPrecision = true; } @@ -1189,9 +1191,7 @@ void ProgramExecutableVk::updateDefaultUniformsDescriptorSet( const DefaultUniformBlock &defaultUniformBlock, vk::BufferHelper *defaultUniformBuffer) { - const std::string uniformBlockName = kDefaultUniformNames[shaderType]; - - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, uniformBlockName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getDefaultUniformInfo(shaderType); if (info.isDuplicate || !info.activeStages[shaderType]) { return; @@ -1247,7 +1247,9 @@ angle::Result ProgramExecutableVk::updateBuffersDescriptorSet( gl::ShaderType shaderType, const vk::DescriptorSetDesc &shaderBuffersDesc, const gl::BufferVector &buffers, + const gl::ProgramExecutable &glExecutable, const std::vector<gl::InterfaceBlock> &blocks, + ShaderVariableType variableType, VkDescriptorType descriptorType, VkDeviceSize maxBoundBufferRange, bool cacheHit) @@ -1265,8 +1267,9 @@ angle::Result ProgramExecutableVk::updateBuffersDescriptorSet( ASSERT(descriptorSet != VK_NULL_HANDLE); // Write uniform or storage buffers. - for (const gl::InterfaceBlock &block : blocks) + for (uint32_t blockIndex = 0; blockIndex < blocks.size(); ++blockIndex) { + const gl::InterfaceBlock &block = blocks[blockIndex]; const gl::OffsetBindingPointer<gl::Buffer> &bufferBinding = buffers[block.binding]; if (!block.isActive(shaderType)) @@ -1274,8 +1277,8 @@ angle::Result ProgramExecutableVk::updateBuffersDescriptorSet( continue; } - const ShaderInterfaceVariableInfo &info = - mVariableInfoMap.get(shaderType, block.mappedName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getIndexedVariableInfo( + glExecutable, shaderType, variableType, blockIndex); if (info.isDuplicate) { continue; @@ -1351,19 +1354,13 @@ angle::Result ProgramExecutableVk::updateAtomicCounterBuffersDescriptorSet( const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers = executable.getAtomicCounterBuffers(); - if (atomicCounterBuffers.empty() || cacheHit) - { - return angle::Result::Continue; - } - - std::string blockName(sh::vk::kAtomicCountersBlockName); - - if (!mVariableInfoMap.contains(shaderType, blockName)) + if (atomicCounterBuffers.empty() || cacheHit || + !mVariableInfoMap.hasAtomicCounterInfo(shaderType)) { return angle::Result::Continue; } - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, blockName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getAtomicCounterInfo(shaderType); if (info.isDuplicate || !info.activeStages[shaderType]) { return angle::Result::Continue; @@ -1460,17 +1457,15 @@ angle::Result ProgramExecutableVk::updateImagesDescriptorSet( continue; } - std::string mappedImageName = GlslangGetMappedSamplerName(imageUniform.name); - - GetImageNameWithoutIndices(&mappedImageName); - - uint32_t arrayOffset = 0; + uint32_t arrayOffset = imageUniform.outerArrayOffset; uint32_t arraySize = static_cast<uint32_t>(imageBinding.boundImageUnits.size()); - arrayOffset = mappedImageNameToArrayOffset[mappedImageName]; - // Front-end generates array elements in order, so we can just increment the offset each - // time we process a nested array. - mappedImageNameToArrayOffset[mappedImageName] += arraySize; + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getIndexedVariableInfo( + executable, shaderType, ShaderVariableType::Image, imageIndex); + if (info.isDuplicate) + { + continue; + } // Texture buffers use buffer views, so they are especially handled. if (imageBinding.textureType == gl::TextureType::Buffer) @@ -1483,13 +1478,6 @@ angle::Result ProgramExecutableVk::updateImagesDescriptorSet( format = &renderer->getFormat(imageUniform.imageUnitFormat); } - const ShaderInterfaceVariableInfo &info = - mVariableInfoMap.get(shaderType, mappedImageName); - if (info.isDuplicate) - { - continue; - } - VkWriteDescriptorSet *writeInfos = updateBuilder->allocWriteDescriptorSets(arraySize); for (uint32_t arrayElement = 0; arrayElement < arraySize; ++arrayElement) @@ -1514,13 +1502,6 @@ angle::Result ProgramExecutableVk::updateImagesDescriptorSet( continue; } - const std::string imageName = GlslangGetMappedSamplerName(imageUniform.name); - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, imageName); - if (info.isDuplicate) - { - continue; - } - VkWriteDescriptorSet *writeInfos = updateBuilder->allocWriteDescriptorSets(arraySize); VkDescriptorImageInfo *imageInfos = updateBuilder->allocDescriptorImageInfos(arraySize); for (uint32_t arrayElement = 0; arrayElement < arraySize; ++arrayElement) @@ -1619,11 +1600,13 @@ angle::Result ProgramExecutableVk::updateShaderResourcesDescriptorSet( { ANGLE_TRY(updateBuffersDescriptorSet( contextVk, updateBuilder, emptyBuffer, resourceUseList, shaderType, shaderBuffersDesc, - uniformBuffers, executable->getUniformBlocks(), mUniformBufferDescriptorType, + uniformBuffers, *executable, executable->getUniformBlocks(), + ShaderVariableType::UniformBuffer, mUniformBufferDescriptorType, limits.maxUniformBufferRange, cacheHit)); ANGLE_TRY(updateBuffersDescriptorSet( contextVk, updateBuilder, emptyBuffer, resourceUseList, shaderType, shaderBuffersDesc, - storageBuffers, executable->getShaderStorageBlocks(), kStorageBufferDescriptorType, + storageBuffers, *executable, executable->getShaderStorageBlocks(), + ShaderVariableType::ShaderStorageBuffer, kStorageBufferDescriptorType, limits.maxStorageBufferRange, cacheHit)); ANGLE_TRY(updateAtomicCounterBuffersDescriptorSet( contextVk, updateBuilder, emptyBuffer, resourceUseList, atomicCounterBufferBindings, @@ -1659,9 +1642,9 @@ angle::Result ProgramExecutableVk::updateInputAttachmentDescriptorSet( const uint32_t baseUniformIndex = executable.getFragmentInoutRange().low(); const gl::LinkedUniform &baseInputAttachment = uniforms.at(baseUniformIndex); - std::string baseMappedName = baseInputAttachment.mappedName; - ShaderInterfaceVariableInfo &baseInfo = mVariableInfoMap.get(shaderType, baseMappedName); + const ShaderInterfaceVariableInfo &baseInfo = + mVariableInfoMap.getFramebufferFetchInfo(executable, shaderType); if (baseInfo.isDuplicate) { return angle::Result::Continue; @@ -1792,23 +1775,20 @@ angle::Result ProgramExecutableVk::updateTexturesDescriptorSet( for (gl::ShaderType shaderType : executable.getLinkedShaderStages()) { - angle::HashMap<std::string, uint32_t> mappedSamplerNameToArrayOffset; for (uint32_t textureIndex = 0; textureIndex < executable.getSamplerBindings().size(); ++textureIndex) { const gl::SamplerBinding &samplerBinding = samplerBindings[textureIndex]; uint32_t uniformIndex = executable.getUniformIndexFromSamplerIndex(textureIndex); const gl::LinkedUniform &samplerUniform = executable.getUniforms()[uniformIndex]; - std::string mappedSamplerName = GlslangGetMappedSamplerName(samplerUniform.name); if (!samplerUniform.isActive(shaderType)) { continue; } - const std::string samplerName = GlslangGetMappedSamplerName(samplerUniform.name); - - const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(shaderType, samplerName); + const ShaderInterfaceVariableInfo &info = mVariableInfoMap.getIndexedVariableInfo( + executable, shaderType, ShaderVariableType::Texture, textureIndex); if (info.isDuplicate) { continue; @@ -1835,14 +1815,9 @@ angle::Result ProgramExecutableVk::updateTexturesDescriptorSet( } ASSERT(descriptorSet != VK_NULL_HANDLE); - uint32_t arrayOffset = 0; + uint32_t arrayOffset = samplerUniform.outerArrayOffset; uint32_t arraySize = static_cast<uint32_t>(samplerBinding.boundTextureUnits.size()); - arrayOffset = mappedSamplerNameToArrayOffset[mappedSamplerName]; - // Front-end generates array elements in order, so we can just increment the offset each - // time we process a nested array. - mappedSamplerNameToArrayOffset[mappedSamplerName] += arraySize; - VkWriteDescriptorSet *writeInfos = updateBuilder->allocWriteDescriptorSets(arraySize); // Texture buffers use buffer views, so they are especially handled. diff --git a/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h b/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h index 4f684fa6a7..69e83b82bf 100644 --- a/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h +++ b/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h @@ -256,8 +256,10 @@ class ProgramExecutableVk vk::ResourceUseList *resourceUseList, DescriptorSetIndex descriptorSetIndex, bool *newPoolAllocatedOut); - void addInterfaceBlockDescriptorSetDesc(const std::vector<gl::InterfaceBlock> &blocks, + void addInterfaceBlockDescriptorSetDesc(const gl::ProgramExecutable &glExecutable, + const std::vector<gl::InterfaceBlock> &blocks, gl::ShaderType shaderType, + ShaderVariableType variableType, VkDescriptorType descType, vk::DescriptorSetLayoutDesc *descOut); void addAtomicCounterBufferDescriptorSetDesc( @@ -300,7 +302,9 @@ class ProgramExecutableVk gl::ShaderType shaderType, const vk::DescriptorSetDesc &shaderBuffersDesc, const gl::BufferVector &buffers, + const gl::ProgramExecutable &glExecutable, const std::vector<gl::InterfaceBlock> &blocks, + ShaderVariableType variableType, VkDescriptorType descriptorType, VkDeviceSize maxBoundBufferRange, bool cacheHit); diff --git a/src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp b/src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp index 446c051f18..364db391d9 100644 --- a/src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp +++ b/src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp @@ -64,7 +64,7 @@ angle::Result ProgramPipelineVk::link(const gl::Context *glContext, !glProgram->getState().getLinkedTransformFeedbackVaryings().empty(); GlslangAssignTransformFeedbackLocations( - shaderType, glProgram->getState(), isTransformFeedbackStage, + shaderType, glProgram->getExecutable(), isTransformFeedbackStage, &glslangProgramInterfaceInfo, &mExecutable.mVariableInfoMap); } } @@ -76,27 +76,23 @@ angle::Result ProgramPipelineVk::link(const gl::Context *glContext, UniformBindingIndexMap uniformBindingIndexMap; for (const gl::ShaderType shaderType : glExecutable.getLinkedShaderStages()) { - const gl::Program *glProgram = mState.getShaderProgram(shaderType); - if (glProgram) - { - const bool isTransformFeedbackStage = - shaderType == linkedTransformFeedbackStage && - !glProgram->getState().getLinkedTransformFeedbackVaryings().empty(); - - GlslangAssignLocations(options, glProgram->getState(), varyingPacking, shaderType, - frontShaderType, isTransformFeedbackStage, - &glslangProgramInterfaceInfo, &uniformBindingIndexMap, - &mExecutable.mVariableInfoMap); - frontShaderType = shaderType; - - ProgramVk *programVk = vk::GetImpl(glProgram); - ProgramExecutableVk &programExecutableVk = programVk->getExecutable(); - mExecutable.mDefaultUniformBlocks[shaderType] = - programExecutableVk.getSharedDefaultUniformBlock(shaderType); - - mExecutable.mOriginalShaderInfo.initShaderFromProgram( - shaderType, programExecutableVk.mOriginalShaderInfo); - } + const bool isTransformFeedbackStage = + shaderType == linkedTransformFeedbackStage && + !glExecutable.getLinkedTransformFeedbackVaryings().empty(); + + GlslangAssignLocations(options, glExecutable, varyingPacking, shaderType, frontShaderType, + isTransformFeedbackStage, &glslangProgramInterfaceInfo, + &uniformBindingIndexMap, &mExecutable.mVariableInfoMap); + frontShaderType = shaderType; + + const gl::Program *program = mState.getShaderProgram(shaderType); + ProgramVk *programVk = vk::GetImpl(program); + ProgramExecutableVk &programExecutableVk = programVk->getExecutable(); + mExecutable.mDefaultUniformBlocks[shaderType] = + programExecutableVk.getSharedDefaultUniformBlock(shaderType); + + mExecutable.mOriginalShaderInfo.initShaderFromProgram( + shaderType, programExecutableVk.mOriginalShaderInfo); } mExecutable.setAllDefaultUniformsDirty(glExecutable); @@ -107,7 +103,7 @@ angle::Result ProgramPipelineVk::link(const gl::Context *glContext, } return mExecutable.createPipelineLayout(contextVk, mState.getExecutable(), nullptr); -} +} // namespace rx void ProgramPipelineVk::onProgramUniformUpdate(gl::ShaderType shaderType) { diff --git a/src/libANGLE/renderer/vulkan/ProgramPipelineVk.h b/src/libANGLE/renderer/vulkan/ProgramPipelineVk.h index 7975b35d7c..6c84b9df39 100644 --- a/src/libANGLE/renderer/vulkan/ProgramPipelineVk.h +++ b/src/libANGLE/renderer/vulkan/ProgramPipelineVk.h @@ -31,12 +31,6 @@ class ProgramPipelineVk : public ProgramPipelineImpl const ProgramExecutableVk &getExecutable() const { return mExecutable; } ProgramExecutableVk &getExecutable() { return mExecutable; } - ProgramVk *getShaderProgram(gl::ShaderType shaderType) const - { - const gl::Program *program = mState.getShaderProgram(shaderType); - return SafeGetImplAs<ProgramVk>(program); - } - angle::Result link(const gl::Context *glContext, const gl::ProgramMergedVaryings &mergedVaryings, const gl::ProgramVaryingPacking &varyingPacking) override; diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp index faf19ea913..3b79e53f4b 100644 --- a/src/libANGLE/renderer/vulkan/RendererVk.cpp +++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp @@ -547,6 +547,13 @@ constexpr SkippedSyncvalMessage kSkippedSyncvalMessages[] = { "SYNC-HAZARD-WRITE_AFTER_READ", "type: VK_DESCRIPTOR_TYPE_STORAGE_BUFFER", }, + // From: TracePerfTest.Run/vulkan_special_forces_group_2 http://anglebug.com/5592 + { + "SYNC-HAZARD-WRITE_AFTER_READ", + "Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: " + "SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, read_barriers: " + "VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT, command: vkCmdDrawIndexed", + }, }; enum class DebugMessageReport diff --git a/src/libANGLE/renderer/vulkan/ResourceVk.cpp b/src/libANGLE/renderer/vulkan/ResourceVk.cpp index f44992826d..43729d48a6 100644 --- a/src/libANGLE/renderer/vulkan/ResourceVk.cpp +++ b/src/libANGLE/renderer/vulkan/ResourceVk.cpp @@ -200,16 +200,6 @@ ResourceUseList::~ResourceUseList() ASSERT(mResourceUses.empty()); } -void ResourceUseList::copy(ResourceUseList &srcResourceUse) -{ - size_t size = srcResourceUse.mResourceUses.size(); - mResourceUses.resize(size); - for (size_t i = 0; i < size; i++) - { - mResourceUses[i].copy(srcResourceUse.mResourceUses[i]); - } -} - ResourceUseList &ResourceUseList::operator=(ResourceUseList &&rhs) { std::swap(mResourceUses, rhs.mResourceUses); diff --git a/src/libANGLE/renderer/vulkan/ResourceVk.h b/src/libANGLE/renderer/vulkan/ResourceVk.h index 032c038938..08bd15377a 100644 --- a/src/libANGLE/renderer/vulkan/ResourceVk.h +++ b/src/libANGLE/renderer/vulkan/ResourceVk.h @@ -45,12 +45,6 @@ class SharedResourceUse final : angle::NonCopyable return *this; } - void copy(SharedResourceUse &src) - { - mUse = src.mUse; - mUse->counter++; - } - ANGLE_INLINE bool valid() const { return mUse != nullptr; } void init() @@ -178,7 +172,6 @@ class ResourceUseList final : angle::NonCopyable ResourceUseList &operator=(ResourceUseList &&rhs); void add(const SharedResourceUse &resourceUse); - void copy(ResourceUseList &srcResourceUse); void releaseResourceUses(); void releaseResourceUsesAndUpdateSerials(Serial serial); diff --git a/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp b/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp index dbaa4eeedb..807cf80be7 100644 --- a/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp +++ b/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp @@ -227,9 +227,8 @@ void TransformFeedbackVk::updateDescriptorSetLayout( for (uint32_t bufferIndex = 0; bufferIndex < xfbBufferCount; ++bufferIndex) { - const std::string bufferName = GetXfbBufferName(bufferIndex); const ShaderInterfaceVariableInfo &info = - variableInfoMap.get(gl::ShaderType::Vertex, bufferName); + variableInfoMap.getTransformFeedbackInfo(gl::ShaderType::Vertex, bufferIndex); ASSERT(info.binding != std::numeric_limits<uint32_t>::max()); @@ -381,9 +380,8 @@ void TransformFeedbackVk::writeDescriptorSet(vk::Context *context, { ASSERT(context->getRenderer()->getFeatures().emulateTransformFeedback.enabled); - const std::string bufferName = GetXfbBufferName(0); const ShaderInterfaceVariableInfo &info = - variableInfoMap.get(gl::ShaderType::Vertex, bufferName); + variableInfoMap.getTransformFeedbackInfo(gl::ShaderType::Vertex, 0); VkWriteDescriptorSet &writeDescriptorInfo = updateBuilder->allocWriteDescriptorSet(); writeDescriptorInfo.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/src/libANGLE/renderer/vulkan/vk_helpers.cpp index 3ce3d4950f..d562aa64df 100644 --- a/src/libANGLE/renderer/vulkan/vk_helpers.cpp +++ b/src/libANGLE/renderer/vulkan/vk_helpers.cpp @@ -2885,6 +2885,47 @@ angle::Result BufferPool::allocateBuffer(Context *context, VkDeviceSize offset; VkDeviceSize alignedSize = roundUp(sizeInBytes, alignment); + if (alignedSize >= kMaxBufferSizeForSuballocation) + { + VkDeviceSize heapSize = + context->getRenderer()->getMemoryProperties().getHeapSizeForMemoryType( + mMemoryTypeIndex); + // First ensure we are not exceeding the heapSize to avoid the validation error. + ANGLE_VK_CHECK(context, sizeInBytes <= heapSize, VK_ERROR_OUT_OF_DEVICE_MEMORY); + + // Allocate buffer + VkBufferCreateInfo createInfo = {}; + createInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; + createInfo.flags = 0; + createInfo.size = alignedSize; + createInfo.usage = mUsage; + createInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + createInfo.queueFamilyIndexCount = 0; + createInfo.pQueueFamilyIndices = nullptr; + + VkMemoryPropertyFlags memoryPropertyFlags; + const Allocator &allocator = context->getRenderer()->getAllocator(); + allocator.getMemoryTypeProperties(mMemoryTypeIndex, &memoryPropertyFlags); + + DeviceScoped<Buffer> buffer(context->getDevice()); + ANGLE_VK_TRY(context, buffer.get().init(context->getDevice(), createInfo)); + + DeviceScoped<DeviceMemory> deviceMemory(context->getDevice()); + VkMemoryPropertyFlags memoryPropertyFlagsOut; + VkDeviceSize sizeOut; + ANGLE_TRY(AllocateBufferMemory(context, memoryPropertyFlags, &memoryPropertyFlagsOut, + nullptr, &buffer.get(), &deviceMemory.get(), &sizeOut)); + ASSERT(sizeOut >= alignedSize); + + suballocation->initWithEntireBuffer(context, buffer.get(), deviceMemory.get(), + memoryPropertyFlagsOut, alignedSize); + if (mHostVisible) + { + ANGLE_VK_TRY(context, suballocation->map(context)); + } + return angle::Result::Continue; + } + // We always allocate from reverse order so that older buffers have a chance to age out. The // assumption is that to allocate from new buffers first may have a better chance to leave the // older buffers completely empty and we may able to free it. @@ -4957,7 +4998,7 @@ void ImageHelper::releaseImageFromShareContexts(RendererVk *renderer, ContextVk { if (contextVk && mImageSerial.valid()) { - ContextVkSet &shareContextSet = *contextVk->getShareGroupVk()->getContexts(); + const ContextVkSet &shareContextSet = contextVk->getShareGroupVk()->getContexts(); for (ContextVk *ctx : shareContextSet) { ctx->finalizeImageLayout(this); diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.h b/src/libANGLE/renderer/vulkan/vk_helpers.h index 62e08f7a25..f6fc14fa5a 100644 --- a/src/libANGLE/renderer/vulkan/vk_helpers.h +++ b/src/libANGLE/renderer/vulkan/vk_helpers.h @@ -871,6 +871,9 @@ class BufferPool : angle::NonCopyable // and only to find out that we have to allocate a new one next frame. static constexpr int32_t kMaxCountRemainsEmpty = 4; static constexpr int32_t kMaxEmptyBufferCount = 16; + // max size to go down the suballocation code path. Any allocation greater or equal this size + // will call into vulkan directly to allocate a dedicated VkDeviceMemory. + static constexpr size_t kMaxBufferSizeForSuballocation = 4 * 1024 * 1024; }; enum class BufferAccess diff --git a/src/tests/angle_end2end_tests_expectations.txt b/src/tests/angle_end2end_tests_expectations.txt index af74f258fb..7d5bdc7169 100644 --- a/src/tests/angle_end2end_tests_expectations.txt +++ b/src/tests/angle_end2end_tests_expectations.txt @@ -161,6 +161,12 @@ 6738 MAC AMD OPENGL : Texture3DTestES3.PixelUnpackStateTex* = SKIP 1296467 MAC OPENGL : VertexAttributeTestES3.emptyBuffer/* = SKIP 7203 MAC INTEL OPENGL : CopyTextureTest.CopyToMipmap/* = SKIP +7206 MAC NVIDIA OPENGL : CopyTextureTest.CubeMap*/ES2_OpenGL = SKIP +7206 MAC NVIDIA OPENGL : CopyTextureTest.CopyToMipmap/ES2_OpenGL = SKIP +7206 MAC NVIDIA OPENGL : BlitFramebufferTest.NonZeroBaseDestinationStencil/ES3_OpenGL = SKIP +7206 MAC NVIDIA OPENGL : BlendIntegerTest.MRTUnsigned/ES3_OpenGL = SKIP +7206 MAC NVIDIA OPENGL : BlendIntegerTest.MRTSigned/ES3_OpenGL = SKIP +7206 MAC NVIDIA OPENGL : DrawBuffersTest.BlendWithGaps/ES3_OpenGL = SKIP // BlitFramebufferTest.ScissoredMultisampleStencil failures 3496 MAC INTEL OPENGL : BlitFramebufferTest.ScissoredMultisampleStencil/* = SKIP @@ -580,3 +586,6 @@ 7029 NVIDIA GLES : GLSLTest.SwizzledChainedAssignIncrement/* = SKIP 7085 : VulkanPerformanceCounterTest.DepthStencilInvalidateDrawDisable/* = SKIP + +// Flaking due to threading usage of the queue +7204 : VulkanImageTest.PreInitializedOnGLImport/ES3_Vulkan_SwiftShader_AsyncCommandQueue = SKIP diff --git a/src/tests/deqp_support/deqp_gles2_test_expectations.txt b/src/tests/deqp_support/deqp_gles2_test_expectations.txt index 02aeff3798..f98358f77d 100644 --- a/src/tests/deqp_support/deqp_gles2_test_expectations.txt +++ b/src/tests/deqp_support/deqp_gles2_test_expectations.txt @@ -90,11 +90,6 @@ 3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat = FAIL 3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror = FAIL -// Quadro P400 -// TODO(jmadill): Narrow to P400 device only: 0x1CB3. -2222 D3D11 NVIDIA : dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_fragment = FAIL -2222 D3D11 NVIDIA : dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_vertex = FAIL - // AMD GPU vertex shader texture sampling is not precise enough when rendering to 32-bit backbuffers 2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.wrap.* = FAIL 2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_* = FAIL diff --git a/src/tests/deqp_support/deqp_gles3_test_expectations.txt b/src/tests/deqp_support/deqp_gles3_test_expectations.txt index 92ffb29c55..9e103b078e 100644 --- a/src/tests/deqp_support/deqp_gles3_test_expectations.txt +++ b/src/tests/deqp_support/deqp_gles3_test_expectations.txt @@ -69,18 +69,6 @@ // DrawBuffers test failing on D3D11. 3298 WIN D3D11 : dEQP-GLES3.functional.shaders.fragdata.draw_buffers = FAIL -// TODO(jmadill, cwallez): triage the failures below into permanent and temporary failures - -// Quadro P400 -// TODO(jmadill): Narrow to P400 device only: 0x1CB3. -2222 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.functions.control_flow.return_in_nested_loop_fragment = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.functions.control_flow.return_in_nested_loop_vertex = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.cube.min_lod.linear_nearest = FAIL -2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.cube.min_lod.nearest_nearest = FAIL // Fails on 451.48 driver version 4948 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.texture_functions.texturesize.* = FAIL diff --git a/src/tests/gl_tests/GLSLTest.cpp b/src/tests/gl_tests/GLSLTest.cpp index fc46f6904b..eb450d23f7 100644 --- a/src/tests/gl_tests/GLSLTest.cpp +++ b/src/tests/gl_tests/GLSLTest.cpp @@ -15253,6 +15253,46 @@ void main() { ASSERT_GL_NO_ERROR(); } +// Make sure const sampler parameters work. +TEST_P(GLSLTest, ConstSamplerParameter) +{ + constexpr char kFS[] = R"(precision mediump float; +uniform sampler2D samp; + +vec4 sampleConstSampler(const sampler2D s) { + return texture2D(s, vec2(0)); +} + +void main() { + gl_FragColor = sampleConstSampler(samp); +} +)"; + CompileShader(GL_FRAGMENT_SHADER, kFS); + ASSERT_GL_NO_ERROR(); +} + +// Make sure passing const sampler parameters to another function work. +TEST_P(GLSLTest, ConstSamplerParameterAsArgument) +{ + constexpr char kFS[] = R"(precision mediump float; + +uniform sampler2D samp; + +vec4 sampleSampler(sampler2D s) { + return texture2D(s, vec2(0)); +} + +vec4 sampleConstSampler(const sampler2D s) { + return sampleSampler(s); +} + +void main() { + gl_FragColor = sampleConstSampler(samp); +} +)"; + CompileShader(GL_FRAGMENT_SHADER, kFS); + ASSERT_GL_NO_ERROR(); +} } // anonymous namespace ANGLE_INSTANTIATE_TEST_ES2_AND_ES3_AND(GLSLTest, diff --git a/src/tests/gl_tests/MultithreadingTest.cpp b/src/tests/gl_tests/MultithreadingTest.cpp index 806f1ea2b7..909f66bfb7 100644 --- a/src/tests/gl_tests/MultithreadingTest.cpp +++ b/src/tests/gl_tests/MultithreadingTest.cpp @@ -352,6 +352,86 @@ TEST_P(MultithreadingTest, MultiContextDraw) runMultithreadedGLTest(testBody, 4); } +// Test that multiple threads can draw and readback pixels successfully at the same time while EGL +// images are bound between them +TEST_P(MultithreadingTest, MultiContextDrawWithEGLImage) +{ + ANGLE_SKIP_TEST_IF(!platformSupportsMultithreading()); + + ANGLE_SKIP_TEST_IF(isSwiftshader()); + + EGLWindow *window = getEGLWindow(); + EGLDisplay dpy = window->getDisplay(); + ANGLE_SKIP_TEST_IF(IsGLExtensionEnabled("GL_OES_EGL_image")); + ANGLE_SKIP_TEST_IF(IsEGLDisplayExtensionEnabled(dpy, "EGL_KHR_gl_texture_2D_image")); + + // Create a source 2D texture + GLTexture sourceTexture; + glBindTexture(GL_TEXTURE_2D, sourceTexture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &GLColor::red); + + // Disable mipmapping + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + ASSERT_GL_NO_ERROR(); + + // Create an image from the source texture + constexpr EGLint attribs[] = { + EGL_IMAGE_PRESERVED, + EGL_TRUE, + EGL_NONE, + }; + EGLImageKHR image = eglCreateImageKHR( + dpy, window->getContext(), EGL_GL_TEXTURE_2D_KHR, + reinterpret_cast<EGLClientBuffer>(static_cast<size_t>(sourceTexture.get())), attribs); + + auto testBody = [image](EGLSurface surface, size_t thread) { + constexpr size_t kIterationsPerThread = 32; + constexpr size_t kDrawsPerIteration = 500; + + // Just bind the EGL image to this context and leave it bound while drawing + GLTexture destTexture; + glBindTexture(GL_TEXTURE_EXTERNAL_OES, destTexture); + glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, image); + + ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Simple(), essl1_shaders::fs::UniformColor()); + glUseProgram(program); + + GLint colorLocation = glGetUniformLocation(program, essl1_shaders::ColorUniform()); + + auto quadVertices = GetQuadVertices(); + + GLBuffer vertexBuffer; + glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 3 * 6, quadVertices.data(), GL_STATIC_DRAW); + + GLint positionLocation = glGetAttribLocation(program, essl1_shaders::PositionAttrib()); + glEnableVertexAttribArray(positionLocation); + glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, 0); + + for (size_t iteration = 0; iteration < kIterationsPerThread; iteration++) + { + // Base the clear color on the thread and iteration indexes so every clear color is + // unique + const GLColor color(static_cast<GLubyte>(thread % 255), + static_cast<GLubyte>(iteration % 255), 0, 255); + const angle::Vector4 floatColor = color.toNormalizedVector(); + glUniform4fv(colorLocation, 1, floatColor.data()); + + for (size_t draw = 0; draw < kDrawsPerIteration; draw++) + { + glDrawArrays(GL_TRIANGLES, 0, 6); + } + + EXPECT_PIXEL_COLOR_EQ(0, 0, color); + } + }; + runMultithreadedGLTest(testBody, 4); + + eglDestroyImage(dpy, image); +} + // Test that multiple threads can draw and read back pixels correctly. // Using eglSwapBuffers stresses race conditions around use of QueueSerials. TEST_P(MultithreadingTest, MultiContextDrawWithSwapBuffers) diff --git a/src/tests/perf_tests/TracePerfTest.cpp b/src/tests/perf_tests/TracePerfTest.cpp index fe0bbbef46..a98d1beade 100644 --- a/src/tests/perf_tests/TracePerfTest.cpp +++ b/src/tests/perf_tests/TracePerfTest.cpp @@ -1217,6 +1217,11 @@ TracePerfTest::TracePerfTest(const TracePerfParams ¶ms) addExtensionPrerequisite("GL_KHR_texture_compression_astc_ldr"); } + if (traceNameIs("special_forces_group_2")) + { + addExtensionPrerequisite("GL_EXT_texture_buffer"); + } + ASSERT(mParams.surfaceType == SurfaceType::Window || gEnableAllTraceTests); ASSERT(mParams.eglParameters.deviceType == EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE || gEnableAllTraceTests); diff --git a/src/tests/restricted_traces/restricted_trace_gold_tests.py b/src/tests/restricted_traces/restricted_trace_gold_tests.py index aa5afa2ec9..c19c7d0b4f 100755 --- a/src/tests/restricted_traces/restricted_trace_gold_tests.py +++ b/src/tests/restricted_traces/restricted_trace_gold_tests.py @@ -51,6 +51,7 @@ DEFAULT_SCREENSHOT_PREFIX = 'angle_vulkan_' SWIFTSHADER_SCREENSHOT_PREFIX = 'angle_vulkan_swiftshader_' DEFAULT_BATCH_SIZE = 5 DEFAULT_LOG = 'info' +DEFAULT_GOLD_INSTANCE = 'angle' # Filters out stuff like: " I 72.572s run_tests_on_device(96071FFAZ00096) " ANDROID_LOGGING_PREFIX = r'I +\d+.\d+s \w+\(\w+\) ' @@ -294,7 +295,7 @@ def _run_tests(args, tests, extra_flags, env, screenshot_dir, results, test_resu gold_properties = angle_skia_gold_properties.ANGLESkiaGoldProperties(args) gold_session_manager = angle_skia_gold_session_manager.ANGLESkiaGoldSessionManager( skia_gold_temp_dir, gold_properties) - gold_session = gold_session_manager.GetSkiaGoldSession(keys) + gold_session = gold_session_manager.GetSkiaGoldSession(keys, instance=args.instance) traces = [trace.split(' ')[0] for trace in tests] @@ -404,6 +405,13 @@ def main(): parser.add_argument( '-l', '--log', help='Log output level. Default is %s.' % DEFAULT_LOG, default=DEFAULT_LOG) parser.add_argument('--swiftshader', help='Test with SwiftShader.', action='store_true') + parser.add_argument( + '-i', + '--instance', + '--gold-instance', + '--skia-gold-instance', + help='Skia Gold instance. Default is "%s".' % DEFAULT_GOLD_INSTANCE, + default=DEFAULT_GOLD_INSTANCE) add_skia_gold_args(parser) diff --git a/src/tests/restricted_traces/restricted_traces.json b/src/tests/restricted_traces/restricted_traces.json index 45234bd588..9dfda67edb 100644 --- a/src/tests/restricted_traces/restricted_traces.json +++ b/src/tests/restricted_traces/restricted_traces.json @@ -89,6 +89,7 @@ "minecraft 5", "mini_world 5", "mobile_legends 5", + "monster_strike 1", "my_talking_tom2 5", "my_talking_tom_friends 5", "nba2k20_800 5", @@ -123,6 +124,7 @@ "sniper_3d 5", "solar_smash 2", "sonic_the_hedgehog 5", + "special_forces_group_2 1", "standoff_2 5", "state_of_survival 1", "subway_princess_runner 5", diff --git a/third_party/SwiftShader b/third_party/SwiftShader -Subproject 1d450ae99a0f4ade28dd55dac962f8b28d99037 +Subproject 103a69bd6c82980c967c2f4002c9a302ea67c71 diff --git a/third_party/VK-GL-CTS/src b/third_party/VK-GL-CTS/src -Subproject 20a474e64382e8f5144122b30b3d7cab182421b +Subproject a22069b4e3b7f68cc0c161e8c93b1308bff0925 diff --git a/third_party/abseil-cpp/symbols_arm64_rel.def b/third_party/abseil-cpp/symbols_arm64_rel.def index 5f92eee046..b78aa4011d 100644 --- a/third_party/abseil-cpp/symbols_arm64_rel.def +++ b/third_party/abseil-cpp/symbols_arm64_rel.def @@ -121,7 +121,6 @@ EXPORTS ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z - ??0ChunkIterator@Cord@absl@@AEAA@PEAUCordRep@cord_internal@2@@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z ??0Condition@absl@@AEAA@XZ ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z diff --git a/third_party/abseil-cpp/symbols_x64_rel.def b/third_party/abseil-cpp/symbols_x64_rel.def index 750761d4f1..17b63714ff 100644 --- a/third_party/abseil-cpp/symbols_x64_rel.def +++ b/third_party/abseil-cpp/symbols_x64_rel.def @@ -76,8 +76,6 @@ EXPORTS ??$SetEdge@$0A@@CordRepBtree@cord_internal@absl@@QEAA?AUOpResult@012@_NPEAUCordRep@12@_K@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@Vstring_view@0@AEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YAHAEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@2@@Z - ??$ToChronoDuration@V?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z - ??$ToChronoDuration@V?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z ??$__construct_node_hash@AEBUpiecewise_construct_t@__1@std@@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@AEAA?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@@23@@12@_KAEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z ??$__emplace_back_slow_path@AEAVstring_view@absl@@AEBV12@AEA_K@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@__1@std@@@__1@std@@AEAAXAEAVstring_view@absl@@AEBV34@AEA_K@Z ??$__emplace_unique_key_args@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@QEAA?AU?$pair@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@_N@12@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@12@AEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z diff --git a/third_party/abseil-cpp/symbols_x64_rel_asan.def b/third_party/abseil-cpp/symbols_x64_rel_asan.def index 14daa8736d..78050362d7 100644 --- a/third_party/abseil-cpp/symbols_x64_rel_asan.def +++ b/third_party/abseil-cpp/symbols_x64_rel_asan.def @@ -75,8 +75,6 @@ EXPORTS ??$SetEdge@$0A@@CordRepBtree@cord_internal@absl@@QEAA?AUOpResult@012@_NPEAUCordRep@12@_K@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@Vstring_view@0@AEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YAHAEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@2@@Z - ??$ToChronoDuration@V?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z - ??$ToChronoDuration@V?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z ??$__construct_at_end@PEBVFormatArgImpl@str_format_internal@absl@@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@__1@std@@@__1@std@@AEAAXPEBVFormatArgImpl@str_format_internal@absl@@0_K@Z ??$__construct_node_hash@AEBUpiecewise_construct_t@__1@std@@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@AEAA?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@@23@@12@_KAEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z ??$__emplace_unique_key_args@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@QEAA?AU?$pair@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@_N@12@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@12@AEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z @@ -403,7 +401,6 @@ EXPORTS ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByLength@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByString@absl@@QEBA?AVstring_view@2@V32@_K@Z - ?FindFlatStartPiece@InlineRep@Cord@absl@@QEBA?AVstring_view@3@XZ ?FindPath@GraphCycles@synchronization_internal@absl@@QEBAHUGraphId@23@0HQEAU423@@Z ?FindSlow@CordRepRing@cord_internal@absl@@AEBA?AUPosition@123@I_K@Z ?FindTailSlow@CordRepRing@cord_internal@absl@@AEBA?AUPosition@123@I_K@Z diff --git a/third_party/catapult b/third_party/catapult -Subproject e9e999a4a88a2963b60bec778f340d3c3d00fa1 +Subproject 28b8ede735b79253b8689d5e270f4783e841364 diff --git a/third_party/depot_tools b/third_party/depot_tools -Subproject 3c6f0eb95fddb6833820d3a10e80a7a2fb5d016 +Subproject 7d2693ad8d9d304391b1c1fee9f88f258af5a21 diff --git a/third_party/vulkan-deps/DEPS b/third_party/vulkan-deps/DEPS index fe2bf88281..e9a9953ef2 100644 --- a/third_party/vulkan-deps/DEPS +++ b/third_party/vulkan-deps/DEPS @@ -9,28 +9,28 @@ vars = { 'chromium_git': 'https://chromium.googlesource.com', # Current revision of glslang, the Khronos SPIRV compiler. - 'glslang_revision': '48fd6c82b3fefb38e59dd799d8b12fddddf8e63c', + 'glslang_revision': '06ac14141222bc059f48609b9a4a68fdb6fc4814', # Current revision of spirv-cross, the Khronos SPIRV cross compiler. - 'spirv_cross_revision': '6a67891418a3f08be63f92726e049dc788e46f5b', + 'spirv_cross_revision': '779138f39fa33f6fe6dab2e3b21938884f74a4bb', # Current revision fo the SPIRV-Headers Vulkan support library. - 'spirv_headers_revision': '9c3fd01c8a91761b6e4be97ff4f13de76e779128', + 'spirv_headers_revision': '82becc8a8a92e509d3d8d635889da0a3c17d0606', # Current revision of SPIRV-Tools for Vulkan. - 'spirv_tools_revision': '92c17edde79a3afae2aee810da4ce03bc7088531', + 'spirv_tools_revision': 'cb96abbf7affd986016f17dd09f9f971138a922b', # Current revision of Khronos Vulkan-Headers. 'vulkan_headers_revision': '76f00ef6cbb1886eb1162d1fa39bee8b51e22ee8', # Current revision of Khronos Vulkan-Loader. - 'vulkan_loader_revision': 'f503824ff8cbecfe39fb96ac89cbe959355dc311', + 'vulkan_loader_revision': '71bd6240afaef2c199b47f26d715091fa6fdf4f8', # Current revision of Khronos Vulkan-Tools. - 'vulkan_tools_revision': '5f3ce24e7a530d089842c8192c2565a672555250', + 'vulkan_tools_revision': 'ef20059aea7ec24d0842edca2f75255eaa33a7b0', # Current revision of Khronos Vulkan-ValidationLayers. - 'vulkan_validation_revision': '5501a60aa6d6d1d8d35aaa4a7c0bdda02a0108db', + 'vulkan_validation_revision': '8a6fe16b4a1bb1f26385991d61ab1169d2284776', } deps = { diff --git a/third_party/vulkan-deps/glslang/src/README.md b/third_party/vulkan-deps/glslang/src/README.md index 48118b2943..efe986cab2 100644 --- a/third_party/vulkan-deps/glslang/src/README.md +++ b/third_party/vulkan-deps/glslang/src/README.md @@ -169,8 +169,8 @@ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" $SOURCE For building on Android: ```bash -cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_ROOT/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake -# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe +cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_HOME/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake +# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_HOME%\prebuilt\windows-x86_64\bin\make.exe # -G is needed for building on Windows # -DANDROID_ABI can also be armeabi-v7a for 32 bit ``` diff --git a/third_party/vulkan-deps/spirv-cross/src b/third_party/vulkan-deps/spirv-cross/src -Subproject 6a67891418a3f08be63f92726e049dc788e46f5 +Subproject 779138f39fa33f6fe6dab2e3b21938884f74a4b diff --git a/third_party/vulkan-deps/spirv-headers/src/CMakeLists.txt b/third_party/vulkan-deps/spirv-headers/src/CMakeLists.txt index f19390aadf..147f7adeee 100644 --- a/third_party/vulkan-deps/spirv-headers/src/CMakeLists.txt +++ b/third_party/vulkan-deps/spirv-headers/src/CMakeLists.txt @@ -89,9 +89,14 @@ if (SPIRV_HEADERS_ENABLE_INSTALL) set(namespace "${PROJECT_NAME}::") include(CMakePackageConfigHelpers) + + if (NOT CMAKE_VERSION VERSION_LESS 3.14) + set(arch_independent_str ARCH_INDEPENDENT) + endif() write_basic_package_version_file( "${version_config}" COMPATIBILITY SameMajorVersion + ${arch_independent_str} ) configure_package_config_file( diff --git a/third_party/vulkan-deps/spirv-tools/src/kokoro/scripts/windows/build.bat b/third_party/vulkan-deps/spirv-tools/src/kokoro/scripts/windows/build.bat index 24e29ccf08..8c9d6892c2 100644 --- a/third_party/vulkan-deps/spirv-tools/src/kokoro/scripts/windows/build.bat +++ b/third_party/vulkan-deps/spirv-tools/src/kokoro/scripts/windows/build.bat @@ -22,7 +22,7 @@ set BUILD_TYPE=%1 set VS_VERSION=%2 :: Force usage of python 3.6 -set PATH=C:\python36;"C:\Program Files\CMake\bin";%PATH% +set PATH=C:\python36;"C:\Program Files\cmake-3.23.1-windows-x86_64\bin";%PATH% cd %SRC% git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers external/spirv-headers diff --git a/third_party/vulkan-deps/spirv-tools/src/source/CMakeLists.txt b/third_party/vulkan-deps/spirv-tools/src/source/CMakeLists.txt index ab411737eb..98559b8fe9 100644 --- a/third_party/vulkan-deps/spirv-tools/src/source/CMakeLists.txt +++ b/third_party/vulkan-deps/spirv-tools/src/source/CMakeLists.txt @@ -407,7 +407,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") find_library(LIBRT rt) if(LIBRT) foreach(target ${SPIRV_TOOLS_TARGETS}) - target_link_libraries(${target} ${LIBRT}) + target_link_libraries(${target} rt) endforeach() endif() endif() diff --git a/third_party/vulkan-deps/vulkan-loader/src b/third_party/vulkan-deps/vulkan-loader/src -Subproject f503824ff8cbecfe39fb96ac89cbe959355dc31 +Subproject 71bd6240afaef2c199b47f26d715091fa6fdf4f diff --git a/third_party/vulkan-deps/vulkan-tools/src b/third_party/vulkan-deps/vulkan-tools/src -Subproject 5f3ce24e7a530d089842c8192c2565a67255525 +Subproject ef20059aea7ec24d0842edca2f75255eaa33a7b diff --git a/third_party/vulkan-deps/vulkan-validation-layers/src b/third_party/vulkan-deps/vulkan-validation-layers/src -Subproject 5501a60aa6d6d1d8d35aaa4a7c0bdda02a0108d +Subproject 8a6fe16b4a1bb1f26385991d61ab1169d228477 diff --git a/third_party/zlib/contrib/bench/zlib_bench.cc b/third_party/zlib/contrib/bench/zlib_bench.cc index 252560ea9e..fcb28486e1 100644 --- a/third_party/zlib/contrib/bench/zlib_bench.cc +++ b/third_party/zlib/contrib/bench/zlib_bench.cc @@ -193,7 +193,34 @@ void verify_equal(const char* input, size_t size, std::string* output) { exit(3); } -void zlib_file(const char* name, const zlib_wrapper type, int width) { +void check_file(const Data& file, zlib_wrapper type) { + std::string compressed; + zlib_compress(type, file.data.get(), file.size, &compressed, true); + + unsigned long check = crc32_z(0, Z_NULL, 0); + const Bytef* data = (const Bytef*)compressed.data(); + static_assert(sizeof(z_size_t) == sizeof(size_t), "z_size_t size"); + check = crc32_z(check, data, (z_size_t)compressed.size()); + + const size_t compressed_length = compressed.size(); + printf("data crc32 %.8lx length %zu\n", check, compressed_length); + + if (type == kWrapperGZIP) { + uint32_t prev_word, last_word; + data += compressed_length - 8; + prev_word = data[3] << 24 | data[2] << 16 | data[1] << 8 | data[0]; + data += 4; // last compressed data word + last_word = data[3] << 24 | data[2] << 16 | data[1] << 8 | data[0]; + printf("gzip crc32 %.8x length %u\n", prev_word, last_word); + } else if (type == kWrapperZLIB) { + uint32_t last_word; + data += compressed_length - 4; + last_word = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3]; + printf("zlib adler %.8x\n", last_word); + } +} + +void zlib_file(const char* name, zlib_wrapper type, int width, int check) { /* * Read the file data. */ @@ -208,6 +235,14 @@ void zlib_file(const char* name, const zlib_wrapper type, int width) { printf("%s%-40s :\n", strategy, name); /* + * Compress file: report output data checks. + */ + if (check) { + check_file(file, type); + return; + } + + /* * Chop the data into blocks. */ const int block_size = 1 << 20; @@ -311,9 +346,10 @@ void get_field_width(int argc, char* argv[], int& value) { } void usage_exit(const char* program) { - static auto* options = - "gzip|zlib|raw [--compression 0:9] [--huffman|--rle] [--field width]"; + static auto* options = "gzip|zlib|raw" + " [--compression 0:9] [--huffman|--rle] [--field width] [--check]"; printf("usage: %s %s files ...\n", program, options); + printf("zlib version: %s\n", ZLIB_VERSION); exit(1); } @@ -328,18 +364,21 @@ int main(int argc, char* argv[]) { else usage_exit(argv[0]); - int file_size_field_width = 0; + int size_field_width = 0; + int file_check = 0; while (argn < argc && argv[argn][0] == '-') { if (get_option(argc, argv, "--compression")) { if (!get_compression(argc, argv, zlib_compression_level)) usage_exit(argv[0]); - } else if (get_option(argc, argv, "--field")) { - get_field_width(argc, argv, file_size_field_width); } else if (get_option(argc, argv, "--huffman")) { zlib_strategy = Z_HUFFMAN_ONLY; } else if (get_option(argc, argv, "--rle")) { zlib_strategy = Z_RLE; + } else if (get_option(argc, argv, "--check")) { + file_check = 1; + } else if (get_option(argc, argv, "--field")) { + get_field_width(argc, argv, size_field_width); } else { usage_exit(argv[0]); } @@ -348,10 +387,10 @@ int main(int argc, char* argv[]) { if (argn >= argc) usage_exit(argv[0]); - if (file_size_field_width < 6) - file_size_field_width = 6; + if (size_field_width < 6) + size_field_width = 6; while (argn < argc) - zlib_file(argv[argn++], type, file_size_field_width); + zlib_file(argv[argn++], type, size_field_width, file_check); return 0; } |