Commit b407e1a0 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: implement ES3 blit

Augment the resolve shaders to be able to stretch and blit too. The UtilsVk resolve function is accordingly expanded to include blit. Bug: angleproject:3200 Change-Id: I30b172a5e388089735ab494f55cbfdc2781a8bf9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635753 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent ea49f6f5
...@@ -160,6 +160,13 @@ struct FeaturesVk : FeatureSetBase ...@@ -160,6 +160,13 @@ struct FeaturesVk : FeatureSetBase
"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, " "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, "
"which prevents OES_depth_texture from being supported.", "which prevents OES_depth_texture from being supported.",
&members, "http://anglebug.com/3452"}; &members, "http://anglebug.com/3452"};
// On some android devices, vkCmdBlitImage with flipped coordinates blits incorrectly. This
// workaround makes sure this path is avoided. http://anglebug.com/3498
Feature disableFlippingBlitWithCommand = {
"disable_flipping_blit_with_command", FeatureCategory::VulkanWorkarounds,
"On some android devices, vkCmdBlitImage with flipped coordinates blits incorrectly.",
&members, "http://anglebug.com/3498"};
}; };
inline FeaturesVk::FeaturesVk() = default; inline FeaturesVk::FeaturesVk() = default;
......
...@@ -194,33 +194,61 @@ ...@@ -194,33 +194,61 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py":
"3089dcc7ffff60a8803595fd44278f6e", "3089dcc7ffff60a8803595fd44278f6e",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc":
"f950115a4273ad8e5f24ceb09aa36bdb", "81ec58577a603891b5778b4d393734b8",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc":
"8c853bb076d55b2e1094dd4b29014626", "399562c957c0bc0ef14df973fe808b05",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000002.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000002.inc":
"2cfa7b5415d8b3d89e4bd592086b0baa", "0038d212a95f2542b17ba6e4238c0462",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000003.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000003.inc":
"32fb163e85b7c61d1fb1b20c00d73d33", "67e9f1fc766486fc5f534d8a1f04a854",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000004.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000004.inc":
"f857610fb8b06bb8fd1bf8e0e2a71373", "dd6ffc1e9586177f730203dd5841d1d1",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000005.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000005.inc":
"5c9b2fea10b85f92d15de0300502b60c", "06a0f46b8b205ba9bb5e7bb14404b5fa",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000006.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000006.inc":
"4b023a0f9a34b041d60d311ffee1006f", "75296d048ace1db3ed8e544d56b4e050",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000007.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000007.inc":
"37a43a2caaac3290d34c12dc49a6c9cf", "b2ae64586829e505a2dbcf8fb7a1c50b",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000008.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000008.inc":
"9bf352a58405b89729f55169b52dd130", "55ba68de82d8586e2f333b1486db59cc",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc":
"954cad0e948e0dcf49cd0a7bb0a12093", "7b3743cc4bc2c6feb0b203a74db5d501",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc":
"eba4cde12dfd8859bc5ac6277380cc4c", "7ad6c4c137773e8ecb75e6c26e7b0990",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc":
"c4c3746af07355763ef3cd854faa8311", "61d9743396e56e7b86dfc3c8603adec4",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000C.inc":
"809ac592dd2493896de568110c812191",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000D.inc":
"ab6afa1fcb8e58de81f23628f008586d",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000E.inc":
"0dcce7e7c06679abba428644e062d5c5",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000F.inc":
"aa2e70847fe9fe45b88634d99a94d12a",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000010.inc":
"eb338d106ddf2f385984325d9e744278",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000011.inc":
"09c206e206f6c5e2c2c861994cc85b71",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000012.inc":
"1e0687860e0e953a08ffba72436a8a29",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000013.inc":
"b63c6b7f0cbdfda46f6567992a4fe0e0",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000014.inc":
"b580482c75cc647753652ce7ad066752",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000015.inc":
"c615ec355d9490f099fd0d08d29945af",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000016.inc":
"3869539b97d26bde314330c4b1e86c39",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000017.inc":
"e1292ab693551a1fe63ddca991ba7b24",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc":
"c6306a1ba9936d5de5e3b0c5f7453c2c", "ca23e2bc39df49c395f04d0309f8716e",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc":
"e3830b19e45e8516513c9fa23edd9e5b", "b221f732a390f5324ba525a8b8126c47",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc":
"7fba278c66982666d9a92985630ce612",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc":
"8f775bd123c036df48521af0f0b370e7",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc":
"df5fdc47f0950e3eae3d9491e9c84af7", "df5fdc47f0950e3eae3d9491e9c84af7",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc":
...@@ -366,9 +394,9 @@ ...@@ -366,9 +394,9 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc":
"6a2e5e10e686370f3350a96cda2441a0", "6a2e5e10e686370f3350a96cda2441a0",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BlitResolve.frag": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BlitResolve.frag":
"bfdf89388c48f0fb9dd4761c525ce7da", "a3ecba7bc86093f90b183605bed82813",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BlitResolveStencilNoExport.comp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BlitResolveStencilNoExport.comp":
"bfa9fc38b63aa9c9127f0c4a0fd2ae05", "3080e264f932ce3a219bb63c79b86636",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp":
"0c8c050841543da0d7faca2559212aa8", "0c8c050841543da0d7faca2559212aa8",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp":
...@@ -382,9 +410,9 @@ ...@@ -382,9 +410,9 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag":
"20c83ade1efb48a802dc34ca838a2be6", "20c83ade1efb48a802dc34ca838a2be6",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp":
"4df7fd7369f513162c85a1e6dc1c13c4", "75538dc8198ce0c1c3f41d351fb6f5a2",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h": "Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h":
"d16caa0d290c34f0a8bf5d95d7220e8b", "fcece480c12c03e7107b5cfc58584638",
"Vulkan internal shader programs:tools/glslang/glslang_validator.exe.sha1": "Vulkan internal shader programs:tools/glslang/glslang_validator.exe.sha1":
"9f1f0fc61116a657e065c40f9296e5ab", "9f1f0fc61116a657e065c40f9296e5ab",
"Vulkan internal shader programs:tools/glslang/glslang_validator.sha1": "Vulkan internal shader programs:tools/glslang/glslang_validator.sha1":
......
...@@ -3557,6 +3557,11 @@ void Context::blitFramebuffer(GLint srcX0, ...@@ -3557,6 +3557,11 @@ void Context::blitFramebuffer(GLint srcX0,
Rectangle srcArea(srcX0, srcY0, srcX1 - srcX0, srcY1 - srcY0); Rectangle srcArea(srcX0, srcY0, srcX1 - srcX0, srcY1 - srcY0);
Rectangle dstArea(dstX0, dstY0, dstX1 - dstX0, dstY1 - dstY0); Rectangle dstArea(dstX0, dstY0, dstX1 - dstX0, dstY1 - dstY0);
if (dstArea.width == 0 || dstArea.height == 0)
{
return;
}
ANGLE_CONTEXT_TRY(syncStateForBlit()); ANGLE_CONTEXT_TRY(syncStateForBlit());
ANGLE_CONTEXT_TRY(drawFramebuffer->blit(this, srcArea, dstArea, mask, filter)); ANGLE_CONTEXT_TRY(drawFramebuffer->blit(this, srcArea, dstArea, mask, filter));
......
...@@ -241,20 +241,25 @@ static void MinMax(int a, int b, int *minimum, int *maximum) ...@@ -241,20 +241,25 @@ static void MinMax(int a, int b, int *minimum, int *maximum)
} }
} }
Rectangle Rectangle::removeReversal() const Rectangle Rectangle::flip(bool flipX, bool flipY) const
{ {
Rectangle unreversed = *this; Rectangle flipped = *this;
if (isReversedX()) if (flipX)
{ {
unreversed.x = unreversed.x + unreversed.width; flipped.x = flipped.x + flipped.width;
unreversed.width = -unreversed.width; flipped.width = -flipped.width;
} }
if (isReversedY()) if (flipY)
{ {
unreversed.y = unreversed.y + unreversed.height; flipped.y = flipped.y + flipped.height;
unreversed.height = -unreversed.height; flipped.height = -flipped.height;
} }
return unreversed; return flipped;
}
Rectangle Rectangle::removeReversal() const
{
return flip(isReversedX(), isReversedY());
} }
bool Rectangle::encloses(const gl::Rectangle &inside) const bool Rectangle::encloses(const gl::Rectangle &inside) const
......
...@@ -45,6 +45,9 @@ struct Rectangle ...@@ -45,6 +45,9 @@ struct Rectangle
bool isReversedX() const { return width < 0; } bool isReversedX() const { return width < 0; }
bool isReversedY() const { return height < 0; } bool isReversedY() const { return height < 0; }
// Returns a rectangle with the same area but flipped in X, Y, neither or both.
Rectangle flip(bool flipX, bool flipY) const;
// Returns a rectangle with the same area but with height and width guaranteed to be positive. // Returns a rectangle with the same area but with height and width guaranteed to be positive.
Rectangle removeReversal() const; Rectangle removeReversal() const;
......
...@@ -137,30 +137,21 @@ class FramebufferVk : public FramebufferImpl ...@@ -137,30 +137,21 @@ class FramebufferVk : public FramebufferImpl
// The 'in' rectangles must be clipped to the scissor and FBO. The clipping is done in 'blit'. // The 'in' rectangles must be clipped to the scissor and FBO. The clipping is done in 'blit'.
angle::Result blitWithCommand(ContextVk *contextVk, angle::Result blitWithCommand(ContextVk *contextVk,
const gl::Rectangle &readRectIn, const gl::Rectangle &sourceArea,
const gl::Rectangle &drawRectIn, const gl::Rectangle &destArea,
RenderTargetVk *readRenderTarget, RenderTargetVk *readRenderTarget,
RenderTargetVk *drawRenderTarget, RenderTargetVk *drawRenderTarget,
GLenum filter, GLenum filter,
bool colorBlit, bool colorBlit,
bool depthBlit, bool depthBlit,
bool stencilBlit, bool stencilBlit,
bool flipSource, bool flipX,
bool flipDest); bool flipY);
// Note that 'copyArea' must be clipped to the scissor and FBO. The clipping is done in 'blit'. // Resolve color with vkCmdResolveImage
angle::Result blitWithCopy(ContextVk *contextVk, angle::Result resolveColorWithCommand(ContextVk *contextVk,
const gl::Rectangle &copyArea, const UtilsVk::BlitResolveParameters &params,
RenderTargetVk *readRenderTarget, vk::ImageHelper *srcImage);
RenderTargetVk *drawRenderTarget,
bool blitDepthBuffer,
bool blitStencilBuffer);
angle::Result blitWithReadback(ContextVk *contextVk,
const gl::Rectangle &copyArea,
VkImageAspectFlagBits aspect,
RenderTargetVk *readRenderTarget,
RenderTargetVk *drawRenderTarget);
angle::Result getFramebuffer(ContextVk *contextVk, vk::Framebuffer **framebufferOut); angle::Result getFramebuffer(ContextVk *contextVk, vk::Framebuffer **framebufferOut);
...@@ -189,20 +180,6 @@ class FramebufferVk : public FramebufferImpl ...@@ -189,20 +180,6 @@ class FramebufferVk : public FramebufferImpl
void updateRenderPassDesc(); void updateRenderPassDesc();
angle::Result updateColorAttachment(const gl::Context *context, size_t colorIndex); angle::Result updateColorAttachment(const gl::Context *context, size_t colorIndex);
private:
// Resolve from the read framebuffer into the draw framebuffer. This is a specialized usage of
// glBlitFramebuffer() for multisampled images where scaling is not performed.
angle::Result resolve(ContextVk *contextVk,
const gl::Rectangle &area,
bool resolveColorBuffer,
bool resolveDepthBuffer,
bool resolveStencilBuffer);
// Resolve color with vkCmdResolveImage
angle::Result resolveColorWithCommand(ContextVk *contextVk,
const UtilsVk::BlitResolveParameters &params,
vk::ImageHelper *srcImage);
WindowSurfaceVk *mBackbuffer; WindowSurfaceVk *mBackbuffer;
vk::RenderPassDesc mRenderPassDesc; vk::RenderPassDesc mRenderPassDesc;
......
...@@ -1225,6 +1225,11 @@ void RendererVk::initFeatures(const ExtensionNameList &deviceExtensionNames) ...@@ -1225,6 +1225,11 @@ void RendererVk::initFeatures(const ExtensionNameList &deviceExtensionNames)
{ {
mFeatures.forceD16TexFilter.enabled = true; mFeatures.forceD16TexFilter.enabled = true;
} }
if (IsAndroid() && IsQualcomm(mPhysicalDeviceProperties.vendorID))
{
mFeatures.disableFlippingBlitWithCommand.enabled = true;
}
} }
void RendererVk::initPipelineCacheVkKey() void RendererVk::initPipelineCacheVkKey()
......
...@@ -79,9 +79,9 @@ VkPresentModeKHR GetDesiredPresentMode(const std::vector<VkPresentModeKHR> &pres ...@@ -79,9 +79,9 @@ VkPresentModeKHR GetDesiredPresentMode(const std::vector<VkPresentModeKHR> &pres
} }
constexpr VkImageUsageFlags kSurfaceVKImageUsageFlags = constexpr VkImageUsageFlags kSurfaceVKImageUsageFlags =
VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
constexpr VkImageUsageFlags kSurfaceVKColorImageUsageFlags = constexpr VkImageUsageFlags kSurfaceVKColorImageUsageFlags =
kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
constexpr VkImageUsageFlags kSurfaceVKDepthStencilImageUsageFlags = constexpr VkImageUsageFlags kSurfaceVKDepthStencilImageUsageFlags =
kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
// unsupported formats to their fallbacks. // unsupported formats to their fallbacks.
// - Image clear: Used by FramebufferVk::clearWithDraw(). // - Image clear: Used by FramebufferVk::clearWithDraw().
// - Image copy: Used by TextureVk::copySubImageImplWithDraw(). // - Image copy: Used by TextureVk::copySubImageImplWithDraw().
// - Color resolve: Used by FramebufferVk::resolve() to implement multisample resolve on color // - Color blit/resolve: Used by FramebufferVk::blit() to implement blit or multisample resolve
// images. // on color images.
// - Depth/Stencil resolve: Used by FramebufferVk::resolve() to implement multisample resolve on // - Depth/Stencil blit/resolve: Used by FramebufferVk::blit() to implement blit or multisample
// depth/stencil images. // resolve on depth/stencil images.
// - Mipmap generation: Not yet implemented // - Mipmap generation: Not yet implemented
// //
...@@ -86,14 +86,19 @@ class UtilsVk : angle::NonCopyable ...@@ -86,14 +86,19 @@ class UtilsVk : angle::NonCopyable
struct BlitResolveParameters struct BlitResolveParameters
{ {
// |srcOffset| and |dstOffset| define the transformation from source to destination. // |srcOffset| and |dstOffset| define the original blit/resolve offsets, possibly flipped.
int srcOffset[2]; int srcOffset[2];
int destOffset[2]; int destOffset[2];
// |srcExtents| is used to avoid fetching outside the source image. // |stretch| is SourceDimension / DestDimension used to transfer dest coordinates to source.
float stretch[2];
// |srcExtents| is used to normalize source coordinates for sampling.
int srcExtents[2]; int srcExtents[2];
// |resolveArea| defines the actual scissored region that will participate in resolve. // |blitArea| is the area in destination where blit happens. It's expected that scissor
gl::Rectangle resolveArea; // and source clipping effects have already been applied to it.
gl::Rectangle blitArea;
int srcLayer; int srcLayer;
// Whether linear or point sampling should be used.
bool linear;
bool flipX; bool flipX;
bool flipY; bool flipY;
}; };
...@@ -127,6 +132,8 @@ class UtilsVk : angle::NonCopyable ...@@ -127,6 +132,8 @@ class UtilsVk : angle::NonCopyable
angle::Result clearFramebuffer(ContextVk *contextVk, angle::Result clearFramebuffer(ContextVk *contextVk,
FramebufferVk *framebuffer, FramebufferVk *framebuffer,
const ClearFramebufferParameters &params); const ClearFramebufferParameters &params);
// Resolve images if multisampled. Blit otherwise.
angle::Result colorBlitResolve(ContextVk *contextVk, angle::Result colorBlitResolve(ContextVk *contextVk,
FramebufferVk *framebuffer, FramebufferVk *framebuffer,
vk::ImageHelper *src, vk::ImageHelper *src,
...@@ -152,6 +159,8 @@ class UtilsVk : angle::NonCopyable ...@@ -152,6 +159,8 @@ class UtilsVk : angle::NonCopyable
const CopyImageParameters &params); const CopyImageParameters &params);
private: private:
ANGLE_ENABLE_STRUCT_PADDING_WARNINGS
struct BufferUtilsShaderParams struct BufferUtilsShaderParams
{ {
// Structure matching PushConstants in BufferUtils.comp // Structure matching PushConstants in BufferUtils.comp
...@@ -212,32 +221,42 @@ class UtilsVk : angle::NonCopyable ...@@ -212,32 +221,42 @@ class UtilsVk : angle::NonCopyable
uint32_t destDefaultChannelsMask = 0; uint32_t destDefaultChannelsMask = 0;
}; };
union BlitResolveOffset
{
int32_t resolve[2];
float blit[2];
};
struct BlitResolveShaderParams struct BlitResolveShaderParams
{ {
// Structure matching PushConstants in BlitResolve.frag // Structure matching PushConstants in BlitResolve.frag
int32_t srcExtent[2] = {}; BlitResolveOffset offset = {};
int32_t srcOffset[2] = {}; float stretch[2] = {};
int32_t destOffset[2] = {}; float invSrcExtent[2] = {};
int32_t srcLayer = 0; int32_t srcLayer = 0;
int32_t samples = 0; int32_t samples = 0;
float invSamples = 0; float invSamples = 0;
uint32_t outputMask = 0; uint32_t outputMask = 0;
uint32_t flipX = 0; uint32_t flipX = 0;
uint32_t flipY = 0; uint32_t flipY = 0;
}; };
struct BlitResolveStencilNoExportShaderParams struct BlitResolveStencilNoExportShaderParams
{ {
// Structure matching PushConstants in BlitResolveStencilNoExport.comp // Structure matching PushConstants in BlitResolveStencilNoExport.comp
int32_t srcExtent[2] = {}; BlitResolveOffset offset = {};
int32_t srcOffset[2] = {}; float stretch[2] = {};
int32_t srcLayer = 0; float invSrcExtent[2] = {};
int32_t destPitch = 0; int32_t srcLayer = 0;
int32_t destExtent[2] = {}; int32_t srcWidth = 0;
uint32_t flipX = 0; int32_t blitArea[4] = {};
uint32_t flipY = 0; int32_t destPitch = 0;
uint32_t flipX = 0;
uint32_t flipY = 0;
}; };
ANGLE_DISABLE_STRUCT_PADDING_WARNINGS
// Functions implemented by the class: // Functions implemented by the class:
enum class Function enum class Function
{ {
...@@ -294,6 +313,8 @@ class UtilsVk : angle::NonCopyable ...@@ -294,6 +313,8 @@ class UtilsVk : angle::NonCopyable
angle::Result ensureBlitResolveResourcesInitialized(ContextVk *contextVk); angle::Result ensureBlitResolveResourcesInitialized(ContextVk *contextVk);
angle::Result ensureBlitResolveStencilNoExportResourcesInitialized(ContextVk *contextVk); angle::Result ensureBlitResolveStencilNoExportResourcesInitialized(ContextVk *contextVk);
angle::Result ensureBlitResolveSamplersInitialized(ContextVk *context);
angle::Result startRenderPass(ContextVk *contextVk, angle::Result startRenderPass(ContextVk *contextVk,
vk::ImageHelper *image, vk::ImageHelper *image,
const vk::ImageView *imageView, const vk::ImageView *imageView,
...@@ -301,7 +322,7 @@ class UtilsVk : angle::NonCopyable ...@@ -301,7 +322,7 @@ class UtilsVk : angle::NonCopyable
const gl::Rectangle &renderArea, const gl::Rectangle &renderArea,
vk::CommandBuffer **commandBufferOut); vk::CommandBuffer **commandBufferOut);
// Blit/resolves either color or depth/stencil, based on which view is given. // Blits or resolves either color or depth/stencil, based on which view is given.
angle::Result blitResolveImpl(ContextVk *contextVk, angle::Result blitResolveImpl(ContextVk *contextVk,
FramebufferVk *framebuffer, FramebufferVk *framebuffer,
vk::ImageHelper *src, vk::ImageHelper *src,
...@@ -342,6 +363,9 @@ class UtilsVk : angle::NonCopyable ...@@ -342,6 +363,9 @@ class UtilsVk : angle::NonCopyable
vk::InternalShader::BlitResolve_frag::kBlitMask]; vk::InternalShader::BlitResolve_frag::kBlitMask];
vk::ShaderProgramHelper mBlitResolveStencilNoExportPrograms vk::ShaderProgramHelper mBlitResolveStencilNoExportPrograms
[vk::InternalShader::BlitResolveStencilNoExport_comp::kFlagsMask]; [vk::InternalShader::BlitResolveStencilNoExport_comp::kFlagsMask];
vk::Sampler mPointSampler;
vk::Sampler mLinearSampler;
}; };
} // namespace rx } // namespace rx
......
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_0000000C[] = {
0x07230203,0x00010000,0x00080007,0x0000004e,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x0000003c,0x00030010,
0x00000004,0x00000007,0x00030010,0x00000004,0x0000000c,0x00030003,0x00000002,0x000001c2,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,0x00000009,0x49637273,0x6567616d,
0x726f6f43,0x00007364,0x00060005,0x0000000c,0x465f6c67,0x43676172,0x64726f6f,0x00000000,
0x00060005,0x00000014,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,0x00000014,
0x00000000,0x7366666f,0x00007465,0x00050006,0x00000014,0x00000001,0x65727473,0x00686374,
0x00070006,0x00000014,0x00000002,0x53766e69,0x78456372,0x746e6574,0x00000000,0x00060006,
0x00000014,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000014,0x00000004,
0x706d6173,0x0073656c,0x00060006,0x00000014,0x00000005,0x53766e69,0x6c706d61,0x00007365,
0x00060006,0x00000014,0x00000006,0x7074756f,0x614d7475,0x00006b73,0x00050006,0x00000014,
0x00000007,0x70696c66,0x00000058,0x00050006,0x00000014,0x00000008,0x70696c66,0x00000059,
0x00040005,0x00000016,0x61726170,0x0000736d,0x00060005,0x0000003c,0x465f6c67,0x44676172,
0x68747065,0x00000000,0x00040005,0x0000003f,0x74706564,0x00000068,0x00050005,0x00000043,
0x74696c62,0x706d6153,0x0072656c,0x00040047,0x0000000c,0x0000000b,0x0000000f,0x00050048,
0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,
0x00000008,0x00050048,0x00000014,0x00000002,0x00000023,0x00000010,0x00050048,0x00000014,
0x00000003,0x00000023,0x00000018,0x00050048,0x00000014,0x00000004,0x00000023,0x0000001c,
0x00050048,0x00000014,0x00000005,0x00000023,0x00000020,0x00050048,0x00000014,0x00000006,
0x00000023,0x00000024,0x00050048,0x00000014,0x00000007,0x00000023,0x00000028,0x00050048,
0x00000014,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000014,0x00000002,0x00040047,
0x0000003c,0x0000000b,0x00000016,0x00040047,0x0000003f,0x00000022,0x00000000,0x00040047,
0x0000003f,0x00000021,0x00000000,0x00040047,0x00000043,0x00000022,0x00000000,0x00040047,
0x00000043,0x00000021,0x00000002,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,
0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,
0x00000008,0x00000007,0x00000007,0x00040017,0x0000000a,0x00000006,0x00000004,0x00040020,
0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001,0x00040015,
0x00000012,0x00000020,0x00000001,0x00040015,0x00000013,0x00000020,0x00000000,0x000b001e,
0x00000014,0x00000007,0x00000007,0x00000007,0x00000012,0x00000012,0x00000006,0x00000012,
0x00000013,0x00000013,0x00040020,0x00000015,0x00000009,0x00000014,0x0004003b,0x00000015,
0x00000016,0x00000009,0x0004002b,0x00000012,0x00000017,0x00000001,0x00040020,0x00000018,
0x00000009,0x00000007,0x0004002b,0x00000012,0x0000001d,0x00000000,0x0004002b,0x00000012,
0x00000022,0x00000007,0x00040020,0x00000023,0x00000009,0x00000013,0x00020014,0x00000026,
0x0004002b,0x00000013,0x00000027,0x00000000,0x00040020,0x0000002b,0x00000007,0x00000006,
0x0004002b,0x00000012,0x00000030,0x00000008,0x0004002b,0x00000013,0x00000036,0x00000001,
0x00040020,0x0000003b,0x00000003,0x00000006,0x0004003b,0x0000003b,0x0000003c,0x00000003,
0x00090019,0x0000003d,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,
0x00000000,0x00040020,0x0000003e,0x00000000,0x0000003d,0x0004003b,0x0000003e,0x0000003f,
0x00000000,0x0002001a,0x00000041,0x00040020,0x00000042,0x00000000,0x00000041,0x0004003b,
0x00000042,0x00000043,0x00000000,0x0003001b,0x00000045,0x0000003d,0x0004002b,0x00000012,
0x00000048,0x00000002,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003d,0x0000000a,0x0000000d,
0x0000000c,0x0007004f,0x00000007,0x0000000e,0x0000000d,0x0000000d,0x00000000,0x00000001,
0x00050051,0x00000006,0x0000000f,0x0000000e,0x00000000,0x00050051,0x00000006,0x00000010,
0x0000000e,0x00000001,0x00050050,0x00000007,0x00000011,0x0000000f,0x00000010,0x0003003e,
0x00000009,0x00000011,0x00050041,0x00000018,0x00000019,0x00000016,0x00000017,0x0004003d,
0x00000007,0x0000001a,0x00000019,0x0004003d,0x00000007,0x0000001b,0x00000009,0x00050085,
0x00000007,0x0000001c,0x0000001b,0x0000001a,0x0003003e,0x00000009,0x0000001c,0x00050041,
0x00000018,0x0000001e,0x00000016,0x0000001d,0x0004003d,0x00000007,0x0000001f,0x0000001e,
0x0004003d,0x00000007,0x00000020,0x00000009,0x00050083,0x00000007,0x00000021,0x00000020,
0x0000001f,0x0003003e,0x00000009,0x00000021,0x00050041,0x00000023,0x00000024,0x00000016,
0x00000022,0x0004003d,0x00000013,0x00000025,0x00000024,0x000500ab,0x00000026,0x00000028,
0x00000025,0x00000027,0x000300f7,0x0000002a,0x00000000,0x000400fa,0x00000028,0x00000029,
0x0000002a,0x000200f8,0x00000029,0x00050041,0x0000002b,0x0000002c,0x00000009,0x00000027,
0x0004003d,0x00000006,0x0000002d,0x0000002c,0x0004007f,0x00000006,0x0000002e,0x0000002d,
0x00050041,0x0000002b,0x0000002f,0x00000009,0x00000027,0x0003003e,0x0000002f,0x0000002e,
0x000200f9,0x0000002a,0x000200f8,0x0000002a,0x00050041,0x00000023,0x00000031,0x00000016,
0x00000030,0x0004003d,0x00000013,0x00000032,0x00000031,0x000500ab,0x00000026,0x00000033,
0x00000032,0x00000027,0x000300f7,0x00000035,0x00000000,0x000400fa,0x00000033,0x00000034,
0x00000035,0x000200f8,0x00000034,0x00050041,0x0000002b,0x00000037,0x00000009,0x00000036,
0x0004003d,0x00000006,0x00000038,0x00000037,0x0004007f,0x00000006,0x00000039,0x00000038,
0x00050041,0x0000002b,0x0000003a,0x00000009,0x00000036,0x0003003e,0x0000003a,0x00000039,
0x000200f9,0x00000035,0x000200f8,0x00000035,0x0004003d,0x0000003d,0x00000040,0x0000003f,
0x0004003d,0x00000041,0x00000044,0x00000043,0x00050056,0x00000045,0x00000046,0x00000040,
0x00000044,0x0004003d,0x00000007,0x00000047,0x00000009,0x00050041,0x00000018,0x00000049,
0x00000016,0x00000048,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050085,0x00000007,
0x0000004b,0x00000047,0x0000004a,0x00050057,0x0000000a,0x0000004c,0x00000046,0x0000004b,
0x00050051,0x00000006,0x0000004d,0x0000004c,0x00000000,0x0003003e,0x0000003c,0x0000004d,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(push_constant)uniform PushConstants {
vec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2D depth;
layout(set = 0, binding = 2)uniform sampler blitSampler;
void main()
{
vec2 srcImageCoords = vec2(gl_FragCoord . xy);
srcImageCoords *= params . stretch;
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texture(sampler2D(depth, blitSampler), srcImageCoords * params . invSrcExtent). x;
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_0000000D[] = {
0x07230203,0x00010000,0x00080007,0x00000057,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x0000003c,0x00030010,
0x00000004,0x00000007,0x00030010,0x00000004,0x0000000c,0x00030003,0x00000002,0x000001c2,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,0x00000009,0x49637273,0x6567616d,
0x726f6f43,0x00007364,0x00060005,0x0000000c,0x465f6c67,0x43676172,0x64726f6f,0x00000000,
0x00060005,0x00000014,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,0x00000014,
0x00000000,0x7366666f,0x00007465,0x00050006,0x00000014,0x00000001,0x65727473,0x00686374,
0x00070006,0x00000014,0x00000002,0x53766e69,0x78456372,0x746e6574,0x00000000,0x00060006,
0x00000014,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000014,0x00000004,
0x706d6173,0x0073656c,0x00060006,0x00000014,0x00000005,0x53766e69,0x6c706d61,0x00007365,
0x00060006,0x00000014,0x00000006,0x7074756f,0x614d7475,0x00006b73,0x00050006,0x00000014,
0x00000007,0x70696c66,0x00000058,0x00050006,0x00000014,0x00000008,0x70696c66,0x00000059,
0x00040005,0x00000016,0x61726170,0x0000736d,0x00060005,0x0000003c,0x465f6c67,0x44676172,
0x68747065,0x00000000,0x00040005,0x0000003f,0x74706564,0x00000068,0x00050005,0x00000043,
0x74696c62,0x706d6153,0x0072656c,0x00040047,0x0000000c,0x0000000b,0x0000000f,0x00050048,
0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,
0x00000008,0x00050048,0x00000014,0x00000002,0x00000023,0x00000010,0x00050048,0x00000014,
0x00000003,0x00000023,0x00000018,0x00050048,0x00000014,0x00000004,0x00000023,0x0000001c,
0x00050048,0x00000014,0x00000005,0x00000023,0x00000020,0x00050048,0x00000014,0x00000006,
0x00000023,0x00000024,0x00050048,0x00000014,0x00000007,0x00000023,0x00000028,0x00050048,
0x00000014,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000014,0x00000002,0x00040047,
0x0000003c,0x0000000b,0x00000016,0x00040047,0x0000003f,0x00000022,0x00000000,0x00040047,
0x0000003f,0x00000021,0x00000000,0x00040047,0x00000043,0x00000022,0x00000000,0x00040047,
0x00000043,0x00000021,0x00000002,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,
0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,
0x00000008,0x00000007,0x00000007,0x00040017,0x0000000a,0x00000006,0x00000004,0x00040020,
0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001,0x00040015,
0x00000012,0x00000020,0x00000001,0x00040015,0x00000013,0x00000020,0x00000000,0x000b001e,
0x00000014,0x00000007,0x00000007,0x00000007,0x00000012,0x00000012,0x00000006,0x00000012,
0x00000013,0x00000013,0x00040020,0x00000015,0x00000009,0x00000014,0x0004003b,0x00000015,
0x00000016,0x00000009,0x0004002b,0x00000012,0x00000017,0x00000001,0x00040020,0x00000018,
0x00000009,0x00000007,0x0004002b,0x00000012,0x0000001d,0x00000000,0x0004002b,0x00000012,
0x00000022,0x00000007,0x00040020,0x00000023,0x00000009,0x00000013,0x00020014,0x00000026,
0x0004002b,0x00000013,0x00000027,0x00000000,0x00040020,0x0000002b,0x00000007,0x00000006,
0x0004002b,0x00000012,0x00000030,0x00000008,0x0004002b,0x00000013,0x00000036,0x00000001,
0x00040020,0x0000003b,0x00000003,0x00000006,0x0004003b,0x0000003b,0x0000003c,0x00000003,
0x00090019,0x0000003d,0x00000006,0x00000001,0x00000000,0x00000001,0x00000000,0x00000001,
0x00000000,0x00040020,0x0000003e,0x00000000,0x0000003d,0x0004003b,0x0000003e,0x0000003f,
0x00000000,0x0002001a,0x00000041,0x00040020,0x00000042,0x00000000,0x00000041,0x0004003b,
0x00000042,0x00000043,0x00000000,0x0003001b,0x00000045,0x0000003d,0x0004002b,0x00000012,
0x00000048,0x00000002,0x0004002b,0x00000012,0x0000004c,0x00000003,0x00040020,0x0000004d,
0x00000009,0x00000012,0x00040017,0x00000051,0x00000006,0x00000003,0x00050036,0x00000002,
0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,
0x00000007,0x0004003d,0x0000000a,0x0000000d,0x0000000c,0x0007004f,0x00000007,0x0000000e,
0x0000000d,0x0000000d,0x00000000,0x00000001,0x00050051,0x00000006,0x0000000f,0x0000000e,
0x00000000,0x00050051,0x00000006,0x00000010,0x0000000e,0x00000001,0x00050050,0x00000007,
0x00000011,0x0000000f,0x00000010,0x0003003e,0x00000009,0x00000011,0x00050041,0x00000018,
0x00000019,0x00000016,0x00000017,0x0004003d,0x00000007,0x0000001a,0x00000019,0x0004003d,
0x00000007,0x0000001b,0x00000009,0x00050085,0x00000007,0x0000001c,0x0000001b,0x0000001a,
0x0003003e,0x00000009,0x0000001c,0x00050041,0x00000018,0x0000001e,0x00000016,0x0000001d,
0x0004003d,0x00000007,0x0000001f,0x0000001e,0x0004003d,0x00000007,0x00000020,0x00000009,
0x00050083,0x00000007,0x00000021,0x00000020,0x0000001f,0x0003003e,0x00000009,0x00000021,
0x00050041,0x00000023,0x00000024,0x00000016,0x00000022,0x0004003d,0x00000013,0x00000025,
0x00000024,0x000500ab,0x00000026,0x00000028,0x00000025,0x00000027,0x000300f7,0x0000002a,
0x00000000,0x000400fa,0x00000028,0x00000029,0x0000002a,0x000200f8,0x00000029,0x00050041,
0x0000002b,0x0000002c,0x00000009,0x00000027,0x0004003d,0x00000006,0x0000002d,0x0000002c,
0x0004007f,0x00000006,0x0000002e,0x0000002d,0x00050041,0x0000002b,0x0000002f,0x00000009,
0x00000027,0x0003003e,0x0000002f,0x0000002e,0x000200f9,0x0000002a,0x000200f8,0x0000002a,
0x00050041,0x00000023,0x00000031,0x00000016,0x00000030,0x0004003d,0x00000013,0x00000032,
0x00000031,0x000500ab,0x00000026,0x00000033,0x00000032,0x00000027,0x000300f7,0x00000035,
0x00000000,0x000400fa,0x00000033,0x00000034,0x00000035,0x000200f8,0x00000034,0x00050041,
0x0000002b,0x00000037,0x00000009,0x00000036,0x0004003d,0x00000006,0x00000038,0x00000037,
0x0004007f,0x00000006,0x00000039,0x00000038,0x00050041,0x0000002b,0x0000003a,0x00000009,
0x00000036,0x0003003e,0x0000003a,0x00000039,0x000200f9,0x00000035,0x000200f8,0x00000035,
0x0004003d,0x0000003d,0x00000040,0x0000003f,0x0004003d,0x00000041,0x00000044,0x00000043,
0x00050056,0x00000045,0x00000046,0x00000040,0x00000044,0x0004003d,0x00000007,0x00000047,
0x00000009,0x00050041,0x00000018,0x00000049,0x00000016,0x00000048,0x0004003d,0x00000007,
0x0000004a,0x00000049,0x00050085,0x00000007,0x0000004b,0x00000047,0x0000004a,0x00050041,
0x0000004d,0x0000004e,0x00000016,0x0000004c,0x0004003d,0x00000012,0x0000004f,0x0000004e,
0x0004006f,0x00000006,0x00000050,0x0000004f,0x00050051,0x00000006,0x00000052,0x0000004b,
0x00000000,0x00050051,0x00000006,0x00000053,0x0000004b,0x00000001,0x00060050,0x00000051,
0x00000054,0x00000052,0x00000053,0x00000050,0x00050057,0x0000000a,0x00000055,0x00000046,
0x00000054,0x00050051,0x00000006,0x00000056,0x00000055,0x00000000,0x0003003e,0x0000003c,
0x00000056,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(push_constant)uniform PushConstants {
vec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2DArray depth;
layout(set = 0, binding = 2)uniform sampler blitSampler;
void main()
{
vec2 srcImageCoords = vec2(gl_FragCoord . xy);
srcImageCoords *= params . stretch;
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texture(sampler2DArray(depth, blitSampler), vec3(srcImageCoords * params . invSrcExtent, params . srcLayer)). x;
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_0000000E[] = {
0x07230203,0x00010000,0x00080007,0x0000003e,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000036,0x00030010,
0x00000004,0x00000007,0x00030010,0x00000004,0x0000000c,0x00030003,0x00000002,0x000001c2,
0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,
0x74636e75,0x736e6f69,0x00000000,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,
0x00000009,0x49637273,0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,
0x43676172,0x64726f6f,0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,
0x00000073,0x00050006,0x00000013,0x00000000,0x7366666f,0x00007465,0x00050006,0x00000013,
0x00000001,0x65727473,0x00686374,0x00070006,0x00000013,0x00000002,0x53766e69,0x78456372,
0x746e6574,0x00000000,0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,
0x00050006,0x00000013,0x00000004,0x706d6173,0x0073656c,0x00060006,0x00000013,0x00000005,
0x53766e69,0x6c706d61,0x00007365,0x00060006,0x00000013,0x00000006,0x7074756f,0x614d7475,
0x00006b73,0x00050006,0x00000013,0x00000007,0x70696c66,0x00000058,0x00050006,0x00000013,
0x00000008,0x70696c66,0x00000059,0x00040005,0x00000015,0x61726170,0x0000736d,0x00060005,
0x00000036,0x465f6c67,0x44676172,0x68747065,0x00000000,0x00040005,0x00000039,0x74706564,
0x00000068,0x00040047,0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,
0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,0x00000023,0x00000008,0x00050048,
0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,0x00000013,0x00000003,0x00000023,
0x00000018,0x00050048,0x00000013,0x00000004,0x00000023,0x0000001c,0x00050048,0x00000013,
0x00000005,0x00000023,0x00000020,0x00050048,0x00000013,0x00000006,0x00000023,0x00000024,
0x00050048,0x00000013,0x00000007,0x00000023,0x00000028,0x00050048,0x00000013,0x00000008,
0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000036,0x0000000b,
0x00000016,0x00040047,0x00000039,0x00000022,0x00000000,0x00040047,0x00000039,0x00000021,
0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,
0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,
0x00000007,0x00000007,0x00030016,0x0000000a,0x00000020,0x00040017,0x0000000b,0x0000000a,
0x00000004,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,
0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00040015,0x00000012,0x00000020,
0x00000000,0x000b001e,0x00000013,0x00000007,0x0000000e,0x0000000e,0x00000006,0x00000006,
0x0000000a,0x00000006,0x00000012,0x00000012,0x00040020,0x00000014,0x00000009,0x00000013,
0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,0x00000000,
0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001c,0x00000007,
0x00040020,0x0000001d,0x00000009,0x00000012,0x00020014,0x00000020,0x0004002b,0x00000012,
0x00000021,0x00000000,0x00040020,0x00000025,0x00000007,0x00000006,0x0004002b,0x00000006,
0x0000002a,0x00000008,0x0004002b,0x00000012,0x00000030,0x00000001,0x00040020,0x00000035,
0x00000003,0x0000000a,0x0004003b,0x00000035,0x00000036,0x00000003,0x00090019,0x00000037,
0x0000000a,0x00000001,0x00000000,0x00000000,0x00000001,0x00000001,0x00000000,0x00040020,
0x00000038,0x00000000,0x00000037,0x0004003b,0x00000038,0x00000039,0x00000000,0x00050036,
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
0x00000009,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,
0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,
0x00000010,0x0003003e,0x00000009,0x00000011,0x00050041,0x00000017,0x00000018,0x00000015,
0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x0004003d,0x00000007,0x0000001a,
0x00000009,0x00050082,0x00000007,0x0000001b,0x0000001a,0x00000019,0x0003003e,0x00000009,
0x0000001b,0x00050041,0x0000001d,0x0000001e,0x00000015,0x0000001c,0x0004003d,0x00000012,
0x0000001f,0x0000001e,0x000500ab,0x00000020,0x00000022,0x0000001f,0x00000021,0x000300f7,
0x00000024,0x00000000,0x000400fa,0x00000022,0x00000023,0x00000024,0x000200f8,0x00000023,
0x00050041,0x00000025,0x00000026,0x00000009,0x00000021,0x0004003d,0x00000006,0x00000027,
0x00000026,0x0004007e,0x00000006,0x00000028,0x00000027,0x00050041,0x00000025,0x00000029,
0x00000009,0x00000021,0x0003003e,0x00000029,0x00000028,0x000200f9,0x00000024,0x000200f8,
0x00000024,0x00050041,0x0000001d,0x0000002b,0x00000015,0x0000002a,0x0004003d,0x00000012,
0x0000002c,0x0000002b,0x000500ab,0x00000020,0x0000002d,0x0000002c,0x00000021,0x000300f7,
0x0000002f,0x00000000,0x000400fa,0x0000002d,0x0000002e,0x0000002f,0x000200f8,0x0000002e,
0x00050041,0x00000025,0x00000031,0x00000009,0x00000030,0x0004003d,0x00000006,0x00000032,
0x00000031,0x0004007e,0x00000006,0x00000033,0x00000032,0x00050041,0x00000025,0x00000034,
0x00000009,0x00000030,0x0003003e,0x00000034,0x00000033,0x000200f9,0x0000002f,0x000200f8,
0x0000002f,0x0004003d,0x00000037,0x0000003a,0x00000039,0x0004003d,0x00000007,0x0000003b,
0x00000009,0x0007005f,0x0000000b,0x0000003c,0x0000003a,0x0000003b,0x00000040,0x00000016,
0x00050051,0x0000000a,0x0000003d,0x0000003c,0x00000000,0x0003003e,0x00000036,0x0000003d,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_EXT_samplerless_texture_functions : require
layout(push_constant)uniform PushConstants {
ivec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2DMS depth;
void main()
{
ivec2 srcImageCoords = ivec2(gl_FragCoord . xy);
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texelFetch(depth, srcImageCoords, 0). x;
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_0000000F[] = {
0x07230203,0x00010000,0x00080007,0x00000046,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000036,0x00030010,
0x00000004,0x00000007,0x00030010,0x00000004,0x0000000c,0x00030003,0x00000002,0x000001c2,
0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,
0x74636e75,0x736e6f69,0x00000000,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,
0x00000009,0x49637273,0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,
0x43676172,0x64726f6f,0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,
0x00000073,0x00050006,0x00000013,0x00000000,0x7366666f,0x00007465,0x00050006,0x00000013,
0x00000001,0x65727473,0x00686374,0x00070006,0x00000013,0x00000002,0x53766e69,0x78456372,
0x746e6574,0x00000000,0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,
0x00050006,0x00000013,0x00000004,0x706d6173,0x0073656c,0x00060006,0x00000013,0x00000005,
0x53766e69,0x6c706d61,0x00007365,0x00060006,0x00000013,0x00000006,0x7074756f,0x614d7475,
0x00006b73,0x00050006,0x00000013,0x00000007,0x70696c66,0x00000058,0x00050006,0x00000013,
0x00000008,0x70696c66,0x00000059,0x00040005,0x00000015,0x61726170,0x0000736d,0x00060005,
0x00000036,0x465f6c67,0x44676172,0x68747065,0x00000000,0x00040005,0x00000039,0x74706564,
0x00000068,0x00040047,0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,
0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,0x00000023,0x00000008,0x00050048,
0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,0x00000013,0x00000003,0x00000023,
0x00000018,0x00050048,0x00000013,0x00000004,0x00000023,0x0000001c,0x00050048,0x00000013,
0x00000005,0x00000023,0x00000020,0x00050048,0x00000013,0x00000006,0x00000023,0x00000024,
0x00050048,0x00000013,0x00000007,0x00000023,0x00000028,0x00050048,0x00000013,0x00000008,
0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000036,0x0000000b,
0x00000016,0x00040047,0x00000039,0x00000022,0x00000000,0x00040047,0x00000039,0x00000021,
0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,
0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,
0x00000007,0x00000007,0x00030016,0x0000000a,0x00000020,0x00040017,0x0000000b,0x0000000a,
0x00000004,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,
0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00040015,0x00000012,0x00000020,
0x00000000,0x000b001e,0x00000013,0x00000007,0x0000000e,0x0000000e,0x00000006,0x00000006,
0x0000000a,0x00000006,0x00000012,0x00000012,0x00040020,0x00000014,0x00000009,0x00000013,
0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,0x00000000,
0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001c,0x00000007,
0x00040020,0x0000001d,0x00000009,0x00000012,0x00020014,0x00000020,0x0004002b,0x00000012,
0x00000021,0x00000000,0x00040020,0x00000025,0x00000007,0x00000006,0x0004002b,0x00000006,
0x0000002a,0x00000008,0x0004002b,0x00000012,0x00000030,0x00000001,0x00040020,0x00000035,
0x00000003,0x0000000a,0x0004003b,0x00000035,0x00000036,0x00000003,0x00090019,0x00000037,
0x0000000a,0x00000001,0x00000000,0x00000001,0x00000001,0x00000001,0x00000000,0x00040020,
0x00000038,0x00000000,0x00000037,0x0004003b,0x00000038,0x00000039,0x00000000,0x0004002b,
0x00000006,0x0000003c,0x00000003,0x00040020,0x0000003d,0x00000009,0x00000006,0x00040017,
0x00000040,0x00000006,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003d,0x0000000b,
0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,
0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,
0x00000018,0x0004003d,0x00000007,0x0000001a,0x00000009,0x00050082,0x00000007,0x0000001b,
0x0000001a,0x00000019,0x0003003e,0x00000009,0x0000001b,0x00050041,0x0000001d,0x0000001e,
0x00000015,0x0000001c,0x0004003d,0x00000012,0x0000001f,0x0000001e,0x000500ab,0x00000020,
0x00000022,0x0000001f,0x00000021,0x000300f7,0x00000024,0x00000000,0x000400fa,0x00000022,
0x00000023,0x00000024,0x000200f8,0x00000023,0x00050041,0x00000025,0x00000026,0x00000009,
0x00000021,0x0004003d,0x00000006,0x00000027,0x00000026,0x0004007e,0x00000006,0x00000028,
0x00000027,0x00050041,0x00000025,0x00000029,0x00000009,0x00000021,0x0003003e,0x00000029,
0x00000028,0x000200f9,0x00000024,0x000200f8,0x00000024,0x00050041,0x0000001d,0x0000002b,
0x00000015,0x0000002a,0x0004003d,0x00000012,0x0000002c,0x0000002b,0x000500ab,0x00000020,
0x0000002d,0x0000002c,0x00000021,0x000300f7,0x0000002f,0x00000000,0x000400fa,0x0000002d,
0x0000002e,0x0000002f,0x000200f8,0x0000002e,0x00050041,0x00000025,0x00000031,0x00000009,
0x00000030,0x0004003d,0x00000006,0x00000032,0x00000031,0x0004007e,0x00000006,0x00000033,
0x00000032,0x00050041,0x00000025,0x00000034,0x00000009,0x00000030,0x0003003e,0x00000034,
0x00000033,0x000200f9,0x0000002f,0x000200f8,0x0000002f,0x0004003d,0x00000037,0x0000003a,
0x00000039,0x0004003d,0x00000007,0x0000003b,0x00000009,0x00050041,0x0000003d,0x0000003e,
0x00000015,0x0000003c,0x0004003d,0x00000006,0x0000003f,0x0000003e,0x00050051,0x00000006,
0x00000041,0x0000003b,0x00000000,0x00050051,0x00000006,0x00000042,0x0000003b,0x00000001,
0x00060050,0x00000040,0x00000043,0x00000041,0x00000042,0x0000003f,0x0007005f,0x0000000b,
0x00000044,0x0000003a,0x00000043,0x00000040,0x00000016,0x00050051,0x0000000a,0x00000045,
0x00000044,0x00000000,0x0003003e,0x00000036,0x00000045,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_EXT_samplerless_texture_functions : require
layout(push_constant)uniform PushConstants {
ivec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2DMSArray depth;
void main()
{
ivec2 srcImageCoords = ivec2(gl_FragCoord . xy);
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texelFetch(depth, ivec3(srcImageCoords, params . srcLayer), 0). x;
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000010[] = {
0x07230203,0x00010000,0x00080007,0x00000050,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000c,0x0000003c,0x00030010,0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,
0x00090004,0x415f4c47,0x735f4252,0x65646168,0x74735f72,0x69636e65,0x78655f6c,0x74726f70,
0x00000000,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,0x00000009,0x49637273,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000c,0x465f6c67,0x43676172,0x64726f6f,
0x00000000,0x00060005,0x00000014,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
0x00000014,0x00000000,0x7366666f,0x00007465,0x00050006,0x00000014,0x00000001,0x65727473,
0x00686374,0x00070006,0x00000014,0x00000002,0x53766e69,0x78456372,0x746e6574,0x00000000,
0x00060006,0x00000014,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000014,
0x00000004,0x706d6173,0x0073656c,0x00060006,0x00000014,0x00000005,0x53766e69,0x6c706d61,
0x00007365,0x00060006,0x00000014,0x00000006,0x7074756f,0x614d7475,0x00006b73,0x00050006,
0x00000014,0x00000007,0x70696c66,0x00000058,0x00050006,0x00000014,0x00000008,0x70696c66,
0x00000059,0x00040005,0x00000016,0x61726170,0x0000736d,0x00080005,0x0000003c,0x465f6c67,
0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,0x00040005,0x0000003f,0x6e657473,
0x006c6963,0x00050005,0x00000043,0x74696c62,0x706d6153,0x0072656c,0x00040047,0x0000000c,
0x0000000b,0x0000000f,0x00050048,0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,
0x00000014,0x00000001,0x00000023,0x00000008,0x00050048,0x00000014,0x00000002,0x00000023,
0x00000010,0x00050048,0x00000014,0x00000003,0x00000023,0x00000018,0x00050048,0x00000014,
0x00000004,0x00000023,0x0000001c,0x00050048,0x00000014,0x00000005,0x00000023,0x00000020,
0x00050048,0x00000014,0x00000006,0x00000023,0x00000024,0x00050048,0x00000014,0x00000007,
0x00000023,0x00000028,0x00050048,0x00000014,0x00000008,0x00000023,0x0000002c,0x00030047,
0x00000014,0x00000002,0x00040047,0x0000003c,0x0000000b,0x00001396,0x00040047,0x0000003f,
0x00000022,0x00000000,0x00040047,0x0000003f,0x00000021,0x00000001,0x00040047,0x00000043,
0x00000022,0x00000000,0x00040047,0x00000043,0x00000021,0x00000002,0x00020013,0x00000002,
0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,
0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040017,0x0000000a,
0x00000006,0x00000004,0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,
0x0000000c,0x00000001,0x00040015,0x00000012,0x00000020,0x00000001,0x00040015,0x00000013,
0x00000020,0x00000000,0x000b001e,0x00000014,0x00000007,0x00000007,0x00000007,0x00000012,
0x00000012,0x00000006,0x00000012,0x00000013,0x00000013,0x00040020,0x00000015,0x00000009,
0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009,0x0004002b,0x00000012,0x00000017,
0x00000001,0x00040020,0x00000018,0x00000009,0x00000007,0x0004002b,0x00000012,0x0000001d,
0x00000000,0x0004002b,0x00000012,0x00000022,0x00000007,0x00040020,0x00000023,0x00000009,
0x00000013,0x00020014,0x00000026,0x0004002b,0x00000013,0x00000027,0x00000000,0x00040020,
0x0000002b,0x00000007,0x00000006,0x0004002b,0x00000012,0x00000030,0x00000008,0x0004002b,
0x00000013,0x00000036,0x00000001,0x00040020,0x0000003b,0x00000003,0x00000012,0x0004003b,
0x0000003b,0x0000003c,0x00000003,0x00090019,0x0000003d,0x00000013,0x00000001,0x00000000,
0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x0000003e,0x00000000,0x0000003d,
0x0004003b,0x0000003e,0x0000003f,0x00000000,0x0002001a,0x00000041,0x00040020,0x00000042,
0x00000000,0x00000041,0x0004003b,0x00000042,0x00000043,0x00000000,0x0003001b,0x00000045,
0x0000003d,0x0004002b,0x00000012,0x00000048,0x00000002,0x00040017,0x0000004c,0x00000013,
0x00000004,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,
0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003d,0x0000000a,0x0000000d,0x0000000c,
0x0007004f,0x00000007,0x0000000e,0x0000000d,0x0000000d,0x00000000,0x00000001,0x00050051,
0x00000006,0x0000000f,0x0000000e,0x00000000,0x00050051,0x00000006,0x00000010,0x0000000e,
0x00000001,0x00050050,0x00000007,0x00000011,0x0000000f,0x00000010,0x0003003e,0x00000009,
0x00000011,0x00050041,0x00000018,0x00000019,0x00000016,0x00000017,0x0004003d,0x00000007,
0x0000001a,0x00000019,0x0004003d,0x00000007,0x0000001b,0x00000009,0x00050085,0x00000007,
0x0000001c,0x0000001b,0x0000001a,0x0003003e,0x00000009,0x0000001c,0x00050041,0x00000018,
0x0000001e,0x00000016,0x0000001d,0x0004003d,0x00000007,0x0000001f,0x0000001e,0x0004003d,
0x00000007,0x00000020,0x00000009,0x00050083,0x00000007,0x00000021,0x00000020,0x0000001f,
0x0003003e,0x00000009,0x00000021,0x00050041,0x00000023,0x00000024,0x00000016,0x00000022,
0x0004003d,0x00000013,0x00000025,0x00000024,0x000500ab,0x00000026,0x00000028,0x00000025,
0x00000027,0x000300f7,0x0000002a,0x00000000,0x000400fa,0x00000028,0x00000029,0x0000002a,
0x000200f8,0x00000029,0x00050041,0x0000002b,0x0000002c,0x00000009,0x00000027,0x0004003d,
0x00000006,0x0000002d,0x0000002c,0x0004007f,0x00000006,0x0000002e,0x0000002d,0x00050041,
0x0000002b,0x0000002f,0x00000009,0x00000027,0x0003003e,0x0000002f,0x0000002e,0x000200f9,
0x0000002a,0x000200f8,0x0000002a,0x00050041,0x00000023,0x00000031,0x00000016,0x00000030,
0x0004003d,0x00000013,0x00000032,0x00000031,0x000500ab,0x00000026,0x00000033,0x00000032,
0x00000027,0x000300f7,0x00000035,0x00000000,0x000400fa,0x00000033,0x00000034,0x00000035,
0x000200f8,0x00000034,0x00050041,0x0000002b,0x00000037,0x00000009,0x00000036,0x0004003d,
0x00000006,0x00000038,0x00000037,0x0004007f,0x00000006,0x00000039,0x00000038,0x00050041,
0x0000002b,0x0000003a,0x00000009,0x00000036,0x0003003e,0x0000003a,0x00000039,0x000200f9,
0x00000035,0x000200f8,0x00000035,0x0004003d,0x0000003d,0x00000040,0x0000003f,0x0004003d,
0x00000041,0x00000044,0x00000043,0x00050056,0x00000045,0x00000046,0x00000040,0x00000044,
0x0004003d,0x00000007,0x00000047,0x00000009,0x00050041,0x00000018,0x00000049,0x00000016,
0x00000048,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050085,0x00000007,0x0000004b,
0x00000047,0x0000004a,0x00050057,0x0000004c,0x0000004d,0x00000046,0x0000004b,0x00050051,
0x00000013,0x0000004e,0x0000004d,0x00000000,0x0004007c,0x00000012,0x0000004f,0x0000004e,
0x0003003e,0x0000003c,0x0000004f,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
vec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 1)uniform utexture2D stencil;
layout(set = 0, binding = 2)uniform sampler blitSampler;
void main()
{
vec2 srcImageCoords = vec2(gl_FragCoord . xy);
srcImageCoords *= params . stretch;
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragStencilRefARB = int(texture(usampler2D(stencil, blitSampler), srcImageCoords * params . invSrcExtent). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000011[] = {
0x07230203,0x00010000,0x00080007,0x00000059,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000c,0x0000003c,0x00030010,0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,
0x00090004,0x415f4c47,0x735f4252,0x65646168,0x74735f72,0x69636e65,0x78655f6c,0x74726f70,
0x00000000,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,0x00000009,0x49637273,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000c,0x465f6c67,0x43676172,0x64726f6f,
0x00000000,0x00060005,0x00000014,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
0x00000014,0x00000000,0x7366666f,0x00007465,0x00050006,0x00000014,0x00000001,0x65727473,
0x00686374,0x00070006,0x00000014,0x00000002,0x53766e69,0x78456372,0x746e6574,0x00000000,
0x00060006,0x00000014,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000014,
0x00000004,0x706d6173,0x0073656c,0x00060006,0x00000014,0x00000005,0x53766e69,0x6c706d61,
0x00007365,0x00060006,0x00000014,0x00000006,0x7074756f,0x614d7475,0x00006b73,0x00050006,
0x00000014,0x00000007,0x70696c66,0x00000058,0x00050006,0x00000014,0x00000008,0x70696c66,
0x00000059,0x00040005,0x00000016,0x61726170,0x0000736d,0x00080005,0x0000003c,0x465f6c67,
0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,0x00040005,0x0000003f,0x6e657473,
0x006c6963,0x00050005,0x00000043,0x74696c62,0x706d6153,0x0072656c,0x00040047,0x0000000c,
0x0000000b,0x0000000f,0x00050048,0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,
0x00000014,0x00000001,0x00000023,0x00000008,0x00050048,0x00000014,0x00000002,0x00000023,
0x00000010,0x00050048,0x00000014,0x00000003,0x00000023,0x00000018,0x00050048,0x00000014,
0x00000004,0x00000023,0x0000001c,0x00050048,0x00000014,0x00000005,0x00000023,0x00000020,
0x00050048,0x00000014,0x00000006,0x00000023,0x00000024,0x00050048,0x00000014,0x00000007,
0x00000023,0x00000028,0x00050048,0x00000014,0x00000008,0x00000023,0x0000002c,0x00030047,
0x00000014,0x00000002,0x00040047,0x0000003c,0x0000000b,0x00001396,0x00040047,0x0000003f,
0x00000022,0x00000000,0x00040047,0x0000003f,0x00000021,0x00000001,0x00040047,0x00000043,
0x00000022,0x00000000,0x00040047,0x00000043,0x00000021,0x00000002,0x00020013,0x00000002,
0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,
0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040017,0x0000000a,
0x00000006,0x00000004,0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,
0x0000000c,0x00000001,0x00040015,0x00000012,0x00000020,0x00000001,0x00040015,0x00000013,
0x00000020,0x00000000,0x000b001e,0x00000014,0x00000007,0x00000007,0x00000007,0x00000012,
0x00000012,0x00000006,0x00000012,0x00000013,0x00000013,0x00040020,0x00000015,0x00000009,
0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009,0x0004002b,0x00000012,0x00000017,
0x00000001,0x00040020,0x00000018,0x00000009,0x00000007,0x0004002b,0x00000012,0x0000001d,
0x00000000,0x0004002b,0x00000012,0x00000022,0x00000007,0x00040020,0x00000023,0x00000009,
0x00000013,0x00020014,0x00000026,0x0004002b,0x00000013,0x00000027,0x00000000,0x00040020,
0x0000002b,0x00000007,0x00000006,0x0004002b,0x00000012,0x00000030,0x00000008,0x0004002b,
0x00000013,0x00000036,0x00000001,0x00040020,0x0000003b,0x00000003,0x00000012,0x0004003b,
0x0000003b,0x0000003c,0x00000003,0x00090019,0x0000003d,0x00000013,0x00000001,0x00000000,
0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x0000003e,0x00000000,0x0000003d,
0x0004003b,0x0000003e,0x0000003f,0x00000000,0x0002001a,0x00000041,0x00040020,0x00000042,
0x00000000,0x00000041,0x0004003b,0x00000042,0x00000043,0x00000000,0x0003001b,0x00000045,
0x0000003d,0x0004002b,0x00000012,0x00000048,0x00000002,0x0004002b,0x00000012,0x0000004c,
0x00000003,0x00040020,0x0000004d,0x00000009,0x00000012,0x00040017,0x00000051,0x00000006,
0x00000003,0x00040017,0x00000055,0x00000013,0x00000004,0x00050036,0x00000002,0x00000004,
0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,
0x0004003d,0x0000000a,0x0000000d,0x0000000c,0x0007004f,0x00000007,0x0000000e,0x0000000d,
0x0000000d,0x00000000,0x00000001,0x00050051,0x00000006,0x0000000f,0x0000000e,0x00000000,
0x00050051,0x00000006,0x00000010,0x0000000e,0x00000001,0x00050050,0x00000007,0x00000011,
0x0000000f,0x00000010,0x0003003e,0x00000009,0x00000011,0x00050041,0x00000018,0x00000019,
0x00000016,0x00000017,0x0004003d,0x00000007,0x0000001a,0x00000019,0x0004003d,0x00000007,
0x0000001b,0x00000009,0x00050085,0x00000007,0x0000001c,0x0000001b,0x0000001a,0x0003003e,
0x00000009,0x0000001c,0x00050041,0x00000018,0x0000001e,0x00000016,0x0000001d,0x0004003d,
0x00000007,0x0000001f,0x0000001e,0x0004003d,0x00000007,0x00000020,0x00000009,0x00050083,
0x00000007,0x00000021,0x00000020,0x0000001f,0x0003003e,0x00000009,0x00000021,0x00050041,
0x00000023,0x00000024,0x00000016,0x00000022,0x0004003d,0x00000013,0x00000025,0x00000024,
0x000500ab,0x00000026,0x00000028,0x00000025,0x00000027,0x000300f7,0x0000002a,0x00000000,
0x000400fa,0x00000028,0x00000029,0x0000002a,0x000200f8,0x00000029,0x00050041,0x0000002b,
0x0000002c,0x00000009,0x00000027,0x0004003d,0x00000006,0x0000002d,0x0000002c,0x0004007f,
0x00000006,0x0000002e,0x0000002d,0x00050041,0x0000002b,0x0000002f,0x00000009,0x00000027,
0x0003003e,0x0000002f,0x0000002e,0x000200f9,0x0000002a,0x000200f8,0x0000002a,0x00050041,
0x00000023,0x00000031,0x00000016,0x00000030,0x0004003d,0x00000013,0x00000032,0x00000031,
0x000500ab,0x00000026,0x00000033,0x00000032,0x00000027,0x000300f7,0x00000035,0x00000000,
0x000400fa,0x00000033,0x00000034,0x00000035,0x000200f8,0x00000034,0x00050041,0x0000002b,
0x00000037,0x00000009,0x00000036,0x0004003d,0x00000006,0x00000038,0x00000037,0x0004007f,
0x00000006,0x00000039,0x00000038,0x00050041,0x0000002b,0x0000003a,0x00000009,0x00000036,
0x0003003e,0x0000003a,0x00000039,0x000200f9,0x00000035,0x000200f8,0x00000035,0x0004003d,
0x0000003d,0x00000040,0x0000003f,0x0004003d,0x00000041,0x00000044,0x00000043,0x00050056,
0x00000045,0x00000046,0x00000040,0x00000044,0x0004003d,0x00000007,0x00000047,0x00000009,
0x00050041,0x00000018,0x00000049,0x00000016,0x00000048,0x0004003d,0x00000007,0x0000004a,
0x00000049,0x00050085,0x00000007,0x0000004b,0x00000047,0x0000004a,0x00050041,0x0000004d,
0x0000004e,0x00000016,0x0000004c,0x0004003d,0x00000012,0x0000004f,0x0000004e,0x0004006f,
0x00000006,0x00000050,0x0000004f,0x00050051,0x00000006,0x00000052,0x0000004b,0x00000000,
0x00050051,0x00000006,0x00000053,0x0000004b,0x00000001,0x00060050,0x00000051,0x00000054,
0x00000052,0x00000053,0x00000050,0x00050057,0x00000055,0x00000056,0x00000046,0x00000054,
0x00050051,0x00000013,0x00000057,0x00000056,0x00000000,0x0004007c,0x00000012,0x00000058,
0x00000057,0x0003003e,0x0000003c,0x00000058,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
vec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 1)uniform utexture2DArray stencil;
layout(set = 0, binding = 2)uniform sampler blitSampler;
void main()
{
vec2 srcImageCoords = vec2(gl_FragCoord . xy);
srcImageCoords *= params . stretch;
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragStencilRefARB = int(texture(usampler2DArray(stencil, blitSampler), vec3(srcImageCoords * params . invSrcExtent, params . srcLayer)). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000012[] = {
0x07230203,0x00010000,0x00080007,0x00000040,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000d,0x00000036,0x00030010,0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,
0x00090004,0x415f4c47,0x735f4252,0x65646168,0x74735f72,0x69636e65,0x78655f6c,0x74726f70,
0x00000000,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865,
0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x00040005,0x00000004,0x6e69616d,0x00000000,
0x00060005,0x00000009,0x49637273,0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,
0x465f6c67,0x43676172,0x64726f6f,0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,
0x746e6174,0x00000073,0x00050006,0x00000013,0x00000000,0x7366666f,0x00007465,0x00050006,
0x00000013,0x00000001,0x65727473,0x00686374,0x00070006,0x00000013,0x00000002,0x53766e69,
0x78456372,0x746e6574,0x00000000,0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,
0x00000000,0x00050006,0x00000013,0x00000004,0x706d6173,0x0073656c,0x00060006,0x00000013,
0x00000005,0x53766e69,0x6c706d61,0x00007365,0x00060006,0x00000013,0x00000006,0x7074756f,
0x614d7475,0x00006b73,0x00050006,0x00000013,0x00000007,0x70696c66,0x00000058,0x00050006,
0x00000013,0x00000008,0x70696c66,0x00000059,0x00040005,0x00000015,0x61726170,0x0000736d,
0x00080005,0x00000036,0x465f6c67,0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,
0x00040005,0x00000039,0x6e657473,0x006c6963,0x00040047,0x0000000d,0x0000000b,0x0000000f,
0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
0x00000013,0x00000003,0x00000023,0x00000018,0x00050048,0x00000013,0x00000004,0x00000023,
0x0000001c,0x00050048,0x00000013,0x00000005,0x00000023,0x00000020,0x00050048,0x00000013,
0x00000006,0x00000023,0x00000024,0x00050048,0x00000013,0x00000007,0x00000023,0x00000028,
0x00050048,0x00000013,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,
0x00040047,0x00000036,0x0000000b,0x00001396,0x00040047,0x00000039,0x00000022,0x00000000,
0x00040047,0x00000039,0x00000021,0x00000001,0x00020013,0x00000002,0x00030021,0x00000003,
0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,
0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00030016,0x0000000a,0x00000020,
0x00040017,0x0000000b,0x0000000a,0x00000004,0x00040020,0x0000000c,0x00000001,0x0000000b,
0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,
0x00040015,0x00000012,0x00000020,0x00000000,0x000b001e,0x00000013,0x00000007,0x0000000e,
0x0000000e,0x00000006,0x00000006,0x0000000a,0x00000006,0x00000012,0x00000012,0x00040020,
0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,
0x00000006,0x00000016,0x00000000,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,
0x00000006,0x0000001c,0x00000007,0x00040020,0x0000001d,0x00000009,0x00000012,0x00020014,
0x00000020,0x0004002b,0x00000012,0x00000021,0x00000000,0x00040020,0x00000025,0x00000007,
0x00000006,0x0004002b,0x00000006,0x0000002a,0x00000008,0x0004002b,0x00000012,0x00000030,
0x00000001,0x00040020,0x00000035,0x00000003,0x00000006,0x0004003b,0x00000035,0x00000036,
0x00000003,0x00090019,0x00000037,0x00000012,0x00000001,0x00000000,0x00000000,0x00000001,
0x00000001,0x00000000,0x00040020,0x00000038,0x00000000,0x00000037,0x0004003b,0x00000038,
0x00000039,0x00000000,0x00040017,0x0000003c,0x00000012,0x00000004,0x00050036,0x00000002,
0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,
0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,
0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,
0x0003003e,0x00000009,0x00000011,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,
0x0004003d,0x00000007,0x00000019,0x00000018,0x0004003d,0x00000007,0x0000001a,0x00000009,
0x00050082,0x00000007,0x0000001b,0x0000001a,0x00000019,0x0003003e,0x00000009,0x0000001b,
0x00050041,0x0000001d,0x0000001e,0x00000015,0x0000001c,0x0004003d,0x00000012,0x0000001f,
0x0000001e,0x000500ab,0x00000020,0x00000022,0x0000001f,0x00000021,0x000300f7,0x00000024,
0x00000000,0x000400fa,0x00000022,0x00000023,0x00000024,0x000200f8,0x00000023,0x00050041,
0x00000025,0x00000026,0x00000009,0x00000021,0x0004003d,0x00000006,0x00000027,0x00000026,
0x0004007e,0x00000006,0x00000028,0x00000027,0x00050041,0x00000025,0x00000029,0x00000009,
0x00000021,0x0003003e,0x00000029,0x00000028,0x000200f9,0x00000024,0x000200f8,0x00000024,
0x00050041,0x0000001d,0x0000002b,0x00000015,0x0000002a,0x0004003d,0x00000012,0x0000002c,
0x0000002b,0x000500ab,0x00000020,0x0000002d,0x0000002c,0x00000021,0x000300f7,0x0000002f,
0x00000000,0x000400fa,0x0000002d,0x0000002e,0x0000002f,0x000200f8,0x0000002e,0x00050041,
0x00000025,0x00000031,0x00000009,0x00000030,0x0004003d,0x00000006,0x00000032,0x00000031,
0x0004007e,0x00000006,0x00000033,0x00000032,0x00050041,0x00000025,0x00000034,0x00000009,
0x00000030,0x0003003e,0x00000034,0x00000033,0x000200f9,0x0000002f,0x000200f8,0x0000002f,
0x0004003d,0x00000037,0x0000003a,0x00000039,0x0004003d,0x00000007,0x0000003b,0x00000009,
0x0007005f,0x0000003c,0x0000003d,0x0000003a,0x0000003b,0x00000040,0x00000016,0x00050051,
0x00000012,0x0000003e,0x0000003d,0x00000000,0x0004007c,0x00000006,0x0000003f,0x0000003e,
0x0003003e,0x00000036,0x0000003f,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_EXT_samplerless_texture_functions : require
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
ivec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 1)uniform utexture2DMS stencil;
void main()
{
ivec2 srcImageCoords = ivec2(gl_FragCoord . xy);
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragStencilRefARB = int(texelFetch(stencil, srcImageCoords, 0). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000013[] = {
0x07230203,0x00010000,0x00080007,0x00000048,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000d,0x00000036,0x00030010,0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,
0x00090004,0x415f4c47,0x735f4252,0x65646168,0x74735f72,0x69636e65,0x78655f6c,0x74726f70,
0x00000000,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865,
0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x00040005,0x00000004,0x6e69616d,0x00000000,
0x00060005,0x00000009,0x49637273,0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,
0x465f6c67,0x43676172,0x64726f6f,0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,
0x746e6174,0x00000073,0x00050006,0x00000013,0x00000000,0x7366666f,0x00007465,0x00050006,
0x00000013,0x00000001,0x65727473,0x00686374,0x00070006,0x00000013,0x00000002,0x53766e69,
0x78456372,0x746e6574,0x00000000,0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,
0x00000000,0x00050006,0x00000013,0x00000004,0x706d6173,0x0073656c,0x00060006,0x00000013,
0x00000005,0x53766e69,0x6c706d61,0x00007365,0x00060006,0x00000013,0x00000006,0x7074756f,
0x614d7475,0x00006b73,0x00050006,0x00000013,0x00000007,0x70696c66,0x00000058,0x00050006,
0x00000013,0x00000008,0x70696c66,0x00000059,0x00040005,0x00000015,0x61726170,0x0000736d,
0x00080005,0x00000036,0x465f6c67,0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,
0x00040005,0x00000039,0x6e657473,0x006c6963,0x00040047,0x0000000d,0x0000000b,0x0000000f,
0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
0x00000013,0x00000003,0x00000023,0x00000018,0x00050048,0x00000013,0x00000004,0x00000023,
0x0000001c,0x00050048,0x00000013,0x00000005,0x00000023,0x00000020,0x00050048,0x00000013,
0x00000006,0x00000023,0x00000024,0x00050048,0x00000013,0x00000007,0x00000023,0x00000028,
0x00050048,0x00000013,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,
0x00040047,0x00000036,0x0000000b,0x00001396,0x00040047,0x00000039,0x00000022,0x00000000,
0x00040047,0x00000039,0x00000021,0x00000001,0x00020013,0x00000002,0x00030021,0x00000003,
0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,
0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00030016,0x0000000a,0x00000020,
0x00040017,0x0000000b,0x0000000a,0x00000004,0x00040020,0x0000000c,0x00000001,0x0000000b,
0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,
0x00040015,0x00000012,0x00000020,0x00000000,0x000b001e,0x00000013,0x00000007,0x0000000e,
0x0000000e,0x00000006,0x00000006,0x0000000a,0x00000006,0x00000012,0x00000012,0x00040020,
0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,
0x00000006,0x00000016,0x00000000,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,
0x00000006,0x0000001c,0x00000007,0x00040020,0x0000001d,0x00000009,0x00000012,0x00020014,
0x00000020,0x0004002b,0x00000012,0x00000021,0x00000000,0x00040020,0x00000025,0x00000007,
0x00000006,0x0004002b,0x00000006,0x0000002a,0x00000008,0x0004002b,0x00000012,0x00000030,
0x00000001,0x00040020,0x00000035,0x00000003,0x00000006,0x0004003b,0x00000035,0x00000036,
0x00000003,0x00090019,0x00000037,0x00000012,0x00000001,0x00000000,0x00000001,0x00000001,
0x00000001,0x00000000,0x00040020,0x00000038,0x00000000,0x00000037,0x0004003b,0x00000038,
0x00000039,0x00000000,0x0004002b,0x00000006,0x0000003c,0x00000003,0x00040020,0x0000003d,
0x00000009,0x00000006,0x00040017,0x00000040,0x00000006,0x00000003,0x00040017,0x00000044,
0x00000012,0x00000004,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003d,0x0000000b,0x0000000f,
0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,
0x0004006e,0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x00050041,
0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,
0x0004003d,0x00000007,0x0000001a,0x00000009,0x00050082,0x00000007,0x0000001b,0x0000001a,
0x00000019,0x0003003e,0x00000009,0x0000001b,0x00050041,0x0000001d,0x0000001e,0x00000015,
0x0000001c,0x0004003d,0x00000012,0x0000001f,0x0000001e,0x000500ab,0x00000020,0x00000022,
0x0000001f,0x00000021,0x000300f7,0x00000024,0x00000000,0x000400fa,0x00000022,0x00000023,
0x00000024,0x000200f8,0x00000023,0x00050041,0x00000025,0x00000026,0x00000009,0x00000021,
0x0004003d,0x00000006,0x00000027,0x00000026,0x0004007e,0x00000006,0x00000028,0x00000027,
0x00050041,0x00000025,0x00000029,0x00000009,0x00000021,0x0003003e,0x00000029,0x00000028,
0x000200f9,0x00000024,0x000200f8,0x00000024,0x00050041,0x0000001d,0x0000002b,0x00000015,
0x0000002a,0x0004003d,0x00000012,0x0000002c,0x0000002b,0x000500ab,0x00000020,0x0000002d,
0x0000002c,0x00000021,0x000300f7,0x0000002f,0x00000000,0x000400fa,0x0000002d,0x0000002e,
0x0000002f,0x000200f8,0x0000002e,0x00050041,0x00000025,0x00000031,0x00000009,0x00000030,
0x0004003d,0x00000006,0x00000032,0x00000031,0x0004007e,0x00000006,0x00000033,0x00000032,
0x00050041,0x00000025,0x00000034,0x00000009,0x00000030,0x0003003e,0x00000034,0x00000033,
0x000200f9,0x0000002f,0x000200f8,0x0000002f,0x0004003d,0x00000037,0x0000003a,0x00000039,
0x0004003d,0x00000007,0x0000003b,0x00000009,0x00050041,0x0000003d,0x0000003e,0x00000015,
0x0000003c,0x0004003d,0x00000006,0x0000003f,0x0000003e,0x00050051,0x00000006,0x00000041,
0x0000003b,0x00000000,0x00050051,0x00000006,0x00000042,0x0000003b,0x00000001,0x00060050,
0x00000040,0x00000043,0x00000041,0x00000042,0x0000003f,0x0007005f,0x00000044,0x00000045,
0x0000003a,0x00000043,0x00000040,0x00000016,0x00050051,0x00000012,0x00000046,0x00000045,
0x00000000,0x0004007c,0x00000006,0x00000047,0x00000046,0x0003003e,0x00000036,0x00000047,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_EXT_samplerless_texture_functions : require
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
ivec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 1)uniform utexture2DMSArray stencil;
void main()
{
ivec2 srcImageCoords = ivec2(gl_FragCoord . xy);
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragStencilRefARB = int(texelFetch(stencil, ivec3(srcImageCoords, params . srcLayer), 0). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000014[] = {
0x07230203,0x00010000,0x00080007,0x0000005f,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000c,0x0000003c,0x0000004f,0x00030010,0x00000004,0x00000007,0x00030010,0x00000004,
0x0000000c,0x00030003,0x00000002,0x000001c2,0x00090004,0x415f4c47,0x735f4252,0x65646168,
0x74735f72,0x69636e65,0x78655f6c,0x74726f70,0x00000000,0x00040005,0x00000004,0x6e69616d,
0x00000000,0x00060005,0x00000009,0x49637273,0x6567616d,0x726f6f43,0x00007364,0x00060005,
0x0000000c,0x465f6c67,0x43676172,0x64726f6f,0x00000000,0x00060005,0x00000014,0x68737550,
0x736e6f43,0x746e6174,0x00000073,0x00050006,0x00000014,0x00000000,0x7366666f,0x00007465,
0x00050006,0x00000014,0x00000001,0x65727473,0x00686374,0x00070006,0x00000014,0x00000002,
0x53766e69,0x78456372,0x746e6574,0x00000000,0x00060006,0x00000014,0x00000003,0x4c637273,
0x72657961,0x00000000,0x00050006,0x00000014,0x00000004,0x706d6173,0x0073656c,0x00060006,
0x00000014,0x00000005,0x53766e69,0x6c706d61,0x00007365,0x00060006,0x00000014,0x00000006,
0x7074756f,0x614d7475,0x00006b73,0x00050006,0x00000014,0x00000007,0x70696c66,0x00000058,
0x00050006,0x00000014,0x00000008,0x70696c66,0x00000059,0x00040005,0x00000016,0x61726170,
0x0000736d,0x00060005,0x0000003c,0x465f6c67,0x44676172,0x68747065,0x00000000,0x00040005,
0x0000003f,0x74706564,0x00000068,0x00050005,0x00000043,0x74696c62,0x706d6153,0x0072656c,
0x00080005,0x0000004f,0x465f6c67,0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,
0x00040005,0x00000052,0x6e657473,0x006c6963,0x00040047,0x0000000c,0x0000000b,0x0000000f,
0x00050048,0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001,
0x00000023,0x00000008,0x00050048,0x00000014,0x00000002,0x00000023,0x00000010,0x00050048,
0x00000014,0x00000003,0x00000023,0x00000018,0x00050048,0x00000014,0x00000004,0x00000023,
0x0000001c,0x00050048,0x00000014,0x00000005,0x00000023,0x00000020,0x00050048,0x00000014,
0x00000006,0x00000023,0x00000024,0x00050048,0x00000014,0x00000007,0x00000023,0x00000028,
0x00050048,0x00000014,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000014,0x00000002,
0x00040047,0x0000003c,0x0000000b,0x00000016,0x00040047,0x0000003f,0x00000022,0x00000000,
0x00040047,0x0000003f,0x00000021,0x00000000,0x00040047,0x00000043,0x00000022,0x00000000,
0x00040047,0x00000043,0x00000021,0x00000002,0x00040047,0x0000004f,0x0000000b,0x00001396,
0x00040047,0x00000052,0x00000022,0x00000000,0x00040047,0x00000052,0x00000021,0x00000001,
0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,
0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,
0x00040017,0x0000000a,0x00000006,0x00000004,0x00040020,0x0000000b,0x00000001,0x0000000a,
0x0004003b,0x0000000b,0x0000000c,0x00000001,0x00040015,0x00000012,0x00000020,0x00000001,
0x00040015,0x00000013,0x00000020,0x00000000,0x000b001e,0x00000014,0x00000007,0x00000007,
0x00000007,0x00000012,0x00000012,0x00000006,0x00000012,0x00000013,0x00000013,0x00040020,
0x00000015,0x00000009,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009,0x0004002b,
0x00000012,0x00000017,0x00000001,0x00040020,0x00000018,0x00000009,0x00000007,0x0004002b,
0x00000012,0x0000001d,0x00000000,0x0004002b,0x00000012,0x00000022,0x00000007,0x00040020,
0x00000023,0x00000009,0x00000013,0x00020014,0x00000026,0x0004002b,0x00000013,0x00000027,
0x00000000,0x00040020,0x0000002b,0x00000007,0x00000006,0x0004002b,0x00000012,0x00000030,
0x00000008,0x0004002b,0x00000013,0x00000036,0x00000001,0x00040020,0x0000003b,0x00000003,
0x00000006,0x0004003b,0x0000003b,0x0000003c,0x00000003,0x00090019,0x0000003d,0x00000006,
0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x0000003e,
0x00000000,0x0000003d,0x0004003b,0x0000003e,0x0000003f,0x00000000,0x0002001a,0x00000041,
0x00040020,0x00000042,0x00000000,0x00000041,0x0004003b,0x00000042,0x00000043,0x00000000,
0x0003001b,0x00000045,0x0000003d,0x0004002b,0x00000012,0x00000048,0x00000002,0x00040020,
0x0000004e,0x00000003,0x00000012,0x0004003b,0x0000004e,0x0000004f,0x00000003,0x00090019,
0x00000050,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,
0x00040020,0x00000051,0x00000000,0x00000050,0x0004003b,0x00000051,0x00000052,0x00000000,
0x0003001b,0x00000055,0x00000050,0x00040017,0x0000005b,0x00000013,0x00000004,0x00050036,
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
0x00000009,0x00000007,0x0004003d,0x0000000a,0x0000000d,0x0000000c,0x0007004f,0x00000007,
0x0000000e,0x0000000d,0x0000000d,0x00000000,0x00000001,0x00050051,0x00000006,0x0000000f,
0x0000000e,0x00000000,0x00050051,0x00000006,0x00000010,0x0000000e,0x00000001,0x00050050,
0x00000007,0x00000011,0x0000000f,0x00000010,0x0003003e,0x00000009,0x00000011,0x00050041,
0x00000018,0x00000019,0x00000016,0x00000017,0x0004003d,0x00000007,0x0000001a,0x00000019,
0x0004003d,0x00000007,0x0000001b,0x00000009,0x00050085,0x00000007,0x0000001c,0x0000001b,
0x0000001a,0x0003003e,0x00000009,0x0000001c,0x00050041,0x00000018,0x0000001e,0x00000016,
0x0000001d,0x0004003d,0x00000007,0x0000001f,0x0000001e,0x0004003d,0x00000007,0x00000020,
0x00000009,0x00050083,0x00000007,0x00000021,0x00000020,0x0000001f,0x0003003e,0x00000009,
0x00000021,0x00050041,0x00000023,0x00000024,0x00000016,0x00000022,0x0004003d,0x00000013,
0x00000025,0x00000024,0x000500ab,0x00000026,0x00000028,0x00000025,0x00000027,0x000300f7,
0x0000002a,0x00000000,0x000400fa,0x00000028,0x00000029,0x0000002a,0x000200f8,0x00000029,
0x00050041,0x0000002b,0x0000002c,0x00000009,0x00000027,0x0004003d,0x00000006,0x0000002d,
0x0000002c,0x0004007f,0x00000006,0x0000002e,0x0000002d,0x00050041,0x0000002b,0x0000002f,
0x00000009,0x00000027,0x0003003e,0x0000002f,0x0000002e,0x000200f9,0x0000002a,0x000200f8,
0x0000002a,0x00050041,0x00000023,0x00000031,0x00000016,0x00000030,0x0004003d,0x00000013,
0x00000032,0x00000031,0x000500ab,0x00000026,0x00000033,0x00000032,0x00000027,0x000300f7,
0x00000035,0x00000000,0x000400fa,0x00000033,0x00000034,0x00000035,0x000200f8,0x00000034,
0x00050041,0x0000002b,0x00000037,0x00000009,0x00000036,0x0004003d,0x00000006,0x00000038,
0x00000037,0x0004007f,0x00000006,0x00000039,0x00000038,0x00050041,0x0000002b,0x0000003a,
0x00000009,0x00000036,0x0003003e,0x0000003a,0x00000039,0x000200f9,0x00000035,0x000200f8,
0x00000035,0x0004003d,0x0000003d,0x00000040,0x0000003f,0x0004003d,0x00000041,0x00000044,
0x00000043,0x00050056,0x00000045,0x00000046,0x00000040,0x00000044,0x0004003d,0x00000007,
0x00000047,0x00000009,0x00050041,0x00000018,0x00000049,0x00000016,0x00000048,0x0004003d,
0x00000007,0x0000004a,0x00000049,0x00050085,0x00000007,0x0000004b,0x00000047,0x0000004a,
0x00050057,0x0000000a,0x0000004c,0x00000046,0x0000004b,0x00050051,0x00000006,0x0000004d,
0x0000004c,0x00000000,0x0003003e,0x0000003c,0x0000004d,0x0004003d,0x00000050,0x00000053,
0x00000052,0x0004003d,0x00000041,0x00000054,0x00000043,0x00050056,0x00000055,0x00000056,
0x00000053,0x00000054,0x0004003d,0x00000007,0x00000057,0x00000009,0x00050041,0x00000018,
0x00000058,0x00000016,0x00000048,0x0004003d,0x00000007,0x00000059,0x00000058,0x00050085,
0x00000007,0x0000005a,0x00000057,0x00000059,0x00050057,0x0000005b,0x0000005c,0x00000056,
0x0000005a,0x00050051,0x00000013,0x0000005d,0x0000005c,0x00000000,0x0004007c,0x00000012,
0x0000005e,0x0000005d,0x0003003e,0x0000004f,0x0000005e,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
vec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2D depth;
layout(set = 0, binding = 1)uniform utexture2D stencil;
layout(set = 0, binding = 2)uniform sampler blitSampler;
void main()
{
vec2 srcImageCoords = vec2(gl_FragCoord . xy);
srcImageCoords *= params . stretch;
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texture(sampler2D(depth, blitSampler), srcImageCoords * params . invSrcExtent). x;
gl_FragStencilRefARB = int(texture(usampler2D(stencil, blitSampler), srcImageCoords * params . invSrcExtent). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000015[] = {
0x07230203,0x00010000,0x00080007,0x0000006e,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000c,0x0000003c,0x00000058,0x00030010,0x00000004,0x00000007,0x00030010,0x00000004,
0x0000000c,0x00030003,0x00000002,0x000001c2,0x00090004,0x415f4c47,0x735f4252,0x65646168,
0x74735f72,0x69636e65,0x78655f6c,0x74726f70,0x00000000,0x00040005,0x00000004,0x6e69616d,
0x00000000,0x00060005,0x00000009,0x49637273,0x6567616d,0x726f6f43,0x00007364,0x00060005,
0x0000000c,0x465f6c67,0x43676172,0x64726f6f,0x00000000,0x00060005,0x00000014,0x68737550,
0x736e6f43,0x746e6174,0x00000073,0x00050006,0x00000014,0x00000000,0x7366666f,0x00007465,
0x00050006,0x00000014,0x00000001,0x65727473,0x00686374,0x00070006,0x00000014,0x00000002,
0x53766e69,0x78456372,0x746e6574,0x00000000,0x00060006,0x00000014,0x00000003,0x4c637273,
0x72657961,0x00000000,0x00050006,0x00000014,0x00000004,0x706d6173,0x0073656c,0x00060006,
0x00000014,0x00000005,0x53766e69,0x6c706d61,0x00007365,0x00060006,0x00000014,0x00000006,
0x7074756f,0x614d7475,0x00006b73,0x00050006,0x00000014,0x00000007,0x70696c66,0x00000058,
0x00050006,0x00000014,0x00000008,0x70696c66,0x00000059,0x00040005,0x00000016,0x61726170,
0x0000736d,0x00060005,0x0000003c,0x465f6c67,0x44676172,0x68747065,0x00000000,0x00040005,
0x0000003f,0x74706564,0x00000068,0x00050005,0x00000043,0x74696c62,0x706d6153,0x0072656c,
0x00080005,0x00000058,0x465f6c67,0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,
0x00040005,0x0000005b,0x6e657473,0x006c6963,0x00040047,0x0000000c,0x0000000b,0x0000000f,
0x00050048,0x00000014,0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001,
0x00000023,0x00000008,0x00050048,0x00000014,0x00000002,0x00000023,0x00000010,0x00050048,
0x00000014,0x00000003,0x00000023,0x00000018,0x00050048,0x00000014,0x00000004,0x00000023,
0x0000001c,0x00050048,0x00000014,0x00000005,0x00000023,0x00000020,0x00050048,0x00000014,
0x00000006,0x00000023,0x00000024,0x00050048,0x00000014,0x00000007,0x00000023,0x00000028,
0x00050048,0x00000014,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000014,0x00000002,
0x00040047,0x0000003c,0x0000000b,0x00000016,0x00040047,0x0000003f,0x00000022,0x00000000,
0x00040047,0x0000003f,0x00000021,0x00000000,0x00040047,0x00000043,0x00000022,0x00000000,
0x00040047,0x00000043,0x00000021,0x00000002,0x00040047,0x00000058,0x0000000b,0x00001396,
0x00040047,0x0000005b,0x00000022,0x00000000,0x00040047,0x0000005b,0x00000021,0x00000001,
0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,
0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,
0x00040017,0x0000000a,0x00000006,0x00000004,0x00040020,0x0000000b,0x00000001,0x0000000a,
0x0004003b,0x0000000b,0x0000000c,0x00000001,0x00040015,0x00000012,0x00000020,0x00000001,
0x00040015,0x00000013,0x00000020,0x00000000,0x000b001e,0x00000014,0x00000007,0x00000007,
0x00000007,0x00000012,0x00000012,0x00000006,0x00000012,0x00000013,0x00000013,0x00040020,
0x00000015,0x00000009,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009,0x0004002b,
0x00000012,0x00000017,0x00000001,0x00040020,0x00000018,0x00000009,0x00000007,0x0004002b,
0x00000012,0x0000001d,0x00000000,0x0004002b,0x00000012,0x00000022,0x00000007,0x00040020,
0x00000023,0x00000009,0x00000013,0x00020014,0x00000026,0x0004002b,0x00000013,0x00000027,
0x00000000,0x00040020,0x0000002b,0x00000007,0x00000006,0x0004002b,0x00000012,0x00000030,
0x00000008,0x0004002b,0x00000013,0x00000036,0x00000001,0x00040020,0x0000003b,0x00000003,
0x00000006,0x0004003b,0x0000003b,0x0000003c,0x00000003,0x00090019,0x0000003d,0x00000006,
0x00000001,0x00000000,0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x0000003e,
0x00000000,0x0000003d,0x0004003b,0x0000003e,0x0000003f,0x00000000,0x0002001a,0x00000041,
0x00040020,0x00000042,0x00000000,0x00000041,0x0004003b,0x00000042,0x00000043,0x00000000,
0x0003001b,0x00000045,0x0000003d,0x0004002b,0x00000012,0x00000048,0x00000002,0x0004002b,
0x00000012,0x0000004c,0x00000003,0x00040020,0x0000004d,0x00000009,0x00000012,0x00040017,
0x00000051,0x00000006,0x00000003,0x00040020,0x00000057,0x00000003,0x00000012,0x0004003b,
0x00000057,0x00000058,0x00000003,0x00090019,0x00000059,0x00000013,0x00000001,0x00000000,
0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x0000005a,0x00000000,0x00000059,
0x0004003b,0x0000005a,0x0000005b,0x00000000,0x0003001b,0x0000005e,0x00000059,0x00040017,
0x0000006a,0x00000013,0x00000004,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003d,0x0000000a,
0x0000000d,0x0000000c,0x0007004f,0x00000007,0x0000000e,0x0000000d,0x0000000d,0x00000000,
0x00000001,0x00050051,0x00000006,0x0000000f,0x0000000e,0x00000000,0x00050051,0x00000006,
0x00000010,0x0000000e,0x00000001,0x00050050,0x00000007,0x00000011,0x0000000f,0x00000010,
0x0003003e,0x00000009,0x00000011,0x00050041,0x00000018,0x00000019,0x00000016,0x00000017,
0x0004003d,0x00000007,0x0000001a,0x00000019,0x0004003d,0x00000007,0x0000001b,0x00000009,
0x00050085,0x00000007,0x0000001c,0x0000001b,0x0000001a,0x0003003e,0x00000009,0x0000001c,
0x00050041,0x00000018,0x0000001e,0x00000016,0x0000001d,0x0004003d,0x00000007,0x0000001f,
0x0000001e,0x0004003d,0x00000007,0x00000020,0x00000009,0x00050083,0x00000007,0x00000021,
0x00000020,0x0000001f,0x0003003e,0x00000009,0x00000021,0x00050041,0x00000023,0x00000024,
0x00000016,0x00000022,0x0004003d,0x00000013,0x00000025,0x00000024,0x000500ab,0x00000026,
0x00000028,0x00000025,0x00000027,0x000300f7,0x0000002a,0x00000000,0x000400fa,0x00000028,
0x00000029,0x0000002a,0x000200f8,0x00000029,0x00050041,0x0000002b,0x0000002c,0x00000009,
0x00000027,0x0004003d,0x00000006,0x0000002d,0x0000002c,0x0004007f,0x00000006,0x0000002e,
0x0000002d,0x00050041,0x0000002b,0x0000002f,0x00000009,0x00000027,0x0003003e,0x0000002f,
0x0000002e,0x000200f9,0x0000002a,0x000200f8,0x0000002a,0x00050041,0x00000023,0x00000031,
0x00000016,0x00000030,0x0004003d,0x00000013,0x00000032,0x00000031,0x000500ab,0x00000026,
0x00000033,0x00000032,0x00000027,0x000300f7,0x00000035,0x00000000,0x000400fa,0x00000033,
0x00000034,0x00000035,0x000200f8,0x00000034,0x00050041,0x0000002b,0x00000037,0x00000009,
0x00000036,0x0004003d,0x00000006,0x00000038,0x00000037,0x0004007f,0x00000006,0x00000039,
0x00000038,0x00050041,0x0000002b,0x0000003a,0x00000009,0x00000036,0x0003003e,0x0000003a,
0x00000039,0x000200f9,0x00000035,0x000200f8,0x00000035,0x0004003d,0x0000003d,0x00000040,
0x0000003f,0x0004003d,0x00000041,0x00000044,0x00000043,0x00050056,0x00000045,0x00000046,
0x00000040,0x00000044,0x0004003d,0x00000007,0x00000047,0x00000009,0x00050041,0x00000018,
0x00000049,0x00000016,0x00000048,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050085,
0x00000007,0x0000004b,0x00000047,0x0000004a,0x00050041,0x0000004d,0x0000004e,0x00000016,
0x0000004c,0x0004003d,0x00000012,0x0000004f,0x0000004e,0x0004006f,0x00000006,0x00000050,
0x0000004f,0x00050051,0x00000006,0x00000052,0x0000004b,0x00000000,0x00050051,0x00000006,
0x00000053,0x0000004b,0x00000001,0x00060050,0x00000051,0x00000054,0x00000052,0x00000053,
0x00000050,0x00050057,0x0000000a,0x00000055,0x00000046,0x00000054,0x00050051,0x00000006,
0x00000056,0x00000055,0x00000000,0x0003003e,0x0000003c,0x00000056,0x0004003d,0x00000059,
0x0000005c,0x0000005b,0x0004003d,0x00000041,0x0000005d,0x00000043,0x00050056,0x0000005e,
0x0000005f,0x0000005c,0x0000005d,0x0004003d,0x00000007,0x00000060,0x00000009,0x00050041,
0x00000018,0x00000061,0x00000016,0x00000048,0x0004003d,0x00000007,0x00000062,0x00000061,
0x00050085,0x00000007,0x00000063,0x00000060,0x00000062,0x00050041,0x0000004d,0x00000064,
0x00000016,0x0000004c,0x0004003d,0x00000012,0x00000065,0x00000064,0x0004006f,0x00000006,
0x00000066,0x00000065,0x00050051,0x00000006,0x00000067,0x00000063,0x00000000,0x00050051,
0x00000006,0x00000068,0x00000063,0x00000001,0x00060050,0x00000051,0x00000069,0x00000067,
0x00000068,0x00000066,0x00050057,0x0000006a,0x0000006b,0x0000005f,0x00000069,0x00050051,
0x00000013,0x0000006c,0x0000006b,0x00000000,0x0004007c,0x00000012,0x0000006d,0x0000006c,
0x0003003e,0x00000058,0x0000006d,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
vec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2DArray depth;
layout(set = 0, binding = 1)uniform utexture2DArray stencil;
layout(set = 0, binding = 2)uniform sampler blitSampler;
void main()
{
vec2 srcImageCoords = vec2(gl_FragCoord . xy);
srcImageCoords *= params . stretch;
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texture(sampler2DArray(depth, blitSampler), vec3(srcImageCoords * params . invSrcExtent, params . srcLayer)). x;
gl_FragStencilRefARB = int(texture(usampler2DArray(stencil, blitSampler), vec3(srcImageCoords * params . invSrcExtent, params . srcLayer)). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000016[] = {
0x07230203,0x00010000,0x00080007,0x00000049,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000d,0x00000036,0x0000003f,0x00030010,0x00000004,0x00000007,0x00030010,0x00000004,
0x0000000c,0x00030003,0x00000002,0x000001c2,0x00090004,0x415f4c47,0x735f4252,0x65646168,
0x74735f72,0x69636e65,0x78655f6c,0x74726f70,0x00000000,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,0x00000009,0x49637273,0x6567616d,
0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,0x00000000,
0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,0x00000013,
0x00000000,0x7366666f,0x00007465,0x00050006,0x00000013,0x00000001,0x65727473,0x00686374,
0x00070006,0x00000013,0x00000002,0x53766e69,0x78456372,0x746e6574,0x00000000,0x00060006,
0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,0x00000004,
0x706d6173,0x0073656c,0x00060006,0x00000013,0x00000005,0x53766e69,0x6c706d61,0x00007365,
0x00060006,0x00000013,0x00000006,0x7074756f,0x614d7475,0x00006b73,0x00050006,0x00000013,
0x00000007,0x70696c66,0x00000058,0x00050006,0x00000013,0x00000008,0x70696c66,0x00000059,
0x00040005,0x00000015,0x61726170,0x0000736d,0x00060005,0x00000036,0x465f6c67,0x44676172,
0x68747065,0x00000000,0x00040005,0x00000039,0x74706564,0x00000068,0x00080005,0x0000003f,
0x465f6c67,0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,0x00040005,0x00000042,
0x6e657473,0x006c6963,0x00040047,0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,
0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,0x00000023,0x00000008,
0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,0x00000013,0x00000003,
0x00000023,0x00000018,0x00050048,0x00000013,0x00000004,0x00000023,0x0000001c,0x00050048,
0x00000013,0x00000005,0x00000023,0x00000020,0x00050048,0x00000013,0x00000006,0x00000023,
0x00000024,0x00050048,0x00000013,0x00000007,0x00000023,0x00000028,0x00050048,0x00000013,
0x00000008,0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000036,
0x0000000b,0x00000016,0x00040047,0x00000039,0x00000022,0x00000000,0x00040047,0x00000039,
0x00000021,0x00000000,0x00040047,0x0000003f,0x0000000b,0x00001396,0x00040047,0x00000042,
0x00000022,0x00000000,0x00040047,0x00000042,0x00000021,0x00000001,0x00020013,0x00000002,
0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,
0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00030016,
0x0000000a,0x00000020,0x00040017,0x0000000b,0x0000000a,0x00000004,0x00040020,0x0000000c,
0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,
0x0000000a,0x00000002,0x00040015,0x00000012,0x00000020,0x00000000,0x000b001e,0x00000013,
0x00000007,0x0000000e,0x0000000e,0x00000006,0x00000006,0x0000000a,0x00000006,0x00000012,
0x00000012,0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,
0x00000009,0x0004002b,0x00000006,0x00000016,0x00000000,0x00040020,0x00000017,0x00000009,
0x00000007,0x0004002b,0x00000006,0x0000001c,0x00000007,0x00040020,0x0000001d,0x00000009,
0x00000012,0x00020014,0x00000020,0x0004002b,0x00000012,0x00000021,0x00000000,0x00040020,
0x00000025,0x00000007,0x00000006,0x0004002b,0x00000006,0x0000002a,0x00000008,0x0004002b,
0x00000012,0x00000030,0x00000001,0x00040020,0x00000035,0x00000003,0x0000000a,0x0004003b,
0x00000035,0x00000036,0x00000003,0x00090019,0x00000037,0x0000000a,0x00000001,0x00000000,
0x00000000,0x00000001,0x00000001,0x00000000,0x00040020,0x00000038,0x00000000,0x00000037,
0x0004003b,0x00000038,0x00000039,0x00000000,0x00040020,0x0000003e,0x00000003,0x00000006,
0x0004003b,0x0000003e,0x0000003f,0x00000003,0x00090019,0x00000040,0x00000012,0x00000001,
0x00000000,0x00000000,0x00000001,0x00000001,0x00000000,0x00040020,0x00000041,0x00000000,
0x00000040,0x0004003b,0x00000041,0x00000042,0x00000000,0x00040017,0x00000045,0x00000012,
0x00000004,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,
0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,
0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,
0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x00050041,0x00000017,
0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x0004003d,
0x00000007,0x0000001a,0x00000009,0x00050082,0x00000007,0x0000001b,0x0000001a,0x00000019,
0x0003003e,0x00000009,0x0000001b,0x00050041,0x0000001d,0x0000001e,0x00000015,0x0000001c,
0x0004003d,0x00000012,0x0000001f,0x0000001e,0x000500ab,0x00000020,0x00000022,0x0000001f,
0x00000021,0x000300f7,0x00000024,0x00000000,0x000400fa,0x00000022,0x00000023,0x00000024,
0x000200f8,0x00000023,0x00050041,0x00000025,0x00000026,0x00000009,0x00000021,0x0004003d,
0x00000006,0x00000027,0x00000026,0x0004007e,0x00000006,0x00000028,0x00000027,0x00050041,
0x00000025,0x00000029,0x00000009,0x00000021,0x0003003e,0x00000029,0x00000028,0x000200f9,
0x00000024,0x000200f8,0x00000024,0x00050041,0x0000001d,0x0000002b,0x00000015,0x0000002a,
0x0004003d,0x00000012,0x0000002c,0x0000002b,0x000500ab,0x00000020,0x0000002d,0x0000002c,
0x00000021,0x000300f7,0x0000002f,0x00000000,0x000400fa,0x0000002d,0x0000002e,0x0000002f,
0x000200f8,0x0000002e,0x00050041,0x00000025,0x00000031,0x00000009,0x00000030,0x0004003d,
0x00000006,0x00000032,0x00000031,0x0004007e,0x00000006,0x00000033,0x00000032,0x00050041,
0x00000025,0x00000034,0x00000009,0x00000030,0x0003003e,0x00000034,0x00000033,0x000200f9,
0x0000002f,0x000200f8,0x0000002f,0x0004003d,0x00000037,0x0000003a,0x00000039,0x0004003d,
0x00000007,0x0000003b,0x00000009,0x0007005f,0x0000000b,0x0000003c,0x0000003a,0x0000003b,
0x00000040,0x00000016,0x00050051,0x0000000a,0x0000003d,0x0000003c,0x00000000,0x0003003e,
0x00000036,0x0000003d,0x0004003d,0x00000040,0x00000043,0x00000042,0x0004003d,0x00000007,
0x00000044,0x00000009,0x0007005f,0x00000045,0x00000046,0x00000043,0x00000044,0x00000040,
0x00000016,0x00050051,0x00000012,0x00000047,0x00000046,0x00000000,0x0004007c,0x00000006,
0x00000048,0x00000047,0x0003003e,0x0000003f,0x00000048,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_EXT_samplerless_texture_functions : require
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
ivec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2DMS depth;
layout(set = 0, binding = 1)uniform utexture2DMS stencil;
void main()
{
ivec2 srcImageCoords = ivec2(gl_FragCoord . xy);
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texelFetch(depth, srcImageCoords, 0). x;
gl_FragStencilRefARB = int(texelFetch(stencil, srcImageCoords, 0). x);
}
#endif // Preprocessed code
// 7.12.3226
#pragma once
const uint32_t kBlitResolve_frag_00000017[] = {
0x07230203,0x00010000,0x00080007,0x00000056,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,
0x0000000d,0x00000036,0x00000047,0x00030010,0x00000004,0x00000007,0x00030010,0x00000004,
0x0000000c,0x00030003,0x00000002,0x000001c2,0x00090004,0x415f4c47,0x735f4252,0x65646168,
0x74735f72,0x69636e65,0x78655f6c,0x74726f70,0x00000000,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005,0x00000009,0x49637273,0x6567616d,
0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,0x00000000,
0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,0x00000013,
0x00000000,0x7366666f,0x00007465,0x00050006,0x00000013,0x00000001,0x65727473,0x00686374,
0x00070006,0x00000013,0x00000002,0x53766e69,0x78456372,0x746e6574,0x00000000,0x00060006,
0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,0x00000004,
0x706d6173,0x0073656c,0x00060006,0x00000013,0x00000005,0x53766e69,0x6c706d61,0x00007365,
0x00060006,0x00000013,0x00000006,0x7074756f,0x614d7475,0x00006b73,0x00050006,0x00000013,
0x00000007,0x70696c66,0x00000058,0x00050006,0x00000013,0x00000008,0x70696c66,0x00000059,
0x00040005,0x00000015,0x61726170,0x0000736d,0x00060005,0x00000036,0x465f6c67,0x44676172,
0x68747065,0x00000000,0x00040005,0x00000039,0x74706564,0x00000068,0x00080005,0x00000047,
0x465f6c67,0x53676172,0x636e6574,0x65526c69,0x42524166,0x00000000,0x00040005,0x0000004a,
0x6e657473,0x006c6963,0x00040047,0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,
0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,0x00000023,0x00000008,
0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,0x00000013,0x00000003,
0x00000023,0x00000018,0x00050048,0x00000013,0x00000004,0x00000023,0x0000001c,0x00050048,
0x00000013,0x00000005,0x00000023,0x00000020,0x00050048,0x00000013,0x00000006,0x00000023,
0x00000024,0x00050048,0x00000013,0x00000007,0x00000023,0x00000028,0x00050048,0x00000013,
0x00000008,0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000036,
0x0000000b,0x00000016,0x00040047,0x00000039,0x00000022,0x00000000,0x00040047,0x00000039,
0x00000021,0x00000000,0x00040047,0x00000047,0x0000000b,0x00001396,0x00040047,0x0000004a,
0x00000022,0x00000000,0x00040047,0x0000004a,0x00000021,0x00000001,0x00020013,0x00000002,
0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,
0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00030016,
0x0000000a,0x00000020,0x00040017,0x0000000b,0x0000000a,0x00000004,0x00040020,0x0000000c,
0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,
0x0000000a,0x00000002,0x00040015,0x00000012,0x00000020,0x00000000,0x000b001e,0x00000013,
0x00000007,0x0000000e,0x0000000e,0x00000006,0x00000006,0x0000000a,0x00000006,0x00000012,
0x00000012,0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,
0x00000009,0x0004002b,0x00000006,0x00000016,0x00000000,0x00040020,0x00000017,0x00000009,
0x00000007,0x0004002b,0x00000006,0x0000001c,0x00000007,0x00040020,0x0000001d,0x00000009,
0x00000012,0x00020014,0x00000020,0x0004002b,0x00000012,0x00000021,0x00000000,0x00040020,
0x00000025,0x00000007,0x00000006,0x0004002b,0x00000006,0x0000002a,0x00000008,0x0004002b,
0x00000012,0x00000030,0x00000001,0x00040020,0x00000035,0x00000003,0x0000000a,0x0004003b,
0x00000035,0x00000036,0x00000003,0x00090019,0x00000037,0x0000000a,0x00000001,0x00000000,
0x00000001,0x00000001,0x00000001,0x00000000,0x00040020,0x00000038,0x00000000,0x00000037,
0x0004003b,0x00000038,0x00000039,0x00000000,0x0004002b,0x00000006,0x0000003c,0x00000003,
0x00040020,0x0000003d,0x00000009,0x00000006,0x00040017,0x00000040,0x00000006,0x00000003,
0x00040020,0x00000046,0x00000003,0x00000006,0x0004003b,0x00000046,0x00000047,0x00000003,
0x00090019,0x00000048,0x00000012,0x00000001,0x00000000,0x00000001,0x00000001,0x00000001,
0x00000000,0x00040020,0x00000049,0x00000000,0x00000048,0x0004003b,0x00000049,0x0000004a,
0x00000000,0x00040017,0x00000052,0x00000012,0x00000004,0x00050036,0x00000002,0x00000004,
0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,
0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,
0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x0003003e,
0x00000009,0x00000011,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
0x00000007,0x00000019,0x00000018,0x0004003d,0x00000007,0x0000001a,0x00000009,0x00050082,
0x00000007,0x0000001b,0x0000001a,0x00000019,0x0003003e,0x00000009,0x0000001b,0x00050041,
0x0000001d,0x0000001e,0x00000015,0x0000001c,0x0004003d,0x00000012,0x0000001f,0x0000001e,
0x000500ab,0x00000020,0x00000022,0x0000001f,0x00000021,0x000300f7,0x00000024,0x00000000,
0x000400fa,0x00000022,0x00000023,0x00000024,0x000200f8,0x00000023,0x00050041,0x00000025,
0x00000026,0x00000009,0x00000021,0x0004003d,0x00000006,0x00000027,0x00000026,0x0004007e,
0x00000006,0x00000028,0x00000027,0x00050041,0x00000025,0x00000029,0x00000009,0x00000021,
0x0003003e,0x00000029,0x00000028,0x000200f9,0x00000024,0x000200f8,0x00000024,0x00050041,
0x0000001d,0x0000002b,0x00000015,0x0000002a,0x0004003d,0x00000012,0x0000002c,0x0000002b,
0x000500ab,0x00000020,0x0000002d,0x0000002c,0x00000021,0x000300f7,0x0000002f,0x00000000,
0x000400fa,0x0000002d,0x0000002e,0x0000002f,0x000200f8,0x0000002e,0x00050041,0x00000025,
0x00000031,0x00000009,0x00000030,0x0004003d,0x00000006,0x00000032,0x00000031,0x0004007e,
0x00000006,0x00000033,0x00000032,0x00050041,0x00000025,0x00000034,0x00000009,0x00000030,
0x0003003e,0x00000034,0x00000033,0x000200f9,0x0000002f,0x000200f8,0x0000002f,0x0004003d,
0x00000037,0x0000003a,0x00000039,0x0004003d,0x00000007,0x0000003b,0x00000009,0x00050041,
0x0000003d,0x0000003e,0x00000015,0x0000003c,0x0004003d,0x00000006,0x0000003f,0x0000003e,
0x00050051,0x00000006,0x00000041,0x0000003b,0x00000000,0x00050051,0x00000006,0x00000042,
0x0000003b,0x00000001,0x00060050,0x00000040,0x00000043,0x00000041,0x00000042,0x0000003f,
0x0007005f,0x0000000b,0x00000044,0x0000003a,0x00000043,0x00000040,0x00000016,0x00050051,
0x0000000a,0x00000045,0x00000044,0x00000000,0x0003003e,0x00000036,0x00000045,0x0004003d,
0x00000048,0x0000004b,0x0000004a,0x0004003d,0x00000007,0x0000004c,0x00000009,0x00050041,
0x0000003d,0x0000004d,0x00000015,0x0000003c,0x0004003d,0x00000006,0x0000004e,0x0000004d,
0x00050051,0x00000006,0x0000004f,0x0000004c,0x00000000,0x00050051,0x00000006,0x00000050,
0x0000004c,0x00000001,0x00060050,0x00000040,0x00000051,0x0000004f,0x00000050,0x0000004e,
0x0007005f,0x00000052,0x00000053,0x0000004b,0x00000051,0x00000040,0x00000016,0x00050051,
0x00000012,0x00000054,0x00000053,0x00000000,0x0004007c,0x00000006,0x00000055,0x00000054,
0x0003003e,0x00000047,0x00000055,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
#extension GL_EXT_samplerless_texture_functions : require
#extension GL_ARB_shader_stencil_export : require
layout(push_constant)uniform PushConstants {
ivec2 offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
int outputMask;
bool flipX;
bool flipY;
} params;
layout(set = 0, binding = 0)uniform texture2DMSArray depth;
layout(set = 0, binding = 1)uniform utexture2DMSArray stencil;
void main()
{
ivec2 srcImageCoords = ivec2(gl_FragCoord . xy);
srcImageCoords -= params . offset;
if(params . flipX)
srcImageCoords . x = - srcImageCoords . x;
if(params . flipY)
srcImageCoords . y = - srcImageCoords . y;
gl_FragDepth = texelFetch(depth, ivec3(srcImageCoords, params . srcLayer), 0). x;
gl_FragStencilRefARB = int(texelFetch(stencil, ivec3(srcImageCoords, params . srcLayer), 0). x);
}
#endif // Preprocessed code
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// //
// BlitResolve.frag: Resolve multisampled color or depth/stencil images. // BlitResolve.frag: Blit color or depth/stencil images, or resolve multisampled ones.
#version 450 core #version 450 core
...@@ -47,10 +47,12 @@ ...@@ -47,10 +47,12 @@
#endif #endif
#if IsBlitColor && (IsBlitDepth || IsBlitStencil) #if IsBlitColor && (IsBlitDepth || IsBlitStencil)
#error "The shader doesn't resolve color and depth/stencil at the same time." #error "The shader doesn't blit color and depth/stencil at the same time."
#endif #endif
#if IsResolve
#extension GL_EXT_samplerless_texture_functions : require #extension GL_EXT_samplerless_texture_functions : require
#endif
#if IsBlitStencil #if IsBlitStencil
#extension GL_ARB_shader_stencil_export : require #extension GL_ARB_shader_stencil_export : require
#endif #endif
...@@ -60,6 +62,9 @@ ...@@ -60,6 +62,9 @@
#define DEPTH_SRC_RESOURCE(type) type #define DEPTH_SRC_RESOURCE(type) type
#define STENCIL_SRC_RESOURCE(type) MAKE_SRC_RESOURCE(u, type) #define STENCIL_SRC_RESOURCE(type) MAKE_SRC_RESOURCE(u, type)
#if IsResolve
#define CoordType ivec2
#if SrcIsArray #if SrcIsArray
#define SRC_RESOURCE_NAME texture2DMSArray #define SRC_RESOURCE_NAME texture2DMSArray
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, ivec3(coord, params.srcLayer), sample) #define TEXEL_FETCH(src, coord, sample) texelFetch(src, ivec3(coord, params.srcLayer), sample)
...@@ -68,12 +73,34 @@ ...@@ -68,12 +73,34 @@
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, coord, sample) #define TEXEL_FETCH(src, coord, sample) texelFetch(src, coord, sample)
#endif #endif
#define COLOR_TEXEL_FETCH(src, coord, sample) TEXEL_FETCH(src, coord, sample)
#define DEPTH_TEXEL_FETCH(src, coord, sample) TEXEL_FETCH(src, coord, sample)
#define STENCIL_TEXEL_FETCH(src, coord, sample) TEXEL_FETCH(src, coord, sample)
#else
#define CoordType vec2
#if SrcIsArray
#define SRC_RESOURCE_NAME texture2DArray
#define SRC_SAMPLER_NAME sampler2DArray
#define TEXEL_FETCH(src, coord, sample) texture(src, vec3(coord * params.invSrcExtent, params.srcLayer))
#else
#define SRC_RESOURCE_NAME texture2D
#define SRC_SAMPLER_NAME sampler2D
#define TEXEL_FETCH(src, coord, sample) texture(src, coord * params.invSrcExtent)
#endif
#define COLOR_TEXEL_FETCH(src, coord, sample) TEXEL_FETCH(COLOR_SRC_RESOURCE(SRC_SAMPLER_NAME)(src, blitSampler), coord, sample)
#define DEPTH_TEXEL_FETCH(src, coord, sample) TEXEL_FETCH(DEPTH_SRC_RESOURCE(SRC_SAMPLER_NAME)(src, blitSampler), coord, sample)
#define STENCIL_TEXEL_FETCH(src, coord, sample) TEXEL_FETCH(STENCIL_SRC_RESOURCE(SRC_SAMPLER_NAME)(src, blitSampler), coord, sample)
#endif // IsResolve
layout(push_constant) uniform PushConstants { layout(push_constant) uniform PushConstants {
// Robust access.
ivec2 srcExtent;
// Translation from source to destination coordinates. // Translation from source to destination coordinates.
ivec2 srcOffset; CoordType offset;
ivec2 destOffset; vec2 stretch;
vec2 invSrcExtent;
int srcLayer; int srcLayer;
int samples; int samples;
float invSamples; float invSamples;
...@@ -103,38 +130,74 @@ layout(set = 0, binding = 0) uniform DEPTH_SRC_RESOURCE(SRC_RESOURCE_NAME) depth ...@@ -103,38 +130,74 @@ layout(set = 0, binding = 0) uniform DEPTH_SRC_RESOURCE(SRC_RESOURCE_NAME) depth
layout(set = 0, binding = 1) uniform STENCIL_SRC_RESOURCE(SRC_RESOURCE_NAME) stencil; layout(set = 0, binding = 1) uniform STENCIL_SRC_RESOURCE(SRC_RESOURCE_NAME) stencil;
#endif #endif
#if !IsResolve
layout(set = 0, binding = 2) uniform sampler blitSampler;
#endif
void main() void main()
{ {
ivec2 destSubImageCoords = ivec2(gl_FragCoord.xy) - params.destOffset; // Assume only one direction; x. We are blitting from source to destination either flipped or
// not, with a stretch factor of T. If resolving, T == 1. Note that T here is:
ivec2 srcSubImageCoords = destSubImageCoords; //
// T = SrcWidth / DstWidth
//
// Assume the blit offset in source is S and in destination D. If flipping, S has the
// coordinates of the opposite size of the rectangle. In this shader, we have the fragment
// coordinates, X, which is a point in the destination buffer. We need to map this to the
// source buffer to know where to sample from.
//
// If there's no flipping:
//
// S Y D X
// +-x----+ -> +----x-----------+
//
// Y = S + (X - D) * T
// => Y = TX - (DT - S)
//
// If there's flipping:
//
// Y S D X
// +----x-+ -> +----x-----------+
//
// Y = S - (X - D) * T
// => Y = -(TX - (DT + S))
//
// The above can be implemented as:
//
// !Flip: Y = TX - O where O = DT-S
// Flip: Y = -(TX - O) where O = DT+S
//
// Note that T is params.stretch and O is params.offset.
// X
CoordType srcImageCoords = CoordType(gl_FragCoord.xy); // X
#if !IsResolve
srcImageCoords *= params.stretch; // TX
#endif
srcImageCoords -= params.offset; // TX - O
// If flipping, srcOffset would contain the opposite coordinates, so we can // If flipping, negate the coordinates.
// simply reverse the direction in which x/y grows.
if (params.flipX) if (params.flipX)
srcSubImageCoords.x = -srcSubImageCoords.x; srcImageCoords.x = -srcImageCoords.x;
if (params.flipY) if (params.flipY)
srcSubImageCoords.y = -srcSubImageCoords.y; srcImageCoords.y = -srcImageCoords.y;
ivec2 srcImageCoords = params.srcOffset + srcSubImageCoords;
bool isWithinSrcBounds = any(lessThanEqual(ivec2(0), srcImageCoords)) &&
any(lessThan(srcImageCoords, params.srcExtent));
#if IsBlitColor #if IsBlitColor
#if IsResolve
ColorType colorValue = ColorType(0, 0, 0, 1); ColorType colorValue = ColorType(0, 0, 0, 1);
if (isWithinSrcBounds) for (int i = 0; i < params.samples; ++i)
{ {
for (int i = 0; i < params.samples; ++i) colorValue += COLOR_TEXEL_FETCH(color, srcImageCoords, i);
{ }
colorValue += TEXEL_FETCH(color, srcImageCoords, i);
}
#if IsFloat #if IsFloat
colorValue *= params.invSamples; colorValue *= params.invSamples;
#else #else
colorValue = ColorType(round(colorValue * params.invSamples)); colorValue = ColorType(round(colorValue * params.invSamples));
#endif
#else
ColorType colorValue = COLOR_TEXEL_FETCH(color, srcImageCoords, 0);
#endif #endif
}
// Note: not exporting to render targets that are not present optimizes the number of export // Note: not exporting to render targets that are not present optimizes the number of export
// instructions, which would have otherwise been a likely bottleneck. // instructions, which would have otherwise been a likely bottleneck.
...@@ -176,23 +239,10 @@ void main() ...@@ -176,23 +239,10 @@ void main()
// to resolve depth/stencil images. // to resolve depth/stencil images.
#if IsBlitDepth #if IsBlitDepth
float depthValue = 0; gl_FragDepth = DEPTH_TEXEL_FETCH(depth, srcImageCoords, 0).x;
if (isWithinSrcBounds)
{
depthValue = TEXEL_FETCH(depth, srcImageCoords, 0).x;
}
gl_FragDepth = depthValue;
#endif // IsBlitDepth #endif // IsBlitDepth
#if IsBlitStencil #if IsBlitStencil
uint stencilValue = 0; gl_FragStencilRefARB = int(STENCIL_TEXEL_FETCH(stencil, srcImageCoords, 0).x);
if (isWithinSrcBounds)
{
stencilValue = TEXEL_FETCH(stencil, srcImageCoords, 0).x;
}
gl_FragStencilRefARB = int(stencilValue);
#endif // IsBlitStencil #endif // IsBlitStencil
} }
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
"BlitResolve.frag.json: Build parameters for BlitResolve.frag." "BlitResolve.frag.json: Build parameters for BlitResolve.frag."
], ],
"Flags": [ "Flags": [
"SrcIsArray" "SrcIsArray",
"IsResolve"
], ],
"Blit": [ "Blit": [
"BlitColorFloat", "BlitColorFloat",
......
...@@ -3,98 +3,123 @@ ...@@ -3,98 +3,123 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// //
// BlitResolveStencilNoExport.comp: Resolve multisampled stencil images into a buffer. This is used // BlitResolveStencilNoExport.comp: Blit stencil images or resolve multisampled ones into a buffer.
// where VK_EXT_shader_stencil_export is not available, to output the resolved stencil into a // This is used where VK_EXT_shader_stencil_export is not available, to output the resolved stencil
// temporary buffer, which is then copied into the stencil aspect of the final image. // into a temporary buffer, which is then copied into the stencil aspect of the final image.
#version 450 core #version 450 core
#if IsResolve
#extension GL_EXT_samplerless_texture_functions : require #extension GL_EXT_samplerless_texture_functions : require
#endif
#define MAKE_SRC_RESOURCE(prefix, type) prefix ## type #define MAKE_SRC_RESOURCE(prefix, type) prefix ## type
#define STENCIL_SRC_RESOURCE(type) MAKE_SRC_RESOURCE(u, type) #if IsResolve
#define CoordType ivec2
#if SrcIsArray #if SrcIsArray
#define SRC_RESOURCE_NAME texture2DMSArray #define SRC_RESOURCE utexture2DMSArray
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, ivec3(coord, params.srcLayer), sample)
#else #else
#define SRC_RESOURCE_NAME texture2DMS #define SRC_RESOURCE utexture2DMS
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, coord, sample)
#endif #endif
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; #else
layout (set = 0, binding = 0) buffer dest #define CoordType vec2
{ #if SrcIsArray
// Note: every invocation handles 4 stencil value and output one value here. #define SRC_RESOURCE utexture2DArray
uint destData[]; #define TEXEL_FETCH(src, coord, sample) texture(usampler2DArray(src, blitSampler), vec3(coord * params.invSrcExtent, params.srcLayer))
}; #else
#define SRC_RESOURCE utexture2D
#define TEXEL_FETCH(src, coord, sample) texture(usampler2D(src, blitSampler), coord * params.invSrcExtent)
#endif
#endif // IsResolve
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(push_constant) uniform PushConstants { layout(push_constant) uniform PushConstants {
// Robust access.
ivec2 srcExtent;
// Translation from source to destination coordinates. // Translation from source to destination coordinates.
ivec2 srcOffset; CoordType offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer; int srcLayer;
int srcWidth;
// Output. // Output.
ivec4 blitArea;
int destPitch; int destPitch;
ivec2 destExtent;
// Flip control. // Flip control.
bool flipX; bool flipX;
bool flipY; bool flipY;
} params; } params;
layout(set = 0, binding = 1) uniform STENCIL_SRC_RESOURCE(SRC_RESOURCE_NAME) stencil; layout (set = 0, binding = 0) buffer dest
{
// Note: every invocation handles 4 stencil value and output one value here.
uint destData[];
};
layout(set = 0, binding = 1) uniform SRC_RESOURCE stencil;
#if !IsResolve
layout(set = 0, binding = 2) uniform sampler blitSampler;
#endif
void main() void main()
{ {
ivec2 destSubImageCoords = ivec2(gl_GlobalInvocationID.x * 4, gl_GlobalInvocationID.y); ivec2 destSubImageCoords = ivec2(gl_GlobalInvocationID.x * 4, gl_GlobalInvocationID.y);
if (any(lessThanEqual(params.blitArea.zw, destSubImageCoords)))
if (any(lessThanEqual(params.destExtent, destSubImageCoords)))
{ {
return; return;
} }
ivec2 srcSubImageCoords = destSubImageCoords; // See comment in BlitResolve.frag regarding how the following coordinate transformation is
// derived.
//
// When blitting with the fragment shader, the input coordinates are within the blit area.
// With the compute shader however, the input coordinates start from 0,0. That is, if the
// fragment shader input is Xf and the compute shader's input is Xc, we have:
//
// Xf = Xc + params.blitOffset
//
// So we need to offset the input coordinates here by the blit area offset.
destSubImageCoords += params.blitArea.xy;
CoordType srcImageCoords = CoordType(destSubImageCoords);
#if !IsResolve
srcImageCoords *= params.stretch;
#endif
srcImageCoords -= params.offset;
// If flipping, srcOffset would contain the opposite coordinates, so we can // If flipping, negate the coordinates.
// simply reverse the direction in which x/y grows.
if (params.flipX) if (params.flipX)
srcSubImageCoords.x = -srcSubImageCoords.x; srcImageCoords.x = -srcImageCoords.x;
if (params.flipY) if (params.flipY)
srcSubImageCoords.y = -srcSubImageCoords.y; srcImageCoords.y = -srcImageCoords.y;
ivec2 srcImageCoords = params.srcOffset + srcSubImageCoords;
int xDir = params.flipX ? -1 : 1; int xDir = params.flipX ? -1 : 1;
uint outStencils = 0; uint outStencils = 0;
// Bounds check on Y: for (int i = 0; i < 4; ++i)
if (srcImageCoords.y >= 0 && srcImageCoords.y < params.srcExtent.y)
{ {
for (int i = 0; i < 4; ++i) // Bounds check on X:
if (srcImageCoords.x >= 0 && srcImageCoords.x < params.srcWidth)
{ {
// Bounds check on X: // Note: always resolve using sample 0. GLES3 gives us freedom in choosing how
uint stencilValue = 0; // to resolve depth/stencil images.
if (srcImageCoords.x >= 0 && srcImageCoords.x < params.srcExtent.x) uint stencilValue = TEXEL_FETCH(stencil, srcImageCoords, 0).x;
{
// Note: always resolve using sample 0. GLES3 gives us freedom in choosing how to resolve
// depth/stencil images.
#if SrcIsArray
stencilValue = texelFetch(stencil, ivec3(srcImageCoords, params.srcLayer), 0).x;
#else
stencilValue = texelFetch(stencil, srcImageCoords, 0).x;
#endif
#if IsBigEndian #if IsBigEndian
outStencils |= (stencilValue & 0xFF) << ((3 - i) * 8); outStencils |= (stencilValue & 0xFF) << ((3 - i) * 8);
#else #else
outStencils |= (stencilValue & 0xFF) << (i * 8); outStencils |= (stencilValue & 0xFF) << (i * 8);
#endif #endif
}
srcImageCoords.x += xDir;
} }
srcImageCoords.x += xDir;
} }
destData[gl_GlobalInvocationID.y * params.destPitch + gl_GlobalInvocationID.x] = outStencils; destData[gl_GlobalInvocationID.y * params.destPitch + gl_GlobalInvocationID.x] = outStencils;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
"BlitResolveStencilNoExport.frag.comp: Build parameters for BlitResolveStencilNoExport.comp." "BlitResolveStencilNoExport.frag.comp: Build parameters for BlitResolveStencilNoExport.comp."
], ],
"Flags": [ "Flags": [
"SrcIsArray" "SrcIsArray",
"IsResolve"
] ]
} }
...@@ -171,7 +171,7 @@ constexpr angle::PackedEnumMap<ImageLayout, ImageMemoryBarrierData> kImageMemory ...@@ -171,7 +171,7 @@ constexpr angle::PackedEnumMap<ImageLayout, ImageMemoryBarrierData> kImageMemory
ImageLayout::DepthStencilAttachment, ImageLayout::DepthStencilAttachment,
{ {
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
// Transition to: all reads and writes must happen after barrier. // Transition to: all reads and writes must happen after barrier.
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
......
...@@ -28,8 +28,22 @@ namespace ...@@ -28,8 +28,22 @@ namespace
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000C.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000D.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000E.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000F.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000010.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000011.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000012.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000013.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000014.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000015.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000016.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000017.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000002.inc" #include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000002.inc"
...@@ -123,10 +137,24 @@ constexpr ShaderBlob kBlitResolve_frag_shaders[] = { ...@@ -123,10 +137,24 @@ constexpr ShaderBlob kBlitResolve_frag_shaders[] = {
{kBlitResolve_frag_00000009, sizeof(kBlitResolve_frag_00000009)}, {kBlitResolve_frag_00000009, sizeof(kBlitResolve_frag_00000009)},
{kBlitResolve_frag_0000000A, sizeof(kBlitResolve_frag_0000000A)}, {kBlitResolve_frag_0000000A, sizeof(kBlitResolve_frag_0000000A)},
{kBlitResolve_frag_0000000B, sizeof(kBlitResolve_frag_0000000B)}, {kBlitResolve_frag_0000000B, sizeof(kBlitResolve_frag_0000000B)},
{kBlitResolve_frag_0000000C, sizeof(kBlitResolve_frag_0000000C)},
{kBlitResolve_frag_0000000D, sizeof(kBlitResolve_frag_0000000D)},
{kBlitResolve_frag_0000000E, sizeof(kBlitResolve_frag_0000000E)},
{kBlitResolve_frag_0000000F, sizeof(kBlitResolve_frag_0000000F)},
{kBlitResolve_frag_00000010, sizeof(kBlitResolve_frag_00000010)},
{kBlitResolve_frag_00000011, sizeof(kBlitResolve_frag_00000011)},
{kBlitResolve_frag_00000012, sizeof(kBlitResolve_frag_00000012)},
{kBlitResolve_frag_00000013, sizeof(kBlitResolve_frag_00000013)},
{kBlitResolve_frag_00000014, sizeof(kBlitResolve_frag_00000014)},
{kBlitResolve_frag_00000015, sizeof(kBlitResolve_frag_00000015)},
{kBlitResolve_frag_00000016, sizeof(kBlitResolve_frag_00000016)},
{kBlitResolve_frag_00000017, sizeof(kBlitResolve_frag_00000017)},
}; };
constexpr ShaderBlob kBlitResolveStencilNoExport_comp_shaders[] = { constexpr ShaderBlob kBlitResolveStencilNoExport_comp_shaders[] = {
{kBlitResolveStencilNoExport_comp_00000000, sizeof(kBlitResolveStencilNoExport_comp_00000000)}, {kBlitResolveStencilNoExport_comp_00000000, sizeof(kBlitResolveStencilNoExport_comp_00000000)},
{kBlitResolveStencilNoExport_comp_00000001, sizeof(kBlitResolveStencilNoExport_comp_00000001)}, {kBlitResolveStencilNoExport_comp_00000001, sizeof(kBlitResolveStencilNoExport_comp_00000001)},
{kBlitResolveStencilNoExport_comp_00000002, sizeof(kBlitResolveStencilNoExport_comp_00000002)},
{kBlitResolveStencilNoExport_comp_00000003, sizeof(kBlitResolveStencilNoExport_comp_00000003)},
}; };
constexpr ShaderBlob kBufferUtils_comp_shaders[] = { constexpr ShaderBlob kBufferUtils_comp_shaders[] = {
{kBufferUtils_comp_00000000, sizeof(kBufferUtils_comp_00000000)}, {kBufferUtils_comp_00000000, sizeof(kBufferUtils_comp_00000000)},
......
...@@ -21,8 +21,22 @@ angle_vulkan_internal_shaders = [ ...@@ -21,8 +21,22 @@ angle_vulkan_internal_shaders = [
"shaders/gen/BlitResolve.frag.00000009.inc", "shaders/gen/BlitResolve.frag.00000009.inc",
"shaders/gen/BlitResolve.frag.0000000A.inc", "shaders/gen/BlitResolve.frag.0000000A.inc",
"shaders/gen/BlitResolve.frag.0000000B.inc", "shaders/gen/BlitResolve.frag.0000000B.inc",
"shaders/gen/BlitResolve.frag.0000000C.inc",
"shaders/gen/BlitResolve.frag.0000000D.inc",
"shaders/gen/BlitResolve.frag.0000000E.inc",
"shaders/gen/BlitResolve.frag.0000000F.inc",
"shaders/gen/BlitResolve.frag.00000010.inc",
"shaders/gen/BlitResolve.frag.00000011.inc",
"shaders/gen/BlitResolve.frag.00000012.inc",
"shaders/gen/BlitResolve.frag.00000013.inc",
"shaders/gen/BlitResolve.frag.00000014.inc",
"shaders/gen/BlitResolve.frag.00000015.inc",
"shaders/gen/BlitResolve.frag.00000016.inc",
"shaders/gen/BlitResolve.frag.00000017.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc", "shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc", "shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc",
"shaders/gen/BufferUtils.comp.00000000.inc", "shaders/gen/BufferUtils.comp.00000000.inc",
"shaders/gen/BufferUtils.comp.00000001.inc", "shaders/gen/BufferUtils.comp.00000001.inc",
"shaders/gen/BufferUtils.comp.00000002.inc", "shaders/gen/BufferUtils.comp.00000002.inc",
......
...@@ -24,17 +24,18 @@ namespace BlitResolve_frag ...@@ -24,17 +24,18 @@ namespace BlitResolve_frag
enum flags enum flags
{ {
kSrcIsArray = 0x00000001, kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001, kIsResolve = 0x00000002,
kFlagsMask = 0x00000003,
}; };
enum Blit enum Blit
{ {
kBlitColorFloat = 0x00000000, kBlitColorFloat = 0x00000000,
kBlitColorInt = 0x00000002, kBlitColorInt = 0x00000004,
kBlitColorUint = 0x00000004, kBlitColorUint = 0x00000008,
kBlitDepth = 0x00000006, kBlitDepth = 0x0000000C,
kBlitStencil = 0x00000008, kBlitStencil = 0x00000010,
kBlitDepthStencil = 0x0000000A, kBlitDepthStencil = 0x00000014,
kBlitMask = 0x0000000E, kBlitMask = 0x0000001C,
}; };
} // namespace BlitResolve_frag } // namespace BlitResolve_frag
...@@ -43,7 +44,8 @@ namespace BlitResolveStencilNoExport_comp ...@@ -43,7 +44,8 @@ namespace BlitResolveStencilNoExport_comp
enum flags enum flags
{ {
kSrcIsArray = 0x00000001, kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001, kIsResolve = 0x00000002,
kFlagsMask = 0x00000003,
}; };
} // namespace BlitResolveStencilNoExport_comp } // namespace BlitResolveStencilNoExport_comp
......
...@@ -588,11 +588,6 @@ ...@@ -588,11 +588,6 @@
2905 VULKAN : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_component_type = SKIP 2905 VULKAN : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_component_type = SKIP
2905 VULKAN : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_x_size_texture = SKIP 2905 VULKAN : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_x_size_texture = SKIP
// Blit:
3200 VULKAN : dEQP-GLES3.functional.fbo.blit.* = SKIP
3200 VULKAN : dEQP-GLES3.functional.fragment_ops.scissor.framebuffer_blit_center = FAIL
3200 VULKAN : dEQP-GLES3.functional.fragment_ops.scissor.framebuffer_blit_corner = FAIL
// Buffer copy: // Buffer copy:
3194 VULKAN : dEQP-GLES3.functional.buffer.copy.* = SKIP 3194 VULKAN : dEQP-GLES3.functional.buffer.copy.* = SKIP
...@@ -620,6 +615,7 @@ ...@@ -620,6 +615,7 @@
// Vertex ID, Index ID // Vertex ID, Index ID
3221 VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.vertex_id = FAIL 3221 VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.vertex_id = FAIL
3221 VULKAN : dEQP-GLES3.functional.instanced.* = SKIP
// Polygon offset: // Polygon offset:
2950 VULKAN : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL 2950 VULKAN : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL
...@@ -648,12 +644,20 @@ ...@@ -648,12 +644,20 @@
3205 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_range_elements = FAIL 3205 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_range_elements = FAIL
3205 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_range_elements_incomplete_primitive = FAIL 3205 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_range_elements_incomplete_primitive = FAIL
// Flat shading // Flat shading:
3430 VULKAN : dEQP-GLES3.functional.rasterization.flatshading.* = FAIL 3430 VULKAN : dEQP-GLES3.functional.rasterization.flatshading.* = FAIL
3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.basic_types.u* = FAIL 3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.basic_types.u* = FAIL
3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.struct.u* = FAIL 3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.struct.u* = FAIL
3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.struct.float_uvec2_vec3 = FAIL 3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.struct.float_uvec2_vec3 = FAIL
// Sampler objects:
3208 VULKAN : dEQP-GLES3.functional.samplers.* = SKIP
// Instanced rendering:
2672 VULKAN : dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop.* = SKIP
2672 VULKAN : dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop.* = SKIP
2672 VULKAN : dEQP-GLES3.functional.draw.random.* = SKIP
// Misc unimplemented: // Misc unimplemented:
// - FramebufferVk::invalidate*: // - FramebufferVk::invalidate*:
...@@ -679,15 +683,10 @@ ...@@ -679,15 +683,10 @@
2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_elements_vertices_getfloat = FAIL 2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_elements_vertices_getfloat = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_fragment_input_components_get* = FAIL 2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_fragment_input_components_get* = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_program_texel_offset_get* = FAIL 2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_program_texel_offset_get* = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.integers.max_samples_get* = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.integers.min_program_texel_offset_get* = FAIL 2950 VULKAN : dEQP-GLES3.functional.state_query.integers.min_program_texel_offset_get* = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.integers64.max_combined_fragment_uniform_components_get* = FAIL 2950 VULKAN : dEQP-GLES3.functional.state_query.integers64.max_combined_fragment_uniform_components_get* = FAIL
// Misc failures: // Misc failures:
2950 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_elements_incomplete_primitive = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_color_encoding = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.rbo.renderbuffer_internal_format = FAIL
2950 VULKAN : dEQP-GLES3.functional.state_query.rbo.renderbuffer_component_size_color = FAIL
2950 VULKAN : dEQP-GLES3.functional.lifetime.* = SKIP 2950 VULKAN : dEQP-GLES3.functional.lifetime.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.clipping.line.line_clip_viewport_center = FAIL 2950 VULKAN : dEQP-GLES3.functional.clipping.line.line_clip_viewport_center = FAIL
2950 VULKAN : dEQP-GLES3.functional.clipping.line.line_clip_viewport_corner = FAIL 2950 VULKAN : dEQP-GLES3.functional.clipping.line.line_clip_viewport_corner = FAIL
...@@ -695,22 +694,13 @@ ...@@ -695,22 +694,13 @@
2950 VULKAN : dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner = FAIL 2950 VULKAN : dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
2950 VULKAN : dEQP-GLES3.functional.clipping.point.point_clip_viewport_center = FAIL 2950 VULKAN : dEQP-GLES3.functional.clipping.point.point_clip_viewport_center = FAIL
2950 VULKAN : dEQP-GLES3.functional.clipping.point.point_clip_viewport_corner = FAIL 2950 VULKAN : dEQP-GLES3.functional.clipping.point.point_clip_viewport_corner = FAIL
2672 VULKAN : dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop.* = SKIP
2672 VULKAN : dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop.* = SKIP
2672 VULKAN : dEQP-GLES3.functional.draw.random.* = SKIP
// Failures on newer NVIDIA drivers (411.95) and passes on older drivers (388.16). Passes on 418.12 on Linux. // Failures on newer NVIDIA drivers (411.95) and passes on older drivers (388.16). Passes on 418.12 on Linux.
2976 VULKAN NVIDIA : dEQP-GLES3.functional.shaders.invariance.* = FAIL 2976 VULKAN NVIDIA : dEQP-GLES3.functional.shaders.invariance.* = FAIL
// To be triaged: // To be triaged:
2950 VULKAN : dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.fragment_ops.random.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.samplers.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.instanced.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.rasterizer_discard.* = SKIP 2950 VULKAN : dEQP-GLES3.functional.rasterizer_discard.* = SKIP
2950 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_element* = SKIP 2950 VULKAN : dEQP-GLES3.functional.negative_api.vertex_array.draw_element* = SKIP
2950 VULKAN : dEQP-GLES3.functional.negative_api.state.get_active_unifor* = SKIP
2950 VULKAN : dEQP-GLES3.functional.negative_api.state.get_active_attrib = SKIP
// Android Vulkan failures // Android Vulkan failures
2950 ANDROID VULKAN : dEQP-GLES3.functional.implementation_limits.max_combined_texture_image_units = FAIL 2950 ANDROID VULKAN : dEQP-GLES3.functional.implementation_limits.max_combined_texture_image_units = FAIL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment