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
"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, "
"which prevents OES_depth_texture from being supported.",
&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;
......
......@@ -194,33 +194,61 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py":
"3089dcc7ffff60a8803595fd44278f6e",
"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":
"8c853bb076d55b2e1094dd4b29014626",
"399562c957c0bc0ef14df973fe808b05",
"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":
"32fb163e85b7c61d1fb1b20c00d73d33",
"67e9f1fc766486fc5f534d8a1f04a854",
"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":
"5c9b2fea10b85f92d15de0300502b60c",
"06a0f46b8b205ba9bb5e7bb14404b5fa",
"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":
"37a43a2caaac3290d34c12dc49a6c9cf",
"b2ae64586829e505a2dbcf8fb7a1c50b",
"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":
"954cad0e948e0dcf49cd0a7bb0a12093",
"7b3743cc4bc2c6feb0b203a74db5d501",
"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":
"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":
"c6306a1ba9936d5de5e3b0c5f7453c2c",
"ca23e2bc39df49c395f04d0309f8716e",
"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":
"df5fdc47f0950e3eae3d9491e9c84af7",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc":
......@@ -366,9 +394,9 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc":
"6a2e5e10e686370f3350a96cda2441a0",
"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":
"bfa9fc38b63aa9c9127f0c4a0fd2ae05",
"3080e264f932ce3a219bb63c79b86636",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp":
"0c8c050841543da0d7faca2559212aa8",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp":
......@@ -382,9 +410,9 @@
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag":
"20c83ade1efb48a802dc34ca838a2be6",
"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":
"d16caa0d290c34f0a8bf5d95d7220e8b",
"fcece480c12c03e7107b5cfc58584638",
"Vulkan internal shader programs:tools/glslang/glslang_validator.exe.sha1":
"9f1f0fc61116a657e065c40f9296e5ab",
"Vulkan internal shader programs:tools/glslang/glslang_validator.sha1":
......
......@@ -3557,6 +3557,11 @@ void Context::blitFramebuffer(GLint srcX0,
Rectangle srcArea(srcX0, srcY0, srcX1 - srcX0, srcY1 - srcY0);
Rectangle dstArea(dstX0, dstY0, dstX1 - dstX0, dstY1 - dstY0);
if (dstArea.width == 0 || dstArea.height == 0)
{
return;
}
ANGLE_CONTEXT_TRY(syncStateForBlit());
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)
}
}
Rectangle Rectangle::removeReversal() const
Rectangle Rectangle::flip(bool flipX, bool flipY) const
{
Rectangle unreversed = *this;
if (isReversedX())
Rectangle flipped = *this;
if (flipX)
{
unreversed.x = unreversed.x + unreversed.width;
unreversed.width = -unreversed.width;
flipped.x = flipped.x + flipped.width;
flipped.width = -flipped.width;
}
if (isReversedY())
if (flipY)
{
unreversed.y = unreversed.y + unreversed.height;
unreversed.height = -unreversed.height;
flipped.y = flipped.y + flipped.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
......
......@@ -45,6 +45,9 @@ struct Rectangle
bool isReversedX() const { return width < 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.
Rectangle removeReversal() const;
......
......@@ -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'.
angle::Result blitWithCommand(ContextVk *contextVk,
const gl::Rectangle &readRectIn,
const gl::Rectangle &drawRectIn,
const gl::Rectangle &sourceArea,
const gl::Rectangle &destArea,
RenderTargetVk *readRenderTarget,
RenderTargetVk *drawRenderTarget,
GLenum filter,
bool colorBlit,
bool depthBlit,
bool stencilBlit,
bool flipSource,
bool flipDest);
// Note that 'copyArea' must be clipped to the scissor and FBO. The clipping is done in 'blit'.
angle::Result blitWithCopy(ContextVk *contextVk,
const gl::Rectangle &copyArea,
RenderTargetVk *readRenderTarget,
RenderTargetVk *drawRenderTarget,
bool blitDepthBuffer,
bool blitStencilBuffer);
angle::Result blitWithReadback(ContextVk *contextVk,
const gl::Rectangle &copyArea,
VkImageAspectFlagBits aspect,
RenderTargetVk *readRenderTarget,
RenderTargetVk *drawRenderTarget);
bool flipX,
bool flipY);
// Resolve color with vkCmdResolveImage
angle::Result resolveColorWithCommand(ContextVk *contextVk,
const UtilsVk::BlitResolveParameters &params,
vk::ImageHelper *srcImage);
angle::Result getFramebuffer(ContextVk *contextVk, vk::Framebuffer **framebufferOut);
......@@ -189,20 +180,6 @@ class FramebufferVk : public FramebufferImpl
void updateRenderPassDesc();
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;
vk::RenderPassDesc mRenderPassDesc;
......
......@@ -1225,6 +1225,11 @@ void RendererVk::initFeatures(const ExtensionNameList &deviceExtensionNames)
{
mFeatures.forceD16TexFilter.enabled = true;
}
if (IsAndroid() && IsQualcomm(mPhysicalDeviceProperties.vendorID))
{
mFeatures.disableFlippingBlitWithCommand.enabled = true;
}
}
void RendererVk::initPipelineCacheVkKey()
......
......@@ -79,9 +79,9 @@ VkPresentModeKHR GetDesiredPresentMode(const std::vector<VkPresentModeKHR> &pres
}
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 =
kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
constexpr VkImageUsageFlags kSurfaceVKDepthStencilImageUsageFlags =
kSurfaceVKImageUsageFlags | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
......
......@@ -15,10 +15,10 @@
// unsupported formats to their fallbacks.
// - Image clear: Used by FramebufferVk::clearWithDraw().
// - Image copy: Used by TextureVk::copySubImageImplWithDraw().
// - Color resolve: Used by FramebufferVk::resolve() to implement multisample resolve on color
// images.
// - Depth/Stencil resolve: Used by FramebufferVk::resolve() to implement multisample resolve on
// depth/stencil images.
// - Color blit/resolve: Used by FramebufferVk::blit() to implement blit or multisample resolve
// on color images.
// - Depth/Stencil blit/resolve: Used by FramebufferVk::blit() to implement blit or multisample
// resolve on depth/stencil images.
// - Mipmap generation: Not yet implemented
//
......@@ -86,14 +86,19 @@ class UtilsVk : angle::NonCopyable
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 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];
// |resolveArea| defines the actual scissored region that will participate in resolve.
gl::Rectangle resolveArea;
// |blitArea| is the area in destination where blit happens. It's expected that scissor
// and source clipping effects have already been applied to it.
gl::Rectangle blitArea;
int srcLayer;
// Whether linear or point sampling should be used.
bool linear;
bool flipX;
bool flipY;
};
......@@ -127,6 +132,8 @@ class UtilsVk : angle::NonCopyable
angle::Result clearFramebuffer(ContextVk *contextVk,
FramebufferVk *framebuffer,
const ClearFramebufferParameters &params);
// Resolve images if multisampled. Blit otherwise.
angle::Result colorBlitResolve(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
......@@ -152,6 +159,8 @@ class UtilsVk : angle::NonCopyable
const CopyImageParameters &params);
private:
ANGLE_ENABLE_STRUCT_PADDING_WARNINGS
struct BufferUtilsShaderParams
{
// Structure matching PushConstants in BufferUtils.comp
......@@ -212,32 +221,42 @@ class UtilsVk : angle::NonCopyable
uint32_t destDefaultChannelsMask = 0;
};
union BlitResolveOffset
{
int32_t resolve[2];
float blit[2];
};
struct BlitResolveShaderParams
{
// Structure matching PushConstants in BlitResolve.frag
int32_t srcExtent[2] = {};
int32_t srcOffset[2] = {};
int32_t destOffset[2] = {};
int32_t srcLayer = 0;
int32_t samples = 0;
float invSamples = 0;
uint32_t outputMask = 0;
uint32_t flipX = 0;
uint32_t flipY = 0;
BlitResolveOffset offset = {};
float stretch[2] = {};
float invSrcExtent[2] = {};
int32_t srcLayer = 0;
int32_t samples = 0;
float invSamples = 0;
uint32_t outputMask = 0;
uint32_t flipX = 0;
uint32_t flipY = 0;
};
struct BlitResolveStencilNoExportShaderParams
{
// Structure matching PushConstants in BlitResolveStencilNoExport.comp
int32_t srcExtent[2] = {};
int32_t srcOffset[2] = {};
int32_t srcLayer = 0;
int32_t destPitch = 0;
int32_t destExtent[2] = {};
uint32_t flipX = 0;
uint32_t flipY = 0;
BlitResolveOffset offset = {};
float stretch[2] = {};
float invSrcExtent[2] = {};
int32_t srcLayer = 0;
int32_t srcWidth = 0;
int32_t blitArea[4] = {};
int32_t destPitch = 0;
uint32_t flipX = 0;
uint32_t flipY = 0;
};
ANGLE_DISABLE_STRUCT_PADDING_WARNINGS
// Functions implemented by the class:
enum class Function
{
......@@ -294,6 +313,8 @@ class UtilsVk : angle::NonCopyable
angle::Result ensureBlitResolveResourcesInitialized(ContextVk *contextVk);
angle::Result ensureBlitResolveStencilNoExportResourcesInitialized(ContextVk *contextVk);
angle::Result ensureBlitResolveSamplersInitialized(ContextVk *context);
angle::Result startRenderPass(ContextVk *contextVk,
vk::ImageHelper *image,
const vk::ImageView *imageView,
......@@ -301,7 +322,7 @@ class UtilsVk : angle::NonCopyable
const gl::Rectangle &renderArea,
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,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
......@@ -342,6 +363,9 @@ class UtilsVk : angle::NonCopyable
vk::InternalShader::BlitResolve_frag::kBlitMask];
vk::ShaderProgramHelper mBlitResolveStencilNoExportPrograms
[vk::InternalShader::BlitResolveStencilNoExport_comp::kFlagsMask];
vk::Sampler mPointSampler;
vk::Sampler mLinearSampler;
};
} // 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 @@
// Use of this source code is governed by a BSD-style license that can be
// 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
......@@ -47,10 +47,12 @@
#endif
#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
#if IsResolve
#extension GL_EXT_samplerless_texture_functions : require
#endif
#if IsBlitStencil
#extension GL_ARB_shader_stencil_export : require
#endif
......@@ -60,6 +62,9 @@
#define DEPTH_SRC_RESOURCE(type) type
#define STENCIL_SRC_RESOURCE(type) MAKE_SRC_RESOURCE(u, type)
#if IsResolve
#define CoordType ivec2
#if SrcIsArray
#define SRC_RESOURCE_NAME texture2DMSArray
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, ivec3(coord, params.srcLayer), sample)
......@@ -68,12 +73,34 @@
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, coord, sample)
#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 {
// Robust access.
ivec2 srcExtent;
// Translation from source to destination coordinates.
ivec2 srcOffset;
ivec2 destOffset;
CoordType offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int samples;
float invSamples;
......@@ -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;
#endif
#if !IsResolve
layout(set = 0, binding = 2) uniform sampler blitSampler;
#endif
void main()
{
ivec2 destSubImageCoords = ivec2(gl_FragCoord.xy) - params.destOffset;
ivec2 srcSubImageCoords = destSubImageCoords;
// 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:
//
// 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
// simply reverse the direction in which x/y grows.
// If flipping, negate the coordinates.
if (params.flipX)
srcSubImageCoords.x = -srcSubImageCoords.x;
srcImageCoords.x = -srcImageCoords.x;
if (params.flipY)
srcSubImageCoords.y = -srcSubImageCoords.y;
ivec2 srcImageCoords = params.srcOffset + srcSubImageCoords;
bool isWithinSrcBounds = any(lessThanEqual(ivec2(0), srcImageCoords)) &&
any(lessThan(srcImageCoords, params.srcExtent));
srcImageCoords.y = -srcImageCoords.y;
#if IsBlitColor
#if IsResolve
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 += TEXEL_FETCH(color, srcImageCoords, i);
}
colorValue += COLOR_TEXEL_FETCH(color, srcImageCoords, i);
}
#if IsFloat
colorValue *= params.invSamples;
colorValue *= params.invSamples;
#else
colorValue = ColorType(round(colorValue * params.invSamples));
colorValue = ColorType(round(colorValue * params.invSamples));
#endif
#else
ColorType colorValue = COLOR_TEXEL_FETCH(color, srcImageCoords, 0);
#endif
}
// Note: not exporting to render targets that are not present optimizes the number of export
// instructions, which would have otherwise been a likely bottleneck.
......@@ -176,23 +239,10 @@ void main()
// to resolve depth/stencil images.
#if IsBlitDepth
float depthValue = 0;
if (isWithinSrcBounds)
{
depthValue = TEXEL_FETCH(depth, srcImageCoords, 0).x;
}
gl_FragDepth = depthValue;
gl_FragDepth = DEPTH_TEXEL_FETCH(depth, srcImageCoords, 0).x;
#endif // IsBlitDepth
#if IsBlitStencil
uint stencilValue = 0;
if (isWithinSrcBounds)
{
stencilValue = TEXEL_FETCH(stencil, srcImageCoords, 0).x;
}
gl_FragStencilRefARB = int(stencilValue);
gl_FragStencilRefARB = int(STENCIL_TEXEL_FETCH(stencil, srcImageCoords, 0).x);
#endif // IsBlitStencil
}
......@@ -7,7 +7,8 @@
"BlitResolve.frag.json: Build parameters for BlitResolve.frag."
],
"Flags": [
"SrcIsArray"
"SrcIsArray",
"IsResolve"
],
"Blit": [
"BlitColorFloat",
......
......@@ -3,98 +3,123 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// BlitResolveStencilNoExport.comp: Resolve multisampled stencil images into a buffer. This is used
// where VK_EXT_shader_stencil_export is not available, to output the resolved stencil into a
// temporary buffer, which is then copied into the stencil aspect of the final image.
// BlitResolveStencilNoExport.comp: Blit stencil images or resolve multisampled ones into a buffer.
// This is used where VK_EXT_shader_stencil_export is not available, to output the resolved stencil
// into a temporary buffer, which is then copied into the stencil aspect of the final image.
#version 450 core
#if IsResolve
#extension GL_EXT_samplerless_texture_functions : require
#endif
#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
#define SRC_RESOURCE_NAME texture2DMSArray
#define SRC_RESOURCE utexture2DMSArray
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, ivec3(coord, params.srcLayer), sample)
#else
#define SRC_RESOURCE_NAME texture2DMS
#define SRC_RESOURCE utexture2DMS
#define TEXEL_FETCH(src, coord, sample) texelFetch(src, coord, sample)
#endif
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
#else
layout (set = 0, binding = 0) buffer dest
{
// Note: every invocation handles 4 stencil value and output one value here.
uint destData[];
};
#define CoordType vec2
#if SrcIsArray
#define SRC_RESOURCE utexture2DArray
#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 {
// Robust access.
ivec2 srcExtent;
// Translation from source to destination coordinates.
ivec2 srcOffset;
CoordType offset;
vec2 stretch;
vec2 invSrcExtent;
int srcLayer;
int srcWidth;
// Output.
ivec4 blitArea;
int destPitch;
ivec2 destExtent;
// Flip control.
bool flipX;
bool flipY;
} 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()
{
ivec2 destSubImageCoords = ivec2(gl_GlobalInvocationID.x * 4, gl_GlobalInvocationID.y);
if (any(lessThanEqual(params.destExtent, destSubImageCoords)))
if (any(lessThanEqual(params.blitArea.zw, destSubImageCoords)))
{
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
// simply reverse the direction in which x/y grows.
// If flipping, negate the coordinates.
if (params.flipX)
srcSubImageCoords.x = -srcSubImageCoords.x;
srcImageCoords.x = -srcImageCoords.x;
if (params.flipY)
srcSubImageCoords.y = -srcSubImageCoords.y;
ivec2 srcImageCoords = params.srcOffset + srcSubImageCoords;
srcImageCoords.y = -srcImageCoords.y;
int xDir = params.flipX ? -1 : 1;
uint outStencils = 0;
// Bounds check on Y:
if (srcImageCoords.y >= 0 && srcImageCoords.y < params.srcExtent.y)
for (int i = 0; i < 4; ++i)
{
for (int i = 0; i < 4; ++i)
// Bounds check on X:
if (srcImageCoords.x >= 0 && srcImageCoords.x < params.srcWidth)
{
// Bounds check on X:
uint stencilValue = 0;
if (srcImageCoords.x >= 0 && srcImageCoords.x < params.srcExtent.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
// Note: always resolve using sample 0. GLES3 gives us freedom in choosing how
// to resolve depth/stencil images.
uint stencilValue = TEXEL_FETCH(stencil, srcImageCoords, 0).x;
#if IsBigEndian
outStencils |= (stencilValue & 0xFF) << ((3 - i) * 8);
outStencils |= (stencilValue & 0xFF) << ((3 - i) * 8);
#else
outStencils |= (stencilValue & 0xFF) << (i * 8);
outStencils |= (stencilValue & 0xFF) << (i * 8);
#endif
}
srcImageCoords.x += xDir;
}
srcImageCoords.x += xDir;
}
destData[gl_GlobalInvocationID.y * params.destPitch + gl_GlobalInvocationID.x] = outStencils;
......
......@@ -7,6 +7,7 @@
"BlitResolveStencilNoExport.frag.comp: Build parameters for BlitResolveStencilNoExport.comp."
],
"Flags": [
"SrcIsArray"
"SrcIsArray",
"IsResolve"
]
}
......@@ -171,7 +171,7 @@ constexpr angle::PackedEnumMap<ImageLayout, ImageMemoryBarrierData> kImageMemory
ImageLayout::DepthStencilAttachment,
{
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,
// Transition to: all reads and writes must happen after barrier.
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
......
......@@ -28,8 +28,22 @@ namespace
#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.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.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.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000002.inc"
......@@ -123,10 +137,24 @@ constexpr ShaderBlob kBlitResolve_frag_shaders[] = {
{kBlitResolve_frag_00000009, sizeof(kBlitResolve_frag_00000009)},
{kBlitResolve_frag_0000000A, sizeof(kBlitResolve_frag_0000000A)},
{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[] = {
{kBlitResolveStencilNoExport_comp_00000000, sizeof(kBlitResolveStencilNoExport_comp_00000000)},
{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[] = {
{kBufferUtils_comp_00000000, sizeof(kBufferUtils_comp_00000000)},
......
......@@ -21,8 +21,22 @@ angle_vulkan_internal_shaders = [
"shaders/gen/BlitResolve.frag.00000009.inc",
"shaders/gen/BlitResolve.frag.0000000A.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.00000001.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc",
"shaders/gen/BufferUtils.comp.00000000.inc",
"shaders/gen/BufferUtils.comp.00000001.inc",
"shaders/gen/BufferUtils.comp.00000002.inc",
......
......@@ -24,17 +24,18 @@ namespace BlitResolve_frag
enum flags
{
kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001,
kIsResolve = 0x00000002,
kFlagsMask = 0x00000003,
};
enum Blit
{
kBlitColorFloat = 0x00000000,
kBlitColorInt = 0x00000002,
kBlitColorUint = 0x00000004,
kBlitDepth = 0x00000006,
kBlitStencil = 0x00000008,
kBlitDepthStencil = 0x0000000A,
kBlitMask = 0x0000000E,
kBlitColorInt = 0x00000004,
kBlitColorUint = 0x00000008,
kBlitDepth = 0x0000000C,
kBlitStencil = 0x00000010,
kBlitDepthStencil = 0x00000014,
kBlitMask = 0x0000001C,
};
} // namespace BlitResolve_frag
......@@ -43,7 +44,8 @@ namespace BlitResolveStencilNoExport_comp
enum flags
{
kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001,
kIsResolve = 0x00000002,
kFlagsMask = 0x00000003,
};
} // namespace BlitResolveStencilNoExport_comp
......
......@@ -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_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:
3194 VULKAN : dEQP-GLES3.functional.buffer.copy.* = SKIP
......@@ -620,6 +615,7 @@
// Vertex ID, Index ID
3221 VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.vertex_id = FAIL
3221 VULKAN : dEQP-GLES3.functional.instanced.* = SKIP
// Polygon offset:
2950 VULKAN : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL
......@@ -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_incomplete_primitive = FAIL
// Flat shading
// Flat shading:
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.struct.u* = 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:
// - FramebufferVk::invalidate*:
......@@ -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_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_samples_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
// 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.clipping.line.line_clip_viewport_center = FAIL
2950 VULKAN : dEQP-GLES3.functional.clipping.line.line_clip_viewport_corner = FAIL
......@@ -695,22 +694,13 @@
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_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.
2976 VULKAN NVIDIA : dEQP-GLES3.functional.shaders.invariance.* = FAIL
// 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.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
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