Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:msizanoen:chromium
chromium
chromium-116-obamium.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File chromium-116-obamium.patch of Package chromium
diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn index 7d54384a9e7b5c0056748818cc5635f73c7bad88..0337c35d06d549e379c47a4439b0753c07efc025 100644 --- a/media/gpu/vaapi/BUILD.gn +++ b/media/gpu/vaapi/BUILD.gn @@ -9,7 +9,6 @@ import("//media/gpu/args.gni") import("//media/media_options.gni") import("//testing/test.gni") import("//tools/generate_stubs/rules.gni") -import("//ui/gl/features.gni") assert(is_linux || is_chromeos) assert(use_vaapi) @@ -17,9 +16,6 @@ assert(use_vaapi) generate_stubs("libva_stubs") { extra_header = "va_stub_header.fragment" sigs = [ "va.sigs" ] - if (use_vaapi_x11) { - sigs += [ "va_x11.sigs" ] - } if (is_chromeos_ash) { sigs += [ "va_prot.sigs" ] } @@ -111,7 +107,6 @@ source_set("vaapi") { public_deps = [ "//media", "//skia", - "//ui/gl", ] if (is_chromeos_ash) { @@ -171,7 +166,6 @@ source_set("common") { "//ui/base:features", "//ui/gfx:memory_buffer", "//ui/gfx/linux:drm", - "//ui/gl", ] if (use_ozone) { deps += [ "//ui/ozone" ] diff --git a/media/gpu/vaapi/va_x11.sigs b/media/gpu/vaapi/va_x11.sigs deleted file mode 100644 index 748e11c2dbbdaeb6deb4633a840f55b34a42b13c..0000000000000000000000000000000000000000 --- a/media/gpu/vaapi/va_x11.sigs +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2014 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -//------------------------------------------------ -// Functions from libva-x11 used in chromium code. -//------------------------------------------------ -VADisplay vaGetDisplay(Display *dpy); -VAStatus vaPutSurface(VADisplay dpy, VASurfaceID surface, Drawable draw, short srcx, short srcy, unsigned short srcw, unsigned short srch, short destx, short desty, unsigned short destw, unsigned short desth, VARectangle *cliprects, unsigned int number_cliprects, unsigned int flags); diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc index b0140b4c6b1bf44b5ceafb5c4fac74ddcf6a4fc7..a099a641101a6763ddeea71ea0a9bbd3b0900995 100644 --- a/media/gpu/vaapi/vaapi_wrapper.cc +++ b/media/gpu/vaapi/vaapi_wrapper.cc @@ -59,18 +59,6 @@ #include "ui/gfx/linux/native_pixmap_dmabuf.h" #include "ui/gfx/native_pixmap.h" #include "ui/gfx/native_pixmap_handle.h" -#include "ui/gl/gl_bindings.h" -#include "ui/gl/gl_implementation.h" - -#if BUILDFLAG(USE_VAAPI_X11) -typedef XID Drawable; - -extern "C" { -#include "media/gpu/vaapi/va_x11.sigs" -} - -#include "ui/gfx/x/connection.h" // nogncheck -#endif // BUILDFLAG(USE_VAAPI_X11) #if BUILDFLAG(IS_OZONE) #include "ui/ozone/public/ozone_platform.h" @@ -82,17 +70,11 @@ extern "C" { using media_gpu_vaapi::kModuleVa_prot; #endif -using media_gpu_vaapi::kModuleVa; -using media_gpu_vaapi::kModuleVa_drm; -#if BUILDFLAG(USE_VAAPI_X11) -using media_gpu_vaapi::kModuleVa_x11; -#endif // BUILDFLAG(USE_VAAPI_X11) using media_gpu_vaapi::InitializeStubs; -using media_gpu_vaapi::IsVaInitialized; -#if BUILDFLAG(USE_VAAPI_X11) -using media_gpu_vaapi::IsVa_x11Initialized; -#endif // BUILDFLAG(USE_VAAPI_X11) using media_gpu_vaapi::IsVa_drmInitialized; +using media_gpu_vaapi::IsVaInitialized; +using media_gpu_vaapi::kModuleVa; +using media_gpu_vaapi::kModuleVa_drm; using media_gpu_vaapi::StubPathMap; namespace media { @@ -116,7 +98,7 @@ enum class VaapiFunctions { kVAExportSurfaceHandle = 12, kVAGetConfigAttributes = 13, kVAPutImage = 14, - kVAPutSurface = 15, + // kVAPutSurface = 15, // UNUSED. kVAQueryConfigAttributes = 16, kVAQueryImageFormats = 17, kVAQuerySurfaceAttributes = 18, @@ -160,7 +142,7 @@ constexpr std::array<const char*, "vaExportSurfaceHandle", "vaGetConfigAttributes", "vaPutImage", - "vaPutSurface", + "", // UNUSED (used to be vaPutSurface). "vaQueryConfigAttributes", "vaQueryImageFormats", "vaQuerySurfaceAttributes", @@ -784,50 +766,6 @@ bool IsBlockedDriver(VaapiWrapper::CodecMode mode, return false; } -#if BUILDFLAG(USE_VAAPI_X11) - -absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) { - switch (gl::GetGLImplementation()) { - case gl::kGLImplementationEGLGLES2: - return vaGetDisplayDRM(drm_fd.get()); - - case gl::kGLImplementationNone: { - VADisplay display = - vaGetDisplay(x11::Connection::Get()->GetXlibDisplay()); - if (vaDisplayIsValid(display)) - return display; - return vaGetDisplayDRM(drm_fd.get()); - } - - case gl::kGLImplementationEGLANGLE: - return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay()); - - default: - LOG(WARNING) << "VAAPI video acceleration not available for " - << gl::GetGLImplementationGLName( - gl::GetGLImplementationParts()); - return absl::nullopt; - } -} - -#else - -absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) { - switch (gl::GetGLImplementation()) { - case gl::kGLImplementationEGLGLES2: - case gl::kGLImplementationEGLANGLE: - case gl::kGLImplementationNone: - return vaGetDisplayDRM(drm_fd.get()); - default: - LOG(WARNING) << "VAAPI video acceleration not available for " - << gl::GetGLImplementationGLName( - gl::GetGLImplementationParts()); - return absl::nullopt; - } -} - -#endif // BUILDFLAG(USE_VAAPI_X11) - // Returns all the VAProfiles that the driver lists as supported, regardless of // what Chrome supports or not. std::vector<VAProfile> GetSupportedVAProfiles(const base::Lock* va_lock, @@ -1623,10 +1561,7 @@ VADisplayStateHandle VADisplayStateSingleton::GetHandle() { } #endif - bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized(); -#if BUILDFLAG(USE_VAAPI_X11) - libraries_initialized = libraries_initialized && IsVa_x11Initialized(); -#endif + const bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized(); if (!libraries_initialized) { return {}; } @@ -1649,17 +1584,7 @@ bool VADisplayStateSingleton::Initialize() { env->SetVar(libva_log_level_env, "1"); } - absl::optional<VADisplay> display = -#if BUILDFLAG(USE_VAAPI_X11) - GetVADisplayStateX11(drm_fd_); -#else - GetVADisplayState(drm_fd_); -#endif - - if (!display) { - return false; - } - VADisplay va_display = *display; + const VADisplay va_display = vaGetDisplayDRM(drm_fd_.get()); base::ScopedClosureRunner va_display_cleaner_cb(base::BindOnce( [](VADisplay va_display) { if (vaDisplayIsValid(va_display)) { @@ -2803,27 +2728,6 @@ bool VaapiWrapper::MapAndCopyAndExecute( return Execute_Locked(va_surface_id, va_buffer_ids); } -#if BUILDFLAG(USE_VAAPI_X11) -bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id, - x11::Pixmap x_pixmap, - gfx::Size dest_size) { - CHECK(!enforce_sequence_affinity_ || - sequence_checker_.CalledOnValidSequence()); - base::AutoLockMaybe auto_lock(va_lock_.get()); - - VAStatus va_res = vaSyncSurface(va_display_, va_surface_id); - VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVASyncSurface, false); - - // Put the data into an X Pixmap. - va_res = - vaPutSurface(va_display_, va_surface_id, static_cast<uint32_t>(x_pixmap), - 0, 0, dest_size.width(), dest_size.height(), 0, 0, - dest_size.width(), dest_size.height(), nullptr, 0, 0); - VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false); - return true; -} -#endif // BUILDFLAG(USE_VAAPI_X11) - std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage( VASurfaceID va_surface_id, VAImageFormat* format, @@ -3227,17 +3131,11 @@ void VaapiWrapper::PreSandboxInitialization(bool allow_disabling_global_lock) { paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix); paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix); -#if BUILDFLAG(USE_VAAPI_X11) - paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix); -#endif #if BUILDFLAG(IS_CHROMEOS_ASH) paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix); #endif - // InitializeStubs dlopen() VA-API libraries - // libva.so - // libva-x11.so (X11) - // libva-drm.so (X11 and Ozone). + // InitializeStubs dlopen()s VA-API libraries and loads the required symbols. static bool result = InitializeStubs(paths); if (!result) { static const char kErrorMsg[] = "Failed to initialize VAAPI libs"; diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h index c093cf8324105219c1e9169f29d9ac70f5402a94..e3f253417aca6e9dd4b2eabe82246e4b7f94c69f 100644 --- a/media/gpu/vaapi/vaapi_wrapper.h +++ b/media/gpu/vaapi/vaapi_wrapper.h @@ -36,10 +36,6 @@ #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/geometry/size.h" -#if BUILDFLAG(USE_VAAPI_X11) -#include "ui/gfx/x/xproto.h" // nogncheck -#endif // BUILDFLAG(USE_VAAPI_X11) - namespace gfx { enum class BufferFormat : uint8_t; class NativePixmap; @@ -481,14 +477,6 @@ class MEDIA_GPU_EXPORT VaapiWrapper VASurfaceID va_surface_id, const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers); -#if BUILDFLAG(USE_VAAPI_X11) - // Put data from |va_surface_id| into |x_pixmap| of size - // |dest_size|, converting/scaling to it. - [[nodiscard]] bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id, - x11::Pixmap x_pixmap, - gfx::Size dest_size); -#endif // BUILDFLAG(USE_VAAPI_X11) - // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into // memory with the given |format| and |size|. If |format| is not equal to the // internal format, the underlying implementation will do format conversion if diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn index 3105ea1388f3265f3398808ea3855485e24dea6f..1661b42c090d5852f7860a243946b1cd27c13e48 100644 --- a/media/gpu/BUILD.gn +++ b/media/gpu/BUILD.gn @@ -21,7 +21,6 @@ buildflag_header("buildflags") { "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs", "USE_V4L2_CODEC=$use_v4l2_codec", "USE_LIBV4L2=$use_v4lplugin", - "USE_VAAPI_X11=$use_vaapi_x11", ] } diff --git a/media/gpu/args.gni b/media/gpu/args.gni index 6a3dcef82e8a777fd9392efa40a5b05ec940424c..de9ba9b1745ae39fc9919057ec44a124c322b792 100644 --- a/media/gpu/args.gni +++ b/media/gpu/args.gni @@ -5,13 +5,6 @@ import("//build/config/chromeos/ui_mode.gni") import("//build/config/ozone.gni") -declare_args() { - # Indicates if X11 VA-API-based hardware acceleration is to be used. - # See also the comment near the |use_vaapi| arg. - use_vaapi_x11 = is_linux && ozone_platform_x11 && - (target_cpu == "x86" || target_cpu == "x64") && !is_castos -} - declare_args() { # Indicates if V4L plugin is used. use_v4lplugin = false @@ -23,10 +16,11 @@ declare_args() { # Indicates if VA-API-based hardware acceleration is to be used. This # is typically the case on x86-based ChromeOS devices. - # VA-API should also be compiled by default on x11-using linux devices + # VA-API should also be compiled by default on x11/wayland linux devices # using x86/x64. - use_vaapi = use_vaapi_x11 || (is_chromeos_lacros && - (target_cpu == "x86" || target_cpu == "x64")) + use_vaapi = (is_chromeos_lacros || + (is_linux && (ozone_platform_x11 || ozone_platform_wayland) && + !is_castos)) && (target_cpu == "x86" || target_cpu == "x64") # Indicates if ChromeOS protected media support exists. This is used # to enable the CDM daemon in Chrome OS as well as support for diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn index 0337c35d06d549e379c47a4439b0753c07efc025..671d501d86ddc336f34f3ce9fe4ec4d23705a596 100644 --- a/media/gpu/vaapi/BUILD.gn +++ b/media/gpu/vaapi/BUILD.gn @@ -171,10 +171,6 @@ source_set("common") { deps += [ "//ui/ozone" ] } - if (use_vaapi_x11) { - deps += [ "//ui/gfx/x" ] - } - configs += [ "//build/config/linux/libva" ] } diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment index e8c46c5e81c366b9f3f59111acd72ecc29ca3f5e..a60c2d25214a6fc687a52183d924b4da776ac69e 100644 --- a/media/gpu/vaapi/va_stub_header.fragment +++ b/media/gpu/vaapi/va_stub_header.fragment @@ -7,8 +7,5 @@ extern "C" { #include <va/va_drm.h> #include <va/va.h> -#if BUILDFLAG(USE_VAAPI_X11) -#include <va/va_x11.h> -#endif // BUILDFLAG(USE_VAAPI_X11) } diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc index a099a641101a6763ddeea71ea0a9bbd3b0900995..d12105adaa8bc02195b514b4c43dcc2d4f1c39ba 100644 --- a/media/gpu/vaapi/vaapi_wrapper.cc +++ b/media/gpu/vaapi/vaapi_wrapper.cc @@ -1547,20 +1547,6 @@ VADisplayStateHandle VADisplayStateSingleton::GetHandle() { return {}; } -#if BUILDFLAG(IS_OZONE) && BUILDFLAG(IS_LINUX) - // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on - // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi - // for more details. This will also require revisiting everything that's - // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the - // user chooses the Wayland backend for Ozone at runtime, then many things (if - // not all) that we do for X11 won't apply. - if (!ui::OzonePlatform::GetInstance() - ->GetPlatformProperties() - .supports_vaapi) { - return {}; - } -#endif - const bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized(); if (!libraries_initialized) { return {}; diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc index bf0365da219530780ec232e477f13ed216e6d5b9..30d30d7392d59c0731c34afa382d0fb497b0e9af 100644 --- a/ui/ozone/platform/x11/ozone_platform_x11.cc +++ b/ui/ozone/platform/x11/ozone_platform_x11.cc @@ -197,9 +197,6 @@ class OzonePlatformX11 : public OzonePlatform, properties->supports_global_application_menus = true; properties->app_modal_dialogs_use_event_blocker = true; properties->fetch_buffer_formats_for_gmb_on_gpu = true; -#if BUILDFLAG(IS_LINUX) - properties->supports_vaapi = true; -#endif initialised = true; } diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h index dbdf1d99a28beced97636fd558be67a92e0a4793..ecd2e8bd35e31e9965d1bc3eaead3d1f89beecd7 100644 --- a/ui/ozone/public/ozone_platform.h +++ b/ui/ozone/public/ozone_platform.h @@ -140,15 +140,6 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform { // back via gpu extra info. bool fetch_buffer_formats_for_gmb_on_gpu = false; -#if BUILDFLAG(IS_LINUX) - // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on - // Linux. At the moment, VA-API Linux implementation supports only X11 - // backend. This implementation must be refactored to support Ozone - // properly. As a temporary solution, VA-API on Linux checks if vaapi is - // supported (which implicitly means that it is Ozone/X11). - bool supports_vaapi = false; -#endif - // Indicates that the platform allows client applications to manipulate // global screen coordinates. Wayland, for example, disallow it by design. bool supports_global_screen_coordinates = true; diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn index f5038c6478eeccc17e061681dbee0f384dac4911..d71e0d08b4357bd34f7c3b22b26ed09641bab274 100644 --- a/ui/gfx/BUILD.gn +++ b/ui/gfx/BUILD.gn @@ -641,6 +641,7 @@ source_set("memory_buffer_sources") { "linux/client_native_pixmap_dmabuf.h", "linux/client_native_pixmap_factory_dmabuf.cc", "linux/client_native_pixmap_factory_dmabuf.h", + "linux/dmabuf_uapi.h", "linux/native_pixmap_dmabuf.cc", "linux/native_pixmap_dmabuf.h", ] diff --git a/ui/gfx/linux/client_native_pixmap_dmabuf.cc b/ui/gfx/linux/client_native_pixmap_dmabuf.cc index ed43aafa073f74acc4faaa04ca92cd6666d66d32..a350049370e7c51e6f7e22274bf392943a48e6e1 100644 --- a/ui/gfx/linux/client_native_pixmap_dmabuf.cc +++ b/ui/gfx/linux/client_native_pixmap_dmabuf.cc @@ -5,7 +5,6 @@ #include "ui/gfx/linux/client_native_pixmap_dmabuf.h" #include <fcntl.h> -#include <linux/version.h> #include <stddef.h> #include <sys/ioctl.h> #include <sys/mman.h> @@ -25,27 +24,9 @@ #include "build/chromecast_buildflags.h" #include "build/chromeos_buildflags.h" #include "ui/gfx/buffer_format_util.h" +#include "ui/gfx/linux/dmabuf_uapi.h" #include "ui/gfx/switches.h" -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#include <linux/dma-buf.h> -#else -#include <linux/types.h> - -struct dma_buf_sync { - __u64 flags; -}; - -#define DMA_BUF_SYNC_READ (1 << 0) -#define DMA_BUF_SYNC_WRITE (2 << 0) -#define DMA_BUF_SYNC_RW (DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE) -#define DMA_BUF_SYNC_START (0 << 2) -#define DMA_BUF_SYNC_END (1 << 2) - -#define DMA_BUF_BASE 'b' -#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) -#endif - namespace gfx { namespace { diff --git a/ui/gfx/linux/dmabuf_uapi.h b/ui/gfx/linux/dmabuf_uapi.h new file mode 100644 index 0000000000000000000000000000000000000000..d13b890c78885f908d2106f07da24ba157d27580 --- /dev/null +++ b/ui/gfx/linux/dmabuf_uapi.h @@ -0,0 +1,48 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_GFX_LINUX_DMABUF_UAPI_H_ +#define UI_GFX_LINUX_DMABUF_UAPI_H_ + +#include <linux/version.h> + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +#include <linux/dma-buf.h> +#else +#include <linux/types.h> + +struct dma_buf_sync { + __u64 flags; +}; + +constexpr __u64 DMA_BUF_SYNC_READ = 1 << 0; +constexpr __u64 DMA_BUF_SYNC_WRITE = 2 << 0; +constexpr __u64 DMA_BUF_SYNC_RW = DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE; + +constexpr __u64 DMA_BUF_SYNC_START = 0 << 2; +constexpr __u64 DMA_BUF_SYNC_END = 1 << 2; + +constexpr char DMA_BUF_BASE = 'b'; +constexpr unsigned long DMA_BUF_IOCTL_SYNC = + _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync); +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0) +struct dma_buf_export_sync_file { + __u32 flags; + __s32 fd; +}; + +struct dma_buf_import_sync_file { + __u32 flags; + __s32 fd; +}; + +constexpr unsigned long DMA_BUF_IOCTL_EXPORT_SYNC_FILE = + _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file); +constexpr unsigned long DMA_BUF_IOCTL_IMPORT_SYNC_FILE = + _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file); +#endif + +#endif // UI_GFX_LINUX_DMABUF_UAPI_H_ diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc index f7e22308d03600c4eeb9842c43e0da8ef5d6d31d..cbdb0d08db4f787cd6f00a77e5e09effa3643d31 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc +++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc @@ -4,17 +4,23 @@ #include "ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h" +#include <sys/ioctl.h> +#include <sys/utsname.h> +#include <unistd.h> + #include <presentation-time-client-protocol.h> #include <memory> #include <utility> #include "base/functional/bind.h" #include "base/i18n/number_formatting.h" +#include "base/posix/eintr_wrapper.h" #include "base/strings/strcat.h" #include "base/strings/utf_string_conversions.h" #include "base/task/current_thread.h" #include "base/trace_event/trace_event.h" #include "ui/gfx/gpu_fence_handle.h" +#include "ui/gfx/linux/dmabuf_uapi.h" #include "ui/gfx/linux/drm_util_linux.h" #include "ui/ozone/platform/wayland/common/wayland_overlay_config.h" #include "ui/ozone/platform/wayland/host/surface_augmenter.h" @@ -35,6 +41,43 @@ std::string NumberToString(uint32_t number) { return base::UTF16ToUTF8(base::FormatNumber(number)); } +struct KernelVersion { + int32_t major; + int32_t minor; + int32_t bugfix; +}; + +KernelVersion KernelVersionNumbers() { + KernelVersion ver; + struct utsname info; + if (uname(&info) < 0) { + NOTREACHED(); + ver.major = 0; + ver.minor = 0; + ver.bugfix = 0; + return ver; + } + int num_read = + sscanf(info.release, "%d.%d.%d", &ver.major, &ver.minor, &ver.bugfix); + if (num_read < 1) { + ver.major = 0; + } + if (num_read < 2) { + ver.minor = 0; + } + if (num_read < 3) { + ver.bugfix = 0; + } + return ver; +} + +bool CheckImportExportFence() { + KernelVersion ver = KernelVersionNumbers(); + + // DMA_BUF_IOCTL_{IMPORT,EXPORT}_SYNC_FILE was added in 6.0 + return ver.major >= 6; +} + } // namespace WaylandBufferManagerHost::WaylandBufferManagerHost( @@ -64,6 +107,7 @@ void WaylandBufferManagerHost::OnChannelDestroyed() { DCHECK(base::CurrentUIThread::IsSet()); buffer_backings_.clear(); + dma_buffers_.clear(); for (auto* window : connection_->window_manager()->GetAllWindows()) window->OnChannelDestroyed(); @@ -87,7 +131,8 @@ bool WaylandBufferManagerHost::SupportsDmabuf() const { } bool WaylandBufferManagerHost::SupportsAcquireFence() const { - return !!connection_->linux_explicit_synchronization_v1(); + return !!connection_->linux_explicit_synchronization_v1() || + connection_->UseImplicitSyncInterop(); } bool WaylandBufferManagerHost::SupportsViewporter() const { @@ -138,6 +183,10 @@ void WaylandBufferManagerHost::CreateDmabufBasedBuffer( return; } + if (connection_->UseImplicitSyncInterop()) { + dma_buffers_.emplace(buffer_id, dup(fd.get())); + } + // Check if any of the surfaces has already had a buffer with the same id. auto result = buffer_backings_.emplace( buffer_id, std::make_unique<WaylandBufferBackingDmabuf>( @@ -305,6 +354,7 @@ void WaylandBufferManagerHost::DestroyBuffer(uint32_t buffer_id) { } buffer_backings_.erase(buffer_id); + dma_buffers_.erase(buffer_id); } bool WaylandBufferManagerHost::ValidateDataFromGpu( @@ -433,6 +483,49 @@ void WaylandBufferManagerHost::OnPresentation( buffer_manager_gpu_associated_->OnPresentation(widget, presentation_infos); } +void WaylandBufferManagerHost::InsertAcquireFence(uint32_t buffer_id, + int sync_fd) { + DCHECK(connection_->UseImplicitSyncInterop()); + auto it = dma_buffers_.find(buffer_id); + if (it == dma_buffers_.end()) { + return; + } + + struct dma_buf_import_sync_file req; + req.flags = DMA_BUF_SYNC_RW; + req.fd = sync_fd; + + int rv = HANDLE_EINTR( + ioctl(it->second.get(), DMA_BUF_IOCTL_IMPORT_SYNC_FILE, &req)); + PLOG_IF(ERROR, rv) << "Failed DMA_BUF_IOCTL_IMPORT_SYNC_FILE"; +} + +base::ScopedFD WaylandBufferManagerHost::ExtractReleaseFence( + uint32_t buffer_id) { + DCHECK(connection_->UseImplicitSyncInterop()); + auto it = dma_buffers_.find(buffer_id); + if (it == dma_buffers_.end()) { + return base::ScopedFD(); + } + + struct dma_buf_export_sync_file req; + req.flags = DMA_BUF_SYNC_RW; + + if (HANDLE_EINTR( + ioctl(it->second.get(), DMA_BUF_IOCTL_EXPORT_SYNC_FILE, &req)) < 0) { + return base::ScopedFD(); + } + + return base::ScopedFD(req.fd); +} + +// static +bool WaylandBufferManagerHost::SupportsImplicitSyncInterop() { + static const bool can_import_export_sync_file = CheckImportExportFence(); + + return can_import_export_sync_file; +} + void WaylandBufferManagerHost::TerminateGpuProcess() { DCHECK(!error_message_.empty()); std::move(terminate_gpu_cb_).Run(std::move(error_message_)); diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h index ced92039cbc5954005475963bd5690483ad2a65b..acabf1eafb3d474b5f977c972bb1fdd31efc61b5 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h +++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h @@ -144,6 +144,16 @@ class WaylandBufferManagerHost : public ozone::mojom::WaylandBufferManagerHost { gfx::AcceleratedWidget widget, const std::vector<wl::WaylandPresentationInfo>& presentation_infos); + // Inserts a sync_file to a DMA-BUF object to make explicit-sync-unaware + // compositors wait on the fence. + void InsertAcquireFence(uint32_t buffer_id, int sync_fd); + + // Extracts a sync_file from a DMA-BUF that will only trigger when the + // compositor is no longer reading from the buffer. + base::ScopedFD ExtractReleaseFence(uint32_t buffer_id); + + static bool SupportsImplicitSyncInterop(); + private: // Validates data sent from GPU. If invalid, returns false and sets an error // message to |error_message_|. @@ -183,6 +193,8 @@ class WaylandBufferManagerHost : public ozone::mojom::WaylandBufferManagerHost { // Maps buffer_id's to corresponding WaylandBufferBacking objects. base::flat_map<uint32_t, std::unique_ptr<WaylandBufferBacking>> buffer_backings_; + + base::flat_map<uint32_t, base::ScopedFD> dma_buffers_; }; } // namespace ui diff --git a/ui/ozone/platform/wayland/host/wayland_connection.h b/ui/ozone/platform/wayland/host/wayland_connection.h index 248aef72ffc7800b925a89ae1440af20429b558f..f6b07936ffd144f4ae16d3467735826de8ba63b0 100644 --- a/ui/ozone/platform/wayland/host/wayland_connection.h +++ b/ui/ozone/platform/wayland/host/wayland_connection.h @@ -19,6 +19,7 @@ #include "ui/display/tablet_state.h" #include "ui/events/event.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" +#include "ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h" #include "ui/ozone/platform/wayland/host/wayland_clipboard.h" #include "ui/ozone/platform/wayland/host/wayland_data_drag_controller.h" #include "ui/ozone/platform/wayland/host/wayland_data_source.h" @@ -342,6 +343,11 @@ class WaylandConnection { void DumpState(std::ostream& out) const; + bool UseImplicitSyncInterop() const { + return !linux_explicit_synchronization_v1() && + WaylandBufferManagerHost::SupportsImplicitSyncInterop(); + } + private: friend class WaylandConnectionTestApi; diff --git a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc index 51204bd90f5fcb4bb9ffc127419b799c3a7e95a9..f171d3b2757c73de838f56b2104a6ee8dffd363a 100644 --- a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc +++ b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc @@ -630,6 +630,22 @@ void WaylandFrameManager::OnWlBufferRelease(WaylandSurface* surface, auto result = frame->submitted_buffers.find(surface); if (result != frame->submitted_buffers.end() && result->second->wl_buffer() == wl_buffer) { + if (connection_->UseImplicitSyncInterop()) { + base::ScopedFD fence = + connection_->buffer_manager_host()->ExtractReleaseFence( + result->second->id()); + + if (fence.is_valid()) { + if (frame->merged_release_fence_fd.is_valid()) { + frame->merged_release_fence_fd.reset(sync_merge( + "", frame->merged_release_fence_fd.get(), fence.get())); + } else { + frame->merged_release_fence_fd = std::move(fence); + } + DCHECK(frame->merged_release_fence_fd.is_valid()); + } + } + frame->submitted_buffers.erase(result); break; } diff --git a/ui/ozone/platform/wayland/host/wayland_surface.cc b/ui/ozone/platform/wayland/host/wayland_surface.cc index 6cf293088815d82359ed31db6102880613563ee0..092aeac71af0af184b476802e8586bdd840ca182 100644 --- a/ui/ozone/platform/wayland/host/wayland_surface.cc +++ b/ui/ozone/platform/wayland/host/wayland_surface.cc @@ -261,7 +261,8 @@ void WaylandSurface::set_acquire_fence(gfx::GpuFenceHandle acquire_fence) { // WaylandBufferManagerGPU knows if the synchronization is not available and // must disallow clients to use explicit synchronization. DCHECK(!apply_state_immediately_); - DCHECK(connection_->linux_explicit_synchronization_v1()); + DCHECK(connection_->linux_explicit_synchronization_v1() || + connection_->UseImplicitSyncInterop()); if (!acquire_fence.is_null()) { base::TimeTicks ticks; auto status = gfx::GpuFence::GetStatusChangeTime( @@ -491,6 +492,12 @@ void WaylandSurface::ApplyPendingState() { pending_state_.buffer, std::move(next_explicit_release_request_))); } + } else if (connection_->UseImplicitSyncInterop()) { + if (!pending_state_.acquire_fence.is_null()) { + connection_->buffer_manager_host()->InsertAcquireFence( + pending_state_.buffer_id, + pending_state_.acquire_fence.owned_fd.get()); + } } } } diff --git a/ui/ozone/platform/wayland/host/wayland_pointer.cc b/ui/ozone/platform/wayland/host/wayland_pointer.cc index e41e0a673e8669699106d732aea579c4948d3310..35c5306c68114e08d6e5fee7ace89f2f67dbbdbf 100644 --- a/ui/ozone/platform/wayland/host/wayland_pointer.cc +++ b/ui/ozone/platform/wayland/host/wayland_pointer.cc @@ -109,6 +109,13 @@ void WaylandPointer::Enter(void* data, pointer->delegate_->OnPointerFocusChanged( window, pointer->connection_->MaybeConvertLocation(location, window), EventDispatchPolicyForPlatform()); + + // Whenever the window gets the pointer focus back, the cursor shape must be + // updated. Otherwise, it is invalidated upon wl_pointer::leave and is not + // restored by the Wayland compositor. + if (window) { + window->ForceUpdateCursor(); + } } // static diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc index 3bee7878603c7d7f7cb1357706d850a8ec68edf8..66859c0bc84d8cae457a851de86a304709f016e1 100644 --- a/ui/ozone/platform/wayland/host/wayland_window.cc +++ b/ui/ozone/platform/wayland/host/wayland_window.cc @@ -230,11 +230,10 @@ absl::optional<WaylandOutput::Id> WaylandWindow::GetPreferredEnteredOutputId() { return preferred_id; } -void WaylandWindow::OnPointerFocusChanged(bool focused) { - // Whenever the window gets the pointer focus back, the cursor shape must be - // updated. Otherwise, it is invalidated upon wl_pointer::leave and is not - // restored by the Wayland compositor. - if (focused && cursor_) { +void WaylandWindow::OnPointerFocusChanged(bool focused) {} + +void WaylandWindow::ForceUpdateCursor() { + if (cursor_) { UpdateCursorShape(cursor_); } } diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h index 37d4dc8c214b996d24766d7afb59d623c34c8dbf..5cbaf689e32c730c54bcd234b23082d94fa76965 100644 --- a/ui/ozone/platform/wayland/host/wayland_window.h +++ b/ui/ozone/platform/wayland/host/wayland_window.h @@ -123,6 +123,9 @@ class WaylandWindow : public PlatformWindow, // Called when the focus changed on this window. void OnPointerFocusChanged(bool focused); + // Called when the window cursor needs to be resent to the compositor. + void ForceUpdateCursor(); + // Returns the focus status of this window. bool HasPointerFocus() const; bool HasKeyboardFocus() const; diff --git a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc index 751fe253226175aceab2261a1ed85366d6b5b594..4483f191516e2d1a98a202580edbde603a70237f 100644 --- a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc +++ b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc @@ -138,6 +138,7 @@ void WaylandToplevelWindow::DispatchHostWindowDragMovement( shell_toplevel_->SurfaceResize(connection(), hittest); connection()->Flush(); + connection()->event_source()->ResetPointerFlags(); } void WaylandToplevelWindow::Show(bool inactive) { diff --git a/ui/base/cursor/cursor_factory.cc b/ui/base/cursor/cursor_factory.cc index feba8c1afcbeaf28f790c3ad337f7bc41b042abd..4ec0b68cf0c4337255cb8d54e7c5040346781b37 100644 --- a/ui/base/cursor/cursor_factory.cc +++ b/ui/base/cursor/cursor_factory.cc @@ -61,6 +61,15 @@ scoped_refptr<PlatformCursor> CursorFactory::GetDefaultCursor( return nullptr; } +scoped_refptr<PlatformCursor> CursorFactory::GetDefaultCursor( + mojom::CursorType type, + float scale) { + // If the backend doesn't provide its own implementation of + // GetDefaultCursor(type, scale) it is assumed that the cursor objects + // returned by GetDefaultCursor(type) are independent of display scale values. + return GetDefaultCursor(type); +} + scoped_refptr<PlatformCursor> CursorFactory::CreateImageCursor( mojom::CursorType type, const SkBitmap& bitmap, diff --git a/ui/base/cursor/cursor_factory.h b/ui/base/cursor/cursor_factory.h index f4271188ffc7456b52db0a53faef62288254253e..f5a08c9e29e7b8d28cfc3c1aeebbb6a86d0808ef 100644 --- a/ui/base/cursor/cursor_factory.h +++ b/ui/base/cursor/cursor_factory.h @@ -56,6 +56,13 @@ class COMPONENT_EXPORT(UI_BASE_CURSOR) CursorFactory { virtual scoped_refptr<PlatformCursor> GetDefaultCursor( mojom::CursorType type); + // Return the default cursor of the specified type. When a default cursor is + // not available, nullptr is returned. This is implemented by backends that + // manages its own cursor images and therefore needs to know the appropriate + // scale to load them at. + virtual scoped_refptr<PlatformCursor> GetDefaultCursor(mojom::CursorType type, + float scale); + // Return the {bitmaps, hotspot} for the default cursor of the specified // `type`. If that cursor is not available or the extraction of the data // fails, return `absl::nullopt`. diff --git a/ui/ozone/platform/wayland/BUILD.gn b/ui/ozone/platform/wayland/BUILD.gn index ac3fe274fd951a6a35629ee37fb72e123a2cd779..1edae9983ceb5684f54cec42c44d71f393985d39 100644 --- a/ui/ozone/platform/wayland/BUILD.gn +++ b/ui/ozone/platform/wayland/BUILD.gn @@ -338,8 +338,10 @@ source_set("wayland") { ] } - if (!is_chromeos) { + if (is_linux) { sources += [ + "host/wayland_async_cursor.cc", + "host/wayland_async_cursor.h", "host/wayland_cursor_factory.cc", "host/wayland_cursor_factory.h", ] @@ -629,7 +631,7 @@ source_set("wayland_unittests") { "//ui/platform_window/wm", ] - if (!is_chromeos) { + if (is_linux) { sources += [ "host/wayland_cursor_factory_unittest.cc" ] } diff --git a/ui/ozone/platform/wayland/host/wayland_async_cursor.cc b/ui/ozone/platform/wayland/host/wayland_async_cursor.cc new file mode 100644 index 0000000000000000000000000000000000000000..8d8878258293207b946008f45c771a368811c7b4 --- /dev/null +++ b/ui/ozone/platform/wayland/host/wayland_async_cursor.cc @@ -0,0 +1,43 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/ozone/platform/wayland/host/wayland_async_cursor.h" + +namespace ui { + +// static +scoped_refptr<WaylandAsyncCursor> WaylandAsyncCursor::FromPlatformCursor( + scoped_refptr<PlatformCursor> platform_cursor) { + return base::WrapRefCounted( + static_cast<WaylandAsyncCursor*>(platform_cursor.get())); +} + +WaylandAsyncCursor::WaylandAsyncCursor() = default; + +WaylandAsyncCursor::WaylandAsyncCursor( + scoped_refptr<BitmapCursor> bitmap_cursor) + : loaded_(true), bitmap_cursor_(bitmap_cursor) {} + +void WaylandAsyncCursor::AddCursorLoadedCallback(Callback callback) { + if (loaded_) { + std::move(callback).Run(bitmap_cursor_); + } else { + callbacks_.push_back(std::move(callback)); + } +} + +void WaylandAsyncCursor::SetBitmapCursor( + scoped_refptr<BitmapCursor> bitmap_cursor) { + DCHECK(!loaded_); + bitmap_cursor_ = bitmap_cursor; + loaded_ = true; + for (auto& callback : callbacks_) { + std::move(callback).Run(bitmap_cursor_); + } + callbacks_.clear(); +} + +WaylandAsyncCursor::~WaylandAsyncCursor() = default; + +} // namespace ui diff --git a/ui/ozone/platform/wayland/host/wayland_async_cursor.h b/ui/ozone/platform/wayland/host/wayland_async_cursor.h new file mode 100644 index 0000000000000000000000000000000000000000..90473ab6b7953b0f8f6630516cfea4d519f711dc --- /dev/null +++ b/ui/ozone/platform/wayland/host/wayland_async_cursor.h @@ -0,0 +1,53 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ASYNC_CURSOR_H_ +#define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ASYNC_CURSOR_H_ + +#include <vector> + +#include "base/component_export.h" +#include "base/functional/callback.h" +#include "base/memory/scoped_refptr.h" +#include "ui/ozone/common/bitmap_cursor.h" + +namespace ui { + +class WaylandAsyncCursor : public PlatformCursor { + public: + using Callback = base::OnceCallback<void(scoped_refptr<BitmapCursor>)>; + + static scoped_refptr<WaylandAsyncCursor> FromPlatformCursor( + scoped_refptr<PlatformCursor> platform_cursor); + + WaylandAsyncCursor(); + explicit WaylandAsyncCursor(scoped_refptr<BitmapCursor>); + WaylandAsyncCursor(const WaylandAsyncCursor&) = delete; + WaylandAsyncCursor& operator=(const WaylandAsyncCursor&) = delete; + + // Adds a callback to be invoked when the cursor bitmap is loaded. The + // callback will be invoked immediately if the cursor was already loaded. + void AddCursorLoadedCallback(Callback callback); + + // Set the loaded cursor bitmap for this asynchronous cursor object and + // invokes all pending callbacks. + void SetBitmapCursor(scoped_refptr<BitmapCursor> bitmap_cursor); + + bool loaded() const { return loaded_; } + scoped_refptr<BitmapCursor> bitmap_cursor() const { return bitmap_cursor_; } + + private: + friend class base::RefCounted<PlatformCursor>; + + ~WaylandAsyncCursor() override; + + bool loaded_ = false; + scoped_refptr<BitmapCursor> bitmap_cursor_; + + std::vector<Callback> callbacks_; +}; + +} // namespace ui + +#endif // UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ASYNC_CURSOR_H_ diff --git a/ui/ozone/platform/wayland/host/wayland_cursor_factory.cc b/ui/ozone/platform/wayland/host/wayland_cursor_factory.cc index 31db5fd60edd7c3fb47aa0938780df63da481b01..2f28c2bc14a63cd29ef1013803a29a7836fd502f 100644 --- a/ui/ozone/platform/wayland/host/wayland_cursor_factory.cc +++ b/ui/ozone/platform/wayland/host/wayland_cursor_factory.cc @@ -40,10 +40,28 @@ WaylandCursorFactory::ThemeData::ThemeData() = default; WaylandCursorFactory::ThemeData::~ThemeData() = default; +void WaylandCursorFactory::ThemeData::AddThemeLoadedCallback( + Callback callback) { + if (loaded_) { + std::move(callback).Run(theme_.get()); + } else { + callbacks_.push_back(std::move(callback)); + } +} + +void WaylandCursorFactory::ThemeData::SetLoadedTheme(wl_cursor_theme* theme) { + DCHECK(!loaded_); + theme_.reset(theme); + loaded_ = true; + for (auto& callback : callbacks_) { + std::move(callback).Run(theme); + } + callbacks_.clear(); +} + WaylandCursorFactory::WaylandCursorFactory(WaylandConnection* connection) - : connection_(connection) { + : connection_(connection), theme_cache_(std::make_unique<ThemeCache>()) { connection_->SetCursorBufferListener(this); - ReloadThemeCursors(); } WaylandCursorFactory::~WaylandCursorFactory() { @@ -61,7 +79,7 @@ scoped_refptr<PlatformCursor> WaylandCursorFactory::CreateImageCursor( const SkBitmap& bitmap, const gfx::Point& hotspot, float scale) { - SetDeviceScaleFactor(scale); + scoped_refptr<BitmapCursor> bitmap_cursor; // Wayland only supports cursor images with an integer scale, so we // must upscale cursor images with non-integer scales to integer scaled @@ -75,11 +93,13 @@ scoped_refptr<PlatformCursor> WaylandCursorFactory::CreateImageCursor( std::round(bitmap.height() * (rounded_scale / scale))); const gfx::Point scaled_hotspot = gfx::ScaleToRoundedPoint(hotspot, rounded_scale / scale); - return base::MakeRefCounted<BitmapCursor>(type, scaled_bitmap, - scaled_hotspot, rounded_scale); + bitmap_cursor = base::MakeRefCounted<BitmapCursor>( + type, scaled_bitmap, scaled_hotspot, rounded_scale); } else { - return BitmapCursorFactory::CreateImageCursor(type, bitmap, hotspot, scale); + bitmap_cursor = + base::MakeRefCounted<BitmapCursor>(type, bitmap, hotspot, scale); } + return base::MakeRefCounted<WaylandAsyncCursor>(bitmap_cursor); } scoped_refptr<PlatformCursor> WaylandCursorFactory::CreateAnimatedCursor( @@ -88,7 +108,7 @@ scoped_refptr<PlatformCursor> WaylandCursorFactory::CreateAnimatedCursor( const gfx::Point& hotspot, float scale, base::TimeDelta frame_delay) { - SetDeviceScaleFactor(scale); + scoped_refptr<BitmapCursor> bitmap_cursor; float rounded_scale = GetRoundedScale(scale); if (std::abs(rounded_scale - scale) > std::numeric_limits<float>::epsilon() && @@ -102,60 +122,66 @@ scoped_refptr<PlatformCursor> WaylandCursorFactory::CreateAnimatedCursor( } const gfx::Point scaled_hotspot = gfx::ScaleToRoundedPoint(hotspot, rounded_scale / scale); - return base::MakeRefCounted<BitmapCursor>( + bitmap_cursor = base::MakeRefCounted<BitmapCursor>( type, scaled_bitmaps, scaled_hotspot, frame_delay, rounded_scale); } else { - return BitmapCursorFactory::CreateAnimatedCursor(type, bitmaps, hotspot, - scale, frame_delay); + bitmap_cursor = base::MakeRefCounted<BitmapCursor>(type, bitmaps, hotspot, + frame_delay, scale); } + return base::MakeRefCounted<WaylandAsyncCursor>(bitmap_cursor); +} + +void WaylandCursorFactory::FinishCursorLoad( + scoped_refptr<WaylandAsyncCursor> cursor, + mojom::CursorType type, + float scale, + wl_cursor_theme* loaded_theme) { + for (const auto& name : CursorNamesFromType(type)) { + wl_cursor* theme_cursor = GetCursorFromTheme(loaded_theme, name); + if (theme_cursor) { + cursor->SetBitmapCursor(base::MakeRefCounted<BitmapCursor>( + type, theme_cursor, + connection_->surface_submission_in_pixel_coordinates() + ? scale + : GetRoundedScale(scale))); + return; + } + } + // Fall back to the BitmapCursorFactory implementation if the theme has't + // provided a shape for the requested type. + cursor->SetBitmapCursor(BitmapCursor::FromPlatformCursor( + BitmapCursorFactory::GetDefaultCursor(type))); } scoped_refptr<PlatformCursor> WaylandCursorFactory::GetDefaultCursor( mojom::CursorType type) { - auto* const current_theme = GetCurrentTheme(); + // Fall back to 1x for scale if not provided. + return GetDefaultCursor(type, 1.0); +} + +scoped_refptr<PlatformCursor> WaylandCursorFactory::GetDefaultCursor( + mojom::CursorType type, + float scale) { + auto* const current_theme = GetThemeForScale(scale); DCHECK(current_theme); if (current_theme->cache.count(type) == 0) { - for (const std::string& name : CursorNamesFromType(type)) { - wl_cursor* cursor = GetCursorFromTheme(name); - if (!cursor) - continue; - - current_theme->cache[type] = base::MakeRefCounted<BitmapCursor>( - type, cursor, - connection_->surface_submission_in_pixel_coordinates() - ? scale_ - : GetRoundedScale(scale_)); - break; - } + auto async_cursor = base::MakeRefCounted<WaylandAsyncCursor>(); + current_theme->cache[type] = async_cursor; + current_theme->AddThemeLoadedCallback( + base::BindOnce(&WaylandCursorFactory::FinishCursorLoad, + weak_factory_.GetWeakPtr(), async_cursor, type, scale)); } - if (current_theme->cache.count(type) == 0) - current_theme->cache[type] = nullptr; - - // Fall back to the base class implementation if the theme has't provided - // a shape for the requested type. - if (current_theme->cache[type].get() == nullptr) - return BitmapCursorFactory::GetDefaultCursor(type); - return current_theme->cache[type]; } -void WaylandCursorFactory::SetDeviceScaleFactor(float scale) { - if (scale_ == scale) - return; - - scale_ = scale; - MaybeLoadThemeCursors(); -} - -wl_cursor* WaylandCursorFactory::GetCursorFromTheme(const std::string& name) { - auto* const current_theme = GetCurrentTheme(); - DCHECK(current_theme); - +wl_cursor* WaylandCursorFactory::GetCursorFromTheme(wl_cursor_theme* theme, + const std::string& name) { // Possible if the theme could not be loaded. - if (!current_theme->theme) + if (!theme) { return nullptr; + } - return wl_cursor_theme_get_cursor(current_theme->theme.get(), name.c_str()); + return wl_cursor_theme_get_cursor(theme, name.c_str()); } void WaylandCursorFactory::OnCursorThemeNameChanged( @@ -166,15 +192,11 @@ void WaylandCursorFactory::OnCursorThemeNameChanged( return; name_ = cursor_theme_name; - ReloadThemeCursors(); + FlushThemeCache(false); } void WaylandCursorFactory::OnCursorThemeSizeChanged(int cursor_theme_size) { - if (size_ == cursor_theme_size) - return; - size_ = cursor_theme_size; - MaybeLoadThemeCursors(); } void WaylandCursorFactory::OnCursorBufferAttached(wl_cursor* cursor_data) { @@ -184,85 +206,87 @@ void WaylandCursorFactory::OnCursorBufferAttached(wl_cursor* cursor_data) { unloaded_theme_.reset(); return; } - auto* const current_theme = GetCurrentTheme(); - DCHECK(current_theme); - for (auto& item : current_theme->cache) { - if (item.second->platform_data() == cursor_data) { - // The cursor that has been just attached is from the current theme. That - // means that the theme that has been unloaded earlier can now be deleted. - unloaded_theme_.reset(); - return; + for (auto& item : *theme_cache_) { + for (auto& subitem : item.second->cache) { + auto bitmap_cursor = subitem.second->bitmap_cursor(); + if (bitmap_cursor && bitmap_cursor->platform_data() == cursor_data) { + // The cursor that has been just attached is from the current theme. + // That means that the theme that has been unloaded earlier can now be + // deleted. + unloaded_theme_.reset(); + return; + } } } } -WaylandCursorFactory::ThemeData* WaylandCursorFactory::GetCurrentTheme() { - auto theme_it = theme_cache_.find(GetCacheKey()); - if (theme_it == theme_cache_.end()) - return nullptr; - return theme_it->second.get(); -} - -void WaylandCursorFactory::ReloadThemeCursors() { - auto* const current_theme = GetCurrentTheme(); - // If we use any cursor when the theme is reloaded, the one can be only from - // the theme that is currently used. As soon as we take the next cursor from - // the next theme, we will destroy it (see OnCursorBufferAttached() above). - // If more than one theme has been changed but we didn't take any cursors from - // them (which is possible if the user played with settings but didn't switch - // into Chromium), we don't need to track them all. - if (!unloaded_theme_ && current_theme && current_theme->cache.size() > 0) - unloaded_theme_ = std::move(theme_cache_[GetCacheKey()]); - - theme_cache_.clear(); - - MaybeLoadThemeCursors(); -} - -void WaylandCursorFactory::MaybeLoadThemeCursors() { - if (GetCurrentTheme()) - return; - - theme_cache_[GetCacheKey()] = std::make_unique<ThemeData>(); +WaylandCursorFactory::ThemeData* WaylandCursorFactory::GetThemeForScale( + float scale) { + auto item = theme_cache_->find(GetScaledSize(scale)); + if (item != theme_cache_->end()) { + return item->second.get(); + } + + theme_cache_->insert_or_assign(GetScaledSize(scale), + std::make_unique<ThemeData>()); + auto* cache_entry = theme_cache_->at(GetScaledSize(scale)).get(); // The task environment is normally not created in tests. As this factory is // part of the platform that is created always and early, posting a task to // the pool would fail in many many tests. if (!base::ThreadPoolInstance::Get()) - return; + return cache_entry; base::ThreadPool::PostTaskAndReplyWithResult( FROM_HERE, {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, - base::BindOnce(wl_cursor_theme_load, - name_.empty() ? nullptr : name_.c_str(), GetCacheKey(), - connection_->buffer_factory()->shm()), - base::BindOnce(&WaylandCursorFactory::OnThemeLoaded, - weak_factory_.GetWeakPtr(), name_, size_)); + base::BindOnce( + wl_cursor_theme_load, name_.empty() ? nullptr : name_.c_str(), + GetScaledSize(scale), connection_->buffer_factory()->shm()), + base::BindOnce(&WaylandCursorFactory::FinishThemeLoad, + weak_factory_.GetWeakPtr(), cache_entry->GetWeakPtr())); + + return cache_entry; +} + +void WaylandCursorFactory::FlushThemeCache(bool force) { + size_t num_cursor_objects = 0; + for (auto& entry : *theme_cache_) { + num_cursor_objects += entry.second->cache.size(); + } + if (force) { + unloaded_theme_.reset(); + } else { + // If we use any cursor when the theme is reloaded, the one can be only from + // the theme that is currently used. As soon as we take the next cursor + // from the next theme, we will destroy it (see OnCursorBufferAttached() + // above). If more than one theme has been changed but we didn't take any + // cursors from them (which is possible if the user played with settings but + // didn't switch into Chromium), we don't need to track them all. + if (!unloaded_theme_ && num_cursor_objects != 0) { + unloaded_theme_ = std::move(theme_cache_); + } + } + theme_cache_ = std::make_unique<ThemeCache>(); } -int WaylandCursorFactory::GetCacheKey() const { +int WaylandCursorFactory::GetScaledSize(float scale) const { if (connection_->surface_submission_in_pixel_coordinates()) { // When surface submission in pixel coordinates is enabled, true // fractional scaled cursors can be represented without scaling, so // load the cursor with its proper size. - return base::checked_cast<int>(size_ * scale_); + return base::checked_cast<int>(size_ * scale); } else { - return base::checked_cast<int>(size_ * GetRoundedScale(scale_)); + return base::checked_cast<int>(size_ * GetRoundedScale(scale)); } } -void WaylandCursorFactory::OnThemeLoaded(const std::string& loaded_theme_name, - int loaded_theme_size, - wl_cursor_theme* loaded_theme) { - if (loaded_theme_name == name_) { - // wl_cursor_theme_load() can return nullptr. We don't check that here but - // have to be cautious when we actually load the shape. - auto* const current_theme = GetCurrentTheme(); - DCHECK(current_theme); - current_theme->theme.reset(loaded_theme); - current_theme->cache.clear(); - NotifyObserversOnThemeLoaded(); +void WaylandCursorFactory::FinishThemeLoad(base::WeakPtr<ThemeData> cache_entry, + wl_cursor_theme* loaded_theme) { + // wl_cursor_theme_load() can return nullptr. We don't check that here but + // have to be cautious when we actually load the shape. + if (cache_entry) { + cache_entry->SetLoadedTheme(loaded_theme); } } diff --git a/ui/ozone/platform/wayland/host/wayland_cursor_factory.h b/ui/ozone/platform/wayland/host/wayland_cursor_factory.h index 88c9136bddcf62aa2cb08f12a9bcb05d13fc4127..495d5684be464867bb96f341444fdef21b84662e 100644 --- a/ui/ozone/platform/wayland/host/wayland_cursor_factory.h +++ b/ui/ozone/platform/wayland/host/wayland_cursor_factory.h @@ -6,8 +6,10 @@ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_CURSOR_FACTORY_H_ #include <string> +#include <vector> #include "base/containers/flat_map.h" +#include "base/functional/callback.h" #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" @@ -15,6 +17,7 @@ #include "ui/linux/cursor_theme_manager_observer.h" #include "ui/ozone/common/bitmap_cursor_factory.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" +#include "ui/ozone/platform/wayland/host/wayland_async_cursor.h" #include "ui/ozone/platform/wayland/host/wayland_cursor.h" struct wl_cursor_theme; @@ -26,6 +29,28 @@ class LinuxUi; class WaylandConnection; // CursorFactory implementation for Wayland. +// +// This CursorFactory implementation generates WaylandAsyncCursor objects, which +// are wrappers for BitmapCursor that allows cursor images to be asynchronously +// loaded. +// +// During normal operation, and assuming an empty cache, the sequence of +// functions that are called to actually get the cursor image where it needs to +// be goes as follows: +// +// - wl_cursor_theme_load is invoked to load the theme by the IO thread, which +// then invokes... +// - FinishThemeLoad on the UI thread, which invokes ThemeData::SetLoadedTheme, +// which then invokes its registered callbacks, the only one currently being... +// - FinishCursorLoad, which obtains the appropriate cursor image from the +// cursor theme and calls WaylandAsyncCursor::SetLoadedCursor on the cursor +// object that was returned earlier by GetDefaultCursor with the actual +// BitmapCursor. +// +// This will invoke all callbacks registered on the WaylandAsyncCursor object +// using WaylandAsyncCursor::OnCursorLoaded, with the only one currently being +// WaylandWindow::OnCursorLoaded which uses the obtained BitmapCursor object to +// set the cursor image on the window. class WaylandCursorFactory : public BitmapCursorFactory, public CursorThemeManagerObserver, public WaylandCursorBufferListener { @@ -41,6 +66,8 @@ class WaylandCursorFactory : public BitmapCursorFactory, // CursorFactory: scoped_refptr<PlatformCursor> GetDefaultCursor( mojom::CursorType type) override; + scoped_refptr<PlatformCursor> GetDefaultCursor(mojom::CursorType type, + float scale) override; scoped_refptr<PlatformCursor> CreateImageCursor(mojom::CursorType type, const SkBitmap& bitmap, const gfx::Point& hotspot, @@ -55,21 +82,43 @@ class WaylandCursorFactory : public BitmapCursorFactory, protected: // Returns the actual wl_cursor record from the currently loaded theme. // Virtual for tests where themes can be empty. - virtual wl_cursor* GetCursorFromTheme(const std::string& name); + virtual wl_cursor* GetCursorFromTheme(wl_cursor_theme* theme, + const std::string& name); private: + friend class DryRunningWaylandCursorFactory; + friend class WaylandCursorFactoryTest; FRIEND_TEST_ALL_PREFIXES(WaylandCursorFactoryTest, RetainOldThemeUntilNewBufferIsAttached); FRIEND_TEST_ALL_PREFIXES(WaylandCursorFactoryTest, CachesSizesUntilThemeNameIsChanged); - struct ThemeData { + class ThemeData { + public: + using Callback = base::OnceCallback<void(wl_cursor_theme*)>; + ThemeData(); ~ThemeData(); - wl::Object<wl_cursor_theme> theme; - base::flat_map<mojom::CursorType, scoped_refptr<BitmapCursor>> cache; + + void AddThemeLoadedCallback(Callback callback); + void SetLoadedTheme(wl_cursor_theme* theme); + + base::WeakPtr<ThemeData> GetWeakPtr() { return weak_factory_.GetWeakPtr(); } + + wl_cursor_theme* theme() { return theme_.get(); } + + base::flat_map<mojom::CursorType, scoped_refptr<WaylandAsyncCursor>> cache; + + private: + bool loaded_ = false; + wl::Object<wl_cursor_theme> theme_; + std::vector<Callback> callbacks_; + base::WeakPtrFactory<ThemeData> weak_factory_{this}; }; + // Maps sizes of the cursor to the cached shapes of those sizes. + using ThemeCache = std::map<int, std::unique_ptr<ThemeData>>; + // CusorThemeManagerObserver: void OnCursorThemeNameChanged(const std::string& cursor_theme_name) override; void OnCursorThemeSizeChanged(int cursor_theme_size) override; @@ -77,23 +126,22 @@ class WaylandCursorFactory : public BitmapCursorFactory, // WaylandCursorBufferListener: void OnCursorBufferAttached(wl_cursor* cursor_data) override; - // Sets device scale factor and loads the theme. - void SetDeviceScaleFactor(float scale); - // Returns the theme cached for the size and scale set currently. - // May return nullptr, which means that the data is not yet loaded. - ThemeData* GetCurrentTheme(); - // Resets the theme cache and triggers loading the theme again, optionally - // keeping the existing data until the cursor changes next time. - void ReloadThemeCursors(); - // Loads the theme with the current size and scale. Does nothing if data - // already exists. - void MaybeLoadThemeCursors(); - // Returns the cache key in theme_cache_ to be used for the current size - // and scale. - int GetCacheKey() const; - void OnThemeLoaded(const std::string& loaded_theme_name, - int loaded_theme_size, - wl_cursor_theme* loaded_theme); + // Returns the theme cache for the size set currently and the scale provided, + // creating it if necessary. + ThemeData* GetThemeForScale(float scale); + // Resets the theme cache, causing it to be reloaded when new cursors are + // loaded, optionally keeping the existing data until the cursor changes next + // time if `force` is false. + void FlushThemeCache(bool force); + // Returns the final size of the cursor images in pixels for the current size + // and provided scale. + int GetScaledSize(float scale) const; + void FinishThemeLoad(base::WeakPtr<ThemeData> cache_entry, + wl_cursor_theme* loaded_theme); + void FinishCursorLoad(scoped_refptr<WaylandAsyncCursor> cursor, + mojom::CursorType type, + float scale, + wl_cursor_theme* loaded_theme); const raw_ptr<WaylandConnection> connection_; @@ -104,14 +152,12 @@ class WaylandCursorFactory : public BitmapCursorFactory, std::string name_; // Current size of cursors int size_ = 24; - // The current scale of the mouse cursor icon (i.e. current device scale - // factor). - float scale_ = 1.0f; - // Maps sizes of the cursor to the cached shapes of those sizes. - std::map<int, std::unique_ptr<ThemeData>> theme_cache_; - // Holds the reference on the unloaded theme until the cursor is released. - std::unique_ptr<ThemeData> unloaded_theme_; + // The currently active cursor theme cache. + std::unique_ptr<ThemeCache> theme_cache_; + // Holds the reference on the unloaded theme cache until the cursor is + // released. + std::unique_ptr<ThemeCache> unloaded_theme_; base::WeakPtrFactory<WaylandCursorFactory> weak_factory_{this}; }; diff --git a/ui/ozone/platform/wayland/host/wayland_cursor_factory_unittest.cc b/ui/ozone/platform/wayland/host/wayland_cursor_factory_unittest.cc index 78abcde879a129c05ac843698693948853e3f115..e60a5e322edf37730b63ab676cc43c621ae39590 100644 --- a/ui/ozone/platform/wayland/host/wayland_cursor_factory_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_cursor_factory_unittest.cc @@ -16,8 +16,6 @@ using ::testing::Values; namespace ui { -namespace { - // Overrides WaylandCursorFactory::GetCursorFromTheme() to pretend that cursors // are really loaded. // @@ -32,11 +30,16 @@ class DryRunningWaylandCursorFactory : public WaylandCursorFactory { delete; DryRunningWaylandCursorFactory& operator=( const DryRunningWaylandCursorFactory&) = delete; - ~DryRunningWaylandCursorFactory() override = default; + ~DryRunningWaylandCursorFactory() override { + // All BitmapCursor objects held by the parent class must be destroyed + // before `cursors_` or the tests will fail with a dangling raw_ptr error. + FlushThemeCache(true); + } protected: // Pretends to load a cursor by creating an empty wl_cursor. - wl_cursor* GetCursorFromTheme(const std::string& name) override { + wl_cursor* GetCursorFromTheme(wl_cursor_theme* theme, + const std::string& name) override { if (cursors_.count(name) == 0) { cursors_[name] = std::make_unique<wl_cursor>(); cursors_[name]->image_count = 0; @@ -50,51 +53,52 @@ class DryRunningWaylandCursorFactory : public WaylandCursorFactory { base::flat_map<std::string, std::unique_ptr<wl_cursor>> cursors_; }; -} // namespace - -class WaylandCursorFactoryTest : public WaylandTestSimple, - public CursorFactoryObserver { - public: - // CursorFactoryObserver: - void OnThemeLoaded() override { - ASSERT_TRUE(loop_quit_closure_); - std::move(loop_quit_closure_).Run(); - theme_was_loaded_ = true; - } - - bool CheckAndReset() { - const auto theme_was_loaded = theme_was_loaded_; - theme_was_loaded_ = false; - return theme_was_loaded; - } - +class WaylandCursorFactoryTest : public WaylandTestSimple { protected: + void TriggerThemeLoad(WaylandCursorFactory* cursor_factory, + float scale = 1.0) { + ASSERT_FALSE(theme_loading_in_progress_); + theme_loading_in_progress_ = true; + cursor_factory->GetThemeForScale(scale)->AddThemeLoadedCallback( + base::BindOnce(&WaylandCursorFactoryTest::OnThemeLoaded, + weak_factory_.GetWeakPtr())); + } + void WaitForThemeLoaded() { + if (!theme_loading_in_progress_) { + return; + } base::RunLoop loop; ASSERT_FALSE(loop_quit_closure_); loop_quit_closure_ = loop.QuitClosure(); loop.Run(); + ASSERT_FALSE(theme_loading_in_progress_); } private: + void OnThemeLoaded(wl_cursor_theme*) { + ASSERT_TRUE(theme_loading_in_progress_); + theme_loading_in_progress_ = false; + if (loop_quit_closure_) { + std::move(loop_quit_closure_).Run(); + } + } + base::OnceClosure loop_quit_closure_; - bool theme_was_loaded_ = false; + bool theme_loading_in_progress_ = false; + base::WeakPtrFactory<WaylandCursorFactoryTest> weak_factory_{this}; }; // Tests that the factory holds the cursor theme until a buffer taken from it // released. -// TODO(1357512): fails on Linux (not used on LaCros). -TEST_F(WaylandCursorFactoryTest, - DISABLED_RetainOldThemeUntilNewBufferIsAttached) { +TEST_F(WaylandCursorFactoryTest, RetainOldThemeUntilNewBufferIsAttached) { std::unique_ptr<WaylandCursorFactory> cursor_factory = std::make_unique<DryRunningWaylandCursorFactory>(connection_.get()); - cursor_factory->AddObserver(this); - // The default theme should be loaded right away. The unloaded theme should - // not be set. - EXPECT_EQ(cursor_factory->theme_cache_.size(), 1U); + // The unloaded theme should not be set. EXPECT_EQ(cursor_factory->unloaded_theme_, nullptr); + TriggerThemeLoad(cursor_factory.get()); WaitForThemeLoaded(); // Trigger theme reload and ensure that the theme instance has changed. @@ -105,10 +109,11 @@ TEST_F(WaylandCursorFactoryTest, // guaranteed. Probably a better way should be invented. { auto* const current_theme_object = - cursor_factory->theme_cache_.begin()->second.get()->theme.get(); + cursor_factory->theme_cache_->begin()->second.get()->theme(); cursor_factory->OnCursorThemeNameChanged("Theme1"); - EXPECT_EQ(cursor_factory->theme_cache_.size(), 1U); - EXPECT_NE(cursor_factory->theme_cache_.begin()->second.get()->theme.get(), + TriggerThemeLoad(cursor_factory.get()); + EXPECT_EQ(cursor_factory->theme_cache_->size(), 1U); + EXPECT_NE(cursor_factory->theme_cache_->begin()->second.get()->theme(), current_theme_object); EXPECT_EQ(cursor_factory->unloaded_theme_, nullptr); @@ -122,28 +127,29 @@ TEST_F(WaylandCursorFactoryTest, // the cursor from the "unloaded" theme. This must not trigger unloading of // that theme. { - auto* const used_current_theme = - cursor_factory->theme_cache_.begin()->second.get(); + auto* const used_current_theme = cursor_factory->theme_cache_.get(); auto const cursor = cursor_factory->GetDefaultCursor(mojom::CursorType::kPointer); EXPECT_NE(cursor, nullptr); - EXPECT_GT(used_current_theme->cache.size(), 0U); + EXPECT_GT(used_current_theme->size(), 0U); for (const auto* name : {"Theme2", "Theme3", "Theme2", "Theme3"}) { cursor_factory->OnCursorThemeNameChanged(name); + TriggerThemeLoad(cursor_factory.get()); - ASSERT_EQ(cursor_factory->theme_cache_.size(), 1U); - auto* const new_current_theme = - cursor_factory->theme_cache_.begin()->second.get(); - EXPECT_EQ(new_current_theme->cache.size(), 0U); + auto* const new_current_theme = cursor_factory->theme_cache_.get(); + ASSERT_EQ(new_current_theme->size(), 1U); + EXPECT_EQ(new_current_theme->begin()->second->cache.size(), 0U); EXPECT_NE(new_current_theme, used_current_theme); EXPECT_EQ(cursor_factory->unloaded_theme_.get(), used_current_theme); WaitForThemeLoaded(); } - cursor_factory->OnCursorBufferAttached(static_cast<wl_cursor*>( - BitmapCursor::FromPlatformCursor(cursor)->platform_data())); + cursor_factory->OnCursorBufferAttached( + static_cast<wl_cursor*>(WaylandAsyncCursor::FromPlatformCursor(cursor) + ->bitmap_cursor() + ->platform_data())); EXPECT_EQ(cursor_factory->unloaded_theme_.get(), used_current_theme); } @@ -154,8 +160,10 @@ TEST_F(WaylandCursorFactoryTest, cursor_factory->GetDefaultCursor(mojom::CursorType::kPointer); EXPECT_NE(cursor, nullptr); - cursor_factory->OnCursorBufferAttached(static_cast<wl_cursor*>( - BitmapCursor::FromPlatformCursor(cursor)->platform_data())); + cursor_factory->OnCursorBufferAttached( + static_cast<wl_cursor*>(WaylandAsyncCursor::FromPlatformCursor(cursor) + ->bitmap_cursor() + ->platform_data())); EXPECT_EQ(cursor_factory->unloaded_theme_.get(), nullptr); } @@ -163,17 +171,14 @@ TEST_F(WaylandCursorFactoryTest, // Tests that the factory keeps the caches when either cursor size or buffer // scale are changed, and only resets them when the theme is changed. -// TODO(1357512): fails on Linux (not used on LaCros). -TEST_F(WaylandCursorFactoryTest, DISABLED_CachesSizesUntilThemeNameIsChanged) { +TEST_F(WaylandCursorFactoryTest, CachesSizesUntilThemeNameIsChanged) { std::unique_ptr<WaylandCursorFactory> cursor_factory = std::make_unique<DryRunningWaylandCursorFactory>(connection_.get()); - cursor_factory->AddObserver(this); - // The default theme should be loaded right away. The unloaded theme should - // not be set. - EXPECT_EQ(cursor_factory->theme_cache_.size(), 1U); + // The unloaded theme should not be set. EXPECT_EQ(cursor_factory->unloaded_theme_, nullptr); + TriggerThemeLoad(cursor_factory.get()); WaitForThemeLoaded(); // Trigger theme reload and ensure that the theme instance has changed. @@ -184,37 +189,36 @@ TEST_F(WaylandCursorFactoryTest, DISABLED_CachesSizesUntilThemeNameIsChanged) { // guaranteed. Probably a better way should be invented. { auto* const current_theme_object = - cursor_factory->theme_cache_.begin()->second.get()->theme.get(); + cursor_factory->theme_cache_->begin()->second.get()->theme(); cursor_factory->OnCursorThemeNameChanged("Theme1"); - EXPECT_EQ(cursor_factory->theme_cache_.size(), 1U); - EXPECT_NE(cursor_factory->theme_cache_.begin()->second.get()->theme.get(), + TriggerThemeLoad(cursor_factory.get()); + EXPECT_EQ(cursor_factory->theme_cache_->size(), 1U); + EXPECT_NE(cursor_factory->theme_cache_->begin()->second.get()->theme(), current_theme_object); EXPECT_EQ(cursor_factory->unloaded_theme_, nullptr); WaitForThemeLoaded(); - EXPECT_TRUE(CheckAndReset()); } // Now request changing the buffer scale and the cursor size in a number of // combinations. Each combination of scale and size should create an entry in - // the cache keyed as (size * scale), so some combinations overlap, and in the - // end there should be 6 entries. Setting a new size or a new scale should - // never trigger the theme reload. + // the cache keyed as (size * rounded scale), so some combinations overlap, + // and in the end there should be 5 entries. Setting a new size or a new + // scale should never trigger the theme reload. EXPECT_EQ(cursor_factory->size_, 24); { for (const auto size : {24, 36, 48}) { for (const auto scale : {1.0, 1.5, 2.0}) { cursor_factory->OnCursorThemeSizeChanged(size); - cursor_factory->SetDeviceScaleFactor(scale); + TriggerThemeLoad(cursor_factory.get(), scale); - EXPECT_EQ( - cursor_factory->theme_cache_.count(static_cast<int>(size * scale)), - 1U); - base::RunLoop().RunUntilIdle(); + EXPECT_EQ(cursor_factory->theme_cache_->count( + static_cast<int>(cursor_factory->GetScaledSize(scale))), + 1U); + WaitForThemeLoaded(); } } - EXPECT_EQ(cursor_factory->theme_cache_.size(), 6U); - EXPECT_FALSE(CheckAndReset()); + EXPECT_EQ(cursor_factory->theme_cache_->size(), 5U); } // Next, "take" a cursor and then trigger the theme reload. The factory @@ -224,21 +228,23 @@ TEST_F(WaylandCursorFactoryTest, DISABLED_CachesSizesUntilThemeNameIsChanged) { auto const cursor = cursor_factory->GetDefaultCursor(mojom::CursorType::kPointer); EXPECT_NE(cursor, nullptr); - EXPECT_EQ(cursor_factory->theme_cache_.size(), 6U); + EXPECT_EQ(cursor_factory->theme_cache_->size(), 5U); cursor_factory->OnCursorThemeNameChanged("Theme2"); + TriggerThemeLoad(cursor_factory.get()); - ASSERT_EQ(cursor_factory->theme_cache_.size(), 1U); + ASSERT_EQ(cursor_factory->theme_cache_->size(), 1U); auto* const new_current_theme = - cursor_factory->theme_cache_.begin()->second.get(); + cursor_factory->theme_cache_->begin()->second.get(); EXPECT_EQ(new_current_theme->cache.size(), 0U); EXPECT_NE(cursor_factory->unloaded_theme_.get(), nullptr); WaitForThemeLoaded(); - EXPECT_TRUE(CheckAndReset()); - cursor_factory->OnCursorBufferAttached(static_cast<wl_cursor*>( - BitmapCursor::FromPlatformCursor(cursor)->platform_data())); + cursor_factory->OnCursorBufferAttached( + static_cast<wl_cursor*>(WaylandAsyncCursor::FromPlatformCursor(cursor) + ->bitmap_cursor() + ->platform_data())); EXPECT_NE(cursor_factory->unloaded_theme_.get(), nullptr); } @@ -249,8 +255,10 @@ TEST_F(WaylandCursorFactoryTest, DISABLED_CachesSizesUntilThemeNameIsChanged) { cursor_factory->GetDefaultCursor(mojom::CursorType::kPointer); EXPECT_NE(cursor, nullptr); - cursor_factory->OnCursorBufferAttached(static_cast<wl_cursor*>( - BitmapCursor::FromPlatformCursor(cursor)->platform_data())); + cursor_factory->OnCursorBufferAttached( + static_cast<wl_cursor*>(WaylandAsyncCursor::FromPlatformCursor(cursor) + ->bitmap_cursor() + ->platform_data())); EXPECT_EQ(cursor_factory->unloaded_theme_.get(), nullptr); } diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc index 66859c0bc84d8cae457a851de86a304709f016e1..a501584f09285b7bdb38eea82c85e57d5c7a1e25 100644 --- a/ui/ozone/platform/wayland/host/wayland_window.cc +++ b/ui/ozone/platform/wayland/host/wayland_window.cc @@ -233,9 +233,17 @@ absl::optional<WaylandOutput::Id> WaylandWindow::GetPreferredEnteredOutputId() { void WaylandWindow::OnPointerFocusChanged(bool focused) {} void WaylandWindow::ForceUpdateCursor() { +#if BUILDFLAG(IS_LINUX) + if (async_cursor_) { + async_cursor_->AddCursorLoadedCallback( + base::BindOnce(&WaylandWindow::OnCursorLoaded, + weak_ptr_factory_.GetWeakPtr(), async_cursor_)); + } +#else if (cursor_) { UpdateCursorShape(cursor_); } +#endif } bool WaylandWindow::HasPointerFocus() const { @@ -481,11 +489,24 @@ bool WaylandWindow::ShouldUseNativeFrame() const { void WaylandWindow::SetCursor(scoped_refptr<PlatformCursor> platform_cursor) { DCHECK(platform_cursor); +#if BUILDFLAG(IS_LINUX) + auto async_cursor = WaylandAsyncCursor::FromPlatformCursor(platform_cursor); + + if (async_cursor_ == async_cursor) { + return; + } + + async_cursor_ = async_cursor; + async_cursor->AddCursorLoadedCallback( + base::BindOnce(&WaylandWindow::OnCursorLoaded, + weak_ptr_factory_.GetWeakPtr(), async_cursor)); +#else if (cursor_ == platform_cursor) { return; } UpdateCursorShape(BitmapCursor::FromPlatformCursor(platform_cursor)); +#endif } void WaylandWindow::MoveCursorTo(const gfx::Point& location) { @@ -1048,11 +1069,20 @@ void WaylandWindow::UpdateCursorShape(scoped_refptr<BitmapCursor> cursor) { cursor->bitmaps(), hotspot_in_dips, std::ceil(cursor->cursor_image_scale_factor())); } - // The new cursor needs to be stored last to avoid deleting the old cursor - // while it's still in use. +#if !BUILDFLAG(IS_LINUX) cursor_ = cursor; +#endif } +#if BUILDFLAG(IS_LINUX) +void WaylandWindow::OnCursorLoaded(scoped_refptr<WaylandAsyncCursor> cursor, + scoped_refptr<BitmapCursor> bitmap_cursor) { + if (HasPointerFocus() && async_cursor_ == cursor && bitmap_cursor) { + UpdateCursorShape(bitmap_cursor); + } +} +#endif + void WaylandWindow::ProcessPendingConfigureState(uint32_t serial) { // For values not specified in pending_configure_state_, use the latest // requested values. diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h index 5cbaf689e32c730c54bcd234b23082d94fa76965..c0133c65e1ed55b0d6714ef493cd3c204c9fd93a 100644 --- a/ui/ozone/platform/wayland/host/wayland_window.h +++ b/ui/ozone/platform/wayland/host/wayland_window.h @@ -38,6 +38,10 @@ #include "ui/platform_window/platform_window_init_properties.h" #include "ui/platform_window/wm/wm_drag_handler.h" +#if BUILDFLAG(IS_LINUX) +#include "ui/ozone/platform/wayland/host/wayland_async_cursor.h" +#endif + struct zwp_keyboard_shortcuts_inhibitor_v1; namespace wl { @@ -478,6 +482,11 @@ class WaylandWindow : public PlatformWindow, void UpdateCursorShape(scoped_refptr<BitmapCursor> cursor); +#if BUILDFLAG(IS_LINUX) + void OnCursorLoaded(scoped_refptr<WaylandAsyncCursor> cursor, + scoped_refptr<BitmapCursor> bitmap_cursor); +#endif + // StateRequest describes a State that we are applying to the window, and the // metadata about that State, such as what serial number to use for ack (if it // came from a configure), or the viz sequence number. @@ -532,8 +541,13 @@ class WaylandWindow : public PlatformWindow, wl::Object<zaura_surface> aura_surface_; +#if BUILDFLAG(IS_LINUX) + // The current asynchronously loaded cursor (Linux specific). + scoped_refptr<WaylandAsyncCursor> async_cursor_; +#else // The current cursor bitmap (immutable). scoped_refptr<BitmapCursor> cursor_; +#endif // Margins between edges of the surface and the window geometry (i.e., the // area of the window that is visible to the user as the actual window). The diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc index f88977cb801376e5c74a4b61f70171f237b0fc9b..e1a6bfd98f632f133843595fdab67fbc589269fc 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc @@ -78,6 +78,10 @@ #include "ui/platform_window/wm/wm_move_resize_handler.h" #include "wayland-server-protocol.h" +#if BUILDFLAG(IS_LINUX) +#include "ui/ozone/platform/wayland/host/wayland_async_cursor.h" +#endif + using ::testing::_; using ::testing::DoAll; using ::testing::ElementsAre; @@ -155,6 +159,15 @@ using BoundsChange = PlatformWindowDelegate::BoundsChange; constexpr BoundsChange kDefaultBoundsChange{false}; +scoped_refptr<PlatformCursor> AsPlatformCursor( + scoped_refptr<BitmapCursor> bitmap_cursor) { +#if BUILDFLAG(IS_LINUX) + return base::MakeRefCounted<WaylandAsyncCursor>(bitmap_cursor); +#else + return bitmap_cursor; +#endif +} + } // namespace class WaylandWindowTest : public WaylandTest { @@ -1549,32 +1562,34 @@ TEST_P(WaylandWindowTest, CanDispatchMouseEventFocus) { } TEST_P(WaylandWindowTest, SetCursorUsesZcrCursorShapesForCommonTypes) { + SetPointerFocusedWindow(window_.get()); MockZcrCursorShapes* mock_cursor_shapes = InstallMockZcrCursorShapes(); // Verify some commonly-used cursors. EXPECT_CALL(*mock_cursor_shapes, SetCursorShape(ZCR_CURSOR_SHAPES_V1_CURSOR_SHAPE_TYPE_POINTER)); - auto pointer_cursor = - base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kPointer); + auto pointer_cursor = AsPlatformCursor( + base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kPointer)); window_->SetCursor(pointer_cursor.get()); EXPECT_CALL(*mock_cursor_shapes, SetCursorShape(ZCR_CURSOR_SHAPES_V1_CURSOR_SHAPE_TYPE_HAND)); - auto hand_cursor = - base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kHand); + auto hand_cursor = AsPlatformCursor( + base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kHand)); window_->SetCursor(hand_cursor.get()); EXPECT_CALL(*mock_cursor_shapes, SetCursorShape(ZCR_CURSOR_SHAPES_V1_CURSOR_SHAPE_TYPE_IBEAM)); - auto ibeam_cursor = - base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kIBeam); + auto ibeam_cursor = AsPlatformCursor( + base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kIBeam)); window_->SetCursor(ibeam_cursor.get()); } TEST_P(WaylandWindowTest, SetCursorCallsZcrCursorShapesOncePerCursor) { + SetPointerFocusedWindow(window_.get()); MockZcrCursorShapes* mock_cursor_shapes = InstallMockZcrCursorShapes(); - auto hand_cursor = - base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kHand); + auto hand_cursor = AsPlatformCursor( + base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kHand)); // Setting the same cursor twice on the client only calls the server once. EXPECT_CALL(*mock_cursor_shapes, SetCursorShape(_)).Times(1); window_->SetCursor(hand_cursor.get()); @@ -1582,21 +1597,23 @@ TEST_P(WaylandWindowTest, SetCursorCallsZcrCursorShapesOncePerCursor) { } TEST_P(WaylandWindowTest, SetCursorDoesNotUseZcrCursorShapesForNoneCursor) { + SetPointerFocusedWindow(window_.get()); MockZcrCursorShapes* mock_cursor_shapes = InstallMockZcrCursorShapes(); EXPECT_CALL(*mock_cursor_shapes, SetCursorShape(_)).Times(0); - auto none_cursor = - base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kNone); + auto none_cursor = AsPlatformCursor( + base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kNone)); window_->SetCursor(none_cursor.get()); } TEST_P(WaylandWindowTest, SetCursorDoesNotUseZcrCursorShapesForCustomCursors) { + SetPointerFocusedWindow(window_.get()); MockZcrCursorShapes* mock_cursor_shapes = InstallMockZcrCursorShapes(); // Custom cursors require bitmaps, so they do not use server-side cursors. EXPECT_CALL(*mock_cursor_shapes, SetCursorShape(_)).Times(0); - auto custom_cursor = + auto custom_cursor = AsPlatformCursor( base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kCustom, SkBitmap(), - gfx::Point(), kDefaultCursorScale); + gfx::Point(), kDefaultCursorScale)); window_->SetCursor(custom_cursor.get()); } diff --git a/ui/ozone/platform/wayland/ozone_platform_wayland.cc b/ui/ozone/platform/wayland/ozone_platform_wayland.cc index a79179a0e24a44a1db74dd0ee686f8e8fe91f37e..5e297268aa6bf8e228ddffd19707c20978b9ead0 100644 --- a/ui/ozone/platform/wayland/ozone_platform_wayland.cc +++ b/ui/ozone/platform/wayland/ozone_platform_wayland.cc @@ -65,10 +65,10 @@ #include "ui/events/ozone/layout/stub/stub_keyboard_layout_engine.h" #endif -#if BUILDFLAG(IS_CHROMEOS) -#include "ui/ozone/common/bitmap_cursor_factory.h" -#else +#if BUILDFLAG(IS_LINUX) #include "ui/ozone/platform/wayland/host/wayland_cursor_factory.h" +#else +#include "ui/ozone/common/bitmap_cursor_factory.h" #endif #if BUILDFLAG(IS_LINUX) @@ -245,10 +245,10 @@ class OzonePlatformWayland : public OzonePlatform, buffer_manager_connector_ = std::make_unique<WaylandBufferManagerConnector>( connection_->buffer_manager_host()); -#if BUILDFLAG(IS_CHROMEOS) - cursor_factory_ = std::make_unique<BitmapCursorFactory>(); -#else +#if BUILDFLAG(IS_LINUX) cursor_factory_ = std::make_unique<WaylandCursorFactory>(connection_.get()); +#else + cursor_factory_ = std::make_unique<BitmapCursorFactory>(); #endif input_controller_ = CreateWaylandInputController(connection_.get()); gpu_platform_support_host_.reset(CreateStubGpuPlatformSupportHost()); diff --git a/ui/wm/core/cursor_loader.cc b/ui/wm/core/cursor_loader.cc index 370192ce59e085379fbfb4711b37097a7ac4550c..4743205f494a9b16e6dc060e99acb96f42f2fb84 100644 --- a/ui/wm/core/cursor_loader.cc +++ b/ui/wm/core/cursor_loader.cc @@ -124,7 +124,7 @@ scoped_refptr<ui::PlatformCursor> CursorLoader::CursorFromType( // into account the different ways of creating an invisible cursor. scoped_refptr<ui::PlatformCursor> cursor; if (use_platform_cursors_ || type == CursorType::kNone) { - cursor = factory_->GetDefaultCursor(type); + cursor = factory_->GetDefaultCursor(type, scale_); if (cursor) return cursor; // The cursor may fail to load if the cursor theme has just been reset. diff --git a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc index 49c9f1c60cff500f89925d5c2b0387074548c352..696e0ba2729df22a2c1fb23a1b5c52c5f9ebc68a 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc @@ -353,15 +353,17 @@ void WaylandBufferManagerGpu::AddBindingWaylandBufferManagerGpu( receiver_set_.Add(this, std::move(receiver)); } -const std::vector<uint64_t>& +const std::vector<uint64_t> WaylandBufferManagerGpu::GetModifiersForBufferFormat( gfx::BufferFormat buffer_format) const { auto it = supported_buffer_formats_with_modifiers_.find(buffer_format); if (it != supported_buffer_formats_with_modifiers_.end()) { + if (drm_modifiers_filter_) { + return drm_modifiers_filter_->Filter(buffer_format, it->second); + } return it->second; } - static std::vector<uint64_t> dummy; - return dummy; + return {}; } uint32_t WaylandBufferManagerGpu::AllocateBufferID() { diff --git a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h index 5bc8ed1fa8145bfd60b5f8280d1323b9f6f66e29..8c5e195cfaa09df017fe3a4ccb7f5b727960dbf4 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h +++ b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h @@ -23,6 +23,7 @@ #include "ui/gfx/native_widget_types.h" #include "ui/ozone/platform/wayland/common/wayland_util.h" #include "ui/ozone/platform/wayland/mojom/wayland_buffer_manager.mojom.h" +#include "ui/ozone/public/drm_modifiers_filter.h" namespace gfx { enum class SwapResult; @@ -164,12 +165,17 @@ class WaylandBufferManagerGpu : public ozone::mojom::WaylandBufferManagerGpu { } bool supports_clip_rect() const { return supports_clip_rect_; } + void set_drm_modifiers_filter( + std::unique_ptr<DrmModifiersFilter> drm_modifiers_filter) { + drm_modifiers_filter_ = std::move(drm_modifiers_filter); + } + // Adds a WaylandBufferManagerGpu binding. void AddBindingWaylandBufferManagerGpu( mojo::PendingReceiver<ozone::mojom::WaylandBufferManagerGpu> receiver); // Returns supported modifiers for the supplied |buffer_format|. - const std::vector<uint64_t>& GetModifiersForBufferFormat( + const std::vector<uint64_t> GetModifiersForBufferFormat( gfx::BufferFormat buffer_format) const; // Allocates a unique buffer ID. @@ -281,6 +287,10 @@ class WaylandBufferManagerGpu : public ozone::mojom::WaylandBufferManagerGpu { bool supports_clip_rect_ = false; + // A DRM modifiers filter to ensure we don't allocate buffers with modifiers + // not supported by Vulkan. + std::unique_ptr<DrmModifiersFilter> drm_modifiers_filter_; + mojo::ReceiverSet<ozone::mojom::WaylandBufferManagerGpu> receiver_set_; // A pointer to a WaylandBufferManagerHost object, which always lives on a diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index 030b7c2769c3809e1f89e15a6ba96dec55343fc0..73adfda2e24459018d7c40df001ed74746d25fd0 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -301,6 +301,15 @@ WaylandSurfaceFactory::GetPreferredFormatForSolidColor() const { return gfx::BufferFormat::RGBA_8888; } +bool WaylandSurfaceFactory::SupportsDrmModifiersFilter() const { + return true; +} + +void WaylandSurfaceFactory::SetDrmModifiersFilter( + std::unique_ptr<DrmModifiersFilter> filter) { + buffer_manager_->set_drm_modifiers_filter(std::move(filter)); +} + std::vector<gfx::BufferFormat> WaylandSurfaceFactory::GetSupportedFormatsForTexturing() const { #if defined(WAYLAND_GBM) diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h index edadfc464e85d0ea1a1c0212702a6806b0174fcc..6df2ec410140bb37b14e560dc13a3b1bcf22d103 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h @@ -12,6 +12,7 @@ #include "base/task/single_thread_task_runner.h" #include "ui/gl/gl_surface.h" #include "ui/ozone/platform/wayland/common/wayland_util.h" +#include "ui/ozone/public/drm_modifiers_filter.h" #include "ui/ozone/public/surface_factory_ozone.h" namespace ui { @@ -59,6 +60,9 @@ class WaylandSurfaceFactory : public SurfaceFactoryOzone { gfx::NativePixmapHandle handle) override; absl::optional<gfx::BufferFormat> GetPreferredFormatForSolidColor() const override; + bool SupportsDrmModifiersFilter() const override; + void SetDrmModifiersFilter( + std::unique_ptr<DrmModifiersFilter> filter) override; bool SupportsNativePixmaps() const; diff --git a/gpu/vulkan/vulkan_image_linux.cc b/gpu/vulkan/vulkan_image_linux.cc index 7ade77fc395d63e7478994c0bf47949dd16d18da..4a3ecfeea77b3079980d91b119572f26695102d7 100644 --- a/gpu/vulkan/vulkan_image_linux.cc +++ b/gpu/vulkan/vulkan_image_linux.cc @@ -11,6 +11,15 @@ #include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_function_pointers.h" +namespace { + +constexpr bool VkFormatNeedsYcbcrSampler(VkFormat format) { + return format == VK_FORMAT_G8_B8R8_2PLANE_420_UNORM || + format == VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM; +} + +} // namespace + namespace gpu { // static @@ -46,16 +55,14 @@ bool VulkanImage::InitializeFromGpuMemoryBufferHandle( queue_family_index_ = queue_family_index; auto& native_pixmap_handle = gmb_handle.native_pixmap_handle; - // XXX This is the memory plane count, not the format plane count. It does - // not give us the information we need. - if (native_pixmap_handle.planes.size() == 2) { + if (VkFormatNeedsYcbcrSampler(format)) { ycbcr_info_ = VulkanYCbCrInfo( /*image_format=*/format, /*external_format=*/0, - /*suggested_ycbcr_model=*/native_pixmap_handle.planes.size(), - /*suggested_ycbcr_range=*/1, - /*suggested_xchroma_offset=*/0, - /*suggested_ychroma_offset=*/0, + /*suggested_ycbcr_model=*/VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, + /*suggested_ycbcr_range=*/VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, + /*suggested_xchroma_offset=*/VK_CHROMA_LOCATION_COSITED_EVEN, + /*suggested_ychroma_offset=*/VK_CHROMA_LOCATION_COSITED_EVEN, // The same flags that VaapiVideoDecoderUses to create the texture. /*format_features=*/VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT | diff --git a/gpu/command_buffer/service/skia_utils.cc b/gpu/command_buffer/service/skia_utils.cc index 537a0c1dcb3c2fb4dc2e27b918dd76247ec7e276..385ebe8c3aac84cbaf81daab9265f845f580ba3e 100644 --- a/gpu/command_buffer/service/skia_utils.cc +++ b/gpu/command_buffer/service/skia_utils.cc @@ -307,7 +307,9 @@ GrVkImageInfo CreateGrVkImageInfo(VulkanImage* image) { (image->format() == VK_FORMAT_R8G8B8A8_UNORM || image->format() == VK_FORMAT_R8G8B8_UNORM || image->format() == VK_FORMAT_B8G8R8A8_UNORM || - image->format() == VK_FORMAT_B8G8R8_UNORM)) { + image->format() == VK_FORMAT_B8G8R8_UNORM || + image->format() == VK_FORMAT_R8_UNORM || + image->format() == VK_FORMAT_R8G8_UNORM)) { image_info.fImageTiling = VK_IMAGE_TILING_OPTIMAL; } else { image_info.fImageTiling = image->image_tiling(); diff --git a/ui/ozone/platform/x11/x11_surface_factory.cc b/ui/ozone/platform/x11/x11_surface_factory.cc index 9dc0c8325b05f09119a526f0ae6804f96da799b0..f883cca24809e61e2fdd2078887d36a7795cb29d 100644 --- a/ui/ozone/platform/x11/x11_surface_factory.cc +++ b/ui/ozone/platform/x11/x11_surface_factory.cc @@ -55,7 +55,7 @@ NativePixmapSupportType GetNativePixmapSupportType() { class GLOzoneEGLX11 : public GLOzoneEGL { public: - GLOzoneEGLX11() : support_type_(GetNativePixmapSupportType()) {} + GLOzoneEGLX11() = default; GLOzoneEGLX11(const GLOzoneEGLX11&) = delete; GLOzoneEGLX11& operator=(const GLOzoneEGLX11&) = delete; @@ -70,7 +70,7 @@ class GLOzoneEGLX11 : public GLOzoneEGL { } bool CanImportNativePixmap() override { - return support_type_ != NativePixmapSupportType::kNone; + return GetNativePixmapSupportType() != NativePixmapSupportType::kNone; } std::unique_ptr<NativePixmapGLBinding> ImportNativePixmap( @@ -81,7 +81,7 @@ class GLOzoneEGLX11 : public GLOzoneEGL { const gfx::ColorSpace& color_space, GLenum target, GLuint texture_id) override { - switch (support_type_) { + switch (GetNativePixmapSupportType()) { case NativePixmapSupportType::kDMABuf: { return NativePixmapEGLBinding::Create(pixmap, plane_format, plane, plane_size, color_space, target, @@ -148,7 +148,6 @@ class GLOzoneEGLX11 : public GLOzoneEGL { } private: - const NativePixmapSupportType support_type_; bool is_swiftshader_ = false; }; diff --git a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc index 894ce90f179d07f9dcc1e71a70b43a4cad781d07..d62e4bd3c0533e6167bfa94151b4fb6b00e2c4cc 100644 --- a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc @@ -272,8 +272,10 @@ bool OzoneImageBackingFactory::IsSupported( return false; } auto* factory = ui::OzonePlatform::GetInstance()->GetSurfaceFactoryOzone(); - if (!factory->CanCreateNativePixmapForFormat(ToBufferFormat(format))) + if (!factory->CanCreateNativePixmapForFormat( + ToBufferFormat(format), gmb_type == gfx::NATIVE_PIXMAP)) { return false; + } ui::GLOzone* gl_ozone = factory->GetCurrentGLOzone(); if (used_by_gl && (!gl_ozone || !gl_ozone->CanImportNativePixmap())) { diff --git a/ui/gfx/linux/gbm_device.h b/ui/gfx/linux/gbm_device.h index 8fd34e8c7d4347a3a45ebeba4a49481aa0e23ebc..69e1de4c949b145a72867c8258054ea6750a1550 100644 --- a/ui/gfx/linux/gbm_device.h +++ b/ui/gfx/linux/gbm_device.h @@ -33,7 +33,7 @@ class GbmDevice { const gfx::Size& size, gfx::NativePixmapHandle handle) = 0; - virtual bool CanCreateBufferForFormat(uint32_t format) = 0; + virtual bool CanCreateBufferForFormat(uint32_t format, bool is_import) = 0; }; } // namespace ui diff --git a/ui/gfx/linux/gbm_wrapper.cc b/ui/gfx/linux/gbm_wrapper.cc index c1bf39fc53b094db2a3c440145105abb0d7437ab..e7d91524b9f11263502d7e6b2a32e24fc29c0e38 100644 --- a/ui/gfx/linux/gbm_wrapper.cc +++ b/ui/gfx/linux/gbm_wrapper.cc @@ -5,6 +5,7 @@ #include "ui/gfx/linux/gbm_wrapper.h" #include <gbm.h> +#include <cstring> #include <memory> #include <utility> @@ -21,6 +22,7 @@ #if !defined(MINIGBM) #include <dlfcn.h> +#include <drm_fourcc.h> #include <fcntl.h> #include <xf86drm.h> @@ -368,7 +370,7 @@ class Device final : public ui::GbmDevice { } int gbm_flags = 0; - if ((gbm_flags = GetSupportedGbmFlags(format)) == 0) { + if ((gbm_flags = GetSupportedGbmFlags(format, true)) == 0) { LOG(ERROR) << "gbm format not supported: " << format; return nullptr; } @@ -400,27 +402,41 @@ class Device final : public ui::GbmDevice { size, std::move(handle)); } - bool CanCreateBufferForFormat(uint32_t format) override { - return GetSupportedGbmFlags(format) != 0; + bool CanCreateBufferForFormat(uint32_t format, bool is_import) override { + return GetSupportedGbmFlags(format, is_import) != 0; } + int GetSupportedGbmFlags(uint32_t format, bool is_import) { #if defined(MINIGBM) - int GetSupportedGbmFlags(uint32_t format) { int gbm_flags = GBM_BO_USE_SCANOUT | GBM_BO_USE_TEXTURING; - if (gbm_device_is_format_supported(device_, format, gbm_flags)) - return gbm_flags; - gbm_flags = GBM_BO_USE_TEXTURING; - if (gbm_device_is_format_supported(device_, format, gbm_flags)) - return gbm_flags; - return 0; - } #else - int GetSupportedGbmFlags(uint32_t format) { - if (gbm_device_is_format_supported(device_, format, GBM_BO_USE_SCANOUT)) - return GBM_BO_USE_SCANOUT; + int gbm_flags = GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING; +#endif + if (gbm_device_is_format_supported(device_, format, gbm_flags)) { + return gbm_flags; + } + gbm_flags &= ~GBM_BO_USE_SCANOUT; + if (gbm_device_is_format_supported(device_, format, gbm_flags)) { + return gbm_flags; + } +#if !defined(MINIGBM) + if (is_import && strcmp(gbm_device_get_backend_name(device_), "drm") == 0) { + // TODO(crbug.com/1466015): remove this workaround when + // https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23214 lands + // upstream. + if (format == DRM_FORMAT_NV12) { + return GetSupportedGbmFlags(DRM_FORMAT_R8, is_import) & + GetSupportedGbmFlags(DRM_FORMAT_GR88, is_import); + } else if (format == DRM_FORMAT_P010) { + return GetSupportedGbmFlags(DRM_FORMAT_R16, is_import) & + GetSupportedGbmFlags(DRM_FORMAT_GR1616, is_import); + } else if (format == DRM_FORMAT_YVU420) { + return GetSupportedGbmFlags(DRM_FORMAT_R8, is_import); + } + } +#endif return 0; } -#endif private: std::vector<uint64_t> GetFilteredModifiers( diff --git a/ui/gfx/linux/gpu_memory_buffer_support_x11.cc b/ui/gfx/linux/gpu_memory_buffer_support_x11.cc index 193a4edbcebb0b7ecbc066db3af4ade01c52f026..de1e06ec3abb4da75086f674caf93ba76ce20af3 100644 --- a/ui/gfx/linux/gpu_memory_buffer_support_x11.cc +++ b/ui/gfx/linux/gpu_memory_buffer_support_x11.cc @@ -156,9 +156,10 @@ std::unique_ptr<GbmBuffer> GpuMemoryBufferSupportX11::CreateBuffer( } bool GpuMemoryBufferSupportX11::CanCreateNativePixmapForFormat( - gfx::BufferFormat format) { + gfx::BufferFormat format, + bool is_import) { return device_ && device_->CanCreateBufferForFormat( - GetFourCCFormatFromBufferFormat(format)); + GetFourCCFormatFromBufferFormat(format), is_import); } std::unique_ptr<GbmBuffer> GpuMemoryBufferSupportX11::CreateBufferFromHandle( diff --git a/ui/gfx/linux/gpu_memory_buffer_support_x11.h b/ui/gfx/linux/gpu_memory_buffer_support_x11.h index a00fc7c130f7843f363643daed2278ee050e5fd3..40f080ed9fea52df7254824ebe63205bd721ec8a 100644 --- a/ui/gfx/linux/gpu_memory_buffer_support_x11.h +++ b/ui/gfx/linux/gpu_memory_buffer_support_x11.h @@ -32,7 +32,7 @@ class COMPONENT_EXPORT(GBM_SUPPORT_X11) GpuMemoryBufferSupportX11 { const gfx::Size& size, gfx::BufferUsage usage); - bool CanCreateNativePixmapForFormat(gfx::BufferFormat format); + bool CanCreateNativePixmapForFormat(gfx::BufferFormat format, bool is_import); std::unique_ptr<GbmBuffer> CreateBufferFromHandle( const gfx::Size& size, gfx::BufferFormat format, diff --git a/ui/gfx/linux/test/mock_gbm_device.cc b/ui/gfx/linux/test/mock_gbm_device.cc index 40836edb44e367c6d3da18faef0da3274bc684a0..232d463c89962a0667a726b8fe6026b2ab5dfe13 100644 --- a/ui/gfx/linux/test/mock_gbm_device.cc +++ b/ui/gfx/linux/test/mock_gbm_device.cc @@ -191,7 +191,7 @@ std::unique_ptr<GbmBuffer> MockGbmDevice::CreateBufferFromHandle( return nullptr; } -bool MockGbmDevice::CanCreateBufferForFormat(uint32_t format) { +bool MockGbmDevice::CanCreateBufferForFormat(uint32_t format, bool is_import) { return true; } diff --git a/ui/gfx/linux/test/mock_gbm_device.h b/ui/gfx/linux/test/mock_gbm_device.h index a2d36ca51557f7861f4d97f8c06c321dcef5401b..a870845ae85c1d312cfadc0a017cfaa5e2ecae03 100644 --- a/ui/gfx/linux/test/mock_gbm_device.h +++ b/ui/gfx/linux/test/mock_gbm_device.h @@ -37,7 +37,7 @@ class MockGbmDevice : public GbmDevice { uint32_t format, const gfx::Size& size, gfx::NativePixmapHandle handle) override; - bool CanCreateBufferForFormat(uint32_t format) override; + bool CanCreateBufferForFormat(uint32_t format, bool is_import) override; private: uint32_t next_handle_ = 0; diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index 73adfda2e24459018d7c40df001ed74746d25fd0..19744b093327aebc1103dac00731c221804c39c7 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -250,6 +250,18 @@ scoped_refptr<gfx::NativePixmap> WaylandSurfaceFactory::CreateNativePixmap( #endif } +bool WaylandSurfaceFactory::CanCreateNativePixmapForFormat( + gfx::BufferFormat format, + bool is_import) { +#if defined(WAYLAND_GBM) + GbmDevice* const gbm_device = buffer_manager_->GetGbmDevice(); + return gbm_device && gbm_device->CanCreateBufferForFormat( + GetFourCCFormatFromBufferFormat(format), is_import); +#else + return false; +#endif +} + void WaylandSurfaceFactory::CreateNativePixmapAsync( gfx::AcceleratedWidget widget, gpu::VulkanDeviceQueue* device_queue, @@ -322,7 +334,7 @@ WaylandSurfaceFactory::GetSupportedFormatsForTexturing() const { for (int j = 0; j <= static_cast<int>(gfx::BufferFormat::LAST); ++j) { const gfx::BufferFormat buffer_format = static_cast<gfx::BufferFormat>(j); if (gbm_device->CanCreateBufferForFormat( - GetFourCCFormatFromBufferFormat(buffer_format))) { + GetFourCCFormatFromBufferFormat(buffer_format), true)) { supported_buffer_formats.push_back(buffer_format); } } diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h index 6df2ec410140bb37b14e560dc13a3b1bcf22d103..33211f5c5831a9479b4fe5a8b7eff7e53e680d28 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h @@ -47,6 +47,8 @@ class WaylandSurfaceFactory : public SurfaceFactoryOzone { gfx::BufferFormat format, gfx::BufferUsage usage, absl::optional<gfx::Size> framebuffer_size = absl::nullopt) override; + bool CanCreateNativePixmapForFormat(gfx::BufferFormat format, + bool is_import) override; void CreateNativePixmapAsync(gfx::AcceleratedWidget widget, gpu::VulkanDeviceQueue* device_queue, gfx::Size size, diff --git a/ui/ozone/platform/x11/x11_surface_factory.cc b/ui/ozone/platform/x11/x11_surface_factory.cc index f883cca24809e61e2fdd2078887d36a7795cb29d..5e32b08c0a3f8c95d9a6861680b8cf41d9fdedd6 100644 --- a/ui/ozone/platform/x11/x11_surface_factory.cc +++ b/ui/ozone/platform/x11/x11_surface_factory.cc @@ -224,10 +224,10 @@ scoped_refptr<gfx::NativePixmap> X11SurfaceFactory::CreateNativePixmap( return pixmap; } -bool X11SurfaceFactory::CanCreateNativePixmapForFormat( - gfx::BufferFormat format) { +bool X11SurfaceFactory::CanCreateNativePixmapForFormat(gfx::BufferFormat format, + bool is_import) { return ui::GpuMemoryBufferSupportX11::GetInstance() - ->CanCreateNativePixmapForFormat(format); + ->CanCreateNativePixmapForFormat(format, is_import); } void X11SurfaceFactory::CreateNativePixmapAsync( diff --git a/ui/ozone/platform/x11/x11_surface_factory.h b/ui/ozone/platform/x11/x11_surface_factory.h index 3a449505122bd4c88f85969ae9161294878cb19d..6e31f1792367829b87906e83f8d18e5efbb42700 100644 --- a/ui/ozone/platform/x11/x11_surface_factory.h +++ b/ui/ozone/platform/x11/x11_surface_factory.h @@ -43,7 +43,8 @@ class X11SurfaceFactory : public SurfaceFactoryOzone { gfx::BufferFormat format, gfx::BufferUsage usage, absl::optional<gfx::Size> framebuffer_size = absl::nullopt) override; - bool CanCreateNativePixmapForFormat(gfx::BufferFormat format) override; + bool CanCreateNativePixmapForFormat(gfx::BufferFormat format, + bool is_import) override; void CreateNativePixmapAsync(gfx::AcceleratedWidget widget, gpu::VulkanDeviceQueue* device_queue, gfx::Size size, diff --git a/ui/ozone/public/surface_factory_ozone.cc b/ui/ozone/public/surface_factory_ozone.cc index 9f7109b2d9de6cf28af4cbb7d32e912b768bb416..f8e33d7485f17395e67f773ae78b41c03ef5937a 100644 --- a/ui/ozone/public/surface_factory_ozone.cc +++ b/ui/ozone/public/surface_factory_ozone.cc @@ -87,7 +87,8 @@ scoped_refptr<gfx::NativePixmap> SurfaceFactoryOzone::CreateNativePixmap( } bool SurfaceFactoryOzone::CanCreateNativePixmapForFormat( - gfx::BufferFormat format) { + gfx::BufferFormat format, + bool is_import) { // It's up to specific implementations of this method to report an inability // to create native pixmap handles for a specific format. return true; diff --git a/ui/ozone/public/surface_factory_ozone.h b/ui/ozone/public/surface_factory_ozone.h index 8dc694954d232aee88021ba4d6adb5c78e8baa8c..552afe288ab55800c60247cf6a883595ef078740 100644 --- a/ui/ozone/public/surface_factory_ozone.h +++ b/ui/ozone/public/surface_factory_ozone.h @@ -151,7 +151,8 @@ class COMPONENT_EXPORT(OZONE_BASE) SurfaceFactoryOzone { gfx::BufferUsage usage, absl::optional<gfx::Size> framebuffer_size = absl::nullopt); - virtual bool CanCreateNativePixmapForFormat(gfx::BufferFormat format); + virtual bool CanCreateNativePixmapForFormat(gfx::BufferFormat format, + bool is_import); // Similar to CreateNativePixmap, but returns the result asynchronously. using NativePixmapCallback = diff --git a/gpu/vulkan/android/vulkan_implementation_android.cc b/gpu/vulkan/android/vulkan_implementation_android.cc index 13a4c008e166873d8cfec80e287ba4dec11e5b39..e7d9c37c31e77a287ffcf4bef90e02d0da3bb3c7 100644 --- a/gpu/vulkan/android/vulkan_implementation_android.cc +++ b/gpu/vulkan/android/vulkan_implementation_android.cc @@ -103,32 +103,16 @@ VulkanImplementationAndroid::ExportVkFenceToGpuFence(VkDevice vk_device, return nullptr; } -VkSemaphore VulkanImplementationAndroid::CreateExternalSemaphore( - VkDevice vk_device) { - return CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT); -} - -VkSemaphore VulkanImplementationAndroid::ImportSemaphoreHandle( - VkDevice vk_device, - SemaphoreHandle sync_handle) { - return ImportVkSemaphoreHandle(vk_device, std::move(sync_handle)); -} - -SemaphoreHandle VulkanImplementationAndroid::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - // VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT specifies a POSIX file - // descriptor handle to a Linux Sync File or Android Fence object. - return GetVkSemaphoreHandle(vk_device, vk_semaphore, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationAndroid::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationAndroid::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; +} + bool VulkanImplementationAndroid::CanImportGpuMemoryBuffer( VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/gpu/vulkan/android/vulkan_implementation_android.h b/gpu/vulkan/android/vulkan_implementation_android.h index 8c3c91f731170a51d3176dc564822945a231f69b..87add7d17dcfa8062c94e1ed50d393e627848094 100644 --- a/gpu/vulkan/android/vulkan_implementation_android.h +++ b/gpu/vulkan/android/vulkan_implementation_android.h @@ -41,12 +41,9 @@ class COMPONENT_EXPORT(VULKAN_ANDROID) VulkanImplementationAndroid std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - SemaphoreHandle handle) override; - SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/gpu/vulkan/generate_bindings.py b/gpu/vulkan/generate_bindings.py index adc29b99619939640e4238773acdf7975567e81e..871953823e2469f3dfbd691e751fae580bbfa938 100755 --- a/gpu/vulkan/generate_bindings.py +++ b/gpu/vulkan/generate_bindings.py @@ -45,6 +45,7 @@ VULKAN_INSTANCE_FUNCTIONS = [ 'vkEnumerateDeviceLayerProperties', 'vkEnumeratePhysicalDevices', 'vkGetDeviceProcAddr', + 'vkGetPhysicalDeviceExternalSemaphoreProperties', 'vkGetPhysicalDeviceFeatures2', 'vkGetPhysicalDeviceFormatProperties', 'vkGetPhysicalDeviceFormatProperties2', diff --git a/gpu/vulkan/mac/vulkan_implementation_mac.cc b/gpu/vulkan/mac/vulkan_implementation_mac.cc index b1606801f11d0ad301e56d070801722bca360155..0bc2a32d43496f60e838c903b8925a3205f2017c 100644 --- a/gpu/vulkan/mac/vulkan_implementation_mac.cc +++ b/gpu/vulkan/mac/vulkan_implementation_mac.cc @@ -81,30 +81,16 @@ std::unique_ptr<gfx::GpuFence> VulkanImplementationMac::ExportVkFenceToGpuFence( return nullptr; } -VkSemaphore VulkanImplementationMac::CreateExternalSemaphore( - VkDevice vk_device) { - return CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - -VkSemaphore VulkanImplementationMac::ImportSemaphoreHandle( - VkDevice vk_device, - SemaphoreHandle handle) { - return ImportVkSemaphoreHandle(vk_device, std::move(handle)); -} - -SemaphoreHandle VulkanImplementationMac::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return GetVkSemaphoreHandle(vk_device, vk_semaphore, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationMac::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationMac::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; +} + bool VulkanImplementationMac::CanImportGpuMemoryBuffer( VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/gpu/vulkan/mac/vulkan_implementation_mac.h b/gpu/vulkan/mac/vulkan_implementation_mac.h index 93966df51813ad40d44c8a0d4abe43e5d3b02388..9e7d914ff9bd6a9ccfc85567f89e981ca44064b6 100644 --- a/gpu/vulkan/mac/vulkan_implementation_mac.h +++ b/gpu/vulkan/mac/vulkan_implementation_mac.h @@ -36,12 +36,9 @@ class COMPONENT_EXPORT(VULKAN_MAC) VulkanImplementationMac std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - SemaphoreHandle handle) override; - SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/gpu/vulkan/vulkan_function_pointers.cc b/gpu/vulkan/vulkan_function_pointers.cc index b088e41b4e1f9f4692918d25e1cca7a9fdbb67ce..4a67c52ef441f15face2ae728e6575f3f0f9263f 100644 --- a/gpu/vulkan/vulkan_function_pointers.cc +++ b/gpu/vulkan/vulkan_function_pointers.cc @@ -146,6 +146,16 @@ bool VulkanFunctionPointers::BindInstanceFunctionPointers( return false; } + vkGetPhysicalDeviceExternalSemaphoreProperties = + reinterpret_cast<PFN_vkGetPhysicalDeviceExternalSemaphoreProperties>( + vkGetInstanceProcAddr( + vk_instance, "vkGetPhysicalDeviceExternalSemaphoreProperties")); + if (!vkGetPhysicalDeviceExternalSemaphoreProperties) { + DLOG(WARNING) << "Failed to bind vulkan entrypoint: " + << "vkGetPhysicalDeviceExternalSemaphoreProperties"; + return false; + } + vkGetPhysicalDeviceFeatures2 = reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures2>( vkGetInstanceProcAddr(vk_instance, "vkGetPhysicalDeviceFeatures2")); @@ -1187,6 +1197,7 @@ void VulkanFunctionPointers::ResetForTesting() { vkEnumerateDeviceLayerProperties = nullptr; vkEnumeratePhysicalDevices = nullptr; vkGetDeviceProcAddr = nullptr; + vkGetPhysicalDeviceExternalSemaphoreProperties = nullptr; vkGetPhysicalDeviceFeatures2 = nullptr; vkGetPhysicalDeviceFormatProperties = nullptr; vkGetPhysicalDeviceFormatProperties2 = nullptr; diff --git a/gpu/vulkan/vulkan_function_pointers.h b/gpu/vulkan/vulkan_function_pointers.h index d871ba29d29c8593c25ad8021dfb0088f763f053..f2000edb5fb8b5e3229a934966d67b9ddc10dba2 100644 --- a/gpu/vulkan/vulkan_function_pointers.h +++ b/gpu/vulkan/vulkan_function_pointers.h @@ -126,6 +126,8 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers { vkEnumerateDeviceLayerProperties; VulkanFunction<PFN_vkEnumeratePhysicalDevices> vkEnumeratePhysicalDevices; VulkanFunction<PFN_vkGetDeviceProcAddr> vkGetDeviceProcAddr; + VulkanFunction<PFN_vkGetPhysicalDeviceExternalSemaphoreProperties> + vkGetPhysicalDeviceExternalSemaphoreProperties; VulkanFunction<PFN_vkGetPhysicalDeviceFeatures2> vkGetPhysicalDeviceFeatures2; VulkanFunction<PFN_vkGetPhysicalDeviceFormatProperties> vkGetPhysicalDeviceFormatProperties; @@ -397,6 +399,14 @@ ALWAYS_INLINE PFN_vkVoidFunction vkGetDeviceProcAddr(VkDevice device, const char* pName) { return gpu::GetVulkanFunctionPointers()->vkGetDeviceProcAddr(device, pName); } +ALWAYS_INLINE void vkGetPhysicalDeviceExternalSemaphoreProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, + VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { + return gpu::GetVulkanFunctionPointers() + ->vkGetPhysicalDeviceExternalSemaphoreProperties( + physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties); +} ALWAYS_INLINE void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { diff --git a/gpu/vulkan/vulkan_implementation.cc b/gpu/vulkan/vulkan_implementation.cc index 6a63472911751c057a81a26e0f2abe7a5c188d58..380360397eb35ce9b8f4ca4b815cd12cfac3d1ec 100644 --- a/gpu/vulkan/vulkan_implementation.cc +++ b/gpu/vulkan/vulkan_implementation.cc @@ -8,6 +8,7 @@ #include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_function_pointers.h" #include "gpu/vulkan/vulkan_instance.h" +#include "gpu/vulkan/vulkan_util.h" namespace gpu { @@ -53,4 +54,27 @@ std::unique_ptr<VulkanDeviceQueue> CreateVulkanDeviceQueue( return device_queue; } +VkSemaphore VulkanImplementation::CreateExternalSemaphore(VkDevice vk_device) { + return CreateExternalVkSemaphore(vk_device, GetExternalSemaphoreHandleType()); +} + +VkSemaphore VulkanImplementation::ImportSemaphoreHandle( + VkDevice vk_device, + SemaphoreHandle sync_handle) { + return ImportVkSemaphoreHandle(vk_device, std::move(sync_handle)); +} + +SemaphoreHandle VulkanImplementation::GetSemaphoreHandle( + VkDevice vk_device, + VkSemaphore vk_semaphore) { + return GetVkSemaphoreHandle(vk_device, vk_semaphore, + GetExternalSemaphoreHandleType()); +} + +bool VulkanImplementation::IsExternalSemaphoreSupported( + VulkanDeviceQueue* device_queue) { + return IsVkExternalSemaphoreHandleTypeSupported( + device_queue, GetExternalSemaphoreHandleType()); +} + } // namespace gpu diff --git a/gpu/vulkan/vulkan_implementation.h b/gpu/vulkan/vulkan_implementation.h index 09cd3946cf0ced3b8c1fff0d4b4544951df8a844..8650ff99a5841ab9c5772d98c8921a8816582e58 100644 --- a/gpu/vulkan/vulkan_implementation.h +++ b/gpu/vulkan/vulkan_implementation.h @@ -77,23 +77,28 @@ class COMPONENT_EXPORT(VULKAN) VulkanImplementation { VkFence vk_fence) = 0; // Creates a semaphore that can be exported using GetSemaphoreHandle(). - virtual VkSemaphore CreateExternalSemaphore(VkDevice vk_device) = 0; + virtual VkSemaphore CreateExternalSemaphore(VkDevice vk_device); // Import a VkSemaphore from a platform-specific handle. // Handle types that don't allow permanent import are imported with // temporary permanence (VK_SEMAPHORE_IMPORT_TEMPORARY_BIT). virtual VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - SemaphoreHandle handle) = 0; + SemaphoreHandle handle); // Export a platform-specific handle for a Vulkan semaphore. Returns a null // handle in case of a failure. virtual SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) = 0; + VkSemaphore vk_semaphore); // Returns VkExternalMemoryHandleTypeFlagBits that should be set when creating // external images and memory. virtual VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() = 0; + // Returns VkExternalSemaphoreHandleTypeFlagBits that should be used when + // creating and exporting external semaphores. + virtual VkExternalSemaphoreHandleTypeFlagBits + GetExternalSemaphoreHandleType() = 0; + // Returns true if the GpuMemoryBuffer of the specified type can be imported // into VkImage using CreateImageFromGpuMemoryHandle(). virtual bool CanImportGpuMemoryBuffer( @@ -110,6 +115,9 @@ class COMPONENT_EXPORT(VULKAN) VulkanImplementation { VkFormat vk_format, const gfx::ColorSpace& color_space) = 0; + // Returns whether external semaphores are supported by this device. + virtual bool IsExternalSemaphoreSupported(VulkanDeviceQueue* device_queue); + #if BUILDFLAG(IS_ANDROID) // Get the sampler ycbcr conversion information from the AHB. virtual bool GetSamplerYcbcrConversionInfo( diff --git a/gpu/vulkan/vulkan_util.cc b/gpu/vulkan/vulkan_util.cc index 700d732c8d050a9768d35245d9e9370c3a574a91..e83e1d27010b11d380a4f45a01411a7c8174489e 100644 --- a/gpu/vulkan/vulkan_util.cc +++ b/gpu/vulkan/vulkan_util.cc @@ -516,4 +516,39 @@ uint32_t VkImageLayoutToGLImageLayout(VkImageLayout layout) { } } +bool IsVkExternalSemaphoreHandleTypeSupported( + VulkanDeviceQueue* device_queue, + VkExternalSemaphoreHandleTypeFlagBits handle_type) { + if (!gfx::HasExtension(device_queue->enabled_extensions(), +#if BUILDFLAG(IS_WIN) + VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME +#elif BUILDFLAG(IS_POSIX) + VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME +#elif BUILDFLAG(IS_FUCHSIA) + VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME +#endif + )) { + return false; + } + + VkPhysicalDevice physical_device = device_queue->GetVulkanPhysicalDevice(); + + VkPhysicalDeviceExternalSemaphoreInfo semaphore_info = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, + .handleType = handle_type, + }; + + VkExternalSemaphoreProperties semaphore_properties = { + .sType = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, + }; + + vkGetPhysicalDeviceExternalSemaphoreProperties( + physical_device, &semaphore_info, &semaphore_properties); + + return (semaphore_properties.externalSemaphoreFeatures & + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT) && + (semaphore_properties.externalSemaphoreFeatures & + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT); +} + } // namespace gpu diff --git a/gpu/vulkan/vulkan_util.h b/gpu/vulkan/vulkan_util.h index 9c4dc3fd9fb401f09b5f54ef800d140bf24006ba..32ea66c8a10769794a8b389c9b10bde7daa03fd1 100644 --- a/gpu/vulkan/vulkan_util.h +++ b/gpu/vulkan/vulkan_util.h @@ -15,6 +15,7 @@ #include "base/component_export.h" #include "base/containers/span.h" #include "gpu/vulkan/semaphore_handle.h" +#include "gpu/vulkan/vulkan_device_queue.h" namespace gpu { @@ -115,6 +116,11 @@ VkImageLayout GLImageLayoutToVkImageLayout(uint32_t layout); COMPONENT_EXPORT(VULKAN) uint32_t VkImageLayoutToGLImageLayout(VkImageLayout layout); +COMPONENT_EXPORT(VULKAN) +bool IsVkExternalSemaphoreHandleTypeSupported( + VulkanDeviceQueue* device_queue, + VkExternalSemaphoreHandleTypeFlagBits handle_type); + } // namespace gpu #endif // GPU_VULKAN_VULKAN_UTIL_H_ diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.cc b/gpu/vulkan/win32/vulkan_implementation_win32.cc index f3dfe7b7fa03b490bc6e1bd975a1a11921e08537..7b55fc3cf9645c7580c9b083bba8e4d96007c613 100644 --- a/gpu/vulkan/win32/vulkan_implementation_win32.cc +++ b/gpu/vulkan/win32/vulkan_implementation_win32.cc @@ -85,31 +85,16 @@ VulkanImplementationWin32::ExportVkFenceToGpuFence(VkDevice vk_device, return nullptr; } -VkSemaphore VulkanImplementationWin32::CreateExternalSemaphore( - VkDevice vk_device) { - return CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT); -} - -VkSemaphore VulkanImplementationWin32::ImportSemaphoreHandle( - VkDevice vk_device, - SemaphoreHandle handle) { - return ImportVkSemaphoreHandle(vk_device, std::move(handle)); -} - -SemaphoreHandle VulkanImplementationWin32::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return GetVkSemaphoreHandle( - vk_device, vk_semaphore, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationWin32::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationWin32::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT; +} + bool VulkanImplementationWin32::CanImportGpuMemoryBuffer( VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.h b/gpu/vulkan/win32/vulkan_implementation_win32.h index 2073a856d31aa7cb9c2f604f8448414e44d6a916..795579280dbf6820fa2109fdd298fc941eb54260 100644 --- a/gpu/vulkan/win32/vulkan_implementation_win32.h +++ b/gpu/vulkan/win32/vulkan_implementation_win32.h @@ -37,12 +37,9 @@ class COMPONENT_EXPORT(VULKAN_WIN32) VulkanImplementationWin32 std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - SemaphoreHandle handle) override; - SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc index 745c0ce7ea72de784756bd9c8f529270afbc52bc..725a9dc3d1d986881c55f2872cba72cfe10c4f3c 100644 --- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc +++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc @@ -134,30 +134,16 @@ std::unique_ptr<gfx::GpuFence> VulkanImplementationGbm::ExportVkFenceToGpuFence( return std::make_unique<gfx::GpuFence>(std::move(gpu_fence_handle)); } -VkSemaphore VulkanImplementationGbm::CreateExternalSemaphore( - VkDevice vk_device) { - return gpu::CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT); -} - -VkSemaphore VulkanImplementationGbm::ImportSemaphoreHandle( - VkDevice vk_device, - gpu::SemaphoreHandle sync_handle) { - return gpu::ImportVkSemaphoreHandle(vk_device, std::move(sync_handle)); -} - -gpu::SemaphoreHandle VulkanImplementationGbm::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return gpu::GetVkSemaphoreHandle( - vk_device, vk_semaphore, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationGbm::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationGbm::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; +} + bool VulkanImplementationGbm::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h index 92b2d91d996d86b0040004ee6945b5b4be20e85b..b490cd689c3c046d2459096181ee9a2ea4068ef6 100644 --- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h +++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h @@ -36,12 +36,9 @@ class VulkanImplementationGbm : public gpu::VulkanImplementation { std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - gpu::SemaphoreHandle handle) override; - gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/ui/ozone/platform/flatland/vulkan_implementation_flatland.cc b/ui/ozone/platform/flatland/vulkan_implementation_flatland.cc index 43f13942bbd8631e748898adb40db5fe3cfbf8dd..a2c644ffddf33c8abe127be99d8bd9ecb8ecc8c9 100644 --- a/ui/ozone/platform/flatland/vulkan_implementation_flatland.cc +++ b/ui/ozone/platform/flatland/vulkan_implementation_flatland.cc @@ -110,31 +110,16 @@ VulkanImplementationFlatland::ExportVkFenceToGpuFence(VkDevice vk_device, return nullptr; } -VkSemaphore VulkanImplementationFlatland::CreateExternalSemaphore( - VkDevice vk_device) { - return gpu::CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); -} - -VkSemaphore VulkanImplementationFlatland::ImportSemaphoreHandle( - VkDevice vk_device, - gpu::SemaphoreHandle handle) { - return gpu::ImportVkSemaphoreHandle(vk_device, std::move(handle)); -} - -gpu::SemaphoreHandle VulkanImplementationFlatland::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return gpu::GetVkSemaphoreHandle( - vk_device, vk_semaphore, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationFlatland::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationFlatland::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA; +} + bool VulkanImplementationFlatland::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/ui/ozone/platform/flatland/vulkan_implementation_flatland.h b/ui/ozone/platform/flatland/vulkan_implementation_flatland.h index db31987e951343a08bc4343caca32de89c4c2a0c..db180e21310d7b7177e6d3644239ef21e8faa12e 100644 --- a/ui/ozone/platform/flatland/vulkan_implementation_flatland.h +++ b/ui/ozone/platform/flatland/vulkan_implementation_flatland.h @@ -42,12 +42,9 @@ class VulkanImplementationFlatland : public gpu::VulkanImplementation { std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - gpu::SemaphoreHandle handle) override; - gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/ui/ozone/platform/headless/vulkan_implementation_headless.cc b/ui/ozone/platform/headless/vulkan_implementation_headless.cc index 1d4bd00c64e8a9fd6b99cf6532e8eb6883955870..73ec11c68304214d85a8a14d3ec817a7e2174166 100644 --- a/ui/ozone/platform/headless/vulkan_implementation_headless.cc +++ b/ui/ozone/platform/headless/vulkan_implementation_headless.cc @@ -114,30 +114,16 @@ VulkanImplementationHeadless::ExportVkFenceToGpuFence(VkDevice vk_device, return nullptr; } -VkSemaphore VulkanImplementationHeadless::CreateExternalSemaphore( - VkDevice vk_device) { - return gpu::CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - -VkSemaphore VulkanImplementationHeadless::ImportSemaphoreHandle( - VkDevice vk_device, - gpu::SemaphoreHandle sync_handle) { - return ImportVkSemaphoreHandle(vk_device, std::move(sync_handle)); -} - -gpu::SemaphoreHandle VulkanImplementationHeadless::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return gpu::GetVkSemaphoreHandle( - vk_device, vk_semaphore, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationHeadless::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationHeadless::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; +} + bool VulkanImplementationHeadless::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/ui/ozone/platform/headless/vulkan_implementation_headless.h b/ui/ozone/platform/headless/vulkan_implementation_headless.h index 1f93b99f86353eb79fc15de6d635bf7bec033e78..fa5da2ca4304a27c8cf5bfa1ce16e423815b03b1 100644 --- a/ui/ozone/platform/headless/vulkan_implementation_headless.h +++ b/ui/ozone/platform/headless/vulkan_implementation_headless.h @@ -36,12 +36,9 @@ class VulkanImplementationHeadless : public gpu::VulkanImplementation { std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - gpu::SemaphoreHandle handle) override; - gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc index 858cec0674dde10fdab7ef722ad073f5bb048f03..04c6edfa3bd877883d14b55b50e202c0929bf28e 100644 --- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc +++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc @@ -153,31 +153,16 @@ VulkanImplementationScenic::ExportVkFenceToGpuFence(VkDevice vk_device, return nullptr; } -VkSemaphore VulkanImplementationScenic::CreateExternalSemaphore( - VkDevice vk_device) { - return gpu::CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); -} - -VkSemaphore VulkanImplementationScenic::ImportSemaphoreHandle( - VkDevice vk_device, - gpu::SemaphoreHandle handle) { - return gpu::ImportVkSemaphoreHandle(vk_device, std::move(handle)); -} - -gpu::SemaphoreHandle VulkanImplementationScenic::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return gpu::GetVkSemaphoreHandle( - vk_device, vk_semaphore, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationScenic::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationScenic::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA; +} + bool VulkanImplementationScenic::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h index 9d9c5e0b6d23d2a6d9cceb63e0f133bdf3c1dcec..66c05b51e06974b17e7a5284ba931471799d7a33 100644 --- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h +++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h @@ -44,12 +44,9 @@ class VulkanImplementationScenic : public gpu::VulkanImplementation { std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - gpu::SemaphoreHandle handle) override; - gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc b/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc index 501ba1fd8fe20820963a09990e65d0cd881b1a29..a74106dcfda61b1ddeb7070bd3de43ad3133f775 100644 --- a/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc +++ b/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc @@ -98,30 +98,16 @@ VulkanImplementationWayland::ExportVkFenceToGpuFence(VkDevice vk_device, return nullptr; } -VkSemaphore VulkanImplementationWayland::CreateExternalSemaphore( - VkDevice vk_device) { - return gpu::CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - -VkSemaphore VulkanImplementationWayland::ImportSemaphoreHandle( - VkDevice vk_device, - gpu::SemaphoreHandle sync_handle) { - return gpu::ImportVkSemaphoreHandle(vk_device, std::move(sync_handle)); -} - -gpu::SemaphoreHandle VulkanImplementationWayland::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return gpu::GetVkSemaphoreHandle( - vk_device, vk_semaphore, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationWayland::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationWayland::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; +} + bool VulkanImplementationWayland::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.h b/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.h index 7c246a379c8e8b86349a07f5926a96e472f1af3b..ed1d60dad2c7c90936ccfb8a7f1dbd04507e856b 100644 --- a/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.h +++ b/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.h @@ -36,12 +36,9 @@ class VulkanImplementationWayland : public gpu::VulkanImplementation { std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - gpu::SemaphoreHandle handle) override; - gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/ui/ozone/platform/x11/vulkan_implementation_x11.cc b/ui/ozone/platform/x11/vulkan_implementation_x11.cc index ad752a749d0d194fdf2cb4df61ff56b7bce8b819..21a5371a73306ec6aca26e3377cb3d2ccecdc604 100644 --- a/ui/ozone/platform/x11/vulkan_implementation_x11.cc +++ b/ui/ozone/platform/x11/vulkan_implementation_x11.cc @@ -124,30 +124,16 @@ std::unique_ptr<gfx::GpuFence> VulkanImplementationX11::ExportVkFenceToGpuFence( return nullptr; } -VkSemaphore VulkanImplementationX11::CreateExternalSemaphore( - VkDevice vk_device) { - return gpu::CreateExternalVkSemaphore( - vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - -VkSemaphore VulkanImplementationX11::ImportSemaphoreHandle( - VkDevice vk_device, - gpu::SemaphoreHandle sync_handle) { - return ImportVkSemaphoreHandle(vk_device, std::move(sync_handle)); -} - -gpu::SemaphoreHandle VulkanImplementationX11::GetSemaphoreHandle( - VkDevice vk_device, - VkSemaphore vk_semaphore) { - return gpu::GetVkSemaphoreHandle( - vk_device, vk_semaphore, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); -} - VkExternalMemoryHandleTypeFlagBits VulkanImplementationX11::GetExternalImageHandleType() { return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; } +VkExternalSemaphoreHandleTypeFlagBits +VulkanImplementationX11::GetExternalSemaphoreHandleType() { + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; +} + bool VulkanImplementationX11::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { diff --git a/ui/ozone/platform/x11/vulkan_implementation_x11.h b/ui/ozone/platform/x11/vulkan_implementation_x11.h index a633001d317f00353db4d4a8795b561650244b8c..85db0a45f9880ef4c8222fe1141fa119bcc2126a 100644 --- a/ui/ozone/platform/x11/vulkan_implementation_x11.h +++ b/ui/ozone/platform/x11/vulkan_implementation_x11.h @@ -36,12 +36,9 @@ class VulkanImplementationX11 : public gpu::VulkanImplementation { std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence( VkDevice vk_device, VkFence vk_fence) override; - VkSemaphore CreateExternalSemaphore(VkDevice vk_device) override; - VkSemaphore ImportSemaphoreHandle(VkDevice vk_device, - gpu::SemaphoreHandle handle) override; - gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, - VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + VkExternalSemaphoreHandleTypeFlagBits GetExternalSemaphoreHandleType() + override; bool CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; diff --git a/gpu/vulkan/vulkan_image.cc b/gpu/vulkan/vulkan_image.cc index bc1eeb9d70d4ac55122df63a5ff32281255c83f4..a0a6dc4b19fb497192eb051fd4590d8b5be56384 100644 --- a/gpu/vulkan/vulkan_image.cc +++ b/gpu/vulkan/vulkan_image.cc @@ -13,6 +13,7 @@ #include "build/chromeos_buildflags.h" #include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_function_pointers.h" +#include "gpu/vulkan/vulkan_util.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace gpu { @@ -375,55 +376,16 @@ bool VulkanImage::InitializeWithExternalMemory( constexpr auto kHandleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; #endif - VkPhysicalDeviceImageFormatInfo2 format_info_2 = { - .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, - .format = format, - .type = VK_IMAGE_TYPE_2D, - .tiling = image_tiling, - .usage = usage, - .flags = flags, - }; - - VkPhysicalDeviceExternalImageFormatInfo external_info = { - .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, - .handleType = kHandleType, - }; - format_info_2.pNext = &external_info; - -// TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is -// complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) - VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = { - .sType = - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, - .sharingMode = VK_SHARING_MODE_EXCLUSIVE, - }; - // If image_tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, a modifier_info - // struct has to be appended. - if (image_tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) - external_info.pNext = &modifier_info; -#endif - - VkImageFormatProperties2 image_format_properties_2 = { - .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, - }; - VkExternalImageFormatProperties external_image_format_properties = { - .sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, - }; - image_format_properties_2.pNext = &external_image_format_properties; - - auto result = vkGetPhysicalDeviceImageFormatProperties2( - device_queue->GetVulkanPhysicalDevice(), &format_info_2, - &image_format_properties_2); + VkExternalMemoryProperties external_format_properties; + VkResult result = QueryVkExternalMemoryProperties( + device_queue->GetVulkanPhysicalDevice(), format, VK_IMAGE_TYPE_2D, + image_tiling, usage, flags, kHandleType, &external_format_properties); if (result != VK_SUCCESS) { DLOG(ERROR) << "External memory is not supported." << " format:" << format << " image_tiling:" << image_tiling << " usage:" << usage << " flags:" << flags; return false; } - - const auto& external_format_properties = - external_image_format_properties.externalMemoryProperties; if (!(external_format_properties.externalMemoryFeatures & VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT)) { DLOG(ERROR) << "External memory cannot be exported." diff --git a/gpu/vulkan/vulkan_util.cc b/gpu/vulkan/vulkan_util.cc index e83e1d27010b11d380a4f45a01411a7c8174489e..ef49ad31780add6552dc8c2543f2558872350753 100644 --- a/gpu/vulkan/vulkan_util.cc +++ b/gpu/vulkan/vulkan_util.cc @@ -551,4 +551,62 @@ bool IsVkExternalSemaphoreHandleTypeSupported( VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT); } +VkResult QueryVkExternalMemoryProperties( + VkPhysicalDevice physical_device, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagBits handle_type, + VkExternalMemoryProperties* external_memory_properties) { + VkPhysicalDeviceImageFormatInfo2 format_info_2 = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, + .format = format, + .type = type, + .tiling = tiling, + .usage = usage, + .flags = flags, + }; + + VkPhysicalDeviceExternalImageFormatInfo external_info = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, + .handleType = handle_type, + }; + format_info_2.pNext = &external_info; + +// TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is +// complete. +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) + VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = { + .sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, + .sharingMode = VK_SHARING_MODE_EXCLUSIVE, + }; + // If image_tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, a modifier_info + // struct has to be appended. + if (tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) { + external_info.pNext = &modifier_info; + } +#endif + + VkImageFormatProperties2 image_format_properties_2 = { + .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, + }; + VkExternalImageFormatProperties external_image_format_properties = { + .sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, + }; + image_format_properties_2.pNext = &external_image_format_properties; + + VkResult result = vkGetPhysicalDeviceImageFormatProperties2( + physical_device, &format_info_2, &image_format_properties_2); + if (result != VK_SUCCESS) { + return result; + } + + *external_memory_properties = + external_image_format_properties.externalMemoryProperties; + return VK_SUCCESS; +} + } // namespace gpu diff --git a/gpu/vulkan/vulkan_util.h b/gpu/vulkan/vulkan_util.h index 32ea66c8a10769794a8b389c9b10bde7daa03fd1..f3d7afd1082400eb46212ebc3215254b4c19df55 100644 --- a/gpu/vulkan/vulkan_util.h +++ b/gpu/vulkan/vulkan_util.h @@ -121,6 +121,17 @@ bool IsVkExternalSemaphoreHandleTypeSupported( VulkanDeviceQueue* device_queue, VkExternalSemaphoreHandleTypeFlagBits handle_type); +COMPONENT_EXPORT(VULKAN) +VkResult QueryVkExternalMemoryProperties( + VkPhysicalDevice physical_device, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagBits handle_type, + VkExternalMemoryProperties* external_memory_properties); + } // namespace gpu #endif // GPU_VULKAN_VULKAN_UTIL_H_ diff --git a/gpu/vulkan/vulkan_util.h b/gpu/vulkan/vulkan_util.h index f3d7afd1082400eb46212ebc3215254b4c19df55..44b1b658bcb8d5cbee9ae71ca949644f166e5d32 100644 --- a/gpu/vulkan/vulkan_util.h +++ b/gpu/vulkan/vulkan_util.h @@ -132,6 +132,16 @@ VkResult QueryVkExternalMemoryProperties( VkExternalMemoryHandleTypeFlagBits handle_type, VkExternalMemoryProperties* external_memory_properties); +COMPONENT_EXPORT(VULKAN) +bool IsVkOpaqueExternalSemaphoreSupported(VulkanDeviceQueue* device_queue); + +COMPONENT_EXPORT(VULKAN) +VkSemaphore CreateVkOpaqueExternalSemaphore(VkDevice vk_device); + +COMPONENT_EXPORT(VULKAN) +SemaphoreHandle ExportVkOpaqueExternalSemaphore(VkDevice vk_device, + VkSemaphore vk_semaphore); + } // namespace gpu #endif // GPU_VULKAN_VULKAN_UTIL_H_ diff --git a/gpu/vulkan/vulkan_util_fuchsia.cc b/gpu/vulkan/vulkan_util_fuchsia.cc index 8e8e97e6d6fe0c95b365ed44aa36a9000e294514..321698c49805d1463c8f4b1830ae1aba42f763a7 100644 --- a/gpu/vulkan/vulkan_util_fuchsia.cc +++ b/gpu/vulkan/vulkan_util_fuchsia.cc @@ -69,4 +69,21 @@ SemaphoreHandle GetVkSemaphoreHandle( zx::event(handle)); } +bool IsVkOpaqueExternalSemaphoreSupported(VulkanDeviceQueue* device_queue) { + return IsVkExternalSemaphoreHandleTypeSupported( + device_queue, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); +} + +VkSemaphore CreateVkOpaqueExternalSemaphore(VkDevice vk_device) { + return CreateExternalVkSemaphore( + vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); +} + +SemaphoreHandle ExportVkOpaqueExternalSemaphore(VkDevice vk_device, + VkSemaphore vk_semaphore) { + return GetVkSemaphoreHandle( + vk_device, vk_semaphore, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA); +} + } // namespace gpu \ No newline at end of file diff --git a/gpu/vulkan/vulkan_util_posix.cc b/gpu/vulkan/vulkan_util_posix.cc index 079a69f644ad53af272523faabe66cf359750a28..c9fe55d432e15a5a04ed5c3fa9d5f00bed54ad53 100644 --- a/gpu/vulkan/vulkan_util_posix.cc +++ b/gpu/vulkan/vulkan_util_posix.cc @@ -65,4 +65,20 @@ SemaphoreHandle GetVkSemaphoreHandle( return SemaphoreHandle(handle_type, base::ScopedFD(fd)); } +bool IsVkOpaqueExternalSemaphoreSupported(VulkanDeviceQueue* device_queue) { + return IsVkExternalSemaphoreHandleTypeSupported( + device_queue, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); +} + +VkSemaphore CreateVkOpaqueExternalSemaphore(VkDevice vk_device) { + return CreateExternalVkSemaphore( + vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); +} + +SemaphoreHandle ExportVkOpaqueExternalSemaphore(VkDevice vk_device, + VkSemaphore vk_semaphore) { + return GetVkSemaphoreHandle(vk_device, vk_semaphore, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT); +} + } // namespace gpu diff --git a/gpu/vulkan/vulkan_util_win32.cc b/gpu/vulkan/vulkan_util_win32.cc index b52d0d6a25390c04700d0b9b4d9f7124c9c70787..829c7fae4ccf4f743d51f10c81f89a4752902ee7 100644 --- a/gpu/vulkan/vulkan_util_win32.cc +++ b/gpu/vulkan/vulkan_util_win32.cc @@ -65,4 +65,21 @@ SemaphoreHandle GetVkSemaphoreHandle( return SemaphoreHandle(handle_type, base::win::ScopedHandle(handle)); } +bool IsVkOpaqueExternalSemaphoreSupported(VulkanDeviceQueue* device_queue) { + return IsVkExternalSemaphoreHandleTypeSupported( + device_queue, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT); +} + +VkSemaphore CreateVkOpaqueExternalSemaphore(VkDevice vk_device) { + return CreateExternalVkSemaphore( + vk_device, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT); +} + +SemaphoreHandle ExportVkOpaqueExternalSemaphore(VkDevice vk_device, + VkSemaphore vk_semaphore) { + return GetVkSemaphoreHandle( + vk_device, vk_semaphore, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT); +} + } // namespace gpu diff --git a/gpu/command_buffer/service/shared_context_state.cc b/gpu/command_buffer/service/shared_context_state.cc index c0d19ba3e2ba35d801d33240d9c845eb7cdb4fc1..af86be979fe07f658d6210ca0ab84f68a5e0071c 100644 --- a/gpu/command_buffer/service/shared_context_state.cc +++ b/gpu/command_buffer/service/shared_context_state.cc @@ -40,6 +40,7 @@ #include "gpu/command_buffer/service/external_semaphore_pool.h" #include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_implementation.h" +#include "gpu/vulkan/vulkan_util.h" #endif #if BUILDFLAG(IS_FUCHSIA) @@ -521,38 +522,22 @@ bool SharedContextState::InitializeGL( vk_context_provider_->GetVulkanImplementation()->use_swiftshader() ? gpu::VulkanImplementationName::kSwiftshader : gpu::VulkanImplementationName::kNative; - const auto& extensions = - vk_context_provider_->GetDeviceQueue()->enabled_extensions(); + auto* device_queue = vk_context_provider_->GetDeviceQueue(); #if BUILDFLAG(IS_WIN) vk_supports_external_memory = - gfx::HasExtension(extensions, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME) && - gfx::HasExtension(extensions, + gfx::HasExtension(device_queue->enabled_extensions(), VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME); - vk_supports_external_semaphore = - gfx::HasExtension(extensions, - VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME) && - gfx::HasExtension(extensions, - VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME); #elif BUILDFLAG(IS_FUCHSIA) vk_supports_external_memory = - gfx::HasExtension(extensions, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME) && - gfx::HasExtension(extensions, + gfx::HasExtension(device_queue->enabled_extensions(), VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME); - vk_supports_external_semaphore = - gfx::HasExtension(extensions, - VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME) && - gfx::HasExtension(extensions, - VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME); #else vk_supports_external_memory = - gfx::HasExtension(extensions, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME) && - gfx::HasExtension(extensions, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME); - vk_supports_external_semaphore = - gfx::HasExtension(extensions, - VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME) && - gfx::HasExtension(extensions, - VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME); + gfx::HasExtension(device_queue->enabled_extensions(), + VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME); #endif + vk_supports_external_semaphore = + IsVkOpaqueExternalSemaphoreSupported(device_queue); } #endif // BUILDFLAG(ENABLE_VULKAN) diff --git a/gpu/vulkan/vulkan_image_linux.cc b/gpu/vulkan/vulkan_image_linux.cc index 4a3ecfeea77b3079980d91b119572f26695102d7..6c744cade86a707cd79040f3dcdc765694952119 100644 --- a/gpu/vulkan/vulkan_image_linux.cc +++ b/gpu/vulkan/vulkan_image_linux.cc @@ -10,6 +10,7 @@ #include "base/logging.h" #include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_function_pointers.h" +#include "gpu/vulkan/vulkan_util.h" namespace { @@ -119,6 +120,21 @@ bool VulkanImage::InitializeFromGpuMemoryBufferHandle( .fd = memory_fd, }; + VkExportMemoryAllocateInfo export_memory_info = { + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR}; + VkExternalMemoryProperties external_memory_properties; + VkResult vk_result = QueryVkExternalMemoryProperties( + device_queue->GetVulkanPhysicalDevice(), format, VK_IMAGE_TYPE_2D, + image_tiling, usage, flags, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT, + &external_memory_properties); + if (vk_result == VK_SUCCESS) { + export_memory_info.handleTypes = + external_memory_properties.compatibleHandleTypes; + + import_memory_fd_info.pNext = &export_memory_info; + } + VkMemoryRequirements* requirements = nullptr; // TODO support multiple plane bool result = InitializeSingleOrJointPlanes( diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc index fd85fdf2f0f82a8f45295fe098c96b43837dd85d..a40c5c8e825949a0bb65a268ca68e12d5382044f 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc @@ -46,7 +46,7 @@ #include "ui/gl/gl_version_info.h" #include "ui/gl/scoped_binders.h" -#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && BUILDFLAG(USE_DAWN) +#if BUILDFLAG(IS_LINUX) && BUILDFLAG(USE_DAWN) #include "gpu/command_buffer/service/shared_image/external_vk_image_dawn_representation.h" #endif @@ -595,7 +595,7 @@ std::unique_ptr<DawnImageRepresentation> ExternalVkImageBacking::ProduceDawn( WGPUDevice wgpuDevice, WGPUBackendType backend_type, std::vector<WGPUTextureFormat> view_formats) { -#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && BUILDFLAG(USE_DAWN) +#if BUILDFLAG(IS_LINUX) && BUILDFLAG(USE_DAWN) auto wgpu_format = ToWGPUFormat(format()); if (wgpu_format == WGPUTextureFormat_Undefined) { @@ -612,8 +612,7 @@ std::unique_ptr<DawnImageRepresentation> ExternalVkImageBacking::ProduceDawn( return std::make_unique<ExternalVkImageDawnImageRepresentation>( manager, this, tracker, wgpuDevice, wgpu_format, std::move(view_formats), std::move(memory_fd)); -#else // (!BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)) || - // !BUILDFLAG(USE_DAWN) +#else // !BUILDFLAG(IS_LINUX) || !BUILDFLAG(USE_DAWN) NOTIMPLEMENTED_LOG_ONCE(); return nullptr; #endif diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc index 4c4b602e42d5a8404ec028793d741aeb46d622d2..32ab4cf892f671e43308f2d58efca7110d9c7d30 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc @@ -20,6 +20,7 @@ #include "gpu/vulkan/vulkan_implementation.h" #include "ui/gfx/buffer_format_util.h" #include "ui/gfx/gpu_memory_buffer.h" +#include "ui/gl/buildflags.h" namespace gpu { @@ -88,14 +89,16 @@ base::flat_map<VkFormat, VkImageUsageFlags> CreateImageUsageCache( } // namespace constexpr uint32_t kSupportedUsage = +#if BUILDFLAG(IS_LINUX) && BUILDFLAG(USE_DAWN) + SHARED_IMAGE_USAGE_WEBGPU | SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | + SHARED_IMAGE_USAGE_WEBGPU_STORAGE_TEXTURE | +#endif SHARED_IMAGE_USAGE_GLES2 | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | SHARED_IMAGE_USAGE_DISPLAY_WRITE | SHARED_IMAGE_USAGE_DISPLAY_READ | SHARED_IMAGE_USAGE_RASTER | SHARED_IMAGE_USAGE_OOP_RASTERIZATION | - SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_WEBGPU | - SHARED_IMAGE_USAGE_VIDEO_DECODE | - SHARED_IMAGE_USAGE_WEBGPU_SWAP_CHAIN_TEXTURE | + SHARED_IMAGE_USAGE_SCANOUT | SHARED_IMAGE_USAGE_VIDEO_DECODE | SHARED_IMAGE_USAGE_HIGH_PERFORMANCE_GPU | SHARED_IMAGE_USAGE_CPU_UPLOAD | - SHARED_IMAGE_USAGE_CPU_WRITE | SHARED_IMAGE_USAGE_WEBGPU_STORAGE_TEXTURE; + SHARED_IMAGE_USAGE_CPU_WRITE; ExternalVkImageBackingFactory::ExternalVkImageBackingFactory( scoped_refptr<SharedContextState> context_state) diff --git a/gpu/command_buffer/service/external_semaphore.cc b/gpu/command_buffer/service/external_semaphore.cc index 9c814e70a71317fe6fbcb633c0773a61da78ab41..77154fa76ccc6d6e65051ef8787a270c9df2e701 100644 --- a/gpu/command_buffer/service/external_semaphore.cc +++ b/gpu/command_buffer/service/external_semaphore.cc @@ -81,14 +81,13 @@ GLuint ImportSemaphoreHandleToGLSemaphore(SemaphoreHandle handle) { // static ExternalSemaphore ExternalSemaphore::Create( viz::VulkanContextProvider* context_provider) { - auto* implementation = context_provider->GetVulkanImplementation(); VkDevice device = context_provider->GetDeviceQueue()->GetVulkanDevice(); - VkSemaphore semaphore = implementation->CreateExternalSemaphore(device); + VkSemaphore semaphore = CreateVkOpaqueExternalSemaphore(device); if (semaphore == VK_NULL_HANDLE) return {}; - auto handle = implementation->GetSemaphoreHandle(device, semaphore); + auto handle = ExportVkOpaqueExternalSemaphore(device, semaphore); if (!handle.is_valid()) { vkDestroySemaphore(device, semaphore, /*pAllocator=*/nullptr); return {}; diff --git a/gpu/command_buffer/service/external_semaphore_pool.cc b/gpu/command_buffer/service/external_semaphore_pool.cc index b724c596190963e3f4d8a5f5cc5bddad563ac015..91bdba6d28f581bbc448ed4fe6b737bc25ce9c3a 100644 --- a/gpu/command_buffer/service/external_semaphore_pool.cc +++ b/gpu/command_buffer/service/external_semaphore_pool.cc @@ -15,11 +15,7 @@ namespace gpu { namespace { -#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) -// On Android, semaphores are created with handle type -// VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT. With this handle type, -// the semaphore will not be reset to un-signalled state after waiting, -// so semaphores cannot be reused on Android. +#if BUILDFLAG(IS_FUCHSIA) // On Fuchsia semaphores are passed to scenic as zx::event. Scenic doesn't reset // them after waiting, so they would have to be reset explicitly to be reused. // OTOH new semaphores are cheap, so reuse doesn't provide significant benefits. diff --git a/gpu/vulkan/semaphore_handle.cc b/gpu/vulkan/semaphore_handle.cc index 5598e288ee93e7a59a5379b704c7c63f02af496b..8dcdbf771e4d10dcbf9ff0d5f3a3b83f24a862a4 100644 --- a/gpu/vulkan/semaphore_handle.cc +++ b/gpu/vulkan/semaphore_handle.cc @@ -39,7 +39,7 @@ SemaphoreHandle::SemaphoreHandle(gfx::GpuFenceHandle fence_handle) { // https://fuchsia.dev/reference/fidl/fuchsia.ui.scenic. Init(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA, std::move(fence_handle.owned_event)); -#elif BUILDFLAG(IS_CHROMEOS_ASH) +#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) Init(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, std::move(fence_handle.owned_fd)); #elif BUILDFLAG(IS_POSIX) @@ -64,7 +64,7 @@ gfx::GpuFenceHandle SemaphoreHandle::ToGpuFenceHandle() && { // VkSemaphore, which can then be used to submit present work, see // https://fuchsia.dev/reference/fidl/fuchsia.ui.scenic. fence_handle.owned_event = TakeHandle(); -#elif BUILDFLAG(IS_CHROMEOS_ASH) +#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) if (type_ == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR) { fence_handle.owned_fd = TakeHandle(); } else { diff --git a/ui/ozone/platform/headless/vulkan_implementation_headless.cc b/ui/ozone/platform/headless/vulkan_implementation_headless.cc index 73ec11c68304214d85a8a14d3ec817a7e2174166..7edec11844bd7ba61554ef87e936931b4e49b002 100644 --- a/ui/ozone/platform/headless/vulkan_implementation_headless.cc +++ b/ui/ozone/platform/headless/vulkan_implementation_headless.cc @@ -98,6 +98,7 @@ VulkanImplementationHeadless::GetOptionalDeviceExtensions() { VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME, + VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME, }; } @@ -116,18 +117,35 @@ VulkanImplementationHeadless::ExportVkFenceToGpuFence(VkDevice vk_device, VkExternalMemoryHandleTypeFlagBits VulkanImplementationHeadless::GetExternalImageHandleType() { +#if BUILDFLAG(IS_LINUX) + return VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; +#else return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; +#endif } VkExternalSemaphoreHandleTypeFlagBits VulkanImplementationHeadless::GetExternalSemaphoreHandleType() { +#if BUILDFLAG(IS_LINUX) + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; +#else return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; +#endif } bool VulkanImplementationHeadless::CanImportGpuMemoryBuffer( gpu::VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) { +#if BUILDFLAG(IS_LINUX) + const auto& enabled_extensions = device_queue->enabled_extensions(); + return gfx::HasExtension(enabled_extensions, + VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME) && + gfx::HasExtension(enabled_extensions, + VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME) && + memory_buffer_type == gfx::GpuMemoryBufferType::NATIVE_PIXMAP; +#else return memory_buffer_type == gfx::GpuMemoryBufferType::NATIVE_PIXMAP; +#endif } std::unique_ptr<gpu::VulkanImage> diff --git a/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc b/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc index a74106dcfda61b1ddeb7070bd3de43ad3133f775..8fd86dcaaa6d315a2a39082a0b3558e223b58f41 100644 --- a/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc +++ b/ui/ozone/platform/wayland/gpu/vulkan_implementation_wayland.cc @@ -105,7 +105,7 @@ VulkanImplementationWayland::GetExternalImageHandleType() { VkExternalSemaphoreHandleTypeFlagBits VulkanImplementationWayland::GetExternalSemaphoreHandleType() { - return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; } bool VulkanImplementationWayland::CanImportGpuMemoryBuffer( diff --git a/ui/ozone/platform/x11/vulkan_implementation_x11.cc b/ui/ozone/platform/x11/vulkan_implementation_x11.cc index 21a5371a73306ec6aca26e3377cb3d2ccecdc604..d7d90c53326f2cc856d90101bd4049768e047bb9 100644 --- a/ui/ozone/platform/x11/vulkan_implementation_x11.cc +++ b/ui/ozone/platform/x11/vulkan_implementation_x11.cc @@ -126,12 +126,12 @@ std::unique_ptr<gfx::GpuFence> VulkanImplementationX11::ExportVkFenceToGpuFence( VkExternalMemoryHandleTypeFlagBits VulkanImplementationX11::GetExternalImageHandleType() { - return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; + return VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; } VkExternalSemaphoreHandleTypeFlagBits VulkanImplementationX11::GetExternalSemaphoreHandleType() { - return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT; + return VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; } bool VulkanImplementationX11::CanImportGpuMemoryBuffer( diff --git a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc index d62e4bd3c0533e6167bfa94151b4fb6b00e2c4cc..904883fc432385ab9e9caaf8fd014df4c4a54ec7 100644 --- a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.cc @@ -25,6 +25,8 @@ #include "ui/gfx/native_pixmap.h" #include "ui/gl/buildflags.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_fence.h" +#include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface_egl.h" #include "ui/ozone/public/ozone_platform.h" #include "ui/ozone/public/surface_factory_ozone.h" @@ -282,6 +284,39 @@ bool OzoneImageBackingFactory::IsSupported( return false; } + bool platform_supports_overlays = ui::OzonePlatform::GetInstance() + ->GetPlatformRuntimeProperties() + .supports_overlays; + // If overlays are not supported by the Ozone platform, then only display + // compositor output images allocated through OzoneImageBacking may use + // OverlayRepresentation. + bool used_by_overlay = (usage & SHARED_IMAGE_USAGE_SCANOUT) && + (platform_supports_overlays || + (usage & SHARED_IMAGE_USAGE_DISPLAY_WRITE)); + // We may rely on implicit synchronization for GL/Overlay synchronization in + // case GpuFence support is not available. + bool gl_overlay_requires_fence_sync = + gl::GetANGLEImplementation() == gl::ANGLEImplementation::kVulkan; + bool used_by_multiple = + used_by_vulkan + used_by_webgpu + used_by_gl + used_by_overlay > 1; + bool require_gpu_fence_sync = + used_by_multiple && + (gl_overlay_requires_fence_sync || used_by_vulkan || used_by_webgpu); + + if (require_gpu_fence_sync) { + if (used_by_vulkan && !CanVulkanSynchronizeGpuFence()) { + return false; + } + + if (used_by_gl && !gl::GLFence::IsGpuFenceSupported()) { + return false; + } + + if (used_by_webgpu && !CanWebGPUSynchronizeGpuFence()) { + return false; + } + } + #if BUILDFLAG(IS_FUCHSIA) if (gr_context_type != GrContextType::kVulkan) { return false; @@ -316,6 +351,30 @@ bool OzoneImageBackingFactory::CanImportNativePixmapToVulkan() { #endif // BUILDFLAG(ENABLE_VULKAN) } +bool OzoneImageBackingFactory::CanVulkanSynchronizeGpuFence() { +#if BUILDFLAG(ENABLE_VULKAN) +#if BUILDFLAG(IS_FUCHSIA) + constexpr auto kGpuFenceExternalSemaphoreHandleType = + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA; +#else + constexpr auto kGpuFenceExternalSemaphoreHandleType = + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; +#endif + if (!shared_context_state_->vk_context_provider()) { + return false; + } + auto* vk_device = + shared_context_state_->vk_context_provider()->GetDeviceQueue(); + auto* vk_implementation = + shared_context_state_->vk_context_provider()->GetVulkanImplementation(); + return vk_implementation->GetExternalSemaphoreHandleType() == + kGpuFenceExternalSemaphoreHandleType && + vk_implementation->IsExternalSemaphoreSupported(vk_device); +#else + return false; +#endif // BUILDFLAG(ENABLE_VULKAN) +} + bool OzoneImageBackingFactory::CanImportNativePixmapToWebGPU() { #if BUILDFLAG(IS_CHROMEOS) // Safe to always return true here, as it's not possible to create a WebGPU @@ -332,4 +391,15 @@ bool OzoneImageBackingFactory::CanImportNativePixmapToWebGPU() { #endif } +bool OzoneImageBackingFactory::CanWebGPUSynchronizeGpuFence() { +#if BUILDFLAG(IS_CHROMEOS) + // Dawn always use sync files on ChromeOS so it's safe to unconditionally + // return true here. + return true; +#else + // TODO: somehow check if Dawn is using sync files. + return false; +#endif +} + } // namespace gpu diff --git a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.h b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.h index 5ef74ea44265035b18454dccdb7a3f814aaeb7a7..1992ec291ca1dd42efd956f42b1d07bbf48cc7f8 100644 --- a/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.h +++ b/gpu/command_buffer/service/shared_image/ozone_image_backing_factory.h @@ -87,7 +87,9 @@ class GPU_GLES2_EXPORT OzoneImageBackingFactory private: bool CanImportNativePixmapToVulkan(); + bool CanVulkanSynchronizeGpuFence(); bool CanImportNativePixmapToWebGPU(); + bool CanWebGPUSynchronizeGpuFence(); const raw_ptr<SharedContextState> shared_context_state_; scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs_; diff --git a/ui/ozone/common/gl_surface_egl_readback.cc b/ui/ozone/common/gl_surface_egl_readback.cc index 8c1a2841594b796d5f02c8bc2e1a4317424a541e..067e22c5e83dce2704b370fd266f2bc0f7be0d3f 100644 --- a/ui/ozone/common/gl_surface_egl_readback.cc +++ b/ui/ozone/common/gl_surface_egl_readback.cc @@ -47,10 +47,6 @@ bool GLSurfaceEglReadback::Resize(const gfx::Size& size, return true; } -bool GLSurfaceEglReadback::IsOffscreen() { - return false; -} - gfx::SwapResult GLSurfaceEglReadback::SwapBuffers(PresentationCallback callback, gfx::FrameData data) { gfx::SwapResult swap_result = gfx::SwapResult::SWAP_FAILED; diff --git a/ui/ozone/common/gl_surface_egl_readback.h b/ui/ozone/common/gl_surface_egl_readback.h index 6c83535249a395d860c9c78f1fa0184d0b0c599d..470792607ce82a8f08c0528ebc934af4352756a2 100644 --- a/ui/ozone/common/gl_surface_egl_readback.h +++ b/ui/ozone/common/gl_surface_egl_readback.h @@ -32,7 +32,6 @@ class GLSurfaceEglReadback : public gl::PbufferGLSurfaceEGL { float scale_factor, const gfx::ColorSpace& color_space, bool has_alpha) override; - bool IsOffscreen() override; gfx::SwapResult SwapBuffers(PresentationCallback callback, gfx::FrameData data) override; gfx::SurfaceOrigin GetOrigin() const override; diff --git a/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.cc b/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.cc index 807b5d3f75fcfc50258a2aa62ee369f3455a564a..2a5f3ec6df34cd3c6ccff319aaad3ceb1d89eb04 100644 --- a/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.cc +++ b/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.cc @@ -86,10 +86,6 @@ bool GLSurfaceEglReadbackWayland::Resize(const gfx::Size& size, return true; } -bool GLSurfaceEglReadbackWayland::IsOffscreen() { - return false; -} - bool GLSurfaceEglReadbackWayland::SupportsAsyncSwap() { return true; } diff --git a/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h b/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h index c9f52f2480ae5410d7460d67530886f68e5b09f2..a6d40e55814e988bcbe09775612f3e758c05da2c 100644 --- a/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h +++ b/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h @@ -46,7 +46,6 @@ class GLSurfaceEglReadbackWayland : public GLSurfaceEglReadback, float scale_factor, const gfx::ColorSpace& color_space, bool has_alpha) override; - bool IsOffscreen() override; gfx::SwapResult SwapBuffers(PresentationCallback callback, gfx::FrameData data) override; bool SupportsAsyncSwap() override; diff --git a/gpu/vulkan/vulkan_util.cc b/gpu/vulkan/vulkan_util.cc index ef49ad31780add6552dc8c2543f2558872350753..43923464cacda283286fe1117920785764d866c9 100644 --- a/gpu/vulkan/vulkan_util.cc +++ b/gpu/vulkan/vulkan_util.cc @@ -575,20 +575,17 @@ VkResult QueryVkExternalMemoryProperties( }; format_info_2.pNext = &external_info; -// TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is -// complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) + // From the Vulkan spec: + // tiling must be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT if and only if + // the pNext chain includes VkPhysicalDeviceImageDrmFormatModifierInfoEXT VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = { .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, .sharingMode = VK_SHARING_MODE_EXCLUSIVE, }; - // If image_tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, a modifier_info - // struct has to be appended. if (tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) { external_info.pNext = &modifier_info; } -#endif VkImageFormatProperties2 image_format_properties_2 = { .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, diff --git a/ui/ozone/platform/headless/headless_surface_factory.cc b/ui/ozone/platform/headless/headless_surface_factory.cc index 16e1c3a930514d17a1871063ef262949593dee08..1cfc6f76a6c03036a46a654bf9ed3960cff2a808 100644 --- a/ui/ozone/platform/headless/headless_surface_factory.cc +++ b/ui/ozone/platform/headless/headless_surface_factory.cc @@ -26,6 +26,7 @@ #include "ui/gfx/geometry/skia_conversions.h" #include "ui/gfx/native_pixmap.h" #include "ui/gfx/vsync_provider.h" +#include "ui/gl/gl_bindings.h" #include "ui/gl/gl_surface_egl.h" #include "ui/ozone/common/egl_util.h" #include "ui/ozone/common/gl_ozone_egl.h" @@ -206,6 +207,10 @@ class GLOzoneEGLHeadless : public GLOzoneEGL { protected: // GLOzoneEGL: gl::EGLDisplayPlatform GetNativeDisplay() override { + if (gl::g_driver_egl.client_ext.b_EGL_MESA_platform_surfaceless) { + return gl::EGLDisplayPlatform(EGL_DEFAULT_DISPLAY, + EGL_PLATFORM_SURFACELESS_MESA); + } return gl::EGLDisplayPlatform(EGL_DEFAULT_DISPLAY); } diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index 19744b093327aebc1103dac00731c221804c39c7..1a5a5558a7de648c6ac3c2da7ab1ecea3e489aae 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -166,6 +166,10 @@ gl::EGLDisplayPlatform GLOzoneEGLWayland::GetNativeDisplay() { if (connection_) return gl::EGLDisplayPlatform( reinterpret_cast<EGLNativeDisplayType>(connection_->display())); + if (gl::g_driver_egl.client_ext.b_EGL_MESA_platform_surfaceless) { + return gl::EGLDisplayPlatform(EGL_DEFAULT_DISPLAY, + EGL_PLATFORM_SURFACELESS_MESA); + } return gl::EGLDisplayPlatform(EGL_DEFAULT_DISPLAY); } diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py index 7700243b8e2ce2f31de04cae65bfe3d9b97b51c0..814014e28d006ce12c164481e2fefb6c5ffb0f12 100755 --- a/ui/gl/generate_bindings.py +++ b/ui/gl/generate_bindings.py @@ -2908,6 +2908,7 @@ EGL_CLIENT_EXTENSIONS_EXTRA = [ 'EGL_ANGLE_platform_angle_opengl', 'EGL_ANGLE_platform_angle_vulkan', 'EGL_EXT_platform_device', + 'EGL_EXT_platform_wayland', 'EGL_MESA_platform_surfaceless', ] diff --git a/ui/gl/gl_bindings_autogen_egl.cc b/ui/gl/gl_bindings_autogen_egl.cc index feecab860889b4ce45acef1b4b28562977e09c00..5cb491f2e134c8d974f09a2b5ccb9f37bd0e2118 100644 --- a/ui/gl/gl_bindings_autogen_egl.cc +++ b/ui/gl/gl_bindings_autogen_egl.cc @@ -286,6 +286,8 @@ void ClientExtensionsEGL::InitializeClientExtensionSettings() { gfx::HasExtension(extensions, "EGL_EXT_device_query"); b_EGL_EXT_platform_device = gfx::HasExtension(extensions, "EGL_EXT_platform_device"); + b_EGL_EXT_platform_wayland = + gfx::HasExtension(extensions, "EGL_EXT_platform_wayland"); b_EGL_KHR_debug = gfx::HasExtension(extensions, "EGL_KHR_debug"); b_EGL_MESA_platform_surfaceless = gfx::HasExtension(extensions, "EGL_MESA_platform_surfaceless"); diff --git a/ui/gl/gl_bindings_autogen_egl.h b/ui/gl/gl_bindings_autogen_egl.h index 93bd185c0dcaba8e97c6be9789be7747e70399bc..845aa2869ca2a300ef238e8a5ccdf669e4f7a545 100644 --- a/ui/gl/gl_bindings_autogen_egl.h +++ b/ui/gl/gl_bindings_autogen_egl.h @@ -368,6 +368,7 @@ struct GL_EXPORT ClientExtensionsEGL { bool b_EGL_EXT_device_enumeration; bool b_EGL_EXT_device_query; bool b_EGL_EXT_platform_device; + bool b_EGL_EXT_platform_wayland; bool b_EGL_KHR_debug; bool b_EGL_MESA_platform_surfaceless; diff --git a/ui/base/x/x11_gl_egl_utility.cc b/ui/base/x/x11_gl_egl_utility.cc index 27fee0281310af1e88d3cd7a76a45cb7731c7a79..461ad873e24a62bf7f61b2c8136fef3a634b1041 100644 --- a/ui/base/x/x11_gl_egl_utility.cc +++ b/ui/base/x/x11_gl_egl_utility.cc @@ -26,16 +26,6 @@ #define EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE 0x3487 #endif -#ifndef EGL_ANGLE_platform_angle -#define EGL_ANGLE_platform_angle 1 -#define EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE 0x348F -#endif /* EGL_ANGLE_platform_angle */ - -#ifndef EGL_EXT_platform_x11 -#define EGL_EXT_platform_x11 1 -#define EGL_PLATFORM_X11_EXT 0x31D5 -#endif /* EGL_EXT_platform_x11 */ - namespace ui { void GetPlatformExtraDisplayAttribs(EGLenum platform_type, @@ -50,8 +40,6 @@ void GetPlatformExtraDisplayAttribs(EGLenum platform_type, true, &visual_id, nullptr, nullptr, nullptr); attributes->push_back(EGL_X11_VISUAL_ID_ANGLE); attributes->push_back(static_cast<EGLAttrib>(visual_id)); - attributes->push_back(EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE); - attributes->push_back(EGL_PLATFORM_X11_EXT); } } diff --git a/ui/gl/gl_display.cc b/ui/gl/gl_display.cc index ce97bb0b98f79f990854133dbbd627ee635a1762..962e51d407a4e864ea0c14f47fa5d61148524c1e 100644 --- a/ui/gl/gl_display.cc +++ b/ui/gl/gl_display.cc @@ -178,6 +178,7 @@ std::vector<std::string> GetStringVectorFromCommandLine( } EGLDisplay GetPlatformANGLEDisplay( + EGLenum native_platform, EGLNativeDisplayType display, EGLenum platform_type, const std::vector<std::string>& enabled_features, @@ -188,6 +189,11 @@ EGLDisplay GetPlatformANGLEDisplay( display_attribs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE); display_attribs.push_back(static_cast<EGLAttrib>(platform_type)); + if (native_platform != 0) { + display_attribs.push_back(EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE); + display_attribs.push_back(native_platform); + } + if (platform_type == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE) { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(switches::kUseAdapterLuid)) { @@ -290,57 +296,64 @@ EGLDisplay GetDisplayFromType( extra_display_attribs.push_back(static_cast<EGLint>(display_key)); } EGLNativeDisplayType display = native_display.GetDisplay(); + EGLenum native_platform = native_display.GetPlatform(); switch (display_type) { case DEFAULT: case SWIFT_SHADER: { - if (native_display.GetPlatform() != 0) { - return eglGetPlatformDisplay(native_display.GetPlatform(), + if (native_platform != 0) { + return eglGetPlatformDisplay(native_platform, reinterpret_cast<void*>(display), nullptr); } return eglGetDisplay(display); } case ANGLE_D3D9: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_D3D11: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_D3D11_NULL: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back( EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_OPENGL: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_OPENGL_EGL: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_OPENGL_NULL: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back( EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_OPENGLES: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, enabled_angle_features, disabled_angle_features, extra_display_attribs); case ANGLE_OPENGLES_EGL: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, enabled_angle_features, disabled_angle_features, extra_display_attribs); case ANGLE_OPENGLES_NULL: @@ -348,56 +361,60 @@ EGLDisplay GetDisplayFromType( extra_display_attribs.push_back( EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, enabled_angle_features, disabled_angle_features, extra_display_attribs); case ANGLE_NULL: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_VULKAN: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_VULKAN_NULL: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back( EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_D3D11on12: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE); extra_display_attribs.push_back(EGL_TRUE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_SWIFTSHADER: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back( EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE); #if BUILDFLAG(IS_OZONE) #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(OZONE_PLATFORM_X11) - extra_display_attribs.push_back( - EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE); - extra_display_attribs.push_back( - EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE); + native_platform = EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE; #endif // BUILDFLAG(OZONE_PLATFORM_X11) #endif // BUILDFLAG(IS_OZONE) return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_METAL: return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); case ANGLE_METAL_NULL: extra_display_attribs.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); extra_display_attribs.push_back( EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); return GetPlatformANGLEDisplay( - display, EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE, enabled_angle_features, - disabled_angle_features, extra_display_attribs); + native_platform, display, EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE, + enabled_angle_features, disabled_angle_features, + extra_display_attribs); default: NOTREACHED(); return EGL_NO_DISPLAY; diff --git a/ui/ozone/platform/wayland/BUILD.gn b/ui/ozone/platform/wayland/BUILD.gn index 1edae9983ceb5684f54cec42c44d71f393985d39..ed49d33e4d037d8899537367efc351f1181e8258 100644 --- a/ui/ozone/platform/wayland/BUILD.gn +++ b/ui/ozone/platform/wayland/BUILD.gn @@ -39,8 +39,6 @@ source_set("wayland") { "gpu/wayland_buffer_manager_gpu.h", "gpu/wayland_canvas_surface.cc", "gpu/wayland_canvas_surface.h", - "gpu/wayland_gl_egl_utility.cc", - "gpu/wayland_gl_egl_utility.h", "gpu/wayland_overlay_candidates.cc", "gpu/wayland_overlay_candidates.h", "gpu/wayland_overlay_manager.cc", diff --git a/ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.cc b/ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.cc deleted file mode 100644 index b3e92d865383a338398d6dda24bbb5526bc17910..0000000000000000000000000000000000000000 --- a/ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.cc +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2021 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.h" - -#include "base/containers/contains.h" - -// From ANGLE's egl/eglext.h. Follows the same approach as in -// ui/gl/gl_surface_egl.cc -#ifndef EGL_ANGLE_platform_angle_device_type_swiftshader -#define EGL_ANGLE_platform_angle_device_type_swiftshader -#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE 0x3487 -#endif /* EGL_ANGLE_platform_angle_device_type_swiftshader */ - -#ifndef EGL_ANGLE_platform_angle -#define EGL_ANGLE_platform_angle 1 -#define EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE 0x348F -#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE 0x3209 -#endif /* EGL_ANGLE_platform_angle */ - -#ifndef EGL_ANGLE_platform_angle_vulkan -#define EGL_ANGLE_platform_angle_vulkan 1 -#define EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE 0x34A5 -#endif /* EGL_ANGLE_platform_angle_vulkan */ - -#ifndef EGL_ANGLE_platform_angle_device_type_egl_angle -#define EGL_ANGLE_platform_angle_device_type_egl_angle -#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE 0x348E -#endif /* EGL_ANGLE_platform_angle_device_type_egl_angle */ - -#ifndef EGL_ANGLE_platform_angle_opengl -#define EGL_ANGLE_platform_angle_opengl 1 -#define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x320D -#define EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE 0x320E -#endif /* EGL_ANGLE_platform_angle_opengl */ - -namespace ui { - -WaylandGLEGLUtility::WaylandGLEGLUtility() = default; - -WaylandGLEGLUtility::~WaylandGLEGLUtility() = default; - -void WaylandGLEGLUtility::GetAdditionalEGLAttributes( - EGLenum platform_type, - std::vector<EGLAttrib>* display_attributes) { - if (base::Contains(*display_attributes, - EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE)) { - display_attributes->push_back( - EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE); - display_attributes->push_back( - EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE); - return; - } - - if (std::find(display_attributes->begin(), display_attributes->end(), - EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE) != - display_attributes->end() || - std::find(display_attributes->begin(), display_attributes->end(), - EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE) != - display_attributes->end()) { - display_attributes->push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); - display_attributes->push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE); - return; - } -} - -void WaylandGLEGLUtility::ChooseEGLAlphaAndBufferSize(EGLint* alpha_size, - EGLint* buffer_size) {} - -bool WaylandGLEGLUtility::IsTransparentBackgroundSupported() const { - return true; -} - -void WaylandGLEGLUtility::CollectGpuExtraInfo( - bool enable_native_gpu_memory_buffers, - gfx::GpuExtraInfo& gpu_extra_info) const {} - -bool WaylandGLEGLUtility::X11DoesVisualHaveAlphaForTest() const { - return false; -} - -bool WaylandGLEGLUtility::HasVisualManager() { - return false; -} - -} // namespace ui diff --git a/ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.h b/ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.h deleted file mode 100644 index b99a5750ce9900970ed493ea7da901e6b462b6b3..0000000000000000000000000000000000000000 --- a/ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2021 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef UI_OZONE_PLATFORM_WAYLAND_GPU_WAYLAND_GL_EGL_UTILITY_H_ -#define UI_OZONE_PLATFORM_WAYLAND_GPU_WAYLAND_GL_EGL_UTILITY_H_ - -#include "ui/ozone/public/platform_gl_egl_utility.h" - -namespace ui { - -// Allows EGL to ask platforms for platform specific EGL attributes. -class WaylandGLEGLUtility : public PlatformGLEGLUtility { - public: - WaylandGLEGLUtility(); - ~WaylandGLEGLUtility() override; - WaylandGLEGLUtility(const WaylandGLEGLUtility& util) = delete; - WaylandGLEGLUtility& operator=(const WaylandGLEGLUtility& util) = delete; - - // PlatformGLEGLUtility overrides: - void GetAdditionalEGLAttributes( - EGLenum platform_type, - std::vector<EGLAttrib>* display_attributes) override; - void ChooseEGLAlphaAndBufferSize(EGLint* alpha_size, - EGLint* buffer_size) override; - bool IsTransparentBackgroundSupported() const override; - void CollectGpuExtraInfo(bool enable_native_gpu_memory_buffers, - gfx::GpuExtraInfo& gpu_extra_info) const override; - bool X11DoesVisualHaveAlphaForTest() const override; - bool HasVisualManager() override; -}; - -} // namespace ui - -#endif // UI_OZONE_PLATFORM_WAYLAND_GPU_WAYLAND_GL_EGL_UTILITY_H_ diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index 1a5a5558a7de648c6ac3c2da7ab1ecea3e489aae..bcd757c780548ef2a55c10a161059092e930eea6 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -163,9 +163,11 @@ scoped_refptr<gl::GLSurface> GLOzoneEGLWayland::CreateOffscreenGLSurface( } gl::EGLDisplayPlatform GLOzoneEGLWayland::GetNativeDisplay() { - if (connection_) + if (gl::g_driver_egl.client_ext.b_EGL_EXT_platform_wayland && connection_) { return gl::EGLDisplayPlatform( - reinterpret_cast<EGLNativeDisplayType>(connection_->display())); + reinterpret_cast<EGLNativeDisplayType>(connection_->display()), + EGL_PLATFORM_WAYLAND_EXT); + } if (gl::g_driver_egl.client_ext.b_EGL_MESA_platform_surfaceless) { return gl::EGLDisplayPlatform(EGL_DEFAULT_DISPLAY, EGL_PLATFORM_SURFACELESS_MESA); @@ -175,9 +177,6 @@ gl::EGLDisplayPlatform GLOzoneEGLWayland::GetNativeDisplay() { bool GLOzoneEGLWayland::LoadGLES2Bindings( const gl::GLImplementationParts& impl) { - // TODO: It may not be necessary to set this environment variable when using - // swiftshader. - setenv("EGL_PLATFORM", "wayland", 0); return LoadDefaultEGLGLES2Bindings(impl); } diff --git a/ui/ozone/platform/wayland/ozone_platform_wayland.cc b/ui/ozone/platform/wayland/ozone_platform_wayland.cc index 5e297268aa6bf8e228ddffd19707c20978b9ead0..e27fe09fc8e72d88349893385d02cd6d85f8b60f 100644 --- a/ui/ozone/platform/wayland/ozone_platform_wayland.cc +++ b/ui/ozone/platform/wayland/ozone_platform_wayland.cc @@ -35,7 +35,6 @@ #include "ui/ozone/common/features.h" #include "ui/ozone/platform/wayland/common/wayland_util.h" #include "ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h" -#include "ui/ozone/platform/wayland/gpu/wayland_gl_egl_utility.h" #include "ui/ozone/platform/wayland/gpu/wayland_overlay_manager.h" #include "ui/ozone/platform/wayland/gpu/wayland_surface_factory.h" #include "ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.h" @@ -170,12 +169,6 @@ class OzonePlatformWayland : public OzonePlatform, return connection_->clipboard(); } - PlatformGLEGLUtility* GetPlatformGLEGLUtility() override { - if (!gl_egl_utility_) - gl_egl_utility_ = std::make_unique<WaylandGLEGLUtility>(); - return gl_egl_utility_.get(); - } - std::unique_ptr<InputMethod> CreateInputMethod( ImeKeyEventDispatcher* ime_key_event_dispatcher, gfx::AcceleratedWidget widget) override { @@ -468,7 +461,6 @@ class OzonePlatformWayland : public OzonePlatform, // Objects, which solely live in the GPU process. std::unique_ptr<WaylandBufferManagerGpu> buffer_manager_; std::unique_ptr<WaylandOverlayManager> overlay_manager_; - std::unique_ptr<WaylandGLEGLUtility> gl_egl_utility_; // Provides supported buffer formats for native gpu memory buffers // framework. diff --git a/ui/ozone/platform/x11/x11_surface_factory.cc b/ui/ozone/platform/x11/x11_surface_factory.cc index 5e32b08c0a3f8c95d9a6861680b8cf41d9fdedd6..6f244c444adf839fee7da6533d892bc3cd3afad3 100644 --- a/ui/ozone/platform/x11/x11_surface_factory.cc +++ b/ui/ozone/platform/x11/x11_surface_factory.cc @@ -138,8 +138,10 @@ class GLOzoneEGLX11 : public GLOzoneEGL { protected: // GLOzoneEGL: gl::EGLDisplayPlatform GetNativeDisplay() override { - return gl::EGLDisplayPlatform(reinterpret_cast<EGLNativeDisplayType>( - x11::Connection::Get()->GetXlibDisplay().display())); + return gl::EGLDisplayPlatform( + reinterpret_cast<EGLNativeDisplayType>( + x11::Connection::Get()->GetXlibDisplay().display()), + EGL_PLATFORM_X11_EXT); } bool LoadGLES2Bindings( diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc index e122255a4e94c6469e00e09ff10ec41788f23998..99a0502bc6e8459a78aa4dc7709b1a66936134f9 100644 --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc @@ -195,10 +195,11 @@ uint64_t CHROME_LUID_to_uint64_t(const CHROME_LUID& luid) { } #endif // BUILDFLAG(IS_WIN) -#if defined(USE_EGL) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)) -// GPU picking is only effective with ANGLE/Metal backend on Mac and -// on Windows with EGL. -// Returns the default GPU's system_device_id. +#if defined(USE_EGL) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ + (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS))) +// GPU picking is only effective with Mac with ANGLE/Metal, Windows with +// ANGLE/D3D11 and Linux with ANGLE/Vulkan or ANGLE/GL. Returns the default +// GPU's system_device_id. void SetupGLDisplayManagerEGL(const GPUInfo& gpu_info, const GpuFeatureInfo& gpu_feature_info) { const GPUInfo::GPUDevice* gpu_high_perf = @@ -214,7 +215,7 @@ void SetupGLDisplayManagerEGL(const GPUInfo& gpu_info, gpu_low_power ? CHROME_LUID_to_uint64_t(gpu_low_power->luid) : 0; uint64_t system_device_id_default = CHROME_LUID_to_uint64_t(gpu_default->luid); -#else // IS_MAC +#else // BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) const GPUInfo::GPUDevice* gpu_default = gpu_low_power ? gpu_low_power : &(gpu_info.gpu); uint64_t system_device_id_high_perf = @@ -311,9 +312,10 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, gpu_feature_info_ = ComputeGpuFeatureInfo(gpu_info_, gpu_preferences_, command_line, &needs_more_info); -#if defined(USE_EGL) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)) +#if defined(USE_EGL) && \ + (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)) SetupGLDisplayManagerEGL(gpu_info_, gpu_feature_info_); -#endif // USE_EGL && (IS_WIN || IS_MAC) +#endif // USE_EGL && (IS_WIN || IS_MAC || IS_LINUX) #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CASTOS) gpu_info_.in_process_gpu = false; diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc index cdce6ae0d34db99eb4441c4e06dc32366659ace0..7f6f943e9846eac17edb8c643c221b13297d3400 100644 --- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc +++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc @@ -8,12 +8,15 @@ #include <gbm.h> #include <string.h> #include <sys/stat.h> +#include <sys/sysmacros.h> #include <sys/types.h> #include <unistd.h> #include "base/files/scoped_file.h" #include "base/strings/stringprintf.h" #include "ui/gfx/linux/scoped_gbm_device.h" // nogncheck +#include "ui/gl/gl_display_manager.h" +#include "ui/gl/gpu_preference.h" namespace ui { @@ -41,6 +44,25 @@ base::FilePath DrmRenderNodePathFinder::GetDrmRenderNodePath() const { } void DrmRenderNodePathFinder::FindDrmRenderNodePath() { + dev_t system_device_id = static_cast<dev_t>( + gl::GLDisplayManagerEGL::GetInstance()->GetSystemDeviceId( + gl::GpuPreference::kDefault)); + if (system_device_id != 0) { + // If GPU info discovery selected a specific render node, try using that + // first. + std::string dri_render_node( + base::StringPrintf(kDriRenderNodeTemplate, minor(system_device_id))); + base::ScopedFD drm_fd(open(dri_render_node.c_str(), O_RDWR)); + if (drm_fd.get() >= 0) { + // Check if GBM actually supports the device. + ScopedGbmDevice device(gbm_create_device(drm_fd.get())); + if (device) { + drm_render_node_path_ = base::FilePath(dri_render_node); + return; + } + } + } + for (uint32_t i = kRenderNodeStart; i < kRenderNodeEnd; i++) { /* First, look in sysfs and skip if this is the vgem render node. */ std::string node_link( diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc index 8fbe54453cf26281ba302a7176ad2559cc03bfc7..77d270596b6398312135903dda6575e6578bcbed 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc @@ -1376,6 +1376,13 @@ void GpuDataManagerImplPrivate::UpdateGpuPreferences( gpu_preferences->message_pump_type = ui::OzonePlatform::GetInstance() ->GetPlatformProperties() .message_pump_type_for_gpu; +#if BUILDFLAG(IS_LINUX) + // On Linux, the GPU sandbox should always be initialized early if the Ozone + // backend reports that GPU sandboxing is supported. + gpu_preferences->gpu_sandbox_start_early = ui::OzonePlatform::GetInstance() + ->GetPlatformProperties() + .supports_gpu_sandboxing; +#endif #endif #if BUILDFLAG(ENABLE_VULKAN) diff --git a/content/gpu/gpu_sandbox_hook_linux.cc b/content/gpu/gpu_sandbox_hook_linux.cc index 37a4748e746c3e5c210033df382a73301b7c0bec..e7fcc360db5f5855d1b7997f7fe5217d11444416 100644 --- a/content/gpu/gpu_sandbox_hook_linux.cc +++ b/content/gpu/gpu_sandbox_hook_linux.cc @@ -48,6 +48,9 @@ using sandbox::syscall_broker::BrokerProcess; namespace content { namespace { +// The major number of DRM devices is always 226 on Linux. +constexpr int kDrmMajor = 226; + inline bool IsChromeOS() { // TODO(b/206464999): for now, we're making the LaCrOS and Ash GPU sandboxes // behave similarly. However, the LaCrOS GPU sandbox could probably be made @@ -227,28 +230,21 @@ void AddImgPvrGpuPermissions(std::vector<BrokerFilePermission>* permissions) { } void AddDrmGpuDevPermissions(std::vector<BrokerFilePermission>* permissions, - const std::string& path) { - struct stat st; - - if (stat(path.c_str(), &st) == 0) { - permissions->push_back(BrokerFilePermission::ReadWrite(path)); - - uint32_t major = (static_cast<uint32_t>(st.st_rdev) >> 8) & 0xff; - uint32_t minor = static_cast<uint32_t>(st.st_rdev) & 0xff; - std::string char_device_path = - base::StringPrintf("/sys/dev/char/%u:%u/", major, minor); - permissions->push_back( - BrokerFilePermission::ReadOnlyRecursive(char_device_path)); - } + const char* format, + int minor) { + permissions->push_back( + BrokerFilePermission::ReadWrite(base::StringPrintf(format, minor))); + std::string char_device_path = + base::StringPrintf("/sys/dev/char/%d:%d/", kDrmMajor, minor); + permissions->push_back( + BrokerFilePermission::ReadOnlyRecursive(char_device_path)); } void AddDrmGpuPermissions(std::vector<BrokerFilePermission>* permissions) { permissions->push_back(BrokerFilePermission::ReadOnly("/dev/dri")); - for (int i = 0; i <= 9; ++i) { - AddDrmGpuDevPermissions(permissions, - base::StringPrintf("/dev/dri/card%d", i)); - AddDrmGpuDevPermissions(permissions, - base::StringPrintf("/dev/dri/renderD%d", i + 128)); + for (int i = 0; i < 16; ++i) { + AddDrmGpuDevPermissions(permissions, "/dev/dri/card%d", i); + AddDrmGpuDevPermissions(permissions, "/dev/dri/renderD%d", i + 128); } } @@ -293,7 +289,7 @@ void AddAmdGpuPermissions(std::vector<BrokerFilePermission>* permissions) { } } -void AddNvidiaGpuPermissions(std::vector<BrokerFilePermission>* permissions) { +void AddNouveauGpuPermissions(std::vector<BrokerFilePermission>* permissions) { static const char* const kReadOnlyList[] = { // To support threads in mesa we use --gpu-sandbox-start-early and // that requires the following libs and files to be accessible. @@ -432,24 +428,16 @@ void AddChromecastArmGpuPermissions( } } -void AddVulkanICDPermissions(std::vector<BrokerFilePermission>* permissions) { - static const char* const kReadOnlyICDPrefixes[] = {"/usr/share/vulkan/icd.d", - "/etc/vulkan/icd.d"}; +void AddVulkanFilePermissions(std::vector<BrokerFilePermission>* permissions) { + static const char* const kReadOnlyDirsList[] = {"/usr/share/vulkan/", + "/etc/vulkan/"}; - static const char* const kReadOnlyICDList[] = { - "intel_icd.x86_64.json", "nvidia_icd.json", "radeon_icd.x86_64.json"}; - - for (std::string prefix : kReadOnlyICDPrefixes) { - permissions->push_back(BrokerFilePermission::ReadOnly(prefix)); - for (const char* json : kReadOnlyICDList) { - permissions->push_back( - BrokerFilePermission::ReadOnly(prefix + "/" + json)); - } + for (std::string prefix : kReadOnlyDirsList) { + permissions->push_back(BrokerFilePermission::ReadOnlyRecursive(prefix)); } } -void AddStandardGpuPermissions(std::vector<BrokerFilePermission>* permissions) { - static const char kDriCardBasePath[] = "/dev/dri/card"; +void AddNvidiaGpuPermissions(std::vector<BrokerFilePermission>* permissions) { static const char kNvidiaCtlPath[] = "/dev/nvidiactl"; static const char kNvidiaDeviceBasePath[] = "/dev/nvidia"; static const char kNvidiaDeviceModeSetPath[] = "/dev/nvidia-modeset"; @@ -459,12 +447,6 @@ void AddStandardGpuPermissions(std::vector<BrokerFilePermission>* permissions) { permissions->push_back( BrokerFilePermission::ReadWriteCreateTemporaryRecursive(kDevShm)); - // For DRI cards. - for (int i = 0; i <= 9; ++i) { - permissions->push_back(BrokerFilePermission::ReadWrite( - base::StringPrintf("%s%d", kDriCardBasePath, i))); - } - // For Nvidia GLX driver. permissions->push_back(BrokerFilePermission::ReadWrite(kNvidiaCtlPath)); for (int i = 0; i < 10; ++i) { @@ -474,16 +456,56 @@ void AddStandardGpuPermissions(std::vector<BrokerFilePermission>* permissions) { permissions->push_back( BrokerFilePermission::ReadWrite(kNvidiaDeviceModeSetPath)); permissions->push_back(BrokerFilePermission::ReadOnly(kNvidiaParamsPath)); +} - // For SwiftShader - base::FilePath module_path; - if (base::PathService::Get(base::DIR_MODULE, &module_path)) { - std::string sw_path = - module_path.Append("libvk_swiftshader.so").MaybeAsASCII(); - if (!sw_path.empty()) { - permissions->push_back(BrokerFilePermission::ReadOnly(sw_path)); +void AddLinuxGenericGpuPermissions( + std::vector<BrokerFilePermission>* permissions) { + static const char* const kReadOnlyList[] = { + // Device-related parts of sysfs + "/sys", + "/sys/bus", + "/sys/bus/", + "/sys/class", + "/sys/class/", + "/sys/dev", + "/sys/dev/", + "/sys/devices", + "/sys/devices/", + + // Dynamic linker library path resolution cache + "/etc/ld.so.cache", + + // All system library paths (Arch Linux puts 32-bit libraries in + // /usr/lib32) + "/lib/", + "/lib32/", + "/lib64/", + "/usr/lib/", + "/usr/lib32/", + "/usr/lib64/", + + // libglvnd ICD metadata + "/usr/share/glvnd/", + + // NixOS + "/nix/", + "/run/opengl-driver/", + }; + for (const char* item : kReadOnlyList) { + if (item[strlen(item) - 1] == '/') { + permissions->push_back(BrokerFilePermission::ReadOnlyRecursive(item)); + } else { + permissions->push_back(BrokerFilePermission::ReadOnly(item)); } } + + // For bundled libraries that lives inside the Chromium directory that will be + // loaded at runtime (e.g. ANGLE, libvulkan). + base::FilePath module_dir; + if (base::PathService::Get(base::DIR_MODULE, &module_dir)) { + permissions->push_back( + BrokerFilePermission::ReadOnlyRecursive(module_dir.value() + '/')); + } } std::vector<BrokerFilePermission> FilePermissionsForGpu( @@ -493,7 +515,7 @@ std::vector<BrokerFilePermission> FilePermissionsForGpu( std::vector<BrokerFilePermission> permissions = { BrokerFilePermission::ReadOnly(kDriRcPath)}; - AddVulkanICDPermissions(&permissions); + AddVulkanFilePermissions(&permissions); if (IsChromeOS()) { // Permissions are additive, there can be multiple GPUs in the system. @@ -514,8 +536,7 @@ std::vector<BrokerFilePermission> FilePermissionsForGpu( AddIntelGpuPermissions(&permissions); } if (options.use_nvidia_specific_policies) { - AddStandardGpuPermissions(&permissions); - AddNvidiaGpuPermissions(&permissions); + AddNouveauGpuPermissions(&permissions); } if (options.use_virtio_specific_policies) { AddVirtIOGpuPermissions(&permissions); @@ -533,7 +554,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGpu( } } - AddStandardGpuPermissions(&permissions); + AddLinuxGenericGpuPermissions(&permissions); + AddDrmGpuPermissions(&permissions); + AddNvidiaGpuPermissions(&permissions); + return permissions; } @@ -687,13 +711,7 @@ sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU( command_set.set(sandbox::syscall_broker::COMMAND_ACCESS); command_set.set(sandbox::syscall_broker::COMMAND_OPEN); command_set.set(sandbox::syscall_broker::COMMAND_STAT); - if (IsChromeOS() && - (options.use_amd_specific_policies || - options.use_intel_specific_policies || - options.use_nvidia_specific_policies || - options.use_virtio_specific_policies || IsArchitectureArm())) { - command_set.set(sandbox::syscall_broker::COMMAND_READLINK); - } + command_set.set(sandbox::syscall_broker::COMMAND_READLINK); return command_set; } @@ -713,8 +731,14 @@ bool GpuProcessPreSandboxHook(sandbox::policy::SandboxLinux::Options options) { CommandSetForGPU(options), FilePermissionsForGpu(options), base::BindOnce(BrokerProcessPreSandboxHook), options); - if (!LoadLibrariesForGpu(options)) - return false; + if (IsChromeOS() || UseChromecastSandboxAllowlist()) { + if (!LoadLibrariesForGpu(options)) { + return false; + } + } + + // We don't need to preload libraries on desktop Linux since every system + // library paths should be whitelisted. // TODO(tsepez): enable namspace sandbox here once crashes are understood. diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc index 99a0502bc6e8459a78aa4dc7709b1a66936134f9..c8bd2d19b94b14b596ce0da3c089bcc328ef66a2 100644 --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc @@ -766,10 +766,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, UMA_HISTOGRAM_ENUMERATION("GPU.GLImplementation", gl::GetGLImplementation()); + // On Linux, the GPU sandbox is either started early or not at all. +#if !BUILDFLAG(IS_LINUX) if (!gpu_info_.sandboxed && !attempted_startsandbox) { gpu_info_.sandboxed = sandbox_helper_->EnsureSandboxInitialized( watchdog_thread_.get(), &gpu_info_, gpu_preferences_); } +#endif init_successful_ = true; #if BUILDFLAG(IS_OZONE) diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc index 790b65c5870a5ee91ada250f26dac164628d22b2..74ebad4c3f70e11f643283884623a6111c56d890 100644 --- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc @@ -418,8 +418,11 @@ intptr_t SIGSYSSchedHandler(const struct arch_seccomp_data& args, static_cast<intptr_t>(args.args[3]), static_cast<intptr_t>(args.args[4]), static_cast<intptr_t>(args.args[5])); + } else { + // Mesa will try to use sched_setscheduler on its worker threads from + // the main thread. Nothing we can do about it, so return -EPERM. + return -EPERM; } - break; } CrashSIGSYS_Handler(args, aux); diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc b/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc index cc6a1f86c29e641249a399f278c114c6d23453be..4af436c5a879055e04225f558a66a8012bcdd7a1 100644 --- a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc +++ b/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc @@ -215,13 +215,11 @@ BPF_TEST_C(ParameterRestrictions, getparam_thread.Stop(); } -BPF_DEATH_TEST_C(ParameterRestrictions, - sched_getparam_crash_non_zero, - DEATH_SEGV_MESSAGE(sandbox::GetErrorMessageContentForTests()), - RestrictSchedPolicy) { +BPF_TEST_C(ParameterRestrictions, sched_getparam_denied, RestrictSchedPolicy) { const pid_t kInitPID = 1; struct sched_param param; sched_getparam(kInitPID, ¶m); + BPF_ASSERT_EQ(EPERM, errno); } class RestrictPrlimit64Policy : public bpf_dsl::Policy { diff --git a/sandbox/policy/linux/bpf_gpu_policy_linux.cc b/sandbox/policy/linux/bpf_gpu_policy_linux.cc index 35ccbb7a7f82b13164a2e30a04a35a5c0ed76138..503e8ff673e7b355e7974b0bf375a90f8611ccac 100644 --- a/sandbox/policy/linux/bpf_gpu_policy_linux.cc +++ b/sandbox/policy/linux/bpf_gpu_policy_linux.cc @@ -94,6 +94,8 @@ ResultExpr GpuProcessPolicy::EvaluateSyscall(int sysno) const { case __NR_uname: // https://crbug.com/1075934 return Allow(); case __NR_sched_setaffinity: + case __NR_sched_setparam: + case __NR_sched_setscheduler: return RestrictSchedTarget(GetPolicyPid(), sysno); case __NR_prlimit64: return RestrictPrlimit64(GetPolicyPid()); diff --git a/ui/ozone/platform/headless/ozone_platform_headless.cc b/ui/ozone/platform/headless/ozone_platform_headless.cc index 6cb2f0312d393e8e5c5984ec16564a562fee60ff..68df75442625c68468bc85d7bb425a3dc45aa252 100644 --- a/ui/ozone/platform/headless/ozone_platform_headless.cc +++ b/ui/ozone/platform/headless/ozone_platform_headless.cc @@ -107,6 +107,9 @@ class OzonePlatformHeadless : public OzonePlatform { static base::NoDestructor<OzonePlatform::PlatformProperties> properties; static bool initialized = false; if (!initialized) { + // The GPU process on Ozone/Headless doesn't need a display server, so + // enable GPU sandboxing. + properties->supports_gpu_sandboxing = true; initialized = true; } return *properties; diff --git a/ui/ozone/platform/wayland/ozone_platform_wayland.cc b/ui/ozone/platform/wayland/ozone_platform_wayland.cc index e27fe09fc8e72d88349893385d02cd6d85f8b60f..06ee0c775a6430954b7056bda00ae516b1e241f4 100644 --- a/ui/ozone/platform/wayland/ozone_platform_wayland.cc +++ b/ui/ozone/platform/wayland/ozone_platform_wayland.cc @@ -313,6 +313,12 @@ class OzonePlatformWayland : public OzonePlatform, // arbitrary position. properties->supports_global_screen_coordinates = kDefaultScreenCoordinateEnabled; + +#if BUILDFLAG(IS_LINUX) + // The GPU process on Ozone/Wayland does not need to connect to a display + // server to function, so enable GPU sandboxing. + properties->supports_gpu_sandboxing = true; +#endif initialised = true; } diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h index ecd2e8bd35e31e9965d1bc3eaead3d1f89beecd7..94e8499f454ebe0131a266b4ecd9b5aece6daa47 100644 --- a/ui/ozone/public/ozone_platform.h +++ b/ui/ozone/public/ozone_platform.h @@ -143,6 +143,11 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform { // Indicates that the platform allows client applications to manipulate // global screen coordinates. Wayland, for example, disallow it by design. bool supports_global_screen_coordinates = true; + +#if BUILDFLAG(IS_LINUX) + // Indicates that the platform supports GPU process sandboxing. + bool supports_gpu_sandboxing = false; +#endif }; // Groups platform properties that can only be known at run time. diff --git a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc index 4483f191516e2d1a98a202580edbde603a70237f..0dc9340bf7dba996f042d78dbe8dc6d894b4d4b3 100644 --- a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc +++ b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc @@ -138,7 +138,10 @@ void WaylandToplevelWindow::DispatchHostWindowDragMovement( shell_toplevel_->SurfaceResize(connection(), hittest); connection()->Flush(); +#if !BUILDFLAG(IS_CHROMEOS_LACROS) + // TODO(crbug.com/1454893): Revisit to resolve the correct impl. connection()->event_source()->ResetPointerFlags(); +#endif } void WaylandToplevelWindow::Show(bool inactive) { diff --git a/components/variations/service/BUILD.gn b/components/variations/service/BUILD.gn index 06b12890ff2c2981f1915c03444027304c9b01ad..d27645112f7f159168c7a2a5af0c1bde7b8cf631 100644 --- a/components/variations/service/BUILD.gn +++ b/components/variations/service/BUILD.gn @@ -12,7 +12,7 @@ declare_args() { # Note: For Chrome-branded Android builds, this is always considered as set to # true (see below). This is done to avoid the binary size impact (~40 KiB) on # Android. - disable_fieldtrial_testing_config = false + disable_fieldtrial_testing_config = true # Set to true to make a build that force enables activation of field trial # tests specified in testing/variations/fieldtrial_testing_config.json. diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index bcd757c780548ef2a55c10a161059092e930eea6..08270311925eeaaa10b56fd9d5819914083e1521 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -203,9 +203,7 @@ WaylandSurfaceFactory::GetAllowedGLImplementations() { if (egl_implementation_) { // Add only supported ANGLE implementations. Otherwise, angle-vulkan might // be requested, which is not supported with this backend yet. - impls.emplace_back(gl::ANGLEImplementation::kOpenGL); - impls.emplace_back(gl::ANGLEImplementation::kOpenGLES); - impls.emplace_back(gl::ANGLEImplementation::kSwiftShader); + impls.emplace_back(gl::kGLImplementationEGLANGLE); impls.emplace_back(gl::kGLImplementationEGLGLES2); } return impls; diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index ad7921bec9201897597855980092e9a108c8798e..d9f952cca638d6fef65cc01f741164ce742c0c3c 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -4567,7 +4567,13 @@ const FeatureEntry kFeatureEntries[] = { blink::switches::kDisableZeroCopy)}, {"enable-vulkan", flag_descriptions::kEnableVulkanName, flag_descriptions::kEnableVulkanDescription, - kOsWin | kOsLinux | kOsAndroid, FEATURE_VALUE_TYPE(features::kVulkan)}, + kOsWin | kOsLinux | kOsAndroid, +#if BUILDFLAG(IS_LINUX) + FEATURE_VALUE_TYPE(features::kDefaultANGLEVulkan) +#else + FEATURE_VALUE_TYPE(features::kVulkan) +#endif + }, #if BUILDFLAG(IS_ANDROID) {"translate-assist-content", flag_descriptions::kTranslateAssistContentName, flag_descriptions::kTranslateAssistContentDescription, kOsAndroid, diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc index eb8057834e27f2f454995dac212db79ed1483eab..c1b176a959815b650257e49b4419c3b9093126ff 100644 --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc @@ -239,7 +239,7 @@ BASE_FEATURE(kVaapiWebPImageDecodeAcceleration, // Note Android WebView uses kWebViewVulkan instead of this. BASE_FEATURE(kVulkan, "Vulkan", -#if BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc index 37fc7451e3466453a54e3074ab1fa04ae2aa47b3..33315a0351956e4c5219ff5fbf6beae4de91bc73 100644 --- a/ui/gl/gl_switches.cc +++ b/ui/gl/gl_switches.cc @@ -246,7 +246,12 @@ BASE_FEATURE(kDefaultANGLEMetal, // Default to using ANGLE's Vulkan backend. BASE_FEATURE(kDefaultANGLEVulkan, "DefaultANGLEVulkan", - base::FEATURE_DISABLED_BY_DEFAULT); +#if BUILDFLAG(IS_LINUX) + base::FEATURE_ENABLED_BY_DEFAULT +#else + base::FEATURE_DISABLED_BY_DEFAULT +#endif +); // Track current program's shaders at glUseProgram() call for crash report // purpose. Only effective on Windows because the attached shaders may only @@ -258,7 +263,12 @@ BASE_FEATURE(kTrackCurrentShaders, // Enable sharing Vulkan device queue with ANGLE's Vulkan backend. BASE_FEATURE(kVulkanFromANGLE, "VulkanFromANGLE", - base::FEATURE_DISABLED_BY_DEFAULT); +#if BUILDFLAG(IS_LINUX) + base::FEATURE_ENABLED_BY_DEFAULT +#else + base::FEATURE_DISABLED_BY_DEFAULT +#endif +); bool IsDefaultANGLEVulkan() { #if defined(MEMORY_SANITIZER) diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index d9f952cca638d6fef65cc01f741164ce742c0c3c..b333596afaf14aab89951a7f8211a55fb5af7441 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -10650,6 +10650,14 @@ const FeatureEntry kFeatureEntries[] = { ORIGIN_LIST_VALUE_TYPE(privacy_sandbox::kPrivacySandboxEnrollmentOverrides, "")}, +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + {"vulkan-force-ycbcr-linear-sampling", + flag_descriptions::kVulkanForceYCbCrLinearSamplingName, + flag_descriptions::kVulkanForceYCbCrLinearSamplingDescription, + kOsLinux | kOsCrOS | kOsLacros, + SINGLE_VALUE_TYPE(switches::kVulkanForceYCbCrLinearSampling)}, +#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 7f126b9eaa4f759a82bdf7025f07afdd548370a7..6d6fe8ac4e79524fa26bbaa17d21c22625506c98 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc @@ -7330,6 +7330,14 @@ const char kEnableAudioFocusEnforcementDescription[] = "any one time. Requires #enable-media-session-service to be enabled too."; #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +const char kVulkanForceYCbCrLinearSamplingName[] = + "Vulkan: Force linear sampling for YUV"; +const char kVulkanForceYCbCrLinearSamplingDescription[] = + "Force usage of YUV linear sampling on Vulkan even if it's not reported" + " as supported by the graphics driver"; +#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + // ============================================================================ // Don't just add flags to the end, put them in the right section in // alphabetical order just like the header file. diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 75c09e92b052716f80f8a09709359ccb4b367c02..051b22536b25623025b36c656fc783da5c38bdee 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h @@ -4234,6 +4234,11 @@ extern const char kEnableAudioFocusEnforcementName[]; extern const char kEnableAudioFocusEnforcementDescription[]; #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +extern const char kVulkanForceYCbCrLinearSamplingName[]; +extern const char kVulkanForceYCbCrLinearSamplingDescription[]; +#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + // ============================================================================ // Don't just add flags to the end, put them in the right section in // alphabetical order. See top instructions for more. diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc index b7df289e4546fd5d33266223f4b678c1ab0e26e2..1fcf56580f4a2ea2301531f1914dcc60182dec1d 100644 --- a/content/browser/gpu/gpu_process_host.cc +++ b/content/browser/gpu/gpu_process_host.cc @@ -272,6 +272,7 @@ static const char* const kSwitchNames[] = { switches::kUseGpuInTests, switches::kV, switches::kVModule, + switches::kVulkanForceYCbCrLinearSampling, switches::kWatchDirForScrollJankReport, switches::kWebViewDrawFunctorUsesVulkan, #if BUILDFLAG(IS_MAC) diff --git a/gpu/command_buffer/service/skia_utils.cc b/gpu/command_buffer/service/skia_utils.cc index 385ebe8c3aac84cbaf81daab9265f845f580ba3e..0e9d44a9e9951860a56446225ab97476cded886c 100644 --- a/gpu/command_buffer/service/skia_utils.cc +++ b/gpu/command_buffer/service/skia_utils.cc @@ -352,6 +352,12 @@ GrVkYcbcrConversionInfo CreateGrVkYcbcrConversionInfo( : format_props.optimalTilingFeatures; } + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kVulkanForceYCbCrLinearSampling)) { + format_features |= + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT; + } + // As per the spec here [1], if the format does not support // VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, // chromaFilter must be VK_FILTER_NEAREST. diff --git a/gpu/config/gpu_switches.cc b/gpu/config/gpu_switches.cc index 2ec6ab786d849c5e33632dd7e5b80fd0463c3fb5..443b84714efdaaabde0147006b2809bd7fd9fa8d 100644 --- a/gpu/config/gpu_switches.cc +++ b/gpu/config/gpu_switches.cc @@ -139,4 +139,9 @@ const char kSkiaGraphiteBackend[] = "skia-graphite-backend"; const char kSkiaGraphiteBackendDawn[] = "dawn"; const char kSkiaGraphiteBackendMetal[] = "metal"; +// Forces linear sampling for YCbCr conversion on Vulkan regardless of +// whether the driver reports it as supported. +const char kVulkanForceYCbCrLinearSampling[] = + "vulkan-force-ycbcr-linear-sampling"; + } // namespace switches diff --git a/gpu/config/gpu_switches.h b/gpu/config/gpu_switches.h index 72e6c21f002183f0579525081153b9ce85f69027..f65e275d548d96490a6ac2e43dfade4ded122922 100644 --- a/gpu/config/gpu_switches.h +++ b/gpu/config/gpu_switches.h @@ -45,6 +45,7 @@ GPU_EXPORT extern const char kForceSeparateEGLDisplayForWebGLTesting[]; GPU_EXPORT extern const char kSkiaGraphiteBackend[]; GPU_EXPORT extern const char kSkiaGraphiteBackendDawn[]; GPU_EXPORT extern const char kSkiaGraphiteBackendMetal[]; +GPU_EXPORT extern const char kVulkanForceYCbCrLinearSampling[]; } // namespace switches diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc index c1b176a959815b650257e49b4419c3b9093126ff..eee3f23577734e2ddffd2ccdfc309b40f1ff1b3c 100644 --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc @@ -267,7 +267,8 @@ BASE_FEATURE(kEnableDrDcVulkan, // Enable WebGPU on gpu service side only. This is used with origin trial and // enabled by default on supported platforms. -#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS_ASH) || \ + BUILDFLAG(IS_LINUX) #define WEBGPU_ENABLED base::FEATURE_ENABLED_BY_DEFAULT #else #define WEBGPU_ENABLED base::FEATURE_DISABLED_BY_DEFAULT diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index 4e01a20c97d85707429352dd4fc5d2ccadff3846..8e8e257bceee5e5172326c880300866780b73788 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc @@ -1837,7 +1837,8 @@ WebGPUDecoderImpl::AssociateMailboxDawn( return nullptr; } -#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_APPLE) +#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_APPLE) && \ + !BUILDFLAG(IS_LINUX) if (usage & WGPUTextureUsage_StorageBinding) { DLOG(ERROR) << "AssociateMailbox: WGPUTextureUsage_StorageBinding is NOT " "supported yet."; diff --git a/ui/linux/linux_ui_factory.cc b/ui/linux/linux_ui_factory.cc index 5555ff3bf21f43a34c123827eaab46f4467a540b..0f29a8bc60de1334ca467eed1a528980f0973d15 100644 --- a/ui/linux/linux_ui_factory.cc +++ b/ui/linux/linux_ui_factory.cc @@ -127,7 +127,7 @@ LinuxUiAndTheme* GetDefaultLinuxUiAndTheme() { } // namespace -BASE_FEATURE(kAllowQt, "AllowQt", base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kAllowQt, "AllowQt", base::FEATURE_DISABLED_BY_DEFAULT); LinuxUi* GetDefaultLinuxUi() { auto* linux_ui = GetDefaultLinuxUiAndTheme(); diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 44e44d4952a1449bad61105031aa2123b41c114d..240d388c4516a25d8ef389bf2d578e8d3c79fee3 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp @@ -202,31 +202,9 @@ Theme </message> </if> - <if expr="is_linux"> - <message name="IDS_SETTINGS_GTK_THEME" desc="Text of the label describing the system (GTK) browser theme on Linux"> - GTK - </message> - <message name="IDS_SETTINGS_USE_GTK_THEME" desc="Text of the button that switches the browser theme to the system (GTK) theme on Linux"> - Use GTK - </message> - <message name="IDS_SETTINGS_QT_THEME" desc="Text of the label describing the system (QT) browser theme on Linux"> - QT - </message> - <message name="IDS_SETTINGS_USE_QT_THEME" desc="Text of the button that switches the browser theme to the system (QT) theme on Linux"> - Use QT - </message> - <message name="IDS_SETTINGS_CLASSIC_THEME" desc="Text of the label describing the classic browser theme on Linux"> - Classic - </message> - <message name="IDS_SETTINGS_USE_CLASSIC_THEME" desc="Text of the button that switches the browser theme to the classic theme on Linux"> - Use Classic - </message> - </if> - <if expr="not is_linux or is_chromeos or is_fuchsia"> - <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme."> - Reset to default - </message> - </if> + <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme."> + Reset to default + </message> <message name="IDS_SETTINGS_CHROME_COLORS" desc="Text of the label describing 'Chrome Colors' theme."> Chrome Colors </message> diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc index 0e684543447052f4d5ab5c5a3774f0d07bd44b82..b39a9a3f6669384169c447c34afd46f9ee0488bb 100644 --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc @@ -207,12 +207,6 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { settings_api::PrefType::PREF_TYPE_STRING; (*s_allowlist)[::prefs::kPolicyThemeColor] = settings_api::PrefType::PREF_TYPE_NUMBER; -#if BUILDFLAG(IS_LINUX) - (*s_allowlist)[::prefs::kUsesSystemThemeDeprecated] = - settings_api::PrefType::PREF_TYPE_BOOLEAN; - (*s_allowlist)[::prefs::kSystemTheme] = - settings_api::PrefType::PREF_TYPE_NUMBER; -#endif (*s_allowlist)[::prefs::kHomePage] = settings_api::PrefType::PREF_TYPE_URL; (*s_allowlist)[::prefs::kHomePageIsNewTabPage] = settings_api::PrefType::PREF_TYPE_BOOLEAN; diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index af2d036f0b354af7b9e018325c2ec2d1a9da8fdb..74c6c4e62f9ed9c28974e12e2d26df387e04ac74 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc @@ -1103,11 +1103,6 @@ void RegisterProfilePrefsForMigration( registry->RegisterIntegerPref(kProfileAvatarTutorialShown, 0); #endif -#if BUILDFLAG(IS_LINUX) - // Deprecated 08/2022. - registry->RegisterBooleanPref(prefs::kUsesSystemThemeDeprecated, false); -#endif - // Deprecated 09/2022 registry->RegisterBooleanPref(kPrivacySandboxFirstPartySetsDataAccessAllowed, true); @@ -2185,19 +2180,6 @@ void MigrateObsoleteProfilePrefs(Profile* profile) { profile_prefs->ClearPref(kProfileAvatarTutorialShown); #endif -#if BUILDFLAG(IS_LINUX) - // Added 08/2022. - if (profile_prefs->HasPrefPath(prefs::kUsesSystemThemeDeprecated)) { - auto migrated_theme = - profile_prefs->GetBoolean(prefs::kUsesSystemThemeDeprecated) - ? ui::SystemTheme::kGtk - : ui::SystemTheme::kDefault; - profile_prefs->SetInteger(prefs::kSystemTheme, - static_cast<int>(migrated_theme)); - } - profile_prefs->ClearPref(prefs::kUsesSystemThemeDeprecated); -#endif - // Added 09/2022. profile_prefs->ClearPref(kPrivacySandboxFirstPartySetsDataAccessAllowed); diff --git a/chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts b/chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts index 8c363818964b5d04cfdb23689e0449d620ef9b75..43c561b6a7faecae8226600c8be160cfdb44ca89 100644 --- a/chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts +++ b/chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts @@ -18,11 +18,6 @@ export interface AppearanceBrowserProxy { useDefaultTheme(): void; - // <if expr="is_linux"> - useGtkTheme(): void; - useQtTheme(): void; - // </if> - validateStartupPage(url: string): Promise<boolean>; } @@ -48,16 +43,6 @@ export class AppearanceBrowserProxyImpl implements AppearanceBrowserProxy { chrome.send('useDefaultTheme'); } - // <if expr="is_linux"> - useGtkTheme() { - chrome.send('useGtkTheme'); - } - - useQtTheme() { - chrome.send('useQtTheme'); - } - // </if> - validateStartupPage(url: string) { return sendWithPromise('validateStartupPage', url); } diff --git a/chrome/browser/resources/settings/appearance_page/appearance_page.html b/chrome/browser/resources/settings/appearance_page/appearance_page.html index 2d1be0555a9f75e38c05c24cf56c5ce54c0c89a7..ebb34805fcc87851c00ff15e720ed9b14c07459f 100644 --- a/chrome/browser/resources/settings/appearance_page/appearance_page.html +++ b/chrome/browser/resources/settings/appearance_page/appearance_page.html @@ -27,40 +27,12 @@ <cr-link-row class="first" hidden="[[!pageVisibility.setTheme]]" label="$i18n{themes}" sub-label="[[themeSublabel_]]" on-click="openThemeUrl_" external></cr-link-row> -<if expr="not is_linux"> <template is="dom-if" if="[[prefs.extensions.theme.id.value]]"> <div class="separator"></div> <cr-button id="useDefault" on-click="onUseDefaultClick_"> $i18n{resetToDefaultTheme} </cr-button> </template> -</if> -<if expr="is_linux"> - <div class="settings-row continuation" - hidden="[[!showThemesSecondary_( - prefs.extensions.theme.id.value, systemTheme_)]]" - id="themesSecondaryActions"> - <div class="separator"></div> - <template is="dom-if" if="[[showUseClassic_( - prefs.extensions.theme.id.value, systemTheme_)]]" restamp> - <cr-button id="useDefault" on-click="onUseDefaultClick_"> - $i18n{useClassicTheme} - </cr-button> - </template> - <template is="dom-if" if="[[showUseGtk_( - prefs.extensions.theme.id.value, systemTheme_)]]" restamp> - <cr-button id="useGtk" on-click="onUseGtkClick_"> - $i18n{useGtkTheme} - </cr-button> - </template> - <template is="dom-if" if="[[showUseQt_( - prefs.extensions.theme.id.value, systemTheme_)]]" restamp> - <cr-button id="useQt" on-click="onUseQtClick_"> - $i18n{useQtTheme} - </cr-button> - </template> - </div> -</if> </div> <div class="hr" diff --git a/chrome/browser/resources/settings/appearance_page/appearance_page.ts b/chrome/browser/resources/settings/appearance_page/appearance_page.ts index 326bcd4d0262c21339a6b5779434d95a474a303e..56f262362f289066c5abe303512fc17b6e876b42 100644 --- a/chrome/browser/resources/settings/appearance_page/appearance_page.ts +++ b/chrome/browser/resources/settings/appearance_page/appearance_page.ts @@ -64,10 +64,6 @@ export interface SettingsAppearancePageElement { export enum SystemTheme { // Either classic or web theme. DEFAULT = 0, - // <if expr="is_linux"> - GTK = 1, - QT = 2, - // </if> } const SettingsAppearancePageElementBase = @@ -191,10 +187,6 @@ export class SettingsAppearancePageElement extends 'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)', 'themeChanged_(' + 'prefs.extensions.theme.id.value, systemTheme_, isForcedTheme_)', - - // <if expr="is_linux"> - 'systemThemePrefChanged_(prefs.extensions.theme.system_theme.value)', - // </if> ]; } @@ -290,54 +282,6 @@ export class SettingsAppearancePageElement extends this.appearanceBrowserProxy_.useDefaultTheme(); } - // <if expr="is_linux"> - private systemThemePrefChanged_(systemTheme: SystemTheme) { - this.systemTheme_ = systemTheme; - } - - /** @return Whether to show the "USE CLASSIC" button. */ - private showUseClassic_(themeId: string): boolean { - return !!themeId || this.systemTheme_ !== SystemTheme.DEFAULT; - } - - /** @return Whether to show the "USE GTK" button. */ - private showUseGtk_(themeId: string): boolean { - return (!!themeId || this.systemTheme_ !== SystemTheme.GTK) && - !this.appearanceBrowserProxy_.isChildAccount(); - } - - /** @return Whether to show the "USE QT" button. */ - private showUseQt_(themeId: string): boolean { - return (!!themeId || this.systemTheme_ !== SystemTheme.QT) && - !this.appearanceBrowserProxy_.isChildAccount() && - loadTimeData.getBoolean('allowQtTheme'); - } - - /** - * @return Whether to show the secondary area where "USE CLASSIC", - * "USE GTK", and "USE QT" buttons live. - */ - private showThemesSecondary_(themeId: string): boolean { - return !!themeId || !this.appearanceBrowserProxy_.isChildAccount(); - } - - private onUseGtkClick_() { - if (this.isForcedTheme_) { - this.showManagedThemeDialog_ = true; - return; - } - this.appearanceBrowserProxy_.useGtkTheme(); - } - - private onUseQtClick_() { - if (this.isForcedTheme_) { - this.showManagedThemeDialog_ = true; - return; - } - this.appearanceBrowserProxy_.useQtTheme(); - } - // </if> - private themeChanged_(themeId: string) { if (this.prefs === undefined || this.systemTheme_ === undefined) { return; @@ -363,22 +307,7 @@ export class SettingsAppearancePageElement extends } let i18nId; - // <if expr="is_linux"> - switch (this.systemTheme_) { - case SystemTheme.GTK: - i18nId = 'gtkTheme'; - break; - case SystemTheme.QT: - i18nId = 'qtTheme'; - break; - default: - i18nId = 'classicTheme'; - break; - } - // </if> - // <if expr="not is_linux"> i18nId = 'chooseFromWebStore'; - // </if> this.themeSublabel_ = this.i18n(i18nId); } diff --git a/chrome/browser/themes/theme_service_aura_linux.cc b/chrome/browser/themes/theme_service_aura_linux.cc index 8f518003ccd765b13d4a38a4e92db1578f0150a8..610d08cdd76df5d3e4395ac218a0770c6308d94d 100644 --- a/chrome/browser/themes/theme_service_aura_linux.cc +++ b/chrome/browser/themes/theme_service_aura_linux.cc @@ -19,150 +19,14 @@ #include "ui/linux/linux_ui_factory.h" #include "ui/native_theme/native_theme_aura.h" -namespace { - -ui::SystemTheme ValidateSystemTheme(ui::SystemTheme system_theme) { - switch (system_theme) { - case ui::SystemTheme::kDefault: -#if BUILDFLAG(IS_LINUX) - case ui::SystemTheme::kGtk: - case ui::SystemTheme::kQt: -#endif - return system_theme; - default: - return ui::SystemTheme::kDefault; - } -} - -class SystemThemeLinux : public CustomThemeSupplier { - public: - SystemThemeLinux(PrefService* pref_service, ui::LinuxUiTheme* linux_ui_theme); - - SystemThemeLinux(const SystemThemeLinux&) = delete; - SystemThemeLinux& operator=(const SystemThemeLinux&) = delete; - - // Overridden from CustomThemeSupplier: - void StartUsingTheme() override; - void StopUsingTheme() override; - bool GetColor(int id, SkColor* color) const override; - bool GetDisplayProperty(int id, int* result) const override; - gfx::Image GetImageNamed(int id) const override; - bool HasCustomImage(int id) const override; - ui::NativeTheme* GetNativeTheme() const override; - - private: - ~SystemThemeLinux() override; - - // These pointers are not owned by us. - const raw_ptr<PrefService, DanglingUntriaged> pref_service_; - const raw_ptr<ui::LinuxUiTheme> linux_ui_theme_; -}; - -SystemThemeLinux::SystemThemeLinux(PrefService* pref_service, - ui::LinuxUiTheme* linux_ui_theme) - : CustomThemeSupplier(ThemeType::kNativeX11), - pref_service_(pref_service), - linux_ui_theme_(linux_ui_theme) {} - -void SystemThemeLinux::StartUsingTheme() { - pref_service_->SetInteger( - prefs::kSystemTheme, - static_cast<int>(linux_ui_theme_->GetNativeTheme()->system_theme())); - // Have the former theme notify its observers of change. - ui::NativeTheme::GetInstanceForNativeUi()->NotifyOnNativeThemeUpdated(); -} - -void SystemThemeLinux::StopUsingTheme() { - pref_service_->SetInteger(prefs::kSystemTheme, - static_cast<int>(ui::SystemTheme::kDefault)); - // Have the former theme notify its observers of change. - linux_ui_theme_->GetNativeTheme()->NotifyOnNativeThemeUpdated(); -} - -bool SystemThemeLinux::GetColor(int id, SkColor* color) const { - return linux_ui_theme_->GetColor( - id, color, pref_service_->GetBoolean(prefs::kUseCustomChromeFrame)); -} - -bool SystemThemeLinux::GetDisplayProperty(int id, int* result) const { - return linux_ui_theme_->GetDisplayProperty(id, result); -} - -gfx::Image SystemThemeLinux::GetImageNamed(int id) const { - return gfx::Image(); -} - -bool SystemThemeLinux::HasCustomImage(int id) const { - return false; -} - -ui::NativeTheme* SystemThemeLinux::GetNativeTheme() const { - return linux_ui_theme_->GetNativeTheme(); -} - -SystemThemeLinux::~SystemThemeLinux() = default; - -} // namespace - ThemeServiceAuraLinux::~ThemeServiceAuraLinux() = default; ui::SystemTheme ThemeServiceAuraLinux::GetDefaultSystemTheme() const { return GetSystemThemeForProfile(profile()); } -void ThemeServiceAuraLinux::UseTheme(ui::SystemTheme system_theme) { - if (system_theme == ui::SystemTheme::kDefault) { - UseDefaultTheme(); - } else if (auto* linux_ui_theme = ui::GetLinuxUiTheme(system_theme)) { - SetCustomDefaultTheme(base::MakeRefCounted<SystemThemeLinux>( - profile()->GetPrefs(), linux_ui_theme)); - } else { - return; - } - UMA_HISTOGRAM_ENUMERATION("Linux.SystemTheme.Profile", system_theme); -} - -void ThemeServiceAuraLinux::UseSystemTheme() { - if (UsingSystemTheme()) - return; - if (auto* linux_ui_theme = ui::GetDefaultLinuxUiTheme()) { - if (auto* native_theme = linux_ui_theme->GetNativeTheme()) { - UseTheme(native_theme->system_theme()); - return; - } - } - ThemeService::UseSystemTheme(); -} - -bool ThemeServiceAuraLinux::IsSystemThemeDistinctFromDefaultTheme() const { - return true; -} - -bool ThemeServiceAuraLinux::UsingSystemTheme() const { - return GetThemeSupplier() && - GetThemeSupplier()->get_theme_type() == - ui::ColorProviderManager::ThemeInitializerSupplier::ThemeType:: - kNativeX11; -} - -void ThemeServiceAuraLinux::FixInconsistentPreferencesIfNeeded() { - PrefService* prefs = profile()->GetPrefs(); - - // When using the system theme, the theme ID should match the default. Give - // precedence to the non-default theme specified. - if (GetThemeID() != ThemeHelper::kDefaultThemeID && - prefs->GetInteger(prefs::kSystemTheme) != - static_cast<int>(ui::SystemTheme::kDefault)) { - prefs->SetInteger(prefs::kSystemTheme, - static_cast<int>(ui::SystemTheme::kDefault)); - } -} - // static ui::SystemTheme ThemeServiceAuraLinux::GetSystemThemeForProfile( const Profile* profile) { - if (!profile || profile->IsChild()) - return ui::SystemTheme::kDefault; - return ValidateSystemTheme(static_cast<ui::SystemTheme>( - profile->GetPrefs()->GetInteger(prefs::kSystemTheme))); + return ui::SystemTheme::kDefault; } diff --git a/chrome/browser/themes/theme_service_aura_linux.h b/chrome/browser/themes/theme_service_aura_linux.h index 4c7b9fec3e323ddd45b4c7e13d4ef18ccd57f768..0bcb9a7a55af9ff9007bf7e5ce26f753f5af020d 100644 --- a/chrome/browser/themes/theme_service_aura_linux.h +++ b/chrome/browser/themes/theme_service_aura_linux.h @@ -22,11 +22,6 @@ class ThemeServiceAuraLinux : public ThemeService { // Overridden from ThemeService: ui::SystemTheme GetDefaultSystemTheme() const override; - void UseTheme(ui::SystemTheme system_theme) override; - void UseSystemTheme() override; - bool IsSystemThemeDistinctFromDefaultTheme() const override; - bool UsingSystemTheme() const override; - void FixInconsistentPreferencesIfNeeded() override; static ui::SystemTheme GetSystemThemeForProfile(const Profile* profile); }; diff --git a/chrome/browser/themes/theme_service_factory.cc b/chrome/browser/themes/theme_service_factory.cc index ebf39789109595eb74c7b1f10f2e9d01f4c0b01a..b6a065aace88461f1799696141a95a3d3c91b289 100644 --- a/chrome/browser/themes/theme_service_factory.cc +++ b/chrome/browser/themes/theme_service_factory.cc @@ -114,16 +114,6 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanceFor( void ThemeServiceFactory::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { -// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch -// of lacros-chrome is complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) - ui::SystemTheme default_system_theme = ui::SystemTheme::kDefault; -#if BUILDFLAG(IS_LINUX) - default_system_theme = ui::GetDefaultSystemTheme(); -#endif - registry->RegisterIntegerPref(prefs::kSystemTheme, - static_cast<int>(default_system_theme)); -#endif registry->RegisterFilePathPref(prefs::kCurrentThemePackFilename, base::FilePath()); registry->RegisterStringPref(prefs::kCurrentThemeID, diff --git a/chrome/browser/ui/webui/settings/appearance_handler.cc b/chrome/browser/ui/webui/settings/appearance_handler.cc index 7586010858d37323c91c5d1f3d06bc1bc0001ed0..2fe9aa4152b1993e2d0196133e2375d85f1815e3 100644 --- a/chrome/browser/ui/webui/settings/appearance_handler.cc +++ b/chrome/browser/ui/webui/settings/appearance_handler.cc @@ -28,16 +28,6 @@ void AppearanceHandler::RegisterMessages() { "useDefaultTheme", base::BindRepeating(&AppearanceHandler::HandleUseTheme, base::Unretained(this), ui::SystemTheme::kDefault)); -#if BUILDFLAG(IS_LINUX) - web_ui()->RegisterMessageCallback( - "useGtkTheme", - base::BindRepeating(&AppearanceHandler::HandleUseTheme, - base::Unretained(this), ui::SystemTheme::kGtk)); - web_ui()->RegisterMessageCallback( - "useQtTheme", - base::BindRepeating(&AppearanceHandler::HandleUseTheme, - base::Unretained(this), ui::SystemTheme::kQt)); -#endif } void AppearanceHandler::HandleUseTheme(ui::SystemTheme system_theme, diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index ba144779fd63d84fdb0279944fc32f0032a2d431..d2260e21db0230dd7620b7e07b3075b9e689a9cb 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc @@ -409,16 +409,7 @@ void AddAppearanceStrings(content::WebUIDataSource* html_source, {"huge", IDS_SETTINGS_HUGE_FONT_SIZE}, {"sidePanelAlignLeft", IDS_SETTINGS_SIDE_PANEL_ALIGN_LEFT}, {"sidePanelAlignRight", IDS_SETTINGS_SIDE_PANEL_ALIGN_RIGHT}, -#if BUILDFLAG(IS_LINUX) - {"gtkTheme", IDS_SETTINGS_GTK_THEME}, - {"useGtkTheme", IDS_SETTINGS_USE_GTK_THEME}, - {"qtTheme", IDS_SETTINGS_QT_THEME}, - {"useQtTheme", IDS_SETTINGS_USE_QT_THEME}, - {"classicTheme", IDS_SETTINGS_CLASSIC_THEME}, - {"useClassicTheme", IDS_SETTINGS_USE_CLASSIC_THEME}, -#else {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME}, -#endif #if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS) {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS}, #endif diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 9d4833ae399106bbc9db3ae17dae769811031f5b..dd0a83e19cca85aec67a11333c3c395c90eef099 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -1205,13 +1205,6 @@ const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps"; const char kUseAshProxy[] = "lacros.proxy.use_ash_proxy"; #endif // BUILDFLAG(IS_CHROMEOS_LACROS) -// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch -// of lacros-chrome is complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) -// Linux specific preference on whether we should match the system theme. -const char kUsesSystemThemeDeprecated[] = "extensions.theme.use_system"; -const char kSystemTheme[] = "extensions.theme.system_theme"; -#endif const char kCurrentThemePackFilename[] = "extensions.theme.pack"; const char kCurrentThemeID[] = "extensions.theme.id"; const char kAutogeneratedThemeColor[] = "autogenerated.theme.color"; diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index e84d35c8c43e71cf9ff071f63c1ce641fab6d317..b4b9ebc609c7249f0651cc2462f204f694a3b81a 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -376,13 +376,6 @@ extern const char kAllowedDomainsForApps[]; #if BUILDFLAG(IS_CHROMEOS_LACROS) extern const char kUseAshProxy[]; #endif // BUILDFLAG(IS_CHROMEOS_LACROS) -// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch -// of lacros-chrome is complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) -// TODO(https://crbug.com/1317782): Remove in M110. -extern const char kUsesSystemThemeDeprecated[]; -extern const char kSystemTheme[]; -#endif extern const char kCurrentThemePackFilename[]; extern const char kCurrentThemeID[]; extern const char kAutogeneratedThemeColor[]; diff --git a/ui/gtk/gtk_compat.cc b/ui/gtk/gtk_compat.cc index d196e304a43191b6dc82f25b0b4bf24d242edb3c..ff3b917c63f5c1d6a467585165f023da168faa63 100644 --- a/ui/gtk/gtk_compat.cc +++ b/ui/gtk/gtk_compat.cc @@ -123,8 +123,7 @@ bool LoadGtkImpl() { >k_version)) { gtk_version = 0; } - // Prefer GTK3 for now as the GTK4 ecosystem is still immature. - return gtk_version == 4 ? LoadGtk4() || LoadGtk3() : LoadGtk3() || LoadGtk4(); + return gtk_version == 3 ? LoadGtk3() || LoadGtk4() : LoadGtk4() || LoadGtk3(); } gfx::Insets InsetsFromGtkBorder(const GtkBorder& border) { diff --git a/ui/gtk/wayland/gtk_ui_platform_wayland.cc b/ui/gtk/wayland/gtk_ui_platform_wayland.cc index 5548e5912ff2c31a367adf5a3d7ed69e6e1fd82c..18909aa5a72617691c835676b10de079eeded989 100644 --- a/ui/gtk/wayland/gtk_ui_platform_wayland.cc +++ b/ui/gtk/wayland/gtk_ui_platform_wayland.cc @@ -20,9 +20,6 @@ namespace gtk { GtkUiPlatformWayland::GtkUiPlatformWayland() { gdk_set_allowed_backends("wayland"); - // GDK_BACKEND takes precedence over gdk_set_allowed_backends(), so override - // it to ensure we get the wayland backend. - base::Environment::Create()->SetVar("GDK_BACKEND", "wayland"); } GtkUiPlatformWayland::~GtkUiPlatformWayland() = default; diff --git a/ui/gtk/x/gtk_ui_platform_x11.cc b/ui/gtk/x/gtk_ui_platform_x11.cc index 68eadd095a65a0f91a04c36aace09aa1b967de7b..412f568698fd11b34539488501652a4f116b5783 100644 --- a/ui/gtk/x/gtk_ui_platform_x11.cc +++ b/ui/gtk/x/gtk_ui_platform_x11.cc @@ -25,9 +25,6 @@ namespace gtk { GtkUiPlatformX11::GtkUiPlatformX11() : connection_(x11::Connection::Get()) { gdk_set_allowed_backends("x11"); - // GDK_BACKEND takes precedence over gdk_set_allowed_backends(), so override - // it to ensure we get the x11 backend. - base::Environment::Create()->SetVar("GDK_BACKEND", "x11"); x11::InitXlib(); } diff --git a/ui/gtk/wayland/gtk_ui_platform_wayland.cc b/ui/gtk/wayland/gtk_ui_platform_wayland.cc index 18909aa5a72617691c835676b10de079eeded989..6c13569312f08b7bd76f3659bfc1bccb67125f65 100644 --- a/ui/gtk/wayland/gtk_ui_platform_wayland.cc +++ b/ui/gtk/wayland/gtk_ui_platform_wayland.cc @@ -25,7 +25,21 @@ GtkUiPlatformWayland::GtkUiPlatformWayland() { GtkUiPlatformWayland::~GtkUiPlatformWayland() = default; void GtkUiPlatformWayland::OnInitialized(GtkWidget* widget) { - // Nothing to do upon initialization for Wayland. + if (!GtkCheckVersion(4)) { + return; + } + GtkSettings* gtk_settings = gtk_settings_get_default(); + CHECK(gtk_settings); + gchar* im_module = nullptr; + g_object_get(gtk_settings, "gtk-im-module", &im_module, nullptr); + if (im_module == nullptr || strlen(im_module) == 0) { + // The gtk-im-module setting has not been configured, set it to "ibus" since + // the default does not work on Ozone/Wayland. + g_object_set(gtk_settings, "gtk-im-module", "ibus", nullptr); + } + if (im_module) { + g_free(im_module); + } } GdkKeymap* GtkUiPlatformWayland::GetGdkKeymap() { diff --git a/chrome/installer/linux/common/installer.include b/chrome/installer/linux/common/installer.include index 439ef5ccb0f5264e9e773c10142acfa7b9bded36..ca335680a57e0fe509a922580cb56db8b48aa82e 100644 --- a/chrome/installer/linux/common/installer.include +++ b/chrome/installer/linux/common/installer.include @@ -99,6 +99,7 @@ process_template() ( -e "s#@@REPOCONFIGREGEX@@#${REPOCONFIGREGEX}#g" \ -e "s#@@SHORTDESC@@#${SHORTDESC}#g" \ -e "s#@@FULLDESC@@#${FULLDESC}#g" \ + -e "s#@@BRANDING@@#${BRANDING}#g" \ -e "s#@@USR_BIN_SYMLINK_NAME@@#${USR_BIN_SYMLINK_NAME:-}#g" \ -e "s#@@LOGO_RESOURCES_PNG@@#${LOGO_RESOURCES_PNG}#g" \ -e "s#@@LOGO_RESOURCE_XPM@@#${LOGO_RESOURCE_XPM}#g" \ diff --git a/chrome/installer/linux/debian/build.sh b/chrome/installer/linux/debian/build.sh index 7cd40b9c37cce8370238c3a1b3850d209ad8d4e2..852478e6872328c2fce1ef97e7fc73833cbdda90 100755 --- a/chrome/installer/linux/debian/build.sh +++ b/chrome/installer/linux/debian/build.sh @@ -38,8 +38,10 @@ gen_control() { # Setup the installation directory hierarchy in the package staging area. prep_staging_debian() { prep_staging_common + if [ "$BRANDING" = "google_chrome" ]; then + install -m 755 -d "${STAGEDIR}/etc/cron.daily" + fi install -m 755 -d "${STAGEDIR}/DEBIAN" \ - "${STAGEDIR}/etc/cron.daily" \ "${STAGEDIR}/usr/share/menu" \ "${STAGEDIR}/usr/share/doc/${USR_BIN_SYMLINK_NAME}" } @@ -66,13 +68,15 @@ stage_install_debian() { SHLIB_PERMS=644 stage_install_common log_cmd echo "Staging Debian install files in '${STAGEDIR}'..." - install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/cron" - process_template "${OUTPUTDIR}/installer/common/repo.cron" \ - "${STAGEDIR}/${INSTALLDIR}/cron/${PACKAGE}" - chmod 755 "${STAGEDIR}/${INSTALLDIR}/cron/${PACKAGE}" - pushd "${STAGEDIR}/etc/cron.daily/" > /dev/null - ln -snf "${INSTALLDIR}/cron/${PACKAGE}" "${PACKAGE}" - popd > /dev/null + if [ "$BRANDING" = "google_chrome" ]; then + install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/cron" + process_template "${OUTPUTDIR}/installer/common/repo.cron" \ + "${STAGEDIR}/${INSTALLDIR}/cron/${PACKAGE}" + chmod 755 "${STAGEDIR}/${INSTALLDIR}/cron/${PACKAGE}" + pushd "${STAGEDIR}/etc/cron.daily/" > /dev/null + ln -snf "${INSTALLDIR}/cron/${PACKAGE}" "${PACKAGE}" + popd > /dev/null + fi process_template "${OUTPUTDIR}/installer/debian/debian.menu" \ "${STAGEDIR}/usr/share/menu/${PACKAGE}.menu" chmod 644 "${STAGEDIR}/usr/share/menu/${PACKAGE}.menu" diff --git a/chrome/installer/linux/debian/postinst b/chrome/installer/linux/debian/postinst index c1db53387a9c834ac744a18a918fe0ebe9ab4c12..1e14074c0259fdb02bb21f6dcb3532658c137224 100755 --- a/chrome/installer/linux/debian/postinst +++ b/chrome/installer/linux/debian/postinst @@ -61,10 +61,12 @@ update-alternatives --install /usr/bin/@@PACKAGE_ORIG@@ @@PACKAGE_ORIG@@ \ remove_udev_symlinks ## MAIN ## -if [ ! -e "$DEFAULTS_FILE" ]; then - echo 'repo_add_once="true"' > "$DEFAULTS_FILE" - echo 'repo_reenable_on_distupgrade="true"' >> "$DEFAULTS_FILE" +if [ "@@BRANDING@@" = "google_chrome" ]; then + if [ ! -e "$DEFAULTS_FILE" ]; then + echo 'repo_add_once="true"' > "$DEFAULTS_FILE" + echo 'repo_reenable_on_distupgrade="true"' >> "$DEFAULTS_FILE" + fi + + # Run the cron job immediately to perform repository configuration. + nohup sh /etc/cron.daily/@@PACKAGE@@ > /dev/null 2>&1 & fi - -# Run the cron job immediately to perform repository configuration. -nohup sh /etc/cron.daily/@@PACKAGE@@ > /dev/null 2>&1 & diff --git a/chrome/installer/linux/rpm/build.sh b/chrome/installer/linux/rpm/build.sh index 3053be4fbf88872a7ae743eed0b13291cb1862e7..6c4aaffa6e93cb1a91507b732ad05aeaad030f91 100755 --- a/chrome/installer/linux/rpm/build.sh +++ b/chrome/installer/linux/rpm/build.sh @@ -27,7 +27,9 @@ gen_spec() { # Setup the installation directory hierarchy in the package staging area. prep_staging_rpm() { prep_staging_common - install -m 755 -d "${STAGEDIR}/etc/cron.daily" + if [ "$BRANDING" = "google_chrome" ]; then + install -m 755 -d "${STAGEDIR}/etc/cron.daily" + fi } # Put the package contents in the staging area. @@ -49,9 +51,11 @@ stage_install_rpm() { SHLIB_PERMS=755 stage_install_common log_cmd echo "Staging RPM install files in '${STAGEDIR}'..." - process_template "${OUTPUTDIR}/installer/common/rpmrepo.cron" \ - "${STAGEDIR}/etc/cron.daily/${PACKAGE}" - chmod 755 "${STAGEDIR}/etc/cron.daily/${PACKAGE}" + if [ "$BRANDING" = "google_chrome" ]; then + process_template "${OUTPUTDIR}/installer/common/rpmrepo.cron" \ + "${STAGEDIR}/etc/cron.daily/${PACKAGE}" + chmod 755 "${STAGEDIR}/etc/cron.daily/${PACKAGE}" + fi } verify_package() { diff --git a/chrome/installer/linux/rpm/chrome.spec.template b/chrome/installer/linux/rpm/chrome.spec.template index e968b5fd711d61ce2bc723eacc04a1a504e4e0e0..3aeedefa554b1f3e749a59f65908c1c0af859d4e 100644 --- a/chrome/installer/linux/rpm/chrome.spec.template +++ b/chrome/installer/linux/rpm/chrome.spec.template @@ -58,14 +58,17 @@ if [ -z "@@INSTALLDIR@@" -o ! -d "@@STAGEDIR@@/@@INSTALLDIR@@" ] ; then fi install -m 755 -d \ - "$RPM_BUILD_ROOT/etc" \ "$RPM_BUILD_ROOT/opt" \ "$RPM_BUILD_ROOT/usr" # This is hard coded for now -cp -a "@@STAGEDIR@@/etc/" "$RPM_BUILD_ROOT/" cp -a "@@STAGEDIR@@/opt/" "$RPM_BUILD_ROOT/" cp -a "@@STAGEDIR@@/usr/" "$RPM_BUILD_ROOT/" +%if "@@BRANDING@@" == "google_chrome" +install -m 755 -d "$RPM_BUILD_ROOT/etc" +cp -a "@@STAGEDIR@@/etc/" "$RPM_BUILD_ROOT/" +%endif + #------------------------------------------------------------------------------ # Rule to clean up a build #------------------------------------------------------------------------------ @@ -85,7 +88,10 @@ rm -rf "$RPM_BUILD_ROOT" # Be explicit about the files we scatter throughout the system we don't # accidentally "own" stuff that's not ours (crbug.com/123990). +%if "@@BRANDING@@" == "google_chrome" /etc/cron.daily/@@PACKAGE@@ +%endif + %ghost %attr(755,root,root) /usr/bin/@@PACKAGE_ORIG@@ /usr/bin/@@USR_BIN_SYMLINK_NAME@@ /usr/share/appdata/@@PACKAGE@@.appdata.xml @@ -124,6 +130,7 @@ add_nss_symlinks remove_udev_symlinks +%if "@@BRANDING@@" == "google_chrome" if [ ! -e "$DEFAULTS_FILE" ]; then echo 'repo_add_once="true"' > "$DEFAULTS_FILE" fi @@ -145,6 +152,7 @@ if [ "$repo_add_once" = "true" ]; then esac done fi +%endif CHANNEL=@@CHANNEL@@ case $CHANNEL in diff --git a/chrome/common/features.gni b/chrome/common/features.gni index 17994844916808cba4ad59e2717e265d02a3ffae..c30d36bb8028d98b330ebbd3eeb1a2e0a93dcf1b 100644 --- a/chrome/common/features.gni +++ b/chrome/common/features.gni @@ -56,7 +56,7 @@ declare_args() { # Hangout services is an extension that adds extra features to Hangouts. # It is enableable separately to facilitate testing. - enable_hangout_services_extension = is_chrome_branded + enable_hangout_services_extension = true enable_service_discovery = (enable_mdns && !is_android) || is_mac diff --git a/ui/gl/features.gni b/ui/gl/features.gni index fbc49c2ebecef4763d59f5764ca0478f6df54e64..bb29278d0c513e8fa501642442f6cab25d8bcfd1 100644 --- a/ui/gl/features.gni +++ b/ui/gl/features.gni @@ -26,9 +26,7 @@ declare_args() { # Independent of use_dawn, which controls whether Dawn is used in Chromium. build_dawn_tests = is_mac || is_win || is_linux || is_chromeos || is_android - enable_validating_command_decoder = - !is_win && !is_apple && - !(is_linux && !is_castos && !is_chromeos_lacros) && !is_fuchsia + enable_validating_command_decoder = !is_win && !is_apple && !is_fuchsia } declare_args() { diff --git a/ui/gl/gl_features.cc b/ui/gl/gl_features.cc index c17d84f261b8469ba2c70570908dd833f5735f65..de651eed9758cd5a7cfe2aa67744ad8b606d78ed 100644 --- a/ui/gl/gl_features.cc +++ b/ui/gl/gl_features.cc @@ -86,7 +86,8 @@ BASE_FEATURE(kAndroidFrameDeadline, // platforms that would otherwise not default to using EGL bindings. BASE_FEATURE(kDefaultPassthroughCommandDecoder, "DefaultPassthroughCommandDecoder", -#if BUILDFLAG(IS_CHROMEOS_LACROS) +#if BUILDFLAG(IS_CHROMEOS_LACROS) || \ + (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT diff --git a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc index 696e0ba2729df22a2c1fb23a1b5c52c5f9ebc68a..a22a67be838258ef01f71bae7ed1eaaabad06ac4 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.cc @@ -454,6 +454,7 @@ void WaylandBufferManagerGpu::OpenAndStoreDrmRenderNodeFd( } drm_render_node_fd_ = handle.PassFD(); + drm_render_node_path_ = drm_node_path; } #endif diff --git a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h index 8c5e195cfaa09df017fe3a4ccb7f5b727960dbf4..1bcb38f627cd00a491185bf5adda54675716387b 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h +++ b/ui/ozone/platform/wayland/gpu/wayland_buffer_manager_gpu.h @@ -170,6 +170,10 @@ class WaylandBufferManagerGpu : public ozone::mojom::WaylandBufferManagerGpu { drm_modifiers_filter_ = std::move(drm_modifiers_filter); } + const base::FilePath& drm_render_node_path() const { + return drm_render_node_path_; + } + // Adds a WaylandBufferManagerGpu binding. void AddBindingWaylandBufferManagerGpu( mojo::PendingReceiver<ozone::mojom::WaylandBufferManagerGpu> receiver); @@ -254,6 +258,8 @@ class WaylandBufferManagerGpu : public ozone::mojom::WaylandBufferManagerGpu { void OpenAndStoreDrmRenderNodeFd(const base::FilePath& drm_node_path); // Used by the gbm_device for self creation. base::ScopedFD drm_render_node_fd_; + // Used for EGL device selection. + base::FilePath drm_render_node_path_; // A DRM render node based gbm device. std::unique_ptr<GbmDevice> gbm_device_; // When set, avoids creating a real gbm_device. Instead, tests that set diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index 08270311925eeaaa10b56fd9d5819914083e1521..af9862e112d4025caf07a46e72685b908998d4a5 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc @@ -4,6 +4,7 @@ #include "ui/ozone/platform/wayland/gpu/wayland_surface_factory.h" +#include <xf86drm.h> #include <memory> #include "base/memory/ptr_util.h" @@ -41,6 +42,35 @@ namespace ui { namespace { +EGLDeviceEXT GetEGLDeviceForRenderNodePath( + const base::FilePath& wanted_render_node_path) { + if (!(gl::g_driver_egl.client_ext.b_EGL_EXT_device_query && + gl::g_driver_egl.client_ext.b_EGL_EXT_platform_device && + gl::g_driver_egl.client_ext.b_EGL_EXT_device_enumeration)) { + return EGL_NO_DEVICE_EXT; + } + + std::vector<EGLDeviceEXT> devices(DRM_MAX_MINOR, EGL_NO_DEVICE_EXT); + EGLint num_devices = 0; + + eglQueryDevicesEXT(DRM_MAX_MINOR, devices.data(), &num_devices); + devices.resize(num_devices); + + for (EGLDeviceEXT device : devices) { + const char* device_render_node_path = + eglQueryDeviceStringEXT(device, EGL_DRM_RENDER_NODE_FILE_EXT); + if (!device_render_node_path) { + // Not a DRM device. + continue; + } + if (wanted_render_node_path == base::FilePath(device_render_node_path)) { + return device; + } + } + + return EGL_NO_DEVICE_EXT; +} + class GLOzoneEGLWayland : public GLOzoneEGL { public: GLOzoneEGLWayland(WaylandConnection* connection, @@ -168,6 +198,16 @@ gl::EGLDisplayPlatform GLOzoneEGLWayland::GetNativeDisplay() { reinterpret_cast<EGLNativeDisplayType>(connection_->display()), EGL_PLATFORM_WAYLAND_EXT); } + EGLDeviceEXT egl_device = EGL_NO_DEVICE_EXT; + const auto& render_node_path = buffer_manager_->drm_render_node_path(); + if (!render_node_path.empty()) { + egl_device = GetEGLDeviceForRenderNodePath(render_node_path); + } + if (egl_device != EGL_NO_DEVICE_EXT) { + return gl::EGLDisplayPlatform( + reinterpret_cast<EGLNativeDisplayType>(egl_device), + EGL_PLATFORM_DEVICE_EXT); + } if (gl::g_driver_egl.client_ext.b_EGL_MESA_platform_surfaceless) { return gl::EGLDisplayPlatform(EGL_DEFAULT_DISPLAY, EGL_PLATFORM_SURFACELESS_MESA); diff --git a/components/sync/base/features.cc b/components/sync/base/features.cc index c6817e8521400730bc6ff5436ccd2eb2199a2650..f2e532db9c6a12d0b62d568324b8af4312e3aab2 100644 --- a/components/sync/base/features.cc +++ b/components/sync/base/features.cc @@ -83,7 +83,7 @@ BASE_FEATURE(kSkipInvalidationOptimizationsWhenDeviceInfoUpdated, BASE_FEATURE(kSyncEnableHistoryDataType, "SyncEnableHistoryDataType", - base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kSyncEnableContactInfoDataType, "SyncEnableContactInfoDataType", diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index bce7b0cb61698a098d9e9aa0ce207f01725bc868..b17bbf5109d7faf00b70cbb2c3dc796052cd1500 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json @@ -12988,27 +12988,6 @@ ] } ], - "SyncEnableHistoryDataType": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20230209", - "enable_features": [ - "SyncEnableHistoryDataType" - ] - } - ] - } - ], "SyncTrustedVaultVerifyDeviceRegistration": [ { "platforms": [ diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc index 758304e7913906eac330b80f04d1fc66077a14e4..372108aa880ef17f49a3c2eec30c4133d68dec14 100644 --- a/ui/gl/gl_surface_egl.cc +++ b/ui/gl/gl_surface_egl.cc @@ -314,6 +314,9 @@ EGLConfig ChooseConfig(EGLDisplay display, } } } + if (!config) { + config = matching_configs[0]; + } return config; } diff --git a/third_party/angle/BUILD.gn b/third_party/angle/BUILD.gn index 964d511238d3016bac27b9e65e203f1f68c4a92d..639d30aa6c00c2b1cfae57644c9e9c3521096ce4 100644 --- a/third_party/angle/BUILD.gn +++ b/third_party/angle/BUILD.gn @@ -27,11 +27,14 @@ if (angle_has_build) { } declare_args() { - # Use the PCI lib to collect GPU information on Linux. + # Use libdrm to collect GPU information on Linux. + use_libdrm = is_linux && angle_has_build + + # Use the PCI lib to collect GPU information on Linux as a fallback. use_libpci = (is_linux || is_chromeos) && (angle_use_x11 || use_ozone) && angle_has_build - # Enable using Vulkan to collect system info as a fallback. + # Enable using Vulkan to collect system info as another fallback. angle_enable_vulkan_system_info = false # Link in system libGL, to work with apitrace. See doc/DebuggingTips.md. @@ -231,6 +234,10 @@ config("internal_config") { defines += [ "ANGLE_VULKAN_DISPLAY_MODE_SIMPLE" ] } else if (angle_vulkan_display_mode == "headless") { defines += [ "ANGLE_VULKAN_DISPLAY_MODE_HEADLESS" ] + } else if (angle_vulkan_display_mode == "offscreen") { + defines += [ "ANGLE_VULKAN_DISPLAY_MODE_OFFSCREEN" ] + } else { + assert(false) } } @@ -646,6 +653,20 @@ angle_static_library("angle_gpu_info_util") { libs += [ "pci" ] } + if (use_libdrm) { + sources += libangle_gpu_info_util_libdrm_sources + defines += [ "GPU_INFO_USE_LIBDRM" ] + + # When build_with_chromium=true we need to include "//build/config/linux/libdrm" while it's + # beneficial to be more specific with standalone ANGLE, especially when it comes to including it + # as a dependency in other projects (such as Dawn). + if (build_with_chromium) { + deps += [ "//build/config/linux/libdrm" ] + } else { + deps += [ "third_party/gn/libdrm" ] + } + } + if (is_apple) { frameworks = [ "IOKit.framework", diff --git a/third_party/angle/DEPS b/third_party/angle/DEPS index 5ba2a27c7e53279c7f280ecbfe90368487e1f5b9..7ed195ab635bf0f6051e7312c05d5faf10b5b7a9 100644 --- a/third_party/angle/DEPS +++ b/third_party/angle/DEPS @@ -39,7 +39,7 @@ vars = { # build ARC++ support libraries. 'checkout_android_native_support': 'checkout_android or checkout_chromeos', - # Check out Mesa and libdrm in ANGLE's third_party folder. + # Check out Mesa in ANGLE's third_party folder. 'checkout_angle_mesa': False, # Version of Chromium our Chromium-based DEPS are mirrored from. @@ -458,7 +458,7 @@ deps = { # We use the upstream/main branch. 'third_party/libdrm': { 'url': '{chromium_git}/chromiumos/third_party/libdrm@474894ed17a037a464e5bd845a0765a50f647898', - 'condition': 'checkout_angle_mesa', + 'condition': 'not build_with_chromium', }, # libjpeg_turbo is used by glmark2. diff --git a/third_party/angle/gni/angle.gni b/third_party/angle/gni/angle.gni index e946c6b6f646ae38c5781f64b95dbd727931e77c..4f374bd0082be9a9e21d4806abf8760a3c1f41ca 100644 --- a/third_party/angle/gni/angle.gni +++ b/third_party/angle/gni/angle.gni @@ -57,7 +57,9 @@ if (angle_has_build) { import("//build/config/win/visual_studio_version.gni") } - if (is_castos || ozone_platform_headless) { + if (is_chromeos) { + angle_vulkan_display_mode = "offscreen" + } else if (is_castos || ozone_platform_headless) { angle_vulkan_display_mode = "headless" } diff --git a/third_party/angle/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json b/third_party/angle/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json index c075a00b1bdc4a2ee4f147814d1a1b202075b5b1..65131d0e2f861b4bbe6823c38d2503f8e07e05e7 100644 --- a/third_party/angle/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json +++ b/third_party/angle/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json @@ -220,57 +220,75 @@ "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc": "76603d00d06d72da32a1e5d4d37b3eed", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc": - "41ed809d33de199cb8a8e25587eae3ac", + "da8599e0bb0ad0b06cf0d300ef344c9a", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc": - "7b380e9c73dc24b770ed88cb45dfa071", + "c109300f7ec15f8a2cf23b94d5e17ccf", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc": + "2e4ed7a8c9dbfec333edd7b7347af2b1", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc": - "91437db6a9ca55b8c6571169388c89c7", + "0d2546a634322fa74cc2b3ab6b5d32e5", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc": - "ff9969de011b61b6d02e9529e8ed7bfd", + "d4777ffea70d980e74bd98a5f750fdf5", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc": - "dcdfc48d58fb86b2dcdd3556794e2d8b", + "dc5b1c8df1ba62f5fac15a04a6c614ea", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc": + "0ef1cbb8712a83da83b9444611c43cbc", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc": - "6eabfa5823c6da53e38b4c5c5d55d98a", + "9f5e4ebc625ad501514feea2a0b53da5", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc": - "e56edfc6809ccdf94ec76f7641485e6c", + "019e4234c7b6ece2c8c8a5d6f601995d", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc": - "1db608ff3f606298e341c6a141b604b9", + "e75ff450467b72457840ac980d7e7202", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc": + "5a169de539059493e00f10cea7ec05bf", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc": - "efe6dd46d13085da0019506703b99f67", + "8685ab935dcdf91d727cb3d48d36a659", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc": - "11a4942291c66462642e2be0b9bd1572", + "dfa2eb491776d03545a0bc856dda7c58", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc": - "8746e9a338aee2ccc589b4a30574ead7", + "c2af6c7cd02e9cfe864016eede498999", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc": + "3d4dad5d1f65e132bf8daccc9afee191", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc": - "70450f0f7d56beaf0de896947562171d", + "6a3b77b0fad9bbda49455cc09b128616", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc": "0f35f063fb3b868663c95cc0394224ba", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc": - "5ec02e1c09347e9c71fd6c406c8732e2", + "5b0be8339c11cb5bd9500d39988dda23", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc": + "9edcc292a2c23dd44badf037e4408e86", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc": - "28873446e6e14d0a38d002f60701bd09", + "27e0daedd9cf5cfe02519ccdef436a67", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc": - "b8bb98a6404a96a6a38d0018153d855b", + "5d0a9b4dd127deea34a5ac7fa77dde1b", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc": - "cd1a0471a42944463e5e88fea9070306", + "6eb667776daad2587c2bf52bfa559852", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc": + "57b268a60aede22060cbecdda2b2eb24", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc": - "5e272e50869272d9d6b0bc0b0bc0d007", + "7cc912fff86ace942d041a576c06b664", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc": - "131ef71290823076be4e63baab08d412", + "925380c9fd9528f06de599a50efa0c9d", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc": - "5b50d4f1b57387082abdfa59fc0f6c9b", + "d6344c7928abf5844598e4b3640411f2", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc": + "1e87c63f58ef13476ff8d5b93655040f", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc": - "e5de56fe6496d277466b8756b5e7b06b", + "c25bfbdfc239054abe9d98998aac9ab4", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc": - "a310c5eda7fb6fa7df787f65cd405ae2", + "8dc731808966dc39e573d921f660a51b", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc": - "ac804f579183c20df442e8abade511d8", + "d59c571bf087c09703c58c1d5384612a", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc": + "ed326d771b847149c945c8998133abc8", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc": - "90005266bd1b72a4162099a65693c710", + "fb1dbe02277679519013002dfd8d9315", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc": - "b858296d3b74fa59abbcd7ef0c1bf769", + "f48386d96c70dd9db138eb20566cfe94", "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002A.inc": "2a20cf4f065e882d3ed02d5059ce6538", + "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc": + "34f88f1e4fab89de25b9ab96c369c4be", "src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc": "8fcbdd5d4d69697e28ff016e2d15f0d5", "src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.vert.00000000.inc": @@ -320,17 +338,17 @@ "src/libANGLE/renderer/vulkan/shaders/src/ImageClear.frag.json": "9cd4dfc317b93ad4ffddbb0ea8eeaba6", "src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag": - "7fbc40bc5eca0de0024f538b6c37b50d", + "76d24e4a2890954779712f13c613d5dd", "src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json": - "4ab28c9734a335d4450fe8c95567bea7", + "f5e8023fe5323c517540fd0fac930550", "src/libANGLE/renderer/vulkan/shaders/src/OverlayDraw.frag": "7e303a21c1881d6461c34ac7e2ad19ff", "src/libANGLE/renderer/vulkan/shaders/src/OverlayDraw.vert": "5aa33152fce5b9261c4d427ad2babdd7", "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp": - "347aa65177b36dcd4be05f388de7d6b8", + "072d8d5402c6440e5e5478b4143d33df", "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h": - "9a1da1895327bf948819dd8f89be3fe7", + "4bfe687c95eaf52a7c7882dde13b1059", "tools/glslang/glslang_validator.exe.sha1": "17e862cc6f462fecbf50b24ed6544a27", "tools/glslang/glslang_validator.sha1": diff --git a/third_party/angle/scripts/export_targets.py b/third_party/angle/scripts/export_targets.py index a9141bb78b900d1584e4aa1a2e3e2923133efab8..43a55b0a163487fd60cab5845ce6b57d32dc3ccf 100755 --- a/third_party/angle/scripts/export_targets.py +++ b/third_party/angle/scripts/export_targets.py @@ -281,6 +281,7 @@ IGNORED_INCLUDE_PREFIXES = { IGNORED_DIRECTORIES = { '//buildtools/third_party/libc++', '//third_party/abseil-cpp', + '//third_party/gn/libdrm', '//third_party/SwiftShader', } diff --git a/third_party/angle/src/common/vulkan/vulkan_icd.cpp b/third_party/angle/src/common/vulkan/vulkan_icd.cpp index 130cc82eb7f2836d9d49345ede5a1a345a70feef..d227f12b9a87b08e6eb6115a8f3ccd121d88629d 100644 --- a/third_party/angle/src/common/vulkan/vulkan_icd.cpp +++ b/third_party/angle/src/common/vulkan/vulkan_icd.cpp @@ -14,10 +14,15 @@ #include "common/Optional.h" #include "common/bitset_utils.h" #include "common/debug.h" +#include "common/platform.h" #include "common/system_utils.h" #include "common/vulkan/vk_google_filtering_precision.h" +#if defined(ANGLE_PLATFORM_LINUX) +# include <sys/sysmacros.h> +#endif + namespace { void ResetEnvironmentVar(const char *variableName, const Optional<std::string> &value) @@ -103,6 +108,24 @@ ICDFilterFunc GetFilterForICD(vk::ICD preferredICD) } } +void GetPhysicalDeviceProperties2Wrapper( + PFN_vkGetPhysicalDeviceProperties pGetPhysicalDeviceProperties, + PFN_vkGetPhysicalDeviceProperties2KHR pGetPhysicalDeviceProperties2KHR, + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2KHR *physicalDeviceProperties2Out) +{ + if (pGetPhysicalDeviceProperties2KHR) + { + pGetPhysicalDeviceProperties2KHR(physicalDevice, physicalDeviceProperties2Out); + } + else + { + ASSERT(pGetPhysicalDeviceProperties); + ASSERT(physicalDeviceProperties2Out->pNext == nullptr); + pGetPhysicalDeviceProperties(physicalDevice, &physicalDeviceProperties2Out->properties); + } +} + } // namespace // If we're loading the validation layers, we could be running from any random directory. @@ -265,53 +288,87 @@ bool ScopedVkLoaderEnvironment::setCustomExtensionsEnvironment() strstr.str().c_str()); } -void ChoosePhysicalDevice(PFN_vkGetPhysicalDeviceProperties pGetPhysicalDeviceProperties, - const std::vector<VkPhysicalDevice> &physicalDevices, - vk::ICD preferredICD, - uint32_t preferredVendorID, - uint32_t preferredDeviceID, - VkPhysicalDevice *physicalDeviceOut, - VkPhysicalDeviceProperties *physicalDevicePropertiesOut) +#define vkGetPhysicalDeviceProperties2KHR(physicalDevice, physicalDevicePropertiesOut) \ + GetPhysicalDeviceProperties2Wrapper(pGetPhysicalDeviceProperties, \ + pGetPhysicalDeviceProperties2KHR, (physicalDevice), \ + (physicalDevicePropertiesOut)) + +void ChoosePhysicalDevice( + PFN_vkGetPhysicalDeviceProperties pGetPhysicalDeviceProperties, + PFN_vkGetPhysicalDeviceProperties2KHR pGetPhysicalDeviceProperties2KHR, + PFN_vkEnumerateDeviceExtensionProperties pEnumerateDeviceExtensionProperties, + const std::vector<VkPhysicalDevice> &physicalDevices, + vk::ICD preferredICD, + uint64_t systemDeviceID, + VkPhysicalDevice *physicalDeviceOut, + VkPhysicalDeviceProperties *physicalDevicePropertiesOut) { ASSERT(!physicalDevices.empty()); ICDFilterFunc filter = GetFilterForICD(preferredICD); - const bool shouldChooseByID = (preferredVendorID != 0 || preferredDeviceID != 0); + const bool shouldChooseByID = (systemDeviceID != 0); for (const VkPhysicalDevice &physicalDevice : physicalDevices) { - pGetPhysicalDeviceProperties(physicalDevice, physicalDevicePropertiesOut); - if (filter(*physicalDevicePropertiesOut)) + VkPhysicalDeviceProperties2KHR physicalDeviceProperties2; + physicalDeviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; + physicalDeviceProperties2.pNext = nullptr; + +#if defined(ANGLE_PLATFORM_LINUX) + VkPhysicalDeviceDrmPropertiesEXT drmProperties; + if (shouldChooseByID) { - *physicalDeviceOut = physicalDevice; + uint32_t extensionCount; + VkResult result = pEnumerateDeviceExtensionProperties(physicalDevice, nullptr, + &extensionCount, nullptr); + ASSERT(result == VK_SUCCESS); + std::vector<VkExtensionProperties> extensionProperties(extensionCount); + result = pEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, + extensionProperties.data()); + ASSERT(result == VK_SUCCESS); + bool isPhysicalDeviceDrmAvailable = false; + for (const auto &extension : extensionProperties) + { + if (strcmp(extension.extensionName, VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME) == 0) + { + isPhysicalDeviceDrmAvailable = true; + break; + } + } + if (isPhysicalDeviceDrmAvailable && pGetPhysicalDeviceProperties2KHR) + { + drmProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT; + drmProperties.pNext = nullptr; + physicalDeviceProperties2.pNext = &drmProperties; + } + else + { + continue; + } + } +#endif + vkGetPhysicalDeviceProperties2KHR(physicalDevice, &physicalDeviceProperties2); + if (filter(physicalDeviceProperties2.properties)) + { + *physicalDeviceOut = physicalDevice; + *physicalDevicePropertiesOut = physicalDeviceProperties2.properties; return; } if (shouldChooseByID) { - // NOTE: If the system has multiple GPUs with the same vendor and - // device IDs, this will arbitrarily select one of them. - bool matchVendorID = true; - bool matchDeviceID = true; - - if (preferredVendorID != 0 && - preferredVendorID != physicalDevicePropertiesOut->vendorID) +#if defined(ANGLE_PLATFORM_LINUX) + dev_t drmRenderNodeDeviceId = static_cast<dev_t>(systemDeviceID); + if (drmProperties.hasRender == VK_TRUE && + drmProperties.renderMajor == major(drmRenderNodeDeviceId) && + drmProperties.renderMinor == minor(drmRenderNodeDeviceId)) { - matchVendorID = false; - } - - if (preferredDeviceID != 0 && - preferredDeviceID != physicalDevicePropertiesOut->deviceID) - { - matchDeviceID = false; - } - - if (matchVendorID && matchDeviceID) - { - *physicalDeviceOut = physicalDevice; + *physicalDeviceOut = physicalDevice; + *physicalDevicePropertiesOut = physicalDeviceProperties2.properties; return; } +#endif } } @@ -319,18 +376,23 @@ void ChoosePhysicalDevice(PFN_vkGetPhysicalDeviceProperties pGetPhysicalDevicePr VkPhysicalDeviceProperties integratedDeviceProperties; for (const VkPhysicalDevice &physicalDevice : physicalDevices) { - pGetPhysicalDeviceProperties(physicalDevice, physicalDevicePropertiesOut); + VkPhysicalDeviceProperties2KHR physicalDeviceProperties2; + physicalDeviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; + physicalDeviceProperties2.pNext = nullptr; + vkGetPhysicalDeviceProperties2KHR(physicalDevice, &physicalDeviceProperties2); // If discrete GPU exists, uses it by default. - if (physicalDevicePropertiesOut->deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) + if (physicalDeviceProperties2.properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) { - *physicalDeviceOut = physicalDevice; + *physicalDeviceOut = physicalDevice; + *physicalDevicePropertiesOut = physicalDeviceProperties2.properties; return; } - if (physicalDevicePropertiesOut->deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU && + if (physicalDeviceProperties2.properties.deviceType == + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU && !integratedDevice.valid()) { integratedDevice = physicalDevice; - integratedDeviceProperties = *physicalDevicePropertiesOut; + integratedDeviceProperties = physicalDeviceProperties2.properties; continue; } } @@ -346,9 +408,15 @@ void ChoosePhysicalDevice(PFN_vkGetPhysicalDeviceProperties pGetPhysicalDevicePr WARN() << "Preferred device ICD not found. Using default physicalDevice instead."; // Fallback to the first device. *physicalDeviceOut = physicalDevices[0]; - pGetPhysicalDeviceProperties(*physicalDeviceOut, physicalDevicePropertiesOut); + VkPhysicalDeviceProperties2KHR physicalDeviceProperties2; + physicalDeviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; + physicalDeviceProperties2.pNext = nullptr; + vkGetPhysicalDeviceProperties2KHR(*physicalDeviceOut, &physicalDeviceProperties2); + *physicalDevicePropertiesOut = physicalDeviceProperties2.properties; } +#undef vkGetPhysicalDeviceProperties2KHR + } // namespace vk } // namespace angle diff --git a/third_party/angle/src/common/vulkan/vulkan_icd.h b/third_party/angle/src/common/vulkan/vulkan_icd.h index b2921f820321ba8947f354cfd9d8360432ba87f6..3f2b1fcd363a03e0e267307a5dbc543110bd83bc 100644 --- a/third_party/angle/src/common/vulkan/vulkan_icd.h +++ b/third_party/angle/src/common/vulkan/vulkan_icd.h @@ -57,13 +57,15 @@ class [[nodiscard]] ScopedVkLoaderEnvironment : angle::NonCopyable Optional<std::string> mPreviousNoDeviceSelectEnv; }; -void ChoosePhysicalDevice(PFN_vkGetPhysicalDeviceProperties pGetPhysicalDeviceProperties, - const std::vector<VkPhysicalDevice> &physicalDevices, - vk::ICD preferredICD, - uint32_t preferredVendorID, - uint32_t preferredDeviceID, - VkPhysicalDevice *physicalDeviceOut, - VkPhysicalDeviceProperties *physicalDevicePropertiesOut); +void ChoosePhysicalDevice( + PFN_vkGetPhysicalDeviceProperties pGetPhysicalDeviceProperties, + PFN_vkGetPhysicalDeviceProperties2KHR pGetPhysicalDeviceProperties2KHR, + PFN_vkEnumerateDeviceExtensionProperties pEnumerateDeviceExtensionProperties, + const std::vector<VkPhysicalDevice> &physicalDevices, + vk::ICD preferredICD, + uint64_t systemDeviceID, + VkPhysicalDevice *physicalDeviceOut, + VkPhysicalDeviceProperties *physicalDevicePropertiesOut); } // namespace vk diff --git a/third_party/angle/src/gpu_info_util/SystemInfo_internal.h b/third_party/angle/src/gpu_info_util/SystemInfo_internal.h index 5a3d462ebfa2ba3749f5964020887866921d8105..68bfba4aaf5eb7667b091088202fc6394f5ccf39 100644 --- a/third_party/angle/src/gpu_info_util/SystemInfo_internal.h +++ b/third_party/angle/src/gpu_info_util/SystemInfo_internal.h @@ -19,6 +19,8 @@ namespace angle bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices); // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined. bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version); +// Defined in SystemInfo_libdrm when GPU_INFO_USE_LIBDRM is defined. +bool GetDevicesWithLibDRM(std::vector<GPUDeviceInfo> *devices); // Target specific helper functions that can be compiled on all targets // Live in SystemInfo.cpp diff --git a/third_party/angle/src/gpu_info_util/SystemInfo_libdrm.cpp b/third_party/angle/src/gpu_info_util/SystemInfo_libdrm.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ae9e455aa9ce34525e4e11e129fdaf6570d6e17b --- /dev/null +++ b/third_party/angle/src/gpu_info_util/SystemInfo_libdrm.cpp @@ -0,0 +1,77 @@ +// +// Copyright 2023 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// SystemInfo_libdrm.cpp: implementation of the libdrm-specific parts of SystemInfo.h + +#include "gpu_info_util/SystemInfo_internal.h" + +#include <fcntl.h> +#include <sys/stat.h> +#include <unistd.h> +#include <xf86drm.h> +#include <string> +#include <vector> + +#if !defined(GPU_INFO_USE_LIBDRM) +# error SystemInfo_libdrm.cpp compiled without GPU_INFO_USE_LIBDRM +#endif + +namespace angle +{ + +// Adds an entry per GPU found and fills the device, vendor and system device ID. +bool GetDevicesWithLibDRM(std::vector<GPUDeviceInfo> *devices) +{ + int numDevices = drmGetDevices2(DRM_DEVICE_GET_PCI_REVISION, nullptr, 0); + if (numDevices <= 0) + return false; + + std::vector<drmDevicePtr> drmDevices(numDevices); + if (drmGetDevices2(DRM_DEVICE_GET_PCI_REVISION, drmDevices.data(), numDevices) != numDevices) + return false; + + for (drmDevicePtr drmDevice : drmDevices) + { + if (!(drmDevice->available_nodes & (1 << DRM_NODE_RENDER))) + continue; + const char *render_node = drmDevice->nodes[DRM_NODE_RENDER]; + + int fd = open(render_node, O_RDWR | O_CLOEXEC); + if (fd < 0) + continue; + + struct stat sb; + if (fstat(fd, &sb) < 0) + continue; + + drmVersionPtr version = drmGetVersion(fd); + std::string driverName(version->name, version->name_len); + drmFreeVersion(version); + + close(fd); + + // skip the virtual GEM kernel driver + if (driverName == "vgem") + continue; + + GPUDeviceInfo info; + info.systemDeviceId = sb.st_rdev; + if (drmDevice->bustype == DRM_BUS_PCI) + { + info.vendorId = drmDevice->deviceinfo.pci->vendor_id; + info.deviceId = drmDevice->deviceinfo.pci->device_id; + info.revisionId = drmDevice->deviceinfo.pci->revision_id; + } + + devices->push_back(info); + } + + drmFreeDevices(drmDevices.data(), numDevices); + + return !devices->empty(); +} + +} // namespace angle diff --git a/third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp b/third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp index ce0c349e8435519bf48db99486cfcedab8ea0230..42797a3b70dbe062702ce809c3485a543cdbb808 100644 --- a/third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp +++ b/third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp @@ -69,16 +69,26 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices) } #endif +#if !defined(GPU_INFO_USE_LIBDRM) +bool GetDevicesWithLibDRM(std::vector<GPUDeviceInfo> *devices) +{ + return false; +} +#endif + bool GetSystemInfo(SystemInfo *info) { - if (!GetPCIDevicesWithLibPCI(&(info->gpus))) + if (!GetDevicesWithLibDRM(&(info->gpus))) { + if (!GetPCIDevicesWithLibPCI(&(info->gpus))) + { #if defined(ANGLE_USE_VULKAN_SYSTEM_INFO) - // Try vulkan backend to get GPU info - return GetSystemInfoVulkan(info); + // Try vulkan backend to get GPU info + return GetSystemInfoVulkan(info); #else - return false; + return false; #endif // defined(ANGLE_HAS_VULKAN_SYSTEM_INFO) + } } if (info->gpus.size() == 0) diff --git a/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp b/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp index 0a58fc97d88a5ef8b92351d520b5bbf7ada63e15..dcd4d17e7103e8c25f44ae64d01dc6f4750aa514 100644 --- a/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp +++ b/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp @@ -48,6 +48,11 @@ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version) } } + if (display) + { + XCloseDisplay(display); + } + return false; } } // namespace angle diff --git a/third_party/angle/src/libANGLE/Caps.cpp b/third_party/angle/src/libANGLE/Caps.cpp index 71193b3a399af47efa193bb47f91192efa2c3375..0d65d1062849d9abd74c3cf376090abe391550d9 100644 --- a/third_party/angle/src/libANGLE/Caps.cpp +++ b/third_party/angle/src/libANGLE/Caps.cpp @@ -1384,6 +1384,7 @@ std::vector<std::string> ClientExtensions::getStrings() const InsertExtensionString("EGL_EXT_platform_device", platformDevice, &extensionStrings); InsertExtensionString("EGL_KHR_platform_gbm", platformGbmKHR, &extensionStrings); InsertExtensionString("EGL_EXT_platform_wayland", platformWaylandEXT, &extensionStrings); + InsertExtensionString("EGL_MESA_platform_surfaceless", platformSurfacelessMESA, &extensionStrings); InsertExtensionString("EGL_ANGLE_platform_angle", platformANGLE, &extensionStrings); InsertExtensionString("EGL_ANGLE_platform_angle_d3d", platformANGLED3D, &extensionStrings); InsertExtensionString("EGL_ANGLE_platform_angle_d3d11on12", platformANGLED3D11ON12, &extensionStrings); diff --git a/third_party/angle/src/libANGLE/Caps.h b/third_party/angle/src/libANGLE/Caps.h index 35eaca3f2c14dad423eed80b5dee4013e3141af3..458e41d8378e63c9cca1e7db56e1e4061d4468ca 100644 --- a/third_party/angle/src/libANGLE/Caps.h +++ b/third_party/angle/src/libANGLE/Caps.h @@ -732,6 +732,9 @@ struct ClientExtensions // EGL_EXT_platform_wayland bool platformWaylandEXT = false; + // EGL_MESA_platform_surfaceless + bool platformSurfacelessMESA = false; + // EGL_ANGLE_platform_angle bool platformANGLE = false; diff --git a/third_party/angle/src/libANGLE/Display.cpp b/third_party/angle/src/libANGLE/Display.cpp index eec4a96d6e1c2c9bd069127b1dca4eb402c8ea26..1ee7dbb5427c94ffb35aef01baeed804f7569662 100644 --- a/third_party/angle/src/libANGLE/Display.cpp +++ b/third_party/angle/src/libANGLE/Display.cpp @@ -414,6 +414,11 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType, break; } # endif + if (platformType == EGL_PLATFORM_SURFACELESS_MESA) + { + impl = new rx::DisplayEGL(state); + break; + } break; # elif defined(ANGLE_PLATFORM_ANDROID) @@ -437,11 +442,8 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType, impl = new rx::DisplayWGL(state); # elif defined(ANGLE_PLATFORM_LINUX) # if defined(ANGLE_USE_GBM) - if (platformType == 0 || - platformType == EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE) + if (platformType == 0) { - // platformType == EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE is a hack, - // to allow ChromeOS GLES backend to continue functioning when Vulkan is enabled. impl = new rx::DisplayEGL(state); break; } @@ -460,6 +462,11 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType, break; } # endif + if (platformType == EGL_PLATFORM_SURFACELESS_MESA) + { + impl = new rx::DisplayEGL(state); + break; + } } # elif defined(ANGLE_PLATFORM_ANDROID) impl = new rx::DisplayAndroid(state); @@ -506,6 +513,12 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType, break; } # endif + if (platformType == EGL_PLATFORM_SURFACELESS_MESA && + rx::IsVulkanOffscreenDisplayAvailable()) + { + impl = rx::CreateVulkanOffscreenDisplay(state); + break; + } # if defined(ANGLE_USE_VULKAN_DISPLAY) if (platformType == EGL_PLATFORM_VULKAN_DISPLAY_MODE_SIMPLE_ANGLE && rx::IsVulkanSimpleDisplayAvailable()) @@ -517,6 +530,10 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType, { impl = rx::CreateVulkanHeadlessDisplay(state); } + else if (rx::IsVulkanOffscreenDisplayAvailable()) + { + impl = rx::CreateVulkanOffscreenDisplay(state); + } else { // Not supported creation type on vulkan display, fail display creation. @@ -945,6 +962,7 @@ Display::~Display() case EGL_PLATFORM_ANGLE_ANGLE: case EGL_PLATFORM_GBM_KHR: case EGL_PLATFORM_WAYLAND_EXT: + case EGL_PLATFORM_SURFACELESS_MESA: { ANGLEPlatformDisplayMap *displays = GetANGLEPlatformDisplayMap(); ANGLEPlatformDisplayMap::iterator iter = displays->find(ANGLEPlatformDisplay( @@ -2117,6 +2135,10 @@ static ClientExtensions GenerateClientExtensions() extensions.platformWaylandEXT = true; #endif +#if defined(ANGLE_PLATFORM_LINUX) && (defined(ANGLE_ENABLE_OPENGL) || defined(ANGLE_ENABLE_VULKAN)) + extensions.platformSurfacelessMESA = true; +#endif + #if defined(ANGLE_ENABLE_D3D11) # if defined(ANGLE_ENABLE_WINDOWS_UWP) extensions.platformANGLED3D11ON12 = true; @@ -2141,8 +2163,7 @@ static ClientExtensions GenerateClientExtensions() #endif #if defined(ANGLE_ENABLE_VULKAN) - extensions.platformANGLEVulkan = true; - extensions.platformANGLEDeviceId = true; + extensions.platformANGLEVulkan = true; #endif #if defined(ANGLE_ENABLE_SWIFTSHADER) @@ -2174,6 +2195,10 @@ static ClientExtensions GenerateClientExtensions() extensions.displayPowerPreferenceANGLE = true; #endif +#if defined(ANGLE_PLATFORM_LINUX) && (defined(ANGLE_ENABLE_OPENGL) || defined(ANGLE_ENABLE_VULKAN)) + extensions.platformANGLEDeviceId = true; +#endif + extensions.clientGetAllProcAddresses = true; extensions.debug = true; extensions.featureControlANGLE = true; diff --git a/third_party/angle/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp b/third_party/angle/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp index da4feaf278fb6afdfdfa8c1372ed285c3bb52f83..d5c2f966cb43c72df71fd74f2a80b4a716d740ff 100644 --- a/third_party/angle/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp +++ b/third_party/angle/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp @@ -257,8 +257,8 @@ egl::Error DisplayEGL::initialize(egl::Display *display) reinterpret_cast<void *>(mDisplayAttributes.get(EGL_PLATFORM_ANGLE_EGL_HANDLE_ANGLE, 0)); EGLAttrib platformType = mDisplayAttributes.get(EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE, 0); - ANGLE_TRY( - mEGL->initialize(platformType, display->getNativeDisplayId(), getEGLPath(), eglHandle)); + ANGLE_TRY(mEGL->initialize(platformType, display->getNativeDisplayId(), mDisplayAttributes, + getEGLPath(), eglHandle)); gl::Version eglVersion(mEGL->majorVersion, mEGL->minorVersion); if (eglVersion < gl::Version(1, 4)) diff --git a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp index c29aee66d8c27d402cd5d71e448d51e81487d305..70731986d59f26856fc0cd257d0517755a28d803 100644 --- a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp +++ b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp @@ -8,10 +8,12 @@ #include "libANGLE/renderer/gl/egl/FunctionsEGL.h" +#include <sys/stat.h> #include <algorithm> #include "common/platform.h" #include "common/string_utils.h" +#include "gpu_info_util/SystemInfo.h" #include "libANGLE/renderer/driver_utils.h" #include "libANGLE/renderer/gl/FunctionsGL.h" #include "libANGLE/renderer/gl/egl/functionsegl_typedefs.h" @@ -188,7 +190,9 @@ FunctionsEGL::~FunctionsEGL() SafeDelete(mFnPtrs); } -egl::Error FunctionsEGL::initialize(EGLAttrib platformType, EGLNativeDisplayType nativeDisplay) +egl::Error FunctionsEGL::initialize(EGLAttrib platformType, + EGLNativeDisplayType nativeDisplay, + const egl::AttributeMap &displayAttributes) { #define ANGLE_GET_PROC_OR_WARNING(MEMBER, NAME) \ do \ @@ -231,31 +235,46 @@ egl::Error FunctionsEGL::initialize(EGLAttrib platformType, EGLNativeDisplayType ANGLE_GET_PROC_OR_ERROR(&mFnPtrs->surfaceAttribPtr, eglSurfaceAttrib); ANGLE_GET_PROC_OR_ERROR(&mFnPtrs->swapIntervalPtr, eglSwapInterval); - if (IsValidPlatformTypeForPlatformDisplayConnection(platformType)) - { - mEGLDisplay = getPlatformDisplay(platformType, nativeDisplay); - } - else + uint32_t systemDeviceIDHigh = + static_cast<uint32_t>(displayAttributes.get(EGL_PLATFORM_ANGLE_DEVICE_ID_HIGH_ANGLE, 0)); + uint32_t systemDeviceIDLow = + static_cast<uint32_t>(displayAttributes.get(EGL_PLATFORM_ANGLE_DEVICE_ID_LOW_ANGLE, 0)); + uint64_t systemDeviceID = + angle::GetSystemDeviceIdFromParts(systemDeviceIDHigh, systemDeviceIDLow); + + if (systemDeviceID != 0) { - mEGLDisplay = mFnPtrs->getDisplayPtr(nativeDisplay); + // If a native device ID was provided, try looking for that specific device first. + mEGLDisplay = getNativeDisplay(&minorVersion, &majorVersion, systemDeviceID); } - if (mEGLDisplay != EGL_NO_DISPLAY) + if (mEGLDisplay == EGL_NO_DISPLAY) { - if (mFnPtrs->initializePtr(mEGLDisplay, &majorVersion, &minorVersion) != EGL_TRUE) + if (IsValidPlatformTypeForPlatformDisplayConnection(platformType)) + { + mEGLDisplay = getPlatformDisplay(platformType, nativeDisplay); + } + else { - return egl::Error(mFnPtrs->getErrorPtr(), "Failed to initialize system egl"); + mEGLDisplay = mFnPtrs->getDisplayPtr(nativeDisplay); + } + + if (mEGLDisplay != EGL_NO_DISPLAY && + mFnPtrs->initializePtr(mEGLDisplay, &majorVersion, &minorVersion) != EGL_TRUE) + { + mEGLDisplay = EGL_NO_DISPLAY; } } - else + + if (mEGLDisplay == EGL_NO_DISPLAY) { // If no display was available, try to fallback to the first available // native device object's display. mEGLDisplay = getNativeDisplay(&majorVersion, &minorVersion); - if (mEGLDisplay == EGL_NO_DISPLAY) - { - return egl::EglNotInitialized() << "Failed to get system egl display"; - } + } + if (mEGLDisplay == EGL_NO_DISPLAY) + { + return egl::EglNotInitialized() << "Failed to get system egl display"; } if (majorVersion < 1 || (majorVersion == 1 && minorVersion < 4)) { @@ -410,7 +429,7 @@ EGLDisplay FunctionsEGL::getPlatformDisplay(EGLAttrib platformType, reinterpret_cast<void *>(nativeDisplay), nullptr); } -EGLDisplay FunctionsEGL::getNativeDisplay(int *major, int *minor) +EGLDisplay FunctionsEGL::getNativeDisplay(int *major, int *minor, uint64_t systemDeviceID) { // We haven't queried extensions yet since some platforms require a display // to do so. We'll query them now since we need some for this fallback, and @@ -422,10 +441,11 @@ EGLDisplay FunctionsEGL::getNativeDisplay(int *major, int *minor) } angle::SplitStringAlongWhitespace(extensions, &mExtensions); - // This fallback mechanism makes use of: + // This function makes use of: // - EGL_EXT_device_enumeration or EGL_EXT_device_base for eglQueryDevicesEXT // - EGL_EXT_platform_base for eglGetPlatformDisplayEXT // - EGL_EXT_platform_device for EGL_PLATFORM_DEVICE_EXT + // - EGL_EXT_device_query for eglQueryDeviceStringEXT if systemDeviceID is non-zero PFNEGLQUERYDEVICESEXTPROC queryDevices; PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay; bool hasQueryDevicesEXT = @@ -442,6 +462,20 @@ EGLDisplay FunctionsEGL::getNativeDisplay(int *major, int *minor) return EGL_NO_DISPLAY; } + PFNEGLQUERYDEVICESTRINGEXTPROC queryDeviceString = nullptr; + if (systemDeviceID != 0) + { + bool hasQueryDeviceStringEXT = hasExtension("EGL_EXT_device_query"); + if (!hasQueryDeviceStringEXT) + { + return EGL_NO_DISPLAY; + } + if (!SetPtr(&queryDeviceString, getProcAddress("eglQueryDeviceStringEXT"))) + { + return EGL_NO_DISPLAY; + } + } + // Get a list of native device objects. const EGLint kMaxDevices = 32; EGLDeviceEXT eglDevices[kMaxDevices]; @@ -454,6 +488,24 @@ EGLDisplay FunctionsEGL::getNativeDisplay(int *major, int *minor) // Look for the first native device that gives us a valid display. for (EGLint i = 0; i < numDevices; i++) { + if (systemDeviceID != 0) + { +#if defined(ANGLE_PLATFORM_LINUX) + // We are looking for a specific DRM device. + const char *renderNodePath = + queryDeviceString(eglDevices[i], EGL_DRM_RENDER_NODE_FILE_EXT); + if (!renderNodePath) + continue; + struct stat sb; + if (stat(renderNodePath, &sb) < 0) + continue; + if (sb.st_rdev != systemDeviceID) + continue; +#else + // The other EGL using platform (Android) does not have a concept of a system device ID. + continue; +#endif + } EGLDisplay display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, eglDevices[i], nullptr); if (mFnPtrs->getErrorPtr() != EGL_SUCCESS) { diff --git a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.h b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.h index b93ea49e6b79981b864a186f42f5c6007962c161..cb42aa80e0d80d03830df921b2f5d1b964a5efc1 100644 --- a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.h +++ b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGL.h @@ -15,6 +15,7 @@ #include <string> #include <vector> +#include "libANGLE/AttributeMap.h" #include "libANGLE/Error.h" namespace rx @@ -33,7 +34,9 @@ class FunctionsEGL std::string vendorString; std::string versionString; - egl::Error initialize(EGLAttrib platformType, EGLNativeDisplayType nativeDisplay); + egl::Error initialize(EGLAttrib platformType, + EGLNativeDisplayType nativeDisplay, + const egl::AttributeMap &displayAttributes); egl::Error terminate(); virtual void *getProcAddress(const char *name) const = 0; @@ -130,7 +133,7 @@ class FunctionsEGL EGLDisplay getPlatformDisplay(EGLAttrib platformType, EGLNativeDisplayType nativeDisplay); // Fallback mechanism for creating a display from a native device object. - EGLDisplay getNativeDisplay(int *major, int *minor); + EGLDisplay getNativeDisplay(int *major, int *minor, uint64_t systemDeviceID = 0); struct EGLDispatchTable; EGLDispatchTable *mFnPtrs; diff --git a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp index 8ad1e18292405e40f59310d5e3416fe6692949be..100bc6dfc477261555a59ed056b14a492613049e 100644 --- a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp +++ b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp @@ -30,6 +30,7 @@ FunctionsEGLDL::~FunctionsEGLDL() {} egl::Error FunctionsEGLDL::initialize(EGLAttrib platformType, EGLNativeDisplayType nativeDisplay, + const egl::AttributeMap &displayAttributes, const char *libName, void *eglHandle) { @@ -57,7 +58,7 @@ egl::Error FunctionsEGLDL::initialize(EGLAttrib platformType, return egl::EglNotInitialized() << "Could not find eglGetProcAddress"; } - return FunctionsEGL::initialize(platformType, nativeDisplay); + return FunctionsEGL::initialize(platformType, nativeDisplay, displayAttributes); } void *FunctionsEGLDL::getProcAddress(const char *name) const diff --git a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.h b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.h index 22cfaf952404fd7d0dd1956708933974328857a0..dda6522de0a74da20dbe57481cd4d0095cbb1faf 100644 --- a/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.h +++ b/third_party/angle/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.h @@ -22,6 +22,7 @@ class FunctionsEGLDL : public FunctionsEGL egl::Error initialize(EGLAttrib platformType, EGLNativeDisplayType nativeDisplay, + const egl::AttributeMap &displayAttributes, const char *libName, void *eglHandle); void *getProcAddress(const char *name) const override; diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk.cpp index 7a0d7f8e4968a27a6b3f8e1bb9da8db7850d0f5b..f1c2ef5a0a6ec34381ad8545fa7b726553223613 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk.cpp +++ b/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk.cpp @@ -485,10 +485,10 @@ void DisplayVk::generateExtensions(egl::DisplayExtensions *outExtensions) const outExtensions->contextPriority = !getRenderer()->getFeatures().allocateNonZeroMemory.enabled; outExtensions->noConfigContext = true; -#if defined(ANGLE_PLATFORM_ANDROID) +#if defined(ANGLE_PLATFORM_ANDROID) || defined(ANGLE_PLATFORM_LINUX) outExtensions->nativeFenceSyncANDROID = getRenderer()->getFeatures().supportsAndroidNativeFenceSync.enabled; -#endif // defined(ANGLE_PLATFORM_ANDROID) +#endif // defined(ANGLE_PLATFORM_ANDROID) || defined(ANGLE_PLATFORM_LINUX) #if defined(ANGLE_PLATFORM_GGP) outExtensions->ggpStreamDescriptor = true; diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h b/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h index 6bc977c6a5c9b68a6f51ceca7b02fcfe1983281e..459dfc298ca0391a72bb4de5efff80f3e931156b 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h +++ b/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h @@ -38,6 +38,9 @@ DisplayImpl *CreateVulkanSimpleDisplay(const egl::DisplayState &state); bool IsVulkanHeadlessDisplayAvailable(); DisplayImpl *CreateVulkanHeadlessDisplay(const egl::DisplayState &state); + +bool IsVulkanOffscreenDisplayAvailable(); +DisplayImpl *CreateVulkanOffscreenDisplay(const egl::DisplayState &state); #endif // defined(ANGLE_PLATFORM_LINUX) #if defined(ANGLE_PLATFORM_ANDROID) diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/RendererVk.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/RendererVk.cpp index 2d767dd349511bb21cb0fd9d8fc32412de19f071..3600468d69b655a5ea47c618200c4ec074cc8d6b 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/RendererVk.cpp +++ b/third_party/angle/src/libANGLE/renderer/vulkan/RendererVk.cpp @@ -1874,13 +1874,15 @@ angle::Result RendererVk::initialize(DisplayVk *displayVk, std::vector<VkPhysicalDevice> physicalDevices(physicalDeviceCount); ANGLE_VK_TRY(displayVk, vkEnumeratePhysicalDevices(mInstance, &physicalDeviceCount, physicalDevices.data())); - uint32_t preferredVendorId = + uint32_t systemDeviceIDHigh = static_cast<uint32_t>(attribs.get(EGL_PLATFORM_ANGLE_DEVICE_ID_HIGH_ANGLE, 0)); - uint32_t preferredDeviceId = + uint32_t systemDeviceIDLow = static_cast<uint32_t>(attribs.get(EGL_PLATFORM_ANGLE_DEVICE_ID_LOW_ANGLE, 0)); - ChoosePhysicalDevice(vkGetPhysicalDeviceProperties, physicalDevices, mEnabledICD, - preferredVendorId, preferredDeviceId, &mPhysicalDevice, - &mPhysicalDeviceProperties); + uint64_t systemDeviceID = + angle::GetSystemDeviceIdFromParts(systemDeviceIDHigh, systemDeviceIDLow); + ChoosePhysicalDevice(vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceProperties2KHR, + vkEnumerateDeviceExtensionProperties, physicalDevices, mEnabledICD, + systemDeviceID, &mPhysicalDevice, &mPhysicalDeviceProperties); // The device version that is assumed by ANGLE is the minimum of the actual device version and // the highest it's allowed to use. @@ -4000,7 +4002,7 @@ void RendererVk::initFeatures(DisplayVk *displayVk, &mFeatures, supportsExternalFenceFd, ExtensionFound(VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME, deviceExtensionNames)); -#if defined(ANGLE_PLATFORM_ANDROID) +#if defined(ANGLE_PLATFORM_ANDROID) || defined(ANGLE_PLATFORM_LINUX) if (mFeatures.supportsExternalFenceCapabilities.enabled && mFeatures.supportsExternalSemaphoreCapabilities.enabled) { @@ -4037,7 +4039,7 @@ void RendererVk::initFeatures(DisplayVk *displayVk, (mFeatures.supportsExternalFenceFd.enabled && mFeatures.supportsExternalSemaphoreFd.enabled)); } -#endif // defined(ANGLE_PLATFORM_ANDROID) +#endif // defined(ANGLE_PLATFORM_ANDROID) || defined(ANGLE_PLATFORM_LINUX) ANGLE_FEATURE_CONDITION( &mFeatures, supportsShaderStencilExport, diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.cpp index c7d0c165a9620df24bf810375bdb8c83cfbaa961..a3fa61c1bbb36a92070b666bbd3ff25e29386093 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.cpp +++ b/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.cpp @@ -1267,6 +1267,18 @@ void UtilsVk::destroy(ContextVk *contextVk) mDescriptorPools[f].destroy(renderer); } + for (auto &item : mImageCopyWithSamplerPipelineLayouts) + { + const vk::SamplerDesc &samplerDesc = item.first; + + for (auto &descriptorSetLayout : mImageCopyWithSamplerDescriptorSetLayouts[samplerDesc]) + { + descriptorSetLayout.reset(); + } + mImageCopyWithSamplerPipelineLayouts[samplerDesc].reset(); + mImageCopyWithSamplerDescriptorPools[samplerDesc].destroy(renderer); + } + for (ComputeShaderProgramAndPipelines &programAndPipelines : mConvertIndex) { programAndPipelines.program.destroy(renderer); @@ -1311,6 +1323,15 @@ void UtilsVk::destroy(ContextVk *contextVk) programAndPipelines.program.destroy(renderer); programAndPipelines.pipelines.destroy(contextVk); } + for (auto &iter : mImageCopyWithSampler) + { + for (auto &subIter : iter) + { + GraphicsShaderProgramAndPipelines &programAndPipelines = subIter.second; + programAndPipelines.program.destroy(renderer); + programAndPipelines.pipelines.destroy(contextVk); + } + } for (ComputeShaderProgramAndPipelines &programAndPipelines : mCopyImageToBuffer) { programAndPipelines.program.destroy(renderer); @@ -1553,6 +1574,48 @@ angle::Result UtilsVk::ensureImageCopyResourcesInitialized(ContextVk *contextVk) sizeof(ImageCopyShaderParams)); } +angle::Result UtilsVk::ensureImageCopyResourcesInitializedWithSampler( + ContextVk *contextVk, + const vk::SamplerDesc &samplerDesc) +{ + if (mImageCopyWithSamplerPipelineLayouts[samplerDesc].valid()) + { + return angle::Result::Continue; + } + + vk::SamplerBinding sampler; + ANGLE_TRY( + contextVk->getRenderer()->getSamplerCache().getSampler(contextVk, samplerDesc, &sampler)); + + vk::DescriptorSetLayoutDesc descriptorSetDesc; + descriptorSetDesc.update(0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, + VK_SHADER_STAGE_FRAGMENT_BIT, &sampler.get().get()); + + ANGLE_TRY(contextVk->getDescriptorSetLayoutCache().getDescriptorSetLayout( + contextVk, descriptorSetDesc, + &mImageCopyWithSamplerDescriptorSetLayouts[samplerDesc][DescriptorSetIndex::Internal])); + + VkDescriptorPoolSize setSizes[1] = { + // A single YCbCr sampler may consume up to 3 descriptors. + {VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 3}, + }; + ANGLE_TRY(mImageCopyWithSamplerDescriptorPools[samplerDesc].init( + contextVk, setSizes, 1, + mImageCopyWithSamplerDescriptorSetLayouts[samplerDesc][DescriptorSetIndex::Internal] + .get())); + + vk::PipelineLayoutDesc pipelineLayoutDesc; + pipelineLayoutDesc.updateDescriptorSetLayout(DescriptorSetIndex::Internal, descriptorSetDesc); + pipelineLayoutDesc.updatePushConstantRange(VK_SHADER_STAGE_FRAGMENT_BIT, 0, + sizeof(ImageCopyShaderParams)); + + ANGLE_TRY(contextVk->getPipelineLayoutCache().getPipelineLayout( + contextVk, pipelineLayoutDesc, mImageCopyWithSamplerDescriptorSetLayouts[samplerDesc], + &mImageCopyWithSamplerPipelineLayouts[samplerDesc])); + + return angle::Result::Continue; +} + angle::Result UtilsVk::ensureCopyImageToBufferResourcesInitialized(ContextVk *contextVk) { if (mPipelineLayouts[Function::CopyImageToBuffer].valid()) @@ -1775,23 +1838,20 @@ angle::Result UtilsVk::setupComputeProgram( return angle::Result::Continue; } -angle::Result UtilsVk::setupGraphicsProgram(ContextVk *contextVk, - Function function, - vk::RefCounted<vk::ShaderModule> *vsShader, - vk::RefCounted<vk::ShaderModule> *fsShader, - GraphicsShaderProgramAndPipelines *programAndPipelines, - const vk::GraphicsPipelineDesc *pipelineDesc, - const VkDescriptorSet descriptorSet, - const void *pushConstants, - size_t pushConstantsSize, - vk::RenderPassCommandBuffer *commandBuffer) +angle::Result UtilsVk::setupGraphicsProgramWithLayout( + ContextVk *contextVk, + const vk::PipelineLayout &pipelineLayout, + vk::RefCounted<vk::ShaderModule> *vsShader, + vk::RefCounted<vk::ShaderModule> *fsShader, + GraphicsShaderProgramAndPipelines *programAndPipelines, + const vk::GraphicsPipelineDesc *pipelineDesc, + const VkDescriptorSet descriptorSet, + const void *pushConstants, + size_t pushConstantsSize, + vk::RenderPassCommandBuffer *commandBuffer) { RendererVk *renderer = contextVk->getRenderer(); - ASSERT(function < Function::ComputeStartIndex); - - const vk::BindingPointer<vk::PipelineLayout> &pipelineLayout = mPipelineLayouts[function]; - if (!programAndPipelines->program.valid(gl::ShaderType::Vertex)) { programAndPipelines->program.setShader(gl::ShaderType::Vertex, vsShader); @@ -1817,7 +1877,7 @@ angle::Result UtilsVk::setupGraphicsProgram(ContextVk *contextVk, { ANGLE_TRY(programAndPipelines->program.createGraphicsPipeline( contextVk, &programAndPipelines->pipelines, &pipelineCache, *compatibleRenderPass, - pipelineLayout.get(), PipelineSource::Utils, *pipelineDesc, {}, &descPtr, &helper)); + pipelineLayout, PipelineSource::Utils, *pipelineDesc, {}, &descPtr, &helper)); } contextVk->getStartedRenderPassCommands().retainResource(helper); @@ -1827,7 +1887,7 @@ angle::Result UtilsVk::setupGraphicsProgram(ContextVk *contextVk, if (descriptorSet != VK_NULL_HANDLE) { - commandBuffer->bindDescriptorSets(pipelineLayout.get(), VK_PIPELINE_BIND_POINT_GRAPHICS, + commandBuffer->bindDescriptorSets(pipelineLayout, VK_PIPELINE_BIND_POINT_GRAPHICS, DescriptorSetIndex::Internal, 1, &descriptorSet, 0, nullptr); contextVk->invalidateGraphicsDescriptorSet(DescriptorSetIndex::Internal); @@ -1835,7 +1895,7 @@ angle::Result UtilsVk::setupGraphicsProgram(ContextVk *contextVk, if (pushConstants) { - commandBuffer->pushConstants(pipelineLayout.get(), VK_SHADER_STAGE_FRAGMENT_BIT, 0, + commandBuffer->pushConstants(pipelineLayout, VK_SHADER_STAGE_FRAGMENT_BIT, 0, static_cast<uint32_t>(pushConstantsSize), pushConstants); } @@ -1844,6 +1904,24 @@ angle::Result UtilsVk::setupGraphicsProgram(ContextVk *contextVk, return angle::Result::Continue; } +angle::Result UtilsVk::setupGraphicsProgram(ContextVk *contextVk, + Function function, + vk::RefCounted<vk::ShaderModule> *vsShader, + vk::RefCounted<vk::ShaderModule> *fsShader, + GraphicsShaderProgramAndPipelines *programAndPipelines, + const vk::GraphicsPipelineDesc *pipelineDesc, + const VkDescriptorSet descriptorSet, + const void *pushConstants, + size_t pushConstantsSize, + vk::RenderPassCommandBuffer *commandBuffer) +{ + ASSERT(function < Function::ComputeStartIndex); + + return setupGraphicsProgramWithLayout( + contextVk, mPipelineLayouts[function].get(), vsShader, fsShader, programAndPipelines, + pipelineDesc, descriptorSet, pushConstants, pushConstantsSize, commandBuffer); +} + angle::Result UtilsVk::convertIndexBuffer(ContextVk *contextVk, vk::BufferHelper *dst, vk::BufferHelper *src, @@ -3030,11 +3108,24 @@ angle::Result UtilsVk::copyImage(ContextVk *contextVk, // http://crbug.com/1272266#c22 ASSERT(!contextVk->hasActiveRenderPass()); - ANGLE_TRY(ensureImageCopyResourcesInitialized(contextVk)); - const angle::Format &srcIntendedFormat = src->getIntendedFormat(); const angle::Format &dstIntendedFormat = dst->getIntendedFormat(); + bool isYUV = srcIntendedFormat.isYUV; + + vk::SamplerDesc samplerDesc; + if (isYUV) + { + samplerDesc = vk::SamplerDesc(contextVk, gl::SamplerState(), false, + &src->getYcbcrConversionDesc(), srcIntendedFormat.id); + + ANGLE_TRY(ensureImageCopyResourcesInitializedWithSampler(contextVk, samplerDesc)); + } + else + { + ANGLE_TRY(ensureImageCopyResourcesInitialized(contextVk)); + } + ImageCopyShaderParams shaderParams; shaderParams.flipX = 0; shaderParams.flipY = params.srcFlipY || params.dstFlipY; @@ -3106,7 +3197,12 @@ angle::Result UtilsVk::copyImage(ContextVk *contextVk, } uint32_t flags = GetImageCopyFlags(srcIntendedFormat, dstIntendedFormat); - if (src->getType() == VK_IMAGE_TYPE_3D) + if (isYUV) + { + ASSERT(src->getType() == VK_IMAGE_TYPE_2D); + flags |= ImageCopy_frag::kSrcIsYUV; + } + else if (src->getType() == VK_IMAGE_TYPE_3D) { flags |= ImageCopy_frag::kSrcIs3D; } @@ -3149,8 +3245,16 @@ angle::Result UtilsVk::copyImage(ContextVk *contextVk, startRenderPass(contextVk, dst, destView, renderPassDesc, renderArea, &commandBuffer)); VkDescriptorSet descriptorSet; - ANGLE_TRY(allocateDescriptorSet(contextVk, &contextVk->getStartedRenderPassCommands(), - Function::ImageCopy, &descriptorSet)); + if (isYUV) + { + ANGLE_TRY(allocateDescriptorSetForImageCopyWithSampler( + contextVk, &contextVk->getStartedRenderPassCommands(), samplerDesc, &descriptorSet)); + } + else + { + ANGLE_TRY(allocateDescriptorSet(contextVk, &contextVk->getStartedRenderPassCommands(), + Function::ImageCopy, &descriptorSet)); + } UpdateColorAccess(contextVk, MakeColorBufferMask(0), MakeColorBufferMask(0)); @@ -3169,8 +3273,9 @@ angle::Result UtilsVk::copyImage(ContextVk *contextVk, writeInfo.dstSet = descriptorSet; writeInfo.dstBinding = kImageCopySourceBinding; writeInfo.descriptorCount = 1; - writeInfo.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE; - writeInfo.pImageInfo = &imageInfo; + writeInfo.descriptorType = + isYUV ? VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER : VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE; + writeInfo.pImageInfo = &imageInfo; vkUpdateDescriptorSets(contextVk->getDevice(), 1, &writeInfo, 0, nullptr); @@ -3180,9 +3285,19 @@ angle::Result UtilsVk::copyImage(ContextVk *contextVk, ANGLE_TRY(shaderLibrary.getFullScreenTri_vert(contextVk, 0, &vertexShader)); ANGLE_TRY(shaderLibrary.getImageCopy_frag(contextVk, flags, &fragmentShader)); - ANGLE_TRY(setupGraphicsProgram(contextVk, Function::ImageCopy, vertexShader, fragmentShader, - &mImageCopy[flags], &pipelineDesc, descriptorSet, &shaderParams, - sizeof(shaderParams), commandBuffer)); + if (isYUV) + { + ANGLE_TRY(setupGraphicsProgramWithLayout( + contextVk, mImageCopyWithSamplerPipelineLayouts[samplerDesc].get(), vertexShader, + fragmentShader, &mImageCopyWithSampler[flags][samplerDesc], &pipelineDesc, + descriptorSet, &shaderParams, sizeof(shaderParams), commandBuffer)); + } + else + { + ANGLE_TRY(setupGraphicsProgram(contextVk, Function::ImageCopy, vertexShader, fragmentShader, + &mImageCopy[flags], &pipelineDesc, descriptorSet, + &shaderParams, sizeof(shaderParams), commandBuffer)); + } // Set dynamic state VkViewport viewport; @@ -4238,16 +4353,17 @@ angle::Result UtilsVk::drawOverlay(ContextVk *contextVk, RenderPassClosureReason::TemporaryForOverlayDraw); } -angle::Result UtilsVk::allocateDescriptorSet(ContextVk *contextVk, - vk::CommandBufferHelperCommon *commandBufferHelper, - Function function, - VkDescriptorSet *descriptorSetOut) +angle::Result UtilsVk::allocateDescriptorSetWithLayout( + ContextVk *contextVk, + vk::CommandBufferHelperCommon *commandBufferHelper, + vk::DynamicDescriptorPool &descriptorPool, + const vk::DescriptorSetLayout &descriptorSetLayout, + VkDescriptorSet *descriptorSetOut) { vk::RefCountedDescriptorPoolBinding descriptorPoolBinding; - ANGLE_TRY(mDescriptorPools[function].allocateDescriptorSet( - contextVk, mDescriptorSetLayouts[function][DescriptorSetIndex::Internal].get(), - &descriptorPoolBinding, descriptorSetOut)); + ANGLE_TRY(descriptorPool.allocateDescriptorSet(contextVk, descriptorSetLayout, + &descriptorPoolBinding, descriptorSetOut)); // Add the individual descriptorSet in the resource use list. Because this is a one time use // descriptorSet, we immediately put in the garbage list for recycle. @@ -4262,6 +4378,28 @@ angle::Result UtilsVk::allocateDescriptorSet(ContextVk *contextVk, return angle::Result::Continue; } +angle::Result UtilsVk::allocateDescriptorSet(ContextVk *contextVk, + vk::CommandBufferHelperCommon *commandBufferHelper, + Function function, + VkDescriptorSet *descriptorSetOut) +{ + return allocateDescriptorSetWithLayout( + contextVk, commandBufferHelper, mDescriptorPools[function], + mDescriptorSetLayouts[function][DescriptorSetIndex::Internal].get(), descriptorSetOut); +} + +angle::Result UtilsVk::allocateDescriptorSetForImageCopyWithSampler( + ContextVk *contextVk, + vk::CommandBufferHelperCommon *commandBufferHelper, + const vk::SamplerDesc &samplerDesc, + VkDescriptorSet *descriptorSetOut) +{ + return allocateDescriptorSetWithLayout( + contextVk, commandBufferHelper, mImageCopyWithSamplerDescriptorPools[samplerDesc], + mImageCopyWithSamplerDescriptorSetLayouts[samplerDesc][DescriptorSetIndex::Internal].get(), + descriptorSetOut); +} + UtilsVk::ClearFramebufferParameters::ClearFramebufferParameters() : clearColor(false), clearDepth(false), diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.h b/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.h index 70a871bdab0103da1001ebcb3c0e5bacd41b5ca9..4b0bb55dc7e457360e6184f48bf845cd2d3757a1 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.h +++ b/third_party/angle/src/libANGLE/renderer/vulkan/UtilsVk.h @@ -542,6 +542,17 @@ class UtilsVk : angle::NonCopyable const void *pushConstants, size_t pushConstantsSize, vk::OutsideRenderPassCommandBufferHelper *commandBufferHelper); + angle::Result setupGraphicsProgramWithLayout( + ContextVk *contextVk, + const vk::PipelineLayout &pipelineLayout, + vk::RefCounted<vk::ShaderModule> *vsShader, + vk::RefCounted<vk::ShaderModule> *fsShader, + GraphicsShaderProgramAndPipelines *programAndPipelines, + const vk::GraphicsPipelineDesc *pipelineDesc, + const VkDescriptorSet descriptorSet, + const void *pushConstants, + size_t pushConstantsSize, + vk::RenderPassCommandBuffer *commandBuffer); angle::Result setupGraphicsProgram(ContextVk *contextVk, Function function, vk::RefCounted<vk::ShaderModule> *vsShader, @@ -584,6 +595,10 @@ class UtilsVk : angle::NonCopyable Function function, uint32_t attachmentIndex); + angle::Result ensureImageCopyResourcesInitializedWithSampler( + ContextVk *contextVk, + const vk::SamplerDesc &samplerDesc); + angle::Result ensureSamplersInitialized(ContextVk *context); angle::Result startRenderPass(ContextVk *contextVk, @@ -612,15 +627,35 @@ class UtilsVk : angle::NonCopyable const BlitResolveParameters ¶ms); // Allocates a single descriptor set. + angle::Result allocateDescriptorSetWithLayout( + ContextVk *contextVk, + vk::CommandBufferHelperCommon *commandBufferHelper, + vk::DynamicDescriptorPool &descriptorPool, + const vk::DescriptorSetLayout &descriptorSetLayout, + VkDescriptorSet *descriptorSetOut); + angle::Result allocateDescriptorSet(ContextVk *contextVk, vk::CommandBufferHelperCommon *commandBufferHelper, Function function, VkDescriptorSet *descriptorSetOut); + angle::Result allocateDescriptorSetForImageCopyWithSampler( + ContextVk *contextVk, + vk::CommandBufferHelperCommon *commandBufferHelper, + const vk::SamplerDesc &samplerDesc, + VkDescriptorSet *descriptorSetOut); + angle::PackedEnumMap<Function, vk::DescriptorSetLayoutPointerArray> mDescriptorSetLayouts; angle::PackedEnumMap<Function, vk::BindingPointer<vk::PipelineLayout>> mPipelineLayouts; angle::PackedEnumMap<Function, vk::DynamicDescriptorPool> mDescriptorPools; + std::unordered_map<vk::SamplerDesc, vk::DescriptorSetLayoutPointerArray> + mImageCopyWithSamplerDescriptorSetLayouts; + std::unordered_map<vk::SamplerDesc, vk::BindingPointer<vk::PipelineLayout>> + mImageCopyWithSamplerPipelineLayouts; + std::unordered_map<vk::SamplerDesc, vk::DynamicDescriptorPool> + mImageCopyWithSamplerDescriptorPools; + ComputeShaderProgramAndPipelines mConvertIndex[vk::InternalShader::ConvertIndex_comp::kArrayLen]; ComputeShaderProgramAndPipelines mConvertIndexIndirectLineLoop @@ -632,6 +667,8 @@ class UtilsVk : angle::NonCopyable GraphicsShaderProgramAndPipelines mImageClearVSOnly; GraphicsShaderProgramAndPipelines mImageClear[vk::InternalShader::ImageClear_frag::kArrayLen]; GraphicsShaderProgramAndPipelines mImageCopy[vk::InternalShader::ImageCopy_frag::kArrayLen]; + std::unordered_map<vk::SamplerDesc, GraphicsShaderProgramAndPipelines> + mImageCopyWithSampler[vk::InternalShader::ImageCopy_frag::kArrayLen]; ComputeShaderProgramAndPipelines mCopyImageToBuffer[vk::InternalShader::CopyImageToBuffer_comp::kArrayLen]; GraphicsShaderProgramAndPipelines mBlitResolve[vk::InternalShader::BlitResolve_frag::kArrayLen]; diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/linux/DisplayVkOffscreen.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/linux/DisplayVkOffscreen.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9ffbe71afdd4b9e57273bcf014f99063d8f9751b --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/linux/DisplayVkOffscreen.cpp @@ -0,0 +1,61 @@ +// +// Copyright 2023 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// DisplayVkOffscreen.cpp: +// Implements the class methods for DisplayVkOffscreen. +// + +#include "DisplayVkOffscreen.h" + +#include "common/debug.h" +#include "libANGLE/renderer/vulkan/vk_caps_utils.h" + +namespace rx +{ + +DisplayVkOffscreen::DisplayVkOffscreen(const egl::DisplayState &state) : DisplayVkLinux(state) {} + +bool DisplayVkOffscreen::isValidNativeWindow(EGLNativeWindowType window) const +{ + return false; +} + +bool DisplayVkOffscreen::isUsingSwapchain() const +{ + return false; +} + +SurfaceImpl *DisplayVkOffscreen::createWindowSurfaceVk(const egl::SurfaceState &state, + EGLNativeWindowType window) +{ + UNREACHABLE(); + return nullptr; +} + +egl::ConfigSet DisplayVkOffscreen::generateConfigs() +{ + constexpr GLenum kColorFormats[] = {GL_RGBA8, GL_BGRA8_EXT, GL_RGB565, GL_RGB8}; + + return egl_vk::GenerateConfigs(kColorFormats, egl_vk::kConfigDepthStencilFormats, this); +} + +void DisplayVkOffscreen::checkConfigSupport(egl::Config *config) {} + +const char *DisplayVkOffscreen::getWSIExtension() const +{ + return nullptr; +} + +bool IsVulkanOffscreenDisplayAvailable() +{ + return true; +} + +DisplayImpl *CreateVulkanOffscreenDisplay(const egl::DisplayState &state) +{ + return new DisplayVkOffscreen(state); +} + +} // namespace rx diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/linux/DisplayVkOffscreen.h b/third_party/angle/src/libANGLE/renderer/vulkan/linux/DisplayVkOffscreen.h new file mode 100644 index 0000000000000000000000000000000000000000..7a1044e2161cd0ce47a73bd16ead6184f146b9f5 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/linux/DisplayVkOffscreen.h @@ -0,0 +1,34 @@ +// +// Copyright 2023 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// DisplayVkOffscreen.h: +// Defines the class interface for DisplayVkOffscreen, implementing +// DisplayVk for Linux when window surfaces are not supported. +// + +#ifndef LIBANGLE_RENDERER_VULKAN_LINUX_DISPLAYVKOFFSCREEN_H_ +#define LIBANGLE_RENDERER_VULKAN_LINUX_DISPLAYVKOFFSCREEN_H_ + +#include "libANGLE/renderer/vulkan/linux/DisplayVkLinux.h" + +namespace rx +{ + +class DisplayVkOffscreen : public DisplayVkLinux +{ + public: + DisplayVkOffscreen(const egl::DisplayState &state); + bool isValidNativeWindow(EGLNativeWindowType window) const override; + bool isUsingSwapchain() const override; + SurfaceImpl *createWindowSurfaceVk(const egl::SurfaceState &state, + EGLNativeWindowType window) override; + egl::ConfigSet generateConfigs() override; + void checkConfigSupport(egl::Config *config) override; + const char *getWSIExtension() const override; +}; + +} // namespace rx + +#endif // LIBANGLE_RENDERER_VULKAN_LINUX_DISPLAYVKOFFSCREEN_H_ diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc index 504289eedde3ec2b800fb9c2c4913da27a0a5d93..13f3f92721cc68e1af1dd704284d00b357e75f48 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc @@ -10,105 +10,127 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000001[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x96,0xdb,0x6f,0x54,0x55, - 0x14,0xc6,0xf7,0x9e,0xe9,0x05,0xca,0xad,0x30,0x28,0x4a,0xc0,0xb4,0x82,0x08,0x16, - 0x4a,0x29,0x77,0xcb,0x14,0x2a,0x4a,0x9b,0x88,0x20,0x6d,0x48,0x10,0x51,0xa9,0x22, - 0x0a,0x44,0x5e,0xf0,0x85,0x04,0xb9,0x28,0x04,0x22,0x88,0x34,0xa2,0x6d,0x8c,0x10, - 0x89,0x3c,0x80,0x48,0x1f,0x04,0xb5,0x55,0x09,0x1a,0xa5,0x46,0x69,0xa2,0x34,0xf0, - 0x17,0x18,0x89,0xc4,0x0b,0x4f,0x0d,0x15,0x82,0xb8,0xd7,0x3e,0xbf,0xd5,0x59,0x4e, - 0xc4,0x49,0x76,0xce,0xd9,0xdf,0x5a,0xdf,0xba,0x7c,0x67,0xed,0x33,0x27,0x9d,0x1a, - 0x57,0xec,0x9c,0x77,0x25,0x6e,0x80,0x7b,0xc8,0xbb,0xf8,0x1b,0xee,0x52,0x4e,0x6e, - 0x07,0xb9,0xa2,0x78,0xad,0x5f,0xdc,0xb4,0xb8,0x72,0xd3,0xcb,0x6b,0x2a,0x67,0xcc, - 0xac,0x12,0xfb,0x50,0x97,0x8e,0x7e,0x62,0x1b,0xe6,0x8a,0x5d,0x41,0xb8,0xca,0x7a, - 0xa9,0x79,0xdd,0x46,0xc1,0x27,0x84,0x75,0x29,0xac,0xd2,0xe0,0x27,0x78,0xb1,0xc4, - 0x08,0x77,0x13,0x62,0x4c,0xe1,0x38,0xd7,0xe0,0x0a,0xdd,0xe4,0x24,0x9d,0x1b,0xc7, - 0x55,0x31,0x0f,0x36,0xc0,0x60,0x29,0xb0,0x52,0x83,0xa5,0xc1,0x46,0x1a,0xac,0x00, - 0xec,0x2e,0x83,0x15,0x82,0x8d,0x31,0x58,0x11,0x58,0x99,0xc1,0x8a,0xc1,0xc6,0x1b, - 0x6c,0x00,0xd8,0x44,0x83,0x0d,0x04,0x9b,0x6c,0xb0,0x12,0xb0,0x2a,0x83,0x0d,0x02, - 0x9b,0x61,0xb0,0xc1,0x60,0x73,0x0c,0x36,0x04,0x6c,0x5e,0xd4,0x29,0xdd,0xdf,0xaf, - 0x68,0xb6,0x32,0x5c,0xef,0x45,0x1f,0xdd,0x97,0x9b,0xbd,0xe8,0x7c,0x0f,0xfb,0x4c, - 0x60,0xa5,0xa2,0x3d,0x1d,0xb5,0x91,0xfb,0x3b,0xc3,0x5d,0x11,0x7d,0x56,0x04,0xff, - 0x22,0xf2,0x8d,0xa9,0x7c,0xac,0x66,0x64,0xf0,0x18,0x6a,0xf0,0x4c,0x58,0x8d,0x1d, - 0x4b,0xea,0x74,0x2f,0x1a,0x2e,0x5f,0x7e,0xa9,0x56,0xf7,0xa3,0xc3,0xca,0x96,0xec, - 0x9e,0xaf,0x7b,0xd1,0xb3,0xbd,0xbe,0x39,0x7b,0x47,0xd8,0x97,0x91,0x43,0x9e,0xdd, - 0xa8,0xb0,0x2f,0x67,0x9f,0x62,0x3f,0x1e,0xcd,0x0b,0x22,0x5e,0xe0,0xee,0xc3,0x57, - 0xf0,0x1a,0xf6,0x13,0x0c,0xff,0x7e,0xfc,0x85,0x2f,0xf1,0x2b,0x88,0xe7,0x62,0xbf, - 0xa5,0x51,0xa3,0x72,0x56,0x59,0x7f,0x7f,0xff,0xbf,0xca,0xfa,0xaf,0x05,0x6e,0x0a, - 0xcf,0x71,0x32,0xf9,0x65,0x5f,0x09,0x56,0x41,0x3f,0x53,0xa9,0x47,0xfc,0xab,0xb0, - 0x95,0x1b,0xfb,0x2c,0xd3,0xcf,0xec,0x7e,0x6e,0x62,0x97,0xeb,0x83,0xd4,0xab,0xfe, - 0x0b,0x99,0x45,0xdd,0x2f,0xe1,0x59,0xdc,0x1d,0x98,0x2b,0xe8,0x97,0x23,0xd8,0xff, - 0xd3,0xbd,0xe4,0x78,0x82,0xfb,0x15,0xd4,0x2c,0xfb,0x95,0x79,0x39,0x56,0xe5,0xed, - 0x9b,0xd1,0x50,0xf8,0xcf,0x52,0x63,0x99,0xb1,0xaf,0x65,0x76,0x75,0xbf,0x85,0x3a, - 0xe4,0x19,0xec,0xe2,0x3e,0x6d,0xec,0xfb,0x38,0x27,0x3a,0x03,0x07,0x4d,0x3e,0xd9, - 0x1f,0x89,0xbb,0x6d,0x0b,0x85,0x7f,0x94,0x5c,0x05,0x86,0x7f,0x9c,0x33,0xa5,0xfb, - 0xd3,0x79,0x9a,0x9f,0xe5,0x8c,0x48,0xbd,0x17,0xc9,0x7d,0x94,0x7e,0x2f,0xf2,0x5e, - 0x49,0x47,0xed,0x0b,0x63,0x5f,0x05,0xe4,0x17,0xac,0x2f,0x20,0xa2,0x6f,0x96,0x79, - 0x9b,0xc8,0x4c,0x2d,0x0d,0x15,0xcb,0x3c,0x4d,0x02,0x9b,0x68,0xb4,0xdd,0xc8,0xac, - 0x3e,0x80,0xbd,0x2e,0x44,0x90,0x67,0x3d,0x8d,0x79,0x98,0x4a,0x3c,0xf1,0xa9,0x06, - 0x7f,0x35,0xf8,0xc8,0x7e,0x3a,0xbc,0x6a,0x78,0xb3,0x39,0xd7,0x95,0xcc,0x46,0x96, - 0x39,0x98,0x0b,0x7e,0x22,0xf8,0x0c,0x8d,0xbd,0x24,0x98,0xcc,0xc7,0xb5,0x50,0x79, - 0x96,0x7a,0xae,0x07,0xff,0x1a,0xde,0x03,0x59,0xfa,0x91,0xfb,0x65,0x81,0x27,0xda, - 0x2c,0x20,0xa7,0xfc,0xb6,0xa2,0x57,0x1d,0x78,0x63,0x50,0x5f,0x6a,0x1a,0xe5,0x13, - 0x4c,0xfd,0xfe,0x0a,0x31,0x34,0x96,0x5c,0x7b,0x83,0x16,0xe2,0x57,0xe5,0x13,0x9f, - 0x42,0x38,0xf3,0x4c,0x0f,0x0f,0xd3,0xc3,0x42,0xd3,0xc3,0x23,0xe0,0xda,0xc3,0x22, - 0x30,0xed,0xa1,0xc1,0xf4,0xb0,0x28,0xbe,0x9b,0x5c,0xc4,0x24,0x6f,0xbd,0xe9,0xe1, - 0x51,0x72,0x7b,0xd3,0xc3,0x62,0x70,0xed,0x61,0xb4,0x4f,0x30,0xf5,0x93,0x1e,0x34, - 0x56,0x83,0xe9,0x61,0x9a,0x4f,0x7c,0xb2,0x70,0xea,0x4d,0x0f,0x4b,0xe9,0x61,0x89, - 0xe9,0xe1,0x71,0x70,0xed,0x61,0x19,0x98,0xf6,0xd0,0x64,0x7a,0x58,0x16,0xeb,0x71, - 0x11,0x93,0xbc,0x8d,0xcc,0x91,0xe4,0x5d,0x4e,0xee,0x69,0x3e,0x77,0x3e,0xa5,0x46, - 0xf5,0x6d,0x32,0x35,0x56,0xe3,0xd7,0x00,0xaf,0x91,0x7a,0xe4,0x0c,0x3f,0xc9,0xf9, - 0xd5,0x99,0x7b,0x8a,0x9a,0x57,0x99,0x99,0x7b,0x1a,0x7c,0x3b,0x33,0xb7,0x1a,0xac, - 0xda,0x27,0x3c,0x39,0xd3,0xcf,0xc1,0x6b,0x86,0x27,0x9a,0xae,0x01,0x7f,0x26,0xd4, - 0x21,0x67,0xe1,0x79,0xf2,0xad,0xe6,0x7d,0xb0,0xc6,0x68,0xf5,0x02,0xfc,0xb5,0x46, - 0xab,0x17,0xc1,0x55,0xab,0x75,0x60,0xaa,0xd5,0x06,0xa3,0x95,0xd8,0xd6,0x87,0xb5, - 0x81,0xfe,0xd7,0xf3,0xbc,0x8b,0xe2,0xf9,0x4a,0x72,0x3b,0x78,0x57,0xb9,0xbf,0x11, - 0xee,0x25,0xd6,0xcf,0x70,0xe4,0xfa,0x25,0xb9,0x7e,0x81,0x37,0x04,0xce,0x9f,0x26, - 0x97,0xd8,0x2e,0x87,0x75,0x05,0xde,0x95,0xf8,0xbe,0x28,0x8e,0xb9,0x7e,0xe3,0x4c, - 0x8f,0x86,0x2f,0xff,0x5f,0xbb,0xa8,0xe3,0x77,0xec,0x62,0x7b,0x0d,0xec,0x0f,0xf0, - 0x31,0x3c,0xbf,0xab,0xc4,0xbc,0x6c,0x78,0xbf,0x12,0x2b,0x93,0xe7,0x23,0x35,0xdd, - 0x0a,0xd9,0xfa,0xc0,0x7a,0xa9,0x61,0xba,0x4f,0xe2,0x5e,0x81,0x7b,0x99,0xb9,0x96, - 0x67,0x30,0xd6,0x27,0x76,0xd5,0x43,0x35,0xda,0x84,0x46,0x9e,0x7e,0xbd,0xff,0xb7, - 0x46,0xbd,0xe4,0xec,0x35,0x1a,0x5d,0x83,0xa7,0x1a,0xe9,0x20,0x8a,0x46,0xd7,0xa2, - 0xbf,0xf0,0x13,0xde,0x0d,0xa3,0xd1,0x4d,0xa3,0xd1,0xa6,0x3c,0x8d,0xfe,0xc6,0x6e, - 0x35,0xba,0x05,0xae,0x1a,0x49,0x6d,0x12,0xb3,0xcf,0xf0,0xae,0x13,0x2b,0x93,0xe7, - 0x23,0x89,0x54,0x23,0xc1,0x54,0xa3,0x99,0x3e,0x89,0x7b,0x03,0x6e,0x9f,0xd1,0xa8, - 0xcc,0x27,0xf6,0xb1,0x9c,0x2d,0xd5,0x68,0x33,0x1a,0xa5,0xe8,0x37,0x93,0xa7,0x51, - 0x31,0x39,0xe5,0xaa,0x1a,0x0d,0xf4,0x09,0x4f,0x35,0x1a,0x61,0x34,0x12,0x5b,0x49, - 0x58,0x43,0xe0,0xc9,0x55,0x35,0x1a,0xe6,0x73,0x1a,0x6d,0xce,0xd3,0xa8,0xd4,0x27, - 0x76,0xab,0xd1,0x70,0x9f,0xe0,0xaa,0x51,0x86,0x98,0x12,0x5f,0x79,0x83,0xa9,0x25, - 0x93,0xe7,0x33,0xc2,0x68,0x94,0x31,0x1a,0xcd,0xf6,0x49,0xdc,0x58,0x17,0xb5,0xaa, - 0x46,0xe3,0x7c,0x62,0x17,0xad,0x52,0xc4,0xd3,0xb3,0xb7,0x81,0x59,0x14,0xbf,0xb9, - 0xcc,0x5a,0x13,0x9c,0x8c,0xcf,0x9d,0xf9,0x57,0x38,0xf3,0x5b,0xcc,0x99,0xdf,0x0a, - 0xae,0x67,0x7e,0x1b,0x98,0x9e,0xf9,0x1d,0xe6,0x1c,0x6e,0x8b,0xef,0x24,0xe7,0xf6, - 0x92,0x77,0xaf,0x79,0x9f,0xbc,0x41,0xec,0x7d,0x26,0xf6,0x7e,0x70,0x8d,0xfd,0x26, - 0x98,0xc6,0x6e,0x31,0xb1,0xc5,0x76,0x20,0xac,0x16,0x62,0x1f,0x30,0x73,0xf0,0x16, - 0x7d,0xc9,0xff,0xfd,0xe7,0xc4,0x7a,0x1b,0xfc,0x20,0x5a,0x28,0xaf,0x05,0x2d,0xc4, - 0xe7,0x1d,0x72,0xee,0xc5,0xff,0x00,0x79,0xdb,0x4c,0x5e,0xf1,0x69,0x0d,0xab,0x0d, - 0x7e,0xab,0xc9,0xfb,0xae,0xc9,0xbb,0x34,0x7c,0xc1,0xc8,0xb7,0xd1,0x7b,0x60,0x73, - 0x7d,0xee,0x7b,0x22,0x15,0xff,0x53,0x8a,0xa2,0xfd,0x10,0x3c,0x5d,0x7b,0x42,0x2c, - 0xc1,0x0f,0xc3,0x3d,0x14,0x63,0x0d,0x8c,0xcf,0xea,0x7d,0x62,0x1d,0xe6,0x9b,0xa6, - 0xd0,0x7c,0x7b,0x49,0x4f,0x5a,0x53,0x9b,0x79,0xbe,0xf3,0xc8,0xdd,0x02,0xbf,0x15, - 0xdf,0x1d,0xf8,0x6e,0x37,0xf5,0xef,0xfc,0x8f,0xfa,0x77,0xdf,0xa6,0xfe,0xfd,0xd4, - 0xb9,0x07,0x9f,0x9d,0xa6,0xce,0xd7,0xe1,0xec,0xb9,0x4d,0x9d,0x9a,0x7b,0x87,0xa9, - 0xb3,0xc6,0x27,0xb5,0xb6,0xc1,0xdf,0x4e,0x0e,0xb1,0x7d,0x80,0xfd,0x08,0xdf,0x62, - 0xf2,0xad,0x77,0x0c,0x5c,0xe7,0xe9,0x43,0xe6,0xe9,0xb8,0x99,0xa7,0x13,0xe0,0x3a, - 0x4f,0x1f,0x81,0xe9,0x3c,0xb5,0x9b,0xe7,0x2a,0xb6,0x93,0x61,0x9d,0xa2,0xb6,0x53, - 0x26,0xf6,0x27,0xc4,0x3e,0x6d,0x62,0x7f,0x0a,0xae,0xb1,0x3f,0x03,0xd3,0xd8,0x9d, - 0x26,0xb6,0xd8,0x3a,0xc2,0x3a,0x43,0xec,0x33,0x2e,0xf7,0xbf,0xfc,0x15,0xb1,0xcf, - 0x9a,0xff,0xe5,0xaf,0xc1,0xbf,0xe3,0x7b,0xe8,0x1b,0xb0,0x66,0x93,0xef,0x5b,0xf0, - 0x55,0xe4,0xeb,0x32,0xf9,0xc4,0x76,0x2e,0xac,0x2e,0xf2,0x9d,0xe3,0xdd,0x29,0xba, - 0x55,0xf8,0x84,0x73,0xcc,0xe5,0xbe,0x9b,0xd4,0xaf,0x8b,0xe7,0x21,0x7e,0x59,0x9f, - 0xf8,0x9c,0x81,0x73,0xce,0xd4,0xf3,0x3d,0xf5,0xcc,0x32,0xf5,0xfc,0x00,0xae,0xf5, - 0x74,0x9b,0x7a,0xc4,0x76,0x3e,0xac,0x6e,0xf2,0x9c,0x37,0xf5,0x4c,0xa1,0x9e,0xac, - 0x79,0x4f,0xa9,0x5f,0xb7,0xa9,0xa7,0xd6,0x27,0x3e,0x5d,0x70,0xce,0x9b,0x7a,0x7e, - 0xa4,0x9e,0xe3,0xa6,0x9e,0x9f,0xc0,0xb5,0x9e,0x1e,0x53,0x8f,0xd8,0x2e,0x84,0xd5, - 0x43,0x9e,0x0b,0xa6,0x9e,0xa9,0x3e,0xf9,0x9e,0xaf,0xf5,0xb9,0x79,0x55,0xbf,0x1e, - 0x53,0x4f,0x9d,0x4f,0x7c,0xba,0xe1,0x5c,0xc0,0xb7,0x13,0xdf,0x0e,0xf3,0x3d,0xfb, - 0x05,0x7a,0xa7,0x4d,0x9e,0x49,0x3e,0x87,0xbb,0x3c,0x6e,0xa7,0xc9,0xb3,0xc0,0x27, - 0xb9,0x7a,0xe0,0x74,0xe0,0xdb,0x8e,0xef,0x49,0xce,0x9d,0xf8,0x7e,0x4c,0xbc,0x63, - 0x9c,0xbb,0x62,0xce,0x6a,0x3a,0x8f,0xd3,0x6e,0xe2,0xcf,0xf7,0x49,0x8e,0x4e,0xf8, - 0x12,0xaf,0x36,0x30,0x2e,0x61,0xbb,0x19,0xa6,0x64,0x4e,0x58,0xff,0x00,0x2a,0xf8, - 0x97,0xf0,0x04,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x58,0x6b,0x4c,0x96,0x65, + 0x18,0x7e,0x9f,0xef,0xe3,0xe0,0xa9,0xd2,0x65,0x98,0x8a,0xa6,0x62,0x5b,0x4e,0x07, + 0x16,0x50,0x2a,0x71,0xf0,0x48,0x96,0x08,0x61,0x1e,0x90,0x2d,0x86,0x01,0xa9,0xa4, + 0x64,0x92,0x26,0x82,0xe2,0x69,0xba,0x36,0xdb,0x1a,0x1b,0x25,0x34,0x2a,0x0f,0x68, + 0x50,0x24,0xcc,0x29,0x92,0xf5,0xc3,0x4a,0xb6,0xfe,0xf4,0xa7,0x66,0xa5,0x3f,0xd2, + 0x0a,0xd7,0x9c,0xb5,0x12,0x27,0xd2,0x8c,0x9e,0xfb,0x7d,0xae,0xdb,0xef,0xda,0x5b, + 0x2e,0xb7,0x67,0xef,0xf7,0x5c,0xf7,0xe9,0xba,0xaf,0xe7,0xf0,0xbe,0x12,0x0e,0x25, + 0xc4,0x7a,0x9e,0xf1,0x86,0x78,0x83,0xbc,0xcf,0x8c,0xe7,0xff,0x1b,0xe1,0x85,0x3c, + 0xf9,0x39,0xd4,0x8b,0xf1,0x9f,0xd9,0x8b,0x96,0x2c,0x4a,0xdc,0x58,0x59,0x92,0x98, + 0x92,0x3a,0x5d,0xec,0xf7,0x7a,0x61,0xdf,0x4f,0x6c,0xf7,0x79,0xb1,0x5e,0x94,0x7d, + 0xca,0x58,0x57,0xbc,0x66,0xbd,0xe0,0x33,0x65,0x6e,0x8d,0xc3,0xad,0x9f,0xe0,0xb1, + 0x92,0xc3,0xfe,0x9a,0xe9,0xe7,0x94,0x18,0xcf,0x7b,0xca,0x8b,0xf6,0x32,0x5d,0x39, + 0x2f,0x01,0x4f,0xc5,0x0c,0xb0,0x41,0x84,0x85,0x80,0x0d,0x27,0x2c,0x0c,0x6c,0x24, + 0x61,0x51,0xc0,0x1e,0x24,0x2c,0x1a,0x58,0x3c,0x61,0x31,0xc0,0x26,0x10,0x16,0x0b, + 0x6c,0x32,0x61,0x83,0x80,0x3d,0x42,0xd8,0x60,0x60,0xd3,0x08,0x1b,0x02,0x6c,0x3a, + 0x61,0x43,0x81,0xa5,0x10,0x36,0x0c,0xd8,0x0c,0xc2,0xee,0x01,0xf6,0xa4,0xaf,0x53, + 0xf8,0x4e,0xbf,0xa2,0xd9,0x3a,0xfb,0x9c,0x04,0x7d,0x74,0x3e,0x91,0xe6,0xa2,0xf3, + 0x78,0xcc,0xef,0xb7,0x51,0x21,0xdf,0x1e,0xf6,0xb5,0x91,0xdf,0x71,0xf6,0x57,0x0c, + 0xfa,0x9c,0x6a,0xfd,0x63,0xa0,0x61,0x7c,0x62,0x4e,0xda,0x48,0xeb,0x31,0x82,0xf0, + 0x38,0x3b,0xf2,0x3b,0x17,0xcf,0xd6,0xf9,0x58,0x3b,0x96,0x2e,0xfd,0x36,0x43,0xe7, + 0xe3,0xec,0x48,0x1f,0xb2,0x37,0x53,0xe7,0x0f,0xd9,0xd1,0x96,0x5d,0x9c,0xae,0x73, + 0xd1,0xad,0xa7,0xed,0xe1,0x3b,0xf3,0x24,0x3b,0x1a,0x0e,0x8c,0xce,0x7a,0xc0,0xce, + 0x93,0xc1,0x41,0xd6,0x76,0x94,0x9d,0x8b,0x26,0xc9,0xe0,0x28,0xf3,0x27,0xb0,0x26, + 0x51,0xbe,0x5f,0x94,0xaf,0x8f,0xf8,0x0a,0x9e,0x86,0xf9,0x4c,0x8a,0x9f,0x05,0x7f, + 0x89,0x97,0xfc,0x19,0xc8,0x2f,0xff,0xc6,0xdb,0x0e,0x33,0xa1,0xbb,0xd6,0x91,0x91, + 0xf1,0x3f,0x43,0x7d,0xa4,0x7e,0x16,0xd6,0x39,0x13,0xf5,0x65,0x3e,0x1b,0xd8,0x54, + 0xf4,0x33,0x07,0x7c,0xc4,0x7f,0x2e,0x6c,0x29,0x64,0x5f,0x48,0xfd,0x3c,0x0d,0x7b, + 0x06,0xec,0xf2,0xcc,0x01,0x5f,0xf5,0x5f,0x86,0xbd,0xaa,0xf3,0x62,0xec,0x8d,0xd1, + 0x36,0xb2,0x1c,0xfd,0xe2,0x88,0xfe,0xeb,0x29,0x35,0x5e,0xc2,0xef,0x72,0x70,0x96, + 0xf9,0xba,0x40,0x8d,0x8a,0xc0,0xbc,0x12,0xe7,0x48,0xe2,0x5f,0x05,0xc7,0x64,0x68, + 0xfc,0x1a,0x7e,0x87,0xc9,0xbf,0x1a,0x9a,0xeb,0xbc,0x16,0x7b,0x5f,0xe7,0xf5,0xe0, + 0x29,0xf1,0xef,0xe2,0x37,0xc7,0x37,0xe3,0x9c,0xe9,0x1e,0x69,0x0b,0xf0,0x39,0x8b, + 0x73,0xa3,0xf3,0xf3,0x38,0x83,0x3a,0xbf,0x1c,0x58,0x83,0x6b,0x38,0x53,0x9a,0xcf, + 0xf8,0x82,0xd4,0x66,0x4a,0x3f,0x61,0xe3,0x6a,0xeb,0x1e,0x92,0x79,0x94,0x89,0xf0, + 0x11,0xff,0x43,0x76,0x5e,0x71,0xf4,0x95,0x3b,0x7b,0xfa,0xb0,0x9d,0xbf,0xb9,0xab, + 0x29,0xfd,0x71,0xbb,0x12,0x21,0xac,0x9f,0x87,0x1e,0xfa,0x2c,0x22,0xeb,0x93,0x8e, + 0xfd,0x9a,0x86,0x3d,0x99,0x6b,0x3b,0x9a,0x85,0xf3,0x9b,0x86,0xa1,0x6b,0xb3,0x1e, + 0x7b,0x3d,0x1d,0xf6,0xd9,0x36,0x83,0xec,0x95,0x79,0xd8,0x4f,0x73,0x90,0x4f,0x7c, + 0xe6,0x03,0xdf,0x69,0x7d,0x64,0xbe,0x00,0x71,0xf3,0x11,0x27,0x7b,0xe8,0x19,0xc4, + 0x2d,0x44,0x9c,0xec,0xa3,0x45,0xc0,0x5b,0xad,0x8f,0x9c,0xe7,0xc5,0xc0,0x64,0x7f, + 0xdd,0xb4,0xcc,0xf3,0xc0,0xa7,0xdf,0xfa,0x2f,0xf6,0xf9,0x7a,0x3e,0x26,0xfd,0xc8, + 0xef,0x67,0x6d,0x9c,0x68,0xb9,0x04,0x35,0xe5,0xdf,0x36,0xe8,0xfb,0x1c,0xf0,0x7c, + 0xab,0x8e,0x70,0xda,0x61,0x1c,0xa6,0x7e,0xb7,0x6c,0x0e,0xcd,0x25,0xcf,0x1b,0x56, + 0x0b,0xf1,0x3b,0x62,0x9c,0x4f,0x34,0x62,0x72,0xa9,0x87,0xe5,0xe8,0x61,0x19,0xf5, + 0xb0,0x02,0xb8,0xf6,0x50,0x00,0x4c,0x7b,0x28,0xa4,0x1e,0xc4,0xb6,0xd2,0x8e,0x42, + 0xd4,0x5d,0x49,0x3d,0x3c,0x8f,0xda,0x86,0x7a,0x28,0x02,0xae,0x3d,0xec,0x36,0x0e, + 0x53,0x3f,0xe9,0x41,0x73,0x15,0x52,0x0f,0xcd,0xc6,0xf9,0xe4,0x21,0x66,0x25,0xf5, + 0xb0,0x0a,0x3d,0x14,0x53,0x0f,0x2f,0x00,0xd7,0x1e,0x4a,0x80,0x69,0x0f,0x65,0xd4, + 0x83,0xd8,0x4a,0xed,0x28,0x43,0xdd,0x52,0xec,0x23,0xa9,0xbb,0x1a,0xb5,0x9b,0x4d, + 0xe4,0x7c,0x0b,0x47,0xf5,0x2d,0x23,0x8e,0x47,0xe1,0x57,0x88,0xb8,0x52,0xf0,0x29, + 0xf7,0xf7,0x9e,0x3b,0xff,0xba,0xe7,0x5e,0x06,0xe7,0x0a,0xda,0x73,0x1b,0x80,0xd7, + 0x62,0xcf,0x6d,0x04,0x26,0x79,0x25,0x4e,0xee,0x84,0x4d,0x88,0xab,0x44,0x9c,0x68, + 0xba,0x19,0xb8,0xea,0xbe,0x05,0xb1,0x1e,0x61,0x55,0xc0,0x8c,0xbf,0xdf,0x62,0xfc, + 0xfb,0x64,0x2b,0x7c,0xab,0x90,0x43,0x6b,0xd4,0xa0,0x46,0x35,0xd5,0xd8,0x06,0xbc, + 0xc8,0xf6,0x2a,0xe7,0x6d,0x3b,0x7a,0xda,0x8a,0x3b,0x68,0x1b,0xad,0xc7,0x0e,0xc4, + 0xd7,0xd2,0x7a,0xec,0x04,0xae,0xeb,0xb1,0x0b,0x98,0xae,0xc7,0x1e,0x5a,0x0f,0xb1, + 0xed,0xb6,0x63,0x0f,0x34,0xde,0x8d,0x3e,0xe4,0x4e,0xd8,0x87,0xda,0x1e,0xe2,0x12, + 0xb0,0x28,0x7f,0xd9,0xdf,0x92,0x6b,0x94,0x71,0x31,0xf2,0x3c,0x83,0x5a,0xa3,0x8d, + 0x8b,0x1b,0x8e,0x98,0x49,0x26,0x52,0x4b,0x6c,0x63,0xec,0x18,0x87,0x38,0x79,0x0e, + 0xb3,0x3d,0xfa,0xef,0x54,0xac,0xf9,0x18,0xd4,0x1d,0xeb,0x73,0x72,0x3c,0x26,0x18, + 0x67,0x1f,0xe7,0xf7,0xe2,0xb0,0x89,0x06,0x38,0xf6,0x48,0x02,0x72,0x4a,0x7e,0x8d, + 0x8b,0x07,0x97,0xb8,0x80,0x8f,0x70,0x1a,0xb0,0xd5,0xfa,0x80,0xdd,0x00,0x87,0x63, + 0xc6,0xe5,0x15,0x5e,0xf1,0xe0,0x2a,0x67,0x47,0xd6,0x60,0xaf,0x71,0xf6,0xed,0xb4, + 0xd6,0x12,0xb3,0x1f,0x1a,0x19,0xf4,0x9b,0x1a,0xd0,0x68,0x0a,0x6a,0x4e,0x21,0x8d, + 0xa6,0x1a,0x17,0xa7,0x1a,0xa5,0x90,0x46,0x62,0x9b,0x66,0x47,0x12,0xe2,0x92,0x48, + 0xa3,0x47,0x49,0xa3,0xfd,0x01,0x8d,0x1e,0x33,0xce,0xce,0x1a,0x25,0x1b,0x87,0xab, + 0x46,0xa9,0xc8,0x39,0x8d,0x34,0x4a,0x04,0x97,0xb8,0x80,0x4f,0x0a,0x69,0x94,0x4a, + 0x1a,0xb5,0x18,0x97,0x57,0x78,0x25,0x82,0xab,0x6a,0xf4,0xba,0x71,0xf6,0xbd,0xe0, + 0xa9,0x1a,0xd5,0x41,0xa3,0x10,0xfa,0xcd,0x0e,0x68,0x94,0x86,0x9a,0x69,0xa4,0x51, + 0xba,0x71,0x71,0xaa,0xd1,0x02,0xd2,0x48,0x6c,0x19,0x72,0x4e,0x11,0x37,0x9b,0x34, + 0x9a,0x4b,0x1a,0xd5,0x05,0x34,0x9a,0x67,0x9c,0x9d,0x35,0x9a,0x6f,0x1c,0xae,0x1a, + 0x65,0x23,0x67,0x06,0x69,0x94,0x05,0x2e,0x71,0x01,0x9f,0x05,0xa4,0x51,0x36,0x69, + 0xf4,0xa1,0x71,0x79,0x85,0x57,0x16,0xb8,0xaa,0x46,0xfb,0x8d,0xb3,0x8b,0x56,0x21, + 0xe4,0xd3,0xb3,0xb7,0x07,0xf7,0x9b,0xf8,0xb5,0x61,0xaf,0x95,0x21,0x26,0xdb,0x44, + 0xce,0xfc,0x5b,0x38,0xf3,0xf5,0x74,0xe6,0xdf,0x06,0xae,0x67,0xfe,0x00,0x30,0x3d, + 0xf3,0x8d,0x74,0xe6,0xc5,0xd6,0x20,0xef,0x01,0xd4,0x3d,0x42,0xf7,0xc9,0x51,0xe4, + 0x6e,0xa6,0xdc,0xc7,0x80,0x6b,0xee,0x0f,0x80,0x69,0xee,0x56,0xca,0x2d,0xb6,0x16, + 0xdf,0xd7,0xe5,0x6e,0xa1,0x7d,0xf0,0x11,0xfa,0x92,0x6f,0x8a,0x2e,0xe4,0xfa,0x58, + 0x71,0x68,0xa1,0x71,0xad,0xd0,0x42,0x7c,0x8e,0xa3,0xe6,0x11,0xf8,0xb7,0xa0,0x6e, + 0x07,0xd5,0x15,0x9f,0x76,0x3b,0x3a,0x10,0xdf,0x4e,0x75,0x4f,0x50,0xdd,0x5c,0xfb, + 0x55,0x25,0xdf,0x67,0x27,0x81,0xb5,0x99,0xc8,0x37,0x4b,0x08,0xf7,0xb5,0xd8,0x4f, + 0x21,0x4e,0xc7,0x3e,0x9b,0x4b,0xf0,0x4e,0xc4,0x9e,0xf2,0x73,0x0d,0xf6,0xd7,0xaa, + 0x0b,0xb9,0x3a,0xf1,0xdd,0x14,0x4d,0xdf,0x7f,0xd2,0x93,0x72,0xea,0xa0,0xf5,0x6d, + 0x47,0xed,0x56,0xc4,0xb7,0xc3,0xb7,0x11,0xbe,0x0d,0xc4,0xbf,0xe9,0x3f,0xf8,0xbf, + 0x7f,0x17,0xfe,0x6f,0x80,0xe7,0x41,0xf8,0x34,0x11,0xcf,0xc3,0x88,0x39,0x78,0x17, + 0x9e,0x5a,0xbb,0x91,0x78,0x1e,0x37,0x8e,0x6b,0x07,0xe2,0x1b,0x68,0xaf,0x7c,0x8e, + 0xbd,0x72,0x96,0xf6,0xca,0x17,0xc0,0x75,0xaf,0x7c,0x09,0x4c,0xf7,0x4a,0x37,0xad, + 0x99,0xd8,0xce,0xd9,0xd1,0x8d,0xba,0xe7,0xa8,0xe7,0xaf,0x50,0x5b,0xdf,0x3d,0x05, + 0x81,0x3b,0x23,0x07,0x67,0x30,0x87,0xee,0x8c,0x5c,0xe3,0xe2,0x26,0x23,0x66,0x05, + 0xdd,0x19,0x62,0xcb,0xb3,0x63,0x09,0xe2,0xe4,0xb9,0x03,0xb5,0x96,0x22,0xee,0x21, + 0xba,0x2b,0x96,0x19,0x87,0x1f,0xa2,0xbb,0x65,0x39,0xdd,0x2d,0x62,0x4f,0x82,0x6e, + 0x05,0xc8,0x99,0x47,0x77,0x46,0x3e,0x72,0xca,0x77,0x35,0xfb,0xac,0xa0,0x3b,0xa3, + 0x80,0xee,0x8c,0x0e,0xe3,0xf2,0x0b,0xaf,0x7c,0x70,0xd5,0x3b,0xa3,0xce,0x38,0xbb, + 0xea,0xa1,0x1a,0x7d,0x0d,0x8d,0xf4,0xdd,0x53,0x1e,0xd0,0xa8,0x08,0x35,0x8b,0x48, + 0xa3,0x62,0xe3,0xe2,0x54,0xa3,0xb5,0xa4,0x91,0xd8,0x56,0xd9,0x51,0x8a,0xb8,0x52, + 0xd2,0xe8,0x45,0xc4,0xb1,0x46,0xab,0x8d,0xc3,0x59,0xa3,0x35,0xa4,0xd1,0x6a,0xd2, + 0xa8,0x1c,0x39,0x57,0x91,0x46,0x25,0xc8,0xa9,0x1a,0xa9,0xcf,0x5a,0xd2,0xa8,0x9c, + 0x34,0x3a,0x61,0x5c,0x7e,0xe1,0x55,0x02,0xae,0xaa,0x51,0xbd,0x71,0xf6,0xba,0xc0, + 0xbb,0xe7,0x1b,0x68,0xa4,0xef,0x9e,0x9a,0x80,0x46,0x1b,0x50,0x73,0x03,0x69,0xb4, + 0xd1,0xb8,0x38,0xd5,0xa8,0x9a,0x34,0x12,0x5b,0xa5,0x1d,0x9b,0x11,0xb7,0x99,0x34, + 0xda,0x82,0x38,0xd6,0xa8,0xca,0x38,0x9c,0x35,0xda,0x4a,0x1a,0x55,0x91,0x46,0x35, + 0xc8,0x59,0x49,0x1a,0x6d,0x42,0x4e,0xd5,0x48,0x7d,0xaa,0x49,0xa3,0x1a,0xd2,0xe8, + 0xa4,0x71,0xf9,0x85,0xd7,0x26,0x70,0x55,0x8d,0x0e,0x18,0x67,0xaf,0xa7,0x77,0x8f, + 0x9e,0xbd,0x6e,0x3a,0xf3,0x9d,0xd8,0x6b,0x8d,0x88,0xa9,0xa1,0x77,0xcf,0x77,0x38, + 0xf3,0xe7,0xe9,0xcc,0x7f,0x0f,0x5c,0xcf,0xfc,0x0f,0xc0,0xf4,0xcc,0x5f,0xa4,0x33, + 0x2f,0xb6,0x0b,0x76,0x5c,0x42,0xdd,0x4b,0x74,0x9f,0xfc,0x84,0xdc,0x97,0x29,0xf7, + 0xcf,0xc0,0x35,0xf7,0x2f,0xc0,0x34,0xf7,0x15,0xca,0x2d,0xb6,0x1e,0x3b,0xae,0x22, + 0xf7,0x55,0xfa,0xce,0xfe,0x0d,0xb9,0xaf,0xd1,0x77,0xf6,0xef,0xc0,0xbb,0xf1,0xdd, + 0xfe,0x07,0xb0,0x6a,0xaa,0xf7,0x27,0xf0,0x0a,0xd4,0xeb,0xa5,0x7a,0x62,0xbb,0x6e, + 0x47,0x2f,0xea,0x5d,0xf7,0x22,0x5a,0x37,0x19,0xf7,0x4e,0xeb,0xa4,0xff,0x6b,0xa9, + 0x5f,0x2f,0x69,0x7d,0xda,0x38,0x9f,0xab,0x88,0xb9,0x4e,0x7c,0x6e,0x82,0xcf,0x42, + 0xe2,0xd3,0x07,0x5c,0xf9,0xf4,0x13,0x9f,0x3e,0xbf,0x8e,0xe7,0x63,0x52,0xe7,0x16, + 0xf1,0x79,0x0f,0x7c,0x4e,0xd3,0xda,0xab,0x5f,0x3f,0xf1,0xe9,0x32,0xce,0xa7,0x17, + 0x31,0xb7,0x88,0xcf,0x6d,0xf0,0x39,0x4f,0x7c,0xfe,0x06,0xae,0x7c,0x3c,0x3a,0x2b, + 0x62,0x1b,0xc0,0xcb,0x49,0xea,0x0c,0x10,0x9f,0x83,0xc6,0xfd,0xcd,0xa2,0xcb,0x44, + 0xde,0x3f,0xea,0xe7,0x99,0x08,0x9f,0x4f,0xe1,0xd3,0x8f,0x98,0x01,0xf8,0x5e,0x01, + 0xf7,0x1e,0x3a,0xeb,0xbf,0x42,0xef,0x30,0xd5,0x79,0xc7,0x44,0x70,0x2f,0x10,0x7b, + 0x85,0xfa,0x3e,0x63,0x5c,0x2d,0xa9,0x2d,0x31,0x3d,0xf0,0xbd,0x08,0xdf,0x0b,0xf4, + 0x1e,0xfd,0x11,0xf9,0x64,0xe8,0xdf,0x79,0x43,0xf4,0x1e,0xd5,0x98,0x8b,0x94,0xff, + 0x13,0xe3,0x6a,0x5c,0x41,0xfc,0x05,0xff,0x6f,0x62,0x61,0xff,0xef,0x32,0x62,0xbb, + 0x6d,0x0b,0xcf,0xb0,0xe3,0x1f,0xe2,0x59,0x4a,0x80,0x98,0x16,0x00,0x00 }; // Generated from: @@ -117,8 +139,8 @@ constexpr uint8_t kImageCopy_frag_00000001[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture2D src; -// layout(location = 0)out ivec4 dst; +// layout(set = 0, binding = 0)uniform texture2DArray src; +// layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -156,6 +178,19 @@ constexpr uint8_t kImageCopy_frag_00000001[] = { // } // } // +// float sRGBToLinear(float sRGB) +// { +// +// if(sRGB <= 0.04045) +// { +// return sRGB / 12.92; +// } +// else +// { +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// } +// } +// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -175,7 +210,7 @@ constexpr uint8_t kImageCopy_frag_00000001[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . srcIsSRGB) // { @@ -194,9 +229,15 @@ constexpr uint8_t kImageCopy_frag_00000001[] = { // srcValue . rgb /= srcValue . a; // } // -// srcValue *= 255.0; +// vec4 dstValue = vec4(srcValue); // -// ivec4 dstValue = ivec4(srcValue); +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc index 0564f13b84311c4affe00432028f2ba8cd0694bf..010e15cb1cd42089d92964b1070dfe6efea82f8c 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc @@ -10,105 +10,127 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000002[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xdb,0x6f,0x55,0x45, - 0x14,0xc6,0x67,0xce,0x39,0x6d,0xb9,0x16,0xb0,0xad,0x0a,0x69,0xa4,0xe5,0x26,0x5a, - 0x28,0xb7,0x72,0xb3,0x1c,0xa0,0x16,0x69,0x8d,0x08,0xd2,0x86,0x04,0x11,0x95,0x2a, - 0xa2,0x40,0xe0,0x05,0x5f,0x48,0x90,0x8b,0x42,0x20,0x82,0x48,0x23,0xda,0xc6,0x08, - 0xd1,0xc8,0x03,0x88,0xf4,0x45,0x50,0x68,0x34,0x04,0x8d,0x40,0xa2,0x34,0x51,0x2a, - 0xfc,0x05,0x46,0x22,0xf1,0xc2,0x03,0xe1,0xa2,0x0d,0xce,0x9a,0xfd,0x5b,0x3d,0xcb, - 0x13,0xb1,0xc9,0x64,0xf6,0x7c,0xeb,0xfe,0xcd,0x5a,0xfb,0xec,0xa6,0x53,0x23,0x8b, - 0x9c,0xf3,0xae,0x9f,0xeb,0xe3,0xe6,0x79,0x17,0xff,0x86,0xb8,0x94,0x93,0xc7,0xfe, - 0xae,0x30,0xee,0x0d,0x0b,0x9a,0x17,0x54,0x6f,0x78,0x75,0x65,0x75,0xcd,0xd4,0x89, - 0x22,0x2f,0x76,0xe9,0xa8,0x27,0xb2,0x41,0xae,0xc8,0x65,0xc2,0x2e,0x6b,0x5d,0xcb, - 0xea,0xf5,0x82,0x8f,0x09,0xeb,0x72,0x58,0x83,0x83,0x9e,0xe0,0x45,0xe2,0x23,0x3c, - 0x8d,0x89,0x3e,0xc5,0xc6,0xb9,0x46,0x57,0xe0,0xc6,0x25,0xe1,0xdc,0x48,0x76,0xc5, - 0x3c,0x58,0x1f,0x83,0xa5,0xc0,0x06,0x1b,0x2c,0x0d,0x56,0x6a,0xb0,0x0c,0xd8,0xfd, - 0x06,0x2b,0x00,0x2b,0x37,0x58,0x21,0x58,0x85,0xc1,0x8a,0xc0,0x46,0x19,0xac,0x0f, - 0xd8,0x58,0x83,0xf5,0x05,0x1b,0x67,0xb0,0x7e,0x60,0x13,0x0d,0xd6,0x1f,0xac,0xc6, - 0x60,0x03,0xc0,0x66,0x18,0x6c,0x20,0xd8,0xac,0xc8,0x53,0xba,0xb7,0x5e,0xe1,0x6c, - 0x59,0xd8,0x47,0xc0,0x8f,0x9e,0x2b,0xcd,0x59,0x78,0x7e,0x80,0x73,0x49,0xb0,0x4a, - 0x45,0x79,0x3a,0x72,0x23,0xcf,0xf7,0x86,0xa7,0x42,0xea,0xac,0x0a,0xfa,0x85,0xc4, - 0x2b,0xaf,0x7e,0xb2,0xb6,0x34,0x68,0x14,0x1b,0xbc,0x24,0xac,0xa6,0x93,0x0b,0xeb, - 0xf4,0x2c,0x1c,0x2e,0x59,0xf2,0xd3,0x6c,0x3d,0x0f,0x0b,0x2b,0xdb,0x6f,0xe7,0x1c, - 0x3d,0x0b,0x9f,0x1d,0x0d,0x2d,0xd9,0xb2,0x70,0xae,0x20,0x86,0xdc,0xdd,0x7d,0xe1, - 0x5c,0xc9,0x39,0xc5,0x79,0x14,0x9c,0x67,0x22,0x9e,0x71,0xa3,0xd1,0x15,0xbc,0x96, - 0xf3,0x18,0x63,0xff,0x20,0xfa,0x62,0x2f,0xfe,0xab,0xf0,0xe7,0x62,0xbd,0x83,0x23, - 0x47,0x95,0xac,0x8a,0xde,0xfa,0xfe,0x7f,0x55,0xf4,0xee,0x19,0x37,0x9e,0x7b,0x1c, - 0x47,0x7c,0x39,0x57,0x83,0x55,0x51,0xcf,0x04,0xf2,0x11,0xfd,0x89,0xc8,0x2a,0x8d, - 0x7c,0x9a,0xa9,0x67,0x7a,0xaf,0x6d,0x22,0x97,0xfd,0x11,0xf2,0x55,0xfd,0x7a,0x7a, - 0x51,0xe5,0x8f,0xe3,0x5f,0xe5,0x0b,0xb9,0x9b,0xa1,0xc1,0xd3,0x52,0xea,0x67,0x24, - 0x7b,0xff,0xf4,0x2c,0x31,0x9f,0xe6,0x79,0x29,0x35,0xc8,0x79,0x59,0x5e,0xcc,0xe5, - 0x79,0xe7,0x16,0x38,0x15,0xfb,0x17,0xc8,0xb9,0xc2,0xc8,0x57,0xd1,0xcb,0x7a,0xde, - 0x44,0x1e,0x72,0x27,0x3b,0x78,0x4e,0x1b,0xf9,0x1e,0xe6,0x46,0x7b,0x62,0xbf,0x89, - 0x27,0xe7,0x8f,0xe2,0x69,0x4b,0xbd,0xd8,0x1f,0x82,0x9f,0x8c,0xb1,0x3f,0xc2,0x8c, - 0xe9,0xf9,0x44,0xde,0x1d,0x9c,0x61,0x66,0x24,0xdf,0x4b,0xc4,0x3e,0x44,0xbd,0x97, - 0x78,0xcf,0xa4,0xe3,0x5d,0x14,0xc4,0xba,0x32,0xc4,0x17,0xec,0x66,0x40,0x84,0xef, - 0x2c,0xfd,0x37,0x96,0x1e,0x5b,0x14,0x32,0x96,0xfe,0x7a,0x08,0x6c,0xac,0xe1,0x76, - 0x3d,0xbd,0xfb,0x30,0xf2,0xba,0xe0,0x41,0xee,0x7e,0x12,0xfd,0x31,0x01,0x7f,0xa2, - 0x33,0x19,0xfc,0xf5,0xa0,0x23,0xe7,0x29,0xd8,0x4d,0xc6,0x6e,0x3a,0x73,0x5e,0x4d, - 0xaf,0x64,0xb9,0xf7,0x99,0xe0,0x47,0x83,0x4e,0x71,0xac,0x25,0xc1,0xa4,0x5f,0x6e, - 0x84,0xcc,0xb3,0xe4,0x73,0x3b,0xe8,0xd7,0xf2,0x5e,0xc8,0x52,0x8f,0x3c,0x2f,0x0e, - 0x76,0xc2,0xcd,0x5c,0x62,0xca,0xdf,0x66,0xf8,0xaa,0x03,0x6f,0x0a,0xec,0x4b,0x4e, - 0x43,0x7d,0x82,0xa9,0xde,0xad,0xe0,0x43,0x7d,0xc9,0x7e,0x3d,0x70,0x11,0x6b,0xf1, - 0x89,0x4e,0x01,0x36,0xb3,0x4c,0x0d,0xf3,0xa8,0xa1,0xde,0xd4,0xf0,0x18,0xb8,0xd6, - 0x30,0x1f,0x4c,0x6b,0x68,0x34,0x35,0xcc,0x8f,0xef,0x2a,0x17,0x31,0x89,0xdb,0x60, - 0x6a,0x78,0x82,0xd8,0xde,0xd4,0xb0,0x00,0x5c,0x6b,0x28,0xf7,0x09,0xa6,0x7a,0x52, - 0x83,0xfa,0x6a,0x34,0x35,0x4c,0xf1,0x89,0x4e,0x16,0x9b,0x06,0x53,0xc3,0x22,0x6a, - 0x58,0x68,0x6a,0x78,0x0a,0x5c,0x6b,0x58,0x0c,0xa6,0x35,0x34,0x9b,0x1a,0x16,0xc7, - 0x7c,0x5c,0xc4,0x24,0x6e,0x13,0x7d,0x24,0x71,0x97,0x10,0x7b,0x8a,0xcf,0xcd,0xa7, - 0xe4,0xa8,0xba,0xcd,0x26,0xc7,0x1a,0xf4,0x1a,0xb1,0x6b,0x22,0x1f,0x99,0xe1,0x67, - 0x98,0x5f,0xed,0xb9,0x67,0xc9,0x79,0xb9,0xe9,0xb9,0xe7,0xc0,0xb7,0xd2,0x73,0x2b, - 0xc0,0x6a,0x7c,0x62,0x27,0x33,0xfd,0x22,0x76,0x2d,0xd8,0x09,0xa7,0x2b,0xc1,0x9f, - 0x0f,0x79,0xc8,0x2c,0xbc,0x44,0xbc,0x15,0xbc,0x0f,0x56,0x1a,0xae,0x5e,0xc6,0x7e, - 0x95,0xe1,0xea,0x15,0x70,0xe5,0x6a,0x35,0x98,0x72,0xb5,0xd6,0x70,0x25,0xb2,0x35, - 0x61,0xad,0xa5,0xfe,0x35,0xdc,0x77,0x61,0x9c,0xaf,0x24,0xb6,0xc3,0xee,0x1a,0xcf, - 0x7f,0x85,0x67,0xf1,0xf5,0x33,0x36,0xb2,0x7f,0x49,0xac,0x5f,0xb0,0x1b,0x88,0xcd, - 0x9f,0x26,0x96,0xc8,0xae,0x84,0x75,0x15,0xbb,0xab,0xf1,0x7d,0x51,0x14,0x63,0xfd, - 0xc6,0x4c,0x0f,0xc3,0x5e,0x7e,0xcf,0x76,0x90,0xc7,0xef,0xc8,0x45,0xf6,0x06,0xd8, - 0x1f,0xe0,0xe5,0xdc,0xdf,0x35,0x7c,0x5e,0x31,0x76,0xbf,0xe2,0xab,0x24,0x4f,0x47, - 0x72,0xba,0x13,0xa2,0xdd,0x04,0xbb,0x4e,0x0e,0x53,0x7d,0xe2,0xf7,0x2a,0xb6,0x57, - 0xe8,0x6b,0xb9,0x83,0xe1,0x3e,0x91,0x2b,0x1f,0xca,0xd1,0x06,0x38,0xf2,0xd4,0x9b, - 0xf6,0xff,0xe6,0xe8,0x06,0x31,0x6f,0x18,0x8e,0x6e,0x61,0xa7,0x1c,0xa5,0x7c,0x8e, - 0xa3,0x5b,0x71,0x77,0xae,0x07,0xbb,0x1e,0xc3,0xd1,0x1d,0xc3,0xd1,0x86,0x3c,0x8e, - 0x44,0x70,0x27,0x8f,0x23,0xef,0x13,0x5c,0x39,0x92,0xdc,0xc4,0xe7,0x6d,0x63,0xf7, - 0x37,0xbe,0x4a,0xf2,0x74,0x52,0x3e,0xc7,0x91,0x60,0xca,0xd1,0x74,0x9f,0xf8,0xed, - 0xc1,0xf6,0xb6,0xe1,0x68,0x84,0x4f,0xe4,0xc3,0x99,0x2d,0xe5,0x68,0x23,0x1c,0xa5, - 0xa8,0xb7,0x2c,0x8f,0xa3,0xbe,0xc4,0x94,0x5d,0x39,0xea,0xef,0x13,0x3b,0xe5,0xa8, - 0xd4,0x70,0x24,0xb2,0x01,0x61,0x0d,0xc2,0x4e,0x76,0xe5,0x68,0x88,0xcf,0x71,0xb4, - 0x31,0x8f,0xa3,0x7b,0x7c,0x22,0xb7,0x1c,0x95,0xf8,0x04,0x57,0x8e,0xca,0xf0,0x29, - 0xfe,0xd5,0xae,0x98,0x5c,0x4a,0xf2,0x74,0x4a,0x0d,0x47,0x65,0x86,0xa3,0x99,0x3e, - 0xf1,0x2b,0x79,0x15,0x93,0xab,0x72,0x34,0xda,0x27,0x72,0xe1,0x2a,0x85,0x3f,0x9d, - 0xbd,0xb5,0xf4,0x62,0xfc,0xce,0xa2,0xd7,0x9a,0xb1,0x29,0xf3,0xb9,0x99,0x7f,0x8d, - 0x99,0xdf,0x64,0x66,0x7e,0x33,0xb8,0xce,0xfc,0x16,0x30,0x9d,0xf9,0x6d,0x66,0x0e, - 0xb7,0xc4,0x77,0x92,0x73,0xbb,0x89,0xbb,0xdb,0xbc,0x4f,0xde,0xc2,0xf7,0x1e,0xe3, - 0x7b,0x2f,0xb8,0xfa,0x7e,0x1b,0x4c,0x7d,0xb7,0x1a,0xdf,0x22,0xdb,0x17,0x56,0x2b, - 0xbe,0xf7,0x99,0x3e,0x78,0x87,0xba,0xe4,0xf7,0xbe,0x13,0x5f,0xef,0x82,0xef,0x87, - 0x0b,0xb5,0x6b,0x85,0x0b,0xd1,0x79,0x8f,0x98,0xbb,0xd1,0xdf,0x47,0xdc,0x76,0x13, - 0x57,0x74,0xda,0xc2,0x6a,0xc7,0xbe,0xcd,0xc4,0x7d,0xdf,0xc4,0x5d,0x14,0xbe,0x60, - 0xe4,0xdb,0xe8,0x03,0xb0,0x5a,0x9f,0xfb,0x9e,0x48,0xc5,0xdf,0x94,0xc2,0x28,0x3f, - 0x80,0x9d,0xae,0x5d,0xc1,0x97,0xe0,0x07,0xb1,0x3d,0x10,0x7d,0xf5,0x8d,0x77,0xf5, - 0x21,0xbe,0x0e,0xf2,0x4d,0x53,0x60,0xbe,0xbd,0xa4,0x26,0xcd,0xa9,0xdd,0xdc,0xef, - 0x6c,0x62,0xb7,0x62,0xdf,0x86,0xee,0x36,0x74,0xb7,0x9a,0xfc,0xb7,0xff,0x47,0xfe, - 0x3b,0xef,0x92,0xff,0x5e,0xf2,0xdc,0x85,0xce,0x76,0x93,0xe7,0x9b,0xd8,0xec,0xba, - 0x4b,0x9e,0x1a,0x7b,0x9b,0xc9,0x33,0xeb,0x93,0x5c,0xdb,0xb1,0xdf,0x4a,0x0c,0x91, - 0x7d,0x8c,0x5c,0xbe,0x1b,0xd7,0xf1,0xcd,0x78,0x18,0x5c,0xfb,0xe9,0x13,0xfa,0xe9, - 0x88,0xe9,0xa7,0xa3,0xe0,0xda,0x4f,0x9f,0x82,0x69,0x3f,0x75,0x98,0x7b,0x15,0xd9, - 0xb1,0xb0,0x8e,0x93,0xdb,0x71,0xe3,0xfb,0x73,0x7c,0x9f,0x30,0xbe,0xbf,0x00,0x57, - 0xdf,0x27,0xc1,0xd4,0x77,0xa7,0xf1,0x2d,0xb2,0x53,0x61,0x9d,0xc6,0xf7,0x69,0x97, - 0xfb,0x5d,0xfe,0x1a,0xdf,0x67,0xcc,0xef,0xf2,0x37,0xe0,0xe7,0xf8,0x1e,0xfa,0x16, - 0xac,0xc5,0xc4,0x3b,0x0b,0xbe,0x9c,0x78,0xe7,0x4d,0xbc,0xb3,0xd1,0xd6,0x45,0x4c, - 0xe2,0x9d,0xe3,0xdd,0x29,0xbc,0x8d,0xf7,0x49,0x8e,0x87,0x5d,0xee,0xbb,0x49,0xf5, - 0xce,0x73,0x1f,0xa2,0x37,0xc7,0x27,0x3a,0xa7,0xb1,0x39,0x67,0xf2,0xf9,0x8e,0x7c, - 0xa6,0x99,0x7c,0xbe,0x07,0xd7,0x7c,0xba,0x4c,0x3e,0x22,0xbb,0x10,0x56,0x17,0x71, - 0x2e,0x98,0x7c,0x26,0x90,0xcf,0x1c,0xf3,0x9e,0x52,0xbd,0x2e,0x93,0xcf,0x5c,0x9f, - 0xe8,0x9c,0xc7,0xe6,0x82,0xc9,0xe7,0x07,0xf2,0x39,0x62,0xf2,0xf9,0x11,0x5c,0xf3, - 0xe9,0x36,0xf9,0x88,0xec,0x62,0x58,0xdd,0xc4,0xb9,0x68,0xf2,0x99,0xe4,0x93,0xff, - 0xc1,0xe6,0xfa,0x5c,0xbf,0xaa,0x5e,0xb7,0xc9,0xa7,0xde,0x27,0x3a,0x5d,0xd8,0x5c, - 0x44,0xb7,0x13,0xdd,0x53,0xcc,0x95,0xf4,0xca,0x57,0xf0,0x9d,0x36,0x71,0xaa,0x7c, - 0x0e,0x77,0x79,0xb6,0x9d,0x26,0xce,0xa3,0x3e,0x89,0xd5,0x8d,0xcd,0x29,0x74,0x3b, - 0xd0,0x3d,0xc6,0xdc,0x89,0xee,0x67,0xf8,0x3b,0xcc,0xdc,0x15,0x31,0xab,0xe9,0x3c, - 0x9b,0x0e,0xe3,0xbf,0xce,0x27,0x31,0x3a,0xb1,0x17,0x7f,0xb3,0x83,0xc5,0x65,0x64, - 0x3d,0xa1,0x4b,0x66,0x84,0xf5,0x0f,0xb7,0x23,0xca,0x37,0x14,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x58,0x6b,0x4c,0x96,0x65, + 0x18,0x7e,0x9f,0xef,0xe3,0xe0,0xa9,0xd2,0x65,0x98,0x8a,0x47,0x6c,0xcb,0xe9,0xc0, + 0x02,0x4a,0x25,0x4e,0x9e,0xc8,0x12,0x21,0xcc,0x03,0xb2,0xc5,0x30,0x20,0x95,0x94, + 0x4c,0xd2,0x44,0x50,0x3c,0x4d,0xd7,0x66,0x5b,0x63,0xa3,0x84,0x46,0xe5,0x01,0x0d, + 0x8b,0x84,0x39,0x45,0xb2,0x7e,0x58,0xc9,0xd6,0x9f,0xfe,0xd4,0xac,0xf4,0x47,0x5a, + 0xc1,0x9a,0xb3,0x56,0xea,0x44,0x9a,0xd1,0x73,0xbf,0xcf,0x75,0xfb,0x5d,0x7b,0x97, + 0x8b,0xed,0xd9,0xfb,0x3e,0xd7,0x7d,0xba,0xee,0xeb,0x79,0x9e,0xf7,0x7d,0xf9,0xc2, + 0xa1,0x84,0x58,0xcf,0x33,0xde,0x10,0x6f,0x90,0xf7,0xb9,0xf1,0xfc,0xbf,0x11,0x5e, + 0xc8,0x93,0xdb,0xa1,0x5e,0x8c,0x7f,0xcd,0x59,0xb4,0x64,0x51,0xe2,0xc6,0xaa,0xd2, + 0xc4,0x94,0xd4,0x19,0x62,0xbf,0xdf,0x0b,0xfb,0x7e,0x62,0x7b,0xc0,0x8b,0xf5,0xa2, + 0xec,0x55,0xc6,0xba,0x92,0x35,0xeb,0x05,0x9f,0x25,0x73,0x6b,0x1c,0x6e,0xfd,0x04, + 0x8f,0x95,0x1c,0xf6,0x6e,0x96,0x9f,0x53,0x62,0x3c,0xef,0x69,0x2f,0xda,0xcb,0x74, + 0xe5,0xbc,0x04,0x5c,0x15,0x33,0xc0,0x06,0x11,0x16,0x02,0x36,0x9c,0xb0,0x30,0xb0, + 0x91,0x84,0x45,0x01,0x7b,0x98,0xb0,0x68,0x60,0xf1,0x84,0xc5,0x00,0x9b,0x48,0x58, + 0x2c,0xb0,0x29,0x84,0x0d,0x02,0xf6,0x28,0x61,0x83,0x81,0x4d,0x27,0x6c,0x08,0xb0, + 0x19,0x84,0x0d,0x05,0x96,0x42,0xd8,0x30,0x60,0x33,0x09,0xbb,0x0f,0xd8,0x53,0xbe, + 0x4e,0xe1,0xbb,0xfd,0x8a,0x66,0xeb,0xec,0x75,0x32,0xf4,0xd1,0xf9,0x24,0x9a,0x8b, + 0xce,0xe3,0x31,0x7f,0xd0,0x46,0x85,0x7c,0x7b,0xd8,0xd7,0x46,0xee,0xe3,0xec,0x5d, + 0x0c,0xfa,0x9c,0x66,0xfd,0x63,0xa0,0x61,0x7c,0x62,0x6e,0xda,0x48,0xeb,0x31,0x82, + 0xf0,0x38,0x3b,0x0a,0x3a,0x17,0x67,0xeb,0x7c,0xac,0x1d,0x4b,0x97,0x7e,0x97,0xa1, + 0xf3,0x71,0x76,0xa4,0x0f,0xd9,0x9b,0xa9,0xf3,0x09,0x76,0xb4,0xe5,0x94,0xa4,0xeb, + 0x5c,0x74,0xeb,0x69,0x7b,0xe4,0xee,0x3c,0xc9,0x8e,0xc6,0x03,0xa3,0xb3,0x1e,0xb2, + 0xf3,0x64,0x70,0x90,0xb5,0x1d,0x65,0xe7,0xa2,0x49,0x32,0x38,0xca,0xfc,0x49,0xac, + 0x49,0x94,0xef,0x17,0xe5,0xeb,0x23,0xbe,0x82,0xa7,0x61,0x3e,0x8b,0xe2,0x67,0xc3, + 0x5f,0xe2,0x25,0x7f,0x06,0xf2,0xcb,0xdf,0x78,0xdb,0x61,0x26,0x74,0xd7,0x3a,0x32, + 0x32,0xfe,0x67,0xa8,0x8f,0xd4,0xcf,0xc2,0x3a,0x67,0xa2,0xbe,0xcc,0xb3,0x81,0x4d, + 0x43,0x3f,0x73,0xc0,0x47,0xfc,0xe7,0xc2,0x96,0x42,0xf6,0x85,0xd4,0xcf,0x33,0xb0, + 0x67,0xc0,0x2e,0xd7,0x5c,0xf0,0x55,0xff,0x65,0xd8,0xab,0x3a,0x2f,0xc1,0xde,0x18, + 0x6d,0x23,0x2b,0xa8,0x5f,0xfe,0xc3,0x91,0xf5,0x6b,0xbc,0x8c,0xfb,0x0a,0x70,0x96, + 0xf9,0xba,0x40,0x8d,0xca,0xc0,0xbc,0x0a,0xe7,0x48,0xe2,0x5f,0x03,0xc7,0x64,0x68, + 0xfc,0x3a,0xee,0xc3,0xe4,0x5f,0x03,0x0e,0x3a,0xaf,0xc3,0xde,0xd7,0x79,0x03,0x78, + 0x4a,0xfc,0x7b,0xb8,0xe7,0xf8,0x16,0x9c,0x33,0xdd,0x23,0x6d,0x01,0x3e,0xe7,0x70, + 0x6e,0x74,0x7e,0x01,0x67,0x50,0xe7,0x57,0x02,0x6b,0x70,0x0d,0x67,0x4a,0xf3,0x19, + 0x5f,0x90,0xba,0x4c,0xe9,0x27,0x6c,0x5c,0x6d,0xdd,0x43,0x32,0x8f,0x32,0x11,0x3e, + 0xe2,0x7f,0xc8,0xce,0x2b,0x8f,0xbe,0x7a,0x77,0x4f,0x1f,0xb6,0xf3,0xb7,0x76,0x35, + 0xa7,0x3f,0x61,0x57,0x22,0x84,0xf5,0xf3,0xd0,0x43,0x9f,0x45,0x64,0x7d,0xd2,0xb1, + 0x5f,0xd3,0xb0,0x27,0xf3,0x6c,0x47,0xb3,0x71,0x7e,0xd3,0x30,0x74,0x6d,0xd6,0x63, + 0xaf,0xa7,0xc3,0x9e,0x6d,0x33,0xc8,0x5e,0x99,0x87,0xfd,0x34,0x07,0xf9,0xc4,0x67, + 0x3e,0xf0,0x9d,0xd6,0x47,0xe6,0x0b,0x10,0x37,0x1f,0x71,0xb2,0x87,0x9e,0x45,0xdc, + 0x42,0xc4,0xc9,0x3e,0x5a,0x04,0xfc,0xb8,0xf5,0x91,0xf3,0xbc,0x18,0x98,0xec,0xaf, + 0x5b,0x96,0x79,0x3e,0xf8,0xf4,0x5b,0xff,0xc5,0x3e,0x5f,0xcf,0xc7,0xa4,0x1f,0xb9, + 0x7f,0xce,0xc6,0x89,0x96,0x4b,0x50,0x53,0xfe,0xb6,0x41,0xdf,0xe7,0x81,0x17,0x58, + 0x75,0x84,0xd3,0x0e,0xe3,0x30,0xf5,0xbb,0x6d,0x73,0x68,0x2e,0xb9,0xde,0xb4,0x5a, + 0x88,0xdf,0x11,0xe3,0x7c,0xa2,0x11,0x93,0x47,0x3d,0x2c,0x47,0x0f,0xcb,0xa8,0x87, + 0x15,0xc0,0xb5,0x87,0x42,0x60,0xda,0x43,0x11,0xf5,0x20,0xb6,0x95,0x76,0x14,0xa1, + 0xee,0x4a,0xea,0xe1,0x05,0xd4,0x36,0xd4,0x43,0x31,0x70,0xed,0x61,0xb7,0x71,0x98, + 0xfa,0x49,0x0f,0x9a,0xab,0x88,0x7a,0x68,0x31,0xce,0x27,0x1f,0x31,0x2b,0xa9,0x87, + 0x55,0xe8,0xa1,0x84,0x7a,0x78,0x11,0xb8,0xf6,0x50,0x0a,0x4c,0x7b,0x28,0xa7,0x1e, + 0xc4,0x56,0x66,0x47,0x39,0xea,0x96,0x61,0x1f,0x49,0xdd,0xd5,0xa8,0xdd,0x62,0x22, + 0xe7,0x5b,0x38,0xaa,0x6f,0x39,0x71,0x3c,0x0a,0xbf,0x22,0xc4,0x95,0x81,0x4f,0x85, + 0xbf,0xf7,0xdc,0xf9,0xd7,0x3d,0xf7,0x0a,0x38,0x57,0xd2,0x9e,0xdb,0x00,0xbc,0x0e, + 0x7b,0x6e,0x23,0x30,0xc9,0x2b,0x71,0xf2,0x4c,0xd8,0x84,0xb8,0x2a,0xc4,0x89,0xa6, + 0x9b,0x81,0xab,0xee,0x5b,0x10,0xeb,0x11,0x56,0x0d,0xcc,0xf8,0xfb,0x2d,0xc6,0x7f, + 0x9e,0x6c,0x85,0x6f,0x35,0x72,0x68,0x8d,0x5a,0xd4,0xa8,0xa1,0x1a,0xdb,0x80,0x17, + 0xdb,0x5e,0xe5,0xbc,0x6d,0x47,0x4f,0x5b,0xf1,0x0c,0xda,0x46,0xeb,0xb1,0x03,0xf1, + 0x75,0xb4,0x1e,0x3b,0x81,0xeb,0x7a,0xec,0x02,0xa6,0xeb,0xb1,0x87,0xd6,0x43,0x6c, + 0xbb,0xed,0xd8,0x03,0x8d,0x77,0xa3,0x0f,0x79,0x26,0xec,0x43,0x6d,0x0f,0x71,0x09, + 0x58,0x94,0xbf,0xed,0xbd,0xe4,0x1a,0x65,0x5c,0x8c,0x5c,0xcf,0xa2,0xd6,0x68,0xe3, + 0xe2,0x86,0x23,0x66,0xb2,0x89,0xd4,0x12,0xdb,0x18,0x3b,0xc6,0x21,0x4e,0xae,0xc3, + 0x6c,0x8f,0xfe,0x3b,0x15,0x6b,0x3e,0x06,0x75,0xc7,0xfa,0x9c,0x1c,0x8f,0x89,0xc6, + 0xd9,0xc7,0xf9,0xbd,0x38,0x6c,0x92,0x01,0x8e,0x3d,0x92,0x80,0x9c,0x92,0x5f,0xe3, + 0xe2,0xc1,0x25,0x2e,0xe0,0x23,0x9c,0x06,0x6c,0xb5,0x3e,0x60,0x37,0xc1,0xe1,0x98, + 0x71,0x79,0x85,0x57,0x3c,0xb8,0xca,0xd9,0x91,0x35,0xd8,0x6b,0x9c,0x7d,0x3b,0xad, + 0xb5,0xc4,0xec,0x87,0x46,0x06,0xfd,0xa6,0x06,0x34,0x9a,0x8a,0x9a,0x53,0x49,0xa3, + 0x69,0xc6,0xc5,0xa9,0x46,0x29,0xa4,0x91,0xd8,0xa6,0xdb,0x91,0x84,0xb8,0x24,0xd2, + 0xe8,0x31,0xd2,0x68,0x7f,0x40,0xa3,0xc7,0x8d,0xb3,0xb3,0x46,0xc9,0xc6,0xe1,0xaa, + 0x51,0x2a,0x72,0x4e,0x27,0x8d,0x12,0xc1,0x25,0x2e,0xe0,0x93,0x42,0x1a,0xa5,0x92, + 0x46,0xad,0xc6,0xe5,0x15,0x5e,0x89,0xe0,0xaa,0x1a,0xbd,0x61,0x9c,0x7d,0x2f,0x78, + 0xaa,0x46,0xf5,0xd0,0x28,0x84,0x7e,0x73,0x02,0x1a,0xa5,0xa1,0x66,0x1a,0x69,0x94, + 0x6e,0x5c,0x9c,0x6a,0xb4,0x80,0x34,0x12,0x5b,0x86,0x9c,0x53,0xc4,0x65,0x93,0x46, + 0x73,0x49,0xa3,0xfa,0x80,0x46,0xf3,0x8c,0xb3,0xb3,0x46,0xf3,0x8d,0xc3,0x55,0xa3, + 0x1c,0xe4,0xcc,0x20,0x8d,0xb2,0xc0,0x25,0x2e,0xe0,0xb3,0x80,0x34,0xca,0x21,0x8d, + 0x3e,0x32,0x2e,0xaf,0xf0,0xca,0x02,0x57,0xd5,0x68,0xbf,0x71,0x76,0xd1,0x2a,0x84, + 0x7c,0x7a,0xf6,0xf6,0xe0,0xf9,0x26,0x7e,0x6d,0xd8,0x6b,0xe5,0x88,0xc9,0x31,0x91, + 0x33,0xff,0x36,0xce,0x7c,0x03,0x9d,0xf9,0x77,0x80,0xeb,0x99,0x3f,0x00,0x4c,0xcf, + 0x7c,0x13,0x9d,0x79,0xb1,0x35,0xca,0x7b,0x00,0x75,0x8f,0xd0,0xf3,0xe4,0x28,0x72, + 0xb7,0x50,0xee,0x63,0xc0,0x35,0xf7,0x87,0xc0,0x34,0xf7,0x71,0xca,0x2d,0xb6,0x56, + 0xdf,0xd7,0xe5,0x6e,0xa5,0x7d,0xf0,0x31,0xfa,0x92,0x6f,0x8a,0x2e,0xe4,0xfa,0x44, + 0x71,0x68,0xa1,0x71,0xc7,0xa1,0x85,0xf8,0x9c,0x40,0xcd,0x23,0xf0,0x6f,0x45,0xdd, + 0x0e,0xaa,0x2b,0x3e,0xed,0x76,0x74,0x20,0xbe,0x9d,0xea,0x9e,0xa4,0xba,0x79,0xf6, + 0xab,0x4a,0xbe,0xcf,0x4e,0x01,0x6b,0x33,0x91,0x6f,0x96,0x10,0x9e,0xd7,0x62,0x3f, + 0x8d,0x38,0x1d,0xfb,0x6c,0x2e,0xc1,0x3b,0x11,0x7b,0xda,0xcf,0x35,0xd8,0x5f,0xab, + 0x2e,0xe4,0xea,0xc4,0x77,0x53,0x34,0x7d,0xff,0x49,0x4f,0xca,0xa9,0x83,0xd6,0xb7, + 0x1d,0xb5,0x8f,0x23,0xbe,0x1d,0xbe,0x4d,0xf0,0x6d,0x24,0xfe,0xcd,0xff,0xc1,0xff, + 0x83,0x7b,0xf0,0x7f,0x13,0x3c,0x0f,0xc2,0xa7,0x99,0x78,0x1e,0x46,0xcc,0xc1,0x7b, + 0xf0,0xd4,0xda,0x4d,0xc4,0xf3,0x84,0x71,0x5c,0x3b,0x10,0xdf,0x48,0x7b,0xe5,0x0b, + 0xec,0x95,0x73,0xb4,0x57,0xbe,0x04,0xae,0x7b,0xe5,0x2b,0x60,0xba,0x57,0xba,0x69, + 0xcd,0xc4,0x76,0xde,0x8e,0x6e,0xd4,0x3d,0x4f,0x3d,0x7f,0x8d,0xda,0xfa,0xee,0x29, + 0x0c,0x3c,0x33,0x72,0x71,0x06,0x73,0xe9,0x99,0x91,0x67,0x5c,0xdc,0x14,0xc4,0xac, + 0xa0,0x67,0x86,0xd8,0xf2,0xed,0x58,0x82,0x38,0xb9,0xee,0x40,0xad,0xa5,0x88,0x9b, + 0x40,0xcf,0x8a,0x65,0xc6,0xe1,0x87,0xe8,0xd9,0xb2,0x9c,0x9e,0x2d,0x62,0x4f,0x82, + 0x6e,0x85,0xc8,0x99,0x4f,0xcf,0x8c,0x02,0xe4,0x94,0xef,0x6a,0xf6,0x59,0x41,0xcf, + 0x8c,0x42,0x7a,0x66,0x74,0x18,0x97,0x5f,0x78,0x15,0x80,0xab,0x3e,0x33,0xea,0x8d, + 0xb3,0xab,0x1e,0xaa,0xd1,0x37,0xd0,0x48,0xdf,0x3d,0x15,0x01,0x8d,0x8a,0x51,0xb3, + 0x98,0x34,0x2a,0x31,0x2e,0x4e,0x35,0x5a,0x4b,0x1a,0x89,0x6d,0x95,0x1d,0x65,0x88, + 0x2b,0x23,0x8d,0x5e,0x42,0x1c,0x6b,0xb4,0xda,0x38,0x9c,0x35,0x5a,0x43,0x1a,0xad, + 0x26,0x8d,0x2a,0x90,0x73,0x15,0x69,0x54,0x8a,0x9c,0xaa,0x91,0xfa,0xac,0x25,0x8d, + 0x2a,0x48,0xa3,0x93,0xc6,0xe5,0x17,0x5e,0xa5,0xe0,0xaa,0x1a,0x35,0x18,0x67,0xaf, + 0x0f,0xbc,0x7b,0xbe,0x85,0x46,0xfa,0xee,0xa9,0x0d,0x68,0xb4,0x01,0x35,0x37,0x90, + 0x46,0x1b,0x8d,0x8b,0x53,0x8d,0x6a,0x48,0x23,0xb1,0x55,0xd9,0xb1,0x19,0x71,0x9b, + 0x49,0xa3,0x2d,0x88,0x63,0x8d,0xaa,0x8d,0xc3,0x59,0xa3,0xad,0xa4,0x51,0x35,0x69, + 0x54,0x8b,0x9c,0x55,0xa4,0xd1,0x26,0xe4,0x54,0x8d,0xd4,0xa7,0x86,0x34,0xaa,0x25, + 0x8d,0x4e,0x19,0x97,0x5f,0x78,0x6d,0x02,0x57,0xd5,0xe8,0x80,0x71,0xf6,0x06,0x7a, + 0xf7,0xe8,0xd9,0xeb,0xa6,0x33,0xdf,0x89,0xbd,0xd6,0x84,0x98,0x5a,0x7a,0xf7,0x7c, + 0x8f,0x33,0x7f,0x81,0xce,0xfc,0x0f,0xc0,0xf5,0xcc,0xff,0x08,0x4c,0xcf,0xfc,0x25, + 0x3a,0xf3,0x62,0xbb,0x68,0xc7,0x65,0xd4,0xbd,0x4c,0xcf,0x93,0x9f,0x91,0xfb,0x0a, + 0xe5,0xfe,0x05,0xb8,0xe6,0xfe,0x15,0x98,0xe6,0xee,0xa5,0xdc,0x62,0xeb,0xb1,0xe3, + 0x2a,0x72,0x5f,0xa5,0xef,0xec,0xdf,0x91,0xfb,0x1a,0x7d,0x67,0xff,0x01,0xbc,0x1b, + 0xdf,0xed,0x7f,0x02,0xab,0xa1,0x7a,0x7f,0x01,0xaf,0x44,0xbd,0x1b,0x54,0x4f,0x6c, + 0xd7,0xed,0xb8,0x81,0x7a,0xd7,0xbd,0x88,0xd6,0xcd,0xc6,0xbd,0xd3,0x3a,0xe9,0x7f, + 0x2d,0xf5,0xbb,0x41,0x5a,0x9f,0x31,0xce,0xe7,0x2a,0x62,0xae,0x13,0x9f,0x5b,0xe0, + 0xb3,0x90,0xf8,0xf4,0x01,0x57,0x3e,0xfd,0xc4,0xa7,0xcf,0xaf,0xe3,0xf9,0x98,0xd4, + 0xb9,0x4d,0x7c,0xde,0x07,0x9f,0x33,0xb4,0xf6,0xea,0xd7,0x4f,0x7c,0xba,0x8c,0xf3, + 0xb9,0x81,0x98,0xdb,0xc4,0xe7,0x0e,0xf8,0x5c,0x20,0x3e,0xff,0x00,0x57,0x3e,0x1e, + 0x9d,0x15,0xb1,0x0d,0xe0,0xe5,0x24,0x75,0x06,0x88,0xcf,0x41,0xe3,0x7e,0xb3,0xe8, + 0x32,0x91,0xf7,0x8f,0xfa,0x79,0x26,0xc2,0xe7,0x33,0xf8,0xf4,0x23,0x66,0x00,0xbe, + 0xbd,0xe0,0xde,0x43,0x67,0xfd,0x37,0xe8,0x1d,0xa6,0x3a,0xef,0x9a,0x08,0xee,0x05, + 0x62,0x7b,0xa9,0xef,0xb3,0xc6,0xd5,0x92,0xda,0x12,0xd3,0x03,0xdf,0x4b,0xf0,0xbd, + 0x48,0xef,0xd1,0x9f,0x90,0x4f,0x86,0xfe,0xce,0x1b,0xa2,0xf7,0xa8,0xc6,0x5c,0xa2, + 0xfc,0x9f,0x1a,0x57,0xa3,0x17,0xf1,0x17,0xfd,0xdf,0xc4,0xc2,0xfe,0xef,0x32,0x62, + 0xbb,0x63,0x0b,0xcf,0xb4,0xe3,0x5f,0xcf,0x2c,0x49,0xa7,0x98,0x16,0x00,0x00 }; // Generated from: @@ -117,8 +139,8 @@ constexpr uint8_t kImageCopy_frag_00000002[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture2D src; -// layout(location = 0)out uvec4 dst; +// layout(set = 0, binding = 0)uniform texture3D src; +// layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -156,6 +178,19 @@ constexpr uint8_t kImageCopy_frag_00000002[] = { // } // } // +// float sRGBToLinear(float sRGB) +// { +// +// if(sRGB <= 0.04045) +// { +// return sRGB / 12.92; +// } +// else +// { +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// } +// } +// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -175,7 +210,7 @@ constexpr uint8_t kImageCopy_frag_00000002[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . srcIsSRGB) // { @@ -194,9 +229,15 @@ constexpr uint8_t kImageCopy_frag_00000002[] = { // srcValue . rgb /= srcValue . a; // } // -// srcValue *= 255.0; +// vec4 dstValue = vec4(srcValue); // -// uvec4 dstValue = uvec4(srcValue); +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc new file mode 100644 index 0000000000000000000000000000000000000000..2b3c3602cbda038f82b725ef96cdd1a3bf682bd8 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc @@ -0,0 +1,271 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.00000003.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_00000003[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x58,0x59,0x6c,0x55,0x55, + 0x14,0xbd,0xe7,0xbd,0x0e,0x4c,0x2a,0x44,0xac,0x40,0x29,0x08,0xd4,0xc4,0x30,0xb5, + 0xa1,0xa5,0x0c,0xa5,0x7d,0xb4,0x02,0x2d,0x0a,0x65,0xa8,0x4c,0x6d,0xa2,0x14,0x68, + 0x05,0x5b,0x68,0xad,0x10,0x86,0x42,0x99,0x64,0x30,0x26,0x4d,0x4c,0x9a,0x54,0xa0, + 0x8a,0xca,0x50,0xa0,0x08,0xd2,0x86,0x40,0x01,0xf5,0x03,0x15,0x12,0x7f,0xfc,0x21, + 0x41,0x85,0x0f,0x41,0xa1,0x31,0x04,0x8d,0xd2,0x08,0x34,0x8a,0x67,0xdf,0xb3,0x76, + 0xdf,0xca,0x8d,0xc4,0x97,0x9c,0xdc,0x77,0xd6,0x9e,0xd6,0x5e,0xe7,0x9c,0x7b,0xef, + 0x7b,0xe1,0xd0,0xb0,0x78,0xcf,0x33,0x5e,0x0f,0xaf,0x9b,0xf7,0xa5,0xf1,0xfc,0x4f, + 0x1f,0x2f,0xe4,0x19,0x5c,0xc7,0xd8,0x6b,0x4f,0x2f,0xce,0x9f,0xe7,0xcd,0x28,0x9c, + 0x31,0xfa,0xad,0xd5,0xcb,0x46,0xa7,0x8f,0x4d,0x15,0xbf,0x27,0xbd,0xb0,0xef,0x2f, + 0xb6,0xa7,0xbc,0x78,0x2f,0xc6,0x5e,0x65,0xac,0x2c,0x59,0xb1,0x4a,0xf0,0x09,0x76, + 0xc4,0x5a,0x63,0x6f,0xeb,0x27,0x78,0xbc,0xe4,0xb0,0xdf,0x26,0xf8,0x39,0x25,0xc6, + 0xf3,0xf2,0xbd,0x58,0x2f,0xe2,0xca,0x7a,0xc3,0x70,0x55,0xcc,0x00,0xeb,0x46,0x58, + 0x08,0x58,0x6f,0xc2,0xc2,0xc0,0xfa,0x12,0x16,0x03,0xac,0x1f,0x61,0xb1,0xc0,0x06, + 0x12,0x16,0x07,0xec,0x39,0xc2,0xe2,0x81,0x25,0x13,0xd6,0x0d,0xd8,0x0b,0x84,0x75, + 0x07,0x36,0x92,0xb0,0x1e,0xc0,0x52,0x09,0xeb,0x09,0x2c,0x9d,0xb0,0x5e,0xc0,0xc6, + 0x13,0xf6,0x04,0xb0,0x49,0xbe,0x4e,0xe1,0xae,0x7e,0x45,0x33,0x11,0x74,0x28,0xf4, + 0xd1,0xf9,0x10,0x9a,0x8b,0xce,0x83,0x30,0x7f,0xda,0x46,0x85,0x7c,0x7b,0xd8,0xd7, + 0x46,0xbe,0x27,0xd8,0x6f,0x71,0xe8,0x73,0x84,0xf5,0x8f,0x83,0x86,0x03,0x47,0xcf, + 0xcc,0xec,0x6b,0x3d,0xfa,0x10,0x9e,0x60,0xc7,0xdc,0xb3,0x05,0x39,0x3a,0x4f,0xb4, + 0x63,0xde,0xbc,0x2b,0xd9,0x3a,0x4f,0xb2,0x23,0xab,0xc7,0xae,0x88,0xce,0x07,0xdb, + 0x71,0x22,0xaf,0x24,0x4b,0xe7,0xa2,0xdb,0xad,0x13,0xcf,0x77,0xcd,0x53,0xec,0xd8, + 0xbb,0xa7,0xff,0xe4,0x67,0xec,0x3c,0x0d,0x1c,0x64,0x6d,0x9f,0xb5,0x73,0xd1,0x24, + 0x0d,0x1c,0x65,0x3e,0x0e,0x6b,0x12,0xe3,0xfb,0xc5,0xf8,0xfa,0x88,0xaf,0xe0,0x99, + 0x98,0x4f,0xa0,0xf8,0x89,0xf0,0x97,0x78,0xc9,0x9f,0x8d,0xfc,0xf2,0x19,0x64,0x3b, + 0x8c,0x40,0x77,0xad,0x23,0x23,0xfb,0x7f,0x86,0xfa,0x48,0xfd,0xc9,0x58,0xe7,0x08, + 0xea,0xcb,0x3c,0x07,0xd8,0x08,0xf4,0x93,0x0b,0x3e,0xe2,0xff,0x22,0x6c,0xe9,0x64, + 0x9f,0x4e,0xfd,0xbc,0x04,0x7b,0x36,0xec,0x72,0x9d,0x09,0xbe,0xea,0x3f,0x1f,0x7b, + 0x55,0xe7,0x25,0xd8,0x1b,0xfd,0x6d,0x64,0x39,0xfa,0xc5,0x51,0xed,0xfa,0xe8,0x3c, + 0xd1,0xae,0x73,0x85,0xbd,0x96,0xa3,0xde,0x4a,0xe0,0x15,0xe0,0x2f,0xf3,0x55,0x81, + 0x7a,0x55,0x81,0x79,0x0d,0xf4,0x94,0xf8,0x8d,0xe0,0x9b,0x46,0xf6,0xad,0xd8,0xe7, + 0x3a,0x6f,0x00,0x27,0x59,0x8f,0x8f,0xf0,0x3d,0x4c,0xf6,0x26,0x9c,0x29,0xdd,0x0f, + 0x27,0x03,0xf5,0x2e,0xe2,0x8c,0xe8,0xfc,0x2a,0xce,0x9b,0xce,0x6f,0x06,0xf4,0xbe, + 0x8b,0xf3,0xa3,0xf9,0x42,0x7e,0xf3,0x5b,0x22,0xc2,0x37,0xc6,0xb8,0xda,0xba,0x5f, + 0x64,0x1e,0x6b,0xa2,0x7c,0xc4,0xff,0xa0,0x9d,0x57,0x36,0x55,0x77,0xed,0xdf,0x43, + 0x76,0xfe,0xde,0xf6,0x0f,0xb3,0x32,0xac,0xea,0x21,0xac,0x95,0x87,0x1e,0xee,0x5b, + 0x44,0xd6,0x22,0x0b,0x7b,0x33,0x13,0xfb,0x6f,0x96,0xed,0x68,0x22,0xce,0x6a,0x26, + 0x86,0xae,0xc3,0x2a,0xec,0xeb,0x2c,0xd8,0x73,0x6c,0x06,0xd9,0x17,0x53,0xb0,0x77, + 0x72,0x91,0x4f,0x7c,0xa6,0x02,0xdf,0x66,0x7d,0x64,0x3e,0x0d,0x71,0x53,0x11,0x27, + 0xfb,0xe5,0x65,0xc4,0x4d,0x47,0x9c,0xec,0x99,0x19,0xc0,0x9b,0xad,0x8f,0x9c,0xdd, + 0x02,0x60,0xb2,0x97,0xfe,0xb2,0xcc,0x67,0x83,0xcf,0x43,0xeb,0x5f,0xe0,0xf3,0xf5, + 0x7c,0x4c,0xfa,0x91,0xef,0x73,0x6c,0x9c,0x68,0x59,0x88,0x9a,0xf2,0xa9,0x85,0xbe, + 0xaf,0x00,0x9f,0x6b,0xd5,0x11,0x4e,0xdb,0x8c,0xc3,0xd4,0xef,0x81,0xcd,0xa1,0xb9, + 0xe4,0xda,0x61,0xb5,0x10,0xbf,0xc3,0xc6,0xf9,0xc4,0x22,0x66,0x16,0xf5,0xb0,0x00, + 0x3d,0xcc,0xa7,0x1e,0x16,0x02,0xd7,0x1e,0x16,0x01,0xd3,0x1e,0x8a,0xa9,0x07,0xb1, + 0x15,0xd9,0x51,0x8c,0xba,0x45,0xd4,0xc3,0xab,0xa8,0x6d,0xa8,0x87,0xd7,0x80,0x6b, + 0x0f,0x3b,0x8c,0xc3,0xd4,0x4f,0x7a,0xd0,0x5c,0xc5,0xd4,0x43,0x93,0x71,0x3e,0xb3, + 0x11,0x53,0x44,0x3d,0x2c,0x41,0x0f,0x25,0xd4,0xc3,0x52,0xe0,0xda,0xc3,0x32,0x60, + 0xda,0x43,0x19,0xf5,0x20,0xb6,0x52,0x3b,0xca,0x50,0xb7,0x14,0xfb,0x48,0xea,0x2e, + 0x47,0xed,0x26,0x13,0x3d,0xcb,0xc2,0x51,0x7d,0xcb,0x88,0xe3,0x11,0xf8,0x15,0x23, + 0xae,0x14,0x7c,0xe4,0x8c,0x57,0xe2,0x7c,0xeb,0x9e,0x7b,0x13,0x9c,0xab,0x68,0xcf, + 0x55,0x03,0xdf,0x82,0x3d,0xb7,0x1a,0x98,0xe4,0xad,0xc4,0x3d,0x75,0x0d,0xf0,0x65, + 0x76,0x2e,0xf7,0x92,0xb5,0xc8,0xfd,0x3a,0x62,0xd6,0x01,0xab,0xf2,0xa2,0x31,0xeb, + 0x81,0xef,0xb6,0x3e,0x32,0xdf,0x80,0x3c,0xeb,0xc1,0x47,0xee,0x25,0x9b,0xc0,0xa7, + 0x06,0x7c,0xd2,0xfc,0x35,0x73,0x78,0x25,0xce,0xe3,0x66,0x60,0x0b,0x6c,0xbf,0xe3, + 0x7c,0x9e,0xae,0xf6,0x06,0x9c,0xaf,0xcd,0xb4,0x26,0xdb,0x90,0x6f,0x2b,0xad,0xc9, + 0x76,0xe0,0xba,0x26,0x6f,0x03,0xd3,0x35,0xd9,0x49,0x6b,0x22,0xb6,0x1d,0x76,0xec, + 0x84,0xce,0x3b,0xb0,0xaf,0x84,0xc7,0x3b,0xa8,0xed,0x21,0x2e,0x19,0x0b,0xd3,0x69, + 0xbf,0x4b,0xae,0x7e,0xc6,0xc5,0xc8,0xf5,0x02,0x6a,0x0d,0x30,0x2e,0xae,0x37,0x62, + 0x86,0x99,0x68,0x2d,0xb1,0x25,0xca,0x73,0x1a,0x71,0x72,0xed,0x65,0x7b,0xf4,0x9f, + 0xcb,0x58,0xf7,0x01,0xa8,0x9b,0xe8,0xf3,0x72,0x3c,0x86,0x18,0x67,0x4f,0xf2,0xfb, + 0x70,0xd8,0x50,0xe3,0xf0,0xc1,0xd8,0x27,0xc9,0xc8,0x29,0xf9,0x35,0x2e,0x09,0x5c, + 0x12,0x02,0x3e,0xc2,0xe9,0x91,0xad,0x76,0x1f,0x58,0x07,0x38,0x1c,0x35,0x2e,0xaf, + 0xf0,0x4a,0x02,0x57,0x39,0x3f,0xb2,0x06,0xbb,0x8d,0xb3,0xab,0x1e,0xaa,0x51,0x1d, + 0x34,0x32,0xe8,0x37,0x23,0xa0,0xd1,0x70,0xd4,0x1c,0x4e,0x1a,0x8d,0x34,0x2e,0x4e, + 0x35,0x1a,0x4b,0x1a,0x89,0x6d,0x94,0x1d,0xa9,0x88,0x4b,0x25,0x8d,0xc6,0x90,0x46, + 0x75,0x01,0x8d,0xd2,0x8c,0xb3,0xb3,0x46,0xe9,0xc6,0xe1,0xaa,0x51,0x06,0x72,0x8e, + 0x22,0x8d,0x52,0xc0,0x25,0x21,0xe0,0x33,0x96,0x34,0xca,0x20,0x8d,0x9a,0x8d,0xcb, + 0x2b,0xbc,0x52,0xc0,0x55,0x35,0x7a,0xd7,0x38,0xfb,0x6e,0xf0,0x54,0x8d,0xea,0xa1, + 0x51,0x08,0xfd,0xe6,0x07,0x34,0x9a,0x84,0x9a,0x93,0x48,0xa3,0x6c,0xe3,0xe2,0x54, + 0xa3,0x3c,0xd2,0x48,0x6c,0x11,0x3b,0x72,0x11,0x97,0x4b,0x1a,0x4d,0x21,0x8d,0xea, + 0x03,0x1a,0x4d,0x35,0xce,0xce,0x1a,0x4d,0x33,0x0e,0x57,0x8d,0xf2,0x91,0x33,0x42, + 0x1a,0xe5,0x80,0x4b,0x42,0xc0,0x27,0x8f,0x34,0xca,0x27,0x8d,0x3e,0x35,0x2e,0xaf, + 0xf0,0xca,0x01,0x57,0xd5,0xa8,0xce,0x38,0xbb,0x68,0x15,0x42,0x3e,0x3d,0x7b,0x3b, + 0x71,0x8f,0x13,0xbf,0x93,0xd8,0x6b,0x65,0x88,0x91,0xfc,0x7a,0xe6,0xdf,0xc7,0x99, + 0x6f,0xa0,0x33,0xbf,0x07,0xb8,0x9e,0xf9,0xbd,0xc0,0xf4,0xcc,0x37,0xd2,0x99,0x17, + 0xdb,0x3e,0x79,0x16,0xa0,0xee,0x61,0xba,0x9f,0x1c,0x41,0xee,0x26,0xca,0x7d,0x14, + 0xb8,0xe6,0x3e,0x06,0x4c,0x73,0x1f,0xa7,0xdc,0xc7,0x7c,0x3f,0xcf,0xc7,0x24,0x77, + 0x33,0xed,0x83,0x13,0xe8,0x4b,0xde,0x2b,0xce,0x21,0xd7,0x67,0x8a,0x43,0x0b,0x8d, + 0x3b,0x0e,0x2d,0xc4,0xe7,0x14,0x6a,0x1e,0x86,0x7f,0x33,0xea,0xb6,0x52,0x5d,0xf1, + 0x69,0xb1,0xa3,0x15,0xf1,0x2d,0x54,0xf7,0x34,0xd5,0x9d,0x65,0xdf,0xac,0xe4,0x1d, + 0xed,0x0c,0xb0,0x93,0x26,0xfa,0xde,0x12,0xf2,0xdf,0x11,0xe2,0x7c,0xfb,0x59,0xc4, + 0xe9,0x90,0x7b,0xba,0xe0,0x6d,0x88,0x3d,0xeb,0xe7,0xea,0xee,0xaf,0xd5,0x79,0xe4, + 0x6a,0xc3,0xbb,0x53,0x2c,0xbd,0x03,0x4a,0x4f,0xca,0xa9,0x95,0xd6,0xb7,0x05,0xb5, + 0x8f,0x23,0xbe,0x05,0xbe,0x8d,0xf0,0xdd,0x47,0xfc,0xf7,0xff,0x07,0xff,0x4f,0x1e, + 0xc3,0xbf,0x0e,0x3c,0x0f,0xc0,0x67,0x3f,0xf1,0x3c,0x84,0x98,0x03,0x8f,0xe1,0xa9, + 0xb5,0x1b,0x89,0xe7,0x29,0xe3,0xb8,0xb6,0x22,0x7e,0x1f,0xed,0x95,0xaf,0xb0,0x57, + 0x2e,0xd2,0x5e,0xf9,0x1a,0xb8,0xee,0x95,0x6f,0x80,0xe9,0x5e,0xb9,0x4c,0x6b,0x26, + 0xb6,0x4b,0x76,0x5c,0x46,0xdd,0x4b,0xd4,0xf3,0xb7,0xa8,0xad,0xcf,0x9e,0xa2,0xc0, + 0x3d,0xa3,0x00,0x67,0xb0,0x80,0xee,0x19,0xb3,0x8d,0x8b,0x4b,0x46,0xcc,0x22,0xba, + 0x67,0x88,0x6d,0x8e,0xbc,0xc7,0x21,0x4e,0xae,0x5b,0x51,0x6b,0x3e,0xe2,0x06,0xd3, + 0xbd,0x62,0x81,0x71,0xf8,0x41,0xba,0xb7,0x2c,0xa4,0x7b,0x8b,0xd8,0x53,0xa0,0x5b, + 0x11,0x72,0xce,0xa1,0x7b,0x46,0x21,0x72,0xca,0xbb,0x35,0xfb,0x2c,0xa2,0x7b,0x46, + 0x11,0xdd,0x33,0x5a,0x8d,0xcb,0x2f,0xbc,0x0a,0xc1,0x55,0xef,0x19,0xf5,0xc6,0xd9, + 0x55,0x0f,0xd5,0xe8,0x3b,0x68,0xa4,0xcf,0x9e,0x8a,0x80,0x46,0x8b,0x51,0x73,0x31, + 0x69,0xb4,0xc4,0xb8,0x38,0xd5,0xa8,0x9c,0x34,0x12,0xdb,0x52,0x3b,0xca,0x10,0x57, + 0x46,0x1a,0x2d,0x47,0x1c,0x6b,0xb4,0xc2,0x38,0x9c,0x35,0x7a,0x83,0x34,0x5a,0x41, + 0x1a,0x55,0x20,0xe7,0x52,0xd2,0xa8,0x14,0x39,0x55,0x23,0xf5,0x29,0x27,0x8d,0x2a, + 0x48,0xa3,0xd3,0xc6,0xe5,0x17,0x5e,0xa5,0xe0,0xaa,0x1a,0x35,0x18,0x67,0xaf,0x0f, + 0x3c,0x7b,0xae,0x40,0x23,0x7d,0xf6,0xd4,0x06,0x34,0xaa,0x46,0xcd,0x6a,0xd2,0x68, + 0xb5,0x71,0x71,0xaa,0xd1,0x26,0xd2,0x48,0x6c,0x6b,0xec,0x58,0x87,0xb8,0x75,0xa4, + 0xd1,0x06,0xc4,0xb1,0x46,0x35,0xc6,0xe1,0xac,0xd1,0x46,0xd2,0xa8,0x86,0x34,0xaa, + 0x45,0xce,0x35,0xa4,0xd1,0x5a,0xe4,0x54,0x8d,0xd4,0x67,0x13,0x69,0x54,0x4b,0x1a, + 0x9d,0x31,0x2e,0xbf,0xf0,0x5a,0x0b,0xae,0xaa,0xd1,0x5e,0xe3,0xec,0x0d,0xf4,0xec, + 0xd1,0xb3,0x77,0x99,0xce,0x7c,0x1b,0xf6,0x5a,0x23,0x62,0x6a,0xe9,0xd9,0xf3,0x3d, + 0xce,0xfc,0x55,0x3a,0xf3,0x3f,0x00,0xd7,0x33,0xff,0x23,0x30,0x3d,0xf3,0xd7,0xe9, + 0xcc,0x8b,0xed,0x9a,0x1d,0x37,0x50,0xf7,0x06,0xdd,0x4f,0x7e,0x46,0xee,0x9b,0x94, + 0xfb,0x17,0xe0,0x9a,0xfb,0x16,0x30,0xcd,0xdd,0x4e,0xb9,0xc5,0x76,0xdb,0x8e,0x3b, + 0xc8,0x7d,0x87,0xde,0xbb,0x7f,0x43,0xee,0xbb,0xf4,0xde,0xfd,0x3b,0xf0,0x4b,0xf8, + 0x1d,0xf5,0x07,0xb0,0x1a,0xaa,0xf7,0x27,0xf0,0x2a,0xd4,0xeb,0xa0,0x7a,0x62,0xbb, + 0xe7,0xeb,0xe6,0xea,0xdd,0xf3,0xa2,0x5a,0xef,0x37,0xee,0x99,0xd6,0x46,0xbf,0xb7, + 0xd4,0xaf,0x83,0xb4,0x3e,0x67,0x9c,0xcf,0x1d,0xc4,0xdc,0x23,0x3e,0xf7,0xc1,0x67, + 0x3a,0xf1,0x79,0x00,0x5c,0xf9,0x74,0x12,0x9f,0x07,0xfe,0xd5,0xf3,0x31,0xa9,0xf3, + 0x90,0xf8,0x7c,0x0c,0x3e,0xe7,0x68,0xed,0xd5,0xaf,0x93,0xf8,0x9c,0x37,0xce,0xa7, + 0x03,0x31,0x0f,0x89,0xcf,0x3f,0xe0,0x73,0x95,0xf8,0x3c,0x02,0xae,0x7c,0x0c,0x9d, + 0x95,0x47,0x78,0x30,0x19,0xec,0x59,0x8f,0xf6,0xe2,0x01,0xe3,0xfe,0xb7,0x38,0x6f, + 0xa2,0xcf,0x1f,0xf5,0x33,0x26,0xca,0xe7,0x0b,0xf8,0x74,0x22,0xc6,0xc3,0x39,0x68, + 0x07,0xf7,0xdb,0x74,0xd6,0x7f,0x85,0xde,0x61,0xea,0xfb,0x03,0x13,0xc5,0xf5,0x37, + 0xa5,0xc6,0xb6,0x53,0xdf,0x9f,0x1b,0x57,0x4b,0x6a,0x4b,0xcc,0x6d,0xf8,0x5e,0x87, + 0xef,0x35,0x7a,0x8e,0xfe,0x84,0x7c,0x32,0xf4,0x7f,0xdd,0x10,0x3d,0x47,0x35,0xe6, + 0x3a,0xe5,0xbf,0x60,0x5c,0x8d,0x76,0xc4,0x5f,0xf3,0xff,0x03,0x0b,0xfb,0xff,0xcd, + 0x88,0xed,0x6f,0xdb,0xd8,0x78,0x3b,0xfe,0x05,0xfc,0x0e,0x7e,0xc9,0x90,0x16,0x00, + 0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform sampler2D src; +// layout(location = 0)out vec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// +// float sRGBToLinear(float sRGB) +// { +// +// if(sRGB <= 0.04045) +// { +// return sRGB / 12.92; +// } +// else +// { +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// } +// } +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// vec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// vec4 dstValue = vec4(srcValue); +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc index d999c32559b12162be36e4f3c734af3566448774..bb366c3cd21336ba8389c670f5a297bd930df5bb 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc @@ -10,106 +10,105 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000004[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0xe9,0x6f,0x95,0x45, - 0x14,0xc6,0x67,0xee,0xed,0xc2,0x56,0x5a,0x05,0x2a,0x10,0x34,0xad,0x85,0x0a,0x52, - 0x4b,0x45,0x28,0xeb,0x65,0x91,0x42,0xab,0x36,0x20,0x10,0x4d,0x10,0x2b,0x69,0x65, - 0x11,0xa9,0x60,0x80,0x08,0x2a,0xd5,0x42,0x25,0x40,0xf8,0x60,0x8c,0xa8,0xd4,0x18, - 0x13,0x3e,0x91,0x80,0x94,0x0f,0x82,0x4a,0x43,0x08,0x1a,0xa5,0x26,0x4a,0x13,0xa5, - 0x06,0xfe,0x02,0x22,0x91,0xb8,0x90,0x10,0x2b,0x04,0x74,0xce,0x3b,0xbf,0xd3,0x7b, - 0x6c,0x5c,0x6e,0x32,0x79,0xdf,0x79,0xe6,0x3c,0x67,0x79,0xe6,0xcc,0xbc,0x85,0x74, - 0xaa,0x2c,0xdf,0x39,0xef,0x06,0xb9,0x01,0xee,0x51,0xef,0x92,0xdf,0x1d,0x2e,0xe5, - 0xe4,0x75,0xb0,0xcb,0x4b,0x9e,0xb5,0xf5,0xcb,0xeb,0x2b,0xb7,0x6c,0x5d,0x5d,0x39, - 0x65,0x6a,0x95,0xac,0x0f,0x75,0xe9,0xc4,0x4e,0xd6,0x0a,0x5d,0xbe,0xcb,0x09,0x4f, - 0x19,0x2f,0x34,0xae,0xdf,0x28,0x78,0x79,0x18,0x97,0xc2,0x28,0x0a,0x76,0x82,0xe7, - 0x8b,0x8f,0xf0,0x56,0x9e,0xf8,0x14,0x8e,0x73,0x75,0x2e,0xd7,0x55,0xc4,0x70,0xae, - 0x8c,0xa7,0x62,0x1e,0x6c,0x80,0xc1,0x52,0x60,0x45,0x06,0x4b,0x83,0x0d,0x37,0x58, - 0x0e,0xd8,0x48,0x83,0xe5,0x82,0x8d,0x31,0x58,0x1e,0x58,0x89,0xc1,0xf2,0xc1,0xc6, - 0x1a,0x6c,0x00,0xd8,0x78,0x83,0x0d,0x04,0xab,0x30,0xd8,0x20,0xb0,0x2a,0x83,0x0d, - 0x06,0x9b,0x62,0xb0,0x21,0x60,0xd3,0x0d,0x56,0x00,0x36,0x3b,0xd1,0x29,0xdd,0x57, - 0xaf,0x68,0xb6,0x32,0x3c,0xef,0x45,0x1f,0x9d,0x97,0x9a,0xb9,0xe8,0x7c,0x0f,0xf3, - 0x61,0x81,0x95,0x4a,0xd6,0xd3,0x89,0x36,0xf2,0x5e,0x1c,0xde,0xf2,0xa8,0x73,0x62, - 0xb0,0xcf,0x23,0xde,0xe5,0x8e,0x71,0x99,0xe1,0xc1,0x62,0xa8,0xc1,0x45,0xb3,0x8e, - 0xda,0xc6,0x8c,0xce,0x45,0xaf,0xf7,0xdb,0x47,0xcd,0x1b,0x11,0xe6,0x25,0xf8,0x90, - 0xbd,0xb9,0x2b,0xcc,0x4b,0x99,0xa7,0x98,0x8f,0x45,0xd3,0x9c,0x04,0xcf,0x71,0xe3, - 0xb0,0x15,0x7c,0x16,0xf3,0x72,0xc3,0xbf,0x0f,0x7b,0xe1,0x8b,0xff,0x89,0xf8,0x73, - 0x49,0x3d,0x45,0x89,0x06,0xa5,0x8c,0x92,0xbe,0xfc,0xff,0x7b,0x94,0xf4,0x3d,0x73, - 0xdc,0x03,0xec,0x53,0x05,0xf1,0x65,0x5e,0x09,0x36,0x91,0x7a,0x26,0x91,0x8f,0xd8, - 0x57,0xb1,0x56,0x6a,0xd6,0xab,0x4d,0x3d,0xd3,0xfa,0xb8,0x71,0x5d,0x9e,0x33,0xc9, - 0x57,0xed,0x17,0xd0,0x6b,0x3a,0x5f,0x8c,0xd6,0x52,0xef,0x93,0xe4,0x27,0xfe,0x46, - 0x05,0x4f,0x2b,0x8c,0x9e,0xf6,0xa7,0x73,0x89,0xf9,0x14,0xef,0x2b,0xa8,0x41,0xe6, - 0x2b,0xfb,0xc5,0x6c,0xe8,0x37,0x6f,0x42,0x53,0xe1,0x3f,0x4b,0xce,0x25,0x66,0x7d, - 0x1d,0xba,0x4b,0x4e,0x2f,0xb2,0x96,0x36,0xeb,0xdb,0x39,0x07,0x3a,0x3f,0x40,0x1f, - 0xeb,0xfc,0x08,0x67,0x42,0xe7,0x27,0xfb,0x69,0x7a,0x96,0x1e,0xd7,0x1e,0xfa,0xda, - 0xe4,0x27,0xf3,0x1f,0x92,0x59,0xeb,0x5c,0xc9,0xef,0x22,0xb1,0xb5,0x47,0x2e,0x72, - 0x6f,0xa4,0x8d,0xfd,0x94,0x20,0xc8,0xce,0xd6,0xd6,0x59,0x15,0x21,0x2b,0xb1,0x9b, - 0xea,0x23,0x66,0x87,0xda,0x56,0x87,0xf7,0x4d,0x87,0x37,0xcf,0xd5,0xf9,0xb4,0x30, - 0x7f,0xab,0xed,0xc3,0x4c,0x75,0xd8,0x95,0x14,0xda,0x3b,0xfc,0xf7,0x06,0x44,0xf6, - 0x2a,0x43,0xef,0x8e,0xa7,0x3f,0x97,0x84,0x38,0xd2,0x9b,0x13,0xc0,0xc6,0x9b,0x7d, - 0xd9,0x48,0xdf,0xdf,0xcf,0xfa,0xfc,0xe0,0x41,0xfa,0xe6,0x41,0x7a,0x6b,0x12,0xfe, - 0xc4,0x66,0x32,0xf8,0xae,0x60,0x23,0xf3,0x87,0xe0,0x4d,0x86,0x37,0x8d,0x3b,0xa0, - 0x92,0x3e,0xcb,0xd0,0x53,0x33,0xc0,0x8f,0x06,0x9b,0xa1,0x89,0x2e,0x11,0x93,0x5e, - 0xfb,0x3d,0x64,0x9e,0x21,0x9f,0x1b,0xc1,0x7e,0x16,0x77,0x46,0x86,0x7a,0xe4,0x7d, - 0x69,0xe0,0xc9,0x3e,0xcc,0x23,0xa6,0xfc,0x5e,0x63,0x6f,0xe6,0x83,0x2f,0x0b,0xea, - 0x48,0x4e,0xa3,0x7d,0xc4,0xd4,0xee,0x8f,0xe0,0x43,0x7d,0xc9,0xf3,0x7a,0xd0,0x42, - 0xec,0xa6,0xfb,0x68,0x93,0x0b,0x67,0xb6,0xa9,0xa1,0x86,0x1a,0x16,0x98,0x1a,0x16, - 0x82,0x6b,0x0d,0x8b,0xc0,0xb4,0x86,0x3a,0x53,0xc3,0xa2,0xe4,0x1e,0x73,0x09,0x26, - 0x71,0x6b,0x4d,0x0d,0x8f,0x11,0xdb,0x9b,0x1a,0xea,0xc1,0xb5,0x86,0xbb,0x7d,0xc4, - 0xd4,0x4e,0x6a,0x50,0x5f,0x75,0xa6,0x86,0x19,0x3e,0xda,0x64,0xe0,0xd4,0x9a,0x1a, - 0x96,0x50,0xc3,0x62,0x53,0xc3,0xe3,0xe0,0x5a,0xc3,0x52,0x30,0xad,0x61,0xb9,0xa9, - 0x61,0x69,0x92,0x8f,0x4b,0x30,0x89,0xbb,0x8c,0x3e,0x92,0xb8,0x4f,0x10,0x7b,0x86, - 0xcf,0x9e,0x6d,0xc9,0x51,0x6d,0x97,0x9b,0x1c,0x67,0x62,0x57,0x07,0x6f,0x19,0xf9, - 0xc8,0xf9,0x7f,0x9a,0xb3,0xaf,0x3d,0xf7,0x0c,0x39,0x37,0x98,0x9e,0x5b,0x05,0xde, - 0x4a,0xcf,0x35,0x82,0xcd,0xf4,0x91,0x27,0xf7,0xc1,0x6a,0x78,0x4d,0xf0,0x44,0xd3, - 0x35,0xe0,0xab,0x42,0x1e,0x72,0x4f,0xad,0x25,0x5e,0x23,0x77,0xc9,0x1a,0xa3,0xd5, - 0x73,0xf0,0xd7,0x19,0xad,0xd6,0x83,0xab,0x56,0xcf,0x83,0xa9,0x56,0xcd,0x46,0x2b, - 0x59,0xdb,0x10,0xc6,0x36,0xea,0xdf,0x66,0x7c,0xbf,0x8c,0xef,0xed,0xc6,0xf7,0x2b, - 0xe0,0xea,0xfb,0x55,0x30,0xf5,0xdd,0x62,0x7c,0xcb,0xda,0x8e,0x30,0x5a,0xf0,0xbd, - 0xc3,0xf4,0xd2,0xeb,0xd4,0x25,0x67,0xff,0x18,0xbe,0x5a,0xc1,0x1b,0xd8,0x13,0xe5, - 0xb5,0xb0,0x27,0x62,0xb3,0x93,0x98,0xdb,0xb0,0xdf,0x41,0xdc,0x36,0x13,0x77,0x67, - 0x72,0xce,0x5d,0x82,0x09,0x7f,0x97,0x89,0xbb,0xdb,0xc4,0x5d,0x12,0x6e,0x4e,0xb9, - 0x73,0xf7,0x80,0xad,0x35,0x77,0x4b,0x2a,0xe9,0xaf,0xbc,0x64,0x7d,0x2f,0x3c,0x1d, - 0x7b,0x82,0x2f,0xc1,0xf7,0xc1,0xdd,0x9b,0xf8,0x1a,0x98,0xec,0xd5,0x7e,0xfc,0xec, - 0xe3,0x7e,0xcb,0xe5,0x7e,0x4f,0x53,0x93,0xe6,0xd4,0x46,0x4d,0xc2,0xc9,0xf8,0xc8, - 0x69,0x81,0xbf,0x0b,0xdb,0x66,0x6c,0x37,0x98,0xfc,0x37,0xfd,0x43,0xfe,0x9b,0xff, - 0x27,0xff,0x2d,0xf0,0x74,0xbc,0x41,0xfe,0x5b,0xe1,0x6e,0x31,0xf9,0xbf,0x84,0x9f, - 0xad,0xff,0x92,0xbf,0xe6,0xd4,0x6c,0xf2,0x9f,0xed,0x63,0x0d,0x6d,0xf0,0x37,0x24, - 0x71,0xe2,0x3d,0xfe,0x26,0xeb,0xbb,0x83,0x27,0x99,0xbf,0x0d,0x36,0xd5,0x67,0xfb, - 0xec,0x1d,0xfa,0xec,0x80,0xe9,0xb3,0x77,0xc1,0xb5,0xcf,0xde,0x03,0xd3,0x3e,0x6b, - 0x37,0xfb,0x2d,0x6b,0x07,0xc3,0x68,0x27,0xb7,0x83,0xe8,0x25,0x79,0x7f,0x40,0x4c, - 0x07,0xef,0x1a,0xef,0x37,0xc3,0xbb,0xf8,0xba,0x0c,0x47,0x9e,0xa7,0x89,0xf5,0x23, - 0xbc,0x02,0x38,0xbf,0x99,0x58,0xb2,0x76,0x25,0x8c,0xab,0xf0,0xae,0x26,0x3d,0x19, - 0x63,0xfd,0x0c,0x6f,0xa4,0x8b,0xf5,0x0a,0xf6,0x0b,0xb8,0x7c,0x0b,0x87,0x04,0xbd, - 0x04,0xfb,0x95,0x3d,0x1a,0xcd,0xfa,0x18,0xb4,0xbd,0x86,0xcf,0x2b,0x86,0xff,0x13, - 0x3e,0xe5,0xdb,0x69,0x6d,0x24,0xa7,0x3f,0x83,0x97,0x5e,0xb0,0xeb,0xf8,0x9e,0xe3, - 0xa3,0xff,0xab,0x70,0xaf,0x70,0x37,0x8b,0xf6,0x65,0x3e,0xae,0xab,0x1e,0xaa,0xd1, - 0x21,0x34,0xf2,0xd4,0x9b,0xe3,0xff,0xae,0x51,0x2f,0x31,0x7b,0x8d,0x46,0x37,0xe0, - 0xa9,0x46,0x69,0x9f,0xd5,0xe8,0x46,0xc2,0x75,0xee,0x36,0xbc,0xdb,0x46,0x23,0x09, - 0x72,0xa8,0x9f,0x46,0xde,0x47,0xdc,0x6a,0x94,0xf2,0x59,0x8d,0x64,0x5d,0x35,0x92, - 0xdc,0xc4,0xe7,0x4d,0xc3,0xbf,0x45,0x2e,0xaa,0x91,0xda,0x48,0x4e,0xaa,0x91,0x60, - 0xaa,0xd1,0x3c,0x1f,0xfd,0xdf,0x86,0x7b,0xd3,0x68,0x54,0xee,0xe3,0x7a,0x19,0xf1, - 0x55,0xa3,0xc3,0x68,0x94,0xa2,0xde,0xe2,0x7e,0x1a,0x0d,0x22,0xa6,0x3c,0x55,0xa3, - 0x21,0x3e,0xf2,0x54,0xa3,0x11,0x46,0x23,0x59,0x2b,0x08,0xa3,0x08,0x9e,0x3c,0x55, - 0xa3,0x3b,0xe1,0x59,0x8d,0x86,0xf9,0x88,0x5b,0x8d,0x86,0x1b,0x8d,0x86,0x19,0x8d, - 0x8a,0xf1,0x59,0xe0,0xb3,0xfc,0x42,0x7c,0xaa,0x46,0x6a,0x33,0xc2,0x68,0x54,0x6c, - 0x34,0x7a,0xd8,0x47,0xff,0x92,0x57,0x21,0xb9,0xaa,0x46,0x13,0x7c,0x5c,0x17,0xad, - 0x52,0xc4,0xd4,0xb3,0xd7,0x4e,0x2f,0x8a,0x5d,0x0d,0xbd,0xd6,0x0c,0xa7,0xd8,0x9c, - 0xf9,0xa3,0x9c,0xf9,0x23,0xe6,0xcc,0x7f,0x04,0xae,0x67,0xfe,0x18,0x98,0x9e,0xf9, - 0xe3,0xe6,0x1c,0xca,0x5a,0x47,0x18,0x27,0x88,0x7b,0xc2,0x7c,0xb7,0x3e,0xc1,0xf7, - 0x49,0xe3,0xfb,0x53,0x70,0xf5,0xfd,0x19,0x98,0xfa,0xee,0x34,0xbe,0x65,0xed,0x54, - 0x18,0x67,0xf0,0x7d,0xc6,0x65,0xbf,0xd7,0x9f,0xe3,0xfb,0xac,0xf9,0x5e,0x7f,0x01, - 0xde,0xc5,0x1d,0xfd,0x25,0x58,0x93,0x89,0xf7,0x15,0x78,0x03,0xf1,0xba,0x4c,0x3c, - 0x59,0x3b,0x97,0xf0,0x63,0xbc,0x73,0xa6,0x1f,0x2b,0x7d,0xfc,0x9b,0xbd,0xc6,0xfc, - 0x3d,0xa5,0x76,0x5d,0x46,0xeb,0x85,0x3e,0xda,0x9c,0x81,0x73,0xce,0xe4,0xf3,0x0d, - 0xf9,0x54,0x9b,0x7c,0xbe,0x05,0xd7,0x7c,0xba,0x4d,0x3e,0xb2,0x76,0x3e,0x8c,0x6e, - 0xe2,0x9c,0x37,0xf9,0x54,0x91,0xcf,0x42,0xb3,0xf7,0x6a,0xd7,0x6d,0xf2,0x59,0xe4, - 0xa3,0x4d,0x17,0x9c,0xf3,0x26,0x9f,0xef,0xc8,0xe7,0x88,0xc9,0xe7,0x7b,0x70,0xcd, - 0xa7,0xc7,0xe4,0x23,0x6b,0x17,0xc2,0xe8,0x21,0xce,0x05,0x93,0xcf,0x64,0x1f,0xff, - 0x0d,0x23,0xf1,0xf4,0x1b,0xa5,0x76,0x3d,0x26,0x9f,0x47,0x7c,0xb4,0xe9,0x86,0x73, - 0x01,0xdb,0x4e,0x6c,0x4f,0x99,0xb3,0x7e,0x1a,0xbd,0xd3,0x26,0x4e,0x85,0xcf,0xe2, - 0xae,0x1f,0xb7,0xd3,0xc4,0xa9,0xf3,0x31,0x56,0x0f,0x9c,0x53,0xd8,0x1e,0xc7,0xb6, - 0x83,0x6f,0xad,0xd8,0x7e,0x8c,0x3f,0x19,0xfa,0xff,0x32,0x29,0xf3,0xad,0x55,0xce, - 0x71,0xe3,0xbf,0xd6,0xc7,0x18,0x9d,0xf0,0xc5,0xdf,0x9c,0xc0,0xb8,0xc4,0xda,0xad, - 0xd0,0x25,0xd3,0xc3,0xf8,0x0b,0x6c,0x65,0x82,0x23,0x48,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x96,0xdb,0x6f,0x54,0x55, + 0x14,0xc6,0xf7,0x9e,0xe9,0x05,0xca,0xad,0x30,0x28,0x4a,0xc0,0xb4,0x82,0x08,0x16, + 0x4a,0x29,0x77,0xcb,0x14,0x2a,0x4a,0x9b,0x88,0x20,0x6d,0x48,0x10,0x51,0xa9,0x22, + 0x0a,0x44,0x5e,0xf0,0x85,0x04,0xb9,0x28,0x04,0x22,0x88,0x34,0xa2,0x6d,0x8c,0x10, + 0x89,0x3c,0x80,0x48,0x1f,0x04,0xb5,0x55,0x09,0x1a,0xa5,0x46,0x69,0xa2,0x34,0xf0, + 0x17,0x18,0x89,0xc4,0x0b,0x4f,0x0d,0x15,0x82,0xb8,0xd7,0x3e,0xbf,0xd5,0x59,0x4e, + 0xc4,0x49,0x76,0xce,0xd9,0xdf,0x5a,0xdf,0xba,0x7c,0x67,0xed,0x33,0x27,0x9d,0x1a, + 0x57,0xec,0x9c,0x77,0x25,0x6e,0x80,0x7b,0xc8,0xbb,0xf8,0x1b,0xee,0x52,0x4e,0x6e, + 0x07,0xb9,0xa2,0x78,0xad,0x5f,0xdc,0xb4,0xb8,0x72,0xd3,0xcb,0x6b,0x2a,0x67,0xcc, + 0xac,0x12,0xfb,0x50,0x97,0x8e,0x7e,0x62,0x1b,0xe6,0x8a,0x5d,0x41,0xb8,0xca,0x7a, + 0xa9,0x79,0xdd,0x46,0xc1,0x27,0x84,0x75,0x29,0xac,0xd2,0xe0,0x27,0x78,0xb1,0xc4, + 0x08,0x77,0x13,0x62,0x4c,0xe1,0x38,0xd7,0xe0,0x0a,0xdd,0xe4,0x24,0x9d,0x1b,0xc7, + 0x55,0x31,0x0f,0x36,0xc0,0x60,0x29,0xb0,0x52,0x83,0xa5,0xc1,0x46,0x1a,0xac,0x00, + 0xec,0x2e,0x83,0x15,0x82,0x8d,0x31,0x58,0x11,0x58,0x99,0xc1,0x8a,0xc1,0xc6,0x1b, + 0x6c,0x00,0xd8,0x44,0x83,0x0d,0x04,0x9b,0x6c,0xb0,0x12,0xb0,0x2a,0x83,0x0d,0x02, + 0x9b,0x61,0xb0,0xc1,0x60,0x73,0x0c,0x36,0x04,0x6c,0x5e,0xd4,0x29,0xdd,0xdf,0xaf, + 0x68,0xb6,0x32,0x5c,0xef,0x45,0x1f,0xdd,0x97,0x9b,0xbd,0xe8,0x7c,0x0f,0xfb,0x4c, + 0x60,0xa5,0xa2,0x3d,0x1d,0xb5,0x91,0xfb,0x3b,0xc3,0x5d,0x11,0x7d,0x56,0x04,0xff, + 0x22,0xf2,0x8d,0xa9,0x7c,0xac,0x66,0x64,0xf0,0x18,0x6a,0xf0,0x4c,0x58,0x8d,0x1d, + 0x4b,0xea,0x74,0x2f,0x1a,0x2e,0x5f,0x7e,0xa9,0x56,0xf7,0xa3,0xc3,0xca,0x96,0xec, + 0x9e,0xaf,0x7b,0xd1,0xb3,0xbd,0xbe,0x39,0x7b,0x47,0xd8,0x97,0x91,0x43,0x9e,0xdd, + 0xa8,0xb0,0x2f,0x67,0x9f,0x62,0x3f,0x1e,0xcd,0x0b,0x22,0x5e,0xe0,0xee,0xc3,0x57, + 0xf0,0x1a,0xf6,0x13,0x0c,0xff,0x7e,0xfc,0x85,0x2f,0xf1,0x2b,0x88,0xe7,0x62,0xbf, + 0xa5,0x51,0xa3,0x72,0x56,0x59,0x7f,0x7f,0xff,0xbf,0xca,0xfa,0xaf,0x05,0x6e,0x0a, + 0xcf,0x71,0x32,0xf9,0x65,0x5f,0x09,0x56,0x41,0x3f,0x53,0xa9,0x47,0xfc,0xab,0xb0, + 0x95,0x1b,0xfb,0x2c,0xd3,0xcf,0xec,0x7e,0x6e,0x62,0x97,0xeb,0x83,0xd4,0xab,0xfe, + 0x0b,0x99,0x45,0xdd,0x2f,0xe1,0x59,0xdc,0x1d,0x98,0x2b,0xe8,0x97,0x23,0xd8,0xff, + 0xd3,0xbd,0xe4,0x78,0x82,0xfb,0x15,0xd4,0x2c,0xfb,0x95,0x79,0x39,0x56,0xe5,0xed, + 0x9b,0xd1,0x50,0xf8,0xcf,0x52,0x63,0x99,0xb1,0xaf,0x65,0x76,0x75,0xbf,0x85,0x3a, + 0xe4,0x19,0xec,0xe2,0x3e,0x6d,0xec,0xfb,0x38,0x27,0x3a,0x03,0x07,0x4d,0x3e,0xd9, + 0x1f,0x89,0xbb,0x6d,0x0b,0x85,0x7f,0x94,0x5c,0x05,0x86,0x7f,0x9c,0x33,0xa5,0xfb, + 0xd3,0x79,0x9a,0x9f,0xe5,0x8c,0x48,0xbd,0x17,0xc9,0x7d,0x94,0x7e,0x2f,0xf2,0x5e, + 0x49,0x47,0xed,0x0b,0x63,0x5f,0x05,0xe4,0x17,0xac,0x2f,0x20,0xa2,0x6f,0x96,0x79, + 0x9b,0xc8,0x4c,0x2d,0x0d,0x15,0xcb,0x3c,0x4d,0x02,0x9b,0x68,0xb4,0xdd,0xc8,0xac, + 0x3e,0x80,0xbd,0x2e,0x44,0x90,0x67,0x3d,0x8d,0x79,0x98,0x4a,0x3c,0xf1,0xa9,0x06, + 0x7f,0x35,0xf8,0xc8,0x7e,0x3a,0xbc,0x6a,0x78,0xb3,0x39,0xd7,0x95,0xcc,0x46,0x96, + 0x39,0x98,0x0b,0x7e,0x22,0xf8,0x0c,0x8d,0xbd,0x24,0x98,0xcc,0xc7,0xb5,0x50,0x79, + 0x96,0x7a,0xae,0x07,0xff,0x1a,0xde,0x03,0x59,0xfa,0x91,0xfb,0x65,0x81,0x27,0xda, + 0x2c,0x20,0xa7,0xfc,0xb6,0xa2,0x57,0x1d,0x78,0x63,0x50,0x5f,0x6a,0x1a,0xe5,0x13, + 0x4c,0xfd,0xfe,0x0a,0x31,0x34,0x96,0x5c,0x7b,0x83,0x16,0xe2,0x57,0xe5,0x13,0x9f, + 0x42,0x38,0xf3,0x4c,0x0f,0x0f,0xd3,0xc3,0x42,0xd3,0xc3,0x23,0xe0,0xda,0xc3,0x22, + 0x30,0xed,0xa1,0xc1,0xf4,0xb0,0x28,0xbe,0x9b,0x5c,0xc4,0x24,0x6f,0xbd,0xe9,0xe1, + 0x51,0x72,0x7b,0xd3,0xc3,0x62,0x70,0xed,0x61,0xb4,0x4f,0x30,0xf5,0x93,0x1e,0x34, + 0x56,0x83,0xe9,0x61,0x9a,0x4f,0x7c,0xb2,0x70,0xea,0x4d,0x0f,0x4b,0xe9,0x61,0x89, + 0xe9,0xe1,0x71,0x70,0xed,0x61,0x19,0x98,0xf6,0xd0,0x64,0x7a,0x58,0x16,0xeb,0x71, + 0x11,0x93,0xbc,0x8d,0xcc,0x91,0xe4,0x5d,0x4e,0xee,0x69,0x3e,0x77,0x3e,0xa5,0x46, + 0xf5,0x6d,0x32,0x35,0x56,0xe3,0xd7,0x00,0xaf,0x91,0x7a,0xe4,0x0c,0x3f,0xc9,0xf9, + 0xd5,0x99,0x7b,0x8a,0x9a,0x57,0x99,0x99,0x7b,0x1a,0x7c,0x3b,0x33,0xb7,0x1a,0xac, + 0xda,0x27,0x3c,0x39,0xd3,0xcf,0xc1,0x6b,0x86,0x27,0x9a,0xae,0x01,0x7f,0x26,0xd4, + 0x21,0x67,0xe1,0x79,0xf2,0xad,0xe6,0x7d,0xb0,0xc6,0x68,0xf5,0x02,0xfc,0xb5,0x46, + 0xab,0x17,0xc1,0x55,0xab,0x75,0x60,0xaa,0xd5,0x06,0xa3,0x95,0xd8,0xd6,0x87,0xb5, + 0x81,0xfe,0xd7,0xf3,0xbc,0x8b,0xe2,0xf9,0x4a,0x72,0x3b,0x78,0x57,0xb9,0xbf,0x11, + 0xee,0x25,0xd6,0xcf,0x70,0xe4,0xfa,0x25,0xb9,0x7e,0x81,0x37,0x04,0xce,0x9f,0x26, + 0x97,0xd8,0x2e,0x87,0x75,0x05,0xde,0x95,0xf8,0xbe,0x28,0x8e,0xb9,0x7e,0xe3,0x4c, + 0x8f,0x86,0x2f,0xff,0x5f,0xbb,0xa8,0xe3,0x77,0xec,0x62,0x7b,0x0d,0xec,0x0f,0xf0, + 0x31,0x3c,0xbf,0xab,0xc4,0xbc,0x6c,0x78,0xbf,0x12,0x2b,0x93,0xe7,0x23,0x35,0xdd, + 0x0a,0xd9,0xfa,0xc0,0x7a,0xa9,0x61,0xba,0x4f,0xe2,0x5e,0x81,0x7b,0x99,0xb9,0x96, + 0x67,0x30,0xd6,0x27,0x76,0xd5,0x43,0x35,0xda,0x84,0x46,0x9e,0x7e,0xbd,0xff,0xb7, + 0x46,0xbd,0xe4,0xec,0x35,0x1a,0x5d,0x83,0xa7,0x1a,0xe9,0x20,0x8a,0x46,0xd7,0xa2, + 0xbf,0xf0,0x13,0xde,0x0d,0xa3,0xd1,0x4d,0xa3,0xd1,0xa6,0x3c,0x8d,0xfe,0xc6,0x6e, + 0x35,0xba,0x05,0xae,0x1a,0x49,0x6d,0x12,0xb3,0xcf,0xf0,0xae,0x13,0x2b,0x93,0xe7, + 0x23,0x89,0x54,0x23,0xc1,0x54,0xa3,0x99,0x3e,0x89,0x7b,0x03,0x6e,0x9f,0xd1,0xa8, + 0xcc,0x27,0xf6,0xb1,0x9c,0x2d,0xd5,0x68,0x33,0x1a,0xa5,0xe8,0x37,0x93,0xa7,0x51, + 0x31,0x39,0xe5,0xaa,0x1a,0x0d,0xf4,0x09,0x4f,0x35,0x1a,0x61,0x34,0x12,0x5b,0x49, + 0x58,0x43,0xe0,0xc9,0x55,0x35,0x1a,0xe6,0x73,0x1a,0x6d,0xce,0xd3,0xa8,0xd4,0x27, + 0x76,0xab,0xd1,0x70,0x9f,0xe0,0xaa,0x51,0x86,0x98,0x12,0x5f,0x79,0x83,0xa9,0x25, + 0x93,0xe7,0x33,0xc2,0x68,0x94,0x31,0x1a,0xcd,0xf6,0x49,0xdc,0x58,0x17,0xb5,0xaa, + 0x46,0xe3,0x7c,0x62,0x17,0xad,0x52,0xc4,0xd3,0xb3,0xb7,0x81,0x59,0x14,0xbf,0xb9, + 0xcc,0x5a,0x13,0x9c,0x8c,0xcf,0x9d,0xf9,0x57,0x38,0xf3,0x5b,0xcc,0x99,0xdf,0x0a, + 0xae,0x67,0x7e,0x1b,0x98,0x9e,0xf9,0x1d,0xe6,0x1c,0x6e,0x8b,0xef,0x24,0xe7,0xf6, + 0x92,0x77,0xaf,0x79,0x9f,0xbc,0x41,0xec,0x7d,0x26,0xf6,0x7e,0x70,0x8d,0xfd,0x26, + 0x98,0xc6,0x6e,0x31,0xb1,0xc5,0x76,0x20,0xac,0x16,0x62,0x1f,0x30,0x73,0xf0,0x16, + 0x7d,0xc9,0xff,0xfd,0xe7,0xc4,0x7a,0x1b,0xfc,0x20,0x5a,0x28,0xaf,0x05,0x2d,0xc4, + 0xe7,0x1d,0x72,0xee,0xc5,0xff,0x00,0x79,0xdb,0x4c,0x5e,0xf1,0x69,0x0d,0xab,0x0d, + 0x7e,0xab,0xc9,0xfb,0xae,0xc9,0xbb,0x34,0x7c,0xc1,0xc8,0xb7,0xd1,0x7b,0x60,0x73, + 0x7d,0xee,0x7b,0x22,0x15,0xff,0x53,0x8a,0xa2,0xfd,0x10,0x3c,0x5d,0x7b,0x42,0x2c, + 0xc1,0x0f,0xc3,0x3d,0x14,0x63,0x0d,0x8c,0xcf,0xea,0x7d,0x62,0x1d,0xe6,0x9b,0xa6, + 0xd0,0x7c,0x7b,0x49,0x4f,0x5a,0x53,0x9b,0x79,0xbe,0xf3,0xc8,0xdd,0x02,0xbf,0x15, + 0xdf,0x1d,0xf8,0x6e,0x37,0xf5,0xef,0xfc,0x8f,0xfa,0x77,0xdf,0xa6,0xfe,0xfd,0xd4, + 0xb9,0x07,0x9f,0x9d,0xa6,0xce,0xd7,0xe1,0xec,0xb9,0x4d,0x9d,0x9a,0x7b,0x87,0xa9, + 0xb3,0xc6,0x27,0xb5,0xb6,0xc1,0xdf,0x4e,0x0e,0xb1,0x7d,0x80,0xfd,0x08,0xdf,0x62, + 0xf2,0xad,0x77,0x0c,0x5c,0xe7,0xe9,0x43,0xe6,0xe9,0xb8,0x99,0xa7,0x13,0xe0,0x3a, + 0x4f,0x1f,0x81,0xe9,0x3c,0xb5,0x9b,0xe7,0x2a,0xb6,0x93,0x61,0x9d,0xa2,0xb6,0x53, + 0x26,0xf6,0x27,0xc4,0x3e,0x6d,0x62,0x7f,0x0a,0xae,0xb1,0x3f,0x03,0xd3,0xd8,0x9d, + 0x26,0xb6,0xd8,0x3a,0xc2,0x3a,0x43,0xec,0x33,0x2e,0xf7,0xbf,0xfc,0x15,0xb1,0xcf, + 0x9a,0xff,0xe5,0xaf,0xc1,0xbf,0xe3,0x7b,0xe8,0x1b,0xb0,0x66,0x93,0xef,0x5b,0xf0, + 0x55,0xe4,0xeb,0x32,0xf9,0xc4,0x76,0x2e,0xac,0x2e,0xf2,0x9d,0xe3,0xdd,0x29,0xba, + 0x55,0xf8,0x84,0x73,0xcc,0xe5,0xbe,0x9b,0xd4,0xaf,0x8b,0xe7,0x21,0x7e,0x59,0x9f, + 0xf8,0x9c,0x81,0x73,0xce,0xd4,0xf3,0x3d,0xf5,0xcc,0x32,0xf5,0xfc,0x00,0xae,0xf5, + 0x74,0x9b,0x7a,0xc4,0x76,0x3e,0xac,0x6e,0xf2,0x9c,0x37,0xf5,0x4c,0xa1,0x9e,0xac, + 0x79,0x4f,0xa9,0x5f,0xb7,0xa9,0xa7,0xd6,0x27,0x3e,0x5d,0x70,0xce,0x9b,0x7a,0x7e, + 0xa4,0x9e,0xe3,0xa6,0x9e,0x9f,0xc0,0xb5,0x9e,0x1e,0x53,0x8f,0xd8,0x2e,0x84,0xd5, + 0x43,0x9e,0x0b,0xa6,0x9e,0xa9,0x3e,0xf9,0x9e,0xaf,0xf5,0xb9,0x79,0x55,0xbf,0x1e, + 0x53,0x4f,0x9d,0x4f,0x7c,0xba,0xe1,0x5c,0xc0,0xb7,0x13,0xdf,0x0e,0xf3,0x3d,0xfb, + 0x05,0x7a,0xa7,0x4d,0x9e,0x49,0x3e,0x87,0xbb,0x3c,0x6e,0xa7,0xc9,0xb3,0xc0,0x27, + 0xb9,0x7a,0xe0,0x74,0xe0,0xdb,0x8e,0xef,0x49,0xce,0x9d,0xf8,0x7e,0x4c,0xbc,0x63, + 0x9c,0xbb,0x62,0xce,0x6a,0x3a,0x8f,0xd3,0x6e,0xe2,0xcf,0xf7,0x49,0x8e,0x4e,0xf8, + 0x12,0xaf,0x36,0x30,0x2e,0x61,0xbb,0x19,0xa6,0x64,0x4e,0x58,0xff,0x00,0x2a,0xf8, + 0x97,0xf0,0x04,0x12,0x00,0x00 }; // Generated from: @@ -118,8 +117,8 @@ constexpr uint8_t kImageCopy_frag_00000004[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture2D src; -// layout(location = 0)out vec4 dst; +// layout(set = 0, binding = 0)uniform texture2D src; +// layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -144,16 +143,16 @@ constexpr uint8_t kImageCopy_frag_00000004[] = { // bool rotateXY; // } params; // -// float sRGBToLinear(float sRGB) +// float linearToSRGB(float linear) // { // -// if(sRGB <= 0.04045) +// if(linear <= 0.0031308) // { -// return sRGB / 12.92; +// return linear * 12.92; // } // else // { -// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; // } // } // @@ -176,7 +175,15 @@ constexpr uint8_t kImageCopy_frag_00000004[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } // // if(params . premultiplyAlpha) // { @@ -187,17 +194,9 @@ constexpr uint8_t kImageCopy_frag_00000004[] = { // srcValue . rgb /= srcValue . a; // } // -// vec4 dstValue = vec4(srcValue); +// srcValue *= 255.0; // -// dstValue /= 255.0; -// -// if(params . dstIsSRGB) -// { -// -// dstValue . r = sRGBToLinear(dstValue . r); -// dstValue . g = sRGBToLinear(dstValue . g); -// dstValue . b = sRGBToLinear(dstValue . b); -// } +// ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc index cbf520be82d0f2bde34e74a263418ce4640c464e..18849437c285f8b4f4abcb5147c3b3ba946edb62 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc @@ -10,78 +10,108 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000005[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4b,0x9d,0x65, - 0x18,0xc7,0x9f,0x73,0x9e,0xf3,0xe2,0x34,0x5f,0xa6,0x6e,0xe6,0xc8,0xd5,0x5e,0x84, - 0xc2,0xa5,0x07,0xb2,0x65,0xda,0x06,0xb6,0x6c,0xcd,0xdc,0xdc,0xa6,0x50,0xb4,0x91, - 0x5b,0x29,0x35,0x65,0x6b,0x63,0xfd,0x66,0x4d,0x89,0xbd,0x94,0x12,0xb2,0xa2,0x14, - 0x4a,0x7f,0x28,0x65,0x41,0xc5,0x7e,0x8a,0x88,0xb6,0x61,0x5b,0xb5,0xbf,0x28,0x7a, - 0x81,0xa0,0xfb,0xba,0xcf,0xe7,0x1a,0xdf,0x0e,0xc5,0x0e,0xdc,0x3c,0xcf,0xfd,0xbd, - 0xde,0xbe,0xdf,0xeb,0xbe,0xee,0x87,0x93,0x66,0x77,0x14,0x93,0x24,0x93,0x54,0x27, - 0x55,0xc9,0xdd,0xa4,0xfc,0xdb,0x98,0x64,0x03,0x92,0x24,0x35,0x49,0x21,0x3e,0xf7, - 0x0f,0x8d,0x0c,0x75,0x9e,0x7f,0x7b,0xbc,0xb3,0xfb,0xc9,0x92,0xd9,0xeb,0x92,0x34, - 0xfa,0x99,0xad,0x3e,0x29,0x26,0xb9,0xf0,0xb4,0x75,0xfa,0xe4,0xa9,0x33,0x86,0xd7, - 0x86,0xf5,0x55,0x58,0x0d,0xc1,0xcf,0xf0,0xa2,0xe5,0x08,0x6f,0xb5,0x31,0xa7,0xc5, - 0x24,0xc9,0x0b,0x49,0x3e,0x69,0xa2,0xde,0x0e,0x9e,0x8e,0x65,0xc0,0xaa,0x04,0xcb, - 0x82,0x35,0x08,0x96,0x82,0x35,0x0b,0x96,0x03,0x7b,0x50,0xb0,0x3c,0xd8,0x43,0x82, - 0x15,0xc0,0x1e,0x11,0xac,0x08,0xb6,0x53,0xb0,0x2a,0xb0,0x47,0x05,0xdb,0x00,0xb6, - 0x4b,0xb0,0x6a,0xb0,0x92,0x60,0x35,0x60,0xdd,0x82,0x3d,0x00,0xd6,0x23,0x58,0x2d, - 0xd8,0x33,0xb1,0x4f,0xe9,0x3d,0xbd,0xd6,0xb3,0x7d,0xe1,0xb9,0x9d,0xfe,0xf8,0x7e, - 0x9b,0xec,0xad,0xcf,0x5b,0xd9,0x37,0x85,0xa8,0x6c,0xb4,0xa7,0xb1,0x37,0xf6,0xbe, - 0x29,0xf8,0x14,0xd0,0x69,0x7d,0x6d,0x09,0xfb,0x22,0xfa,0xcd,0xbe,0x39,0x78,0x56, - 0x63,0x37,0x5b,0x0d,0x5a,0x72,0x11,0xcb,0x45,0xbe,0x19,0xb4,0xf4,0xb1,0xaf,0x95, - 0x5c,0x75,0xf8,0x7b,0xad,0x46,0x72,0x25,0x91,0x57,0xc3,0xbd,0xbe,0x7a,0x4d,0x5b, - 0x8d,0xf7,0x59,0xee,0x63,0xf5,0x9b,0xe9,0x77,0x13,0xf5,0x9b,0x63,0x9d,0x32,0xd6, - 0x81,0xb6,0xcd,0xf0,0x31,0xff,0x16,0x6c,0x45,0xb1,0xb7,0x89,0x9e,0xad,0xd8,0x1b, - 0xe3,0xdc,0x64,0x63,0x2f,0x3b,0xe0,0xed,0x7d,0xf6,0xb8,0x0e,0x66,0xc7,0xf7,0xbb, - 0xd1,0x6e,0xba,0xf7,0xc2,0xd3,0xf2,0xb6,0x86,0x8c,0xfd,0xec,0x33,0xc9,0xbf,0x7f, - 0xbe,0xb7,0xda,0xcf,0xf2,0xde,0x8f,0x16,0xdb,0xef,0xab,0xa8,0x39,0x50,0xb1,0x1f, - 0xa4,0xb7,0x16,0xff,0x22,0xdc,0x0b,0x62,0x1f,0x66,0x6f,0x9c,0x5e,0xe6,0x3d,0x15, - 0xfb,0x89,0x8a,0x5e,0x4c,0x33,0xd3,0xbe,0xbf,0x5c,0xd1,0xcb,0xab,0xcc,0xa8,0xd5, - 0xbb,0x46,0xae,0xbd,0xf0,0xbd,0xc6,0xbd,0x4e,0x63,0x2f,0xf2,0x91,0x57,0x0e,0xbe, - 0x86,0xfd,0x11,0x10,0xeb,0xd7,0x1e,0xe6,0xa8,0x9e,0x7e,0x0d,0x07,0x06,0x75,0xdc, - 0xdd,0x7a,0x96,0xf7,0xe6,0x0c,0xf3,0xb8,0x11,0x7b,0x7f,0xc8,0xd0,0xc2,0xfd,0xdd, - 0xc4,0xd9,0xee,0xc1,0xa7,0x15,0xfc,0xbd,0xe0,0x63,0xfb,0x2d,0xc4,0xb5,0x12,0x67, - 0x67,0xfb,0x30,0x71,0x6d,0xc4,0xf9,0x3c,0x1a,0xfe,0x75,0xf0,0xd9,0x26,0xf7,0xde, - 0xce,0xfb,0xf7,0xc0,0xbc,0x1d,0x3e,0x7f,0x05,0x7f,0xbf,0xff,0xed,0xe8,0xb1,0xf7, - 0x23,0x21,0xae,0xc0,0x37,0x60,0x0b,0xbe,0x17,0xe8,0xd7,0x63,0xe0,0x47,0xc3,0xce, - 0x38,0x7d,0x03,0xe6,0x7e,0x7f,0x86,0x1c,0x9e,0xcb,0x9e,0xbf,0x05,0x2f,0xf3,0xbb, - 0x81,0x4f,0x9e,0x98,0x9d,0xa2,0x61,0x17,0x1a,0x3a,0x44,0xc3,0xe3,0xe0,0xae,0xa1, - 0x13,0xcc,0x35,0x94,0x44,0x83,0xd9,0xba,0xf8,0x16,0x59,0xdd,0x2e,0xd1,0xf0,0x04, - 0xb5,0x33,0xa2,0xa1,0x1b,0xdc,0x35,0x5c,0x07,0x73,0x3f,0xd3,0xe0,0xb9,0x4a,0xa2, - 0xe1,0x26,0x3e,0xed,0xc4,0x74,0x89,0x86,0xa7,0xd0,0xb0,0x5b,0x34,0xf4,0x80,0xbb, - 0x86,0xa7,0xc1,0x5c,0x43,0x9f,0x68,0x30,0x5b,0x6f,0x9c,0xbb,0x72,0xdd,0x5e,0xe6, - 0xa8,0x18,0xf3,0x95,0x6b,0xdf,0x94,0xfb,0x65,0x1c,0xdd,0xb7,0x4f,0x38,0xde,0xc2, - 0xaf,0x44,0x5c,0x2f,0x7c,0xec,0x0e,0x3e,0xc7,0xfd,0xf3,0x99,0x7b,0x1e,0xce,0x03, - 0x32,0x73,0xfb,0xc1,0x67,0x99,0xb9,0x03,0x60,0xb7,0x88,0xb3,0x3b,0x39,0x44,0xdc, - 0x20,0x71,0xd6,0xd3,0x83,0xe0,0x63,0x21,0xca,0xee,0xcf,0x21,0xea,0x1d,0xe0,0x3e, - 0x1f,0x94,0x5e,0x1d,0x26,0x7e,0x58,0x7a,0x75,0x04,0xdc,0x7b,0x75,0x14,0xcc,0x7b, - 0x35,0x2a,0xbd,0x32,0xdb,0x48,0xac,0x55,0xd6,0x3f,0x22,0xe7,0xfd,0x12,0xb5,0xd3, - 0x98,0xbf,0x2a,0x7e,0x23,0x5e,0x01,0x3b,0x24,0xf7,0x30,0x1b,0xeb,0x15,0xa2,0xfd, - 0x18,0x71,0xbe,0x2e,0x86,0x5c,0x86,0x1f,0x27,0xf6,0x58,0xcc,0xb5,0x21,0xea,0x7a, - 0x95,0x3c,0xc7,0xf9,0x16,0xe4,0xe5,0x1b,0x64,0x67,0x32,0x0a,0xa7,0x31,0xd1,0x7b, - 0x12,0xbd,0x27,0x44,0xef,0x6b,0xe0,0xae,0xf7,0x75,0x30,0xd7,0x3b,0x21,0x7a,0xcd, - 0x36,0x1e,0xd6,0x04,0xb9,0xc7,0x45,0xef,0x1b,0xa2,0xf7,0x5b,0x72,0xbd,0x09,0x3e, - 0x00,0x27,0x8f,0x9b,0x60,0x4e,0xcc,0xe7,0x14,0x35,0xc7,0xf0,0x1f,0xa7,0xee,0x94, - 0xd4,0x35,0x9f,0xc9,0xb0,0xa6,0x88,0x9f,0x94,0xba,0xa7,0xff,0xa3,0xcf,0x6f,0xdd, - 0xa7,0xcf,0x67,0x89,0xf3,0x75,0x85,0x3e,0x9f,0x23,0xf6,0xac,0xf4,0xf9,0x3c,0x79, - 0xce,0xfd,0x4f,0x9f,0x9d,0xd3,0x14,0x9a,0x2c,0xe6,0x27,0x62,0x26,0x88,0x9f,0xac, - 0x38,0x93,0x51,0xf1,0x5d,0xe7,0x2c,0x47,0x88,0x9b,0x92,0xf3,0x7a,0x87,0xf3,0x9a, - 0x96,0xf3,0x7a,0x17,0xdc,0xcf,0xeb,0x02,0x98,0x9f,0xd7,0xac,0xf4,0xcd,0x6c,0x33, - 0x61,0x5d,0xa2,0xee,0x8c,0xe8,0xba,0x48,0xed,0x75,0x74,0x15,0xe9,0x91,0xeb,0x9a, - 0x25,0xe6,0x92,0xf0,0xb9,0x02,0x9f,0xcb,0xc2,0xe7,0x7d,0x70,0xe7,0xf3,0x01,0x98, - 0xf3,0x99,0x17,0x3e,0x66,0x9b,0x0b,0x6b,0x81,0xdc,0x73,0x72,0x8e,0x1f,0xc2,0x25, - 0xe5,0x7b,0x68,0x1c,0xbf,0x13,0xdc,0xbf,0x35,0xf3,0xc4,0x2e,0xc8,0x77,0xe0,0x23, - 0x78,0x5d,0x95,0xef,0xc0,0xc7,0xe0,0x77,0xc9,0xff,0x09,0xd8,0xa0,0x70,0xfd,0x14, - 0x7c,0x00,0xae,0x4b,0xc2,0xd5,0x6c,0x8b,0x61,0x2d,0x51,0x6f,0x51,0x78,0x7d,0x4f, - 0xcc,0xba,0x7c,0xa7,0xdd,0x6f,0x49,0xce,0xf6,0x36,0x3e,0x0b,0xc4,0x2c,0x0a,0x9f, - 0xcf,0xe0,0xd3,0x26,0x7c,0x3e,0x07,0x77,0x3e,0x2b,0xc2,0xc7,0x6c,0xcb,0x61,0xad, - 0x50,0x67,0x59,0xf8,0xfc,0x40,0xcc,0x6d,0xce,0xd0,0xf8,0xb8,0xdf,0x8a,0xf0,0xb9, - 0x83,0xcf,0x12,0x31,0xcb,0xc2,0xe7,0x0b,0xf8,0x4c,0x0b,0x9f,0x2f,0xc1,0x9d,0xcf, - 0x9a,0xf0,0x31,0xdb,0x6a,0x58,0x6b,0xd4,0x59,0x15,0x3e,0x3f,0xf2,0xff,0xe1,0x8e, - 0xcc,0x93,0xfb,0xad,0x09,0x9f,0x5f,0xf1,0x59,0x21,0x66,0xb5,0xe2,0x8c,0xe7,0xc5, - 0xf7,0x17,0xe6,0x61,0x8e,0xb8,0xb5,0x8a,0x39,0x9d,0x15,0xdf,0x9f,0x99,0xef,0x19, - 0xe2,0xe6,0xe3,0x7f,0xa9,0x34,0xfe,0x87,0x32,0xdb,0xdf,0xe1,0xd4,0x7a,0xc2,0xfa, - 0x07,0x47,0x90,0xba,0x4c,0x84,0x0d,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfb,0x6f,0x54,0x45, + 0x14,0xc7,0xef,0xec,0x6e,0xbb,0x05,0xa4,0x96,0x6c,0xe5,0xb1,0x21,0xa4,0x95,0x0a, + 0x08,0x58,0x2a,0x22,0x94,0xc7,0x22,0x58,0xa0,0x35,0x22,0x48,0x1b,0x12,0x44,0x7c, + 0x54,0x51,0xa8,0x3c,0x14,0xd4,0x5f,0xf8,0x41,0x89,0x88,0x6d,0x82,0x81,0x08,0x2a, + 0x8d,0x28,0x8d,0x11,0x22,0x91,0x44,0x50,0x21,0x51,0x40,0x69,0x0c,0x01,0xa3,0x34, + 0x51,0x1a,0x95,0x06,0xfe,0x02,0x23,0x91,0xa8,0x20,0x2a,0x82,0x73,0xee,0x7c,0x4e, + 0xf7,0xb8,0x8a,0x4d,0x26,0xf7,0xce,0x77,0xce,0xf7,0x3c,0xbe,0x73,0x66,0xf6,0x36, + 0x99,0x18,0x9e,0x8e,0x22,0x17,0xf5,0x8d,0x4a,0xa2,0xbb,0x5c,0x14,0xff,0x0d,0x88, + 0x12,0x91,0xbc,0xf6,0x8b,0x8a,0xe3,0x67,0xfd,0xdc,0xa6,0xb9,0xd5,0x4f,0x3f,0xb3, + 0xb4,0x7a,0xc2,0xed,0x35,0xb2,0x5e,0x1a,0x25,0x63,0x3b,0x59,0xbb,0x3e,0x4a,0x47, + 0x29,0xff,0x94,0xb1,0xaa,0xb9,0x65,0xb5,0xe0,0x23,0xfc,0x38,0xeb,0x47,0x99,0xb7, + 0x13,0x3c,0x2d,0x3e,0xfc,0xdb,0x88,0xd8,0xa7,0x70,0xa2,0xa8,0x21,0x2a,0x8a,0xc6, + 0x86,0x70,0xd1,0x70,0x9e,0x8a,0x39,0xb0,0x12,0x83,0x25,0xc0,0xca,0x0c,0x96,0x04, + 0x2b,0x37,0x58,0x0a,0x6c,0xb0,0xc1,0x8a,0xc0,0x86,0x1a,0xac,0x18,0xac,0xc2,0x60, + 0x69,0xb0,0x2a,0x83,0x95,0x80,0x8d,0x32,0x58,0x1f,0xb0,0xb1,0x06,0xeb,0x0b,0x56, + 0x63,0xb0,0x7e,0x60,0x13,0x0c,0x76,0x1d,0x58,0xad,0xc1,0xfa,0x83,0x4d,0x8b,0x75, + 0x4a,0xf6,0xd6,0x2b,0x9a,0x2d,0xf6,0xcf,0x1b,0xd1,0x47,0xe7,0x95,0x66,0x2e,0x3a, + 0x0f,0x63,0x9e,0xf1,0xac,0x44,0xbc,0x9e,0x8c,0xb5,0x91,0xf7,0x81,0xfe,0xad,0x98, + 0x3a,0xc7,0x78,0xfb,0x62,0xe2,0x0d,0xad,0xbe,0x67,0x6a,0xb9,0xb7,0x28,0x35,0x78, + 0xc6,0x8f,0xc6,0x8f,0xe7,0xcd,0xd4,0xb9,0x68,0xb8,0x70,0xe1,0xb7,0xd3,0x75,0x9e, + 0xf5,0x23,0xd7,0xb7,0xf5,0x0e,0x9d,0x8b,0x9e,0xef,0xd7,0x37,0xe7,0x6e,0xf0,0xf3, + 0x0a,0x62,0xc8,0xde,0x0d,0xf2,0xf3,0x4a,0xe6,0x09,0xe6,0x55,0x68,0x9e,0x8a,0xf1, + 0x54,0x74,0x13,0xb6,0x82,0x4f,0x65,0x3e,0xc2,0xf0,0x47,0x62,0x2f,0x7c,0xf1,0x3f, + 0x06,0x7f,0x51,0x5c,0x6f,0x59,0xac,0x51,0x25,0xa3,0xa2,0xb7,0xbe,0xff,0x1f,0x15, + 0xbd,0xcf,0x54,0x74,0x0b,0xfb,0x38,0x96,0xf8,0x32,0xaf,0x06,0x1b,0x43,0x3d,0xe3, + 0xc8,0x47,0xec,0x6b,0x58,0xab,0x34,0xeb,0x13,0x4d,0x3d,0x93,0x7a,0xb9,0x61,0x5d, + 0x9e,0x53,0xc8,0x57,0xed,0xeb,0xe8,0x45,0x9d,0xcf,0x63,0x2f,0x86,0x78,0xe6,0x22, + 0xea,0xe5,0x08,0xfe,0xeb,0x29,0x31,0xee,0xe3,0x7d,0x11,0x39,0xcb,0x7c,0x71,0x41, + 0x8c,0x25,0x05,0xf3,0x66,0xce,0x89,0xf0,0x1f,0x21,0xc7,0x0a,0x34,0x7e,0x8c,0xf7, + 0xa4,0xb1,0x6f,0x41,0x73,0x9d,0xaf,0xa2,0xb7,0x75,0xbe,0x81,0x3c,0x85,0xff,0x32, + 0xef,0x96,0xbf,0x8d,0x73,0xa4,0x3d,0xb2,0xc3,0xe4,0x23,0xf3,0x3d,0xf1,0xec,0xf9, + 0x3a,0xe1,0xef,0x25,0x7e,0xca,0xf0,0xf7,0x73,0xe6,0x74,0x7e,0xb8,0x60,0x4f,0x8e, + 0x73,0x86,0xa4,0x9e,0x33,0xc4,0xde,0x8b,0x1e,0x67,0xb8,0x77,0x92,0xf1,0xde,0x14, + 0xc5,0x75,0xa4,0x88,0x2f,0xd8,0x25,0x8f,0x88,0xfe,0x39,0xfa,0x71,0x14,0x3d,0x37, + 0xdf,0x67,0x2c,0xfd,0x76,0x33,0xd8,0x28,0xa3,0xfd,0x6a,0x7a,0x79,0x34,0xeb,0x33, + 0xbd,0x07,0xe9,0x85,0x5b,0xe9,0x97,0x71,0xf8,0x13,0x9b,0xf1,0xe0,0x2f,0x78,0x1b, + 0x99,0xdf,0x06,0x6f,0x3c,0xbc,0x49,0x9c,0xfb,0x6a,0x7a,0x27,0x47,0x9f,0x4c,0x06, + 0xdf,0xeb,0x6d,0x4a,0xe3,0x5a,0x02,0x26,0xfd,0xf3,0x9b,0xcf,0x3c,0x47,0x3e,0x7f, + 0x78,0xfb,0xa9,0xdc,0x13,0x39,0xea,0x91,0xf7,0x05,0x9e,0x27,0xda,0xcc,0x20,0xa6, + 0xfc,0x3d,0x87,0x5e,0x33,0xc1,0x1b,0xbd,0xfa,0x92,0xd3,0x30,0x17,0x30,0xb5,0xfb, + 0xdd,0xfb,0x50,0x5f,0xf2,0xbc,0xe0,0xb5,0x10,0xbb,0x49,0x2e,0xd8,0x14,0xc1,0x99, + 0x66,0x6a,0x98,0x45,0x0d,0x75,0xa6,0x86,0xd9,0xe0,0x5a,0xc3,0x1c,0x30,0xad,0xa1, + 0xc1,0xd4,0x30,0x27,0xbe,0xbb,0xa2,0x18,0x93,0xb8,0xf5,0xa6,0x86,0xbb,0x89,0xed, + 0x4c,0x0d,0x73,0xc1,0xb5,0x86,0x4a,0x17,0x30,0xb5,0x93,0x1a,0xd4,0x57,0x83,0xa9, + 0xa1,0xd6,0x05,0x9b,0x1c,0x9c,0x7a,0x53,0xc3,0x7c,0x6a,0x98,0x67,0x6a,0xb8,0x17, + 0x5c,0x6b,0x58,0x00,0xa6,0x35,0x34,0x99,0x1a,0x16,0xc4,0xf9,0x44,0x31,0x26,0x71, + 0x1b,0xe9,0x23,0x89,0xbb,0x90,0xd8,0xb5,0x2e,0x7f,0x7e,0x25,0x47,0xb5,0x6d,0x32, + 0x39,0x4e,0xc6,0xae,0x01,0x5e,0x23,0xf9,0xc8,0x19,0xbf,0x9f,0xf3,0xad,0x3d,0xf7, + 0x00,0x39,0x2f,0x31,0x3d,0xf7,0x20,0xf8,0x7a,0x7a,0xee,0x61,0xb0,0xc9,0x2e,0xf0, + 0xe4,0xcc,0x3f,0x0a,0xaf,0x19,0x9e,0x68,0xba,0x14,0x5c,0x75,0x7f,0x1c,0x6e,0x64, + 0xb0,0x65,0x60,0x2e,0xd6,0xa1,0x38,0xbe,0x2f,0x96,0x63,0xbb,0x0c,0x1f,0x1a,0xe3, + 0x09,0x62,0xb4,0x98,0x18,0x2b,0xc0,0x1f,0xf2,0xb5,0xca,0x79,0x5b,0x49,0x4d,0xcb, + 0xb9,0x63,0x56,0x98,0xfd,0x58,0x0d,0x7f,0x95,0xd9,0x8f,0x27,0xc1,0x75,0x3f,0x9e, + 0x02,0xd3,0xfd,0x58,0x6b,0xf6,0x43,0xd6,0xd6,0xf8,0xb1,0x16,0x8d,0xd7,0x50,0x87, + 0xdc,0x39,0xcf,0x12,0x3b,0x82,0x77,0x91,0xf7,0x3f,0xfd,0xbb,0xf8,0xfa,0x01,0x8e, + 0x3c,0x8f,0x10,0xeb,0x47,0x78,0xfd,0xe1,0x5c,0x30,0xb1,0x64,0xed,0x9c,0x1f,0xe7, + 0xe1,0x9d,0x8f,0xef,0xa4,0x74,0x1c,0xeb,0x67,0xf4,0xca,0xc2,0x97,0xdf,0xd0,0x8d, + 0xe4,0xf1,0x0b,0xeb,0xd9,0xf8,0x1e,0x0d,0xd8,0xaf,0xe0,0x43,0xe9,0x91,0x8b,0xf8, + 0x3c,0x67,0x78,0x3f,0xe1,0x2b,0x53,0x60,0x23,0x39,0x5d,0xf5,0xd1,0x2e,0x81,0x5d, + 0x20,0x87,0x29,0x2e,0xf8,0x3d,0x0f,0xf7,0x1c,0x67,0x47,0xf6,0xa0,0xca,0x85,0xf5, + 0x95,0x66,0xaf,0x85,0xb3,0x0e,0x8d,0x1c,0xf5,0x96,0xb8,0x7f,0x6a,0x74,0x99,0x98, + 0x97,0x8d,0x46,0x57,0xe0,0xa9,0x46,0x69,0x97,0xd7,0xe8,0x4a,0x9c,0x9b,0xdf,0x67, + 0x17,0x78,0xf2,0x54,0x8d,0x52,0x2e,0xaf,0xd1,0xba,0x02,0x8d,0x8a,0x5c,0x58,0xb7, + 0x1a,0x15,0xbb,0x80,0xab,0x46,0x25,0xf8,0xbc,0x6a,0x78,0xce,0x05,0x5f,0x99,0x02, + 0x1b,0xc9,0x49,0x35,0x12,0x4c,0x35,0x9a,0xe6,0x82,0x5f,0xc9,0xcb,0xb9,0x90,0xab, + 0x6a,0x34,0xd2,0x85,0xf5,0x2a,0xf2,0x54,0x8d,0xd6,0xa3,0x51,0x82,0x7a,0xb3,0x05, + 0x1a,0x95,0x12,0x53,0x9e,0xaa,0x51,0x99,0x0b,0x3c,0xd5,0x68,0x88,0xd1,0x48,0xd6, + 0x06,0xf8,0x51,0x0e,0xaf,0xdc,0x68,0x34,0xd0,0x68,0xb4,0xbe,0x40,0xa3,0x41,0x2e, + 0xac,0x5b,0x8d,0x06,0xbb,0x80,0xab,0x46,0x59,0x7c,0x8a,0x7f,0xe5,0x65,0xc8,0x25, + 0x53,0x60,0x33,0xc4,0x68,0x94,0x35,0x1a,0x4d,0x77,0xc1,0xaf,0xe4,0x95,0x21,0x57, + 0xd5,0x68,0xb4,0x0b,0xeb,0xa2,0x55,0x02,0x7f,0x7a,0xf6,0xd6,0xd2,0x8b,0x62,0x37, + 0x83,0x5e,0x6b,0x82,0x93,0x75,0xf9,0x33,0xff,0x22,0x67,0x7e,0x83,0x39,0xf3,0x1b, + 0xc1,0xf5,0xcc,0xbf,0x04,0xa6,0x67,0xbe,0xcd,0x9c,0x43,0x59,0x6b,0xf5,0x63,0x2b, + 0x71,0xb7,0x9a,0xfb,0xe4,0x55,0x7c,0x6f,0x33,0xbe,0x5f,0x03,0x57,0xdf,0xaf,0x83, + 0xa9,0xef,0x76,0xe3,0x5b,0xd6,0xb6,0xfb,0xd1,0x8e,0xef,0xed,0xa6,0x0f,0xde,0xa0, + 0x2e,0xf9,0xa6,0x38,0x84,0xaf,0x37,0xc1,0x77,0xa0,0x85,0xf2,0xda,0xd1,0x42,0x6c, + 0xde,0x22,0xe6,0x56,0xec,0xb7,0x13,0xb7,0xc3,0xc4,0x15,0x9b,0x9d,0x7e,0x74,0xc0, + 0xdf,0x69,0xe2,0xbe,0x6d,0xe2,0xce,0xf7,0x5f,0x49,0xf2,0xfd,0xf5,0x0e,0xd8,0x0c, + 0x97,0xff,0x66,0x49,0x70,0x5f,0xcb,0xfa,0x2e,0x78,0x3a,0xda,0xbc,0x2f,0xc1,0x77, + 0xc3,0xdd,0x15,0xfb,0xea,0x13,0xef,0xd5,0xbb,0xf8,0xda,0xcd,0x77,0x53,0x91,0xf9, + 0xbe,0x93,0x9a,0x34,0xa7,0x0e,0xb3,0xbf,0x75,0xc4,0x6e,0x87,0xbf,0x13,0xdb,0x36, + 0x6c,0x5b,0x4d,0xfe,0x9b,0xfe,0x23,0xff,0xcd,0xd7,0xc8,0x7f,0x33,0x79,0x6e,0xc1, + 0x66,0x93,0xc9,0xf3,0x15,0x38,0x5b,0xae,0x91,0xa7,0xc6,0x6e,0x33,0x79,0xde,0xe9, + 0x42,0xae,0x1d,0xf0,0x5b,0x89,0x21,0x6b,0xef,0xb1,0xbe,0x87,0xef,0x3d,0xf9,0x9e, + 0xdc,0x07,0xae,0xfd,0xf4,0x01,0xfd,0xb4,0xdf,0xf4,0xd3,0x87,0xe0,0xda,0x4f,0x1f, + 0x81,0x69,0x3f,0x1d,0x34,0xfb,0x2a,0x6b,0x07,0xe2,0x7e,0x09,0xb9,0x1d,0x32,0xbe, + 0x8f,0xe0,0xfb,0xb0,0xf1,0xfd,0x29,0xb8,0xfa,0xfe,0x0c,0x4c,0x7d,0x77,0x1a,0xdf, + 0xb2,0x76,0xd4,0x8f,0x63,0xf8,0x3e,0x66,0x7e,0x97,0x4f,0xe0,0xfb,0xb8,0xf9,0x5d, + 0xfe,0x02,0xfc,0x04,0xbf,0xf3,0x5f,0x82,0xb5,0x98,0x78,0x5f,0x81,0x2f,0x21,0x5e, + 0x97,0x89,0x27,0x6b,0x27,0xfd,0xe8,0x22,0xde,0x49,0xee,0x4e,0xd1,0x6d,0xbc,0x0b, + 0x9c,0x7d,0x51,0xfe,0xdb,0x4c,0xed,0xba,0xd8,0x0f,0xb1,0x9b,0xe5,0x82,0xcd,0x31, + 0x38,0x27,0x4d,0x3e,0x5f,0x93,0xcf,0x44,0x93,0xcf,0x37,0xe0,0x9a,0x4f,0xb7,0xc9, + 0x47,0xd6,0x4e,0xf9,0xd1,0x4d,0x9c,0x53,0x26,0x9f,0x09,0xe4,0x33,0xcb,0xdc,0x53, + 0x6a,0xd7,0x6d,0xf2,0x99,0xed,0x82,0x4d,0x17,0x9c,0x53,0x26,0x9f,0xef,0xc8,0x67, + 0xbf,0xc9,0xe7,0x7b,0x70,0xcd,0xa7,0xc7,0xe4,0x23,0x6b,0xa7,0xfd,0xe8,0x21,0xce, + 0x69,0x93,0xcf,0x44,0x17,0xfe,0x67,0x98,0xed,0xf2,0xfd,0xaa,0x76,0x3d,0x26,0x9f, + 0x06,0x17,0x6c,0xba,0xe1,0x9c,0xc6,0xb6,0x13,0xdb,0xa3,0xe6,0x3b,0xed,0x73,0xf4, + 0x4e,0x9a,0x38,0x35,0x2e,0x8f,0x47,0x05,0xdc,0x4e,0x13,0xa7,0xde,0x85,0x58,0x3d, + 0x70,0x8e,0x62,0x7b,0x10,0xdb,0x03,0x9c,0x3b,0xb1,0xfd,0x04,0x7f,0xfb,0x38,0x77, + 0x69,0xce,0x6a,0xb2,0x80,0x73,0xd0,0xf8,0x9f,0xe3,0x42,0x8c,0x4e,0xf8,0xe2,0x6f, + 0xba,0x67,0x9c,0x65,0xed,0x2f,0xdf,0x25,0xb5,0x7e,0xfc,0x0d,0x63,0x64,0x8f,0xf3, + 0x88,0x12,0x00,0x00 }; // Generated from: @@ -90,7 +120,7 @@ constexpr uint8_t kImageCopy_frag_00000005[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture2D src; +// layout(set = 0, binding = 0)uniform texture2DArray src; // layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { @@ -116,6 +146,19 @@ constexpr uint8_t kImageCopy_frag_00000005[] = { // bool rotateXY; // } params; // +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -135,7 +178,15 @@ constexpr uint8_t kImageCopy_frag_00000005[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } // // if(params . premultiplyAlpha) // { @@ -146,6 +197,8 @@ constexpr uint8_t kImageCopy_frag_00000005[] = { // srcValue . rgb /= srcValue . a; // } // +// srcValue *= 255.0; +// // ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc index 2b9536a8c1895906e9a2934ca98bdf6c8b0fc7e1..17525de8c1d98a5451672caad37f6c539618a813 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc @@ -10,79 +10,108 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000006[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4f,0x96,0x55, - 0x18,0xc7,0xef,0xe7,0x1d,0x21,0x5e,0x04,0x94,0x70,0x62,0x99,0xb2,0xd5,0x30,0x78, - 0x5a,0x64,0x04,0xe9,0x46,0x46,0x26,0xa2,0xa4,0xb0,0xd5,0xd2,0x85,0x16,0xac,0x84, - 0x69,0x3a,0xf9,0x01,0x4a,0x58,0x2b,0xdf,0x60,0x73,0xcc,0x5a,0xc1,0x56,0xf0,0x43, - 0xc2,0x74,0xab,0xd6,0x4f,0xad,0xb5,0xd2,0x95,0x56,0xfe,0x45,0xad,0x97,0xad,0xad, - 0x73,0x9d,0xe7,0x73,0xb9,0x6f,0xcf,0x6a,0x3e,0xdb,0xd9,0x7d,0x9f,0xef,0xf5,0xf6, - 0xfd,0x5e,0xe7,0xba,0x0f,0x64,0xd2,0xdb,0x0a,0x49,0x92,0x4a,0x2a,0x93,0x8a,0xe4, - 0x6e,0x52,0xfa,0xad,0x4f,0xd2,0x01,0x49,0x92,0xaa,0x24,0x1f,0x9f,0x7b,0x07,0x86, - 0x06,0xda,0xcf,0x4e,0x8e,0xb6,0x77,0x3e,0x55,0x34,0x7b,0x4d,0x92,0x89,0x7e,0x66, - 0xab,0x4d,0x0a,0x49,0x36,0x3c,0x6d,0x9d,0x3c,0x7e,0xe2,0x94,0xe1,0xd5,0x61,0xdd, - 0x08,0xab,0x2e,0xf8,0x19,0x5e,0xb0,0x1c,0xe1,0xad,0x3a,0xe6,0xb4,0x98,0x24,0x79, - 0x31,0xc9,0x25,0x0d,0xd4,0xdb,0xc6,0xd3,0xb1,0x14,0x58,0x85,0x60,0x69,0xb0,0x3a, - 0xc1,0x32,0x60,0x8d,0x82,0x65,0xc1,0x1e,0x14,0x2c,0x07,0xb6,0x59,0xb0,0x3c,0xd8, - 0xc3,0x82,0x15,0xc0,0xb6,0x0b,0x56,0x01,0xf6,0xa8,0x60,0xeb,0xc0,0x76,0x08,0x56, - 0x09,0x56,0x14,0xac,0x0a,0xac,0x53,0xb0,0x07,0xc0,0xba,0x04,0xab,0x06,0x7b,0x36, - 0xf6,0x29,0x73,0x4f,0xaf,0xf5,0x6c,0x4f,0x78,0x3e,0x42,0x7f,0x7c,0xbf,0x55,0xf6, - 0xd6,0xe7,0x2d,0xec,0x1b,0x42,0x54,0x3a,0xda,0x33,0xb1,0x37,0xf6,0xbe,0x21,0xf8, - 0xe4,0xd1,0x69,0x7d,0x6d,0x0a,0xfb,0x02,0xfa,0xcd,0xbe,0x31,0x78,0x56,0x62,0x37, - 0x5b,0x15,0x5a,0xb2,0x11,0xcb,0x46,0xbe,0x29,0xb4,0xf4,0xb0,0xaf,0x96,0x5c,0x35, - 0xf8,0x7b,0xad,0x7a,0x72,0x25,0x91,0x57,0xdd,0xbd,0xbe,0x7a,0x4d,0x5b,0xf5,0xf7, - 0x59,0xee,0x63,0xf5,0x1b,0xe9,0x77,0x03,0xf5,0x1b,0x63,0x9d,0x12,0xd6,0x86,0xb6, - 0x8d,0xf0,0x31,0xff,0x26,0x6c,0x05,0xb1,0xb7,0x88,0x9e,0x2d,0xd8,0xeb,0xe3,0xdc, - 0xa4,0x63,0x2f,0xdb,0xe0,0xed,0x7d,0xf6,0xb8,0x36,0x66,0xc7,0xed,0x4f,0x50,0xc7, - 0xed,0x3b,0xe9,0x85,0xf5,0x61,0x37,0xbc,0xad,0x4e,0x73,0xa8,0xd0,0xcb,0x3e,0x95, - 0xfc,0xfb,0xe7,0x7b,0xe3,0xf2,0x1c,0xef,0xbd,0x68,0xb3,0xfd,0x9e,0x32,0x0e,0x7d, - 0x65,0xfb,0x7e,0x7a,0x6d,0xf1,0xfb,0xd1,0x92,0x17,0xfb,0x20,0x7b,0xe3,0xf4,0x0a, - 0xef,0x19,0xb1,0x1f,0xa3,0x37,0x66,0x9f,0xa4,0x0f,0x59,0xb1,0x4f,0x33,0xf3,0xbe, - 0xbf,0x50,0xd6,0xeb,0xab,0xcc,0xb0,0xd5,0xbf,0x4e,0xee,0x49,0xf8,0x5f,0xe7,0xbb, - 0xcf,0xc4,0xde,0xe4,0x22,0xcf,0x2c,0xfc,0x0d,0xfb,0x23,0x20,0xd6,0xcf,0x5d,0xcc, - 0x59,0x2d,0xfd,0x1b,0x0c,0x8c,0x6a,0xf8,0xb6,0x6b,0x59,0xde,0xab,0x53,0xcc,0xeb, - 0x7a,0xec,0xbd,0x21,0x43,0x13,0xdf,0xf7,0x06,0xce,0x7e,0x17,0x3e,0xcd,0xe0,0xef, - 0x07,0x1f,0xdb,0x6f,0x22,0xae,0x99,0x38,0x3b,0xfb,0x87,0x88,0x6b,0x21,0xce,0xe7, - 0xd5,0xf0,0x2f,0x82,0xcf,0x56,0xb9,0x17,0x6c,0x1e,0x7e,0x0f,0xcc,0x5b,0xe1,0xf3, - 0x57,0xf0,0xf7,0xfb,0xa1,0x15,0x3d,0xf6,0x7e,0x28,0xc4,0xe5,0xb9,0x23,0x36,0xe1, - 0x3b,0x4b,0xbf,0x1e,0x03,0x3f,0x1c,0x76,0xc6,0xe9,0x4b,0x30,0xf7,0xfb,0x33,0xe4, - 0xf0,0x5c,0xf6,0xfc,0x2d,0x78,0x99,0xdf,0x0f,0xf8,0xe4,0x88,0xd9,0x2e,0x1a,0x76, - 0xa0,0xa1,0x4d,0x34,0x3c,0x0e,0xee,0x1a,0xda,0xc1,0x5c,0x43,0x51,0x34,0x98,0xad, - 0x83,0xbb,0xca,0xea,0x76,0x88,0x86,0x27,0xa9,0x9d,0x12,0x0d,0x9d,0xe0,0xae,0xe1, - 0x6b,0x30,0xf7,0x33,0x0d,0x9e,0xab,0x28,0x1a,0x6e,0xe2,0xd3,0x4a,0x4c,0x87,0x68, - 0x78,0x1a,0x0d,0x3b,0x45,0x43,0x17,0xb8,0x6b,0x78,0x06,0xcc,0x35,0xf4,0x88,0x06, - 0xb3,0x75,0xc7,0xb9,0x2b,0xd5,0xed,0x66,0x8e,0x0a,0x31,0x5f,0xa9,0xf6,0x4d,0xf9, - 0xde,0x8c,0xa3,0xfb,0xf6,0x08,0xc7,0x5b,0xf8,0x15,0x89,0xeb,0x86,0x8f,0x7d,0x93, - 0xcf,0xf3,0x3d,0xfa,0xcc,0xbd,0x00,0xe7,0x3e,0x99,0xb9,0xbd,0xe0,0xef,0x31,0x73, - 0xfb,0xc0,0x6e,0x11,0x67,0xdf,0xe8,0x00,0x71,0xfd,0xc4,0x59,0x4f,0x0f,0x80,0x8f, - 0x84,0x28,0xbb,0x3b,0x0e,0x52,0x6f,0x1f,0xdf,0xf7,0x01,0xe9,0xd5,0x4b,0xc4,0x0f, - 0x4a,0xaf,0x0e,0x81,0x7b,0xaf,0x0e,0x83,0x79,0xaf,0x86,0xa5,0x57,0x66,0x1b,0x8a, - 0xb5,0x4a,0xfa,0x87,0xe4,0xbc,0x5f,0xa6,0x76,0x26,0xe6,0xaf,0x88,0x77,0xc6,0xab, - 0x60,0x07,0xe5,0x3b,0x4c,0xc7,0x7a,0xf9,0x68,0x3f,0x42,0x9c,0xaf,0xf3,0x21,0x97, - 0xe1,0x47,0x89,0x3d,0x12,0x73,0xad,0x8b,0xba,0x5e,0x23,0xcf,0x51,0xee,0x82,0x9c, - 0xdc,0x49,0x76,0x26,0xc3,0x70,0x1a,0x11,0xbd,0xc7,0xd1,0x7b,0x4c,0xf4,0xbe,0x0e, - 0xee,0x7a,0xdf,0x00,0x73,0xbd,0x63,0xa2,0xd7,0x6c,0xa3,0x61,0x8d,0x91,0x7b,0x54, - 0xf4,0xbe,0x29,0x7a,0xbf,0x22,0xd7,0x5b,0xe0,0x7d,0x70,0xf2,0xb8,0x31,0xe6,0xc4, - 0x7c,0x4e,0x50,0x73,0x04,0xff,0x51,0xea,0x4e,0x48,0x5d,0xf3,0x19,0x0f,0x6b,0x82, - 0xf8,0x71,0xa9,0x7b,0xf2,0x3f,0xfa,0xfc,0xf6,0x7d,0xfa,0x7c,0x9a,0x38,0x5f,0x97, - 0xe8,0xf3,0x19,0x62,0x4f,0x4b,0x9f,0xcf,0x92,0xe7,0xcc,0xff,0xf4,0xd9,0x39,0x4d, - 0xa0,0xc9,0x62,0x7e,0x22,0x66,0x8c,0xf8,0xf1,0xb2,0x33,0x19,0x16,0xdf,0x1f,0x39, - 0xcb,0x21,0xe2,0x2c,0xcf,0x39,0xfe,0x86,0x4c,0x61,0xf7,0xf3,0x7b,0x87,0xf3,0x9b, - 0x96,0xf3,0x7b,0x17,0xdc,0xcf,0xef,0x1c,0x98,0x9f,0xdf,0xac,0xf4,0xd1,0x6c,0x33, - 0x71,0xae,0x4a,0x3c,0x66,0xd0,0x69,0xb5,0x3e,0xa0,0xde,0x14,0x3a,0x0b,0xf4,0xcc, - 0x75,0xce,0x12,0x73,0x5e,0xf8,0x5c,0x84,0xcf,0x05,0xe1,0x73,0x09,0xdc,0xf9,0x5c, - 0x06,0x73,0x3e,0xf3,0xc2,0xc7,0x6c,0x73,0x61,0x2d,0x90,0x7b,0x8e,0x73,0xb5,0x3c, - 0x57,0xe0,0x92,0xe1,0x7e,0x34,0x8e,0xdf,0x08,0xee,0x77,0xcf,0x3c,0xb1,0x0b,0x72, - 0x2f,0x7c,0x08,0xaf,0xab,0x72,0x2f,0x7c,0x04,0x7e,0x97,0xb9,0xf9,0x18,0xac,0x5f, - 0xb8,0x7e,0x02,0xde,0x07,0xd7,0x25,0xe1,0x6a,0xb6,0xc5,0xb0,0x96,0xa8,0xb7,0x28, - 0xbc,0xbe,0x45,0xdf,0x94,0xdc,0xdb,0xee,0xb7,0xc4,0x59,0x9b,0xdf,0x6d,0x7c,0x16, - 0x88,0x59,0x14,0x3e,0x9f,0xc2,0xa7,0x45,0xf8,0x7c,0x06,0xee,0x7c,0x56,0x84,0x8f, - 0xd9,0x96,0xc3,0x5a,0xa1,0xce,0xb2,0xf0,0xf9,0x0e,0x3e,0xb7,0x39,0x43,0xe3,0xe3, - 0x7e,0x2b,0xc2,0xe7,0x0e,0x3e,0x4b,0xc4,0x2c,0x0b,0x9f,0xcf,0xe1,0x33,0x2d,0x7c, - 0xae,0x81,0x3b,0x9f,0x35,0xe1,0x63,0xb6,0xd5,0xb0,0xd6,0xa8,0xb3,0x2a,0x7c,0xbe, - 0xe7,0x7f,0xbc,0x3b,0x32,0x4f,0xee,0xb7,0x26,0x7c,0x7e,0xc5,0x67,0x85,0x98,0xd5, - 0xb2,0x33,0x9e,0x17,0xdf,0x5f,0x98,0x87,0x39,0xe2,0xd6,0xca,0xe6,0x74,0x56,0x7c, - 0x7f,0x66,0xbe,0x67,0x88,0xb3,0x3c,0xbb,0x03,0x93,0x1b,0xd8,0xfe,0x0e,0xa7,0xd6, - 0x15,0xd6,0x3f,0x97,0xda,0x83,0x8c,0xb4,0x0d,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfb,0x6f,0x54,0x45, + 0x14,0xc7,0xef,0xec,0x6e,0xbb,0x05,0xa4,0x96,0x6c,0xe5,0xb1,0x21,0xa4,0x95,0x0a, + 0x08,0x58,0x2a,0x22,0x94,0xc7,0x22,0x58,0xa0,0x35,0x22,0x48,0x1b,0x12,0x44,0x7c, + 0x54,0x51,0xa8,0x3c,0x14,0xd4,0x5f,0xf8,0x41,0x89,0x88,0x6d,0x82,0x81,0x08,0x28, + 0x8d,0x28,0x8d,0x11,0x22,0x91,0x44,0x50,0x21,0x51,0x40,0x69,0x0c,0x01,0xa3,0x34, + 0x51,0x1a,0x95,0x06,0xfe,0x02,0x23,0x91,0xa8,0x20,0x2a,0x82,0x73,0xee,0x7c,0x4e, + 0xf7,0xb8,0x11,0x9b,0x4c,0xee,0x9d,0xef,0x9c,0xef,0x79,0x7c,0xe7,0xcc,0xec,0x6d, + 0x32,0x31,0x3c,0x1d,0x45,0x2e,0xea,0x1b,0x95,0x44,0xf7,0xb8,0x28,0xfe,0x1b,0x10, + 0x25,0x22,0x79,0xed,0x17,0x15,0xc7,0xcf,0xfa,0xb9,0x4d,0x73,0xab,0x9f,0x7d,0x6e, + 0x69,0xf5,0x84,0x3b,0x6b,0x64,0xbd,0x34,0x4a,0xc6,0x76,0xb2,0x76,0x63,0x94,0x8e, + 0x52,0xfe,0x29,0x63,0x55,0x73,0xcb,0x6a,0xc1,0x47,0xf8,0x71,0xce,0x8f,0x32,0x6f, + 0x27,0x78,0x5a,0x7c,0xf8,0xb7,0x11,0xb1,0x4f,0xe1,0x44,0x51,0x43,0x54,0x14,0x8d, + 0x0d,0xe1,0xa2,0xe1,0x3c,0x15,0x73,0x60,0x25,0x06,0x4b,0x80,0x95,0x19,0x2c,0x09, + 0x56,0x6e,0xb0,0x14,0xd8,0x60,0x83,0x15,0x81,0x0d,0x35,0x58,0x31,0x58,0x85,0xc1, + 0xd2,0x60,0x55,0x06,0x2b,0x01,0x1b,0x65,0xb0,0x3e,0x60,0x63,0x0d,0xd6,0x17,0xac, + 0xc6,0x60,0xfd,0xc0,0x26,0x18,0xec,0x06,0xb0,0x5a,0x83,0xf5,0x07,0x9b,0x16,0xeb, + 0x94,0xec,0xad,0x57,0x34,0x5b,0xec,0x9f,0x37,0xa3,0x8f,0xce,0x2b,0xcd,0x5c,0x74, + 0x1e,0xc6,0x3c,0xe3,0x59,0x89,0x78,0x3d,0x19,0x6b,0x23,0xef,0x03,0xfd,0x5b,0x31, + 0x75,0x8e,0xf1,0xf6,0xc5,0xc4,0x1b,0x5a,0x7d,0xdf,0xd4,0x72,0x6f,0x51,0x6a,0xf0, + 0x8c,0x1f,0x8d,0x9f,0xcc,0x9b,0xa9,0x73,0xd1,0x70,0xe1,0xc2,0xef,0xa6,0xeb,0x3c, + 0xeb,0x47,0xae,0x6f,0xeb,0x5d,0x3a,0x17,0x3d,0x3f,0xa8,0x6f,0xce,0xdd,0xe4,0xe7, + 0x15,0xc4,0x90,0xbd,0x1b,0xe4,0xe7,0x95,0xcc,0x13,0xcc,0xab,0xd0,0x3c,0x15,0xe3, + 0xa9,0xe8,0x16,0x6c,0x05,0x9f,0xca,0x7c,0x84,0xe1,0x8f,0xc4,0x5e,0xf8,0xe2,0x7f, + 0x0c,0xfe,0xa2,0xb8,0xde,0xb2,0x58,0xa3,0x4a,0x46,0x45,0x6f,0x7d,0xff,0x3f,0x2a, + 0x7a,0x9f,0xa9,0xe8,0x36,0xf6,0x71,0x2c,0xf1,0x65,0x5e,0x0d,0x36,0x86,0x7a,0xc6, + 0x91,0x8f,0xd8,0xd7,0xb0,0x56,0x69,0xd6,0x27,0x9a,0x7a,0x26,0xf5,0x72,0xc3,0xba, + 0x3c,0xa7,0x90,0xaf,0xda,0xd7,0xd1,0x8b,0x3a,0x9f,0xc7,0x5e,0x0c,0xf1,0xcc,0x45, + 0xa6,0x5e,0xfb,0xc7,0x91,0x8c,0x63,0x3c,0xc0,0xfb,0x22,0x72,0x96,0xf9,0xe2,0x82, + 0x18,0x4b,0x0a,0xe6,0xcd,0x9c,0x13,0xe1,0x3f,0x46,0x8e,0x15,0x68,0xfc,0x04,0xef, + 0x49,0x63,0xdf,0x42,0x0e,0x3a,0x5f,0x45,0x6f,0xeb,0x7c,0x03,0x79,0x0a,0xff,0x55, + 0xde,0x2d,0x7f,0x1b,0xe7,0x48,0x7b,0x64,0xa7,0xc9,0x47,0xe6,0x7b,0xe3,0xd9,0x8b, + 0x75,0xc2,0xdf,0x47,0xfc,0x94,0xe1,0x1f,0xe0,0xcc,0xe9,0xfc,0x48,0xc1,0x9e,0x9c, + 0xe0,0x0c,0x49,0x3d,0x67,0x89,0xbd,0x0f,0x3d,0xce,0x72,0xef,0x24,0xe3,0xbd,0x29, + 0x8a,0xeb,0x48,0x11,0x5f,0xb0,0xcb,0x1e,0x11,0xfd,0x73,0xf4,0xe3,0x28,0x7a,0x6e, + 0xbe,0xcf,0x58,0xfa,0xed,0x56,0xb0,0x51,0x46,0xfb,0xd5,0xf4,0xf2,0x68,0xd6,0x67, + 0x7a,0x0f,0xd2,0x0b,0xb7,0xd3,0x2f,0xe3,0xf0,0x27,0x36,0xe3,0xc1,0x5f,0xf2,0x36, + 0x32,0xbf,0x03,0xde,0x78,0x78,0x93,0x38,0xf7,0xd5,0xf4,0x4e,0x8e,0x3e,0x99,0x0c, + 0xbe,0xcf,0xdb,0x94,0xc6,0xb5,0x04,0x4c,0xfa,0xe7,0x77,0x9f,0x79,0x8e,0x7c,0xfe, + 0xf4,0xf6,0x53,0xb9,0x27,0x72,0xd4,0x23,0xef,0x0b,0x3c,0x4f,0xb4,0x99,0x41,0x4c, + 0xf9,0x7b,0x01,0xbd,0x66,0x82,0x37,0x7a,0xf5,0x25,0xa7,0x61,0x2e,0x60,0x6a,0xf7, + 0x87,0xf7,0xa1,0xbe,0xe4,0x79,0xd1,0x6b,0x21,0x76,0x93,0x5c,0xb0,0x29,0x82,0x33, + 0xcd,0xd4,0x30,0x8b,0x1a,0xea,0x4c,0x0d,0xb3,0xc1,0xb5,0x86,0x39,0x60,0x5a,0x43, + 0x83,0xa9,0x61,0x4e,0x7c,0x77,0x45,0x31,0x26,0x71,0xeb,0x4d,0x0d,0xf7,0x12,0xdb, + 0x99,0x1a,0xe6,0x82,0x6b,0x0d,0x95,0x2e,0x60,0x6a,0x27,0x35,0xa8,0xaf,0x06,0x53, + 0x43,0xad,0x0b,0x36,0x39,0x38,0xf5,0xa6,0x86,0xf9,0xd4,0x30,0xcf,0xd4,0x70,0x3f, + 0xb8,0xd6,0xb0,0x00,0x4c,0x6b,0x68,0x32,0x35,0x2c,0x88,0xf3,0x89,0x62,0x4c,0xe2, + 0x36,0xd2,0x47,0x12,0x77,0x21,0xb1,0x6b,0x5d,0xfe,0xfc,0x4a,0x8e,0x6a,0xdb,0x64, + 0x72,0x9c,0x8c,0x5d,0x03,0xbc,0x46,0xf2,0x91,0x33,0xfe,0x20,0xe7,0x5b,0x7b,0xee, + 0x21,0x72,0x5e,0x62,0x7a,0xee,0x61,0xf0,0xf5,0xf4,0xdc,0xa3,0x60,0x93,0x5d,0xe0, + 0xc9,0x99,0x7f,0x1c,0x5e,0x33,0x3c,0xd1,0x74,0x29,0xb8,0xea,0xfe,0x24,0xdc,0xc8, + 0x60,0xcb,0xc0,0x5c,0xac,0x43,0x71,0x7c,0x5f,0x2c,0xc7,0x76,0x19,0x3e,0x34,0xc6, + 0x53,0xc4,0x68,0x31,0x31,0x56,0x80,0x3f,0xe2,0x6b,0x95,0xf3,0xb6,0x92,0x9a,0x96, + 0x73,0xc7,0xac,0x30,0xfb,0xb1,0x1a,0xfe,0x2a,0xb3,0x1f,0x4f,0x83,0xeb,0x7e,0x3c, + 0x03,0xa6,0xfb,0xb1,0xd6,0xec,0x87,0xac,0xad,0xf1,0x63,0x2d,0x1a,0xaf,0xa1,0x0e, + 0xb9,0x73,0x9e,0x27,0x76,0x04,0xef,0x12,0xef,0x7f,0xf9,0x77,0xf1,0xf5,0x23,0x1c, + 0x79,0x1e,0x25,0xd6,0x4f,0xf0,0xfa,0xc3,0xb9,0x68,0x62,0xc9,0xda,0x79,0x3f,0x2e, + 0xc0,0xbb,0x10,0xdf,0x49,0xe9,0x38,0xd6,0x2f,0xe8,0x95,0x85,0x2f,0xbf,0xa1,0x1b, + 0xc9,0xe3,0x57,0xd6,0xb3,0xf1,0x3d,0x1a,0xb0,0xdf,0xc0,0x87,0xd2,0x23,0x97,0xf0, + 0x79,0xde,0xf0,0x7e,0xc6,0x57,0xa6,0xc0,0x46,0x72,0xba,0xe6,0xa3,0x5d,0x06,0xbb, + 0x48,0x0e,0x53,0x5c,0xf0,0x7b,0x01,0xee,0x79,0xce,0x8e,0xec,0x41,0x95,0x0b,0xeb, + 0x2b,0xcd,0x5e,0x0b,0x67,0x1d,0x1a,0x39,0xea,0x2d,0x71,0xff,0xd6,0xe8,0x0a,0x31, + 0xaf,0x18,0x8d,0xae,0xc2,0x53,0x8d,0xd2,0x2e,0xaf,0xd1,0xd5,0x38,0x37,0xbf,0xcf, + 0x2e,0xf0,0xe4,0xa9,0x1a,0xa5,0x5c,0x5e,0xa3,0x75,0x05,0x1a,0x15,0xb9,0xb0,0x6e, + 0x35,0x2a,0x76,0x01,0x57,0x8d,0x4a,0xf0,0x79,0xcd,0xf0,0x9c,0x0b,0xbe,0x32,0x05, + 0x36,0x92,0x93,0x6a,0x24,0x98,0x6a,0x34,0xcd,0x05,0xbf,0x92,0x97,0x73,0x21,0x57, + 0xd5,0x68,0xa4,0x0b,0xeb,0x55,0xe4,0xa9,0x1a,0xad,0x47,0xa3,0x04,0xf5,0x66,0x0b, + 0x34,0x2a,0x25,0xa6,0x3c,0x55,0xa3,0x32,0x17,0x78,0xaa,0xd1,0x10,0xa3,0x91,0xac, + 0x0d,0xf0,0xa3,0x1c,0x5e,0xb9,0xd1,0x68,0xa0,0xd1,0x68,0x7d,0x81,0x46,0x83,0x5c, + 0x58,0xb7,0x1a,0x0d,0x76,0x01,0x57,0x8d,0xb2,0xf8,0x14,0xff,0xca,0xcb,0x90,0x4b, + 0xa6,0xc0,0x66,0x88,0xd1,0x28,0x6b,0x34,0x9a,0xee,0x82,0x5f,0xc9,0x2b,0x43,0xae, + 0xaa,0xd1,0x68,0x17,0xd6,0x45,0xab,0x04,0xfe,0xf4,0xec,0xad,0xa5,0x17,0xc5,0x6e, + 0x06,0xbd,0xd6,0x04,0x27,0xeb,0xf2,0x67,0xfe,0x65,0xce,0xfc,0x06,0x73,0xe6,0x37, + 0x82,0xeb,0x99,0x7f,0x05,0x4c,0xcf,0x7c,0x9b,0x39,0x87,0xb2,0xd6,0xea,0xc7,0x56, + 0xe2,0x6e,0x35,0xf7,0xc9,0x76,0x7c,0x6f,0x33,0xbe,0x5f,0x07,0x57,0xdf,0x6f,0x80, + 0xa9,0xef,0x76,0xe3,0x5b,0xd6,0x76,0xf8,0xd1,0x8e,0xef,0x1d,0xa6,0x0f,0xde,0xa4, + 0x2e,0xf9,0xa6,0x38,0x8c,0xaf,0xb7,0xc0,0x77,0xa2,0x85,0xf2,0xda,0xd1,0x42,0x6c, + 0xde,0x26,0xe6,0x56,0xec,0x77,0x10,0xb7,0xc3,0xc4,0x15,0x9b,0x5d,0x7e,0x74,0xc0, + 0xdf,0x65,0xe2,0xbe,0x63,0xe2,0xce,0xf7,0x5f,0x49,0xf2,0xfd,0xf5,0x2e,0xd8,0x0c, + 0x97,0xff,0x66,0x49,0x70,0x5f,0xcb,0xfa,0x6e,0x78,0x3a,0xda,0xbc,0x2f,0xc1,0xf7, + 0xc0,0xdd,0x1d,0xfb,0xea,0x13,0xef,0xd5,0x7b,0xf8,0xda,0xc3,0x77,0x53,0x91,0xf9, + 0xbe,0x93,0x9a,0x34,0xa7,0x0e,0xb3,0xbf,0x75,0xc4,0x6e,0x87,0xbf,0x0b,0xdb,0x36, + 0x6c,0x5b,0x4d,0xfe,0x9b,0xfe,0x23,0xff,0xcd,0xd7,0xc9,0x7f,0x33,0x79,0x6e,0xc1, + 0x66,0x93,0xc9,0xf3,0x35,0x38,0x5b,0xae,0x93,0xa7,0xc6,0x6e,0x33,0x79,0xde,0xed, + 0x42,0xae,0x1d,0xf0,0x5b,0x89,0x21,0x6b,0xef,0xb3,0xbe,0x97,0xef,0x3d,0xf9,0x9e, + 0xdc,0x0f,0xae,0xfd,0xf4,0x21,0xfd,0x74,0xc0,0xf4,0xd3,0x47,0xe0,0xda,0x4f,0x1f, + 0x83,0x69,0x3f,0x1d,0x32,0xfb,0x2a,0x6b,0x07,0xe3,0x7e,0x09,0xb9,0x1d,0x36,0xbe, + 0x8f,0xe2,0xfb,0x88,0xf1,0xfd,0x19,0xb8,0xfa,0xfe,0x1c,0x4c,0x7d,0x77,0x1a,0xdf, + 0xb2,0x76,0xcc,0x8f,0xe3,0xf8,0x3e,0x6e,0x7e,0x97,0x4f,0xe2,0xfb,0x84,0xf9,0x5d, + 0xfe,0x12,0xfc,0x24,0xbf,0xf3,0x5f,0x81,0xb5,0x98,0x78,0x5f,0x83,0x2f,0x21,0x5e, + 0x97,0x89,0x27,0x6b,0xa7,0xfc,0xe8,0x22,0xde,0x29,0xee,0x4e,0xd1,0x6d,0xbc,0x0b, + 0x9c,0xfd,0x51,0xfe,0xdb,0x4c,0xed,0xba,0xd8,0x0f,0xb1,0x9b,0xe5,0x82,0xcd,0x71, + 0x38,0xa7,0x4c,0x3e,0xdf,0x90,0xcf,0x44,0x93,0xcf,0xb7,0xe0,0x9a,0x4f,0xb7,0xc9, + 0x47,0xd6,0x4e,0xfb,0xd1,0x4d,0x9c,0xd3,0x26,0x9f,0x09,0xe4,0x33,0xcb,0xdc,0x53, + 0x6a,0xd7,0x6d,0xf2,0x99,0xed,0x82,0x4d,0x17,0x9c,0xd3,0x26,0x9f,0xef,0xc9,0xe7, + 0x80,0xc9,0xe7,0x07,0x70,0xcd,0xa7,0xc7,0xe4,0x23,0x6b,0x67,0xfc,0xe8,0x21,0xce, + 0x19,0x93,0xcf,0x44,0x17,0xfe,0x67,0x98,0xed,0xf2,0xfd,0xaa,0x76,0x3d,0x26,0x9f, + 0x06,0x17,0x6c,0xba,0xe1,0x9c,0xc1,0xb6,0x13,0xdb,0x63,0xe6,0x3b,0xed,0x0b,0xf4, + 0x4e,0x9a,0x38,0x35,0x2e,0x8f,0x47,0x05,0xdc,0x4e,0x13,0xa7,0xde,0x85,0x58,0x3d, + 0x70,0x8e,0x61,0x7b,0x08,0xdb,0x83,0x9c,0x3b,0xb1,0xfd,0x14,0x7f,0xfb,0x39,0x77, + 0x69,0xce,0x6a,0xb2,0x80,0x73,0xc8,0xf8,0x9f,0xe3,0x42,0x8c,0x4e,0xf8,0xe2,0x6f, + 0xba,0x67,0x9c,0x63,0xed,0x6f,0xdf,0x25,0xb5,0x7e,0xfc,0x03,0xae,0x53,0x3c,0x67, + 0x88,0x12,0x00,0x00 }; // Generated from: @@ -91,8 +120,8 @@ constexpr uint8_t kImageCopy_frag_00000006[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture2D src; -// layout(location = 0)out uvec4 dst; +// layout(set = 0, binding = 0)uniform texture3D src; +// layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -117,6 +146,19 @@ constexpr uint8_t kImageCopy_frag_00000006[] = { // bool rotateXY; // } params; // +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -136,7 +178,15 @@ constexpr uint8_t kImageCopy_frag_00000006[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } // // if(params . premultiplyAlpha) // { @@ -147,7 +197,9 @@ constexpr uint8_t kImageCopy_frag_00000006[] = { // srcValue . rgb /= srcValue . a; // } // -// uvec4 dstValue = uvec4(srcValue); +// srcValue *= 255.0; +// +// ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc new file mode 100644 index 0000000000000000000000000000000000000000..ee6bc0815bc0ee0e75a8b950e8eb1d87519f515a --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc @@ -0,0 +1,231 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.00000007.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_00000007[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfd,0x6b,0x96,0x55, + 0x18,0xc7,0xef,0xf3,0x3c,0x7b,0xd5,0x7c,0xdd,0x4c,0xdd,0xa4,0x36,0x5f,0x57,0xb3, + 0xf9,0xfe,0x3a,0xa7,0x0d,0x75,0x5b,0x65,0x9a,0x1b,0x92,0x66,0x16,0x86,0x99,0x96, + 0xce,0x72,0xd1,0x2f,0x42,0x65,0x69,0x2a,0x58,0x49,0x5a,0x39,0xb2,0x1c,0x91,0x92, + 0x24,0xa1,0x95,0x12,0x69,0xe5,0x08,0xb1,0x28,0x07,0xe5,0xa2,0x1c,0xfa,0x17,0x48, + 0x92,0x94,0x69,0x85,0xd8,0xb9,0xce,0xf9,0x5c,0x7b,0xae,0x1e,0xb2,0xc1,0xe1,0xbe, + 0xcf,0xf7,0x5c,0x2f,0xdf,0xeb,0x7b,0xae,0x73,0x9e,0x7b,0xe9,0xd4,0xb0,0xfc,0x24, + 0x71,0x49,0x8f,0xa4,0x20,0xb9,0xdb,0x25,0xe1,0xaf,0x5f,0x92,0x4a,0x1c,0xcf,0xf1, + 0xfe,0xd9,0x33,0xc9,0x0b,0xf3,0xfa,0x79,0x4d,0xf3,0xaa,0x5a,0x9e,0x5e,0x51,0x35, + 0x71,0xd2,0x58,0xb1,0xeb,0x9d,0xa4,0x83,0xbd,0xac,0xf5,0x49,0xf2,0x93,0x1c,0xff, + 0x94,0xb1,0x76,0xf9,0xea,0x66,0xc1,0x47,0xfa,0x71,0xde,0x8f,0xbe,0xde,0x4e,0xf0, + 0x7c,0x89,0xe1,0xdf,0x46,0x86,0x98,0xe2,0x93,0x24,0x0d,0x49,0x6e,0x32,0x3a,0xa6, + 0x4d,0x86,0xf1,0x54,0xcc,0x81,0x15,0x18,0x2c,0x05,0xd6,0xd7,0x60,0x69,0xb0,0x62, + 0x83,0xe5,0x80,0x0d,0x32,0x58,0x2e,0xd8,0x10,0x83,0xe5,0x81,0x95,0x19,0x2c,0x1f, + 0x6c,0xb8,0xc1,0x0a,0xc0,0x2a,0x0c,0x56,0x08,0x36,0xda,0x60,0x3d,0xc0,0xc6,0x1a, + 0xac,0x27,0xd8,0x44,0x83,0xdd,0x04,0x36,0xd5,0x60,0xbd,0xc0,0x66,0x04,0x9d,0xd2, + 0xdd,0xf5,0x8a,0x66,0x4b,0xfd,0x73,0x28,0xfa,0xe8,0xbc,0xdc,0xcc,0x45,0xe7,0x5b, + 0x98,0x17,0x79,0xaf,0x54,0x58,0x4f,0x07,0x6d,0xe4,0xfd,0x66,0xff,0x96,0x47,0x9d, + 0x95,0xde,0x3e,0x8f,0x7c,0x43,0xaa,0xee,0xad,0x2e,0xf6,0x16,0xbd,0x0d,0x5e,0xe4, + 0x47,0xe3,0xa7,0xf3,0x6b,0x75,0x2e,0x1a,0x2e,0x5a,0xf4,0xe3,0x4c,0x9d,0x97,0xf8, + 0x51,0xd3,0x63,0xcb,0x2c,0x9d,0x8b,0x9e,0x1f,0xd6,0x2f,0xaf,0x19,0xe0,0xe7,0x65, + 0xe4,0x90,0xbd,0x1b,0xe8,0xe7,0xe5,0xcc,0x53,0xcc,0x87,0xa3,0x79,0x4e,0xc0,0x73, + 0x92,0x11,0xd8,0x0a,0x5e,0xcd,0x7c,0xa4,0xf1,0x1f,0x85,0xbd,0xf8,0x4b,0xfc,0x4a, + 0xe2,0x25,0xa1,0xde,0xbe,0x41,0xa3,0x72,0x46,0x59,0x77,0x7d,0xff,0x3f,0xca,0xba, + 0x9f,0x39,0xc9,0x1d,0xec,0xe3,0x68,0xf2,0xcb,0xbc,0x0a,0xac,0x92,0x7a,0xc6,0xc0, + 0x47,0xec,0xc7,0xb2,0x56,0x6e,0xd6,0x27,0x9b,0x7a,0xa6,0x74,0xfb,0xc6,0x75,0x79, + 0x4e,0x87,0xaf,0xda,0xcf,0xa6,0x17,0x75,0x3e,0x9f,0xbd,0x18,0xec,0x3d,0x17,0x53, + 0x2f,0x47,0xb1,0xfb,0x4f,0xe7,0xa5,0x7e,0x1f,0x97,0xf8,0xe7,0x62,0xf2,0x3d,0x00, + 0xbe,0x04,0xfe,0x32,0x5f,0x9a,0x95,0x6f,0x59,0xd6,0x7c,0x15,0x7a,0x8a,0xff,0x6a, + 0xf8,0x96,0x99,0xf5,0x66,0xfa,0x58,0xe7,0x9b,0xe0,0x24,0xfb,0xf1,0x32,0xef,0x69, + 0xb3,0xbe,0x8b,0x33,0xa3,0xfd,0xb0,0xc7,0xe4,0x93,0xf9,0x81,0x30,0x7b,0x6e,0xb6, + 0xf8,0x1f,0x24,0x57,0x8e,0xf1,0x3f,0xcc,0xf9,0xd2,0xf9,0xf1,0x2c,0xfd,0x4f,0x71, + 0x5e,0x84,0xef,0x39,0x72,0x1f,0xa4,0xde,0x73,0xdc,0x31,0xe9,0xb0,0x0f,0xb9,0xa1, + 0xae,0x1c,0xf2,0x0b,0x76,0xd5,0x23,0xa2,0x75,0x0d,0xbd,0x57,0x41,0x7f,0x2d,0xf0, + 0x8c,0xa5,0xb7,0x6e,0x03,0xab,0x30,0x3a,0x37,0xd3,0xb7,0xb7,0xb3,0x5e,0xeb,0x23, + 0xc8,0xbe,0x8f,0xa3,0x37,0xc6,0x10,0x4f,0x6c,0xc6,0x83,0xbf,0xe0,0x6d,0x64,0x3e, + 0x01,0xbf,0xf1,0xf8,0x4d,0xe1,0x8c,0x57,0xd1,0x27,0x35,0xf4,0xc4,0x34,0xf0,0x0f, + 0xbc,0x4d,0xef,0x50,0x4b,0xc4,0xa4,0x57,0xae,0x78,0xe6,0x35,0xf0,0xf9,0xcb,0xdb, + 0x57,0x73,0x27,0xd4,0x50,0x8f,0xbc,0x2f,0xf4,0x7e,0xa2,0xcd,0x9d,0xe4,0x94,0xbf, + 0x67,0xd1,0xab,0x16,0xbc,0xd1,0xab,0x2f,0x9c,0x6e,0x75,0x11,0x53,0xbb,0x3f,0x7d, + 0x0c,0x8d,0x25,0xcf,0xcb,0x5e,0x0b,0xb1,0x9b,0xea,0xa2,0x4d,0x2e,0x3e,0x33,0x4c, + 0x0d,0x73,0xa8,0x61,0xb6,0xa9,0x61,0x2e,0xb8,0xd6,0x50,0x07,0xa6,0x35,0x34,0x98, + 0x1a,0xea,0xc2,0x3d,0x95,0x04,0x4c,0xf2,0xd6,0x9b,0x1a,0xee,0x21,0xb7,0x33,0x35, + 0xcc,0x03,0xd7,0x1a,0x86,0xba,0x88,0xa9,0x9d,0xd4,0xa0,0xb1,0x1a,0x4c,0x0d,0xd3, + 0x5c,0xb4,0xa9,0xc1,0xa7,0xde,0xd4,0xb0,0x80,0x1a,0xe6,0x9b,0x1a,0xee,0x03,0xd7, + 0x1a,0x16,0x82,0x69,0x0d,0x4d,0xa6,0x86,0x85,0x81,0x4f,0x12,0x30,0xc9,0xdb,0x48, + 0x1f,0x49,0xde,0x45,0xe4,0x9e,0xe6,0x32,0x67,0x55,0x38,0xaa,0x6d,0x93,0xe1,0x38, + 0x1d,0xbb,0x06,0xfc,0x1a,0xe1,0x23,0x67,0xf8,0x41,0xce,0xaf,0xf6,0xdc,0x43,0x70, + 0x5e,0x66,0x7a,0xee,0x61,0xf0,0xe7,0xe9,0xb9,0xe5,0x60,0x12,0x77,0x1d,0x77,0xe6, + 0x23,0xe0,0x2b,0xfc,0x7c,0x71,0x78,0xc6,0xd8,0x8f,0xe1,0xf3,0x28,0x98,0xc4,0x55, + 0x9f,0x95,0xe0,0x5b,0xbd,0xcd,0xa8,0x60,0x1b,0xe3,0xac,0x84,0x8f,0xdc,0x15,0x8f, + 0xc3,0x67,0x15,0x7c,0x64,0xaf,0x9e,0x00,0x5f,0xc7,0x79,0x5f,0x03,0x76,0xbf,0xaf, + 0x57,0xce,0xdc,0xda,0xee,0xdc,0x51,0x9b,0x35,0x66,0x4f,0xd6,0x11,0xaf,0xd9,0xec, + 0xc9,0x93,0xe0,0xba,0x27,0x4f,0x81,0xe9,0x9e,0xb4,0x98,0x3d,0x91,0xb5,0xf5,0x7e, + 0xb4,0xa0,0xf3,0x7a,0xfa,0x4a,0x78,0x3c,0x43,0xee,0x04,0xbf,0x2b,0xbc,0xff,0xed, + 0xdf,0x25,0xd6,0x05,0x7c,0x2e,0x84,0x3b,0x27,0xe6,0xfa,0x05,0xbf,0x5e,0xf8,0xfc, + 0x61,0x72,0xc9,0xda,0x45,0x3f,0x2e,0xe1,0x77,0x29,0xdc,0x4b,0xf9,0x21,0xd7,0x6f, + 0xd4,0x56,0x82,0xbf,0xfc,0x66,0x6e,0x86,0xc7,0xef,0xac,0xcb,0xda,0x8b,0x60,0x97, + 0xc1,0x87,0xd0,0x27,0x57,0x88,0x79,0xd1,0xf8,0xfd,0x4a,0xac,0xa2,0x2c,0x1b,0xe1, + 0x74,0xdd,0x67,0xbb,0x0a,0x76,0x19,0x0e,0xd5,0x2e,0xc6,0xbd,0x84,0xef,0x45,0xce, + 0x8f,0xec,0xc1,0x08,0x17,0xd7,0x55,0x0f,0xd5,0x68,0x03,0x1a,0x39,0xea,0x2d,0x74, + 0xff,0xd6,0xe8,0x1a,0x39,0xaf,0x19,0x8d,0xae,0xe3,0xa7,0x1a,0x15,0xb8,0x8c,0x46, + 0xd7,0xb9,0x44,0xd3,0x2e,0xfa,0xc9,0x53,0x35,0xca,0x75,0x19,0x8d,0x36,0x64,0x69, + 0x94,0xe7,0xe2,0xba,0xd5,0x28,0xdf,0x45,0x5c,0x35,0x2a,0x24,0xa6,0x04,0x51,0xbf, + 0x94,0x8b,0xb1,0x8a,0xb2,0x6c,0x84,0x93,0x6a,0x54,0xe8,0x32,0x1a,0xd5,0xb8,0x18, + 0x57,0x78,0x89,0xaf,0xc4,0x52,0x8d,0x2a,0x5c,0x5c,0x1f,0x01,0x4f,0xd5,0x68,0x23, + 0x1a,0xa5,0xa8,0xb7,0x34,0x4b,0xa3,0x3e,0xe4,0x94,0xa7,0x6a,0xd4,0xcf,0x45,0x3f, + 0xd5,0xa8,0xc4,0x68,0x24,0x6b,0xfd,0xfd,0x18,0x80,0xdf,0x00,0xa3,0xd1,0x40,0xa3, + 0xd1,0xc6,0x2c,0x8d,0x06,0xb9,0xb8,0x6e,0x35,0x1a,0xec,0x22,0xae,0x1a,0x95,0x12, + 0xb3,0xbf,0xd1,0xa8,0x18,0x2e,0x45,0x59,0x36,0x25,0x46,0xa3,0x52,0xa3,0xd1,0x2c, + 0x17,0xe3,0x0a,0xaf,0x62,0xb8,0xaa,0x46,0x95,0x2e,0xae,0x8b,0x56,0x29,0xe2,0xe9, + 0xd9,0x6b,0xa1,0x17,0xc5,0xae,0x96,0x5e,0x6b,0xc2,0xa7,0xd4,0x65,0xce,0xfc,0x66, + 0xce,0xfc,0x26,0x73,0xe6,0x5f,0x02,0xd7,0x33,0xbf,0x05,0x4c,0xcf,0xfc,0x36,0x73, + 0x0e,0xb7,0x84,0x3b,0x2a,0x49,0x76,0x92,0x77,0xa7,0xb9,0x4f,0x5e,0x27,0xf6,0x2e, + 0x13,0xfb,0x0d,0x70,0x8d,0xfd,0x26,0x98,0xc6,0x6e,0x35,0xb1,0x65,0x6d,0xb7,0x1f, + 0xad,0xc4,0xde,0x6d,0xfa,0xe0,0x2d,0xea,0x92,0xef,0x8a,0xcf,0x88,0xf5,0x36,0xf8, + 0x1e,0xb4,0x50,0xbf,0x56,0xb4,0x10,0x9b,0x77,0xc8,0xb9,0x13,0xfb,0xdd,0xe4,0x6d, + 0x33,0x79,0xc5,0x66,0xaf,0x1f,0x6d,0xf8,0xef,0x35,0x79,0xdf,0x35,0x79,0x17,0xf8, + 0x2f,0x25,0xf9,0x06,0x7b,0x0f,0xac,0xd6,0x65,0xbe,0x5b,0x52,0xe1,0xb7,0x2b,0x2f, + 0xac,0xef,0xc3,0x4f,0x87,0xdc,0xe9,0x82,0xef,0xc7,0x77,0x5f,0x88,0x55,0x18,0xf6, + 0xea,0x7d,0x62,0xed,0xe7,0xdb,0x29,0xd7,0x7c,0xe3,0x49,0x4d,0xca,0xa9,0xcd,0xec, + 0xef,0x1c,0x72,0xb7,0xe2,0xbf,0x17,0xdb,0x6d,0xd8,0x6e,0x35,0xfc,0xb7,0xff,0x07, + 0xff,0x57,0x6f,0xc0,0xff,0x15,0x78,0xee,0xc0,0x66,0xbb,0xe1,0xf9,0x1a,0x3e,0x3b, + 0x6e,0xc0,0x53,0x73,0x6f,0x33,0x3c,0x67,0xbb,0xc8,0xb5,0x0d,0xff,0xad,0xe4,0x18, + 0x1e,0xfa,0x21,0xae,0x1f,0xe0,0x9b,0x4f,0xbe,0x29,0x0f,0x81,0x6b,0x3f,0x7d,0x44, + 0x3f,0x1d,0x36,0xfd,0xf4,0x31,0xb8,0xf6,0xd3,0x27,0x60,0xda,0x4f,0x47,0xcd,0xbe, + 0xca,0xda,0x11,0x3f,0x8e,0xc1,0xed,0x98,0x89,0xfd,0x39,0xb1,0x8f,0x9b,0xd8,0x5f, + 0x80,0x6b,0xec,0x2f,0xc1,0x34,0x76,0xbb,0x89,0x2d,0x6b,0x27,0xfc,0x38,0x49,0xec, + 0x93,0xe6,0x77,0xfa,0x6b,0x62,0x9f,0x32,0xbf,0xd3,0xdf,0x80,0x9f,0xe2,0xbb,0xeb, + 0x5b,0xb0,0x55,0x26,0xdf,0x77,0xe0,0xcb,0xc8,0xd7,0x61,0xf2,0xc9,0xda,0x69,0x3f, + 0x3a,0xc8,0x77,0x9a,0xdf,0x17,0xd1,0x6d,0x82,0x8b,0x3e,0x87,0x92,0xcc,0xf7,0x99, + 0xda,0x75,0xb0,0x1f,0x62,0x37,0xd7,0x45,0x9b,0x93,0xf8,0x9c,0x36,0x7c,0xbe,0x87, + 0xcf,0x64,0xc3,0xe7,0x07,0x70,0xe5,0xd3,0x69,0xf8,0xc8,0xda,0x19,0x3f,0x3a,0xc9, + 0x73,0xc6,0xf0,0x99,0x04,0x9f,0xb9,0xe6,0x9e,0x52,0xbb,0x4e,0xc3,0xa7,0xce,0x45, + 0x9b,0x0e,0x7c,0xce,0x18,0x3e,0x3f,0xc1,0xe7,0xb0,0xe1,0xf3,0x33,0xb8,0xf2,0xe9, + 0x32,0x7c,0x64,0xed,0xac,0x1f,0x5d,0xe4,0x39,0x6b,0xf8,0x4c,0x71,0xf1,0xff,0x86, + 0x3a,0x97,0xe9,0x57,0xb5,0xeb,0x32,0x7c,0xee,0x72,0xd1,0xa6,0x13,0x9f,0xb3,0xd8, + 0xb6,0x63,0x7b,0xc2,0x7c,0x37,0x7f,0x85,0xde,0x69,0x93,0x67,0x9c,0xcb,0xe0,0x49, + 0x96,0x6f,0xbb,0xc9,0xd3,0xe0,0x62,0xae,0x2e,0x7c,0x4e,0x60,0x7b,0x14,0xdb,0x23, + 0x9c,0xbb,0x83,0xe1,0xae,0x8b,0xf1,0x0e,0x71,0xee,0xf2,0x39,0xab,0xe9,0x2c,0x9f, + 0xa3,0x26,0x7e,0xbd,0x8b,0x39,0xda,0xf1,0x97,0x78,0x33,0xbd,0xc7,0x79,0xd6,0xae, + 0xf9,0x2e,0x99,0xea,0xc7,0x3f,0xe2,0xeb,0xea,0x0b,0x80,0x12,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform sampler2D src; +// layout(location = 0)out ivec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// vec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// srcValue *= 255.0; +// +// ivec4 dstValue = ivec4(srcValue); +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc index 57fe448281b0ee22f5a0809b998b36832f13203d..fdf6ac14fcf60f920089942dafcb8e9d3e3ba5f5 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc @@ -10,107 +10,105 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000008[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0xe9,0x6f,0x95,0x45, - 0x14,0xc6,0xdf,0xb9,0xb7,0x1b,0x5b,0x2d,0xa1,0x50,0x51,0x42,0x5a,0x29,0x05,0x69, - 0x29,0x7b,0x81,0x96,0xcb,0x12,0xa4,0xad,0x42,0x40,0x68,0x34,0x41,0x44,0x52,0x64, - 0x11,0xa9,0xb8,0x00,0xb1,0xa8,0x34,0xc5,0x16,0x23,0xc4,0x0f,0x9a,0x88,0x0a,0x89, - 0x7e,0xf0,0x8b,0x26,0x45,0xe0,0x83,0xa0,0x52,0x0d,0x41,0x23,0x60,0xa2,0x34,0x51, - 0x6a,0xe0,0x1f,0xd0,0x48,0x24,0x2e,0x84,0x08,0x82,0xe2,0x9c,0x99,0xdf,0xe9,0x3d, - 0x36,0x2e,0x4d,0x26,0xef,0x3b,0xcf,0x9c,0xe7,0x2c,0xcf,0x9c,0x99,0xf7,0x42,0x3a, - 0x35,0x26,0x3f,0x49,0x5c,0x32,0x30,0x29,0x48,0x16,0xbb,0x24,0xfc,0x0d,0x4d,0x52, - 0x89,0xbc,0x0e,0x4a,0xf2,0xc2,0xb3,0x61,0x49,0xd3,0x92,0xea,0xad,0xdb,0xd6,0x55, - 0x4f,0x9f,0x31,0x59,0xd6,0x0b,0x93,0x74,0xb0,0x93,0xb5,0x5b,0x92,0xfc,0x24,0xc7, - 0x3f,0x65,0x3c,0xd6,0xbc,0x69,0x8b,0xe0,0x15,0x7e,0x5c,0xf0,0xa3,0xc8,0xdb,0x09, - 0x9e,0x2f,0x3e,0xfc,0x5b,0x45,0xf0,0x29,0x9c,0x24,0x69,0x4c,0x72,0x93,0xaa,0x18, - 0x2e,0x19,0xc3,0x53,0x31,0x07,0x56,0x60,0xb0,0x14,0x58,0x91,0xc1,0xd2,0x60,0xc5, - 0x06,0xcb,0x01,0xbb,0xd5,0x60,0xb9,0x60,0xa3,0x0c,0x96,0x07,0x56,0x6a,0xb0,0x7c, - 0xb0,0x72,0x83,0x15,0x80,0x8d,0x37,0xd8,0x00,0xb0,0x2a,0x83,0x0d,0x04,0x9b,0x6c, - 0xb0,0x41,0x60,0xd3,0x0d,0x36,0x18,0x6c,0x96,0xc1,0x86,0x80,0xcd,0x09,0x3a,0xa5, - 0xfb,0xea,0x15,0xcd,0x56,0xf9,0xe7,0x1d,0xe8,0xa3,0xf3,0x32,0x33,0x17,0x9d,0x47, - 0x33,0x1f,0xe6,0x59,0xa9,0xb0,0x9e,0x0e,0xda,0xc8,0xfb,0x08,0xff,0x96,0x47,0x9d, - 0x95,0xde,0x3e,0x8f,0x78,0xdf,0x1d,0x1a,0x9b,0x29,0xf6,0x16,0x85,0x06,0x17,0xcd, - 0x0e,0x35,0x34,0x67,0x74,0x2e,0x7a,0x1d,0xd8,0x3f,0x72,0xfe,0x70,0x3f,0x2f,0xc5, - 0x87,0xec,0x4d,0x89,0x9f,0x97,0x31,0x4f,0x31,0x2f,0x47,0xd3,0x9c,0x80,0xe7,0x24, - 0x63,0xb1,0x15,0xbc,0x8e,0x79,0x85,0xe1,0x8f,0xc3,0x5e,0xf8,0xe2,0xbf,0x12,0x7f, - 0x49,0xa8,0xa7,0x28,0x68,0x50,0xc6,0x28,0xed,0xcb,0xff,0xbf,0x47,0x69,0xdf,0x33, - 0x27,0x99,0xc8,0x3e,0x55,0x11,0x5f,0xe6,0xd5,0x60,0x95,0xd4,0x33,0x89,0x7c,0xc4, - 0x7e,0x32,0x6b,0x65,0x66,0xbd,0xc6,0xd4,0x33,0xb3,0x8f,0x1b,0xd7,0xe5,0x59,0x4b, - 0xbe,0x6a,0xbf,0x90,0x5e,0xd3,0xf9,0x52,0xb4,0x96,0x7a,0xef,0x87,0x2b,0xfe,0x46, - 0x7a,0x4f,0x2b,0x99,0x73,0xe4,0xfa,0xfe,0x74,0x2e,0x31,0x1f,0xe0,0x7d,0x25,0x35, - 0xc8,0x7c,0x55,0xbf,0x98,0xab,0xfb,0xcd,0xd7,0xa2,0xa9,0xf0,0x1f,0x26,0xe7,0x52, - 0xb3,0xbe,0x11,0xdd,0x25,0xa7,0x27,0xc9,0x21,0x6d,0xd6,0x77,0x70,0x0e,0x74,0xbe, - 0x8f,0x3e,0xd6,0x79,0x17,0x67,0x42,0xe7,0xc7,0xfa,0x69,0x7a,0x92,0x1e,0xd7,0x1e, - 0xfa,0xc2,0xe4,0x27,0xf3,0x6f,0xc3,0xac,0x7d,0x9e,0xe4,0x77,0x9e,0xd8,0xda,0x23, - 0xe7,0xb9,0x37,0xd2,0xc6,0x7e,0x86,0x17,0x64,0x57,0x7b,0x7b,0x5d,0x95,0xcf,0x4a, - 0xec,0x6a,0x5c,0xc4,0xec,0x50,0xdb,0x99,0xfe,0xfd,0xf1,0x77,0x9e,0x9a,0xa7,0xf3, - 0x59,0x7e,0xfe,0x4a,0xc7,0x5b,0x99,0x1a,0xbf,0x2b,0x29,0xb4,0x4f,0xf0,0x7f,0xd5, - 0x23,0xb2,0x57,0x19,0x7a,0x77,0x3c,0xfd,0xb9,0xcc,0xc7,0x91,0xde,0xbc,0x13,0x6c, - 0xbc,0xd9,0x97,0x2d,0xf4,0xfd,0x04,0xd6,0x17,0x78,0x0f,0xd2,0x37,0x53,0xe8,0xad, - 0x49,0xf8,0x13,0x9b,0xa9,0xe0,0xcf,0x7b,0x1b,0x99,0x4f,0x83,0x37,0x15,0xde,0x4c, - 0xee,0x80,0x6a,0xfa,0x2c,0x43,0x4f,0xcd,0x06,0xef,0xf2,0x36,0x85,0x41,0x97,0x88, - 0x49,0xaf,0xfd,0xe6,0x33,0xcf,0x90,0xcf,0xef,0xde,0xbe,0x8e,0x3b,0x23,0x43,0x3d, - 0xf2,0xbe,0xdc,0xf3,0x64,0x1f,0xe6,0x13,0x53,0xfe,0xda,0xd8,0x9b,0x05,0xe0,0x2b, - 0xbc,0x3a,0x92,0xd3,0xed,0x2e,0x62,0x6a,0x77,0xcd,0xfb,0x50,0x5f,0xf2,0xbc,0xe2, - 0xb5,0x10,0xbb,0xd9,0x2e,0xda,0xe4,0xc2,0x99,0x63,0x6a,0xb8,0x8b,0x1a,0x16,0x9a, - 0x1a,0x16,0x81,0x6b,0x0d,0xf5,0x60,0x5a,0x43,0xa3,0xa9,0xa1,0x3e,0xdc,0x63,0x49, - 0xc0,0x24,0x6e,0x83,0xa9,0x61,0x31,0xb1,0x9d,0xa9,0x61,0x09,0xb8,0xd6,0x30,0xda, - 0x45,0x4c,0xed,0xa4,0x06,0xf5,0xd5,0x68,0x6a,0xa8,0x75,0xd1,0x26,0x03,0xa7,0xc1, - 0xd4,0xb0,0x8c,0x1a,0x96,0x9a,0x1a,0xee,0x05,0xd7,0x1a,0x96,0x83,0x69,0x0d,0x4d, - 0xa6,0x86,0xe5,0x21,0x9f,0x24,0x60,0x12,0x77,0x05,0x7d,0x24,0x71,0xef,0x23,0x76, - 0xad,0xcb,0x9e,0x6d,0xc9,0x51,0x6d,0x9b,0x4c,0x8e,0x75,0xd8,0x35,0xc2,0x5b,0x41, - 0x3e,0x72,0xfe,0x1f,0xe4,0xec,0x6b,0xcf,0x3d,0x44,0xce,0xab,0x4d,0xcf,0xad,0x01, - 0x6f,0xa7,0xe7,0x9a,0xc1,0xea,0x5c,0xe4,0xc9,0x7d,0xb0,0x0e,0xde,0x5a,0x78,0xa2, - 0xe9,0x7a,0xf0,0x35,0x3e,0x0f,0xb9,0xa7,0x36,0x10,0xaf,0x99,0xbb,0x64,0xbd,0xd1, - 0xea,0x11,0xf8,0x1b,0x8d,0x56,0x9b,0xc0,0x55,0xab,0x47,0xc1,0x54,0xab,0x16,0xa3, - 0x95,0xac,0x6d,0xf6,0xa3,0x95,0xfa,0x5b,0x8d,0xef,0x67,0xf0,0xbd,0xc3,0xf8,0x7e, - 0x16,0x5c,0x7d,0x3f,0x07,0xa6,0xbe,0xdb,0x8c,0x6f,0x59,0xdb,0x19,0x7a,0x25,0xfa, - 0xde,0x49,0x2f,0x55,0x06,0x4d,0x62,0x5d,0x72,0xf6,0x0f,0xe2,0x6b,0x17,0x78,0x2d, - 0x7b,0xa2,0xbc,0x36,0xf6,0xa4,0x30,0x9c,0xdf,0x18,0xb3,0x15,0xfb,0x9d,0xc4,0xed, - 0x34,0x71,0xc5,0xa6,0xc3,0x8f,0x4e,0xf8,0x1d,0x26,0xee,0x0b,0x26,0xee,0x32,0x7f, - 0x73,0xca,0x9d,0xfb,0x22,0xd8,0x06,0x73,0xb7,0xa4,0x42,0x7f,0xe5,0x85,0xf5,0x3d, - 0xf0,0xb2,0x23,0x37,0xe0,0x7b,0xe1,0xee,0x09,0xbe,0x06,0x84,0xbd,0x7a,0x09,0x3f, - 0x7b,0xb9,0xdf,0x72,0xb9,0xdf,0xd3,0xd4,0xa4,0x39,0x75,0x52,0x93,0x70,0xe6,0xba, - 0xc8,0x69,0x83,0xdf,0x81,0x6d,0x0b,0xb6,0x9b,0x4d,0xfe,0x4f,0xfc,0x43,0xfe,0x5b, - 0xff,0x27,0xff,0x6d,0xf0,0x74,0x74,0x92,0xff,0x76,0xb8,0xdb,0x4c,0xfe,0x4f,0xe3, - 0x67,0xfb,0xbf,0xe4,0xaf,0x39,0xb5,0x98,0xfc,0x33,0x2e,0xd6,0xd0,0x09,0x7f,0x73, - 0x88,0x13,0xef,0xf1,0x97,0x59,0xdf,0xed,0x3d,0xc9,0xfc,0x55,0xb0,0x1a,0x97,0xed, - 0xb3,0xd7,0xe8,0xb3,0x7d,0xa6,0xcf,0x5e,0x07,0xd7,0x3e,0x7b,0x03,0x4c,0xfb,0xec, - 0x80,0xd9,0x6f,0x59,0xdb,0x2f,0xbf,0x8d,0xc8,0x6d,0x3f,0x7a,0x49,0xde,0x6f,0x12, - 0x33,0x81,0x77,0x99,0xf7,0xeb,0xfe,0x5d,0x7c,0x7d,0x0f,0x47,0x9e,0x1f,0x13,0xeb, - 0x07,0x78,0x43,0xe0,0xfc,0x6a,0x62,0xc9,0xda,0x45,0x3f,0x2e,0xc1,0xbb,0x14,0xfa, - 0x30,0xc6,0xfa,0x09,0x9e,0xfc,0x6e,0xdb,0x0d,0xf6,0x33,0xb8,0x7c,0x0b,0x07,0x7b, - 0xbd,0x04,0xfb,0x85,0x3d,0xba,0x8d,0xf5,0x51,0x68,0x7b,0x19,0x9f,0x17,0x0d,0xff, - 0x47,0x7c,0xca,0xb7,0xd3,0xda,0x48,0x4e,0x37,0xbd,0x97,0xab,0x60,0x57,0xf0,0x3d, - 0xcf,0x45,0xff,0x97,0xe0,0x5e,0xe4,0x6e,0x16,0xed,0xcb,0x5d,0x5c,0x57,0x3d,0x54, - 0xa3,0xb7,0xd1,0xc8,0x51,0x6f,0xae,0xfb,0xbb,0x46,0xd7,0x88,0x79,0xcd,0x68,0x74, - 0x1d,0x9e,0x6a,0x94,0xe3,0xb2,0x1a,0xc9,0xda,0x8d,0x90,0x5f,0xe4,0xdd,0x34,0x1a, - 0x39,0x17,0x79,0x56,0xa3,0x94,0x8b,0xb8,0xd5,0x28,0xed,0xb2,0x1a,0xc9,0xba,0x6a, - 0x24,0xb9,0x89,0xcf,0x1b,0x86,0xff,0x27,0xb9,0xa8,0x46,0x6a,0x23,0x39,0xa9,0x46, - 0x82,0xa9,0x46,0x0b,0x5c,0xf4,0x7f,0x13,0xee,0x0d,0xa3,0xd1,0x38,0x17,0xd7,0xcb, - 0x89,0xaf,0x1a,0xbd,0x8b,0x46,0x29,0xea,0x2d,0xe9,0xa7,0xd1,0x20,0x62,0xca,0x53, - 0x35,0x1a,0xe2,0x22,0x4f,0x35,0x1a,0x61,0x34,0x92,0xb5,0x42,0x3f,0x86,0xc2,0x93, - 0xa7,0x6a,0x34,0x0c,0x9e,0xd5,0xa8,0xd8,0x45,0xdc,0x6a,0x34,0xdc,0x68,0x54,0x6c, - 0x34,0x2a,0xc1,0x67,0xa1,0xcb,0xf2,0x8b,0xf0,0xa9,0x1a,0xa9,0xcd,0x08,0xa3,0x51, - 0x89,0xd1,0x68,0xa1,0x8b,0xfe,0x25,0xaf,0x22,0x72,0x55,0x8d,0x26,0xb8,0xb8,0x2e, - 0x5a,0xa5,0x88,0xa9,0x67,0xef,0x00,0xbd,0x28,0x76,0x8b,0xe8,0xb5,0x16,0x38,0x25, - 0xe6,0xcc,0x1f,0xe4,0xcc,0x77,0x99,0x33,0xff,0x1e,0xb8,0x9e,0xf9,0x43,0x60,0x7a, - 0xe6,0x8f,0x98,0x73,0x28,0x6b,0x87,0xfd,0x38,0x4a,0xdc,0xa3,0xe6,0xbb,0xf5,0x01, - 0xbe,0x8f,0x19,0xdf,0x1f,0x82,0xab,0xef,0x8f,0xc0,0xd4,0x77,0xb7,0xf1,0x2d,0x6b, - 0xc7,0xfd,0x38,0x81,0xef,0x13,0x49,0xf6,0x7b,0xfd,0x29,0xbe,0x4f,0x9a,0xef,0xf5, - 0x67,0xe0,0xa7,0xf9,0x9d,0xf4,0x39,0xd8,0x5a,0x13,0xef,0x14,0xf8,0x6a,0xe2,0x9d, - 0x31,0xf1,0x4e,0x05,0x6e,0x12,0x30,0x89,0x77,0xda,0xf4,0xe3,0x24,0x17,0x7f,0xb3, - 0x2f,0x32,0xbf,0xa7,0xd4,0xee,0x8c,0xd1,0xba,0xde,0x45,0x9b,0x13,0x70,0x4e,0x9b, - 0x7c,0xbe,0x24,0x9f,0x1a,0x93,0xcf,0x57,0xe0,0x9a,0x4f,0x8f,0xc9,0x47,0xd6,0xce, - 0xfa,0xd1,0x43,0x9c,0xb3,0x26,0x9f,0x29,0xe4,0x53,0x6f,0xf6,0x5e,0xed,0x7a,0x4c, - 0x3e,0x0d,0x2e,0xda,0x9c,0x81,0x73,0xd6,0xe4,0xf3,0x35,0xf9,0x74,0x99,0x7c,0xbe, - 0x01,0xd7,0x7c,0x7a,0x4d,0x3e,0xb2,0x76,0xce,0x8f,0x5e,0xe2,0x9c,0x33,0xf9,0x4c, - 0x73,0xf1,0xdf,0x30,0x12,0x4f,0xbf,0x51,0x6a,0xd7,0x6b,0xf2,0xb9,0xc7,0x45,0x9b, - 0x1e,0x38,0xe7,0xb0,0xed,0xc6,0xf6,0xb8,0x39,0xeb,0x9f,0xa0,0x77,0xda,0xc4,0x99, - 0xe8,0xb2,0x78,0xd2,0x8f,0xdb,0x6d,0xe2,0xdc,0xed,0x62,0xac,0x5e,0x38,0xc7,0xb1, - 0x3d,0x82,0xed,0x61,0xbe,0xb5,0x62,0xfb,0x3e,0xfe,0x64,0xe8,0xff,0xcb,0xa4,0xcc, - 0xb7,0x56,0x39,0x47,0x8c,0xff,0x46,0x17,0x63,0x74,0xc3,0x17,0x7f,0x73,0x3d,0xe3, - 0x02,0x6b,0x7f,0xf8,0x2e,0x99,0xe5,0xc7,0x5f,0xf4,0x21,0xca,0x4a,0x48,0x12,0x00, - 0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xdb,0x6f,0x55,0x45, + 0x14,0xc6,0x67,0xce,0x39,0x6d,0xb9,0x16,0xb0,0xad,0x0a,0x69,0xa4,0xe5,0x26,0x5a, + 0x28,0xb7,0x72,0xb3,0x1c,0xa0,0x16,0x69,0x8d,0x08,0xd2,0x86,0x04,0x11,0x95,0x2a, + 0xa2,0x40,0xe0,0x05,0x5f,0x48,0x90,0x8b,0x42,0x20,0x82,0x48,0x23,0xda,0xc6,0x08, + 0xd1,0xc8,0x03,0x88,0xf4,0x45,0x50,0x68,0x34,0x04,0x8d,0x40,0xa2,0x34,0x51,0x2a, + 0xfc,0x05,0x46,0x22,0xf1,0xc2,0x03,0xe1,0xa2,0x0d,0xce,0x9a,0xfd,0x5b,0x3d,0xcb, + 0x13,0xb1,0xc9,0x64,0xf6,0x7c,0xeb,0xfe,0xcd,0x5a,0xfb,0xec,0xa6,0x53,0x23,0x8b, + 0x9c,0xf3,0xae,0x9f,0xeb,0xe3,0xe6,0x79,0x17,0xff,0x86,0xb8,0x94,0x93,0xc7,0xfe, + 0xae,0x30,0xee,0x0d,0x0b,0x9a,0x17,0x54,0x6f,0x78,0x75,0x65,0x75,0xcd,0xd4,0x89, + 0x22,0x2f,0x76,0xe9,0xa8,0x27,0xb2,0x41,0xae,0xc8,0x65,0xc2,0x2e,0x6b,0x5d,0xcb, + 0xea,0xf5,0x82,0x8f,0x09,0xeb,0x72,0x58,0x83,0x83,0x9e,0xe0,0x45,0xe2,0x23,0x3c, + 0x8d,0x89,0x3e,0xc5,0xc6,0xb9,0x46,0x57,0xe0,0xc6,0x25,0xe1,0xdc,0x48,0x76,0xc5, + 0x3c,0x58,0x1f,0x83,0xa5,0xc0,0x06,0x1b,0x2c,0x0d,0x56,0x6a,0xb0,0x0c,0xd8,0xfd, + 0x06,0x2b,0x00,0x2b,0x37,0x58,0x21,0x58,0x85,0xc1,0x8a,0xc0,0x46,0x19,0xac,0x0f, + 0xd8,0x58,0x83,0xf5,0x05,0x1b,0x67,0xb0,0x7e,0x60,0x13,0x0d,0xd6,0x1f,0xac,0xc6, + 0x60,0x03,0xc0,0x66,0x18,0x6c,0x20,0xd8,0xac,0xc8,0x53,0xba,0xb7,0x5e,0xe1,0x6c, + 0x59,0xd8,0x47,0xc0,0x8f,0x9e,0x2b,0xcd,0x59,0x78,0x7e,0x80,0x73,0x49,0xb0,0x4a, + 0x45,0x79,0x3a,0x72,0x23,0xcf,0xf7,0x86,0xa7,0x42,0xea,0xac,0x0a,0xfa,0x85,0xc4, + 0x2b,0xaf,0x7e,0xb2,0xb6,0x34,0x68,0x14,0x1b,0xbc,0x24,0xac,0xa6,0x93,0x0b,0xeb, + 0xf4,0x2c,0x1c,0x2e,0x59,0xf2,0xd3,0x6c,0x3d,0x0f,0x0b,0x2b,0xdb,0x6f,0xe7,0x1c, + 0x3d,0x0b,0x9f,0x1d,0x0d,0x2d,0xd9,0xb2,0x70,0xae,0x20,0x86,0xdc,0xdd,0x7d,0xe1, + 0x5c,0xc9,0x39,0xc5,0x79,0x14,0x9c,0x67,0x22,0x9e,0x71,0xa3,0xd1,0x15,0xbc,0x96, + 0xf3,0x18,0x63,0xff,0x20,0xfa,0x62,0x2f,0xfe,0xab,0xf0,0xe7,0x62,0xbd,0x83,0x23, + 0x47,0x95,0xac,0x8a,0xde,0xfa,0xfe,0x7f,0x55,0xf4,0xee,0x19,0x37,0x9e,0x7b,0x1c, + 0x47,0x7c,0x39,0x57,0x83,0x55,0x51,0xcf,0x04,0xf2,0x11,0xfd,0x89,0xc8,0x2a,0x8d, + 0x7c,0x9a,0xa9,0x67,0x7a,0xaf,0x6d,0x22,0x97,0xfd,0x11,0xf2,0x55,0xfd,0x7a,0x7a, + 0x51,0xe5,0x8f,0xe3,0x5f,0xe5,0x0b,0xb9,0x9b,0xa1,0xc1,0xd3,0x52,0xea,0x67,0x24, + 0x7b,0xff,0xf4,0x2c,0x31,0x9f,0xe6,0x79,0x29,0x35,0xc8,0x79,0x59,0x5e,0xcc,0xe5, + 0x79,0xe7,0x16,0x38,0x15,0xfb,0x17,0xc8,0xb9,0xc2,0xc8,0x57,0xd1,0xcb,0x7a,0xde, + 0x44,0x1e,0x72,0x27,0x3b,0x78,0x4e,0x1b,0xf9,0x1e,0xe6,0x46,0x7b,0x62,0xbf,0x89, + 0x27,0xe7,0x8f,0xe2,0x69,0x4b,0xbd,0xd8,0x1f,0x82,0x9f,0x8c,0xb1,0x3f,0xc2,0x8c, + 0xe9,0xf9,0x44,0xde,0x1d,0x9c,0x61,0x66,0x24,0xdf,0x4b,0xc4,0x3e,0x44,0xbd,0x97, + 0x78,0xcf,0xa4,0xe3,0x5d,0x14,0xc4,0xba,0x32,0xc4,0x17,0xec,0x66,0x40,0x84,0xef, + 0x2c,0xfd,0x37,0x96,0x1e,0x5b,0x14,0x32,0x96,0xfe,0x7a,0x08,0x6c,0xac,0xe1,0x76, + 0x3d,0xbd,0xfb,0x30,0xf2,0xba,0xe0,0x41,0xee,0x7e,0x12,0xfd,0x31,0x01,0x7f,0xa2, + 0x33,0x19,0xfc,0xf5,0xa0,0x23,0xe7,0x29,0xd8,0x4d,0xc6,0x6e,0x3a,0x73,0x5e,0x4d, + 0xaf,0x64,0xb9,0xf7,0x99,0xe0,0x47,0x83,0x4e,0x71,0xac,0x25,0xc1,0xa4,0x5f,0x6e, + 0x84,0xcc,0xb3,0xe4,0x73,0x3b,0xe8,0xd7,0xf2,0x5e,0xc8,0x52,0x8f,0x3c,0x2f,0x0e, + 0x76,0xc2,0xcd,0x5c,0x62,0xca,0xdf,0x66,0xf8,0xaa,0x03,0x6f,0x0a,0xec,0x4b,0x4e, + 0x43,0x7d,0x82,0xa9,0xde,0xad,0xe0,0x43,0x7d,0xc9,0x7e,0x3d,0x70,0x11,0x6b,0xf1, + 0x89,0x4e,0x01,0x36,0xb3,0x4c,0x0d,0xf3,0xa8,0xa1,0xde,0xd4,0xf0,0x18,0xb8,0xd6, + 0x30,0x1f,0x4c,0x6b,0x68,0x34,0x35,0xcc,0x8f,0xef,0x2a,0x17,0x31,0x89,0xdb,0x60, + 0x6a,0x78,0x82,0xd8,0xde,0xd4,0xb0,0x00,0x5c,0x6b,0x28,0xf7,0x09,0xa6,0x7a,0x52, + 0x83,0xfa,0x6a,0x34,0x35,0x4c,0xf1,0x89,0x4e,0x16,0x9b,0x06,0x53,0xc3,0x22,0x6a, + 0x58,0x68,0x6a,0x78,0x0a,0x5c,0x6b,0x58,0x0c,0xa6,0x35,0x34,0x9b,0x1a,0x16,0xc7, + 0x7c,0x5c,0xc4,0x24,0x6e,0x13,0x7d,0x24,0x71,0x97,0x10,0x7b,0x8a,0xcf,0xcd,0xa7, + 0xe4,0xa8,0xba,0xcd,0x26,0xc7,0x1a,0xf4,0x1a,0xb1,0x6b,0x22,0x1f,0x99,0xe1,0x67, + 0x98,0x5f,0xed,0xb9,0x67,0xc9,0x79,0xb9,0xe9,0xb9,0xe7,0xc0,0xb7,0xd2,0x73,0x2b, + 0xc0,0x6a,0x7c,0x62,0x27,0x33,0xfd,0x22,0x76,0x2d,0xd8,0x09,0xa7,0x2b,0xc1,0x9f, + 0x0f,0x79,0xc8,0x2c,0xbc,0x44,0xbc,0x15,0xbc,0x0f,0x56,0x1a,0xae,0x5e,0xc6,0x7e, + 0x95,0xe1,0xea,0x15,0x70,0xe5,0x6a,0x35,0x98,0x72,0xb5,0xd6,0x70,0x25,0xb2,0x35, + 0x61,0xad,0xa5,0xfe,0x35,0xdc,0x77,0x61,0x9c,0xaf,0x24,0xb6,0xc3,0xee,0x1a,0xcf, + 0x7f,0x85,0x67,0xf1,0xf5,0x33,0x36,0xb2,0x7f,0x49,0xac,0x5f,0xb0,0x1b,0x88,0xcd, + 0x9f,0x26,0x96,0xc8,0xae,0x84,0x75,0x15,0xbb,0xab,0xf1,0x7d,0x51,0x14,0x63,0xfd, + 0xc6,0x4c,0x0f,0xc3,0x5e,0x7e,0xcf,0x76,0x90,0xc7,0xef,0xc8,0x45,0xf6,0x06,0xd8, + 0x1f,0xe0,0xe5,0xdc,0xdf,0x35,0x7c,0x5e,0x31,0x76,0xbf,0xe2,0xab,0x24,0x4f,0x47, + 0x72,0xba,0x13,0xa2,0xdd,0x04,0xbb,0x4e,0x0e,0x53,0x7d,0xe2,0xf7,0x2a,0xb6,0x57, + 0xe8,0x6b,0xb9,0x83,0xe1,0x3e,0x91,0x2b,0x1f,0xca,0xd1,0x06,0x38,0xf2,0xd4,0x9b, + 0xf6,0xff,0xe6,0xe8,0x06,0x31,0x6f,0x18,0x8e,0x6e,0x61,0xa7,0x1c,0xa5,0x7c,0x8e, + 0xa3,0x5b,0x71,0x77,0xae,0x07,0xbb,0x1e,0xc3,0xd1,0x1d,0xc3,0xd1,0x86,0x3c,0x8e, + 0x44,0x70,0x27,0x8f,0x23,0xef,0x13,0x5c,0x39,0x92,0xdc,0xc4,0xe7,0x6d,0x63,0xf7, + 0x37,0xbe,0x4a,0xf2,0x74,0x52,0x3e,0xc7,0x91,0x60,0xca,0xd1,0x74,0x9f,0xf8,0xed, + 0xc1,0xf6,0xb6,0xe1,0x68,0x84,0x4f,0xe4,0xc3,0x99,0x2d,0xe5,0x68,0x23,0x1c,0xa5, + 0xa8,0xb7,0x2c,0x8f,0xa3,0xbe,0xc4,0x94,0x5d,0x39,0xea,0xef,0x13,0x3b,0xe5,0xa8, + 0xd4,0x70,0x24,0xb2,0x01,0x61,0x0d,0xc2,0x4e,0x76,0xe5,0x68,0x88,0xcf,0x71,0xb4, + 0x31,0x8f,0xa3,0x7b,0x7c,0x22,0xb7,0x1c,0x95,0xf8,0x04,0x57,0x8e,0xca,0xf0,0x29, + 0xfe,0xd5,0xae,0x98,0x5c,0x4a,0xf2,0x74,0x4a,0x0d,0x47,0x65,0x86,0xa3,0x99,0x3e, + 0xf1,0x2b,0x79,0x15,0x93,0xab,0x72,0x34,0xda,0x27,0x72,0xe1,0x2a,0x85,0x3f,0x9d, + 0xbd,0xb5,0xf4,0x62,0xfc,0xce,0xa2,0xd7,0x9a,0xb1,0x29,0xf3,0xb9,0x99,0x7f,0x8d, + 0x99,0xdf,0x64,0x66,0x7e,0x33,0xb8,0xce,0xfc,0x16,0x30,0x9d,0xf9,0x6d,0x66,0x0e, + 0xb7,0xc4,0x77,0x92,0x73,0xbb,0x89,0xbb,0xdb,0xbc,0x4f,0xde,0xc2,0xf7,0x1e,0xe3, + 0x7b,0x2f,0xb8,0xfa,0x7e,0x1b,0x4c,0x7d,0xb7,0x1a,0xdf,0x22,0xdb,0x17,0x56,0x2b, + 0xbe,0xf7,0x99,0x3e,0x78,0x87,0xba,0xe4,0xf7,0xbe,0x13,0x5f,0xef,0x82,0xef,0x87, + 0x0b,0xb5,0x6b,0x85,0x0b,0xd1,0x79,0x8f,0x98,0xbb,0xd1,0xdf,0x47,0xdc,0x76,0x13, + 0x57,0x74,0xda,0xc2,0x6a,0xc7,0xbe,0xcd,0xc4,0x7d,0xdf,0xc4,0x5d,0x14,0xbe,0x60, + 0xe4,0xdb,0xe8,0x03,0xb0,0x5a,0x9f,0xfb,0x9e,0x48,0xc5,0xdf,0x94,0xc2,0x28,0x3f, + 0x80,0x9d,0xae,0x5d,0xc1,0x97,0xe0,0x07,0xb1,0x3d,0x10,0x7d,0xf5,0x8d,0x77,0xf5, + 0x21,0xbe,0x0e,0xf2,0x4d,0x53,0x60,0xbe,0xbd,0xa4,0x26,0xcd,0xa9,0xdd,0xdc,0xef, + 0x6c,0x62,0xb7,0x62,0xdf,0x86,0xee,0x36,0x74,0xb7,0x9a,0xfc,0xb7,0xff,0x47,0xfe, + 0x3b,0xef,0x92,0xff,0x5e,0xf2,0xdc,0x85,0xce,0x76,0x93,0xe7,0x9b,0xd8,0xec,0xba, + 0x4b,0x9e,0x1a,0x7b,0x9b,0xc9,0x33,0xeb,0x93,0x5c,0xdb,0xb1,0xdf,0x4a,0x0c,0x91, + 0x7d,0x8c,0x5c,0xbe,0x1b,0xd7,0xf1,0xcd,0x78,0x18,0x5c,0xfb,0xe9,0x13,0xfa,0xe9, + 0x88,0xe9,0xa7,0xa3,0xe0,0xda,0x4f,0x9f,0x82,0x69,0x3f,0x75,0x98,0x7b,0x15,0xd9, + 0xb1,0xb0,0x8e,0x93,0xdb,0x71,0xe3,0xfb,0x73,0x7c,0x9f,0x30,0xbe,0xbf,0x00,0x57, + 0xdf,0x27,0xc1,0xd4,0x77,0xa7,0xf1,0x2d,0xb2,0x53,0x61,0x9d,0xc6,0xf7,0x69,0x97, + 0xfb,0x5d,0xfe,0x1a,0xdf,0x67,0xcc,0xef,0xf2,0x37,0xe0,0xe7,0xf8,0x1e,0xfa,0x16, + 0xac,0xc5,0xc4,0x3b,0x0b,0xbe,0x9c,0x78,0xe7,0x4d,0xbc,0xb3,0xd1,0xd6,0x45,0x4c, + 0xe2,0x9d,0xe3,0xdd,0x29,0xbc,0x8d,0xf7,0x49,0x8e,0x87,0x5d,0xee,0xbb,0x49,0xf5, + 0xce,0x73,0x1f,0xa2,0x37,0xc7,0x27,0x3a,0xa7,0xb1,0x39,0x67,0xf2,0xf9,0x8e,0x7c, + 0xa6,0x99,0x7c,0xbe,0x07,0xd7,0x7c,0xba,0x4c,0x3e,0x22,0xbb,0x10,0x56,0x17,0x71, + 0x2e,0x98,0x7c,0x26,0x90,0xcf,0x1c,0xf3,0x9e,0x52,0xbd,0x2e,0x93,0xcf,0x5c,0x9f, + 0xe8,0x9c,0xc7,0xe6,0x82,0xc9,0xe7,0x07,0xf2,0x39,0x62,0xf2,0xf9,0x11,0x5c,0xf3, + 0xe9,0x36,0xf9,0x88,0xec,0x62,0x58,0xdd,0xc4,0xb9,0x68,0xf2,0x99,0xe4,0x93,0xff, + 0xc1,0xe6,0xfa,0x5c,0xbf,0xaa,0x5e,0xb7,0xc9,0xa7,0xde,0x27,0x3a,0x5d,0xd8,0x5c, + 0x44,0xb7,0x13,0xdd,0x53,0xcc,0x95,0xf4,0xca,0x57,0xf0,0x9d,0x36,0x71,0xaa,0x7c, + 0x0e,0x77,0x79,0xb6,0x9d,0x26,0xce,0xa3,0x3e,0x89,0xd5,0x8d,0xcd,0x29,0x74,0x3b, + 0xd0,0x3d,0xc6,0xdc,0x89,0xee,0x67,0xf8,0x3b,0xcc,0xdc,0x15,0x31,0xab,0xe9,0x3c, + 0x9b,0x0e,0xe3,0xbf,0xce,0x27,0x31,0x3a,0xb1,0x17,0x7f,0xb3,0x83,0xc5,0x65,0x64, + 0x3d,0xa1,0x4b,0x66,0x84,0xf5,0x0f,0xb7,0x23,0xca,0x37,0x14,0x12,0x00,0x00 }; // Generated from: @@ -119,8 +117,8 @@ constexpr uint8_t kImageCopy_frag_00000008[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture2D src; -// layout(location = 0)out vec4 dst; +// layout(set = 0, binding = 0)uniform texture2D src; +// layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -145,16 +143,16 @@ constexpr uint8_t kImageCopy_frag_00000008[] = { // bool rotateXY; // } params; // -// float sRGBToLinear(float sRGB) +// float linearToSRGB(float linear) // { // -// if(sRGB <= 0.04045) +// if(linear <= 0.0031308) // { -// return sRGB / 12.92; +// return linear * 12.92; // } // else // { -// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; // } // } // @@ -177,7 +175,15 @@ constexpr uint8_t kImageCopy_frag_00000008[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } // // if(params . premultiplyAlpha) // { @@ -188,17 +194,9 @@ constexpr uint8_t kImageCopy_frag_00000008[] = { // srcValue . rgb /= srcValue . a; // } // -// vec4 dstValue = vec4(srcValue); +// srcValue *= 255.0; // -// dstValue /= 255.0; -// -// if(params . dstIsSRGB) -// { -// -// dstValue . r = sRGBToLinear(dstValue . r); -// dstValue . g = sRGBToLinear(dstValue . g); -// dstValue . b = sRGBToLinear(dstValue . b); -// } +// uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc index 8e85dee6af221466e06c6abdea5fa59793164bbb..e29faf437928976fbb43e83d813a3069e81e9fa0 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc @@ -10,79 +10,108 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000009[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xed,0x4f,0xd5,0x65, - 0x18,0xc7,0xef,0x73,0x7e,0xe7,0x9c,0x1f,0x42,0x3c,0x08,0x28,0xe1,0xc2,0xf2,0x81, - 0xad,0x86,0xc1,0xd9,0x22,0x23,0x48,0x37,0x32,0x32,0x11,0x25,0x85,0x17,0xb5,0x74, - 0x42,0x09,0xcb,0x20,0x96,0xa6,0x2f,0x20,0x85,0x56,0x6a,0xc1,0x1a,0xb3,0x56,0xb0, - 0x19,0xbc,0x48,0x98,0xbe,0xa8,0xf5,0xaa,0xb5,0x56,0xba,0xd2,0x9e,0xfe,0xa2,0xd6, - 0xc3,0xd6,0xd6,0x75,0xdd,0xe7,0x73,0xb9,0xab,0xb3,0x9a,0x6c,0xf7,0x7e,0xe7,0xfe, - 0x5e,0x4f,0xdf,0xef,0x75,0x5f,0xf7,0xad,0x49,0x76,0x47,0x1a,0x42,0x26,0x54,0x86, - 0x8a,0xf0,0x4b,0x28,0xfd,0x6d,0x0c,0x59,0x41,0x42,0xa8,0x0a,0x85,0xf8,0xdd,0x3f, - 0x30,0x34,0xd0,0xfe,0xe6,0xd9,0x93,0xed,0x9d,0x8f,0x17,0xd5,0x5e,0x13,0x92,0xe8, - 0xa7,0xb6,0xda,0x90,0x86,0x9c,0x7c,0x75,0xbd,0x3e,0x7a,0x6a,0x4a,0xf1,0x6a,0x59, - 0x37,0x64,0xd5,0x89,0x9f,0xe2,0xa9,0xe6,0x90,0x5f,0xd5,0x31,0xa7,0xc6,0x84,0xf0, - 0x5c,0xc8,0x87,0x06,0xea,0xed,0xe0,0x6b,0x58,0x06,0xac,0xc2,0x61,0x59,0xb0,0x3a, - 0x87,0x25,0x60,0x8d,0x0e,0xcb,0x81,0xdd,0xef,0xb0,0x3c,0xd8,0x03,0x0e,0x2b,0x80, - 0x3d,0xe4,0xb0,0x14,0x6c,0xa7,0xc3,0x2a,0xc0,0x1e,0x76,0xd8,0x06,0xb0,0x5d,0x0e, - 0xab,0x04,0x2b,0x3a,0xac,0x0a,0xac,0xd3,0x61,0xf7,0x81,0x75,0x39,0xac,0x1a,0xec, - 0xa9,0xd8,0xa7,0xe4,0xae,0x5e,0xed,0xd9,0x3e,0xf9,0x6e,0xa7,0x3f,0xb6,0xdf,0xe6, - 0xf6,0xda,0xe7,0xad,0xec,0x1b,0x24,0x2a,0x1b,0xed,0x49,0xec,0x8d,0xfe,0xde,0x24, - 0x3e,0x05,0x74,0x6a,0x5f,0x9b,0x64,0x9f,0xa2,0x5f,0xed,0x9b,0xc5,0xb3,0x12,0xbb, - 0xda,0xaa,0xd0,0x92,0x8b,0x58,0x2e,0xf2,0xcd,0xa0,0xa5,0x87,0x7d,0xb5,0xcb,0x55, - 0x83,0xbf,0xd5,0xaa,0x27,0x57,0x88,0xbc,0xea,0xee,0xf6,0xd5,0x6a,0xea,0xaa,0xbf, - 0xc7,0x32,0x1f,0xad,0xdf,0x48,0xbf,0x1b,0xa8,0xdf,0x18,0xeb,0x94,0xb0,0x36,0xb4, - 0x6d,0x86,0x8f,0xfa,0x37,0x61,0x4b,0x9d,0xbd,0xc5,0xe9,0xd9,0x8a,0xbd,0x3e,0xce, - 0x4d,0x36,0xf6,0xb2,0x0d,0xde,0xd6,0x67,0x8b,0x6b,0x63,0x76,0x6c,0xbf,0x1b,0xed, - 0xaa,0x7b,0x2f,0x39,0x34,0x6f,0xb3,0x64,0xec,0x65,0x9f,0x09,0xff,0xfe,0xb3,0xbd, - 0xd6,0x7e,0x9a,0xdf,0xbd,0x68,0xd1,0xfd,0xbe,0xb2,0x9a,0x7d,0x65,0xfb,0x7e,0x7a, - 0xab,0xf1,0x07,0xe1,0x5e,0x70,0xf6,0x41,0xf6,0xca,0xe9,0x45,0x38,0x24,0xce,0x3e, - 0x4a,0x2f,0xd4,0x7e,0x0e,0xdf,0x9c,0xb3,0xcf,0x30,0xe3,0xb6,0xbf,0x54,0xd6,0xdb, - 0x2b,0xcc,0xac,0xd6,0xbf,0x4e,0xee,0x73,0xf0,0xbf,0xce,0x3d,0x4f,0x62,0x6f,0xf2, - 0x91,0x67,0x0e,0xfe,0x8a,0xfd,0x21,0x88,0xf6,0x6f,0x0f,0x73,0x55,0x4b,0xff,0x06, - 0x85,0x51,0x0d,0x77,0xb9,0x96,0x65,0xbd,0x9a,0x62,0x3e,0x37,0x62,0xef,0x95,0x0c, - 0x4d,0xdc,0xe7,0x4d,0x9c,0xf5,0x1e,0x7c,0x9a,0xc1,0xdf,0x11,0x1f,0xdd,0x6f,0x21, - 0xae,0x99,0x38,0x3d,0xeb,0x07,0x89,0x6b,0x21,0xce,0xe6,0x53,0xf1,0xcf,0xc5,0x67, - 0x9b,0x7b,0x07,0xf4,0xfc,0x7f,0x17,0xe6,0xad,0xf0,0xf9,0x4b,0xfc,0xed,0x3d,0x68, - 0x45,0x8f,0xfe,0x3e,0x22,0x71,0x05,0xde,0x84,0x2d,0xf8,0xce,0xd2,0xaf,0x47,0xc0, - 0x8f,0xca,0x2e,0x8d,0x35,0x4a,0x98,0xf9,0xfd,0x29,0x39,0x2c,0x97,0x7e,0x7f,0x13, - 0x2f,0xf5,0xfb,0x0e,0x9f,0x3c,0x31,0x3b,0x9d,0x86,0x5d,0x68,0x68,0x73,0x1a,0x1e, - 0x05,0x37,0x0d,0xed,0x60,0xa6,0xa1,0xe8,0x34,0xa8,0xad,0x83,0xb7,0x49,0xeb,0x76, - 0x38,0x0d,0x8f,0x51,0x3b,0xe3,0x34,0x74,0x82,0x9b,0x86,0x2f,0xc1,0xcc,0x4f,0x35, - 0x58,0xae,0xa2,0xd3,0x70,0x13,0x9f,0x56,0x62,0x3a,0x9c,0x86,0x27,0xd0,0xb0,0xdb, - 0x69,0xe8,0x02,0x37,0x0d,0x4f,0x82,0x99,0x86,0x1e,0xa7,0x41,0x6d,0xdd,0x71,0xee, - 0x4a,0x75,0xbb,0x99,0xa3,0x34,0xe6,0x2b,0xd5,0xbe,0xe9,0xee,0x9b,0x72,0x34,0xdf, - 0x1e,0xc7,0xf1,0x16,0x7e,0x45,0xe2,0xba,0xe1,0xa3,0x77,0xf2,0x19,0xee,0xa3,0xcd, - 0xdc,0xb3,0x70,0xee,0x73,0x33,0xb7,0x1f,0xfc,0x6d,0x66,0xee,0x00,0xd8,0x2d,0xe2, - 0xf4,0x8e,0x0e,0x10,0xd7,0x4f,0x9c,0xf6,0xf4,0x10,0xf8,0x09,0x89,0xd2,0xb7,0xe3, - 0x30,0xf5,0x0e,0x70,0xbf,0x0f,0xb9,0x5e,0x3d,0x4f,0xfc,0xa0,0xeb,0xd5,0x11,0x70, - 0xeb,0xd5,0x51,0x30,0xeb,0xd5,0xb0,0xeb,0x95,0xda,0x86,0x64,0x8d,0xa0,0x7f,0x88, - 0xf3,0xd6,0x3c,0x2f,0x50,0x3b,0x89,0xf9,0x2b,0xe2,0x9b,0xf1,0x12,0xd8,0x61,0x77, - 0x0f,0xb3,0xb1,0x5e,0x21,0xda,0x8f,0x11,0x67,0xeb,0xa2,0xe4,0x52,0xfc,0x38,0xb1, - 0xc7,0x62,0xae,0x0d,0x51,0xd7,0x09,0xf2,0x1c,0xe7,0x2d,0xc8,0xf3,0xe6,0x24,0x9c, - 0xc9,0x30,0x9c,0x46,0x9c,0xde,0x97,0xd1,0x3b,0xea,0xf4,0xbe,0x02,0x6e,0x7a,0x4f, - 0x82,0x99,0xde,0x71,0xa7,0x57,0x6d,0x63,0xb2,0xc6,0xc9,0x3d,0xe6,0xf4,0xbe,0xea, - 0xf4,0x7e,0x41,0xae,0x53,0xe0,0xdb,0xe1,0x64,0x71,0xe3,0xcc,0x89,0xfa,0xbc,0x46, - 0xcd,0x11,0xfc,0xc7,0xa8,0x3b,0xe9,0xea,0xaa,0xcf,0x84,0xac,0x49,0xe2,0x27,0x5c, - 0xdd,0xa9,0xff,0xe8,0xf3,0x1b,0xf7,0xe8,0xf3,0x69,0xe2,0x6c,0x5d,0xa6,0xcf,0x67, - 0x88,0x3d,0xed,0xfa,0x7c,0x96,0x3c,0x67,0xfe,0xa7,0xcf,0xc6,0x69,0x12,0x4d,0x1a, - 0xf3,0x03,0x31,0xe3,0xc4,0x4f,0x94,0x9d,0xc9,0xb0,0xf3,0xfd,0x9e,0xb3,0x1c,0x22, - 0x4e,0xf3,0x9c,0xe7,0xdf,0x90,0x69,0xec,0x76,0x7e,0x6f,0x71,0x7e,0x33,0xee,0xfc, - 0xce,0x83,0xdb,0xf9,0x5d,0x00,0xb3,0xf3,0x9b,0x73,0x7d,0xbc,0x10,0xdf,0x1e,0x9d, - 0xab,0x12,0x8f,0x59,0x74,0x6a,0xad,0x77,0xa9,0x37,0x8d,0xce,0x94,0x9e,0x99,0xce, - 0x39,0x62,0x2e,0x3a,0x3e,0x97,0xe1,0x73,0xc9,0xf1,0x79,0x0f,0xdc,0xf8,0xbc,0x0f, - 0x66,0x7c,0x16,0x1c,0x1f,0xb5,0xcd,0xcb,0x5a,0x24,0xf7,0xbc,0x7b,0x2f,0x3f,0x80, - 0x4b,0xc2,0xfb,0xa8,0x1c,0xbf,0x72,0xb8,0xbd,0x3d,0x0b,0xc4,0x2e,0xba,0x77,0xe1, - 0x43,0x78,0x5d,0x71,0xef,0xc2,0x47,0xe0,0xbf,0x92,0xff,0x63,0xb0,0x7e,0xc7,0xf5, - 0x13,0xf0,0x3e,0xb8,0x2e,0x3b,0xae,0x6a,0x5b,0x92,0xb5,0x4c,0xbd,0x25,0xc7,0xeb, - 0x6b,0x62,0xa6,0xdd,0xbb,0x6d,0x7e,0xcb,0x9c,0xb5,0xfa,0xdd,0xc6,0x67,0x91,0x98, - 0x25,0xc7,0xe7,0x2a,0x7c,0x5a,0x1c,0x9f,0x4f,0xc1,0x8d,0xcf,0xaa,0xe3,0xa3,0xb6, - 0x15,0x59,0xab,0xd4,0x59,0x71,0x7c,0xbe,0x21,0xe6,0x36,0x67,0xa8,0x7c,0xcc,0x6f, - 0xd5,0xf1,0xb9,0x83,0xcf,0x32,0x31,0x2b,0x8e,0xcf,0x67,0xf0,0x99,0x71,0x7c,0xae, - 0x81,0x1b,0x9f,0x75,0xc7,0x47,0x6d,0x6b,0xb2,0xd6,0xa9,0xb3,0xe6,0xf8,0x7c,0xcb, - 0xff,0x27,0xee,0xb8,0x79,0x32,0xbf,0x75,0xc7,0xe7,0x67,0x7c,0x56,0x89,0x59,0x2b, - 0x3b,0xe3,0x05,0xe7,0xfb,0x13,0xf3,0x30,0x4f,0xdc,0x7a,0xd9,0x9c,0xce,0x39,0xdf, - 0x1f,0x99,0xef,0x59,0xe2,0x34,0xcf,0x5e,0x61,0x72,0x03,0xdb,0xdf,0x72,0x6a,0x5d, - 0xb2,0xfe,0x01,0x8a,0xb7,0x70,0x53,0xa4,0x0d,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0x6b,0x6f,0x55,0x45, + 0x14,0x86,0xf7,0x9c,0x73,0x7a,0xa1,0x08,0x56,0x0b,0x08,0xa5,0x31,0xad,0x60,0x05, + 0xa9,0x05,0x11,0xb9,0x95,0x22,0xd7,0xb6,0x08,0x82,0xb4,0x21,0x41,0xc4,0x4b,0x15, + 0x85,0xca,0x45,0x41,0xfd,0xc2,0x07,0x25,0x22,0x96,0x04,0x03,0x11,0x54,0x1a,0x51, + 0x1a,0x23,0x44,0x62,0x13,0x41,0x85,0xc4,0x08,0x2a,0x4d,0x0c,0xa2,0x51,0x9a,0x28, + 0x4d,0x94,0x06,0x7e,0x01,0x91,0x48,0x44,0xaa,0x46,0x74,0xd6,0xcc,0xb3,0x7a,0x96, + 0x47,0xb1,0xc9,0x64,0xef,0x79,0xd7,0xfd,0x9d,0xb5,0xe6,0xec,0xa6,0x53,0x23,0x0a, + 0x92,0xc4,0x25,0x45,0x49,0x61,0x32,0xdf,0x25,0xe1,0xef,0xba,0x24,0x95,0xc8,0x6b, + 0xff,0x24,0x3f,0x3c,0xeb,0x17,0x34,0x2d,0xa8,0x7e,0xfa,0x99,0x15,0xd5,0x13,0xee, + 0x1c,0x27,0xf2,0x81,0x49,0x3a,0xe8,0x89,0xec,0xda,0xa4,0x20,0xc9,0xf8,0xa7,0xac, + 0xb5,0xcd,0x2d,0xeb,0x04,0xaf,0xf4,0xeb,0x9c,0x5f,0xc5,0x5e,0x4f,0xf0,0x02,0xf1, + 0xe1,0xdf,0x2a,0x83,0x4f,0xb1,0x49,0x92,0x86,0x24,0x2f,0xa9,0x8a,0xe1,0x92,0x11, + 0x3c,0x15,0x73,0x60,0x85,0x06,0x4b,0x81,0x15,0x1b,0x2c,0x0d,0x36,0xc8,0x60,0x19, + 0xb0,0xa1,0x06,0xcb,0x03,0x2b,0x33,0x58,0x3e,0x58,0xb9,0xc1,0x0a,0xc0,0x46,0x1a, + 0xac,0x10,0x6c,0x94,0xc1,0xfa,0x81,0x55,0x19,0xac,0x08,0x6c,0x9c,0xc1,0xfa,0x83, + 0x4d,0x30,0xd8,0x35,0x60,0x93,0x0d,0x36,0x00,0x6c,0x5a,0xe0,0x29,0xdd,0x57,0xaf, + 0x70,0xb6,0xcc,0x3f,0x6f,0x82,0x1f,0xdd,0x57,0x98,0xbd,0xf0,0x7c,0x23,0xfb,0x12, + 0x6f,0x95,0x0a,0xf2,0x74,0xe0,0x46,0xde,0x87,0xf8,0xb7,0x7c,0xea,0x1c,0xe3,0xf5, + 0xf3,0x89,0x57,0x56,0x7d,0x4f,0xcd,0x20,0xaf,0x31,0xd0,0xe0,0x25,0x7e,0x35,0x7e, + 0xbc,0x70,0xa6,0xee,0x85,0xc3,0x25,0x4b,0xba,0xa7,0xeb,0xbe,0xd4,0xaf,0xda,0xa2, + 0xd6,0xbb,0x74,0x2f,0x7c,0xbe,0x5f,0xdf,0x5c,0x3b,0xd8,0xef,0xcb,0x89,0x21,0x67, + 0x77,0x83,0xdf,0x57,0xb0,0x4f,0xb1,0x1f,0x09,0xe7,0x99,0x80,0x67,0x92,0x9b,0xd1, + 0x15,0xbc,0x86,0x7d,0xa5,0xb1,0xbf,0x05,0x7d,0xb1,0x17,0xff,0x63,0xf0,0x97,0x84, + 0x7a,0x8b,0x03,0x47,0x15,0xac,0xf2,0xbe,0xfa,0xfe,0x7f,0x95,0xf7,0x3d,0x33,0xc9, + 0x6d,0x9c,0x63,0x15,0xf1,0x65,0x5f,0x0d,0x36,0x86,0x7a,0xc6,0x92,0x8f,0xe8,0x8f, + 0x43,0x56,0x61,0xe4,0x13,0x4d,0x3d,0x93,0xfa,0x6c,0xa3,0x5c,0x9e,0x53,0xc9,0x57, + 0xf5,0x67,0xd3,0x8b,0x2a,0x9f,0x87,0x7f,0x95,0x2f,0xe4,0x6c,0x86,0x79,0x4f,0x4b, + 0xa9,0x9f,0x91,0xfc,0xd7,0x53,0x62,0xde,0xc7,0xfb,0x52,0x6a,0x90,0xfd,0xb2,0x9c, + 0x98,0xcb,0x73,0xf6,0xcd,0xcc,0x8d,0xd8,0x3f,0x42,0xce,0xe5,0x70,0xfe,0x18,0xef, + 0x69,0xa3,0xdf,0xc2,0x19,0xe8,0x7e,0x2d,0xbd,0xae,0xfb,0xcd,0xe4,0x29,0xf6,0x2f, + 0xf3,0x6e,0xed,0x77,0x31,0x57,0xda,0x33,0x7b,0x4c,0x3e,0xb2,0x3f,0x10,0x76,0xcf, + 0xcf,0x16,0xfb,0x0e,0xf8,0xcb,0x18,0xfb,0x43,0xcc,0xa0,0xee,0x8f,0xe5,0x9c,0xd1, + 0x49,0x66,0x4a,0xea,0x39,0x4b,0xec,0x0e,0xf8,0x38,0xcb,0x3d,0x94,0x0e,0x67,0x95, + 0x17,0xea,0xc8,0x10,0x5f,0xb0,0x5e,0x8f,0xc8,0x79,0xd4,0xd2,0x9f,0xa3,0xe8,0xc1, + 0x45,0x3e,0x63,0xe9,0xbf,0xd1,0x60,0xa3,0x0c,0xf7,0xeb,0xe8,0xed,0x5b,0x91,0xcf, + 0xf4,0x1e,0xa4,0x37,0x6e,0xa7,0x7f,0xc6,0xe2,0x4f,0x74,0xc6,0x83,0xbf,0xe0,0x75, + 0x64,0x7f,0x07,0x76,0xe3,0xb1,0x9b,0xc4,0x3d,0x50,0x4d,0x2f,0xd5,0xd2,0x17,0x53, + 0xc0,0x3b,0xbc,0xce,0xc0,0x50,0x4b,0xc4,0xa4,0x9f,0x2e,0xfb,0xcc,0x6b,0xc9,0xe7, + 0x77,0xaf,0x5f,0xc3,0xbd,0x51,0x4b,0x3d,0xf2,0xbe,0xd8,0xdb,0x09,0x37,0x33,0x88, + 0x29,0x7f,0xcf,0xc1,0xd7,0x4c,0xf0,0x46,0xcf,0x7e,0x98,0x1d,0x17,0x31,0xd5,0xfb, + 0xcd,0xfb,0x50,0x5f,0xf2,0xbc,0xe4,0xb9,0x10,0xbd,0x29,0x2e,0xea,0xe4,0x61,0x33, + 0xcd,0xd4,0x30,0x87,0x1a,0x66,0x9b,0x1a,0xe6,0x82,0x6b,0x0d,0x75,0x60,0x5a,0x43, + 0x83,0xa9,0xa1,0x2e,0xdc,0x65,0x49,0xc0,0x24,0x6e,0xbd,0xa9,0x61,0x3e,0xb1,0x9d, + 0xa9,0x61,0x01,0xb8,0xd6,0x30,0xc2,0x45,0x4c,0xf5,0xa4,0x06,0xf5,0xd5,0x60,0x6a, + 0x98,0xea,0xa2,0x4e,0x2d,0x36,0xf5,0xa6,0x86,0x45,0xd4,0xb0,0xd0,0xd4,0x70,0x2f, + 0xb8,0xd6,0xb0,0x18,0x4c,0x6b,0x68,0x32,0x35,0x2c,0x0e,0xf9,0x24,0x01,0x93,0xb8, + 0x8d,0xf4,0x91,0xc4,0x5d,0x42,0xec,0xa9,0x2e,0x3b,0xbf,0x92,0xa3,0xea,0x36,0x99, + 0x1c,0x6b,0xd0,0x6b,0xc0,0xae,0x91,0x7c,0x64,0xc6,0xef,0x67,0xbe,0xb5,0xe7,0x1e, + 0x20,0xe7,0xe5,0xa6,0xe7,0x1e,0x04,0xdf,0x44,0xcf,0x3d,0x0c,0x56,0xe3,0xa2,0x9d, + 0xcc,0xfc,0xa3,0xd8,0x35,0x63,0x27,0x9c,0xae,0x00,0x57,0xde,0x1f,0xc7,0x36,0x31, + 0xd8,0x4a,0x30,0x17,0x78,0xc8,0x0f,0xf7,0xc5,0x2a,0x74,0x57,0xe2,0x43,0x63,0x3c, + 0x41,0x8c,0x16,0x13,0x63,0x35,0xf8,0x43,0xbe,0x56,0x99,0xb7,0x35,0xd4,0xb4,0x8a, + 0x3b,0x66,0xb5,0x39,0x8f,0x75,0xd8,0xaf,0x35,0xe7,0xf1,0x24,0xb8,0x9e,0xc7,0x53, + 0x60,0x7a,0x1e,0x1b,0xcc,0x79,0x88,0x6c,0xbd,0x5f,0x1b,0xe0,0x78,0x3d,0x75,0xc8, + 0x9d,0xf3,0x2c,0xb1,0x13,0xec,0x7a,0x79,0xff,0xc3,0xbf,0x8b,0xaf,0xf3,0xd8,0x9c, + 0x0f,0xf7,0x4d,0x8c,0xf5,0x13,0x76,0x03,0xb0,0xb9,0x6c,0x62,0x89,0xec,0x82,0x5f, + 0x17,0xb1,0xbb,0x18,0xee,0xa4,0x82,0x10,0xeb,0x17,0xf8,0x2a,0xc5,0x5e,0x7e,0x53, + 0xb7,0x90,0xc7,0x25,0xe4,0xa5,0xe1,0x1e,0x8d,0xd8,0xaf,0xe0,0x65,0xf4,0x48,0x2f, + 0x3e,0x2f,0x18,0xbb,0x9f,0xf1,0x55,0x92,0xa3,0x23,0x39,0xfd,0xe5,0xa3,0xf5,0x82, + 0x5d,0x22,0x87,0x69,0x2e,0xfa,0xbd,0x88,0xed,0x05,0x66,0x47,0xce,0xa0,0xd2,0x45, + 0xf9,0x1a,0x73,0xd6,0x62,0xb3,0x11,0x8e,0x1c,0xf5,0x16,0xb9,0x7f,0x72,0x74,0x85, + 0x98,0x57,0x0c,0x47,0xa2,0xbc,0xd1,0x70,0xd4,0xcf,0x65,0x39,0x12,0x99,0xf3,0x2b, + 0xe3,0xa2,0x9d,0x3c,0x95,0xa3,0x7c,0x97,0xe5,0x68,0x63,0x0e,0x47,0x05,0x2e,0xca, + 0x2d,0x47,0x85,0x2e,0xe2,0xca,0x51,0x11,0x3e,0xc5,0xbf,0xda,0xa5,0xc9,0xa5,0x24, + 0x47,0x47,0x72,0x52,0x8e,0x04,0x53,0x8e,0xa6,0xbb,0xe8,0x57,0xf2,0x4a,0x93,0xab, + 0x72,0x34,0xda,0x45,0x79,0x25,0x79,0x2a,0x47,0x9b,0xe0,0x28,0x45,0xbd,0x65,0x39, + 0x1c,0x15,0x13,0x53,0x9e,0xca,0xd1,0xf5,0x2e,0xda,0x29,0x47,0xc3,0x0d,0x47,0x22, + 0x2b,0xf1,0x6b,0x08,0x76,0x43,0x0c,0x47,0x43,0x0d,0x47,0x9b,0x72,0x38,0x1a,0xe6, + 0xa2,0xdc,0x72,0x54,0xea,0x22,0xae,0x1c,0x95,0xe1,0xb3,0xc4,0x70,0x34,0x98,0x5c, + 0x4a,0x72,0x74,0x86,0x1b,0x8e,0xca,0x0c,0x47,0x33,0x5c,0xf4,0x2b,0x79,0x0d,0x26, + 0x57,0xe5,0xa8,0xca,0x45,0xb9,0x70,0x95,0xc2,0x9f,0xce,0xde,0x06,0x7a,0x51,0xf4, + 0x66,0xd1,0x6b,0x4d,0xd8,0x94,0xb9,0xec,0xcc,0xbf,0xc8,0xcc,0x6f,0x36,0x33,0xbf, + 0x05,0x5c,0x67,0xfe,0x25,0x30,0x9d,0xf9,0xad,0x66,0x0e,0x45,0xd6,0xea,0xd7,0x4e, + 0xe2,0xee,0x34,0xf7,0xc9,0xab,0xf8,0xde,0x65,0x7c,0xbf,0x06,0xae,0xbe,0x5f,0x07, + 0x53,0xdf,0x6d,0xc6,0xb7,0xc8,0x76,0xfb,0xd5,0x86,0xef,0xdd,0xa6,0x0f,0xde,0xa0, + 0x2e,0xf9,0xa6,0xf8,0x04,0x5f,0x6f,0x82,0xef,0x81,0x0b,0xb5,0x6b,0x83,0x0b,0xd1, + 0x79,0x8b,0x98,0x3b,0xd1,0xdf,0x4d,0xdc,0x76,0x13,0x57,0x74,0xf6,0xfa,0xd5,0x8e, + 0xfd,0x5e,0x13,0xf7,0x6d,0x13,0x77,0x91,0xff,0x4a,0x92,0xef,0xaf,0x77,0xc0,0x66, + 0xb9,0xec,0x37,0x4b,0x8a,0xfb,0x5a,0xe4,0xfb,0xb0,0xd3,0xb5,0xd5,0xfb,0x12,0x7c, + 0x3f,0xb6,0xfb,0x82,0xaf,0x7e,0xe1,0xac,0xde,0xc5,0xd7,0x7e,0xbe,0x9b,0xf2,0xcc, + 0xf7,0x9d,0xd4,0xa4,0x39,0xb5,0x9b,0xf3,0x9d,0x4b,0xec,0x36,0xec,0xf7,0xa2,0xbb, + 0x15,0xdd,0x56,0x93,0xff,0xb6,0xff,0xc8,0x7f,0xfb,0x55,0xf2,0xdf,0x4e,0x9e,0x3b, + 0xd0,0xd9,0x66,0xf2,0x7c,0x05,0x9b,0x1d,0x57,0xc9,0x53,0x63,0x6f,0x35,0x79,0xce, + 0x71,0x31,0xd7,0x76,0xec,0x5b,0x89,0x21,0xb2,0xf7,0x90,0x1f,0x08,0xbf,0x3f,0xf1, + 0xbb,0xf4,0x20,0xb8,0xf6,0xd3,0x07,0xf4,0xd3,0x21,0xd3,0x4f,0x1f,0x82,0x6b,0x3f, + 0x7d,0x04,0xa6,0xfd,0x74,0xc4,0x9c,0xab,0xc8,0x0e,0xfb,0x75,0x94,0xdc,0x8e,0x1a, + 0xdf,0x9f,0xe2,0xfb,0x98,0xf1,0xfd,0x19,0xb8,0xfa,0xfe,0x1c,0x4c,0x7d,0x77,0x1a, + 0xdf,0x22,0x3b,0xee,0xd7,0x09,0x7c,0x9f,0x30,0xbf,0xcb,0x5f,0xe1,0xfb,0xa4,0xf9, + 0x5d,0xfe,0x1a,0xfc,0x4b,0x7e,0xe7,0xbf,0x01,0x6b,0x31,0xf1,0xbe,0x05,0x5f,0x4e, + 0xbc,0x2e,0x13,0x4f,0x64,0xa7,0xfc,0xea,0x22,0xde,0x29,0x7e,0x5f,0x84,0xb7,0x09, + 0x2e,0xe6,0x78,0x30,0xc9,0x7e,0x9b,0xa9,0x5e,0x17,0xe7,0x21,0x7a,0x75,0x2e,0xea, + 0x9c,0xc0,0xe6,0x94,0xc9,0xe7,0x3b,0xf2,0x99,0x68,0xf2,0xf9,0x1e,0x5c,0xf3,0xe9, + 0x36,0xf9,0x88,0xec,0xb4,0x5f,0xdd,0xc4,0x39,0x6d,0xf2,0x99,0x48,0x3e,0x75,0xe6, + 0x9e,0x52,0xbd,0x6e,0x93,0x4f,0xbd,0x8b,0x3a,0x5d,0xd8,0x9c,0x36,0xf9,0xfc,0x40, + 0x3e,0x87,0x4c,0x3e,0x3f,0x82,0x6b,0x3e,0x3d,0x26,0x1f,0x91,0x9d,0xf1,0xab,0x87, + 0x38,0x67,0x4c,0x3e,0x93,0x5d,0xfc,0x3f,0xb0,0xde,0x65,0xfb,0x55,0xf5,0x7a,0x4c, + 0x3e,0x77,0xbb,0xa8,0xd3,0x8d,0xcd,0x19,0x74,0x3b,0xd1,0x3d,0xce,0x5c,0x49,0xaf, + 0x7c,0x01,0xdf,0x69,0x13,0x67,0xbc,0xcb,0xe2,0x49,0x8e,0x6d,0xa7,0x89,0x33,0xcf, + 0xc5,0x58,0x3d,0xd8,0x1c,0x47,0xf7,0x08,0xba,0x87,0x99,0xbb,0x8e,0x70,0xd7,0x45, + 0x7f,0x07,0x99,0xbb,0x02,0x66,0x35,0x9d,0x63,0x73,0xc4,0xf8,0x6f,0x70,0x31,0x46, + 0x27,0xf6,0xe2,0x6f,0xba,0xb7,0x38,0x87,0xec,0x4f,0xdf,0x25,0x93,0xfd,0xfa,0x1b, + 0x41,0xa4,0x8e,0x49,0x98,0x12,0x00,0x00 }; // Generated from: @@ -91,8 +120,8 @@ constexpr uint8_t kImageCopy_frag_00000009[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture2D src; -// layout(location = 0)out ivec4 dst; +// layout(set = 0, binding = 0)uniform texture2DArray src; +// layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -117,6 +146,19 @@ constexpr uint8_t kImageCopy_frag_00000009[] = { // bool rotateXY; // } params; // +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -136,7 +178,15 @@ constexpr uint8_t kImageCopy_frag_00000009[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } // // if(params . premultiplyAlpha) // { @@ -147,7 +197,9 @@ constexpr uint8_t kImageCopy_frag_00000009[] = { // srcValue . rgb /= srcValue . a; // } // -// ivec4 dstValue = ivec4(srcValue); +// srcValue *= 255.0; +// +// uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc index 73fe0e5b44f338d0e3ce275bdfd5899ed5400519..98553068285c45ed25532db51f2d479f35c7898b 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc @@ -10,78 +10,108 @@ #pragma once constexpr uint8_t kImageCopy_frag_0000000A[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xff,0x4f,0xd5,0x55, - 0x18,0xc7,0x0f,0xf7,0x03,0xf7,0x22,0xc4,0x17,0x01,0x25,0x5c,0x58,0x7e,0x61,0xab, - 0x61,0x40,0x8b,0x8c,0x20,0xdd,0xc8,0xc8,0x24,0x94,0x14,0x7e,0xa8,0xa5,0x13,0x4a, - 0x58,0x06,0xb1,0x34,0x7f,0x24,0x85,0xd6,0xd4,0x0a,0xd6,0x98,0xb5,0x82,0xcd,0xe0, - 0x87,0x82,0x59,0xad,0xad,0x9f,0x5a,0x6b,0xa5,0x23,0xcd,0xfa,0x83,0x5a,0x5f,0xb6, - 0xb6,0xce,0x73,0x78,0x3d,0xee,0xdd,0x5d,0xcd,0xbb,0x9d,0xdd,0x7b,0xde,0xcf,0xb7, - 0xf7,0xfb,0x39,0xcf,0x39,0xbb,0x59,0x6e,0x57,0x21,0x84,0x92,0x50,0x11,0xca,0xc3, - 0xaf,0x61,0xe3,0xb3,0x39,0xe4,0x22,0x12,0x42,0x65,0xc8,0xa7,0xef,0x83,0x03,0x43, - 0x03,0x6d,0x6f,0x9e,0x3b,0xd5,0xd6,0xf9,0x58,0x87,0xd9,0xab,0x43,0x96,0xfc,0xcc, - 0x56,0x13,0x0a,0xa1,0x34,0x7e,0xdb,0x7a,0x7d,0xf4,0xf4,0x94,0xe1,0x55,0x71,0x7d, - 0x11,0x57,0x6d,0xf4,0x33,0xbc,0x60,0x39,0xe2,0xaf,0xaa,0x94,0xd3,0x62,0x42,0x78, - 0x36,0x94,0x85,0x7a,0xea,0xed,0xe2,0xdb,0xb1,0x12,0xb0,0x72,0xc1,0x72,0x60,0xb5, - 0x82,0x65,0x60,0x0d,0x82,0x95,0x82,0xdd,0x2b,0x58,0x19,0xd8,0x7d,0x82,0xe5,0xc1, - 0x1e,0x10,0xac,0x00,0xb6,0x5b,0xb0,0x72,0xb0,0x07,0x05,0xdb,0x04,0xb6,0x47,0xb0, - 0x0a,0xb0,0x0e,0xc1,0x2a,0xc1,0x3a,0x05,0xbb,0x07,0xac,0x4b,0xb0,0x2a,0xb0,0x27, - 0x53,0x9f,0xb2,0x3b,0x7a,0xad,0x67,0x07,0xe2,0xf7,0x4e,0xfa,0xe3,0xfb,0x1d,0xb2, - 0xb7,0x3e,0x6f,0x67,0x5f,0x1f,0xa3,0x72,0xc9,0x9e,0xa5,0xde,0xd8,0xef,0x2d,0xd1, - 0x27,0x8f,0x4e,0xeb,0x6b,0x63,0xdc,0x17,0xd0,0x6f,0xf6,0xad,0xd1,0xb3,0x02,0xbb, - 0xd9,0x2a,0xd1,0x52,0x9a,0xb0,0xd2,0xc4,0xb7,0x04,0x2d,0x3d,0xec,0xab,0x24,0x57, - 0x35,0xfe,0x5e,0xab,0x8e,0x5c,0x21,0xf1,0xaa,0xbd,0xd3,0x57,0xaf,0x69,0xab,0xee, - 0x2e,0xcb,0x7d,0xac,0x7e,0x03,0xfd,0xae,0xa7,0x7e,0x43,0xaa,0xb3,0x81,0xb5,0xa2, - 0x6d,0x2b,0x7c,0xcc,0xbf,0x11,0x5b,0x41,0xec,0xcd,0xa2,0x67,0x3b,0xf6,0xba,0x34, - 0x37,0xb9,0xd4,0xcb,0x56,0x78,0x7b,0x9f,0x3d,0xae,0x95,0xd9,0x71,0xfb,0x23,0xd4, - 0x71,0xfb,0x5e,0x7a,0x61,0x7d,0xd8,0x4f,0x4e,0xab,0xd3,0x14,0x2b,0xf4,0xb2,0x2f, - 0x09,0xff,0xfe,0xf8,0xde,0xb8,0x3c,0xc5,0xef,0x5e,0xb4,0xd9,0xfe,0x40,0x11,0x87, - 0xbe,0xa2,0x7d,0x3f,0xbd,0xb6,0xf8,0xe7,0xd0,0x92,0x17,0xfb,0x20,0x7b,0xe3,0xf4, - 0x22,0x1c,0x32,0xb1,0x8f,0x16,0xf5,0x66,0x9a,0x19,0xf7,0xfd,0xe5,0xa2,0xde,0x5e, - 0x61,0x66,0xad,0xde,0x35,0x72,0xed,0x87,0xef,0x35,0xee,0x79,0x96,0x7a,0x51,0x96, - 0x78,0x95,0xc2,0xd7,0xb0,0x3f,0x22,0x62,0xfd,0xdb,0xc7,0x5c,0xd5,0xd0,0xaf,0xc1, - 0xc8,0xa0,0x9a,0xbb,0x5c,0xc3,0xf2,0xde,0x4c,0x31,0x9f,0x9b,0xb1,0xf7,0xc6,0x0c, - 0x8d,0xdc,0xe7,0x2d,0x9c,0xf5,0x3e,0x7c,0x9a,0xc0,0xdf,0x8e,0x3e,0xb6,0xdf,0x46, - 0x5c,0x13,0x71,0x76,0xd6,0xf7,0x13,0xd7,0x4c,0x9c,0xcf,0xa7,0xe1,0x5f,0x46,0x9f, - 0x1d,0xf2,0x0e,0xd8,0xf9,0xff,0x1e,0x99,0xb7,0xc0,0xe7,0xaf,0xe8,0xef,0xef,0x41, - 0x0b,0x7a,0xec,0xf7,0xd1,0x18,0x97,0xe7,0x4d,0xd8,0x86,0xef,0x79,0xfa,0xf5,0x10, - 0xf8,0xb1,0xb8,0x33,0x4e,0x5f,0x83,0xb9,0xdf,0x9f,0x31,0x87,0xe7,0xb2,0xef,0xdf, - 0xa2,0x97,0xf9,0xfd,0x88,0x4f,0x19,0x31,0xbb,0x45,0xc3,0x1e,0x34,0xb4,0x8a,0x86, - 0x87,0xc1,0x5d,0x43,0x1b,0x98,0x6b,0xe8,0x10,0x0d,0x66,0x6b,0xe7,0x6d,0xb2,0xba, - 0xed,0xa2,0xe1,0x51,0x6a,0x97,0x88,0x86,0x4e,0x70,0xd7,0xf0,0x0d,0x98,0xfb,0x99, - 0x06,0xcf,0xd5,0x21,0x1a,0xae,0xe3,0xd3,0x42,0x4c,0xbb,0x68,0x78,0x1c,0x0d,0x7b, - 0x45,0x43,0x17,0xb8,0x6b,0x78,0x02,0xcc,0x35,0xf4,0x88,0x06,0xb3,0x75,0xa7,0xb9, - 0xdb,0xa8,0xdb,0xcd,0x1c,0x15,0x52,0xbe,0x8d,0xda,0xd7,0xe5,0x7e,0x19,0x47,0xf7, - 0xed,0x11,0x8e,0x37,0xf0,0xeb,0x20,0xae,0x1b,0x3e,0x76,0x07,0x9f,0xe6,0xfe,0xf9, - 0xcc,0x3d,0x03,0xe7,0x3e,0x99,0xb9,0x83,0xe0,0x33,0xcc,0xdc,0x21,0xb0,0x1b,0xc4, - 0xd9,0x9d,0x1c,0x20,0xae,0x9f,0x38,0xeb,0xe9,0x61,0xf0,0x93,0x31,0xca,0xee,0xcf, - 0x11,0xea,0x1d,0xe2,0x3e,0x1f,0x96,0x5e,0x3d,0x4f,0xfc,0xa0,0xf4,0xea,0x28,0xb8, - 0xf7,0xea,0x18,0x98,0xf7,0x6a,0x58,0x7a,0x65,0xb6,0xa1,0xb8,0x46,0xd0,0x3f,0xc4, - 0x79,0x5b,0x9e,0x17,0xa8,0x9d,0xa5,0xfc,0xe5,0xe9,0x8d,0x78,0x09,0xec,0x88,0xdc, - 0xc3,0x5c,0xaa,0x97,0x4f,0xf6,0xe3,0xc4,0xf9,0x7a,0x27,0xe6,0x32,0xfc,0x04,0xb1, - 0xc7,0x53,0xae,0x4d,0x49,0xd7,0x49,0xf2,0x9c,0xe0,0x2d,0x28,0xe3,0x3d,0xca,0x38, - 0x93,0x61,0x38,0x8d,0x88,0xde,0x97,0xd1,0x3b,0x2a,0x7a,0x5f,0x01,0x77,0xbd,0xa7, - 0xc0,0x5c,0xef,0xb8,0xe8,0x35,0xdb,0x58,0x5c,0xe3,0xe4,0x1e,0x13,0xbd,0xaf,0x8a, - 0xde,0xaf,0xc8,0x75,0x1a,0x7c,0x27,0x9c,0x3c,0x6e,0x9c,0x39,0x31,0x9f,0xd7,0xa8, - 0x39,0x82,0xff,0x18,0x75,0x27,0xa5,0xae,0xf9,0x4c,0xc4,0x35,0x49,0xfc,0x84,0xd4, - 0x9d,0xfa,0x8f,0x3e,0xbf,0x71,0x97,0x3e,0x9f,0x21,0xce,0xd7,0x45,0xfa,0x7c,0x96, - 0xd8,0x33,0xd2,0xe7,0x73,0xe4,0x39,0xfb,0x3f,0x7d,0x76,0x4e,0x93,0x68,0xb2,0x98, - 0x9f,0x88,0x19,0x27,0x7e,0xa2,0xe8,0x4c,0x86,0xc5,0x77,0x9d,0xb3,0x1c,0x22,0x6e, - 0x52,0xce,0xeb,0x2d,0xce,0x6b,0x5a,0xce,0xeb,0x3c,0xb8,0x9f,0xd7,0x05,0x30,0x3f, - 0xaf,0x59,0xe9,0xdb,0x85,0x74,0x7f,0x42,0xb8,0x44,0xdd,0x19,0xd1,0x75,0x91,0xda, - 0xeb,0xe8,0x2a,0xd0,0x23,0xd7,0x35,0x4b,0xcc,0x25,0xe1,0xf3,0x2e,0x7c,0x2e,0x0b, - 0x9f,0xf7,0xc0,0x9d,0xcf,0xfb,0x60,0xce,0x67,0x5e,0xf8,0x98,0x6d,0x2e,0xae,0x05, - 0x72,0xcf,0xc9,0x39,0x7e,0x00,0x97,0x8c,0xf7,0xd0,0x38,0x7e,0x2b,0xb8,0xbf,0x35, - 0xf3,0xc4,0x2e,0xc8,0x3b,0xf0,0x21,0xbc,0xae,0xc8,0x3b,0xf0,0x11,0xf8,0x6d,0xde, - 0xdf,0x8f,0xc1,0xfa,0x85,0xeb,0x27,0xe0,0x7d,0x70,0x5d,0x12,0xae,0x66,0x5b,0x8c, - 0x6b,0x89,0x7a,0x8b,0xc2,0xeb,0x3b,0xf4,0xad,0xcb,0x3b,0xed,0x7e,0x4b,0x72,0xb6, - 0x37,0xf1,0x59,0x20,0x66,0x51,0xf8,0x5c,0x85,0x4f,0xb3,0xf0,0xf9,0x14,0xdc,0xf9, - 0xac,0x08,0x1f,0xb3,0x2d,0xc7,0xb5,0x42,0x9d,0x65,0xe1,0xf3,0x3d,0x7c,0x6e,0x72, - 0x86,0xc6,0xc7,0xfd,0x56,0x84,0xcf,0x2d,0x7c,0x96,0x88,0x59,0x16,0x3e,0x9f,0xc1, - 0x67,0x5a,0xf8,0x7c,0x0e,0xee,0x7c,0xd6,0x84,0x8f,0xd9,0x56,0xe3,0x5a,0xa3,0xce, - 0xaa,0xf0,0xf9,0x81,0xff,0x70,0xb7,0x64,0x9e,0xdc,0x6f,0x4d,0xf8,0xfc,0x82,0xcf, - 0x0a,0x31,0xab,0x45,0x67,0x3c,0x2f,0xbe,0xb7,0x99,0x87,0x39,0xe2,0xd6,0x8a,0xe6, - 0x74,0x56,0x7c,0x7f,0x66,0xbe,0x67,0x88,0x9b,0x4f,0xff,0xa5,0xb2,0xf4,0x1f,0xca, - 0x6c,0x7f,0xc7,0x53,0xeb,0x8a,0xeb,0x1f,0x65,0xe9,0x96,0xe4,0x94,0x0d,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfd,0x6b,0x96,0x55, + 0x18,0xc7,0xef,0xf3,0x3c,0xcf,0x5e,0x9c,0x69,0xab,0xa9,0xe9,0x1c,0xb1,0xa5,0x2d, + 0xcd,0x35,0xcd,0xcc,0xb7,0x39,0xf3,0x75,0x9b,0x69,0x9a,0x1b,0x82,0x99,0xbd,0xac, + 0x2c,0x5d,0xbe,0x94,0x56,0xbf,0xf8,0x43,0x49,0x66,0x1b,0x18,0x49,0x5a,0x39,0xb2, + 0x1c,0x91,0x92,0x34,0x48,0x2b,0x85,0x48,0x2b,0x07,0x61,0x16,0xe5,0xa0,0x1c,0x94, + 0x43,0xff,0x02,0x49,0x92,0xcc,0x55,0x64,0x9d,0xeb,0x9c,0xcf,0xb5,0xe7,0xea,0x21, + 0x1b,0x1c,0xee,0xfb,0x7c,0xaf,0xf7,0xef,0xb9,0xae,0xf3,0xdc,0x4b,0xa7,0x46,0x15, + 0x24,0x89,0x4b,0x8a,0x92,0xc2,0x64,0xa1,0x4b,0xc2,0xdf,0x75,0x49,0x2a,0x91,0xd7, + 0x81,0x49,0x7e,0x78,0xd6,0x2f,0x6a,0x5a,0x54,0xfd,0xf4,0x33,0xab,0xaa,0x27,0xdd, + 0x39,0x41,0xe4,0x83,0x93,0x74,0xd0,0x13,0xd9,0xb5,0x49,0x41,0x92,0xf1,0x4f,0x59, + 0xeb,0x9b,0x5b,0x36,0x08,0x5e,0xe9,0xd7,0x39,0xbf,0x8a,0xbd,0x9e,0xe0,0x05,0xe2, + 0xc3,0xbf,0x55,0x06,0x9f,0x62,0x93,0x24,0x0d,0x49,0x5e,0x52,0x15,0xc3,0x25,0xa3, + 0x78,0x2a,0xe6,0xc0,0x0a,0x0d,0x96,0x02,0x2b,0x36,0x58,0x1a,0x6c,0x88,0xc1,0x32, + 0x60,0xc3,0x0d,0x96,0x07,0x56,0x66,0xb0,0x7c,0xb0,0x72,0x83,0x15,0x80,0x8d,0x36, + 0x58,0x21,0xd8,0x18,0x83,0x0d,0x00,0xab,0x32,0x58,0x11,0xd8,0x04,0x83,0x0d,0x04, + 0x9b,0x64,0xb0,0x6b,0xc0,0xa6,0x1a,0x6c,0x10,0xd8,0x8c,0xc0,0x53,0xba,0xbf,0x5e, + 0xe1,0x6c,0x85,0x7f,0xde,0x04,0x3f,0xba,0xaf,0x30,0x7b,0xe1,0xf9,0x46,0xf6,0x25, + 0xde,0x2a,0x15,0xe4,0xe9,0xc0,0x8d,0xbc,0x0f,0xf3,0x6f,0xf9,0xd4,0x39,0xce,0xeb, + 0xe7,0x13,0xaf,0xac,0xfa,0x9e,0x9a,0x21,0x5e,0x63,0xb0,0xc1,0x4b,0xfc,0x6a,0xfc, + 0x64,0xf1,0x6c,0xdd,0x0b,0x87,0xcb,0x96,0xf5,0xcc,0xd4,0x7d,0xa9,0x5f,0xb5,0x45, + 0xad,0x77,0xe9,0x5e,0xf8,0xfc,0xa0,0xbe,0xb9,0x76,0xa8,0xdf,0x97,0x13,0x43,0xce, + 0xee,0x06,0xbf,0xaf,0x60,0x9f,0x62,0x3f,0x1a,0xce,0x33,0x01,0xcf,0x24,0x37,0xa3, + 0x2b,0x78,0x0d,0xfb,0x4a,0x63,0x7f,0x0b,0xfa,0x62,0x2f,0xfe,0xc7,0xe1,0x2f,0x09, + 0xf5,0x16,0x07,0x8e,0x2a,0x58,0xe5,0xfd,0xf5,0xfd,0xff,0x2a,0xef,0x7f,0x66,0x92, + 0xdb,0x38,0xc7,0x2a,0xe2,0xcb,0xbe,0x1a,0x6c,0x1c,0xf5,0x8c,0x27,0x1f,0xd1,0x9f, + 0x80,0xac,0xc2,0xc8,0x27,0x9b,0x7a,0xa6,0xf4,0xdb,0x46,0xb9,0x3c,0xa7,0x93,0xaf, + 0xea,0xcf,0xa5,0x17,0x55,0xbe,0x00,0xff,0x2a,0x5f,0xcc,0xd9,0x8c,0xf0,0x9e,0x96, + 0x9b,0xfa,0xed,0x1f,0x23,0x1a,0x62,0xde,0xc7,0xfb,0x72,0x6a,0x90,0xfd,0x8a,0x9c, + 0x98,0x2b,0x73,0xf6,0xcd,0xcc,0x8d,0xd8,0x3f,0x42,0xce,0xe5,0x70,0xfe,0x18,0xef, + 0x69,0xa3,0xdf,0x42,0x0e,0xba,0x5f,0x4f,0xaf,0xeb,0x7e,0x2b,0x79,0x8a,0xfd,0xcb, + 0xbc,0x5b,0xfb,0x5d,0xcc,0x95,0xf6,0xcc,0x1e,0x93,0x8f,0xec,0x0f,0x84,0xdd,0xf3, + 0x73,0xc5,0xbe,0x13,0xfe,0x32,0xc6,0xfe,0x10,0x33,0xa8,0xfb,0x63,0x39,0x67,0x74, + 0x92,0x99,0x92,0x7a,0xce,0x12,0xbb,0x13,0x3e,0xce,0x72,0x0f,0xa5,0xc3,0x59,0xe5, + 0x85,0x3a,0x32,0xc4,0x17,0xac,0xcf,0x23,0x72,0x1e,0xb5,0xf4,0xe7,0x18,0x7a,0x70, + 0x89,0xcf,0x58,0xfa,0x6f,0x2c,0xd8,0x18,0xc3,0xfd,0x06,0x7a,0xfb,0x56,0xe4,0xb3, + 0xbd,0x07,0xe9,0x8d,0xdb,0xe9,0x9f,0xf1,0xf8,0x13,0x9d,0x89,0xe0,0x2f,0x78,0x1d, + 0xd9,0xdf,0x81,0xdd,0x44,0xec,0xa6,0x70,0x0f,0x54,0xd3,0x4b,0xb5,0xf4,0xc5,0x34, + 0xf0,0x4e,0xaf,0x33,0x38,0xd4,0x12,0x31,0xe9,0xa7,0xcb,0x3e,0xf3,0x5a,0xf2,0xf9, + 0xc3,0xeb,0xd7,0x70,0x6f,0xd4,0x52,0x8f,0xbc,0x2f,0xf5,0x76,0xc2,0xcd,0x2c,0x62, + 0xca,0xdf,0x73,0xf0,0x35,0x1b,0xbc,0xd1,0xb3,0x1f,0x66,0xc7,0x45,0x4c,0xf5,0x7e, + 0xf7,0x3e,0xd4,0x97,0x3c,0x2f,0x79,0x2e,0x44,0x6f,0x9a,0x8b,0x3a,0x79,0xd8,0xcc, + 0x30,0x35,0xcc,0xa3,0x86,0xb9,0xa6,0x86,0xf9,0xe0,0x5a,0x43,0x1d,0x98,0xd6,0xd0, + 0x60,0x6a,0xa8,0x0b,0x77,0x59,0x12,0x30,0x89,0x5b,0x6f,0x6a,0x58,0x48,0x6c,0x67, + 0x6a,0x58,0x04,0xae,0x35,0x8c,0x72,0x11,0x53,0x3d,0xa9,0x41,0x7d,0x35,0x98,0x1a, + 0xa6,0xbb,0xa8,0x53,0x8b,0x4d,0xbd,0xa9,0x61,0x09,0x35,0x2c,0x36,0x35,0xdc,0x0b, + 0xae,0x35,0x2c,0x05,0xd3,0x1a,0x9a,0x4c,0x0d,0x4b,0x43,0x3e,0x49,0xc0,0x24,0x6e, + 0x23,0x7d,0x24,0x71,0x97,0x11,0x7b,0xba,0xcb,0xce,0xaf,0xe4,0xa8,0xba,0x4d,0x26, + 0xc7,0x1a,0xf4,0x1a,0xb0,0x6b,0x24,0x1f,0x99,0xf1,0xfb,0x99,0x6f,0xed,0xb9,0x07, + 0xc8,0x79,0xa5,0xe9,0xb9,0x07,0xc1,0xb7,0xd0,0x73,0x0f,0x83,0xd5,0xb8,0x68,0x27, + 0x33,0xff,0x28,0x76,0xcd,0xd8,0x09,0xa7,0xab,0xc0,0x95,0xf7,0xc7,0xb1,0x4d,0x0c, + 0xb6,0x1a,0xcc,0x05,0x1e,0xf2,0xc3,0x7d,0xb1,0x06,0xdd,0xd5,0xf8,0xd0,0x18,0x4f, + 0x10,0xa3,0xc5,0xc4,0x58,0x0b,0xfe,0x90,0xaf,0x55,0xe6,0x6d,0x1d,0x35,0xad,0xe1, + 0x8e,0x59,0x6b,0xce,0x63,0x03,0xf6,0xeb,0xcd,0x79,0x3c,0x09,0xae,0xe7,0xf1,0x14, + 0x98,0x9e,0xc7,0x26,0x73,0x1e,0x22,0xdb,0xe8,0xd7,0x26,0x38,0xde,0x48,0x1d,0x72, + 0xe7,0x3c,0x4b,0xec,0x04,0xbb,0x3e,0xde,0xff,0xf4,0xef,0xe2,0xeb,0x3c,0x36,0xe7, + 0xc3,0x7d,0x13,0x63,0xfd,0x8c,0xdd,0x20,0x6c,0x2e,0x9b,0x58,0x22,0xbb,0xe0,0xd7, + 0x45,0xec,0x2e,0x86,0x3b,0xa9,0x20,0xc4,0xfa,0x15,0xbe,0x4a,0xb1,0x97,0xdf,0xd4, + 0x6d,0xe4,0x71,0x09,0x79,0x69,0xb8,0x47,0x23,0xf6,0x1b,0x78,0x19,0x3d,0xd2,0x87, + 0xcf,0x0b,0xc6,0xee,0x17,0x7c,0x95,0xe4,0xe8,0x48,0x4e,0x7f,0xfb,0x68,0x7d,0x60, + 0x97,0xc8,0x61,0x86,0x8b,0x7e,0x2f,0x62,0x7b,0x81,0xd9,0x91,0x33,0xa8,0x74,0x51, + 0xbe,0xce,0x9c,0xb5,0xd8,0x6c,0x86,0x23,0x47,0xbd,0x45,0xee,0xdf,0x1c,0x5d,0x21, + 0xe6,0x15,0xc3,0x91,0x28,0x6f,0x36,0x1c,0x0d,0x70,0x59,0x8e,0x44,0xe6,0xfc,0xca, + 0xb8,0x68,0x27,0x4f,0xe5,0x28,0xdf,0x65,0x39,0xda,0x9c,0xc3,0x51,0x81,0x8b,0x72, + 0xcb,0x51,0xa1,0x8b,0xb8,0x72,0x54,0x84,0x4f,0xf1,0xaf,0x76,0x69,0x72,0x29,0xc9, + 0xd1,0x91,0x9c,0x94,0x23,0xc1,0x94,0xa3,0x99,0x2e,0xfa,0x95,0xbc,0xd2,0xe4,0xaa, + 0x1c,0x8d,0x75,0x51,0x5e,0x49,0x9e,0xca,0xd1,0x16,0x38,0x4a,0x51,0x6f,0x59,0x0e, + 0x47,0xc5,0xc4,0x94,0xa7,0x72,0x74,0xbd,0x8b,0x76,0xca,0xd1,0x48,0xc3,0x91,0xc8, + 0x4a,0xfc,0x1a,0x86,0xdd,0x30,0xc3,0xd1,0x70,0xc3,0xd1,0x96,0x1c,0x8e,0x46,0xb8, + 0x28,0xb7,0x1c,0x95,0xba,0x88,0x2b,0x47,0x65,0xf8,0x2c,0x31,0x1c,0x0d,0x25,0x97, + 0x92,0x1c,0x9d,0x91,0x86,0xa3,0x32,0xc3,0xd1,0x2c,0x17,0xfd,0x4a,0x5e,0x43,0xc9, + 0x55,0x39,0xaa,0x72,0x51,0x2e,0x5c,0xa5,0xf0,0xa7,0xb3,0xb7,0x89,0x5e,0x14,0xbd, + 0x39,0xf4,0x5a,0x13,0x36,0x65,0x2e,0x3b,0xf3,0x2f,0x32,0xf3,0x5b,0xcd,0xcc,0x6f, + 0x03,0xd7,0x99,0x7f,0x09,0x4c,0x67,0xbe,0xcd,0xcc,0xa1,0xc8,0x5a,0xfd,0xda,0x49, + 0xdc,0x9d,0xe6,0x3e,0x79,0x0d,0xdf,0xbb,0x8c,0xef,0xd7,0xc1,0xd5,0xf7,0x1b,0x60, + 0xea,0xbb,0xdd,0xf8,0x16,0xd9,0x6e,0xbf,0xda,0xf1,0xbd,0xdb,0xf4,0xc1,0x9b,0xd4, + 0x25,0xdf,0x14,0x9f,0xe2,0xeb,0x2d,0xf0,0x3d,0x70,0xa1,0x76,0xed,0x70,0x21,0x3a, + 0x6f,0x13,0x73,0x27,0xfa,0xbb,0x89,0xdb,0x61,0xe2,0x8a,0xce,0x5e,0xbf,0x3a,0xb0, + 0xdf,0x6b,0xe2,0xbe,0x63,0xe2,0x2e,0xf1,0x5f,0x49,0xf2,0xfd,0xf5,0x2e,0xd8,0x1c, + 0x97,0xfd,0x66,0x49,0x71,0x5f,0x8b,0x7c,0x1f,0x76,0xba,0xda,0xbc,0x2f,0xc1,0xf7, + 0x63,0xbb,0x2f,0xf8,0x1a,0x10,0xce,0xea,0x3d,0x7c,0xed,0xe7,0xbb,0x29,0xcf,0x7c, + 0xdf,0x49,0x4d,0x9a,0x53,0x87,0x39,0xdf,0xf9,0xc4,0x6e,0xc7,0x7e,0x2f,0xba,0x6d, + 0xe8,0xb6,0x9a,0xfc,0xb7,0xff,0x47,0xfe,0xaf,0x5c,0x25,0xff,0x57,0xc8,0x73,0x07, + 0x3a,0xdb,0x4d,0x9e,0xaf,0x62,0xb3,0xe3,0x2a,0x79,0x6a,0xec,0x36,0x93,0xe7,0x3c, + 0x17,0x73,0xed,0xc0,0xbe,0x95,0x18,0x22,0x7b,0x1f,0xf9,0x81,0xf0,0xfb,0x13,0xbf, + 0x4b,0x0f,0x82,0x6b,0x3f,0x7d,0x48,0x3f,0x1d,0x32,0xfd,0xf4,0x11,0xb8,0xf6,0xd3, + 0xc7,0x60,0xda,0x4f,0x47,0xcc,0xb9,0x8a,0xec,0xb0,0x5f,0x47,0xc9,0xed,0xa8,0xf1, + 0xfd,0x19,0xbe,0x8f,0x19,0xdf,0x9f,0x83,0xab,0xef,0x2f,0xc0,0xd4,0x77,0x97,0xf1, + 0x2d,0xb2,0xe3,0x7e,0x9d,0xc0,0xf7,0x09,0xf3,0xbb,0xfc,0x35,0xbe,0x4f,0x9a,0xdf, + 0xe5,0x6f,0xc0,0xbf,0xe2,0x77,0xfe,0x5b,0xb0,0x16,0x13,0xef,0x3b,0xf0,0x95,0xc4, + 0xeb,0x36,0xf1,0x44,0x76,0xca,0xaf,0x6e,0xe2,0x9d,0xe2,0xf7,0x45,0x78,0x9b,0xe4, + 0x62,0x8e,0x07,0x93,0xec,0xb7,0x99,0xea,0x75,0x73,0x1e,0xa2,0x57,0xe7,0xa2,0xce, + 0x09,0x6c,0x4e,0x99,0x7c,0xbe,0x27,0x9f,0xc9,0x26,0x9f,0x1f,0xc0,0x35,0x9f,0x1e, + 0x93,0x8f,0xc8,0x4e,0xfb,0xd5,0x43,0x9c,0xd3,0x26,0x9f,0xc9,0xe4,0x53,0x67,0xee, + 0x29,0xd5,0xeb,0x31,0xf9,0xd4,0xbb,0xa8,0xd3,0x8d,0xcd,0x69,0x93,0xcf,0x8f,0xe4, + 0x73,0xc8,0xe4,0xf3,0x13,0xb8,0xe6,0xd3,0x6b,0xf2,0x11,0xd9,0x19,0xbf,0x7a,0x89, + 0x73,0xc6,0xe4,0x33,0xd5,0xc5,0xff,0x03,0xeb,0x5d,0xb6,0x5f,0x55,0xaf,0xd7,0xe4, + 0x73,0xb7,0x8b,0x3a,0x3d,0xd8,0x9c,0x41,0xb7,0x0b,0xdd,0xe3,0xcc,0x95,0xf4,0xca, + 0x97,0xf0,0x9d,0x36,0x71,0x26,0xba,0x2c,0x9e,0xe4,0xd8,0x76,0x99,0x38,0x0b,0x5c, + 0x8c,0xd5,0x8b,0xcd,0x71,0x74,0x8f,0xa0,0x7b,0x98,0xb9,0xeb,0x0c,0x77,0x5d,0xf4, + 0x77,0x90,0xb9,0x2b,0x60,0x56,0xd3,0x39,0x36,0x47,0x8c,0xff,0x06,0x17,0x63,0x74, + 0x61,0x2f,0xfe,0x66,0x7a,0x8b,0x73,0xc8,0xfe,0xf2,0x5d,0x32,0xd5,0xaf,0x7f,0x00, + 0x8c,0x93,0x3d,0xdd,0x98,0x12,0x00,0x00 }; // Generated from: @@ -90,7 +120,7 @@ constexpr uint8_t kImageCopy_frag_0000000A[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture2D src; +// layout(set = 0, binding = 0)uniform texture3D src; // layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { @@ -116,6 +146,19 @@ constexpr uint8_t kImageCopy_frag_0000000A[] = { // bool rotateXY; // } params; // +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -135,7 +178,15 @@ constexpr uint8_t kImageCopy_frag_0000000A[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); +// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } // // if(params . premultiplyAlpha) // { @@ -146,6 +197,8 @@ constexpr uint8_t kImageCopy_frag_0000000A[] = { // srcValue . rgb /= srcValue . a; // } // +// srcValue *= 255.0; +// // uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc new file mode 100644 index 0000000000000000000000000000000000000000..78ad1b5536170e01378e9bb3baeba255b86a0a7a --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc @@ -0,0 +1,232 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.0000000B.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_0000000B[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xff,0x6b,0xd5,0x55, + 0x18,0xc7,0x3f,0xe7,0xde,0xbb,0x2f,0x6e,0x69,0xca,0x96,0xa6,0x6e,0xb1,0xe5,0x72, + 0xe6,0x97,0x69,0x7e,0xd7,0x79,0x35,0x59,0xba,0x99,0xa6,0xb9,0x21,0x69,0x66,0x61, + 0x98,0x69,0xf9,0xa5,0x34,0xfa,0x45,0xa8,0x2c,0x4d,0x05,0x2b,0x49,0x2b,0x47,0x96, + 0x23,0x52,0x92,0x24,0xb4,0x52,0xa2,0xb4,0x72,0x10,0xc3,0xa2,0x14,0x6a,0x83,0x72, + 0xe8,0x5f,0x10,0x49,0x62,0x6a,0x11,0x76,0x9e,0x73,0x5e,0xcf,0xee,0xd3,0x25,0x1b, + 0x1c,0x3e,0xf7,0xbc,0x9f,0x6f,0xef,0xe7,0x7d,0x9e,0xf3,0xb9,0x77,0xe9,0xd4,0x90, + 0xa2,0x24,0x71,0x49,0x49,0x52,0x9c,0xcc,0x73,0x49,0xf8,0xeb,0x97,0xa4,0x12,0xc7, + 0x73,0xac,0x7f,0x96,0x26,0x85,0x61,0xdf,0x38,0xaf,0x65,0x5e,0xdd,0xc6,0x67,0x56, + 0xd4,0x8d,0x9f,0x30,0x46,0xfc,0xfa,0x24,0xe9,0xe0,0x2f,0xb6,0x9b,0x93,0xa2,0x24, + 0xe3,0x9f,0xb2,0xd6,0x2e,0x5f,0xbd,0x4e,0xf0,0xa1,0x7e,0x5d,0xf0,0xab,0xaf,0xf7, + 0x13,0xbc,0x48,0x72,0xf8,0x4f,0x43,0x43,0x4e,0x89,0x49,0x92,0xa6,0xa4,0x20,0x19, + 0x19,0xcb,0x26,0x43,0x78,0x2a,0xe6,0xc0,0x8a,0x0d,0x96,0x02,0xeb,0x6b,0xb0,0x34, + 0x58,0xb9,0xc1,0x32,0x60,0xb7,0x1a,0xac,0x00,0xac,0xc2,0x60,0x85,0x60,0x55,0x06, + 0x2b,0x02,0xab,0x31,0x58,0x31,0xd8,0x30,0x83,0xf5,0x02,0x1b,0x69,0xb0,0x12,0xb0, + 0x31,0x06,0x2b,0x05,0x1b,0x6f,0xb0,0x9b,0xc0,0x26,0x1b,0xac,0x37,0xd8,0xb4,0xa0, + 0x53,0xba,0xa7,0x5f,0xd1,0x6c,0xa9,0x7f,0xde,0x8e,0x3e,0xba,0xaf,0x36,0x7b,0xd1, + 0xf9,0x36,0xf6,0x65,0x3e,0x2a,0x15,0xec,0xe9,0xa0,0x8d,0x7c,0xee,0xef,0x3f,0x15, + 0xd2,0xe7,0x08,0xef,0x5f,0x48,0xbd,0x8a,0xba,0xfb,0xea,0xcb,0xbd,0x47,0x1f,0x83, + 0x97,0xf9,0xd5,0xfc,0xd9,0xfc,0x99,0xba,0x17,0x0d,0x17,0x2d,0xea,0x9c,0xae,0xfb, + 0x41,0x7e,0x65,0x4b,0xb6,0xcd,0xd0,0xbd,0xe8,0xf9,0x51,0xe3,0xf2,0xec,0x2d,0x7e, + 0x5f,0x45,0x0d,0x39,0xbb,0x01,0x7e,0x5f,0xcd,0x3e,0xc5,0xbe,0x06,0xcd,0x33,0x01, + 0xcf,0x24,0x77,0xe0,0x2b,0x78,0x3d,0xfb,0xa1,0x26,0xbe,0x16,0x7f,0x89,0x97,0xfc, + 0x23,0xc8,0x97,0x84,0x7e,0xfb,0x06,0x8d,0xaa,0x59,0x55,0x3d,0xfd,0xfd,0xff,0xaa, + 0xea,0x79,0x66,0x92,0x51,0x9c,0xe3,0x48,0xea,0xcb,0xbe,0x0e,0x6c,0x04,0xfd,0x8c, + 0x86,0x8f,0xf8,0x8f,0xc1,0x56,0x6d,0xec,0x13,0x4d,0x3f,0x93,0x7a,0x62,0xa3,0x5d, + 0x9e,0x53,0xe1,0xab,0xfe,0x0d,0xcc,0xa2,0xda,0xe7,0x90,0x5f,0xed,0xf3,0x39,0x9b, + 0x81,0x3e,0xd3,0x62,0xfa,0xe7,0x6a,0xf6,0xfc,0xe9,0x7e,0xb0,0x3f,0xd7,0x25,0xfe, + 0xb9,0x98,0xfa,0x0f,0x82,0x2f,0xa1,0x1f,0xd9,0x2f,0xcd,0xab,0xbf,0x2c,0x6f,0xbf, + 0x0a,0x7d,0x25,0x7e,0x35,0xfc,0xab,0x8c,0x7d,0x1d,0x73,0xad,0xfb,0x2d,0x70,0x92, + 0xf3,0x79,0x85,0xcf,0x69,0x63,0xdf,0xc3,0x1d,0xd2,0xf9,0xd8,0x67,0xea,0xc9,0xfe, + 0x50,0xd8,0x3d,0xdf,0x20,0xf1,0x87,0xd1,0x2a,0x63,0xe2,0x8f,0x72,0xdf,0x74,0x7f, + 0x32,0xef,0x3c,0x4e,0x73,0x7f,0x84,0xef,0x79,0x6a,0x1f,0xa6,0xdf,0xf3,0xbc,0x73, + 0xd2,0xe1,0x5c,0x0a,0x42,0x5f,0x19,0xea,0x0b,0x76,0xd5,0x23,0xa2,0x7d,0x96,0x59, + 0x1c,0xc6,0xbc,0x2d,0xf0,0x8c,0x65,0xd6,0xee,0x04,0x1b,0x66,0x74,0x5e,0xc7,0x1c, + 0x0f,0xc7,0x3e,0xd3,0x67,0x90,0x39,0xb8,0x8b,0x59,0x19,0x4d,0x3e,0xf1,0x19,0x0b, + 0xfe,0xa2,0xf7,0x91,0xfd,0x38,0xe2,0xc6,0x12,0x37,0x89,0x3b,0x5f,0xc7,0xdc,0x64, + 0x99,0x81,0x29,0xe0,0x1f,0x7a,0x9f,0x3e,0xa1,0x97,0x88,0xc9,0xec,0x5c,0xf1,0xcc, + 0xb3,0xf0,0xf9,0xd3,0xfb,0xd7,0xf3,0x8e,0xc8,0xd2,0x8f,0x7c,0x5e,0xe8,0xe3,0x44, + 0x9b,0xbb,0xa9,0x29,0x7f,0xcf,0xa1,0xd7,0x4c,0xf0,0x66,0xaf,0x7e,0xb8,0x2b,0x2e, + 0x62,0xea,0x77,0xcd,0xe7,0xd0,0x5c,0xf2,0xbc,0xec,0xb5,0x10,0xbf,0xa9,0x2e,0xfa, + 0x14,0x10,0x33,0xcd,0xf4,0x70,0x0f,0x3d,0x34,0x98,0x1e,0x66,0x81,0x6b,0x0f,0xb3, + 0xc1,0xb4,0x87,0x26,0xd3,0xc3,0xec,0xf0,0xde,0x4a,0x02,0x26,0x75,0x1b,0x4d,0x0f, + 0x73,0xa9,0xed,0x4c,0x0f,0xf3,0xc0,0xb5,0x87,0x1a,0x17,0x31,0xf5,0x93,0x1e,0x34, + 0x57,0x93,0xe9,0xa1,0xde,0x45,0x9f,0x2c,0x31,0x8d,0xa6,0x87,0x05,0xf4,0x30,0xdf, + 0xf4,0x70,0x3f,0xb8,0xf6,0xb0,0x10,0x4c,0x7b,0x68,0x31,0x3d,0x2c,0x0c,0x7c,0x92, + 0x80,0x49,0xdd,0x66,0xe6,0x48,0xea,0x2e,0xa2,0x76,0xbd,0xcb,0xdd,0x55,0xe1,0xa8, + 0xbe,0x2d,0x86,0xe3,0x34,0xfc,0x9a,0x88,0x6b,0x86,0x8f,0xdc,0xe1,0x87,0xb8,0xbf, + 0x3a,0x73,0x0f,0xc3,0x79,0x99,0x99,0xb9,0x47,0xc0,0x5f,0x60,0xe6,0x96,0x83,0x49, + 0xde,0xf5,0xbc,0x43,0x1f,0x05,0x5f,0xe1,0xf7,0x8b,0xc3,0x33,0xe6,0x7e,0x9c,0x98, + 0xc7,0xc0,0x24,0xaf,0xc6,0xac,0x04,0xdf,0xee,0x7d,0x6a,0x83,0x6f,0xcc,0xb3,0x12, + 0x3e,0xf2,0xae,0x78,0x02,0x3e,0xab,0xe0,0x23,0x67,0xf5,0x24,0xf8,0x7a,0xee,0xfb, + 0x1a,0xb0,0x07,0x7c,0xbf,0x72,0xe7,0xd6,0xf6,0xd4,0x8e,0xda,0xac,0x31,0x67,0xb2, + 0x9e,0x7c,0xeb,0xcc,0x99,0x3c,0x05,0xae,0x67,0xf2,0x34,0x98,0x9e,0xc9,0x46,0x73, + 0x26,0x62,0xdb,0xe0,0xd7,0x46,0x74,0xde,0xc0,0x5c,0x09,0x8f,0x67,0xa9,0x9d,0x10, + 0x77,0x8d,0xcf,0x7f,0xf9,0xcf,0x92,0xeb,0x57,0x62,0xe4,0x79,0x82,0x5a,0xbf,0x11, + 0xd7,0x9b,0x98,0xab,0xa6,0x96,0xd8,0x2e,0xfa,0x75,0x89,0xb8,0x4b,0xe1,0xbd,0x54, + 0x14,0x6a,0x5d,0xa6,0xb7,0x41,0xc4,0xcb,0x77,0xe8,0x56,0x78,0xfc,0x81,0x5d,0x6c, + 0x2f,0x81,0x5d,0x01,0xaf,0x60,0x4e,0xae,0x91,0xf3,0xa2,0x89,0xfb,0x9d,0x5c,0x65, + 0x79,0x3e,0xc2,0xe9,0xba,0xaf,0x76,0x15,0xec,0x32,0x1c,0xb2,0x2e,0xe6,0xbd,0x44, + 0xec,0x45,0xee,0x8f,0x9c,0x41,0xad,0x8b,0x76,0xd5,0x43,0x35,0xda,0x84,0x46,0x8e, + 0x7e,0x4b,0xdd,0xbf,0x35,0xba,0x4e,0xcd,0xeb,0x46,0x23,0xe7,0x62,0x9c,0x6a,0x54, + 0xe2,0x72,0x1a,0x89,0x2d,0xe5,0x57,0x81,0xe3,0xdd,0xeb,0x72,0x1a,0x15,0xb9,0x9c, + 0x46,0x9b,0xf2,0x34,0x2a,0x76,0xd1,0x6e,0x35,0xea,0xe5,0x22,0xae,0x1a,0x95,0x92, + 0x53,0xf2,0x6b,0x5c,0x06,0x2e,0x65,0x79,0x3e,0xc2,0x49,0x35,0x12,0x4c,0x35,0x9a, + 0xe1,0x62,0x5e,0xe1,0x95,0x81,0xab,0x6a,0x34,0xdc,0x45,0x7b,0x2d,0x3c,0x55,0xa3, + 0xcd,0x68,0x94,0xa2,0xdf,0xca,0x3c,0x8d,0xfa,0x51,0x53,0x9e,0xaa,0x51,0x99,0x8b, + 0x71,0xaa,0x51,0x85,0xd1,0x48,0x6c,0xe5,0x7e,0x0d,0x20,0x6e,0x80,0xd1,0x68,0xa0, + 0xd1,0x68,0x73,0x9e,0x46,0x83,0x5c,0xb4,0x5b,0x8d,0x06,0xbb,0x88,0xab,0x46,0x95, + 0xe4,0x2c,0x37,0x1a,0xf5,0x87,0x4b,0x59,0x9e,0x4f,0x85,0xd1,0xa8,0xd2,0x68,0x34, + 0xd3,0xc5,0xbc,0xc2,0xab,0x3f,0x5c,0x55,0xa3,0x51,0x2e,0xda,0x45,0xab,0x14,0xf9, + 0xf4,0xee,0x6d,0x64,0x16,0xc5,0xaf,0x81,0x59,0x6b,0x21,0xa6,0xd2,0xe5,0xee,0xfc, + 0x56,0xee,0xfc,0x16,0x73,0xe7,0x5f,0x06,0xd7,0x3b,0xbf,0x0d,0x4c,0xef,0xfc,0x0e, + 0x73,0x0f,0xb7,0x85,0x77,0x54,0x92,0xec,0xa6,0xee,0x6e,0xf3,0x3e,0x79,0x83,0xdc, + 0x7b,0x4c,0xee,0x37,0xc1,0x35,0xf7,0x5b,0x60,0x9a,0xbb,0xd5,0xe4,0x16,0xdb,0x5e, + 0xbf,0x5a,0xc9,0xbd,0xd7,0xcc,0xc1,0xdb,0xf4,0x25,0xbf,0x2b,0x3e,0x27,0xd7,0x3b, + 0xe0,0xfb,0xd0,0x42,0xe3,0x5a,0xd1,0x42,0x7c,0xde,0xa5,0xe6,0x6e,0xfc,0xf7,0x52, + 0xb7,0xcd,0xd4,0x15,0x9f,0xfd,0x7e,0xb5,0x11,0xbf,0xdf,0xd4,0x7d,0xcf,0xd4,0x5d, + 0xe0,0x7f,0x29,0xc9,0x6f,0xb0,0xf7,0xc1,0x1a,0x5c,0xee,0x77,0x4b,0x2a,0x7c,0x77, + 0x15,0x06,0xfb,0x01,0xe2,0x74,0xc9,0x3b,0x5d,0xf0,0x83,0xc4,0x1e,0x08,0xb9,0x7a, + 0x85,0xb3,0xfa,0x80,0x5c,0x07,0xf9,0xed,0x54,0x60,0x7e,0xe3,0x49,0x4f,0xca,0xa9, + 0xcd,0x9c,0xef,0x6c,0x6a,0xb7,0x12,0xbf,0x1f,0xdf,0x1d,0xf8,0x6e,0x37,0xfc,0x77, + 0xfe,0x07,0xff,0xd7,0x6e,0xc0,0xff,0x55,0x78,0xee,0xc2,0x67,0xa7,0xe1,0xf9,0x3a, + 0x31,0xbb,0x6e,0xc0,0x53,0x6b,0xef,0x30,0x3c,0x67,0xb9,0xc8,0xb5,0x8d,0xf8,0xed, + 0xd4,0xa8,0x09,0xf3,0x10,0xed,0x87,0xc2,0xfd,0x8e,0xbf,0x4d,0x8f,0x80,0xeb,0x3c, + 0x7d,0xcc,0x3c,0x1d,0x35,0xf3,0xf4,0x09,0xb8,0xce,0xd3,0xa7,0x60,0x3a,0x4f,0xc7, + 0xcd,0xb9,0x8a,0xed,0x58,0x78,0x77,0x46,0x6e,0x27,0x4c,0xee,0x2f,0xc9,0x7d,0xd2, + 0xe4,0xfe,0x0a,0x5c,0x73,0x7f,0x0d,0xa6,0xb9,0xdb,0x4d,0x6e,0xb1,0x9d,0xf2,0xab, + 0x83,0xdc,0x1d,0xe6,0x7b,0xfa,0x5b,0x72,0x9f,0x36,0xdf,0xd3,0xdf,0x81,0x77,0xf0, + 0xbb,0xeb,0x7b,0xb0,0x55,0xa6,0xde,0x0f,0xe0,0xcb,0xa8,0x77,0xd6,0xd4,0x13,0xdb, + 0x19,0xbf,0xce,0x52,0xef,0x0c,0xdf,0x2f,0xa2,0xdb,0x04,0x17,0x39,0x1e,0x49,0x72, + 0xbf,0xcf,0xd4,0xef,0x2c,0xe7,0x21,0x7e,0x8d,0x2e,0xfa,0x74,0x10,0x73,0xc6,0xf0, + 0xf9,0x11,0x3e,0x13,0x0d,0x9f,0x9f,0xc0,0x95,0x4f,0x97,0xe1,0x23,0xb6,0x4e,0xbf, + 0xba,0xa8,0xd3,0x69,0xf8,0x4c,0x82,0x4f,0xa3,0x79,0x4f,0xa9,0x5f,0x97,0xe1,0xd3, + 0xe4,0xa2,0xcf,0x59,0x62,0x3a,0x0d,0x9f,0x9f,0xe1,0x73,0xd4,0xf0,0xf9,0x05,0x5c, + 0xf9,0x74,0x1b,0x3e,0x62,0x3b,0xe7,0x57,0x37,0x75,0xce,0x19,0x3e,0x53,0x5c,0xfc, + 0xbf,0xaf,0xc9,0xe5,0xe6,0x55,0xfd,0xba,0x0d,0x9f,0xb9,0x2e,0xfa,0x74,0x11,0x73, + 0x0e,0xdf,0x76,0x7c,0x4f,0x71,0xaf,0x64,0x56,0xbe,0x41,0xef,0xb4,0xa9,0x33,0xce, + 0xe5,0xf0,0x24,0x2f,0xb6,0xdd,0xd4,0xb9,0xd7,0xc5,0x5a,0xdd,0xc4,0x9c,0xc2,0xf7, + 0x38,0xbe,0xc7,0xb8,0x77,0xe2,0xfb,0x05,0xf9,0x8e,0x70,0xef,0x8a,0xb8,0xab,0xe9, + 0xbc,0x98,0xe3,0x26,0xff,0x1c,0x17,0x6b,0xb4,0x13,0x2f,0xf9,0xa6,0xfb,0x88,0x0b, + 0xd8,0xfe,0xf6,0x53,0x32,0xd9,0xaf,0x7f,0x00,0xe4,0x04,0x71,0x2c,0x90,0x12,0x00, + 0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform sampler2D src; +// layout(location = 0)out uvec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// float linearToSRGB(float linear) +// { +// +// if(linear <= 0.0031308) +// { +// return linear * 12.92; +// } +// else +// { +// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// } +// } +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// vec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . srcIsSRGB) +// { +// +// srcValue . r = linearToSRGB(srcValue . r); +// srcValue . g = linearToSRGB(srcValue . g); +// srcValue . b = linearToSRGB(srcValue . b); +// } +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// srcValue *= 255.0; +// +// uvec4 dstValue = uvec4(srcValue); +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc index 96c49e05bdec4c44df7db938e77a4d72fbc1e629..f76eb6c472877518061e8cfb13d6d55316749b5d 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc @@ -10,127 +10,106 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000010[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x58,0x6b,0x4c,0x96,0x65, - 0x18,0x7e,0x9f,0xef,0xe3,0xe0,0xa9,0xd2,0x65,0x98,0x8a,0xa6,0x62,0x5b,0x4e,0x07, - 0x16,0x50,0x2a,0x71,0xf0,0x48,0x96,0x08,0x61,0x1e,0x90,0x2d,0x86,0x01,0xa9,0xa4, - 0x64,0x92,0x26,0x82,0xe2,0x69,0xba,0x36,0xdb,0x1a,0x1b,0x25,0x34,0x2a,0x0f,0x68, - 0x50,0x24,0xcc,0x29,0x92,0xf5,0xc3,0x4a,0xb6,0xfe,0xf4,0xa7,0x66,0xa5,0x3f,0xd2, - 0x0a,0xd7,0x9c,0xb5,0x12,0x27,0xd2,0x8c,0x9e,0xfb,0x7d,0xae,0xdb,0xef,0xda,0x5b, - 0x2e,0xb7,0x67,0xef,0xf7,0x5c,0xf7,0xe9,0xba,0xaf,0xe7,0xf0,0xbe,0x12,0x0e,0x25, - 0xc4,0x7a,0x9e,0xf1,0x86,0x78,0x83,0xbc,0xcf,0x8c,0xe7,0xff,0x1b,0xe1,0x85,0x3c, - 0xf9,0x39,0xd4,0x8b,0xf1,0x9f,0xd9,0x8b,0x96,0x2c,0x4a,0xdc,0x58,0x59,0x92,0x98, - 0x92,0x3a,0x5d,0xec,0xf7,0x7a,0x61,0xdf,0x4f,0x6c,0xf7,0x79,0xb1,0x5e,0x94,0x7d, - 0xca,0x58,0x57,0xbc,0x66,0xbd,0xe0,0x33,0x65,0x6e,0x8d,0xc3,0xad,0x9f,0xe0,0xb1, - 0x92,0xc3,0xfe,0x9a,0xe9,0xe7,0x94,0x18,0xcf,0x7b,0xca,0x8b,0xf6,0x32,0x5d,0x39, - 0x2f,0x01,0x4f,0xc5,0x0c,0xb0,0x41,0x84,0x85,0x80,0x0d,0x27,0x2c,0x0c,0x6c,0x24, - 0x61,0x51,0xc0,0x1e,0x24,0x2c,0x1a,0x58,0x3c,0x61,0x31,0xc0,0x26,0x10,0x16,0x0b, - 0x6c,0x32,0x61,0x83,0x80,0x3d,0x42,0xd8,0x60,0x60,0xd3,0x08,0x1b,0x02,0x6c,0x3a, - 0x61,0x43,0x81,0xa5,0x10,0x36,0x0c,0xd8,0x0c,0xc2,0xee,0x01,0xf6,0xa4,0xaf,0x53, - 0xf8,0x4e,0xbf,0xa2,0xd9,0x3a,0xfb,0x9c,0x04,0x7d,0x74,0x3e,0x91,0xe6,0xa2,0xf3, - 0x78,0xcc,0xef,0xb7,0x51,0x21,0xdf,0x1e,0xf6,0xb5,0x91,0xdf,0x71,0xf6,0x57,0x0c, - 0xfa,0x9c,0x6a,0xfd,0x63,0xa0,0x61,0x7c,0x62,0x4e,0xda,0x48,0xeb,0x31,0x82,0xf0, - 0x38,0x3b,0xf2,0x3b,0x17,0xcf,0xd6,0xf9,0x58,0x3b,0x96,0x2e,0xfd,0x36,0x43,0xe7, - 0xe3,0xec,0x48,0x1f,0xb2,0x37,0x53,0xe7,0x0f,0xd9,0xd1,0x96,0x5d,0x9c,0xae,0x73, - 0xd1,0xad,0xa7,0xed,0xe1,0x3b,0xf3,0x24,0x3b,0x1a,0x0e,0x8c,0xce,0x7a,0xc0,0xce, - 0x93,0xc1,0x41,0xd6,0x76,0x94,0x9d,0x8b,0x26,0xc9,0xe0,0x28,0xf3,0x27,0xb0,0x26, - 0x51,0xbe,0x5f,0x94,0xaf,0x8f,0xf8,0x0a,0x9e,0x86,0xf9,0x4c,0x8a,0x9f,0x05,0x7f, - 0x89,0x97,0xfc,0x19,0xc8,0x2f,0xff,0xc6,0xdb,0x0e,0x33,0xa1,0xbb,0xd6,0x91,0x91, - 0xf1,0x3f,0x43,0x7d,0xa4,0x7e,0x16,0xd6,0x39,0x13,0xf5,0x65,0x3e,0x1b,0xd8,0x54, - 0xf4,0x33,0x07,0x7c,0xc4,0x7f,0x2e,0x6c,0x29,0x64,0x5f,0x48,0xfd,0x3c,0x0d,0x7b, - 0x06,0xec,0xf2,0xcc,0x01,0x5f,0xf5,0x5f,0x86,0xbd,0xaa,0xf3,0x62,0xec,0x8d,0xd1, - 0x36,0xb2,0x1c,0xfd,0xe2,0x88,0xfe,0xeb,0x29,0x35,0x5e,0xc2,0xef,0x72,0x70,0x96, - 0xf9,0xba,0x40,0x8d,0x8a,0xc0,0xbc,0x12,0xe7,0x48,0xe2,0x5f,0x05,0xc7,0x64,0x68, - 0xfc,0x1a,0x7e,0x87,0xc9,0xbf,0x1a,0x9a,0xeb,0xbc,0x16,0x7b,0x5f,0xe7,0xf5,0xe0, - 0x29,0xf1,0xef,0xe2,0x37,0xc7,0x37,0xe3,0x9c,0xe9,0x1e,0x69,0x0b,0xf0,0x39,0x8b, - 0x73,0xa3,0xf3,0xf3,0x38,0x83,0x3a,0xbf,0x1c,0x58,0x83,0x6b,0x38,0x53,0x9a,0xcf, - 0xf8,0x82,0xd4,0x66,0x4a,0x3f,0x61,0xe3,0x6a,0xeb,0x1e,0x92,0x79,0x94,0x89,0xf0, - 0x11,0xff,0x43,0x76,0x5e,0x71,0xf4,0x95,0x3b,0x7b,0xfa,0xb0,0x9d,0xbf,0xb9,0xab, - 0x29,0xfd,0x71,0xbb,0x12,0x21,0xac,0x9f,0x87,0x1e,0xfa,0x2c,0x22,0xeb,0x93,0x8e, - 0xfd,0x9a,0x86,0x3d,0x99,0x6b,0x3b,0x9a,0x85,0xf3,0x9b,0x86,0xa1,0x6b,0xb3,0x1e, - 0x7b,0x3d,0x1d,0xf6,0xd9,0x36,0x83,0xec,0x95,0x79,0xd8,0x4f,0x73,0x90,0x4f,0x7c, - 0xe6,0x03,0xdf,0x69,0x7d,0x64,0xbe,0x00,0x71,0xf3,0x11,0x27,0x7b,0xe8,0x19,0xc4, - 0x2d,0x44,0x9c,0xec,0xa3,0x45,0xc0,0x5b,0xad,0x8f,0x9c,0xe7,0xc5,0xc0,0x64,0x7f, - 0xdd,0xb4,0xcc,0xf3,0xc0,0xa7,0xdf,0xfa,0x2f,0xf6,0xf9,0x7a,0x3e,0x26,0xfd,0xc8, - 0xef,0x67,0x6d,0x9c,0x68,0xb9,0x04,0x35,0xe5,0xdf,0x36,0xe8,0xfb,0x1c,0xf0,0x7c, - 0xab,0x8e,0x70,0xda,0x61,0x1c,0xa6,0x7e,0xb7,0x6c,0x0e,0xcd,0x25,0xcf,0x1b,0x56, - 0x0b,0xf1,0x3b,0x62,0x9c,0x4f,0x34,0x62,0x72,0xa9,0x87,0xe5,0xe8,0x61,0x19,0xf5, - 0xb0,0x02,0xb8,0xf6,0x50,0x00,0x4c,0x7b,0x28,0xa4,0x1e,0xc4,0xb6,0xd2,0x8e,0x42, - 0xd4,0x5d,0x49,0x3d,0x3c,0x8f,0xda,0x86,0x7a,0x28,0x02,0xae,0x3d,0xec,0x36,0x0e, - 0x53,0x3f,0xe9,0x41,0x73,0x15,0x52,0x0f,0xcd,0xc6,0xf9,0xe4,0x21,0x66,0x25,0xf5, - 0xb0,0x0a,0x3d,0x14,0x53,0x0f,0x2f,0x00,0xd7,0x1e,0x4a,0x80,0x69,0x0f,0x65,0xd4, - 0x83,0xd8,0x4a,0xed,0x28,0x43,0xdd,0x52,0xec,0x23,0xa9,0xbb,0x1a,0xb5,0x9b,0x4d, - 0xe4,0x7c,0x0b,0x47,0xf5,0x2d,0x23,0x8e,0x47,0xe1,0x57,0x88,0xb8,0x52,0xf0,0x29, - 0xf7,0xf7,0x9e,0x3b,0xff,0xba,0xe7,0x5e,0x06,0xe7,0x0a,0xda,0x73,0x1b,0x80,0xd7, - 0x62,0xcf,0x6d,0x04,0x26,0x79,0x25,0x4e,0xee,0x84,0x4d,0x88,0xab,0x44,0x9c,0x68, - 0xba,0x19,0xb8,0xea,0xbe,0x05,0xb1,0x1e,0x61,0x55,0xc0,0x8c,0xbf,0xdf,0x62,0xfc, - 0xfb,0x64,0x2b,0x7c,0xab,0x90,0x43,0x6b,0xd4,0xa0,0x46,0x35,0xd5,0xd8,0x06,0xbc, - 0xc8,0xf6,0x2a,0xe7,0x6d,0x3b,0x7a,0xda,0x8a,0x3b,0x68,0x1b,0xad,0xc7,0x0e,0xc4, - 0xd7,0xd2,0x7a,0xec,0x04,0xae,0xeb,0xb1,0x0b,0x98,0xae,0xc7,0x1e,0x5a,0x0f,0xb1, - 0xed,0xb6,0x63,0x0f,0x34,0xde,0x8d,0x3e,0xe4,0x4e,0xd8,0x87,0xda,0x1e,0xe2,0x12, - 0xb0,0x28,0x7f,0xd9,0xdf,0x92,0x6b,0x94,0x71,0x31,0xf2,0x3c,0x83,0x5a,0xa3,0x8d, - 0x8b,0x1b,0x8e,0x98,0x49,0x26,0x52,0x4b,0x6c,0x63,0xec,0x18,0x87,0x38,0x79,0x0e, - 0xb3,0x3d,0xfa,0xef,0x54,0xac,0xf9,0x18,0xd4,0x1d,0xeb,0x73,0x72,0x3c,0x26,0x18, - 0x67,0x1f,0xe7,0xf7,0xe2,0xb0,0x89,0x06,0x38,0xf6,0x48,0x02,0x72,0x4a,0x7e,0x8d, - 0x8b,0x07,0x97,0xb8,0x80,0x8f,0x70,0x1a,0xb0,0xd5,0xfa,0x80,0xdd,0x00,0x87,0x63, - 0xc6,0xe5,0x15,0x5e,0xf1,0xe0,0x2a,0x67,0x47,0xd6,0x60,0xaf,0x71,0xf6,0xed,0xb4, - 0xd6,0x12,0xb3,0x1f,0x1a,0x19,0xf4,0x9b,0x1a,0xd0,0x68,0x0a,0x6a,0x4e,0x21,0x8d, - 0xa6,0x1a,0x17,0xa7,0x1a,0xa5,0x90,0x46,0x62,0x9b,0x66,0x47,0x12,0xe2,0x92,0x48, - 0xa3,0x47,0x49,0xa3,0xfd,0x01,0x8d,0x1e,0x33,0xce,0xce,0x1a,0x25,0x1b,0x87,0xab, - 0x46,0xa9,0xc8,0x39,0x8d,0x34,0x4a,0x04,0x97,0xb8,0x80,0x4f,0x0a,0x69,0x94,0x4a, - 0x1a,0xb5,0x18,0x97,0x57,0x78,0x25,0x82,0xab,0x6a,0xf4,0xba,0x71,0xf6,0xbd,0xe0, - 0xa9,0x1a,0xd5,0x41,0xa3,0x10,0xfa,0xcd,0x0e,0x68,0x94,0x86,0x9a,0x69,0xa4,0x51, - 0xba,0x71,0x71,0xaa,0xd1,0x02,0xd2,0x48,0x6c,0x19,0x72,0x4e,0x11,0x37,0x9b,0x34, - 0x9a,0x4b,0x1a,0xd5,0x05,0x34,0x9a,0x67,0x9c,0x9d,0x35,0x9a,0x6f,0x1c,0xae,0x1a, - 0x65,0x23,0x67,0x06,0x69,0x94,0x05,0x2e,0x71,0x01,0x9f,0x05,0xa4,0x51,0x36,0x69, - 0xf4,0xa1,0x71,0x79,0x85,0x57,0x16,0xb8,0xaa,0x46,0xfb,0x8d,0xb3,0x8b,0x56,0x21, - 0xe4,0xd3,0xb3,0xb7,0x07,0xf7,0x9b,0xf8,0xb5,0x61,0xaf,0x95,0x21,0x26,0xdb,0x44, - 0xce,0xfc,0x5b,0x38,0xf3,0xf5,0x74,0xe6,0xdf,0x06,0xae,0x67,0xfe,0x00,0x30,0x3d, - 0xf3,0x8d,0x74,0xe6,0xc5,0xd6,0x20,0xef,0x01,0xd4,0x3d,0x42,0xf7,0xc9,0x51,0xe4, - 0x6e,0xa6,0xdc,0xc7,0x80,0x6b,0xee,0x0f,0x80,0x69,0xee,0x56,0xca,0x2d,0xb6,0x16, - 0xdf,0xd7,0xe5,0x6e,0xa1,0x7d,0xf0,0x11,0xfa,0x92,0x6f,0x8a,0x2e,0xe4,0xfa,0x58, - 0x71,0x68,0xa1,0x71,0xad,0xd0,0x42,0x7c,0x8e,0xa3,0xe6,0x11,0xf8,0xb7,0xa0,0x6e, - 0x07,0xd5,0x15,0x9f,0x76,0x3b,0x3a,0x10,0xdf,0x4e,0x75,0x4f,0x50,0xdd,0x5c,0xfb, - 0x55,0x25,0xdf,0x67,0x27,0x81,0xb5,0x99,0xc8,0x37,0x4b,0x08,0xf7,0xb5,0xd8,0x4f, - 0x21,0x4e,0xc7,0x3e,0x9b,0x4b,0xf0,0x4e,0xc4,0x9e,0xf2,0x73,0x0d,0xf6,0xd7,0xaa, - 0x0b,0xb9,0x3a,0xf1,0xdd,0x14,0x4d,0xdf,0x7f,0xd2,0x93,0x72,0xea,0xa0,0xf5,0x6d, - 0x47,0xed,0x56,0xc4,0xb7,0xc3,0xb7,0x11,0xbe,0x0d,0xc4,0xbf,0xe9,0x3f,0xf8,0xbf, - 0x7f,0x17,0xfe,0x6f,0x80,0xe7,0x41,0xf8,0x34,0x11,0xcf,0xc3,0x88,0x39,0x78,0x17, - 0x9e,0x5a,0xbb,0x91,0x78,0x1e,0x37,0x8e,0x6b,0x07,0xe2,0x1b,0x68,0xaf,0x7c,0x8e, - 0xbd,0x72,0x96,0xf6,0xca,0x17,0xc0,0x75,0xaf,0x7c,0x09,0x4c,0xf7,0x4a,0x37,0xad, - 0x99,0xd8,0xce,0xd9,0xd1,0x8d,0xba,0xe7,0xa8,0xe7,0xaf,0x50,0x5b,0xdf,0x3d,0x05, - 0x81,0x3b,0x23,0x07,0x67,0x30,0x87,0xee,0x8c,0x5c,0xe3,0xe2,0x26,0x23,0x66,0x05, - 0xdd,0x19,0x62,0xcb,0xb3,0x63,0x09,0xe2,0xe4,0xb9,0x03,0xb5,0x96,0x22,0xee,0x21, - 0xba,0x2b,0x96,0x19,0x87,0x1f,0xa2,0xbb,0x65,0x39,0xdd,0x2d,0x62,0x4f,0x82,0x6e, - 0x05,0xc8,0x99,0x47,0x77,0x46,0x3e,0x72,0xca,0x77,0x35,0xfb,0xac,0xa0,0x3b,0xa3, - 0x80,0xee,0x8c,0x0e,0xe3,0xf2,0x0b,0xaf,0x7c,0x70,0xd5,0x3b,0xa3,0xce,0x38,0xbb, - 0xea,0xa1,0x1a,0x7d,0x0d,0x8d,0xf4,0xdd,0x53,0x1e,0xd0,0xa8,0x08,0x35,0x8b,0x48, - 0xa3,0x62,0xe3,0xe2,0x54,0xa3,0xb5,0xa4,0x91,0xd8,0x56,0xd9,0x51,0x8a,0xb8,0x52, - 0xd2,0xe8,0x45,0xc4,0xb1,0x46,0xab,0x8d,0xc3,0x59,0xa3,0x35,0xa4,0xd1,0x6a,0xd2, - 0xa8,0x1c,0x39,0x57,0x91,0x46,0x25,0xc8,0xa9,0x1a,0xa9,0xcf,0x5a,0xd2,0xa8,0x9c, - 0x34,0x3a,0x61,0x5c,0x7e,0xe1,0x55,0x02,0xae,0xaa,0x51,0xbd,0x71,0xf6,0xba,0xc0, - 0xbb,0xe7,0x1b,0x68,0xa4,0xef,0x9e,0x9a,0x80,0x46,0x1b,0x50,0x73,0x03,0x69,0xb4, - 0xd1,0xb8,0x38,0xd5,0xa8,0x9a,0x34,0x12,0x5b,0xa5,0x1d,0x9b,0x11,0xb7,0x99,0x34, - 0xda,0x82,0x38,0xd6,0xa8,0xca,0x38,0x9c,0x35,0xda,0x4a,0x1a,0x55,0x91,0x46,0x35, - 0xc8,0x59,0x49,0x1a,0x6d,0x42,0x4e,0xd5,0x48,0x7d,0xaa,0x49,0xa3,0x1a,0xd2,0xe8, - 0xa4,0x71,0xf9,0x85,0xd7,0x26,0x70,0x55,0x8d,0x0e,0x18,0x67,0xaf,0xa7,0x77,0x8f, - 0x9e,0xbd,0x6e,0x3a,0xf3,0x9d,0xd8,0x6b,0x8d,0x88,0xa9,0xa1,0x77,0xcf,0x77,0x38, - 0xf3,0xe7,0xe9,0xcc,0x7f,0x0f,0x5c,0xcf,0xfc,0x0f,0xc0,0xf4,0xcc,0x5f,0xa4,0x33, - 0x2f,0xb6,0x0b,0x76,0x5c,0x42,0xdd,0x4b,0x74,0x9f,0xfc,0x84,0xdc,0x97,0x29,0xf7, - 0xcf,0xc0,0x35,0xf7,0x2f,0xc0,0x34,0xf7,0x15,0xca,0x2d,0xb6,0x1e,0x3b,0xae,0x22, - 0xf7,0x55,0xfa,0xce,0xfe,0x0d,0xb9,0xaf,0xd1,0x77,0xf6,0xef,0xc0,0xbb,0xf1,0xdd, - 0xfe,0x07,0xb0,0x6a,0xaa,0xf7,0x27,0xf0,0x0a,0xd4,0xeb,0xa5,0x7a,0x62,0xbb,0x6e, - 0x47,0x2f,0xea,0x5d,0xf7,0x22,0x5a,0x37,0x19,0xf7,0x4e,0xeb,0xa4,0xff,0x6b,0xa9, - 0x5f,0x2f,0x69,0x7d,0xda,0x38,0x9f,0xab,0x88,0xb9,0x4e,0x7c,0x6e,0x82,0xcf,0x42, - 0xe2,0xd3,0x07,0x5c,0xf9,0xf4,0x13,0x9f,0x3e,0xbf,0x8e,0xe7,0x63,0x52,0xe7,0x16, - 0xf1,0x79,0x0f,0x7c,0x4e,0xd3,0xda,0xab,0x5f,0x3f,0xf1,0xe9,0x32,0xce,0xa7,0x17, - 0x31,0xb7,0x88,0xcf,0x6d,0xf0,0x39,0x4f,0x7c,0xfe,0x06,0xae,0x7c,0x3c,0x3a,0x2b, - 0x62,0x1b,0xc0,0xcb,0x49,0xea,0x0c,0x10,0x9f,0x83,0xc6,0xfd,0xcd,0xa2,0xcb,0x44, - 0xde,0x3f,0xea,0xe7,0x99,0x08,0x9f,0x4f,0xe1,0xd3,0x8f,0x98,0x01,0xf8,0x5e,0x01, - 0xf7,0x1e,0x3a,0xeb,0xbf,0x42,0xef,0x30,0xd5,0x79,0xc7,0x44,0x70,0x2f,0x10,0x7b, - 0x85,0xfa,0x3e,0x63,0x5c,0x2d,0xa9,0x2d,0x31,0x3d,0xf0,0xbd,0x08,0xdf,0x0b,0xf4, - 0x1e,0xfd,0x11,0xf9,0x64,0xe8,0xdf,0x79,0x43,0xf4,0x1e,0xd5,0x98,0x8b,0x94,0xff, - 0x13,0xe3,0x6a,0x5c,0x41,0xfc,0x05,0xff,0x6f,0x62,0x61,0xff,0xef,0x32,0x62,0xbb, - 0x6d,0x0b,0xcf,0xb0,0xe3,0x1f,0xe2,0x59,0x4a,0x80,0x98,0x16,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0xe9,0x6f,0x95,0x45, + 0x14,0xc6,0x67,0xee,0xed,0xc2,0x56,0x5a,0x05,0x2a,0x10,0x34,0xad,0x85,0x0a,0x52, + 0x4b,0x45,0x28,0xeb,0x65,0x91,0x42,0xab,0x36,0x20,0x10,0x4d,0x10,0x2b,0x69,0x65, + 0x11,0xa9,0x60,0x80,0x08,0x2a,0xd5,0x42,0x25,0x40,0xf8,0x60,0x8c,0xa8,0xd4,0x18, + 0x13,0x3e,0x91,0x80,0x94,0x0f,0x82,0x4a,0x43,0x08,0x1a,0xa5,0x26,0x4a,0x13,0xa5, + 0x06,0xfe,0x02,0x22,0x91,0xb8,0x90,0x10,0x2b,0x04,0x74,0xce,0x3b,0xbf,0xd3,0x7b, + 0x6c,0x5c,0x6e,0x32,0x79,0xdf,0x79,0xe6,0x3c,0x67,0x79,0xe6,0xcc,0xbc,0x85,0x74, + 0xaa,0x2c,0xdf,0x39,0xef,0x06,0xb9,0x01,0xee,0x51,0xef,0x92,0xdf,0x1d,0x2e,0xe5, + 0xe4,0x75,0xb0,0xcb,0x4b,0x9e,0xb5,0xf5,0xcb,0xeb,0x2b,0xb7,0x6c,0x5d,0x5d,0x39, + 0x65,0x6a,0x95,0xac,0x0f,0x75,0xe9,0xc4,0x4e,0xd6,0x0a,0x5d,0xbe,0xcb,0x09,0x4f, + 0x19,0x2f,0x34,0xae,0xdf,0x28,0x78,0x79,0x18,0x97,0xc2,0x28,0x0a,0x76,0x82,0xe7, + 0x8b,0x8f,0xf0,0x56,0x9e,0xf8,0x14,0x8e,0x73,0x75,0x2e,0xd7,0x55,0xc4,0x70,0xae, + 0x8c,0xa7,0x62,0x1e,0x6c,0x80,0xc1,0x52,0x60,0x45,0x06,0x4b,0x83,0x0d,0x37,0x58, + 0x0e,0xd8,0x48,0x83,0xe5,0x82,0x8d,0x31,0x58,0x1e,0x58,0x89,0xc1,0xf2,0xc1,0xc6, + 0x1a,0x6c,0x00,0xd8,0x78,0x83,0x0d,0x04,0xab,0x30,0xd8,0x20,0xb0,0x2a,0x83,0x0d, + 0x06,0x9b,0x62,0xb0,0x21,0x60,0xd3,0x0d,0x56,0x00,0x36,0x3b,0xd1,0x29,0xdd,0x57, + 0xaf,0x68,0xb6,0x32,0x3c,0xef,0x45,0x1f,0x9d,0x97,0x9a,0xb9,0xe8,0x7c,0x0f,0xf3, + 0x61,0x81,0x95,0x4a,0xd6,0xd3,0x89,0x36,0xf2,0x5e,0x1c,0xde,0xf2,0xa8,0x73,0x62, + 0xb0,0xcf,0x23,0xde,0xe5,0x8e,0x71,0x99,0xe1,0xc1,0x62,0xa8,0xc1,0x45,0xb3,0x8e, + 0xda,0xc6,0x8c,0xce,0x45,0xaf,0xf7,0xdb,0x47,0xcd,0x1b,0x11,0xe6,0x25,0xf8,0x90, + 0xbd,0xb9,0x2b,0xcc,0x4b,0x99,0xa7,0x98,0x8f,0x45,0xd3,0x9c,0x04,0xcf,0x71,0xe3, + 0xb0,0x15,0x7c,0x16,0xf3,0x72,0xc3,0xbf,0x0f,0x7b,0xe1,0x8b,0xff,0x89,0xf8,0x73, + 0x49,0x3d,0x45,0x89,0x06,0xa5,0x8c,0x92,0xbe,0xfc,0xff,0x7b,0x94,0xf4,0x3d,0x73, + 0xdc,0x03,0xec,0x53,0x05,0xf1,0x65,0x5e,0x09,0x36,0x91,0x7a,0x26,0x91,0x8f,0xd8, + 0x57,0xb1,0x56,0x6a,0xd6,0xab,0x4d,0x3d,0xd3,0xfa,0xb8,0x71,0x5d,0x9e,0x33,0xc9, + 0x57,0xed,0x17,0xd0,0x6b,0x3a,0x5f,0x8c,0xd6,0x52,0xef,0x93,0xe4,0x27,0xfe,0x46, + 0x05,0x4f,0x2b,0x8c,0x9e,0xf6,0xa7,0x73,0x89,0xf9,0x14,0xef,0x2b,0xa8,0x41,0xe6, + 0x2b,0xfb,0xc5,0x6c,0xe8,0x37,0x6f,0x42,0x53,0xe1,0x3f,0x4b,0xce,0x25,0x66,0x7d, + 0x1d,0xba,0x4b,0x4e,0x2f,0xb2,0x96,0x36,0xeb,0xdb,0x39,0x07,0x3a,0x3f,0x40,0x1f, + 0xeb,0xfc,0x08,0x67,0x42,0xe7,0x27,0xfb,0x69,0x7a,0x96,0x1e,0xd7,0x1e,0xfa,0xda, + 0xe4,0x27,0xf3,0x1f,0x92,0x59,0xeb,0x5c,0xc9,0xef,0x22,0xb1,0xb5,0x47,0x2e,0x72, + 0x6f,0xa4,0x8d,0xfd,0x94,0x20,0xc8,0xce,0xd6,0xd6,0x59,0x15,0x21,0x2b,0xb1,0x9b, + 0xea,0x23,0x66,0x87,0xda,0x56,0x87,0xf7,0x4d,0x87,0x37,0xcf,0xd5,0xf9,0xb4,0x30, + 0x7f,0xab,0xed,0xc3,0x4c,0x75,0xd8,0x95,0x14,0xda,0x3b,0xfc,0xf7,0x06,0x44,0xf6, + 0x2a,0x43,0xef,0x8e,0xa7,0x3f,0x97,0x84,0x38,0xd2,0x9b,0x13,0xc0,0xc6,0x9b,0x7d, + 0xd9,0x48,0xdf,0xdf,0xcf,0xfa,0xfc,0xe0,0x41,0xfa,0xe6,0x41,0x7a,0x6b,0x12,0xfe, + 0xc4,0x66,0x32,0xf8,0xae,0x60,0x23,0xf3,0x87,0xe0,0x4d,0x86,0x37,0x8d,0x3b,0xa0, + 0x92,0x3e,0xcb,0xd0,0x53,0x33,0xc0,0x8f,0x06,0x9b,0xa1,0x89,0x2e,0x11,0x93,0x5e, + 0xfb,0x3d,0x64,0x9e,0x21,0x9f,0x1b,0xc1,0x7e,0x16,0x77,0x46,0x86,0x7a,0xe4,0x7d, + 0x69,0xe0,0xc9,0x3e,0xcc,0x23,0xa6,0xfc,0x5e,0x63,0x6f,0xe6,0x83,0x2f,0x0b,0xea, + 0x48,0x4e,0xa3,0x7d,0xc4,0xd4,0xee,0x8f,0xe0,0x43,0x7d,0xc9,0xf3,0x7a,0xd0,0x42, + 0xec,0xa6,0xfb,0x68,0x93,0x0b,0x67,0xb6,0xa9,0xa1,0x86,0x1a,0x16,0x98,0x1a,0x16, + 0x82,0x6b,0x0d,0x8b,0xc0,0xb4,0x86,0x3a,0x53,0xc3,0xa2,0xe4,0x1e,0x73,0x09,0x26, + 0x71,0x6b,0x4d,0x0d,0x8f,0x11,0xdb,0x9b,0x1a,0xea,0xc1,0xb5,0x86,0xbb,0x7d,0xc4, + 0xd4,0x4e,0x6a,0x50,0x5f,0x75,0xa6,0x86,0x19,0x3e,0xda,0x64,0xe0,0xd4,0x9a,0x1a, + 0x96,0x50,0xc3,0x62,0x53,0xc3,0xe3,0xe0,0x5a,0xc3,0x52,0x30,0xad,0x61,0xb9,0xa9, + 0x61,0x69,0x92,0x8f,0x4b,0x30,0x89,0xbb,0x8c,0x3e,0x92,0xb8,0x4f,0x10,0x7b,0x86, + 0xcf,0x9e,0x6d,0xc9,0x51,0x6d,0x97,0x9b,0x1c,0x67,0x62,0x57,0x07,0x6f,0x19,0xf9, + 0xc8,0xf9,0x7f,0x9a,0xb3,0xaf,0x3d,0xf7,0x0c,0x39,0x37,0x98,0x9e,0x5b,0x05,0xde, + 0x4a,0xcf,0x35,0x82,0xcd,0xf4,0x91,0x27,0xf7,0xc1,0x6a,0x78,0x4d,0xf0,0x44,0xd3, + 0x35,0xe0,0xab,0x42,0x1e,0x72,0x4f,0xad,0x25,0x5e,0x23,0x77,0xc9,0x1a,0xa3,0xd5, + 0x73,0xf0,0xd7,0x19,0xad,0xd6,0x83,0xab,0x56,0xcf,0x83,0xa9,0x56,0xcd,0x46,0x2b, + 0x59,0xdb,0x10,0xc6,0x36,0xea,0xdf,0x66,0x7c,0xbf,0x8c,0xef,0xed,0xc6,0xf7,0x2b, + 0xe0,0xea,0xfb,0x55,0x30,0xf5,0xdd,0x62,0x7c,0xcb,0xda,0x8e,0x30,0x5a,0xf0,0xbd, + 0xc3,0xf4,0xd2,0xeb,0xd4,0x25,0x67,0xff,0x18,0xbe,0x5a,0xc1,0x1b,0xd8,0x13,0xe5, + 0xb5,0xb0,0x27,0x62,0xb3,0x93,0x98,0xdb,0xb0,0xdf,0x41,0xdc,0x36,0x13,0x77,0x67, + 0x72,0xce,0x5d,0x82,0x09,0x7f,0x97,0x89,0xbb,0xdb,0xc4,0x5d,0x12,0x6e,0x4e,0xb9, + 0x73,0xf7,0x80,0xad,0x35,0x77,0x4b,0x2a,0xe9,0xaf,0xbc,0x64,0x7d,0x2f,0x3c,0x1d, + 0x7b,0x82,0x2f,0xc1,0xf7,0xc1,0xdd,0x9b,0xf8,0x1a,0x98,0xec,0xd5,0x7e,0xfc,0xec, + 0xe3,0x7e,0xcb,0xe5,0x7e,0x4f,0x53,0x93,0xe6,0xd4,0x46,0x4d,0xc2,0xc9,0xf8,0xc8, + 0x69,0x81,0xbf,0x0b,0xdb,0x66,0x6c,0x37,0x98,0xfc,0x37,0xfd,0x43,0xfe,0x9b,0xff, + 0x27,0xff,0x2d,0xf0,0x74,0xbc,0x41,0xfe,0x5b,0xe1,0x6e,0x31,0xf9,0xbf,0x84,0x9f, + 0xad,0xff,0x92,0xbf,0xe6,0xd4,0x6c,0xf2,0x9f,0xed,0x63,0x0d,0x6d,0xf0,0x37,0x24, + 0x71,0xe2,0x3d,0xfe,0x26,0xeb,0xbb,0x83,0x27,0x99,0xbf,0x0d,0x36,0xd5,0x67,0xfb, + 0xec,0x1d,0xfa,0xec,0x80,0xe9,0xb3,0x77,0xc1,0xb5,0xcf,0xde,0x03,0xd3,0x3e,0x6b, + 0x37,0xfb,0x2d,0x6b,0x07,0xc3,0x68,0x27,0xb7,0x83,0xe8,0x25,0x79,0x7f,0x40,0x4c, + 0x07,0xef,0x1a,0xef,0x37,0xc3,0xbb,0xf8,0xba,0x0c,0x47,0x9e,0xa7,0x89,0xf5,0x23, + 0xbc,0x02,0x38,0xbf,0x99,0x58,0xb2,0x76,0x25,0x8c,0xab,0xf0,0xae,0x26,0x3d,0x19, + 0x63,0xfd,0x0c,0x6f,0xa4,0x8b,0xf5,0x0a,0xf6,0x0b,0xb8,0x7c,0x0b,0x87,0x04,0xbd, + 0x04,0xfb,0x95,0x3d,0x1a,0xcd,0xfa,0x18,0xb4,0xbd,0x86,0xcf,0x2b,0x86,0xff,0x13, + 0x3e,0xe5,0xdb,0x69,0x6d,0x24,0xa7,0x3f,0x83,0x97,0x5e,0xb0,0xeb,0xf8,0x9e,0xe3, + 0xa3,0xff,0xab,0x70,0xaf,0x70,0x37,0x8b,0xf6,0x65,0x3e,0xae,0xab,0x1e,0xaa,0xd1, + 0x21,0x34,0xf2,0xd4,0x9b,0xe3,0xff,0xae,0x51,0x2f,0x31,0x7b,0x8d,0x46,0x37,0xe0, + 0xa9,0x46,0x69,0x9f,0xd5,0xe8,0x46,0xc2,0x75,0xee,0x36,0xbc,0xdb,0x46,0x23,0x09, + 0x72,0xa8,0x9f,0x46,0xde,0x47,0xdc,0x6a,0x94,0xf2,0x59,0x8d,0x64,0x5d,0x35,0x92, + 0xdc,0xc4,0xe7,0x4d,0xc3,0xbf,0x45,0x2e,0xaa,0x91,0xda,0x48,0x4e,0xaa,0x91,0x60, + 0xaa,0xd1,0x3c,0x1f,0xfd,0xdf,0x86,0x7b,0xd3,0x68,0x54,0xee,0xe3,0x7a,0x19,0xf1, + 0x55,0xa3,0xc3,0x68,0x94,0xa2,0xde,0xe2,0x7e,0x1a,0x0d,0x22,0xa6,0x3c,0x55,0xa3, + 0x21,0x3e,0xf2,0x54,0xa3,0x11,0x46,0x23,0x59,0x2b,0x08,0xa3,0x08,0x9e,0x3c,0x55, + 0xa3,0x3b,0xe1,0x59,0x8d,0x86,0xf9,0x88,0x5b,0x8d,0x86,0x1b,0x8d,0x86,0x19,0x8d, + 0x8a,0xf1,0x59,0xe0,0xb3,0xfc,0x42,0x7c,0xaa,0x46,0x6a,0x33,0xc2,0x68,0x54,0x6c, + 0x34,0x7a,0xd8,0x47,0xff,0x92,0x57,0x21,0xb9,0xaa,0x46,0x13,0x7c,0x5c,0x17,0xad, + 0x52,0xc4,0xd4,0xb3,0xd7,0x4e,0x2f,0x8a,0x5d,0x0d,0xbd,0xd6,0x0c,0xa7,0xd8,0x9c, + 0xf9,0xa3,0x9c,0xf9,0x23,0xe6,0xcc,0x7f,0x04,0xae,0x67,0xfe,0x18,0x98,0x9e,0xf9, + 0xe3,0xe6,0x1c,0xca,0x5a,0x47,0x18,0x27,0x88,0x7b,0xc2,0x7c,0xb7,0x3e,0xc1,0xf7, + 0x49,0xe3,0xfb,0x53,0x70,0xf5,0xfd,0x19,0x98,0xfa,0xee,0x34,0xbe,0x65,0xed,0x54, + 0x18,0x67,0xf0,0x7d,0xc6,0x65,0xbf,0xd7,0x9f,0xe3,0xfb,0xac,0xf9,0x5e,0x7f,0x01, + 0xde,0xc5,0x1d,0xfd,0x25,0x58,0x93,0x89,0xf7,0x15,0x78,0x03,0xf1,0xba,0x4c,0x3c, + 0x59,0x3b,0x97,0xf0,0x63,0xbc,0x73,0xa6,0x1f,0x2b,0x7d,0xfc,0x9b,0xbd,0xc6,0xfc, + 0x3d,0xa5,0x76,0x5d,0x46,0xeb,0x85,0x3e,0xda,0x9c,0x81,0x73,0xce,0xe4,0xf3,0x0d, + 0xf9,0x54,0x9b,0x7c,0xbe,0x05,0xd7,0x7c,0xba,0x4d,0x3e,0xb2,0x76,0x3e,0x8c,0x6e, + 0xe2,0x9c,0x37,0xf9,0x54,0x91,0xcf,0x42,0xb3,0xf7,0x6a,0xd7,0x6d,0xf2,0x59,0xe4, + 0xa3,0x4d,0x17,0x9c,0xf3,0x26,0x9f,0xef,0xc8,0xe7,0x88,0xc9,0xe7,0x7b,0x70,0xcd, + 0xa7,0xc7,0xe4,0x23,0x6b,0x17,0xc2,0xe8,0x21,0xce,0x05,0x93,0xcf,0x64,0x1f,0xff, + 0x0d,0x23,0xf1,0xf4,0x1b,0xa5,0x76,0x3d,0x26,0x9f,0x47,0x7c,0xb4,0xe9,0x86,0x73, + 0x01,0xdb,0x4e,0x6c,0x4f,0x99,0xb3,0x7e,0x1a,0xbd,0xd3,0x26,0x4e,0x85,0xcf,0xe2, + 0xae,0x1f,0xb7,0xd3,0xc4,0xa9,0xf3,0x31,0x56,0x0f,0x9c,0x53,0xd8,0x1e,0xc7,0xb6, + 0x83,0x6f,0xad,0xd8,0x7e,0x8c,0x3f,0x19,0xfa,0xff,0x32,0x29,0xf3,0xad,0x55,0xce, + 0x71,0xe3,0xbf,0xd6,0xc7,0x18,0x9d,0xf0,0xc5,0xdf,0x9c,0xc0,0xb8,0xc4,0xda,0xad, + 0xd0,0x25,0xd3,0xc3,0xf8,0x0b,0x6c,0x65,0x82,0x23,0x48,0x12,0x00,0x00 }; // Generated from: @@ -139,7 +118,7 @@ constexpr uint8_t kImageCopy_frag_00000010[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture2DArray src; +// layout(set = 0, binding = 0)uniform itexture2D src; // layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { @@ -165,19 +144,6 @@ constexpr uint8_t kImageCopy_frag_00000010[] = { // bool rotateXY; // } params; // -// float linearToSRGB(float linear) -// { -// -// if(linear <= 0.0031308) -// { -// return linear * 12.92; -// } -// else -// { -// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; -// } -// } -// // float sRGBToLinear(float sRGB) // { // @@ -210,15 +176,7 @@ constexpr uint8_t kImageCopy_frag_00000010[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); -// -// if(params . srcIsSRGB) -// { -// -// srcValue . r = linearToSRGB(srcValue . r); -// srcValue . g = linearToSRGB(srcValue . g); -// srcValue . b = linearToSRGB(srcValue . b); -// } +// ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); // // if(params . premultiplyAlpha) // { @@ -231,6 +189,8 @@ constexpr uint8_t kImageCopy_frag_00000010[] = { // // vec4 dstValue = vec4(srcValue); // +// dstValue /= 255.0; +// // if(params . dstIsSRGB) // { // diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc index 49d192fe191f22bea26bc78bbd5f592cc1669759..05debd9d79562e95e3800d00e1831ca8989e5c79 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc @@ -10,108 +10,108 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000011[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfb,0x6f,0x54,0x45, - 0x14,0xc7,0xef,0xec,0x6e,0xbb,0x05,0xa4,0x96,0x6c,0xe5,0xb1,0x21,0xa4,0x95,0x0a, - 0x08,0x58,0x2a,0x22,0x94,0xc7,0x22,0x58,0xa0,0x35,0x22,0x48,0x1b,0x12,0x44,0x7c, - 0x54,0x51,0xa8,0x3c,0x14,0xd4,0x5f,0xf8,0x41,0x89,0x88,0x6d,0x82,0x81,0x08,0x2a, - 0x8d,0x28,0x8d,0x11,0x22,0x91,0x44,0x50,0x21,0x51,0x40,0x69,0x0c,0x01,0xa3,0x34, - 0x51,0x1a,0x95,0x06,0xfe,0x02,0x23,0x91,0xa8,0x20,0x2a,0x82,0x73,0xee,0x7c,0x4e, - 0xf7,0xb8,0x8a,0x4d,0x26,0xf7,0xce,0x77,0xce,0xf7,0x3c,0xbe,0x73,0x66,0xf6,0x36, - 0x99,0x18,0x9e,0x8e,0x22,0x17,0xf5,0x8d,0x4a,0xa2,0xbb,0x5c,0x14,0xff,0x0d,0x88, - 0x12,0x91,0xbc,0xf6,0x8b,0x8a,0xe3,0x67,0xfd,0xdc,0xa6,0xb9,0xd5,0x4f,0x3f,0xb3, - 0xb4,0x7a,0xc2,0xed,0x35,0xb2,0x5e,0x1a,0x25,0x63,0x3b,0x59,0xbb,0x3e,0x4a,0x47, - 0x29,0xff,0x94,0xb1,0xaa,0xb9,0x65,0xb5,0xe0,0x23,0xfc,0x38,0xeb,0x47,0x99,0xb7, - 0x13,0x3c,0x2d,0x3e,0xfc,0xdb,0x88,0xd8,0xa7,0x70,0xa2,0xa8,0x21,0x2a,0x8a,0xc6, - 0x86,0x70,0xd1,0x70,0x9e,0x8a,0x39,0xb0,0x12,0x83,0x25,0xc0,0xca,0x0c,0x96,0x04, - 0x2b,0x37,0x58,0x0a,0x6c,0xb0,0xc1,0x8a,0xc0,0x86,0x1a,0xac,0x18,0xac,0xc2,0x60, - 0x69,0xb0,0x2a,0x83,0x95,0x80,0x8d,0x32,0x58,0x1f,0xb0,0xb1,0x06,0xeb,0x0b,0x56, - 0x63,0xb0,0x7e,0x60,0x13,0x0c,0x76,0x1d,0x58,0xad,0xc1,0xfa,0x83,0x4d,0x8b,0x75, - 0x4a,0xf6,0xd6,0x2b,0x9a,0x2d,0xf6,0xcf,0x1b,0xd1,0x47,0xe7,0x95,0x66,0x2e,0x3a, - 0x0f,0x63,0x9e,0xf1,0xac,0x44,0xbc,0x9e,0x8c,0xb5,0x91,0xf7,0x81,0xfe,0xad,0x98, - 0x3a,0xc7,0x78,0xfb,0x62,0xe2,0x0d,0xad,0xbe,0x67,0x6a,0xb9,0xb7,0x28,0x35,0x78, - 0xc6,0x8f,0xc6,0x8f,0xe7,0xcd,0xd4,0xb9,0x68,0xb8,0x70,0xe1,0xb7,0xd3,0x75,0x9e, - 0xf5,0x23,0xd7,0xb7,0xf5,0x0e,0x9d,0x8b,0x9e,0xef,0xd7,0x37,0xe7,0x6e,0xf0,0xf3, - 0x0a,0x62,0xc8,0xde,0x0d,0xf2,0xf3,0x4a,0xe6,0x09,0xe6,0x55,0x68,0x9e,0x8a,0xf1, - 0x54,0x74,0x13,0xb6,0x82,0x4f,0x65,0x3e,0xc2,0xf0,0x47,0x62,0x2f,0x7c,0xf1,0x3f, - 0x06,0x7f,0x51,0x5c,0x6f,0x59,0xac,0x51,0x25,0xa3,0xa2,0xb7,0xbe,0xff,0x1f,0x15, - 0xbd,0xcf,0x54,0x74,0x0b,0xfb,0x38,0x96,0xf8,0x32,0xaf,0x06,0x1b,0x43,0x3d,0xe3, - 0xc8,0x47,0xec,0x6b,0x58,0xab,0x34,0xeb,0x13,0x4d,0x3d,0x93,0x7a,0xb9,0x61,0x5d, - 0x9e,0x53,0xc8,0x57,0xed,0xeb,0xe8,0x45,0x9d,0xcf,0x63,0x2f,0x86,0x78,0xe6,0x22, - 0xea,0xe5,0x08,0xfe,0xeb,0x29,0x31,0xee,0xe3,0x7d,0x11,0x39,0xcb,0x7c,0x71,0x41, - 0x8c,0x25,0x05,0xf3,0x66,0xce,0x89,0xf0,0x1f,0x21,0xc7,0x0a,0x34,0x7e,0x8c,0xf7, - 0xa4,0xb1,0x6f,0x41,0x73,0x9d,0xaf,0xa2,0xb7,0x75,0xbe,0x81,0x3c,0x85,0xff,0x32, - 0xef,0x96,0xbf,0x8d,0x73,0xa4,0x3d,0xb2,0xc3,0xe4,0x23,0xf3,0x3d,0xf1,0xec,0xf9, - 0x3a,0xe1,0xef,0x25,0x7e,0xca,0xf0,0xf7,0x73,0xe6,0x74,0x7e,0xb8,0x60,0x4f,0x8e, - 0x73,0x86,0xa4,0x9e,0x33,0xc4,0xde,0x8b,0x1e,0x67,0xb8,0x77,0x92,0xf1,0xde,0x14, - 0xc5,0x75,0xa4,0x88,0x2f,0xd8,0x25,0x8f,0x88,0xfe,0x39,0xfa,0x71,0x14,0x3d,0x37, - 0xdf,0x67,0x2c,0xfd,0x76,0x33,0xd8,0x28,0xa3,0xfd,0x6a,0x7a,0x79,0x34,0xeb,0x33, - 0xbd,0x07,0xe9,0x85,0x5b,0xe9,0x97,0x71,0xf8,0x13,0x9b,0xf1,0xe0,0x2f,0x78,0x1b, - 0x99,0xdf,0x06,0x6f,0x3c,0xbc,0x49,0x9c,0xfb,0x6a,0x7a,0x27,0x47,0x9f,0x4c,0x06, - 0xdf,0xeb,0x6d,0x4a,0xe3,0x5a,0x02,0x26,0xfd,0xf3,0x9b,0xcf,0x3c,0x47,0x3e,0x7f, - 0x78,0xfb,0xa9,0xdc,0x13,0x39,0xea,0x91,0xf7,0x05,0x9e,0x27,0xda,0xcc,0x20,0xa6, - 0xfc,0x3d,0x87,0x5e,0x33,0xc1,0x1b,0xbd,0xfa,0x92,0xd3,0x30,0x17,0x30,0xb5,0xfb, - 0xdd,0xfb,0x50,0x5f,0xf2,0xbc,0xe0,0xb5,0x10,0xbb,0x49,0x2e,0xd8,0x14,0xc1,0x99, - 0x66,0x6a,0x98,0x45,0x0d,0x75,0xa6,0x86,0xd9,0xe0,0x5a,0xc3,0x1c,0x30,0xad,0xa1, - 0xc1,0xd4,0x30,0x27,0xbe,0xbb,0xa2,0x18,0x93,0xb8,0xf5,0xa6,0x86,0xbb,0x89,0xed, - 0x4c,0x0d,0x73,0xc1,0xb5,0x86,0x4a,0x17,0x30,0xb5,0x93,0x1a,0xd4,0x57,0x83,0xa9, - 0xa1,0xd6,0x05,0x9b,0x1c,0x9c,0x7a,0x53,0xc3,0x7c,0x6a,0x98,0x67,0x6a,0xb8,0x17, - 0x5c,0x6b,0x58,0x00,0xa6,0x35,0x34,0x99,0x1a,0x16,0xc4,0xf9,0x44,0x31,0x26,0x71, - 0x1b,0xe9,0x23,0x89,0xbb,0x90,0xd8,0xb5,0x2e,0x7f,0x7e,0x25,0x47,0xb5,0x6d,0x32, - 0x39,0x4e,0xc6,0xae,0x01,0x5e,0x23,0xf9,0xc8,0x19,0xbf,0x9f,0xf3,0xad,0x3d,0xf7, - 0x00,0x39,0x2f,0x31,0x3d,0xf7,0x20,0xf8,0x7a,0x7a,0xee,0x61,0xb0,0xc9,0x2e,0xf0, - 0xe4,0xcc,0x3f,0x0a,0xaf,0x19,0x9e,0x68,0xba,0x14,0x5c,0x75,0x7f,0x1c,0x6e,0x64, - 0xb0,0x65,0x60,0x2e,0xd6,0xa1,0x38,0xbe,0x2f,0x96,0x63,0xbb,0x0c,0x1f,0x1a,0xe3, - 0x09,0x62,0xb4,0x98,0x18,0x2b,0xc0,0x1f,0xf2,0xb5,0xca,0x79,0x5b,0x49,0x4d,0xcb, - 0xb9,0x63,0x56,0x98,0xfd,0x58,0x0d,0x7f,0x95,0xd9,0x8f,0x27,0xc1,0x75,0x3f,0x9e, - 0x02,0xd3,0xfd,0x58,0x6b,0xf6,0x43,0xd6,0xd6,0xf8,0xb1,0x16,0x8d,0xd7,0x50,0x87, - 0xdc,0x39,0xcf,0x12,0x3b,0x82,0x77,0x91,0xf7,0x3f,0xfd,0xbb,0xf8,0xfa,0x01,0x8e, - 0x3c,0x8f,0x10,0xeb,0x47,0x78,0xfd,0xe1,0x5c,0x30,0xb1,0x64,0xed,0x9c,0x1f,0xe7, - 0xe1,0x9d,0x8f,0xef,0xa4,0x74,0x1c,0xeb,0x67,0xf4,0xca,0xc2,0x97,0xdf,0xd0,0x8d, - 0xe4,0xf1,0x0b,0xeb,0xd9,0xf8,0x1e,0x0d,0xd8,0xaf,0xe0,0x43,0xe9,0x91,0x8b,0xf8, - 0x3c,0x67,0x78,0x3f,0xe1,0x2b,0x53,0x60,0x23,0x39,0x5d,0xf5,0xd1,0x2e,0x81,0x5d, - 0x20,0x87,0x29,0x2e,0xf8,0x3d,0x0f,0xf7,0x1c,0x67,0x47,0xf6,0xa0,0xca,0x85,0xf5, - 0x95,0x66,0xaf,0x85,0xb3,0x0e,0x8d,0x1c,0xf5,0x96,0xb8,0x7f,0x6a,0x74,0x99,0x98, - 0x97,0x8d,0x46,0x57,0xe0,0xa9,0x46,0x69,0x97,0xd7,0xe8,0x4a,0x9c,0x9b,0xdf,0x67, - 0x17,0x78,0xf2,0x54,0x8d,0x52,0x2e,0xaf,0xd1,0xba,0x02,0x8d,0x8a,0x5c,0x58,0xb7, - 0x1a,0x15,0xbb,0x80,0xab,0x46,0x25,0xf8,0xbc,0x6a,0x78,0xce,0x05,0x5f,0x99,0x02, - 0x1b,0xc9,0x49,0x35,0x12,0x4c,0x35,0x9a,0xe6,0x82,0x5f,0xc9,0xcb,0xb9,0x90,0xab, - 0x6a,0x34,0xd2,0x85,0xf5,0x2a,0xf2,0x54,0x8d,0xd6,0xa3,0x51,0x82,0x7a,0xb3,0x05, - 0x1a,0x95,0x12,0x53,0x9e,0xaa,0x51,0x99,0x0b,0x3c,0xd5,0x68,0x88,0xd1,0x48,0xd6, - 0x06,0xf8,0x51,0x0e,0xaf,0xdc,0x68,0x34,0xd0,0x68,0xb4,0xbe,0x40,0xa3,0x41,0x2e, - 0xac,0x5b,0x8d,0x06,0xbb,0x80,0xab,0x46,0x59,0x7c,0x8a,0x7f,0xe5,0x65,0xc8,0x25, - 0x53,0x60,0x33,0xc4,0x68,0x94,0x35,0x1a,0x4d,0x77,0xc1,0xaf,0xe4,0x95,0x21,0x57, - 0xd5,0x68,0xb4,0x0b,0xeb,0xa2,0x55,0x02,0x7f,0x7a,0xf6,0xd6,0xd2,0x8b,0x62,0x37, - 0x83,0x5e,0x6b,0x82,0x93,0x75,0xf9,0x33,0xff,0x22,0x67,0x7e,0x83,0x39,0xf3,0x1b, - 0xc1,0xf5,0xcc,0xbf,0x04,0xa6,0x67,0xbe,0xcd,0x9c,0x43,0x59,0x6b,0xf5,0x63,0x2b, - 0x71,0xb7,0x9a,0xfb,0xe4,0x55,0x7c,0x6f,0x33,0xbe,0x5f,0x03,0x57,0xdf,0xaf,0x83, - 0xa9,0xef,0x76,0xe3,0x5b,0xd6,0xb6,0xfb,0xd1,0x8e,0xef,0xed,0xa6,0x0f,0xde,0xa0, - 0x2e,0xf9,0xa6,0x38,0x84,0xaf,0x37,0xc1,0x77,0xa0,0x85,0xf2,0xda,0xd1,0x42,0x6c, - 0xde,0x22,0xe6,0x56,0xec,0xb7,0x13,0xb7,0xc3,0xc4,0x15,0x9b,0x9d,0x7e,0x74,0xc0, - 0xdf,0x69,0xe2,0xbe,0x6d,0xe2,0xce,0xf7,0x5f,0x49,0xf2,0xfd,0xf5,0x0e,0xd8,0x0c, - 0x97,0xff,0x66,0x49,0x70,0x5f,0xcb,0xfa,0x2e,0x78,0x3a,0xda,0xbc,0x2f,0xc1,0x77, - 0xc3,0xdd,0x15,0xfb,0xea,0x13,0xef,0xd5,0xbb,0xf8,0xda,0xcd,0x77,0x53,0x91,0xf9, - 0xbe,0x93,0x9a,0x34,0xa7,0x0e,0xb3,0xbf,0x75,0xc4,0x6e,0x87,0xbf,0x13,0xdb,0x36, - 0x6c,0x5b,0x4d,0xfe,0x9b,0xfe,0x23,0xff,0xcd,0xd7,0xc8,0x7f,0x33,0x79,0x6e,0xc1, - 0x66,0x93,0xc9,0xf3,0x15,0x38,0x5b,0xae,0x91,0xa7,0xc6,0x6e,0x33,0x79,0xde,0xe9, - 0x42,0xae,0x1d,0xf0,0x5b,0x89,0x21,0x6b,0xef,0xb1,0xbe,0x87,0xef,0x3d,0xf9,0x9e, - 0xdc,0x07,0xae,0xfd,0xf4,0x01,0xfd,0xb4,0xdf,0xf4,0xd3,0x87,0xe0,0xda,0x4f,0x1f, - 0x81,0x69,0x3f,0x1d,0x34,0xfb,0x2a,0x6b,0x07,0xe2,0x7e,0x09,0xb9,0x1d,0x32,0xbe, - 0x8f,0xe0,0xfb,0xb0,0xf1,0xfd,0x29,0xb8,0xfa,0xfe,0x0c,0x4c,0x7d,0x77,0x1a,0xdf, - 0xb2,0x76,0xd4,0x8f,0x63,0xf8,0x3e,0x66,0x7e,0x97,0x4f,0xe0,0xfb,0xb8,0xf9,0x5d, - 0xfe,0x02,0xfc,0x04,0xbf,0xf3,0x5f,0x82,0xb5,0x98,0x78,0x5f,0x81,0x2f,0x21,0x5e, - 0x97,0x89,0x27,0x6b,0x27,0xfd,0xe8,0x22,0xde,0x49,0xee,0x4e,0xd1,0x6d,0xbc,0x0b, - 0x9c,0x7d,0x51,0xfe,0xdb,0x4c,0xed,0xba,0xd8,0x0f,0xb1,0x9b,0xe5,0x82,0xcd,0x31, - 0x38,0x27,0x4d,0x3e,0x5f,0x93,0xcf,0x44,0x93,0xcf,0x37,0xe0,0x9a,0x4f,0xb7,0xc9, - 0x47,0xd6,0x4e,0xf9,0xd1,0x4d,0x9c,0x53,0x26,0x9f,0x09,0xe4,0x33,0xcb,0xdc,0x53, - 0x6a,0xd7,0x6d,0xf2,0x99,0xed,0x82,0x4d,0x17,0x9c,0x53,0x26,0x9f,0xef,0xc8,0x67, - 0xbf,0xc9,0xe7,0x7b,0x70,0xcd,0xa7,0xc7,0xe4,0x23,0x6b,0xa7,0xfd,0xe8,0x21,0xce, - 0x69,0x93,0xcf,0x44,0x17,0xfe,0x67,0x98,0xed,0xf2,0xfd,0xaa,0x76,0x3d,0x26,0x9f, - 0x06,0x17,0x6c,0xba,0xe1,0x9c,0xc6,0xb6,0x13,0xdb,0xa3,0xe6,0x3b,0xed,0x73,0xf4, - 0x4e,0x9a,0x38,0x35,0x2e,0x8f,0x47,0x05,0xdc,0x4e,0x13,0xa7,0xde,0x85,0x58,0x3d, - 0x70,0x8e,0x62,0x7b,0x10,0xdb,0x03,0x9c,0x3b,0xb1,0xfd,0x04,0x7f,0xfb,0x38,0x77, - 0x69,0xce,0x6a,0xb2,0x80,0x73,0xd0,0xf8,0x9f,0xe3,0x42,0x8c,0x4e,0xf8,0xe2,0x6f, - 0xba,0x67,0x9c,0x65,0xed,0x2f,0xdf,0x25,0xb5,0x7e,0xfc,0x0d,0x63,0x64,0x8f,0xf3, - 0x88,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x5b,0x6c,0x55,0x45, + 0x14,0x86,0x67,0xce,0x69,0x4f,0x4b,0xb9,0x58,0xe5,0x22,0x85,0xc6,0xb4,0x72,0x11, + 0xa4,0x16,0x44,0x2c,0x48,0x39,0xb4,0x58,0xa4,0x0d,0x54,0xca,0x25,0x9a,0x20,0x56, + 0x02,0xa2,0x02,0x42,0xd1,0xd6,0x18,0x21,0x82,0x85,0x8a,0xd0,0x10,0x21,0x3c,0xf8, + 0x00,0x2a,0x24,0xbe,0xf0,0x60,0x20,0xa8,0xf0,0x20,0xa0,0x34,0x86,0x80,0x51,0x6a, + 0xa2,0x34,0x51,0x6a,0xe0,0xd1,0x27,0x23,0x91,0x88,0x54,0x8d,0xe8,0xac,0x3d,0xdf, + 0x6a,0x97,0x0d,0x6a,0x93,0xc9,0xde,0xf3,0xcf,0xfa,0xd7,0xe5,0x9f,0x35,0xb3,0xdb, + 0xa6,0x53,0x63,0xf2,0x9c,0xf3,0xae,0xc0,0xe5,0xbb,0x45,0xde,0x25,0x3f,0xb7,0xbb, + 0x94,0x93,0xd7,0x81,0x2e,0x93,0x3c,0x6b,0xeb,0x97,0xd6,0x97,0xb7,0xbc,0xb4,0xba, + 0x7c,0xda,0x83,0x53,0x64,0x7d,0x88,0x4b,0x27,0x76,0xb2,0x76,0x9b,0xcb,0x73,0x39, + 0xe1,0x29,0x63,0xc3,0xca,0xb5,0x4d,0x82,0x8f,0x0f,0xe3,0x4a,0x18,0x85,0xc1,0x4e, + 0xf0,0x3c,0xf1,0x11,0xde,0xc6,0x27,0x3e,0x85,0xe3,0x5c,0x9d,0xcb,0x75,0x65,0x31, + 0x9c,0x1b,0xc3,0x53,0x31,0x0f,0x96,0x6f,0xb0,0x14,0x58,0xa1,0xc1,0xd2,0x60,0xc3, + 0x0c,0x96,0x03,0x36,0xd2,0x60,0xb9,0x60,0xc5,0x06,0xcb,0x80,0x95,0x18,0x2c,0x0f, + 0x6c,0xac,0xc1,0xf2,0xc1,0x26,0x18,0x6c,0x00,0x58,0x99,0xc1,0x0a,0xc0,0xa6,0x18, + 0x6c,0x20,0xd8,0x34,0x83,0x0d,0x02,0x9b,0x61,0xb0,0xc1,0x60,0xb3,0x12,0x9d,0xd2, + 0xbd,0xf5,0x8a,0x66,0xcb,0xc3,0xf3,0x6e,0xf4,0xd1,0x79,0xa9,0x99,0x8b,0xce,0x77, + 0x31,0x1f,0x1a,0x58,0xa9,0x64,0x3d,0x9d,0x68,0x23,0xef,0x23,0xc2,0x5b,0x86,0x3a, + 0x27,0x05,0xfb,0x0c,0xf1,0x7e,0x38,0x3a,0x2e,0x3b,0x2c,0x58,0x0c,0x31,0xb8,0x68, + 0x76,0xb4,0x76,0x65,0x56,0xe7,0xa2,0xd7,0x81,0xfd,0x45,0xd5,0xc3,0xc3,0xbc,0x04, + 0x1f,0xb2,0x37,0x77,0x86,0x79,0x29,0xf3,0x14,0xf3,0xb1,0x68,0x9a,0x93,0xe0,0x39, + 0x6e,0x1c,0xb6,0x82,0x57,0x32,0x1f,0x6f,0xf8,0xf7,0x60,0x2f,0x7c,0xf1,0x3f,0x09, + 0x7f,0x2e,0xa9,0xa7,0x30,0xd1,0xa0,0x94,0x51,0xd2,0x9b,0xff,0x7f,0x8f,0x92,0xde, + 0x67,0x8e,0xbb,0x8f,0x7d,0x2a,0x23,0xbe,0xcc,0xcb,0xc1,0x26,0x51,0xcf,0x64,0xf2, + 0x11,0xfb,0x29,0xac,0x95,0x9a,0xf5,0x0a,0x53,0xcf,0xf4,0x5e,0x6e,0x5c,0x97,0xe7, + 0x4c,0xf2,0x55,0xfb,0x1a,0x7a,0x4d,0xe7,0x0b,0xd1,0x5a,0xea,0x7d,0x9c,0xfc,0xc4, + 0x5f,0x51,0xf0,0xb4,0xcc,0xe8,0xe9,0x6e,0xf1,0x94,0x98,0x4f,0xf0,0xbe,0x8c,0x1a, + 0x64,0xbe,0xbc,0x5f,0xcc,0xc6,0x7e,0xf3,0x55,0x9c,0x0b,0xe1,0x3f,0x4d,0xce,0x25, + 0xe4,0xf0,0x2c,0xef,0x69,0x63,0xbf,0x8e,0x3d,0xd0,0x79,0x13,0xfb,0xa2,0xf3,0xad, + 0x9c,0x0b,0x9d,0x1f,0xa0,0xaf,0x75,0x7e,0x8c,0x33,0xa2,0xf3,0x53,0xfd,0x34,0x3e, + 0x47,0xcf,0x6b,0x4f,0x7d,0x65,0xf2,0x95,0xf9,0xf7,0xc9,0xac,0xb5,0x4a,0xf2,0xbd, + 0x4c,0x6e,0xda,0x33,0x97,0xb9,0x47,0xd2,0xc6,0x7e,0x66,0x10,0x68,0x5b,0x6b,0x6b, + 0x65,0x59,0xc8,0x2a,0xb1,0xf3,0x11,0xb3,0x43,0x6d,0x67,0x85,0xf7,0x8d,0x87,0x9b, + 0xab,0x74,0x9e,0x0d,0xf3,0x7d,0x6d,0x07,0xb3,0x15,0x61,0x97,0x52,0xec,0x85,0xc3, + 0x7f,0x4f,0x40,0x64,0xef,0xb2,0xf4,0xf2,0x04,0xfa,0xb5,0x21,0xc4,0x91,0x5e,0x9d, + 0x08,0x36,0xc1,0xec,0x53,0x13,0xe7,0xe0,0x5e,0xd6,0xe7,0x04,0x0f,0xd2,0x47,0xf7, + 0xd3,0x6b,0x93,0xf1,0x27,0x36,0x53,0xc1,0xb7,0x07,0x1b,0x99,0x3f,0x00,0x6f,0x2a, + 0xbc,0xe9,0xdc,0x09,0xe5,0xf4,0x5d,0x96,0x1e,0x7b,0x08,0xfc,0xfd,0x60,0x33,0x24, + 0xd1,0x25,0x62,0xd2,0x7b,0x37,0x42,0xe6,0x59,0xf2,0xf9,0x3d,0xd8,0x57,0x72,0x87, + 0x64,0xa9,0x47,0xde,0x17,0x07,0x9e,0xec,0x43,0x35,0x31,0x5d,0xb2,0xa7,0x71,0x6f, + 0xe6,0x80,0x2f,0x09,0xea,0x24,0xe7,0xcc,0x47,0x4c,0xed,0x7e,0x0b,0x3e,0xd4,0x97, + 0x3c,0xaf,0x07,0x2d,0xc4,0x6e,0xb6,0x8f,0x36,0xb9,0x70,0x66,0x99,0x1a,0xe6,0x52, + 0x43,0x8d,0xa9,0xe1,0x11,0x70,0xad,0x61,0x1e,0x98,0xd6,0x50,0x67,0x6a,0x98,0x97, + 0xdc,0x6b,0x2e,0xc1,0x24,0x6e,0xad,0xa9,0x61,0x01,0xb1,0xbd,0xa9,0xa1,0x1e,0x5c, + 0x6b,0x18,0xe3,0x23,0xa6,0x76,0x52,0x83,0xfa,0xaa,0x33,0x35,0x54,0xf9,0x68,0x93, + 0x85,0x53,0x6b,0x6a,0x68,0xa0,0x86,0x85,0xa6,0x86,0x45,0xe0,0x5a,0xc3,0x62,0x30, + 0xad,0x61,0xa9,0xa9,0x61,0x71,0x92,0x8f,0x4b,0x30,0x89,0xbb,0x84,0x3e,0x92,0xb8, + 0x8f,0x11,0xbb,0xca,0xf7,0x9d,0x75,0xc9,0x51,0x6d,0x97,0x9a,0x1c,0xab,0xb1,0xab, + 0x83,0xb7,0x84,0x7c,0xe4,0x3e,0x78,0x92,0xbb,0x40,0x7b,0xee,0x29,0x72,0x6e,0x34, + 0x3d,0xb7,0x02,0xbc,0x95,0x9e,0x5b,0x09,0x56,0xed,0x23,0x4f,0xee,0x87,0xd5,0xf0, + 0x56,0xc1,0x13,0x4d,0x9f,0x01,0x57,0xdd,0x9f,0x83,0xeb,0x0c,0xb6,0x06,0xcc,0x27, + 0x3a,0x64,0x92,0xbb,0x65,0x2d,0xb6,0x6b,0xf0,0xa1,0x31,0x9e,0x27,0xc6,0x3a,0x13, + 0x63,0x3d,0xf8,0x8a,0x50,0xab,0xdc,0x8d,0x1b,0xa8,0x69,0x2d,0xf7,0xd1,0x7a,0xb3, + 0x1f,0x1b,0xe1,0x37,0x99,0xfd,0x78,0x01,0x5c,0xf7,0xe3,0x45,0x30,0xdd,0x8f,0x16, + 0xb3,0x1f,0xb2,0xd6,0x1c,0xc6,0x16,0x34,0xde,0x62,0x7c,0xbf,0x86,0xef,0xad,0xc6, + 0x77,0x2b,0xb8,0xfa,0xde,0x06,0xa6,0xbe,0xdb,0x8c,0xef,0x6d,0xc9,0x99,0x76,0x09, + 0x26,0xbe,0xb7,0x1b,0x8d,0x76,0x50,0x97,0xdc,0x2f,0x47,0xf0,0xf5,0x06,0x78,0x23, + 0xfb,0xae,0xbc,0x36,0xf6,0x5d,0x6c,0x76,0x12,0x73,0x0b,0xf6,0xdb,0x89,0xdb,0x6e, + 0xe2,0x8a,0xcd,0xae,0x30,0xda,0xe1,0xef,0x32,0x71,0x77,0x9b,0xb8,0x0d,0xe1,0x76, + 0x96,0xbd,0x79,0x13,0x6c,0x83,0xb9,0xbf,0x52,0x66,0xef,0xf6,0xc0,0xd3,0xb1,0x33, + 0xf8,0x12,0x7c,0x2f,0xdc,0x3d,0x89,0xaf,0x01,0xc9,0x5e,0xed,0xc3,0xcf,0x5e,0xee, + 0xd0,0x5c,0xbe,0x19,0x69,0x6a,0xd2,0x9c,0xda,0xa9,0x49,0x38,0x35,0x3e,0x72,0xda, + 0xe0,0xef,0xc2,0xb6,0x05,0xdb,0x66,0x93,0xff,0xcb,0xb7,0xc8,0xff,0x95,0xff,0xc9, + 0x7f,0x13,0x3c,0x1d,0xaf,0x93,0xff,0x66,0xb8,0x9b,0x4c,0xfe,0xaf,0xe2,0x67,0xf3, + 0xbf,0xe4,0xaf,0x39,0xb5,0x98,0xfc,0x1f,0xf6,0xb1,0x86,0x76,0xf8,0xcd,0x49,0xff, + 0xc5,0x6f,0xc5,0x5b,0xac,0xef,0x08,0x9e,0x64,0xbe,0x1f,0xac,0xd2,0xf7,0xf5,0xd9, + 0xdb,0xf4,0xd9,0x01,0xd3,0x67,0xef,0x80,0x6b,0x9f,0xbd,0x0b,0xa6,0x7d,0x76,0xc8, + 0xec,0xb7,0xac,0x1d,0x0c,0xe3,0x10,0xb9,0x1d,0x44,0x2f,0xc9,0xfb,0x3d,0x62,0x3a, + 0x78,0x3d,0xbc,0xff,0x11,0xde,0xc5,0xd7,0x8f,0x70,0xe4,0x79,0x9a,0x58,0x3f,0xc1, + 0x1b,0x0c,0xe7,0x86,0x89,0x25,0x6b,0x57,0xc3,0xb8,0x06,0xef,0x5a,0xd2,0x8f,0x31, + 0xd6,0x2f,0xf0,0x46,0xba,0x58,0x6f,0x26,0xd1,0x28,0xe2,0xf2,0xbd,0x1d,0x14,0xf4, + 0x12,0xec,0x57,0xf6,0x68,0x14,0xeb,0xc5,0x68,0xdb,0x83,0xcf,0xab,0x86,0xff,0x33, + 0x3e,0xe5,0xfb,0x6c,0x6d,0x24,0xa7,0xbf,0x82,0x97,0x1e,0xb0,0xeb,0xf8,0x9e,0xeb, + 0xa3,0xff,0x6b,0x70,0xaf,0x72,0xff,0x8b,0xf6,0x13,0x7d,0x5c,0xdf,0x6f,0xee,0x2b, + 0xe1,0x1c,0x46,0x23,0x4f,0xbd,0x05,0xfe,0x9f,0x1a,0xdd,0x24,0xe6,0x4d,0xa3,0x91, + 0x18,0x1f,0x36,0x1a,0x0d,0xf0,0x7d,0x1a,0xc9,0x9a,0x0f,0x23,0xc7,0x47,0x9e,0x3c, + 0x55,0xa3,0x0c,0x3c,0xab,0x51,0x9e,0x8f,0xb8,0xd5,0x28,0xdf,0xf7,0x69,0x24,0xeb, + 0xaa,0x51,0x01,0x3e,0xbd,0xef,0xe3,0xa7,0xf1,0xa9,0x1a,0xa9,0x8d,0xe4,0xa4,0x1a, + 0x09,0xa6,0x1a,0xcd,0xf3,0xd1,0xbf,0xe4,0x95,0x26,0x57,0xd5,0xa8,0xcc,0xc7,0xf5, + 0x89,0xc4,0x57,0x8d,0x8e,0xa0,0x51,0x8a,0x7a,0x8b,0xfb,0x69,0x54,0x48,0x4c,0x79, + 0xaa,0x46,0x77,0xf8,0xc8,0x53,0x8d,0x46,0x1b,0x8d,0x64,0x6d,0x68,0x18,0x23,0xe0, + 0x8d,0x30,0x1a,0x8d,0x84,0x67,0x35,0x2a,0xf2,0x11,0xb7,0x1a,0x8d,0x32,0x1a,0x15, + 0x19,0x8d,0x8a,0xf1,0x39,0xd4,0x68,0x34,0x1c,0x9f,0xaa,0x91,0xda,0x8c,0x36,0x1a, + 0x15,0x1b,0x8d,0xea,0x7c,0xf4,0x2f,0x79,0x0d,0x27,0x57,0xd5,0x68,0xb2,0x8f,0xeb, + 0xa2,0x55,0x8a,0x98,0x7a,0xf6,0x0e,0xd1,0x8b,0x62,0x37,0x9f,0x5e,0x6b,0x81,0x53, + 0x6c,0xce,0xfc,0x07,0x9c,0xf9,0x63,0xe6,0xcc,0x7f,0x08,0xae,0x67,0xfe,0x23,0x30, + 0x3d,0xf3,0x27,0xcc,0x39,0x94,0xb5,0xe3,0x61,0x9c,0x24,0xee,0x49,0xf3,0xdd,0x3a, + 0x8d,0xef,0x53,0xc6,0xf7,0x27,0xe0,0xea,0xfb,0x53,0x30,0xf5,0xdd,0x61,0x7c,0xcb, + 0xda,0x99,0x30,0xce,0xe2,0xfb,0xac,0xf9,0x5e,0x9f,0xc7,0xf7,0x39,0xf3,0xbd,0xfe, + 0x1c,0xfc,0x3c,0x77,0xf4,0x17,0x60,0xeb,0x4c,0xbc,0x2f,0xc1,0x1b,0x89,0xd7,0x69, + 0xe2,0xc9,0xda,0x85,0x30,0x3a,0x89,0x77,0xc1,0x9c,0xd9,0x69,0x3e,0xfe,0x5d,0x30, + 0xdf,0xfc,0xce,0xa6,0x76,0x9d,0x46,0xeb,0x05,0x3e,0xda,0x9c,0x85,0x73,0xc1,0xe4, + 0xf3,0x35,0xf9,0x54,0x98,0x7c,0xbe,0x01,0xd7,0x7c,0xba,0x4c,0x3e,0xb2,0x76,0x31, + 0x8c,0x2e,0xe2,0x5c,0x34,0xf9,0x54,0x90,0xcf,0x02,0xb3,0xf7,0x6a,0xd7,0x65,0xf2, + 0xa9,0xf7,0xd1,0xa6,0x13,0xce,0x45,0x93,0xcf,0xb7,0xe4,0x73,0xcc,0xe4,0xf3,0x1d, + 0xb8,0xe6,0xd3,0x6d,0xf2,0x91,0xb5,0x4b,0x61,0x74,0x13,0xe7,0x92,0xc9,0x67,0x86, + 0x8f,0x7f,0x27,0x49,0x3c,0xfd,0x46,0xa9,0x5d,0xb7,0xc9,0xa7,0xc1,0x47,0x9b,0x2e, + 0x38,0x97,0xb0,0xed,0xc0,0xf6,0x8c,0x39,0xeb,0x9f,0xa1,0x77,0xda,0xc4,0x99,0xea, + 0xfb,0x70,0xd7,0x8f,0xdb,0x61,0xe2,0x2c,0xf4,0x31,0x56,0x37,0x9c,0x33,0xd8,0x9e, + 0xc0,0xf6,0x38,0xdf,0x5a,0xb1,0xfd,0x18,0x7f,0x32,0xf4,0x7f,0x41,0x29,0xf3,0xad, + 0x55,0xce,0x09,0xe3,0xff,0x51,0x1f,0x63,0x74,0xc0,0x17,0x7f,0xb3,0x03,0xe3,0x0a, + 0x6b,0x7f,0x86,0x2e,0x99,0x11,0xc6,0xdf,0x4e,0x82,0xe5,0xaf,0xbc,0x12,0x00,0x00 }; // Generated from: @@ -120,8 +120,8 @@ constexpr uint8_t kImageCopy_frag_00000011[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture2DArray src; -// layout(location = 0)out ivec4 dst; +// layout(set = 0, binding = 0)uniform itexture2DArray src; +// layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -146,16 +146,16 @@ constexpr uint8_t kImageCopy_frag_00000011[] = { // bool rotateXY; // } params; // -// float linearToSRGB(float linear) +// float sRGBToLinear(float sRGB) // { // -// if(linear <= 0.0031308) +// if(sRGB <= 0.04045) // { -// return linear * 12.92; +// return sRGB / 12.92; // } // else // { -// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); // } // } // @@ -178,15 +178,7 @@ constexpr uint8_t kImageCopy_frag_00000011[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); -// -// if(params . srcIsSRGB) -// { -// -// srcValue . r = linearToSRGB(srcValue . r); -// srcValue . g = linearToSRGB(srcValue . g); -// srcValue . b = linearToSRGB(srcValue . b); -// } +// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { @@ -197,9 +189,17 @@ constexpr uint8_t kImageCopy_frag_00000011[] = { // srcValue . rgb /= srcValue . a; // } // -// srcValue *= 255.0; +// vec4 dstValue = vec4(srcValue); // -// ivec4 dstValue = ivec4(srcValue); +// dstValue /= 255.0; +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc index 6910d890a6aa83faf3061aaa1bec92cc2ac6779c..e3c675f64fe7ae1b38797e83802b0451dab2e4d0 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc @@ -10,108 +10,109 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000012[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0x6b,0x6f,0x55,0x45, - 0x14,0x86,0xf7,0x9c,0x73,0x7a,0xa1,0x08,0x56,0x0b,0x08,0xa5,0x31,0xad,0x60,0x05, - 0xa9,0x05,0x11,0xb9,0x95,0x22,0xd7,0xb6,0x08,0x82,0xb4,0x21,0x41,0xc4,0x4b,0x15, - 0x85,0xca,0x45,0x41,0xfd,0xc2,0x07,0x25,0x22,0x96,0x04,0x03,0x11,0x54,0x1a,0x51, - 0x1a,0x23,0x44,0x62,0x13,0x41,0x85,0xc4,0x08,0x2a,0x4d,0x0c,0xa2,0x51,0x9a,0x28, - 0x4d,0x94,0x06,0x7e,0x01,0x91,0x48,0x44,0xaa,0x46,0x74,0xd6,0xcc,0xb3,0x7a,0x96, - 0x47,0xb1,0xc9,0x64,0xef,0x79,0xd7,0xfd,0x9d,0xb5,0xe6,0xec,0xa6,0x53,0x23,0x0a, - 0x92,0xc4,0x25,0x45,0x49,0x61,0x32,0xdf,0x25,0xe1,0xef,0xba,0x24,0x95,0xc8,0x6b, - 0xff,0x24,0x3f,0x3c,0xeb,0x17,0x34,0x2d,0xa8,0x7e,0xfa,0x99,0x15,0xd5,0x13,0xee, - 0x1c,0x27,0xf2,0x81,0x49,0x3a,0xe8,0x89,0xec,0xda,0xa4,0x20,0xc9,0xf8,0xa7,0xac, - 0xb5,0xcd,0x2d,0xeb,0x04,0xaf,0xf4,0xeb,0x9c,0x5f,0xc5,0x5e,0x4f,0xf0,0x02,0xf1, - 0xe1,0xdf,0x2a,0x83,0x4f,0xb1,0x49,0x92,0x86,0x24,0x2f,0xa9,0x8a,0xe1,0x92,0x11, - 0x3c,0x15,0x73,0x60,0x85,0x06,0x4b,0x81,0x15,0x1b,0x2c,0x0d,0x36,0xc8,0x60,0x19, - 0xb0,0xa1,0x06,0xcb,0x03,0x2b,0x33,0x58,0x3e,0x58,0xb9,0xc1,0x0a,0xc0,0x46,0x1a, - 0xac,0x10,0x6c,0x94,0xc1,0xfa,0x81,0x55,0x19,0xac,0x08,0x6c,0x9c,0xc1,0xfa,0x83, - 0x4d,0x30,0xd8,0x35,0x60,0x93,0x0d,0x36,0x00,0x6c,0x5a,0xe0,0x29,0xdd,0x57,0xaf, - 0x70,0xb6,0xcc,0x3f,0x6f,0x82,0x1f,0xdd,0x57,0x98,0xbd,0xf0,0x7c,0x23,0xfb,0x12, - 0x6f,0x95,0x0a,0xf2,0x74,0xe0,0x46,0xde,0x87,0xf8,0xb7,0x7c,0xea,0x1c,0xe3,0xf5, - 0xf3,0x89,0x57,0x56,0x7d,0x4f,0xcd,0x20,0xaf,0x31,0xd0,0xe0,0x25,0x7e,0x35,0x7e, - 0xbc,0x70,0xa6,0xee,0x85,0xc3,0x25,0x4b,0xba,0xa7,0xeb,0xbe,0xd4,0xaf,0xda,0xa2, - 0xd6,0xbb,0x74,0x2f,0x7c,0xbe,0x5f,0xdf,0x5c,0x3b,0xd8,0xef,0xcb,0x89,0x21,0x67, - 0x77,0x83,0xdf,0x57,0xb0,0x4f,0xb1,0x1f,0x09,0xe7,0x99,0x80,0x67,0x92,0x9b,0xd1, - 0x15,0xbc,0x86,0x7d,0xa5,0xb1,0xbf,0x05,0x7d,0xb1,0x17,0xff,0x63,0xf0,0x97,0x84, - 0x7a,0x8b,0x03,0x47,0x15,0xac,0xf2,0xbe,0xfa,0xfe,0x7f,0x95,0xf7,0x3d,0x33,0xc9, - 0x6d,0x9c,0x63,0x15,0xf1,0x65,0x5f,0x0d,0x36,0x86,0x7a,0xc6,0x92,0x8f,0xe8,0x8f, - 0x43,0x56,0x61,0xe4,0x13,0x4d,0x3d,0x93,0xfa,0x6c,0xa3,0x5c,0x9e,0x53,0xc9,0x57, - 0xf5,0x67,0xd3,0x8b,0x2a,0x9f,0x87,0x7f,0x95,0x2f,0xe4,0x6c,0x86,0x79,0x4f,0x4b, - 0xa9,0x9f,0x91,0xfc,0xd7,0x53,0x62,0xde,0xc7,0xfb,0x52,0x6a,0x90,0xfd,0xb2,0x9c, - 0x98,0xcb,0x73,0xf6,0xcd,0xcc,0x8d,0xd8,0x3f,0x42,0xce,0xe5,0x70,0xfe,0x18,0xef, - 0x69,0xa3,0xdf,0xc2,0x19,0xe8,0x7e,0x2d,0xbd,0xae,0xfb,0xcd,0xe4,0x29,0xf6,0x2f, - 0xf3,0x6e,0xed,0x77,0x31,0x57,0xda,0x33,0x7b,0x4c,0x3e,0xb2,0x3f,0x10,0x76,0xcf, - 0xcf,0x16,0xfb,0x0e,0xf8,0xcb,0x18,0xfb,0x43,0xcc,0xa0,0xee,0x8f,0xe5,0x9c,0xd1, - 0x49,0x66,0x4a,0xea,0x39,0x4b,0xec,0x0e,0xf8,0x38,0xcb,0x3d,0x94,0x0e,0x67,0x95, - 0x17,0xea,0xc8,0x10,0x5f,0xb0,0x5e,0x8f,0xc8,0x79,0xd4,0xd2,0x9f,0xa3,0xe8,0xc1, - 0x45,0x3e,0x63,0xe9,0xbf,0xd1,0x60,0xa3,0x0c,0xf7,0xeb,0xe8,0xed,0x5b,0x91,0xcf, - 0xf4,0x1e,0xa4,0x37,0x6e,0xa7,0x7f,0xc6,0xe2,0x4f,0x74,0xc6,0x83,0xbf,0xe0,0x75, - 0x64,0x7f,0x07,0x76,0xe3,0xb1,0x9b,0xc4,0x3d,0x50,0x4d,0x2f,0xd5,0xd2,0x17,0x53, - 0xc0,0x3b,0xbc,0xce,0xc0,0x50,0x4b,0xc4,0xa4,0x9f,0x2e,0xfb,0xcc,0x6b,0xc9,0xe7, - 0x77,0xaf,0x5f,0xc3,0xbd,0x51,0x4b,0x3d,0xf2,0xbe,0xd8,0xdb,0x09,0x37,0x33,0x88, - 0x29,0x7f,0xcf,0xc1,0xd7,0x4c,0xf0,0x46,0xcf,0x7e,0x98,0x1d,0x17,0x31,0xd5,0xfb, - 0xcd,0xfb,0x50,0x5f,0xf2,0xbc,0xe4,0xb9,0x10,0xbd,0x29,0x2e,0xea,0xe4,0x61,0x33, - 0xcd,0xd4,0x30,0x87,0x1a,0x66,0x9b,0x1a,0xe6,0x82,0x6b,0x0d,0x75,0x60,0x5a,0x43, - 0x83,0xa9,0xa1,0x2e,0xdc,0x65,0x49,0xc0,0x24,0x6e,0xbd,0xa9,0x61,0x3e,0xb1,0x9d, - 0xa9,0x61,0x01,0xb8,0xd6,0x30,0xc2,0x45,0x4c,0xf5,0xa4,0x06,0xf5,0xd5,0x60,0x6a, - 0x98,0xea,0xa2,0x4e,0x2d,0x36,0xf5,0xa6,0x86,0x45,0xd4,0xb0,0xd0,0xd4,0x70,0x2f, - 0xb8,0xd6,0xb0,0x18,0x4c,0x6b,0x68,0x32,0x35,0x2c,0x0e,0xf9,0x24,0x01,0x93,0xb8, - 0x8d,0xf4,0x91,0xc4,0x5d,0x42,0xec,0xa9,0x2e,0x3b,0xbf,0x92,0xa3,0xea,0x36,0x99, - 0x1c,0x6b,0xd0,0x6b,0xc0,0xae,0x91,0x7c,0x64,0xc6,0xef,0x67,0xbe,0xb5,0xe7,0x1e, - 0x20,0xe7,0xe5,0xa6,0xe7,0x1e,0x04,0xdf,0x44,0xcf,0x3d,0x0c,0x56,0xe3,0xa2,0x9d, - 0xcc,0xfc,0xa3,0xd8,0x35,0x63,0x27,0x9c,0xae,0x00,0x57,0xde,0x1f,0xc7,0x36,0x31, - 0xd8,0x4a,0x30,0x17,0x78,0xc8,0x0f,0xf7,0xc5,0x2a,0x74,0x57,0xe2,0x43,0x63,0x3c, - 0x41,0x8c,0x16,0x13,0x63,0x35,0xf8,0x43,0xbe,0x56,0x99,0xb7,0x35,0xd4,0xb4,0x8a, - 0x3b,0x66,0xb5,0x39,0x8f,0x75,0xd8,0xaf,0x35,0xe7,0xf1,0x24,0xb8,0x9e,0xc7,0x53, - 0x60,0x7a,0x1e,0x1b,0xcc,0x79,0x88,0x6c,0xbd,0x5f,0x1b,0xe0,0x78,0x3d,0x75,0xc8, - 0x9d,0xf3,0x2c,0xb1,0x13,0xec,0x7a,0x79,0xff,0xc3,0xbf,0x8b,0xaf,0xf3,0xd8,0x9c, - 0x0f,0xf7,0x4d,0x8c,0xf5,0x13,0x76,0x03,0xb0,0xb9,0x6c,0x62,0x89,0xec,0x82,0x5f, - 0x17,0xb1,0xbb,0x18,0xee,0xa4,0x82,0x10,0xeb,0x17,0xf8,0x2a,0xc5,0x5e,0x7e,0x53, - 0xb7,0x90,0xc7,0x25,0xe4,0xa5,0xe1,0x1e,0x8d,0xd8,0xaf,0xe0,0x65,0xf4,0x48,0x2f, - 0x3e,0x2f,0x18,0xbb,0x9f,0xf1,0x55,0x92,0xa3,0x23,0x39,0xfd,0xe5,0xa3,0xf5,0x82, - 0x5d,0x22,0x87,0x69,0x2e,0xfa,0xbd,0x88,0xed,0x05,0x66,0x47,0xce,0xa0,0xd2,0x45, - 0xf9,0x1a,0x73,0xd6,0x62,0xb3,0x11,0x8e,0x1c,0xf5,0x16,0xb9,0x7f,0x72,0x74,0x85, - 0x98,0x57,0x0c,0x47,0xa2,0xbc,0xd1,0x70,0xd4,0xcf,0x65,0x39,0x12,0x99,0xf3,0x2b, - 0xe3,0xa2,0x9d,0x3c,0x95,0xa3,0x7c,0x97,0xe5,0x68,0x63,0x0e,0x47,0x05,0x2e,0xca, - 0x2d,0x47,0x85,0x2e,0xe2,0xca,0x51,0x11,0x3e,0xc5,0xbf,0xda,0xa5,0xc9,0xa5,0x24, - 0x47,0x47,0x72,0x52,0x8e,0x04,0x53,0x8e,0xa6,0xbb,0xe8,0x57,0xf2,0x4a,0x93,0xab, - 0x72,0x34,0xda,0x45,0x79,0x25,0x79,0x2a,0x47,0x9b,0xe0,0x28,0x45,0xbd,0x65,0x39, - 0x1c,0x15,0x13,0x53,0x9e,0xca,0xd1,0xf5,0x2e,0xda,0x29,0x47,0xc3,0x0d,0x47,0x22, - 0x2b,0xf1,0x6b,0x08,0x76,0x43,0x0c,0x47,0x43,0x0d,0x47,0x9b,0x72,0x38,0x1a,0xe6, - 0xa2,0xdc,0x72,0x54,0xea,0x22,0xae,0x1c,0x95,0xe1,0xb3,0xc4,0x70,0x34,0x98,0x5c, - 0x4a,0x72,0x74,0x86,0x1b,0x8e,0xca,0x0c,0x47,0x33,0x5c,0xf4,0x2b,0x79,0x0d,0x26, - 0x57,0xe5,0xa8,0xca,0x45,0xb9,0x70,0x95,0xc2,0x9f,0xce,0xde,0x06,0x7a,0x51,0xf4, - 0x66,0xd1,0x6b,0x4d,0xd8,0x94,0xb9,0xec,0xcc,0xbf,0xc8,0xcc,0x6f,0x36,0x33,0xbf, - 0x05,0x5c,0x67,0xfe,0x25,0x30,0x9d,0xf9,0xad,0x66,0x0e,0x45,0xd6,0xea,0xd7,0x4e, - 0xe2,0xee,0x34,0xf7,0xc9,0xab,0xf8,0xde,0x65,0x7c,0xbf,0x06,0xae,0xbe,0x5f,0x07, - 0x53,0xdf,0x6d,0xc6,0xb7,0xc8,0x76,0xfb,0xd5,0x86,0xef,0xdd,0xa6,0x0f,0xde,0xa0, - 0x2e,0xf9,0xa6,0xf8,0x04,0x5f,0x6f,0x82,0xef,0x81,0x0b,0xb5,0x6b,0x83,0x0b,0xd1, - 0x79,0x8b,0x98,0x3b,0xd1,0xdf,0x4d,0xdc,0x76,0x13,0x57,0x74,0xf6,0xfa,0xd5,0x8e, - 0xfd,0x5e,0x13,0xf7,0x6d,0x13,0x77,0x91,0xff,0x4a,0x92,0xef,0xaf,0x77,0xc0,0x66, - 0xb9,0xec,0x37,0x4b,0x8a,0xfb,0x5a,0xe4,0xfb,0xb0,0xd3,0xb5,0xd5,0xfb,0x12,0x7c, - 0x3f,0xb6,0xfb,0x82,0xaf,0x7e,0xe1,0xac,0xde,0xc5,0xd7,0x7e,0xbe,0x9b,0xf2,0xcc, - 0xf7,0x9d,0xd4,0xa4,0x39,0xb5,0x9b,0xf3,0x9d,0x4b,0xec,0x36,0xec,0xf7,0xa2,0xbb, - 0x15,0xdd,0x56,0x93,0xff,0xb6,0xff,0xc8,0x7f,0xfb,0x55,0xf2,0xdf,0x4e,0x9e,0x3b, - 0xd0,0xd9,0x66,0xf2,0x7c,0x05,0x9b,0x1d,0x57,0xc9,0x53,0x63,0x6f,0x35,0x79,0xce, - 0x71,0x31,0xd7,0x76,0xec,0x5b,0x89,0x21,0xb2,0xf7,0x90,0x1f,0x08,0xbf,0x3f,0xf1, - 0xbb,0xf4,0x20,0xb8,0xf6,0xd3,0x07,0xf4,0xd3,0x21,0xd3,0x4f,0x1f,0x82,0x6b,0x3f, - 0x7d,0x04,0xa6,0xfd,0x74,0xc4,0x9c,0xab,0xc8,0x0e,0xfb,0x75,0x94,0xdc,0x8e,0x1a, - 0xdf,0x9f,0xe2,0xfb,0x98,0xf1,0xfd,0x19,0xb8,0xfa,0xfe,0x1c,0x4c,0x7d,0x77,0x1a, - 0xdf,0x22,0x3b,0xee,0xd7,0x09,0x7c,0x9f,0x30,0xbf,0xcb,0x5f,0xe1,0xfb,0xa4,0xf9, - 0x5d,0xfe,0x1a,0xfc,0x4b,0x7e,0xe7,0xbf,0x01,0x6b,0x31,0xf1,0xbe,0x05,0x5f,0x4e, - 0xbc,0x2e,0x13,0x4f,0x64,0xa7,0xfc,0xea,0x22,0xde,0x29,0x7e,0x5f,0x84,0xb7,0x09, - 0x2e,0xe6,0x78,0x30,0xc9,0x7e,0x9b,0xa9,0x5e,0x17,0xe7,0x21,0x7a,0x75,0x2e,0xea, - 0x9c,0xc0,0xe6,0x94,0xc9,0xe7,0x3b,0xf2,0x99,0x68,0xf2,0xf9,0x1e,0x5c,0xf3,0xe9, - 0x36,0xf9,0x88,0xec,0xb4,0x5f,0xdd,0xc4,0x39,0x6d,0xf2,0x99,0x48,0x3e,0x75,0xe6, - 0x9e,0x52,0xbd,0x6e,0x93,0x4f,0xbd,0x8b,0x3a,0x5d,0xd8,0x9c,0x36,0xf9,0xfc,0x40, - 0x3e,0x87,0x4c,0x3e,0x3f,0x82,0x6b,0x3e,0x3d,0x26,0x1f,0x91,0x9d,0xf1,0xab,0x87, - 0x38,0x67,0x4c,0x3e,0x93,0x5d,0xfc,0x3f,0xb0,0xde,0x65,0xfb,0x55,0xf5,0x7a,0x4c, - 0x3e,0x77,0xbb,0xa8,0xd3,0x8d,0xcd,0x19,0x74,0x3b,0xd1,0x3d,0xce,0x5c,0x49,0xaf, - 0x7c,0x01,0xdf,0x69,0x13,0x67,0xbc,0xcb,0xe2,0x49,0x8e,0x6d,0xa7,0x89,0x33,0xcf, - 0xc5,0x58,0x3d,0xd8,0x1c,0x47,0xf7,0x08,0xba,0x87,0x99,0xbb,0x8e,0x70,0xd7,0x45, - 0x7f,0x07,0x99,0xbb,0x02,0x66,0x35,0x9d,0x63,0x73,0xc4,0xf8,0x6f,0x70,0x31,0x46, - 0x27,0xf6,0xe2,0x6f,0xba,0xb7,0x38,0x87,0xec,0x4f,0xdf,0x25,0x93,0xfd,0xfa,0x1b, - 0x41,0xa4,0x8e,0x49,0x98,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x4c,0x96,0x55, + 0x18,0xc7,0xef,0xf3,0x3c,0xf0,0x80,0xf8,0x12,0xe5,0x4b,0xa2,0xac,0x41,0xa8,0x69, + 0x12,0x9a,0x19,0x9a,0xf8,0x08,0xa6,0x09,0x53,0x12,0x5f,0x56,0x9b,0x19,0x39,0xcc, + 0x4a,0x4d,0xb1,0xa0,0xb5,0x74,0x69,0x28,0x99,0xb2,0x96,0xce,0x0f,0x7d,0xd0,0x4a, + 0xb7,0xbe,0xf8,0xa1,0xe9,0xac,0xf4,0x43,0x6a,0xc9,0x9a,0xd3,0x56,0xd2,0x56,0xb2, + 0x95,0x34,0xfd,0xd8,0xa7,0x96,0xcb,0x65,0x52,0x2d,0xeb,0x5c,0xe7,0xfc,0x2e,0xb8, + 0x62,0xbd,0xb0,0x9d,0xdd,0xf7,0xf9,0x9f,0xeb,0x7f,0xbd,0xfc,0xcf,0x75,0xce,0x0d, + 0xa4,0x53,0x65,0x79,0x49,0xe2,0x92,0x82,0x24,0x3f,0x59,0xe2,0x92,0xf0,0x73,0x6b, + 0x92,0x4a,0xe4,0x75,0x70,0x92,0x09,0xcf,0xda,0xfa,0xe5,0xf5,0x15,0xad,0x2f,0xac, + 0xa9,0x98,0x7e,0xff,0x54,0x59,0x1f,0x96,0xa4,0x83,0x9d,0xac,0xdd,0x92,0xe4,0x25, + 0x39,0xfe,0x29,0x63,0x63,0xd3,0xba,0x66,0xc1,0x27,0xf8,0x71,0xc5,0x8f,0x42,0x6f, + 0x27,0x78,0x9e,0xf8,0xf0,0x6f,0x13,0x82,0x4f,0xe1,0x24,0x49,0x5d,0x92,0x9b,0x94, + 0xc7,0x70,0x49,0x19,0x4f,0xc5,0x1c,0x58,0xbe,0xc1,0x52,0x60,0x85,0x06,0x4b,0x83, + 0x8d,0x30,0x58,0x0e,0xd8,0x68,0x83,0xe5,0x82,0x15,0x1b,0x2c,0x03,0x56,0x62,0xb0, + 0x3c,0xb0,0x71,0x06,0xcb,0x07,0x9b,0x68,0xb0,0x41,0x60,0xe5,0x06,0x2b,0x00,0x9b, + 0x6a,0xb0,0xc1,0x60,0xd3,0x0d,0x36,0x04,0x6c,0xa6,0xc1,0x86,0x82,0xcd,0x0e,0x3a, + 0xa5,0xfb,0xea,0x15,0xcd,0x56,0xfa,0xe7,0x9d,0xe8,0xa3,0xf3,0x52,0x33,0x17,0x9d, + 0xef,0x60,0x3e,0xdc,0xb3,0x52,0x61,0x3d,0x1d,0xb4,0x91,0xf7,0x51,0xfe,0x2d,0x43, + 0x9d,0x93,0xbd,0x7d,0x86,0x78,0xdf,0x1f,0x1d,0x9f,0x1d,0xe1,0x2d,0x86,0x19,0x5c, + 0x34,0x3b,0x5a,0xdb,0x94,0xd5,0xb9,0xe8,0x75,0x60,0x7f,0x51,0xcd,0x48,0x3f,0x2f, + 0xc1,0x87,0xec,0xcd,0xed,0x7e,0x5e,0xca,0x3c,0xc5,0x7c,0x1c,0x9a,0xe6,0x04,0x3c, + 0x27,0x19,0x8f,0xad,0xe0,0x55,0xcc,0x27,0x18,0xfe,0x5d,0xd8,0x0b,0x5f,0xfc,0x4f, + 0xc6,0x5f,0x12,0xea,0x29,0x0c,0x1a,0x94,0x32,0x4a,0xfa,0xf2,0xff,0xef,0x51,0xd2, + 0xf7,0xcc,0x49,0xee,0x61,0x9f,0xca,0x89,0x2f,0xf3,0x0a,0xb0,0xc9,0xd4,0x33,0x85, + 0x7c,0xc4,0x7e,0x2a,0x6b,0xa5,0x66,0xbd,0xd2,0xd4,0x33,0xa3,0x8f,0x1b,0xd7,0xe5, + 0x39,0x8b,0x7c,0xd5,0x7e,0x1e,0xbd,0xa6,0xf3,0xc5,0x68,0x2d,0xf5,0x3e,0x4a,0x7e, + 0xe2,0xaf,0xc8,0x7b,0x5a,0x61,0xf4,0xb3,0x3f,0x1c,0xc1,0x10,0xf3,0x31,0xde,0x57, + 0x50,0x83,0xcc,0x57,0x0e,0x88,0xd9,0x38,0x60,0xbe,0x9a,0x73,0x21,0xfc,0x27,0xc9, + 0xb9,0x84,0x1c,0x9e,0xe6,0x3d,0x6d,0xec,0xd7,0x93,0x83,0xce,0x9b,0xd9,0x17,0x9d, + 0x6f,0xe3,0x5c,0xe8,0xfc,0x00,0x7d,0xad,0xf3,0x63,0x9c,0x11,0x9d,0x9f,0x1a,0xa0, + 0xf1,0x39,0x7a,0x5e,0x7b,0xea,0x4b,0x93,0xaf,0xcc,0xbf,0x0b,0xb3,0xb6,0x6a,0xc9, + 0xf7,0x32,0xb9,0x69,0xcf,0x5c,0xe6,0x1e,0x49,0x1b,0xfb,0x59,0x5e,0xa0,0xed,0x6d, + 0x6d,0x55,0xe5,0x3e,0xab,0x60,0xe7,0x22,0x66,0x87,0xda,0xce,0xf6,0xef,0x9b,0x0e, + 0xb7,0x54,0xeb,0x3c,0xeb,0xe7,0xfb,0xda,0x0f,0x66,0x2b,0xfd,0x2e,0xa5,0xd8,0x8b, + 0x04,0xff,0xbd,0x1e,0x91,0xbd,0xcb,0xd2,0xcb,0x13,0xe9,0xd7,0x06,0x1f,0x47,0x7a, + 0x75,0x12,0xd8,0x44,0xb3,0x4f,0xcd,0x9c,0x83,0xbb,0x59,0x9f,0xeb,0x3d,0x48,0x1f, + 0xdd,0x4b,0xaf,0x4d,0xc1,0x9f,0xd8,0x4c,0x03,0xdf,0xe1,0x6d,0x64,0x7e,0x1f,0xbc, + 0x69,0xf0,0x66,0x70,0x27,0x54,0xd0,0x77,0x59,0x7a,0xec,0x01,0xf0,0xf7,0xbc,0xcd, + 0xb0,0xa0,0x4b,0xc4,0xa4,0xf7,0x6e,0xf8,0xcc,0xb3,0xe4,0xf3,0x9b,0xb7,0xaf,0xe2, + 0x0e,0xc9,0x52,0x8f,0xbc,0x2f,0xf5,0x3c,0xd9,0x87,0x1a,0x62,0x26,0x61,0x4f,0xe3, + 0xde,0xcc,0x05,0x5f,0xe6,0xd5,0x09,0xe7,0xcc,0x45,0x4c,0xed,0x7e,0xf5,0x3e,0xd4, + 0x97,0x3c,0xaf,0x7b,0x2d,0xc4,0x6e,0x8e,0x8b,0x36,0xb9,0x70,0x66,0x9b,0x1a,0xe6, + 0x53,0xc3,0x3c,0x53,0xc3,0x43,0xe0,0x5a,0xc3,0x02,0x30,0xad,0xa1,0xce,0xd4,0xb0, + 0x20,0xdc,0x6b,0x49,0xc0,0x24,0x6e,0xad,0xa9,0x61,0x11,0xb1,0x9d,0xa9,0xa1,0x1e, + 0x5c,0x6b,0x28,0x73,0x11,0x53,0x3b,0xa9,0x41,0x7d,0xd5,0x99,0x1a,0xaa,0x5d,0xb4, + 0xc9,0xc2,0xa9,0x35,0x35,0x34,0x50,0xc3,0x62,0x53,0xc3,0x12,0x70,0xad,0x61,0x29, + 0x98,0xd6,0xb0,0xdc,0xd4,0xb0,0x34,0xe4,0x93,0x04,0x4c,0xe2,0x2e,0xa3,0x8f,0x24, + 0xee,0x23,0xc4,0xae,0x76,0xfd,0x67,0x5d,0x72,0x54,0xdb,0xe5,0x26,0xc7,0x1a,0xec, + 0xea,0xe0,0x2d,0x23,0x1f,0xb9,0x0f,0x1e,0xe7,0x2e,0xd0,0x9e,0x7b,0x82,0x9c,0x1b, + 0x4d,0xcf,0xad,0x02,0x6f,0xa3,0xe7,0x9a,0xc0,0x6a,0x5c,0xe4,0xc9,0xfd,0xb0,0x06, + 0xde,0x6a,0x78,0xa2,0xe9,0x53,0xe0,0xaa,0xfb,0x33,0x70,0x13,0x83,0xad,0x05,0x73, + 0x41,0x87,0x4c,0xb8,0x5b,0xd6,0x61,0xbb,0x16,0x1f,0x1a,0xe3,0x59,0x62,0xac,0x37, + 0x31,0x36,0x80,0xaf,0xf2,0xb5,0xca,0xdd,0xb8,0x91,0x9a,0xd6,0x71,0x1f,0x6d,0x30, + 0xfb,0xb1,0x09,0x7e,0xb3,0xd9,0x8f,0xe7,0xc0,0x75,0x3f,0x9e,0x07,0xd3,0xfd,0x68, + 0x35,0xfb,0x21,0x6b,0x2d,0x7e,0x6c,0x45,0xe3,0xad,0xc6,0xf7,0x2b,0xf8,0xde,0x66, + 0x7c,0xb7,0x81,0xab,0xef,0xed,0x60,0xea,0xbb,0xdd,0xf8,0xde,0x1e,0xce,0x74,0x12, + 0x30,0xf1,0xbd,0xc3,0x68,0xb4,0x93,0xba,0xe4,0x7e,0x39,0x82,0xaf,0xd7,0xc0,0x1b, + 0xd9,0x77,0xe5,0xb5,0xb3,0xef,0x62,0xb3,0x8b,0x98,0x5b,0xb1,0xdf,0x41,0xdc,0x0e, + 0x13,0x57,0x6c,0x76,0xfb,0xd1,0x01,0x7f,0xb7,0x89,0xfb,0xba,0x89,0xdb,0xe0,0x6f, + 0x67,0xd9,0x9b,0x37,0xc0,0x36,0x9a,0xfb,0x2b,0x65,0xf6,0x6e,0x0f,0x3c,0x1d,0xbb, + 0xbc,0x2f,0xc1,0xf7,0xc2,0xdd,0x13,0x7c,0x0d,0x0a,0x7b,0xb5,0x0f,0x3f,0x7b,0xb9, + 0x43,0x73,0xf9,0x66,0xa4,0xa9,0x49,0x73,0xea,0xa0,0x26,0xe1,0xcc,0x73,0x91,0xd3, + 0x0e,0x7f,0x37,0xb6,0xad,0xd8,0xb6,0x98,0xfc,0x5f,0xfc,0x87,0xfc,0x5f,0xfa,0x9f, + 0xfc,0x37,0xc3,0xd3,0xf1,0x2a,0xf9,0x6f,0x81,0xbb,0xd9,0xe4,0xff,0x32,0x7e,0xb6, + 0xfc,0x4b,0xfe,0x9a,0x53,0xab,0xc9,0xff,0x41,0x17,0x6b,0xe8,0x80,0xdf,0x12,0xfa, + 0x2f,0x7e,0x2b,0xde,0x64,0x7d,0xa7,0xf7,0x24,0xf3,0xfd,0x60,0x55,0xae,0xbf,0xcf, + 0xde,0xa2,0xcf,0x0e,0x98,0x3e,0x7b,0x1b,0x5c,0xfb,0xec,0x1d,0x30,0xed,0xb3,0x43, + 0x66,0xbf,0x65,0xed,0xa0,0x1f,0x87,0xc8,0xed,0x20,0x7a,0x49,0xde,0xef,0x12,0x33, + 0x81,0xd7,0xcb,0xfb,0xef,0xfe,0x5d,0x7c,0xfd,0x00,0x47,0x9e,0xa7,0x89,0xf5,0x23, + 0xbc,0xa1,0x70,0x6e,0x98,0x58,0xb2,0x76,0xd5,0x8f,0x6b,0xf0,0xae,0x85,0x7e,0x8c, + 0xb1,0x7e,0x86,0x37,0x3a,0x89,0xf5,0x66,0x82,0x46,0x11,0x97,0xef,0xed,0x10,0xaf, + 0x97,0x60,0xbf,0xb0,0x47,0x63,0x58,0x2f,0x46,0xdb,0x5e,0x7c,0x5e,0x35,0xfc,0x9f, + 0xf0,0x29,0xdf,0x67,0x6b,0x23,0x39,0xfd,0xe9,0xbd,0xf4,0x82,0x5d,0xc7,0xf7,0x7c, + 0x17,0xfd,0x5f,0x83,0x7b,0x95,0xfb,0x5f,0xb4,0x9f,0xe4,0xe2,0xfa,0x7e,0x73,0x5f, + 0x09,0xe7,0x30,0x1a,0x39,0xea,0x2d,0x70,0x7f,0xd7,0xe8,0x26,0x31,0x6f,0x1a,0x8d, + 0xc4,0xf8,0xb0,0xd1,0x68,0x90,0xeb,0xd7,0x48,0xd6,0x9c,0x1f,0x39,0x2e,0xf2,0xe4, + 0xa9,0x1a,0x65,0xe0,0x59,0x8d,0xf2,0x5c,0xc4,0xad,0x46,0xf9,0xae,0x5f,0x23,0x59, + 0x57,0x8d,0x0a,0xf0,0xe9,0x5c,0x3f,0x3f,0x8d,0x4f,0xd5,0x48,0x6d,0x24,0x27,0xd5, + 0x48,0x30,0xd5,0x68,0x81,0x8b,0xfe,0x25,0xaf,0x34,0xb9,0xaa,0x46,0xe5,0x2e,0xae, + 0x4f,0x22,0xbe,0x6a,0x74,0x04,0x8d,0x52,0xd4,0x5b,0x3c,0x40,0xa3,0x42,0x62,0xca, + 0x53,0x35,0xba,0xcd,0x45,0x9e,0x6a,0x34,0xd6,0x68,0x24,0x6b,0xc3,0xfd,0x18,0x05, + 0x6f,0x94,0xd1,0x68,0x34,0x3c,0xab,0x51,0x91,0x8b,0xb8,0xd5,0x68,0x8c,0xd1,0xa8, + 0xc8,0x68,0x54,0x8c,0xcf,0xe1,0x46,0xa3,0x91,0xf8,0x54,0x8d,0xd4,0x66,0xac,0xd1, + 0xa8,0xd8,0x68,0x54,0xe7,0xa2,0x7f,0xc9,0x6b,0x24,0xb9,0xaa,0x46,0x53,0x5c,0x5c, + 0x17,0xad,0x52,0xc4,0xd4,0xb3,0x77,0x88,0x5e,0x14,0xbb,0x85,0xf4,0x5a,0x2b,0x9c, + 0x62,0x73,0xe6,0xdf,0xe7,0xcc,0x1f,0x33,0x67,0xfe,0x03,0x70,0x3d,0xf3,0x1f,0x82, + 0xe9,0x99,0x3f,0x61,0xce,0xa1,0xac,0x1d,0xf7,0xe3,0x24,0x71,0x4f,0x9a,0xef,0xd6, + 0x69,0x7c,0x9f,0x32,0xbe,0x3f,0x06,0x57,0xdf,0x9f,0x80,0xa9,0xef,0x4e,0xe3,0x5b, + 0xd6,0xce,0xf8,0x71,0x16,0xdf,0x67,0xcd,0xf7,0xfa,0x3c,0xbe,0xcf,0x99,0xef,0xf5, + 0x67,0xe0,0xe7,0xb9,0xa3,0x3f,0x07,0x5b,0x6f,0xe2,0x7d,0x01,0xde,0x48,0xbc,0x2e, + 0x13,0x4f,0xd6,0x2e,0xf8,0xd1,0x45,0xbc,0x0b,0xe6,0xcc,0x4e,0x77,0xf1,0xef,0x82, + 0x85,0xe6,0x77,0x36,0xb5,0xeb,0x32,0x5a,0x2f,0x72,0xd1,0xe6,0x2c,0x9c,0x0b,0x26, + 0x9f,0xaf,0xc8,0xa7,0xd2,0xe4,0xf3,0x35,0xb8,0xe6,0xd3,0x6d,0xf2,0x91,0xb5,0x8b, + 0x7e,0x74,0x13,0xe7,0xa2,0xc9,0xa7,0x92,0x7c,0x16,0x99,0xbd,0x57,0xbb,0x6e,0x93, + 0x4f,0xbd,0x8b,0x36,0x5d,0x70,0x2e,0x9a,0x7c,0xbe,0x21,0x9f,0x63,0x26,0x9f,0x6f, + 0xc1,0x35,0x9f,0x1e,0x93,0x8f,0xac,0x5d,0xf2,0xa3,0x87,0x38,0x97,0x4c,0x3e,0x33, + 0x5d,0xfc,0x3b,0x49,0xe2,0xe9,0x37,0x4a,0xed,0x7a,0x4c,0x3e,0x0d,0x2e,0xda,0x74, + 0xc3,0xb9,0x84,0x6d,0x27,0xb6,0x67,0xcc,0x59,0xff,0x14,0xbd,0xd3,0x26,0xce,0x34, + 0xd7,0x8f,0x27,0x03,0xb8,0x9d,0x26,0xce,0x62,0x17,0x63,0xf5,0xc0,0x39,0x83,0xed, + 0x09,0x6c,0x8f,0xf3,0xad,0x15,0xdb,0x8f,0xf0,0x27,0x43,0xff,0x17,0x94,0x32,0xdf, + 0x5a,0xe5,0x9c,0x30,0xfe,0x1f,0x76,0x31,0x46,0x27,0x7c,0xf1,0x37,0xc7,0x33,0xae, + 0xb0,0xf6,0x87,0xef,0x92,0x99,0x7e,0xfc,0x05,0x45,0xf1,0x98,0x88,0xbc,0x12,0x00, + 0x00 }; // Generated from: @@ -120,8 +121,8 @@ constexpr uint8_t kImageCopy_frag_00000012[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture2DArray src; -// layout(location = 0)out uvec4 dst; +// layout(set = 0, binding = 0)uniform itexture3D src; +// layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -146,16 +147,16 @@ constexpr uint8_t kImageCopy_frag_00000012[] = { // bool rotateXY; // } params; // -// float linearToSRGB(float linear) +// float sRGBToLinear(float sRGB) // { // -// if(linear <= 0.0031308) +// if(sRGB <= 0.04045) // { -// return linear * 12.92; +// return sRGB / 12.92; // } // else // { -// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); // } // } // @@ -178,15 +179,7 @@ constexpr uint8_t kImageCopy_frag_00000012[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); -// -// if(params . srcIsSRGB) -// { -// -// srcValue . r = linearToSRGB(srcValue . r); -// srcValue . g = linearToSRGB(srcValue . g); -// srcValue . b = linearToSRGB(srcValue . b); -// } +// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { @@ -197,9 +190,17 @@ constexpr uint8_t kImageCopy_frag_00000012[] = { // srcValue . rgb /= srcValue . a; // } // -// srcValue *= 255.0; +// vec4 dstValue = vec4(srcValue); // -// uvec4 dstValue = uvec4(srcValue); +// dstValue /= 255.0; +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc new file mode 100644 index 0000000000000000000000000000000000000000..ccd79ef2c2e5d25308d9c9c008035d5e2f6db8f7 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc @@ -0,0 +1,232 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.00000013.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_00000013[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x68,0x96,0x55, + 0x18,0xc7,0xcf,0x79,0x9e,0xbd,0xa9,0xd3,0xcc,0x34,0xe7,0xdb,0xd8,0x7c,0xcb,0xda, + 0x9a,0x2f,0xd9,0x34,0xf5,0x51,0x97,0x2f,0x1b,0x35,0x9d,0x9b,0x64,0x68,0xb6,0xb2, + 0x2c,0x5d,0xa5,0x2b,0x37,0x28,0x52,0x74,0xea,0x86,0xe6,0x88,0x94,0x3e,0x44,0x65, + 0xa6,0x10,0x44,0x44,0x06,0x56,0xfa,0x21,0xad,0x1c,0x61,0x16,0xe5,0x82,0x72,0x50, + 0x2e,0xf4,0x53,0x1f,0x23,0x49,0x4b,0x8d,0xa8,0x73,0xdd,0xe7,0x77,0x6d,0x57,0xa3, + 0x97,0x07,0x0e,0xf7,0x7d,0xfd,0xaf,0xf7,0xff,0xb9,0xce,0xb9,0x9d,0xe9,0xd4,0xb8, + 0x5c,0xe7,0xbc,0xeb,0xef,0xf2,0x5c,0x9d,0x77,0xc9,0xef,0x7a,0x97,0x72,0x9e,0xe7, + 0xb4,0xf0,0x1c,0xe0,0x72,0x12,0xb9,0xb2,0x7a,0x79,0x75,0x59,0x53,0xf3,0xda,0xb2, + 0xe9,0xb7,0x4f,0x11,0xbb,0x41,0x2e,0x9d,0xd8,0x8b,0xee,0x3a,0x97,0xeb,0xb2,0xc2, + 0x53,0xd6,0x86,0x35,0x0d,0x1b,0x05,0x9f,0x18,0xd6,0x85,0xb0,0x06,0x07,0x3b,0xc1, + 0x73,0x25,0x46,0x78,0x9b,0x98,0xc4,0x14,0x1f,0xe7,0xaa,0x5c,0xb6,0x2b,0x8d,0x69, + 0xdd,0x38,0x9e,0x8a,0x79,0xb0,0x3c,0x83,0xa5,0xc0,0x06,0x1b,0x2c,0x0d,0x36,0xd4, + 0x60,0x59,0x60,0x05,0x06,0xcb,0x06,0x1b,0x6d,0xb0,0x1c,0xb0,0x22,0x83,0xe5,0x82, + 0x8d,0x37,0x58,0x1e,0xd8,0x24,0x83,0xf5,0x03,0x2b,0x35,0x58,0x7f,0xb0,0x29,0x06, + 0x1b,0x00,0x36,0xdd,0x60,0xf9,0x60,0x33,0x0d,0x36,0x10,0x6c,0x4e,0xc2,0x53,0xba, + 0xa7,0x5f,0xe1,0x6c,0x75,0x78,0x8e,0x85,0x1f,0x95,0x8b,0x8d,0x2c,0x3c,0x17,0x22, + 0xdf,0x10,0xbc,0x52,0x89,0x3e,0x9d,0x70,0x23,0xef,0x37,0x86,0xb7,0x1c,0xfa,0x2c, + 0x09,0xf6,0x39,0xe4,0xfb,0xf1,0xf0,0x84,0xcc,0xd0,0x60,0x31,0xc8,0xe0,0xc2,0xd9, + 0xe1,0xca,0x35,0x19,0x95,0x85,0xaf,0x57,0x5e,0x1e,0x31,0x7f,0x58,0x90,0x8b,0x88, + 0x21,0x7b,0x33,0x3c,0xc8,0xc5,0xc8,0x29,0xe4,0xf1,0x70,0x9a,0x95,0xe0,0x59,0x6e, + 0x02,0xb6,0x82,0xcf,0x46,0x9e,0x68,0xfc,0x6f,0xc2,0x5e,0xfc,0x25,0x7e,0x09,0xf1, + 0x5c,0xd2,0xcf,0xe0,0x84,0x83,0x62,0x56,0x51,0x4f,0xfd,0xff,0xbd,0x8a,0x7a,0x9e, + 0x59,0xee,0x56,0xf6,0xa9,0x94,0xfc,0x22,0x97,0x81,0x95,0xd0,0xcf,0x64,0xea,0x11, + 0xfb,0x29,0xe8,0x8a,0x8d,0xbe,0xdc,0xf4,0x33,0xa3,0xc7,0x37,0xea,0xe5,0x39,0x8b, + 0x7a,0xd5,0x7e,0x01,0xb3,0xa6,0xf2,0x52,0xb8,0x96,0x7e,0x57,0x50,0x9f,0xc4,0x1b, + 0x11,0x22,0xad,0x34,0x7c,0xda,0x9f,0xca,0xa3,0xc2,0xbe,0xad,0x0a,0xcf,0x95,0xe4, + 0xbf,0x0f,0x7c,0x15,0xfd,0x88,0xbc,0xba,0x4f,0xfe,0xfa,0x3e,0x72,0x03,0xfc,0x8a, + 0xff,0x63,0xd4,0x5f,0x64,0xf4,0x8d,0xec,0x81,0xd4,0xf7,0x0c,0xba,0xb4,0xd1,0xb7, + 0x70,0x26,0x54,0xde,0xcf,0x4c,0xab,0x7c,0x84,0xf3,0xa1,0xf2,0x89,0x3e,0xfc,0x9e, + 0x66,0xde,0x75,0x9e,0xbe,0x36,0xf5,0x89,0xfc,0x43,0x22,0xb5,0xcc,0x93,0xfa,0xce, + 0x93,0x5b,0xe7,0xe5,0x3c,0x77,0x48,0xda,0xd8,0xcf,0x09,0xe4,0x6c,0x6f,0x69,0x99, + 0x5d,0x1a,0xaa,0x12,0xbb,0x8c,0x8f,0x98,0x5d,0x6a,0x3b,0x37,0xbc,0x37,0xbe,0xb9, + 0x69,0x9e,0xca,0xf3,0x82,0xbc,0x6f,0xe7,0x81,0x4c,0x79,0xd8,0xa1,0x14,0xfb,0xe0, + 0x88,0x7f,0x25,0x20,0xb2,0x6f,0x19,0xe6,0x78,0x12,0xb3,0x5a,0x13,0xf2,0xc8,0x9c, + 0xde,0x0c,0x36,0xc9,0xec,0xd1,0x46,0xce,0xc0,0x2d,0xe8,0x2b,0x42,0x04,0x99,0xa1, + 0xa9,0xcc,0xd9,0x64,0xe2,0x89,0xcd,0x34,0xf0,0x1d,0xc1,0x46,0xe4,0xdb,0xf0,0x9b, + 0x86,0xdf,0x0c,0xee,0x83,0x32,0x66,0x2e,0xc3,0x7c,0xdd,0x01,0xfe,0x76,0xb0,0x19, + 0x94,0xf0,0x12,0x31,0x99,0xbb,0xdf,0x42,0xe5,0x19,0xea,0xb9,0x16,0xec,0x67,0x73, + 0x7f,0x64,0xe8,0x47,0xde,0x6b,0x83,0x9f,0xec,0xc3,0x7c,0x72,0xca,0x6f,0x2b,0x7b, + 0x53,0x01,0x5e,0x17,0xd8,0x91,0x9a,0xc6,0xfa,0x88,0xa9,0xdd,0xd5,0x10,0x43,0x63, + 0xc9,0xf3,0x72,0xe0,0x42,0xec,0xe6,0xfb,0x68,0x93,0x8d,0xcf,0x1c,0xd3,0xc3,0x42, + 0x7a,0x58,0x60,0x7a,0x58,0x04,0xae,0x3d,0x2c,0x06,0xd3,0x1e,0xaa,0x4c,0x0f,0x8b, + 0x93,0x3b,0xcd,0x25,0x98,0xe4,0xad,0x34,0x3d,0xdc,0x4d,0x6e,0x6f,0x7a,0xa8,0x06, + 0xd7,0x1e,0x26,0xf8,0x88,0xa9,0x9d,0xf4,0xa0,0xb1,0xaa,0x4c,0x0f,0x15,0x3e,0xda, + 0x64,0xf0,0xa9,0x34,0x3d,0xd4,0xd0,0xc3,0x52,0xd3,0xc3,0x32,0x70,0xed,0xa1,0x16, + 0x4c,0x7b,0x58,0x6e,0x7a,0xa8,0x4d,0xea,0x71,0x09,0x26,0x79,0xeb,0x98,0x23,0xc9, + 0x7b,0x0f,0xb9,0x2b,0x7c,0xef,0x39,0x97,0x1a,0xd5,0x76,0xb9,0xa9,0xf1,0x4e,0xec, + 0xaa,0xf0,0xab,0xa3,0x1e,0x39,0xff,0xf7,0x73,0xf6,0x75,0xe6,0x1e,0xa0,0xe6,0x7a, + 0x33,0x73,0x0f,0x82,0xb7,0x30,0x73,0x0f,0x81,0x49,0xdc,0x46,0xee,0xdf,0x87,0xc1, + 0xd7,0x06,0x59,0xee,0x99,0x47,0x88,0xbd,0x0e,0x9f,0x47,0xc1,0xea,0x5d,0xaf,0xcf, + 0x3a,0xf0,0xdd,0xc1,0x46,0xe4,0xf5,0xc4,0x59,0x47,0x3d,0x72,0xcf,0x3c,0x4e,0x3d, + 0x0d,0xd4,0x23,0x7b,0xf5,0x04,0x78,0x23,0xe7,0x71,0x03,0xd8,0xbd,0xa1,0xdf,0x15, + 0xc9,0x79,0x8a,0xb9,0xd7,0x73,0xbe,0x36,0x98,0x3d,0x79,0x92,0x78,0x8d,0x66,0x4f, + 0x9e,0x02,0xd7,0x3d,0xd9,0x04,0xa6,0x7b,0xd2,0x6c,0xf6,0x44,0x74,0x4d,0x61,0x6d, + 0x83,0xe7,0x6d,0x26,0xf6,0x76,0x62,0xb7,0x98,0xd8,0x3b,0xc0,0x35,0xf6,0x4e,0x30, + 0x8d,0xdd,0x66,0x62,0x8b,0xae,0x35,0xac,0x36,0x62,0xb7,0x9a,0x99,0xdd,0x45,0x5f, + 0x72,0xc7,0xbc,0x43,0xac,0xdd,0xe0,0xf5,0xec,0xbd,0xfa,0xb5,0xb1,0xf7,0x62,0xf3, + 0x1c,0x39,0xb7,0x61,0xdf,0x4a,0xde,0x76,0x93,0x57,0x6c,0xf6,0x84,0xd5,0x8e,0xff, + 0x1e,0x93,0xf7,0x79,0x93,0xb7,0x26,0xdc,0xd0,0x72,0xb7,0xbf,0x00,0xb6,0xd1,0xdc, + 0x61,0xa9,0x64,0x8e,0x73,0x12,0xfd,0x5e,0xfc,0x74,0xed,0x0a,0xb1,0x04,0xdf,0x87, + 0xef,0xde,0x24,0x56,0xbf,0x64,0xaf,0x5e,0x24,0xce,0x3e,0xee,0xd1,0x6c,0xbe,0x23, + 0x69,0x7a,0xd2,0x9a,0xda,0xe9,0x49,0x7c,0x16,0xf9,0xe8,0xd3,0x86,0xff,0x1e,0x6c, + 0x9b,0xb1,0x6d,0x32,0xf5,0x3f,0xfd,0x0f,0xf5,0x3f,0xfb,0x3f,0xf5,0x6f,0xc6,0x4f, + 0x57,0x2b,0xf5,0x6f,0xc1,0x77,0xb3,0xa9,0x7f,0x2b,0x71,0xb6,0xfc,0x4b,0xfd,0x5a, + 0x53,0xb3,0xa9,0x7f,0xa1,0x8f,0x3d,0xb4,0xe3,0xdf,0xc4,0x2c,0xcb,0xf7,0xe2,0x25, + 0xf4,0x6d,0x21,0x92,0xc8,0xaf,0x82,0x65,0x7c,0xef,0x9c,0xbd,0xc6,0x9c,0xed,0x37, + 0x73,0x76,0x00,0x5c,0xe7,0xec,0x75,0x30,0x9d,0xb3,0x43,0x66,0xbf,0x45,0x77,0x30, + 0xac,0x43,0xd4,0x76,0x10,0xbe,0xa4,0xee,0x37,0xc8,0xe9,0xf0,0xbb,0xc6,0xfb,0xef, + 0xe1,0x5d,0x62,0xfd,0x84,0x8f,0x3c,0x8f,0x93,0xeb,0x67,0xfc,0x06,0xe2,0x73,0xd5, + 0xe4,0x12,0xdd,0xc5,0xb0,0x2e,0xe1,0x77,0x29,0x39,0x0f,0x31,0xd7,0xaf,0xf8,0x15, + 0xb8,0xd8,0x6f,0x4e,0xe2,0x1f,0x71,0xf9,0xe6,0xe6,0x07,0xbe,0x72,0x12,0xbf,0xb8, + 0x47,0x23,0xd1,0x8f,0x86,0xdb,0x6b,0xc4,0xbc,0x68,0xfc,0x7f,0x21,0xa6,0x7c,0xa3, + 0xad,0x8d,0xd4,0xf4,0x67,0x88,0x72,0x05,0xec,0x32,0xb1,0x17,0xfb,0x18,0xff,0x12, + 0xbe,0x17,0xf9,0x06,0x08,0xf7,0x25,0x3e,0xea,0x95,0x0f,0xe5,0xe8,0x2d,0x38,0xf2, + 0xf4,0x9b,0xef,0xff,0xce,0x91,0xf3,0x31,0xa7,0x3c,0x95,0xa3,0x94,0x8f,0x7e,0xca, + 0xd1,0x00,0xdf,0xcb,0x91,0xe8,0xd2,0x61,0xe5,0xe0,0x27,0x4f,0xe5,0x28,0x0f,0x3f, + 0xcb,0x51,0x3f,0x1f,0x71,0xcb,0x51,0x7f,0xdf,0xcb,0x91,0xe8,0x95,0xa3,0x7c,0x62, + 0xa6,0x7d,0xaf,0x7f,0x36,0x31,0x95,0x23,0xb5,0x91,0x9a,0x94,0x23,0xc1,0x94,0xa3, + 0x2a,0x1f,0xe3,0x4b,0x5d,0xd9,0xd4,0xaa,0x1c,0x95,0xf9,0xa8,0x2f,0x21,0xbf,0x72, + 0xf4,0x2e,0x1c,0xa5,0xe8,0xb7,0xb0,0x0f,0x47,0x43,0xc8,0x39,0xc4,0x70,0x34,0xd4, + 0x47,0x3f,0xe5,0x68,0x8c,0xe1,0x48,0x74,0xc3,0xc2,0x2a,0xc0,0xaf,0xc0,0x70,0x34, + 0x12,0x3f,0xcb,0xd1,0x28,0x1f,0x71,0xcb,0xd1,0x68,0xc3,0xd1,0x28,0xc3,0x51,0x21, + 0x31,0x87,0x19,0x8e,0x86,0x13,0x53,0x39,0x52,0x9b,0x31,0x86,0xa3,0x42,0xc3,0xd1, + 0x5d,0x3e,0xc6,0x97,0xba,0x86,0x53,0xab,0x72,0x34,0xd5,0x47,0xbd,0x70,0x95,0x22, + 0xa7,0x9e,0xbd,0x43,0xcc,0xa2,0xd8,0x55,0x33,0x6b,0xcd,0xf8,0x14,0x9a,0x33,0xff, + 0x1e,0x67,0xfe,0x88,0x39,0xf3,0xef,0x83,0xeb,0x99,0xff,0x00,0x4c,0xcf,0xfc,0x31, + 0x73,0x0e,0x45,0x77,0x34,0x39,0xb3,0x31,0xef,0x71,0xf3,0xdd,0xfa,0x88,0xd8,0x27, + 0x4c,0xec,0x8f,0xc1,0x35,0xf6,0x27,0x60,0x1a,0xbb,0xc3,0xc4,0x16,0xdd,0xc9,0xb0, + 0x4e,0x11,0xfb,0x94,0xf9,0x7e,0x7f,0x4e,0xec,0xd3,0xe6,0xfb,0xfd,0x05,0xf8,0x67, + 0xdc,0xd1,0x5f,0x82,0x35,0x98,0x7c,0x5f,0x81,0xd7,0x93,0xaf,0xd3,0xe4,0x13,0xdd, + 0x99,0xb0,0x3a,0xc9,0x77,0xc6,0x9c,0xd9,0x72,0x1f,0xff,0x36,0xa8,0x36,0xff,0x6e, + 0x53,0xbb,0x4e,0xc3,0xf5,0x12,0x1f,0x6d,0x4e,0xe1,0x73,0xc6,0xd4,0xf3,0x0d,0xf5, + 0x94,0x9b,0x7a,0xbe,0x05,0xd7,0x7a,0xba,0x4c,0x3d,0xa2,0x3b,0x1b,0x56,0x17,0x79, + 0xce,0x9a,0x7a,0x66,0x52,0xcf,0x12,0xb3,0xf7,0x6a,0xd7,0x65,0xea,0x59,0xea,0xa3, + 0x4d,0x27,0x3e,0x67,0x4d,0x3d,0xdf,0x51,0xcf,0x11,0x53,0xcf,0xf7,0xe0,0x5a,0x4f, + 0xb7,0xa9,0x47,0x74,0xe7,0xc2,0xea,0x26,0xcf,0x39,0x53,0xcf,0x2c,0x1f,0xff,0x56, + 0x92,0x7c,0xfa,0x8d,0x52,0xbb,0x6e,0x53,0x4f,0xad,0x8f,0x36,0x5d,0xf8,0x9c,0xc3, + 0xb6,0x03,0xdb,0x93,0xe6,0xac,0x7f,0x0a,0xdf,0x69,0x93,0x67,0xba,0xef,0xc5,0x5d, + 0x1f,0xdf,0x0e,0x93,0x67,0x99,0x8f,0xb9,0xba,0xf1,0x39,0x89,0xed,0x31,0x6c,0x8f, + 0xf2,0xad,0x15,0xdb,0x0f,0x89,0x27,0x4b,0xff,0x2f,0x28,0x65,0xbe,0xb5,0xea,0x73, + 0xcc,0xc4,0xaf,0xf1,0x31,0x47,0x07,0xfe,0x12,0x6f,0x6e,0xf0,0xb8,0x80,0xee,0x8f, + 0x30,0x25,0x33,0xc3,0xfa,0x0b,0x4a,0x3a,0x0e,0xd5,0xc4,0x12,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform isampler2D src; +// layout(location = 0)out vec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// float sRGBToLinear(float sRGB) +// { +// +// if(sRGB <= 0.04045) +// { +// return sRGB / 12.92; +// } +// else +// { +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// } +// } +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// ivec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// vec4 dstValue = vec4(srcValue); +// +// dstValue /= 255.0; +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc index 7f2a8346756d82bcbb2c00831a6c34df8189a96d..022dbdd4c7950ac6856f2182be2d48f67b05860a 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc @@ -10,108 +10,78 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000014[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x5b,0x6c,0x55,0x45, - 0x14,0x86,0x67,0xce,0x69,0x4f,0x4b,0xb9,0x58,0xe5,0x22,0x85,0xc6,0xb4,0x72,0x11, - 0xa4,0x16,0x44,0x2c,0x48,0x39,0xb4,0x58,0xa4,0x0d,0x54,0xca,0x25,0x9a,0x20,0x56, - 0x02,0xa2,0x02,0x42,0xd1,0xd6,0x18,0x21,0x82,0x85,0x8a,0xd0,0x10,0x21,0x3c,0xf8, - 0x00,0x2a,0x24,0xbe,0xf0,0x60,0x20,0xa8,0xf0,0x20,0xa0,0x34,0x86,0x80,0x51,0x6a, - 0xa2,0x34,0x51,0x6a,0xe0,0xd1,0x27,0x23,0x91,0x88,0x54,0x8d,0xe8,0xac,0x3d,0xdf, - 0x6a,0x97,0x0d,0x6a,0x93,0xc9,0xde,0xf3,0xcf,0xfa,0xd7,0xe5,0x9f,0x35,0xb3,0xdb, - 0xa6,0x53,0x63,0xf2,0x9c,0xf3,0xae,0xc0,0xe5,0xbb,0x45,0xde,0x25,0x3f,0xb7,0xbb, - 0x94,0x93,0xd7,0x81,0x2e,0x93,0x3c,0x6b,0xeb,0x97,0xd6,0x97,0xb7,0xbc,0xb4,0xba, - 0x7c,0xda,0x83,0x53,0x64,0x7d,0x88,0x4b,0x27,0x76,0xb2,0x76,0x9b,0xcb,0x73,0x39, - 0xe1,0x29,0x63,0xc3,0xca,0xb5,0x4d,0x82,0x8f,0x0f,0xe3,0x4a,0x18,0x85,0xc1,0x4e, - 0xf0,0x3c,0xf1,0x11,0xde,0xc6,0x27,0x3e,0x85,0xe3,0x5c,0x9d,0xcb,0x75,0x65,0x31, - 0x9c,0x1b,0xc3,0x53,0x31,0x0f,0x96,0x6f,0xb0,0x14,0x58,0xa1,0xc1,0xd2,0x60,0xc3, - 0x0c,0x96,0x03,0x36,0xd2,0x60,0xb9,0x60,0xc5,0x06,0xcb,0x80,0x95,0x18,0x2c,0x0f, - 0x6c,0xac,0xc1,0xf2,0xc1,0x26,0x18,0x6c,0x00,0x58,0x99,0xc1,0x0a,0xc0,0xa6,0x18, - 0x6c,0x20,0xd8,0x34,0x83,0x0d,0x02,0x9b,0x61,0xb0,0xc1,0x60,0xb3,0x12,0x9d,0xd2, - 0xbd,0xf5,0x8a,0x66,0xcb,0xc3,0xf3,0x6e,0xf4,0xd1,0x79,0xa9,0x99,0x8b,0xce,0x77, - 0x31,0x1f,0x1a,0x58,0xa9,0x64,0x3d,0x9d,0x68,0x23,0xef,0x23,0xc2,0x5b,0x86,0x3a, - 0x27,0x05,0xfb,0x0c,0xf1,0x7e,0x38,0x3a,0x2e,0x3b,0x2c,0x58,0x0c,0x31,0xb8,0x68, - 0x76,0xb4,0x76,0x65,0x56,0xe7,0xa2,0xd7,0x81,0xfd,0x45,0xd5,0xc3,0xc3,0xbc,0x04, - 0x1f,0xb2,0x37,0x77,0x86,0x79,0x29,0xf3,0x14,0xf3,0xb1,0x68,0x9a,0x93,0xe0,0x39, - 0x6e,0x1c,0xb6,0x82,0x57,0x32,0x1f,0x6f,0xf8,0xf7,0x60,0x2f,0x7c,0xf1,0x3f,0x09, - 0x7f,0x2e,0xa9,0xa7,0x30,0xd1,0xa0,0x94,0x51,0xd2,0x9b,0xff,0x7f,0x8f,0x92,0xde, - 0x67,0x8e,0xbb,0x8f,0x7d,0x2a,0x23,0xbe,0xcc,0xcb,0xc1,0x26,0x51,0xcf,0x64,0xf2, - 0x11,0xfb,0x29,0xac,0x95,0x9a,0xf5,0x0a,0x53,0xcf,0xf4,0x5e,0x6e,0x5c,0x97,0xe7, - 0x4c,0xf2,0x55,0xfb,0x1a,0x7a,0x4d,0xe7,0x0b,0xd1,0x5a,0xea,0x7d,0x9c,0xfc,0xc4, - 0x5f,0x51,0xf0,0xb4,0xcc,0xe8,0xe9,0x6e,0xf1,0x94,0x98,0x4f,0xf0,0xbe,0x8c,0x1a, - 0x64,0xbe,0xbc,0x5f,0xcc,0xc6,0x7e,0xf3,0x55,0x9c,0x0b,0xe1,0x3f,0x4d,0xce,0x25, - 0xe4,0xf0,0x2c,0xef,0x69,0x63,0xbf,0x8e,0x3d,0xd0,0x79,0x13,0xfb,0xa2,0xf3,0xad, - 0x9c,0x0b,0x9d,0x1f,0xa0,0xaf,0x75,0x7e,0x8c,0x33,0xa2,0xf3,0x53,0xfd,0x34,0x3e, - 0x47,0xcf,0x6b,0x4f,0x7d,0x65,0xf2,0x95,0xf9,0xf7,0xc9,0xac,0xb5,0x4a,0xf2,0xbd, - 0x4c,0x6e,0xda,0x33,0x97,0xb9,0x47,0xd2,0xc6,0x7e,0x66,0x10,0x68,0x5b,0x6b,0x6b, - 0x65,0x59,0xc8,0x2a,0xb1,0xf3,0x11,0xb3,0x43,0x6d,0x67,0x85,0xf7,0x8d,0x87,0x9b, - 0xab,0x74,0x9e,0x0d,0xf3,0x7d,0x6d,0x07,0xb3,0x15,0x61,0x97,0x52,0xec,0x85,0xc3, - 0x7f,0x4f,0x40,0x64,0xef,0xb2,0xf4,0xf2,0x04,0xfa,0xb5,0x21,0xc4,0x91,0x5e,0x9d, - 0x08,0x36,0xc1,0xec,0x53,0x13,0xe7,0xe0,0x5e,0xd6,0xe7,0x04,0x0f,0xd2,0x47,0xf7, - 0xd3,0x6b,0x93,0xf1,0x27,0x36,0x53,0xc1,0xb7,0x07,0x1b,0x99,0x3f,0x00,0x6f,0x2a, - 0xbc,0xe9,0xdc,0x09,0xe5,0xf4,0x5d,0x96,0x1e,0x7b,0x08,0xfc,0xfd,0x60,0x33,0x24, - 0xd1,0x25,0x62,0xd2,0x7b,0x37,0x42,0xe6,0x59,0xf2,0xf9,0x3d,0xd8,0x57,0x72,0x87, - 0x64,0xa9,0x47,0xde,0x17,0x07,0x9e,0xec,0x43,0x35,0x31,0x5d,0xb2,0xa7,0x71,0x6f, - 0xe6,0x80,0x2f,0x09,0xea,0x24,0xe7,0xcc,0x47,0x4c,0xed,0x7e,0x0b,0x3e,0xd4,0x97, - 0x3c,0xaf,0x07,0x2d,0xc4,0x6e,0xb6,0x8f,0x36,0xb9,0x70,0x66,0x99,0x1a,0xe6,0x52, - 0x43,0x8d,0xa9,0xe1,0x11,0x70,0xad,0x61,0x1e,0x98,0xd6,0x50,0x67,0x6a,0x98,0x97, - 0xdc,0x6b,0x2e,0xc1,0x24,0x6e,0xad,0xa9,0x61,0x01,0xb1,0xbd,0xa9,0xa1,0x1e,0x5c, - 0x6b,0x18,0xe3,0x23,0xa6,0x76,0x52,0x83,0xfa,0xaa,0x33,0x35,0x54,0xf9,0x68,0x93, - 0x85,0x53,0x6b,0x6a,0x68,0xa0,0x86,0x85,0xa6,0x86,0x45,0xe0,0x5a,0xc3,0x62,0x30, - 0xad,0x61,0xa9,0xa9,0x61,0x71,0x92,0x8f,0x4b,0x30,0x89,0xbb,0x84,0x3e,0x92,0xb8, - 0x8f,0x11,0xbb,0xca,0xf7,0x9d,0x75,0xc9,0x51,0x6d,0x97,0x9a,0x1c,0xab,0xb1,0xab, - 0x83,0xb7,0x84,0x7c,0xe4,0x3e,0x78,0x92,0xbb,0x40,0x7b,0xee,0x29,0x72,0x6e,0x34, - 0x3d,0xb7,0x02,0xbc,0x95,0x9e,0x5b,0x09,0x56,0xed,0x23,0x4f,0xee,0x87,0xd5,0xf0, - 0x56,0xc1,0x13,0x4d,0x9f,0x01,0x57,0xdd,0x9f,0x83,0xeb,0x0c,0xb6,0x06,0xcc,0x27, - 0x3a,0x64,0x92,0xbb,0x65,0x2d,0xb6,0x6b,0xf0,0xa1,0x31,0x9e,0x27,0xc6,0x3a,0x13, - 0x63,0x3d,0xf8,0x8a,0x50,0xab,0xdc,0x8d,0x1b,0xa8,0x69,0x2d,0xf7,0xd1,0x7a,0xb3, - 0x1f,0x1b,0xe1,0x37,0x99,0xfd,0x78,0x01,0x5c,0xf7,0xe3,0x45,0x30,0xdd,0x8f,0x16, - 0xb3,0x1f,0xb2,0xd6,0x1c,0xc6,0x16,0x34,0xde,0x62,0x7c,0xbf,0x86,0xef,0xad,0xc6, - 0x77,0x2b,0xb8,0xfa,0xde,0x06,0xa6,0xbe,0xdb,0x8c,0xef,0x6d,0xc9,0x99,0x76,0x09, - 0x26,0xbe,0xb7,0x1b,0x8d,0x76,0x50,0x97,0xdc,0x2f,0x47,0xf0,0xf5,0x06,0x78,0x23, - 0xfb,0xae,0xbc,0x36,0xf6,0x5d,0x6c,0x76,0x12,0x73,0x0b,0xf6,0xdb,0x89,0xdb,0x6e, - 0xe2,0x8a,0xcd,0xae,0x30,0xda,0xe1,0xef,0x32,0x71,0x77,0x9b,0xb8,0x0d,0xe1,0x76, - 0x96,0xbd,0x79,0x13,0x6c,0x83,0xb9,0xbf,0x52,0x66,0xef,0xf6,0xc0,0xd3,0xb1,0x33, - 0xf8,0x12,0x7c,0x2f,0xdc,0x3d,0x89,0xaf,0x01,0xc9,0x5e,0xed,0xc3,0xcf,0x5e,0xee, - 0xd0,0x5c,0xbe,0x19,0x69,0x6a,0xd2,0x9c,0xda,0xa9,0x49,0x38,0x35,0x3e,0x72,0xda, - 0xe0,0xef,0xc2,0xb6,0x05,0xdb,0x66,0x93,0xff,0xcb,0xb7,0xc8,0xff,0x95,0xff,0xc9, - 0x7f,0x13,0x3c,0x1d,0xaf,0x93,0xff,0x66,0xb8,0x9b,0x4c,0xfe,0xaf,0xe2,0x67,0xf3, - 0xbf,0xe4,0xaf,0x39,0xb5,0x98,0xfc,0x1f,0xf6,0xb1,0x86,0x76,0xf8,0xcd,0x49,0xff, - 0xc5,0x6f,0xc5,0x5b,0xac,0xef,0x08,0x9e,0x64,0xbe,0x1f,0xac,0xd2,0xf7,0xf5,0xd9, - 0xdb,0xf4,0xd9,0x01,0xd3,0x67,0xef,0x80,0x6b,0x9f,0xbd,0x0b,0xa6,0x7d,0x76,0xc8, - 0xec,0xb7,0xac,0x1d,0x0c,0xe3,0x10,0xb9,0x1d,0x44,0x2f,0xc9,0xfb,0x3d,0x62,0x3a, - 0x78,0x3d,0xbc,0xff,0x11,0xde,0xc5,0xd7,0x8f,0x70,0xe4,0x79,0x9a,0x58,0x3f,0xc1, - 0x1b,0x0c,0xe7,0x86,0x89,0x25,0x6b,0x57,0xc3,0xb8,0x06,0xef,0x5a,0xd2,0x8f,0x31, - 0xd6,0x2f,0xf0,0x46,0xba,0x58,0x6f,0x26,0xd1,0x28,0xe2,0xf2,0xbd,0x1d,0x14,0xf4, - 0x12,0xec,0x57,0xf6,0x68,0x14,0xeb,0xc5,0x68,0xdb,0x83,0xcf,0xab,0x86,0xff,0x33, - 0x3e,0xe5,0xfb,0x6c,0x6d,0x24,0xa7,0xbf,0x82,0x97,0x1e,0xb0,0xeb,0xf8,0x9e,0xeb, - 0xa3,0xff,0x6b,0x70,0xaf,0x72,0xff,0x8b,0xf6,0x13,0x7d,0x5c,0xdf,0x6f,0xee,0x2b, - 0xe1,0x1c,0x46,0x23,0x4f,0xbd,0x05,0xfe,0x9f,0x1a,0xdd,0x24,0xe6,0x4d,0xa3,0x91, - 0x18,0x1f,0x36,0x1a,0x0d,0xf0,0x7d,0x1a,0xc9,0x9a,0x0f,0x23,0xc7,0x47,0x9e,0x3c, - 0x55,0xa3,0x0c,0x3c,0xab,0x51,0x9e,0x8f,0xb8,0xd5,0x28,0xdf,0xf7,0x69,0x24,0xeb, - 0xaa,0x51,0x01,0x3e,0xbd,0xef,0xe3,0xa7,0xf1,0xa9,0x1a,0xa9,0x8d,0xe4,0xa4,0x1a, - 0x09,0xa6,0x1a,0xcd,0xf3,0xd1,0xbf,0xe4,0x95,0x26,0x57,0xd5,0xa8,0xcc,0xc7,0xf5, - 0x89,0xc4,0x57,0x8d,0x8e,0xa0,0x51,0x8a,0x7a,0x8b,0xfb,0x69,0x54,0x48,0x4c,0x79, - 0xaa,0x46,0x77,0xf8,0xc8,0x53,0x8d,0x46,0x1b,0x8d,0x64,0x6d,0x68,0x18,0x23,0xe0, - 0x8d,0x30,0x1a,0x8d,0x84,0x67,0x35,0x2a,0xf2,0x11,0xb7,0x1a,0x8d,0x32,0x1a,0x15, - 0x19,0x8d,0x8a,0xf1,0x39,0xd4,0x68,0x34,0x1c,0x9f,0xaa,0x91,0xda,0x8c,0x36,0x1a, - 0x15,0x1b,0x8d,0xea,0x7c,0xf4,0x2f,0x79,0x0d,0x27,0x57,0xd5,0x68,0xb2,0x8f,0xeb, - 0xa2,0x55,0x8a,0x98,0x7a,0xf6,0x0e,0xd1,0x8b,0x62,0x37,0x9f,0x5e,0x6b,0x81,0x53, - 0x6c,0xce,0xfc,0x07,0x9c,0xf9,0x63,0xe6,0xcc,0x7f,0x08,0xae,0x67,0xfe,0x23,0x30, - 0x3d,0xf3,0x27,0xcc,0x39,0x94,0xb5,0xe3,0x61,0x9c,0x24,0xee,0x49,0xf3,0xdd,0x3a, - 0x8d,0xef,0x53,0xc6,0xf7,0x27,0xe0,0xea,0xfb,0x53,0x30,0xf5,0xdd,0x61,0x7c,0xcb, - 0xda,0x99,0x30,0xce,0xe2,0xfb,0xac,0xf9,0x5e,0x9f,0xc7,0xf7,0x39,0xf3,0xbd,0xfe, - 0x1c,0xfc,0x3c,0x77,0xf4,0x17,0x60,0xeb,0x4c,0xbc,0x2f,0xc1,0x1b,0x89,0xd7,0x69, - 0xe2,0xc9,0xda,0x85,0x30,0x3a,0x89,0x77,0xc1,0x9c,0xd9,0x69,0x3e,0xfe,0x5d,0x30, - 0xdf,0xfc,0xce,0xa6,0x76,0x9d,0x46,0xeb,0x05,0x3e,0xda,0x9c,0x85,0x73,0xc1,0xe4, - 0xf3,0x35,0xf9,0x54,0x98,0x7c,0xbe,0x01,0xd7,0x7c,0xba,0x4c,0x3e,0xb2,0x76,0x31, - 0x8c,0x2e,0xe2,0x5c,0x34,0xf9,0x54,0x90,0xcf,0x02,0xb3,0xf7,0x6a,0xd7,0x65,0xf2, - 0xa9,0xf7,0xd1,0xa6,0x13,0xce,0x45,0x93,0xcf,0xb7,0xe4,0x73,0xcc,0xe4,0xf3,0x1d, - 0xb8,0xe6,0xd3,0x6d,0xf2,0x91,0xb5,0x4b,0x61,0x74,0x13,0xe7,0x92,0xc9,0x67,0x86, - 0x8f,0x7f,0x27,0x49,0x3c,0xfd,0x46,0xa9,0x5d,0xb7,0xc9,0xa7,0xc1,0x47,0x9b,0x2e, - 0x38,0x97,0xb0,0xed,0xc0,0xf6,0x8c,0x39,0xeb,0x9f,0xa1,0x77,0xda,0xc4,0x99,0xea, - 0xfb,0x70,0xd7,0x8f,0xdb,0x61,0xe2,0x2c,0xf4,0x31,0x56,0x37,0x9c,0x33,0xd8,0x9e, - 0xc0,0xf6,0x38,0xdf,0x5a,0xb1,0xfd,0x18,0x7f,0x32,0xf4,0x7f,0x41,0x29,0xf3,0xad, - 0x55,0xce,0x09,0xe3,0xff,0x51,0x1f,0x63,0x74,0xc0,0x17,0x7f,0xb3,0x03,0xe3,0x0a, - 0x6b,0x7f,0x86,0x2e,0x99,0x11,0xc6,0xdf,0x4e,0x82,0xe5,0xaf,0xbc,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4b,0x9d,0x65, + 0x18,0xc7,0x9f,0x73,0x9e,0xf3,0xe2,0x34,0x5f,0xa6,0x6e,0xe6,0xc8,0xd5,0x5e,0x84, + 0xc2,0xa5,0x07,0xb2,0x65,0xda,0x06,0xb6,0x6c,0xcd,0xdc,0xdc,0xa6,0x50,0xb4,0x91, + 0x5b,0x29,0x35,0x65,0x6b,0x63,0xfd,0x66,0x4d,0x89,0xbd,0x94,0x12,0xb2,0xa2,0x14, + 0x4a,0x7f,0x28,0x65,0x41,0xc5,0x7e,0x8a,0x88,0xb6,0x61,0x5b,0xb5,0xbf,0x28,0x7a, + 0x81,0xa0,0xfb,0xba,0xcf,0xe7,0x1a,0xdf,0x0e,0xc5,0x0e,0xdc,0x3c,0xcf,0xfd,0xbd, + 0xde,0xbe,0xdf,0xeb,0xbe,0xee,0x87,0x93,0x66,0x77,0x14,0x93,0x24,0x93,0x54,0x27, + 0x55,0xc9,0xdd,0xa4,0xfc,0xdb,0x98,0x64,0x03,0x92,0x24,0x35,0x49,0x21,0x3e,0xf7, + 0x0f,0x8d,0x0c,0x75,0x9e,0x7f,0x7b,0xbc,0xb3,0xfb,0xc9,0x92,0xd9,0xeb,0x92,0x34, + 0xfa,0x99,0xad,0x3e,0x29,0x26,0xb9,0xf0,0xb4,0x75,0xfa,0xe4,0xa9,0x33,0x86,0xd7, + 0x86,0xf5,0x55,0x58,0x0d,0xc1,0xcf,0xf0,0xa2,0xe5,0x08,0x6f,0xb5,0x31,0xa7,0xc5, + 0x24,0xc9,0x0b,0x49,0x3e,0x69,0xa2,0xde,0x0e,0x9e,0x8e,0x65,0xc0,0xaa,0x04,0xcb, + 0x82,0x35,0x08,0x96,0x82,0x35,0x0b,0x96,0x03,0x7b,0x50,0xb0,0x3c,0xd8,0x43,0x82, + 0x15,0xc0,0x1e,0x11,0xac,0x08,0xb6,0x53,0xb0,0x2a,0xb0,0x47,0x05,0xdb,0x00,0xb6, + 0x4b,0xb0,0x6a,0xb0,0x92,0x60,0x35,0x60,0xdd,0x82,0x3d,0x00,0xd6,0x23,0x58,0x2d, + 0xd8,0x33,0xb1,0x4f,0xe9,0x3d,0xbd,0xd6,0xb3,0x7d,0xe1,0xb9,0x9d,0xfe,0xf8,0x7e, + 0x9b,0xec,0xad,0xcf,0x5b,0xd9,0x37,0x85,0xa8,0x6c,0xb4,0xa7,0xb1,0x37,0xf6,0xbe, + 0x29,0xf8,0x14,0xd0,0x69,0x7d,0x6d,0x09,0xfb,0x22,0xfa,0xcd,0xbe,0x39,0x78,0x56, + 0x63,0x37,0x5b,0x0d,0x5a,0x72,0x11,0xcb,0x45,0xbe,0x19,0xb4,0xf4,0xb1,0xaf,0x95, + 0x5c,0x75,0xf8,0x7b,0xad,0x46,0x72,0x25,0x91,0x57,0xc3,0xbd,0xbe,0x7a,0x4d,0x5b, + 0x8d,0xf7,0x59,0xee,0x63,0xf5,0x9b,0xe9,0x77,0x13,0xf5,0x9b,0x63,0x9d,0x32,0xd6, + 0x81,0xb6,0xcd,0xf0,0x31,0xff,0x16,0x6c,0x45,0xb1,0xb7,0x89,0x9e,0xad,0xd8,0x1b, + 0xe3,0xdc,0x64,0x63,0x2f,0x3b,0xe0,0xed,0x7d,0xf6,0xb8,0x0e,0x66,0xc7,0xf7,0xbb, + 0xd1,0x6e,0xba,0xf7,0xc2,0xd3,0xf2,0xb6,0x86,0x8c,0xfd,0xec,0x33,0xc9,0xbf,0x7f, + 0xbe,0xb7,0xda,0xcf,0xf2,0xde,0x8f,0x16,0xdb,0xef,0xab,0xa8,0x39,0x50,0xb1,0x1f, + 0xa4,0xb7,0x16,0xff,0x22,0xdc,0x0b,0x62,0x1f,0x66,0x6f,0x9c,0x5e,0xe6,0x3d,0x15, + 0xfb,0x89,0x8a,0x5e,0x4c,0x33,0xd3,0xbe,0xbf,0x5c,0xd1,0xcb,0xab,0xcc,0xa8,0xd5, + 0xbb,0x46,0xae,0xbd,0xf0,0xbd,0xc6,0xbd,0x4e,0x63,0x2f,0xf2,0x91,0x57,0x0e,0xbe, + 0x86,0xfd,0x11,0x10,0xeb,0xd7,0x1e,0xe6,0xa8,0x9e,0x7e,0x0d,0x07,0x06,0x75,0xdc, + 0xdd,0x7a,0x96,0xf7,0xe6,0x0c,0xf3,0xb8,0x11,0x7b,0x7f,0xc8,0xd0,0xc2,0xfd,0xdd, + 0xc4,0xd9,0xee,0xc1,0xa7,0x15,0xfc,0xbd,0xe0,0x63,0xfb,0x2d,0xc4,0xb5,0x12,0x67, + 0x67,0xfb,0x30,0x71,0x6d,0xc4,0xf9,0x3c,0x1a,0xfe,0x75,0xf0,0xd9,0x26,0xf7,0xde, + 0xce,0xfb,0xf7,0xc0,0xbc,0x1d,0x3e,0x7f,0x05,0x7f,0xbf,0xff,0xed,0xe8,0xb1,0xf7, + 0x23,0x21,0xae,0xc0,0x37,0x60,0x0b,0xbe,0x17,0xe8,0xd7,0x63,0xe0,0x47,0xc3,0xce, + 0x38,0x7d,0x03,0xe6,0x7e,0x7f,0x86,0x1c,0x9e,0xcb,0x9e,0xbf,0x05,0x2f,0xf3,0xbb, + 0x81,0x4f,0x9e,0x98,0x9d,0xa2,0x61,0x17,0x1a,0x3a,0x44,0xc3,0xe3,0xe0,0xae,0xa1, + 0x13,0xcc,0x35,0x94,0x44,0x83,0xd9,0xba,0xf8,0x16,0x59,0xdd,0x2e,0xd1,0xf0,0x04, + 0xb5,0x33,0xa2,0xa1,0x1b,0xdc,0x35,0x5c,0x07,0x73,0x3f,0xd3,0xe0,0xb9,0x4a,0xa2, + 0xe1,0x26,0x3e,0xed,0xc4,0x74,0x89,0x86,0xa7,0xd0,0xb0,0x5b,0x34,0xf4,0x80,0xbb, + 0x86,0xa7,0xc1,0x5c,0x43,0x9f,0x68,0x30,0x5b,0x6f,0x9c,0xbb,0x72,0xdd,0x5e,0xe6, + 0xa8,0x18,0xf3,0x95,0x6b,0xdf,0x94,0xfb,0x65,0x1c,0xdd,0xb7,0x4f,0x38,0xde,0xc2, + 0xaf,0x44,0x5c,0x2f,0x7c,0xec,0x0e,0x3e,0xc7,0xfd,0xf3,0x99,0x7b,0x1e,0xce,0x03, + 0x32,0x73,0xfb,0xc1,0x67,0x99,0xb9,0x03,0x60,0xb7,0x88,0xb3,0x3b,0x39,0x44,0xdc, + 0x20,0x71,0xd6,0xd3,0x83,0xe0,0x63,0x21,0xca,0xee,0xcf,0x21,0xea,0x1d,0xe0,0x3e, + 0x1f,0x94,0x5e,0x1d,0x26,0x7e,0x58,0x7a,0x75,0x04,0xdc,0x7b,0x75,0x14,0xcc,0x7b, + 0x35,0x2a,0xbd,0x32,0xdb,0x48,0xac,0x55,0xd6,0x3f,0x22,0xe7,0xfd,0x12,0xb5,0xd3, + 0x98,0xbf,0x2a,0x7e,0x23,0x5e,0x01,0x3b,0x24,0xf7,0x30,0x1b,0xeb,0x15,0xa2,0xfd, + 0x18,0x71,0xbe,0x2e,0x86,0x5c,0x86,0x1f,0x27,0xf6,0x58,0xcc,0xb5,0x21,0xea,0x7a, + 0x95,0x3c,0xc7,0xf9,0x16,0xe4,0xe5,0x1b,0x64,0x67,0x32,0x0a,0xa7,0x31,0xd1,0x7b, + 0x12,0xbd,0x27,0x44,0xef,0x6b,0xe0,0xae,0xf7,0x75,0x30,0xd7,0x3b,0x21,0x7a,0xcd, + 0x36,0x1e,0xd6,0x04,0xb9,0xc7,0x45,0xef,0x1b,0xa2,0xf7,0x5b,0x72,0xbd,0x09,0x3e, + 0x00,0x27,0x8f,0x9b,0x60,0x4e,0xcc,0xe7,0x14,0x35,0xc7,0xf0,0x1f,0xa7,0xee,0x94, + 0xd4,0x35,0x9f,0xc9,0xb0,0xa6,0x88,0x9f,0x94,0xba,0xa7,0xff,0xa3,0xcf,0x6f,0xdd, + 0xa7,0xcf,0x67,0x89,0xf3,0x75,0x85,0x3e,0x9f,0x23,0xf6,0xac,0xf4,0xf9,0x3c,0x79, + 0xce,0xfd,0x4f,0x9f,0x9d,0xd3,0x14,0x9a,0x2c,0xe6,0x27,0x62,0x26,0x88,0x9f,0xac, + 0x38,0x93,0x51,0xf1,0x5d,0xe7,0x2c,0x47,0x88,0x9b,0x92,0xf3,0x7a,0x87,0xf3,0x9a, + 0x96,0xf3,0x7a,0x17,0xdc,0xcf,0xeb,0x02,0x98,0x9f,0xd7,0xac,0xf4,0xcd,0x6c,0x33, + 0x61,0x5d,0xa2,0xee,0x8c,0xe8,0xba,0x48,0xed,0x75,0x74,0x15,0xe9,0x91,0xeb,0x9a, + 0x25,0xe6,0x92,0xf0,0xb9,0x02,0x9f,0xcb,0xc2,0xe7,0x7d,0x70,0xe7,0xf3,0x01,0x98, + 0xf3,0x99,0x17,0x3e,0x66,0x9b,0x0b,0x6b,0x81,0xdc,0x73,0x72,0x8e,0x1f,0xc2,0x25, + 0xe5,0x7b,0x68,0x1c,0xbf,0x13,0xdc,0xbf,0x35,0xf3,0xc4,0x2e,0xc8,0x77,0xe0,0x23, + 0x78,0x5d,0x95,0xef,0xc0,0xc7,0xe0,0x77,0xc9,0xff,0x09,0xd8,0xa0,0x70,0xfd,0x14, + 0x7c,0x00,0xae,0x4b,0xc2,0xd5,0x6c,0x8b,0x61,0x2d,0x51,0x6f,0x51,0x78,0x7d,0x4f, + 0xcc,0xba,0x7c,0xa7,0xdd,0x6f,0x49,0xce,0xf6,0x36,0x3e,0x0b,0xc4,0x2c,0x0a,0x9f, + 0xcf,0xe0,0xd3,0x26,0x7c,0x3e,0x07,0x77,0x3e,0x2b,0xc2,0xc7,0x6c,0xcb,0x61,0xad, + 0x50,0x67,0x59,0xf8,0xfc,0x40,0xcc,0x6d,0xce,0xd0,0xf8,0xb8,0xdf,0x8a,0xf0,0xb9, + 0x83,0xcf,0x12,0x31,0xcb,0xc2,0xe7,0x0b,0xf8,0x4c,0x0b,0x9f,0x2f,0xc1,0x9d,0xcf, + 0x9a,0xf0,0x31,0xdb,0x6a,0x58,0x6b,0xd4,0x59,0x15,0x3e,0x3f,0xf2,0xff,0xe1,0x8e, + 0xcc,0x93,0xfb,0xad,0x09,0x9f,0x5f,0xf1,0x59,0x21,0x66,0xb5,0xe2,0x8c,0xe7,0xc5, + 0xf7,0x17,0xe6,0x61,0x8e,0xb8,0xb5,0x8a,0x39,0x9d,0x15,0xdf,0x9f,0x99,0xef,0x19, + 0xe2,0xe6,0xe3,0x7f,0xa9,0x34,0xfe,0x87,0x32,0xdb,0xdf,0xe1,0xd4,0x7a,0xc2,0xfa, + 0x07,0x47,0x90,0xba,0x4c,0x84,0x0d,0x00,0x00 }; // Generated from: @@ -120,8 +90,8 @@ constexpr uint8_t kImageCopy_frag_00000014[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture2DArray src; -// layout(location = 0)out vec4 dst; +// layout(set = 0, binding = 0)uniform itexture2D src; +// layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -146,19 +116,6 @@ constexpr uint8_t kImageCopy_frag_00000014[] = { // bool rotateXY; // } params; // -// float sRGBToLinear(float sRGB) -// { -// -// if(sRGB <= 0.04045) -// { -// return sRGB / 12.92; -// } -// else -// { -// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); -// } -// } -// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -178,7 +135,7 @@ constexpr uint8_t kImageCopy_frag_00000014[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); // // if(params . premultiplyAlpha) // { @@ -189,17 +146,7 @@ constexpr uint8_t kImageCopy_frag_00000014[] = { // srcValue . rgb /= srcValue . a; // } // -// vec4 dstValue = vec4(srcValue); -// -// dstValue /= 255.0; -// -// if(params . dstIsSRGB) -// { -// -// dstValue . r = sRGBToLinear(dstValue . r); -// dstValue . g = sRGBToLinear(dstValue . g); -// dstValue . b = sRGBToLinear(dstValue . b); -// } +// ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc index 87506c33d33788320f0d87b97888e99517b38375..789b0bc162a35b682d2fe2463e94aebe976530b8 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc @@ -10,81 +10,80 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000016[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4b,0x9e,0x55, - 0x18,0xc7,0xef,0xe7,0xdd,0x69,0xbe,0x4c,0xdd,0xcc,0x91,0xab,0xb5,0x09,0x85,0x4b, - 0x8d,0x6c,0x99,0xb6,0x81,0x2d,0x5b,0x2d,0x6b,0xd3,0xbd,0x54,0x0a,0x95,0x63,0xae, - 0xa6,0xcc,0x94,0xd5,0x46,0x23,0x74,0x4d,0x21,0xda,0x2a,0x85,0x90,0x15,0xa5,0x50, - 0xfa,0x43,0x29,0xee,0x87,0xa0,0x9f,0x22,0xa2,0x36,0xda,0xd6,0xcb,0x9f,0x13,0xbd, - 0x40,0xd0,0xb9,0xce,0xf3,0xb9,0xc6,0x97,0x87,0x62,0xc2,0xe1,0xbe,0xcf,0xf7,0x7a, - 0xfb,0x7e,0xaf,0x73,0xdd,0xe7,0x31,0x93,0xde,0x5e,0x48,0x92,0x54,0x52,0x9e,0x94, - 0x25,0xbf,0x25,0xc5,0xbf,0x8d,0x49,0x3a,0x20,0x49,0x52,0x91,0xe4,0xe3,0x73,0x5f, - 0xdf,0xa1,0xbe,0xd6,0xd3,0x6f,0x1c,0x6f,0xed,0x78,0xb8,0xdd,0xec,0x55,0x49,0x26, - 0xfa,0x99,0xad,0x3a,0x29,0x24,0xd9,0xf0,0xb4,0x75,0x6a,0xf8,0xe4,0xb8,0xe1,0x95, - 0x61,0x5d,0x09,0xab,0x26,0xf8,0x19,0x5e,0xb0,0x1c,0xe1,0xad,0x32,0xe6,0xb4,0x98, - 0x24,0x79,0x2a,0xc9,0x25,0x75,0xd4,0xdb,0xce,0xd3,0xb1,0x14,0x58,0x99,0x60,0x69, - 0xb0,0x1a,0xc1,0x32,0x60,0xf5,0x82,0x65,0xc1,0xee,0x14,0x2c,0x07,0x76,0x97,0x60, - 0x79,0xb0,0x7b,0x04,0x2b,0x80,0xed,0x10,0xac,0x0c,0xec,0x3e,0xc1,0x36,0x80,0xed, - 0x14,0xac,0x1c,0xac,0x5d,0xb0,0x0a,0xb0,0x0e,0xc1,0xee,0x00,0xeb,0x14,0xac,0x12, - 0xec,0xb1,0xd8,0xa7,0xcc,0x2d,0xbd,0xd6,0xb3,0xbd,0xe1,0x79,0x2f,0xfd,0xf1,0xfd, - 0x36,0xd9,0x5b,0x9f,0xb7,0xb2,0xaf,0x0b,0x51,0xe9,0x68,0xcf,0xc4,0xde,0xd8,0xfb, - 0xa6,0xe0,0x93,0x47,0xa7,0xf5,0xb5,0x21,0xec,0x0b,0xe8,0x37,0xfb,0xe6,0xe0,0x59, - 0x8e,0xdd,0x6c,0x15,0x68,0xc9,0x46,0x2c,0x1b,0xf9,0xa6,0xd0,0xd2,0xcd,0xbe,0x52, - 0x72,0x55,0xe1,0xef,0xb5,0x6a,0xc9,0x95,0x44,0x5e,0x35,0xb7,0xfa,0xea,0x35,0x6d, - 0xd5,0xde,0x66,0xb9,0x8f,0xd5,0xaf,0xa7,0xdf,0x75,0xd4,0xaf,0x8f,0x75,0x8a,0x58, - 0x0b,0xda,0x36,0xc3,0xc7,0xfc,0x1b,0xb0,0x15,0xc4,0xde,0x24,0x7a,0xb6,0x62,0xaf, - 0x8d,0x73,0x93,0x8e,0xbd,0x6c,0x81,0xb7,0xf7,0xd9,0xe3,0x5a,0x98,0x1d,0xb7,0x3f, - 0x48,0x1d,0xb7,0xef,0xa2,0x17,0xd6,0x87,0x3d,0xf0,0xb6,0x3a,0x8d,0xa1,0x42,0x0f, - 0xfb,0x14,0x39,0x4b,0x9f,0xc6,0xe5,0x71,0xde,0x7b,0xd0,0x66,0xfb,0xbd,0x25,0x1c, - 0x7a,0x4b,0xf6,0xfb,0x99,0x7b,0x8b,0x7f,0x06,0x2d,0x79,0x38,0x3c,0xc7,0x7b,0x46, - 0xfc,0x07,0x38,0x1b,0xdf,0x1f,0xc5,0xc7,0xf7,0x27,0xe8,0x95,0xc5,0x9f,0xa3,0x2f, - 0x59,0xb1,0x4f,0xf3,0x0d,0xf8,0xfe,0x52,0x49,0xef,0x2f,0x33,0xd3,0xc6,0x67,0x9d, - 0xda,0xe7,0xd0,0xb3,0xce,0x3d,0x90,0x89,0xbd,0xca,0x45,0x1e,0x59,0xf4,0x18,0xf6, - 0x67,0x40,0xac,0xbf,0xbb,0x99,0xbb,0x6a,0xfa,0x79,0x20,0x30,0xaa,0xe2,0x5b,0xaf, - 0x66,0x79,0xef,0xc6,0x99,0xdf,0x8d,0xd8,0x7b,0x42,0x86,0x06,0xbe,0xf7,0x4d,0xcc, - 0xc2,0x6e,0x7c,0x1a,0xc1,0x2f,0x04,0x1f,0xdb,0x6f,0x21,0xae,0x91,0x38,0x9b,0x85, - 0xbb,0x89,0x6b,0x22,0xce,0xe7,0xd7,0xf0,0xb5,0xe0,0xb3,0x4d,0xee,0x09,0x9b,0x8f, - 0x3f,0x02,0xf3,0x66,0xf8,0xfc,0x1d,0xfc,0xfd,0xbe,0x68,0x46,0x8f,0xbd,0xf7,0x87, - 0xb8,0x3c,0x77,0xc6,0x16,0x7c,0xa7,0xe8,0xd7,0xfd,0xe0,0x03,0x61,0x67,0x9c,0xbe, - 0x06,0x73,0xbf,0xbf,0x42,0x0e,0xcf,0x65,0xcf,0xdf,0x83,0x97,0xf9,0xfd,0x88,0x4f, - 0x8e,0x98,0x1d,0xa2,0x61,0x27,0x1a,0x5a,0x44,0xc3,0x03,0xe0,0xae,0xa1,0x15,0xcc, - 0x35,0xb4,0x8b,0x06,0xb3,0xb5,0x71,0x77,0x59,0xdd,0x36,0xd1,0xf0,0x10,0xb5,0x53, - 0xa2,0xa1,0x03,0xdc,0x35,0x7c,0x03,0xe6,0x7e,0xa6,0xc1,0x73,0xb5,0x8b,0x86,0xab, - 0xf8,0x34,0x13,0xd3,0x26,0x1a,0x1e,0x41,0xc3,0x2e,0xd1,0xd0,0x09,0xee,0x1a,0x1e, - 0x05,0x73,0x0d,0xdd,0xa2,0xc1,0x6c,0x5d,0x71,0xee,0x8a,0x75,0xbb,0x98,0xa3,0x42, - 0xcc,0x57,0xac,0x7d,0x55,0xbe,0x3f,0xe3,0xe8,0xbe,0xdd,0xc2,0xf1,0x1a,0x7e,0xed, - 0xc4,0x75,0xc1,0xc7,0xbe,0xd1,0x27,0xf8,0x3e,0x7d,0xe6,0x9e,0x84,0x73,0xaf,0xcc, - 0xdc,0x3e,0xf0,0xf3,0xcc,0xdc,0xd3,0x60,0xd7,0x88,0xb3,0x6f,0xb6,0x8f,0xb8,0xfd, - 0xc4,0x59,0x4f,0x9f,0x05,0xf7,0xbe,0x1f,0x20,0x36,0x11,0xec,0x20,0x58,0x2a,0xbe, - 0xe7,0xe3,0xf7,0xde,0x8f,0xef,0x41,0x72,0x78,0x8d,0x43,0xd4,0x18,0x90,0x1a,0x87, - 0xc1,0x5f,0x0e,0xcc,0xec,0xbe,0x3a,0x82,0xa6,0x7e,0xee,0x88,0xc3,0x72,0x1e,0xcf, - 0x13,0x7f,0x54,0xce,0xe3,0x05,0x70,0x3f,0x8f,0x17,0xc1,0xfc,0x3c,0x86,0xe4,0x3c, - 0xcc,0x36,0x18,0xd6,0x08,0x3d,0x1e,0x14,0x1d,0x2f,0x51,0x3b,0x13,0xb9,0x97,0x45, - 0x1d,0xaf,0x80,0x1d,0x91,0x6f,0x3d,0x2d,0x3a,0x87,0x89,0xf3,0x35,0x1b,0x72,0x19, - 0x7e,0x8c,0xd8,0xe1,0x98,0x6b,0x43,0xd4,0x75,0x9c,0x3c,0xc7,0xb8,0x6f,0x72,0x72, - 0x2f,0xda,0xb9,0x0f,0xc1,0x69,0x44,0xf4,0xbe,0x8a,0xde,0x13,0xa2,0xf7,0x35,0x70, - 0xd7,0x7b,0x12,0xcc,0xf5,0x8e,0x89,0x5e,0xb3,0x8d,0x86,0x35,0x46,0xee,0x51,0xd1, - 0x7b,0x4a,0xf4,0xae,0x93,0x6b,0x1c,0xbc,0x17,0x4e,0x1e,0x37,0xc6,0x2c,0x9a,0xcf, - 0xeb,0xd4,0x1c,0xc1,0x7f,0x94,0xba,0x93,0x52,0xd7,0x7c,0x26,0xc2,0x9a,0x24,0x7e, - 0x42,0xea,0x9e,0xfe,0x8f,0x3e,0xbf,0x79,0x9b,0x3e,0x9f,0x21,0xce,0xd7,0xbb,0xf4, - 0xf9,0x2c,0xb1,0x67,0xa4,0xcf,0x6f,0x91,0xe7,0xec,0xff,0xf4,0xd9,0x39,0x4d,0xa2, - 0xc9,0x62,0xae,0x13,0x33,0x46,0xfc,0x44,0xc9,0x99,0x0c,0x89,0xef,0x4f,0x9c,0xe5, - 0x20,0x71,0x96,0xe7,0x6d,0x7e,0xa7,0xa6,0xb0,0xfb,0xf9,0x9d,0xe7,0xfc,0xa6,0xe5, - 0xfc,0xde,0x01,0xf7,0xf3,0xbb,0x00,0xe6,0xe7,0x37,0x2b,0x7d,0x34,0xdb,0x4c,0x58, - 0x17,0xe1,0x31,0x83,0x4e,0xab,0xf5,0x1e,0xf5,0xa6,0xd0,0x59,0xa0,0x67,0xae,0x73, - 0x96,0x98,0x8b,0xc2,0xe7,0x7d,0xf8,0x5c,0x12,0x3e,0x1f,0x80,0x3b,0x9f,0x0f,0xc1, - 0x9c,0xcf,0xbc,0xf0,0x31,0xdb,0x5c,0x58,0x0b,0xe4,0x9e,0xe3,0x5c,0x2d,0xcf,0x47, - 0x70,0xc9,0x70,0x07,0x1b,0xc7,0x6f,0x05,0xf7,0xfb,0x6d,0x9e,0xd8,0x05,0xb9,0x17, - 0x3e,0x86,0xd7,0x65,0xb9,0x17,0x3e,0x01,0xbf,0xce,0xdc,0x7c,0x0a,0x36,0x20,0x5c, - 0x3f,0x03,0xef,0x85,0xeb,0x92,0x70,0x35,0xdb,0x62,0x58,0x4b,0xd4,0x5b,0x14,0x5e, - 0xdf,0xa1,0x6f,0x4a,0x7e,0x1b,0xdc,0x6f,0x89,0xb3,0x36,0xbf,0x1b,0xf8,0x2c,0x10, - 0xb3,0x28,0x7c,0x3e,0x87,0x4f,0x93,0xf0,0xf9,0x02,0xdc,0xf9,0xac,0x08,0x1f,0xb3, - 0x2d,0x87,0xb5,0x42,0x9d,0x65,0xe1,0xf3,0x3d,0x7c,0x6e,0x70,0x86,0xc6,0xc7,0xfd, - 0x56,0x84,0xcf,0x4d,0x7c,0x96,0x88,0x59,0x16,0x3e,0x5f,0xc2,0x67,0x5a,0xf8,0x7c, - 0x05,0xee,0x7c,0xd6,0x84,0x8f,0xd9,0x56,0xa3,0x6f,0xb1,0xce,0xaa,0xf0,0xf9,0x81, - 0xff,0x2b,0x6f,0xca,0x3c,0xb9,0xdf,0x9a,0xf0,0xf9,0x15,0x9f,0x15,0x62,0x56,0x4b, - 0xce,0x78,0x5e,0x7c,0x7f,0x61,0x1e,0xe6,0x88,0x5b,0x2b,0x99,0xd3,0x59,0xf1,0xfd, - 0x99,0xf9,0x9e,0x21,0xce,0xf2,0xec,0x09,0x4c,0xae,0x60,0xfb,0x27,0x9c,0x5a,0x67, - 0x58,0xff,0x02,0x9b,0x13,0x36,0x51,0x28,0x0e,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xed,0x4b,0x9e,0x65, + 0x18,0xc6,0xef,0xe7,0xdd,0x69,0xbe,0x4c,0xdd,0xcc,0x91,0xab,0xb5,0x09,0x85,0x4b, + 0x1f,0xc8,0x96,0x69,0x1b,0xd8,0xb2,0xd5,0xb2,0x36,0xdd,0x4b,0xa5,0x50,0x39,0xe6, + 0x6a,0xca,0x4c,0x59,0x6d,0xf4,0x25,0x72,0x4d,0x83,0xb6,0x4a,0x09,0x59,0x51,0x0a, + 0xa5,0x1f,0x4a,0xb1,0x0f,0x41,0x9f,0x22,0xa2,0x36,0xdc,0xd6,0xcb,0x9f,0x13,0xbd, + 0x40,0xd0,0x75,0x5e,0xcf,0xef,0x1c,0x07,0x0f,0xc5,0x84,0x8b,0xfb,0xbe,0x8e,0xf3, + 0xed,0x38,0xce,0xf3,0xba,0x2f,0x9f,0x4c,0x7a,0x67,0x21,0x49,0x52,0x49,0x65,0x52, + 0x91,0xfc,0x96,0x94,0xfe,0x36,0x27,0xe9,0x80,0x24,0x49,0x55,0x92,0x8f,0xcf,0x03, + 0xfd,0x47,0xfa,0xdb,0xcf,0xbe,0x7e,0xb2,0xbd,0xf3,0xa1,0xa2,0xd9,0x6b,0x92,0x4c, + 0xf4,0x33,0x5b,0x6d,0x52,0x48,0xb2,0xe1,0x69,0xeb,0xcc,0xc8,0xe9,0x09,0xc3,0xab, + 0xc3,0xfa,0x3a,0xac,0xba,0xe0,0x67,0x78,0xc1,0x72,0x84,0xb7,0xea,0x98,0xd3,0x62, + 0x92,0xe4,0xc9,0x24,0x97,0x34,0x50,0x6f,0x27,0x4f,0xc7,0x52,0x60,0x15,0x82,0xa5, + 0xc1,0xea,0x04,0xcb,0x80,0x35,0x0a,0x96,0x05,0xbb,0x53,0xb0,0x1c,0xd8,0x5d,0x82, + 0xe5,0xc1,0xee,0x11,0xac,0x00,0xb6,0x4b,0xb0,0x0a,0xb0,0xfb,0x04,0xdb,0x04,0xb6, + 0x5b,0xb0,0x4a,0xb0,0xa2,0x60,0x55,0x60,0x9d,0x82,0xdd,0x01,0xd6,0x25,0x58,0x35, + 0xd8,0xa3,0xb1,0x4f,0x99,0x5b,0x7a,0xad,0x67,0xfb,0xc3,0xf3,0x5e,0xfa,0xe3,0xfb, + 0x1d,0xb2,0xb7,0x3e,0x6f,0x67,0xdf,0x10,0xa2,0xd2,0xd1,0x9e,0x89,0xbd,0xb1,0xf7, + 0x2d,0xc1,0x27,0x8f,0x4e,0xeb,0x6b,0x53,0xd8,0x17,0xd0,0x6f,0xf6,0xad,0xc1,0xb3, + 0x12,0xbb,0xd9,0xaa,0xd0,0x92,0x8d,0x58,0x36,0xf2,0x4d,0xa1,0xa5,0x87,0x7d,0xb5, + 0xe4,0xaa,0xc1,0xdf,0x6b,0xd5,0x93,0x2b,0x89,0xbc,0xea,0x6e,0xf5,0xd5,0x6b,0xda, + 0xaa,0xbf,0xcd,0x72,0x1f,0xab,0xdf,0x48,0xbf,0x1b,0xa8,0xdf,0x18,0xeb,0x94,0xb0, + 0x36,0xb4,0x6d,0x85,0x8f,0xf9,0x37,0x61,0x2b,0x88,0xbd,0x45,0xf4,0x6c,0xc7,0x5e, + 0x1f,0xcf,0x4d,0x3a,0xf6,0xb2,0x0d,0xde,0xde,0x67,0x8f,0x6b,0xe3,0xec,0xf8,0x7e, + 0x0f,0xda,0x4d,0xf7,0x3e,0x78,0x5a,0xde,0xe6,0x90,0xb1,0x57,0x7a,0xaa,0x7f,0x29, + 0x9e,0x56,0xfb,0x31,0xde,0x7b,0xd1,0x62,0xfb,0xfd,0x65,0x35,0xfb,0xca,0xf6,0x07, + 0x39,0xe7,0x16,0xff,0x34,0xdc,0xf3,0x70,0x78,0x96,0xf7,0x8c,0xf8,0x0f,0xc2,0xc1, + 0xf7,0xc7,0xf1,0xf1,0xfd,0xa9,0xb2,0xde,0x4c,0x73,0xc6,0x7d,0x7f,0xb9,0xac,0xb7, + 0x57,0x38,0xb3,0x56,0x7f,0x9d,0x5a,0xfb,0xe0,0xbf,0xce,0x77,0x9e,0x89,0xbd,0xc9, + 0xc5,0xba,0x59,0xf8,0x1b,0xf6,0x67,0x40,0xac,0x7f,0x7b,0x39,0x57,0xb5,0xf4,0xef, + 0x50,0x60,0x50,0xc3,0xb7,0x5c,0xcb,0xf2,0x5e,0x4d,0x70,0x3e,0x37,0x63,0xef,0x0d, + 0x19,0x9a,0xf8,0x9e,0xb7,0x30,0xeb,0xbd,0xf8,0x34,0x83,0x5f,0x08,0x3e,0xb6,0xdf, + 0x46,0x5c,0x33,0x71,0x36,0xeb,0xbb,0x89,0x6b,0x21,0xce,0xcf,0xa7,0xe1,0x6b,0xc1, + 0x67,0x87,0xdc,0x03,0x36,0xff,0x3f,0x02,0xf3,0x56,0xf8,0xfc,0x1d,0xfc,0xfd,0x3e, + 0x68,0x45,0x8f,0xbd,0x0f,0x84,0xb8,0x3c,0x77,0xc2,0x36,0x7c,0xdf,0xa2,0x5f,0xf7, + 0x83,0x0f,0x86,0x9d,0x71,0xfa,0x06,0xcc,0xfd,0xfe,0x0a,0x39,0x3c,0x97,0x3d,0x7f, + 0x0f,0x5e,0xe6,0xf7,0x13,0x3e,0x39,0x62,0x76,0x89,0x86,0xdd,0x68,0x68,0x13,0x0d, + 0x0f,0x80,0xbb,0x86,0x76,0x30,0xd7,0x50,0x14,0x0d,0x66,0xeb,0xe0,0x6e,0xb2,0xba, + 0x1d,0xa2,0xe1,0x41,0x6a,0xa7,0x44,0x43,0x27,0xb8,0x6b,0xf8,0x16,0xcc,0xfd,0x4c, + 0x83,0xe7,0x2a,0x8a,0x86,0xab,0xf8,0xb4,0x12,0xd3,0x21,0x1a,0x1e,0x46,0xc3,0x1e, + 0xd1,0xd0,0x05,0xee,0x1a,0x1e,0x01,0x73,0x0d,0x3d,0xa2,0xc1,0x6c,0xdd,0xf1,0xdc, + 0x95,0xea,0x76,0x73,0x8e,0x0a,0x31,0x5f,0xa9,0xf6,0x55,0xf9,0xde,0x8c,0xa3,0xfb, + 0xf6,0x08,0xc7,0x6b,0xf8,0x15,0x89,0xeb,0x86,0x8f,0x7d,0x93,0x8f,0xf3,0x3d,0xfa, + 0x99,0x7b,0x02,0xce,0x7d,0x72,0xe6,0x0e,0x80,0xbf,0xcd,0x99,0x7b,0x0a,0xec,0x1a, + 0x71,0xf6,0x8d,0xf6,0x13,0x77,0x90,0x38,0xeb,0xe9,0x33,0xe0,0xde,0xf7,0x43,0xc4, + 0x26,0x82,0x1d,0x06,0x4b,0xc5,0xf7,0x7c,0xfc,0xbe,0x07,0xf0,0x3d,0x4c,0x0e,0xaf, + 0x71,0x84,0x1a,0x83,0x52,0xe3,0x28,0xf8,0x4b,0x81,0x99,0x7d,0xa3,0xc7,0xd0,0x34, + 0xc0,0x9d,0x70,0x54,0xe6,0xf1,0x1c,0xf1,0xc7,0x65,0x1e,0xcf,0x83,0xfb,0x3c,0x5e, + 0x00,0xf3,0x79,0x0c,0xcb,0x3c,0xcc,0x36,0x14,0xd6,0x28,0x3d,0x1e,0x12,0x1d,0x2f, + 0x52,0x3b,0x13,0xb9,0x57,0x44,0x1d,0x2f,0x83,0x1d,0x93,0x6f,0x3d,0x2d,0x3a,0x47, + 0x88,0xf3,0x75,0x31,0xe4,0x32,0xfc,0x04,0xb1,0x23,0x31,0xd7,0xa6,0xa8,0xeb,0x24, + 0x79,0x4e,0x70,0xdf,0xe4,0xe4,0x1e,0xb4,0xb9,0x0f,0xc3,0x69,0x54,0xf4,0xbe,0x82, + 0xde,0x53,0xa2,0xf7,0x55,0x70,0xd7,0x7b,0x1a,0xcc,0xf5,0x8e,0x8b,0x5e,0xb3,0x8d, + 0x85,0x35,0x4e,0xee,0x31,0xd1,0x7b,0x46,0xf4,0xae,0x93,0x6b,0x02,0xbc,0x0f,0x4e, + 0x1e,0x37,0xce,0x59,0x34,0x9f,0xd7,0xa8,0x39,0x8a,0xff,0x18,0x75,0xa7,0xa4,0xae, + 0xf9,0x4c,0x86,0x35,0x45,0xfc,0xa4,0xd4,0x3d,0xfb,0x1f,0x7d,0x7e,0xe3,0x36,0x7d, + 0x3e,0x47,0x9c,0xaf,0x77,0xe9,0xf3,0x79,0x62,0xcf,0x49,0x9f,0xdf,0x24,0xcf,0xf9, + 0xff,0xe9,0xb3,0x73,0x9a,0x42,0x93,0xc5,0x5c,0x27,0x66,0x9c,0xf8,0xc9,0xb2,0x99, + 0x0c,0x8b,0xef,0x06,0xb3,0x1c,0x22,0x6e,0x4a,0xe6,0x75,0x81,0x79,0x4d,0xcb,0xbc, + 0xde,0x01,0xf7,0x79,0x5d,0x04,0xf3,0x79,0xcd,0x4a,0xdf,0xcc,0x36,0x13,0xd6,0x25, + 0xea,0xce,0x88,0xae,0xf7,0xa8,0xbd,0x81,0xae,0x02,0x3d,0x72,0x5d,0xb3,0xc4,0x5c, + 0x12,0x3e,0xef,0xc3,0xe7,0xb2,0xf0,0xf9,0x00,0xdc,0xf9,0x7c,0x08,0xe6,0x7c,0xe6, + 0x85,0x8f,0xd9,0xe6,0xc2,0x5a,0x20,0xf7,0x9c,0xcc,0xf1,0x23,0xb8,0x64,0xb8,0x73, + 0x8d,0xe3,0x77,0x82,0xfb,0x7d,0x36,0x4f,0xec,0x82,0xdc,0x03,0x1f,0xc3,0xeb,0x8a, + 0xdc,0x03,0x9f,0x80,0x5f,0x27,0xff,0xa7,0x60,0x83,0xc2,0xf5,0x33,0xf0,0x3e,0xb8, + 0x2e,0x09,0x57,0xb3,0x2d,0x86,0xb5,0x44,0xbd,0x45,0xe1,0xf5,0x3d,0x31,0x1b,0xf2, + 0xbf,0xc0,0xfd,0x96,0x64,0xb6,0x37,0xf0,0x59,0x20,0x66,0x51,0xf8,0x7c,0x0e,0x9f, + 0x16,0xe1,0xf3,0x05,0xb8,0xf3,0x59,0x11,0x3e,0x66,0x5b,0x0e,0x6b,0x85,0x3a,0xcb, + 0xc2,0xe7,0x07,0x62,0x6e,0x30,0x43,0xe3,0xe3,0x7e,0x2b,0xc2,0xe7,0x26,0x3e,0x4b, + 0xc4,0x2c,0x0b,0x9f,0x2f,0xe1,0x33,0x2d,0x7c,0xbe,0x02,0x77,0x3e,0x6b,0xc2,0xc7, + 0x6c,0xab,0xd1,0xb7,0x54,0x67,0x55,0xf8,0xfc,0xc8,0x6f,0x94,0x9b,0x72,0x9e,0xdc, + 0x6f,0x4d,0xf8,0xfc,0x8a,0xcf,0x0a,0x31,0xab,0x65,0x33,0x9e,0x17,0xdf,0x5f,0x38, + 0x0f,0x73,0xc4,0xad,0x95,0x9d,0xd3,0x59,0xf1,0xfd,0x99,0xf3,0x3d,0x43,0xdc,0x7c, + 0xfc,0xbd,0x96,0x89,0xbf,0xd3,0xcc,0xf6,0x4f,0x98,0x5a,0x57,0x58,0xff,0x02,0x3c, + 0x97,0x98,0x92,0xf8,0x0d,0x00,0x00 }; // Generated from: @@ -93,8 +92,8 @@ constexpr uint8_t kImageCopy_frag_00000016[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture2DArray src; -// layout(location = 0)out uvec4 dst; +// layout(set = 0, binding = 0)uniform itexture3D src; +// layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -149,7 +148,7 @@ constexpr uint8_t kImageCopy_frag_00000016[] = { // srcValue . rgb /= srcValue . a; // } // -// uvec4 dstValue = uvec4(srcValue); +// ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc new file mode 100644 index 0000000000000000000000000000000000000000..26750e51ed7410216e6f45556ffc0272aa0117e5 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc @@ -0,0 +1,181 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.00000017.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_00000017[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4f,0xd5,0x65, + 0x18,0xc6,0xbf,0xe7,0x8d,0x83,0x10,0x2f,0x02,0x4a,0x54,0x58,0x26,0x6c,0x36,0x0c, + 0x58,0x91,0x11,0xa4,0x1b,0xa6,0xe8,0xca,0x42,0x34,0xa5,0x82,0x2d,0x4b,0x16,0x5a, + 0xa0,0xc5,0xa9,0xa5,0x6b,0x6b,0x2d,0x4c,0xf8,0x21,0xad,0x60,0x8d,0x59,0x2b,0xd8, + 0x0a,0x7e,0x48,0x98,0xfd,0xd0,0xd6,0x4f,0xad,0xb5,0xb2,0x48,0x7b,0xf9,0x6b,0x5a, + 0x2f,0x5b,0x5b,0xcf,0xfd,0x9c,0xcf,0xed,0xae,0xce,0x6a,0x9e,0xed,0xd9,0xf7,0x3c, + 0xd7,0xfd,0x76,0x5d,0xf7,0xfd,0x7c,0x9f,0x73,0x32,0xe9,0x2d,0xf9,0x24,0x49,0x25, + 0x15,0x49,0x79,0xf2,0x6b,0x52,0xfc,0xac,0x4f,0xd2,0x01,0x29,0x3e,0xef,0x09,0xcf, + 0xca,0xa4,0x2c,0xee,0xf7,0xee,0x3f,0xb4,0xbf,0xbd,0xf0,0xf2,0x68,0x7b,0xd7,0x7d, + 0x9d,0xe6,0x57,0x9d,0x64,0xa2,0xbf,0xd9,0x6a,0x92,0x7c,0x92,0x0d,0x4f,0x5b,0x13, + 0xcf,0x9c,0x38,0x69,0x78,0x55,0x58,0x9f,0x87,0x55,0x1b,0xfc,0x0c,0xcf,0x5b,0x8e, + 0xf0,0xad,0x2a,0xe6,0xb4,0x98,0x24,0xd9,0x97,0xe4,0x92,0x7a,0xea,0x6e,0xe1,0xe9, + 0x58,0x0a,0xac,0x5c,0xb0,0x34,0x58,0xad,0x60,0x19,0xb0,0x06,0xc1,0xb2,0x60,0x37, + 0x0b,0x96,0x03,0xbb,0x4d,0xb0,0x32,0xb0,0x3b,0x04,0xcb,0x83,0xb5,0x08,0x56,0x0e, + 0xb6,0x55,0xb0,0x75,0x60,0xdb,0x04,0xab,0x00,0xeb,0x14,0xac,0x12,0xac,0x4b,0xb0, + 0x9b,0xc0,0xba,0x05,0xab,0x02,0x7b,0x30,0xf6,0x29,0x73,0x5d,0xaf,0xf5,0x6c,0x77, + 0x78,0xde,0x49,0x7f,0x7c,0xbf,0x59,0xf6,0xd6,0xe7,0x4d,0xec,0xeb,0x43,0x54,0x3a, + 0xda,0x33,0xb1,0x37,0xf6,0x7d,0x43,0xf0,0x29,0x43,0xa7,0xf5,0xb5,0x31,0xec,0xf3, + 0xe8,0x37,0xfb,0xc6,0xe0,0x59,0x81,0xdd,0x6c,0x95,0x68,0xc9,0x46,0x2c,0x1b,0xf9, + 0xa6,0xd0,0xd2,0xcb,0xbe,0x4a,0x72,0x55,0xe3,0xef,0xb5,0xea,0xc8,0x95,0x44,0x5e, + 0xb5,0xd7,0xfb,0xea,0x35,0x6d,0xd5,0xdd,0x60,0xb9,0x8f,0xd5,0x6f,0xa0,0xdf,0xf5, + 0xd4,0x6f,0x88,0x75,0x8a,0x58,0x1b,0xda,0x36,0xc2,0xc7,0xfc,0x1b,0xb1,0xe5,0xc5, + 0xde,0x2c,0x7a,0x36,0x61,0xaf,0x8b,0xe7,0x26,0x1d,0x7b,0xd9,0x06,0x6f,0xef,0xb3, + 0xc7,0xb5,0x71,0x76,0x7c,0xbf,0x1d,0xed,0xa6,0x7b,0x27,0x3c,0x2d,0x6f,0x53,0xc8, + 0xd8,0xc7,0x3e,0x95,0xfc,0xfb,0xe3,0xfb,0x5b,0x43,0x9f,0x77,0x85,0x67,0x1f,0x3c, + 0x1e,0x02,0xdf,0x85,0x2e,0xdb,0xef,0x2e,0xa9,0xdf,0x5f,0xb2,0x1f,0xa4,0xcf,0x16, + 0x7f,0x10,0x1d,0x65,0x62,0x1f,0x62,0x6f,0xfc,0x8e,0xf2,0x3d,0x23,0xf6,0xe3,0x25, + 0x7d,0x99,0xe2,0x7c,0xfb,0xfe,0x42,0x49,0x5f,0x2f,0x72,0x5e,0xad,0xde,0x65,0x72, + 0xed,0x84,0xef,0x65,0xde,0xf1,0x4c,0xec,0x4b,0x2e,0xf2,0xca,0xc2,0xd7,0xb0,0x3f, + 0x02,0x62,0xbd,0xdb,0xc1,0x99,0xaa,0xa1,0x77,0x03,0x81,0x41,0x35,0xef,0x71,0x0d, + 0xcb,0xfb,0x74,0x92,0xb3,0xb9,0x1e,0x7b,0x5f,0xc8,0xd0,0xc8,0xbb,0xbc,0x81,0x39, + 0xef,0xc0,0xa7,0x09,0xfc,0xcd,0xe0,0x63,0xfb,0x5b,0x88,0x6b,0x22,0xce,0xe6,0x7c, + 0x3b,0x71,0xcd,0xc4,0xf9,0xd9,0x34,0xfc,0x52,0xf0,0xd9,0x2c,0x77,0x80,0xcd,0xfe, + 0xf7,0xc0,0xbc,0x15,0x3e,0x7f,0x05,0x7f,0xbf,0x0b,0x5a,0xd1,0xd3,0x12,0x67,0x90, + 0x8b,0xbd,0xd9,0x4a,0x4d,0xfb,0xbc,0x4e,0xbf,0xee,0x02,0x3f,0x18,0x76,0xc6,0xe9, + 0x0b,0x30,0xf7,0xfb,0x33,0xe4,0xf0,0x5c,0xf6,0xfc,0x2d,0x78,0x99,0xdf,0x77,0xf8, + 0xe4,0x88,0x69,0x11,0x0d,0xdb,0xd0,0xd0,0x26,0x1a,0xee,0x06,0x77,0x0d,0xed,0x60, + 0xae,0xa1,0x53,0x34,0x98,0xad,0x83,0x7b,0xc9,0xea,0x76,0x88,0x86,0x7b,0xa9,0x9d, + 0x12,0x0d,0x5d,0xe0,0xae,0xe1,0x4b,0x30,0xf7,0x33,0x0d,0x9e,0xab,0x53,0x34,0x5c, + 0xc1,0xa7,0x95,0x98,0x0e,0xd1,0x70,0x3f,0x1a,0xb6,0x8b,0x86,0x6e,0x70,0xd7,0xf0, + 0x00,0x98,0x6b,0xe8,0x15,0x0d,0x66,0xeb,0x89,0xe7,0xae,0x58,0xb7,0x87,0x73,0x94, + 0x8f,0xf9,0x8a,0xb5,0xaf,0xc8,0xbb,0x66,0x1c,0xdd,0xb7,0x57,0x38,0x7e,0x8f,0x5f, + 0x27,0x71,0x3d,0xf0,0xb1,0x77,0x70,0x0f,0xef,0x9f,0x9f,0xb9,0xbd,0x70,0xee,0x97, + 0x33,0xb7,0x0f,0xfc,0x0d,0xce,0xdc,0xc3,0x60,0x96,0xf7,0x14,0x77,0xe1,0x23,0xe0, + 0xa3,0x61,0x6f,0xef,0xfa,0xa3,0xe4,0x1e,0x23,0xe6,0x31,0xb0,0x7e,0x89,0x19,0x00, + 0x9f,0x09,0x3e,0xb6,0x3f,0x40,0x9e,0x01,0xf8,0xd8,0xbb,0x7e,0x08,0x3e,0x83,0xf0, + 0xb1,0x59,0x3d,0x0e,0x6e,0x79,0xec,0x0e,0x3e,0x0c,0x36,0x14,0x2a,0xd9,0x7b,0x7a, + 0x84,0xda,0x07,0xe8,0xcd,0x61,0x99,0xc9,0x13,0xe4,0x1b,0x92,0x99,0x3c,0x09,0xee, + 0x33,0x79,0x0a,0xcc,0x67,0x32,0x22,0x33,0x31,0xdb,0x70,0xd4,0x55,0xec,0xf3,0xb0, + 0x9c,0xab,0xa7,0xa9,0x9d,0x89,0x1a,0xca,0xe3,0x5d,0xf4,0x2c,0xd8,0x11,0x79,0xdf, + 0xd3,0x91,0x5b,0x59,0xb4,0x1f,0x23,0xce,0xd7,0xd9,0x90,0xeb,0x68,0xec,0x63,0x31, + 0xf6,0x58,0xcc,0xb5,0x2e,0xea,0x7a,0x8e,0x3c,0xa3,0xdc,0x39,0x39,0xb9,0xeb,0x6c, + 0xf6,0x23,0x70,0x1a,0x13,0xbd,0x27,0xd0,0x7b,0x5c,0xf4,0x3e,0x0f,0xee,0x7a,0x5f, + 0x00,0x73,0xbd,0x13,0xa2,0xd7,0x6c,0xe3,0xf6,0x1f,0x87,0xdc,0xe3,0xa2,0xf7,0x94, + 0xe8,0x5d,0x25,0xd7,0x8b,0xe0,0xfd,0x70,0xf2,0xb8,0x09,0xce,0xa3,0xf9,0xbc,0x44, + 0xcd,0x31,0xfc,0xc7,0xa9,0x5b,0x90,0xba,0xe6,0x33,0x19,0x56,0x81,0xf8,0x49,0xa9, + 0xfb,0xca,0x7f,0xf4,0xf9,0xd5,0x1b,0xf4,0xf9,0x34,0x71,0xbe,0xa6,0xe9,0xf3,0x19, + 0x62,0x4f,0x4b,0x9f,0x5f,0x23,0xcf,0x99,0xff,0xe9,0xb3,0x73,0x2a,0xa0,0xc9,0x62, + 0x7e,0x24,0x66,0x82,0xf8,0xc9,0x92,0x99,0x8c,0x88,0xef,0x1a,0xb3,0x1c,0x26,0xae, + 0x20,0xf3,0x3a,0xcb,0xbc,0xa6,0x64,0x5e,0x6f,0x81,0xfb,0xbc,0xce,0x81,0xf9,0xbc, + 0x66,0xa4,0x6f,0xe7,0xa2,0xb6,0x24,0x39,0x4f,0xdd,0x69,0xd1,0xf5,0x36,0xb5,0xd7, + 0xd0,0x95,0xa7,0x47,0xae,0x6b,0x86,0x98,0xf3,0xc2,0xe7,0x1d,0xf8,0x5c,0x10,0x3e, + 0xef,0x82,0x3b,0x9f,0xf7,0xc0,0x9c,0xcf,0x9c,0xf0,0x31,0xdb,0x6c,0x58,0xf3,0xe4, + 0x9e,0x95,0x39,0xbe,0x0f,0x97,0x0c,0xf7,0xae,0x71,0xfc,0x4a,0x70,0xbf,0xd3,0xe6, + 0x88,0x9d,0x97,0x7b,0xe1,0x03,0x78,0x5d,0x94,0x7b,0xe1,0x43,0xf0,0x1f,0xc8,0xff, + 0x11,0xd8,0xa0,0x70,0xfd,0x18,0xbc,0x1f,0xae,0x8b,0xc2,0xd5,0x6c,0x0b,0x61,0x2d, + 0x52,0x6f,0x41,0x78,0x7d,0x4d,0xcc,0x9a,0xfc,0x1e,0xb8,0xdf,0xa2,0xcc,0xf6,0x2a, + 0x3e,0xf3,0xc4,0x2c,0x08,0x9f,0x4f,0xe0,0xd3,0x2c,0x7c,0x3e,0x05,0x77,0x3e,0xcb, + 0xc2,0xc7,0x6c,0x4b,0x61,0x2d,0x53,0x67,0x49,0xf8,0x7c,0x43,0xcc,0x55,0x66,0x68, + 0x7c,0xdc,0x6f,0x59,0xf8,0x5c,0xc3,0x67,0x91,0x98,0x25,0xe1,0xf3,0x19,0x7c,0xa6, + 0x84,0xcf,0x25,0x70,0xe7,0xb3,0x2a,0x7c,0xcc,0xb6,0x12,0xdf,0xf5,0x62,0x9d,0x15, + 0xe1,0xf3,0x2d,0xff,0x53,0xae,0xc9,0x79,0x72,0xbf,0x55,0xe1,0xf3,0x0b,0x3e,0xcb, + 0xc4,0xac,0x94,0xcc,0x78,0x4e,0x7c,0x7f,0xe6,0x3c,0xcc,0x12,0xb7,0x5a,0x72,0x4e, + 0x67,0xc4,0xf7,0x27,0xce,0xf7,0x34,0x71,0x73,0xf1,0x3f,0x5b,0x26,0xfe,0x57,0x33, + 0xdb,0xdf,0x61,0x6a,0xdd,0x61,0xfd,0x03,0xb2,0x7b,0xf8,0x8a,0x00,0x0e,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform isampler2D src; +// layout(location = 0)out ivec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// ivec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// ivec4 dstValue = ivec4(srcValue); +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc index 834b52ab4e10796197c7582b37b4d1e32d95e1db..c1c392a541d4c53971826209167cdaeee04ffe7f 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc @@ -10,109 +10,79 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000018[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x68,0x96,0x55, - 0x18,0xc7,0xcf,0x79,0x9e,0xed,0xd9,0xd4,0x69,0x66,0x9a,0xf3,0x6d,0x6c,0xbe,0x65, - 0x6d,0xcd,0x97,0x6c,0x9a,0xfa,0xa8,0xcb,0x97,0x8d,0x9a,0xce,0x4d,0x0a,0xcc,0x4c, - 0x34,0x2b,0x35,0x9d,0xb5,0x05,0x45,0x8a,0x4e,0xdd,0x2a,0x1d,0x91,0xd2,0x87,0x28, - 0xcd,0x14,0x82,0x88,0xc2,0xc0,0x4a,0x3f,0xa4,0x95,0x23,0xcc,0xa2,0x5c,0x50,0x0e, - 0xca,0x85,0x7e,0xea,0x63,0x24,0x69,0xa9,0x11,0x75,0xae,0xfb,0xfc,0xae,0xed,0x6a, - 0xbd,0x0d,0x0e,0xf7,0x7d,0xfe,0xd7,0xf5,0xbf,0x5e,0xfe,0xe7,0xe5,0xde,0x96,0x4e, - 0x8d,0xc9,0x73,0xce,0xbb,0xbe,0x2e,0xdf,0xd5,0x7b,0x97,0xfc,0x5c,0xef,0x52,0x4e, - 0x5e,0xfb,0xb9,0x4c,0xf2,0xac,0xaa,0x59,0x5a,0x53,0xde,0xf4,0xc4,0x9a,0xf2,0xa9, - 0xb7,0x4f,0x12,0xfb,0x00,0x97,0x4e,0xfc,0xc4,0x76,0x9d,0xcb,0x73,0x39,0xe1,0x29, - 0x63,0xe3,0xaa,0x75,0x0d,0x82,0x8f,0x0f,0xe3,0x42,0x18,0x03,0x83,0x9f,0xe0,0x79, - 0x12,0x23,0xbc,0x8d,0x4f,0x62,0x0a,0xc7,0xb9,0x6a,0x97,0xeb,0xca,0x62,0x3a,0x37, - 0x86,0xa7,0x62,0x1e,0x2c,0xdf,0x60,0x29,0xb0,0x81,0x06,0x4b,0x83,0x0d,0x36,0x58, - 0x0e,0x58,0xa1,0xc1,0x72,0xc1,0x46,0x1a,0x2c,0x03,0x56,0x6c,0xb0,0x3c,0xb0,0xb1, - 0x06,0xcb,0x07,0x9b,0x60,0xb0,0x3e,0x60,0x65,0x06,0xeb,0x0b,0x36,0xc9,0x60,0xfd, - 0xc0,0xa6,0x1a,0xac,0x00,0x6c,0xba,0xc1,0xfa,0x83,0xcd,0x4a,0x74,0x4a,0x77,0xf7, - 0x2b,0x9a,0x2d,0x0f,0xcf,0xd1,0xe8,0xa3,0xf3,0x12,0x33,0x17,0x9d,0x8b,0x98,0xdf, - 0x10,0x58,0xa9,0xc4,0x9e,0x4e,0xb4,0x91,0xf7,0x1b,0xc3,0x5b,0x86,0x3e,0x4b,0x83, - 0x7f,0x86,0x7c,0x3f,0x1c,0x1e,0x97,0x1d,0x1c,0x3c,0x06,0x18,0x5c,0x34,0x3b,0x5c, - 0xb5,0x2a,0xab,0x73,0xd1,0xeb,0x95,0x97,0x87,0xcd,0x1d,0x12,0xe6,0xc5,0xc4,0x90, - 0xb5,0x19,0x1a,0xe6,0x25,0xcc,0x53,0xcc,0xc7,0xa2,0x69,0x4e,0x82,0xe7,0xb8,0x71, - 0xf8,0x0a,0x3e,0x93,0xf9,0x78,0xc3,0xbf,0x09,0x7f,0xe1,0x4b,0xfc,0x52,0xe2,0xb9, - 0xa4,0x9f,0x81,0x89,0x06,0x25,0x8c,0xe2,0xee,0xfa,0xff,0x7b,0x14,0x77,0x3f,0x73, - 0xdc,0xad,0xac,0x53,0x19,0xf9,0x65,0x5e,0x0e,0x56,0x4a,0x3f,0x13,0xa9,0x47,0xfc, - 0x27,0x61,0x2b,0x31,0xf6,0x0a,0xd3,0xcf,0xb4,0x6e,0x6e,0xb4,0xcb,0x73,0x06,0xf5, - 0xaa,0xff,0x3c,0xf6,0x9a,0xce,0x17,0xa3,0xb5,0xf4,0x7b,0x2f,0x5c,0x89,0x37,0x2c, - 0x44,0x5a,0xc6,0x9c,0x23,0xf7,0xb7,0xa7,0xe4,0xbc,0x8f,0xf7,0x65,0xf4,0x20,0xf3, - 0xe5,0xbd,0x72,0xae,0xe8,0x35,0x5f,0xcd,0xb9,0x10,0xfe,0x83,0xd4,0x5c,0x4c,0x0d, - 0x0f,0xf3,0x9e,0x36,0xfe,0xeb,0x59,0x03,0x9d,0x37,0xb0,0x2e,0xe2,0xff,0x14,0x35, - 0x5a,0xff,0x66,0xce,0x89,0xce,0xf7,0xb3,0xcf,0x75,0x7e,0x84,0x33,0xa3,0xf3,0x13, - 0xbd,0x34,0x3f,0xcd,0x19,0xd0,0x3d,0xf6,0x95,0xa9,0x5f,0xe6,0xdf,0x27,0xb3,0xe6, - 0x39,0x52,0xff,0x79,0x72,0xeb,0x1e,0x3a,0xcf,0xbd,0x92,0x36,0xfe,0xb3,0x82,0x60, - 0xdb,0x9b,0x9b,0x67,0x96,0x85,0xaa,0xc4,0x2f,0xeb,0x23,0x66,0x87,0xfa,0xce,0x0e, - 0xef,0x9b,0xde,0x68,0x9c,0xa3,0xf3,0x39,0x61,0xbe,0x77,0xe7,0x81,0x6c,0x45,0x58, - 0xb5,0x14,0x6b,0xe3,0x88,0x7f,0x25,0x20,0xb2,0x96,0x59,0xf6,0xf6,0x04,0xf6,0x6f, - 0x6d,0xc8,0x23,0x7b,0xf7,0x66,0xb0,0x09,0x66,0xdd,0x1a,0x38,0x17,0xb7,0x60,0xaf, - 0x0c,0x11,0x64,0x5f,0x4d,0x66,0xef,0x4d,0x24,0x9e,0xf8,0x4c,0x01,0xdf,0x11,0x7c, - 0x64,0x7e,0x1b,0xbc,0x29,0xf0,0xa6,0x71,0x47,0x94,0xb3,0x0f,0xb3,0xec,0xb9,0x3b, - 0xc0,0xdf,0x0a,0x3e,0x03,0x12,0x5d,0x22,0x26,0x7b,0xf1,0xd7,0x50,0x79,0x96,0x7a, - 0xae,0x05,0xff,0x99,0xdc,0x29,0x59,0xfa,0x91,0xf7,0xba,0xc0,0x93,0x75,0x98,0x4b, - 0x4e,0xf9,0xd9,0xca,0xda,0x54,0x82,0xd7,0x07,0x75,0xa4,0xa6,0xd1,0x3e,0x62,0xea, - 0x77,0x35,0xc4,0xd0,0x58,0xf2,0xbc,0x1c,0xb4,0x10,0xbf,0xb9,0x3e,0xfa,0xe4,0xc2, - 0x99,0x65,0x7a,0x98,0x4f,0x0f,0xf3,0x4c,0x0f,0x0b,0xc0,0xb5,0x87,0x85,0x60,0xda, - 0x43,0xb5,0xe9,0x61,0x61,0x72,0xcf,0xb9,0x04,0x93,0xbc,0x55,0xa6,0x87,0xbb,0xc9, - 0xed,0x4d,0x0f,0x35,0xe0,0xda,0xc3,0x38,0x1f,0x31,0xf5,0x93,0x1e,0x34,0x56,0xb5, - 0xe9,0xa1,0xd2,0x47,0x9f,0x2c,0x9c,0x2a,0xd3,0x43,0x2d,0x3d,0x2c,0x36,0x3d,0x2c, - 0x01,0xd7,0x1e,0xea,0xc0,0xb4,0x87,0xa5,0xa6,0x87,0xba,0xa4,0x1e,0x97,0x60,0x92, - 0xb7,0x9e,0x7d,0x24,0x79,0xef,0x21,0x77,0xa5,0xef,0x39,0xfb,0x52,0xa3,0xfa,0x2e, - 0x35,0x35,0xde,0x89,0x5f,0x35,0xbc,0x7a,0xea,0x91,0xfb,0xe1,0x7e,0xee,0x06,0xdd, - 0x73,0x0f,0x50,0xf3,0x0a,0xb3,0xe7,0x56,0x82,0x37,0xb3,0xe7,0x56,0x81,0x25,0x71, - 0x03,0x26,0xf7,0xc5,0x1a,0x78,0xab,0xe1,0x89,0xa6,0x0f,0x81,0xab,0xee,0x8f,0xc0, - 0x75,0x06,0x5b,0x0b,0xe6,0x13,0x1d,0x32,0xc9,0x5d,0xb3,0x0e,0xdf,0xb5,0xc4,0xd0, - 0x1c,0x8f,0x92,0x63,0xbd,0xc9,0xb1,0x01,0x7c,0x65,0xe8,0x55,0xee,0xca,0x8d,0xf4, - 0xb4,0x8e,0xfb,0x69,0x83,0x59,0x8f,0x4d,0xf0,0x1b,0xcc,0x7a,0x3c,0x06,0xae,0xeb, - 0xf1,0x38,0x98,0xae,0x47,0x93,0x59,0x0f,0xb1,0x35,0x86,0xb1,0x0d,0x8d,0xb7,0x99, - 0xd8,0xdb,0x89,0xdd,0x6c,0x62,0xef,0x00,0xd7,0xd8,0x3b,0xc1,0x34,0x76,0xab,0x89, - 0x2d,0xb6,0x96,0x30,0x5a,0x89,0xdd,0x82,0x46,0x12,0xe7,0x59,0xfa,0x92,0xfb,0xe5, - 0x6d,0x62,0x3d,0x07,0x3e,0x83,0x75,0x57,0x5e,0x2b,0xeb,0x2e,0x3e,0xbb,0xc8,0xb9, - 0x0d,0xff,0x16,0xf2,0xb6,0x99,0xbc,0xe2,0xb3,0x3b,0x8c,0x36,0xf8,0xbb,0x4d,0xde, - 0xe7,0x4d,0xde,0xda,0x70,0x3b,0xcb,0xbd,0xfe,0x02,0xd8,0x46,0x73,0x7f,0xa5,0x58, - 0x3b,0xb1,0xef,0x81,0xa7,0xe3,0x99,0x10,0x4b,0xf0,0xbd,0x70,0xf7,0x24,0xb1,0xfa, - 0x24,0x6b,0xf5,0x22,0x71,0xf6,0x72,0x87,0xe6,0xf2,0x0d,0x49,0xd3,0x93,0xd6,0xd4, - 0x46,0x4f,0xc2,0x59,0xe0,0x23,0xa7,0x15,0xfe,0x6e,0x7c,0x9b,0xf0,0x6d,0x34,0xf5, - 0x3f,0xf9,0x0f,0xf5,0x3f,0xfd,0x3f,0xf5,0x6f,0x86,0xa7,0xa3,0x85,0xfa,0xb7,0xc0, - 0xdd,0x6c,0xea,0xdf,0x4a,0x9c,0x2d,0xff,0x52,0xbf,0xd6,0xd4,0x64,0xea,0x9f,0xef, - 0x63,0x0f,0x6d,0xf0,0x1b,0x93,0xfd,0x16,0xbf,0x15,0x2f,0x61,0x6f,0x0d,0x91,0x64, - 0xbe,0x0f,0x2c,0xeb,0x7b,0xf6,0xd9,0xab,0xec,0xb3,0xfd,0x66,0x9f,0x1d,0x00,0xd7, - 0x7d,0xf6,0x1a,0x98,0xee,0xb3,0x43,0x66,0xbd,0xc5,0x76,0x30,0x8c,0x43,0xd4,0x76, - 0x10,0xbd,0xa4,0xee,0xd7,0xc9,0xe9,0xe0,0x5d,0xe3,0xfd,0xb7,0xf0,0x2e,0xb1,0x7e, - 0x84,0x23,0xcf,0xe3,0xe4,0xfa,0x09,0x5e,0x7f,0x38,0x57,0x4d,0x2e,0xb1,0x5d,0x0c, - 0xe3,0x12,0xbc,0x4b,0xc9,0x79,0x88,0xb9,0x7e,0x81,0x57,0xe8,0x62,0xbf,0x99,0x84, - 0x1f,0x71,0xf9,0xde,0x16,0x04,0xbd,0x32,0x09,0x2f,0xae,0xd1,0x70,0xec,0x23,0xd1, - 0xf6,0x1a,0x31,0x2f,0x1a,0xfe,0xcf,0xc4,0x94,0xef,0xb3,0xf5,0x91,0x9a,0xfe,0x08, - 0x51,0xae,0x80,0x5d,0x26,0xf6,0x42,0x1f,0xe3,0x5f,0x82,0x7b,0x91,0xfb,0x5f,0xb4, - 0x2f,0xf5,0xd1,0xbe,0xcf,0xdc,0x57,0xc2,0x79,0x13,0x8d,0x3c,0xfd,0x16,0xf8,0xbf, - 0x6a,0xe4,0x7c,0xcc,0x29,0x4f,0xd5,0x28,0xe5,0x23,0x4f,0x35,0xea,0xe7,0x7b,0x34, - 0x12,0x5b,0x3a,0x8c,0x0c,0x3c,0x79,0xaa,0x46,0xf9,0xf0,0xac,0x46,0x7d,0x7c,0xc4, - 0xad,0x46,0x7d,0x7d,0x8f,0x46,0x62,0x57,0x8d,0x0a,0x88,0x99,0xf6,0x3d,0xfc,0x5c, - 0x62,0xaa,0x46,0xea,0x23,0x35,0xa9,0x46,0x82,0xa9,0x46,0xd5,0x3e,0xc6,0x97,0xba, - 0x72,0xa9,0x55,0x35,0x2a,0xf7,0xd1,0x5e,0x4a,0x7e,0xd5,0xe8,0x1d,0x34,0x4a,0xd1, - 0x6f,0x51,0x2f,0x8d,0x06,0x91,0x73,0x90,0xd1,0x68,0xb0,0x8f,0x3c,0xd5,0x68,0x94, - 0xd1,0x48,0x6c,0x43,0xc2,0x28,0x84,0x57,0x68,0x34,0x1a,0x0e,0xcf,0x6a,0x34,0xc2, - 0x47,0xdc,0x6a,0x34,0xd2,0x68,0x34,0xc2,0x68,0x54,0x44,0xcc,0x21,0x46,0xa3,0xa1, - 0xc4,0x54,0x8d,0xd4,0x67,0x94,0xd1,0xa8,0xc8,0x68,0x74,0x97,0x8f,0xf1,0xa5,0xae, - 0xa1,0xd4,0xaa,0x1a,0x4d,0xf6,0xd1,0x2e,0x5a,0xa5,0xc8,0xa9,0x67,0xef,0x10,0x7b, - 0x51,0xfc,0x6a,0xd8,0x6b,0x4d,0x70,0x8a,0xcc,0x99,0x7f,0x97,0x33,0x7f,0xc4,0x9c, - 0xf9,0xf7,0xc0,0xf5,0xcc,0xbf,0x0f,0xa6,0x67,0xfe,0x98,0x39,0x87,0x62,0x3b,0x9a, - 0x9c,0xd9,0x98,0xf7,0xb8,0xf9,0x6e,0x7d,0x48,0xec,0x13,0x26,0xf6,0x47,0xe0,0x1a, - 0xfb,0x63,0x30,0x8d,0xdd,0x6e,0x62,0x8b,0xed,0x64,0x18,0xa7,0x88,0x7d,0xca,0x7c, - 0xaf,0x3f,0x23,0xf6,0x69,0xf3,0xbd,0xfe,0x1c,0xfc,0x53,0xbe,0xff,0x5f,0x80,0xad, - 0x37,0xf9,0xbe,0x04,0x5f,0x41,0xbe,0x0e,0x93,0x4f,0x6c,0x67,0xc2,0xe8,0x20,0xdf, - 0x19,0x73,0x66,0x2b,0x7c,0xfc,0xbb,0xa0,0xc6,0xfc,0xce,0xa6,0x7e,0x1d,0x46,0xeb, - 0x45,0x3e,0xfa,0x9c,0x82,0x73,0xc6,0xd4,0xf3,0x35,0xf5,0x54,0x98,0x7a,0xbe,0x01, - 0xd7,0x7a,0x3a,0x4d,0x3d,0x62,0x3b,0x1b,0x46,0x27,0x79,0xce,0x9a,0x7a,0xa6,0x53, - 0xcf,0x22,0xb3,0xf6,0xea,0xd7,0x69,0xea,0x59,0xec,0xa3,0x4f,0x07,0x9c,0xb3,0xa6, - 0x9e,0x6f,0xa9,0xe7,0x88,0xa9,0xe7,0x3b,0x70,0xad,0xa7,0xcb,0xd4,0x23,0xb6,0x73, - 0x61,0x74,0x91,0xe7,0x9c,0xa9,0x67,0x86,0x8f,0x7f,0x27,0x49,0x3e,0xfd,0x46,0xa9, - 0x5f,0x97,0xa9,0xa7,0xce,0x47,0x9f,0x4e,0x38,0xe7,0xf0,0x6d,0xc7,0xf7,0xa4,0x39, - 0xeb,0x9f,0xa0,0x77,0xda,0xe4,0x99,0xea,0x7b,0x70,0xd7,0x8b,0xdb,0x6e,0xf2,0x2c, - 0xf1,0x31,0x57,0x17,0x9c,0x93,0xf8,0x1e,0xc3,0xf7,0x28,0xdf,0x5a,0xf1,0xfd,0x80, - 0x78,0x32,0xf4,0x7f,0x43,0x29,0xf3,0xad,0x55,0xce,0x31,0x13,0xbf,0xd6,0xc7,0x1c, - 0xed,0xf0,0x25,0xde,0xec,0xc0,0xb8,0x80,0xed,0xf7,0xb0,0x4b,0xa6,0x87,0xf1,0x27, - 0x08,0x36,0x9d,0x78,0xcc,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4f,0x96,0x55, + 0x18,0xc7,0xef,0xe7,0x1d,0x21,0x5e,0x04,0x94,0x70,0x62,0x99,0xb2,0xd5,0x30,0x78, + 0x5a,0x64,0x04,0xe9,0x46,0x46,0x26,0xa2,0xa4,0xb0,0xd5,0xd2,0x85,0x16,0xac,0x84, + 0x69,0x3a,0xf9,0x01,0x4a,0x58,0x2b,0xdf,0x60,0x73,0xcc,0x5a,0xc1,0x56,0xf0,0x43, + 0xc2,0x74,0xab,0xd6,0x4f,0xad,0xb5,0xd2,0x95,0x56,0xfe,0x45,0xad,0x97,0xad,0xad, + 0x73,0x9d,0xe7,0x73,0xb9,0x6f,0xcf,0x6a,0x3e,0xdb,0xd9,0x7d,0x9f,0xef,0xf5,0xf6, + 0xfd,0x5e,0xe7,0xba,0x0f,0x64,0xd2,0xdb,0x0a,0x49,0x92,0x4a,0x2a,0x93,0x8a,0xe4, + 0x6e,0x52,0xfa,0xad,0x4f,0xd2,0x01,0x49,0x92,0xaa,0x24,0x1f,0x9f,0x7b,0x07,0x86, + 0x06,0xda,0xcf,0x4e,0x8e,0xb6,0x77,0x3e,0x55,0x34,0x7b,0x4d,0x92,0x89,0x7e,0x66, + 0xab,0x4d,0x0a,0x49,0x36,0x3c,0x6d,0x9d,0x3c,0x7e,0xe2,0x94,0xe1,0xd5,0x61,0xdd, + 0x08,0xab,0x2e,0xf8,0x19,0x5e,0xb0,0x1c,0xe1,0xad,0x3a,0xe6,0xb4,0x98,0x24,0x79, + 0x31,0xc9,0x25,0x0d,0xd4,0xdb,0xc6,0xd3,0xb1,0x14,0x58,0x85,0x60,0x69,0xb0,0x3a, + 0xc1,0x32,0x60,0x8d,0x82,0x65,0xc1,0x1e,0x14,0x2c,0x07,0xb6,0x59,0xb0,0x3c,0xd8, + 0xc3,0x82,0x15,0xc0,0xb6,0x0b,0x56,0x01,0xf6,0xa8,0x60,0xeb,0xc0,0x76,0x08,0x56, + 0x09,0x56,0x14,0xac,0x0a,0xac,0x53,0xb0,0x07,0xc0,0xba,0x04,0xab,0x06,0x7b,0x36, + 0xf6,0x29,0x73,0x4f,0xaf,0xf5,0x6c,0x4f,0x78,0x3e,0x42,0x7f,0x7c,0xbf,0x55,0xf6, + 0xd6,0xe7,0x2d,0xec,0x1b,0x42,0x54,0x3a,0xda,0x33,0xb1,0x37,0xf6,0xbe,0x21,0xf8, + 0xe4,0xd1,0x69,0x7d,0x6d,0x0a,0xfb,0x02,0xfa,0xcd,0xbe,0x31,0x78,0x56,0x62,0x37, + 0x5b,0x15,0x5a,0xb2,0x11,0xcb,0x46,0xbe,0x29,0xb4,0xf4,0xb0,0xaf,0x96,0x5c,0x35, + 0xf8,0x7b,0xad,0x7a,0x72,0x25,0x91,0x57,0xdd,0xbd,0xbe,0x7a,0x4d,0x5b,0xf5,0xf7, + 0x59,0xee,0x63,0xf5,0x1b,0xe9,0x77,0x03,0xf5,0x1b,0x63,0x9d,0x12,0xd6,0x86,0xb6, + 0x8d,0xf0,0x31,0xff,0x26,0x6c,0x05,0xb1,0xb7,0x88,0x9e,0x2d,0xd8,0xeb,0xe3,0xdc, + 0xa4,0x63,0x2f,0xdb,0xe0,0xed,0x7d,0xf6,0xb8,0x36,0x66,0xc7,0xed,0x4f,0x50,0xc7, + 0xed,0x3b,0xe9,0x85,0xf5,0x61,0x37,0xbc,0xad,0x4e,0x73,0xa8,0xd0,0xcb,0x3e,0x95, + 0xfc,0xfb,0xe7,0x7b,0xe3,0xf2,0x1c,0xef,0xbd,0x68,0xb3,0xfd,0x9e,0x32,0x0e,0x7d, + 0x65,0xfb,0x7e,0x7a,0x6d,0xf1,0xfb,0xd1,0x92,0x17,0xfb,0x20,0x7b,0xe3,0xf4,0x0a, + 0xef,0x19,0xb1,0x1f,0xa3,0x37,0x66,0x9f,0xa4,0x0f,0x59,0xb1,0x4f,0x33,0xf3,0xbe, + 0xbf,0x50,0xd6,0xeb,0xab,0xcc,0xb0,0xd5,0xbf,0x4e,0xee,0x49,0xf8,0x5f,0xe7,0xbb, + 0xcf,0xc4,0xde,0xe4,0x22,0xcf,0x2c,0xfc,0x0d,0xfb,0x23,0x20,0xd6,0xcf,0x5d,0xcc, + 0x59,0x2d,0xfd,0x1b,0x0c,0x8c,0x6a,0xf8,0xb6,0x6b,0x59,0xde,0xab,0x53,0xcc,0xeb, + 0x7a,0xec,0xbd,0x21,0x43,0x13,0xdf,0xf7,0x06,0xce,0x7e,0x17,0x3e,0xcd,0xe0,0xef, + 0x07,0x1f,0xdb,0x6f,0x22,0xae,0x99,0x38,0x3b,0xfb,0x87,0x88,0x6b,0x21,0xce,0xe7, + 0xd5,0xf0,0x2f,0x82,0xcf,0x56,0xb9,0x17,0x6c,0x1e,0x7e,0x0f,0xcc,0x5b,0xe1,0xf3, + 0x57,0xf0,0xf7,0xfb,0xa1,0x15,0x3d,0xf6,0x7e,0x28,0xc4,0xe5,0xb9,0x23,0x36,0xe1, + 0x3b,0x4b,0xbf,0x1e,0x03,0x3f,0x1c,0x76,0xc6,0xe9,0x4b,0x30,0xf7,0xfb,0x33,0xe4, + 0xf0,0x5c,0xf6,0xfc,0x2d,0x78,0x99,0xdf,0x0f,0xf8,0xe4,0x88,0xd9,0x2e,0x1a,0x76, + 0xa0,0xa1,0x4d,0x34,0x3c,0x0e,0xee,0x1a,0xda,0xc1,0x5c,0x43,0x51,0x34,0x98,0xad, + 0x83,0xbb,0xca,0xea,0x76,0x88,0x86,0x27,0xa9,0x9d,0x12,0x0d,0x9d,0xe0,0xae,0xe1, + 0x6b,0x30,0xf7,0x33,0x0d,0x9e,0xab,0x28,0x1a,0x6e,0xe2,0xd3,0x4a,0x4c,0x87,0x68, + 0x78,0x1a,0x0d,0x3b,0x45,0x43,0x17,0xb8,0x6b,0x78,0x06,0xcc,0x35,0xf4,0x88,0x06, + 0xb3,0x75,0xc7,0xb9,0x2b,0xd5,0xed,0x66,0x8e,0x0a,0x31,0x5f,0xa9,0xf6,0x4d,0xf9, + 0xde,0x8c,0xa3,0xfb,0xf6,0x08,0xc7,0x5b,0xf8,0x15,0x89,0xeb,0x86,0x8f,0x7d,0x93, + 0xcf,0xf3,0x3d,0xfa,0xcc,0xbd,0x00,0xe7,0x3e,0x99,0xb9,0xbd,0xe0,0xef,0x31,0x73, + 0xfb,0xc0,0x6e,0x11,0x67,0xdf,0xe8,0x00,0x71,0xfd,0xc4,0x59,0x4f,0x0f,0x80,0x8f, + 0x84,0x28,0xbb,0x3b,0x0e,0x52,0x6f,0x1f,0xdf,0xf7,0x01,0xe9,0xd5,0x4b,0xc4,0x0f, + 0x4a,0xaf,0x0e,0x81,0x7b,0xaf,0x0e,0x83,0x79,0xaf,0x86,0xa5,0x57,0x66,0x1b,0x8a, + 0xb5,0x4a,0xfa,0x87,0xe4,0xbc,0x5f,0xa6,0x76,0x26,0xe6,0xaf,0x88,0x77,0xc6,0xab, + 0x60,0x07,0xe5,0x3b,0x4c,0xc7,0x7a,0xf9,0x68,0x3f,0x42,0x9c,0xaf,0xf3,0x21,0x97, + 0xe1,0x47,0x89,0x3d,0x12,0x73,0xad,0x8b,0xba,0x5e,0x23,0xcf,0x51,0xee,0x82,0x9c, + 0xdc,0x49,0x76,0x26,0xc3,0x70,0x1a,0x11,0xbd,0xc7,0xd1,0x7b,0x4c,0xf4,0xbe,0x0e, + 0xee,0x7a,0xdf,0x00,0x73,0xbd,0x63,0xa2,0xd7,0x6c,0xa3,0x61,0x8d,0x91,0x7b,0x54, + 0xf4,0xbe,0x29,0x7a,0xbf,0x22,0xd7,0x5b,0xe0,0x7d,0x70,0xf2,0xb8,0x31,0xe6,0xc4, + 0x7c,0x4e,0x50,0x73,0x04,0xff,0x51,0xea,0x4e,0x48,0x5d,0xf3,0x19,0x0f,0x6b,0x82, + 0xf8,0x71,0xa9,0x7b,0xf2,0x3f,0xfa,0xfc,0xf6,0x7d,0xfa,0x7c,0x9a,0x38,0x5f,0x97, + 0xe8,0xf3,0x19,0x62,0x4f,0x4b,0x9f,0xcf,0x92,0xe7,0xcc,0xff,0xf4,0xd9,0x39,0x4d, + 0xa0,0xc9,0x62,0x7e,0x22,0x66,0x8c,0xf8,0xf1,0xb2,0x33,0x19,0x16,0xdf,0x1f,0x39, + 0xcb,0x21,0xe2,0x2c,0xcf,0x39,0xfe,0x86,0x4c,0x61,0xf7,0xf3,0x7b,0x87,0xf3,0x9b, + 0x96,0xf3,0x7b,0x17,0xdc,0xcf,0xef,0x1c,0x98,0x9f,0xdf,0xac,0xf4,0xd1,0x6c,0x33, + 0x71,0xae,0x4a,0x3c,0x66,0xd0,0x69,0xb5,0x3e,0xa0,0xde,0x14,0x3a,0x0b,0xf4,0xcc, + 0x75,0xce,0x12,0x73,0x5e,0xf8,0x5c,0x84,0xcf,0x05,0xe1,0x73,0x09,0xdc,0xf9,0x5c, + 0x06,0x73,0x3e,0xf3,0xc2,0xc7,0x6c,0x73,0x61,0x2d,0x90,0x7b,0x8e,0x73,0xb5,0x3c, + 0x57,0xe0,0x92,0xe1,0x7e,0x34,0x8e,0xdf,0x08,0xee,0x77,0xcf,0x3c,0xb1,0x0b,0x72, + 0x2f,0x7c,0x08,0xaf,0xab,0x72,0x2f,0x7c,0x04,0x7e,0x97,0xb9,0xf9,0x18,0xac,0x5f, + 0xb8,0x7e,0x02,0xde,0x07,0xd7,0x25,0xe1,0x6a,0xb6,0xc5,0xb0,0x96,0xa8,0xb7,0x28, + 0xbc,0xbe,0x45,0xdf,0x94,0xdc,0xdb,0xee,0xb7,0xc4,0x59,0x9b,0xdf,0x6d,0x7c,0x16, + 0x88,0x59,0x14,0x3e,0x9f,0xc2,0xa7,0x45,0xf8,0x7c,0x06,0xee,0x7c,0x56,0x84,0x8f, + 0xd9,0x96,0xc3,0x5a,0xa1,0xce,0xb2,0xf0,0xf9,0x0e,0x3e,0xb7,0x39,0x43,0xe3,0xe3, + 0x7e,0x2b,0xc2,0xe7,0x0e,0x3e,0x4b,0xc4,0x2c,0x0b,0x9f,0xcf,0xe1,0x33,0x2d,0x7c, + 0xae,0x81,0x3b,0x9f,0x35,0xe1,0x63,0xb6,0xd5,0xb0,0xd6,0xa8,0xb3,0x2a,0x7c,0xbe, + 0xe7,0x7f,0xbc,0x3b,0x32,0x4f,0xee,0xb7,0x26,0x7c,0x7e,0xc5,0x67,0x85,0x98,0xd5, + 0xb2,0x33,0x9e,0x17,0xdf,0x5f,0x98,0x87,0x39,0xe2,0xd6,0xca,0xe6,0x74,0x56,0x7c, + 0x7f,0x66,0xbe,0x67,0x88,0xb3,0x3c,0xbb,0x03,0x93,0x1b,0xd8,0xfe,0x0e,0xa7,0xd6, + 0x15,0xd6,0x3f,0x97,0xda,0x83,0x8c,0xb4,0x0d,0x00,0x00 }; // Generated from: @@ -121,8 +91,8 @@ constexpr uint8_t kImageCopy_frag_00000018[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture2DArray src; -// layout(location = 0)out vec4 dst; +// layout(set = 0, binding = 0)uniform itexture2D src; +// layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -147,19 +117,6 @@ constexpr uint8_t kImageCopy_frag_00000018[] = { // bool rotateXY; // } params; // -// float sRGBToLinear(float sRGB) -// { -// -// if(sRGB <= 0.04045) -// { -// return sRGB / 12.92; -// } -// else -// { -// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); -// } -// } -// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -179,7 +136,7 @@ constexpr uint8_t kImageCopy_frag_00000018[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); // // if(params . premultiplyAlpha) // { @@ -190,17 +147,7 @@ constexpr uint8_t kImageCopy_frag_00000018[] = { // srcValue . rgb /= srcValue . a; // } // -// vec4 dstValue = vec4(srcValue); -// -// dstValue /= 255.0; -// -// if(params . dstIsSRGB) -// { -// -// dstValue . r = sRGBToLinear(dstValue . r); -// dstValue . g = sRGBToLinear(dstValue . g); -// dstValue . b = sRGBToLinear(dstValue . b); -// } +// uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc index ef780668aefa49d26902f417335b66b815231b41..0d33bf8d793917812e5b570ecdbaac6947ee3426 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc @@ -10,81 +10,81 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000019[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xd9,0x4f,0x5d,0x55, - 0x14,0xc6,0xcf,0x9d,0x29,0xc8,0x50,0xa0,0x45,0x1a,0xa9,0x76,0x20,0xd1,0x50,0xe1, - 0x26,0x62,0x45,0xb0,0x4d,0xb0,0x62,0xb5,0xa2,0x2d,0x74,0x50,0xe1,0xc1,0xa1,0x44, - 0x5a,0x85,0xaa,0xa0,0xb1,0x8d,0x8d,0x81,0x5a,0x78,0xb0,0x55,0x21,0x0d,0xa9,0x46, - 0x21,0x51,0x78,0x50,0xb0,0x7d,0x30,0xf1,0xc9,0x18,0xa3,0x6d,0x6c,0xeb,0xf0,0xe7, - 0x18,0x87,0xc4,0xc4,0xbd,0xf6,0xfd,0xad,0xe6,0xcb,0x8d,0xa6,0x24,0x3b,0xe7,0xec, - 0x6f,0x4d,0xdf,0xb7,0xf6,0x3a,0xfb,0x92,0x49,0x6f,0x2b,0x24,0x49,0x2a,0xa9,0x4c, - 0x2a,0x92,0xdf,0x92,0xd2,0xdf,0xfa,0x24,0x1d,0x90,0x24,0xa9,0x4a,0xf2,0xf1,0xb9, - 0xb7,0xff,0x60,0x7f,0xfb,0xe4,0x1b,0x23,0xed,0x9d,0xf7,0x17,0xcd,0x5e,0x93,0x64, - 0xa2,0x9f,0xd9,0x6a,0x93,0x42,0x92,0x0d,0x4f,0x5b,0xe3,0x2f,0x1c,0x3f,0x61,0x78, - 0x75,0x58,0x97,0xc3,0xaa,0x0b,0x7e,0x86,0x17,0x2c,0x47,0x78,0xab,0x8e,0x39,0x2d, - 0x26,0x49,0x1e,0x4b,0x72,0x49,0x03,0xf5,0xb6,0xf1,0x74,0x2c,0x05,0x56,0x21,0x58, - 0x1a,0xac,0x4e,0xb0,0x0c,0x58,0xa3,0x60,0x59,0xb0,0xdb,0x05,0xcb,0x81,0xdd,0x21, - 0x58,0x1e,0xec,0x2e,0xc1,0x0a,0x60,0xdb,0x05,0xab,0x00,0xbb,0x5b,0xb0,0x75,0x60, - 0x3b,0x04,0xab,0x04,0x2b,0x0a,0x56,0x05,0xd6,0x29,0xd8,0x6d,0x60,0x5d,0x82,0x55, - 0x83,0x3d,0x14,0xfb,0x94,0xb9,0xa9,0xd7,0x7a,0xb6,0x27,0x3c,0xb7,0xd2,0x1f,0xdf, - 0x6f,0x91,0xbd,0xf5,0x79,0x33,0xfb,0x86,0x10,0x95,0x8e,0xf6,0x4c,0xec,0x8d,0xbd, - 0x6f,0x08,0x3e,0x79,0x74,0x5a,0x5f,0x9b,0xc2,0xbe,0x80,0x7e,0xb3,0x6f,0x0c,0x9e, - 0x95,0xd8,0xcd,0x56,0x85,0x96,0x6c,0xc4,0xb2,0x91,0x6f,0x0a,0x2d,0x3d,0xec,0xab, - 0x25,0x57,0x0d,0xfe,0x5e,0xab,0x9e,0x5c,0x49,0xe4,0x55,0x77,0xb3,0xaf,0x5e,0xd3, - 0x56,0xfd,0x2d,0x96,0xfb,0x58,0xfd,0x46,0xfa,0xdd,0x40,0xfd,0xc6,0x58,0xa7,0x84, - 0xb5,0xa1,0x6d,0x23,0x7c,0xcc,0xbf,0x09,0x5b,0x41,0xec,0x2d,0xa2,0x67,0x33,0xf6, - 0xfa,0x38,0x37,0xe9,0xd8,0xcb,0x36,0x78,0x7b,0x9f,0x3d,0xae,0x8d,0xd9,0xf1,0xfd, - 0x4e,0xb4,0x9b,0xee,0xdd,0xe4,0xb0,0xbc,0xcd,0x21,0x63,0x2f,0xfb,0x14,0x39,0xca, - 0x9f,0x56,0xfb,0x61,0xde,0x7b,0xd1,0x62,0xfb,0x3d,0x65,0x35,0xfb,0xca,0xf6,0xfb, - 0x98,0x73,0x8b,0x7f,0x02,0xee,0x79,0x38,0x3c,0xc5,0x7b,0x46,0xfc,0x07,0x39,0x0b, - 0xdf,0x1f,0x11,0xff,0xe7,0xe1,0xa8,0xfe,0xc7,0xe8,0x95,0xd9,0x4f,0xe3,0x9b,0x15, - 0xfb,0x34,0xdf,0x80,0xef,0xcf,0x97,0xf5,0xfe,0x22,0x33,0x6d,0xfc,0x2e,0x91,0xfb, - 0x34,0xfa,0x2e,0x71,0x0f,0x64,0x62,0xef,0x72,0x91,0x57,0x16,0x7d,0x86,0xfd,0x19, - 0x10,0xeb,0xef,0x2e,0xe6,0xae,0x96,0xfe,0xee,0x0f,0x8c,0x6a,0xf8,0xd6,0x6b,0x59, - 0xde,0xcb,0x13,0xcc,0xef,0x7a,0xec,0xbd,0x21,0x43,0x13,0xdf,0xfb,0x06,0x66,0x61, - 0x17,0x3e,0xcd,0xe0,0x67,0x82,0x8f,0xed,0x37,0x11,0xd7,0x4c,0x9c,0xcd,0xc2,0x9d, - 0xc4,0xb5,0x10,0xe7,0xf3,0x6b,0xf8,0x5a,0xf0,0xd9,0x22,0xf7,0x84,0xcd,0xc7,0x1f, - 0x81,0x79,0x2b,0x7c,0xfe,0x0e,0xfe,0x7e,0x5f,0xb4,0xa2,0xc7,0xde,0x07,0x42,0x5c, - 0x9e,0x3b,0x63,0x13,0xbe,0xef,0xd0,0xaf,0x7b,0xc0,0x07,0xc3,0xce,0x38,0x7d,0x0d, - 0xe6,0x7e,0x7f,0x85,0x1c,0x9e,0xcb,0x9e,0xbf,0x07,0x2f,0xf3,0xfb,0x11,0x9f,0x1c, - 0x31,0xdb,0x45,0xc3,0x0e,0x34,0xb4,0x89,0x86,0x7b,0xc1,0x5d,0x43,0x3b,0x98,0x6b, - 0x28,0x8a,0x06,0xb3,0x75,0x70,0x77,0x59,0xdd,0x0e,0xd1,0x70,0x1f,0xb5,0x53,0xa2, - 0xa1,0x13,0xdc,0x35,0x7c,0x03,0xe6,0x7e,0xa6,0xc1,0x73,0x15,0x45,0xc3,0x15,0x7c, - 0x5a,0x89,0xe9,0x10,0x0d,0x0f,0xa0,0x61,0xa7,0x68,0xe8,0x02,0x77,0x0d,0x0f,0x82, - 0xb9,0x86,0x1e,0xd1,0x60,0xb6,0xee,0x38,0x77,0xa5,0xba,0xdd,0xcc,0x51,0x21,0xe6, - 0x2b,0xd5,0xbe,0x22,0xdf,0xa3,0x71,0x74,0xdf,0x1e,0xe1,0x78,0x15,0xbf,0x22,0x71, - 0xdd,0xf0,0xb1,0x6f,0xf6,0x11,0xbe,0x57,0x9f,0xb9,0x47,0xe1,0xdc,0x27,0x33,0xb7, - 0x17,0x7c,0x8a,0x99,0x7b,0x1c,0xec,0x2a,0x71,0xf6,0x0d,0xf7,0x13,0xb7,0x8f,0x38, - 0xeb,0xe9,0x93,0xe0,0xde,0xf7,0xfd,0xc4,0x26,0x82,0x1d,0x00,0x4b,0xc5,0xf7,0x7c, - 0xfc,0xfe,0x07,0xf0,0x3d,0x40,0x0e,0xaf,0x71,0x90,0x1a,0x83,0x52,0xe3,0x10,0xf8, - 0x73,0x81,0x99,0xdd,0x5f,0x87,0xd1,0x34,0xc0,0x9d,0x71,0x48,0xce,0xe3,0x69,0xe2, - 0x8f,0xc8,0x79,0x3c,0x03,0xee,0xe7,0xf1,0x2c,0x98,0x9f,0xc7,0xb0,0x9c,0x87,0xd9, - 0x86,0xc2,0x1a,0xa5,0xc7,0x43,0xe8,0xa8,0x8f,0xf5,0x4b,0xb5,0x33,0x91,0x7b,0x45, - 0xbc,0x97,0x5e,0x04,0x3b,0x2c,0xdf,0x7a,0x1a,0x9d,0x66,0x3f,0x4a,0x9c,0xaf,0xb3, - 0x21,0x97,0xe1,0x23,0xc4,0x1e,0x8d,0xb9,0xd6,0x45,0x5d,0x2f,0x91,0x67,0x84,0xfb, - 0x26,0x27,0xf7,0xa4,0x9d,0xfb,0x30,0x9c,0x46,0x45,0xef,0x71,0xf4,0x1e,0x13,0xbd, - 0x2f,0x83,0xbb,0xde,0x57,0xc0,0x5c,0xef,0xb8,0xe8,0x35,0xdb,0x98,0xfd,0x0f,0x44, - 0xee,0x31,0xd1,0xfb,0xaa,0xe8,0xfd,0x8a,0x5c,0xaf,0x81,0x6f,0x85,0x93,0xc7,0x8d, - 0x33,0x8b,0xe6,0xf3,0x3a,0x35,0x47,0xf1,0x1f,0xa3,0xee,0xa4,0xd4,0x35,0x9f,0x89, - 0xb0,0x26,0x89,0x9f,0x90,0xba,0x6f,0xfe,0x47,0x9f,0xdf,0xba,0x45,0x9f,0x4f,0x12, - 0xe7,0x6b,0x96,0x3e,0x9f,0x22,0xf6,0xa4,0xf4,0xf9,0x6d,0xf2,0x9c,0xfa,0x9f,0x3e, - 0x3b,0xa7,0x49,0x34,0x59,0xcc,0x35,0x62,0xc6,0x89,0x9f,0x28,0x3b,0x93,0x61,0xf1, - 0xfd,0x89,0xb3,0x1c,0x22,0x6e,0x32,0xfe,0xb6,0x94,0x7e,0xa7,0xa6,0xb0,0xfb,0xf9, - 0x9d,0xe1,0xfc,0xa6,0xe5,0xfc,0xde,0x05,0xf7,0xf3,0x3b,0x0b,0xe6,0xe7,0x37,0x2b, - 0x7d,0x34,0xdb,0x4c,0x58,0xe7,0xe0,0x31,0x83,0x4e,0xab,0xf5,0x1e,0xf5,0xa6,0xd0, - 0x59,0xa0,0x67,0xae,0x73,0x96,0x98,0x73,0xc2,0xe7,0x7d,0xf8,0x9c,0x17,0x3e,0x1f, - 0x80,0x3b,0x9f,0x0f,0xc1,0x9c,0xcf,0xbc,0xf0,0x31,0xdb,0x5c,0x58,0x0b,0xe4,0x9e, - 0x93,0x7b,0xe0,0x02,0x5c,0x32,0xdc,0xc1,0xc6,0xf1,0x5b,0xc1,0xfd,0x7e,0x9b,0x27, - 0x76,0x41,0xee,0x85,0x8f,0xe0,0x75,0x51,0xee,0x85,0x8f,0xc1,0xaf,0x91,0xff,0x13, - 0xb0,0x41,0xe1,0xfa,0x29,0x78,0x1f,0x5c,0x97,0x84,0xab,0xd9,0x16,0xc3,0x5a,0xa2, - 0xde,0xa2,0xf0,0xfa,0x8e,0x98,0x29,0xf9,0x6d,0x70,0xbf,0x25,0xce,0xda,0xfc,0xae, - 0xe3,0xb3,0x40,0xcc,0xa2,0xf0,0xf9,0x0c,0x3e,0x2d,0xc2,0xe7,0x73,0x70,0xe7,0xb3, - 0x22,0x7c,0xcc,0xb6,0x1c,0xd6,0x0a,0x75,0x96,0x85,0xcf,0xf7,0xc4,0x5c,0xe7,0x0c, - 0x8d,0x8f,0xfb,0xad,0x08,0x9f,0x1b,0xf8,0x2c,0x11,0xb3,0x2c,0x7c,0xbe,0x80,0xcf, - 0xb4,0xf0,0xf9,0x12,0xdc,0xf9,0xac,0x09,0x1f,0xb3,0xad,0x46,0xdf,0x52,0x9d,0x55, - 0xe1,0xf3,0x03,0xff,0xb3,0xdc,0x90,0x79,0x72,0xbf,0x35,0xe1,0xf3,0x2b,0x3e,0x2b, - 0xc4,0xac,0x96,0x9d,0xf1,0xbc,0xf8,0xfe,0xc2,0x3c,0xcc,0x11,0xb7,0x56,0x36,0xa7, - 0xb3,0xe2,0xfb,0x33,0xf3,0x3d,0x43,0x9c,0xe5,0xd9,0x1d,0x98,0x5c,0xc6,0xf6,0x4f, - 0x38,0xb5,0xae,0xb0,0xfe,0x05,0x43,0xa1,0xf9,0xc7,0x28,0x0e,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4b,0x9e,0x55, + 0x18,0xc7,0xef,0xe7,0xdd,0x69,0xbe,0x4c,0xdd,0xcc,0x91,0xab,0xb5,0x09,0x85,0x4b, + 0x8d,0x6c,0x99,0xb6,0x81,0x2d,0x5b,0x2d,0x6b,0xd3,0xbd,0x54,0x0a,0x95,0x63,0xae, + 0xa6,0xcc,0x94,0xd5,0x46,0x23,0x74,0x4d,0x21,0xda,0x2a,0x85,0x90,0x15,0xa5,0x50, + 0xfa,0x43,0x29,0xee,0x87,0xa0,0x9f,0x22,0xa2,0x36,0xda,0xd6,0xcb,0x9f,0x13,0xbd, + 0x40,0xd0,0xb9,0xce,0xf3,0xb9,0xc6,0x97,0x87,0x62,0xc2,0xe1,0xbe,0xcf,0xf7,0x7a, + 0xfb,0x7e,0xaf,0x73,0xdd,0xe7,0x31,0x93,0xde,0x5e,0x48,0x92,0x54,0x52,0x9e,0x94, + 0x25,0xbf,0x25,0xc5,0xbf,0x8d,0x49,0x3a,0x20,0x49,0x52,0x91,0xe4,0xe3,0x73,0x5f, + 0xdf,0xa1,0xbe,0xd6,0xd3,0x6f,0x1c,0x6f,0xed,0x78,0xb8,0xdd,0xec,0x55,0x49,0x26, + 0xfa,0x99,0xad,0x3a,0x29,0x24,0xd9,0xf0,0xb4,0x75,0x6a,0xf8,0xe4,0xb8,0xe1,0x95, + 0x61,0x5d,0x09,0xab,0x26,0xf8,0x19,0x5e,0xb0,0x1c,0xe1,0xad,0x32,0xe6,0xb4,0x98, + 0x24,0x79,0x2a,0xc9,0x25,0x75,0xd4,0xdb,0xce,0xd3,0xb1,0x14,0x58,0x99,0x60,0x69, + 0xb0,0x1a,0xc1,0x32,0x60,0xf5,0x82,0x65,0xc1,0xee,0x14,0x2c,0x07,0x76,0x97,0x60, + 0x79,0xb0,0x7b,0x04,0x2b,0x80,0xed,0x10,0xac,0x0c,0xec,0x3e,0xc1,0x36,0x80,0xed, + 0x14,0xac,0x1c,0xac,0x5d,0xb0,0x0a,0xb0,0x0e,0xc1,0xee,0x00,0xeb,0x14,0xac,0x12, + 0xec,0xb1,0xd8,0xa7,0xcc,0x2d,0xbd,0xd6,0xb3,0xbd,0xe1,0x79,0x2f,0xfd,0xf1,0xfd, + 0x36,0xd9,0x5b,0x9f,0xb7,0xb2,0xaf,0x0b,0x51,0xe9,0x68,0xcf,0xc4,0xde,0xd8,0xfb, + 0xa6,0xe0,0x93,0x47,0xa7,0xf5,0xb5,0x21,0xec,0x0b,0xe8,0x37,0xfb,0xe6,0xe0,0x59, + 0x8e,0xdd,0x6c,0x15,0x68,0xc9,0x46,0x2c,0x1b,0xf9,0xa6,0xd0,0xd2,0xcd,0xbe,0x52, + 0x72,0x55,0xe1,0xef,0xb5,0x6a,0xc9,0x95,0x44,0x5e,0x35,0xb7,0xfa,0xea,0x35,0x6d, + 0xd5,0xde,0x66,0xb9,0x8f,0xd5,0xaf,0xa7,0xdf,0x75,0xd4,0xaf,0x8f,0x75,0x8a,0x58, + 0x0b,0xda,0x36,0xc3,0xc7,0xfc,0x1b,0xb0,0x15,0xc4,0xde,0x24,0x7a,0xb6,0x62,0xaf, + 0x8d,0x73,0x93,0x8e,0xbd,0x6c,0x81,0xb7,0xf7,0xd9,0xe3,0x5a,0x98,0x1d,0xb7,0x3f, + 0x48,0x1d,0xb7,0xef,0xa2,0x17,0xd6,0x87,0x3d,0xf0,0xb6,0x3a,0x8d,0xa1,0x42,0x0f, + 0xfb,0x14,0x39,0x4b,0x9f,0xc6,0xe5,0x71,0xde,0x7b,0xd0,0x66,0xfb,0xbd,0x25,0x1c, + 0x7a,0x4b,0xf6,0xfb,0x99,0x7b,0x8b,0x7f,0x06,0x2d,0x79,0x38,0x3c,0xc7,0x7b,0x46, + 0xfc,0x07,0x38,0x1b,0xdf,0x1f,0xc5,0xc7,0xf7,0x27,0xe8,0x95,0xc5,0x9f,0xa3,0x2f, + 0x59,0xb1,0x4f,0xf3,0x0d,0xf8,0xfe,0x52,0x49,0xef,0x2f,0x33,0xd3,0xc6,0x67,0x9d, + 0xda,0xe7,0xd0,0xb3,0xce,0x3d,0x90,0x89,0xbd,0xca,0x45,0x1e,0x59,0xf4,0x18,0xf6, + 0x67,0x40,0xac,0xbf,0xbb,0x99,0xbb,0x6a,0xfa,0x79,0x20,0x30,0xaa,0xe2,0x5b,0xaf, + 0x66,0x79,0xef,0xc6,0x99,0xdf,0x8d,0xd8,0x7b,0x42,0x86,0x06,0xbe,0xf7,0x4d,0xcc, + 0xc2,0x6e,0x7c,0x1a,0xc1,0x2f,0x04,0x1f,0xdb,0x6f,0x21,0xae,0x91,0x38,0x9b,0x85, + 0xbb,0x89,0x6b,0x22,0xce,0xe7,0xd7,0xf0,0xb5,0xe0,0xb3,0x4d,0xee,0x09,0x9b,0x8f, + 0x3f,0x02,0xf3,0x66,0xf8,0xfc,0x1d,0xfc,0xfd,0xbe,0x68,0x46,0x8f,0xbd,0xf7,0x87, + 0xb8,0x3c,0x77,0xc6,0x16,0x7c,0xa7,0xe8,0xd7,0xfd,0xe0,0x03,0x61,0x67,0x9c,0xbe, + 0x06,0x73,0xbf,0xbf,0x42,0x0e,0xcf,0x65,0xcf,0xdf,0x83,0x97,0xf9,0xfd,0x88,0x4f, + 0x8e,0x98,0x1d,0xa2,0x61,0x27,0x1a,0x5a,0x44,0xc3,0x03,0xe0,0xae,0xa1,0x15,0xcc, + 0x35,0xb4,0x8b,0x06,0xb3,0xb5,0x71,0x77,0x59,0xdd,0x36,0xd1,0xf0,0x10,0xb5,0x53, + 0xa2,0xa1,0x03,0xdc,0x35,0x7c,0x03,0xe6,0x7e,0xa6,0xc1,0x73,0xb5,0x8b,0x86,0xab, + 0xf8,0x34,0x13,0xd3,0x26,0x1a,0x1e,0x41,0xc3,0x2e,0xd1,0xd0,0x09,0xee,0x1a,0x1e, + 0x05,0x73,0x0d,0xdd,0xa2,0xc1,0x6c,0x5d,0x71,0xee,0x8a,0x75,0xbb,0x98,0xa3,0x42, + 0xcc,0x57,0xac,0x7d,0x55,0xbe,0x3f,0xe3,0xe8,0xbe,0xdd,0xc2,0xf1,0x1a,0x7e,0xed, + 0xc4,0x75,0xc1,0xc7,0xbe,0xd1,0x27,0xf8,0x3e,0x7d,0xe6,0x9e,0x84,0x73,0xaf,0xcc, + 0xdc,0x3e,0xf0,0xf3,0xcc,0xdc,0xd3,0x60,0xd7,0x88,0xb3,0x6f,0xb6,0x8f,0xb8,0xfd, + 0xc4,0x59,0x4f,0x9f,0x05,0xf7,0xbe,0x1f,0x20,0x36,0x11,0xec,0x20,0x58,0x2a,0xbe, + 0xe7,0xe3,0xf7,0xde,0x8f,0xef,0x41,0x72,0x78,0x8d,0x43,0xd4,0x18,0x90,0x1a,0x87, + 0xc1,0x5f,0x0e,0xcc,0xec,0xbe,0x3a,0x82,0xa6,0x7e,0xee,0x88,0xc3,0x72,0x1e,0xcf, + 0x13,0x7f,0x54,0xce,0xe3,0x05,0x70,0x3f,0x8f,0x17,0xc1,0xfc,0x3c,0x86,0xe4,0x3c, + 0xcc,0x36,0x18,0xd6,0x08,0x3d,0x1e,0x14,0x1d,0x2f,0x51,0x3b,0x13,0xb9,0x97,0x45, + 0x1d,0xaf,0x80,0x1d,0x91,0x6f,0x3d,0x2d,0x3a,0x87,0x89,0xf3,0x35,0x1b,0x72,0x19, + 0x7e,0x8c,0xd8,0xe1,0x98,0x6b,0x43,0xd4,0x75,0x9c,0x3c,0xc7,0xb8,0x6f,0x72,0x72, + 0x2f,0xda,0xb9,0x0f,0xc1,0x69,0x44,0xf4,0xbe,0x8a,0xde,0x13,0xa2,0xf7,0x35,0x70, + 0xd7,0x7b,0x12,0xcc,0xf5,0x8e,0x89,0x5e,0xb3,0x8d,0x86,0x35,0x46,0xee,0x51,0xd1, + 0x7b,0x4a,0xf4,0xae,0x93,0x6b,0x1c,0xbc,0x17,0x4e,0x1e,0x37,0xc6,0x2c,0x9a,0xcf, + 0xeb,0xd4,0x1c,0xc1,0x7f,0x94,0xba,0x93,0x52,0xd7,0x7c,0x26,0xc2,0x9a,0x24,0x7e, + 0x42,0xea,0x9e,0xfe,0x8f,0x3e,0xbf,0x79,0x9b,0x3e,0x9f,0x21,0xce,0xd7,0xbb,0xf4, + 0xf9,0x2c,0xb1,0x67,0xa4,0xcf,0x6f,0x91,0xe7,0xec,0xff,0xf4,0xd9,0x39,0x4d,0xa2, + 0xc9,0x62,0xae,0x13,0x33,0x46,0xfc,0x44,0xc9,0x99,0x0c,0x89,0xef,0x4f,0x9c,0xe5, + 0x20,0x71,0x96,0xe7,0x6d,0x7e,0xa7,0xa6,0xb0,0xfb,0xf9,0x9d,0xe7,0xfc,0xa6,0xe5, + 0xfc,0xde,0x01,0xf7,0xf3,0xbb,0x00,0xe6,0xe7,0x37,0x2b,0x7d,0x34,0xdb,0x4c,0x58, + 0x17,0xe1,0x31,0x83,0x4e,0xab,0xf5,0x1e,0xf5,0xa6,0xd0,0x59,0xa0,0x67,0xae,0x73, + 0x96,0x98,0x8b,0xc2,0xe7,0x7d,0xf8,0x5c,0x12,0x3e,0x1f,0x80,0x3b,0x9f,0x0f,0xc1, + 0x9c,0xcf,0xbc,0xf0,0x31,0xdb,0x5c,0x58,0x0b,0xe4,0x9e,0xe3,0x5c,0x2d,0xcf,0x47, + 0x70,0xc9,0x70,0x07,0x1b,0xc7,0x6f,0x05,0xf7,0xfb,0x6d,0x9e,0xd8,0x05,0xb9,0x17, + 0x3e,0x86,0xd7,0x65,0xb9,0x17,0x3e,0x01,0xbf,0xce,0xdc,0x7c,0x0a,0x36,0x20,0x5c, + 0x3f,0x03,0xef,0x85,0xeb,0x92,0x70,0x35,0xdb,0x62,0x58,0x4b,0xd4,0x5b,0x14,0x5e, + 0xdf,0xa1,0x6f,0x4a,0x7e,0x1b,0xdc,0x6f,0x89,0xb3,0x36,0xbf,0x1b,0xf8,0x2c,0x10, + 0xb3,0x28,0x7c,0x3e,0x87,0x4f,0x93,0xf0,0xf9,0x02,0xdc,0xf9,0xac,0x08,0x1f,0xb3, + 0x2d,0x87,0xb5,0x42,0x9d,0x65,0xe1,0xf3,0x3d,0x7c,0x6e,0x70,0x86,0xc6,0xc7,0xfd, + 0x56,0x84,0xcf,0x4d,0x7c,0x96,0x88,0x59,0x16,0x3e,0x5f,0xc2,0x67,0x5a,0xf8,0x7c, + 0x05,0xee,0x7c,0xd6,0x84,0x8f,0xd9,0x56,0xa3,0x6f,0xb1,0xce,0xaa,0xf0,0xf9,0x81, + 0xff,0x2b,0x6f,0xca,0x3c,0xb9,0xdf,0x9a,0xf0,0xf9,0x15,0x9f,0x15,0x62,0x56,0x4b, + 0xce,0x78,0x5e,0x7c,0x7f,0x61,0x1e,0xe6,0x88,0x5b,0x2b,0x99,0xd3,0x59,0xf1,0xfd, + 0x99,0xf9,0x9e,0x21,0xce,0xf2,0xec,0x09,0x4c,0xae,0x60,0xfb,0x27,0x9c,0x5a,0x67, + 0x58,0xff,0x02,0x9b,0x13,0x36,0x51,0x28,0x0e,0x00,0x00 }; // Generated from: @@ -93,8 +93,8 @@ constexpr uint8_t kImageCopy_frag_00000019[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture2DArray src; -// layout(location = 0)out ivec4 dst; +// layout(set = 0, binding = 0)uniform itexture2DArray src; +// layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -138,7 +138,7 @@ constexpr uint8_t kImageCopy_frag_00000019[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { @@ -149,7 +149,7 @@ constexpr uint8_t kImageCopy_frag_00000019[] = { // srcValue . rgb /= srcValue . a; // } // -// ivec4 dstValue = ivec4(srcValue); +// uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc index 936df92c7cd0b922e372a82ffd505cf047bfc8bd..7e773ed494d8105acd3358060e1f2d762a1cfd28 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc @@ -10,81 +10,81 @@ #pragma once constexpr uint8_t kImageCopy_frag_0000001A[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xd9,0x4f,0x5d,0x55, - 0x14,0xc6,0xcf,0x9d,0x29,0xc8,0x50,0xa0,0x45,0x1a,0xa9,0x76,0x20,0xd1,0x50,0xe1, - 0x1a,0xb1,0x22,0xd8,0x26,0x58,0xb1,0x5a,0xd1,0x16,0x3a,0xa8,0xf0,0xe0,0x50,0x22, - 0xad,0x42,0x55,0xd0,0xd8,0xc6,0xc4,0x18,0xa9,0x85,0x17,0x5b,0x15,0x62,0x48,0x35, - 0x0a,0x89,0xc2,0x43,0x0b,0xa9,0x0f,0x26,0x3e,0x19,0x63,0xb4,0x04,0x5b,0x87,0x7f, - 0xc6,0x38,0x24,0x26,0xee,0xb5,0xef,0x6f,0x35,0x5f,0x6e,0x34,0x25,0xd9,0x39,0x67, - 0x7f,0x6b,0xfa,0xbe,0xb5,0xd7,0xd9,0xdc,0x4c,0x7a,0x47,0x21,0x49,0x52,0x49,0x65, - 0x52,0x91,0xfc,0x96,0x94,0xfe,0x36,0x26,0xe9,0x80,0x24,0x49,0x55,0x92,0x8f,0xcf, - 0xfd,0xfd,0x87,0xfb,0xdb,0x27,0x5f,0x1f,0x69,0xef,0xbc,0xaf,0x68,0xf6,0x9a,0x24, - 0x13,0xfd,0xcc,0x56,0x9b,0x14,0x92,0x6c,0x78,0xda,0x1a,0x7f,0xfe,0xe4,0x29,0xc3, - 0xab,0xc3,0xfa,0x2a,0xac,0xba,0xe0,0x67,0x78,0xc1,0x72,0x84,0xb7,0xea,0x98,0xd3, - 0x62,0x92,0xe4,0xd1,0x24,0x97,0x34,0x50,0x6f,0x07,0x4f,0xc7,0x52,0x60,0x15,0x82, - 0xa5,0xc1,0xea,0x04,0xcb,0x80,0x35,0x0a,0x96,0x05,0xbb,0x55,0xb0,0x1c,0xd8,0x6d, - 0x82,0xe5,0xc1,0xee,0x10,0xac,0x00,0xb6,0x53,0xb0,0x0a,0xb0,0x3b,0x05,0xdb,0x00, - 0xb6,0x4b,0xb0,0x4a,0xb0,0xa2,0x60,0x55,0x60,0x9d,0x82,0xdd,0x02,0xd6,0x25,0x58, - 0x35,0xd8,0x83,0xb1,0x4f,0x99,0x1b,0x7a,0xad,0x67,0xfb,0xc2,0x73,0x3b,0xfd,0xf1, - 0xfd,0x36,0xd9,0x5b,0x9f,0xb7,0xb2,0x6f,0x08,0x51,0xe9,0x68,0xcf,0xc4,0xde,0xd8, - 0xfb,0xa6,0xe0,0x93,0x47,0xa7,0xf5,0xb5,0x29,0xec,0x0b,0xe8,0x37,0xfb,0xe6,0xe0, - 0x59,0x89,0xdd,0x6c,0x55,0x68,0xc9,0x46,0x2c,0x1b,0xf9,0xa6,0xd0,0xd2,0xc3,0xbe, - 0x5a,0x72,0xd5,0xe0,0xef,0xb5,0xea,0xc9,0x95,0x44,0x5e,0x75,0x37,0xfa,0xea,0x35, - 0x6d,0xd5,0xdf,0x64,0xb9,0x8f,0xd5,0x6f,0xa4,0xdf,0x0d,0xd4,0x6f,0x8c,0x75,0x4a, - 0x58,0x1b,0xda,0x36,0xc3,0xc7,0xfc,0x9b,0xb0,0x15,0xc4,0xde,0x22,0x7a,0xb6,0x62, - 0xaf,0x8f,0x73,0x93,0x8e,0xbd,0x6c,0x83,0xb7,0xf7,0xd9,0xe3,0xda,0x98,0x1d,0xb7, - 0xdf,0x43,0x1d,0xb7,0xef,0xa6,0x17,0xd6,0x87,0xbd,0xe4,0xb4,0x3a,0xcd,0xa1,0x42, - 0x2f,0xfb,0x14,0x39,0xcb,0x9f,0xc6,0xe5,0x21,0xde,0x7b,0xd1,0x66,0xfb,0x7d,0x65, - 0x1c,0xfa,0xca,0xf6,0x07,0x98,0x7b,0x8b,0x7f,0x1c,0x2d,0x79,0x38,0x3c,0xc9,0x7b, - 0x46,0xfc,0x07,0x39,0x1b,0xdf,0x1f,0x13,0xff,0xe7,0xe0,0xa8,0xfe,0x27,0xca,0x7a, - 0x37,0xc5,0x37,0xe0,0xfb,0x0b,0x65,0xbd,0xbf,0xc8,0x4c,0x1b,0x9f,0x2b,0xe4,0xda, - 0x8b,0x9e,0x2b,0xdc,0x03,0x99,0xd8,0xab,0x5c,0xe4,0x91,0x45,0x8f,0x61,0x7f,0x06, - 0xc4,0xfa,0xbb,0x87,0xb9,0xab,0xa5,0x9f,0x07,0x03,0x83,0x1a,0xbe,0xf5,0x5a,0x96, - 0xf7,0xee,0x14,0xf3,0xbb,0x11,0x7b,0x6f,0xc8,0xd0,0xc4,0xf7,0xbe,0x89,0x59,0xd8, - 0x83,0x4f,0x33,0xf8,0xbb,0xc1,0xc7,0xf6,0x5b,0x88,0x6b,0x26,0xce,0x66,0xe1,0x76, - 0xe2,0x5a,0x88,0xf3,0xf9,0x35,0xfc,0x52,0xf0,0xd9,0x26,0xf7,0x84,0xcd,0xc7,0x1f, - 0x81,0x79,0x2b,0x7c,0xfe,0x0e,0xfe,0x7e,0x5f,0xb4,0xa2,0xc7,0xde,0x07,0x42,0x5c, - 0x9e,0x3b,0x63,0x0b,0xbe,0x6f,0xd3,0xaf,0xbb,0xc0,0x07,0xc3,0xce,0x38,0x7d,0x0d, - 0xe6,0x7e,0x7f,0x85,0x1c,0x9e,0xcb,0x9e,0xbf,0x07,0x2f,0xf3,0xfb,0x11,0x9f,0x1c, - 0x31,0x3b,0x45,0xc3,0x2e,0x34,0xb4,0x89,0x86,0xbb,0xc1,0x5d,0x43,0x3b,0x98,0x6b, - 0x28,0x8a,0x06,0xb3,0x75,0x70,0x77,0x59,0xdd,0x0e,0xd1,0x70,0x2f,0xb5,0x53,0xa2, - 0xa1,0x13,0xdc,0x35,0x7c,0x03,0xe6,0x7e,0xa6,0xc1,0x73,0x15,0x45,0xc3,0x55,0x7c, - 0x5a,0x89,0xe9,0x10,0x0d,0xf7,0xa3,0x61,0xb7,0x68,0xe8,0x02,0x77,0x0d,0x0f,0x80, - 0xb9,0x86,0x1e,0xd1,0x60,0xb6,0xee,0x38,0x77,0xa5,0xba,0xdd,0xcc,0x51,0x21,0xe6, - 0x2b,0xd5,0xbe,0x2a,0xdf,0x9f,0x71,0x74,0xdf,0x1e,0xe1,0xb8,0x86,0x5f,0x91,0xb8, - 0x6e,0xf8,0xd8,0x37,0xfa,0x30,0xdf,0xa7,0xcf,0xdc,0x23,0x70,0xee,0x93,0x99,0xdb, - 0x0f,0xfe,0x0e,0x33,0xf7,0x18,0xd8,0x1a,0x71,0xf6,0xcd,0xf6,0x13,0x77,0x80,0x38, - 0xeb,0xe9,0x13,0xe0,0xde,0xf7,0x83,0xc4,0x26,0x82,0x1d,0x02,0x4b,0xc5,0xf7,0x7c, - 0xfc,0xde,0x07,0xf0,0x3d,0x44,0x0e,0xaf,0x71,0x98,0x1a,0x83,0x52,0xe3,0x08,0xf8, - 0xb3,0x81,0x99,0x7d,0xa3,0x47,0xd1,0x34,0xc0,0x1d,0x71,0x44,0xce,0xe3,0x29,0xe2, - 0x8f,0xc9,0x79,0x3c,0x0d,0xee,0xe7,0xf1,0x0c,0x98,0x9f,0xc7,0xb0,0x9c,0x87,0xd9, - 0x86,0xc2,0x1a,0xa5,0xc7,0x43,0xe8,0xa8,0x8f,0xf5,0x4b,0xb5,0x33,0x91,0x7b,0x45, - 0xbc,0x87,0x5e,0x00,0x3b,0x2a,0xdf,0x7a,0x1a,0x9d,0x66,0x3f,0x4e,0x9c,0xaf,0xb3, - 0x21,0x97,0xe1,0x23,0xc4,0x1e,0x8f,0xb9,0x36,0x44,0x5d,0x2f,0x92,0x67,0x84,0xfb, - 0x26,0x27,0xf7,0xa2,0x9d,0xfb,0x30,0x9c,0x46,0x45,0xef,0x49,0xf4,0x9e,0x10,0xbd, - 0x2f,0x81,0xbb,0xde,0x97,0xc1,0x5c,0xef,0xb8,0xe8,0x35,0xdb,0x98,0xfd,0x06,0x22, - 0xf7,0x98,0xe8,0x7d,0x45,0xf4,0x5e,0x26,0xd7,0xab,0xe0,0xdb,0xe1,0xe4,0x71,0xe3, - 0xcc,0xa2,0xf9,0xbc,0x46,0xcd,0x51,0xfc,0xc7,0xa8,0x3b,0x29,0x75,0xcd,0x67,0x22, - 0xac,0x49,0xe2,0x27,0xa4,0xee,0x1b,0xff,0xd1,0xe7,0x37,0x6f,0xd2,0xe7,0xd3,0xc4, - 0xf9,0x3a,0x47,0x9f,0xcf,0x10,0x7b,0x5a,0xfa,0xfc,0x16,0x79,0xce,0xfc,0x4f,0x9f, - 0x9d,0xd3,0x24,0x9a,0x2c,0xe6,0x27,0x62,0xc6,0x89,0x9f,0x28,0x3b,0x93,0x61,0xf1, - 0x5d,0xe7,0x2c,0x87,0x88,0x9b,0x94,0xf3,0x3a,0xcb,0x79,0x4d,0xc9,0x79,0xbd,0x07, - 0xee,0xe7,0x75,0x0e,0xcc,0xcf,0x6b,0x46,0xfa,0x66,0xb6,0xe9,0xb0,0xce,0x53,0x77, - 0x5a,0x74,0xbd,0x4f,0xed,0x75,0x74,0x15,0xe8,0x91,0xeb,0x9a,0x21,0xe6,0xbc,0xf0, - 0xf9,0x00,0x3e,0x17,0x84,0xcf,0x87,0xe0,0xce,0xe7,0x23,0x30,0xe7,0x33,0x27,0x7c, - 0xcc,0x36,0x1b,0xd6,0x3c,0xb9,0x67,0xe5,0x1c,0x3f,0x86,0x4b,0x86,0x3b,0xd7,0x38, - 0x7e,0x2b,0xb8,0xdf,0x67,0x73,0xc4,0xce,0xcb,0x3d,0xf0,0x09,0xbc,0x2e,0xca,0x3d, - 0xf0,0x29,0xf8,0x1a,0xf7,0xca,0x67,0x60,0x83,0xc2,0xf5,0x73,0xf0,0x3e,0xb8,0x2e, - 0x0a,0x57,0xb3,0x2d,0x84,0xb5,0x48,0xbd,0x05,0xe1,0xf5,0x1d,0xfa,0xd6,0xe5,0x7f, - 0x81,0xfb,0x2d,0xca,0xd9,0x5e,0xc3,0x67,0x9e,0x98,0x05,0xe1,0xf3,0x05,0x7c,0x5a, - 0x84,0xcf,0x97,0xe0,0xce,0x67,0x59,0xf8,0x98,0x6d,0x29,0xac,0x65,0xea,0x2c,0x09, - 0x9f,0xef,0xe1,0x73,0x8d,0x33,0x34,0x3e,0xee,0xb7,0x2c,0x7c,0xae,0xe3,0xb3,0x48, - 0xcc,0x92,0xf0,0xb9,0x04,0x9f,0x29,0xe1,0x73,0x19,0xdc,0xf9,0xac,0x0a,0x1f,0xb3, - 0xad,0x84,0xb5,0x4a,0x9d,0x15,0xe1,0xf3,0x03,0xbf,0x23,0xaf,0xcb,0x3c,0xb9,0xdf, - 0xaa,0xf0,0xf9,0x15,0x9f,0x65,0x62,0x56,0xca,0xce,0x78,0x4e,0x7c,0x7f,0x61,0x1e, - 0x66,0x89,0x5b,0x2d,0x9b,0xd3,0x19,0xf1,0xfd,0x99,0xf9,0x9e,0x26,0x6e,0x2e,0xfe, - 0x5e,0xcb,0xc4,0xdf,0x69,0x66,0xfb,0x27,0x9c,0x5a,0x57,0x58,0xff,0x02,0x19,0x82, - 0xa5,0x3d,0x18,0x0e,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4b,0x9e,0x55, + 0x18,0xc7,0xef,0xe7,0xdd,0x69,0xbe,0x4c,0xdd,0xcc,0x91,0xab,0xb5,0x09,0x85,0x4b, + 0x8d,0x6c,0x99,0xb6,0x81,0x2d,0x5b,0x2d,0x6b,0xd3,0xbd,0x54,0x0a,0x95,0x63,0xae, + 0xa6,0xcc,0x94,0xd5,0x46,0x23,0x74,0x4d,0x21,0xda,0x2a,0x85,0x90,0x15,0xa5,0x50, + 0xfa,0x43,0x29,0xee,0x87,0xa0,0x9f,0x22,0xa2,0x36,0xda,0xd6,0xcb,0x9f,0x13,0xbd, + 0x40,0xd0,0xb9,0xce,0xf3,0xb9,0xc6,0x97,0x87,0x62,0xc2,0xe1,0xbe,0xcf,0xf7,0x7a, + 0xfb,0x7e,0xaf,0x73,0xdd,0xe7,0x31,0x93,0xde,0x5e,0x48,0x92,0x54,0x52,0x9e,0x94, + 0x25,0xbf,0x25,0xc5,0xbf,0x8d,0x49,0x3a,0x20,0x49,0x52,0x91,0xe4,0xe3,0x73,0x5f, + 0xdf,0xa1,0xbe,0xd6,0xd3,0x6f,0x1c,0x6f,0xed,0x78,0xb8,0xdd,0xec,0x55,0x49,0x26, + 0xfa,0x99,0xad,0x3a,0x29,0x24,0xd9,0xf0,0xb4,0x75,0x6a,0xf8,0xe4,0xb8,0xe1,0x95, + 0x61,0x5d,0x09,0xab,0x26,0xf8,0x19,0x5e,0xb0,0x1c,0xe1,0xad,0x32,0xe6,0xb4,0x98, + 0x24,0x79,0x2a,0xc9,0x25,0x75,0xd4,0xdb,0xce,0xd3,0xb1,0x14,0x58,0x99,0x60,0x69, + 0xb0,0x1a,0xc1,0x32,0x60,0xf5,0x82,0x65,0xc1,0xee,0x14,0x2c,0x07,0x76,0x97,0x60, + 0x79,0xb0,0x7b,0x04,0x2b,0x80,0xed,0x10,0xac,0x0c,0xec,0x3e,0xc1,0x36,0x80,0xed, + 0x14,0xac,0x1c,0xac,0x5d,0xb0,0x0a,0xb0,0x0e,0xc1,0xee,0x00,0xeb,0x14,0xac,0x12, + 0xec,0xb1,0xd8,0xa7,0xcc,0x2d,0xbd,0xd6,0xb3,0xbd,0xe1,0x79,0x2f,0xfd,0xf1,0xfd, + 0x36,0xd9,0x5b,0x9f,0xb7,0xb2,0xaf,0x0b,0x51,0xe9,0x68,0xcf,0xc4,0xde,0xd8,0xfb, + 0xa6,0xe0,0x93,0x47,0xa7,0xf5,0xb5,0x21,0xec,0x0b,0xe8,0x37,0xfb,0xe6,0xe0,0x59, + 0x8e,0xdd,0x6c,0x15,0x68,0xc9,0x46,0x2c,0x1b,0xf9,0xa6,0xd0,0xd2,0xcd,0xbe,0x52, + 0x72,0x55,0xe1,0xef,0xb5,0x6a,0xc9,0x95,0x44,0x5e,0x35,0xb7,0xfa,0xea,0x35,0x6d, + 0xd5,0xde,0x66,0xb9,0x8f,0xd5,0xaf,0xa7,0xdf,0x75,0xd4,0xaf,0x8f,0x75,0x8a,0x58, + 0x0b,0xda,0x36,0xc3,0xc7,0xfc,0x1b,0xb0,0x15,0xc4,0xde,0x24,0x7a,0xb6,0x62,0xaf, + 0x8d,0x73,0x93,0x8e,0xbd,0x6c,0x81,0xb7,0xf7,0xd9,0xe3,0x5a,0x98,0x1d,0xb7,0x3f, + 0x48,0x1d,0xb7,0xef,0xa2,0x17,0xd6,0x87,0x3d,0xf0,0xb6,0x3a,0x8d,0xa1,0x42,0x8f, + 0xf4,0x58,0xff,0x52,0x3c,0x8d,0xcb,0xe3,0xbc,0xf7,0xa0,0xcd,0xf6,0x7b,0x4b,0x38, + 0xf4,0x96,0xec,0xf7,0x33,0xf7,0x16,0xff,0x0c,0x5a,0xf2,0x70,0x78,0x8e,0xf7,0x8c, + 0xf8,0x0f,0xc0,0xc1,0xf7,0x47,0xf1,0xf1,0xfd,0x09,0x7a,0x65,0xf1,0xe7,0xe8,0x4b, + 0x56,0xec,0xd3,0x7c,0x03,0xbe,0xbf,0x54,0xd2,0xfb,0xcb,0xcc,0xb4,0xf1,0x59,0xa7, + 0xf6,0x39,0xf4,0xac,0x73,0x0f,0x64,0x62,0xaf,0x72,0x91,0x47,0x16,0x3d,0x86,0xfd, + 0x19,0x10,0xeb,0xef,0x6e,0xe6,0xae,0x9a,0x7e,0x1e,0x08,0x8c,0xaa,0xf8,0xd6,0xab, + 0x59,0xde,0xbb,0x71,0xe6,0x77,0x23,0xf6,0x9e,0x90,0xa1,0x81,0xef,0x7d,0x13,0xb3, + 0xb0,0x1b,0x9f,0x46,0xf0,0x0b,0xc1,0xc7,0xf6,0x5b,0x88,0x6b,0x24,0xce,0x66,0xe1, + 0x6e,0xe2,0x9a,0x88,0xf3,0xf9,0x35,0x7c,0x2d,0xf8,0x6c,0x93,0x7b,0xc2,0xe6,0xe3, + 0x8f,0xc0,0xbc,0x19,0x3e,0x7f,0x07,0x7f,0xbf,0x2f,0x9a,0xd1,0x63,0xef,0xfd,0x21, + 0x2e,0xcf,0x9d,0xb1,0x05,0xdf,0x29,0xfa,0x75,0x3f,0xf8,0x40,0xd8,0x19,0xa7,0xaf, + 0xc1,0xdc,0xef,0xaf,0x90,0xc3,0x73,0xd9,0xf3,0xf7,0xe0,0x65,0x7e,0x3f,0xe2,0x93, + 0x23,0x66,0x87,0x68,0xd8,0x89,0x86,0x16,0xd1,0xf0,0x00,0xb8,0x6b,0x68,0x05,0x73, + 0x0d,0xed,0xa2,0xc1,0x6c,0x6d,0xdc,0x5d,0x56,0xb7,0x4d,0x34,0x3c,0x44,0xed,0x94, + 0x68,0xe8,0x00,0x77,0x0d,0xdf,0x80,0xb9,0x9f,0x69,0xf0,0x5c,0xed,0xa2,0xe1,0x2a, + 0x3e,0xcd,0xc4,0xb4,0x89,0x86,0x47,0xd0,0xb0,0x4b,0x34,0x74,0x82,0xbb,0x86,0x47, + 0xc1,0x5c,0x43,0xb7,0x68,0x30,0x5b,0x57,0x9c,0xbb,0x62,0xdd,0x2e,0xe6,0xa8,0x10, + 0xf3,0x15,0x6b,0x5f,0x95,0xef,0xcf,0x38,0xba,0x6f,0xb7,0x70,0xbc,0x86,0x5f,0x3b, + 0x71,0x5d,0xf0,0xb1,0x6f,0xf4,0x09,0xbe,0x4f,0x9f,0xb9,0x27,0xe1,0xdc,0x2b,0x33, + 0xb7,0x0f,0xfc,0x3c,0x33,0xf7,0x34,0xd8,0x35,0xe2,0xec,0x9b,0xed,0x23,0x6e,0x3f, + 0x71,0xd6,0xd3,0x67,0xc1,0xbd,0xef,0x07,0x88,0x4d,0x04,0x3b,0x08,0x96,0x8a,0xef, + 0xf9,0xf8,0xbd,0xf7,0xe3,0x7b,0x90,0x1c,0x5e,0xe3,0x10,0x35,0x06,0xa4,0xc6,0x61, + 0xf0,0x97,0x03,0x33,0xbb,0xaf,0x8e,0xa0,0xa9,0x9f,0x3b,0xe2,0xb0,0x9c,0xc7,0xf3, + 0xc4,0x1f,0x95,0xf3,0x78,0x01,0xdc,0xcf,0xe3,0x45,0x30,0x3f,0x8f,0x21,0x39,0x0f, + 0xb3,0x0d,0x86,0x35,0x42,0x8f,0x07,0x45,0xc7,0x4b,0xd4,0xce,0x44,0xee,0x65,0x51, + 0xc7,0x2b,0x60,0x47,0xe4,0x5b,0x4f,0x8b,0xce,0x61,0xe2,0x7c,0xcd,0x86,0x5c,0x86, + 0x1f,0x23,0x76,0x38,0xe6,0xda,0x10,0x75,0x1d,0x27,0xcf,0x31,0xee,0x9b,0x9c,0xdc, + 0x8b,0x76,0xee,0x43,0x70,0x1a,0x11,0xbd,0xaf,0xa2,0xf7,0x84,0xe8,0x7d,0x0d,0xdc, + 0xf5,0x9e,0x04,0x73,0xbd,0x63,0xa2,0xd7,0x6c,0xa3,0x61,0x8d,0x91,0x7b,0x54,0xf4, + 0x9e,0x12,0xbd,0xeb,0xe4,0x1a,0x07,0xef,0x85,0x93,0xc7,0x8d,0x31,0x8b,0xe6,0xf3, + 0x3a,0x35,0x47,0xf0,0x1f,0xa5,0xee,0xa4,0xd4,0x35,0x9f,0x89,0xb0,0x26,0x89,0x9f, + 0x90,0xba,0xa7,0xff,0xa3,0xcf,0x6f,0xde,0xa6,0xcf,0x67,0x88,0xf3,0xf5,0x2e,0x7d, + 0x3e,0x4b,0xec,0x19,0xe9,0xf3,0x5b,0xe4,0x39,0xfb,0x3f,0x7d,0x76,0x4e,0x93,0x68, + 0xb2,0x98,0xeb,0xc4,0x8c,0x11,0x3f,0x51,0x72,0x26,0x43,0xe2,0xfb,0x13,0x67,0x39, + 0x48,0x9c,0xe5,0x79,0x9b,0xdf,0xa9,0x29,0xec,0x7e,0x7e,0xe7,0x39,0xbf,0x69,0x39, + 0xbf,0x77,0xc0,0xfd,0xfc,0x2e,0x80,0xf9,0xf9,0xcd,0x4a,0x1f,0xcd,0x36,0x13,0xd6, + 0x45,0x78,0xcc,0xa0,0xd3,0x6a,0xbd,0x47,0xbd,0x29,0x74,0x16,0xe8,0x99,0xeb,0x9c, + 0x25,0xe6,0xa2,0xf0,0x79,0x1f,0x3e,0x97,0x84,0xcf,0x07,0xe0,0xce,0xe7,0x43,0x30, + 0xe7,0x33,0x2f,0x7c,0xcc,0x36,0x17,0xd6,0x02,0xb9,0xe7,0x38,0x57,0xcb,0xf3,0x11, + 0x5c,0x32,0xdc,0xc1,0xc6,0xf1,0x5b,0xc1,0xfd,0x7e,0x9b,0x27,0x76,0x41,0xee,0x85, + 0x8f,0xe1,0x75,0x59,0xee,0x85,0x4f,0xc0,0xaf,0x33,0x37,0x9f,0x82,0x0d,0x08,0xd7, + 0xcf,0xc0,0x7b,0xe1,0xba,0x24,0x5c,0xcd,0xb6,0x18,0xd6,0x12,0xf5,0x16,0x85,0xd7, + 0x77,0xe8,0x9b,0x92,0xdf,0x06,0xf7,0x5b,0xe2,0xac,0xcd,0xef,0x06,0x3e,0x0b,0xc4, + 0x2c,0x0a,0x9f,0xcf,0xe1,0xd3,0x24,0x7c,0xbe,0x00,0x77,0x3e,0x2b,0xc2,0xc7,0x6c, + 0xcb,0x61,0xad,0x50,0x67,0x59,0xf8,0x7c,0x0f,0x9f,0x1b,0x9c,0xa1,0xf1,0x71,0xbf, + 0x15,0xe1,0x73,0x13,0x9f,0x25,0x62,0x96,0x85,0xcf,0x97,0xf0,0x99,0x16,0x3e,0x5f, + 0x81,0x3b,0x9f,0x35,0xe1,0x63,0xb6,0xd5,0xe8,0x5b,0xac,0xb3,0x2a,0x7c,0x7e,0xe0, + 0xff,0xca,0x9b,0x32,0x4f,0xee,0xb7,0x26,0x7c,0x7e,0xc5,0x67,0x85,0x98,0xd5,0x92, + 0x33,0x9e,0x17,0xdf,0x5f,0x98,0x87,0x39,0xe2,0xd6,0x4a,0xe6,0x74,0x56,0x7c,0x7f, + 0x66,0xbe,0x67,0x88,0xb3,0x3c,0x7b,0x02,0x93,0x2b,0xd8,0xfe,0x09,0xa7,0xd6,0x19, + 0xd6,0xbf,0x8a,0x19,0xf4,0xfd,0x28,0x0e,0x00,0x00 }; // Generated from: @@ -93,7 +93,7 @@ constexpr uint8_t kImageCopy_frag_0000001A[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture2DArray src; +// layout(set = 0, binding = 0)uniform itexture3D src; // layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { @@ -138,7 +138,7 @@ constexpr uint8_t kImageCopy_frag_0000001A[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc new file mode 100644 index 0000000000000000000000000000000000000000..8afc8cb5436e37d07c40e3526ec09a325aea2bae --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc @@ -0,0 +1,183 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.0000001B.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_0000001B[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4f,0x95,0x65, + 0x18,0xc7,0x9f,0x73,0x9e,0xf3,0x82,0x10,0x2f,0x02,0x4a,0x54,0x58,0x26,0x6c,0x36, + 0x0c,0x4e,0x45,0x46,0x90,0x6e,0x98,0x1d,0x5d,0x59,0x88,0xa6,0x54,0xb0,0x65,0xc9, + 0x42,0x0b,0xb4,0x38,0xb5,0x74,0xb9,0x06,0x26,0xd4,0x96,0x56,0xb0,0x35,0x66,0xad, + 0x60,0x2b,0xf8,0x21,0x61,0xfa,0x43,0x5b,0x3f,0xb5,0xd6,0xca,0x5e,0xb4,0x97,0xbf, + 0xa6,0xf5,0xb2,0xb5,0x75,0x5d,0xf7,0xf3,0xb9,0xdc,0xd5,0x59,0xcd,0xb3,0xdd,0x7b, + 0xce,0xfd,0xbd,0xde,0xbe,0xdf,0xeb,0xbe,0x9e,0xfb,0x9c,0x38,0xbd,0x29,0x1f,0x45, + 0xa9,0xa8,0x32,0xaa,0x88,0x7e,0x8d,0x92,0xcf,0xda,0x28,0x2d,0x48,0xf2,0xbc,0x5b, + 0x9e,0x55,0x51,0x2e,0xec,0x77,0xed,0xd9,0xbf,0xa7,0xa3,0xf4,0xf2,0x48,0x47,0xd7, + 0xbd,0x05,0xf5,0xab,0x89,0xe2,0xe0,0xaf,0xb6,0xda,0x28,0x1f,0x65,0xe4,0xa9,0x6b, + 0xfc,0x99,0xa3,0xc7,0x14,0xaf,0x96,0x75,0x49,0x56,0x9d,0xf8,0x29,0x9e,0xd7,0x1c, + 0xf2,0xad,0x3a,0xe4,0xd4,0x98,0x28,0xda,0x1d,0x65,0xa3,0x06,0xea,0x6e,0xe2,0x69, + 0x58,0x0a,0xac,0xc2,0x61,0x69,0xb0,0x3a,0x87,0xc5,0x60,0x8d,0x0e,0xcb,0x80,0xdd, + 0xe8,0xb0,0x2c,0xd8,0x2d,0x0e,0xcb,0x81,0xdd,0xe6,0xb0,0x3c,0x58,0xab,0xc3,0x2a, + 0xc0,0x36,0x3b,0x6c,0x0d,0xd8,0x16,0x87,0x55,0x82,0x15,0x1c,0x56,0x05,0xd6,0xe5, + 0xb0,0x1b,0xc0,0xba,0x1d,0x56,0x0d,0xf6,0x40,0xe8,0x53,0x7c,0x4d,0xaf,0xf6,0x6c, + 0xa7,0x3c,0x6f,0xa7,0x3f,0xb6,0xdf,0xe8,0xf6,0xda,0xe7,0x0d,0xec,0x1b,0x24,0x2a, + 0x1d,0xec,0x71,0xe8,0x8d,0x7e,0x5f,0x27,0x3e,0x39,0x74,0x6a,0x5f,0x9b,0x64,0x9f, + 0x47,0xbf,0xda,0xd7,0x8b,0x67,0x25,0x76,0xb5,0x55,0xa1,0x25,0x13,0xb0,0x4c,0xe0, + 0x9b,0x42,0x4b,0x2f,0xfb,0x6a,0x97,0xab,0x06,0x7f,0xab,0x55,0x4f,0xae,0x28,0xf0, + 0xaa,0xbb,0xd6,0x57,0xab,0xa9,0xab,0xfe,0x3a,0xcb,0x7c,0xb4,0x7e,0x23,0xfd,0x6e, + 0xa0,0x7e,0x63,0xa8,0x93,0x60,0xed,0x68,0x5b,0x0f,0x1f,0xf5,0x6f,0xc2,0x96,0x77, + 0xf6,0x16,0xa7,0x67,0x03,0xf6,0xfa,0x30,0x37,0xe9,0xd0,0xcb,0x76,0x78,0x5b,0x9f, + 0x2d,0xae,0x9d,0xd9,0x31,0xfb,0x5d,0xd4,0x31,0xfb,0x56,0x7a,0xa1,0x7d,0xd8,0x0e, + 0x6f,0xad,0xd3,0x2c,0x15,0xfa,0xd8,0xa7,0xa2,0x7f,0x7f,0x6c,0x7f,0xb3,0xf4,0x7d, + 0x87,0x3c,0xfb,0xe0,0xf5,0x20,0xf8,0x0e,0x74,0xea,0x7e,0x67,0x19,0x9f,0x62,0xd9, + 0x7e,0x80,0xbe,0x6b,0xfc,0x3e,0x74,0xe5,0x9c,0x7d,0x90,0xbd,0xf2,0x3b,0xc4,0xf7, + 0xd8,0xd9,0x8f,0xd0,0x27,0xb5,0x9f,0xa2,0x27,0x19,0x67,0x9f,0x62,0xfe,0x6d,0x7f, + 0xae,0xac,0xef,0xe7,0x99,0x67,0xad,0x7f,0x91,0xdc,0xa7,0xe0,0x7f,0x91,0x3b,0x20, + 0x0e,0x7d,0xca,0x06,0x9e,0x19,0xf8,0x2b,0xf6,0x87,0x20,0xda,0xdb,0x6d,0xcc,0x5c, + 0x2d,0xbd,0xec,0x17,0x46,0x35,0xbc,0xe7,0xb5,0x2c,0xeb,0xdb,0x31,0x66,0x77,0x2d, + 0xf6,0x3e,0xc9,0xd0,0xc4,0xbb,0xbe,0x8e,0x39,0xd8,0x86,0x4f,0x33,0xf8,0x69,0xf1, + 0xd1,0xfd,0x4d,0xc4,0x35,0x13,0xa7,0x73,0x70,0x2b,0x71,0x2d,0xc4,0xd9,0xec,0x2a, + 0x7e,0x41,0x7c,0x36,0xba,0x3b,0x42,0x67,0xe3,0x77,0x61,0xde,0x06,0x9f,0xbf,0xc4, + 0xdf,0xee,0x8a,0x36,0xf4,0xb4,0x86,0x33,0xc9,0x86,0xde,0x6c,0xa6,0xa6,0x7e,0x5e, + 0xa7,0x5f,0x77,0x80,0xef,0x93,0x9d,0x72,0xfa,0x1c,0xcc,0xfc,0xfe,0x94,0x1c,0x96, + 0x4b,0x9f,0xbf,0x89,0x97,0xfa,0x7d,0x8b,0x4f,0x96,0x98,0x56,0xa7,0x61,0x0b,0x1a, + 0xda,0x9d,0x86,0x3b,0xc1,0x4d,0x43,0x07,0x98,0x69,0x28,0x38,0x0d,0x6a,0xeb,0xe4, + 0xde,0xd2,0xba,0x9d,0x4e,0xc3,0x3d,0xd4,0x4e,0x39,0x0d,0x5d,0xe0,0xa6,0xe1,0x0b, + 0x30,0xf3,0x53,0x0d,0x96,0xab,0xe0,0x34,0x5c,0xc6,0xa7,0x8d,0x98,0x4e,0xa7,0xe1, + 0x3e,0x34,0x6c,0x75,0x1a,0xba,0xc1,0x4d,0xc3,0xfd,0x60,0xa6,0xa1,0xd7,0x69,0x50, + 0x5b,0x4f,0x98,0xbb,0xa4,0x6e,0x0f,0x73,0x94,0x0f,0xf9,0x92,0xda,0x97,0xdd,0xbb, + 0xa7,0x1c,0xcd,0xb7,0xd7,0x71,0xfc,0x0e,0xbf,0x02,0x71,0x3d,0xf0,0xd1,0x77,0xf2, + 0x21,0xde,0x47,0x9b,0xb9,0x5d,0x70,0x2e,0xba,0x99,0xdb,0x0d,0x3e,0xc9,0xcc,0x3d, + 0x0c,0xa6,0x79,0x8f,0x73,0x57,0x3e,0x02,0x3e,0x22,0x7b,0x7d,0xf7,0x1f,0x25,0xf7, + 0x28,0x31,0x8f,0x81,0x15,0x5d,0x4c,0x3f,0xf8,0x5b,0xe2,0xa3,0xfb,0xbd,0xe4,0xe9, + 0x87,0x8f,0xbe,0xfb,0xfb,0xe1,0x33,0x00,0x1f,0x3d,0xab,0xc7,0xc1,0x35,0x8f,0xde, + 0xd1,0x07,0xc0,0x06,0xa5,0x92,0xde,0x57,0x07,0xa9,0xbd,0x97,0xde,0x1c,0x70,0x67, + 0xf2,0x04,0xf9,0x06,0xdd,0x99,0x3c,0x09,0x6e,0x67,0xf2,0x14,0x98,0x9d,0xc9,0xb0, + 0x3b,0x13,0xb5,0x0d,0x05,0x5d,0x49,0x9f,0x87,0xdc,0x5c,0x3d,0x4d,0xed,0x38,0x68, + 0xa8,0x08,0x77,0xd3,0xb3,0x60,0x07,0xdd,0xfb,0x9e,0x0e,0xdc,0x72,0xc1,0x7e,0x98, + 0x38,0x5b,0x67,0x24,0xd7,0xa1,0xd0,0xc7,0x24,0xf6,0x70,0xc8,0xb5,0x26,0xe8,0x7a, + 0x8e,0x3c,0x23,0xdc,0x39,0x59,0x77,0xf7,0xe9,0xd9,0x0f,0xc3,0x69,0xd4,0xe9,0x3d, + 0x8a,0xde,0x23,0x4e,0xef,0xf3,0xe0,0xa6,0xf7,0x05,0x30,0xd3,0x3b,0xee,0xf4,0xaa, + 0x6d,0x4c,0xff,0x03,0x91,0x7b,0xcc,0xe9,0x3d,0xee,0xf4,0xae,0x92,0xeb,0x45,0xf0, + 0x22,0x9c,0x2c,0x6e,0x9c,0x79,0x54,0x9f,0x97,0xa8,0x39,0x8a,0xff,0x18,0x75,0x4b, + 0xae,0xae,0xfa,0x4c,0xc8,0x2a,0x11,0x3f,0xe1,0xea,0xbe,0xf2,0x1f,0x7d,0x7e,0xf5, + 0x3a,0x7d,0x3e,0x41,0x9c,0xad,0x37,0xe9,0xf3,0x49,0x62,0x4f,0xb8,0x3e,0xbf,0x46, + 0x9e,0x93,0xff,0xd3,0x67,0xe3,0x54,0x42,0x93,0xc6,0xfc,0x48,0xcc,0x38,0xf1,0x13, + 0x65,0x67,0x32,0xec,0x7c,0x7f,0xe0,0x2c,0x87,0x88,0x2b,0x85,0xdf,0x97,0xe4,0xb7, + 0x6a,0x12,0xbb,0x9d,0xdf,0x69,0xce,0x6f,0xca,0x9d,0xdf,0x1b,0xe0,0x76,0x7e,0x67, + 0xc0,0xec,0xfc,0x66,0x5c,0x1f,0xd5,0x36,0x2d,0xeb,0x2c,0x3c,0xa6,0xd1,0xa9,0xb5, + 0xde,0xa6,0xde,0x24,0x3a,0xf3,0xf4,0xcc,0x74,0xce,0x10,0x73,0xd6,0xf1,0x79,0x07, + 0x3e,0xe7,0x1c,0x9f,0x77,0xc1,0x8d,0xcf,0x7b,0x60,0xc6,0x67,0xce,0xf1,0x51,0xdb, + 0xac,0xac,0x79,0x72,0xcf,0x72,0xae,0x9a,0xe7,0x7d,0xb8,0xc4,0xdc,0xc3,0xca,0xf1, + 0x4b,0x87,0xdb,0x1d,0x37,0x47,0xec,0xbc,0xbb,0x27,0x3e,0x80,0xd7,0x79,0x77,0x4f, + 0x7c,0x08,0xfe,0x3d,0x73,0xf3,0x11,0xd8,0x80,0xe3,0xfa,0x31,0x78,0x11,0xae,0x8b, + 0x8e,0xab,0xda,0x16,0x64,0x2d,0x52,0x6f,0xc1,0xf1,0xfa,0x0a,0x7d,0x93,0xee,0xf7, + 0xc1,0xfc,0x16,0x39,0x6b,0xf5,0xbb,0x82,0xcf,0x3c,0x31,0x0b,0x8e,0xcf,0x27,0xf0, + 0x69,0x71,0x7c,0x3e,0x05,0x37,0x3e,0xcb,0x8e,0x8f,0xda,0x96,0x64,0x2d,0x53,0x67, + 0xc9,0xf1,0xf9,0x1a,0x3e,0x57,0x38,0x43,0xe5,0x63,0x7e,0xcb,0x8e,0xcf,0x55,0x7c, + 0x16,0x89,0x59,0x72,0x7c,0x3e,0x83,0xcf,0x94,0xe3,0x73,0x01,0xdc,0xf8,0xac,0x3a, + 0x3e,0x6a,0x5b,0x09,0xef,0x7e,0x52,0x67,0xc5,0xf1,0xf9,0x86,0xff,0x95,0x57,0xdd, + 0x3c,0x99,0xdf,0xaa,0xe3,0xf3,0x0b,0x3e,0xcb,0xc4,0xac,0x94,0x9d,0xf1,0x9c,0xf3, + 0xfd,0x99,0x79,0x98,0x25,0x6e,0xb5,0x6c,0x4e,0x67,0x9c,0xef,0x4f,0xcc,0xf7,0x34, + 0x71,0x9a,0x67,0xbb,0x30,0xb9,0x84,0xed,0x6f,0x39,0xb5,0x6e,0x59,0xff,0x00,0x81, + 0xf4,0x0b,0x56,0x30,0x0e,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform isampler2D src; +// layout(location = 0)out uvec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// ivec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// uvec4 dstValue = uvec4(srcValue); +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc index 2dec327f621a9a3b677517d415ea74e6610c542c..b56ab6238f65ab653654c7ff6f701be18785e3f1 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc @@ -10,127 +10,107 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000020[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x58,0x6b,0x4c,0x96,0x65, - 0x18,0x7e,0x9f,0xef,0xe3,0xe0,0xa9,0xd2,0x65,0x98,0x8a,0x47,0x6c,0xcb,0xe9,0xc0, - 0x02,0x4a,0x25,0x4e,0x9e,0xc8,0x12,0x21,0xcc,0x03,0xb2,0xc5,0x30,0x20,0x95,0x94, - 0x4c,0xd2,0x44,0x50,0x3c,0x4d,0xd7,0x66,0x5b,0x63,0xa3,0x84,0x46,0xe5,0x01,0x0d, - 0x8b,0x84,0x39,0x45,0xb2,0x7e,0x58,0xc9,0xd6,0x9f,0xfe,0xd4,0xac,0xf4,0x47,0x5a, - 0xc1,0x9a,0xb3,0x56,0xea,0x44,0x9a,0xd1,0x73,0xbf,0xcf,0x75,0xfb,0x5d,0x7b,0x97, - 0x8b,0xed,0xd9,0xfb,0x3e,0xd7,0x7d,0xba,0xee,0xeb,0x79,0x9e,0xf7,0x7d,0xf9,0xc2, - 0xa1,0x84,0x58,0xcf,0x33,0xde,0x10,0x6f,0x90,0xf7,0xb9,0xf1,0xfc,0xbf,0x11,0x5e, - 0xc8,0x93,0xdb,0xa1,0x5e,0x8c,0x7f,0xcd,0x59,0xb4,0x64,0x51,0xe2,0xc6,0xaa,0xd2, - 0xc4,0x94,0xd4,0x19,0x62,0xbf,0xdf,0x0b,0xfb,0x7e,0x62,0x7b,0xc0,0x8b,0xf5,0xa2, - 0xec,0x55,0xc6,0xba,0x92,0x35,0xeb,0x05,0x9f,0x25,0x73,0x6b,0x1c,0x6e,0xfd,0x04, - 0x8f,0x95,0x1c,0xf6,0x6e,0x96,0x9f,0x53,0x62,0x3c,0xef,0x69,0x2f,0xda,0xcb,0x74, - 0xe5,0xbc,0x04,0x5c,0x15,0x33,0xc0,0x06,0x11,0x16,0x02,0x36,0x9c,0xb0,0x30,0xb0, - 0x91,0x84,0x45,0x01,0x7b,0x98,0xb0,0x68,0x60,0xf1,0x84,0xc5,0x00,0x9b,0x48,0x58, - 0x2c,0xb0,0x29,0x84,0x0d,0x02,0xf6,0x28,0x61,0x83,0x81,0x4d,0x27,0x6c,0x08,0xb0, - 0x19,0x84,0x0d,0x05,0x96,0x42,0xd8,0x30,0x60,0x33,0x09,0xbb,0x0f,0xd8,0x53,0xbe, - 0x4e,0xe1,0xbb,0xfd,0x8a,0x66,0xeb,0xec,0x75,0x32,0xf4,0xd1,0xf9,0x24,0x9a,0x8b, - 0xce,0xe3,0x31,0x7f,0xd0,0x46,0x85,0x7c,0x7b,0xd8,0xd7,0x46,0xee,0xe3,0xec,0x5d, - 0x0c,0xfa,0x9c,0x66,0xfd,0x63,0xa0,0x61,0x7c,0x62,0x6e,0xda,0x48,0xeb,0x31,0x82, - 0xf0,0x38,0x3b,0x0a,0x3a,0x17,0x67,0xeb,0x7c,0xac,0x1d,0x4b,0x97,0x7e,0x97,0xa1, - 0xf3,0x71,0x76,0xa4,0x0f,0xd9,0x9b,0xa9,0xf3,0x09,0x76,0xb4,0xe5,0x94,0xa4,0xeb, - 0x5c,0x74,0xeb,0x69,0x7b,0xe4,0xee,0x3c,0xc9,0x8e,0xc6,0x03,0xa3,0xb3,0x1e,0xb2, - 0xf3,0x64,0x70,0x90,0xb5,0x1d,0x65,0xe7,0xa2,0x49,0x32,0x38,0xca,0xfc,0x49,0xac, - 0x49,0x94,0xef,0x17,0xe5,0xeb,0x23,0xbe,0x82,0xa7,0x61,0x3e,0x8b,0xe2,0x67,0xc3, - 0x5f,0xe2,0x25,0x7f,0x06,0xf2,0xcb,0xdf,0x78,0xdb,0x61,0x26,0x74,0xd7,0x3a,0x32, - 0x32,0xfe,0x67,0xa8,0x8f,0xd4,0xcf,0xc2,0x3a,0x67,0xa2,0xbe,0xcc,0xb3,0x81,0x4d, - 0x43,0x3f,0x73,0xc0,0x47,0xfc,0xe7,0xc2,0x96,0x42,0xf6,0x85,0xd4,0xcf,0x33,0xb0, - 0x67,0xc0,0x2e,0xd7,0x5c,0xf0,0x55,0xff,0x65,0xd8,0xab,0x3a,0x2f,0xc1,0xde,0x18, - 0x6d,0x23,0x2b,0xa8,0x5f,0xfe,0xc3,0x91,0xf5,0x6b,0xbc,0x8c,0xfb,0x0a,0x70,0x96, - 0xf9,0xba,0x40,0x8d,0xca,0xc0,0xbc,0x0a,0xe7,0x48,0xe2,0x5f,0x03,0xc7,0x64,0x68, - 0xfc,0x3a,0xee,0xc3,0xe4,0x5f,0x03,0x0e,0x3a,0xaf,0xc3,0xde,0xd7,0x79,0x03,0x78, - 0x4a,0xfc,0x7b,0xb8,0xe7,0xf8,0x16,0x9c,0x33,0xdd,0x23,0x6d,0x01,0x3e,0xe7,0x70, - 0x6e,0x74,0x7e,0x01,0x67,0x50,0xe7,0x57,0x02,0x6b,0x70,0x0d,0x67,0x4a,0xf3,0x19, - 0x5f,0x90,0xba,0x4c,0xe9,0x27,0x6c,0x5c,0x6d,0xdd,0x43,0x32,0x8f,0x32,0x11,0x3e, - 0xe2,0x7f,0xc8,0xce,0x2b,0x8f,0xbe,0x7a,0x77,0x4f,0x1f,0xb6,0xf3,0xb7,0x76,0x35, - 0xa7,0x3f,0x61,0x57,0x22,0x84,0xf5,0xf3,0xd0,0x43,0x9f,0x45,0x64,0x7d,0xd2,0xb1, - 0x5f,0xd3,0xb0,0x27,0xf3,0x6c,0x47,0xb3,0x71,0x7e,0xd3,0x30,0x74,0x6d,0xd6,0x63, - 0xaf,0xa7,0xc3,0x9e,0x6d,0x33,0xc8,0x5e,0x99,0x87,0xfd,0x34,0x07,0xf9,0xc4,0x67, - 0x3e,0xf0,0x9d,0xd6,0x47,0xe6,0x0b,0x10,0x37,0x1f,0x71,0xb2,0x87,0x9e,0x45,0xdc, - 0x42,0xc4,0xc9,0x3e,0x5a,0x04,0xfc,0xb8,0xf5,0x91,0xf3,0xbc,0x18,0x98,0xec,0xaf, - 0x5b,0x96,0x79,0x3e,0xf8,0xf4,0x5b,0xff,0xc5,0x3e,0x5f,0xcf,0xc7,0xa4,0x1f,0xb9, - 0x7f,0xce,0xc6,0x89,0x96,0x4b,0x50,0x53,0xfe,0xb6,0x41,0xdf,0xe7,0x81,0x17,0x58, - 0x75,0x84,0xd3,0x0e,0xe3,0x30,0xf5,0xbb,0x6d,0x73,0x68,0x2e,0xb9,0xde,0xb4,0x5a, - 0x88,0xdf,0x11,0xe3,0x7c,0xa2,0x11,0x93,0x47,0x3d,0x2c,0x47,0x0f,0xcb,0xa8,0x87, - 0x15,0xc0,0xb5,0x87,0x42,0x60,0xda,0x43,0x11,0xf5,0x20,0xb6,0x95,0x76,0x14,0xa1, - 0xee,0x4a,0xea,0xe1,0x05,0xd4,0x36,0xd4,0x43,0x31,0x70,0xed,0x61,0xb7,0x71,0x98, - 0xfa,0x49,0x0f,0x9a,0xab,0x88,0x7a,0x68,0x31,0xce,0x27,0x1f,0x31,0x2b,0xa9,0x87, - 0x55,0xe8,0xa1,0x84,0x7a,0x78,0x11,0xb8,0xf6,0x50,0x0a,0x4c,0x7b,0x28,0xa7,0x1e, - 0xc4,0x56,0x66,0x47,0x39,0xea,0x96,0x61,0x1f,0x49,0xdd,0xd5,0xa8,0xdd,0x62,0x22, - 0xe7,0x5b,0x38,0xaa,0x6f,0x39,0x71,0x3c,0x0a,0xbf,0x22,0xc4,0x95,0x81,0x4f,0x85, - 0xbf,0xf7,0xdc,0xf9,0xd7,0x3d,0xf7,0x0a,0x38,0x57,0xd2,0x9e,0xdb,0x00,0xbc,0x0e, - 0x7b,0x6e,0x23,0x30,0xc9,0x2b,0x71,0xf2,0x4c,0xd8,0x84,0xb8,0x2a,0xc4,0x89,0xa6, - 0x9b,0x81,0xab,0xee,0x5b,0x10,0xeb,0x11,0x56,0x0d,0xcc,0xf8,0xfb,0x2d,0xc6,0x7f, - 0x9e,0x6c,0x85,0x6f,0x35,0x72,0x68,0x8d,0x5a,0xd4,0xa8,0xa1,0x1a,0xdb,0x80,0x17, - 0xdb,0x5e,0xe5,0xbc,0x6d,0x47,0x4f,0x5b,0xf1,0x0c,0xda,0x46,0xeb,0xb1,0x03,0xf1, - 0x75,0xb4,0x1e,0x3b,0x81,0xeb,0x7a,0xec,0x02,0xa6,0xeb,0xb1,0x87,0xd6,0x43,0x6c, - 0xbb,0xed,0xd8,0x03,0x8d,0x77,0xa3,0x0f,0x79,0x26,0xec,0x43,0x6d,0x0f,0x71,0x09, - 0x58,0x94,0xbf,0xed,0xbd,0xe4,0x1a,0x65,0x5c,0x8c,0x5c,0xcf,0xa2,0xd6,0x68,0xe3, - 0xe2,0x86,0x23,0x66,0xb2,0x89,0xd4,0x12,0xdb,0x18,0x3b,0xc6,0x21,0x4e,0xae,0xc3, - 0x6c,0x8f,0xfe,0x3b,0x15,0x6b,0x3e,0x06,0x75,0xc7,0xfa,0x9c,0x1c,0x8f,0x89,0xc6, - 0xd9,0xc7,0xf9,0xbd,0x38,0x6c,0x92,0x01,0x8e,0x3d,0x92,0x80,0x9c,0x92,0x5f,0xe3, - 0xe2,0xc1,0x25,0x2e,0xe0,0x23,0x9c,0x06,0x6c,0xb5,0x3e,0x60,0x37,0xc1,0xe1,0x98, - 0x71,0x79,0x85,0x57,0x3c,0xb8,0xca,0xd9,0x91,0x35,0xd8,0x6b,0x9c,0x7d,0x3b,0xad, - 0xb5,0xc4,0xec,0x87,0x46,0x06,0xfd,0xa6,0x06,0x34,0x9a,0x8a,0x9a,0x53,0x49,0xa3, - 0x69,0xc6,0xc5,0xa9,0x46,0x29,0xa4,0x91,0xd8,0xa6,0xdb,0x91,0x84,0xb8,0x24,0xd2, - 0xe8,0x31,0xd2,0x68,0x7f,0x40,0xa3,0xc7,0x8d,0xb3,0xb3,0x46,0xc9,0xc6,0xe1,0xaa, - 0x51,0x2a,0x72,0x4e,0x27,0x8d,0x12,0xc1,0x25,0x2e,0xe0,0x93,0x42,0x1a,0xa5,0x92, - 0x46,0xad,0xc6,0xe5,0x15,0x5e,0x89,0xe0,0xaa,0x1a,0xbd,0x61,0x9c,0x7d,0x2f,0x78, - 0xaa,0x46,0xf5,0xd0,0x28,0x84,0x7e,0x73,0x02,0x1a,0xa5,0xa1,0x66,0x1a,0x69,0x94, - 0x6e,0x5c,0x9c,0x6a,0xb4,0x80,0x34,0x12,0x5b,0x86,0x9c,0x53,0xc4,0x65,0x93,0x46, - 0x73,0x49,0xa3,0xfa,0x80,0x46,0xf3,0x8c,0xb3,0xb3,0x46,0xf3,0x8d,0xc3,0x55,0xa3, - 0x1c,0xe4,0xcc,0x20,0x8d,0xb2,0xc0,0x25,0x2e,0xe0,0xb3,0x80,0x34,0xca,0x21,0x8d, - 0x3e,0x32,0x2e,0xaf,0xf0,0xca,0x02,0x57,0xd5,0x68,0xbf,0x71,0x76,0xd1,0x2a,0x84, - 0x7c,0x7a,0xf6,0xf6,0xe0,0xf9,0x26,0x7e,0x6d,0xd8,0x6b,0xe5,0x88,0xc9,0x31,0x91, - 0x33,0xff,0x36,0xce,0x7c,0x03,0x9d,0xf9,0x77,0x80,0xeb,0x99,0x3f,0x00,0x4c,0xcf, - 0x7c,0x13,0x9d,0x79,0xb1,0x35,0xca,0x7b,0x00,0x75,0x8f,0xd0,0xf3,0xe4,0x28,0x72, - 0xb7,0x50,0xee,0x63,0xc0,0x35,0xf7,0x87,0xc0,0x34,0xf7,0x71,0xca,0x2d,0xb6,0x56, - 0xdf,0xd7,0xe5,0x6e,0xa5,0x7d,0xf0,0x31,0xfa,0x92,0x6f,0x8a,0x2e,0xe4,0xfa,0x44, - 0x71,0x68,0xa1,0x71,0xc7,0xa1,0x85,0xf8,0x9c,0x40,0xcd,0x23,0xf0,0x6f,0x45,0xdd, - 0x0e,0xaa,0x2b,0x3e,0xed,0x76,0x74,0x20,0xbe,0x9d,0xea,0x9e,0xa4,0xba,0x79,0xf6, - 0xab,0x4a,0xbe,0xcf,0x4e,0x01,0x6b,0x33,0x91,0x6f,0x96,0x10,0x9e,0xd7,0x62,0x3f, - 0x8d,0x38,0x1d,0xfb,0x6c,0x2e,0xc1,0x3b,0x11,0x7b,0xda,0xcf,0x35,0xd8,0x5f,0xab, - 0x2e,0xe4,0xea,0xc4,0x77,0x53,0x34,0x7d,0xff,0x49,0x4f,0xca,0xa9,0x83,0xd6,0xb7, - 0x1d,0xb5,0x8f,0x23,0xbe,0x1d,0xbe,0x4d,0xf0,0x6d,0x24,0xfe,0xcd,0xff,0xc1,0xff, - 0x83,0x7b,0xf0,0x7f,0x13,0x3c,0x0f,0xc2,0xa7,0x99,0x78,0x1e,0x46,0xcc,0xc1,0x7b, - 0xf0,0xd4,0xda,0x4d,0xc4,0xf3,0x84,0x71,0x5c,0x3b,0x10,0xdf,0x48,0x7b,0xe5,0x0b, - 0xec,0x95,0x73,0xb4,0x57,0xbe,0x04,0xae,0x7b,0xe5,0x2b,0x60,0xba,0x57,0xba,0x69, - 0xcd,0xc4,0x76,0xde,0x8e,0x6e,0xd4,0x3d,0x4f,0x3d,0x7f,0x8d,0xda,0xfa,0xee,0x29, - 0x0c,0x3c,0x33,0x72,0x71,0x06,0x73,0xe9,0x99,0x91,0x67,0x5c,0xdc,0x14,0xc4,0xac, - 0xa0,0x67,0x86,0xd8,0xf2,0xed,0x58,0x82,0x38,0xb9,0xee,0x40,0xad,0xa5,0x88,0x9b, - 0x40,0xcf,0x8a,0x65,0xc6,0xe1,0x87,0xe8,0xd9,0xb2,0x9c,0x9e,0x2d,0x62,0x4f,0x82, - 0x6e,0x85,0xc8,0x99,0x4f,0xcf,0x8c,0x02,0xe4,0x94,0xef,0x6a,0xf6,0x59,0x41,0xcf, - 0x8c,0x42,0x7a,0x66,0x74,0x18,0x97,0x5f,0x78,0x15,0x80,0xab,0x3e,0x33,0xea,0x8d, - 0xb3,0xab,0x1e,0xaa,0xd1,0x37,0xd0,0x48,0xdf,0x3d,0x15,0x01,0x8d,0x8a,0x51,0xb3, - 0x98,0x34,0x2a,0x31,0x2e,0x4e,0x35,0x5a,0x4b,0x1a,0x89,0x6d,0x95,0x1d,0x65,0x88, - 0x2b,0x23,0x8d,0x5e,0x42,0x1c,0x6b,0xb4,0xda,0x38,0x9c,0x35,0x5a,0x43,0x1a,0xad, - 0x26,0x8d,0x2a,0x90,0x73,0x15,0x69,0x54,0x8a,0x9c,0xaa,0x91,0xfa,0xac,0x25,0x8d, - 0x2a,0x48,0xa3,0x93,0xc6,0xe5,0x17,0x5e,0xa5,0xe0,0xaa,0x1a,0x35,0x18,0x67,0xaf, - 0x0f,0xbc,0x7b,0xbe,0x85,0x46,0xfa,0xee,0xa9,0x0d,0x68,0xb4,0x01,0x35,0x37,0x90, - 0x46,0x1b,0x8d,0x8b,0x53,0x8d,0x6a,0x48,0x23,0xb1,0x55,0xd9,0xb1,0x19,0x71,0x9b, - 0x49,0xa3,0x2d,0x88,0x63,0x8d,0xaa,0x8d,0xc3,0x59,0xa3,0xad,0xa4,0x51,0x35,0x69, - 0x54,0x8b,0x9c,0x55,0xa4,0xd1,0x26,0xe4,0x54,0x8d,0xd4,0xa7,0x86,0x34,0xaa,0x25, - 0x8d,0x4e,0x19,0x97,0x5f,0x78,0x6d,0x02,0x57,0xd5,0xe8,0x80,0x71,0xf6,0x06,0x7a, - 0xf7,0xe8,0xd9,0xeb,0xa6,0x33,0xdf,0x89,0xbd,0xd6,0x84,0x98,0x5a,0x7a,0xf7,0x7c, - 0x8f,0x33,0x7f,0x81,0xce,0xfc,0x0f,0xc0,0xf5,0xcc,0xff,0x08,0x4c,0xcf,0xfc,0x25, - 0x3a,0xf3,0x62,0xbb,0x68,0xc7,0x65,0xd4,0xbd,0x4c,0xcf,0x93,0x9f,0x91,0xfb,0x0a, - 0xe5,0xfe,0x05,0xb8,0xe6,0xfe,0x15,0x98,0xe6,0xee,0xa5,0xdc,0x62,0xeb,0xb1,0xe3, - 0x2a,0x72,0x5f,0xa5,0xef,0xec,0xdf,0x91,0xfb,0x1a,0x7d,0x67,0xff,0x01,0xbc,0x1b, - 0xdf,0xed,0x7f,0x02,0xab,0xa1,0x7a,0x7f,0x01,0xaf,0x44,0xbd,0x1b,0x54,0x4f,0x6c, - 0xd7,0xed,0xb8,0x81,0x7a,0xd7,0xbd,0x88,0xd6,0xcd,0xc6,0xbd,0xd3,0x3a,0xe9,0x7f, - 0x2d,0xf5,0xbb,0x41,0x5a,0x9f,0x31,0xce,0xe7,0x2a,0x62,0xae,0x13,0x9f,0x5b,0xe0, - 0xb3,0x90,0xf8,0xf4,0x01,0x57,0x3e,0xfd,0xc4,0xa7,0xcf,0xaf,0xe3,0xf9,0x98,0xd4, - 0xb9,0x4d,0x7c,0xde,0x07,0x9f,0x33,0xb4,0xf6,0xea,0xd7,0x4f,0x7c,0xba,0x8c,0xf3, - 0xb9,0x81,0x98,0xdb,0xc4,0xe7,0x0e,0xf8,0x5c,0x20,0x3e,0xff,0x00,0x57,0x3e,0x1e, - 0x9d,0x15,0xb1,0x0d,0xe0,0xe5,0x24,0x75,0x06,0x88,0xcf,0x41,0xe3,0x7e,0xb3,0xe8, - 0x32,0x91,0xf7,0x8f,0xfa,0x79,0x26,0xc2,0xe7,0x33,0xf8,0xf4,0x23,0x66,0x00,0xbe, - 0xbd,0xe0,0xde,0x43,0x67,0xfd,0x37,0xe8,0x1d,0xa6,0x3a,0xef,0x9a,0x08,0xee,0x05, - 0x62,0x7b,0xa9,0xef,0xb3,0xc6,0xd5,0x92,0xda,0x12,0xd3,0x03,0xdf,0x4b,0xf0,0xbd, - 0x48,0xef,0xd1,0x9f,0x90,0x4f,0x86,0xfe,0xce,0x1b,0xa2,0xf7,0xa8,0xc6,0x5c,0xa2, - 0xfc,0x9f,0x1a,0x57,0xa3,0x17,0xf1,0x17,0xfd,0xdf,0xc4,0xc2,0xfe,0xef,0x32,0x62, - 0xbb,0x63,0x0b,0xcf,0xb4,0xe3,0x5f,0xcf,0x2c,0x49,0xa7,0x98,0x16,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0xe9,0x6f,0x95,0x45, + 0x14,0xc6,0xdf,0xb9,0xb7,0x1b,0x5b,0x2d,0xa1,0x50,0x51,0x42,0x5a,0x29,0x05,0x69, + 0x29,0x7b,0x81,0x96,0xcb,0x12,0xa4,0xad,0x42,0x40,0x68,0x34,0x41,0x44,0x52,0x64, + 0x11,0xa9,0xb8,0x00,0xb1,0xa8,0x34,0xc5,0x16,0x23,0xc4,0x0f,0x9a,0x88,0x0a,0x89, + 0x7e,0xf0,0x8b,0x26,0x45,0xe0,0x83,0xa0,0x52,0x0d,0x41,0x23,0x60,0xa2,0x34,0x51, + 0x6a,0xe0,0x1f,0xd0,0x48,0x24,0x2e,0x84,0x08,0x82,0xe2,0x9c,0x99,0xdf,0xe9,0x3d, + 0x36,0x2e,0x4d,0x26,0xef,0x3b,0xcf,0x9c,0xe7,0x2c,0xcf,0x9c,0x99,0xf7,0x42,0x3a, + 0x35,0x26,0x3f,0x49,0x5c,0x32,0x30,0x29,0x48,0x16,0xbb,0x24,0xfc,0x0d,0x4d,0x52, + 0x89,0xbc,0x0e,0x4a,0xf2,0xc2,0xb3,0x61,0x49,0xd3,0x92,0xea,0xad,0xdb,0xd6,0x55, + 0x4f,0x9f,0x31,0x59,0xd6,0x0b,0x93,0x74,0xb0,0x93,0xb5,0x5b,0x92,0xfc,0x24,0xc7, + 0x3f,0x65,0x3c,0xd6,0xbc,0x69,0x8b,0xe0,0x15,0x7e,0x5c,0xf0,0xa3,0xc8,0xdb,0x09, + 0x9e,0x2f,0x3e,0xfc,0x5b,0x45,0xf0,0x29,0x9c,0x24,0x69,0x4c,0x72,0x93,0xaa,0x18, + 0x2e,0x19,0xc3,0x53,0x31,0x07,0x56,0x60,0xb0,0x14,0x58,0x91,0xc1,0xd2,0x60,0xc5, + 0x06,0xcb,0x01,0xbb,0xd5,0x60,0xb9,0x60,0xa3,0x0c,0x96,0x07,0x56,0x6a,0xb0,0x7c, + 0xb0,0x72,0x83,0x15,0x80,0x8d,0x37,0xd8,0x00,0xb0,0x2a,0x83,0x0d,0x04,0x9b,0x6c, + 0xb0,0x41,0x60,0xd3,0x0d,0x36,0x18,0x6c,0x96,0xc1,0x86,0x80,0xcd,0x09,0x3a,0xa5, + 0xfb,0xea,0x15,0xcd,0x56,0xf9,0xe7,0x1d,0xe8,0xa3,0xf3,0x32,0x33,0x17,0x9d,0x47, + 0x33,0x1f,0xe6,0x59,0xa9,0xb0,0x9e,0x0e,0xda,0xc8,0xfb,0x08,0xff,0x96,0x47,0x9d, + 0x95,0xde,0x3e,0x8f,0x78,0xdf,0x1d,0x1a,0x9b,0x29,0xf6,0x16,0x85,0x06,0x17,0xcd, + 0x0e,0x35,0x34,0x67,0x74,0x2e,0x7a,0x1d,0xd8,0x3f,0x72,0xfe,0x70,0x3f,0x2f,0xc5, + 0x87,0xec,0x4d,0x89,0x9f,0x97,0x31,0x4f,0x31,0x2f,0x47,0xd3,0x9c,0x80,0xe7,0x24, + 0x63,0xb1,0x15,0xbc,0x8e,0x79,0x85,0xe1,0x8f,0xc3,0x5e,0xf8,0xe2,0xbf,0x12,0x7f, + 0x49,0xa8,0xa7,0x28,0x68,0x50,0xc6,0x28,0xed,0xcb,0xff,0xbf,0x47,0x69,0xdf,0x33, + 0x27,0x99,0xc8,0x3e,0x55,0x11,0x5f,0xe6,0xd5,0x60,0x95,0xd4,0x33,0x89,0x7c,0xc4, + 0x7e,0x32,0x6b,0x65,0x66,0xbd,0xc6,0xd4,0x33,0xb3,0x8f,0x1b,0xd7,0xe5,0x59,0x4b, + 0xbe,0x6a,0xbf,0x90,0x5e,0xd3,0xf9,0x52,0xb4,0x96,0x7a,0xef,0x87,0x2b,0xfe,0x46, + 0x7a,0x4f,0x2b,0x99,0x73,0xe4,0xfa,0xfe,0x74,0x2e,0x31,0x1f,0xe0,0x7d,0x25,0x35, + 0xc8,0x7c,0x55,0xbf,0x98,0xab,0xfb,0xcd,0xd7,0xa2,0xa9,0xf0,0x1f,0x26,0xe7,0x52, + 0xb3,0xbe,0x11,0xdd,0x25,0xa7,0x27,0xc9,0x21,0x6d,0xd6,0x77,0x70,0x0e,0x74,0xbe, + 0x8f,0x3e,0xd6,0x79,0x17,0x67,0x42,0xe7,0xc7,0xfa,0x69,0x7a,0x92,0x1e,0xd7,0x1e, + 0xfa,0xc2,0xe4,0x27,0xf3,0x6f,0xc3,0xac,0x7d,0x9e,0xe4,0x77,0x9e,0xd8,0xda,0x23, + 0xe7,0xb9,0x37,0xd2,0xc6,0x7e,0x86,0x17,0x64,0x57,0x7b,0x7b,0x5d,0x95,0xcf,0x4a, + 0xec,0x6a,0x5c,0xc4,0xec,0x50,0xdb,0x99,0xfe,0xfd,0xf1,0x77,0x9e,0x9a,0xa7,0xf3, + 0x59,0x7e,0xfe,0x4a,0xc7,0x5b,0x99,0x1a,0xbf,0x2b,0x29,0xb4,0x4f,0xf0,0x7f,0xd5, + 0x23,0xb2,0x57,0x19,0x7a,0x77,0x3c,0xfd,0xb9,0xcc,0xc7,0x91,0xde,0xbc,0x13,0x6c, + 0xbc,0xd9,0x97,0x2d,0xf4,0xfd,0x04,0xd6,0x17,0x78,0x0f,0xd2,0x37,0x53,0xe8,0xad, + 0x49,0xf8,0x13,0x9b,0xa9,0xe0,0xcf,0x7b,0x1b,0x99,0x4f,0x83,0x37,0x15,0xde,0x4c, + 0xee,0x80,0x6a,0xfa,0x2c,0x43,0x4f,0xcd,0x06,0xef,0xf2,0x36,0x85,0x41,0x97,0x88, + 0x49,0xaf,0xfd,0xe6,0x33,0xcf,0x90,0xcf,0xef,0xde,0xbe,0x8e,0x3b,0x23,0x43,0x3d, + 0xf2,0xbe,0xdc,0xf3,0x64,0x1f,0xe6,0x13,0x53,0xfe,0xda,0xd8,0x9b,0x05,0xe0,0x2b, + 0xbc,0x3a,0x92,0xd3,0xed,0x2e,0x62,0x6a,0x77,0xcd,0xfb,0x50,0x5f,0xf2,0xbc,0xe2, + 0xb5,0x10,0xbb,0xd9,0x2e,0xda,0xe4,0xc2,0x99,0x63,0x6a,0xb8,0x8b,0x1a,0x16,0x9a, + 0x1a,0x16,0x81,0x6b,0x0d,0xf5,0x60,0x5a,0x43,0xa3,0xa9,0xa1,0x3e,0xdc,0x63,0x49, + 0xc0,0x24,0x6e,0x83,0xa9,0x61,0x31,0xb1,0x9d,0xa9,0x61,0x09,0xb8,0xd6,0x30,0xda, + 0x45,0x4c,0xed,0xa4,0x06,0xf5,0xd5,0x68,0x6a,0xa8,0x75,0xd1,0x26,0x03,0xa7,0xc1, + 0xd4,0xb0,0x8c,0x1a,0x96,0x9a,0x1a,0xee,0x05,0xd7,0x1a,0x96,0x83,0x69,0x0d,0x4d, + 0xa6,0x86,0xe5,0x21,0x9f,0x24,0x60,0x12,0x77,0x05,0x7d,0x24,0x71,0xef,0x23,0x76, + 0xad,0xcb,0x9e,0x6d,0xc9,0x51,0x6d,0x9b,0x4c,0x8e,0x75,0xd8,0x35,0xc2,0x5b,0x41, + 0x3e,0x72,0xfe,0x1f,0xe4,0xec,0x6b,0xcf,0x3d,0x44,0xce,0xab,0x4d,0xcf,0xad,0x01, + 0x6f,0xa7,0xe7,0x9a,0xc1,0xea,0x5c,0xe4,0xc9,0x7d,0xb0,0x0e,0xde,0x5a,0x78,0xa2, + 0xe9,0x7a,0xf0,0x35,0x3e,0x0f,0xb9,0xa7,0x36,0x10,0xaf,0x99,0xbb,0x64,0xbd,0xd1, + 0xea,0x11,0xf8,0x1b,0x8d,0x56,0x9b,0xc0,0x55,0xab,0x47,0xc1,0x54,0xab,0x16,0xa3, + 0x95,0xac,0x6d,0xf6,0xa3,0x95,0xfa,0x5b,0x8d,0xef,0x67,0xf0,0xbd,0xc3,0xf8,0x7e, + 0x16,0x5c,0x7d,0x3f,0x07,0xa6,0xbe,0xdb,0x8c,0x6f,0x59,0xdb,0x19,0x7a,0x25,0xfa, + 0xde,0x49,0x2f,0x55,0x06,0x4d,0x62,0x5d,0x72,0xf6,0x0f,0xe2,0x6b,0x17,0x78,0x2d, + 0x7b,0xa2,0xbc,0x36,0xf6,0xa4,0x30,0x9c,0xdf,0x18,0xb3,0x15,0xfb,0x9d,0xc4,0xed, + 0x34,0x71,0xc5,0xa6,0xc3,0x8f,0x4e,0xf8,0x1d,0x26,0xee,0x0b,0x26,0xee,0x32,0x7f, + 0x73,0xca,0x9d,0xfb,0x22,0xd8,0x06,0x73,0xb7,0xa4,0x42,0x7f,0xe5,0x85,0xf5,0x3d, + 0xf0,0xb2,0x23,0x37,0xe0,0x7b,0xe1,0xee,0x09,0xbe,0x06,0x84,0xbd,0x7a,0x09,0x3f, + 0x7b,0xb9,0xdf,0x72,0xb9,0xdf,0xd3,0xd4,0xa4,0x39,0x75,0x52,0x93,0x70,0xe6,0xba, + 0xc8,0x69,0x83,0xdf,0x81,0x6d,0x0b,0xb6,0x9b,0x4d,0xfe,0x4f,0xfc,0x43,0xfe,0x5b, + 0xff,0x27,0xff,0x6d,0xf0,0x74,0x74,0x92,0xff,0x76,0xb8,0xdb,0x4c,0xfe,0x4f,0xe3, + 0x67,0xfb,0xbf,0xe4,0xaf,0x39,0xb5,0x98,0xfc,0x33,0x2e,0xd6,0xd0,0x09,0x7f,0x73, + 0x88,0x13,0xef,0xf1,0x97,0x59,0xdf,0xed,0x3d,0xc9,0xfc,0x55,0xb0,0x1a,0x97,0xed, + 0xb3,0xd7,0xe8,0xb3,0x7d,0xa6,0xcf,0x5e,0x07,0xd7,0x3e,0x7b,0x03,0x4c,0xfb,0xec, + 0x80,0xd9,0x6f,0x59,0xdb,0x2f,0xbf,0x8d,0xc8,0x6d,0x3f,0x7a,0x49,0xde,0x6f,0x12, + 0x33,0x81,0x77,0x99,0xf7,0xeb,0xfe,0x5d,0x7c,0x7d,0x0f,0x47,0x9e,0x1f,0x13,0xeb, + 0x07,0x78,0x43,0xe0,0xfc,0x6a,0x62,0xc9,0xda,0x45,0x3f,0x2e,0xc1,0xbb,0x14,0xfa, + 0x30,0xc6,0xfa,0x09,0x9e,0xfc,0x6e,0xdb,0x0d,0xf6,0x33,0xb8,0x7c,0x0b,0x07,0x7b, + 0xbd,0x04,0xfb,0x85,0x3d,0xba,0x8d,0xf5,0x51,0x68,0x7b,0x19,0x9f,0x17,0x0d,0xff, + 0x47,0x7c,0xca,0xb7,0xd3,0xda,0x48,0x4e,0x37,0xbd,0x97,0xab,0x60,0x57,0xf0,0x3d, + 0xcf,0x45,0xff,0x97,0xe0,0x5e,0xe4,0x6e,0x16,0xed,0xcb,0x5d,0x5c,0x57,0x3d,0x54, + 0xa3,0xb7,0xd1,0xc8,0x51,0x6f,0xae,0xfb,0xbb,0x46,0xd7,0x88,0x79,0xcd,0x68,0x74, + 0x1d,0x9e,0x6a,0x94,0xe3,0xb2,0x1a,0xc9,0xda,0x8d,0x90,0x5f,0xe4,0xdd,0x34,0x1a, + 0x39,0x17,0x79,0x56,0xa3,0x94,0x8b,0xb8,0xd5,0x28,0xed,0xb2,0x1a,0xc9,0xba,0x6a, + 0x24,0xb9,0x89,0xcf,0x1b,0x86,0xff,0x27,0xb9,0xa8,0x46,0x6a,0x23,0x39,0xa9,0x46, + 0x82,0xa9,0x46,0x0b,0x5c,0xf4,0x7f,0x13,0xee,0x0d,0xa3,0xd1,0x38,0x17,0xd7,0xcb, + 0x89,0xaf,0x1a,0xbd,0x8b,0x46,0x29,0xea,0x2d,0xe9,0xa7,0xd1,0x20,0x62,0xca,0x53, + 0x35,0x1a,0xe2,0x22,0x4f,0x35,0x1a,0x61,0x34,0x92,0xb5,0x42,0x3f,0x86,0xc2,0x93, + 0xa7,0x6a,0x34,0x0c,0x9e,0xd5,0xa8,0xd8,0x45,0xdc,0x6a,0x34,0xdc,0x68,0x54,0x6c, + 0x34,0x2a,0xc1,0x67,0xa1,0xcb,0xf2,0x8b,0xf0,0xa9,0x1a,0xa9,0xcd,0x08,0xa3,0x51, + 0x89,0xd1,0x68,0xa1,0x8b,0xfe,0x25,0xaf,0x22,0x72,0x55,0x8d,0x26,0xb8,0xb8,0x2e, + 0x5a,0xa5,0x88,0xa9,0x67,0xef,0x00,0xbd,0x28,0x76,0x8b,0xe8,0xb5,0x16,0x38,0x25, + 0xe6,0xcc,0x1f,0xe4,0xcc,0x77,0x99,0x33,0xff,0x1e,0xb8,0x9e,0xf9,0x43,0x60,0x7a, + 0xe6,0x8f,0x98,0x73,0x28,0x6b,0x87,0xfd,0x38,0x4a,0xdc,0xa3,0xe6,0xbb,0xf5,0x01, + 0xbe,0x8f,0x19,0xdf,0x1f,0x82,0xab,0xef,0x8f,0xc0,0xd4,0x77,0xb7,0xf1,0x2d,0x6b, + 0xc7,0xfd,0x38,0x81,0xef,0x13,0x49,0xf6,0x7b,0xfd,0x29,0xbe,0x4f,0x9a,0xef,0xf5, + 0x67,0xe0,0xa7,0xf9,0x9d,0xf4,0x39,0xd8,0x5a,0x13,0xef,0x14,0xf8,0x6a,0xe2,0x9d, + 0x31,0xf1,0x4e,0x05,0x6e,0x12,0x30,0x89,0x77,0xda,0xf4,0xe3,0x24,0x17,0x7f,0xb3, + 0x2f,0x32,0xbf,0xa7,0xd4,0xee,0x8c,0xd1,0xba,0xde,0x45,0x9b,0x13,0x70,0x4e,0x9b, + 0x7c,0xbe,0x24,0x9f,0x1a,0x93,0xcf,0x57,0xe0,0x9a,0x4f,0x8f,0xc9,0x47,0xd6,0xce, + 0xfa,0xd1,0x43,0x9c,0xb3,0x26,0x9f,0x29,0xe4,0x53,0x6f,0xf6,0x5e,0xed,0x7a,0x4c, + 0x3e,0x0d,0x2e,0xda,0x9c,0x81,0x73,0xd6,0xe4,0xf3,0x35,0xf9,0x74,0x99,0x7c,0xbe, + 0x01,0xd7,0x7c,0x7a,0x4d,0x3e,0xb2,0x76,0xce,0x8f,0x5e,0xe2,0x9c,0x33,0xf9,0x4c, + 0x73,0xf1,0xdf,0x30,0x12,0x4f,0xbf,0x51,0x6a,0xd7,0x6b,0xf2,0xb9,0xc7,0x45,0x9b, + 0x1e,0x38,0xe7,0xb0,0xed,0xc6,0xf6,0xb8,0x39,0xeb,0x9f,0xa0,0x77,0xda,0xc4,0x99, + 0xe8,0xb2,0x78,0xd2,0x8f,0xdb,0x6d,0xe2,0xdc,0xed,0x62,0xac,0x5e,0x38,0xc7,0xb1, + 0x3d,0x82,0xed,0x61,0xbe,0xb5,0x62,0xfb,0x3e,0xfe,0x64,0xe8,0xff,0xcb,0xa4,0xcc, + 0xb7,0x56,0x39,0x47,0x8c,0xff,0x46,0x17,0x63,0x74,0xc3,0x17,0x7f,0x73,0x3d,0xe3, + 0x02,0x6b,0x7f,0xf8,0x2e,0x99,0xe5,0xc7,0x5f,0xf4,0x21,0xca,0x4a,0x48,0x12,0x00, + 0x00 }; // Generated from: @@ -139,7 +119,7 @@ constexpr uint8_t kImageCopy_frag_00000020[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture3D src; +// layout(set = 0, binding = 0)uniform utexture2D src; // layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { @@ -165,19 +145,6 @@ constexpr uint8_t kImageCopy_frag_00000020[] = { // bool rotateXY; // } params; // -// float linearToSRGB(float linear) -// { -// -// if(linear <= 0.0031308) -// { -// return linear * 12.92; -// } -// else -// { -// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; -// } -// } -// // float sRGBToLinear(float sRGB) // { // @@ -210,15 +177,7 @@ constexpr uint8_t kImageCopy_frag_00000020[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); -// -// if(params . srcIsSRGB) -// { -// -// srcValue . r = linearToSRGB(srcValue . r); -// srcValue . g = linearToSRGB(srcValue . g); -// srcValue . b = linearToSRGB(srcValue . b); -// } +// uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); // // if(params . premultiplyAlpha) // { @@ -231,6 +190,8 @@ constexpr uint8_t kImageCopy_frag_00000020[] = { // // vec4 dstValue = vec4(srcValue); // +// dstValue /= 255.0; +// // if(params . dstIsSRGB) // { // diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc index 0cf62fd140a0dae29ddb790f79a5a983a8588d0e..48060b302849a362f773725c884eb78d48eaf3ba 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc @@ -10,108 +10,109 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000021[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfb,0x6f,0x54,0x45, - 0x14,0xc7,0xef,0xec,0x6e,0xbb,0x05,0xa4,0x96,0x6c,0xe5,0xb1,0x21,0xa4,0x95,0x0a, - 0x08,0x58,0x2a,0x22,0x94,0xc7,0x22,0x58,0xa0,0x35,0x22,0x48,0x1b,0x12,0x44,0x7c, - 0x54,0x51,0xa8,0x3c,0x14,0xd4,0x5f,0xf8,0x41,0x89,0x88,0x6d,0x82,0x81,0x08,0x28, - 0x8d,0x28,0x8d,0x11,0x22,0x91,0x44,0x50,0x21,0x51,0x40,0x69,0x0c,0x01,0xa3,0x34, - 0x51,0x1a,0x95,0x06,0xfe,0x02,0x23,0x91,0xa8,0x20,0x2a,0x82,0x73,0xee,0x7c,0x4e, - 0xf7,0xb8,0x11,0x9b,0x4c,0xee,0x9d,0xef,0x9c,0xef,0x79,0x7c,0xe7,0xcc,0xec,0x6d, - 0x32,0x31,0x3c,0x1d,0x45,0x2e,0xea,0x1b,0x95,0x44,0xf7,0xb8,0x28,0xfe,0x1b,0x10, - 0x25,0x22,0x79,0xed,0x17,0x15,0xc7,0xcf,0xfa,0xb9,0x4d,0x73,0xab,0x9f,0x7d,0x6e, - 0x69,0xf5,0x84,0x3b,0x6b,0x64,0xbd,0x34,0x4a,0xc6,0x76,0xb2,0x76,0x63,0x94,0x8e, - 0x52,0xfe,0x29,0x63,0x55,0x73,0xcb,0x6a,0xc1,0x47,0xf8,0x71,0xce,0x8f,0x32,0x6f, - 0x27,0x78,0x5a,0x7c,0xf8,0xb7,0x11,0xb1,0x4f,0xe1,0x44,0x51,0x43,0x54,0x14,0x8d, - 0x0d,0xe1,0xa2,0xe1,0x3c,0x15,0x73,0x60,0x25,0x06,0x4b,0x80,0x95,0x19,0x2c,0x09, - 0x56,0x6e,0xb0,0x14,0xd8,0x60,0x83,0x15,0x81,0x0d,0x35,0x58,0x31,0x58,0x85,0xc1, - 0xd2,0x60,0x55,0x06,0x2b,0x01,0x1b,0x65,0xb0,0x3e,0x60,0x63,0x0d,0xd6,0x17,0xac, - 0xc6,0x60,0xfd,0xc0,0x26,0x18,0xec,0x06,0xb0,0x5a,0x83,0xf5,0x07,0x9b,0x16,0xeb, - 0x94,0xec,0xad,0x57,0x34,0x5b,0xec,0x9f,0x37,0xa3,0x8f,0xce,0x2b,0xcd,0x5c,0x74, - 0x1e,0xc6,0x3c,0xe3,0x59,0x89,0x78,0x3d,0x19,0x6b,0x23,0xef,0x03,0xfd,0x5b,0x31, - 0x75,0x8e,0xf1,0xf6,0xc5,0xc4,0x1b,0x5a,0x7d,0xdf,0xd4,0x72,0x6f,0x51,0x6a,0xf0, - 0x8c,0x1f,0x8d,0x9f,0xcc,0x9b,0xa9,0x73,0xd1,0x70,0xe1,0xc2,0xef,0xa6,0xeb,0x3c, - 0xeb,0x47,0xae,0x6f,0xeb,0x5d,0x3a,0x17,0x3d,0x3f,0xa8,0x6f,0xce,0xdd,0xe4,0xe7, - 0x15,0xc4,0x90,0xbd,0x1b,0xe4,0xe7,0x95,0xcc,0x13,0xcc,0xab,0xd0,0x3c,0x15,0xe3, - 0xa9,0xe8,0x16,0x6c,0x05,0x9f,0xca,0x7c,0x84,0xe1,0x8f,0xc4,0x5e,0xf8,0xe2,0x7f, - 0x0c,0xfe,0xa2,0xb8,0xde,0xb2,0x58,0xa3,0x4a,0x46,0x45,0x6f,0x7d,0xff,0x3f,0x2a, - 0x7a,0x9f,0xa9,0xe8,0x36,0xf6,0x71,0x2c,0xf1,0x65,0x5e,0x0d,0x36,0x86,0x7a,0xc6, - 0x91,0x8f,0xd8,0xd7,0xb0,0x56,0x69,0xd6,0x27,0x9a,0x7a,0x26,0xf5,0x72,0xc3,0xba, - 0x3c,0xa7,0x90,0xaf,0xda,0xd7,0xd1,0x8b,0x3a,0x9f,0xc7,0x5e,0x0c,0xf1,0xcc,0x45, - 0xa6,0x5e,0xfb,0xc7,0x91,0x8c,0x63,0x3c,0xc0,0xfb,0x22,0x72,0x96,0xf9,0xe2,0x82, - 0x18,0x4b,0x0a,0xe6,0xcd,0x9c,0x13,0xe1,0x3f,0x46,0x8e,0x15,0x68,0xfc,0x04,0xef, - 0x49,0x63,0xdf,0x42,0x0e,0x3a,0x5f,0x45,0x6f,0xeb,0x7c,0x03,0x79,0x0a,0xff,0x55, - 0xde,0x2d,0x7f,0x1b,0xe7,0x48,0x7b,0x64,0xa7,0xc9,0x47,0xe6,0x7b,0xe3,0xd9,0x8b, - 0x75,0xc2,0xdf,0x47,0xfc,0x94,0xe1,0x1f,0xe0,0xcc,0xe9,0xfc,0x48,0xc1,0x9e,0x9c, - 0xe0,0x0c,0x49,0x3d,0x67,0x89,0xbd,0x0f,0x3d,0xce,0x72,0xef,0x24,0xe3,0xbd,0x29, - 0x8a,0xeb,0x48,0x11,0x5f,0xb0,0xcb,0x1e,0x11,0xfd,0x73,0xf4,0xe3,0x28,0x7a,0x6e, - 0xbe,0xcf,0x58,0xfa,0xed,0x56,0xb0,0x51,0x46,0xfb,0xd5,0xf4,0xf2,0x68,0xd6,0x67, - 0x7a,0x0f,0xd2,0x0b,0xb7,0xd3,0x2f,0xe3,0xf0,0x27,0x36,0xe3,0xc1,0x5f,0xf2,0x36, - 0x32,0xbf,0x03,0xde,0x78,0x78,0x93,0x38,0xf7,0xd5,0xf4,0x4e,0x8e,0x3e,0x99,0x0c, - 0xbe,0xcf,0xdb,0x94,0xc6,0xb5,0x04,0x4c,0xfa,0xe7,0x77,0x9f,0x79,0x8e,0x7c,0xfe, - 0xf4,0xf6,0x53,0xb9,0x27,0x72,0xd4,0x23,0xef,0x0b,0x3c,0x4f,0xb4,0x99,0x41,0x4c, - 0xf9,0x7b,0x01,0xbd,0x66,0x82,0x37,0x7a,0xf5,0x25,0xa7,0x61,0x2e,0x60,0x6a,0xf7, - 0x87,0xf7,0xa1,0xbe,0xe4,0x79,0xd1,0x6b,0x21,0x76,0x93,0x5c,0xb0,0x29,0x82,0x33, - 0xcd,0xd4,0x30,0x8b,0x1a,0xea,0x4c,0x0d,0xb3,0xc1,0xb5,0x86,0x39,0x60,0x5a,0x43, - 0x83,0xa9,0x61,0x4e,0x7c,0x77,0x45,0x31,0x26,0x71,0xeb,0x4d,0x0d,0xf7,0x12,0xdb, - 0x99,0x1a,0xe6,0x82,0x6b,0x0d,0x95,0x2e,0x60,0x6a,0x27,0x35,0xa8,0xaf,0x06,0x53, - 0x43,0xad,0x0b,0x36,0x39,0x38,0xf5,0xa6,0x86,0xf9,0xd4,0x30,0xcf,0xd4,0x70,0x3f, - 0xb8,0xd6,0xb0,0x00,0x4c,0x6b,0x68,0x32,0x35,0x2c,0x88,0xf3,0x89,0x62,0x4c,0xe2, - 0x36,0xd2,0x47,0x12,0x77,0x21,0xb1,0x6b,0x5d,0xfe,0xfc,0x4a,0x8e,0x6a,0xdb,0x64, - 0x72,0x9c,0x8c,0x5d,0x03,0xbc,0x46,0xf2,0x91,0x33,0xfe,0x20,0xe7,0x5b,0x7b,0xee, - 0x21,0x72,0x5e,0x62,0x7a,0xee,0x61,0xf0,0xf5,0xf4,0xdc,0xa3,0x60,0x93,0x5d,0xe0, - 0xc9,0x99,0x7f,0x1c,0x5e,0x33,0x3c,0xd1,0x74,0x29,0xb8,0xea,0xfe,0x24,0xdc,0xc8, - 0x60,0xcb,0xc0,0x5c,0xac,0x43,0x71,0x7c,0x5f,0x2c,0xc7,0x76,0x19,0x3e,0x34,0xc6, - 0x53,0xc4,0x68,0x31,0x31,0x56,0x80,0x3f,0xe2,0x6b,0x95,0xf3,0xb6,0x92,0x9a,0x96, - 0x73,0xc7,0xac,0x30,0xfb,0xb1,0x1a,0xfe,0x2a,0xb3,0x1f,0x4f,0x83,0xeb,0x7e,0x3c, - 0x03,0xa6,0xfb,0xb1,0xd6,0xec,0x87,0xac,0xad,0xf1,0x63,0x2d,0x1a,0xaf,0xa1,0x0e, - 0xb9,0x73,0x9e,0x27,0x76,0x04,0xef,0x12,0xef,0x7f,0xf9,0x77,0xf1,0xf5,0x23,0x1c, - 0x79,0x1e,0x25,0xd6,0x4f,0xf0,0xfa,0xc3,0xb9,0x68,0x62,0xc9,0xda,0x79,0x3f,0x2e, - 0xc0,0xbb,0x10,0xdf,0x49,0xe9,0x38,0xd6,0x2f,0xe8,0x95,0x85,0x2f,0xbf,0xa1,0x1b, - 0xc9,0xe3,0x57,0xd6,0xb3,0xf1,0x3d,0x1a,0xb0,0xdf,0xc0,0x87,0xd2,0x23,0x97,0xf0, - 0x79,0xde,0xf0,0x7e,0xc6,0x57,0xa6,0xc0,0x46,0x72,0xba,0xe6,0xa3,0x5d,0x06,0xbb, - 0x48,0x0e,0x53,0x5c,0xf0,0x7b,0x01,0xee,0x79,0xce,0x8e,0xec,0x41,0x95,0x0b,0xeb, - 0x2b,0xcd,0x5e,0x0b,0x67,0x1d,0x1a,0x39,0xea,0x2d,0x71,0xff,0xd6,0xe8,0x0a,0x31, - 0xaf,0x18,0x8d,0xae,0xc2,0x53,0x8d,0xd2,0x2e,0xaf,0xd1,0xd5,0x38,0x37,0xbf,0xcf, - 0x2e,0xf0,0xe4,0xa9,0x1a,0xa5,0x5c,0x5e,0xa3,0x75,0x05,0x1a,0x15,0xb9,0xb0,0x6e, - 0x35,0x2a,0x76,0x01,0x57,0x8d,0x4a,0xf0,0x79,0xcd,0xf0,0x9c,0x0b,0xbe,0x32,0x05, - 0x36,0x92,0x93,0x6a,0x24,0x98,0x6a,0x34,0xcd,0x05,0xbf,0x92,0x97,0x73,0x21,0x57, - 0xd5,0x68,0xa4,0x0b,0xeb,0x55,0xe4,0xa9,0x1a,0xad,0x47,0xa3,0x04,0xf5,0x66,0x0b, - 0x34,0x2a,0x25,0xa6,0x3c,0x55,0xa3,0x32,0x17,0x78,0xaa,0xd1,0x10,0xa3,0x91,0xac, - 0x0d,0xf0,0xa3,0x1c,0x5e,0xb9,0xd1,0x68,0xa0,0xd1,0x68,0x7d,0x81,0x46,0x83,0x5c, - 0x58,0xb7,0x1a,0x0d,0x76,0x01,0x57,0x8d,0xb2,0xf8,0x14,0xff,0xca,0xcb,0x90,0x4b, - 0xa6,0xc0,0x66,0x88,0xd1,0x28,0x6b,0x34,0x9a,0xee,0x82,0x5f,0xc9,0x2b,0x43,0xae, - 0xaa,0xd1,0x68,0x17,0xd6,0x45,0xab,0x04,0xfe,0xf4,0xec,0xad,0xa5,0x17,0xc5,0x6e, - 0x06,0xbd,0xd6,0x04,0x27,0xeb,0xf2,0x67,0xfe,0x65,0xce,0xfc,0x06,0x73,0xe6,0x37, - 0x82,0xeb,0x99,0x7f,0x05,0x4c,0xcf,0x7c,0x9b,0x39,0x87,0xb2,0xd6,0xea,0xc7,0x56, - 0xe2,0x6e,0x35,0xf7,0xc9,0x76,0x7c,0x6f,0x33,0xbe,0x5f,0x07,0x57,0xdf,0x6f,0x80, - 0xa9,0xef,0x76,0xe3,0x5b,0xd6,0x76,0xf8,0xd1,0x8e,0xef,0x1d,0xa6,0x0f,0xde,0xa4, - 0x2e,0xf9,0xa6,0x38,0x8c,0xaf,0xb7,0xc0,0x77,0xa2,0x85,0xf2,0xda,0xd1,0x42,0x6c, - 0xde,0x26,0xe6,0x56,0xec,0x77,0x10,0xb7,0xc3,0xc4,0x15,0x9b,0x5d,0x7e,0x74,0xc0, - 0xdf,0x65,0xe2,0xbe,0x63,0xe2,0xce,0xf7,0x5f,0x49,0xf2,0xfd,0xf5,0x2e,0xd8,0x0c, - 0x97,0xff,0x66,0x49,0x70,0x5f,0xcb,0xfa,0x6e,0x78,0x3a,0xda,0xbc,0x2f,0xc1,0xf7, - 0xc0,0xdd,0x1d,0xfb,0xea,0x13,0xef,0xd5,0x7b,0xf8,0xda,0xc3,0x77,0x53,0x91,0xf9, - 0xbe,0x93,0x9a,0x34,0xa7,0x0e,0xb3,0xbf,0x75,0xc4,0x6e,0x87,0xbf,0x0b,0xdb,0x36, - 0x6c,0x5b,0x4d,0xfe,0x9b,0xfe,0x23,0xff,0xcd,0xd7,0xc9,0x7f,0x33,0x79,0x6e,0xc1, - 0x66,0x93,0xc9,0xf3,0x35,0x38,0x5b,0xae,0x93,0xa7,0xc6,0x6e,0x33,0x79,0xde,0xed, - 0x42,0xae,0x1d,0xf0,0x5b,0x89,0x21,0x6b,0xef,0xb3,0xbe,0x97,0xef,0x3d,0xf9,0x9e, - 0xdc,0x0f,0xae,0xfd,0xf4,0x21,0xfd,0x74,0xc0,0xf4,0xd3,0x47,0xe0,0xda,0x4f,0x1f, - 0x83,0x69,0x3f,0x1d,0x32,0xfb,0x2a,0x6b,0x07,0xe3,0x7e,0x09,0xb9,0x1d,0x36,0xbe, - 0x8f,0xe2,0xfb,0x88,0xf1,0xfd,0x19,0xb8,0xfa,0xfe,0x1c,0x4c,0x7d,0x77,0x1a,0xdf, - 0xb2,0x76,0xcc,0x8f,0xe3,0xf8,0x3e,0x6e,0x7e,0x97,0x4f,0xe2,0xfb,0x84,0xf9,0x5d, - 0xfe,0x12,0xfc,0x24,0xbf,0xf3,0x5f,0x81,0xb5,0x98,0x78,0x5f,0x83,0x2f,0x21,0x5e, - 0x97,0x89,0x27,0x6b,0xa7,0xfc,0xe8,0x22,0xde,0x29,0xee,0x4e,0xd1,0x6d,0xbc,0x0b, - 0x9c,0xfd,0x51,0xfe,0xdb,0x4c,0xed,0xba,0xd8,0x0f,0xb1,0x9b,0xe5,0x82,0xcd,0x71, - 0x38,0xa7,0x4c,0x3e,0xdf,0x90,0xcf,0x44,0x93,0xcf,0xb7,0xe0,0x9a,0x4f,0xb7,0xc9, - 0x47,0xd6,0x4e,0xfb,0xd1,0x4d,0x9c,0xd3,0x26,0x9f,0x09,0xe4,0x33,0xcb,0xdc,0x53, - 0x6a,0xd7,0x6d,0xf2,0x99,0xed,0x82,0x4d,0x17,0x9c,0xd3,0x26,0x9f,0xef,0xc9,0xe7, - 0x80,0xc9,0xe7,0x07,0x70,0xcd,0xa7,0xc7,0xe4,0x23,0x6b,0x67,0xfc,0xe8,0x21,0xce, - 0x19,0x93,0xcf,0x44,0x17,0xfe,0x67,0x98,0xed,0xf2,0xfd,0xaa,0x76,0x3d,0x26,0x9f, - 0x06,0x17,0x6c,0xba,0xe1,0x9c,0xc1,0xb6,0x13,0xdb,0x63,0xe6,0x3b,0xed,0x0b,0xf4, - 0x4e,0x9a,0x38,0x35,0x2e,0x8f,0x47,0x05,0xdc,0x4e,0x13,0xa7,0xde,0x85,0x58,0x3d, - 0x70,0x8e,0x61,0x7b,0x08,0xdb,0x83,0x9c,0x3b,0xb1,0xfd,0x14,0x7f,0xfb,0x39,0x77, - 0x69,0xce,0x6a,0xb2,0x80,0x73,0xc8,0xf8,0x9f,0xe3,0x42,0x8c,0x4e,0xf8,0xe2,0x6f, - 0xba,0x67,0x9c,0x63,0xed,0x6f,0xdf,0x25,0xb5,0x7e,0xfc,0x03,0xae,0x53,0x3c,0x67, - 0x88,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x68,0x96,0x55, + 0x18,0xc7,0xcf,0x79,0x9e,0xed,0xd9,0xd4,0x69,0x66,0x9a,0xf3,0x6d,0x6c,0xbe,0x65, + 0x6d,0xcd,0x97,0x6c,0x9a,0xfa,0xa8,0xcb,0x97,0x8d,0x9a,0xce,0x4d,0x0a,0xcc,0x4c, + 0x34,0x2b,0x35,0x9d,0xb5,0x05,0x45,0x8a,0x4e,0xdd,0x2a,0x1d,0x91,0xd2,0x87,0x28, + 0xcd,0x14,0x82,0x88,0xc2,0xc0,0x4a,0x3f,0xa4,0x95,0x23,0xcc,0xa2,0x5c,0x50,0x0e, + 0xca,0x85,0x7e,0xea,0x63,0x24,0x69,0xa9,0x11,0x75,0xae,0xfb,0xfc,0xae,0xed,0x6a, + 0xbd,0x0d,0x0e,0xf7,0x7d,0xfe,0xd7,0xf5,0xbf,0x5e,0xfe,0xe7,0xe5,0xde,0x96,0x4e, + 0x8d,0xc9,0x73,0xce,0xbb,0xbe,0x2e,0xdf,0xd5,0x7b,0x97,0xfc,0x5c,0xef,0x52,0x4e, + 0x5e,0xfb,0xb9,0x4c,0xf2,0xac,0xaa,0x59,0x5a,0x53,0xde,0xf4,0xc4,0x9a,0xf2,0xa9, + 0xb7,0x4f,0x12,0xfb,0x00,0x97,0x4e,0xfc,0xc4,0x76,0x9d,0xcb,0x73,0x39,0xe1,0x29, + 0x63,0xe3,0xaa,0x75,0x0d,0x82,0x8f,0x0f,0xe3,0x42,0x18,0x03,0x83,0x9f,0xe0,0x79, + 0x12,0x23,0xbc,0x8d,0x4f,0x62,0x0a,0xc7,0xb9,0x6a,0x97,0xeb,0xca,0x62,0x3a,0x37, + 0x86,0xa7,0x62,0x1e,0x2c,0xdf,0x60,0x29,0xb0,0x81,0x06,0x4b,0x83,0x0d,0x36,0x58, + 0x0e,0x58,0xa1,0xc1,0x72,0xc1,0x46,0x1a,0x2c,0x03,0x56,0x6c,0xb0,0x3c,0xb0,0xb1, + 0x06,0xcb,0x07,0x9b,0x60,0xb0,0x3e,0x60,0x65,0x06,0xeb,0x0b,0x36,0xc9,0x60,0xfd, + 0xc0,0xa6,0x1a,0xac,0x00,0x6c,0xba,0xc1,0xfa,0x83,0xcd,0x4a,0x74,0x4a,0x77,0xf7, + 0x2b,0x9a,0x2d,0x0f,0xcf,0xd1,0xe8,0xa3,0xf3,0x12,0x33,0x17,0x9d,0x8b,0x98,0xdf, + 0x10,0x58,0xa9,0xc4,0x9e,0x4e,0xb4,0x91,0xf7,0x1b,0xc3,0x5b,0x86,0x3e,0x4b,0x83, + 0x7f,0x86,0x7c,0x3f,0x1c,0x1e,0x97,0x1d,0x1c,0x3c,0x06,0x18,0x5c,0x34,0x3b,0x5c, + 0xb5,0x2a,0xab,0x73,0xd1,0xeb,0x95,0x97,0x87,0xcd,0x1d,0x12,0xe6,0xc5,0xc4,0x90, + 0xb5,0x19,0x1a,0xe6,0x25,0xcc,0x53,0xcc,0xc7,0xa2,0x69,0x4e,0x82,0xe7,0xb8,0x71, + 0xf8,0x0a,0x3e,0x93,0xf9,0x78,0xc3,0xbf,0x09,0x7f,0xe1,0x4b,0xfc,0x52,0xe2,0xb9, + 0xa4,0x9f,0x81,0x89,0x06,0x25,0x8c,0xe2,0xee,0xfa,0xff,0x7b,0x14,0x77,0x3f,0x73, + 0xdc,0xad,0xac,0x53,0x19,0xf9,0x65,0x5e,0x0e,0x56,0x4a,0x3f,0x13,0xa9,0x47,0xfc, + 0x27,0x61,0x2b,0x31,0xf6,0x0a,0xd3,0xcf,0xb4,0x6e,0x6e,0xb4,0xcb,0x73,0x06,0xf5, + 0xaa,0xff,0x3c,0xf6,0x9a,0xce,0x17,0xa3,0xb5,0xf4,0x7b,0x2f,0x5c,0x89,0x37,0x2c, + 0x44,0x5a,0xc6,0x9c,0x23,0xf7,0xb7,0xa7,0xe4,0xbc,0x8f,0xf7,0x65,0xf4,0x20,0xf3, + 0xe5,0xbd,0x72,0xae,0xe8,0x35,0x5f,0xcd,0xb9,0x10,0xfe,0x83,0xd4,0x5c,0x4c,0x0d, + 0x0f,0xf3,0x9e,0x36,0xfe,0xeb,0x59,0x03,0x9d,0x37,0xb0,0x2e,0xe2,0xff,0x14,0x35, + 0x5a,0xff,0x66,0xce,0x89,0xce,0xf7,0xb3,0xcf,0x75,0x7e,0x84,0x33,0xa3,0xf3,0x13, + 0xbd,0x34,0x3f,0xcd,0x19,0xd0,0x3d,0xf6,0x95,0xa9,0x5f,0xe6,0xdf,0x27,0xb3,0xe6, + 0x39,0x52,0xff,0x79,0x72,0xeb,0x1e,0x3a,0xcf,0xbd,0x92,0x36,0xfe,0xb3,0x82,0x60, + 0xdb,0x9b,0x9b,0x67,0x96,0x85,0xaa,0xc4,0x2f,0xeb,0x23,0x66,0x87,0xfa,0xce,0x0e, + 0xef,0x9b,0xde,0x68,0x9c,0xa3,0xf3,0x39,0x61,0xbe,0x77,0xe7,0x81,0x6c,0x45,0x58, + 0xb5,0x14,0x6b,0xe3,0x88,0x7f,0x25,0x20,0xb2,0x96,0x59,0xf6,0xf6,0x04,0xf6,0x6f, + 0x6d,0xc8,0x23,0x7b,0xf7,0x66,0xb0,0x09,0x66,0xdd,0x1a,0x38,0x17,0xb7,0x60,0xaf, + 0x0c,0x11,0x64,0x5f,0x4d,0x66,0xef,0x4d,0x24,0x9e,0xf8,0x4c,0x01,0xdf,0x11,0x7c, + 0x64,0x7e,0x1b,0xbc,0x29,0xf0,0xa6,0x71,0x47,0x94,0xb3,0x0f,0xb3,0xec,0xb9,0x3b, + 0xc0,0xdf,0x0a,0x3e,0x03,0x12,0x5d,0x22,0x26,0x7b,0xf1,0xd7,0x50,0x79,0x96,0x7a, + 0xae,0x05,0xff,0x99,0xdc,0x29,0x59,0xfa,0x91,0xf7,0xba,0xc0,0x93,0x75,0x98,0x4b, + 0x4e,0xf9,0xd9,0xca,0xda,0x54,0x82,0xd7,0x07,0x75,0xa4,0xa6,0xd1,0x3e,0x62,0xea, + 0x77,0x35,0xc4,0xd0,0x58,0xf2,0xbc,0x1c,0xb4,0x10,0xbf,0xb9,0x3e,0xfa,0xe4,0xc2, + 0x99,0x65,0x7a,0x98,0x4f,0x0f,0xf3,0x4c,0x0f,0x0b,0xc0,0xb5,0x87,0x85,0x60,0xda, + 0x43,0xb5,0xe9,0x61,0x61,0x72,0xcf,0xb9,0x04,0x93,0xbc,0x55,0xa6,0x87,0xbb,0xc9, + 0xed,0x4d,0x0f,0x35,0xe0,0xda,0xc3,0x38,0x1f,0x31,0xf5,0x93,0x1e,0x34,0x56,0xb5, + 0xe9,0xa1,0xd2,0x47,0x9f,0x2c,0x9c,0x2a,0xd3,0x43,0x2d,0x3d,0x2c,0x36,0x3d,0x2c, + 0x01,0xd7,0x1e,0xea,0xc0,0xb4,0x87,0xa5,0xa6,0x87,0xba,0xa4,0x1e,0x97,0x60,0x92, + 0xb7,0x9e,0x7d,0x24,0x79,0xef,0x21,0x77,0xa5,0xef,0x39,0xfb,0x52,0xa3,0xfa,0x2e, + 0x35,0x35,0xde,0x89,0x5f,0x35,0xbc,0x7a,0xea,0x91,0xfb,0xe1,0x7e,0xee,0x06,0xdd, + 0x73,0x0f,0x50,0xf3,0x0a,0xb3,0xe7,0x56,0x82,0x37,0xb3,0xe7,0x56,0x81,0x25,0x71, + 0x03,0x26,0xf7,0xc5,0x1a,0x78,0xab,0xe1,0x89,0xa6,0x0f,0x81,0xab,0xee,0x8f,0xc0, + 0x75,0x06,0x5b,0x0b,0xe6,0x13,0x1d,0x32,0xc9,0x5d,0xb3,0x0e,0xdf,0xb5,0xc4,0xd0, + 0x1c,0x8f,0x92,0x63,0xbd,0xc9,0xb1,0x01,0x7c,0x65,0xe8,0x55,0xee,0xca,0x8d,0xf4, + 0xb4,0x8e,0xfb,0x69,0x83,0x59,0x8f,0x4d,0xf0,0x1b,0xcc,0x7a,0x3c,0x06,0xae,0xeb, + 0xf1,0x38,0x98,0xae,0x47,0x93,0x59,0x0f,0xb1,0x35,0x86,0xb1,0x0d,0x8d,0xb7,0x99, + 0xd8,0xdb,0x89,0xdd,0x6c,0x62,0xef,0x00,0xd7,0xd8,0x3b,0xc1,0x34,0x76,0xab,0x89, + 0x2d,0xb6,0x96,0x30,0x5a,0x89,0xdd,0x82,0x46,0x12,0xe7,0x59,0xfa,0x92,0xfb,0xe5, + 0x6d,0x62,0x3d,0x07,0x3e,0x83,0x75,0x57,0x5e,0x2b,0xeb,0x2e,0x3e,0xbb,0xc8,0xb9, + 0x0d,0xff,0x16,0xf2,0xb6,0x99,0xbc,0xe2,0xb3,0x3b,0x8c,0x36,0xf8,0xbb,0x4d,0xde, + 0xe7,0x4d,0xde,0xda,0x70,0x3b,0xcb,0xbd,0xfe,0x02,0xd8,0x46,0x73,0x7f,0xa5,0x58, + 0x3b,0xb1,0xef,0x81,0xa7,0xe3,0x99,0x10,0x4b,0xf0,0xbd,0x70,0xf7,0x24,0xb1,0xfa, + 0x24,0x6b,0xf5,0x22,0x71,0xf6,0x72,0x87,0xe6,0xf2,0x0d,0x49,0xd3,0x93,0xd6,0xd4, + 0x46,0x4f,0xc2,0x59,0xe0,0x23,0xa7,0x15,0xfe,0x6e,0x7c,0x9b,0xf0,0x6d,0x34,0xf5, + 0x3f,0xf9,0x0f,0xf5,0x3f,0xfd,0x3f,0xf5,0x6f,0x86,0xa7,0xa3,0x85,0xfa,0xb7,0xc0, + 0xdd,0x6c,0xea,0xdf,0x4a,0x9c,0x2d,0xff,0x52,0xbf,0xd6,0xd4,0x64,0xea,0x9f,0xef, + 0x63,0x0f,0x6d,0xf0,0x1b,0x93,0xfd,0x16,0xbf,0x15,0x2f,0x61,0x6f,0x0d,0x91,0x64, + 0xbe,0x0f,0x2c,0xeb,0x7b,0xf6,0xd9,0xab,0xec,0xb3,0xfd,0x66,0x9f,0x1d,0x00,0xd7, + 0x7d,0xf6,0x1a,0x98,0xee,0xb3,0x43,0x66,0xbd,0xc5,0x76,0x30,0x8c,0x43,0xd4,0x76, + 0x10,0xbd,0xa4,0xee,0xd7,0xc9,0xe9,0xe0,0x5d,0xe3,0xfd,0xb7,0xf0,0x2e,0xb1,0x7e, + 0x84,0x23,0xcf,0xe3,0xe4,0xfa,0x09,0x5e,0x7f,0x38,0x57,0x4d,0x2e,0xb1,0x5d,0x0c, + 0xe3,0x12,0xbc,0x4b,0xc9,0x79,0x88,0xb9,0x7e,0x81,0x57,0xe8,0x62,0xbf,0x99,0x84, + 0x1f,0x71,0xf9,0xde,0x16,0x04,0xbd,0x32,0x09,0x2f,0xae,0xd1,0x70,0xec,0x23,0xd1, + 0xf6,0x1a,0x31,0x2f,0x1a,0xfe,0xcf,0xc4,0x94,0xef,0xb3,0xf5,0x91,0x9a,0xfe,0x08, + 0x51,0xae,0x80,0x5d,0x26,0xf6,0x42,0x1f,0xe3,0x5f,0x82,0x7b,0x91,0xfb,0x5f,0xb4, + 0x2f,0xf5,0xd1,0xbe,0xcf,0xdc,0x57,0xc2,0x79,0x13,0x8d,0x3c,0xfd,0x16,0xf8,0xbf, + 0x6a,0xe4,0x7c,0xcc,0x29,0x4f,0xd5,0x28,0xe5,0x23,0x4f,0x35,0xea,0xe7,0x7b,0x34, + 0x12,0x5b,0x3a,0x8c,0x0c,0x3c,0x79,0xaa,0x46,0xf9,0xf0,0xac,0x46,0x7d,0x7c,0xc4, + 0xad,0x46,0x7d,0x7d,0x8f,0x46,0x62,0x57,0x8d,0x0a,0x88,0x99,0xf6,0x3d,0xfc,0x5c, + 0x62,0xaa,0x46,0xea,0x23,0x35,0xa9,0x46,0x82,0xa9,0x46,0xd5,0x3e,0xc6,0x97,0xba, + 0x72,0xa9,0x55,0x35,0x2a,0xf7,0xd1,0x5e,0x4a,0x7e,0xd5,0xe8,0x1d,0x34,0x4a,0xd1, + 0x6f,0x51,0x2f,0x8d,0x06,0x91,0x73,0x90,0xd1,0x68,0xb0,0x8f,0x3c,0xd5,0x68,0x94, + 0xd1,0x48,0x6c,0x43,0xc2,0x28,0x84,0x57,0x68,0x34,0x1a,0x0e,0xcf,0x6a,0x34,0xc2, + 0x47,0xdc,0x6a,0x34,0xd2,0x68,0x34,0xc2,0x68,0x54,0x44,0xcc,0x21,0x46,0xa3,0xa1, + 0xc4,0x54,0x8d,0xd4,0x67,0x94,0xd1,0xa8,0xc8,0x68,0x74,0x97,0x8f,0xf1,0xa5,0xae, + 0xa1,0xd4,0xaa,0x1a,0x4d,0xf6,0xd1,0x2e,0x5a,0xa5,0xc8,0xa9,0x67,0xef,0x10,0x7b, + 0x51,0xfc,0x6a,0xd8,0x6b,0x4d,0x70,0x8a,0xcc,0x99,0x7f,0x97,0x33,0x7f,0xc4,0x9c, + 0xf9,0xf7,0xc0,0xf5,0xcc,0xbf,0x0f,0xa6,0x67,0xfe,0x98,0x39,0x87,0x62,0x3b,0x9a, + 0x9c,0xd9,0x98,0xf7,0xb8,0xf9,0x6e,0x7d,0x48,0xec,0x13,0x26,0xf6,0x47,0xe0,0x1a, + 0xfb,0x63,0x30,0x8d,0xdd,0x6e,0x62,0x8b,0xed,0x64,0x18,0xa7,0x88,0x7d,0xca,0x7c, + 0xaf,0x3f,0x23,0xf6,0x69,0xf3,0xbd,0xfe,0x1c,0xfc,0x53,0xbe,0xff,0x5f,0x80,0xad, + 0x37,0xf9,0xbe,0x04,0x5f,0x41,0xbe,0x0e,0x93,0x4f,0x6c,0x67,0xc2,0xe8,0x20,0xdf, + 0x19,0x73,0x66,0x2b,0x7c,0xfc,0xbb,0xa0,0xc6,0xfc,0xce,0xa6,0x7e,0x1d,0x46,0xeb, + 0x45,0x3e,0xfa,0x9c,0x82,0x73,0xc6,0xd4,0xf3,0x35,0xf5,0x54,0x98,0x7a,0xbe,0x01, + 0xd7,0x7a,0x3a,0x4d,0x3d,0x62,0x3b,0x1b,0x46,0x27,0x79,0xce,0x9a,0x7a,0xa6,0x53, + 0xcf,0x22,0xb3,0xf6,0xea,0xd7,0x69,0xea,0x59,0xec,0xa3,0x4f,0x07,0x9c,0xb3,0xa6, + 0x9e,0x6f,0xa9,0xe7,0x88,0xa9,0xe7,0x3b,0x70,0xad,0xa7,0xcb,0xd4,0x23,0xb6,0x73, + 0x61,0x74,0x91,0xe7,0x9c,0xa9,0x67,0x86,0x8f,0x7f,0x27,0x49,0x3e,0xfd,0x46,0xa9, + 0x5f,0x97,0xa9,0xa7,0xce,0x47,0x9f,0x4e,0x38,0xe7,0xf0,0x6d,0xc7,0xf7,0xa4,0x39, + 0xeb,0x9f,0xa0,0x77,0xda,0xe4,0x99,0xea,0x7b,0x70,0xd7,0x8b,0xdb,0x6e,0xf2,0x2c, + 0xf1,0x31,0x57,0x17,0x9c,0x93,0xf8,0x1e,0xc3,0xf7,0x28,0xdf,0x5a,0xf1,0xfd,0x80, + 0x78,0x32,0xf4,0x7f,0x43,0x29,0xf3,0xad,0x55,0xce,0x31,0x13,0xbf,0xd6,0xc7,0x1c, + 0xed,0xf0,0x25,0xde,0xec,0xc0,0xb8,0x80,0xed,0xf7,0xb0,0x4b,0xa6,0x87,0xf1,0x27, + 0x08,0x36,0x9d,0x78,0xcc,0x12,0x00,0x00 }; // Generated from: @@ -120,8 +121,8 @@ constexpr uint8_t kImageCopy_frag_00000021[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture3D src; -// layout(location = 0)out ivec4 dst; +// layout(set = 0, binding = 0)uniform utexture2DArray src; +// layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -146,16 +147,16 @@ constexpr uint8_t kImageCopy_frag_00000021[] = { // bool rotateXY; // } params; // -// float linearToSRGB(float linear) +// float sRGBToLinear(float sRGB) // { // -// if(linear <= 0.0031308) +// if(sRGB <= 0.04045) // { -// return linear * 12.92; +// return sRGB / 12.92; // } // else // { -// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); // } // } // @@ -178,15 +179,7 @@ constexpr uint8_t kImageCopy_frag_00000021[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); -// -// if(params . srcIsSRGB) -// { -// -// srcValue . r = linearToSRGB(srcValue . r); -// srcValue . g = linearToSRGB(srcValue . g); -// srcValue . b = linearToSRGB(srcValue . b); -// } +// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { @@ -197,9 +190,17 @@ constexpr uint8_t kImageCopy_frag_00000021[] = { // srcValue . rgb /= srcValue . a; // } // -// srcValue *= 255.0; +// vec4 dstValue = vec4(srcValue); // -// ivec4 dstValue = ivec4(srcValue); +// dstValue /= 255.0; +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc index 0393f0f1f9a56a6a9350dbcfe23b3d27508c837b..a0c9197553de575b47070235233cb0fe2e9dbf95 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc @@ -10,108 +10,109 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000022[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x7d,0x97,0xfd,0x6b,0x96,0x55, - 0x18,0xc7,0xef,0xf3,0x3c,0xcf,0x5e,0x9c,0x69,0xab,0xa9,0xe9,0x1c,0xb1,0xa5,0x2d, - 0xcd,0x35,0xcd,0xcc,0xb7,0x39,0xf3,0x75,0x9b,0x69,0x9a,0x1b,0x82,0x99,0xbd,0xac, - 0x2c,0x5d,0xbe,0x94,0x56,0xbf,0xf8,0x43,0x49,0x66,0x1b,0x18,0x49,0x5a,0x39,0xb2, - 0x1c,0x91,0x92,0x34,0x48,0x2b,0x85,0x48,0x2b,0x07,0x61,0x16,0xe5,0xa0,0x1c,0x94, - 0x43,0xff,0x02,0x49,0x92,0xcc,0x55,0x64,0x9d,0xeb,0x9c,0xcf,0xb5,0xe7,0xea,0x21, - 0x1b,0x1c,0xee,0xfb,0x7c,0xaf,0xf7,0xef,0xb9,0xae,0xf3,0xdc,0x4b,0xa7,0x46,0x15, - 0x24,0x89,0x4b,0x8a,0x92,0xc2,0x64,0xa1,0x4b,0xc2,0xdf,0x75,0x49,0x2a,0x91,0xd7, - 0x81,0x49,0x7e,0x78,0xd6,0x2f,0x6a,0x5a,0x54,0xfd,0xf4,0x33,0xab,0xaa,0x27,0xdd, - 0x39,0x41,0xe4,0x83,0x93,0x74,0xd0,0x13,0xd9,0xb5,0x49,0x41,0x92,0xf1,0x4f,0x59, - 0xeb,0x9b,0x5b,0x36,0x08,0x5e,0xe9,0xd7,0x39,0xbf,0x8a,0xbd,0x9e,0xe0,0x05,0xe2, - 0xc3,0xbf,0x55,0x06,0x9f,0x62,0x93,0x24,0x0d,0x49,0x5e,0x52,0x15,0xc3,0x25,0xa3, - 0x78,0x2a,0xe6,0xc0,0x0a,0x0d,0x96,0x02,0x2b,0x36,0x58,0x1a,0x6c,0x88,0xc1,0x32, - 0x60,0xc3,0x0d,0x96,0x07,0x56,0x66,0xb0,0x7c,0xb0,0x72,0x83,0x15,0x80,0x8d,0x36, - 0x58,0x21,0xd8,0x18,0x83,0x0d,0x00,0xab,0x32,0x58,0x11,0xd8,0x04,0x83,0x0d,0x04, - 0x9b,0x64,0xb0,0x6b,0xc0,0xa6,0x1a,0x6c,0x10,0xd8,0x8c,0xc0,0x53,0xba,0xbf,0x5e, - 0xe1,0x6c,0x85,0x7f,0xde,0x04,0x3f,0xba,0xaf,0x30,0x7b,0xe1,0xf9,0x46,0xf6,0x25, - 0xde,0x2a,0x15,0xe4,0xe9,0xc0,0x8d,0xbc,0x0f,0xf3,0x6f,0xf9,0xd4,0x39,0xce,0xeb, - 0xe7,0x13,0xaf,0xac,0xfa,0x9e,0x9a,0x21,0x5e,0x63,0xb0,0xc1,0x4b,0xfc,0x6a,0xfc, - 0x64,0xf1,0x6c,0xdd,0x0b,0x87,0xcb,0x96,0xf5,0xcc,0xd4,0x7d,0xa9,0x5f,0xb5,0x45, - 0xad,0x77,0xe9,0x5e,0xf8,0xfc,0xa0,0xbe,0xb9,0x76,0xa8,0xdf,0x97,0x13,0x43,0xce, - 0xee,0x06,0xbf,0xaf,0x60,0x9f,0x62,0x3f,0x1a,0xce,0x33,0x01,0xcf,0x24,0x37,0xa3, - 0x2b,0x78,0x0d,0xfb,0x4a,0x63,0x7f,0x0b,0xfa,0x62,0x2f,0xfe,0xc7,0xe1,0x2f,0x09, - 0xf5,0x16,0x07,0x8e,0x2a,0x58,0xe5,0xfd,0xf5,0xfd,0xff,0x2a,0xef,0x7f,0x66,0x92, - 0xdb,0x38,0xc7,0x2a,0xe2,0xcb,0xbe,0x1a,0x6c,0x1c,0xf5,0x8c,0x27,0x1f,0xd1,0x9f, - 0x80,0xac,0xc2,0xc8,0x27,0x9b,0x7a,0xa6,0xf4,0xdb,0x46,0xb9,0x3c,0xa7,0x93,0xaf, - 0xea,0xcf,0xa5,0x17,0x55,0xbe,0x00,0xff,0x2a,0x5f,0xcc,0xd9,0x8c,0xf0,0x9e,0x96, - 0x9b,0xfa,0xed,0x1f,0x23,0x1a,0x62,0xde,0xc7,0xfb,0x72,0x6a,0x90,0xfd,0x8a,0x9c, - 0x98,0x2b,0x73,0xf6,0xcd,0xcc,0x8d,0xd8,0x3f,0x42,0xce,0xe5,0x70,0xfe,0x18,0xef, - 0x69,0xa3,0xdf,0x42,0x0e,0xba,0x5f,0x4f,0xaf,0xeb,0x7e,0x2b,0x79,0x8a,0xfd,0xcb, - 0xbc,0x5b,0xfb,0x5d,0xcc,0x95,0xf6,0xcc,0x1e,0x93,0x8f,0xec,0x0f,0x84,0xdd,0xf3, - 0x73,0xc5,0xbe,0x13,0xfe,0x32,0xc6,0xfe,0x10,0x33,0xa8,0xfb,0x63,0x39,0x67,0x74, - 0x92,0x99,0x92,0x7a,0xce,0x12,0xbb,0x13,0x3e,0xce,0x72,0x0f,0xa5,0xc3,0x59,0xe5, - 0x85,0x3a,0x32,0xc4,0x17,0xac,0xcf,0x23,0x72,0x1e,0xb5,0xf4,0xe7,0x18,0x7a,0x70, - 0x89,0xcf,0x58,0xfa,0x6f,0x2c,0xd8,0x18,0xc3,0xfd,0x06,0x7a,0xfb,0x56,0xe4,0xb3, - 0xbd,0x07,0xe9,0x8d,0xdb,0xe9,0x9f,0xf1,0xf8,0x13,0x9d,0x89,0xe0,0x2f,0x78,0x1d, - 0xd9,0xdf,0x81,0xdd,0x44,0xec,0xa6,0x70,0x0f,0x54,0xd3,0x4b,0xb5,0xf4,0xc5,0x34, - 0xf0,0x4e,0xaf,0x33,0x38,0xd4,0x12,0x31,0xe9,0xa7,0xcb,0x3e,0xf3,0x5a,0xf2,0xf9, - 0xc3,0xeb,0xd7,0x70,0x6f,0xd4,0x52,0x8f,0xbc,0x2f,0xf5,0x76,0xc2,0xcd,0x2c,0x62, - 0xca,0xdf,0x73,0xf0,0x35,0x1b,0xbc,0xd1,0xb3,0x1f,0x66,0xc7,0x45,0x4c,0xf5,0x7e, - 0xf7,0x3e,0xd4,0x97,0x3c,0x2f,0x79,0x2e,0x44,0x6f,0x9a,0x8b,0x3a,0x79,0xd8,0xcc, - 0x30,0x35,0xcc,0xa3,0x86,0xb9,0xa6,0x86,0xf9,0xe0,0x5a,0x43,0x1d,0x98,0xd6,0xd0, - 0x60,0x6a,0xa8,0x0b,0x77,0x59,0x12,0x30,0x89,0x5b,0x6f,0x6a,0x58,0x48,0x6c,0x67, - 0x6a,0x58,0x04,0xae,0x35,0x8c,0x72,0x11,0x53,0x3d,0xa9,0x41,0x7d,0x35,0x98,0x1a, - 0xa6,0xbb,0xa8,0x53,0x8b,0x4d,0xbd,0xa9,0x61,0x09,0x35,0x2c,0x36,0x35,0xdc,0x0b, - 0xae,0x35,0x2c,0x05,0xd3,0x1a,0x9a,0x4c,0x0d,0x4b,0x43,0x3e,0x49,0xc0,0x24,0x6e, - 0x23,0x7d,0x24,0x71,0x97,0x11,0x7b,0xba,0xcb,0xce,0xaf,0xe4,0xa8,0xba,0x4d,0x26, - 0xc7,0x1a,0xf4,0x1a,0xb0,0x6b,0x24,0x1f,0x99,0xf1,0xfb,0x99,0x6f,0xed,0xb9,0x07, - 0xc8,0x79,0xa5,0xe9,0xb9,0x07,0xc1,0xb7,0xd0,0x73,0x0f,0x83,0xd5,0xb8,0x68,0x27, - 0x33,0xff,0x28,0x76,0xcd,0xd8,0x09,0xa7,0xab,0xc0,0x95,0xf7,0xc7,0xb1,0x4d,0x0c, - 0xb6,0x1a,0xcc,0x05,0x1e,0xf2,0xc3,0x7d,0xb1,0x06,0xdd,0xd5,0xf8,0xd0,0x18,0x4f, - 0x10,0xa3,0xc5,0xc4,0x58,0x0b,0xfe,0x90,0xaf,0x55,0xe6,0x6d,0x1d,0x35,0xad,0xe1, - 0x8e,0x59,0x6b,0xce,0x63,0x03,0xf6,0xeb,0xcd,0x79,0x3c,0x09,0xae,0xe7,0xf1,0x14, - 0x98,0x9e,0xc7,0x26,0x73,0x1e,0x22,0xdb,0xe8,0xd7,0x26,0x38,0xde,0x48,0x1d,0x72, - 0xe7,0x3c,0x4b,0xec,0x04,0xbb,0x3e,0xde,0xff,0xf4,0xef,0xe2,0xeb,0x3c,0x36,0xe7, - 0xc3,0x7d,0x13,0x63,0xfd,0x8c,0xdd,0x20,0x6c,0x2e,0x9b,0x58,0x22,0xbb,0xe0,0xd7, - 0x45,0xec,0x2e,0x86,0x3b,0xa9,0x20,0xc4,0xfa,0x15,0xbe,0x4a,0xb1,0x97,0xdf,0xd4, - 0x6d,0xe4,0x71,0x09,0x79,0x69,0xb8,0x47,0x23,0xf6,0x1b,0x78,0x19,0x3d,0xd2,0x87, - 0xcf,0x0b,0xc6,0xee,0x17,0x7c,0x95,0xe4,0xe8,0x48,0x4e,0x7f,0xfb,0x68,0x7d,0x60, - 0x97,0xc8,0x61,0x86,0x8b,0x7e,0x2f,0x62,0x7b,0x81,0xd9,0x91,0x33,0xa8,0x74,0x51, - 0xbe,0xce,0x9c,0xb5,0xd8,0x6c,0x86,0x23,0x47,0xbd,0x45,0xee,0xdf,0x1c,0x5d,0x21, - 0xe6,0x15,0xc3,0x91,0x28,0x6f,0x36,0x1c,0x0d,0x70,0x59,0x8e,0x44,0xe6,0xfc,0xca, - 0xb8,0x68,0x27,0x4f,0xe5,0x28,0xdf,0x65,0x39,0xda,0x9c,0xc3,0x51,0x81,0x8b,0x72, - 0xcb,0x51,0xa1,0x8b,0xb8,0x72,0x54,0x84,0x4f,0xf1,0xaf,0x76,0x69,0x72,0x29,0xc9, - 0xd1,0x91,0x9c,0x94,0x23,0xc1,0x94,0xa3,0x99,0x2e,0xfa,0x95,0xbc,0xd2,0xe4,0xaa, - 0x1c,0x8d,0x75,0x51,0x5e,0x49,0x9e,0xca,0xd1,0x16,0x38,0x4a,0x51,0x6f,0x59,0x0e, - 0x47,0xc5,0xc4,0x94,0xa7,0x72,0x74,0xbd,0x8b,0x76,0xca,0xd1,0x48,0xc3,0x91,0xc8, - 0x4a,0xfc,0x1a,0x86,0xdd,0x30,0xc3,0xd1,0x70,0xc3,0xd1,0x96,0x1c,0x8e,0x46,0xb8, - 0x28,0xb7,0x1c,0x95,0xba,0x88,0x2b,0x47,0x65,0xf8,0x2c,0x31,0x1c,0x0d,0x25,0x97, - 0x92,0x1c,0x9d,0x91,0x86,0xa3,0x32,0xc3,0xd1,0x2c,0x17,0xfd,0x4a,0x5e,0x43,0xc9, - 0x55,0x39,0xaa,0x72,0x51,0x2e,0x5c,0xa5,0xf0,0xa7,0xb3,0xb7,0x89,0x5e,0x14,0xbd, - 0x39,0xf4,0x5a,0x13,0x36,0x65,0x2e,0x3b,0xf3,0x2f,0x32,0xf3,0x5b,0xcd,0xcc,0x6f, - 0x03,0xd7,0x99,0x7f,0x09,0x4c,0x67,0xbe,0xcd,0xcc,0xa1,0xc8,0x5a,0xfd,0xda,0x49, - 0xdc,0x9d,0xe6,0x3e,0x79,0x0d,0xdf,0xbb,0x8c,0xef,0xd7,0xc1,0xd5,0xf7,0x1b,0x60, - 0xea,0xbb,0xdd,0xf8,0x16,0xd9,0x6e,0xbf,0xda,0xf1,0xbd,0xdb,0xf4,0xc1,0x9b,0xd4, - 0x25,0xdf,0x14,0x9f,0xe2,0xeb,0x2d,0xf0,0x3d,0x70,0xa1,0x76,0xed,0x70,0x21,0x3a, - 0x6f,0x13,0x73,0x27,0xfa,0xbb,0x89,0xdb,0x61,0xe2,0x8a,0xce,0x5e,0xbf,0x3a,0xb0, - 0xdf,0x6b,0xe2,0xbe,0x63,0xe2,0x2e,0xf1,0x5f,0x49,0xf2,0xfd,0xf5,0x2e,0xd8,0x1c, - 0x97,0xfd,0x66,0x49,0x71,0x5f,0x8b,0x7c,0x1f,0x76,0xba,0xda,0xbc,0x2f,0xc1,0xf7, - 0x63,0xbb,0x2f,0xf8,0x1a,0x10,0xce,0xea,0x3d,0x7c,0xed,0xe7,0xbb,0x29,0xcf,0x7c, - 0xdf,0x49,0x4d,0x9a,0x53,0x87,0x39,0xdf,0xf9,0xc4,0x6e,0xc7,0x7e,0x2f,0xba,0x6d, - 0xe8,0xb6,0x9a,0xfc,0xb7,0xff,0x47,0xfe,0xaf,0x5c,0x25,0xff,0x57,0xc8,0x73,0x07, - 0x3a,0xdb,0x4d,0x9e,0xaf,0x62,0xb3,0xe3,0x2a,0x79,0x6a,0xec,0x36,0x93,0xe7,0x3c, - 0x17,0x73,0xed,0xc0,0xbe,0x95,0x18,0x22,0x7b,0x1f,0xf9,0x81,0xf0,0xfb,0x13,0xbf, - 0x4b,0x0f,0x82,0x6b,0x3f,0x7d,0x48,0x3f,0x1d,0x32,0xfd,0xf4,0x11,0xb8,0xf6,0xd3, - 0xc7,0x60,0xda,0x4f,0x47,0xcc,0xb9,0x8a,0xec,0xb0,0x5f,0x47,0xc9,0xed,0xa8,0xf1, - 0xfd,0x19,0xbe,0x8f,0x19,0xdf,0x9f,0x83,0xab,0xef,0x2f,0xc0,0xd4,0x77,0x97,0xf1, - 0x2d,0xb2,0xe3,0x7e,0x9d,0xc0,0xf7,0x09,0xf3,0xbb,0xfc,0x35,0xbe,0x4f,0x9a,0xdf, - 0xe5,0x6f,0xc0,0xbf,0xe2,0x77,0xfe,0x5b,0xb0,0x16,0x13,0xef,0x3b,0xf0,0x95,0xc4, - 0xeb,0x36,0xf1,0x44,0x76,0xca,0xaf,0x6e,0xe2,0x9d,0xe2,0xf7,0x45,0x78,0x9b,0xe4, - 0x62,0x8e,0x07,0x93,0xec,0xb7,0x99,0xea,0x75,0x73,0x1e,0xa2,0x57,0xe7,0xa2,0xce, - 0x09,0x6c,0x4e,0x99,0x7c,0xbe,0x27,0x9f,0xc9,0x26,0x9f,0x1f,0xc0,0x35,0x9f,0x1e, - 0x93,0x8f,0xc8,0x4e,0xfb,0xd5,0x43,0x9c,0xd3,0x26,0x9f,0xc9,0xe4,0x53,0x67,0xee, - 0x29,0xd5,0xeb,0x31,0xf9,0xd4,0xbb,0xa8,0xd3,0x8d,0xcd,0x69,0x93,0xcf,0x8f,0xe4, - 0x73,0xc8,0xe4,0xf3,0x13,0xb8,0xe6,0xd3,0x6b,0xf2,0x11,0xd9,0x19,0xbf,0x7a,0x89, - 0x73,0xc6,0xe4,0x33,0xd5,0xc5,0xff,0x03,0xeb,0x5d,0xb6,0x5f,0x55,0xaf,0xd7,0xe4, - 0x73,0xb7,0x8b,0x3a,0x3d,0xd8,0x9c,0x41,0xb7,0x0b,0xdd,0xe3,0xcc,0x95,0xf4,0xca, - 0x97,0xf0,0x9d,0x36,0x71,0x26,0xba,0x2c,0x9e,0xe4,0xd8,0x76,0x99,0x38,0x0b,0x5c, - 0x8c,0xd5,0x8b,0xcd,0x71,0x74,0x8f,0xa0,0x7b,0x98,0xb9,0xeb,0x0c,0x77,0x5d,0xf4, - 0x77,0x90,0xb9,0x2b,0x60,0x56,0xd3,0x39,0x36,0x47,0x8c,0xff,0x06,0x17,0x63,0x74, - 0x61,0x2f,0xfe,0x66,0x7a,0x8b,0x73,0xc8,0xfe,0xf2,0x5d,0x32,0xd5,0xaf,0x7f,0x00, - 0x8c,0x93,0x3d,0xdd,0x98,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x68,0x96,0x55, + 0x18,0xc7,0xcf,0x79,0x9e,0xed,0xd9,0xd4,0x69,0x66,0x9a,0xf3,0x6d,0x6c,0xbe,0x65, + 0x6d,0xcd,0x97,0x6c,0x9a,0xfa,0xa8,0xcb,0x97,0x8d,0x9a,0xce,0x4d,0x0a,0xcc,0x4c, + 0x34,0x2b,0x35,0x9d,0xb5,0x05,0x45,0x8a,0x4e,0xdd,0x2a,0x1d,0x91,0xd2,0x87,0x28, + 0xcd,0x14,0x82,0x88,0xc2,0xc0,0x4a,0x3f,0xa4,0x95,0x23,0xcc,0xa2,0x5c,0x50,0x0e, + 0xca,0x85,0x7e,0xea,0x63,0x24,0x69,0xa9,0x11,0x75,0xae,0xfb,0xfc,0xae,0xed,0x72, + 0xf4,0xf2,0xc0,0xe1,0xbe,0xcf,0xff,0xba,0xfe,0xd7,0xcb,0xff,0xbc,0xdc,0xce,0x74, + 0x6a,0x4c,0x9e,0x73,0xde,0xf5,0x75,0xf9,0xae,0xde,0xbb,0xe4,0x77,0xa3,0x4b,0x39, + 0x79,0xed,0xe7,0x32,0xc9,0xb3,0xaa,0x66,0x69,0x4d,0x79,0xd3,0x53,0x6b,0xca,0xa7, + 0xde,0x39,0x49,0xec,0x03,0x5c,0x3a,0xf1,0x13,0xdb,0x0d,0x2e,0xcf,0xe5,0x84,0xa7, + 0x8c,0x8d,0xab,0xd6,0x35,0x08,0x3e,0x3e,0x8c,0x0b,0x61,0x0c,0x0c,0x7e,0x82,0xe7, + 0x49,0x8c,0xf0,0x36,0x3e,0x89,0x29,0x1c,0xe7,0xaa,0x5d,0xae,0x2b,0x8b,0xe9,0xdc, + 0x18,0x9e,0x8a,0x79,0xb0,0x7c,0x83,0xa5,0xc0,0x06,0x1a,0x2c,0x0d,0x36,0xd8,0x60, + 0x39,0x60,0x85,0x06,0xcb,0x05,0x1b,0x69,0xb0,0x0c,0x58,0xb1,0xc1,0xf2,0xc0,0xc6, + 0x1a,0x2c,0x1f,0x6c,0x82,0xc1,0xfa,0x80,0x95,0x19,0xac,0x2f,0xd8,0x24,0x83,0xf5, + 0x03,0x9b,0x6a,0xb0,0x02,0xb0,0xe9,0x06,0xeb,0x0f,0x36,0x2b,0xd1,0x29,0xdd,0xdd, + 0xaf,0x68,0xb6,0x3c,0x3c,0x47,0xa3,0x8f,0xce,0x4b,0xcc,0x5c,0x74,0x2e,0x62,0x7e, + 0x53,0x60,0xa5,0x12,0x7b,0x3a,0xd1,0x46,0xde,0x6f,0x0e,0x6f,0x19,0xfa,0x2c,0x0d, + 0xfe,0x19,0xf2,0xfd,0x74,0x78,0x5c,0x76,0x70,0xf0,0x18,0x60,0x70,0xd1,0xec,0x70, + 0xd5,0xaa,0xac,0xce,0x45,0xaf,0xd7,0x5e,0x1d,0x36,0x77,0x48,0x98,0x17,0x13,0x43, + 0xd6,0x66,0x68,0x98,0x97,0x30,0x4f,0x31,0x1f,0x8b,0xa6,0x39,0x09,0x9e,0xe3,0xc6, + 0xe1,0x2b,0xf8,0x4c,0xe6,0xe3,0x0d,0xff,0x16,0xfc,0x85,0x2f,0xf1,0x4b,0x89,0xe7, + 0x92,0x7e,0x06,0x26,0x1a,0x94,0x30,0x8a,0xbb,0xeb,0xff,0xef,0x51,0xdc,0xfd,0xcc, + 0x71,0xb7,0xb3,0x4e,0x65,0xe4,0x97,0x79,0x39,0x58,0x29,0xfd,0x4c,0xa4,0x1e,0xf1, + 0x9f,0x84,0xad,0xc4,0xd8,0x2b,0x4c,0x3f,0xd3,0xba,0xb9,0xd1,0x2e,0xcf,0x19,0xd4, + 0xab,0xfe,0xf3,0xd8,0x6b,0x3a,0x5f,0x8c,0xd6,0xd2,0xef,0xfd,0x70,0x25,0xde,0xb0, + 0x10,0x69,0x19,0xf3,0x94,0xbb,0xfe,0xc7,0x11,0x4c,0x72,0x3e,0xc0,0xfb,0x32,0x7a, + 0x90,0xf9,0xf2,0x5e,0x39,0x57,0xf4,0x9a,0xaf,0xe6,0x5c,0x08,0xff,0x61,0x6a,0x2e, + 0xa6,0x86,0x47,0x79,0x4f,0x1b,0xff,0xf5,0xd4,0xa0,0xf3,0x06,0xd6,0x45,0xfc,0x9f, + 0xa1,0x46,0xeb,0xdf,0xcc,0x39,0xd1,0xf9,0x7e,0xf6,0xb9,0xce,0x8f,0x70,0x66,0x74, + 0x7e,0xa2,0x97,0xe6,0xa7,0x39,0x03,0xba,0xc7,0xbe,0x31,0xf5,0xcb,0xfc,0xc7,0x64, + 0xd6,0x3c,0x47,0xea,0x3f,0x4f,0x6e,0xdd,0x43,0xe7,0xb9,0x57,0xd2,0xc6,0x7f,0x56, + 0x10,0x6c,0x7b,0x73,0xf3,0xcc,0xb2,0x50,0x95,0xf8,0x65,0x7d,0xc4,0xec,0x50,0xdf, + 0xd9,0xe1,0x7d,0xd3,0x5b,0x8d,0x73,0x74,0x3e,0x27,0xcc,0xf7,0xee,0x3c,0x90,0xad, + 0x08,0xab,0x96,0x62,0x6d,0x1c,0xf1,0xaf,0x04,0x44,0xd6,0x32,0xcb,0xde,0x9e,0xc0, + 0xfe,0xad,0x0d,0x79,0x64,0xef,0xde,0x0a,0x36,0xc1,0xac,0x5b,0x03,0xe7,0xe2,0x36, + 0xec,0x95,0x21,0x82,0xec,0xab,0xc9,0xec,0xbd,0x89,0xc4,0x13,0x9f,0x29,0xe0,0x3b, + 0x82,0x8f,0xcc,0xef,0x80,0x37,0x05,0xde,0x34,0xee,0x88,0x72,0xf6,0x61,0x96,0x3d, + 0x77,0x17,0xf8,0x3b,0xc1,0x67,0x40,0xa2,0x4b,0xc4,0x64,0x2f,0xfe,0x1e,0x2a,0xcf, + 0x52,0xcf,0xb5,0xe0,0x3f,0x93,0x3b,0x25,0x4b,0x3f,0xf2,0x5e,0x17,0x78,0xb2,0x0e, + 0x73,0xc9,0x29,0xbf,0xad,0xac,0x4d,0x25,0x78,0x7d,0x50,0x47,0x6a,0x1a,0xed,0x23, + 0xa6,0x7e,0x57,0x43,0x0c,0x8d,0x25,0xcf,0xcb,0x41,0x0b,0xf1,0x9b,0xeb,0xa3,0x4f, + 0x2e,0x9c,0x59,0xa6,0x87,0xf9,0xf4,0x30,0xcf,0xf4,0xb0,0x00,0x5c,0x7b,0x58,0x08, + 0xa6,0x3d,0x54,0x9b,0x1e,0x16,0x26,0xf7,0x9c,0x4b,0x30,0xc9,0x5b,0x65,0x7a,0xb8, + 0x97,0xdc,0xde,0xf4,0x50,0x03,0xae,0x3d,0x8c,0xf3,0x11,0x53,0x3f,0xe9,0x41,0x63, + 0x55,0x9b,0x1e,0x2a,0x7d,0xf4,0xc9,0xc2,0xa9,0x32,0x3d,0xd4,0xd2,0xc3,0x62,0xd3, + 0xc3,0x12,0x70,0xed,0xa1,0x0e,0x4c,0x7b,0x58,0x6a,0x7a,0xa8,0x4b,0xea,0x71,0x09, + 0x26,0x79,0xeb,0xd9,0x47,0x92,0xf7,0x3e,0x72,0x57,0xfa,0x9e,0xb3,0x2f,0x35,0xaa, + 0xef,0x52,0x53,0xe3,0xdd,0xf8,0x55,0xc3,0xab,0xa7,0x1e,0xb9,0x1f,0x1e,0xe4,0x6e, + 0xd0,0x3d,0xf7,0x10,0x35,0xaf,0x30,0x7b,0x6e,0x25,0x78,0x33,0x7b,0x6e,0x15,0x58, + 0x12,0x37,0x60,0x72,0x5f,0xac,0x81,0xb7,0x1a,0x9e,0x68,0xfa,0x08,0xb8,0xea,0xfe, + 0x18,0x5c,0x67,0xb0,0xb5,0x60,0x3e,0xd1,0x21,0x93,0xdc,0x35,0xeb,0xf0,0x5d,0x4b, + 0x0c,0xcd,0xf1,0x38,0x39,0xd6,0x9b,0x1c,0x1b,0xc0,0x57,0x86,0x5e,0xe5,0xae,0xdc, + 0x48,0x4f,0xeb,0xb8,0x9f,0x36,0x98,0xf5,0xd8,0x04,0xbf,0xc1,0xac,0xc7,0x13,0xe0, + 0xba,0x1e,0x4f,0x82,0xe9,0x7a,0x34,0x99,0xf5,0x10,0x5b,0x63,0x18,0xdb,0xd0,0x78, + 0x9b,0x89,0xbd,0x9d,0xd8,0xcd,0x26,0xf6,0x0e,0x70,0x8d,0xbd,0x13,0x4c,0x63,0xb7, + 0x9a,0xd8,0x62,0x6b,0x09,0xa3,0x95,0xd8,0x2d,0x68,0x24,0x71,0x9e,0xa7,0x2f,0xb9, + 0x5f,0xde,0x25,0xd6,0x0b,0xe0,0x33,0x58,0x77,0xe5,0xb5,0xb2,0xee,0xe2,0xb3,0x8b, + 0x9c,0xdb,0xf0,0x6f,0x21,0x6f,0x9b,0xc9,0x2b,0x3e,0xbb,0xc3,0x68,0x83,0xbf,0xdb, + 0xe4,0x7d,0xd1,0xe4,0xad,0x0d,0xb7,0xb3,0xdc,0xeb,0x2f,0x81,0x6d,0x34,0xf7,0x57, + 0x8a,0xb5,0x13,0xfb,0x1e,0x78,0x3a,0x9e,0x0b,0xb1,0x04,0xdf,0x0b,0x77,0x4f,0x12, + 0xab,0x4f,0xb2,0x56,0x2f,0x13,0x67,0x2f,0x77,0x68,0x2e,0xdf,0x90,0x34,0x3d,0x69, + 0x4d,0x6d,0xf4,0x24,0x9c,0x05,0x3e,0x72,0x5a,0xe1,0xef,0xc6,0xb7,0x09,0xdf,0x46, + 0x53,0xff,0xd3,0xff,0x50,0xff,0xb3,0xff,0x53,0xff,0x66,0x78,0x3a,0x5a,0xa8,0x7f, + 0x0b,0xdc,0xcd,0xa6,0xfe,0xad,0xc4,0xd9,0xf2,0x2f,0xf5,0x6b,0x4d,0x4d,0xa6,0xfe, + 0xf9,0x3e,0xf6,0xd0,0x06,0xbf,0x31,0xd9,0x6f,0xf1,0x5b,0xf1,0x0a,0xf6,0xd6,0x10, + 0x49,0xe6,0xfb,0xc0,0xb2,0xbe,0x67,0x9f,0xbd,0xce,0x3e,0xdb,0x6f,0xf6,0xd9,0x01, + 0x70,0xdd,0x67,0x6f,0x80,0xe9,0x3e,0x3b,0x64,0xd6,0x5b,0x6c,0x07,0xc3,0x38,0x44, + 0x6d,0x07,0xd1,0x4b,0xea,0x7e,0x93,0x9c,0x0e,0xde,0x35,0xde,0xff,0x08,0xef,0x12, + 0xeb,0x67,0x38,0xf2,0x3c,0x4e,0xae,0x5f,0xe0,0xf5,0x87,0x73,0xd5,0xe4,0x12,0xdb, + 0xc5,0x30,0x2e,0xc1,0xbb,0x94,0x9c,0x87,0x98,0xeb,0x37,0x78,0x85,0x2e,0xf6,0x9b, + 0x49,0xf8,0x11,0x97,0xef,0x6d,0x41,0xd0,0x2b,0x93,0xf0,0xe2,0x1a,0x0d,0xc7,0x3e, + 0x12,0x6d,0xaf,0x11,0xf3,0xa2,0xe1,0xff,0x4a,0x4c,0xf9,0x3e,0x5b,0x1f,0xa9,0xe9, + 0xaf,0x10,0xe5,0x0a,0xd8,0x65,0x62,0x2f,0xf4,0x31,0xfe,0x25,0xb8,0x17,0xb9,0xff, + 0x45,0xfb,0x52,0x1f,0xed,0xfb,0xcc,0x7d,0x25,0x9c,0xb7,0xd1,0xc8,0xd3,0x6f,0x81, + 0xbf,0x5e,0x23,0xe7,0x63,0x4e,0x79,0xaa,0x46,0x29,0x1f,0x79,0xaa,0x51,0x3f,0xdf, + 0xa3,0x91,0xd8,0xd2,0x61,0x64,0xe0,0xc9,0x53,0x35,0xca,0x87,0x67,0x35,0xea,0xe3, + 0x23,0x6e,0x35,0xea,0xeb,0x7b,0x34,0x12,0xbb,0x6a,0x54,0x40,0xcc,0xb4,0xef,0xe1, + 0xe7,0x12,0x53,0x35,0x52,0x1f,0xa9,0x49,0x35,0x12,0x4c,0x35,0xaa,0xf6,0x31,0xbe, + 0xd4,0x95,0x4b,0xad,0xaa,0x51,0xb9,0x8f,0xf6,0x52,0xf2,0xab,0x46,0xef,0xa1,0x51, + 0x8a,0x7e,0x8b,0x7a,0x69,0x34,0x88,0x9c,0x83,0x8c,0x46,0x83,0x7d,0xe4,0xa9,0x46, + 0xa3,0x8c,0x46,0x62,0x1b,0x12,0x46,0x21,0xbc,0x42,0xa3,0xd1,0x70,0x78,0x56,0xa3, + 0x11,0x3e,0xe2,0x56,0xa3,0x91,0x46,0xa3,0x11,0x46,0xa3,0x22,0x62,0x0e,0x31,0x1a, + 0x0d,0x25,0xa6,0x6a,0xa4,0x3e,0xa3,0x8c,0x46,0x45,0x46,0xa3,0x7b,0x7c,0x8c,0x2f, + 0x75,0x0d,0xa5,0x56,0xd5,0x68,0xb2,0x8f,0x76,0xd1,0x2a,0x45,0x4e,0x3d,0x7b,0x87, + 0xd8,0x8b,0xe2,0x57,0xc3,0x5e,0x6b,0x82,0x53,0x64,0xce,0xfc,0xfb,0x9c,0xf9,0x23, + 0xe6,0xcc,0x7f,0x00,0xae,0x67,0xfe,0x43,0x30,0x3d,0xf3,0xc7,0xcc,0x39,0x14,0xdb, + 0xd1,0xe4,0xcc,0xc6,0xbc,0xc7,0xcd,0x77,0xeb,0x63,0x62,0x9f,0x30,0xb1,0x3f,0x01, + 0xd7,0xd8,0x9f,0x82,0x69,0xec,0x76,0x13,0x5b,0x6c,0x27,0xc3,0x38,0x45,0xec,0x53, + 0xe6,0x7b,0xfd,0x05,0xb1,0x4f,0x9b,0xef,0xf5,0x97,0xe0,0x9f,0xf3,0xfd,0xff,0x0a, + 0x6c,0xbd,0xc9,0xf7,0x35,0xf8,0x0a,0xf2,0x75,0x98,0x7c,0x62,0x3b,0x13,0x46,0x07, + 0xf9,0xce,0x98,0x33,0x5b,0xe1,0xe3,0xdf,0x05,0x35,0xe6,0xdf,0x6c,0xea,0xd7,0x61, + 0xb4,0x5e,0xe4,0xa3,0xcf,0x29,0x38,0x67,0x4c,0x3d,0xdf,0x52,0x4f,0x85,0xa9,0xe7, + 0x3b,0x70,0xad,0xa7,0xd3,0xd4,0x23,0xb6,0xb3,0x61,0x74,0x92,0xe7,0xac,0xa9,0x67, + 0x3a,0xf5,0x2c,0x32,0x6b,0xaf,0x7e,0x9d,0xa6,0x9e,0xc5,0x3e,0xfa,0x74,0xc0,0x39, + 0x6b,0xea,0xf9,0x9e,0x7a,0x8e,0x98,0x7a,0x7e,0x00,0xd7,0x7a,0xba,0x4c,0x3d,0x62, + 0x3b,0x17,0x46,0x17,0x79,0xce,0x99,0x7a,0x66,0xf8,0xf8,0x77,0x92,0xe4,0xd3,0x6f, + 0x94,0xfa,0x75,0x99,0x7a,0xea,0x7c,0xf4,0xe9,0x84,0x73,0x0e,0xdf,0x76,0x7c,0x4f, + 0x9a,0xb3,0xfe,0x19,0x7a,0xa7,0x4d,0x9e,0xa9,0xbe,0x07,0x77,0xbd,0xb8,0xed,0x26, + 0xcf,0x12,0x1f,0x73,0x75,0xc1,0x39,0x89,0xef,0x31,0x7c,0x8f,0xf2,0xad,0x15,0xdf, + 0x8f,0x88,0x27,0x43,0xff,0x6f,0x28,0x65,0xbe,0xb5,0xca,0x39,0x66,0xe2,0xd7,0xfa, + 0x98,0xa3,0x1d,0xbe,0xc4,0x9b,0x1d,0x18,0x17,0xb0,0xfd,0x19,0x76,0xc9,0xf4,0x30, + 0xfe,0x06,0xd3,0x23,0xff,0xa6,0xcc,0x12,0x00,0x00 }; // Generated from: @@ -120,8 +121,8 @@ constexpr uint8_t kImageCopy_frag_00000022[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform texture3D src; -// layout(location = 0)out uvec4 dst; +// layout(set = 0, binding = 0)uniform utexture3D src; +// layout(location = 0)out vec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -146,16 +147,16 @@ constexpr uint8_t kImageCopy_frag_00000022[] = { // bool rotateXY; // } params; // -// float linearToSRGB(float linear) +// float sRGBToLinear(float sRGB) // { // -// if(linear <= 0.0031308) +// if(sRGB <= 0.04045) // { -// return linear * 12.92; +// return sRGB / 12.92; // } // else // { -// return pow(linear,(1.0f / 2.4f))* 1.055f - 0.055f; +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); // } // } // @@ -178,15 +179,7 @@ constexpr uint8_t kImageCopy_frag_00000022[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); -// -// if(params . srcIsSRGB) -// { -// -// srcValue . r = linearToSRGB(srcValue . r); -// srcValue . g = linearToSRGB(srcValue . g); -// srcValue . b = linearToSRGB(srcValue . b); -// } +// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { @@ -197,9 +190,17 @@ constexpr uint8_t kImageCopy_frag_00000022[] = { // srcValue . rgb /= srcValue . a; // } // -// srcValue *= 255.0; +// vec4 dstValue = vec4(srcValue); // -// uvec4 dstValue = uvec4(srcValue); +// dstValue /= 255.0; +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc new file mode 100644 index 0000000000000000000000000000000000000000..9a9e7c498301134c1eb21e84e2cb521fc9ad5722 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc @@ -0,0 +1,233 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.00000023.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_00000023[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x4c,0x96,0x55, + 0x18,0xc7,0xef,0xf3,0x3c,0x0f,0x0f,0xbe,0x61,0x36,0x5f,0x82,0x24,0x81,0x54,0xb2, + 0x20,0x34,0xf2,0x1d,0x1f,0x5f,0x53,0x68,0x2a,0x08,0x2c,0x9b,0x66,0x94,0x65,0x29, + 0x95,0x52,0xc2,0x87,0x5a,0x5a,0xa8,0xc1,0x2a,0x59,0x4b,0xd7,0x87,0x6a,0x69,0xe9, + 0xd6,0xda,0xaa,0xb9,0x36,0x2b,0xfd,0x90,0x56,0xb2,0xc6,0xac,0x95,0xb4,0x95,0x6c, + 0x25,0x4d,0xbf,0xf4,0xb5,0xe5,0x62,0x9a,0xae,0xd5,0xb9,0xee,0xf3,0xbb,0x78,0xae, + 0x58,0x2f,0x6c,0x67,0xf7,0x7d,0xfd,0xaf,0xf7,0xff,0xb9,0xce,0xb9,0x81,0x64,0x62, + 0x72,0x6e,0x14,0xb9,0x68,0x44,0x34,0x2c,0x6a,0x74,0x51,0xfc,0x73,0x6d,0x94,0x88, + 0x1c,0xcf,0x4a,0xff,0x1c,0x19,0xa5,0x63,0xb9,0x7a,0x55,0xe3,0xaa,0x8a,0xd6,0xb6, + 0x4d,0x15,0x33,0x67,0xcd,0x10,0xbb,0xd1,0x51,0x32,0xb6,0x17,0xdd,0x35,0x51,0x6e, + 0x94,0xf2,0x4f,0x59,0x5b,0x37,0x36,0x6f,0x13,0xbc,0xd4,0xaf,0x0b,0x7e,0x8d,0xf1, + 0x76,0x82,0xe7,0x4a,0x0c,0xff,0x56,0x1a,0xc7,0x14,0x9f,0x28,0xaa,0x89,0x72,0xa2, + 0xf2,0x90,0x36,0x9a,0xcc,0x53,0x31,0x07,0x36,0xcc,0x60,0x09,0xb0,0x31,0x06,0x4b, + 0x82,0x8d,0x33,0x58,0x0a,0x2c,0xdf,0x60,0x39,0x60,0x85,0x06,0x4b,0x83,0x15,0x1b, + 0x2c,0x17,0x6c,0x8a,0xc1,0x86,0x81,0x4d,0x33,0xd8,0x70,0xb0,0x72,0x83,0x8d,0x00, + 0x9b,0x61,0xb0,0x91,0x60,0x33,0x0d,0x36,0x0a,0x6c,0xae,0xc1,0xf2,0xc0,0x16,0xc4, + 0x3c,0x25,0x07,0xfb,0x15,0xce,0x36,0xf8,0xe7,0x8d,0xf0,0xa3,0x72,0x89,0x91,0x85, + 0xe7,0x49,0xc8,0x63,0xbd,0x57,0x22,0xd6,0x27,0x63,0x6e,0xe4,0x7d,0x82,0x7f,0x4b, + 0xd3,0x67,0x99,0xb7,0x4f,0x93,0xef,0xe7,0x23,0x53,0x33,0xe3,0xbc,0xc5,0x68,0x83, + 0x0b,0x67,0x47,0xaa,0x37,0x66,0x54,0x16,0xbe,0x5e,0x7f,0xad,0x60,0xf1,0x78,0x2f, + 0x17,0x13,0x43,0xf6,0xe6,0x3a,0x2f,0x97,0x20,0x27,0x90,0xa7,0xc0,0x69,0x2a,0xc6, + 0x53,0xd1,0x54,0x6c,0x05,0xaf,0x42,0x2e,0x35,0xfe,0x37,0x61,0x2f,0xfe,0x12,0xbf, + 0x8c,0x78,0x51,0xdc,0xcf,0x98,0x98,0x83,0x12,0x56,0xf1,0x60,0xfd,0xff,0xbd,0x8a, + 0x07,0x9f,0xa9,0xe8,0x56,0xf6,0xa9,0x9c,0xfc,0x22,0x57,0x80,0x95,0xd1,0xcf,0x74, + 0xea,0x11,0xfb,0x19,0xe8,0x4a,0x8c,0x7e,0xb6,0xe9,0x67,0xce,0xa0,0x6f,0xd0,0xcb, + 0x73,0x3e,0xf5,0xaa,0xfd,0x32,0x66,0x4d,0xe5,0x5a,0xb8,0x96,0x7e,0xd7,0xe2,0x2b, + 0xf1,0x0a,0x7c,0xa4,0x75,0xc8,0x1c,0xbd,0xc1,0x1f,0x95,0x27,0xfa,0x7d,0x5b,0xef, + 0x9f,0xeb,0xc8,0x7f,0x0f,0xf8,0x7a,0xfa,0x11,0x79,0xc3,0x90,0xfc,0x4d,0x43,0xe4, + 0x66,0xf8,0x15,0xff,0x47,0xa8,0xbf,0xd8,0xe8,0x5b,0xd8,0x03,0xa9,0xef,0x29,0xea, + 0x49,0x1a,0xfd,0x2e,0xce,0x84,0xca,0x07,0x98,0x69,0x95,0x8f,0x72,0x3e,0x54,0x3e, + 0x39,0x84,0xdf,0xd3,0xcc,0xbb,0xce,0xd3,0xb7,0xa6,0x3e,0x91,0x7f,0x8a,0xa5,0xf6, + 0x45,0x52,0xdf,0x79,0x72,0xeb,0xbc,0x9c,0xe7,0x0e,0x49,0x1a,0xfb,0x8c,0x27,0x67, + 0x57,0x7b,0x7b,0x55,0xb9,0xaf,0x4a,0xec,0x16,0xba,0x80,0xd9,0xa5,0xb6,0x8b,0xfc, + 0x7b,0xcb,0x3b,0xdb,0x17,0xa9,0xbc,0xd8,0xcb,0xfb,0xf6,0x1c,0xcc,0xcc,0xf6,0x3b, + 0x94,0x60,0x1f,0x22,0xe2,0x5f,0xf6,0x88,0xec,0x5b,0x86,0x39,0x9e,0xc6,0xac,0xd6, + 0xf9,0x3c,0x32,0xa7,0x37,0x83,0x4d,0x33,0x7b,0xb4,0x8d,0x33,0x70,0x0b,0xfa,0x25, + 0x3e,0x82,0xcc,0xd0,0x6d,0xcc,0xd9,0x74,0xe2,0x89,0x4d,0x25,0xf8,0x6e,0x6f,0x23, + 0xf2,0xed,0xf8,0x55,0xe2,0x37,0x87,0xfb,0xa0,0x82,0x99,0xcb,0x30,0x5f,0xf3,0xc0, + 0xdf,0xf3,0x36,0xa3,0x63,0x5e,0x02,0x26,0x73,0x77,0xc9,0x57,0x9e,0xa1,0x9e,0x2b, + 0xde,0xbe,0x8a,0xfb,0x23,0x43,0x3f,0xf2,0x5e,0xef,0xfd,0x64,0x1f,0x16,0x93,0x53, + 0x7e,0x9e,0x61,0x6f,0x96,0x80,0x37,0x78,0x76,0xa4,0xa6,0xc9,0x2e,0x60,0x6a,0xf7, + 0xbb,0x8f,0xa1,0xb1,0xe4,0x39,0xe0,0xb9,0x10,0xbb,0x25,0x2e,0xd8,0xe4,0xe0,0xb3, + 0xc0,0xf4,0x70,0x07,0x3d,0x2c,0x33,0x3d,0x2c,0x07,0xd7,0x1e,0x56,0x80,0x69,0x0f, + 0x35,0xa6,0x87,0x15,0xf1,0x9d,0x16,0xc5,0x98,0xe4,0xad,0x36,0x3d,0xac,0x24,0xb7, + 0x33,0x3d,0xac,0x02,0xd7,0x1e,0x4a,0x5d,0xc0,0xd4,0x4e,0x7a,0xd0,0x58,0x35,0xa6, + 0x87,0xa5,0x2e,0xd8,0x64,0xf0,0xa9,0x36,0x3d,0xd4,0xd1,0x43,0xad,0xe9,0x61,0x0d, + 0xb8,0xf6,0x50,0x0f,0xa6,0x3d,0x34,0x9a,0x1e,0xea,0xe3,0x7a,0xa2,0x18,0x93,0xbc, + 0x0d,0xcc,0x91,0xe4,0xbd,0x8b,0xdc,0x4b,0x5d,0xf6,0x9c,0x4b,0x8d,0x6a,0xdb,0x68, + 0x6a,0x5c,0x86,0x5d,0x0d,0x7e,0x0d,0xd4,0x23,0xe7,0xff,0x5e,0xce,0xbe,0xce,0xdc, + 0x7d,0xd4,0xdc,0x64,0x66,0xee,0x7e,0xf0,0x76,0x66,0xee,0x01,0x30,0x89,0xdb,0xc2, + 0xfd,0xfb,0x20,0xf8,0x26,0x2f,0xcb,0x3d,0xf3,0x10,0xb1,0x37,0xe3,0xf3,0x30,0x58, + 0x53,0x94,0xf5,0xd9,0x0c,0xfe,0xbc,0xb7,0x11,0x79,0x0b,0x71,0x36,0x53,0x8f,0xdc, + 0x33,0x8f,0x52,0x4f,0x33,0xf5,0xc8,0x5e,0x3d,0x06,0xde,0xc2,0x79,0xdc,0x0a,0x76, + 0xb7,0xef,0x77,0x6d,0x7c,0x9e,0x42,0xee,0x2d,0x9c,0xaf,0xad,0x66,0x4f,0x1e,0x27, + 0x5e,0x8b,0xd9,0x93,0x27,0xc0,0x75,0x4f,0xb6,0x83,0xe9,0x9e,0xb4,0x99,0x3d,0x11, + 0x5d,0x6b,0xcc,0x45,0xe0,0xb9,0xdd,0xc4,0xde,0x4d,0xec,0x5d,0x26,0xf6,0x1e,0x70, + 0x8d,0xfd,0x1c,0x98,0xc6,0xee,0x34,0xb1,0x45,0xd7,0xe1,0x57,0x27,0xb1,0x3b,0x98, + 0xd9,0xb2,0x98,0xa3,0xd0,0x97,0xdc,0x31,0xef,0x13,0xeb,0x05,0xf0,0xf9,0xec,0xbd, + 0xfa,0x75,0xb2,0xf7,0x62,0xf3,0x22,0x39,0xdb,0xb1,0xef,0x20,0x6f,0x97,0xc9,0x2b, + 0x36,0x7b,0xfd,0xea,0xc2,0x7f,0xaf,0xc9,0xfb,0x92,0xc9,0x5b,0xe7,0x6f,0x68,0xb9, + 0xdb,0x5f,0x06,0xdb,0x66,0xee,0xb0,0x44,0x3c,0xc7,0xe9,0x58,0xbf,0x0f,0x3f,0x5d, + 0x9d,0x3e,0x96,0xe0,0xfb,0xf1,0xdd,0x17,0xc7,0x1a,0x1e,0xef,0xd5,0x2b,0xc4,0xd9, + 0xcf,0x3d,0x9a,0xc3,0x77,0x24,0x49,0x4f,0x5a,0x53,0x17,0x3d,0x89,0xcf,0x0a,0x17, + 0x7c,0x3a,0xf1,0xdf,0x8b,0x6d,0x1b,0xb6,0xad,0xa6,0xfe,0x27,0xff,0xa1,0xfe,0xa7, + 0xff,0xa7,0xfe,0x1d,0xf8,0xe9,0x7a,0x8e,0xfa,0x77,0xe2,0xbb,0xc3,0xd4,0xff,0x2c, + 0x71,0x76,0xfe,0x4b,0xfd,0x5a,0x53,0x9b,0xa9,0x7f,0xb9,0x0b,0x3d,0x74,0xe1,0xdf, + 0x1a,0xcf,0x5f,0xf8,0x5e,0xbc,0x8a,0xbe,0xc3,0x47,0x12,0xf9,0x0d,0xb0,0x85,0x2e, + 0x3b,0x67,0x07,0x99,0xb3,0x03,0x66,0xce,0xde,0x04,0xd7,0x39,0x7b,0x0b,0x4c,0xe7, + 0xec,0xb0,0xd9,0x6f,0xd1,0x1d,0xf2,0xeb,0x30,0xb5,0x1d,0x82,0x2f,0xa9,0xfb,0x6d, + 0x72,0x46,0xf8,0x5d,0xe5,0xfd,0xaa,0x7f,0x97,0x58,0xbf,0xe0,0x23,0xcf,0x4f,0xc8, + 0xf5,0x2b,0x7e,0x79,0xf8,0x5c,0x31,0xb9,0x44,0x77,0x31,0xee,0x3d,0xf8,0x0d,0xc4, + 0xe7,0x23,0xe4,0xba,0x84,0x5f,0x7e,0x14,0xfa,0x4d,0xc7,0x36,0x01,0x97,0x6f,0xee, + 0x28,0xcf,0x57,0x3a,0xe6,0x31,0xec,0xd1,0xf5,0xe8,0x0b,0xe1,0xf6,0x2a,0x31,0x2f, + 0x1a,0xff,0xdf,0x88,0x29,0xdf,0x68,0x6b,0x23,0x35,0xfd,0xe9,0xa3,0x5c,0x06,0x1b, + 0x20,0x76,0xb5,0x0b,0xf1,0x07,0xf0,0xbd,0xc8,0x37,0x40,0xb8,0x2f,0x77,0x41,0xaf, + 0x7c,0x28,0x47,0xef,0xc2,0x91,0xa3,0xdf,0x3c,0xf7,0x77,0x8e,0x9c,0x0b,0x39,0xe5, + 0xa9,0x1c,0x25,0x5d,0xf0,0x53,0x8e,0x46,0xb9,0x2c,0x47,0xa2,0x4b,0xf9,0x95,0x8b, + 0x9f,0x3c,0x95,0xa3,0xe1,0xf8,0x59,0x8e,0x46,0xb8,0x80,0x5b,0x8e,0x46,0xba,0x2c, + 0x47,0xa2,0x57,0x8e,0xf2,0x88,0x99,0x72,0x59,0xff,0x34,0x31,0x95,0x23,0xb5,0x91, + 0x9a,0x94,0x23,0xc1,0x94,0xa3,0x3b,0x5d,0x88,0x2f,0x75,0xa5,0xa9,0x55,0x39,0x9a, + 0xee,0x82,0xbe,0x9c,0xfc,0xca,0xd1,0x07,0x70,0x94,0xa0,0xdf,0xa2,0x21,0x1c,0x8d, + 0x25,0xe7,0x58,0xc3,0xd1,0x78,0x17,0xfc,0x94,0xa3,0x49,0x86,0x23,0xd1,0x4d,0xf0, + 0xab,0x00,0xbf,0x02,0xc3,0xd1,0x44,0xfc,0x2c,0x47,0x85,0x2e,0xe0,0x96,0xa3,0x1b, + 0x0c,0x47,0x85,0x86,0xa3,0x22,0x62,0x4e,0x30,0x1c,0xe5,0x13,0x53,0x39,0x52,0x9b, + 0x49,0x86,0xa3,0x22,0xc3,0xd1,0x4a,0x17,0xe2,0x4b,0x5d,0xf9,0xd4,0xaa,0x1c,0x55, + 0xba,0xa0,0x17,0xae,0x12,0xe4,0xd4,0xb3,0x77,0x98,0x59,0x14,0xbb,0xd5,0xcc,0x5a, + 0x1b,0x3e,0x45,0xe6,0xcc,0x7f,0xc8,0x99,0x3f,0x6a,0xce,0xfc,0x47,0xe0,0x7a,0xe6, + 0x3f,0x06,0xd3,0x33,0x7f,0xdc,0x9c,0x43,0xd1,0x1d,0xf3,0xeb,0x04,0x79,0x4f,0x98, + 0xef,0xd6,0xa7,0xc4,0x3e,0x69,0x62,0x7f,0x06,0xae,0xb1,0x3f,0x07,0xd3,0xd8,0xdd, + 0x26,0xb6,0xe8,0x4e,0xf9,0xd5,0x43,0xec,0x1e,0xf3,0xfd,0xfe,0x92,0xd8,0xa7,0xcd, + 0xf7,0xfb,0x2b,0xf0,0x1e,0x7e,0x1f,0xfb,0x1a,0xac,0xd9,0xe4,0xfb,0x06,0xbc,0x89, + 0x7c,0xbd,0x26,0x9f,0xe8,0xce,0xf8,0xd5,0x4b,0xbe,0x33,0xe6,0xcc,0xce,0x71,0xe1, + 0x6f,0x83,0xd5,0xe6,0xf7,0x36,0xb5,0xeb,0x35,0x5c,0xd7,0xba,0x60,0xd3,0x83,0xcf, + 0x19,0x53,0xcf,0x77,0xd4,0x33,0xdb,0xd4,0xf3,0x3d,0xb8,0xd6,0xd3,0x67,0xea,0x11, + 0xdd,0x59,0xbf,0xfa,0xc8,0x73,0xd6,0xd4,0x33,0x8f,0x7a,0x6a,0xcd,0xde,0xab,0x5d, + 0x9f,0xa9,0xa7,0xce,0x05,0x9b,0x5e,0x7c,0xce,0x9a,0x7a,0x7e,0xa0,0x9e,0xa3,0xa6, + 0x9e,0x1f,0xc1,0xb5,0x9e,0x7e,0x53,0x8f,0xe8,0xce,0xf9,0xd5,0x4f,0x9e,0x73,0xa6, + 0x9e,0x2a,0x17,0xfe,0x56,0x92,0x7c,0xfa,0x8d,0x52,0xbb,0x7e,0x53,0x4f,0x83,0x0b, + 0x36,0x7d,0xf8,0x9c,0xc3,0xb6,0x1b,0xdb,0x53,0xe6,0xac,0x7f,0x01,0xdf,0x49,0x93, + 0x67,0x96,0xcb,0xe2,0xd1,0x10,0xdf,0x6e,0x93,0xa7,0xde,0x85,0x5c,0xfd,0xf8,0x9c, + 0xc2,0xf6,0x38,0xb6,0xc7,0xf8,0xd6,0x4e,0x89,0xbf,0x37,0x21,0x9e,0x2c,0xfd,0x5f, + 0x50,0xc2,0x7c,0x6b,0xd5,0xe7,0xb8,0x89,0xbf,0xc6,0x85,0x1c,0xdd,0xf8,0x4b,0xbc, + 0x85,0xde,0xe3,0x02,0xba,0x3f,0xfc,0x94,0xcc,0xf5,0xeb,0x2f,0x75,0x22,0xb4,0x0d, + 0xc4,0x12,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform usampler2D src; +// layout(location = 0)out vec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// float sRGBToLinear(float sRGB) +// { +// +// if(sRGB <= 0.04045) +// { +// return sRGB / 12.92; +// } +// else +// { +// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); +// } +// } +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// uvec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// vec4 dstValue = vec4(srcValue); +// +// dstValue /= 255.0; +// +// if(params . dstIsSRGB) +// { +// +// dstValue . r = sRGBToLinear(dstValue . r); +// dstValue . g = sRGBToLinear(dstValue . g); +// dstValue . b = sRGBToLinear(dstValue . b); +// } +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc index e5f4eb43bbb4d6bd011c5aedd766593055801d7d..fab465c626a574091aa2f7c2cb3a196ffd88116e 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc @@ -10,109 +10,79 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000024[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x4c,0x96,0x55, - 0x18,0xc7,0xef,0xf3,0x3c,0xf0,0x80,0xf8,0x12,0xe5,0x4b,0xa2,0xac,0x41,0xa8,0x69, - 0x12,0x9a,0x19,0x9a,0xf8,0x08,0xa6,0x09,0x53,0x12,0x5f,0x56,0x9b,0x19,0x39,0xcc, - 0x4a,0x4d,0xb1,0xa0,0xb5,0x74,0x69,0x28,0x99,0xb2,0x96,0xce,0x0f,0x7d,0xd0,0x4a, - 0xb7,0xbe,0xf8,0xa1,0xe9,0xac,0xf4,0x43,0x6a,0xc9,0x9a,0xd3,0x56,0xd2,0x56,0xb2, - 0x95,0x34,0xfd,0xd8,0xa7,0x96,0xcb,0x65,0x52,0x2d,0xeb,0x5c,0xe7,0xfc,0x2e,0xb8, - 0x62,0xbd,0xb0,0x9d,0xdd,0xf7,0xf9,0x9f,0xeb,0x7f,0xbd,0xfc,0xcf,0x75,0xce,0x0d, - 0xa4,0x53,0x65,0x79,0x49,0xe2,0x92,0x82,0x24,0x3f,0x59,0xe2,0x92,0xf0,0x73,0x6b, - 0x92,0x4a,0xe4,0x75,0x70,0x92,0x09,0xcf,0xda,0xfa,0xe5,0xf5,0x15,0xad,0x2f,0xac, - 0xa9,0x98,0x7e,0xff,0x54,0x59,0x1f,0x96,0xa4,0x83,0x9d,0xac,0xdd,0x92,0xe4,0x25, - 0x39,0xfe,0x29,0x63,0x63,0xd3,0xba,0x66,0xc1,0x27,0xf8,0x71,0xc5,0x8f,0x42,0x6f, - 0x27,0x78,0x9e,0xf8,0xf0,0x6f,0x13,0x82,0x4f,0xe1,0x24,0x49,0x5d,0x92,0x9b,0x94, - 0xc7,0x70,0x49,0x19,0x4f,0xc5,0x1c,0x58,0xbe,0xc1,0x52,0x60,0x85,0x06,0x4b,0x83, - 0x8d,0x30,0x58,0x0e,0xd8,0x68,0x83,0xe5,0x82,0x15,0x1b,0x2c,0x03,0x56,0x62,0xb0, - 0x3c,0xb0,0x71,0x06,0xcb,0x07,0x9b,0x68,0xb0,0x41,0x60,0xe5,0x06,0x2b,0x00,0x9b, - 0x6a,0xb0,0xc1,0x60,0xd3,0x0d,0x36,0x04,0x6c,0xa6,0xc1,0x86,0x82,0xcd,0x0e,0x3a, - 0xa5,0xfb,0xea,0x15,0xcd,0x56,0xfa,0xe7,0x9d,0xe8,0xa3,0xf3,0x52,0x33,0x17,0x9d, - 0xef,0x60,0x3e,0xdc,0xb3,0x52,0x61,0x3d,0x1d,0xb4,0x91,0xf7,0x51,0xfe,0x2d,0x43, - 0x9d,0x93,0xbd,0x7d,0x86,0x78,0xdf,0x1f,0x1d,0x9f,0x1d,0xe1,0x2d,0x86,0x19,0x5c, - 0x34,0x3b,0x5a,0xdb,0x94,0xd5,0xb9,0xe8,0x75,0x60,0x7f,0x51,0xcd,0x48,0x3f,0x2f, - 0xc1,0x87,0xec,0xcd,0xed,0x7e,0x5e,0xca,0x3c,0xc5,0x7c,0x1c,0x9a,0xe6,0x04,0x3c, - 0x27,0x19,0x8f,0xad,0xe0,0x55,0xcc,0x27,0x18,0xfe,0x5d,0xd8,0x0b,0x5f,0xfc,0x4f, - 0xc6,0x5f,0x12,0xea,0x29,0x0c,0x1a,0x94,0x32,0x4a,0xfa,0xf2,0xff,0xef,0x51,0xd2, - 0xf7,0xcc,0x49,0xee,0x61,0x9f,0xca,0x89,0x2f,0xf3,0x0a,0xb0,0xc9,0xd4,0x33,0x85, - 0x7c,0xc4,0x7e,0x2a,0x6b,0xa5,0x66,0xbd,0xd2,0xd4,0x33,0xa3,0x8f,0x1b,0xd7,0xe5, - 0x39,0x8b,0x7c,0xd5,0x7e,0x1e,0xbd,0xa6,0xf3,0xc5,0x68,0x2d,0xf5,0x3e,0x4a,0x7e, - 0xe2,0xaf,0xc8,0x7b,0x5a,0x61,0xf4,0xb3,0x3f,0x1c,0xc1,0x10,0xf3,0x31,0xde,0x57, - 0x50,0x83,0xcc,0x57,0x0e,0x88,0xd9,0x38,0x60,0xbe,0x9a,0x73,0x21,0xfc,0x27,0xc9, - 0xb9,0x84,0x1c,0x9e,0xe6,0x3d,0x6d,0xec,0xd7,0x93,0x83,0xce,0x9b,0xd9,0x17,0x9d, - 0x6f,0xe3,0x5c,0xe8,0xfc,0x00,0x7d,0xad,0xf3,0x63,0x9c,0x11,0x9d,0x9f,0x1a,0xa0, - 0xf1,0x39,0x7a,0x5e,0x7b,0xea,0x4b,0x93,0xaf,0xcc,0xbf,0x0b,0xb3,0xb6,0x6a,0xc9, - 0xf7,0x32,0xb9,0x69,0xcf,0x5c,0xe6,0x1e,0x49,0x1b,0xfb,0x59,0x5e,0xa0,0xed,0x6d, - 0x6d,0x55,0xe5,0x3e,0xab,0x60,0xe7,0x22,0x66,0x87,0xda,0xce,0xf6,0xef,0x9b,0x0e, - 0xb7,0x54,0xeb,0x3c,0xeb,0xe7,0xfb,0xda,0x0f,0x66,0x2b,0xfd,0x2e,0xa5,0xd8,0x8b, - 0x04,0xff,0xbd,0x1e,0x91,0xbd,0xcb,0xd2,0xcb,0x13,0xe9,0xd7,0x06,0x1f,0x47,0x7a, - 0x75,0x12,0xd8,0x44,0xb3,0x4f,0xcd,0x9c,0x83,0xbb,0x59,0x9f,0xeb,0x3d,0x48,0x1f, - 0xdd,0x4b,0xaf,0x4d,0xc1,0x9f,0xd8,0x4c,0x03,0xdf,0xe1,0x6d,0x64,0x7e,0x1f,0xbc, - 0x69,0xf0,0x66,0x70,0x27,0x54,0xd0,0x77,0x59,0x7a,0xec,0x01,0xf0,0xf7,0xbc,0xcd, - 0xb0,0xa0,0x4b,0xc4,0xa4,0xf7,0x6e,0xf8,0xcc,0xb3,0xe4,0xf3,0x9b,0xb7,0xaf,0xe2, - 0x0e,0xc9,0x52,0x8f,0xbc,0x2f,0xf5,0x3c,0xd9,0x87,0x1a,0x62,0x26,0x61,0x4f,0xe3, - 0xde,0xcc,0x05,0x5f,0xe6,0xd5,0x09,0xe7,0xcc,0x45,0x4c,0xed,0x7e,0xf5,0x3e,0xd4, - 0x97,0x3c,0xaf,0x7b,0x2d,0xc4,0x6e,0x8e,0x8b,0x36,0xb9,0x70,0x66,0x9b,0x1a,0xe6, - 0x53,0xc3,0x3c,0x53,0xc3,0x43,0xe0,0x5a,0xc3,0x02,0x30,0xad,0xa1,0xce,0xd4,0xb0, - 0x20,0xdc,0x6b,0x49,0xc0,0x24,0x6e,0xad,0xa9,0x61,0x11,0xb1,0x9d,0xa9,0xa1,0x1e, - 0x5c,0x6b,0x28,0x73,0x11,0x53,0x3b,0xa9,0x41,0x7d,0xd5,0x99,0x1a,0xaa,0x5d,0xb4, - 0xc9,0xc2,0xa9,0x35,0x35,0x34,0x50,0xc3,0x62,0x53,0xc3,0x12,0x70,0xad,0x61,0x29, - 0x98,0xd6,0xb0,0xdc,0xd4,0xb0,0x34,0xe4,0x93,0x04,0x4c,0xe2,0x2e,0xa3,0x8f,0x24, - 0xee,0x23,0xc4,0xae,0x76,0xfd,0x67,0x5d,0x72,0x54,0xdb,0xe5,0x26,0xc7,0x1a,0xec, - 0xea,0xe0,0x2d,0x23,0x1f,0xb9,0x0f,0x1e,0xe7,0x2e,0xd0,0x9e,0x7b,0x82,0x9c,0x1b, - 0x4d,0xcf,0xad,0x02,0x6f,0xa3,0xe7,0x9a,0xc0,0x6a,0x5c,0xe4,0xc9,0xfd,0xb0,0x06, - 0xde,0x6a,0x78,0xa2,0xe9,0x53,0xe0,0xaa,0xfb,0x33,0x70,0x13,0x83,0xad,0x05,0x73, - 0x41,0x87,0x4c,0xb8,0x5b,0xd6,0x61,0xbb,0x16,0x1f,0x1a,0xe3,0x59,0x62,0xac,0x37, - 0x31,0x36,0x80,0xaf,0xf2,0xb5,0xca,0xdd,0xb8,0x91,0x9a,0xd6,0x71,0x1f,0x6d,0x30, - 0xfb,0xb1,0x09,0x7e,0xb3,0xd9,0x8f,0xe7,0xc0,0x75,0x3f,0x9e,0x07,0xd3,0xfd,0x68, - 0x35,0xfb,0x21,0x6b,0x2d,0x7e,0x6c,0x45,0xe3,0xad,0xc6,0xf7,0x2b,0xf8,0xde,0x66, - 0x7c,0xb7,0x81,0xab,0xef,0xed,0x60,0xea,0xbb,0xdd,0xf8,0xde,0x1e,0xce,0x74,0x12, - 0x30,0xf1,0xbd,0xc3,0x68,0xb4,0x93,0xba,0xe4,0x7e,0x39,0x82,0xaf,0xd7,0xc0,0x1b, - 0xd9,0x77,0xe5,0xb5,0xb3,0xef,0x62,0xb3,0x8b,0x98,0x5b,0xb1,0xdf,0x41,0xdc,0x0e, - 0x13,0x57,0x6c,0x76,0xfb,0xd1,0x01,0x7f,0xb7,0x89,0xfb,0xba,0x89,0xdb,0xe0,0x6f, - 0x67,0xd9,0x9b,0x37,0xc0,0x36,0x9a,0xfb,0x2b,0x65,0xf6,0x6e,0x0f,0x3c,0x1d,0xbb, - 0xbc,0x2f,0xc1,0xf7,0xc2,0xdd,0x13,0x7c,0x0d,0x0a,0x7b,0xb5,0x0f,0x3f,0x7b,0xb9, - 0x43,0x73,0xf9,0x66,0xa4,0xa9,0x49,0x73,0xea,0xa0,0x26,0xe1,0xcc,0x73,0x91,0xd3, - 0x0e,0x7f,0x37,0xb6,0xad,0xd8,0xb6,0x98,0xfc,0x5f,0xfc,0x87,0xfc,0x5f,0xfa,0x9f, - 0xfc,0x37,0xc3,0xd3,0xf1,0x2a,0xf9,0x6f,0x81,0xbb,0xd9,0xe4,0xff,0x32,0x7e,0xb6, - 0xfc,0x4b,0xfe,0x9a,0x53,0xab,0xc9,0xff,0x41,0x17,0x6b,0xe8,0x80,0xdf,0x12,0xfa, - 0x2f,0x7e,0x2b,0xde,0x64,0x7d,0xa7,0xf7,0x24,0xf3,0xfd,0x60,0x55,0xae,0xbf,0xcf, - 0xde,0xa2,0xcf,0x0e,0x98,0x3e,0x7b,0x1b,0x5c,0xfb,0xec,0x1d,0x30,0xed,0xb3,0x43, - 0x66,0xbf,0x65,0xed,0xa0,0x1f,0x87,0xc8,0xed,0x20,0x7a,0x49,0xde,0xef,0x12,0x33, - 0x81,0xd7,0xcb,0xfb,0xef,0xfe,0x5d,0x7c,0xfd,0x00,0x47,0x9e,0xa7,0x89,0xf5,0x23, - 0xbc,0xa1,0x70,0x6e,0x98,0x58,0xb2,0x76,0xd5,0x8f,0x6b,0xf0,0xae,0x85,0x7e,0x8c, - 0xb1,0x7e,0x86,0x37,0x3a,0x89,0xf5,0x66,0x82,0x46,0x11,0x97,0xef,0xed,0x10,0xaf, - 0x97,0x60,0xbf,0xb0,0x47,0x63,0x58,0x2f,0x46,0xdb,0x5e,0x7c,0x5e,0x35,0xfc,0x9f, - 0xf0,0x29,0xdf,0x67,0x6b,0x23,0x39,0xfd,0xe9,0xbd,0xf4,0x82,0x5d,0xc7,0xf7,0x7c, - 0x17,0xfd,0x5f,0x83,0x7b,0x95,0xfb,0x5f,0xb4,0x9f,0xe4,0xe2,0xfa,0x7e,0x73,0x5f, - 0x09,0xe7,0x30,0x1a,0x39,0xea,0x2d,0x70,0x7f,0xd7,0xe8,0x26,0x31,0x6f,0x1a,0x8d, - 0xc4,0xf8,0xb0,0xd1,0x68,0x90,0xeb,0xd7,0x48,0xd6,0x9c,0x1f,0x39,0x2e,0xf2,0xe4, - 0xa9,0x1a,0x65,0xe0,0x59,0x8d,0xf2,0x5c,0xc4,0xad,0x46,0xf9,0xae,0x5f,0x23,0x59, - 0x57,0x8d,0x0a,0xf0,0xe9,0x5c,0x3f,0x3f,0x8d,0x4f,0xd5,0x48,0x6d,0x24,0x27,0xd5, - 0x48,0x30,0xd5,0x68,0x81,0x8b,0xfe,0x25,0xaf,0x34,0xb9,0xaa,0x46,0xe5,0x2e,0xae, - 0x4f,0x22,0xbe,0x6a,0x74,0x04,0x8d,0x52,0xd4,0x5b,0x3c,0x40,0xa3,0x42,0x62,0xca, - 0x53,0x35,0xba,0xcd,0x45,0x9e,0x6a,0x34,0xd6,0x68,0x24,0x6b,0xc3,0xfd,0x18,0x05, - 0x6f,0x94,0xd1,0x68,0x34,0x3c,0xab,0x51,0x91,0x8b,0xb8,0xd5,0x68,0x8c,0xd1,0xa8, - 0xc8,0x68,0x54,0x8c,0xcf,0xe1,0x46,0xa3,0x91,0xf8,0x54,0x8d,0xd4,0x66,0xac,0xd1, - 0xa8,0xd8,0x68,0x54,0xe7,0xa2,0x7f,0xc9,0x6b,0x24,0xb9,0xaa,0x46,0x53,0x5c,0x5c, - 0x17,0xad,0x52,0xc4,0xd4,0xb3,0x77,0x88,0x5e,0x14,0xbb,0x85,0xf4,0x5a,0x2b,0x9c, - 0x62,0x73,0xe6,0xdf,0xe7,0xcc,0x1f,0x33,0x67,0xfe,0x03,0x70,0x3d,0xf3,0x1f,0x82, - 0xe9,0x99,0x3f,0x61,0xce,0xa1,0xac,0x1d,0xf7,0xe3,0x24,0x71,0x4f,0x9a,0xef,0xd6, - 0x69,0x7c,0x9f,0x32,0xbe,0x3f,0x06,0x57,0xdf,0x9f,0x80,0xa9,0xef,0x4e,0xe3,0x5b, - 0xd6,0xce,0xf8,0x71,0x16,0xdf,0x67,0xcd,0xf7,0xfa,0x3c,0xbe,0xcf,0x99,0xef,0xf5, - 0x67,0xe0,0xe7,0xb9,0xa3,0x3f,0x07,0x5b,0x6f,0xe2,0x7d,0x01,0xde,0x48,0xbc,0x2e, - 0x13,0x4f,0xd6,0x2e,0xf8,0xd1,0x45,0xbc,0x0b,0xe6,0xcc,0x4e,0x77,0xf1,0xef,0x82, - 0x85,0xe6,0x77,0x36,0xb5,0xeb,0x32,0x5a,0x2f,0x72,0xd1,0xe6,0x2c,0x9c,0x0b,0x26, - 0x9f,0xaf,0xc8,0xa7,0xd2,0xe4,0xf3,0x35,0xb8,0xe6,0xd3,0x6d,0xf2,0x91,0xb5,0x8b, - 0x7e,0x74,0x13,0xe7,0xa2,0xc9,0xa7,0x92,0x7c,0x16,0x99,0xbd,0x57,0xbb,0x6e,0x93, - 0x4f,0xbd,0x8b,0x36,0x5d,0x70,0x2e,0x9a,0x7c,0xbe,0x21,0x9f,0x63,0x26,0x9f,0x6f, - 0xc1,0x35,0x9f,0x1e,0x93,0x8f,0xac,0x5d,0xf2,0xa3,0x87,0x38,0x97,0x4c,0x3e,0x33, - 0x5d,0xfc,0x3b,0x49,0xe2,0xe9,0x37,0x4a,0xed,0x7a,0x4c,0x3e,0x0d,0x2e,0xda,0x74, - 0xc3,0xb9,0x84,0x6d,0x27,0xb6,0x67,0xcc,0x59,0xff,0x14,0xbd,0xd3,0x26,0xce,0x34, - 0xd7,0x8f,0x27,0x03,0xb8,0x9d,0x26,0xce,0x62,0x17,0x63,0xf5,0xc0,0x39,0x83,0xed, - 0x09,0x6c,0x8f,0xf3,0xad,0x15,0xdb,0x8f,0xf0,0x27,0x43,0xff,0x17,0x94,0x32,0xdf, - 0x5a,0xe5,0x9c,0x30,0xfe,0x1f,0x76,0x31,0x46,0x27,0x7c,0xf1,0x37,0xc7,0x33,0xae, - 0xb0,0xf6,0x87,0xef,0x92,0x99,0x7e,0xfc,0x05,0x45,0xf1,0x98,0x88,0xbc,0x12,0x00, - 0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xed,0x4f,0xd5,0x65, + 0x18,0xc7,0xef,0x73,0x7e,0xe7,0x9c,0x1f,0x42,0x3c,0x08,0x28,0xe1,0xc2,0xf2,0x81, + 0xad,0x86,0xc1,0xd9,0x22,0x23,0x48,0x37,0x32,0x32,0x11,0x25,0x85,0x17,0xb5,0x74, + 0x42,0x09,0xcb,0x20,0x96,0xa6,0x2f,0x20,0x85,0x56,0x6a,0xc1,0x1a,0xb3,0x56,0xb0, + 0x19,0xbc,0x48,0x98,0xbe,0xa8,0xf5,0xaa,0xb5,0x56,0xba,0xd2,0x9e,0xfe,0xa2,0xd6, + 0xc3,0xd6,0xd6,0x75,0xdd,0xe7,0x73,0xb9,0xab,0xb3,0x9a,0x6c,0xf7,0x7e,0xe7,0xfe, + 0x5e,0x4f,0xdf,0xef,0x75,0x5f,0xf7,0xad,0x49,0x76,0x47,0x1a,0x42,0x26,0x54,0x86, + 0x8a,0xf0,0x4b,0x28,0xfd,0x6d,0x0c,0x59,0x41,0x42,0xa8,0x0a,0x85,0xf8,0xdd,0x3f, + 0x30,0x34,0xd0,0xfe,0xe6,0xd9,0x93,0xed,0x9d,0x8f,0x17,0xd5,0x5e,0x13,0x92,0xe8, + 0xa7,0xb6,0xda,0x90,0x86,0x9c,0x7c,0x75,0xbd,0x3e,0x7a,0x6a,0x4a,0xf1,0x6a,0x59, + 0x37,0x64,0xd5,0x89,0x9f,0xe2,0xa9,0xe6,0x90,0x5f,0xd5,0x31,0xa7,0xc6,0x84,0xf0, + 0x5c,0xc8,0x87,0x06,0xea,0xed,0xe0,0x6b,0x58,0x06,0xac,0xc2,0x61,0x59,0xb0,0x3a, + 0x87,0x25,0x60,0x8d,0x0e,0xcb,0x81,0xdd,0xef,0xb0,0x3c,0xd8,0x03,0x0e,0x2b,0x80, + 0x3d,0xe4,0xb0,0x14,0x6c,0xa7,0xc3,0x2a,0xc0,0x1e,0x76,0xd8,0x06,0xb0,0x5d,0x0e, + 0xab,0x04,0x2b,0x3a,0xac,0x0a,0xac,0xd3,0x61,0xf7,0x81,0x75,0x39,0xac,0x1a,0xec, + 0xa9,0xd8,0xa7,0xe4,0xae,0x5e,0xed,0xd9,0x3e,0xf9,0x6e,0xa7,0x3f,0xb6,0xdf,0xe6, + 0xf6,0xda,0xe7,0xad,0xec,0x1b,0x24,0x2a,0x1b,0xed,0x49,0xec,0x8d,0xfe,0xde,0x24, + 0x3e,0x05,0x74,0x6a,0x5f,0x9b,0x64,0x9f,0xa2,0x5f,0xed,0x9b,0xc5,0xb3,0x12,0xbb, + 0xda,0xaa,0xd0,0x92,0x8b,0x58,0x2e,0xf2,0xcd,0xa0,0xa5,0x87,0x7d,0xb5,0xcb,0x55, + 0x83,0xbf,0xd5,0xaa,0x27,0x57,0x88,0xbc,0xea,0xee,0xf6,0xd5,0x6a,0xea,0xaa,0xbf, + 0xc7,0x32,0x1f,0xad,0xdf,0x48,0xbf,0x1b,0xa8,0xdf,0x18,0xeb,0x94,0xb0,0x36,0xb4, + 0x6d,0x86,0x8f,0xfa,0x37,0x61,0x4b,0x9d,0xbd,0xc5,0xe9,0xd9,0x8a,0xbd,0x3e,0xce, + 0x4d,0x36,0xf6,0xb2,0x0d,0xde,0xd6,0x67,0x8b,0x6b,0x63,0x76,0x6c,0xbf,0x1b,0xed, + 0xaa,0x7b,0x2f,0x39,0x34,0x6f,0xb3,0x64,0xec,0x65,0x9f,0x09,0xff,0xfe,0xb3,0xbd, + 0xd6,0x7e,0x9a,0xdf,0xbd,0x68,0xd1,0xfd,0xbe,0xb2,0x9a,0x7d,0x65,0xfb,0x7e,0x7a, + 0xab,0xf1,0x07,0xe1,0x5e,0x70,0xf6,0x41,0xf6,0xca,0xe9,0x45,0x38,0x24,0xce,0x3e, + 0x4a,0x2f,0xd4,0x7e,0x0e,0xdf,0x9c,0xb3,0xcf,0x30,0xe3,0xb6,0xbf,0x54,0xd6,0xdb, + 0x2b,0xcc,0xac,0xd6,0xbf,0x4e,0xee,0x73,0xf0,0xbf,0xce,0x3d,0x4f,0x62,0x6f,0xf2, + 0x91,0x67,0x0e,0xfe,0x8a,0xfd,0x21,0x88,0xf6,0x6f,0x0f,0x73,0x55,0x4b,0xff,0x06, + 0x85,0x51,0x0d,0x77,0xb9,0x96,0x65,0xbd,0x9a,0x62,0x3e,0x37,0x62,0xef,0x95,0x0c, + 0x4d,0xdc,0xe7,0x4d,0x9c,0xf5,0x1e,0x7c,0x9a,0xc1,0xdf,0x11,0x1f,0xdd,0x6f,0x21, + 0xae,0x99,0x38,0x3d,0xeb,0x07,0x89,0x6b,0x21,0xce,0xe6,0x53,0xf1,0xcf,0xc5,0x67, + 0x9b,0x7b,0x07,0xf4,0xfc,0x7f,0x17,0xe6,0xad,0xf0,0xf9,0x4b,0xfc,0xed,0x3d,0x68, + 0x45,0x8f,0xfe,0x3e,0x22,0x71,0x05,0xde,0x84,0x2d,0xf8,0xce,0xd2,0xaf,0x47,0xc0, + 0x8f,0xca,0x2e,0x8d,0x35,0x4a,0x98,0xf9,0xfd,0x29,0x39,0x2c,0x97,0x7e,0x7f,0x13, + 0x2f,0xf5,0xfb,0x0e,0x9f,0x3c,0x31,0x3b,0x9d,0x86,0x5d,0x68,0x68,0x73,0x1a,0x1e, + 0x05,0x37,0x0d,0xed,0x60,0xa6,0xa1,0xe8,0x34,0xa8,0xad,0x83,0xb7,0x49,0xeb,0x76, + 0x38,0x0d,0x8f,0x51,0x3b,0xe3,0x34,0x74,0x82,0x9b,0x86,0x2f,0xc1,0xcc,0x4f,0x35, + 0x58,0xae,0xa2,0xd3,0x70,0x13,0x9f,0x56,0x62,0x3a,0x9c,0x86,0x27,0xd0,0xb0,0xdb, + 0x69,0xe8,0x02,0x37,0x0d,0x4f,0x82,0x99,0x86,0x1e,0xa7,0x41,0x6d,0xdd,0x71,0xee, + 0x4a,0x75,0xbb,0x99,0xa3,0x34,0xe6,0x2b,0xd5,0xbe,0xe9,0xee,0x9b,0x72,0x34,0xdf, + 0x1e,0xc7,0xf1,0x16,0x7e,0x45,0xe2,0xba,0xe1,0xa3,0x77,0xf2,0x19,0xee,0xa3,0xcd, + 0xdc,0xb3,0x70,0xee,0x73,0x33,0xb7,0x1f,0xfc,0x6d,0x66,0xee,0x00,0xd8,0x2d,0xe2, + 0xf4,0x8e,0x0e,0x10,0xd7,0x4f,0x9c,0xf6,0xf4,0x10,0xf8,0x09,0x89,0xd2,0xb7,0xe3, + 0x30,0xf5,0x0e,0x70,0xbf,0x0f,0xb9,0x5e,0x3d,0x4f,0xfc,0xa0,0xeb,0xd5,0x11,0x70, + 0xeb,0xd5,0x51,0x30,0xeb,0xd5,0xb0,0xeb,0x95,0xda,0x86,0x64,0x8d,0xa0,0x7f,0x88, + 0xf3,0xd6,0x3c,0x2f,0x50,0x3b,0x89,0xf9,0x2b,0xe2,0x9b,0xf1,0x12,0xd8,0x61,0x77, + 0x0f,0xb3,0xb1,0x5e,0x21,0xda,0x8f,0x11,0x67,0xeb,0xa2,0xe4,0x52,0xfc,0x38,0xb1, + 0xc7,0x62,0xae,0x0d,0x51,0xd7,0x09,0xf2,0x1c,0xe7,0x2d,0xc8,0xf3,0xe6,0x24,0x9c, + 0xc9,0x30,0x9c,0x46,0x9c,0xde,0x97,0xd1,0x3b,0xea,0xf4,0xbe,0x02,0x6e,0x7a,0x4f, + 0x82,0x99,0xde,0x71,0xa7,0x57,0x6d,0x63,0xb2,0xc6,0xc9,0x3d,0xe6,0xf4,0xbe,0xea, + 0xf4,0x7e,0x41,0xae,0x53,0xe0,0xdb,0xe1,0x64,0x71,0xe3,0xcc,0x89,0xfa,0xbc,0x46, + 0xcd,0x11,0xfc,0xc7,0xa8,0x3b,0xe9,0xea,0xaa,0xcf,0x84,0xac,0x49,0xe2,0x27,0x5c, + 0xdd,0xa9,0xff,0xe8,0xf3,0x1b,0xf7,0xe8,0xf3,0x69,0xe2,0x6c,0x5d,0xa6,0xcf,0x67, + 0x88,0x3d,0xed,0xfa,0x7c,0x96,0x3c,0x67,0xfe,0xa7,0xcf,0xc6,0x69,0x12,0x4d,0x1a, + 0xf3,0x03,0x31,0xe3,0xc4,0x4f,0x94,0x9d,0xc9,0xb0,0xf3,0xfd,0x9e,0xb3,0x1c,0x22, + 0x4e,0xf3,0x9c,0xe7,0xdf,0x90,0x69,0xec,0x76,0x7e,0x6f,0x71,0x7e,0x33,0xee,0xfc, + 0xce,0x83,0xdb,0xf9,0x5d,0x00,0xb3,0xf3,0x9b,0x73,0x7d,0xbc,0x10,0xdf,0x1e,0x9d, + 0xab,0x12,0x8f,0x59,0x74,0x6a,0xad,0x77,0xa9,0x37,0x8d,0xce,0x94,0x9e,0x99,0xce, + 0x39,0x62,0x2e,0x3a,0x3e,0x97,0xe1,0x73,0xc9,0xf1,0x79,0x0f,0xdc,0xf8,0xbc,0x0f, + 0x66,0x7c,0x16,0x1c,0x1f,0xb5,0xcd,0xcb,0x5a,0x24,0xf7,0xbc,0x7b,0x2f,0x3f,0x80, + 0x4b,0xc2,0xfb,0xa8,0x1c,0xbf,0x72,0xb8,0xbd,0x3d,0x0b,0xc4,0x2e,0xba,0x77,0xe1, + 0x43,0x78,0x5d,0x71,0xef,0xc2,0x47,0xe0,0xbf,0x92,0xff,0x63,0xb0,0x7e,0xc7,0xf5, + 0x13,0xf0,0x3e,0xb8,0x2e,0x3b,0xae,0x6a,0x5b,0x92,0xb5,0x4c,0xbd,0x25,0xc7,0xeb, + 0x6b,0x62,0xa6,0xdd,0xbb,0x6d,0x7e,0xcb,0x9c,0xb5,0xfa,0xdd,0xc6,0x67,0x91,0x98, + 0x25,0xc7,0xe7,0x2a,0x7c,0x5a,0x1c,0x9f,0x4f,0xc1,0x8d,0xcf,0xaa,0xe3,0xa3,0xb6, + 0x15,0x59,0xab,0xd4,0x59,0x71,0x7c,0xbe,0x21,0xe6,0x36,0x67,0xa8,0x7c,0xcc,0x6f, + 0xd5,0xf1,0xb9,0x83,0xcf,0x32,0x31,0x2b,0x8e,0xcf,0x67,0xf0,0x99,0x71,0x7c,0xae, + 0x81,0x1b,0x9f,0x75,0xc7,0x47,0x6d,0x6b,0xb2,0xd6,0xa9,0xb3,0xe6,0xf8,0x7c,0xcb, + 0xff,0x27,0xee,0xb8,0x79,0x32,0xbf,0x75,0xc7,0xe7,0x67,0x7c,0x56,0x89,0x59,0x2b, + 0x3b,0xe3,0x05,0xe7,0xfb,0x13,0xf3,0x30,0x4f,0xdc,0x7a,0xd9,0x9c,0xce,0x39,0xdf, + 0x1f,0x99,0xef,0x59,0xe2,0x34,0xcf,0x5e,0x61,0x72,0x03,0xdb,0xdf,0x72,0x6a,0x5d, + 0xb2,0xfe,0x01,0x8a,0xb7,0x70,0x53,0xa4,0x0d,0x00,0x00 }; // Generated from: @@ -121,8 +91,8 @@ constexpr uint8_t kImageCopy_frag_00000024[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture3D src; -// layout(location = 0)out vec4 dst; +// layout(set = 0, binding = 0)uniform utexture2D src; +// layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -147,19 +117,6 @@ constexpr uint8_t kImageCopy_frag_00000024[] = { // bool rotateXY; // } params; // -// float sRGBToLinear(float sRGB) -// { -// -// if(sRGB <= 0.04045) -// { -// return sRGB / 12.92; -// } -// else -// { -// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); -// } -// } -// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -179,7 +136,7 @@ constexpr uint8_t kImageCopy_frag_00000024[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); // // if(params . premultiplyAlpha) // { @@ -190,17 +147,7 @@ constexpr uint8_t kImageCopy_frag_00000024[] = { // srcValue . rgb /= srcValue . a; // } // -// vec4 dstValue = vec4(srcValue); -// -// dstValue /= 255.0; -// -// if(params . dstIsSRGB) -// { -// -// dstValue . r = sRGBToLinear(dstValue . r); -// dstValue . g = sRGBToLinear(dstValue . g); -// dstValue . b = sRGBToLinear(dstValue . b); -// } +// ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc index 63b8cba62407c6becfaf0cc105afc105de0406b2..1f224654bb5381a509a1a4e0fe6db5a0a4e11de5 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc @@ -10,80 +10,81 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000025[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xed,0x4b,0x9e,0x65, - 0x18,0xc6,0xef,0xe7,0xdd,0x69,0xbe,0x4c,0xdd,0xcc,0x91,0xab,0xb5,0x09,0x85,0x4b, - 0x1f,0xc8,0x96,0x69,0x1b,0xd8,0xb2,0xd5,0xb2,0x36,0xdd,0x4b,0xa5,0x50,0x39,0xe6, - 0x6a,0xca,0x4c,0x59,0x6d,0xf4,0x25,0x72,0x4d,0x83,0xb6,0x4a,0x09,0x59,0x51,0x0a, - 0xa5,0x1f,0x4a,0xb1,0x0f,0x41,0x9f,0x22,0xa2,0x36,0xdc,0xd6,0xcb,0x9f,0x13,0xbd, - 0x40,0xd0,0x75,0x5e,0xcf,0xef,0x1c,0x07,0x0f,0xc5,0x84,0x8b,0xfb,0xbe,0x8e,0xf3, - 0xed,0x38,0xce,0xf3,0xba,0x2f,0x9f,0x4c,0x7a,0x67,0x21,0x49,0x52,0x49,0x65,0x52, - 0x91,0xfc,0x96,0x94,0xfe,0x36,0x27,0xe9,0x80,0x24,0x49,0x55,0x92,0x8f,0xcf,0x03, - 0xfd,0x47,0xfa,0xdb,0xcf,0xbe,0x7e,0xb2,0xbd,0xf3,0xa1,0xa2,0xd9,0x6b,0x92,0x4c, - 0xf4,0x33,0x5b,0x6d,0x52,0x48,0xb2,0xe1,0x69,0xeb,0xcc,0xc8,0xe9,0x09,0xc3,0xab, - 0xc3,0xfa,0x3a,0xac,0xba,0xe0,0x67,0x78,0xc1,0x72,0x84,0xb7,0xea,0x98,0xd3,0x62, - 0x92,0xe4,0xc9,0x24,0x97,0x34,0x50,0x6f,0x27,0x4f,0xc7,0x52,0x60,0x15,0x82,0xa5, - 0xc1,0xea,0x04,0xcb,0x80,0x35,0x0a,0x96,0x05,0xbb,0x53,0xb0,0x1c,0xd8,0x5d,0x82, - 0xe5,0xc1,0xee,0x11,0xac,0x00,0xb6,0x4b,0xb0,0x0a,0xb0,0xfb,0x04,0xdb,0x04,0xb6, - 0x5b,0xb0,0x4a,0xb0,0xa2,0x60,0x55,0x60,0x9d,0x82,0xdd,0x01,0xd6,0x25,0x58,0x35, - 0xd8,0xa3,0xb1,0x4f,0x99,0x5b,0x7a,0xad,0x67,0xfb,0xc3,0xf3,0x5e,0xfa,0xe3,0xfb, - 0x1d,0xb2,0xb7,0x3e,0x6f,0x67,0xdf,0x10,0xa2,0xd2,0xd1,0x9e,0x89,0xbd,0xb1,0xf7, - 0x2d,0xc1,0x27,0x8f,0x4e,0xeb,0x6b,0x53,0xd8,0x17,0xd0,0x6f,0xf6,0xad,0xc1,0xb3, - 0x12,0xbb,0xd9,0xaa,0xd0,0x92,0x8d,0x58,0x36,0xf2,0x4d,0xa1,0xa5,0x87,0x7d,0xb5, - 0xe4,0xaa,0xc1,0xdf,0x6b,0xd5,0x93,0x2b,0x89,0xbc,0xea,0x6e,0xf5,0xd5,0x6b,0xda, - 0xaa,0xbf,0xcd,0x72,0x1f,0xab,0xdf,0x48,0xbf,0x1b,0xa8,0xdf,0x18,0xeb,0x94,0xb0, - 0x36,0xb4,0x6d,0x85,0x8f,0xf9,0x37,0x61,0x2b,0x88,0xbd,0x45,0xf4,0x6c,0xc7,0x5e, - 0x1f,0xcf,0x4d,0x3a,0xf6,0xb2,0x0d,0xde,0xde,0x67,0x8f,0x6b,0xe3,0xec,0xf8,0x7e, - 0x0f,0xda,0x4d,0xf7,0x3e,0x78,0x5a,0xde,0xe6,0x90,0xb1,0x57,0x7a,0xaa,0x7f,0x29, - 0x9e,0x56,0xfb,0x31,0xde,0x7b,0xd1,0x62,0xfb,0xfd,0x65,0x35,0xfb,0xca,0xf6,0x07, - 0x39,0xe7,0x16,0xff,0x34,0xdc,0xf3,0x70,0x78,0x96,0xf7,0x8c,0xf8,0x0f,0xc2,0xc1, - 0xf7,0xc7,0xf1,0xf1,0xfd,0xa9,0xb2,0xde,0x4c,0x73,0xc6,0x7d,0x7f,0xb9,0xac,0xb7, - 0x57,0x38,0xb3,0x56,0x7f,0x9d,0x5a,0xfb,0xe0,0xbf,0xce,0x77,0x9e,0x89,0xbd,0xc9, - 0xc5,0xba,0x59,0xf8,0x1b,0xf6,0x67,0x40,0xac,0x7f,0x7b,0x39,0x57,0xb5,0xf4,0xef, - 0x50,0x60,0x50,0xc3,0xb7,0x5c,0xcb,0xf2,0x5e,0x4d,0x70,0x3e,0x37,0x63,0xef,0x0d, - 0x19,0x9a,0xf8,0x9e,0xb7,0x30,0xeb,0xbd,0xf8,0x34,0x83,0x5f,0x08,0x3e,0xb6,0xdf, - 0x46,0x5c,0x33,0x71,0x36,0xeb,0xbb,0x89,0x6b,0x21,0xce,0xcf,0xa7,0xe1,0x6b,0xc1, - 0x67,0x87,0xdc,0x03,0x36,0xff,0x3f,0x02,0xf3,0x56,0xf8,0xfc,0x1d,0xfc,0xfd,0x3e, - 0x68,0x45,0x8f,0xbd,0x0f,0x84,0xb8,0x3c,0x77,0xc2,0x36,0x7c,0xdf,0xa2,0x5f,0xf7, - 0x83,0x0f,0x86,0x9d,0x71,0xfa,0x06,0xcc,0xfd,0xfe,0x0a,0x39,0x3c,0x97,0x3d,0x7f, - 0x0f,0x5e,0xe6,0xf7,0x13,0x3e,0x39,0x62,0x76,0x89,0x86,0xdd,0x68,0x68,0x13,0x0d, - 0x0f,0x80,0xbb,0x86,0x76,0x30,0xd7,0x50,0x14,0x0d,0x66,0xeb,0xe0,0x6e,0xb2,0xba, - 0x1d,0xa2,0xe1,0x41,0x6a,0xa7,0x44,0x43,0x27,0xb8,0x6b,0xf8,0x16,0xcc,0xfd,0x4c, - 0x83,0xe7,0x2a,0x8a,0x86,0xab,0xf8,0xb4,0x12,0xd3,0x21,0x1a,0x1e,0x46,0xc3,0x1e, - 0xd1,0xd0,0x05,0xee,0x1a,0x1e,0x01,0x73,0x0d,0x3d,0xa2,0xc1,0x6c,0xdd,0xf1,0xdc, - 0x95,0xea,0x76,0x73,0x8e,0x0a,0x31,0x5f,0xa9,0xf6,0x55,0xf9,0xde,0x8c,0xa3,0xfb, - 0xf6,0x08,0xc7,0x6b,0xf8,0x15,0x89,0xeb,0x86,0x8f,0x7d,0x93,0x8f,0xf3,0x3d,0xfa, - 0x99,0x7b,0x02,0xce,0x7d,0x72,0xe6,0x0e,0x80,0xbf,0xcd,0x99,0x7b,0x0a,0xec,0x1a, - 0x71,0xf6,0x8d,0xf6,0x13,0x77,0x90,0x38,0xeb,0xe9,0x33,0xe0,0xde,0xf7,0x43,0xc4, - 0x26,0x82,0x1d,0x06,0x4b,0xc5,0xf7,0x7c,0xfc,0xbe,0x07,0xf0,0x3d,0x4c,0x0e,0xaf, - 0x71,0x84,0x1a,0x83,0x52,0xe3,0x28,0xf8,0x4b,0x81,0x99,0x7d,0xa3,0xc7,0xd0,0x34, - 0xc0,0x9d,0x70,0x54,0xe6,0xf1,0x1c,0xf1,0xc7,0x65,0x1e,0xcf,0x83,0xfb,0x3c,0x5e, - 0x00,0xf3,0x79,0x0c,0xcb,0x3c,0xcc,0x36,0x14,0xd6,0x28,0x3d,0x1e,0x12,0x1d,0x2f, - 0x52,0x3b,0x13,0xb9,0x57,0x44,0x1d,0x2f,0x83,0x1d,0x93,0x6f,0x3d,0x2d,0x3a,0x47, - 0x88,0xf3,0x75,0x31,0xe4,0x32,0xfc,0x04,0xb1,0x23,0x31,0xd7,0xa6,0xa8,0xeb,0x24, - 0x79,0x4e,0x70,0xdf,0xe4,0xe4,0x1e,0xb4,0xb9,0x0f,0xc3,0x69,0x54,0xf4,0xbe,0x82, - 0xde,0x53,0xa2,0xf7,0x55,0x70,0xd7,0x7b,0x1a,0xcc,0xf5,0x8e,0x8b,0x5e,0xb3,0x8d, - 0x85,0x35,0x4e,0xee,0x31,0xd1,0x7b,0x46,0xf4,0xae,0x93,0x6b,0x02,0xbc,0x0f,0x4e, - 0x1e,0x37,0xce,0x59,0x34,0x9f,0xd7,0xa8,0x39,0x8a,0xff,0x18,0x75,0xa7,0xa4,0xae, - 0xf9,0x4c,0x86,0x35,0x45,0xfc,0xa4,0xd4,0x3d,0xfb,0x1f,0x7d,0x7e,0xe3,0x36,0x7d, - 0x3e,0x47,0x9c,0xaf,0x77,0xe9,0xf3,0x79,0x62,0xcf,0x49,0x9f,0xdf,0x24,0xcf,0xf9, - 0xff,0xe9,0xb3,0x73,0x9a,0x42,0x93,0xc5,0x5c,0x27,0x66,0x9c,0xf8,0xc9,0xb2,0x99, - 0x0c,0x8b,0xef,0x06,0xb3,0x1c,0x22,0x6e,0x4a,0xe6,0x75,0x81,0x79,0x4d,0xcb,0xbc, - 0xde,0x01,0xf7,0x79,0x5d,0x04,0xf3,0x79,0xcd,0x4a,0xdf,0xcc,0x36,0x13,0xd6,0x25, - 0xea,0xce,0x88,0xae,0xf7,0xa8,0xbd,0x81,0xae,0x02,0x3d,0x72,0x5d,0xb3,0xc4,0x5c, - 0x12,0x3e,0xef,0xc3,0xe7,0xb2,0xf0,0xf9,0x00,0xdc,0xf9,0x7c,0x08,0xe6,0x7c,0xe6, - 0x85,0x8f,0xd9,0xe6,0xc2,0x5a,0x20,0xf7,0x9c,0xcc,0xf1,0x23,0xb8,0x64,0xb8,0x73, - 0x8d,0xe3,0x77,0x82,0xfb,0x7d,0x36,0x4f,0xec,0x82,0xdc,0x03,0x1f,0xc3,0xeb,0x8a, - 0xdc,0x03,0x9f,0x80,0x5f,0x27,0xff,0xa7,0x60,0x83,0xc2,0xf5,0x33,0xf0,0x3e,0xb8, - 0x2e,0x09,0x57,0xb3,0x2d,0x86,0xb5,0x44,0xbd,0x45,0xe1,0xf5,0x3d,0x31,0x1b,0xf2, - 0xbf,0xc0,0xfd,0x96,0x64,0xb6,0x37,0xf0,0x59,0x20,0x66,0x51,0xf8,0x7c,0x0e,0x9f, - 0x16,0xe1,0xf3,0x05,0xb8,0xf3,0x59,0x11,0x3e,0x66,0x5b,0x0e,0x6b,0x85,0x3a,0xcb, - 0xc2,0xe7,0x07,0x62,0x6e,0x30,0x43,0xe3,0xe3,0x7e,0x2b,0xc2,0xe7,0x26,0x3e,0x4b, - 0xc4,0x2c,0x0b,0x9f,0x2f,0xe1,0x33,0x2d,0x7c,0xbe,0x02,0x77,0x3e,0x6b,0xc2,0xc7, - 0x6c,0xab,0xd1,0xb7,0x54,0x67,0x55,0xf8,0xfc,0xc8,0x6f,0x94,0x9b,0x72,0x9e,0xdc, - 0x6f,0x4d,0xf8,0xfc,0x8a,0xcf,0x0a,0x31,0xab,0x65,0x33,0x9e,0x17,0xdf,0x5f,0x38, - 0x0f,0x73,0xc4,0xad,0x95,0x9d,0xd3,0x59,0xf1,0xfd,0x99,0xf3,0x3d,0x43,0xdc,0x7c, - 0xfc,0xbd,0x96,0x89,0xbf,0xd3,0xcc,0xf6,0x4f,0x98,0x5a,0x57,0x58,0xff,0x02,0x3c, - 0x97,0x98,0x92,0xf8,0x0d,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xd9,0x4f,0x5d,0x55, + 0x14,0xc6,0xcf,0x9d,0x29,0xc8,0x50,0xa0,0x45,0x1a,0xa9,0x76,0x20,0xd1,0x50,0xe1, + 0x26,0x62,0x45,0xb0,0x4d,0xb0,0x62,0xb5,0xa2,0x2d,0x74,0x50,0xe1,0xc1,0xa1,0x44, + 0x5a,0x85,0xaa,0xa0,0xb1,0x8d,0x8d,0x81,0x5a,0x78,0xb0,0x55,0x21,0x0d,0xa9,0x46, + 0x21,0x51,0x78,0x50,0xb0,0x7d,0x30,0xf1,0xc9,0x18,0xa3,0x6d,0x6c,0xeb,0xf0,0xe7, + 0x18,0x87,0xc4,0xc4,0xbd,0xf6,0xfd,0xad,0xe6,0xcb,0x8d,0xa6,0x24,0x3b,0xe7,0xec, + 0x6f,0x4d,0xdf,0xb7,0xf6,0x3a,0xfb,0x92,0x49,0x6f,0x2b,0x24,0x49,0x2a,0xa9,0x4c, + 0x2a,0x92,0xdf,0x92,0xd2,0xdf,0xfa,0x24,0x1d,0x90,0x24,0xa9,0x4a,0xf2,0xf1,0xb9, + 0xb7,0xff,0x60,0x7f,0xfb,0xe4,0x1b,0x23,0xed,0x9d,0xf7,0x17,0xcd,0x5e,0x93,0x64, + 0xa2,0x9f,0xd9,0x6a,0x93,0x42,0x92,0x0d,0x4f,0x5b,0xe3,0x2f,0x1c,0x3f,0x61,0x78, + 0x75,0x58,0x97,0xc3,0xaa,0x0b,0x7e,0x86,0x17,0x2c,0x47,0x78,0xab,0x8e,0x39,0x2d, + 0x26,0x49,0x1e,0x4b,0x72,0x49,0x03,0xf5,0xb6,0xf1,0x74,0x2c,0x05,0x56,0x21,0x58, + 0x1a,0xac,0x4e,0xb0,0x0c,0x58,0xa3,0x60,0x59,0xb0,0xdb,0x05,0xcb,0x81,0xdd,0x21, + 0x58,0x1e,0xec,0x2e,0xc1,0x0a,0x60,0xdb,0x05,0xab,0x00,0xbb,0x5b,0xb0,0x75,0x60, + 0x3b,0x04,0xab,0x04,0x2b,0x0a,0x56,0x05,0xd6,0x29,0xd8,0x6d,0x60,0x5d,0x82,0x55, + 0x83,0x3d,0x14,0xfb,0x94,0xb9,0xa9,0xd7,0x7a,0xb6,0x27,0x3c,0xb7,0xd2,0x1f,0xdf, + 0x6f,0x91,0xbd,0xf5,0x79,0x33,0xfb,0x86,0x10,0x95,0x8e,0xf6,0x4c,0xec,0x8d,0xbd, + 0x6f,0x08,0x3e,0x79,0x74,0x5a,0x5f,0x9b,0xc2,0xbe,0x80,0x7e,0xb3,0x6f,0x0c,0x9e, + 0x95,0xd8,0xcd,0x56,0x85,0x96,0x6c,0xc4,0xb2,0x91,0x6f,0x0a,0x2d,0x3d,0xec,0xab, + 0x25,0x57,0x0d,0xfe,0x5e,0xab,0x9e,0x5c,0x49,0xe4,0x55,0x77,0xb3,0xaf,0x5e,0xd3, + 0x56,0xfd,0x2d,0x96,0xfb,0x58,0xfd,0x46,0xfa,0xdd,0x40,0xfd,0xc6,0x58,0xa7,0x84, + 0xb5,0xa1,0x6d,0x23,0x7c,0xcc,0xbf,0x09,0x5b,0x41,0xec,0x2d,0xa2,0x67,0x33,0xf6, + 0xfa,0x38,0x37,0xe9,0xd8,0xcb,0x36,0x78,0x7b,0x9f,0x3d,0xae,0x8d,0xd9,0xf1,0xfd, + 0x4e,0xb4,0x9b,0xee,0xdd,0xe4,0xb0,0xbc,0xcd,0x21,0x63,0x2f,0xfb,0x14,0x39,0xca, + 0x9f,0x56,0xfb,0x61,0xde,0x7b,0xd1,0x62,0xfb,0x3d,0x65,0x35,0xfb,0xca,0xf6,0xfb, + 0x98,0x73,0x8b,0x7f,0x02,0xee,0x79,0x38,0x3c,0xc5,0x7b,0x46,0xfc,0x07,0x39,0x0b, + 0xdf,0x1f,0x11,0xff,0xe7,0xe1,0xa8,0xfe,0xc7,0xe8,0x95,0xd9,0x4f,0xe3,0x9b,0x15, + 0xfb,0x34,0xdf,0x80,0xef,0xcf,0x97,0xf5,0xfe,0x22,0x33,0x6d,0xfc,0x2e,0x91,0xfb, + 0x34,0xfa,0x2e,0x71,0x0f,0x64,0x62,0xef,0x72,0x91,0x57,0x16,0x7d,0x86,0xfd,0x19, + 0x10,0xeb,0xef,0x2e,0xe6,0xae,0x96,0xfe,0xee,0x0f,0x8c,0x6a,0xf8,0xd6,0x6b,0x59, + 0xde,0xcb,0x13,0xcc,0xef,0x7a,0xec,0xbd,0x21,0x43,0x13,0xdf,0xfb,0x06,0x66,0x61, + 0x17,0x3e,0xcd,0xe0,0x67,0x82,0x8f,0xed,0x37,0x11,0xd7,0x4c,0x9c,0xcd,0xc2,0x9d, + 0xc4,0xb5,0x10,0xe7,0xf3,0x6b,0xf8,0x5a,0xf0,0xd9,0x22,0xf7,0x84,0xcd,0xc7,0x1f, + 0x81,0x79,0x2b,0x7c,0xfe,0x0e,0xfe,0x7e,0x5f,0xb4,0xa2,0xc7,0xde,0x07,0x42,0x5c, + 0x9e,0x3b,0x63,0x13,0xbe,0xef,0xd0,0xaf,0x7b,0xc0,0x07,0xc3,0xce,0x38,0x7d,0x0d, + 0xe6,0x7e,0x7f,0x85,0x1c,0x9e,0xcb,0x9e,0xbf,0x07,0x2f,0xf3,0xfb,0x11,0x9f,0x1c, + 0x31,0xdb,0x45,0xc3,0x0e,0x34,0xb4,0x89,0x86,0x7b,0xc1,0x5d,0x43,0x3b,0x98,0x6b, + 0x28,0x8a,0x06,0xb3,0x75,0x70,0x77,0x59,0xdd,0x0e,0xd1,0x70,0x1f,0xb5,0x53,0xa2, + 0xa1,0x13,0xdc,0x35,0x7c,0x03,0xe6,0x7e,0xa6,0xc1,0x73,0x15,0x45,0xc3,0x15,0x7c, + 0x5a,0x89,0xe9,0x10,0x0d,0x0f,0xa0,0x61,0xa7,0x68,0xe8,0x02,0x77,0x0d,0x0f,0x82, + 0xb9,0x86,0x1e,0xd1,0x60,0xb6,0xee,0x38,0x77,0xa5,0xba,0xdd,0xcc,0x51,0x21,0xe6, + 0x2b,0xd5,0xbe,0x22,0xdf,0xa3,0x71,0x74,0xdf,0x1e,0xe1,0x78,0x15,0xbf,0x22,0x71, + 0xdd,0xf0,0xb1,0x6f,0xf6,0x11,0xbe,0x57,0x9f,0xb9,0x47,0xe1,0xdc,0x27,0x33,0xb7, + 0x17,0x7c,0x8a,0x99,0x7b,0x1c,0xec,0x2a,0x71,0xf6,0x0d,0xf7,0x13,0xb7,0x8f,0x38, + 0xeb,0xe9,0x93,0xe0,0xde,0xf7,0xfd,0xc4,0x26,0x82,0x1d,0x00,0x4b,0xc5,0xf7,0x7c, + 0xfc,0xfe,0x07,0xf0,0x3d,0x40,0x0e,0xaf,0x71,0x90,0x1a,0x83,0x52,0xe3,0x10,0xf8, + 0x73,0x81,0x99,0xdd,0x5f,0x87,0xd1,0x34,0xc0,0x9d,0x71,0x48,0xce,0xe3,0x69,0xe2, + 0x8f,0xc8,0x79,0x3c,0x03,0xee,0xe7,0xf1,0x2c,0x98,0x9f,0xc7,0xb0,0x9c,0x87,0xd9, + 0x86,0xc2,0x1a,0xa5,0xc7,0x43,0xe8,0xa8,0x8f,0xf5,0x4b,0xb5,0x33,0x91,0x7b,0x45, + 0xbc,0x97,0x5e,0x04,0x3b,0x2c,0xdf,0x7a,0x1a,0x9d,0x66,0x3f,0x4a,0x9c,0xaf,0xb3, + 0x21,0x97,0xe1,0x23,0xc4,0x1e,0x8d,0xb9,0xd6,0x45,0x5d,0x2f,0x91,0x67,0x84,0xfb, + 0x26,0x27,0xf7,0xa4,0x9d,0xfb,0x30,0x9c,0x46,0x45,0xef,0x71,0xf4,0x1e,0x13,0xbd, + 0x2f,0x83,0xbb,0xde,0x57,0xc0,0x5c,0xef,0xb8,0xe8,0x35,0xdb,0x98,0xfd,0x0f,0x44, + 0xee,0x31,0xd1,0xfb,0xaa,0xe8,0xfd,0x8a,0x5c,0xaf,0x81,0x6f,0x85,0x93,0xc7,0x8d, + 0x33,0x8b,0xe6,0xf3,0x3a,0x35,0x47,0xf1,0x1f,0xa3,0xee,0xa4,0xd4,0x35,0x9f,0x89, + 0xb0,0x26,0x89,0x9f,0x90,0xba,0x6f,0xfe,0x47,0x9f,0xdf,0xba,0x45,0x9f,0x4f,0x12, + 0xe7,0x6b,0x96,0x3e,0x9f,0x22,0xf6,0xa4,0xf4,0xf9,0x6d,0xf2,0x9c,0xfa,0x9f,0x3e, + 0x3b,0xa7,0x49,0x34,0x59,0xcc,0x35,0x62,0xc6,0x89,0x9f,0x28,0x3b,0x93,0x61,0xf1, + 0xfd,0x89,0xb3,0x1c,0x22,0x6e,0x32,0xfe,0xb6,0x94,0x7e,0xa7,0xa6,0xb0,0xfb,0xf9, + 0x9d,0xe1,0xfc,0xa6,0xe5,0xfc,0xde,0x05,0xf7,0xf3,0x3b,0x0b,0xe6,0xe7,0x37,0x2b, + 0x7d,0x34,0xdb,0x4c,0x58,0xe7,0xe0,0x31,0x83,0x4e,0xab,0xf5,0x1e,0xf5,0xa6,0xd0, + 0x59,0xa0,0x67,0xae,0x73,0x96,0x98,0x73,0xc2,0xe7,0x7d,0xf8,0x9c,0x17,0x3e,0x1f, + 0x80,0x3b,0x9f,0x0f,0xc1,0x9c,0xcf,0xbc,0xf0,0x31,0xdb,0x5c,0x58,0x0b,0xe4,0x9e, + 0x93,0x7b,0xe0,0x02,0x5c,0x32,0xdc,0xc1,0xc6,0xf1,0x5b,0xc1,0xfd,0x7e,0x9b,0x27, + 0x76,0x41,0xee,0x85,0x8f,0xe0,0x75,0x51,0xee,0x85,0x8f,0xc1,0xaf,0x91,0xff,0x13, + 0xb0,0x41,0xe1,0xfa,0x29,0x78,0x1f,0x5c,0x97,0x84,0xab,0xd9,0x16,0xc3,0x5a,0xa2, + 0xde,0xa2,0xf0,0xfa,0x8e,0x98,0x29,0xf9,0x6d,0x70,0xbf,0x25,0xce,0xda,0xfc,0xae, + 0xe3,0xb3,0x40,0xcc,0xa2,0xf0,0xf9,0x0c,0x3e,0x2d,0xc2,0xe7,0x73,0x70,0xe7,0xb3, + 0x22,0x7c,0xcc,0xb6,0x1c,0xd6,0x0a,0x75,0x96,0x85,0xcf,0xf7,0xc4,0x5c,0xe7,0x0c, + 0x8d,0x8f,0xfb,0xad,0x08,0x9f,0x1b,0xf8,0x2c,0x11,0xb3,0x2c,0x7c,0xbe,0x80,0xcf, + 0xb4,0xf0,0xf9,0x12,0xdc,0xf9,0xac,0x09,0x1f,0xb3,0xad,0x46,0xdf,0x52,0x9d,0x55, + 0xe1,0xf3,0x03,0xff,0xb3,0xdc,0x90,0x79,0x72,0xbf,0x35,0xe1,0xf3,0x2b,0x3e,0x2b, + 0xc4,0xac,0x96,0x9d,0xf1,0xbc,0xf8,0xfe,0xc2,0x3c,0xcc,0x11,0xb7,0x56,0x36,0xa7, + 0xb3,0xe2,0xfb,0x33,0xf3,0x3d,0x43,0x9c,0xe5,0xd9,0x1d,0x98,0x5c,0xc6,0xf6,0x4f, + 0x38,0xb5,0xae,0xb0,0xfe,0x05,0x43,0xa1,0xf9,0xc7,0x28,0x0e,0x00,0x00 }; // Generated from: @@ -92,7 +93,7 @@ constexpr uint8_t kImageCopy_frag_00000025[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture3D src; +// layout(set = 0, binding = 0)uniform utexture2DArray src; // layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { @@ -137,7 +138,7 @@ constexpr uint8_t kImageCopy_frag_00000025[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc index 015692b8c39331c6cb7fa02854a7b7adeebc2295..2ae47d5eabf2958b50afd1a4a916bac9497755b1 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc @@ -10,81 +10,81 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000026[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfd,0x4b,0x9e,0x55, - 0x18,0xc7,0xef,0xe7,0xdd,0x69,0xbe,0x4c,0xdd,0xcc,0x91,0xab,0xb5,0x09,0x85,0x4b, - 0x8d,0x6c,0x99,0xb6,0x81,0x2d,0x5b,0x2d,0x6b,0xd3,0xbd,0x54,0x0a,0x95,0x63,0xae, - 0xa6,0xcc,0x94,0xd5,0x46,0x23,0x74,0x4d,0x21,0xda,0x2a,0x85,0x90,0x15,0xa5,0x50, - 0xfa,0x43,0x29,0xee,0x87,0xa0,0x9f,0x22,0xa2,0x36,0xda,0xd6,0xcb,0x9f,0x13,0xbd, - 0x40,0xd0,0xb9,0xce,0xf3,0xb9,0xc6,0x97,0x87,0x62,0xc2,0xe1,0xbe,0xcf,0xf7,0x7a, - 0xfb,0x7e,0xaf,0x73,0xdd,0xe7,0x31,0x93,0xde,0x5e,0x48,0x92,0x54,0x52,0x9e,0x94, - 0x25,0xbf,0x25,0xc5,0xbf,0x8d,0x49,0x3a,0x20,0x49,0x52,0x91,0xe4,0xe3,0x73,0x5f, - 0xdf,0xa1,0xbe,0xd6,0xd3,0x6f,0x1c,0x6f,0xed,0x78,0xb8,0xdd,0xec,0x55,0x49,0x26, - 0xfa,0x99,0xad,0x3a,0x29,0x24,0xd9,0xf0,0xb4,0x75,0x6a,0xf8,0xe4,0xb8,0xe1,0x95, - 0x61,0x5d,0x09,0xab,0x26,0xf8,0x19,0x5e,0xb0,0x1c,0xe1,0xad,0x32,0xe6,0xb4,0x98, - 0x24,0x79,0x2a,0xc9,0x25,0x75,0xd4,0xdb,0xce,0xd3,0xb1,0x14,0x58,0x99,0x60,0x69, - 0xb0,0x1a,0xc1,0x32,0x60,0xf5,0x82,0x65,0xc1,0xee,0x14,0x2c,0x07,0x76,0x97,0x60, - 0x79,0xb0,0x7b,0x04,0x2b,0x80,0xed,0x10,0xac,0x0c,0xec,0x3e,0xc1,0x36,0x80,0xed, - 0x14,0xac,0x1c,0xac,0x5d,0xb0,0x0a,0xb0,0x0e,0xc1,0xee,0x00,0xeb,0x14,0xac,0x12, - 0xec,0xb1,0xd8,0xa7,0xcc,0x2d,0xbd,0xd6,0xb3,0xbd,0xe1,0x79,0x2f,0xfd,0xf1,0xfd, - 0x36,0xd9,0x5b,0x9f,0xb7,0xb2,0xaf,0x0b,0x51,0xe9,0x68,0xcf,0xc4,0xde,0xd8,0xfb, - 0xa6,0xe0,0x93,0x47,0xa7,0xf5,0xb5,0x21,0xec,0x0b,0xe8,0x37,0xfb,0xe6,0xe0,0x59, - 0x8e,0xdd,0x6c,0x15,0x68,0xc9,0x46,0x2c,0x1b,0xf9,0xa6,0xd0,0xd2,0xcd,0xbe,0x52, - 0x72,0x55,0xe1,0xef,0xb5,0x6a,0xc9,0x95,0x44,0x5e,0x35,0xb7,0xfa,0xea,0x35,0x6d, - 0xd5,0xde,0x66,0xb9,0x8f,0xd5,0xaf,0xa7,0xdf,0x75,0xd4,0xaf,0x8f,0x75,0x8a,0x58, - 0x0b,0xda,0x36,0xc3,0xc7,0xfc,0x1b,0xb0,0x15,0xc4,0xde,0x24,0x7a,0xb6,0x62,0xaf, - 0x8d,0x73,0x93,0x8e,0xbd,0x6c,0x81,0xb7,0xf7,0xd9,0xe3,0x5a,0x98,0x1d,0xb7,0x3f, - 0x48,0x1d,0xb7,0xef,0xa2,0x17,0xd6,0x87,0x3d,0xf0,0xb6,0x3a,0x8d,0xa1,0x42,0x8f, - 0xf4,0x58,0xff,0x52,0x3c,0x8d,0xcb,0xe3,0xbc,0xf7,0xa0,0xcd,0xf6,0x7b,0x4b,0x38, - 0xf4,0x96,0xec,0xf7,0x33,0xf7,0x16,0xff,0x0c,0x5a,0xf2,0x70,0x78,0x8e,0xf7,0x8c, - 0xf8,0x0f,0xc0,0xc1,0xf7,0x47,0xf1,0xf1,0xfd,0x09,0x7a,0x65,0xf1,0xe7,0xe8,0x4b, - 0x56,0xec,0xd3,0x7c,0x03,0xbe,0xbf,0x54,0xd2,0xfb,0xcb,0xcc,0xb4,0xf1,0x59,0xa7, - 0xf6,0x39,0xf4,0xac,0x73,0x0f,0x64,0x62,0xaf,0x72,0x91,0x47,0x16,0x3d,0x86,0xfd, - 0x19,0x10,0xeb,0xef,0x6e,0xe6,0xae,0x9a,0x7e,0x1e,0x08,0x8c,0xaa,0xf8,0xd6,0xab, - 0x59,0xde,0xbb,0x71,0xe6,0x77,0x23,0xf6,0x9e,0x90,0xa1,0x81,0xef,0x7d,0x13,0xb3, - 0xb0,0x1b,0x9f,0x46,0xf0,0x0b,0xc1,0xc7,0xf6,0x5b,0x88,0x6b,0x24,0xce,0x66,0xe1, - 0x6e,0xe2,0x9a,0x88,0xf3,0xf9,0x35,0x7c,0x2d,0xf8,0x6c,0x93,0x7b,0xc2,0xe6,0xe3, - 0x8f,0xc0,0xbc,0x19,0x3e,0x7f,0x07,0x7f,0xbf,0x2f,0x9a,0xd1,0x63,0xef,0xfd,0x21, - 0x2e,0xcf,0x9d,0xb1,0x05,0xdf,0x29,0xfa,0x75,0x3f,0xf8,0x40,0xd8,0x19,0xa7,0xaf, - 0xc1,0xdc,0xef,0xaf,0x90,0xc3,0x73,0xd9,0xf3,0xf7,0xe0,0x65,0x7e,0x3f,0xe2,0x93, - 0x23,0x66,0x87,0x68,0xd8,0x89,0x86,0x16,0xd1,0xf0,0x00,0xb8,0x6b,0x68,0x05,0x73, - 0x0d,0xed,0xa2,0xc1,0x6c,0x6d,0xdc,0x5d,0x56,0xb7,0x4d,0x34,0x3c,0x44,0xed,0x94, - 0x68,0xe8,0x00,0x77,0x0d,0xdf,0x80,0xb9,0x9f,0x69,0xf0,0x5c,0xed,0xa2,0xe1,0x2a, - 0x3e,0xcd,0xc4,0xb4,0x89,0x86,0x47,0xd0,0xb0,0x4b,0x34,0x74,0x82,0xbb,0x86,0x47, - 0xc1,0x5c,0x43,0xb7,0x68,0x30,0x5b,0x57,0x9c,0xbb,0x62,0xdd,0x2e,0xe6,0xa8,0x10, - 0xf3,0x15,0x6b,0x5f,0x95,0xef,0xcf,0x38,0xba,0x6f,0xb7,0x70,0xbc,0x86,0x5f,0x3b, - 0x71,0x5d,0xf0,0xb1,0x6f,0xf4,0x09,0xbe,0x4f,0x9f,0xb9,0x27,0xe1,0xdc,0x2b,0x33, - 0xb7,0x0f,0xfc,0x3c,0x33,0xf7,0x34,0xd8,0x35,0xe2,0xec,0x9b,0xed,0x23,0x6e,0x3f, - 0x71,0xd6,0xd3,0x67,0xc1,0xbd,0xef,0x07,0x88,0x4d,0x04,0x3b,0x08,0x96,0x8a,0xef, - 0xf9,0xf8,0xbd,0xf7,0xe3,0x7b,0x90,0x1c,0x5e,0xe3,0x10,0x35,0x06,0xa4,0xc6,0x61, - 0xf0,0x97,0x03,0x33,0xbb,0xaf,0x8e,0xa0,0xa9,0x9f,0x3b,0xe2,0xb0,0x9c,0xc7,0xf3, - 0xc4,0x1f,0x95,0xf3,0x78,0x01,0xdc,0xcf,0xe3,0x45,0x30,0x3f,0x8f,0x21,0x39,0x0f, - 0xb3,0x0d,0x86,0x35,0x42,0x8f,0x07,0x45,0xc7,0x4b,0xd4,0xce,0x44,0xee,0x65,0x51, - 0xc7,0x2b,0x60,0x47,0xe4,0x5b,0x4f,0x8b,0xce,0x61,0xe2,0x7c,0xcd,0x86,0x5c,0x86, - 0x1f,0x23,0x76,0x38,0xe6,0xda,0x10,0x75,0x1d,0x27,0xcf,0x31,0xee,0x9b,0x9c,0xdc, - 0x8b,0x76,0xee,0x43,0x70,0x1a,0x11,0xbd,0xaf,0xa2,0xf7,0x84,0xe8,0x7d,0x0d,0xdc, - 0xf5,0x9e,0x04,0x73,0xbd,0x63,0xa2,0xd7,0x6c,0xa3,0x61,0x8d,0x91,0x7b,0x54,0xf4, - 0x9e,0x12,0xbd,0xeb,0xe4,0x1a,0x07,0xef,0x85,0x93,0xc7,0x8d,0x31,0x8b,0xe6,0xf3, - 0x3a,0x35,0x47,0xf0,0x1f,0xa5,0xee,0xa4,0xd4,0x35,0x9f,0x89,0xb0,0x26,0x89,0x9f, - 0x90,0xba,0xa7,0xff,0xa3,0xcf,0x6f,0xde,0xa6,0xcf,0x67,0x88,0xf3,0xf5,0x2e,0x7d, - 0x3e,0x4b,0xec,0x19,0xe9,0xf3,0x5b,0xe4,0x39,0xfb,0x3f,0x7d,0x76,0x4e,0x93,0x68, - 0xb2,0x98,0xeb,0xc4,0x8c,0x11,0x3f,0x51,0x72,0x26,0x43,0xe2,0xfb,0x13,0x67,0x39, - 0x48,0x9c,0xe5,0x79,0x9b,0xdf,0xa9,0x29,0xec,0x7e,0x7e,0xe7,0x39,0xbf,0x69,0x39, - 0xbf,0x77,0xc0,0xfd,0xfc,0x2e,0x80,0xf9,0xf9,0xcd,0x4a,0x1f,0xcd,0x36,0x13,0xd6, - 0x45,0x78,0xcc,0xa0,0xd3,0x6a,0xbd,0x47,0xbd,0x29,0x74,0x16,0xe8,0x99,0xeb,0x9c, - 0x25,0xe6,0xa2,0xf0,0x79,0x1f,0x3e,0x97,0x84,0xcf,0x07,0xe0,0xce,0xe7,0x43,0x30, - 0xe7,0x33,0x2f,0x7c,0xcc,0x36,0x17,0xd6,0x02,0xb9,0xe7,0x38,0x57,0xcb,0xf3,0x11, - 0x5c,0x32,0xdc,0xc1,0xc6,0xf1,0x5b,0xc1,0xfd,0x7e,0x9b,0x27,0x76,0x41,0xee,0x85, - 0x8f,0xe1,0x75,0x59,0xee,0x85,0x4f,0xc0,0xaf,0x33,0x37,0x9f,0x82,0x0d,0x08,0xd7, - 0xcf,0xc0,0x7b,0xe1,0xba,0x24,0x5c,0xcd,0xb6,0x18,0xd6,0x12,0xf5,0x16,0x85,0xd7, - 0x77,0xe8,0x9b,0x92,0xdf,0x06,0xf7,0x5b,0xe2,0xac,0xcd,0xef,0x06,0x3e,0x0b,0xc4, - 0x2c,0x0a,0x9f,0xcf,0xe1,0xd3,0x24,0x7c,0xbe,0x00,0x77,0x3e,0x2b,0xc2,0xc7,0x6c, - 0xcb,0x61,0xad,0x50,0x67,0x59,0xf8,0x7c,0x0f,0x9f,0x1b,0x9c,0xa1,0xf1,0x71,0xbf, - 0x15,0xe1,0x73,0x13,0x9f,0x25,0x62,0x96,0x85,0xcf,0x97,0xf0,0x99,0x16,0x3e,0x5f, - 0x81,0x3b,0x9f,0x35,0xe1,0x63,0xb6,0xd5,0xe8,0x5b,0xac,0xb3,0x2a,0x7c,0x7e,0xe0, - 0xff,0xca,0x9b,0x32,0x4f,0xee,0xb7,0x26,0x7c,0x7e,0xc5,0x67,0x85,0x98,0xd5,0x92, - 0x33,0x9e,0x17,0xdf,0x5f,0x98,0x87,0x39,0xe2,0xd6,0x4a,0xe6,0x74,0x56,0x7c,0x7f, - 0x66,0xbe,0x67,0x88,0xb3,0x3c,0x7b,0x02,0x93,0x2b,0xd8,0xfe,0x09,0xa7,0xd6,0x19, - 0xd6,0xbf,0x8a,0x19,0xf4,0xfd,0x28,0x0e,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xd9,0x4f,0x5d,0x55, + 0x14,0xc6,0xcf,0x9d,0x29,0xc8,0x50,0xa0,0x45,0x1a,0xa9,0x76,0x20,0xd1,0x50,0xe1, + 0x26,0x62,0x45,0xb0,0x4d,0xb0,0x62,0xb5,0xa2,0x2d,0x74,0x50,0xe1,0xc1,0xa1,0x44, + 0x5a,0x85,0xaa,0xa0,0xb1,0x8d,0x8d,0x81,0x5a,0x78,0xb0,0x55,0x21,0x86,0x54,0xa3, + 0x90,0x28,0x3c,0x28,0xd8,0x3e,0x98,0xf8,0x64,0x8c,0xd1,0x36,0xb6,0x75,0xf8,0x73, + 0x8c,0x43,0x62,0xe2,0x5e,0xfb,0xfe,0x56,0xf3,0x79,0xa3,0x29,0xc9,0xce,0x39,0xfb, + 0x5b,0xd3,0xf7,0xad,0xbd,0xce,0xbe,0x64,0xd2,0xdb,0x0a,0x49,0x92,0x4a,0x2a,0x93, + 0x8a,0xe4,0xd7,0xa4,0xf4,0xb7,0x3e,0x49,0x07,0x24,0x49,0xaa,0x92,0x7c,0x7c,0xee, + 0xed,0x3f,0xd8,0xdf,0x3e,0xf9,0xda,0x48,0x7b,0xe7,0xbd,0x45,0xb3,0xd7,0x24,0x99, + 0xe8,0x67,0xb6,0xda,0xa4,0x90,0x64,0xc3,0xd3,0xd6,0xf8,0x73,0xc7,0x4f,0x18,0x5e, + 0x1d,0xd6,0xa5,0xb0,0xea,0x82,0x9f,0xe1,0x05,0xcb,0x11,0xde,0xaa,0x63,0x4e,0x8b, + 0x49,0x92,0x47,0x92,0x5c,0xd2,0x40,0xbd,0x6d,0x3c,0x1d,0x4b,0x81,0x55,0x08,0x96, + 0x06,0xab,0x13,0x2c,0x03,0xd6,0x28,0x58,0x16,0xec,0x56,0xc1,0x72,0x60,0xb7,0x09, + 0x96,0x07,0xbb,0x43,0xb0,0x02,0xd8,0x76,0xc1,0x2a,0xc0,0xee,0x14,0x6c,0x1d,0xd8, + 0x0e,0xc1,0x2a,0xc1,0x8a,0x82,0x55,0x81,0x75,0x0a,0x76,0x0b,0x58,0x97,0x60,0xd5, + 0x60,0x0f,0xc4,0x3e,0x65,0x6e,0xe8,0xb5,0x9e,0xed,0x09,0xcf,0xad,0xf4,0xc7,0xf7, + 0x5b,0x64,0x6f,0x7d,0xde,0xcc,0xbe,0x21,0x44,0xa5,0xa3,0x3d,0x13,0x7b,0x63,0xef, + 0x1b,0x82,0x4f,0x1e,0x9d,0xd6,0xd7,0xa6,0xb0,0x2f,0xa0,0xdf,0xec,0x1b,0x83,0x67, + 0x25,0x76,0xb3,0x55,0xa1,0x25,0x1b,0xb1,0x6c,0xe4,0x9b,0x42,0x4b,0x0f,0xfb,0x6a, + 0xc9,0x55,0x83,0xbf,0xd7,0xaa,0x27,0x57,0x12,0x79,0xd5,0xdd,0xe8,0xab,0xd7,0xb4, + 0x55,0x7f,0x93,0xe5,0x3e,0x56,0xbf,0x91,0x7e,0x37,0x50,0xbf,0x31,0xd6,0x29,0x61, + 0x6d,0x68,0xdb,0x08,0x1f,0xf3,0x6f,0xc2,0x56,0x10,0x7b,0x8b,0xe8,0xd9,0x8c,0xbd, + 0x3e,0xce,0x4d,0x3a,0xf6,0xb2,0x0d,0xde,0xde,0x67,0x8f,0x6b,0x63,0x76,0x7c,0xbf, + 0x13,0xed,0xa6,0x7b,0x37,0x39,0x2c,0x6f,0x73,0xc8,0xd8,0xcb,0x3e,0x9d,0xfc,0xfb, + 0x2f,0xc5,0xd3,0x6a,0x3f,0xc8,0x7b,0x2f,0x5a,0x6c,0xbf,0xa7,0xac,0x66,0x5f,0xd9, + 0x7e,0x1f,0x73,0x6e,0xf1,0x8f,0xc1,0x3d,0x0f,0x87,0x27,0x78,0xcf,0x88,0xff,0x20, + 0x1c,0x7c,0x7f,0x44,0xfc,0x9f,0x85,0xa3,0xfa,0x1f,0xa3,0x57,0x66,0x3f,0x8d,0x6f, + 0x56,0xec,0xd3,0x7c,0x03,0xbe,0x3f,0x5f,0xd6,0xfb,0x0b,0xcc,0xb4,0xf1,0xbb,0x48, + 0xee,0xd3,0xe8,0xbb,0xc8,0x3d,0x90,0x89,0xbd,0xcb,0x45,0x5e,0x59,0xf4,0x19,0xf6, + 0x47,0x40,0xac,0xbf,0xbb,0x98,0xbb,0x5a,0xfa,0xbb,0x3f,0x30,0xaa,0xe1,0x5b,0xaf, + 0x65,0x79,0x2f,0x4f,0x30,0xbf,0xeb,0xb1,0xf7,0x86,0x0c,0x4d,0x7c,0xef,0x1b,0x98, + 0x85,0x5d,0xf8,0x34,0x83,0x9f,0x09,0x3e,0xb6,0xdf,0x44,0x5c,0x33,0x71,0x36,0x0b, + 0xb7,0x13,0xd7,0x42,0x9c,0xcf,0xaf,0xe1,0x6b,0xc1,0x67,0x8b,0xdc,0x13,0x36,0x1f, + 0xbf,0x07,0xe6,0xad,0xf0,0xf9,0x2b,0xf8,0xfb,0x7d,0xd1,0x8a,0x1e,0x7b,0x1f,0x08, + 0x71,0x79,0xee,0x8c,0x4d,0xf8,0xbe,0x45,0xbf,0xee,0x02,0x1f,0x0c,0x3b,0xe3,0xf4, + 0x15,0x98,0xfb,0xfd,0x19,0x72,0x78,0x2e,0x7b,0xfe,0x16,0xbc,0xcc,0xef,0x07,0x7c, + 0x72,0xc4,0x6c,0x17,0x0d,0x3b,0xd0,0xd0,0x26,0x1a,0xee,0x06,0x77,0x0d,0xed,0x60, + 0xae,0xa1,0x28,0x1a,0xcc,0xd6,0xc1,0xdd,0x65,0x75,0x3b,0x44,0xc3,0x3d,0xd4,0x4e, + 0x89,0x86,0x4e,0x70,0xd7,0xf0,0x35,0x98,0xfb,0x99,0x06,0xcf,0x55,0x14,0x0d,0x97, + 0xf1,0x69,0x25,0xa6,0x43,0x34,0xdc,0x87,0x86,0x9d,0xa2,0xa1,0x0b,0xdc,0x35,0xdc, + 0x0f,0xe6,0x1a,0x7a,0x44,0x83,0xd9,0xba,0xe3,0xdc,0x95,0xea,0x76,0x33,0x47,0x85, + 0x98,0xaf,0x54,0xfb,0xb2,0x7c,0x8f,0xc6,0xd1,0x7d,0x7b,0x84,0xe3,0x15,0xfc,0x8a, + 0xc4,0x75,0xc3,0xc7,0xbe,0xd9,0x87,0xf8,0x5e,0x7d,0xe6,0x1e,0x86,0x73,0x9f,0xcc, + 0xdc,0x5e,0xf0,0x29,0x66,0xee,0x51,0xb0,0x2b,0xc4,0xd9,0x37,0xdc,0x4f,0xdc,0x3e, + 0xe2,0xac,0xa7,0x8f,0x83,0x7b,0xdf,0xf7,0x13,0x9b,0x08,0x76,0x00,0x2c,0x15,0xdf, + 0xf3,0xf1,0xfb,0x1f,0xc0,0xf7,0x00,0x39,0xbc,0xc6,0x41,0x6a,0x0c,0x4a,0x8d,0x43, + 0xe0,0xcf,0x04,0x66,0x76,0x7f,0x1d,0x46,0xd3,0x00,0x77,0xc6,0x21,0x39,0x8f,0x27, + 0x89,0x3f,0x22,0xe7,0xf1,0x14,0xb8,0x9f,0xc7,0xd3,0x60,0x7e,0x1e,0xc3,0x72,0x1e, + 0x66,0x1b,0x0a,0x6b,0x94,0x1e,0x0f,0xa1,0xa3,0x3e,0xd6,0x2f,0xd5,0xce,0x44,0xee, + 0x15,0xf1,0x5e,0x7a,0x1e,0xec,0xb0,0x7c,0xeb,0x69,0x74,0x9a,0xfd,0x28,0x71,0xbe, + 0xce,0x86,0x5c,0x86,0x8f,0x10,0x7b,0x34,0xe6,0x5a,0x17,0x75,0xbd,0x40,0x9e,0x11, + 0xee,0x9b,0x9c,0xdc,0x93,0x76,0xee,0xc3,0x70,0x1a,0x15,0xbd,0xc7,0xd1,0x7b,0x4c, + 0xf4,0xbe,0x08,0xee,0x7a,0x5f,0x02,0x73,0xbd,0xe3,0xa2,0xd7,0x6c,0x63,0xf6,0x3f, + 0x10,0xb9,0xc7,0x44,0xef,0xcb,0xa2,0xf7,0x4b,0x72,0xbd,0x02,0xbe,0x15,0x4e,0x1e, + 0x37,0xce,0x2c,0x9a,0xcf,0xab,0xd4,0x1c,0xc5,0x7f,0x8c,0xba,0x93,0x52,0xd7,0x7c, + 0x26,0xc2,0x9a,0x24,0x7e,0x42,0xea,0xbe,0xfe,0x1f,0x7d,0x7e,0xe3,0x26,0x7d,0x3e, + 0x49,0x9c,0xaf,0x59,0xfa,0x7c,0x8a,0xd8,0x93,0xd2,0xe7,0x37,0xc9,0x73,0xea,0x7f, + 0xfa,0xec,0x9c,0x26,0xd1,0x64,0x31,0x57,0x89,0x19,0x27,0x7e,0xa2,0xec,0x4c,0x86, + 0xc5,0xf7,0x47,0xce,0x72,0x88,0xb8,0xc9,0xf8,0xdb,0x52,0xfa,0x9d,0x9a,0xc2,0xee, + 0xe7,0x77,0x86,0xf3,0x9b,0x96,0xf3,0x7b,0x1b,0xdc,0xcf,0xef,0x2c,0x98,0x9f,0xdf, + 0xac,0xf4,0xd1,0x6c,0x33,0x61,0x9d,0x83,0xc7,0x0c,0x3a,0xad,0xd6,0x3b,0xd4,0x9b, + 0x42,0x67,0x81,0x9e,0xb9,0xce,0x59,0x62,0xce,0x09,0x9f,0x77,0xe1,0x73,0x5e,0xf8, + 0xbc,0x07,0xee,0x7c,0xde,0x07,0x73,0x3e,0xf3,0xc2,0xc7,0x6c,0x73,0x61,0x2d,0x90, + 0x7b,0x4e,0xee,0x81,0x0f,0xe0,0x92,0xe1,0x0e,0x36,0x8e,0xdf,0x08,0xee,0xf7,0xdb, + 0x3c,0xb1,0x0b,0x72,0x2f,0x7c,0x08,0xaf,0x0b,0x72,0x2f,0x7c,0x04,0x7e,0x95,0xfc, + 0x1f,0x83,0x0d,0x0a,0xd7,0x4f,0xc0,0xfb,0xe0,0xba,0x24,0x5c,0xcd,0xb6,0x18,0xd6, + 0x12,0xf5,0x16,0x85,0xd7,0xb7,0xc4,0x4c,0xc9,0x6f,0x83,0xfb,0x2d,0x71,0xd6,0xe6, + 0x77,0x0d,0x9f,0x05,0x62,0x16,0x85,0xcf,0xa7,0xf0,0x69,0x11,0x3e,0x9f,0x81,0x3b, + 0x9f,0x15,0xe1,0x63,0xb6,0xe5,0xb0,0x56,0xa8,0xb3,0x2c,0x7c,0xbe,0x23,0xe6,0x1a, + 0x67,0x68,0x7c,0xdc,0x6f,0x45,0xf8,0x5c,0xc7,0x67,0x89,0x98,0x65,0xe1,0xf3,0x39, + 0x7c,0xa6,0x85,0xcf,0x17,0xe0,0xce,0x67,0x4d,0xf8,0x98,0x6d,0x35,0xfa,0x96,0xea, + 0xac,0x0a,0x9f,0xef,0xf9,0x9f,0xe5,0xba,0xcc,0x93,0xfb,0xad,0x09,0x9f,0x5f,0xf0, + 0x59,0x21,0x66,0xb5,0xec,0x8c,0xe7,0xc5,0xf7,0x67,0xe6,0x61,0x8e,0xb8,0xb5,0xb2, + 0x39,0x9d,0x15,0xdf,0x9f,0x98,0xef,0x19,0xe2,0x2c,0xcf,0xee,0xc0,0xe4,0x12,0xb6, + 0xbf,0xc3,0xa9,0x75,0x85,0xf5,0x0f,0xfd,0x78,0xb3,0x42,0x28,0x0e,0x00,0x00 }; // Generated from: @@ -93,8 +93,8 @@ constexpr uint8_t kImageCopy_frag_00000026[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform itexture3D src; -// layout(location = 0)out uvec4 dst; +// layout(set = 0, binding = 0)uniform utexture3D src; +// layout(location = 0)out ivec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -138,7 +138,7 @@ constexpr uint8_t kImageCopy_frag_00000026[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); // // if(params . premultiplyAlpha) // { @@ -149,7 +149,7 @@ constexpr uint8_t kImageCopy_frag_00000026[] = { // srcValue . rgb /= srcValue . a; // } // -// uvec4 dstValue = uvec4(srcValue); +// ivec4 dstValue = ivec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc new file mode 100644 index 0000000000000000000000000000000000000000..c4aa868ddf8ac412d6b98578ca50bf49c582cde2 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc @@ -0,0 +1,182 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.00000027.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_00000027[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xfb,0x4f,0xd7,0x65, + 0x14,0xc7,0x9f,0xef,0x1d,0x21,0x2e,0x02,0x4a,0x54,0x98,0x17,0xd8,0x6c,0x18,0x7c, + 0x57,0x64,0x04,0xe9,0x86,0x19,0xba,0xb2,0x10,0x4d,0xa9,0xe0,0x87,0x5c,0x38,0xa1, + 0xe2,0xdb,0x85,0xef,0x5a,0xba,0x6c,0x41,0x0a,0x6d,0x69,0x05,0x6b,0xcc,0x5a,0xc2, + 0x56,0xf0,0x43,0xc2,0xf4,0x87,0xb6,0x7e,0x6a,0xad,0x95,0xcd,0xb4,0xcb,0x7f,0xd3, + 0xba,0x6c,0x6d,0x9d,0xf3,0x7c,0x5f,0xc7,0x9d,0xbe,0xab,0xc9,0xf6,0xec,0xc3,0xf3, + 0x3e,0xb7,0xf7,0xfb,0x9c,0xe7,0x79,0x20,0x95,0xdc,0x96,0x0b,0x21,0x11,0x2a,0x43, + 0x45,0xf8,0x35,0x94,0x7e,0xd6,0x87,0xa4,0x20,0xa5,0xef,0x7d,0xf2,0xad,0x0a,0xd9, + 0xb8,0xdf,0x77,0xe0,0xf0,0x81,0x8e,0xc9,0xe2,0x68,0x47,0xd7,0x03,0x79,0xf5,0xab, + 0x09,0xa9,0xe8,0xaf,0xb6,0xda,0x90,0x0b,0x69,0xf9,0xea,0x9a,0x38,0x36,0x5e,0x50, + 0xbc,0x5a,0xd6,0x15,0x59,0x75,0xe2,0xa7,0x78,0x4e,0x73,0xc8,0x6f,0xd5,0x31,0xa7, + 0xc6,0x84,0xb0,0x3f,0x64,0x42,0x03,0x75,0xb7,0xf1,0x35,0x2c,0x01,0x56,0xe1,0xb0, + 0x24,0x58,0x9d,0xc3,0x52,0x60,0x8d,0x0e,0x4b,0x83,0xdd,0xee,0xb0,0x0c,0xd8,0x5d, + 0x0e,0xcb,0x82,0x6d,0x76,0x58,0x0e,0xac,0xd5,0x61,0x15,0x60,0xdb,0x1d,0xb6,0x0e, + 0x6c,0x87,0xc3,0x2a,0xc1,0xf2,0x0e,0xab,0x02,0xeb,0x72,0xd8,0x6d,0x60,0xdd,0x0e, + 0xab,0x06,0x7b,0x38,0xf6,0x29,0x75,0x53,0xaf,0xf6,0x6c,0xaf,0x7c,0xb7,0xd2,0x1f, + 0xdb,0x6f,0x71,0x7b,0xed,0xf3,0x26,0xf6,0x0d,0x12,0x95,0x8c,0xf6,0x54,0xec,0x8d, + 0xfe,0xbe,0x41,0x7c,0xb2,0xe8,0xd4,0xbe,0x36,0xc9,0x3e,0x87,0x7e,0xb5,0x6f,0x14, + 0xcf,0x4a,0xec,0x6a,0xab,0x42,0x4b,0x3a,0x62,0xe9,0xc8,0x37,0x81,0x96,0x5e,0xf6, + 0xd5,0x2e,0x57,0x0d,0xfe,0x56,0xab,0x9e,0x5c,0x21,0xf2,0xaa,0xbb,0xd9,0x57,0xab, + 0xa9,0xab,0xfe,0x16,0xcb,0x7c,0xb4,0x7e,0x23,0xfd,0x6e,0xa0,0x7e,0x63,0xac,0x53, + 0xc2,0xda,0xd1,0xb6,0x11,0x3e,0xea,0xdf,0x84,0x2d,0xe7,0xec,0x2d,0x4e,0xcf,0x26, + 0xec,0xf5,0xf1,0xdc,0x24,0x63,0x2f,0xdb,0xe1,0x6d,0x7d,0xb6,0xb8,0x76,0xce,0x8e, + 0xed,0x77,0xa2,0x5d,0x75,0xef,0x26,0x87,0xe6,0x6d,0x96,0x8c,0x7d,0xec,0x13,0xe1, + 0xdf,0x3f,0xb6,0xbf,0x53,0xfa,0xbc,0x47,0xbe,0x7d,0xf0,0x78,0x04,0x7c,0x0f,0xba, + 0x74,0xbf,0xb7,0xac,0x7e,0x7f,0xd9,0x7e,0x90,0x3e,0x6b,0xfc,0x21,0x74,0x64,0x9d, + 0x7d,0x88,0xbd,0xf2,0x3b,0x06,0x9f,0x94,0xb3,0x8f,0xd3,0x17,0xb5,0x9f,0xc6,0x37, + 0xed,0xec,0xd3,0x9c,0x77,0xdb,0x9f,0x2f,0xeb,0xf3,0x05,0xce,0xaf,0xd6,0xbf,0x4c, + 0xee,0xd3,0xf0,0xbf,0xcc,0x9d,0x4f,0xc5,0x3e,0x65,0x22,0xcf,0x34,0xfc,0x15,0xfb, + 0x43,0x10,0xed,0xe5,0x2e,0xce,0x58,0x2d,0xbd,0x1c,0x10,0x46,0x35,0xdc,0xeb,0x5a, + 0x96,0xf5,0xad,0xc0,0x59,0x5d,0x8f,0xbd,0x4f,0x32,0x34,0x71,0xb7,0x37,0x30,0xf7, + 0x5d,0xf8,0x34,0x83,0x4f,0x8b,0x8f,0xee,0xef,0x20,0xae,0x99,0x38,0x9d,0xfb,0xdd, + 0xc4,0xb5,0x10,0x67,0x67,0x55,0xf1,0x55,0xf1,0xd9,0xe2,0xde,0x04,0x3d,0x0b,0xbf, + 0x0b,0xf3,0x36,0xf8,0xfc,0x25,0xfe,0xf6,0x36,0xb4,0xa1,0xa7,0x35,0xce,0x24,0x13, + 0x7b,0xb3,0x9d,0x9a,0xfa,0xf3,0x16,0xfd,0xba,0x07,0xfc,0x90,0xec,0x94,0xd3,0x97, + 0x60,0xe6,0xf7,0xa7,0xe4,0xb0,0x5c,0xfa,0xfd,0x4d,0xbc,0xd4,0xef,0x7b,0x7c,0x32, + 0xc4,0xb4,0x3a,0x0d,0x3b,0xd0,0xd0,0xee,0x34,0xdc,0x0b,0x6e,0x1a,0x3a,0xc0,0x4c, + 0x43,0xde,0x69,0x50,0x5b,0x27,0xef,0x94,0xd6,0xed,0x74,0x1a,0xee,0xa7,0x76,0xc2, + 0x69,0xe8,0x02,0x37,0x0d,0x5f,0x81,0x99,0x9f,0x6a,0xb0,0x5c,0x79,0xa7,0xe1,0x2a, + 0x3e,0x6d,0xc4,0x74,0x3a,0x0d,0x0f,0xa2,0x61,0xa7,0xd3,0xd0,0x0d,0x6e,0x1a,0x1e, + 0x02,0x33,0x0d,0xbd,0x4e,0x83,0xda,0x7a,0xe2,0xb9,0x2b,0xd5,0xed,0xe1,0x1c,0xe5, + 0x62,0xbe,0x52,0xed,0xab,0xee,0xee,0x29,0x47,0xf3,0xed,0x75,0x1c,0x7f,0xc0,0x2f, + 0x4f,0x5c,0x0f,0x7c,0xf4,0x4e,0x3e,0xca,0x7d,0xb4,0x33,0xb7,0x0f,0xce,0xfd,0xee, + 0xcc,0xed,0x07,0x7f,0x9b,0x33,0xf7,0x18,0x98,0xe6,0x7d,0x99,0xb7,0xf1,0x71,0xf0, + 0x51,0xd9,0xeb,0xdd,0x7f,0x82,0xdc,0x27,0x88,0x79,0x12,0xac,0xdf,0xc5,0x0c,0x80, + 0xbf,0x2b,0x3e,0xba,0x3f,0x48,0x9e,0x01,0xf8,0xe8,0xdd,0x3f,0x0c,0x9f,0x41,0xf8, + 0xe8,0xac,0x9e,0x02,0xd7,0x3c,0xfa,0x26,0x1f,0x01,0x1b,0x92,0x4a,0xfa,0x5e,0x1d, + 0xa5,0xf6,0x41,0x7a,0x73,0xc4,0xcd,0xe4,0x69,0xf2,0x0d,0xb9,0x99,0x3c,0x03,0x6e, + 0x33,0x79,0x16,0xcc,0x66,0x32,0xe2,0x66,0xa2,0xb6,0x61,0x59,0x63,0xf4,0x79,0x98, + 0x73,0xa5,0x79,0x9e,0xa3,0x76,0x2a,0x6a,0xa8,0x88,0x6f,0xd3,0xf3,0x60,0x47,0xdd, + 0x7d,0x4f,0x46,0x6e,0xd9,0x68,0x1f,0x25,0xce,0xd6,0x19,0xc9,0xa5,0xf8,0x71,0x62, + 0x47,0x63,0xae,0x75,0x51,0xd7,0x09,0xf2,0x1c,0xe7,0xcd,0xc9,0xf0,0xb6,0xa5,0x98, + 0xfd,0x08,0x9c,0xc6,0x9c,0xde,0x17,0xd0,0x3b,0xee,0xf4,0xbe,0x08,0x6e,0x7a,0x5f, + 0x02,0x33,0xbd,0x05,0xa7,0x57,0x6d,0x13,0xf1,0x8d,0x2a,0xe5,0x9e,0x70,0x7a,0x5f, + 0x71,0x7a,0xd7,0xc8,0xf5,0x2a,0xf8,0x56,0x38,0x59,0x5c,0x81,0xf3,0xa8,0x3e,0xaf, + 0x51,0x73,0x0c,0xff,0x09,0xea,0x16,0x5d,0x5d,0xf5,0x99,0x94,0x55,0x24,0x7e,0xd2, + 0xd5,0x7d,0xfd,0x3f,0xfa,0xfc,0xc6,0x2d,0xfa,0x7c,0x92,0x38,0x5b,0x33,0xf4,0xf9, + 0x14,0xb1,0x27,0x5d,0x9f,0xdf,0x24,0xcf,0xa9,0xff,0xe9,0xb3,0x71,0x2a,0xa2,0x49, + 0x63,0x7e,0x24,0xa6,0x40,0xfc,0x64,0xd9,0x4c,0x46,0x9c,0xef,0x35,0x66,0x39,0x4c, + 0x5c,0x31,0xc6,0x94,0xfe,0x56,0x4d,0x61,0xb7,0xf9,0xbd,0xc3,0xfc,0xa6,0xdd,0xfc, + 0xce,0x80,0xdb,0xfc,0xce,0x82,0xd9,0xfc,0x66,0x5d,0x1f,0xcf,0x46,0xad,0x21,0x9c, + 0x83,0xc7,0x0c,0x3a,0xb5,0xd6,0x7b,0xd4,0x9b,0x42,0x67,0x8e,0x9e,0x99,0xce,0x59, + 0x62,0xce,0x39,0x3e,0xef,0xc3,0xe7,0xbc,0xe3,0xf3,0x01,0xb8,0xf1,0xf9,0x10,0xcc, + 0xf8,0xcc,0x3b,0x3e,0x6a,0x9b,0x93,0xb5,0x40,0xee,0x39,0xf7,0x2e,0x7f,0x04,0x97, + 0x14,0xef,0xb0,0x72,0xfc,0xda,0xe1,0xf6,0xc6,0xcd,0x13,0xbb,0xe0,0xde,0x89,0x8f, + 0xe1,0x75,0xc1,0xbd,0x13,0x9f,0x80,0x5f,0x23,0xff,0xa7,0x60,0x83,0x8e,0xeb,0x45, + 0xf0,0x7e,0xb8,0x2e,0x39,0xae,0x6a,0x5b,0x94,0xb5,0x44,0xbd,0x45,0xc7,0xeb,0x1b, + 0x62,0xa6,0xdc,0xdf,0x07,0xf3,0x5b,0x62,0xd6,0xea,0x77,0x1d,0x9f,0x05,0x62,0x16, + 0x1d,0x9f,0xcf,0xe0,0xd3,0xe2,0xf8,0x7c,0x0e,0x6e,0x7c,0x56,0x1c,0x1f,0xb5,0x2d, + 0xcb,0x5a,0xa1,0xce,0xb2,0xe3,0xf3,0x2d,0x31,0xd7,0x99,0xa1,0xf2,0x31,0xbf,0x15, + 0xc7,0xe7,0x06,0x3e,0x4b,0xc4,0x2c,0x3b,0x3e,0x5f,0xc0,0x67,0xda,0xf1,0xb9,0x04, + 0x6e,0x7c,0xd6,0x1c,0x9f,0x4b,0xd1,0x2f,0x44,0x4c,0xeb,0xac,0x3a,0x3e,0xdf,0xf1, + 0x7f,0xcb,0x0d,0x77,0x9e,0xcc,0x6f,0xcd,0xf1,0xf9,0x05,0x9f,0x15,0x62,0x56,0xcb, + 0x66,0x3c,0xef,0x7c,0x7f,0xe6,0x3c,0xcc,0x11,0xb7,0x56,0x76,0x4e,0x67,0x9d,0xef, + 0x4f,0x9c,0xef,0x19,0xe2,0x34,0xcf,0x6e,0x61,0x72,0x05,0xdb,0xdf,0x32,0xb5,0x6e, + 0x59,0xff,0x00,0xf8,0x5e,0x0d,0x78,0x20,0x0e,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform usampler2D src; +// layout(location = 0)out ivec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// uvec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// ivec4 dstValue = ivec4(srcValue); +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc index 3497e177e5406a92cbc2232c70811b947b4482b9..9ae78d6c83b875b0ab552573981555f08b29f2b6 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc @@ -10,109 +10,78 @@ #pragma once constexpr uint8_t kImageCopy_frag_00000028[] = { - 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x98,0x6d,0x68,0x96,0x55, - 0x18,0xc7,0xcf,0x79,0x9e,0xed,0xd9,0xd4,0x69,0x66,0x9a,0xf3,0x6d,0x6c,0xbe,0x65, - 0x6d,0xcd,0x97,0x6c,0x9a,0xfa,0xa8,0xcb,0x97,0x8d,0x9a,0xce,0x4d,0x0a,0xcc,0x4c, - 0x34,0x2b,0x35,0x9d,0xb5,0x05,0x45,0x8a,0x4e,0xdd,0x2a,0x1d,0x91,0xd2,0x87,0x28, - 0xcd,0x14,0x82,0x88,0xc2,0xc0,0x4a,0x3f,0xa4,0x95,0x23,0xcc,0xa2,0x5c,0x50,0x0e, - 0xca,0x85,0x7e,0xea,0x63,0x24,0x69,0xa9,0x11,0x75,0xae,0xfb,0xfc,0xae,0xed,0x72, - 0xf4,0xf2,0xc0,0xe1,0xbe,0xcf,0xff,0xba,0xfe,0xd7,0xcb,0xff,0xbc,0xdc,0xce,0x74, - 0x6a,0x4c,0x9e,0x73,0xde,0xf5,0x75,0xf9,0xae,0xde,0xbb,0xe4,0x77,0xa3,0x4b,0x39, - 0x79,0xed,0xe7,0x32,0xc9,0xb3,0xaa,0x66,0x69,0x4d,0x79,0xd3,0x53,0x6b,0xca,0xa7, - 0xde,0x39,0x49,0xec,0x03,0x5c,0x3a,0xf1,0x13,0xdb,0x0d,0x2e,0xcf,0xe5,0x84,0xa7, - 0x8c,0x8d,0xab,0xd6,0x35,0x08,0x3e,0x3e,0x8c,0x0b,0x61,0x0c,0x0c,0x7e,0x82,0xe7, - 0x49,0x8c,0xf0,0x36,0x3e,0x89,0x29,0x1c,0xe7,0xaa,0x5d,0xae,0x2b,0x8b,0xe9,0xdc, - 0x18,0x9e,0x8a,0x79,0xb0,0x7c,0x83,0xa5,0xc0,0x06,0x1a,0x2c,0x0d,0x36,0xd8,0x60, - 0x39,0x60,0x85,0x06,0xcb,0x05,0x1b,0x69,0xb0,0x0c,0x58,0xb1,0xc1,0xf2,0xc0,0xc6, - 0x1a,0x2c,0x1f,0x6c,0x82,0xc1,0xfa,0x80,0x95,0x19,0xac,0x2f,0xd8,0x24,0x83,0xf5, - 0x03,0x9b,0x6a,0xb0,0x02,0xb0,0xe9,0x06,0xeb,0x0f,0x36,0x2b,0xd1,0x29,0xdd,0xdd, - 0xaf,0x68,0xb6,0x3c,0x3c,0x47,0xa3,0x8f,0xce,0x4b,0xcc,0x5c,0x74,0x2e,0x62,0x7e, - 0x53,0x60,0xa5,0x12,0x7b,0x3a,0xd1,0x46,0xde,0x6f,0x0e,0x6f,0x19,0xfa,0x2c,0x0d, - 0xfe,0x19,0xf2,0xfd,0x74,0x78,0x5c,0x76,0x70,0xf0,0x18,0x60,0x70,0xd1,0xec,0x70, - 0xd5,0xaa,0xac,0xce,0x45,0xaf,0xd7,0x5e,0x1d,0x36,0x77,0x48,0x98,0x17,0x13,0x43, - 0xd6,0x66,0x68,0x98,0x97,0x30,0x4f,0x31,0x1f,0x8b,0xa6,0x39,0x09,0x9e,0xe3,0xc6, - 0xe1,0x2b,0xf8,0x4c,0xe6,0xe3,0x0d,0xff,0x16,0xfc,0x85,0x2f,0xf1,0x4b,0x89,0xe7, - 0x92,0x7e,0x06,0x26,0x1a,0x94,0x30,0x8a,0xbb,0xeb,0xff,0xef,0x51,0xdc,0xfd,0xcc, - 0x71,0xb7,0xb3,0x4e,0x65,0xe4,0x97,0x79,0x39,0x58,0x29,0xfd,0x4c,0xa4,0x1e,0xf1, - 0x9f,0x84,0xad,0xc4,0xd8,0x2b,0x4c,0x3f,0xd3,0xba,0xb9,0xd1,0x2e,0xcf,0x19,0xd4, - 0xab,0xfe,0xf3,0xd8,0x6b,0x3a,0x5f,0x8c,0xd6,0xd2,0xef,0xfd,0x70,0x25,0xde,0xb0, - 0x10,0x69,0x19,0xf3,0x94,0xbb,0xfe,0xc7,0x11,0x4c,0x72,0x3e,0xc0,0xfb,0x32,0x7a, - 0x90,0xf9,0xf2,0x5e,0x39,0x57,0xf4,0x9a,0xaf,0xe6,0x5c,0x08,0xff,0x61,0x6a,0x2e, - 0xa6,0x86,0x47,0x79,0x4f,0x1b,0xff,0xf5,0xd4,0xa0,0xf3,0x06,0xd6,0x45,0xfc,0x9f, - 0xa1,0x46,0xeb,0xdf,0xcc,0x39,0xd1,0xf9,0x7e,0xf6,0xb9,0xce,0x8f,0x70,0x66,0x74, - 0x7e,0xa2,0x97,0xe6,0xa7,0x39,0x03,0xba,0xc7,0xbe,0x31,0xf5,0xcb,0xfc,0xc7,0x64, - 0xd6,0x3c,0x47,0xea,0x3f,0x4f,0x6e,0xdd,0x43,0xe7,0xb9,0x57,0xd2,0xc6,0x7f,0x56, - 0x10,0x6c,0x7b,0x73,0xf3,0xcc,0xb2,0x50,0x95,0xf8,0x65,0x7d,0xc4,0xec,0x50,0xdf, - 0xd9,0xe1,0x7d,0xd3,0x5b,0x8d,0x73,0x74,0x3e,0x27,0xcc,0xf7,0xee,0x3c,0x90,0xad, - 0x08,0xab,0x96,0x62,0x6d,0x1c,0xf1,0xaf,0x04,0x44,0xd6,0x32,0xcb,0xde,0x9e,0xc0, - 0xfe,0xad,0x0d,0x79,0x64,0xef,0xde,0x0a,0x36,0xc1,0xac,0x5b,0x03,0xe7,0xe2,0x36, - 0xec,0x95,0x21,0x82,0xec,0xab,0xc9,0xec,0xbd,0x89,0xc4,0x13,0x9f,0x29,0xe0,0x3b, - 0x82,0x8f,0xcc,0xef,0x80,0x37,0x05,0xde,0x34,0xee,0x88,0x72,0xf6,0x61,0x96,0x3d, - 0x77,0x17,0xf8,0x3b,0xc1,0x67,0x40,0xa2,0x4b,0xc4,0x64,0x2f,0xfe,0x1e,0x2a,0xcf, - 0x52,0xcf,0xb5,0xe0,0x3f,0x93,0x3b,0x25,0x4b,0x3f,0xf2,0x5e,0x17,0x78,0xb2,0x0e, - 0x73,0xc9,0x29,0xbf,0xad,0xac,0x4d,0x25,0x78,0x7d,0x50,0x47,0x6a,0x1a,0xed,0x23, - 0xa6,0x7e,0x57,0x43,0x0c,0x8d,0x25,0xcf,0xcb,0x41,0x0b,0xf1,0x9b,0xeb,0xa3,0x4f, - 0x2e,0x9c,0x59,0xa6,0x87,0xf9,0xf4,0x30,0xcf,0xf4,0xb0,0x00,0x5c,0x7b,0x58,0x08, - 0xa6,0x3d,0x54,0x9b,0x1e,0x16,0x26,0xf7,0x9c,0x4b,0x30,0xc9,0x5b,0x65,0x7a,0xb8, - 0x97,0xdc,0xde,0xf4,0x50,0x03,0xae,0x3d,0x8c,0xf3,0x11,0x53,0x3f,0xe9,0x41,0x63, - 0x55,0x9b,0x1e,0x2a,0x7d,0xf4,0xc9,0xc2,0xa9,0x32,0x3d,0xd4,0xd2,0xc3,0x62,0xd3, - 0xc3,0x12,0x70,0xed,0xa1,0x0e,0x4c,0x7b,0x58,0x6a,0x7a,0xa8,0x4b,0xea,0x71,0x09, - 0x26,0x79,0xeb,0xd9,0x47,0x92,0xf7,0x3e,0x72,0x57,0xfa,0x9e,0xb3,0x2f,0x35,0xaa, - 0xef,0x52,0x53,0xe3,0xdd,0xf8,0x55,0xc3,0xab,0xa7,0x1e,0xb9,0x1f,0x1e,0xe4,0x6e, - 0xd0,0x3d,0xf7,0x10,0x35,0xaf,0x30,0x7b,0x6e,0x25,0x78,0x33,0x7b,0x6e,0x15,0x58, - 0x12,0x37,0x60,0x72,0x5f,0xac,0x81,0xb7,0x1a,0x9e,0x68,0xfa,0x08,0xb8,0xea,0xfe, - 0x18,0x5c,0x67,0xb0,0xb5,0x60,0x3e,0xd1,0x21,0x93,0xdc,0x35,0xeb,0xf0,0x5d,0x4b, - 0x0c,0xcd,0xf1,0x38,0x39,0xd6,0x9b,0x1c,0x1b,0xc0,0x57,0x86,0x5e,0xe5,0xae,0xdc, - 0x48,0x4f,0xeb,0xb8,0x9f,0x36,0x98,0xf5,0xd8,0x04,0xbf,0xc1,0xac,0xc7,0x13,0xe0, - 0xba,0x1e,0x4f,0x82,0xe9,0x7a,0x34,0x99,0xf5,0x10,0x5b,0x63,0x18,0xdb,0xd0,0x78, - 0x9b,0x89,0xbd,0x9d,0xd8,0xcd,0x26,0xf6,0x0e,0x70,0x8d,0xbd,0x13,0x4c,0x63,0xb7, - 0x9a,0xd8,0x62,0x6b,0x09,0xa3,0x95,0xd8,0x2d,0x68,0x24,0x71,0x9e,0xa7,0x2f,0xb9, - 0x5f,0xde,0x25,0xd6,0x0b,0xe0,0x33,0x58,0x77,0xe5,0xb5,0xb2,0xee,0xe2,0xb3,0x8b, - 0x9c,0xdb,0xf0,0x6f,0x21,0x6f,0x9b,0xc9,0x2b,0x3e,0xbb,0xc3,0x68,0x83,0xbf,0xdb, - 0xe4,0x7d,0xd1,0xe4,0xad,0x0d,0xb7,0xb3,0xdc,0xeb,0x2f,0x81,0x6d,0x34,0xf7,0x57, - 0x8a,0xb5,0x13,0xfb,0x1e,0x78,0x3a,0x9e,0x0b,0xb1,0x04,0xdf,0x0b,0x77,0x4f,0x12, - 0xab,0x4f,0xb2,0x56,0x2f,0x13,0x67,0x2f,0x77,0x68,0x2e,0xdf,0x90,0x34,0x3d,0x69, - 0x4d,0x6d,0xf4,0x24,0x9c,0x05,0x3e,0x72,0x5a,0xe1,0xef,0xc6,0xb7,0x09,0xdf,0x46, - 0x53,0xff,0xd3,0xff,0x50,0xff,0xb3,0xff,0x53,0xff,0x66,0x78,0x3a,0x5a,0xa8,0x7f, - 0x0b,0xdc,0xcd,0xa6,0xfe,0xad,0xc4,0xd9,0xf2,0x2f,0xf5,0x6b,0x4d,0x4d,0xa6,0xfe, - 0xf9,0x3e,0xf6,0xd0,0x06,0xbf,0x31,0xd9,0x6f,0xf1,0x5b,0xf1,0x0a,0xf6,0xd6,0x10, - 0x49,0xe6,0xfb,0xc0,0xb2,0xbe,0x67,0x9f,0xbd,0xce,0x3e,0xdb,0x6f,0xf6,0xd9,0x01, - 0x70,0xdd,0x67,0x6f,0x80,0xe9,0x3e,0x3b,0x64,0xd6,0x5b,0x6c,0x07,0xc3,0x38,0x44, - 0x6d,0x07,0xd1,0x4b,0xea,0x7e,0x93,0x9c,0x0e,0xde,0x35,0xde,0xff,0x08,0xef,0x12, - 0xeb,0x67,0x38,0xf2,0x3c,0x4e,0xae,0x5f,0xe0,0xf5,0x87,0x73,0xd5,0xe4,0x12,0xdb, - 0xc5,0x30,0x2e,0xc1,0xbb,0x94,0x9c,0x87,0x98,0xeb,0x37,0x78,0x85,0x2e,0xf6,0x9b, - 0x49,0xf8,0x11,0x97,0xef,0x6d,0x41,0xd0,0x2b,0x93,0xf0,0xe2,0x1a,0x0d,0xc7,0x3e, - 0x12,0x6d,0xaf,0x11,0xf3,0xa2,0xe1,0xff,0x4a,0x4c,0xf9,0x3e,0x5b,0x1f,0xa9,0xe9, - 0xaf,0x10,0xe5,0x0a,0xd8,0x65,0x62,0x2f,0xf4,0x31,0xfe,0x25,0xb8,0x17,0xb9,0xff, - 0x45,0xfb,0x52,0x1f,0xed,0xfb,0xcc,0x7d,0x25,0x9c,0xb7,0xd1,0xc8,0xd3,0x6f,0x81, - 0xbf,0x5e,0x23,0xe7,0x63,0x4e,0x79,0xaa,0x46,0x29,0x1f,0x79,0xaa,0x51,0x3f,0xdf, - 0xa3,0x91,0xd8,0xd2,0x61,0x64,0xe0,0xc9,0x53,0x35,0xca,0x87,0x67,0x35,0xea,0xe3, - 0x23,0x6e,0x35,0xea,0xeb,0x7b,0x34,0x12,0xbb,0x6a,0x54,0x40,0xcc,0xb4,0xef,0xe1, - 0xe7,0x12,0x53,0x35,0x52,0x1f,0xa9,0x49,0x35,0x12,0x4c,0x35,0xaa,0xf6,0x31,0xbe, - 0xd4,0x95,0x4b,0xad,0xaa,0x51,0xb9,0x8f,0xf6,0x52,0xf2,0xab,0x46,0xef,0xa1,0x51, - 0x8a,0x7e,0x8b,0x7a,0x69,0x34,0x88,0x9c,0x83,0x8c,0x46,0x83,0x7d,0xe4,0xa9,0x46, - 0xa3,0x8c,0x46,0x62,0x1b,0x12,0x46,0x21,0xbc,0x42,0xa3,0xd1,0x70,0x78,0x56,0xa3, - 0x11,0x3e,0xe2,0x56,0xa3,0x91,0x46,0xa3,0x11,0x46,0xa3,0x22,0x62,0x0e,0x31,0x1a, - 0x0d,0x25,0xa6,0x6a,0xa4,0x3e,0xa3,0x8c,0x46,0x45,0x46,0xa3,0x7b,0x7c,0x8c,0x2f, - 0x75,0x0d,0xa5,0x56,0xd5,0x68,0xb2,0x8f,0x76,0xd1,0x2a,0x45,0x4e,0x3d,0x7b,0x87, - 0xd8,0x8b,0xe2,0x57,0xc3,0x5e,0x6b,0x82,0x53,0x64,0xce,0xfc,0xfb,0x9c,0xf9,0x23, - 0xe6,0xcc,0x7f,0x00,0xae,0x67,0xfe,0x43,0x30,0x3d,0xf3,0xc7,0xcc,0x39,0x14,0xdb, - 0xd1,0xe4,0xcc,0xc6,0xbc,0xc7,0xcd,0x77,0xeb,0x63,0x62,0x9f,0x30,0xb1,0x3f,0x01, - 0xd7,0xd8,0x9f,0x82,0x69,0xec,0x76,0x13,0x5b,0x6c,0x27,0xc3,0x38,0x45,0xec,0x53, - 0xe6,0x7b,0xfd,0x05,0xb1,0x4f,0x9b,0xef,0xf5,0x97,0xe0,0x9f,0xf3,0xfd,0xff,0x0a, - 0x6c,0xbd,0xc9,0xf7,0x35,0xf8,0x0a,0xf2,0x75,0x98,0x7c,0x62,0x3b,0x13,0x46,0x07, - 0xf9,0xce,0x98,0x33,0x5b,0xe1,0xe3,0xdf,0x05,0x35,0xe6,0xdf,0x6c,0xea,0xd7,0x61, - 0xb4,0x5e,0xe4,0xa3,0xcf,0x29,0x38,0x67,0x4c,0x3d,0xdf,0x52,0x4f,0x85,0xa9,0xe7, - 0x3b,0x70,0xad,0xa7,0xd3,0xd4,0x23,0xb6,0xb3,0x61,0x74,0x92,0xe7,0xac,0xa9,0x67, - 0x3a,0xf5,0x2c,0x32,0x6b,0xaf,0x7e,0x9d,0xa6,0x9e,0xc5,0x3e,0xfa,0x74,0xc0,0x39, - 0x6b,0xea,0xf9,0x9e,0x7a,0x8e,0x98,0x7a,0x7e,0x00,0xd7,0x7a,0xba,0x4c,0x3d,0x62, - 0x3b,0x17,0x46,0x17,0x79,0xce,0x99,0x7a,0x66,0xf8,0xf8,0x77,0x92,0xe4,0xd3,0x6f, - 0x94,0xfa,0x75,0x99,0x7a,0xea,0x7c,0xf4,0xe9,0x84,0x73,0x0e,0xdf,0x76,0x7c,0x4f, - 0x9a,0xb3,0xfe,0x19,0x7a,0xa7,0x4d,0x9e,0xa9,0xbe,0x07,0x77,0xbd,0xb8,0xed,0x26, - 0xcf,0x12,0x1f,0x73,0x75,0xc1,0x39,0x89,0xef,0x31,0x7c,0x8f,0xf2,0xad,0x15,0xdf, - 0x8f,0x88,0x27,0x43,0xff,0x6f,0x28,0x65,0xbe,0xb5,0xca,0x39,0x66,0xe2,0xd7,0xfa, - 0x98,0xa3,0x1d,0xbe,0xc4,0x9b,0x1d,0x18,0x17,0xb0,0xfd,0x19,0x76,0xc9,0xf4,0x30, - 0xfe,0x06,0xd3,0x23,0xff,0xa6,0xcc,0x12,0x00,0x00 + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xff,0x4f,0xd5,0x55, + 0x18,0xc7,0x0f,0xf7,0x03,0xf7,0x22,0xc4,0x17,0x01,0x25,0x5c,0x58,0x7e,0x61,0xab, + 0x61,0x40,0x8b,0x8c,0x20,0xdd,0xc8,0xc8,0x24,0x94,0x14,0x7e,0xa8,0xa5,0x13,0x4a, + 0x58,0x06,0xb1,0x34,0x7f,0x24,0x85,0xd6,0xd4,0x0a,0xd6,0x98,0xb5,0x82,0xcd,0xe0, + 0x87,0x82,0x59,0xad,0xad,0x9f,0x5a,0x6b,0xa5,0x23,0xcd,0xfa,0x83,0x5a,0x5f,0xb6, + 0xb6,0xce,0x73,0x78,0x3d,0xee,0xdd,0x5d,0xcd,0xbb,0x9d,0xdd,0x7b,0xde,0xcf,0xb7, + 0xf7,0xfb,0x39,0xcf,0x39,0xbb,0x59,0x6e,0x57,0x21,0x84,0x92,0x50,0x11,0xca,0xc3, + 0xaf,0x61,0xe3,0xb3,0x39,0xe4,0x22,0x12,0x42,0x65,0xc8,0xa7,0xef,0x83,0x03,0x43, + 0x03,0x6d,0x6f,0x9e,0x3b,0xd5,0xd6,0xf9,0x58,0x87,0xd9,0xab,0x43,0x96,0xfc,0xcc, + 0x56,0x13,0x0a,0xa1,0x34,0x7e,0xdb,0x7a,0x7d,0xf4,0xf4,0x94,0xe1,0x55,0x71,0x7d, + 0x11,0x57,0x6d,0xf4,0x33,0xbc,0x60,0x39,0xe2,0xaf,0xaa,0x94,0xd3,0x62,0x42,0x78, + 0x36,0x94,0x85,0x7a,0xea,0xed,0xe2,0xdb,0xb1,0x12,0xb0,0x72,0xc1,0x72,0x60,0xb5, + 0x82,0x65,0x60,0x0d,0x82,0x95,0x82,0xdd,0x2b,0x58,0x19,0xd8,0x7d,0x82,0xe5,0xc1, + 0x1e,0x10,0xac,0x00,0xb6,0x5b,0xb0,0x72,0xb0,0x07,0x05,0xdb,0x04,0xb6,0x47,0xb0, + 0x0a,0xb0,0x0e,0xc1,0x2a,0xc1,0x3a,0x05,0xbb,0x07,0xac,0x4b,0xb0,0x2a,0xb0,0x27, + 0x53,0x9f,0xb2,0x3b,0x7a,0xad,0x67,0x07,0xe2,0xf7,0x4e,0xfa,0xe3,0xfb,0x1d,0xb2, + 0xb7,0x3e,0x6f,0x67,0x5f,0x1f,0xa3,0x72,0xc9,0x9e,0xa5,0xde,0xd8,0xef,0x2d,0xd1, + 0x27,0x8f,0x4e,0xeb,0x6b,0x63,0xdc,0x17,0xd0,0x6f,0xf6,0xad,0xd1,0xb3,0x02,0xbb, + 0xd9,0x2a,0xd1,0x52,0x9a,0xb0,0xd2,0xc4,0xb7,0x04,0x2d,0x3d,0xec,0xab,0x24,0x57, + 0x35,0xfe,0x5e,0xab,0x8e,0x5c,0x21,0xf1,0xaa,0xbd,0xd3,0x57,0xaf,0x69,0xab,0xee, + 0x2e,0xcb,0x7d,0xac,0x7e,0x03,0xfd,0xae,0xa7,0x7e,0x43,0xaa,0xb3,0x81,0xb5,0xa2, + 0x6d,0x2b,0x7c,0xcc,0xbf,0x11,0x5b,0x41,0xec,0xcd,0xa2,0x67,0x3b,0xf6,0xba,0x34, + 0x37,0xb9,0xd4,0xcb,0x56,0x78,0x7b,0x9f,0x3d,0xae,0x95,0xd9,0x71,0xfb,0x23,0xd4, + 0x71,0xfb,0x5e,0x7a,0x61,0x7d,0xd8,0x4f,0x4e,0xab,0xd3,0x14,0x2b,0xf4,0xb2,0x2f, + 0x09,0xff,0xfe,0xf8,0xde,0xb8,0x3c,0xc5,0xef,0x5e,0xb4,0xd9,0xfe,0x40,0x11,0x87, + 0xbe,0xa2,0x7d,0x3f,0xbd,0xb6,0xf8,0xe7,0xd0,0x92,0x17,0xfb,0x20,0x7b,0xe3,0xf4, + 0x22,0x1c,0x32,0xb1,0x8f,0x16,0xf5,0x66,0x9a,0x19,0xf7,0xfd,0xe5,0xa2,0xde,0x5e, + 0x61,0x66,0xad,0xde,0x35,0x72,0xed,0x87,0xef,0x35,0xee,0x79,0x96,0x7a,0x51,0x96, + 0x78,0x95,0xc2,0xd7,0xb0,0x3f,0x22,0x62,0xfd,0xdb,0xc7,0x5c,0xd5,0xd0,0xaf,0xc1, + 0xc8,0xa0,0x9a,0xbb,0x5c,0xc3,0xf2,0xde,0x4c,0x31,0x9f,0x9b,0xb1,0xf7,0xc6,0x0c, + 0x8d,0xdc,0xe7,0x2d,0x9c,0xf5,0x3e,0x7c,0x9a,0xc0,0xdf,0x8e,0x3e,0xb6,0xdf,0x46, + 0x5c,0x13,0x71,0x76,0xd6,0xf7,0x13,0xd7,0x4c,0x9c,0xcf,0xa7,0xe1,0x5f,0x46,0x9f, + 0x1d,0xf2,0x0e,0xd8,0xf9,0xff,0x1e,0x99,0xb7,0xc0,0xe7,0xaf,0xe8,0xef,0xef,0x41, + 0x0b,0x7a,0xec,0xf7,0xd1,0x18,0x97,0xe7,0x4d,0xd8,0x86,0xef,0x79,0xfa,0xf5,0x10, + 0xf8,0xb1,0xb8,0x33,0x4e,0x5f,0x83,0xb9,0xdf,0x9f,0x31,0x87,0xe7,0xb2,0xef,0xdf, + 0xa2,0x97,0xf9,0xfd,0x88,0x4f,0x19,0x31,0xbb,0x45,0xc3,0x1e,0x34,0xb4,0x8a,0x86, + 0x87,0xc1,0x5d,0x43,0x1b,0x98,0x6b,0xe8,0x10,0x0d,0x66,0x6b,0xe7,0x6d,0xb2,0xba, + 0xed,0xa2,0xe1,0x51,0x6a,0x97,0x88,0x86,0x4e,0x70,0xd7,0xf0,0x0d,0x98,0xfb,0x99, + 0x06,0xcf,0xd5,0x21,0x1a,0xae,0xe3,0xd3,0x42,0x4c,0xbb,0x68,0x78,0x1c,0x0d,0x7b, + 0x45,0x43,0x17,0xb8,0x6b,0x78,0x02,0xcc,0x35,0xf4,0x88,0x06,0xb3,0x75,0xa7,0xb9, + 0xdb,0xa8,0xdb,0xcd,0x1c,0x15,0x52,0xbe,0x8d,0xda,0xd7,0xe5,0x7e,0x19,0x47,0xf7, + 0xed,0x11,0x8e,0x37,0xf0,0xeb,0x20,0xae,0x1b,0x3e,0x76,0x07,0x9f,0xe6,0xfe,0xf9, + 0xcc,0x3d,0x03,0xe7,0x3e,0x99,0xb9,0x83,0xe0,0x33,0xcc,0xdc,0x21,0xb0,0x1b,0xc4, + 0xd9,0x9d,0x1c,0x20,0xae,0x9f,0x38,0xeb,0xe9,0x61,0xf0,0x93,0x31,0xca,0xee,0xcf, + 0x11,0xea,0x1d,0xe2,0x3e,0x1f,0x96,0x5e,0x3d,0x4f,0xfc,0xa0,0xf4,0xea,0x28,0xb8, + 0xf7,0xea,0x18,0x98,0xf7,0x6a,0x58,0x7a,0x65,0xb6,0xa1,0xb8,0x46,0xd0,0x3f,0xc4, + 0x79,0x5b,0x9e,0x17,0xa8,0x9d,0xa5,0xfc,0xe5,0xe9,0x8d,0x78,0x09,0xec,0x88,0xdc, + 0xc3,0x5c,0xaa,0x97,0x4f,0xf6,0xe3,0xc4,0xf9,0x7a,0x27,0xe6,0x32,0xfc,0x04,0xb1, + 0xc7,0x53,0xae,0x4d,0x49,0xd7,0x49,0xf2,0x9c,0xe0,0x2d,0x28,0xe3,0x3d,0xca,0x38, + 0x93,0x61,0x38,0x8d,0x88,0xde,0x97,0xd1,0x3b,0x2a,0x7a,0x5f,0x01,0x77,0xbd,0xa7, + 0xc0,0x5c,0xef,0xb8,0xe8,0x35,0xdb,0x58,0x5c,0xe3,0xe4,0x1e,0x13,0xbd,0xaf,0x8a, + 0xde,0xaf,0xc8,0x75,0x1a,0x7c,0x27,0x9c,0x3c,0x6e,0x9c,0x39,0x31,0x9f,0xd7,0xa8, + 0x39,0x82,0xff,0x18,0x75,0x27,0xa5,0xae,0xf9,0x4c,0xc4,0x35,0x49,0xfc,0x84,0xd4, + 0x9d,0xfa,0x8f,0x3e,0xbf,0x71,0x97,0x3e,0x9f,0x21,0xce,0xd7,0x45,0xfa,0x7c,0x96, + 0xd8,0x33,0xd2,0xe7,0x73,0xe4,0x39,0xfb,0x3f,0x7d,0x76,0x4e,0x93,0x68,0xb2,0x98, + 0x9f,0x88,0x19,0x27,0x7e,0xa2,0xe8,0x4c,0x86,0xc5,0x77,0x9d,0xb3,0x1c,0x22,0x6e, + 0x52,0xce,0xeb,0x2d,0xce,0x6b,0x5a,0xce,0xeb,0x3c,0xb8,0x9f,0xd7,0x05,0x30,0x3f, + 0xaf,0x59,0xe9,0xdb,0x85,0x74,0x7f,0x42,0xb8,0x44,0xdd,0x19,0xd1,0x75,0x91,0xda, + 0xeb,0xe8,0x2a,0xd0,0x23,0xd7,0x35,0x4b,0xcc,0x25,0xe1,0xf3,0x2e,0x7c,0x2e,0x0b, + 0x9f,0xf7,0xc0,0x9d,0xcf,0xfb,0x60,0xce,0x67,0x5e,0xf8,0x98,0x6d,0x2e,0xae,0x05, + 0x72,0xcf,0xc9,0x39,0x7e,0x00,0x97,0x8c,0xf7,0xd0,0x38,0x7e,0x2b,0xb8,0xbf,0x35, + 0xf3,0xc4,0x2e,0xc8,0x3b,0xf0,0x21,0xbc,0xae,0xc8,0x3b,0xf0,0x11,0xf8,0x6d,0xde, + 0xdf,0x8f,0xc1,0xfa,0x85,0xeb,0x27,0xe0,0x7d,0x70,0x5d,0x12,0xae,0x66,0x5b,0x8c, + 0x6b,0x89,0x7a,0x8b,0xc2,0xeb,0x3b,0xf4,0xad,0xcb,0x3b,0xed,0x7e,0x4b,0x72,0xb6, + 0x37,0xf1,0x59,0x20,0x66,0x51,0xf8,0x5c,0x85,0x4f,0xb3,0xf0,0xf9,0x14,0xdc,0xf9, + 0xac,0x08,0x1f,0xb3,0x2d,0xc7,0xb5,0x42,0x9d,0x65,0xe1,0xf3,0x3d,0x7c,0x6e,0x72, + 0x86,0xc6,0xc7,0xfd,0x56,0x84,0xcf,0x2d,0x7c,0x96,0x88,0x59,0x16,0x3e,0x9f,0xc1, + 0x67,0x5a,0xf8,0x7c,0x0e,0xee,0x7c,0xd6,0x84,0x8f,0xd9,0x56,0xe3,0x5a,0xa3,0xce, + 0xaa,0xf0,0xf9,0x81,0xff,0x70,0xb7,0x64,0x9e,0xdc,0x6f,0x4d,0xf8,0xfc,0x82,0xcf, + 0x0a,0x31,0xab,0x45,0x67,0x3c,0x2f,0xbe,0xb7,0x99,0x87,0x39,0xe2,0xd6,0x8a,0xe6, + 0x74,0x56,0x7c,0x7f,0x66,0xbe,0x67,0x88,0x9b,0x4f,0xff,0xa5,0xb2,0xf4,0x1f,0xca, + 0x6c,0x7f,0xc7,0x53,0xeb,0x8a,0xeb,0x1f,0x65,0xe9,0x96,0xe4,0x94,0x0d,0x00,0x00 }; // Generated from: @@ -121,8 +90,8 @@ constexpr uint8_t kImageCopy_frag_00000028[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture3D src; -// layout(location = 0)out vec4 dst; +// layout(set = 0, binding = 0)uniform utexture2D src; +// layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -147,19 +116,6 @@ constexpr uint8_t kImageCopy_frag_00000028[] = { // bool rotateXY; // } params; // -// float sRGBToLinear(float sRGB) -// { -// -// if(sRGB <= 0.04045) -// { -// return sRGB / 12.92; -// } -// else -// { -// return pow((sRGB + 0.055f)/ 1.055f, 2.4f); -// } -// } -// // void main() // { // ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; @@ -179,7 +135,7 @@ constexpr uint8_t kImageCopy_frag_00000028[] = { // srcSubImageCoords . xy = srcSubImageCoords . yx; // } // -// uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip); +// uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip); // // if(params . premultiplyAlpha) // { @@ -190,17 +146,7 @@ constexpr uint8_t kImageCopy_frag_00000028[] = { // srcValue . rgb /= srcValue . a; // } // -// vec4 dstValue = vec4(srcValue); -// -// dstValue /= 255.0; -// -// if(params . dstIsSRGB) -// { -// -// dstValue . r = sRGBToLinear(dstValue . r); -// dstValue . g = sRGBToLinear(dstValue . g); -// dstValue . b = sRGBToLinear(dstValue . b); -// } +// uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc index bdc0b70a863fda45238561bafbf0b98870290e22..8956c91c21b70be2786e3a4295d8753604695b7a 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc @@ -12,79 +12,79 @@ constexpr uint8_t kImageCopy_frag_00000029[] = { 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xd9,0x4f,0x5d,0x55, 0x14,0xc6,0xcf,0x9d,0x29,0xc8,0x50,0xa0,0x45,0x1a,0xa9,0x76,0x20,0xd1,0x50,0xe1, - 0x26,0x62,0x45,0xb0,0x4d,0xb0,0x62,0xb5,0xa2,0x2d,0x74,0x50,0xe1,0xc1,0xa1,0x44, - 0x5a,0x85,0xaa,0xa0,0xb1,0x8d,0x8d,0x81,0x5a,0x78,0xb0,0x55,0x21,0x86,0x54,0xa3, - 0x90,0x28,0x3c,0x28,0xd8,0x3e,0x98,0xf8,0x64,0x8c,0xd1,0x36,0xb6,0x75,0xf8,0x73, - 0x8c,0x43,0x62,0xe2,0x5e,0xfb,0xfe,0x56,0xf3,0x79,0xa3,0x29,0xc9,0xce,0x39,0xfb, - 0x5b,0xd3,0xf7,0xad,0xbd,0xce,0xbe,0x64,0xd2,0xdb,0x0a,0x49,0x92,0x4a,0x2a,0x93, - 0x8a,0xe4,0xd7,0xa4,0xf4,0xb7,0x3e,0x49,0x07,0x24,0x49,0xaa,0x92,0x7c,0x7c,0xee, - 0xed,0x3f,0xd8,0xdf,0x3e,0xf9,0xda,0x48,0x7b,0xe7,0xbd,0x45,0xb3,0xd7,0x24,0x99, - 0xe8,0x67,0xb6,0xda,0xa4,0x90,0x64,0xc3,0xd3,0xd6,0xf8,0x73,0xc7,0x4f,0x18,0x5e, - 0x1d,0xd6,0xa5,0xb0,0xea,0x82,0x9f,0xe1,0x05,0xcb,0x11,0xde,0xaa,0x63,0x4e,0x8b, - 0x49,0x92,0x47,0x92,0x5c,0xd2,0x40,0xbd,0x6d,0x3c,0x1d,0x4b,0x81,0x55,0x08,0x96, - 0x06,0xab,0x13,0x2c,0x03,0xd6,0x28,0x58,0x16,0xec,0x56,0xc1,0x72,0x60,0xb7,0x09, - 0x96,0x07,0xbb,0x43,0xb0,0x02,0xd8,0x76,0xc1,0x2a,0xc0,0xee,0x14,0x6c,0x1d,0xd8, - 0x0e,0xc1,0x2a,0xc1,0x8a,0x82,0x55,0x81,0x75,0x0a,0x76,0x0b,0x58,0x97,0x60,0xd5, - 0x60,0x0f,0xc4,0x3e,0x65,0x6e,0xe8,0xb5,0x9e,0xed,0x09,0xcf,0xad,0xf4,0xc7,0xf7, - 0x5b,0x64,0x6f,0x7d,0xde,0xcc,0xbe,0x21,0x44,0xa5,0xa3,0x3d,0x13,0x7b,0x63,0xef, - 0x1b,0x82,0x4f,0x1e,0x9d,0xd6,0xd7,0xa6,0xb0,0x2f,0xa0,0xdf,0xec,0x1b,0x83,0x67, - 0x25,0x76,0xb3,0x55,0xa1,0x25,0x1b,0xb1,0x6c,0xe4,0x9b,0x42,0x4b,0x0f,0xfb,0x6a, - 0xc9,0x55,0x83,0xbf,0xd7,0xaa,0x27,0x57,0x12,0x79,0xd5,0xdd,0xe8,0xab,0xd7,0xb4, - 0x55,0x7f,0x93,0xe5,0x3e,0x56,0xbf,0x91,0x7e,0x37,0x50,0xbf,0x31,0xd6,0x29,0x61, - 0x6d,0x68,0xdb,0x08,0x1f,0xf3,0x6f,0xc2,0x56,0x10,0x7b,0x8b,0xe8,0xd9,0x8c,0xbd, - 0x3e,0xce,0x4d,0x3a,0xf6,0xb2,0x0d,0xde,0xde,0x67,0x8f,0x6b,0x63,0x76,0x7c,0xbf, - 0x13,0xed,0xa6,0x7b,0x37,0x39,0x2c,0x6f,0x73,0xc8,0xd8,0xcb,0x3e,0x9d,0xfc,0xfb, - 0x2f,0xc5,0xd3,0x6a,0x3f,0xc8,0x7b,0x2f,0x5a,0x6c,0xbf,0xa7,0xac,0x66,0x5f,0xd9, - 0x7e,0x1f,0x73,0x6e,0xf1,0x8f,0xc1,0x3d,0x0f,0x87,0x27,0x78,0xcf,0x88,0xff,0x20, - 0x1c,0x7c,0x7f,0x44,0xfc,0x9f,0x85,0xa3,0xfa,0x1f,0xa3,0x57,0x66,0x3f,0x8d,0x6f, - 0x56,0xec,0xd3,0x7c,0x03,0xbe,0x3f,0x5f,0xd6,0xfb,0x0b,0xcc,0xb4,0xf1,0xbb,0x48, - 0xee,0xd3,0xe8,0xbb,0xc8,0x3d,0x90,0x89,0xbd,0xcb,0x45,0x5e,0x59,0xf4,0x19,0xf6, - 0x47,0x40,0xac,0xbf,0xbb,0x98,0xbb,0x5a,0xfa,0xbb,0x3f,0x30,0xaa,0xe1,0x5b,0xaf, - 0x65,0x79,0x2f,0x4f,0x30,0xbf,0xeb,0xb1,0xf7,0x86,0x0c,0x4d,0x7c,0xef,0x1b,0x98, - 0x85,0x5d,0xf8,0x34,0x83,0x9f,0x09,0x3e,0xb6,0xdf,0x44,0x5c,0x33,0x71,0x36,0x0b, - 0xb7,0x13,0xd7,0x42,0x9c,0xcf,0xaf,0xe1,0x6b,0xc1,0x67,0x8b,0xdc,0x13,0x36,0x1f, - 0xbf,0x07,0xe6,0xad,0xf0,0xf9,0x2b,0xf8,0xfb,0x7d,0xd1,0x8a,0x1e,0x7b,0x1f,0x08, - 0x71,0x79,0xee,0x8c,0x4d,0xf8,0xbe,0x45,0xbf,0xee,0x02,0x1f,0x0c,0x3b,0xe3,0xf4, - 0x15,0x98,0xfb,0xfd,0x19,0x72,0x78,0x2e,0x7b,0xfe,0x16,0xbc,0xcc,0xef,0x07,0x7c, - 0x72,0xc4,0x6c,0x17,0x0d,0x3b,0xd0,0xd0,0x26,0x1a,0xee,0x06,0x77,0x0d,0xed,0x60, - 0xae,0xa1,0x28,0x1a,0xcc,0xd6,0xc1,0xdd,0x65,0x75,0x3b,0x44,0xc3,0x3d,0xd4,0x4e, - 0x89,0x86,0x4e,0x70,0xd7,0xf0,0x35,0x98,0xfb,0x99,0x06,0xcf,0x55,0x14,0x0d,0x97, - 0xf1,0x69,0x25,0xa6,0x43,0x34,0xdc,0x87,0x86,0x9d,0xa2,0xa1,0x0b,0xdc,0x35,0xdc, - 0x0f,0xe6,0x1a,0x7a,0x44,0x83,0xd9,0xba,0xe3,0xdc,0x95,0xea,0x76,0x33,0x47,0x85, - 0x98,0xaf,0x54,0xfb,0xb2,0x7c,0x8f,0xc6,0xd1,0x7d,0x7b,0x84,0xe3,0x15,0xfc,0x8a, - 0xc4,0x75,0xc3,0xc7,0xbe,0xd9,0x87,0xf8,0x5e,0x7d,0xe6,0x1e,0x86,0x73,0x9f,0xcc, - 0xdc,0x5e,0xf0,0x29,0x66,0xee,0x51,0xb0,0x2b,0xc4,0xd9,0x37,0xdc,0x4f,0xdc,0x3e, - 0xe2,0xac,0xa7,0x8f,0x83,0x7b,0xdf,0xf7,0x13,0x9b,0x08,0x76,0x00,0x2c,0x15,0xdf, - 0xf3,0xf1,0xfb,0x1f,0xc0,0xf7,0x00,0x39,0xbc,0xc6,0x41,0x6a,0x0c,0x4a,0x8d,0x43, - 0xe0,0xcf,0x04,0x66,0x76,0x7f,0x1d,0x46,0xd3,0x00,0x77,0xc6,0x21,0x39,0x8f,0x27, - 0x89,0x3f,0x22,0xe7,0xf1,0x14,0xb8,0x9f,0xc7,0xd3,0x60,0x7e,0x1e,0xc3,0x72,0x1e, - 0x66,0x1b,0x0a,0x6b,0x94,0x1e,0x0f,0xa1,0xa3,0x3e,0xd6,0x2f,0xd5,0xce,0x44,0xee, - 0x15,0xf1,0x5e,0x7a,0x1e,0xec,0xb0,0x7c,0xeb,0x69,0x74,0x9a,0xfd,0x28,0x71,0xbe, - 0xce,0x86,0x5c,0x86,0x8f,0x10,0x7b,0x34,0xe6,0x5a,0x17,0x75,0xbd,0x40,0x9e,0x11, - 0xee,0x9b,0x9c,0xdc,0x93,0x76,0xee,0xc3,0x70,0x1a,0x15,0xbd,0xc7,0xd1,0x7b,0x4c, - 0xf4,0xbe,0x08,0xee,0x7a,0x5f,0x02,0x73,0xbd,0xe3,0xa2,0xd7,0x6c,0x63,0xf6,0x3f, - 0x10,0xb9,0xc7,0x44,0xef,0xcb,0xa2,0xf7,0x4b,0x72,0xbd,0x02,0xbe,0x15,0x4e,0x1e, - 0x37,0xce,0x2c,0x9a,0xcf,0xab,0xd4,0x1c,0xc5,0x7f,0x8c,0xba,0x93,0x52,0xd7,0x7c, - 0x26,0xc2,0x9a,0x24,0x7e,0x42,0xea,0xbe,0xfe,0x1f,0x7d,0x7e,0xe3,0x26,0x7d,0x3e, - 0x49,0x9c,0xaf,0x59,0xfa,0x7c,0x8a,0xd8,0x93,0xd2,0xe7,0x37,0xc9,0x73,0xea,0x7f, - 0xfa,0xec,0x9c,0x26,0xd1,0x64,0x31,0x57,0x89,0x19,0x27,0x7e,0xa2,0xec,0x4c,0x86, - 0xc5,0xf7,0x47,0xce,0x72,0x88,0xb8,0xc9,0xf8,0xdb,0x52,0xfa,0x9d,0x9a,0xc2,0xee, - 0xe7,0x77,0x86,0xf3,0x9b,0x96,0xf3,0x7b,0x1b,0xdc,0xcf,0xef,0x2c,0x98,0x9f,0xdf, - 0xac,0xf4,0xd1,0x6c,0x33,0x61,0x9d,0x83,0xc7,0x0c,0x3a,0xad,0xd6,0x3b,0xd4,0x9b, - 0x42,0x67,0x81,0x9e,0xb9,0xce,0x59,0x62,0xce,0x09,0x9f,0x77,0xe1,0x73,0x5e,0xf8, - 0xbc,0x07,0xee,0x7c,0xde,0x07,0x73,0x3e,0xf3,0xc2,0xc7,0x6c,0x73,0x61,0x2d,0x90, - 0x7b,0x4e,0xee,0x81,0x0f,0xe0,0x92,0xe1,0x0e,0x36,0x8e,0xdf,0x08,0xee,0xf7,0xdb, - 0x3c,0xb1,0x0b,0x72,0x2f,0x7c,0x08,0xaf,0x0b,0x72,0x2f,0x7c,0x04,0x7e,0x95,0xfc, - 0x1f,0x83,0x0d,0x0a,0xd7,0x4f,0xc0,0xfb,0xe0,0xba,0x24,0x5c,0xcd,0xb6,0x18,0xd6, - 0x12,0xf5,0x16,0x85,0xd7,0xb7,0xc4,0x4c,0xc9,0x6f,0x83,0xfb,0x2d,0x71,0xd6,0xe6, - 0x77,0x0d,0x9f,0x05,0x62,0x16,0x85,0xcf,0xa7,0xf0,0x69,0x11,0x3e,0x9f,0x81,0x3b, - 0x9f,0x15,0xe1,0x63,0xb6,0xe5,0xb0,0x56,0xa8,0xb3,0x2c,0x7c,0xbe,0x23,0xe6,0x1a, - 0x67,0x68,0x7c,0xdc,0x6f,0x45,0xf8,0x5c,0xc7,0x67,0x89,0x98,0x65,0xe1,0xf3,0x39, - 0x7c,0xa6,0x85,0xcf,0x17,0xe0,0xce,0x67,0x4d,0xf8,0x98,0x6d,0x35,0xfa,0x96,0xea, - 0xac,0x0a,0x9f,0xef,0xf9,0x9f,0xe5,0xba,0xcc,0x93,0xfb,0xad,0x09,0x9f,0x5f,0xf0, - 0x59,0x21,0x66,0xb5,0xec,0x8c,0xe7,0xc5,0xf7,0x67,0xe6,0x61,0x8e,0xb8,0xb5,0xb2, - 0x39,0x9d,0x15,0xdf,0x9f,0x98,0xef,0x19,0xe2,0x2c,0xcf,0xee,0xc0,0xe4,0x12,0xb6, - 0xbf,0xc3,0xa9,0x75,0x85,0xf5,0x0f,0xfd,0x78,0xb3,0x42,0x28,0x0e,0x00,0x00 + 0x1a,0xb1,0x22,0xd8,0x26,0x58,0xb1,0x5a,0xd1,0x16,0x3a,0xa8,0xf0,0xe0,0x50,0x22, + 0xad,0x42,0x55,0xd0,0xd8,0xc6,0xc4,0x18,0xa9,0x85,0x17,0x5b,0x15,0x62,0x48,0x35, + 0x0a,0x89,0xc2,0x43,0x0b,0xa9,0x0f,0x26,0x3e,0x19,0x63,0xb4,0x04,0x5b,0x87,0x7f, + 0xc6,0x38,0x24,0x26,0xee,0xb5,0xef,0x6f,0x35,0x5f,0x6e,0x34,0x25,0xd9,0x39,0x67, + 0x7f,0x6b,0xfa,0xbe,0xb5,0xd7,0xd9,0xdc,0x4c,0x7a,0x47,0x21,0x49,0x52,0x49,0x65, + 0x52,0x91,0xfc,0x96,0x94,0xfe,0x36,0x26,0xe9,0x80,0x24,0x49,0x55,0x92,0x8f,0xcf, + 0xfd,0xfd,0x87,0xfb,0xdb,0x27,0x5f,0x1f,0x69,0xef,0xbc,0xaf,0x68,0xf6,0x9a,0x24, + 0x13,0xfd,0xcc,0x56,0x9b,0x14,0x92,0x6c,0x78,0xda,0x1a,0x7f,0xfe,0xe4,0x29,0xc3, + 0xab,0xc3,0xfa,0x2a,0xac,0xba,0xe0,0x67,0x78,0xc1,0x72,0x84,0xb7,0xea,0x98,0xd3, + 0x62,0x92,0xe4,0xd1,0x24,0x97,0x34,0x50,0x6f,0x07,0x4f,0xc7,0x52,0x60,0x15,0x82, + 0xa5,0xc1,0xea,0x04,0xcb,0x80,0x35,0x0a,0x96,0x05,0xbb,0x55,0xb0,0x1c,0xd8,0x6d, + 0x82,0xe5,0xc1,0xee,0x10,0xac,0x00,0xb6,0x53,0xb0,0x0a,0xb0,0x3b,0x05,0xdb,0x00, + 0xb6,0x4b,0xb0,0x4a,0xb0,0xa2,0x60,0x55,0x60,0x9d,0x82,0xdd,0x02,0xd6,0x25,0x58, + 0x35,0xd8,0x83,0xb1,0x4f,0x99,0x1b,0x7a,0xad,0x67,0xfb,0xc2,0x73,0x3b,0xfd,0xf1, + 0xfd,0x36,0xd9,0x5b,0x9f,0xb7,0xb2,0x6f,0x08,0x51,0xe9,0x68,0xcf,0xc4,0xde,0xd8, + 0xfb,0xa6,0xe0,0x93,0x47,0xa7,0xf5,0xb5,0x29,0xec,0x0b,0xe8,0x37,0xfb,0xe6,0xe0, + 0x59,0x89,0xdd,0x6c,0x55,0x68,0xc9,0x46,0x2c,0x1b,0xf9,0xa6,0xd0,0xd2,0xc3,0xbe, + 0x5a,0x72,0xd5,0xe0,0xef,0xb5,0xea,0xc9,0x95,0x44,0x5e,0x75,0x37,0xfa,0xea,0x35, + 0x6d,0xd5,0xdf,0x64,0xb9,0x8f,0xd5,0x6f,0xa4,0xdf,0x0d,0xd4,0x6f,0x8c,0x75,0x4a, + 0x58,0x1b,0xda,0x36,0xc3,0xc7,0xfc,0x9b,0xb0,0x15,0xc4,0xde,0x22,0x7a,0xb6,0x62, + 0xaf,0x8f,0x73,0x93,0x8e,0xbd,0x6c,0x83,0xb7,0xf7,0xd9,0xe3,0xda,0x98,0x1d,0xb7, + 0xdf,0x43,0x1d,0xb7,0xef,0xa6,0x17,0xd6,0x87,0xbd,0xe4,0xb4,0x3a,0xcd,0xa1,0x42, + 0x2f,0xfb,0x14,0x39,0xcb,0x9f,0xc6,0xe5,0x21,0xde,0x7b,0xd1,0x66,0xfb,0x7d,0x65, + 0x1c,0xfa,0xca,0xf6,0x07,0x98,0x7b,0x8b,0x7f,0x1c,0x2d,0x79,0x38,0x3c,0xc9,0x7b, + 0x46,0xfc,0x07,0x39,0x1b,0xdf,0x1f,0x13,0xff,0xe7,0xe0,0xa8,0xfe,0x27,0xca,0x7a, + 0x37,0xc5,0x37,0xe0,0xfb,0x0b,0x65,0xbd,0xbf,0xc8,0x4c,0x1b,0x9f,0x2b,0xe4,0xda, + 0x8b,0x9e,0x2b,0xdc,0x03,0x99,0xd8,0xab,0x5c,0xe4,0x91,0x45,0x8f,0x61,0x7f,0x06, + 0xc4,0xfa,0xbb,0x87,0xb9,0xab,0xa5,0x9f,0x07,0x03,0x83,0x1a,0xbe,0xf5,0x5a,0x96, + 0xf7,0xee,0x14,0xf3,0xbb,0x11,0x7b,0x6f,0xc8,0xd0,0xc4,0xf7,0xbe,0x89,0x59,0xd8, + 0x83,0x4f,0x33,0xf8,0xbb,0xc1,0xc7,0xf6,0x5b,0x88,0x6b,0x26,0xce,0x66,0xe1,0x76, + 0xe2,0x5a,0x88,0xf3,0xf9,0x35,0xfc,0x52,0xf0,0xd9,0x26,0xf7,0x84,0xcd,0xc7,0x1f, + 0x81,0x79,0x2b,0x7c,0xfe,0x0e,0xfe,0x7e,0x5f,0xb4,0xa2,0xc7,0xde,0x07,0x42,0x5c, + 0x9e,0x3b,0x63,0x0b,0xbe,0x6f,0xd3,0xaf,0xbb,0xc0,0x07,0xc3,0xce,0x38,0x7d,0x0d, + 0xe6,0x7e,0x7f,0x85,0x1c,0x9e,0xcb,0x9e,0xbf,0x07,0x2f,0xf3,0xfb,0x11,0x9f,0x1c, + 0x31,0x3b,0x45,0xc3,0x2e,0x34,0xb4,0x89,0x86,0xbb,0xc1,0x5d,0x43,0x3b,0x98,0x6b, + 0x28,0x8a,0x06,0xb3,0x75,0x70,0x77,0x59,0xdd,0x0e,0xd1,0x70,0x2f,0xb5,0x53,0xa2, + 0xa1,0x13,0xdc,0x35,0x7c,0x03,0xe6,0x7e,0xa6,0xc1,0x73,0x15,0x45,0xc3,0x55,0x7c, + 0x5a,0x89,0xe9,0x10,0x0d,0xf7,0xa3,0x61,0xb7,0x68,0xe8,0x02,0x77,0x0d,0x0f,0x80, + 0xb9,0x86,0x1e,0xd1,0x60,0xb6,0xee,0x38,0x77,0xa5,0xba,0xdd,0xcc,0x51,0x21,0xe6, + 0x2b,0xd5,0xbe,0x2a,0xdf,0x9f,0x71,0x74,0xdf,0x1e,0xe1,0xb8,0x86,0x5f,0x91,0xb8, + 0x6e,0xf8,0xd8,0x37,0xfa,0x30,0xdf,0xa7,0xcf,0xdc,0x23,0x70,0xee,0x93,0x99,0xdb, + 0x0f,0xfe,0x0e,0x33,0xf7,0x18,0xd8,0x1a,0x71,0xf6,0xcd,0xf6,0x13,0x77,0x80,0x38, + 0xeb,0xe9,0x13,0xe0,0xde,0xf7,0x83,0xc4,0x26,0x82,0x1d,0x02,0x4b,0xc5,0xf7,0x7c, + 0xfc,0xde,0x07,0xf0,0x3d,0x44,0x0e,0xaf,0x71,0x98,0x1a,0x83,0x52,0xe3,0x08,0xf8, + 0xb3,0x81,0x99,0x7d,0xa3,0x47,0xd1,0x34,0xc0,0x1d,0x71,0x44,0xce,0xe3,0x29,0xe2, + 0x8f,0xc9,0x79,0x3c,0x0d,0xee,0xe7,0xf1,0x0c,0x98,0x9f,0xc7,0xb0,0x9c,0x87,0xd9, + 0x86,0xc2,0x1a,0xa5,0xc7,0x43,0xe8,0xa8,0x8f,0xf5,0x4b,0xb5,0x33,0x91,0x7b,0x45, + 0xbc,0x87,0x5e,0x00,0x3b,0x2a,0xdf,0x7a,0x1a,0x9d,0x66,0x3f,0x4e,0x9c,0xaf,0xb3, + 0x21,0x97,0xe1,0x23,0xc4,0x1e,0x8f,0xb9,0x36,0x44,0x5d,0x2f,0x92,0x67,0x84,0xfb, + 0x26,0x27,0xf7,0xa2,0x9d,0xfb,0x30,0x9c,0x46,0x45,0xef,0x49,0xf4,0x9e,0x10,0xbd, + 0x2f,0x81,0xbb,0xde,0x97,0xc1,0x5c,0xef,0xb8,0xe8,0x35,0xdb,0x98,0xfd,0x06,0x22, + 0xf7,0x98,0xe8,0x7d,0x45,0xf4,0x5e,0x26,0xd7,0xab,0xe0,0xdb,0xe1,0xe4,0x71,0xe3, + 0xcc,0xa2,0xf9,0xbc,0x46,0xcd,0x51,0xfc,0xc7,0xa8,0x3b,0x29,0x75,0xcd,0x67,0x22, + 0xac,0x49,0xe2,0x27,0xa4,0xee,0x1b,0xff,0xd1,0xe7,0x37,0x6f,0xd2,0xe7,0xd3,0xc4, + 0xf9,0x3a,0x47,0x9f,0xcf,0x10,0x7b,0x5a,0xfa,0xfc,0x16,0x79,0xce,0xfc,0x4f,0x9f, + 0x9d,0xd3,0x24,0x9a,0x2c,0xe6,0x27,0x62,0xc6,0x89,0x9f,0x28,0x3b,0x93,0x61,0xf1, + 0x5d,0xe7,0x2c,0x87,0x88,0x9b,0x94,0xf3,0x3a,0xcb,0x79,0x4d,0xc9,0x79,0xbd,0x07, + 0xee,0xe7,0x75,0x0e,0xcc,0xcf,0x6b,0x46,0xfa,0x66,0xb6,0xe9,0xb0,0xce,0x53,0x77, + 0x5a,0x74,0xbd,0x4f,0xed,0x75,0x74,0x15,0xe8,0x91,0xeb,0x9a,0x21,0xe6,0xbc,0xf0, + 0xf9,0x00,0x3e,0x17,0x84,0xcf,0x87,0xe0,0xce,0xe7,0x23,0x30,0xe7,0x33,0x27,0x7c, + 0xcc,0x36,0x1b,0xd6,0x3c,0xb9,0x67,0xe5,0x1c,0x3f,0x86,0x4b,0x86,0x3b,0xd7,0x38, + 0x7e,0x2b,0xb8,0xdf,0x67,0x73,0xc4,0xce,0xcb,0x3d,0xf0,0x09,0xbc,0x2e,0xca,0x3d, + 0xf0,0x29,0xf8,0x1a,0xf7,0xca,0x67,0x60,0x83,0xc2,0xf5,0x73,0xf0,0x3e,0xb8,0x2e, + 0x0a,0x57,0xb3,0x2d,0x84,0xb5,0x48,0xbd,0x05,0xe1,0xf5,0x1d,0xfa,0xd6,0xe5,0x7f, + 0x81,0xfb,0x2d,0xca,0xd9,0x5e,0xc3,0x67,0x9e,0x98,0x05,0xe1,0xf3,0x05,0x7c,0x5a, + 0x84,0xcf,0x97,0xe0,0xce,0x67,0x59,0xf8,0x98,0x6d,0x29,0xac,0x65,0xea,0x2c,0x09, + 0x9f,0xef,0xe1,0x73,0x8d,0x33,0x34,0x3e,0xee,0xb7,0x2c,0x7c,0xae,0xe3,0xb3,0x48, + 0xcc,0x92,0xf0,0xb9,0x04,0x9f,0x29,0xe1,0x73,0x19,0xdc,0xf9,0xac,0x0a,0x1f,0xb3, + 0xad,0x84,0xb5,0x4a,0x9d,0x15,0xe1,0xf3,0x03,0xbf,0x23,0xaf,0xcb,0x3c,0xb9,0xdf, + 0xaa,0xf0,0xf9,0x15,0x9f,0x65,0x62,0x56,0xca,0xce,0x78,0x4e,0x7c,0x7f,0x61,0x1e, + 0x66,0x89,0x5b,0x2d,0x9b,0xd3,0x19,0xf1,0xfd,0x99,0xf9,0x9e,0x26,0x6e,0x2e,0xfe, + 0x5e,0xcb,0xc4,0xdf,0x69,0x66,0xfb,0x27,0x9c,0x5a,0x57,0x58,0xff,0x02,0x19,0x82, + 0xa5,0x3d,0x18,0x0e,0x00,0x00 }; // Generated from: @@ -93,8 +93,8 @@ constexpr uint8_t kImageCopy_frag_00000029[] = { // // #extension GL_EXT_samplerless_texture_functions : require // -// layout(set = 0, binding = 0)uniform utexture3D src; -// layout(location = 0)out ivec4 dst; +// layout(set = 0, binding = 0)uniform utexture2DArray src; +// layout(location = 0)out uvec4 dst; // // layout(push_constant)uniform PushConstants { // @@ -149,7 +149,7 @@ constexpr uint8_t kImageCopy_frag_00000029[] = { // srcValue . rgb /= srcValue . a; // } // -// ivec4 dstValue = ivec4(srcValue); +// uvec4 dstValue = uvec4(srcValue); // // if(params . dstHasLuminance) // { diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc new file mode 100644 index 0000000000000000000000000000000000000000..187c8700fbd2432f402b04a6cc9cf3e5d9ae7069 --- /dev/null +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc @@ -0,0 +1,182 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_vk_internal_shaders.py. +// +// Copyright 2018 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// shaders/gen/ImageCopy.frag.0000002B.inc: +// Pre-generated shader for the ANGLE Vulkan back-end. + +#pragma once +constexpr uint8_t kImageCopy_frag_0000002B[] = { + 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x85,0x96,0xed,0x4f,0xd5,0x65, + 0x18,0xc7,0x6f,0xce,0x8f,0x73,0x0e,0x42,0x3c,0x08,0x28,0x51,0x61,0xa9,0xb0,0xd9, + 0x30,0x38,0x15,0x19,0x41,0xba,0x61,0x86,0xae,0x2c,0x44,0x53,0x2a,0x78,0x91,0x0b, + 0x27,0x54,0x9c,0x1e,0x38,0x6b,0xe9,0x5a,0x6b,0x8d,0x14,0xde,0xa4,0x15,0xcc,0x31, + 0x6b,0x0a,0x5b,0xc1,0x96,0xc1,0xec,0x45,0x5b,0xaf,0x5a,0x6b,0x45,0x23,0xed,0xe1, + 0x8f,0x69,0x3d,0x6c,0x6d,0x5d,0xd7,0x7d,0x3e,0x97,0xbb,0x3a,0xab,0xc9,0x76,0xef, + 0xc7,0xfd,0xbd,0x9e,0xbe,0xdf,0xeb,0xba,0xef,0x1b,0x92,0xd4,0xf6,0x6c,0x08,0x65, + 0xa1,0x32,0x54,0x84,0x5f,0x43,0xf1,0x67,0x63,0x48,0x09,0x52,0xfc,0xde,0x27,0xdf, + 0xaa,0x90,0x89,0xfb,0xfd,0x07,0x8f,0x1c,0xec,0x98,0x2c,0x8c,0x76,0x74,0x3d,0x90, + 0x53,0xbf,0x9a,0x90,0x44,0x7f,0xb5,0xd5,0x86,0x6c,0x28,0x97,0xaf,0xae,0x89,0xe3, + 0xe3,0x79,0xc5,0xab,0x65,0x7d,0x21,0xab,0x4e,0xfc,0x14,0xcf,0x6a,0x0e,0xf9,0xad, + 0x3a,0xe6,0xd4,0x98,0x10,0x0e,0x84,0x74,0x68,0xa0,0xee,0x76,0xbe,0x86,0x95,0x81, + 0x55,0x38,0x2c,0x05,0x56,0xe7,0xb0,0x04,0xac,0xd1,0x61,0xe5,0x60,0xb7,0x3a,0x2c, + 0x0d,0x76,0x87,0xc3,0x32,0x60,0x77,0x39,0x2c,0x0b,0xd6,0xea,0xb0,0x0a,0xb0,0x1d, + 0x0e,0xdb,0x00,0xb6,0xd3,0x61,0x95,0x60,0x39,0x87,0x55,0x81,0x75,0x39,0xec,0x16, + 0xb0,0x6e,0x87,0x55,0x83,0x3d,0x1c,0xfb,0x94,0xdc,0xd0,0xab,0x3d,0xdb,0x27,0xdf, + 0x6d,0xf4,0xc7,0xf6,0x5b,0xdd,0x5e,0xfb,0xbc,0x85,0x7d,0x83,0x44,0xa5,0xa2,0x3d, + 0x89,0xbd,0xd1,0xdf,0x37,0x89,0x4f,0x06,0x9d,0xda,0xd7,0x26,0xd9,0x67,0xd1,0xaf, + 0xf6,0xcd,0xe2,0x59,0x89,0x5d,0x6d,0x55,0x68,0x29,0x8f,0x58,0x79,0xe4,0x5b,0x86, + 0x96,0x5e,0xf6,0xd5,0x2e,0x57,0x0d,0xfe,0x56,0xab,0x9e,0x5c,0x21,0xf2,0xaa,0xbb, + 0xd1,0x57,0xab,0xa9,0xab,0xfe,0x26,0xcb,0x7c,0xb4,0x7e,0x23,0xfd,0x6e,0xa0,0x7e, + 0x63,0xac,0x53,0xc4,0xda,0xd1,0xb6,0x19,0x3e,0xea,0xdf,0x84,0x2d,0xeb,0xec,0x2d, + 0x4e,0xcf,0x16,0xec,0xf5,0xf1,0xdc,0xa4,0x62,0x2f,0xdb,0xe1,0x6d,0x7d,0xb6,0xb8, + 0x76,0xce,0x8e,0xd9,0xef,0xa5,0x8e,0xd9,0x77,0xd1,0x0b,0xed,0xc3,0x1e,0x72,0x6a, + 0x9d,0x66,0xa9,0xd0,0xc7,0xbe,0x2c,0xfc,0xfb,0xc7,0xf6,0xb7,0x4b,0xdf,0xf7,0xca, + 0xb7,0x0f,0x5e,0x8f,0x80,0xef,0x45,0xa7,0xee,0xf7,0x95,0xf0,0xe9,0x2f,0xd9,0x0f, + 0xd2,0x77,0x8d,0x3f,0x8c,0xae,0x8c,0xb3,0x0f,0xb1,0x57,0x7e,0xc7,0xe1,0x93,0x38, + 0xfb,0x78,0x49,0x9f,0xa6,0x38,0xef,0xb6,0x3f,0x5f,0xd2,0xe7,0x8b,0x9c,0x5f,0xad, + 0x77,0x95,0x5c,0x7b,0xe0,0x7b,0x95,0x3b,0x9f,0xc4,0xbe,0xa4,0x23,0xaf,0x72,0xf8, + 0x2a,0xf6,0x87,0x20,0xda,0xcb,0xdd,0x9c,0xb1,0x5a,0x7a,0x37,0x20,0x0c,0x6a,0xb8, + 0xd7,0xb5,0x2c,0xeb,0x53,0x9e,0xb3,0xba,0x11,0x7b,0x9f,0x64,0x68,0xe2,0x6e,0x6f, + 0x62,0xee,0xbb,0xf1,0x69,0x06,0x7f,0x47,0x7c,0x74,0x7f,0x1b,0x71,0xcd,0xc4,0xe9, + 0xdc,0xef,0x24,0xae,0x85,0x38,0x3b,0xab,0x8a,0x7f,0x26,0x3e,0x5b,0xdd,0x9b,0xa0, + 0x67,0xe1,0x77,0x61,0xde,0x06,0x9f,0xbf,0xc4,0xdf,0xde,0x86,0x36,0xf4,0xb4,0xc6, + 0x19,0xa4,0x63,0x6f,0x76,0x50,0x53,0x7f,0xde,0xa2,0x5f,0x77,0x83,0x1f,0x96,0x9d, + 0x72,0xfa,0x12,0xcc,0xfc,0xfe,0x94,0x1c,0x96,0x4b,0xbf,0xbf,0x89,0x97,0xfa,0x7d, + 0x8f,0x4f,0x9a,0x98,0x56,0xa7,0x61,0x27,0x1a,0xda,0x9d,0x86,0x7b,0xc0,0x4d,0x43, + 0x07,0x98,0x69,0xc8,0x39,0x0d,0x6a,0xeb,0xe4,0x9d,0xd2,0xba,0x9d,0x4e,0xc3,0xfd, + 0xd4,0x2e,0x73,0x1a,0xba,0xc0,0x4d,0xc3,0x57,0x60,0xe6,0xa7,0x1a,0x2c,0x57,0xce, + 0x69,0x58,0xc3,0xa7,0x8d,0x98,0x4e,0xa7,0xe1,0x41,0x34,0xec,0x72,0x1a,0xba,0xc1, + 0x4d,0xc3,0x43,0x60,0xa6,0xa1,0xd7,0x69,0x50,0x5b,0x4f,0x3c,0x77,0xc5,0xba,0x3d, + 0x9c,0xa3,0x6c,0xcc,0x57,0xac,0xbd,0xe6,0xee,0x9a,0x72,0x34,0xdf,0x5e,0xc7,0xf1, + 0x07,0xfc,0x72,0xc4,0xf5,0xc0,0x47,0xef,0xe0,0xa3,0xdc,0x3f,0x3b,0x73,0xfb,0xe1, + 0xdc,0xef,0xce,0xdc,0x01,0xf0,0xb7,0x39,0x73,0x8f,0x81,0x69,0xde,0x97,0x79,0x1b, + 0x1f,0x07,0x1f,0x95,0xbd,0xde,0xf5,0x27,0xc8,0x7d,0x92,0x98,0x27,0xc1,0xfa,0x5d, + 0xcc,0x00,0xf8,0xb4,0xf8,0xe8,0xfe,0x10,0x79,0x06,0xe0,0xa3,0x77,0xfd,0x08,0x7c, + 0x06,0xe1,0xa3,0xb3,0x7a,0x0a,0x5c,0xf3,0xe8,0x9b,0x7c,0x14,0x6c,0x48,0x2a,0xe9, + 0x3d,0x3d,0x46,0xed,0x43,0xf4,0xe6,0xa8,0x9b,0xc9,0xd3,0xe4,0x1b,0x72,0x33,0x79, + 0x06,0xdc,0x66,0xf2,0x2c,0x98,0xcd,0x64,0xc4,0xcd,0x44,0x6d,0xc3,0xb2,0xc6,0xe8, + 0xf3,0x30,0xe7,0x4a,0xf3,0x3c,0x47,0xed,0x24,0x6a,0xa8,0x88,0x6f,0xd1,0xf3,0x60, + 0xc7,0xdc,0x7d,0x4f,0x45,0x6e,0x99,0x68,0x1f,0x25,0xce,0xd6,0x94,0xe4,0x52,0xfc, + 0x04,0xb1,0xa3,0x31,0xd7,0x86,0xa8,0xeb,0x24,0x79,0x4e,0xf0,0xe6,0xa4,0x79,0xf7, + 0x12,0x66,0x3f,0x02,0xa7,0x31,0xa7,0xf7,0x05,0xf4,0x8e,0x3b,0xbd,0x2f,0x82,0x9b, + 0xde,0x97,0xc0,0x4c,0x6f,0xde,0xe9,0x55,0xdb,0x44,0x7c,0xa3,0x8a,0xb9,0x27,0x9c, + 0xde,0x57,0x9c,0xde,0x2b,0xe4,0x7a,0x15,0x7c,0x1b,0x9c,0x2c,0x2e,0xcf,0x79,0x54, + 0x9f,0xd7,0xa8,0x39,0x86,0xff,0x04,0x75,0x0b,0xae,0xae,0xfa,0x4c,0xca,0x2a,0x10, + 0x3f,0xe9,0xea,0xbe,0xfe,0x1f,0x7d,0x7e,0xe3,0x26,0x7d,0x3e,0x45,0x9c,0xad,0x33, + 0xf4,0xf9,0x34,0xb1,0xa7,0x5c,0x9f,0xdf,0x24,0xcf,0xe9,0xff,0xe9,0xb3,0x71,0x2a, + 0xa0,0x49,0x63,0x7e,0x24,0x26,0x4f,0xfc,0x64,0xc9,0x4c,0x46,0x9c,0xef,0x3a,0xb3, + 0x1c,0x26,0xae,0xe0,0xe6,0xf5,0x2e,0xf3,0x9a,0x72,0xf3,0x3a,0x03,0x6e,0xf3,0x3a, + 0x0b,0x66,0xf3,0x9a,0x71,0x7d,0x3b,0x1b,0xef,0x53,0x08,0xe7,0xa8,0x3b,0xed,0x74, + 0xbd,0x47,0xed,0x75,0x74,0x65,0xe9,0x91,0xe9,0x9a,0x21,0xe6,0x9c,0xe3,0xf3,0x3e, + 0x7c,0xce,0x3b,0x3e,0x1f,0x80,0x1b,0x9f,0x0f,0xc1,0x8c,0xcf,0x9c,0xe3,0xa3,0xb6, + 0x59,0x59,0xf3,0xe4,0x9e,0x75,0x73,0xbc,0x00,0x97,0x84,0x77,0x57,0x39,0x7e,0xed, + 0x70,0x7b,0xd3,0xe6,0x88,0x9d,0x77,0xef,0xc2,0x47,0xf0,0xba,0xe8,0xde,0x85,0x8f, + 0xc1,0xd7,0x78,0xe7,0x2f,0x81,0x0d,0x3a,0xae,0x97,0xc1,0xfb,0xe1,0xba,0xe8,0xb8, + 0xaa,0x6d,0x41,0xd6,0x22,0xf5,0x16,0x1c,0xaf,0x6f,0xd0,0xb7,0xee,0xfe,0x1e,0x98, + 0xdf,0xa2,0x9b,0xed,0x35,0x7c,0xe6,0x89,0x59,0x70,0x7c,0x3e,0x81,0x4f,0x8b,0xe3, + 0xf3,0x29,0xb8,0xf1,0x59,0x76,0x7c,0xd4,0xb6,0x24,0x6b,0x99,0x3a,0x4b,0x8e,0xcf, + 0xb7,0xf0,0xb9,0xc6,0x0c,0x95,0x8f,0xf9,0x2d,0x3b,0x3e,0xd7,0xf1,0x59,0x24,0x66, + 0xc9,0xf1,0xb9,0x02,0x9f,0x29,0xc7,0xe7,0x73,0x70,0xe3,0xb3,0xea,0xf8,0xa8,0x6d, + 0x45,0xd6,0x2a,0x75,0x56,0x1c,0x9f,0xef,0xf8,0xbf,0xf1,0xba,0x3b,0x4f,0xe6,0xb7, + 0xea,0xf8,0xfc,0x82,0xcf,0x32,0x31,0x2b,0x25,0x33,0x9e,0x73,0xbe,0x3f,0x73,0x1e, + 0x66,0x89,0x5b,0x2d,0x39,0xa7,0x33,0xce,0xf7,0x27,0xce,0xf7,0x34,0x71,0x73,0xf1, + 0x7f,0xb6,0x24,0xfe,0xaf,0xa6,0xb6,0xbf,0x65,0x6a,0xdd,0xb2,0xfe,0x01,0x5a,0x6c, + 0x1f,0x83,0x10,0x0e,0x00,0x00 +}; + +// Generated from: +// +// #version 450 core +// +// #extension GL_EXT_samplerless_texture_functions : require +// +// layout(set = 0, binding = 0)uniform usampler2D src; +// layout(location = 0)out uvec4 dst; +// +// layout(push_constant)uniform PushConstants { +// +// ivec2 srcOffset; +// ivec2 dstOffset; +// int srcMip; +// int srcLayer; +// +// bool flipX; +// bool flipY; +// +// bool premultiplyAlpha; +// bool unmultiplyAlpha; +// +// bool dstHasLuminance; +// bool dstIsAlpha; +// +// bool srcIsSRGB; +// bool dstIsSRGB; +// +// int dstDefaultChannelsMask; +// bool rotateXY; +// } params; +// +// void main() +// { +// ivec2 dstSubImageCoords = ivec2(gl_FragCoord . xy)- params . dstOffset; +// +// ivec2 srcSubImageCoords = dstSubImageCoords; +// +// if(params . flipX) +// { +// srcSubImageCoords . x = - srcSubImageCoords . x; +// } +// if(params . flipY) +// { +// srcSubImageCoords . y = - srcSubImageCoords . y; +// } +// if(params . rotateXY) +// { +// srcSubImageCoords . xy = srcSubImageCoords . yx; +// } +// +// uvec4 srcValue = texture( +// src, vec2(params . srcOffset + srcSubImageCoords)/ textureSize(src, 0), params . srcMip); +// +// if(params . premultiplyAlpha) +// { +// srcValue . rgb *= srcValue . a; +// } +// else if(params . unmultiplyAlpha && srcValue . a > 0) +// { +// srcValue . rgb /= srcValue . a; +// } +// +// uvec4 dstValue = uvec4(srcValue); +// +// if(params . dstHasLuminance) +// { +// dstValue . rg = dstValue . ra; +// } +// else if(params . dstIsAlpha) +// { +// dstValue . r = dstValue . a; +// } +// else +// { +// int defaultChannelsMask = params . dstDefaultChannelsMask; +// if((defaultChannelsMask & 2)!= 0) +// { +// dstValue . g = 0; +// } +// if((defaultChannelsMask & 4)!= 0) +// { +// dstValue . b = 0; +// } +// if((defaultChannelsMask & 8)!= 0) +// { +// dstValue . a = 1; +// } +// } +// +// dst = dstValue; +// } diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag index 429df82fa44ffb807dcc348d24d82869434e653c..c2eeeac591970fb66bea739d48c5eb3d30ca65ab 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag @@ -30,6 +30,8 @@ #define SRC_RESOURCE_NAME texture2DArray #elif SrcIs3D #define SRC_RESOURCE_NAME texture3D +#elif SrcIsYUV +#define SRC_RESOURCE_NAME sampler2D #else #error "Not all source types are accounted for" #endif @@ -135,6 +137,9 @@ void main() SrcType srcValue = texelFetch(src, params.srcOffset + srcSubImageCoords, params.srcMip); #elif SrcIs2DArray || SrcIs3D SrcType srcValue = texelFetch(src, ivec3(params.srcOffset + srcSubImageCoords, params.srcLayer), params.srcMip); +#elif SrcIsYUV + SrcType srcValue = texture( + src, vec2(params.srcOffset + srcSubImageCoords) / textureSize(src, 0), params.srcMip); #else #error "Not all source types are accounted for" #endif diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json index 818f21eb1181ae0be904f1cad7dd9fb660266696..586547858050ba33d81e81a923e8b61b0af81d50 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json +++ b/third_party/angle/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json @@ -9,7 +9,8 @@ "SrcType": [ "SrcIs2D", "SrcIs2DArray", - "SrcIs3D" + "SrcIs3D", + "SrcIsYUV" ], "SrcFormat": [ "SrcIsFloat", diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp index 1183ac037e844e911a7522aeb92477e4e6c37b36..ae318f6fe2b8dbab025e835378eebf9190e7fcc9 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp +++ b/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp @@ -5636,6 +5636,9 @@ const void *ImageHelper::DeriveCreateInfoPNext( (*imageListFormatsStorage)[0] = vk::GetVkFormatFromFormatID(actualFormatID); (*imageListFormatsStorage)[1] = vk::GetVkFormatFromFormatID(additionalFormat); + *imageFormatListInfoStorage = {}; + imageFormatListInfoStorage->sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR; + if (rendererVk->getFeatures().supportsImageFormatList.enabled && rendererVk->haveSameFormatFeatureBits(actualFormatID, additionalFormat)) { @@ -5644,8 +5647,7 @@ const void *ImageHelper::DeriveCreateInfoPNext( // There is just 1 additional format we might use to create a VkImageView for this // VkImage - imageFormatListInfoStorage->sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR; - imageFormatListInfoStorage->pNext = pNext; + imageFormatListInfoStorage->pNext = pNext; imageFormatListInfoStorage->viewFormatCount = kImageListFormatCount; imageFormatListInfoStorage->pViewFormats = imageListFormatsStorage->data(); diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp index 3022bae321fe1b1824103352d1b0483e0030c326..a46d7517bf981bc557cdeb6132b7707375acd887 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp +++ b/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp @@ -130,30 +130,39 @@ namespace #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002A.inc" +#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc" #include "libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.vert.00000000.inc" @@ -303,15 +312,15 @@ constexpr CompressedShaderBlob kImageCopy_frag_shaders[] = { {kImageCopy_frag_00000000, sizeof(kImageCopy_frag_00000000)}, {kImageCopy_frag_00000001, sizeof(kImageCopy_frag_00000001)}, {kImageCopy_frag_00000002, sizeof(kImageCopy_frag_00000002)}, - {nullptr, 0}, // 0x00000003 + {kImageCopy_frag_00000003, sizeof(kImageCopy_frag_00000003)}, {kImageCopy_frag_00000004, sizeof(kImageCopy_frag_00000004)}, {kImageCopy_frag_00000005, sizeof(kImageCopy_frag_00000005)}, {kImageCopy_frag_00000006, sizeof(kImageCopy_frag_00000006)}, - {nullptr, 0}, // 0x00000007 + {kImageCopy_frag_00000007, sizeof(kImageCopy_frag_00000007)}, {kImageCopy_frag_00000008, sizeof(kImageCopy_frag_00000008)}, {kImageCopy_frag_00000009, sizeof(kImageCopy_frag_00000009)}, {kImageCopy_frag_0000000A, sizeof(kImageCopy_frag_0000000A)}, - {nullptr, 0}, // 0x0000000B + {kImageCopy_frag_0000000B, sizeof(kImageCopy_frag_0000000B)}, {nullptr, 0}, // 0x0000000C {nullptr, 0}, // 0x0000000D {nullptr, 0}, // 0x0000000E @@ -319,15 +328,15 @@ constexpr CompressedShaderBlob kImageCopy_frag_shaders[] = { {kImageCopy_frag_00000010, sizeof(kImageCopy_frag_00000010)}, {kImageCopy_frag_00000011, sizeof(kImageCopy_frag_00000011)}, {kImageCopy_frag_00000012, sizeof(kImageCopy_frag_00000012)}, - {nullptr, 0}, // 0x00000013 + {kImageCopy_frag_00000013, sizeof(kImageCopy_frag_00000013)}, {kImageCopy_frag_00000014, sizeof(kImageCopy_frag_00000014)}, {kImageCopy_frag_00000015, sizeof(kImageCopy_frag_00000015)}, {kImageCopy_frag_00000016, sizeof(kImageCopy_frag_00000016)}, - {nullptr, 0}, // 0x00000017 + {kImageCopy_frag_00000017, sizeof(kImageCopy_frag_00000017)}, {kImageCopy_frag_00000018, sizeof(kImageCopy_frag_00000018)}, {kImageCopy_frag_00000019, sizeof(kImageCopy_frag_00000019)}, {kImageCopy_frag_0000001A, sizeof(kImageCopy_frag_0000001A)}, - {nullptr, 0}, // 0x0000001B + {kImageCopy_frag_0000001B, sizeof(kImageCopy_frag_0000001B)}, {nullptr, 0}, // 0x0000001C {nullptr, 0}, // 0x0000001D {nullptr, 0}, // 0x0000001E @@ -335,14 +344,15 @@ constexpr CompressedShaderBlob kImageCopy_frag_shaders[] = { {kImageCopy_frag_00000020, sizeof(kImageCopy_frag_00000020)}, {kImageCopy_frag_00000021, sizeof(kImageCopy_frag_00000021)}, {kImageCopy_frag_00000022, sizeof(kImageCopy_frag_00000022)}, - {nullptr, 0}, // 0x00000023 + {kImageCopy_frag_00000023, sizeof(kImageCopy_frag_00000023)}, {kImageCopy_frag_00000024, sizeof(kImageCopy_frag_00000024)}, {kImageCopy_frag_00000025, sizeof(kImageCopy_frag_00000025)}, {kImageCopy_frag_00000026, sizeof(kImageCopy_frag_00000026)}, - {nullptr, 0}, // 0x00000027 + {kImageCopy_frag_00000027, sizeof(kImageCopy_frag_00000027)}, {kImageCopy_frag_00000028, sizeof(kImageCopy_frag_00000028)}, {kImageCopy_frag_00000029, sizeof(kImageCopy_frag_00000029)}, {kImageCopy_frag_0000002A, sizeof(kImageCopy_frag_0000002A)}, + {kImageCopy_frag_0000002B, sizeof(kImageCopy_frag_0000002B)}, }; constexpr CompressedShaderBlob kOverlayDraw_frag_shaders[] = { {kOverlayDraw_frag_00000000, sizeof(kOverlayDraw_frag_00000000)}, diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni b/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni index 96a8cc35e840ca54bcfa834a507a4fa23699f3b4..c897f29ef2931a2b76e5b51bbd8d9d52eeb3416f 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni +++ b/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni @@ -120,30 +120,39 @@ angle_vulkan_internal_shaders = [ "shaders/gen/ImageCopy.frag.00000000.inc", "shaders/gen/ImageCopy.frag.00000001.inc", "shaders/gen/ImageCopy.frag.00000002.inc", + "shaders/gen/ImageCopy.frag.00000003.inc", "shaders/gen/ImageCopy.frag.00000004.inc", "shaders/gen/ImageCopy.frag.00000005.inc", "shaders/gen/ImageCopy.frag.00000006.inc", + "shaders/gen/ImageCopy.frag.00000007.inc", "shaders/gen/ImageCopy.frag.00000008.inc", "shaders/gen/ImageCopy.frag.00000009.inc", "shaders/gen/ImageCopy.frag.0000000A.inc", + "shaders/gen/ImageCopy.frag.0000000B.inc", "shaders/gen/ImageCopy.frag.00000010.inc", "shaders/gen/ImageCopy.frag.00000011.inc", "shaders/gen/ImageCopy.frag.00000012.inc", + "shaders/gen/ImageCopy.frag.00000013.inc", "shaders/gen/ImageCopy.frag.00000014.inc", "shaders/gen/ImageCopy.frag.00000015.inc", "shaders/gen/ImageCopy.frag.00000016.inc", + "shaders/gen/ImageCopy.frag.00000017.inc", "shaders/gen/ImageCopy.frag.00000018.inc", "shaders/gen/ImageCopy.frag.00000019.inc", "shaders/gen/ImageCopy.frag.0000001A.inc", + "shaders/gen/ImageCopy.frag.0000001B.inc", "shaders/gen/ImageCopy.frag.00000020.inc", "shaders/gen/ImageCopy.frag.00000021.inc", "shaders/gen/ImageCopy.frag.00000022.inc", + "shaders/gen/ImageCopy.frag.00000023.inc", "shaders/gen/ImageCopy.frag.00000024.inc", "shaders/gen/ImageCopy.frag.00000025.inc", "shaders/gen/ImageCopy.frag.00000026.inc", + "shaders/gen/ImageCopy.frag.00000027.inc", "shaders/gen/ImageCopy.frag.00000028.inc", "shaders/gen/ImageCopy.frag.00000029.inc", "shaders/gen/ImageCopy.frag.0000002A.inc", + "shaders/gen/ImageCopy.frag.0000002B.inc", "shaders/gen/OverlayDraw.frag.00000000.inc", "shaders/gen/OverlayDraw.vert.00000000.inc", ] diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h b/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h index 3eacfd01e1dbbbc600ab791b84138a6cd5e35a2d..208b975eca3112b98b50c746d383ec1bad7740a8 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h +++ b/third_party/angle/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h @@ -170,25 +170,26 @@ constexpr size_t kArrayLen = 0x00000030; namespace ImageCopy_frag { +enum SrcType +{ + kSrcIs2D = 0x00000000, + kSrcIs2DArray = 0x00000001, + kSrcIs3D = 0x00000002, + kSrcIsYUV = 0x00000003, +}; enum DestFormat { kDestIsFloat = 0x00000000, - kDestIsSint = 0x00000001, - kDestIsUint = 0x00000002, + kDestIsSint = 0x00000004, + kDestIsUint = 0x00000008, }; enum SrcFormat { kSrcIsFloat = 0x00000000, - kSrcIsSint = 0x00000004, - kSrcIsUint = 0x00000008, + kSrcIsSint = 0x00000010, + kSrcIsUint = 0x00000020, }; -enum SrcType -{ - kSrcIs2D = 0x00000000, - kSrcIs2DArray = 0x00000010, - kSrcIs3D = 0x00000020, -}; -constexpr size_t kArrayLen = 0x0000002B; +constexpr size_t kArrayLen = 0x0000002C; } // namespace ImageCopy_frag namespace OverlayDraw_frag diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/vulkan_backend.gni b/third_party/angle/src/libANGLE/renderer/vulkan/vulkan_backend.gni index 473e20b86ef0545f3e51dece7fedcb191874704a..8097cae1a2df5b4abaa9bf4e0aae83ed0354f834 100644 --- a/third_party/angle/src/libANGLE/renderer/vulkan/vulkan_backend.gni +++ b/third_party/angle/src/libANGLE/renderer/vulkan/vulkan_backend.gni @@ -144,6 +144,8 @@ if (is_linux || is_chromeos) { "linux/DeviceVkLinux.h", "linux/DisplayVkLinux.cpp", "linux/DisplayVkLinux.h", + "linux/DisplayVkOffscreen.cpp", + "linux/DisplayVkOffscreen.h", "linux/DmaBufImageSiblingVkLinux.cpp", "linux/DmaBufImageSiblingVkLinux.h", "linux/display/DisplayVkSimple.cpp", diff --git a/third_party/angle/src/libANGLE/validationEGL.cpp b/third_party/angle/src/libANGLE/validationEGL.cpp index db8a7adb07e059cc9ad3edb50ef758936703d4a4..0aa8225cbba18d442daa6e23f7311594ce0dbbff 100644 --- a/third_party/angle/src/libANGLE/validationEGL.cpp +++ b/third_party/angle/src/libANGLE/validationEGL.cpp @@ -570,6 +570,13 @@ bool ValidateGetPlatformDisplayCommon(const ValidationContext *val, return false; } break; + case EGL_PLATFORM_SURFACELESS_MESA: + if (!clientExtensions.platformSurfacelessMESA) + { + val->setError(EGL_BAD_PARAMETER, "Platform Surfaceless extension is not active"); + return false; + } + break; default: val->setError(EGL_BAD_CONFIG, "Bad platform type."); return false; diff --git a/third_party/angle/src/libGLESv2.gni b/third_party/angle/src/libGLESv2.gni index 532436cb49ac21b63d4b463d8a2dafeae3a1be6e..2afe3b01e607c14d23cf1d205041e3b9b8da3ae5 100644 --- a/third_party/angle/src/libGLESv2.gni +++ b/third_party/angle/src/libGLESv2.gni @@ -194,6 +194,9 @@ libangle_gpu_info_util_vulkan_sources = [ libangle_gpu_info_util_libpci_sources = [ "src/gpu_info_util/SystemInfo_libpci.cpp" ] +libangle_gpu_info_util_libdrm_sources = + [ "src/gpu_info_util/SystemInfo_libdrm.cpp" ] + libangle_gpu_info_util_x11_sources = [ "src/gpu_info_util/SystemInfo_x11.cpp" ] libangle_gpu_info_util_mac_sources = [ diff --git a/third_party/angle/src/libGLESv2/egl_ext_stubs.cpp b/third_party/angle/src/libGLESv2/egl_ext_stubs.cpp index 9aab71bb023faf9d35982677b9fac0fbea58d0f0..f664dce2393f7e73ea7eb342620a1fa0dae352ce 100644 --- a/third_party/angle/src/libGLESv2/egl_ext_stubs.cpp +++ b/third_party/angle/src/libGLESv2/egl_ext_stubs.cpp @@ -212,6 +212,7 @@ EGLDisplay GetPlatformDisplayEXT(Thread *thread, case EGL_PLATFORM_ANGLE_ANGLE: case EGL_PLATFORM_GBM_KHR: case EGL_PLATFORM_WAYLAND_EXT: + case EGL_PLATFORM_SURFACELESS_MESA: { return egl::Display::GetDisplayFromNativeDisplay( platform, gl::bitCast<EGLNativeDisplayType>(native_display), attribMap); diff --git a/third_party/angle/src/libGLESv2/egl_stubs.cpp b/third_party/angle/src/libGLESv2/egl_stubs.cpp index 0beb12038678dbdaa25b1b843fcde6826a42d17c..9fb6e5b3ec621d979c49aeb90cc661acd62611e6 100644 --- a/third_party/angle/src/libGLESv2/egl_stubs.cpp +++ b/third_party/angle/src/libGLESv2/egl_stubs.cpp @@ -411,6 +411,7 @@ EGLDisplay GetPlatformDisplay(Thread *thread, case EGL_PLATFORM_ANGLE_ANGLE: case EGL_PLATFORM_GBM_KHR: case EGL_PLATFORM_WAYLAND_EXT: + case EGL_PLATFORM_SURFACELESS_MESA: { return Display::GetDisplayFromNativeDisplay( platform, gl::bitCast<EGLNativeDisplayType>(native_display), attribMap); diff --git a/third_party/angle/src/tests/test_utils/VulkanHelper.cpp b/third_party/angle/src/tests/test_utils/VulkanHelper.cpp index 8d01793dd7097f69e9237222baddac058418278a..840c4a50b7fdd50f2e41943384bbac098f670985 100644 --- a/third_party/angle/src/tests/test_utils/VulkanHelper.cpp +++ b/third_party/angle/src/tests/test_utils/VulkanHelper.cpp @@ -273,7 +273,8 @@ void VulkanHelper::initialize(bool useSwiftshader, bool enableValidationLayers) ASSERT(physicalDevices.size() > 0); VkPhysicalDeviceProperties physicalDeviceProperties; - ChoosePhysicalDevice(vkGetPhysicalDeviceProperties, physicalDevices, icd, 0, 0, + ChoosePhysicalDevice(vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceProperties2, + vkEnumerateDeviceExtensionProperties, physicalDevices, icd, 0, &mPhysicalDevice, &physicalDeviceProperties); vkGetPhysicalDeviceMemoryProperties(mPhysicalDevice, &mMemoryProperties); @@ -464,6 +465,10 @@ void VulkanHelper::initializeFromANGLE() vkResult = vkCreateCommandPool(mDevice, &commandPoolCreateInfo, nullptr, &mCommandPool); ASSERT(vkResult == VK_SUCCESS); + vkGetPhysicalDeviceProperties2 = reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>( + vkGetInstanceProcAddr(mInstance, "vkGetPhysicalDeviceProperties2")); + ASSERT(vkGetPhysicalDeviceProperties2); + vkGetPhysicalDeviceImageFormatProperties2 = reinterpret_cast<PFN_vkGetPhysicalDeviceImageFormatProperties2>( vkGetInstanceProcAddr(mInstance, "vkGetPhysicalDeviceImageFormatProperties2")); diff --git a/third_party/angle/src/tests/test_utils/VulkanHelper.h b/third_party/angle/src/tests/test_utils/VulkanHelper.h index 1a93bff7ddb11ee3c8c288d55f84d000155b4210..a1f992abb5a0a9ac1f6a31b37a2af63b1497dae3 100644 --- a/third_party/angle/src/tests/test_utils/VulkanHelper.h +++ b/third_party/angle/src/tests/test_utils/VulkanHelper.h @@ -144,10 +144,11 @@ class VulkanHelper uint32_t mGraphicsQueueFamilyIndex = UINT32_MAX; - bool mHasExternalMemoryFd = false; - bool mHasExternalMemoryFuchsia = false; - bool mHasExternalSemaphoreFd = false; - bool mHasExternalSemaphoreFuchsia = false; + bool mHasExternalMemoryFd = false; + bool mHasExternalMemoryFuchsia = false; + bool mHasExternalSemaphoreFd = false; + bool mHasExternalSemaphoreFuchsia = false; + PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = nullptr; PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = nullptr; PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = nullptr; diff --git a/third_party/angle/third_party/gn/libdrm/BUILD.gn b/third_party/angle/third_party/gn/libdrm/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..1b8eba942abdead0ccf1d04e7527d08fe15743f8 --- /dev/null +++ b/third_party/angle/third_party/gn/libdrm/BUILD.gn @@ -0,0 +1,55 @@ +# Copyright 2016 The Chromium Authors +# Copyright 2023 The ANGLE Project Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import("../../../gni/angle.gni") + +assert(is_linux || is_chromeos) + +libdrm_src = "$angle_root/third_party/libdrm" + +generated_static_table_fourcc_file = + "$target_gen_dir/src/generated_static_table_fourcc.h" +fourcc_file = "$libdrm_src/include/drm/drm_fourcc.h" + +action("make_generated_static_table_fourcc") { + script = "$libdrm_src/gen_table_fourcc.py" + args = [ + rebase_path(fourcc_file, root_build_dir), + rebase_path(generated_static_table_fourcc_file), + ] + outputs = [ generated_static_table_fourcc_file ] + inputs = [ fourcc_file ] +} + +config("libdrm_config") { + include_dirs = [ + "$libdrm_src", + "$libdrm_src/include", + "$libdrm_src/include/drm", + ] + + # glibc version >= 2.25 explicitly include <sys/sysmacros.h> + cflags = [ "-DMAJOR_IN_SYSMACROS=1" ] +} + +static_library("libdrm") { + sources = [ + "$libdrm_src/xf86drm.c", + "$libdrm_src/xf86drmHash.c", + "$libdrm_src/xf86drmMode.c", + "$libdrm_src/xf86drmRandom.c", + ] + + deps = [ ":make_generated_static_table_fourcc" ] + + include_dirs = [ + get_path_info(generated_static_table_fourcc_file, "dir"), + "$libdrm_src", + "$libdrm_src/include", + ] + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + + public_configs = [ ":libdrm_config" ] +} diff --git a/third_party/dawn/src/dawn/native/vulkan/DeviceVk.cpp b/third_party/dawn/src/dawn/native/vulkan/DeviceVk.cpp index 9617771b0455e2911af314890f46eec804ff39a1..37ecd5543854235243747ef923e61533b803eba2 100644 --- a/third_party/dawn/src/dawn/native/vulkan/DeviceVk.cpp +++ b/third_party/dawn/src/dawn/native/vulkan/DeviceVk.cpp @@ -50,10 +50,12 @@ namespace dawn::native::vulkan { namespace { // Destroy the semaphore when out of scope. -class ScopedSignalSemaphore : public NonMovable { +class ScopedSignalSemaphore : public NonCopyable { public: ScopedSignalSemaphore(Device* device, VkSemaphore semaphore) : mDevice(device), mSemaphore(semaphore) {} + ScopedSignalSemaphore(ScopedSignalSemaphore&& other) + : mDevice(other.mDevice), mSemaphore(std::exchange(other.mSemaphore, VK_NULL_HANDLE)) {} ~ScopedSignalSemaphore() { if (mSemaphore != VK_NULL_HANDLE) { mDevice->GetFencedDeleter()->DeleteWhenUnused(mSemaphore); @@ -314,10 +316,12 @@ MaybeError Device::SubmitPendingCommands() { fn, &mRecordingContext, mRecordingContext.mappableBuffersForEagerTransition); } - ScopedSignalSemaphore externalTextureSemaphore(this, VK_NULL_HANDLE); - if (mRecordingContext.externalTexturesForEagerTransition.size() > 0) { - // Create an external semaphore for all external textures that have been used in the pending - // submit. + std::vector<ScopedSignalSemaphore> externalTextureSemaphores; + for (size_t i = 0; i < mRecordingContext.externalTexturesForEagerTransition.size(); ++i) { + // Create an external semaphore for each external textures that have been used in the + // pending submit. + auto& externalTextureSemaphore = + externalTextureSemaphores.emplace_back(this, VK_NULL_HANDLE); DAWN_TRY_ASSIGN(*externalTextureSemaphore.InitializeInto(), mExternalSemaphoreService->CreateExportableSemaphore()); } @@ -336,7 +340,7 @@ MaybeError Device::SubmitPendingCommands() { std::vector<VkPipelineStageFlags> dstStageMasks(mRecordingContext.waitSemaphores.size(), VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); - if (externalTextureSemaphore.Get() != VK_NULL_HANDLE) { + for (auto& externalTextureSemaphore : externalTextureSemaphores) { mRecordingContext.signalSemaphores.push_back(externalTextureSemaphore.Get()); } @@ -376,23 +380,19 @@ MaybeError Device::SubmitPendingCommands() { mCommandsInFlight.Enqueue(submittedCommands, lastSubmittedSerial); } - if (mRecordingContext.externalTexturesForEagerTransition.size() > 0) { + auto externalTextureSemaphoreIter = externalTextureSemaphores.begin(); + for (auto* texture : mRecordingContext.externalTexturesForEagerTransition) { // Export the signal semaphore. ExternalSemaphoreHandle semaphoreHandle; - DAWN_TRY_ASSIGN(semaphoreHandle, - mExternalSemaphoreService->ExportSemaphore(externalTextureSemaphore.Get())); + DAWN_TRY_ASSIGN(semaphoreHandle, mExternalSemaphoreService->ExportSemaphore( + externalTextureSemaphoreIter->Get())); + ++externalTextureSemaphoreIter; // Update all external textures, eagerly transitioned in the submit, with the exported - // handle, and the duplicated handles. - bool first = true; - for (auto* texture : mRecordingContext.externalTexturesForEagerTransition) { - ExternalSemaphoreHandle handle = - (first ? semaphoreHandle - : mExternalSemaphoreService->DuplicateHandle(semaphoreHandle)); - first = false; - texture->UpdateExternalSemaphoreHandle(handle); - } + // handles. + texture->UpdateExternalSemaphoreHandle(semaphoreHandle); } + DAWN_ASSERT(externalTextureSemaphoreIter == externalTextureSemaphores.end()); mRecordingContext = CommandRecordingContext(); DAWN_TRY(PrepareRecordingContext()); diff --git a/third_party/dawn/src/dawn/tests/white_box/VulkanImageWrappingTests.cpp b/third_party/dawn/src/dawn/tests/white_box/VulkanImageWrappingTests.cpp index f79568edde9ce2fd5bc8dbefdc6acd357a2b93a8..90b3e19c4e72bc02ea431c059447d4c4564b488d 100644 --- a/third_party/dawn/src/dawn/tests/white_box/VulkanImageWrappingTests.cpp +++ b/third_party/dawn/src/dawn/tests/white_box/VulkanImageWrappingTests.cpp @@ -40,6 +40,9 @@ using ExternalSemaphore = VulkanImageWrappingTestBackend::ExternalSemaphore; using UseDedicatedAllocation = bool; using DetectDedicatedAllocation = bool; + +constexpr int kTestTexturesCount = 2; + DAWN_TEST_PARAM_STRUCT(ImageWrappingParams, UseDedicatedAllocation, DetectDedicatedAllocation); class VulkanImageWrappingTestBase : public DawnTestWithParams<ImageWrappingParams> { @@ -74,8 +77,11 @@ class VulkanImageWrappingTestBase : public DawnTestWithParams<ImageWrappingParam defaultDescriptor.usage = wgpu::TextureUsage::RenderAttachment | wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst; - defaultTexture = - mBackend->CreateTexture(1, 1, defaultDescriptor.format, defaultDescriptor.usage); + for (int i = 0; i < kTestTexturesCount; ++i) { + testTextures[i] = + mBackend->CreateTexture(1, 1, defaultDescriptor.format, defaultDescriptor.usage); + } + defaultTexture = testTextures[0].get(); } void TearDown() override { @@ -84,6 +90,7 @@ class VulkanImageWrappingTestBase : public DawnTestWithParams<ImageWrappingParam return; } + testTextures = {}; defaultTexture = nullptr; mBackend = nullptr; DawnTestWithParams::TearDown(); @@ -142,7 +149,8 @@ class VulkanImageWrappingTestBase : public DawnTestWithParams<ImageWrappingParam std::unique_ptr<VulkanImageWrappingTestBackend> mBackend; wgpu::TextureDescriptor defaultDescriptor; - std::unique_ptr<ExternalTexture> defaultTexture; + std::array<std::unique_ptr<ExternalTexture>, kTestTexturesCount> testTextures; + ExternalTexture* defaultTexture; }; using VulkanImageWrappingValidationTests = VulkanImageWrappingTestBase; @@ -150,7 +158,7 @@ using VulkanImageWrappingValidationTests = VulkanImageWrappingTestBase; // Test no error occurs if the import is valid TEST_P(VulkanImageWrappingValidationTests, SuccessfulImport) { wgpu::Texture texture = - WrapVulkanImage(device, &defaultDescriptor, defaultTexture.get(), {}, true, true); + WrapVulkanImage(device, &defaultDescriptor, defaultTexture, {}, true, true); EXPECT_NE(texture.Get(), nullptr); IgnoreSignalSemaphore(texture); } @@ -163,7 +171,7 @@ TEST_P(VulkanImageWrappingValidationTests, SuccessfulImportWithInternalUsageDesc internalDesc.sType = wgpu::SType::DawnTextureInternalUsageDescriptor; wgpu::Texture texture = - WrapVulkanImage(device, &defaultDescriptor, defaultTexture.get(), {}, true, true); + WrapVulkanImage(device, &defaultDescriptor, defaultTexture, {}, true, true); EXPECT_NE(texture.Get(), nullptr); IgnoreSignalSemaphore(texture); } @@ -174,8 +182,8 @@ TEST_P(VulkanImageWrappingValidationTests, InvalidTextureDescriptor) { chainedDescriptor.sType = wgpu::SType::SurfaceDescriptorFromWindowsSwapChainPanel; defaultDescriptor.nextInChain = &chainedDescriptor; - ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), {}, true, false)); + ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage(device, &defaultDescriptor, + defaultTexture, {}, true, false)); EXPECT_EQ(texture.Get(), nullptr); } @@ -183,8 +191,8 @@ TEST_P(VulkanImageWrappingValidationTests, InvalidTextureDescriptor) { TEST_P(VulkanImageWrappingValidationTests, InvalidTextureDimension) { defaultDescriptor.dimension = wgpu::TextureDimension::e1D; - ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), {}, true, false)); + ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage(device, &defaultDescriptor, + defaultTexture, {}, true, false)); EXPECT_EQ(texture.Get(), nullptr); } @@ -192,8 +200,8 @@ TEST_P(VulkanImageWrappingValidationTests, InvalidTextureDimension) { TEST_P(VulkanImageWrappingValidationTests, InvalidMipLevelCount) { defaultDescriptor.mipLevelCount = 2; - ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), {}, true, false)); + ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage(device, &defaultDescriptor, + defaultTexture, {}, true, false)); EXPECT_EQ(texture.Get(), nullptr); } @@ -201,8 +209,8 @@ TEST_P(VulkanImageWrappingValidationTests, InvalidMipLevelCount) { TEST_P(VulkanImageWrappingValidationTests, InvalidDepth) { defaultDescriptor.size.depthOrArrayLayers = 2; - ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), {}, true, false)); + ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage(device, &defaultDescriptor, + defaultTexture, {}, true, false)); EXPECT_EQ(texture.Get(), nullptr); } @@ -210,15 +218,15 @@ TEST_P(VulkanImageWrappingValidationTests, InvalidDepth) { TEST_P(VulkanImageWrappingValidationTests, InvalidSampleCount) { defaultDescriptor.sampleCount = 4; - ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), {}, true, false)); + ASSERT_DEVICE_ERROR(wgpu::Texture texture = WrapVulkanImage(device, &defaultDescriptor, + defaultTexture, {}, true, false)); EXPECT_EQ(texture.Get(), nullptr); } // Test an error occurs if we try to export the signal semaphore twice TEST_P(VulkanImageWrappingValidationTests, DoubleSignalSemaphoreExport) { wgpu::Texture texture = - WrapVulkanImage(device, &defaultDescriptor, defaultTexture.get(), {}, true, true); + WrapVulkanImage(device, &defaultDescriptor, defaultTexture, {}, true, true); ASSERT_NE(texture.Get(), nullptr); IgnoreSignalSemaphore(texture); @@ -242,7 +250,7 @@ TEST_P(VulkanImageWrappingValidationTests, NormalTextureSignalSemaphoreExport) { // Test an error occurs if we try to export the signal semaphore from a destroyed texture TEST_P(VulkanImageWrappingValidationTests, DestroyedTextureSignalSemaphoreExport) { wgpu::Texture texture = - WrapVulkanImage(device, &defaultDescriptor, defaultTexture.get(), {}, true, true); + WrapVulkanImage(device, &defaultDescriptor, defaultTexture, {}, true, true); ASSERT_NE(texture.Get(), nullptr); texture.Destroy(); @@ -298,6 +306,31 @@ class VulkanImageWrappingUsageTests : public VulkanImageWrappingTestBase { wgpu::CommandBuffer commands = encoder.Finish(); wgpu::Queue queue = dawnDevice.GetQueue(); + + queue.Submit(1, &commands); + } + + void ClearImages(wgpu::Device dawnDevice, + std::vector<wgpu::Texture> wrappedTextures, + wgpu::Color clearColor) { + wgpu::CommandEncoder encoder = dawnDevice.CreateCommandEncoder(); + + for (auto wrappedTexture : wrappedTextures) { + wgpu::TextureView wrappedView = wrappedTexture.CreateView(); + + // Submit a clear operation + utils::ComboRenderPassDescriptor renderPassDescriptor({wrappedView}, {}); + renderPassDescriptor.cColorAttachments[0].clearValue = clearColor; + renderPassDescriptor.cColorAttachments[0].loadOp = wgpu::LoadOp::Clear; + + wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPassDescriptor); + pass.End(); + } + + wgpu::CommandBuffer commands = encoder.Finish(); + + wgpu::Queue queue = dawnDevice.GetQueue(); + queue.Submit(1, &commands); } @@ -324,7 +357,7 @@ class VulkanImageWrappingUsageTests : public VulkanImageWrappingTestBase { TEST_P(VulkanImageWrappingUsageTests, ClearImageAcrossDevices) { // Import the image on |secondDevice| wgpu::Texture wrappedTexture = - WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture.get(), {}, + WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |secondDevice| @@ -335,7 +368,7 @@ TEST_P(VulkanImageWrappingUsageTests, ClearImageAcrossDevices) { // Import the image to |device|, making sure we wait on signalFd wgpu::Texture nextWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); // Verify |device| sees the changes from |secondDevice| @@ -344,12 +377,46 @@ TEST_P(VulkanImageWrappingUsageTests, ClearImageAcrossDevices) { IgnoreSignalSemaphore(nextWrappedTexture); } +// Clear two images in |secondDevice| +// Verify clear color is visible in |device| +// This is intended to verify that waiting on the signalFd for one external texture does not affect +// those of other external textures. +TEST_P(VulkanImageWrappingUsageTests, ClearTwoImagesAcrossDevices) { + static_assert(kTestTexturesCount >= 2); + + std::vector<wgpu::Texture> wrappedTextures; + for (int i = 0; i < 2; ++i) { + // Import the images on |secondDevice| + wrappedTextures.push_back( + WrapVulkanImage(secondDevice, &defaultDescriptor, testTextures[i].get(), {}, + VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)); + } + + // Clear |wrappedTextures| on |secondDevice| + ClearImages(secondDevice, wrappedTextures, {1 / 255.0f, 2 / 255.0f, 3 / 255.0f, 4 / 255.0f}); + + for (int i = 0; i < 2; ++i) { + ExternalImageExportInfoVkForTesting exportInfo; + ASSERT_TRUE(mBackend->ExportImage(wrappedTextures[i], &exportInfo)); + + // Import the image to |device|, making sure we wait on signalFd + wgpu::Texture nextWrappedTexture = WrapVulkanImage( + device, &defaultDescriptor, testTextures[i].get(), std::move(exportInfo.semaphores), + exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); + + // Verify |device| sees the changes from |secondDevice| + EXPECT_PIXEL_RGBA8_EQ(utils::RGBA8(1, 2, 3, 4), nextWrappedTexture, 0, 0); + + IgnoreSignalSemaphore(nextWrappedTexture); + } +} + // Clear an image in |secondDevice| // Verify clear color is not visible in |device| if we import the texture as not cleared TEST_P(VulkanImageWrappingUsageTests, UninitializedTextureIsCleared) { // Import the image on |secondDevice| wgpu::Texture wrappedTexture = - WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture.get(), {}, + WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |secondDevice| @@ -360,7 +427,7 @@ TEST_P(VulkanImageWrappingUsageTests, UninitializedTextureIsCleared) { // Import the image to |device|, making sure we wait on signalFd wgpu::Texture nextWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout, false); // Verify |device| doesn't see the changes from |secondDevice| @@ -376,7 +443,7 @@ TEST_P(VulkanImageWrappingUsageTests, UninitializedTextureIsCleared) { TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureSrcSync) { // Import the image on |secondDevice| wgpu::Texture wrappedTexture = - WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture.get(), {}, + WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |secondDevice| @@ -387,7 +454,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureSrcSync) { // Import the image to |device|, making sure we wait on |signalFd| wgpu::Texture deviceWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); // Create a second texture on |device| @@ -414,8 +481,8 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureSrcSync) { TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureDstSync) { // Import the image on |device| wgpu::Texture wrappedTexture = - WrapVulkanImage(device, &defaultDescriptor, defaultTexture.get(), {}, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); + WrapVulkanImage(device, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |device| ClearImage(device, wrappedTexture, {5 / 255.0f, 6 / 255.0f, 7 / 255.0f, 8 / 255.0f}); @@ -425,7 +492,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureDstSync) { // Import the image to |secondDevice|, making sure we wait on |signalFd| wgpu::Texture secondDeviceWrappedTexture = WrapVulkanImage( - secondDevice, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + secondDevice, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); // Create a texture with color B on |secondDevice| @@ -442,7 +509,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureDstSync) { ASSERT_TRUE(mBackend->ExportImage(secondDeviceWrappedTexture, &secondExportInfo)); wgpu::Texture nextWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(secondExportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(secondExportInfo.semaphores), secondExportInfo.releasedOldLayout, secondExportInfo.releasedNewLayout); // Verify |nextWrappedTexture| contains the color from our copy @@ -458,7 +525,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToTextureDstSync) { TEST_P(VulkanImageWrappingUsageTests, CopyTextureToBufferSrcSync) { // Import the image on |secondDevice| wgpu::Texture wrappedTexture = - WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture.get(), {}, + WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |secondDevice| @@ -469,7 +536,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToBufferSrcSync) { // Import the image to |device|, making sure we wait on |signalFd| wgpu::Texture deviceWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); // Create a destination buffer on |device| @@ -508,8 +575,8 @@ TEST_P(VulkanImageWrappingUsageTests, CopyTextureToBufferSrcSync) { TEST_P(VulkanImageWrappingUsageTests, CopyBufferToTextureDstSync) { // Import the image on |device| wgpu::Texture wrappedTexture = - WrapVulkanImage(device, &defaultDescriptor, defaultTexture.get(), {}, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); + WrapVulkanImage(device, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |device| ClearImage(device, wrappedTexture, {5 / 255.0f, 6 / 255.0f, 7 / 255.0f, 8 / 255.0f}); @@ -519,7 +586,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyBufferToTextureDstSync) { // Import the image to |secondDevice|, making sure we wait on |signalFd| wgpu::Texture secondDeviceWrappedTexture = WrapVulkanImage( - secondDevice, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + secondDevice, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); // Copy color B on |secondDevice| @@ -546,7 +613,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyBufferToTextureDstSync) { ASSERT_TRUE(mBackend->ExportImage(secondDeviceWrappedTexture, &secondExportInfo)); wgpu::Texture nextWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(secondExportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(secondExportInfo.semaphores), secondExportInfo.releasedOldLayout, secondExportInfo.releasedNewLayout); // Verify |nextWrappedTexture| contains the color from our copy @@ -563,7 +630,7 @@ TEST_P(VulkanImageWrappingUsageTests, CopyBufferToTextureDstSync) { TEST_P(VulkanImageWrappingUsageTests, DoubleTextureUsage) { // Import the image on |secondDevice| wgpu::Texture wrappedTexture = - WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture.get(), {}, + WrapVulkanImage(secondDevice, &defaultDescriptor, defaultTexture, {}, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); // Clear |wrappedTexture| on |secondDevice| @@ -574,7 +641,7 @@ TEST_P(VulkanImageWrappingUsageTests, DoubleTextureUsage) { // Import the image to |device|, making sure we wait on |signalFd| wgpu::Texture deviceWrappedTexture = WrapVulkanImage( - device, &defaultDescriptor, defaultTexture.get(), std::move(exportInfo.semaphores), + device, &defaultDescriptor, defaultTexture, std::move(exportInfo.semaphores), exportInfo.releasedOldLayout, exportInfo.releasedNewLayout); // Create a second texture on |device|
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor