Vulkan: Shader path for texture-to-texture copy
This change implements glCopy[Sub]TextureCHROMIUM in GPU. As with the
previous change implementing glCopyTex[Sub]Image2D, it currently only
selects the shader path if the texture is already defined.
Bug: angleproject:2958
Change-Id: Ia1b5625f92e6c9f91807c9b601e5c34d2d5e5c30
Reviewed-on: https://chromium-review.googlesource.com/c/1392394
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index 5260dbb..e88b2bb 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -825,6 +825,9 @@
#ifdef ANGLE_PLATFORM_WINDOWS
// http://anglebug.com/2838
mFeatures.extraCopyBufferRegion = IsIntel(mPhysicalDeviceProperties.vendorID);
+
+ // http://anglebug.com/3055
+ mFeatures.forceCpuPathForCubeMapCopy = IsIntel(mPhysicalDeviceProperties.vendorID);
#endif
angle::PlatformMethods *platform = ANGLEPlatformCurrent();
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.cpp b/src/libANGLE/renderer/vulkan/TextureVk.cpp
index c78a2dc..36422e4 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -27,6 +27,16 @@
constexpr VkFormatFeatureFlags kBlitFeatureFlags =
VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT;
+
+bool CanCopyWithDraw(RendererVk *renderer,
+ const vk::Format &srcFormat,
+ const vk::Format &destFormat)
+{
+ return renderer->hasTextureFormatFeatureBits(srcFormat.vkTextureFormat,
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) &&
+ renderer->hasTextureFormatFeatureBits(destFormat.vkTextureFormat,
+ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT);
+}
} // anonymous namespace
// StagingStorage implementation.
@@ -575,21 +585,25 @@
const vk::Format &destFormat = renderer->getFormat(internalFormat.sizedInternalFormat);
// TODO(syoussefi): Support draw path for when !mImage.valid(). http://anglebug.com/2958
- bool canDraw = mImage.valid() &&
- renderer->hasTextureFormatFeatureBits(srcFormat.vkTextureFormat,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) &&
- renderer->hasTextureFormatFeatureBits(destFormat.vkTextureFormat,
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT);
+ bool canDraw = mImage.valid() && CanCopyWithDraw(renderer, srcFormat, destFormat);
+ bool forceCpuPath =
+ mImage.getLayerCount() > 1 && renderer->getFeatures().forceCpuPathForCubeMapCopy;
// If it's possible to perform the copy with a draw call, do that.
- if (canDraw)
+ if (canDraw && !forceCpuPath)
{
- ANGLE_TRY(ensureImageInitialized(contextVk));
+ RenderTargetVk *colorReadRT = framebufferVk->getColorReadRenderTarget();
+ bool isViewportFlipY = contextVk->isViewportFlipEnabledForDrawFBO();
- return copySubImageImplWithDraw(contextVk, index, modifiedDestOffset,
- gl::Offset(clippedSourceArea.x, clippedSourceArea.y, 0),
- gl::Extents(destArea.width, destArea.height, 1),
- framebufferVk);
+ // Layer count can only be 1 as the source is a framebuffer.
+ ASSERT(index.getLayerCount() == 1);
+
+ ANGLE_TRY(copySubImageImplWithDraw(
+ contextVk, index, modifiedDestOffset, 0, clippedSourceArea, isViewportFlipY, false,
+ false, false, &colorReadRT->getImage(), colorReadRT->getReadImageView()));
+
+ framebufferVk->getFramebuffer()->addReadDependency(&mImage);
+ return angle::Result::Continue;
}
// Do a CPU readback that does the conversion, and then stage the change to the pixel buffer.
@@ -603,51 +617,6 @@
return angle::Result::Continue;
}
-angle::Result TextureVk::copySubImageImplWithDraw(ContextVk *contextVk,
- const gl::ImageIndex &index,
- const gl::Offset &destOffset,
- const gl::Offset &srcOffset,
- const gl::Extents &extents,
- FramebufferVk *source)
-{
- UtilsVk::CopyImageParameters params;
- params.srcOffset[0] = srcOffset.x;
- params.srcOffset[1] = srcOffset.y;
- params.srcExtents[0] = extents.width;
- params.srcExtents[1] = extents.height;
- params.destOffset[0] = destOffset.x;
- params.destOffset[1] = destOffset.y;
- params.srcMip = 0;
- params.srcHeight = source->getReadImageExtents().height;
- params.flipY = contextVk->isViewportFlipEnabledForDrawFBO();
-
- uint32_t level = index.getLevelIndex();
- uint32_t baseLayer = index.hasLayer() ? index.getLayerIndex() : 0;
- uint32_t layerCount = index.getLayerCount();
-
- // TODO(syoussefi): currently this is only called from copy[Sub]Image,
- // where layer count can only be 1, and source's level and layer are both 0.
- // Once this code is expanded to cover copy[Sub]Texture, it should be
- // adapted to get single-layer/level image views of the source as well.
- // http://anglebug.com/2958
- ASSERT(layerCount == 1);
- vk::ImageHelper *srcImage = &source->getColorReadRenderTarget()->getImage();
- vk::ImageView *srcView = source->getColorReadRenderTarget()->getReadImageView();
-
- for (uint32_t i = 0; i < layerCount; ++i)
- {
- vk::ImageView *destView;
- ANGLE_TRY(getLayerLevelDrawImageView(contextVk, baseLayer + i, level, &destView));
-
- ANGLE_TRY(contextVk->getRenderer()->getUtils().copyImage(contextVk, &mImage, destView,
- srcImage, srcView, params));
- }
-
- source->getFramebuffer()->addReadDependency(&mImage);
-
- return angle::Result::Continue;
-}
-
angle::Result TextureVk::copySubTextureImpl(ContextVk *contextVk,
const gl::ImageIndex &index,
const gl::Offset &destOffset,
@@ -661,6 +630,28 @@
{
RendererVk *renderer = contextVk->getRenderer();
+ ANGLE_TRY(source->ensureImageInitialized(contextVk));
+
+ const vk::Format &sourceVkFormat = source->getImage().getFormat();
+ const vk::Format &destVkFormat = renderer->getFormat(destFormat.sizedInternalFormat);
+
+ // TODO(syoussefi): Support draw path for when !mImage.valid(). http://anglebug.com/2958
+ bool canDraw = mImage.valid() && CanCopyWithDraw(renderer, sourceVkFormat, destVkFormat);
+ bool forceCpuPath =
+ mImage.getLayerCount() > 1 && renderer->getFeatures().forceCpuPathForCubeMapCopy;
+
+ // If it's possible to perform the copy with a draw call, do that.
+ if (canDraw && !forceCpuPath)
+ {
+ ANGLE_TRY(copySubImageImplWithDraw(contextVk, index, destOffset, sourceLevel, sourceArea,
+ false, unpackFlipY, unpackPremultiplyAlpha,
+ unpackUnmultiplyAlpha, &source->getImage(),
+ &source->getReadImageView()));
+
+ source->getImage().addReadDependency(&mImage);
+ return angle::Result::Continue;
+ }
+
if (sourceLevel != 0)
{
WARN() << "glCopyTextureCHROMIUM with sourceLevel != 0 not implemented.";
@@ -671,9 +662,6 @@
uint8_t *sourceData = nullptr;
ANGLE_TRY(source->copyImageDataToBuffer(contextVk, sourceLevel, 1, sourceArea, &sourceData));
- const vk::Format &sourceVkFormat = source->getImage().getFormat();
- const vk::Format &destVkFormat = renderer->getFormat(destFormat.sizedInternalFormat);
-
const angle::Format &sourceTextureFormat = sourceVkFormat.textureFormat();
const angle::Format &destTextureFormat = destVkFormat.textureFormat();
size_t destinationAllocationSize =
@@ -716,6 +704,53 @@
return angle::Result::Continue;
}
+angle::Result TextureVk::copySubImageImplWithDraw(ContextVk *contextVk,
+ const gl::ImageIndex &index,
+ const gl::Offset &destOffset,
+ size_t sourceLevel,
+ const gl::Rectangle &sourceArea,
+ bool isSrcFlipY,
+ bool unpackFlipY,
+ bool unpackPremultiplyAlpha,
+ bool unpackUnmultiplyAlpha,
+ vk::ImageHelper *srcImage,
+ const vk::ImageView *srcView)
+{
+ ANGLE_TRY(ensureImageInitialized(contextVk));
+
+ UtilsVk &utilsVk = contextVk->getRenderer()->getUtils();
+
+ UtilsVk::CopyImageParameters params;
+ params.srcOffset[0] = sourceArea.x;
+ params.srcOffset[1] = sourceArea.y;
+ params.srcExtents[0] = sourceArea.width;
+ params.srcExtents[1] = sourceArea.height;
+ params.destOffset[0] = destOffset.x;
+ params.destOffset[1] = destOffset.y;
+ params.srcMip = sourceLevel;
+ params.srcHeight = srcImage->getExtents().height;
+ params.srcPremultiplyAlpha = unpackPremultiplyAlpha && !unpackUnmultiplyAlpha;
+ params.srcUnmultiplyAlpha = unpackUnmultiplyAlpha && !unpackPremultiplyAlpha;
+ params.srcFlipY = isSrcFlipY;
+ params.destFlipY = unpackFlipY;
+
+ uint32_t level = index.getLevelIndex();
+ uint32_t baseLayer = index.hasLayer() ? index.getLayerIndex() : 0;
+ uint32_t layerCount = index.getLayerCount();
+
+ for (uint32_t layerIndex = 0; layerIndex < layerCount; ++layerIndex)
+ {
+ params.srcLayer = layerIndex;
+
+ vk::ImageView *destView;
+ ANGLE_TRY(getLayerLevelDrawImageView(contextVk, baseLayer + layerIndex, level, &destView));
+
+ ANGLE_TRY(utilsVk.copyImage(contextVk, &mImage, destView, srcImage, srcView, params));
+ }
+
+ return angle::Result::Continue;
+}
+
angle::Result TextureVk::setStorage(const gl::Context *context,
gl::TextureType type,
size_t levels,
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.h b/src/libANGLE/renderer/vulkan/TextureVk.h
index 22a06b0..8fd1315 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.h
+++ b/src/libANGLE/renderer/vulkan/TextureVk.h
@@ -244,13 +244,6 @@
const gl::InternalFormat &internalFormat,
gl::Framebuffer *source);
- angle::Result copySubImageImplWithDraw(ContextVk *contextVk,
- const gl::ImageIndex &index,
- const gl::Offset &destOffset,
- const gl::Offset &srcOffset,
- const gl::Extents &extents,
- FramebufferVk *source);
-
angle::Result copySubTextureImpl(ContextVk *contextVk,
const gl::ImageIndex &index,
const gl::Offset &destOffset,
@@ -262,6 +255,18 @@
bool unpackUnmultiplyAlpha,
TextureVk *source);
+ angle::Result copySubImageImplWithDraw(ContextVk *contextVk,
+ const gl::ImageIndex &index,
+ const gl::Offset &destOffset,
+ size_t sourceLevel,
+ const gl::Rectangle &sourceArea,
+ bool isSrcFlipY,
+ bool unpackFlipY,
+ bool unpackPremultiplyAlpha,
+ bool unpackUnmultiplyAlpha,
+ vk::ImageHelper *srcImage,
+ const vk::ImageView *srcView);
+
angle::Result initImage(ContextVk *contextVk,
const vk::Format &format,
const gl::Extents &extents,
diff --git a/src/libANGLE/renderer/vulkan/UtilsVk.cpp b/src/libANGLE/renderer/vulkan/UtilsVk.cpp
index 31168c3..5fae062 100644
--- a/src/libANGLE/renderer/vulkan/UtilsVk.cpp
+++ b/src/libANGLE/renderer/vulkan/UtilsVk.cpp
@@ -133,6 +133,23 @@
return flags;
}
+
+uint32_t GetFormatDefaultChannelMask(const vk::Format &format)
+{
+ uint32_t mask = 0;
+
+ const angle::Format &angleFormat = format.angleFormat();
+ const angle::Format &textureFormat = format.textureFormat();
+
+ // Red can never be introduced due to format emulation (except for luma which is handled
+ // especially)
+ ASSERT(((angleFormat.redBits > 0) == (textureFormat.redBits > 0)) || angleFormat.isLUMA());
+ mask |= angleFormat.greenBits == 0 && textureFormat.greenBits > 0 ? 2 : 0;
+ mask |= angleFormat.blueBits == 0 && textureFormat.blueBits > 0 ? 4 : 0;
+ mask |= angleFormat.alphaBits == 0 && textureFormat.alphaBits > 0 ? 8 : 0;
+
+ return mask;
+}
} // namespace
UtilsVk::UtilsVk() = default;
@@ -547,7 +564,7 @@
angle::Result UtilsVk::startRenderPass(vk::Context *context,
vk::ImageHelper *image,
- vk::ImageView *imageView,
+ const vk::ImageView *imageView,
const vk::RenderPassDesc &renderPassDesc,
const gl::Rectangle &renderArea,
vk::CommandBuffer **commandBufferOut)
@@ -633,9 +650,9 @@
angle::Result UtilsVk::copyImage(vk::Context *context,
vk::ImageHelper *dest,
- vk::ImageView *destView,
+ const vk::ImageView *destView,
vk::ImageHelper *src,
- vk::ImageView *srcView,
+ const vk::ImageView *srcView,
const CopyImageParameters ¶ms)
{
RendererVk *renderer = context->getRenderer();
@@ -646,24 +663,36 @@
const vk::Format &destFormat = dest->getFormat();
ImageCopyShaderParams shaderParams;
- shaderParams.flipY = params.flipY;
+ shaderParams.flipY = params.srcFlipY || params.destFlipY;
+ shaderParams.premultiplyAlpha = params.srcPremultiplyAlpha;
+ shaderParams.unmultiplyAlpha = params.srcUnmultiplyAlpha;
shaderParams.destHasLuminance = destFormat.angleFormat().luminanceBits > 0;
shaderParams.destIsAlpha =
destFormat.angleFormat().isLUMA() && destFormat.angleFormat().alphaBits > 0;
- shaderParams.srcMip = params.srcMip;
- shaderParams.srcOffset[0] = params.srcOffset[0];
- shaderParams.srcOffset[1] = params.srcOffset[1];
- shaderParams.destOffset[0] = params.destOffset[0];
- shaderParams.destOffset[1] = params.destOffset[1];
+ shaderParams.destDefaultChannelsMask = GetFormatDefaultChannelMask(destFormat);
+ shaderParams.srcMip = params.srcMip;
+ shaderParams.srcLayer = params.srcLayer;
+ shaderParams.srcOffset[0] = params.srcOffset[0];
+ shaderParams.srcOffset[1] = params.srcOffset[1];
+ shaderParams.destOffset[0] = params.destOffset[0];
+ shaderParams.destOffset[1] = params.destOffset[1];
- if (params.flipY)
+ ASSERT(!(params.srcFlipY && params.destFlipY));
+ if (params.srcFlipY)
{
// If viewport is flipped, the shader expects srcOffset[1] to have the
// last row's index instead of the first's.
- shaderParams.srcOffset[1] = params.srcHeight - shaderParams.srcOffset[1] - 1;
+ shaderParams.srcOffset[1] = params.srcHeight - params.srcOffset[1] - 1;
+ }
+ else if (params.destFlipY)
+ {
+ // If image is flipped during copy, the shader uses the same code path as above,
+ // with srcOffset being set to the last row's index instead of the first's.
+ shaderParams.srcOffset[1] = params.srcOffset[1] + params.srcExtents[1] - 1;
}
uint32_t flags = GetImageCopyFlags(srcFormat, destFormat);
+ flags |= src->getLayerCount() > 1 ? ImageCopy_frag::kSrcIsArray : 0;
VkDescriptorSet descriptorSet;
vk::SharedDescriptorPoolBinding descriptorPoolBinding;
diff --git a/src/libANGLE/renderer/vulkan/UtilsVk.h b/src/libANGLE/renderer/vulkan/UtilsVk.h
index d748699..5e812fa 100644
--- a/src/libANGLE/renderer/vulkan/UtilsVk.h
+++ b/src/libANGLE/renderer/vulkan/UtilsVk.h
@@ -74,8 +74,12 @@
int srcExtents[2];
int destOffset[2];
int srcMip;
+ int srcLayer;
int srcHeight;
- bool flipY;
+ bool srcPremultiplyAlpha;
+ bool srcUnmultiplyAlpha;
+ bool srcFlipY;
+ bool destFlipY;
};
angle::Result clearBuffer(vk::Context *context,
@@ -99,9 +103,9 @@
angle::Result copyImage(vk::Context *context,
vk::ImageHelper *dest,
- vk::ImageView *destView,
+ const vk::ImageView *destView,
vk::ImageHelper *src,
- vk::ImageView *srcView,
+ const vk::ImageView *srcView,
const CopyImageParameters ¶ms);
private:
@@ -141,12 +145,16 @@
struct ImageCopyShaderParams
{
// Structure matching PushConstants in ImageCopy.frag
- uint32_t flipY = 0;
- uint32_t destHasLuminance = 0;
- uint32_t destIsAlpha = 0;
- int32_t srcMip = 0;
- int32_t srcOffset[2] = {};
- int32_t destOffset[2] = {};
+ int32_t srcOffset[2] = {};
+ int32_t destOffset[2] = {};
+ int32_t srcMip = 0;
+ int32_t srcLayer = 0;
+ uint32_t flipY = 0;
+ uint32_t premultiplyAlpha = 0;
+ uint32_t unmultiplyAlpha = 0;
+ uint32_t destHasLuminance = 0;
+ uint32_t destIsAlpha = 0;
+ uint32_t destDefaultChannelsMask = 0;
};
// Functions implemented by the class:
@@ -203,7 +211,7 @@
angle::Result startRenderPass(vk::Context *context,
vk::ImageHelper *image,
- vk::ImageView *imageView,
+ const vk::ImageView *imageView,
const vk::RenderPassDesc &renderPassDesc,
const gl::Rectangle &renderArea,
vk::CommandBuffer **commandBufferOut);
@@ -220,7 +228,8 @@
mConvertVertexPrograms[vk::InternalShader::ConvertVertex_comp::kFlagsMask |
vk::InternalShader::ConvertVertex_comp::kConversionMask];
vk::ShaderProgramHelper mImageClearProgram;
- vk::ShaderProgramHelper mImageCopyPrograms[vk::InternalShader::ImageCopy_frag::kSrcFormatMask |
+ vk::ShaderProgramHelper mImageCopyPrograms[vk::InternalShader::ImageCopy_frag::kFlagsMask |
+ vk::InternalShader::ImageCopy_frag::kSrcFormatMask |
vk::InternalShader::ImageCopy_frag::kDestFormatMask];
};
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc
index d841114..964ad0d 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc
@@ -1,83 +1,133 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000000[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005c,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x00000099,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000005a,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000097,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x0000003c,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x0000005a,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,0x00000000,
- 0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x0000005a,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,
- 0x00000007,0x0000000b,0x00090019,0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000000,
- 0x00000000,0x00000001,0x00000000,0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,
- 0x0000002f,0x00000030,0x00000000,0x0004002b,0x00000006,0x00000032,0x00000004,0x0004002b,
- 0x00000006,0x00000037,0x00000003,0x00040020,0x00000038,0x00000009,0x00000006,0x0004002b,
- 0x00000006,0x00000043,0x00000001,0x0004002b,0x00000006,0x0000004e,0x00000002,0x0004002b,
- 0x00000012,0x00000054,0x00000003,0x00040020,0x00000055,0x00000007,0x0000000a,0x00040020,
- 0x00000059,0x00000003,0x0000000b,0x0004003b,0x00000059,0x0000005a,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002c,
- 0x0000002d,0x00000007,0x0004003b,0x0000002c,0x0000003c,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002e,0x00000031,
- 0x00000030,0x00050041,0x00000017,0x00000033,0x00000015,0x00000032,0x0004003d,0x00000007,
- 0x00000034,0x00000033,0x0004003d,0x00000007,0x00000035,0x0000001b,0x00050080,0x00000007,
- 0x00000036,0x00000034,0x00000035,0x00050041,0x00000038,0x00000039,0x00000015,0x00000037,
- 0x0004003d,0x00000006,0x0000003a,0x00000039,0x0007005f,0x0000000b,0x0000003b,0x00000031,
- 0x00000036,0x00000002,0x0000003a,0x0003003e,0x0000002d,0x0000003b,0x0004003d,0x0000000b,
- 0x0000003d,0x0000002d,0x00050051,0x0000000a,0x0000003e,0x0000003d,0x00000000,0x00050051,
- 0x0000000a,0x0000003f,0x0000003d,0x00000001,0x00050051,0x0000000a,0x00000040,0x0000003d,
- 0x00000002,0x00050051,0x0000000a,0x00000041,0x0000003d,0x00000003,0x00070050,0x0000000b,
- 0x00000042,0x0000003e,0x0000003f,0x00000040,0x00000041,0x0003003e,0x0000003c,0x00000042,
- 0x00050041,0x0000001e,0x00000044,0x00000015,0x00000043,0x0004003d,0x00000012,0x00000045,
- 0x00000044,0x000500ab,0x00000021,0x00000046,0x00000045,0x00000022,0x000300f7,0x00000048,
- 0x00000000,0x000400fa,0x00000046,0x00000047,0x0000004d,0x000200f8,0x00000047,0x0004003d,
- 0x0000000b,0x00000049,0x0000003c,0x0007004f,0x0000000e,0x0000004a,0x00000049,0x00000049,
- 0x00000000,0x00000003,0x0004003d,0x0000000b,0x0000004b,0x0000003c,0x0009004f,0x0000000b,
- 0x0000004c,0x0000004b,0x0000004a,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,
- 0x0000003c,0x0000004c,0x000200f9,0x00000048,0x000200f8,0x0000004d,0x00050041,0x0000001e,
- 0x0000004f,0x00000015,0x0000004e,0x0004003d,0x00000012,0x00000050,0x0000004f,0x000500ab,
- 0x00000021,0x00000051,0x00000050,0x00000022,0x000300f7,0x00000053,0x00000000,0x000400fa,
- 0x00000051,0x00000052,0x00000053,0x000200f8,0x00000052,0x00050041,0x00000055,0x00000056,
- 0x0000003c,0x00000054,0x0004003d,0x0000000a,0x00000057,0x00000056,0x00050041,0x00000055,
- 0x00000058,0x0000003c,0x00000022,0x0003003e,0x00000058,0x00000057,0x000200f9,0x00000053,
- 0x000200f8,0x00000053,0x000200f9,0x00000048,0x000200f8,0x00000048,0x0004003d,0x0000000b,
- 0x0000005b,0x0000003c,0x0003003e,0x0000005a,0x0000005b,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x00000062,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007e,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000097,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,
+ 0x00000000,0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x00000097,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,0x00000007,0x0000000b,0x00090019,
+ 0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,
+ 0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,0x00000030,0x00000000,
+ 0x0004002b,0x00000006,0x00000032,0x00000000,0x0004002b,0x00000006,0x00000037,0x00000002,
+ 0x00040020,0x00000038,0x00000009,0x00000006,0x0004002b,0x00000006,0x0000003c,0x00000005,
+ 0x0004002b,0x00000012,0x00000042,0x00000003,0x00040020,0x00000043,0x00000007,0x0000000a,
+ 0x00040017,0x00000046,0x0000000a,0x00000003,0x0004002b,0x00000006,0x0000004d,0x00000006,
+ 0x0004002b,0x0000000a,0x00000055,0x00000000,0x0004002b,0x00000006,0x00000069,0x00000007,
+ 0x0004002b,0x00000006,0x00000074,0x00000008,0x0004002b,0x00000006,0x0000007f,0x00000009,
+ 0x0004002b,0x00000012,0x0000008d,0x00000002,0x0004002b,0x0000000a,0x00000094,0x3f800000,
+ 0x00040020,0x00000096,0x00000003,0x0000000b,0x0004003b,0x00000096,0x00000097,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002c,0x0000002d,0x00000007,0x0004003b,0x0000002c,0x00000062,0x00000007,0x0004003b,
+ 0x00000027,0x0000007e,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002e,0x00000031,0x00000030,0x00050041,0x00000017,
+ 0x00000033,0x00000015,0x00000032,0x0004003d,0x00000007,0x00000034,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x0000001b,0x00050080,0x00000007,0x00000036,0x00000034,0x00000035,
+ 0x00050041,0x00000038,0x00000039,0x00000015,0x00000037,0x0004003d,0x00000006,0x0000003a,
+ 0x00000039,0x0007005f,0x0000000b,0x0000003b,0x00000031,0x00000036,0x00000002,0x0000003a,
+ 0x0003003e,0x0000002d,0x0000003b,0x00050041,0x0000001e,0x0000003d,0x00000015,0x0000003c,
+ 0x0004003d,0x00000012,0x0000003e,0x0000003d,0x000500ab,0x00000021,0x0000003f,0x0000003e,
+ 0x00000022,0x000300f7,0x00000041,0x00000000,0x000400fa,0x0000003f,0x00000040,0x0000004c,
+ 0x000200f8,0x00000040,0x00050041,0x00000043,0x00000044,0x0000002d,0x00000042,0x0004003d,
+ 0x0000000a,0x00000045,0x00000044,0x0004003d,0x0000000b,0x00000047,0x0000002d,0x0008004f,
+ 0x00000046,0x00000048,0x00000047,0x00000047,0x00000000,0x00000001,0x00000002,0x0005008e,
+ 0x00000046,0x00000049,0x00000048,0x00000045,0x0004003d,0x0000000b,0x0000004a,0x0000002d,
+ 0x0009004f,0x0000000b,0x0000004b,0x0000004a,0x00000049,0x00000004,0x00000005,0x00000006,
+ 0x00000003,0x0003003e,0x0000002d,0x0000004b,0x000200f9,0x00000041,0x000200f8,0x0000004c,
+ 0x00050041,0x0000001e,0x0000004e,0x00000015,0x0000004d,0x0004003d,0x00000012,0x0000004f,
+ 0x0000004e,0x000500ab,0x00000021,0x00000050,0x0000004f,0x00000022,0x000300f7,0x00000052,
+ 0x00000000,0x000400fa,0x00000050,0x00000051,0x00000052,0x000200f8,0x00000051,0x00050041,
+ 0x00000043,0x00000053,0x0000002d,0x00000042,0x0004003d,0x0000000a,0x00000054,0x00000053,
+ 0x000500ba,0x00000021,0x00000056,0x00000054,0x00000055,0x000200f9,0x00000052,0x000200f8,
+ 0x00000052,0x000700f5,0x00000021,0x00000057,0x00000050,0x0000004c,0x00000056,0x00000051,
+ 0x000300f7,0x00000059,0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,0x000200f8,
+ 0x00000058,0x00050041,0x00000043,0x0000005a,0x0000002d,0x00000042,0x0004003d,0x0000000a,
+ 0x0000005b,0x0000005a,0x0004003d,0x0000000b,0x0000005c,0x0000002d,0x0008004f,0x00000046,
+ 0x0000005d,0x0000005c,0x0000005c,0x00000000,0x00000001,0x00000002,0x00060050,0x00000046,
+ 0x0000005e,0x0000005b,0x0000005b,0x0000005b,0x00050088,0x00000046,0x0000005f,0x0000005d,
+ 0x0000005e,0x0004003d,0x0000000b,0x00000060,0x0000002d,0x0009004f,0x0000000b,0x00000061,
+ 0x00000060,0x0000005f,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,
+ 0x00000061,0x000200f9,0x00000059,0x000200f8,0x00000059,0x000200f9,0x00000041,0x000200f8,
+ 0x00000041,0x0004003d,0x0000000b,0x00000063,0x0000002d,0x00050051,0x0000000a,0x00000064,
+ 0x00000063,0x00000000,0x00050051,0x0000000a,0x00000065,0x00000063,0x00000001,0x00050051,
+ 0x0000000a,0x00000066,0x00000063,0x00000002,0x00050051,0x0000000a,0x00000067,0x00000063,
+ 0x00000003,0x00070050,0x0000000b,0x00000068,0x00000064,0x00000065,0x00000066,0x00000067,
+ 0x0003003e,0x00000062,0x00000068,0x00050041,0x0000001e,0x0000006a,0x00000015,0x00000069,
+ 0x0004003d,0x00000012,0x0000006b,0x0000006a,0x000500ab,0x00000021,0x0000006c,0x0000006b,
+ 0x00000022,0x000300f7,0x0000006e,0x00000000,0x000400fa,0x0000006c,0x0000006d,0x00000073,
+ 0x000200f8,0x0000006d,0x0004003d,0x0000000b,0x0000006f,0x00000062,0x0007004f,0x0000000e,
+ 0x00000070,0x0000006f,0x0000006f,0x00000000,0x00000003,0x0004003d,0x0000000b,0x00000071,
+ 0x00000062,0x0009004f,0x0000000b,0x00000072,0x00000071,0x00000070,0x00000004,0x00000005,
+ 0x00000002,0x00000003,0x0003003e,0x00000062,0x00000072,0x000200f9,0x0000006e,0x000200f8,
+ 0x00000073,0x00050041,0x0000001e,0x00000075,0x00000015,0x00000074,0x0004003d,0x00000012,
+ 0x00000076,0x00000075,0x000500ab,0x00000021,0x00000077,0x00000076,0x00000022,0x000300f7,
+ 0x00000079,0x00000000,0x000400fa,0x00000077,0x00000078,0x0000007d,0x000200f8,0x00000078,
+ 0x00050041,0x00000043,0x0000007a,0x00000062,0x00000042,0x0004003d,0x0000000a,0x0000007b,
+ 0x0000007a,0x00050041,0x00000043,0x0000007c,0x00000062,0x00000022,0x0003003e,0x0000007c,
+ 0x0000007b,0x000200f9,0x00000079,0x000200f8,0x0000007d,0x00050041,0x00000038,0x00000080,
+ 0x00000015,0x0000007f,0x0004003d,0x00000006,0x00000081,0x00000080,0x0003003e,0x0000007e,
+ 0x00000081,0x0004003d,0x00000006,0x00000082,0x0000007e,0x000500c7,0x00000006,0x00000083,
+ 0x00000082,0x00000037,0x000500ab,0x00000021,0x00000084,0x00000083,0x00000032,0x000300f7,
+ 0x00000086,0x00000000,0x000400fa,0x00000084,0x00000085,0x00000086,0x000200f8,0x00000085,
+ 0x00050041,0x00000043,0x00000087,0x00000062,0x00000026,0x0003003e,0x00000087,0x00000055,
+ 0x000200f9,0x00000086,0x000200f8,0x00000086,0x0004003d,0x00000006,0x00000088,0x0000007e,
+ 0x000500c7,0x00000006,0x00000089,0x00000088,0x0000001d,0x000500ab,0x00000021,0x0000008a,
+ 0x00000089,0x00000032,0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,0x0000008b,
+ 0x0000008c,0x000200f8,0x0000008b,0x00050041,0x00000043,0x0000008e,0x00000062,0x0000008d,
+ 0x0003003e,0x0000008e,0x00000055,0x000200f9,0x0000008c,0x000200f8,0x0000008c,0x0004003d,
+ 0x00000006,0x0000008f,0x0000007e,0x000500c7,0x00000006,0x00000090,0x0000008f,0x00000074,
+ 0x000500ab,0x00000021,0x00000091,0x00000090,0x00000032,0x000300f7,0x00000093,0x00000000,
+ 0x000400fa,0x00000091,0x00000092,0x00000093,0x000200f8,0x00000092,0x00050041,0x00000043,
+ 0x00000095,0x00000062,0x00000042,0x0003003e,0x00000095,0x00000094,0x000200f9,0x00000093,
+ 0x000200f8,0x00000093,0x000200f9,0x00000079,0x000200f8,0x00000079,0x000200f9,0x0000006e,
+ 0x000200f8,0x0000006e,0x0004003d,0x0000000b,0x00000098,0x00000062,0x0003003e,0x00000097,
+ 0x00000098,0x000100fd,0x00010038
};
#if 0 // Generated from:
@@ -90,14 +140,20 @@
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -111,6 +167,15 @@
vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
vec4 destValue = vec4(srcValue);
if(params . destHasLuminance)
@@ -121,6 +186,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc
index dac93fc..17e15d9 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc
@@ -1,81 +1,137 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000001[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005a,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x000000a0,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000058,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009e,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000003e,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x00000058,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,0x00000000,
- 0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000058,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,
- 0x00000006,0x00000004,0x00040020,0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,
- 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,
- 0x00000030,0x00000000,0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,
- 0x00000006,0x00000033,0x00000004,0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,
- 0x00000039,0x00000009,0x00000006,0x00040020,0x0000003d,0x00000007,0x0000000b,0x0004002b,
- 0x00000006,0x00000041,0x00000001,0x0004002b,0x00000006,0x0000004c,0x00000002,0x0004002b,
- 0x00000012,0x00000052,0x00000003,0x00040020,0x00000053,0x00000007,0x0000000a,0x00040020,
- 0x00000057,0x00000003,0x0000000b,0x0004003b,0x00000057,0x00000058,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,
- 0x0000002e,0x00000007,0x0004003b,0x0000003d,0x0000003e,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,
- 0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,
- 0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,
- 0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,
- 0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x0004003d,0x0000002c,
- 0x0000003f,0x0000002e,0x0004006f,0x0000000b,0x00000040,0x0000003f,0x0003003e,0x0000003e,
- 0x00000040,0x00050041,0x0000001e,0x00000042,0x00000015,0x00000041,0x0004003d,0x00000012,
- 0x00000043,0x00000042,0x000500ab,0x00000021,0x00000044,0x00000043,0x00000022,0x000300f7,
- 0x00000046,0x00000000,0x000400fa,0x00000044,0x00000045,0x0000004b,0x000200f8,0x00000045,
- 0x0004003d,0x0000000b,0x00000047,0x0000003e,0x0007004f,0x0000000e,0x00000048,0x00000047,
- 0x00000047,0x00000000,0x00000003,0x0004003d,0x0000000b,0x00000049,0x0000003e,0x0009004f,
- 0x0000000b,0x0000004a,0x00000049,0x00000048,0x00000004,0x00000005,0x00000002,0x00000003,
- 0x0003003e,0x0000003e,0x0000004a,0x000200f9,0x00000046,0x000200f8,0x0000004b,0x00050041,
- 0x0000001e,0x0000004d,0x00000015,0x0000004c,0x0004003d,0x00000012,0x0000004e,0x0000004d,
- 0x000500ab,0x00000021,0x0000004f,0x0000004e,0x00000022,0x000300f7,0x00000051,0x00000000,
- 0x000400fa,0x0000004f,0x00000050,0x00000051,0x000200f8,0x00000050,0x00050041,0x00000053,
- 0x00000054,0x0000003e,0x00000052,0x0004003d,0x0000000a,0x00000055,0x00000054,0x00050041,
- 0x00000053,0x00000056,0x0000003e,0x00000022,0x0003003e,0x00000056,0x00000055,0x000200f9,
- 0x00000051,0x000200f8,0x00000051,0x000200f9,0x00000046,0x000200f8,0x00000046,0x0004003d,
- 0x0000000b,0x00000059,0x0000003e,0x0003003e,0x00000058,0x00000059,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x00000069,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000085,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009e,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,
+ 0x00000000,0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x0000009e,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,0x00000007,0x0000000b,0x00090019,
+ 0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000001,0x00000000,0x00000001,0x00000000,
+ 0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,0x00000030,0x00000000,
+ 0x0004002b,0x00000006,0x00000032,0x00000000,0x0004002b,0x00000006,0x00000037,0x00000003,
+ 0x00040020,0x00000038,0x00000009,0x00000006,0x00040017,0x0000003b,0x00000006,0x00000003,
+ 0x0004002b,0x00000006,0x0000003f,0x00000002,0x0004002b,0x00000006,0x00000043,0x00000005,
+ 0x0004002b,0x00000012,0x00000049,0x00000003,0x00040020,0x0000004a,0x00000007,0x0000000a,
+ 0x00040017,0x0000004d,0x0000000a,0x00000003,0x0004002b,0x00000006,0x00000054,0x00000006,
+ 0x0004002b,0x0000000a,0x0000005c,0x00000000,0x0004002b,0x00000006,0x00000070,0x00000007,
+ 0x0004002b,0x00000006,0x0000007b,0x00000008,0x0004002b,0x00000006,0x00000086,0x00000009,
+ 0x0004002b,0x00000012,0x00000094,0x00000002,0x0004002b,0x0000000a,0x0000009b,0x3f800000,
+ 0x00040020,0x0000009d,0x00000003,0x0000000b,0x0004003b,0x0000009d,0x0000009e,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002c,0x0000002d,0x00000007,0x0004003b,0x0000002c,0x00000069,0x00000007,0x0004003b,
+ 0x00000027,0x00000085,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002e,0x00000031,0x00000030,0x00050041,0x00000017,
+ 0x00000033,0x00000015,0x00000032,0x0004003d,0x00000007,0x00000034,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x0000001b,0x00050080,0x00000007,0x00000036,0x00000034,0x00000035,
+ 0x00050041,0x00000038,0x00000039,0x00000015,0x00000037,0x0004003d,0x00000006,0x0000003a,
+ 0x00000039,0x00050051,0x00000006,0x0000003c,0x00000036,0x00000000,0x00050051,0x00000006,
+ 0x0000003d,0x00000036,0x00000001,0x00060050,0x0000003b,0x0000003e,0x0000003c,0x0000003d,
+ 0x0000003a,0x00050041,0x00000038,0x00000040,0x00000015,0x0000003f,0x0004003d,0x00000006,
+ 0x00000041,0x00000040,0x0007005f,0x0000000b,0x00000042,0x00000031,0x0000003e,0x00000002,
+ 0x00000041,0x0003003e,0x0000002d,0x00000042,0x00050041,0x0000001e,0x00000044,0x00000015,
+ 0x00000043,0x0004003d,0x00000012,0x00000045,0x00000044,0x000500ab,0x00000021,0x00000046,
+ 0x00000045,0x00000022,0x000300f7,0x00000048,0x00000000,0x000400fa,0x00000046,0x00000047,
+ 0x00000053,0x000200f8,0x00000047,0x00050041,0x0000004a,0x0000004b,0x0000002d,0x00000049,
+ 0x0004003d,0x0000000a,0x0000004c,0x0000004b,0x0004003d,0x0000000b,0x0000004e,0x0000002d,
+ 0x0008004f,0x0000004d,0x0000004f,0x0000004e,0x0000004e,0x00000000,0x00000001,0x00000002,
+ 0x0005008e,0x0000004d,0x00000050,0x0000004f,0x0000004c,0x0004003d,0x0000000b,0x00000051,
+ 0x0000002d,0x0009004f,0x0000000b,0x00000052,0x00000051,0x00000050,0x00000004,0x00000005,
+ 0x00000006,0x00000003,0x0003003e,0x0000002d,0x00000052,0x000200f9,0x00000048,0x000200f8,
+ 0x00000053,0x00050041,0x0000001e,0x00000055,0x00000015,0x00000054,0x0004003d,0x00000012,
+ 0x00000056,0x00000055,0x000500ab,0x00000021,0x00000057,0x00000056,0x00000022,0x000300f7,
+ 0x00000059,0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,0x000200f8,0x00000058,
+ 0x00050041,0x0000004a,0x0000005a,0x0000002d,0x00000049,0x0004003d,0x0000000a,0x0000005b,
+ 0x0000005a,0x000500ba,0x00000021,0x0000005d,0x0000005b,0x0000005c,0x000200f9,0x00000059,
+ 0x000200f8,0x00000059,0x000700f5,0x00000021,0x0000005e,0x00000057,0x00000053,0x0000005d,
+ 0x00000058,0x000300f7,0x00000060,0x00000000,0x000400fa,0x0000005e,0x0000005f,0x00000060,
+ 0x000200f8,0x0000005f,0x00050041,0x0000004a,0x00000061,0x0000002d,0x00000049,0x0004003d,
+ 0x0000000a,0x00000062,0x00000061,0x0004003d,0x0000000b,0x00000063,0x0000002d,0x0008004f,
+ 0x0000004d,0x00000064,0x00000063,0x00000063,0x00000000,0x00000001,0x00000002,0x00060050,
+ 0x0000004d,0x00000065,0x00000062,0x00000062,0x00000062,0x00050088,0x0000004d,0x00000066,
+ 0x00000064,0x00000065,0x0004003d,0x0000000b,0x00000067,0x0000002d,0x0009004f,0x0000000b,
+ 0x00000068,0x00000067,0x00000066,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,
+ 0x0000002d,0x00000068,0x000200f9,0x00000060,0x000200f8,0x00000060,0x000200f9,0x00000048,
+ 0x000200f8,0x00000048,0x0004003d,0x0000000b,0x0000006a,0x0000002d,0x00050051,0x0000000a,
+ 0x0000006b,0x0000006a,0x00000000,0x00050051,0x0000000a,0x0000006c,0x0000006a,0x00000001,
+ 0x00050051,0x0000000a,0x0000006d,0x0000006a,0x00000002,0x00050051,0x0000000a,0x0000006e,
+ 0x0000006a,0x00000003,0x00070050,0x0000000b,0x0000006f,0x0000006b,0x0000006c,0x0000006d,
+ 0x0000006e,0x0003003e,0x00000069,0x0000006f,0x00050041,0x0000001e,0x00000071,0x00000015,
+ 0x00000070,0x0004003d,0x00000012,0x00000072,0x00000071,0x000500ab,0x00000021,0x00000073,
+ 0x00000072,0x00000022,0x000300f7,0x00000075,0x00000000,0x000400fa,0x00000073,0x00000074,
+ 0x0000007a,0x000200f8,0x00000074,0x0004003d,0x0000000b,0x00000076,0x00000069,0x0007004f,
+ 0x0000000e,0x00000077,0x00000076,0x00000076,0x00000000,0x00000003,0x0004003d,0x0000000b,
+ 0x00000078,0x00000069,0x0009004f,0x0000000b,0x00000079,0x00000078,0x00000077,0x00000004,
+ 0x00000005,0x00000002,0x00000003,0x0003003e,0x00000069,0x00000079,0x000200f9,0x00000075,
+ 0x000200f8,0x0000007a,0x00050041,0x0000001e,0x0000007c,0x00000015,0x0000007b,0x0004003d,
+ 0x00000012,0x0000007d,0x0000007c,0x000500ab,0x00000021,0x0000007e,0x0000007d,0x00000022,
+ 0x000300f7,0x00000080,0x00000000,0x000400fa,0x0000007e,0x0000007f,0x00000084,0x000200f8,
+ 0x0000007f,0x00050041,0x0000004a,0x00000081,0x00000069,0x00000049,0x0004003d,0x0000000a,
+ 0x00000082,0x00000081,0x00050041,0x0000004a,0x00000083,0x00000069,0x00000022,0x0003003e,
+ 0x00000083,0x00000082,0x000200f9,0x00000080,0x000200f8,0x00000084,0x00050041,0x00000038,
+ 0x00000087,0x00000015,0x00000086,0x0004003d,0x00000006,0x00000088,0x00000087,0x0003003e,
+ 0x00000085,0x00000088,0x0004003d,0x00000006,0x00000089,0x00000085,0x000500c7,0x00000006,
+ 0x0000008a,0x00000089,0x0000003f,0x000500ab,0x00000021,0x0000008b,0x0000008a,0x00000032,
+ 0x000300f7,0x0000008d,0x00000000,0x000400fa,0x0000008b,0x0000008c,0x0000008d,0x000200f8,
+ 0x0000008c,0x00050041,0x0000004a,0x0000008e,0x00000069,0x00000026,0x0003003e,0x0000008e,
+ 0x0000005c,0x000200f9,0x0000008d,0x000200f8,0x0000008d,0x0004003d,0x00000006,0x0000008f,
+ 0x00000085,0x000500c7,0x00000006,0x00000090,0x0000008f,0x0000001d,0x000500ab,0x00000021,
+ 0x00000091,0x00000090,0x00000032,0x000300f7,0x00000093,0x00000000,0x000400fa,0x00000091,
+ 0x00000092,0x00000093,0x000200f8,0x00000092,0x00050041,0x0000004a,0x00000095,0x00000069,
+ 0x00000094,0x0003003e,0x00000095,0x0000005c,0x000200f9,0x00000093,0x000200f8,0x00000093,
+ 0x0004003d,0x00000006,0x00000096,0x00000085,0x000500c7,0x00000006,0x00000097,0x00000096,
+ 0x0000007b,0x000500ab,0x00000021,0x00000098,0x00000097,0x00000032,0x000300f7,0x0000009a,
+ 0x00000000,0x000400fa,0x00000098,0x00000099,0x0000009a,0x000200f8,0x00000099,0x00050041,
+ 0x0000004a,0x0000009c,0x00000069,0x00000049,0x0003003e,0x0000009c,0x0000009b,0x000200f9,
+ 0x0000009a,0x000200f8,0x0000009a,0x000200f9,0x00000080,0x000200f8,0x00000080,0x000200f9,
+ 0x00000075,0x000200f8,0x00000075,0x0004003d,0x0000000b,0x0000009f,0x00000069,0x0003003e,
+ 0x0000009e,0x0000009f,0x000100fd,0x00010038
};
#if 0 // Generated from:
@@ -83,19 +139,25 @@
#extension GL_EXT_samplerless_texture_functions : require
-layout(set = 0, binding = 0)uniform itexture2D src;
+layout(set = 0, binding = 0)uniform texture2DArray src;
layout(location = 0)out vec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -107,7 +169,16 @@
if(params . flipY)
srcSubImageCoords . y = - srcSubImageCoords . y;
- ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
vec4 destValue = vec4(srcValue);
@@ -119,6 +190,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc
index e721b7a..714a949 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc
@@ -1,81 +1,132 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000002[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005a,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x00000098,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000058,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000096,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000003e,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x00000058,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,0x00000000,
- 0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000058,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,
- 0x00000012,0x00000004,0x00040020,0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,
- 0x00000012,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,
- 0x00000030,0x00000000,0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,
- 0x00000006,0x00000033,0x00000004,0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,
- 0x00000039,0x00000009,0x00000006,0x00040020,0x0000003d,0x00000007,0x0000000b,0x0004002b,
- 0x00000006,0x00000041,0x00000001,0x0004002b,0x00000006,0x0000004c,0x00000002,0x0004002b,
- 0x00000012,0x00000052,0x00000003,0x00040020,0x00000053,0x00000007,0x0000000a,0x00040020,
- 0x00000057,0x00000003,0x0000000b,0x0004003b,0x00000057,0x00000058,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,
- 0x0000002e,0x00000007,0x0004003b,0x0000003d,0x0000003e,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,
- 0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,
- 0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,
- 0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,
- 0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x0004003d,0x0000002c,
- 0x0000003f,0x0000002e,0x00040070,0x0000000b,0x00000040,0x0000003f,0x0003003e,0x0000003e,
- 0x00000040,0x00050041,0x0000001e,0x00000042,0x00000015,0x00000041,0x0004003d,0x00000012,
- 0x00000043,0x00000042,0x000500ab,0x00000021,0x00000044,0x00000043,0x00000022,0x000300f7,
- 0x00000046,0x00000000,0x000400fa,0x00000044,0x00000045,0x0000004b,0x000200f8,0x00000045,
- 0x0004003d,0x0000000b,0x00000047,0x0000003e,0x0007004f,0x0000000e,0x00000048,0x00000047,
- 0x00000047,0x00000000,0x00000003,0x0004003d,0x0000000b,0x00000049,0x0000003e,0x0009004f,
- 0x0000000b,0x0000004a,0x00000049,0x00000048,0x00000004,0x00000005,0x00000002,0x00000003,
- 0x0003003e,0x0000003e,0x0000004a,0x000200f9,0x00000046,0x000200f8,0x0000004b,0x00050041,
- 0x0000001e,0x0000004d,0x00000015,0x0000004c,0x0004003d,0x00000012,0x0000004e,0x0000004d,
- 0x000500ab,0x00000021,0x0000004f,0x0000004e,0x00000022,0x000300f7,0x00000051,0x00000000,
- 0x000400fa,0x0000004f,0x00000050,0x00000051,0x000200f8,0x00000050,0x00050041,0x00000053,
- 0x00000054,0x0000003e,0x00000052,0x0004003d,0x0000000a,0x00000055,0x00000054,0x00050041,
- 0x00000053,0x00000056,0x0000003e,0x00000022,0x0003003e,0x00000056,0x00000055,0x000200f9,
- 0x00000051,0x000200f8,0x00000051,0x000200f9,0x00000046,0x000200f8,0x00000046,0x0004003d,
- 0x0000000b,0x00000059,0x0000003e,0x0003003e,0x00000058,0x00000059,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000063,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007c,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000096,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000096,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000006,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000006,0x00000001,0x00000000,
+ 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000002,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x0004002b,0x00000006,0x0000003d,0x00000005,0x0004002b,0x00000012,0x00000043,0x00000003,
+ 0x00040017,0x00000046,0x00000006,0x00000003,0x0004002b,0x00000006,0x0000004e,0x00000006,
+ 0x00040020,0x00000062,0x00000007,0x0000000b,0x0004002b,0x00000006,0x00000066,0x00000007,
+ 0x0004002b,0x00000006,0x00000071,0x00000008,0x00040020,0x00000077,0x00000007,0x0000000a,
+ 0x0004002b,0x00000006,0x0000007d,0x00000009,0x0004002b,0x0000000a,0x00000085,0x00000000,
+ 0x0004002b,0x00000012,0x0000008c,0x00000002,0x0004002b,0x0000000a,0x00000093,0x3f800000,
+ 0x00040020,0x00000095,0x00000003,0x0000000b,0x0004003b,0x00000095,0x00000096,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002d,0x0000002e,0x00000007,0x0004003b,0x00000062,0x00000063,0x00000007,0x0004003b,
+ 0x00000027,0x0000007c,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,0x00000031,0x00050041,0x00000017,
+ 0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,0x00000035,0x00000034,0x0004003d,
+ 0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,0x00000037,0x00000035,0x00000036,
+ 0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,0x0004003d,0x00000006,0x0000003b,
+ 0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,0x00000037,0x00000002,0x0000003b,
+ 0x0003003e,0x0000002e,0x0000003c,0x00050041,0x0000001e,0x0000003e,0x00000015,0x0000003d,
+ 0x0004003d,0x00000012,0x0000003f,0x0000003e,0x000500ab,0x00000021,0x00000040,0x0000003f,
+ 0x00000022,0x000300f7,0x00000042,0x00000000,0x000400fa,0x00000040,0x00000041,0x0000004d,
+ 0x000200f8,0x00000041,0x00050041,0x00000027,0x00000044,0x0000002e,0x00000043,0x0004003d,
+ 0x00000006,0x00000045,0x00000044,0x0004003d,0x0000002c,0x00000047,0x0000002e,0x0008004f,
+ 0x00000046,0x00000048,0x00000047,0x00000047,0x00000000,0x00000001,0x00000002,0x00060050,
+ 0x00000046,0x00000049,0x00000045,0x00000045,0x00000045,0x00050084,0x00000046,0x0000004a,
+ 0x00000048,0x00000049,0x0004003d,0x0000002c,0x0000004b,0x0000002e,0x0009004f,0x0000002c,
+ 0x0000004c,0x0000004b,0x0000004a,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,
+ 0x0000002e,0x0000004c,0x000200f9,0x00000042,0x000200f8,0x0000004d,0x00050041,0x0000001e,
+ 0x0000004f,0x00000015,0x0000004e,0x0004003d,0x00000012,0x00000050,0x0000004f,0x000500ab,
+ 0x00000021,0x00000051,0x00000050,0x00000022,0x000300f7,0x00000053,0x00000000,0x000400fa,
+ 0x00000051,0x00000052,0x00000053,0x000200f8,0x00000052,0x00050041,0x00000027,0x00000054,
+ 0x0000002e,0x00000043,0x0004003d,0x00000006,0x00000055,0x00000054,0x000500ad,0x00000021,
+ 0x00000056,0x00000055,0x00000033,0x000200f9,0x00000053,0x000200f8,0x00000053,0x000700f5,
+ 0x00000021,0x00000057,0x00000051,0x0000004d,0x00000056,0x00000052,0x000300f7,0x00000059,
+ 0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,
+ 0x00000027,0x0000005a,0x0000002e,0x00000043,0x0004003d,0x00000006,0x0000005b,0x0000005a,
+ 0x0004003d,0x0000002c,0x0000005c,0x0000002e,0x0008004f,0x00000046,0x0000005d,0x0000005c,
+ 0x0000005c,0x00000000,0x00000001,0x00000002,0x00060050,0x00000046,0x0000005e,0x0000005b,
+ 0x0000005b,0x0000005b,0x00050087,0x00000046,0x0000005f,0x0000005d,0x0000005e,0x0004003d,
+ 0x0000002c,0x00000060,0x0000002e,0x0009004f,0x0000002c,0x00000061,0x00000060,0x0000005f,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000061,0x000200f9,
+ 0x00000059,0x000200f8,0x00000059,0x000200f9,0x00000042,0x000200f8,0x00000042,0x0004003d,
+ 0x0000002c,0x00000064,0x0000002e,0x0004006f,0x0000000b,0x00000065,0x00000064,0x0003003e,
+ 0x00000063,0x00000065,0x00050041,0x0000001e,0x00000067,0x00000015,0x00000066,0x0004003d,
+ 0x00000012,0x00000068,0x00000067,0x000500ab,0x00000021,0x00000069,0x00000068,0x00000022,
+ 0x000300f7,0x0000006b,0x00000000,0x000400fa,0x00000069,0x0000006a,0x00000070,0x000200f8,
+ 0x0000006a,0x0004003d,0x0000000b,0x0000006c,0x00000063,0x0007004f,0x0000000e,0x0000006d,
+ 0x0000006c,0x0000006c,0x00000000,0x00000003,0x0004003d,0x0000000b,0x0000006e,0x00000063,
+ 0x0009004f,0x0000000b,0x0000006f,0x0000006e,0x0000006d,0x00000004,0x00000005,0x00000002,
+ 0x00000003,0x0003003e,0x00000063,0x0000006f,0x000200f9,0x0000006b,0x000200f8,0x00000070,
+ 0x00050041,0x0000001e,0x00000072,0x00000015,0x00000071,0x0004003d,0x00000012,0x00000073,
+ 0x00000072,0x000500ab,0x00000021,0x00000074,0x00000073,0x00000022,0x000300f7,0x00000076,
+ 0x00000000,0x000400fa,0x00000074,0x00000075,0x0000007b,0x000200f8,0x00000075,0x00050041,
+ 0x00000077,0x00000078,0x00000063,0x00000043,0x0004003d,0x0000000a,0x00000079,0x00000078,
+ 0x00050041,0x00000077,0x0000007a,0x00000063,0x00000022,0x0003003e,0x0000007a,0x00000079,
+ 0x000200f9,0x00000076,0x000200f8,0x0000007b,0x00050041,0x00000039,0x0000007e,0x00000015,
+ 0x0000007d,0x0004003d,0x00000006,0x0000007f,0x0000007e,0x0003003e,0x0000007c,0x0000007f,
+ 0x0004003d,0x00000006,0x00000080,0x0000007c,0x000500c7,0x00000006,0x00000081,0x00000080,
+ 0x00000038,0x000500ab,0x00000021,0x00000082,0x00000081,0x00000033,0x000300f7,0x00000084,
+ 0x00000000,0x000400fa,0x00000082,0x00000083,0x00000084,0x000200f8,0x00000083,0x00050041,
+ 0x00000077,0x00000086,0x00000063,0x00000026,0x0003003e,0x00000086,0x00000085,0x000200f9,
+ 0x00000084,0x000200f8,0x00000084,0x0004003d,0x00000006,0x00000087,0x0000007c,0x000500c7,
+ 0x00000006,0x00000088,0x00000087,0x0000001d,0x000500ab,0x00000021,0x00000089,0x00000088,
+ 0x00000033,0x000300f7,0x0000008b,0x00000000,0x000400fa,0x00000089,0x0000008a,0x0000008b,
+ 0x000200f8,0x0000008a,0x00050041,0x00000077,0x0000008d,0x00000063,0x0000008c,0x0003003e,
+ 0x0000008d,0x00000085,0x000200f9,0x0000008b,0x000200f8,0x0000008b,0x0004003d,0x00000006,
+ 0x0000008e,0x0000007c,0x000500c7,0x00000006,0x0000008f,0x0000008e,0x00000071,0x000500ab,
+ 0x00000021,0x00000090,0x0000008f,0x00000033,0x000300f7,0x00000092,0x00000000,0x000400fa,
+ 0x00000090,0x00000091,0x00000092,0x000200f8,0x00000091,0x00050041,0x00000077,0x00000094,
+ 0x00000063,0x00000043,0x0003003e,0x00000094,0x00000093,0x000200f9,0x00000092,0x000200f8,
+ 0x00000092,0x000200f9,0x00000076,0x000200f8,0x00000076,0x000200f9,0x0000006b,0x000200f8,
+ 0x0000006b,0x0004003d,0x0000000b,0x00000097,0x00000063,0x0003003e,0x00000096,0x00000097,
+ 0x000100fd,0x00010038
};
#if 0 // Generated from:
@@ -83,19 +134,25 @@
#extension GL_EXT_samplerless_texture_functions : require
-layout(set = 0, binding = 0)uniform utexture2D src;
+layout(set = 0, binding = 0)uniform itexture2D src;
layout(location = 0)out vec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -107,7 +164,16 @@
if(params . flipY)
srcSubImageCoords . y = - srcSubImageCoords . y;
- uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
vec4 destValue = vec4(srcValue);
@@ -119,6 +185,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc
new file mode 100644
index 0000000..d41942a
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc
@@ -0,0 +1,210 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000003[] = {
+ 0x07230203,0x00010000,0x00080007,0x0000009e,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009c,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000069,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000082,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009c,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000009c,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000006,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000006,0x00000001,0x00000000,
+ 0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x00040017,0x0000003c,0x00000006,0x00000003,0x0004002b,0x00000006,0x00000040,0x00000002,
+ 0x0004002b,0x00000006,0x00000044,0x00000005,0x0004002b,0x00000012,0x0000004a,0x00000003,
+ 0x0004002b,0x00000006,0x00000054,0x00000006,0x00040020,0x00000068,0x00000007,0x0000000b,
+ 0x0004002b,0x00000006,0x0000006c,0x00000007,0x0004002b,0x00000006,0x00000077,0x00000008,
+ 0x00040020,0x0000007d,0x00000007,0x0000000a,0x0004002b,0x00000006,0x00000083,0x00000009,
+ 0x0004002b,0x0000000a,0x0000008b,0x00000000,0x0004002b,0x00000012,0x00000092,0x00000002,
+ 0x0004002b,0x0000000a,0x00000099,0x3f800000,0x00040020,0x0000009b,0x00000003,0x0000000b,
+ 0x0004003b,0x0000009b,0x0000009c,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x00000068,0x00000069,0x00000007,0x0004003b,0x00000027,0x00000082,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x00050051,0x00000006,0x0000003d,
+ 0x00000037,0x00000000,0x00050051,0x00000006,0x0000003e,0x00000037,0x00000001,0x00060050,
+ 0x0000003c,0x0000003f,0x0000003d,0x0000003e,0x0000003b,0x00050041,0x00000039,0x00000041,
+ 0x00000015,0x00000040,0x0004003d,0x00000006,0x00000042,0x00000041,0x0007005f,0x0000002c,
+ 0x00000043,0x00000032,0x0000003f,0x00000002,0x00000042,0x0003003e,0x0000002e,0x00000043,
+ 0x00050041,0x0000001e,0x00000045,0x00000015,0x00000044,0x0004003d,0x00000012,0x00000046,
+ 0x00000045,0x000500ab,0x00000021,0x00000047,0x00000046,0x00000022,0x000300f7,0x00000049,
+ 0x00000000,0x000400fa,0x00000047,0x00000048,0x00000053,0x000200f8,0x00000048,0x00050041,
+ 0x00000027,0x0000004b,0x0000002e,0x0000004a,0x0004003d,0x00000006,0x0000004c,0x0000004b,
+ 0x0004003d,0x0000002c,0x0000004d,0x0000002e,0x0008004f,0x0000003c,0x0000004e,0x0000004d,
+ 0x0000004d,0x00000000,0x00000001,0x00000002,0x00060050,0x0000003c,0x0000004f,0x0000004c,
+ 0x0000004c,0x0000004c,0x00050084,0x0000003c,0x00000050,0x0000004e,0x0000004f,0x0004003d,
+ 0x0000002c,0x00000051,0x0000002e,0x0009004f,0x0000002c,0x00000052,0x00000051,0x00000050,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000052,0x000200f9,
+ 0x00000049,0x000200f8,0x00000053,0x00050041,0x0000001e,0x00000055,0x00000015,0x00000054,
+ 0x0004003d,0x00000012,0x00000056,0x00000055,0x000500ab,0x00000021,0x00000057,0x00000056,
+ 0x00000022,0x000300f7,0x00000059,0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,
+ 0x000200f8,0x00000058,0x00050041,0x00000027,0x0000005a,0x0000002e,0x0000004a,0x0004003d,
+ 0x00000006,0x0000005b,0x0000005a,0x000500ad,0x00000021,0x0000005c,0x0000005b,0x00000033,
+ 0x000200f9,0x00000059,0x000200f8,0x00000059,0x000700f5,0x00000021,0x0000005d,0x00000057,
+ 0x00000053,0x0000005c,0x00000058,0x000300f7,0x0000005f,0x00000000,0x000400fa,0x0000005d,
+ 0x0000005e,0x0000005f,0x000200f8,0x0000005e,0x00050041,0x00000027,0x00000060,0x0000002e,
+ 0x0000004a,0x0004003d,0x00000006,0x00000061,0x00000060,0x0004003d,0x0000002c,0x00000062,
+ 0x0000002e,0x0008004f,0x0000003c,0x00000063,0x00000062,0x00000062,0x00000000,0x00000001,
+ 0x00000002,0x00060050,0x0000003c,0x00000064,0x00000061,0x00000061,0x00000061,0x00050087,
+ 0x0000003c,0x00000065,0x00000063,0x00000064,0x0004003d,0x0000002c,0x00000066,0x0000002e,
+ 0x0009004f,0x0000002c,0x00000067,0x00000066,0x00000065,0x00000004,0x00000005,0x00000006,
+ 0x00000003,0x0003003e,0x0000002e,0x00000067,0x000200f9,0x0000005f,0x000200f8,0x0000005f,
+ 0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,0x0000006a,0x0000002e,
+ 0x0004006f,0x0000000b,0x0000006b,0x0000006a,0x0003003e,0x00000069,0x0000006b,0x00050041,
+ 0x0000001e,0x0000006d,0x00000015,0x0000006c,0x0004003d,0x00000012,0x0000006e,0x0000006d,
+ 0x000500ab,0x00000021,0x0000006f,0x0000006e,0x00000022,0x000300f7,0x00000071,0x00000000,
+ 0x000400fa,0x0000006f,0x00000070,0x00000076,0x000200f8,0x00000070,0x0004003d,0x0000000b,
+ 0x00000072,0x00000069,0x0007004f,0x0000000e,0x00000073,0x00000072,0x00000072,0x00000000,
+ 0x00000003,0x0004003d,0x0000000b,0x00000074,0x00000069,0x0009004f,0x0000000b,0x00000075,
+ 0x00000074,0x00000073,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x00000069,
+ 0x00000075,0x000200f9,0x00000071,0x000200f8,0x00000076,0x00050041,0x0000001e,0x00000078,
+ 0x00000015,0x00000077,0x0004003d,0x00000012,0x00000079,0x00000078,0x000500ab,0x00000021,
+ 0x0000007a,0x00000079,0x00000022,0x000300f7,0x0000007c,0x00000000,0x000400fa,0x0000007a,
+ 0x0000007b,0x00000081,0x000200f8,0x0000007b,0x00050041,0x0000007d,0x0000007e,0x00000069,
+ 0x0000004a,0x0004003d,0x0000000a,0x0000007f,0x0000007e,0x00050041,0x0000007d,0x00000080,
+ 0x00000069,0x00000022,0x0003003e,0x00000080,0x0000007f,0x000200f9,0x0000007c,0x000200f8,
+ 0x00000081,0x00050041,0x00000039,0x00000084,0x00000015,0x00000083,0x0004003d,0x00000006,
+ 0x00000085,0x00000084,0x0003003e,0x00000082,0x00000085,0x0004003d,0x00000006,0x00000086,
+ 0x00000082,0x000500c7,0x00000006,0x00000087,0x00000086,0x00000040,0x000500ab,0x00000021,
+ 0x00000088,0x00000087,0x00000033,0x000300f7,0x0000008a,0x00000000,0x000400fa,0x00000088,
+ 0x00000089,0x0000008a,0x000200f8,0x00000089,0x00050041,0x0000007d,0x0000008c,0x00000069,
+ 0x00000026,0x0003003e,0x0000008c,0x0000008b,0x000200f9,0x0000008a,0x000200f8,0x0000008a,
+ 0x0004003d,0x00000006,0x0000008d,0x00000082,0x000500c7,0x00000006,0x0000008e,0x0000008d,
+ 0x0000001d,0x000500ab,0x00000021,0x0000008f,0x0000008e,0x00000033,0x000300f7,0x00000091,
+ 0x00000000,0x000400fa,0x0000008f,0x00000090,0x00000091,0x000200f8,0x00000090,0x00050041,
+ 0x0000007d,0x00000093,0x00000069,0x00000092,0x0003003e,0x00000093,0x0000008b,0x000200f9,
+ 0x00000091,0x000200f8,0x00000091,0x0004003d,0x00000006,0x00000094,0x00000082,0x000500c7,
+ 0x00000006,0x00000095,0x00000094,0x00000077,0x000500ab,0x00000021,0x00000096,0x00000095,
+ 0x00000033,0x000300f7,0x00000098,0x00000000,0x000400fa,0x00000096,0x00000097,0x00000098,
+ 0x000200f8,0x00000097,0x00050041,0x0000007d,0x0000009a,0x00000069,0x0000004a,0x0003003e,
+ 0x0000009a,0x00000099,0x000200f9,0x00000098,0x000200f8,0x00000098,0x000200f9,0x0000007c,
+ 0x000200f8,0x0000007c,0x000200f9,0x00000071,0x000200f8,0x00000071,0x0004003d,0x0000000b,
+ 0x0000009d,0x00000069,0x0003003e,0x0000009c,0x0000009d,0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform itexture2DArray src;
+layout(location = 0)out vec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ vec4 destValue = vec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc
index 03e0230..5a09703 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc
@@ -1,81 +1,132 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000004[] = {
- 0x07230203,0x00010000,0x00080007,0x00000059,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x00000099,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000057,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000097,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x0000003e,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x00000057,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,0x00000000,
- 0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x00000057,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,
- 0x00000007,0x0000000b,0x00090019,0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000000,
- 0x00000000,0x00000001,0x00000000,0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,
- 0x0000002f,0x00000030,0x00000000,0x0004002b,0x00000006,0x00000032,0x00000004,0x0004002b,
- 0x00000006,0x00000037,0x00000003,0x00040020,0x00000038,0x00000009,0x00000006,0x00040017,
- 0x0000003c,0x00000006,0x00000004,0x00040020,0x0000003d,0x00000007,0x0000003c,0x0004002b,
- 0x00000006,0x00000041,0x00000001,0x0004002b,0x00000006,0x0000004c,0x00000002,0x0004002b,
- 0x00000012,0x00000052,0x00000003,0x00040020,0x00000056,0x00000003,0x0000003c,0x0004003b,
- 0x00000056,0x00000057,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
- 0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,
- 0x0000001b,0x00000007,0x0004003b,0x0000002c,0x0000002d,0x00000007,0x0004003b,0x0000003d,
- 0x0000003e,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,
- 0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,
- 0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,
- 0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,
- 0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,
- 0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,
- 0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,
- 0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,
- 0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,
- 0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,
- 0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,
- 0x00000025,0x0004003d,0x0000002e,0x00000031,0x00000030,0x00050041,0x00000017,0x00000033,
- 0x00000015,0x00000032,0x0004003d,0x00000007,0x00000034,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x0000001b,0x00050080,0x00000007,0x00000036,0x00000034,0x00000035,0x00050041,
- 0x00000038,0x00000039,0x00000015,0x00000037,0x0004003d,0x00000006,0x0000003a,0x00000039,
- 0x0007005f,0x0000000b,0x0000003b,0x00000031,0x00000036,0x00000002,0x0000003a,0x0003003e,
- 0x0000002d,0x0000003b,0x0004003d,0x0000000b,0x0000003f,0x0000002d,0x0004006e,0x0000003c,
- 0x00000040,0x0000003f,0x0003003e,0x0000003e,0x00000040,0x00050041,0x0000001e,0x00000042,
- 0x00000015,0x00000041,0x0004003d,0x00000012,0x00000043,0x00000042,0x000500ab,0x00000021,
- 0x00000044,0x00000043,0x00000022,0x000300f7,0x00000046,0x00000000,0x000400fa,0x00000044,
- 0x00000045,0x0000004b,0x000200f8,0x00000045,0x0004003d,0x0000003c,0x00000047,0x0000003e,
- 0x0007004f,0x00000007,0x00000048,0x00000047,0x00000047,0x00000000,0x00000003,0x0004003d,
- 0x0000003c,0x00000049,0x0000003e,0x0009004f,0x0000003c,0x0000004a,0x00000049,0x00000048,
- 0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x0000003e,0x0000004a,0x000200f9,
- 0x00000046,0x000200f8,0x0000004b,0x00050041,0x0000001e,0x0000004d,0x00000015,0x0000004c,
- 0x0004003d,0x00000012,0x0000004e,0x0000004d,0x000500ab,0x00000021,0x0000004f,0x0000004e,
- 0x00000022,0x000300f7,0x00000051,0x00000000,0x000400fa,0x0000004f,0x00000050,0x00000051,
- 0x000200f8,0x00000050,0x00050041,0x00000027,0x00000053,0x0000003e,0x00000052,0x0004003d,
- 0x00000006,0x00000054,0x00000053,0x00050041,0x00000027,0x00000055,0x0000003e,0x00000022,
- 0x0003003e,0x00000055,0x00000054,0x000200f9,0x00000051,0x000200f8,0x00000051,0x000200f9,
- 0x00000046,0x000200f8,0x00000046,0x0004003d,0x0000003c,0x00000058,0x0000003e,0x0003003e,
- 0x00000057,0x00000058,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000064,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007d,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000097,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000097,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000012,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000012,0x00000001,0x00000000,
+ 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000002,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x0004002b,0x00000006,0x0000003d,0x00000005,0x0004002b,0x00000012,0x00000043,0x00000003,
+ 0x00040020,0x00000044,0x00000007,0x00000012,0x00040017,0x00000047,0x00000012,0x00000003,
+ 0x0004002b,0x00000006,0x0000004f,0x00000006,0x00040020,0x00000063,0x00000007,0x0000000b,
+ 0x0004002b,0x00000006,0x00000067,0x00000007,0x0004002b,0x00000006,0x00000072,0x00000008,
+ 0x00040020,0x00000078,0x00000007,0x0000000a,0x0004002b,0x00000006,0x0000007e,0x00000009,
+ 0x0004002b,0x0000000a,0x00000086,0x00000000,0x0004002b,0x00000012,0x0000008d,0x00000002,
+ 0x0004002b,0x0000000a,0x00000094,0x3f800000,0x00040020,0x00000096,0x00000003,0x0000000b,
+ 0x0004003b,0x00000096,0x00000097,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x00000063,0x00000064,0x00000007,0x0004003b,0x00000027,0x0000007d,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,
+ 0x00000032,0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x00050041,
+ 0x0000001e,0x0000003e,0x00000015,0x0000003d,0x0004003d,0x00000012,0x0000003f,0x0000003e,
+ 0x000500ab,0x00000021,0x00000040,0x0000003f,0x00000022,0x000300f7,0x00000042,0x00000000,
+ 0x000400fa,0x00000040,0x00000041,0x0000004e,0x000200f8,0x00000041,0x00050041,0x00000044,
+ 0x00000045,0x0000002e,0x00000043,0x0004003d,0x00000012,0x00000046,0x00000045,0x0004003d,
+ 0x0000002c,0x00000048,0x0000002e,0x0008004f,0x00000047,0x00000049,0x00000048,0x00000048,
+ 0x00000000,0x00000001,0x00000002,0x00060050,0x00000047,0x0000004a,0x00000046,0x00000046,
+ 0x00000046,0x00050084,0x00000047,0x0000004b,0x00000049,0x0000004a,0x0004003d,0x0000002c,
+ 0x0000004c,0x0000002e,0x0009004f,0x0000002c,0x0000004d,0x0000004c,0x0000004b,0x00000004,
+ 0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x0000004d,0x000200f9,0x00000042,
+ 0x000200f8,0x0000004e,0x00050041,0x0000001e,0x00000050,0x00000015,0x0000004f,0x0004003d,
+ 0x00000012,0x00000051,0x00000050,0x000500ab,0x00000021,0x00000052,0x00000051,0x00000022,
+ 0x000300f7,0x00000054,0x00000000,0x000400fa,0x00000052,0x00000053,0x00000054,0x000200f8,
+ 0x00000053,0x00050041,0x00000044,0x00000055,0x0000002e,0x00000043,0x0004003d,0x00000012,
+ 0x00000056,0x00000055,0x000500ac,0x00000021,0x00000057,0x00000056,0x00000022,0x000200f9,
+ 0x00000054,0x000200f8,0x00000054,0x000700f5,0x00000021,0x00000058,0x00000052,0x0000004e,
+ 0x00000057,0x00000053,0x000300f7,0x0000005a,0x00000000,0x000400fa,0x00000058,0x00000059,
+ 0x0000005a,0x000200f8,0x00000059,0x00050041,0x00000044,0x0000005b,0x0000002e,0x00000043,
+ 0x0004003d,0x00000012,0x0000005c,0x0000005b,0x0004003d,0x0000002c,0x0000005d,0x0000002e,
+ 0x0008004f,0x00000047,0x0000005e,0x0000005d,0x0000005d,0x00000000,0x00000001,0x00000002,
+ 0x00060050,0x00000047,0x0000005f,0x0000005c,0x0000005c,0x0000005c,0x00050086,0x00000047,
+ 0x00000060,0x0000005e,0x0000005f,0x0004003d,0x0000002c,0x00000061,0x0000002e,0x0009004f,
+ 0x0000002c,0x00000062,0x00000061,0x00000060,0x00000004,0x00000005,0x00000006,0x00000003,
+ 0x0003003e,0x0000002e,0x00000062,0x000200f9,0x0000005a,0x000200f8,0x0000005a,0x000200f9,
+ 0x00000042,0x000200f8,0x00000042,0x0004003d,0x0000002c,0x00000065,0x0000002e,0x00040070,
+ 0x0000000b,0x00000066,0x00000065,0x0003003e,0x00000064,0x00000066,0x00050041,0x0000001e,
+ 0x00000068,0x00000015,0x00000067,0x0004003d,0x00000012,0x00000069,0x00000068,0x000500ab,
+ 0x00000021,0x0000006a,0x00000069,0x00000022,0x000300f7,0x0000006c,0x00000000,0x000400fa,
+ 0x0000006a,0x0000006b,0x00000071,0x000200f8,0x0000006b,0x0004003d,0x0000000b,0x0000006d,
+ 0x00000064,0x0007004f,0x0000000e,0x0000006e,0x0000006d,0x0000006d,0x00000000,0x00000003,
+ 0x0004003d,0x0000000b,0x0000006f,0x00000064,0x0009004f,0x0000000b,0x00000070,0x0000006f,
+ 0x0000006e,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x00000064,0x00000070,
+ 0x000200f9,0x0000006c,0x000200f8,0x00000071,0x00050041,0x0000001e,0x00000073,0x00000015,
+ 0x00000072,0x0004003d,0x00000012,0x00000074,0x00000073,0x000500ab,0x00000021,0x00000075,
+ 0x00000074,0x00000022,0x000300f7,0x00000077,0x00000000,0x000400fa,0x00000075,0x00000076,
+ 0x0000007c,0x000200f8,0x00000076,0x00050041,0x00000078,0x00000079,0x00000064,0x00000043,
+ 0x0004003d,0x0000000a,0x0000007a,0x00000079,0x00050041,0x00000078,0x0000007b,0x00000064,
+ 0x00000022,0x0003003e,0x0000007b,0x0000007a,0x000200f9,0x00000077,0x000200f8,0x0000007c,
+ 0x00050041,0x00000039,0x0000007f,0x00000015,0x0000007e,0x0004003d,0x00000006,0x00000080,
+ 0x0000007f,0x0003003e,0x0000007d,0x00000080,0x0004003d,0x00000006,0x00000081,0x0000007d,
+ 0x000500c7,0x00000006,0x00000082,0x00000081,0x00000038,0x000500ab,0x00000021,0x00000083,
+ 0x00000082,0x00000033,0x000300f7,0x00000085,0x00000000,0x000400fa,0x00000083,0x00000084,
+ 0x00000085,0x000200f8,0x00000084,0x00050041,0x00000078,0x00000087,0x00000064,0x00000026,
+ 0x0003003e,0x00000087,0x00000086,0x000200f9,0x00000085,0x000200f8,0x00000085,0x0004003d,
+ 0x00000006,0x00000088,0x0000007d,0x000500c7,0x00000006,0x00000089,0x00000088,0x0000001d,
+ 0x000500ab,0x00000021,0x0000008a,0x00000089,0x00000033,0x000300f7,0x0000008c,0x00000000,
+ 0x000400fa,0x0000008a,0x0000008b,0x0000008c,0x000200f8,0x0000008b,0x00050041,0x00000078,
+ 0x0000008e,0x00000064,0x0000008d,0x0003003e,0x0000008e,0x00000086,0x000200f9,0x0000008c,
+ 0x000200f8,0x0000008c,0x0004003d,0x00000006,0x0000008f,0x0000007d,0x000500c7,0x00000006,
+ 0x00000090,0x0000008f,0x00000072,0x000500ab,0x00000021,0x00000091,0x00000090,0x00000033,
+ 0x000300f7,0x00000093,0x00000000,0x000400fa,0x00000091,0x00000092,0x00000093,0x000200f8,
+ 0x00000092,0x00050041,0x00000078,0x00000095,0x00000064,0x00000043,0x0003003e,0x00000095,
+ 0x00000094,0x000200f9,0x00000093,0x000200f8,0x00000093,0x000200f9,0x00000077,0x000200f8,
+ 0x00000077,0x000200f9,0x0000006c,0x000200f8,0x0000006c,0x0004003d,0x0000000b,0x00000098,
+ 0x00000064,0x0003003e,0x00000097,0x00000098,0x000100fd,0x00010038
};
#if 0 // Generated from:
@@ -83,19 +134,25 @@
#extension GL_EXT_samplerless_texture_functions : require
-layout(set = 0, binding = 0)uniform texture2D src;
-layout(location = 0)out ivec4 dest;
+layout(set = 0, binding = 0)uniform utexture2D src;
+layout(location = 0)out vec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -107,9 +164,18 @@
if(params . flipY)
srcSubImageCoords . y = - srcSubImageCoords . y;
- vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
- ivec4 destValue = ivec4(srcValue);
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ vec4 destValue = vec4(srcValue);
if(params . destHasLuminance)
{
@@ -119,6 +185,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc
index ed39785..5218612 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc
@@ -1,83 +1,136 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000005[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005c,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x000000a0,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000005a,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009e,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000003d,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x0000005a,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,0x00000000,
- 0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000005a,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,
- 0x00000006,0x00000004,0x00040020,0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,
- 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,
- 0x00000030,0x00000000,0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,
- 0x00000006,0x00000033,0x00000004,0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,
- 0x00000039,0x00000009,0x00000006,0x0004002b,0x00000006,0x00000044,0x00000001,0x0004002b,
- 0x00000006,0x0000004f,0x00000002,0x0004002b,0x00000012,0x00000055,0x00000003,0x00040020,
- 0x00000059,0x00000003,0x0000002c,0x0004003b,0x00000059,0x0000005a,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,
- 0x0000002e,0x00000007,0x0004003b,0x0000002d,0x0000003d,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,
- 0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,
- 0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,
- 0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,
- 0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x0004003d,0x0000002c,
- 0x0000003e,0x0000002e,0x00050051,0x00000006,0x0000003f,0x0000003e,0x00000000,0x00050051,
- 0x00000006,0x00000040,0x0000003e,0x00000001,0x00050051,0x00000006,0x00000041,0x0000003e,
- 0x00000002,0x00050051,0x00000006,0x00000042,0x0000003e,0x00000003,0x00070050,0x0000002c,
- 0x00000043,0x0000003f,0x00000040,0x00000041,0x00000042,0x0003003e,0x0000003d,0x00000043,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000006b,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000084,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009e,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000009e,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000012,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000012,0x00000001,0x00000000,
+ 0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x00040017,0x0000003c,0x00000006,0x00000003,0x0004002b,0x00000006,0x00000040,0x00000002,
+ 0x0004002b,0x00000006,0x00000044,0x00000005,0x0004002b,0x00000012,0x0000004a,0x00000003,
+ 0x00040020,0x0000004b,0x00000007,0x00000012,0x00040017,0x0000004e,0x00000012,0x00000003,
+ 0x0004002b,0x00000006,0x00000056,0x00000006,0x00040020,0x0000006a,0x00000007,0x0000000b,
+ 0x0004002b,0x00000006,0x0000006e,0x00000007,0x0004002b,0x00000006,0x00000079,0x00000008,
+ 0x00040020,0x0000007f,0x00000007,0x0000000a,0x0004002b,0x00000006,0x00000085,0x00000009,
+ 0x0004002b,0x0000000a,0x0000008d,0x00000000,0x0004002b,0x00000012,0x00000094,0x00000002,
+ 0x0004002b,0x0000000a,0x0000009b,0x3f800000,0x00040020,0x0000009d,0x00000003,0x0000000b,
+ 0x0004003b,0x0000009d,0x0000009e,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x0000006a,0x0000006b,0x00000007,0x0004003b,0x00000027,0x00000084,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x00050051,0x00000006,0x0000003d,
+ 0x00000037,0x00000000,0x00050051,0x00000006,0x0000003e,0x00000037,0x00000001,0x00060050,
+ 0x0000003c,0x0000003f,0x0000003d,0x0000003e,0x0000003b,0x00050041,0x00000039,0x00000041,
+ 0x00000015,0x00000040,0x0004003d,0x00000006,0x00000042,0x00000041,0x0007005f,0x0000002c,
+ 0x00000043,0x00000032,0x0000003f,0x00000002,0x00000042,0x0003003e,0x0000002e,0x00000043,
0x00050041,0x0000001e,0x00000045,0x00000015,0x00000044,0x0004003d,0x00000012,0x00000046,
0x00000045,0x000500ab,0x00000021,0x00000047,0x00000046,0x00000022,0x000300f7,0x00000049,
- 0x00000000,0x000400fa,0x00000047,0x00000048,0x0000004e,0x000200f8,0x00000048,0x0004003d,
- 0x0000002c,0x0000004a,0x0000003d,0x0007004f,0x00000007,0x0000004b,0x0000004a,0x0000004a,
- 0x00000000,0x00000003,0x0004003d,0x0000002c,0x0000004c,0x0000003d,0x0009004f,0x0000002c,
- 0x0000004d,0x0000004c,0x0000004b,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,
- 0x0000003d,0x0000004d,0x000200f9,0x00000049,0x000200f8,0x0000004e,0x00050041,0x0000001e,
- 0x00000050,0x00000015,0x0000004f,0x0004003d,0x00000012,0x00000051,0x00000050,0x000500ab,
- 0x00000021,0x00000052,0x00000051,0x00000022,0x000300f7,0x00000054,0x00000000,0x000400fa,
- 0x00000052,0x00000053,0x00000054,0x000200f8,0x00000053,0x00050041,0x00000027,0x00000056,
- 0x0000003d,0x00000055,0x0004003d,0x00000006,0x00000057,0x00000056,0x00050041,0x00000027,
- 0x00000058,0x0000003d,0x00000022,0x0003003e,0x00000058,0x00000057,0x000200f9,0x00000054,
- 0x000200f8,0x00000054,0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,
- 0x0000005b,0x0000003d,0x0003003e,0x0000005a,0x0000005b,0x000100fd,0x00010038
+ 0x00000000,0x000400fa,0x00000047,0x00000048,0x00000055,0x000200f8,0x00000048,0x00050041,
+ 0x0000004b,0x0000004c,0x0000002e,0x0000004a,0x0004003d,0x00000012,0x0000004d,0x0000004c,
+ 0x0004003d,0x0000002c,0x0000004f,0x0000002e,0x0008004f,0x0000004e,0x00000050,0x0000004f,
+ 0x0000004f,0x00000000,0x00000001,0x00000002,0x00060050,0x0000004e,0x00000051,0x0000004d,
+ 0x0000004d,0x0000004d,0x00050084,0x0000004e,0x00000052,0x00000050,0x00000051,0x0004003d,
+ 0x0000002c,0x00000053,0x0000002e,0x0009004f,0x0000002c,0x00000054,0x00000053,0x00000052,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000054,0x000200f9,
+ 0x00000049,0x000200f8,0x00000055,0x00050041,0x0000001e,0x00000057,0x00000015,0x00000056,
+ 0x0004003d,0x00000012,0x00000058,0x00000057,0x000500ab,0x00000021,0x00000059,0x00000058,
+ 0x00000022,0x000300f7,0x0000005b,0x00000000,0x000400fa,0x00000059,0x0000005a,0x0000005b,
+ 0x000200f8,0x0000005a,0x00050041,0x0000004b,0x0000005c,0x0000002e,0x0000004a,0x0004003d,
+ 0x00000012,0x0000005d,0x0000005c,0x000500ac,0x00000021,0x0000005e,0x0000005d,0x00000022,
+ 0x000200f9,0x0000005b,0x000200f8,0x0000005b,0x000700f5,0x00000021,0x0000005f,0x00000059,
+ 0x00000055,0x0000005e,0x0000005a,0x000300f7,0x00000061,0x00000000,0x000400fa,0x0000005f,
+ 0x00000060,0x00000061,0x000200f8,0x00000060,0x00050041,0x0000004b,0x00000062,0x0000002e,
+ 0x0000004a,0x0004003d,0x00000012,0x00000063,0x00000062,0x0004003d,0x0000002c,0x00000064,
+ 0x0000002e,0x0008004f,0x0000004e,0x00000065,0x00000064,0x00000064,0x00000000,0x00000001,
+ 0x00000002,0x00060050,0x0000004e,0x00000066,0x00000063,0x00000063,0x00000063,0x00050086,
+ 0x0000004e,0x00000067,0x00000065,0x00000066,0x0004003d,0x0000002c,0x00000068,0x0000002e,
+ 0x0009004f,0x0000002c,0x00000069,0x00000068,0x00000067,0x00000004,0x00000005,0x00000006,
+ 0x00000003,0x0003003e,0x0000002e,0x00000069,0x000200f9,0x00000061,0x000200f8,0x00000061,
+ 0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,0x0000006c,0x0000002e,
+ 0x00040070,0x0000000b,0x0000006d,0x0000006c,0x0003003e,0x0000006b,0x0000006d,0x00050041,
+ 0x0000001e,0x0000006f,0x00000015,0x0000006e,0x0004003d,0x00000012,0x00000070,0x0000006f,
+ 0x000500ab,0x00000021,0x00000071,0x00000070,0x00000022,0x000300f7,0x00000073,0x00000000,
+ 0x000400fa,0x00000071,0x00000072,0x00000078,0x000200f8,0x00000072,0x0004003d,0x0000000b,
+ 0x00000074,0x0000006b,0x0007004f,0x0000000e,0x00000075,0x00000074,0x00000074,0x00000000,
+ 0x00000003,0x0004003d,0x0000000b,0x00000076,0x0000006b,0x0009004f,0x0000000b,0x00000077,
+ 0x00000076,0x00000075,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x0000006b,
+ 0x00000077,0x000200f9,0x00000073,0x000200f8,0x00000078,0x00050041,0x0000001e,0x0000007a,
+ 0x00000015,0x00000079,0x0004003d,0x00000012,0x0000007b,0x0000007a,0x000500ab,0x00000021,
+ 0x0000007c,0x0000007b,0x00000022,0x000300f7,0x0000007e,0x00000000,0x000400fa,0x0000007c,
+ 0x0000007d,0x00000083,0x000200f8,0x0000007d,0x00050041,0x0000007f,0x00000080,0x0000006b,
+ 0x0000004a,0x0004003d,0x0000000a,0x00000081,0x00000080,0x00050041,0x0000007f,0x00000082,
+ 0x0000006b,0x00000022,0x0003003e,0x00000082,0x00000081,0x000200f9,0x0000007e,0x000200f8,
+ 0x00000083,0x00050041,0x00000039,0x00000086,0x00000015,0x00000085,0x0004003d,0x00000006,
+ 0x00000087,0x00000086,0x0003003e,0x00000084,0x00000087,0x0004003d,0x00000006,0x00000088,
+ 0x00000084,0x000500c7,0x00000006,0x00000089,0x00000088,0x00000040,0x000500ab,0x00000021,
+ 0x0000008a,0x00000089,0x00000033,0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,
+ 0x0000008b,0x0000008c,0x000200f8,0x0000008b,0x00050041,0x0000007f,0x0000008e,0x0000006b,
+ 0x00000026,0x0003003e,0x0000008e,0x0000008d,0x000200f9,0x0000008c,0x000200f8,0x0000008c,
+ 0x0004003d,0x00000006,0x0000008f,0x00000084,0x000500c7,0x00000006,0x00000090,0x0000008f,
+ 0x0000001d,0x000500ab,0x00000021,0x00000091,0x00000090,0x00000033,0x000300f7,0x00000093,
+ 0x00000000,0x000400fa,0x00000091,0x00000092,0x00000093,0x000200f8,0x00000092,0x00050041,
+ 0x0000007f,0x00000095,0x0000006b,0x00000094,0x0003003e,0x00000095,0x0000008d,0x000200f9,
+ 0x00000093,0x000200f8,0x00000093,0x0004003d,0x00000006,0x00000096,0x00000084,0x000500c7,
+ 0x00000006,0x00000097,0x00000096,0x00000079,0x000500ab,0x00000021,0x00000098,0x00000097,
+ 0x00000033,0x000300f7,0x0000009a,0x00000000,0x000400fa,0x00000098,0x00000099,0x0000009a,
+ 0x000200f8,0x00000099,0x00050041,0x0000007f,0x0000009c,0x0000006b,0x0000004a,0x0003003e,
+ 0x0000009c,0x0000009b,0x000200f9,0x0000009a,0x000200f8,0x0000009a,0x000200f9,0x0000007e,
+ 0x000200f8,0x0000007e,0x000200f9,0x00000073,0x000200f8,0x00000073,0x0004003d,0x0000000b,
+ 0x0000009f,0x0000006b,0x0003003e,0x0000009e,0x0000009f,0x000100fd,0x00010038
};
#if 0 // Generated from:
@@ -85,19 +138,25 @@
#extension GL_EXT_samplerless_texture_functions : require
-layout(set = 0, binding = 0)uniform itexture2D src;
-layout(location = 0)out ivec4 dest;
+layout(set = 0, binding = 0)uniform utexture2DArray src;
+layout(location = 0)out vec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -109,9 +168,18 @@
if(params . flipY)
srcSubImageCoords . y = - srcSubImageCoords . y;
- ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
- ivec4 destValue = ivec4(srcValue);
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ vec4 destValue = vec4(srcValue);
if(params . destHasLuminance)
{
@@ -121,6 +189,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc
deleted file mode 100644
index a9c46fb..0000000
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc
+++ /dev/null
@@ -1,125 +0,0 @@
- // 7.11.3009
- #pragma once
-const uint32_t kImageCopy_frag_00000006[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005a,0x00000000,0x00020011,0x00000001,0x0006000b,
- 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000058,0x00030010,
- 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
- 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
- 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
- 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000003f,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x00000058,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,0x00000000,
- 0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000058,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,
- 0x00000012,0x00000004,0x00040020,0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,
- 0x00000012,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,
- 0x00000030,0x00000000,0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,
- 0x00000006,0x00000033,0x00000004,0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,
- 0x00000039,0x00000009,0x00000006,0x00040017,0x0000003d,0x00000006,0x00000004,0x00040020,
- 0x0000003e,0x00000007,0x0000003d,0x0004002b,0x00000006,0x00000042,0x00000001,0x0004002b,
- 0x00000006,0x0000004d,0x00000002,0x0004002b,0x00000012,0x00000053,0x00000003,0x00040020,
- 0x00000057,0x00000003,0x0000003d,0x0004003b,0x00000057,0x00000058,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,
- 0x0000002e,0x00000007,0x0004003b,0x0000003e,0x0000003f,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,
- 0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,
- 0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,
- 0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,
- 0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x0004003d,0x0000002c,
- 0x00000040,0x0000002e,0x0004007c,0x0000003d,0x00000041,0x00000040,0x0003003e,0x0000003f,
- 0x00000041,0x00050041,0x0000001e,0x00000043,0x00000015,0x00000042,0x0004003d,0x00000012,
- 0x00000044,0x00000043,0x000500ab,0x00000021,0x00000045,0x00000044,0x00000022,0x000300f7,
- 0x00000047,0x00000000,0x000400fa,0x00000045,0x00000046,0x0000004c,0x000200f8,0x00000046,
- 0x0004003d,0x0000003d,0x00000048,0x0000003f,0x0007004f,0x00000007,0x00000049,0x00000048,
- 0x00000048,0x00000000,0x00000003,0x0004003d,0x0000003d,0x0000004a,0x0000003f,0x0009004f,
- 0x0000003d,0x0000004b,0x0000004a,0x00000049,0x00000004,0x00000005,0x00000002,0x00000003,
- 0x0003003e,0x0000003f,0x0000004b,0x000200f9,0x00000047,0x000200f8,0x0000004c,0x00050041,
- 0x0000001e,0x0000004e,0x00000015,0x0000004d,0x0004003d,0x00000012,0x0000004f,0x0000004e,
- 0x000500ab,0x00000021,0x00000050,0x0000004f,0x00000022,0x000300f7,0x00000052,0x00000000,
- 0x000400fa,0x00000050,0x00000051,0x00000052,0x000200f8,0x00000051,0x00050041,0x00000027,
- 0x00000054,0x0000003f,0x00000053,0x0004003d,0x00000006,0x00000055,0x00000054,0x00050041,
- 0x00000027,0x00000056,0x0000003f,0x00000022,0x0003003e,0x00000056,0x00000055,0x000200f9,
- 0x00000052,0x000200f8,0x00000052,0x000200f9,0x00000047,0x000200f8,0x00000047,0x0004003d,
- 0x0000003d,0x00000059,0x0000003f,0x0003003e,0x00000058,0x00000059,0x000100fd,0x00010038
-};
-
-#if 0 // Generated from:
-#version 450 core
-
-#extension GL_EXT_samplerless_texture_functions : require
-
-layout(set = 0, binding = 0)uniform utexture2D src;
-layout(location = 0)out ivec4 dest;
-
-layout(push_constant)uniform PushConstants {
-
- bool flipY;
-
- bool destHasLuminance;
- bool destIsAlpha;
-
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
-} params;
-
-void main()
-{
- ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
-
- ivec2 srcSubImageCoords = destSubImageCoords;
-
- if(params . flipY)
- srcSubImageCoords . y = - srcSubImageCoords . y;
-
- uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
-
- ivec4 destValue = ivec4(srcValue);
-
- if(params . destHasLuminance)
- {
- destValue . rg = destValue . ra;
- }
- else if(params . destIsAlpha)
- {
- destValue . r = destValue . a;
- }
-
- dest = destValue;
-}
-#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc
index 8f32d33..66546cd 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc
@@ -1,82 +1,130 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000008[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005b,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x00000096,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000059,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000094,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x0000003e,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x00000059,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,0x00000000,
- 0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x00000059,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,
- 0x00000007,0x0000000b,0x00090019,0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000000,
- 0x00000000,0x00000001,0x00000000,0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,
- 0x0000002f,0x00000030,0x00000000,0x0004002b,0x00000006,0x00000032,0x00000004,0x0004002b,
- 0x00000006,0x00000037,0x00000003,0x00040020,0x00000038,0x00000009,0x00000006,0x00040017,
- 0x0000003c,0x00000012,0x00000004,0x00040020,0x0000003d,0x00000007,0x0000003c,0x0004002b,
- 0x00000006,0x00000041,0x00000001,0x00040017,0x00000047,0x00000012,0x00000002,0x0004002b,
- 0x00000006,0x0000004d,0x00000002,0x0004002b,0x00000012,0x00000053,0x00000003,0x00040020,
- 0x00000054,0x00000007,0x00000012,0x00040020,0x00000058,0x00000003,0x0000003c,0x0004003b,
- 0x00000058,0x00000059,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
- 0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,
- 0x0000001b,0x00000007,0x0004003b,0x0000002c,0x0000002d,0x00000007,0x0004003b,0x0000003d,
- 0x0000003e,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,
- 0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,
- 0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,
- 0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,
- 0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,
- 0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,
- 0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,
- 0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,
- 0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,
- 0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,
- 0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,
- 0x00000025,0x0004003d,0x0000002e,0x00000031,0x00000030,0x00050041,0x00000017,0x00000033,
- 0x00000015,0x00000032,0x0004003d,0x00000007,0x00000034,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x0000001b,0x00050080,0x00000007,0x00000036,0x00000034,0x00000035,0x00050041,
- 0x00000038,0x00000039,0x00000015,0x00000037,0x0004003d,0x00000006,0x0000003a,0x00000039,
- 0x0007005f,0x0000000b,0x0000003b,0x00000031,0x00000036,0x00000002,0x0000003a,0x0003003e,
- 0x0000002d,0x0000003b,0x0004003d,0x0000000b,0x0000003f,0x0000002d,0x0004006d,0x0000003c,
- 0x00000040,0x0000003f,0x0003003e,0x0000003e,0x00000040,0x00050041,0x0000001e,0x00000042,
- 0x00000015,0x00000041,0x0004003d,0x00000012,0x00000043,0x00000042,0x000500ab,0x00000021,
- 0x00000044,0x00000043,0x00000022,0x000300f7,0x00000046,0x00000000,0x000400fa,0x00000044,
- 0x00000045,0x0000004c,0x000200f8,0x00000045,0x0004003d,0x0000003c,0x00000048,0x0000003e,
- 0x0007004f,0x00000047,0x00000049,0x00000048,0x00000048,0x00000000,0x00000003,0x0004003d,
- 0x0000003c,0x0000004a,0x0000003e,0x0009004f,0x0000003c,0x0000004b,0x0000004a,0x00000049,
- 0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x0000003e,0x0000004b,0x000200f9,
- 0x00000046,0x000200f8,0x0000004c,0x00050041,0x0000001e,0x0000004e,0x00000015,0x0000004d,
- 0x0004003d,0x00000012,0x0000004f,0x0000004e,0x000500ab,0x00000021,0x00000050,0x0000004f,
- 0x00000022,0x000300f7,0x00000052,0x00000000,0x000400fa,0x00000050,0x00000051,0x00000052,
- 0x000200f8,0x00000051,0x00050041,0x00000054,0x00000055,0x0000003e,0x00000053,0x0004003d,
- 0x00000012,0x00000056,0x00000055,0x00050041,0x00000054,0x00000057,0x0000003e,0x00000022,
- 0x0003003e,0x00000057,0x00000056,0x000200f9,0x00000052,0x000200f8,0x00000052,0x000200f9,
- 0x00000046,0x000200f8,0x00000046,0x0004003d,0x0000003c,0x0000005a,0x0000003e,0x0003003e,
- 0x00000059,0x0000005a,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x00000064,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007c,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000094,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,
+ 0x00000000,0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x00000094,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,0x00000007,0x0000000b,0x00090019,
+ 0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,
+ 0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,0x00000030,0x00000000,
+ 0x0004002b,0x00000006,0x00000032,0x00000000,0x0004002b,0x00000006,0x00000037,0x00000002,
+ 0x00040020,0x00000038,0x00000009,0x00000006,0x0004002b,0x00000006,0x0000003c,0x00000005,
+ 0x0004002b,0x00000012,0x00000042,0x00000003,0x00040020,0x00000043,0x00000007,0x0000000a,
+ 0x00040017,0x00000046,0x0000000a,0x00000003,0x0004002b,0x00000006,0x0000004d,0x00000006,
+ 0x0004002b,0x0000000a,0x00000055,0x00000000,0x00040017,0x00000062,0x00000006,0x00000004,
+ 0x00040020,0x00000063,0x00000007,0x00000062,0x0004002b,0x00000006,0x00000067,0x00000007,
+ 0x0004002b,0x00000006,0x00000072,0x00000008,0x0004002b,0x00000006,0x0000007d,0x00000009,
+ 0x0004002b,0x00000012,0x0000008b,0x00000002,0x00040020,0x00000093,0x00000003,0x00000062,
+ 0x0004003b,0x00000093,0x00000094,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002c,0x0000002d,0x00000007,0x0004003b,
+ 0x00000063,0x00000064,0x00000007,0x0004003b,0x00000027,0x0000007c,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002e,
+ 0x00000031,0x00000030,0x00050041,0x00000017,0x00000033,0x00000015,0x00000032,0x0004003d,
+ 0x00000007,0x00000034,0x00000033,0x0004003d,0x00000007,0x00000035,0x0000001b,0x00050080,
+ 0x00000007,0x00000036,0x00000034,0x00000035,0x00050041,0x00000038,0x00000039,0x00000015,
+ 0x00000037,0x0004003d,0x00000006,0x0000003a,0x00000039,0x0007005f,0x0000000b,0x0000003b,
+ 0x00000031,0x00000036,0x00000002,0x0000003a,0x0003003e,0x0000002d,0x0000003b,0x00050041,
+ 0x0000001e,0x0000003d,0x00000015,0x0000003c,0x0004003d,0x00000012,0x0000003e,0x0000003d,
+ 0x000500ab,0x00000021,0x0000003f,0x0000003e,0x00000022,0x000300f7,0x00000041,0x00000000,
+ 0x000400fa,0x0000003f,0x00000040,0x0000004c,0x000200f8,0x00000040,0x00050041,0x00000043,
+ 0x00000044,0x0000002d,0x00000042,0x0004003d,0x0000000a,0x00000045,0x00000044,0x0004003d,
+ 0x0000000b,0x00000047,0x0000002d,0x0008004f,0x00000046,0x00000048,0x00000047,0x00000047,
+ 0x00000000,0x00000001,0x00000002,0x0005008e,0x00000046,0x00000049,0x00000048,0x00000045,
+ 0x0004003d,0x0000000b,0x0000004a,0x0000002d,0x0009004f,0x0000000b,0x0000004b,0x0000004a,
+ 0x00000049,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,0x0000004b,
+ 0x000200f9,0x00000041,0x000200f8,0x0000004c,0x00050041,0x0000001e,0x0000004e,0x00000015,
+ 0x0000004d,0x0004003d,0x00000012,0x0000004f,0x0000004e,0x000500ab,0x00000021,0x00000050,
+ 0x0000004f,0x00000022,0x000300f7,0x00000052,0x00000000,0x000400fa,0x00000050,0x00000051,
+ 0x00000052,0x000200f8,0x00000051,0x00050041,0x00000043,0x00000053,0x0000002d,0x00000042,
+ 0x0004003d,0x0000000a,0x00000054,0x00000053,0x000500ba,0x00000021,0x00000056,0x00000054,
+ 0x00000055,0x000200f9,0x00000052,0x000200f8,0x00000052,0x000700f5,0x00000021,0x00000057,
+ 0x00000050,0x0000004c,0x00000056,0x00000051,0x000300f7,0x00000059,0x00000000,0x000400fa,
+ 0x00000057,0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,0x00000043,0x0000005a,
+ 0x0000002d,0x00000042,0x0004003d,0x0000000a,0x0000005b,0x0000005a,0x0004003d,0x0000000b,
+ 0x0000005c,0x0000002d,0x0008004f,0x00000046,0x0000005d,0x0000005c,0x0000005c,0x00000000,
+ 0x00000001,0x00000002,0x00060050,0x00000046,0x0000005e,0x0000005b,0x0000005b,0x0000005b,
+ 0x00050088,0x00000046,0x0000005f,0x0000005d,0x0000005e,0x0004003d,0x0000000b,0x00000060,
+ 0x0000002d,0x0009004f,0x0000000b,0x00000061,0x00000060,0x0000005f,0x00000004,0x00000005,
+ 0x00000006,0x00000003,0x0003003e,0x0000002d,0x00000061,0x000200f9,0x00000059,0x000200f8,
+ 0x00000059,0x000200f9,0x00000041,0x000200f8,0x00000041,0x0004003d,0x0000000b,0x00000065,
+ 0x0000002d,0x0004006e,0x00000062,0x00000066,0x00000065,0x0003003e,0x00000064,0x00000066,
+ 0x00050041,0x0000001e,0x00000068,0x00000015,0x00000067,0x0004003d,0x00000012,0x00000069,
+ 0x00000068,0x000500ab,0x00000021,0x0000006a,0x00000069,0x00000022,0x000300f7,0x0000006c,
+ 0x00000000,0x000400fa,0x0000006a,0x0000006b,0x00000071,0x000200f8,0x0000006b,0x0004003d,
+ 0x00000062,0x0000006d,0x00000064,0x0007004f,0x00000007,0x0000006e,0x0000006d,0x0000006d,
+ 0x00000000,0x00000003,0x0004003d,0x00000062,0x0000006f,0x00000064,0x0009004f,0x00000062,
+ 0x00000070,0x0000006f,0x0000006e,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,
+ 0x00000064,0x00000070,0x000200f9,0x0000006c,0x000200f8,0x00000071,0x00050041,0x0000001e,
+ 0x00000073,0x00000015,0x00000072,0x0004003d,0x00000012,0x00000074,0x00000073,0x000500ab,
+ 0x00000021,0x00000075,0x00000074,0x00000022,0x000300f7,0x00000077,0x00000000,0x000400fa,
+ 0x00000075,0x00000076,0x0000007b,0x000200f8,0x00000076,0x00050041,0x00000027,0x00000078,
+ 0x00000064,0x00000042,0x0004003d,0x00000006,0x00000079,0x00000078,0x00050041,0x00000027,
+ 0x0000007a,0x00000064,0x00000022,0x0003003e,0x0000007a,0x00000079,0x000200f9,0x00000077,
+ 0x000200f8,0x0000007b,0x00050041,0x00000038,0x0000007e,0x00000015,0x0000007d,0x0004003d,
+ 0x00000006,0x0000007f,0x0000007e,0x0003003e,0x0000007c,0x0000007f,0x0004003d,0x00000006,
+ 0x00000080,0x0000007c,0x000500c7,0x00000006,0x00000081,0x00000080,0x00000037,0x000500ab,
+ 0x00000021,0x00000082,0x00000081,0x00000032,0x000300f7,0x00000084,0x00000000,0x000400fa,
+ 0x00000082,0x00000083,0x00000084,0x000200f8,0x00000083,0x00050041,0x00000027,0x00000085,
+ 0x00000064,0x00000026,0x0003003e,0x00000085,0x00000032,0x000200f9,0x00000084,0x000200f8,
+ 0x00000084,0x0004003d,0x00000006,0x00000086,0x0000007c,0x000500c7,0x00000006,0x00000087,
+ 0x00000086,0x0000001d,0x000500ab,0x00000021,0x00000088,0x00000087,0x00000032,0x000300f7,
+ 0x0000008a,0x00000000,0x000400fa,0x00000088,0x00000089,0x0000008a,0x000200f8,0x00000089,
+ 0x00050041,0x00000027,0x0000008c,0x00000064,0x0000008b,0x0003003e,0x0000008c,0x00000032,
+ 0x000200f9,0x0000008a,0x000200f8,0x0000008a,0x0004003d,0x00000006,0x0000008d,0x0000007c,
+ 0x000500c7,0x00000006,0x0000008e,0x0000008d,0x00000072,0x000500ab,0x00000021,0x0000008f,
+ 0x0000008e,0x00000032,0x000300f7,0x00000091,0x00000000,0x000400fa,0x0000008f,0x00000090,
+ 0x00000091,0x000200f8,0x00000090,0x00050041,0x00000027,0x00000092,0x00000064,0x00000042,
+ 0x0003003e,0x00000092,0x00000016,0x000200f9,0x00000091,0x000200f8,0x00000091,0x000200f9,
+ 0x00000077,0x000200f8,0x00000077,0x000200f9,0x0000006c,0x000200f8,0x0000006c,0x0004003d,
+ 0x00000062,0x00000095,0x00000064,0x0003003e,0x00000094,0x00000095,0x000100fd,0x00010038
};
#if 0 // Generated from:
@@ -85,18 +133,24 @@
#extension GL_EXT_samplerless_texture_functions : require
layout(set = 0, binding = 0)uniform texture2D src;
-layout(location = 0)out uvec4 dest;
+layout(location = 0)out ivec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -110,7 +164,16 @@
vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
- uvec4 destValue = uvec4(srcValue);
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ ivec4 destValue = ivec4(srcValue);
if(params . destHasLuminance)
{
@@ -120,6 +183,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc
index bbfccd2..f5ef88c 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc
@@ -1,82 +1,135 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_00000009[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005c,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x0000009d,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000005a,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009b,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000003f,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x0000005a,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,0x00000000,
- 0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000005a,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,
- 0x00000006,0x00000004,0x00040020,0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,
- 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,
- 0x00000030,0x00000000,0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,
- 0x00000006,0x00000033,0x00000004,0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,
- 0x00000039,0x00000009,0x00000006,0x00040017,0x0000003d,0x00000012,0x00000004,0x00040020,
- 0x0000003e,0x00000007,0x0000003d,0x0004002b,0x00000006,0x00000042,0x00000001,0x00040017,
- 0x00000048,0x00000012,0x00000002,0x0004002b,0x00000006,0x0000004e,0x00000002,0x0004002b,
- 0x00000012,0x00000054,0x00000003,0x00040020,0x00000055,0x00000007,0x00000012,0x00040020,
- 0x00000059,0x00000003,0x0000003d,0x0004003b,0x00000059,0x0000005a,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,
- 0x0000002e,0x00000007,0x0004003b,0x0000003e,0x0000003f,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,
- 0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,
- 0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,
- 0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,
- 0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x0004003d,0x0000002c,
- 0x00000040,0x0000002e,0x0004007c,0x0000003d,0x00000041,0x00000040,0x0003003e,0x0000003f,
- 0x00000041,0x00050041,0x0000001e,0x00000043,0x00000015,0x00000042,0x0004003d,0x00000012,
- 0x00000044,0x00000043,0x000500ab,0x00000021,0x00000045,0x00000044,0x00000022,0x000300f7,
- 0x00000047,0x00000000,0x000400fa,0x00000045,0x00000046,0x0000004d,0x000200f8,0x00000046,
- 0x0004003d,0x0000003d,0x00000049,0x0000003f,0x0007004f,0x00000048,0x0000004a,0x00000049,
- 0x00000049,0x00000000,0x00000003,0x0004003d,0x0000003d,0x0000004b,0x0000003f,0x0009004f,
- 0x0000003d,0x0000004c,0x0000004b,0x0000004a,0x00000004,0x00000005,0x00000002,0x00000003,
- 0x0003003e,0x0000003f,0x0000004c,0x000200f9,0x00000047,0x000200f8,0x0000004d,0x00050041,
- 0x0000001e,0x0000004f,0x00000015,0x0000004e,0x0004003d,0x00000012,0x00000050,0x0000004f,
- 0x000500ab,0x00000021,0x00000051,0x00000050,0x00000022,0x000300f7,0x00000053,0x00000000,
- 0x000400fa,0x00000051,0x00000052,0x00000053,0x000200f8,0x00000052,0x00050041,0x00000055,
- 0x00000056,0x0000003f,0x00000054,0x0004003d,0x00000012,0x00000057,0x00000056,0x00050041,
- 0x00000055,0x00000058,0x0000003f,0x00000022,0x0003003e,0x00000058,0x00000057,0x000200f9,
- 0x00000053,0x000200f8,0x00000053,0x000200f9,0x00000047,0x000200f8,0x00000047,0x0004003d,
- 0x0000003d,0x0000005b,0x0000003f,0x0003003e,0x0000005a,0x0000005b,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x0000006b,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000083,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009b,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,
+ 0x00000000,0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x0000009b,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,0x00000007,0x0000000b,0x00090019,
+ 0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000001,0x00000000,0x00000001,0x00000000,
+ 0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,0x00000030,0x00000000,
+ 0x0004002b,0x00000006,0x00000032,0x00000000,0x0004002b,0x00000006,0x00000037,0x00000003,
+ 0x00040020,0x00000038,0x00000009,0x00000006,0x00040017,0x0000003b,0x00000006,0x00000003,
+ 0x0004002b,0x00000006,0x0000003f,0x00000002,0x0004002b,0x00000006,0x00000043,0x00000005,
+ 0x0004002b,0x00000012,0x00000049,0x00000003,0x00040020,0x0000004a,0x00000007,0x0000000a,
+ 0x00040017,0x0000004d,0x0000000a,0x00000003,0x0004002b,0x00000006,0x00000054,0x00000006,
+ 0x0004002b,0x0000000a,0x0000005c,0x00000000,0x00040017,0x00000069,0x00000006,0x00000004,
+ 0x00040020,0x0000006a,0x00000007,0x00000069,0x0004002b,0x00000006,0x0000006e,0x00000007,
+ 0x0004002b,0x00000006,0x00000079,0x00000008,0x0004002b,0x00000006,0x00000084,0x00000009,
+ 0x0004002b,0x00000012,0x00000092,0x00000002,0x00040020,0x0000009a,0x00000003,0x00000069,
+ 0x0004003b,0x0000009a,0x0000009b,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002c,0x0000002d,0x00000007,0x0004003b,
+ 0x0000006a,0x0000006b,0x00000007,0x0004003b,0x00000027,0x00000083,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002e,
+ 0x00000031,0x00000030,0x00050041,0x00000017,0x00000033,0x00000015,0x00000032,0x0004003d,
+ 0x00000007,0x00000034,0x00000033,0x0004003d,0x00000007,0x00000035,0x0000001b,0x00050080,
+ 0x00000007,0x00000036,0x00000034,0x00000035,0x00050041,0x00000038,0x00000039,0x00000015,
+ 0x00000037,0x0004003d,0x00000006,0x0000003a,0x00000039,0x00050051,0x00000006,0x0000003c,
+ 0x00000036,0x00000000,0x00050051,0x00000006,0x0000003d,0x00000036,0x00000001,0x00060050,
+ 0x0000003b,0x0000003e,0x0000003c,0x0000003d,0x0000003a,0x00050041,0x00000038,0x00000040,
+ 0x00000015,0x0000003f,0x0004003d,0x00000006,0x00000041,0x00000040,0x0007005f,0x0000000b,
+ 0x00000042,0x00000031,0x0000003e,0x00000002,0x00000041,0x0003003e,0x0000002d,0x00000042,
+ 0x00050041,0x0000001e,0x00000044,0x00000015,0x00000043,0x0004003d,0x00000012,0x00000045,
+ 0x00000044,0x000500ab,0x00000021,0x00000046,0x00000045,0x00000022,0x000300f7,0x00000048,
+ 0x00000000,0x000400fa,0x00000046,0x00000047,0x00000053,0x000200f8,0x00000047,0x00050041,
+ 0x0000004a,0x0000004b,0x0000002d,0x00000049,0x0004003d,0x0000000a,0x0000004c,0x0000004b,
+ 0x0004003d,0x0000000b,0x0000004e,0x0000002d,0x0008004f,0x0000004d,0x0000004f,0x0000004e,
+ 0x0000004e,0x00000000,0x00000001,0x00000002,0x0005008e,0x0000004d,0x00000050,0x0000004f,
+ 0x0000004c,0x0004003d,0x0000000b,0x00000051,0x0000002d,0x0009004f,0x0000000b,0x00000052,
+ 0x00000051,0x00000050,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,
+ 0x00000052,0x000200f9,0x00000048,0x000200f8,0x00000053,0x00050041,0x0000001e,0x00000055,
+ 0x00000015,0x00000054,0x0004003d,0x00000012,0x00000056,0x00000055,0x000500ab,0x00000021,
+ 0x00000057,0x00000056,0x00000022,0x000300f7,0x00000059,0x00000000,0x000400fa,0x00000057,
+ 0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,0x0000004a,0x0000005a,0x0000002d,
+ 0x00000049,0x0004003d,0x0000000a,0x0000005b,0x0000005a,0x000500ba,0x00000021,0x0000005d,
+ 0x0000005b,0x0000005c,0x000200f9,0x00000059,0x000200f8,0x00000059,0x000700f5,0x00000021,
+ 0x0000005e,0x00000057,0x00000053,0x0000005d,0x00000058,0x000300f7,0x00000060,0x00000000,
+ 0x000400fa,0x0000005e,0x0000005f,0x00000060,0x000200f8,0x0000005f,0x00050041,0x0000004a,
+ 0x00000061,0x0000002d,0x00000049,0x0004003d,0x0000000a,0x00000062,0x00000061,0x0004003d,
+ 0x0000000b,0x00000063,0x0000002d,0x0008004f,0x0000004d,0x00000064,0x00000063,0x00000063,
+ 0x00000000,0x00000001,0x00000002,0x00060050,0x0000004d,0x00000065,0x00000062,0x00000062,
+ 0x00000062,0x00050088,0x0000004d,0x00000066,0x00000064,0x00000065,0x0004003d,0x0000000b,
+ 0x00000067,0x0000002d,0x0009004f,0x0000000b,0x00000068,0x00000067,0x00000066,0x00000004,
+ 0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,0x00000068,0x000200f9,0x00000060,
+ 0x000200f8,0x00000060,0x000200f9,0x00000048,0x000200f8,0x00000048,0x0004003d,0x0000000b,
+ 0x0000006c,0x0000002d,0x0004006e,0x00000069,0x0000006d,0x0000006c,0x0003003e,0x0000006b,
+ 0x0000006d,0x00050041,0x0000001e,0x0000006f,0x00000015,0x0000006e,0x0004003d,0x00000012,
+ 0x00000070,0x0000006f,0x000500ab,0x00000021,0x00000071,0x00000070,0x00000022,0x000300f7,
+ 0x00000073,0x00000000,0x000400fa,0x00000071,0x00000072,0x00000078,0x000200f8,0x00000072,
+ 0x0004003d,0x00000069,0x00000074,0x0000006b,0x0007004f,0x00000007,0x00000075,0x00000074,
+ 0x00000074,0x00000000,0x00000003,0x0004003d,0x00000069,0x00000076,0x0000006b,0x0009004f,
+ 0x00000069,0x00000077,0x00000076,0x00000075,0x00000004,0x00000005,0x00000002,0x00000003,
+ 0x0003003e,0x0000006b,0x00000077,0x000200f9,0x00000073,0x000200f8,0x00000078,0x00050041,
+ 0x0000001e,0x0000007a,0x00000015,0x00000079,0x0004003d,0x00000012,0x0000007b,0x0000007a,
+ 0x000500ab,0x00000021,0x0000007c,0x0000007b,0x00000022,0x000300f7,0x0000007e,0x00000000,
+ 0x000400fa,0x0000007c,0x0000007d,0x00000082,0x000200f8,0x0000007d,0x00050041,0x00000027,
+ 0x0000007f,0x0000006b,0x00000049,0x0004003d,0x00000006,0x00000080,0x0000007f,0x00050041,
+ 0x00000027,0x00000081,0x0000006b,0x00000022,0x0003003e,0x00000081,0x00000080,0x000200f9,
+ 0x0000007e,0x000200f8,0x00000082,0x00050041,0x00000038,0x00000085,0x00000015,0x00000084,
+ 0x0004003d,0x00000006,0x00000086,0x00000085,0x0003003e,0x00000083,0x00000086,0x0004003d,
+ 0x00000006,0x00000087,0x00000083,0x000500c7,0x00000006,0x00000088,0x00000087,0x0000003f,
+ 0x000500ab,0x00000021,0x00000089,0x00000088,0x00000032,0x000300f7,0x0000008b,0x00000000,
+ 0x000400fa,0x00000089,0x0000008a,0x0000008b,0x000200f8,0x0000008a,0x00050041,0x00000027,
+ 0x0000008c,0x0000006b,0x00000026,0x0003003e,0x0000008c,0x00000032,0x000200f9,0x0000008b,
+ 0x000200f8,0x0000008b,0x0004003d,0x00000006,0x0000008d,0x00000083,0x000500c7,0x00000006,
+ 0x0000008e,0x0000008d,0x0000001d,0x000500ab,0x00000021,0x0000008f,0x0000008e,0x00000032,
+ 0x000300f7,0x00000091,0x00000000,0x000400fa,0x0000008f,0x00000090,0x00000091,0x000200f8,
+ 0x00000090,0x00050041,0x00000027,0x00000093,0x0000006b,0x00000092,0x0003003e,0x00000093,
+ 0x00000032,0x000200f9,0x00000091,0x000200f8,0x00000091,0x0004003d,0x00000006,0x00000094,
+ 0x00000083,0x000500c7,0x00000006,0x00000095,0x00000094,0x00000079,0x000500ab,0x00000021,
+ 0x00000096,0x00000095,0x00000032,0x000300f7,0x00000098,0x00000000,0x000400fa,0x00000096,
+ 0x00000097,0x00000098,0x000200f8,0x00000097,0x00050041,0x00000027,0x00000099,0x0000006b,
+ 0x00000049,0x0003003e,0x00000099,0x00000016,0x000200f9,0x00000098,0x000200f8,0x00000098,
+ 0x000200f9,0x0000007e,0x000200f8,0x0000007e,0x000200f9,0x00000073,0x000200f8,0x00000073,
+ 0x0004003d,0x00000069,0x0000009c,0x0000006b,0x0003003e,0x0000009b,0x0000009c,0x000100fd,
+ 0x00010038
};
#if 0 // Generated from:
@@ -84,19 +137,25 @@
#extension GL_EXT_samplerless_texture_functions : require
-layout(set = 0, binding = 0)uniform itexture2D src;
-layout(location = 0)out uvec4 dest;
+layout(set = 0, binding = 0)uniform texture2DArray src;
+layout(location = 0)out ivec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -108,9 +167,18 @@
if(params . flipY)
srcSubImageCoords . y = - srcSubImageCoords . y;
- ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
- uvec4 destValue = uvec4(srcValue);
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ ivec4 destValue = ivec4(srcValue);
if(params . destHasLuminance)
{
@@ -120,6 +188,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc
index 169888d..a55e00b 100644
--- a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc
@@ -1,84 +1,133 @@
// 7.11.3009
#pragma once
const uint32_t kImageCopy_frag_0000000A[] = {
- 0x07230203,0x00010000,0x00080007,0x0000005e,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x07230203,0x00010000,0x00080007,0x00000098,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
- 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000005c,0x00030010,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000096,0x00030010,
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
- 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00050006,
- 0x00000013,0x00000000,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000001,0x74736564,
- 0x4c736148,0x6e696d75,0x65636e61,0x00000000,0x00060006,0x00000013,0x00000002,0x74736564,
- 0x6c417349,0x00616870,0x00050006,0x00000013,0x00000003,0x4d637273,0x00007069,0x00060006,
- 0x00000013,0x00000004,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000005,
- 0x74736564,0x7366664f,0x00007465,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,
- 0x0000001b,0x53637273,0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,
- 0x56637273,0x65756c61,0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000003d,
- 0x74736564,0x756c6156,0x00000065,0x00040005,0x0000005c,0x74736564,0x00000000,0x00040047,
- 0x0000000d,0x0000000b,0x0000000f,0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,
- 0x00050048,0x00000013,0x00000001,0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,
- 0x00000023,0x00000008,0x00050048,0x00000013,0x00000003,0x00000023,0x0000000c,0x00050048,
- 0x00000013,0x00000004,0x00000023,0x00000010,0x00050048,0x00000013,0x00000005,0x00000023,
- 0x00000018,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,0x00000000,
- 0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000005c,0x0000001e,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,
- 0x0008001e,0x00000013,0x00000012,0x00000012,0x00000012,0x00000006,0x00000007,0x00000007,
- 0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,
- 0x0004002b,0x00000006,0x00000016,0x00000005,0x00040020,0x00000017,0x00000009,0x00000007,
- 0x0004002b,0x00000006,0x0000001d,0x00000000,0x00040020,0x0000001e,0x00000009,0x00000012,
- 0x00020014,0x00000021,0x0004002b,0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,
- 0x00000026,0x00000001,0x00040020,0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,
- 0x00000012,0x00000004,0x00040020,0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,
- 0x00000012,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,
- 0x00000030,0x00000000,0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,
- 0x00000006,0x00000033,0x00000004,0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,
- 0x00000039,0x00000009,0x00000006,0x0004002b,0x00000006,0x00000044,0x00000001,0x00040017,
- 0x0000004a,0x00000012,0x00000002,0x0004002b,0x00000006,0x00000050,0x00000002,0x0004002b,
- 0x00000012,0x00000056,0x00000003,0x00040020,0x00000057,0x00000007,0x00000012,0x00040020,
- 0x0000005b,0x00000003,0x0000002c,0x0004003b,0x0000005b,0x0000005c,0x00000003,0x00050036,
- 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,
- 0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,
- 0x0000002e,0x00000007,0x0004003b,0x0000002d,0x0000003d,0x00000007,0x0004003d,0x0000000b,
- 0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,
- 0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,
- 0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,
- 0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,
- 0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,
- 0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,
- 0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,
- 0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,
- 0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,
- 0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,
- 0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,
- 0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,
- 0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,
- 0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,
- 0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,
- 0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x0004003d,0x0000002c,
- 0x0000003e,0x0000002e,0x00050051,0x00000012,0x0000003f,0x0000003e,0x00000000,0x00050051,
- 0x00000012,0x00000040,0x0000003e,0x00000001,0x00050051,0x00000012,0x00000041,0x0000003e,
- 0x00000002,0x00050051,0x00000012,0x00000042,0x0000003e,0x00000003,0x00070050,0x0000002c,
- 0x00000043,0x0000003f,0x00000040,0x00000041,0x00000042,0x0003003e,0x0000003d,0x00000043,
- 0x00050041,0x0000001e,0x00000045,0x00000015,0x00000044,0x0004003d,0x00000012,0x00000046,
- 0x00000045,0x000500ab,0x00000021,0x00000047,0x00000046,0x00000022,0x000300f7,0x00000049,
- 0x00000000,0x000400fa,0x00000047,0x00000048,0x0000004f,0x000200f8,0x00000048,0x0004003d,
- 0x0000002c,0x0000004b,0x0000003d,0x0007004f,0x0000004a,0x0000004c,0x0000004b,0x0000004b,
- 0x00000000,0x00000003,0x0004003d,0x0000002c,0x0000004d,0x0000003d,0x0009004f,0x0000002c,
- 0x0000004e,0x0000004d,0x0000004c,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,
- 0x0000003d,0x0000004e,0x000200f9,0x00000049,0x000200f8,0x0000004f,0x00050041,0x0000001e,
- 0x00000051,0x00000015,0x00000050,0x0004003d,0x00000012,0x00000052,0x00000051,0x000500ab,
- 0x00000021,0x00000053,0x00000052,0x00000022,0x000300f7,0x00000055,0x00000000,0x000400fa,
- 0x00000053,0x00000054,0x00000055,0x000200f8,0x00000054,0x00050041,0x00000057,0x00000058,
- 0x0000003d,0x00000056,0x0004003d,0x00000012,0x00000059,0x00000058,0x00050041,0x00000057,
- 0x0000005a,0x0000003d,0x00000022,0x0003003e,0x0000005a,0x00000059,0x000200f9,0x00000055,
- 0x000200f8,0x00000055,0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,
- 0x0000005d,0x0000003d,0x0003003e,0x0000005c,0x0000005d,0x000100fd,0x00010038
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000062,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007e,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000096,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000096,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000006,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000006,0x00000001,0x00000000,
+ 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000002,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x0004002b,0x00000006,0x0000003d,0x00000005,0x0004002b,0x00000012,0x00000043,0x00000003,
+ 0x00040017,0x00000046,0x00000006,0x00000003,0x0004002b,0x00000006,0x0000004e,0x00000006,
+ 0x0004002b,0x00000006,0x00000069,0x00000007,0x0004002b,0x00000006,0x00000074,0x00000008,
+ 0x0004002b,0x00000006,0x0000007f,0x00000009,0x0004002b,0x00000012,0x0000008d,0x00000002,
+ 0x00040020,0x00000095,0x00000003,0x0000002c,0x0004003b,0x00000095,0x00000096,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002d,0x0000002e,0x00000007,0x0004003b,0x0000002d,0x00000062,0x00000007,0x0004003b,
+ 0x00000027,0x0000007e,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,0x00000031,0x00050041,0x00000017,
+ 0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,0x00000035,0x00000034,0x0004003d,
+ 0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,0x00000037,0x00000035,0x00000036,
+ 0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,0x0004003d,0x00000006,0x0000003b,
+ 0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,0x00000037,0x00000002,0x0000003b,
+ 0x0003003e,0x0000002e,0x0000003c,0x00050041,0x0000001e,0x0000003e,0x00000015,0x0000003d,
+ 0x0004003d,0x00000012,0x0000003f,0x0000003e,0x000500ab,0x00000021,0x00000040,0x0000003f,
+ 0x00000022,0x000300f7,0x00000042,0x00000000,0x000400fa,0x00000040,0x00000041,0x0000004d,
+ 0x000200f8,0x00000041,0x00050041,0x00000027,0x00000044,0x0000002e,0x00000043,0x0004003d,
+ 0x00000006,0x00000045,0x00000044,0x0004003d,0x0000002c,0x00000047,0x0000002e,0x0008004f,
+ 0x00000046,0x00000048,0x00000047,0x00000047,0x00000000,0x00000001,0x00000002,0x00060050,
+ 0x00000046,0x00000049,0x00000045,0x00000045,0x00000045,0x00050084,0x00000046,0x0000004a,
+ 0x00000048,0x00000049,0x0004003d,0x0000002c,0x0000004b,0x0000002e,0x0009004f,0x0000002c,
+ 0x0000004c,0x0000004b,0x0000004a,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,
+ 0x0000002e,0x0000004c,0x000200f9,0x00000042,0x000200f8,0x0000004d,0x00050041,0x0000001e,
+ 0x0000004f,0x00000015,0x0000004e,0x0004003d,0x00000012,0x00000050,0x0000004f,0x000500ab,
+ 0x00000021,0x00000051,0x00000050,0x00000022,0x000300f7,0x00000053,0x00000000,0x000400fa,
+ 0x00000051,0x00000052,0x00000053,0x000200f8,0x00000052,0x00050041,0x00000027,0x00000054,
+ 0x0000002e,0x00000043,0x0004003d,0x00000006,0x00000055,0x00000054,0x000500ad,0x00000021,
+ 0x00000056,0x00000055,0x00000033,0x000200f9,0x00000053,0x000200f8,0x00000053,0x000700f5,
+ 0x00000021,0x00000057,0x00000051,0x0000004d,0x00000056,0x00000052,0x000300f7,0x00000059,
+ 0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,
+ 0x00000027,0x0000005a,0x0000002e,0x00000043,0x0004003d,0x00000006,0x0000005b,0x0000005a,
+ 0x0004003d,0x0000002c,0x0000005c,0x0000002e,0x0008004f,0x00000046,0x0000005d,0x0000005c,
+ 0x0000005c,0x00000000,0x00000001,0x00000002,0x00060050,0x00000046,0x0000005e,0x0000005b,
+ 0x0000005b,0x0000005b,0x00050087,0x00000046,0x0000005f,0x0000005d,0x0000005e,0x0004003d,
+ 0x0000002c,0x00000060,0x0000002e,0x0009004f,0x0000002c,0x00000061,0x00000060,0x0000005f,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000061,0x000200f9,
+ 0x00000059,0x000200f8,0x00000059,0x000200f9,0x00000042,0x000200f8,0x00000042,0x0004003d,
+ 0x0000002c,0x00000063,0x0000002e,0x00050051,0x00000006,0x00000064,0x00000063,0x00000000,
+ 0x00050051,0x00000006,0x00000065,0x00000063,0x00000001,0x00050051,0x00000006,0x00000066,
+ 0x00000063,0x00000002,0x00050051,0x00000006,0x00000067,0x00000063,0x00000003,0x00070050,
+ 0x0000002c,0x00000068,0x00000064,0x00000065,0x00000066,0x00000067,0x0003003e,0x00000062,
+ 0x00000068,0x00050041,0x0000001e,0x0000006a,0x00000015,0x00000069,0x0004003d,0x00000012,
+ 0x0000006b,0x0000006a,0x000500ab,0x00000021,0x0000006c,0x0000006b,0x00000022,0x000300f7,
+ 0x0000006e,0x00000000,0x000400fa,0x0000006c,0x0000006d,0x00000073,0x000200f8,0x0000006d,
+ 0x0004003d,0x0000002c,0x0000006f,0x00000062,0x0007004f,0x00000007,0x00000070,0x0000006f,
+ 0x0000006f,0x00000000,0x00000003,0x0004003d,0x0000002c,0x00000071,0x00000062,0x0009004f,
+ 0x0000002c,0x00000072,0x00000071,0x00000070,0x00000004,0x00000005,0x00000002,0x00000003,
+ 0x0003003e,0x00000062,0x00000072,0x000200f9,0x0000006e,0x000200f8,0x00000073,0x00050041,
+ 0x0000001e,0x00000075,0x00000015,0x00000074,0x0004003d,0x00000012,0x00000076,0x00000075,
+ 0x000500ab,0x00000021,0x00000077,0x00000076,0x00000022,0x000300f7,0x00000079,0x00000000,
+ 0x000400fa,0x00000077,0x00000078,0x0000007d,0x000200f8,0x00000078,0x00050041,0x00000027,
+ 0x0000007a,0x00000062,0x00000043,0x0004003d,0x00000006,0x0000007b,0x0000007a,0x00050041,
+ 0x00000027,0x0000007c,0x00000062,0x00000022,0x0003003e,0x0000007c,0x0000007b,0x000200f9,
+ 0x00000079,0x000200f8,0x0000007d,0x00050041,0x00000039,0x00000080,0x00000015,0x0000007f,
+ 0x0004003d,0x00000006,0x00000081,0x00000080,0x0003003e,0x0000007e,0x00000081,0x0004003d,
+ 0x00000006,0x00000082,0x0000007e,0x000500c7,0x00000006,0x00000083,0x00000082,0x00000038,
+ 0x000500ab,0x00000021,0x00000084,0x00000083,0x00000033,0x000300f7,0x00000086,0x00000000,
+ 0x000400fa,0x00000084,0x00000085,0x00000086,0x000200f8,0x00000085,0x00050041,0x00000027,
+ 0x00000087,0x00000062,0x00000026,0x0003003e,0x00000087,0x00000033,0x000200f9,0x00000086,
+ 0x000200f8,0x00000086,0x0004003d,0x00000006,0x00000088,0x0000007e,0x000500c7,0x00000006,
+ 0x00000089,0x00000088,0x0000001d,0x000500ab,0x00000021,0x0000008a,0x00000089,0x00000033,
+ 0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,0x0000008b,0x0000008c,0x000200f8,
+ 0x0000008b,0x00050041,0x00000027,0x0000008e,0x00000062,0x0000008d,0x0003003e,0x0000008e,
+ 0x00000033,0x000200f9,0x0000008c,0x000200f8,0x0000008c,0x0004003d,0x00000006,0x0000008f,
+ 0x0000007e,0x000500c7,0x00000006,0x00000090,0x0000008f,0x00000074,0x000500ab,0x00000021,
+ 0x00000091,0x00000090,0x00000033,0x000300f7,0x00000093,0x00000000,0x000400fa,0x00000091,
+ 0x00000092,0x00000093,0x000200f8,0x00000092,0x00050041,0x00000027,0x00000094,0x00000062,
+ 0x00000043,0x0003003e,0x00000094,0x00000016,0x000200f9,0x00000093,0x000200f8,0x00000093,
+ 0x000200f9,0x00000079,0x000200f8,0x00000079,0x000200f9,0x0000006e,0x000200f8,0x0000006e,
+ 0x0004003d,0x0000002c,0x00000097,0x00000062,0x0003003e,0x00000096,0x00000097,0x000100fd,
+ 0x00010038
};
#if 0 // Generated from:
@@ -86,19 +135,25 @@
#extension GL_EXT_samplerless_texture_functions : require
-layout(set = 0, binding = 0)uniform utexture2D src;
-layout(location = 0)out uvec4 dest;
+layout(set = 0, binding = 0)uniform itexture2D src;
+layout(location = 0)out ivec4 dest;
layout(push_constant)uniform PushConstants {
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
bool flipY;
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
bool destHasLuminance;
bool destIsAlpha;
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ int destDefaultChannelsMask;
} params;
void main()
@@ -110,9 +165,18 @@
if(params . flipY)
srcSubImageCoords . y = - srcSubImageCoords . y;
- uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+ ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
- uvec4 destValue = uvec4(srcValue);
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ ivec4 destValue = ivec4(srcValue);
if(params . destHasLuminance)
{
@@ -122,6 +186,22 @@
{
destValue . r = destValue . a;
}
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc
new file mode 100644
index 0000000..e15667c
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc
@@ -0,0 +1,211 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_0000000B[] = {
+ 0x07230203,0x00010000,0x00080007,0x0000009e,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009c,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000068,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000084,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009c,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000009c,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000006,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000006,0x00000001,0x00000000,
+ 0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x00040017,0x0000003c,0x00000006,0x00000003,0x0004002b,0x00000006,0x00000040,0x00000002,
+ 0x0004002b,0x00000006,0x00000044,0x00000005,0x0004002b,0x00000012,0x0000004a,0x00000003,
+ 0x0004002b,0x00000006,0x00000054,0x00000006,0x0004002b,0x00000006,0x0000006f,0x00000007,
+ 0x0004002b,0x00000006,0x0000007a,0x00000008,0x0004002b,0x00000006,0x00000085,0x00000009,
+ 0x0004002b,0x00000012,0x00000093,0x00000002,0x00040020,0x0000009b,0x00000003,0x0000002c,
+ 0x0004003b,0x0000009b,0x0000009c,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x0000002d,0x00000068,0x00000007,0x0004003b,0x00000027,0x00000084,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x00050051,0x00000006,0x0000003d,
+ 0x00000037,0x00000000,0x00050051,0x00000006,0x0000003e,0x00000037,0x00000001,0x00060050,
+ 0x0000003c,0x0000003f,0x0000003d,0x0000003e,0x0000003b,0x00050041,0x00000039,0x00000041,
+ 0x00000015,0x00000040,0x0004003d,0x00000006,0x00000042,0x00000041,0x0007005f,0x0000002c,
+ 0x00000043,0x00000032,0x0000003f,0x00000002,0x00000042,0x0003003e,0x0000002e,0x00000043,
+ 0x00050041,0x0000001e,0x00000045,0x00000015,0x00000044,0x0004003d,0x00000012,0x00000046,
+ 0x00000045,0x000500ab,0x00000021,0x00000047,0x00000046,0x00000022,0x000300f7,0x00000049,
+ 0x00000000,0x000400fa,0x00000047,0x00000048,0x00000053,0x000200f8,0x00000048,0x00050041,
+ 0x00000027,0x0000004b,0x0000002e,0x0000004a,0x0004003d,0x00000006,0x0000004c,0x0000004b,
+ 0x0004003d,0x0000002c,0x0000004d,0x0000002e,0x0008004f,0x0000003c,0x0000004e,0x0000004d,
+ 0x0000004d,0x00000000,0x00000001,0x00000002,0x00060050,0x0000003c,0x0000004f,0x0000004c,
+ 0x0000004c,0x0000004c,0x00050084,0x0000003c,0x00000050,0x0000004e,0x0000004f,0x0004003d,
+ 0x0000002c,0x00000051,0x0000002e,0x0009004f,0x0000002c,0x00000052,0x00000051,0x00000050,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000052,0x000200f9,
+ 0x00000049,0x000200f8,0x00000053,0x00050041,0x0000001e,0x00000055,0x00000015,0x00000054,
+ 0x0004003d,0x00000012,0x00000056,0x00000055,0x000500ab,0x00000021,0x00000057,0x00000056,
+ 0x00000022,0x000300f7,0x00000059,0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,
+ 0x000200f8,0x00000058,0x00050041,0x00000027,0x0000005a,0x0000002e,0x0000004a,0x0004003d,
+ 0x00000006,0x0000005b,0x0000005a,0x000500ad,0x00000021,0x0000005c,0x0000005b,0x00000033,
+ 0x000200f9,0x00000059,0x000200f8,0x00000059,0x000700f5,0x00000021,0x0000005d,0x00000057,
+ 0x00000053,0x0000005c,0x00000058,0x000300f7,0x0000005f,0x00000000,0x000400fa,0x0000005d,
+ 0x0000005e,0x0000005f,0x000200f8,0x0000005e,0x00050041,0x00000027,0x00000060,0x0000002e,
+ 0x0000004a,0x0004003d,0x00000006,0x00000061,0x00000060,0x0004003d,0x0000002c,0x00000062,
+ 0x0000002e,0x0008004f,0x0000003c,0x00000063,0x00000062,0x00000062,0x00000000,0x00000001,
+ 0x00000002,0x00060050,0x0000003c,0x00000064,0x00000061,0x00000061,0x00000061,0x00050087,
+ 0x0000003c,0x00000065,0x00000063,0x00000064,0x0004003d,0x0000002c,0x00000066,0x0000002e,
+ 0x0009004f,0x0000002c,0x00000067,0x00000066,0x00000065,0x00000004,0x00000005,0x00000006,
+ 0x00000003,0x0003003e,0x0000002e,0x00000067,0x000200f9,0x0000005f,0x000200f8,0x0000005f,
+ 0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,0x00000069,0x0000002e,
+ 0x00050051,0x00000006,0x0000006a,0x00000069,0x00000000,0x00050051,0x00000006,0x0000006b,
+ 0x00000069,0x00000001,0x00050051,0x00000006,0x0000006c,0x00000069,0x00000002,0x00050051,
+ 0x00000006,0x0000006d,0x00000069,0x00000003,0x00070050,0x0000002c,0x0000006e,0x0000006a,
+ 0x0000006b,0x0000006c,0x0000006d,0x0003003e,0x00000068,0x0000006e,0x00050041,0x0000001e,
+ 0x00000070,0x00000015,0x0000006f,0x0004003d,0x00000012,0x00000071,0x00000070,0x000500ab,
+ 0x00000021,0x00000072,0x00000071,0x00000022,0x000300f7,0x00000074,0x00000000,0x000400fa,
+ 0x00000072,0x00000073,0x00000079,0x000200f8,0x00000073,0x0004003d,0x0000002c,0x00000075,
+ 0x00000068,0x0007004f,0x00000007,0x00000076,0x00000075,0x00000075,0x00000000,0x00000003,
+ 0x0004003d,0x0000002c,0x00000077,0x00000068,0x0009004f,0x0000002c,0x00000078,0x00000077,
+ 0x00000076,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x00000068,0x00000078,
+ 0x000200f9,0x00000074,0x000200f8,0x00000079,0x00050041,0x0000001e,0x0000007b,0x00000015,
+ 0x0000007a,0x0004003d,0x00000012,0x0000007c,0x0000007b,0x000500ab,0x00000021,0x0000007d,
+ 0x0000007c,0x00000022,0x000300f7,0x0000007f,0x00000000,0x000400fa,0x0000007d,0x0000007e,
+ 0x00000083,0x000200f8,0x0000007e,0x00050041,0x00000027,0x00000080,0x00000068,0x0000004a,
+ 0x0004003d,0x00000006,0x00000081,0x00000080,0x00050041,0x00000027,0x00000082,0x00000068,
+ 0x00000022,0x0003003e,0x00000082,0x00000081,0x000200f9,0x0000007f,0x000200f8,0x00000083,
+ 0x00050041,0x00000039,0x00000086,0x00000015,0x00000085,0x0004003d,0x00000006,0x00000087,
+ 0x00000086,0x0003003e,0x00000084,0x00000087,0x0004003d,0x00000006,0x00000088,0x00000084,
+ 0x000500c7,0x00000006,0x00000089,0x00000088,0x00000040,0x000500ab,0x00000021,0x0000008a,
+ 0x00000089,0x00000033,0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,0x0000008b,
+ 0x0000008c,0x000200f8,0x0000008b,0x00050041,0x00000027,0x0000008d,0x00000068,0x00000026,
+ 0x0003003e,0x0000008d,0x00000033,0x000200f9,0x0000008c,0x000200f8,0x0000008c,0x0004003d,
+ 0x00000006,0x0000008e,0x00000084,0x000500c7,0x00000006,0x0000008f,0x0000008e,0x0000001d,
+ 0x000500ab,0x00000021,0x00000090,0x0000008f,0x00000033,0x000300f7,0x00000092,0x00000000,
+ 0x000400fa,0x00000090,0x00000091,0x00000092,0x000200f8,0x00000091,0x00050041,0x00000027,
+ 0x00000094,0x00000068,0x00000093,0x0003003e,0x00000094,0x00000033,0x000200f9,0x00000092,
+ 0x000200f8,0x00000092,0x0004003d,0x00000006,0x00000095,0x00000084,0x000500c7,0x00000006,
+ 0x00000096,0x00000095,0x0000007a,0x000500ab,0x00000021,0x00000097,0x00000096,0x00000033,
+ 0x000300f7,0x00000099,0x00000000,0x000400fa,0x00000097,0x00000098,0x00000099,0x000200f8,
+ 0x00000098,0x00050041,0x00000027,0x0000009a,0x00000068,0x0000004a,0x0003003e,0x0000009a,
+ 0x00000016,0x000200f9,0x00000099,0x000200f8,0x00000099,0x000200f9,0x0000007f,0x000200f8,
+ 0x0000007f,0x000200f9,0x00000074,0x000200f8,0x00000074,0x0004003d,0x0000002c,0x0000009d,
+ 0x00000068,0x0003003e,0x0000009c,0x0000009d,0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform itexture2DArray src;
+layout(location = 0)out ivec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ ivec4 destValue = ivec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000C.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000C.inc
new file mode 100644
index 0000000..20ad303
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000C.inc
@@ -0,0 +1,206 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_0000000C[] = {
+ 0x07230203,0x00010000,0x00080007,0x00000097,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000095,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000065,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007d,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000095,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000095,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000012,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000012,0x00000001,0x00000000,
+ 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000002,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x0004002b,0x00000006,0x0000003d,0x00000005,0x0004002b,0x00000012,0x00000043,0x00000003,
+ 0x00040020,0x00000044,0x00000007,0x00000012,0x00040017,0x00000047,0x00000012,0x00000003,
+ 0x0004002b,0x00000006,0x0000004f,0x00000006,0x00040017,0x00000063,0x00000006,0x00000004,
+ 0x00040020,0x00000064,0x00000007,0x00000063,0x0004002b,0x00000006,0x00000068,0x00000007,
+ 0x0004002b,0x00000006,0x00000073,0x00000008,0x0004002b,0x00000006,0x0000007e,0x00000009,
+ 0x0004002b,0x00000012,0x0000008c,0x00000002,0x00040020,0x00000094,0x00000003,0x00000063,
+ 0x0004003b,0x00000094,0x00000095,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x00000064,0x00000065,0x00000007,0x0004003b,0x00000027,0x0000007d,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x0007005f,0x0000002c,0x0000003c,
+ 0x00000032,0x00000037,0x00000002,0x0000003b,0x0003003e,0x0000002e,0x0000003c,0x00050041,
+ 0x0000001e,0x0000003e,0x00000015,0x0000003d,0x0004003d,0x00000012,0x0000003f,0x0000003e,
+ 0x000500ab,0x00000021,0x00000040,0x0000003f,0x00000022,0x000300f7,0x00000042,0x00000000,
+ 0x000400fa,0x00000040,0x00000041,0x0000004e,0x000200f8,0x00000041,0x00050041,0x00000044,
+ 0x00000045,0x0000002e,0x00000043,0x0004003d,0x00000012,0x00000046,0x00000045,0x0004003d,
+ 0x0000002c,0x00000048,0x0000002e,0x0008004f,0x00000047,0x00000049,0x00000048,0x00000048,
+ 0x00000000,0x00000001,0x00000002,0x00060050,0x00000047,0x0000004a,0x00000046,0x00000046,
+ 0x00000046,0x00050084,0x00000047,0x0000004b,0x00000049,0x0000004a,0x0004003d,0x0000002c,
+ 0x0000004c,0x0000002e,0x0009004f,0x0000002c,0x0000004d,0x0000004c,0x0000004b,0x00000004,
+ 0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x0000004d,0x000200f9,0x00000042,
+ 0x000200f8,0x0000004e,0x00050041,0x0000001e,0x00000050,0x00000015,0x0000004f,0x0004003d,
+ 0x00000012,0x00000051,0x00000050,0x000500ab,0x00000021,0x00000052,0x00000051,0x00000022,
+ 0x000300f7,0x00000054,0x00000000,0x000400fa,0x00000052,0x00000053,0x00000054,0x000200f8,
+ 0x00000053,0x00050041,0x00000044,0x00000055,0x0000002e,0x00000043,0x0004003d,0x00000012,
+ 0x00000056,0x00000055,0x000500ac,0x00000021,0x00000057,0x00000056,0x00000022,0x000200f9,
+ 0x00000054,0x000200f8,0x00000054,0x000700f5,0x00000021,0x00000058,0x00000052,0x0000004e,
+ 0x00000057,0x00000053,0x000300f7,0x0000005a,0x00000000,0x000400fa,0x00000058,0x00000059,
+ 0x0000005a,0x000200f8,0x00000059,0x00050041,0x00000044,0x0000005b,0x0000002e,0x00000043,
+ 0x0004003d,0x00000012,0x0000005c,0x0000005b,0x0004003d,0x0000002c,0x0000005d,0x0000002e,
+ 0x0008004f,0x00000047,0x0000005e,0x0000005d,0x0000005d,0x00000000,0x00000001,0x00000002,
+ 0x00060050,0x00000047,0x0000005f,0x0000005c,0x0000005c,0x0000005c,0x00050086,0x00000047,
+ 0x00000060,0x0000005e,0x0000005f,0x0004003d,0x0000002c,0x00000061,0x0000002e,0x0009004f,
+ 0x0000002c,0x00000062,0x00000061,0x00000060,0x00000004,0x00000005,0x00000006,0x00000003,
+ 0x0003003e,0x0000002e,0x00000062,0x000200f9,0x0000005a,0x000200f8,0x0000005a,0x000200f9,
+ 0x00000042,0x000200f8,0x00000042,0x0004003d,0x0000002c,0x00000066,0x0000002e,0x0004007c,
+ 0x00000063,0x00000067,0x00000066,0x0003003e,0x00000065,0x00000067,0x00050041,0x0000001e,
+ 0x00000069,0x00000015,0x00000068,0x0004003d,0x00000012,0x0000006a,0x00000069,0x000500ab,
+ 0x00000021,0x0000006b,0x0000006a,0x00000022,0x000300f7,0x0000006d,0x00000000,0x000400fa,
+ 0x0000006b,0x0000006c,0x00000072,0x000200f8,0x0000006c,0x0004003d,0x00000063,0x0000006e,
+ 0x00000065,0x0007004f,0x00000007,0x0000006f,0x0000006e,0x0000006e,0x00000000,0x00000003,
+ 0x0004003d,0x00000063,0x00000070,0x00000065,0x0009004f,0x00000063,0x00000071,0x00000070,
+ 0x0000006f,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x00000065,0x00000071,
+ 0x000200f9,0x0000006d,0x000200f8,0x00000072,0x00050041,0x0000001e,0x00000074,0x00000015,
+ 0x00000073,0x0004003d,0x00000012,0x00000075,0x00000074,0x000500ab,0x00000021,0x00000076,
+ 0x00000075,0x00000022,0x000300f7,0x00000078,0x00000000,0x000400fa,0x00000076,0x00000077,
+ 0x0000007c,0x000200f8,0x00000077,0x00050041,0x00000027,0x00000079,0x00000065,0x00000043,
+ 0x0004003d,0x00000006,0x0000007a,0x00000079,0x00050041,0x00000027,0x0000007b,0x00000065,
+ 0x00000022,0x0003003e,0x0000007b,0x0000007a,0x000200f9,0x00000078,0x000200f8,0x0000007c,
+ 0x00050041,0x00000039,0x0000007f,0x00000015,0x0000007e,0x0004003d,0x00000006,0x00000080,
+ 0x0000007f,0x0003003e,0x0000007d,0x00000080,0x0004003d,0x00000006,0x00000081,0x0000007d,
+ 0x000500c7,0x00000006,0x00000082,0x00000081,0x00000038,0x000500ab,0x00000021,0x00000083,
+ 0x00000082,0x00000033,0x000300f7,0x00000085,0x00000000,0x000400fa,0x00000083,0x00000084,
+ 0x00000085,0x000200f8,0x00000084,0x00050041,0x00000027,0x00000086,0x00000065,0x00000026,
+ 0x0003003e,0x00000086,0x00000033,0x000200f9,0x00000085,0x000200f8,0x00000085,0x0004003d,
+ 0x00000006,0x00000087,0x0000007d,0x000500c7,0x00000006,0x00000088,0x00000087,0x0000001d,
+ 0x000500ab,0x00000021,0x00000089,0x00000088,0x00000033,0x000300f7,0x0000008b,0x00000000,
+ 0x000400fa,0x00000089,0x0000008a,0x0000008b,0x000200f8,0x0000008a,0x00050041,0x00000027,
+ 0x0000008d,0x00000065,0x0000008c,0x0003003e,0x0000008d,0x00000033,0x000200f9,0x0000008b,
+ 0x000200f8,0x0000008b,0x0004003d,0x00000006,0x0000008e,0x0000007d,0x000500c7,0x00000006,
+ 0x0000008f,0x0000008e,0x00000073,0x000500ab,0x00000021,0x00000090,0x0000008f,0x00000033,
+ 0x000300f7,0x00000092,0x00000000,0x000400fa,0x00000090,0x00000091,0x00000092,0x000200f8,
+ 0x00000091,0x00050041,0x00000027,0x00000093,0x00000065,0x00000043,0x0003003e,0x00000093,
+ 0x00000016,0x000200f9,0x00000092,0x000200f8,0x00000092,0x000200f9,0x00000078,0x000200f8,
+ 0x00000078,0x000200f9,0x0000006d,0x000200f8,0x0000006d,0x0004003d,0x00000063,0x00000096,
+ 0x00000065,0x0003003e,0x00000095,0x00000096,0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform utexture2D src;
+layout(location = 0)out ivec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ ivec4 destValue = ivec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000D.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000D.inc
new file mode 100644
index 0000000..1479479
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000D.inc
@@ -0,0 +1,210 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_0000000D[] = {
+ 0x07230203,0x00010000,0x00080007,0x0000009e,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009c,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000006c,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000084,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009c,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000009c,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000012,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000012,0x00000001,0x00000000,
+ 0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x00040017,0x0000003c,0x00000006,0x00000003,0x0004002b,0x00000006,0x00000040,0x00000002,
+ 0x0004002b,0x00000006,0x00000044,0x00000005,0x0004002b,0x00000012,0x0000004a,0x00000003,
+ 0x00040020,0x0000004b,0x00000007,0x00000012,0x00040017,0x0000004e,0x00000012,0x00000003,
+ 0x0004002b,0x00000006,0x00000056,0x00000006,0x00040017,0x0000006a,0x00000006,0x00000004,
+ 0x00040020,0x0000006b,0x00000007,0x0000006a,0x0004002b,0x00000006,0x0000006f,0x00000007,
+ 0x0004002b,0x00000006,0x0000007a,0x00000008,0x0004002b,0x00000006,0x00000085,0x00000009,
+ 0x0004002b,0x00000012,0x00000093,0x00000002,0x00040020,0x0000009b,0x00000003,0x0000006a,
+ 0x0004003b,0x0000009b,0x0000009c,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x0000006b,0x0000006c,0x00000007,0x0004003b,0x00000027,0x00000084,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x00050051,0x00000006,0x0000003d,
+ 0x00000037,0x00000000,0x00050051,0x00000006,0x0000003e,0x00000037,0x00000001,0x00060050,
+ 0x0000003c,0x0000003f,0x0000003d,0x0000003e,0x0000003b,0x00050041,0x00000039,0x00000041,
+ 0x00000015,0x00000040,0x0004003d,0x00000006,0x00000042,0x00000041,0x0007005f,0x0000002c,
+ 0x00000043,0x00000032,0x0000003f,0x00000002,0x00000042,0x0003003e,0x0000002e,0x00000043,
+ 0x00050041,0x0000001e,0x00000045,0x00000015,0x00000044,0x0004003d,0x00000012,0x00000046,
+ 0x00000045,0x000500ab,0x00000021,0x00000047,0x00000046,0x00000022,0x000300f7,0x00000049,
+ 0x00000000,0x000400fa,0x00000047,0x00000048,0x00000055,0x000200f8,0x00000048,0x00050041,
+ 0x0000004b,0x0000004c,0x0000002e,0x0000004a,0x0004003d,0x00000012,0x0000004d,0x0000004c,
+ 0x0004003d,0x0000002c,0x0000004f,0x0000002e,0x0008004f,0x0000004e,0x00000050,0x0000004f,
+ 0x0000004f,0x00000000,0x00000001,0x00000002,0x00060050,0x0000004e,0x00000051,0x0000004d,
+ 0x0000004d,0x0000004d,0x00050084,0x0000004e,0x00000052,0x00000050,0x00000051,0x0004003d,
+ 0x0000002c,0x00000053,0x0000002e,0x0009004f,0x0000002c,0x00000054,0x00000053,0x00000052,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000054,0x000200f9,
+ 0x00000049,0x000200f8,0x00000055,0x00050041,0x0000001e,0x00000057,0x00000015,0x00000056,
+ 0x0004003d,0x00000012,0x00000058,0x00000057,0x000500ab,0x00000021,0x00000059,0x00000058,
+ 0x00000022,0x000300f7,0x0000005b,0x00000000,0x000400fa,0x00000059,0x0000005a,0x0000005b,
+ 0x000200f8,0x0000005a,0x00050041,0x0000004b,0x0000005c,0x0000002e,0x0000004a,0x0004003d,
+ 0x00000012,0x0000005d,0x0000005c,0x000500ac,0x00000021,0x0000005e,0x0000005d,0x00000022,
+ 0x000200f9,0x0000005b,0x000200f8,0x0000005b,0x000700f5,0x00000021,0x0000005f,0x00000059,
+ 0x00000055,0x0000005e,0x0000005a,0x000300f7,0x00000061,0x00000000,0x000400fa,0x0000005f,
+ 0x00000060,0x00000061,0x000200f8,0x00000060,0x00050041,0x0000004b,0x00000062,0x0000002e,
+ 0x0000004a,0x0004003d,0x00000012,0x00000063,0x00000062,0x0004003d,0x0000002c,0x00000064,
+ 0x0000002e,0x0008004f,0x0000004e,0x00000065,0x00000064,0x00000064,0x00000000,0x00000001,
+ 0x00000002,0x00060050,0x0000004e,0x00000066,0x00000063,0x00000063,0x00000063,0x00050086,
+ 0x0000004e,0x00000067,0x00000065,0x00000066,0x0004003d,0x0000002c,0x00000068,0x0000002e,
+ 0x0009004f,0x0000002c,0x00000069,0x00000068,0x00000067,0x00000004,0x00000005,0x00000006,
+ 0x00000003,0x0003003e,0x0000002e,0x00000069,0x000200f9,0x00000061,0x000200f8,0x00000061,
+ 0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,0x0000006d,0x0000002e,
+ 0x0004007c,0x0000006a,0x0000006e,0x0000006d,0x0003003e,0x0000006c,0x0000006e,0x00050041,
+ 0x0000001e,0x00000070,0x00000015,0x0000006f,0x0004003d,0x00000012,0x00000071,0x00000070,
+ 0x000500ab,0x00000021,0x00000072,0x00000071,0x00000022,0x000300f7,0x00000074,0x00000000,
+ 0x000400fa,0x00000072,0x00000073,0x00000079,0x000200f8,0x00000073,0x0004003d,0x0000006a,
+ 0x00000075,0x0000006c,0x0007004f,0x00000007,0x00000076,0x00000075,0x00000075,0x00000000,
+ 0x00000003,0x0004003d,0x0000006a,0x00000077,0x0000006c,0x0009004f,0x0000006a,0x00000078,
+ 0x00000077,0x00000076,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x0000006c,
+ 0x00000078,0x000200f9,0x00000074,0x000200f8,0x00000079,0x00050041,0x0000001e,0x0000007b,
+ 0x00000015,0x0000007a,0x0004003d,0x00000012,0x0000007c,0x0000007b,0x000500ab,0x00000021,
+ 0x0000007d,0x0000007c,0x00000022,0x000300f7,0x0000007f,0x00000000,0x000400fa,0x0000007d,
+ 0x0000007e,0x00000083,0x000200f8,0x0000007e,0x00050041,0x00000027,0x00000080,0x0000006c,
+ 0x0000004a,0x0004003d,0x00000006,0x00000081,0x00000080,0x00050041,0x00000027,0x00000082,
+ 0x0000006c,0x00000022,0x0003003e,0x00000082,0x00000081,0x000200f9,0x0000007f,0x000200f8,
+ 0x00000083,0x00050041,0x00000039,0x00000086,0x00000015,0x00000085,0x0004003d,0x00000006,
+ 0x00000087,0x00000086,0x0003003e,0x00000084,0x00000087,0x0004003d,0x00000006,0x00000088,
+ 0x00000084,0x000500c7,0x00000006,0x00000089,0x00000088,0x00000040,0x000500ab,0x00000021,
+ 0x0000008a,0x00000089,0x00000033,0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,
+ 0x0000008b,0x0000008c,0x000200f8,0x0000008b,0x00050041,0x00000027,0x0000008d,0x0000006c,
+ 0x00000026,0x0003003e,0x0000008d,0x00000033,0x000200f9,0x0000008c,0x000200f8,0x0000008c,
+ 0x0004003d,0x00000006,0x0000008e,0x00000084,0x000500c7,0x00000006,0x0000008f,0x0000008e,
+ 0x0000001d,0x000500ab,0x00000021,0x00000090,0x0000008f,0x00000033,0x000300f7,0x00000092,
+ 0x00000000,0x000400fa,0x00000090,0x00000091,0x00000092,0x000200f8,0x00000091,0x00050041,
+ 0x00000027,0x00000094,0x0000006c,0x00000093,0x0003003e,0x00000094,0x00000033,0x000200f9,
+ 0x00000092,0x000200f8,0x00000092,0x0004003d,0x00000006,0x00000095,0x00000084,0x000500c7,
+ 0x00000006,0x00000096,0x00000095,0x0000007a,0x000500ab,0x00000021,0x00000097,0x00000096,
+ 0x00000033,0x000300f7,0x00000099,0x00000000,0x000400fa,0x00000097,0x00000098,0x00000099,
+ 0x000200f8,0x00000098,0x00050041,0x00000027,0x0000009a,0x0000006c,0x0000004a,0x0003003e,
+ 0x0000009a,0x00000016,0x000200f9,0x00000099,0x000200f8,0x00000099,0x000200f9,0x0000007f,
+ 0x000200f8,0x0000007f,0x000200f9,0x00000074,0x000200f8,0x00000074,0x0004003d,0x0000006a,
+ 0x0000009d,0x0000006c,0x0003003e,0x0000009c,0x0000009d,0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform utexture2DArray src;
+layout(location = 0)out ivec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ ivec4 destValue = ivec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc
new file mode 100644
index 0000000..95592aa
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc
@@ -0,0 +1,206 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000010[] = {
+ 0x07230203,0x00010000,0x00080007,0x00000098,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000096,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x00000064,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007e,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000096,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,
+ 0x00000000,0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x00000096,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,0x00000007,0x0000000b,0x00090019,
+ 0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,
+ 0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,0x00000030,0x00000000,
+ 0x0004002b,0x00000006,0x00000032,0x00000000,0x0004002b,0x00000006,0x00000037,0x00000002,
+ 0x00040020,0x00000038,0x00000009,0x00000006,0x0004002b,0x00000006,0x0000003c,0x00000005,
+ 0x0004002b,0x00000012,0x00000042,0x00000003,0x00040020,0x00000043,0x00000007,0x0000000a,
+ 0x00040017,0x00000046,0x0000000a,0x00000003,0x0004002b,0x00000006,0x0000004d,0x00000006,
+ 0x0004002b,0x0000000a,0x00000055,0x00000000,0x00040017,0x00000062,0x00000012,0x00000004,
+ 0x00040020,0x00000063,0x00000007,0x00000062,0x0004002b,0x00000006,0x00000067,0x00000007,
+ 0x00040017,0x0000006d,0x00000012,0x00000002,0x0004002b,0x00000006,0x00000073,0x00000008,
+ 0x00040020,0x00000079,0x00000007,0x00000012,0x0004002b,0x00000006,0x0000007f,0x00000009,
+ 0x0004002b,0x00000012,0x0000008d,0x00000002,0x00040020,0x00000095,0x00000003,0x00000062,
+ 0x0004003b,0x00000095,0x00000096,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002c,0x0000002d,0x00000007,0x0004003b,
+ 0x00000063,0x00000064,0x00000007,0x0004003b,0x00000027,0x0000007e,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002e,
+ 0x00000031,0x00000030,0x00050041,0x00000017,0x00000033,0x00000015,0x00000032,0x0004003d,
+ 0x00000007,0x00000034,0x00000033,0x0004003d,0x00000007,0x00000035,0x0000001b,0x00050080,
+ 0x00000007,0x00000036,0x00000034,0x00000035,0x00050041,0x00000038,0x00000039,0x00000015,
+ 0x00000037,0x0004003d,0x00000006,0x0000003a,0x00000039,0x0007005f,0x0000000b,0x0000003b,
+ 0x00000031,0x00000036,0x00000002,0x0000003a,0x0003003e,0x0000002d,0x0000003b,0x00050041,
+ 0x0000001e,0x0000003d,0x00000015,0x0000003c,0x0004003d,0x00000012,0x0000003e,0x0000003d,
+ 0x000500ab,0x00000021,0x0000003f,0x0000003e,0x00000022,0x000300f7,0x00000041,0x00000000,
+ 0x000400fa,0x0000003f,0x00000040,0x0000004c,0x000200f8,0x00000040,0x00050041,0x00000043,
+ 0x00000044,0x0000002d,0x00000042,0x0004003d,0x0000000a,0x00000045,0x00000044,0x0004003d,
+ 0x0000000b,0x00000047,0x0000002d,0x0008004f,0x00000046,0x00000048,0x00000047,0x00000047,
+ 0x00000000,0x00000001,0x00000002,0x0005008e,0x00000046,0x00000049,0x00000048,0x00000045,
+ 0x0004003d,0x0000000b,0x0000004a,0x0000002d,0x0009004f,0x0000000b,0x0000004b,0x0000004a,
+ 0x00000049,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,0x0000004b,
+ 0x000200f9,0x00000041,0x000200f8,0x0000004c,0x00050041,0x0000001e,0x0000004e,0x00000015,
+ 0x0000004d,0x0004003d,0x00000012,0x0000004f,0x0000004e,0x000500ab,0x00000021,0x00000050,
+ 0x0000004f,0x00000022,0x000300f7,0x00000052,0x00000000,0x000400fa,0x00000050,0x00000051,
+ 0x00000052,0x000200f8,0x00000051,0x00050041,0x00000043,0x00000053,0x0000002d,0x00000042,
+ 0x0004003d,0x0000000a,0x00000054,0x00000053,0x000500ba,0x00000021,0x00000056,0x00000054,
+ 0x00000055,0x000200f9,0x00000052,0x000200f8,0x00000052,0x000700f5,0x00000021,0x00000057,
+ 0x00000050,0x0000004c,0x00000056,0x00000051,0x000300f7,0x00000059,0x00000000,0x000400fa,
+ 0x00000057,0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,0x00000043,0x0000005a,
+ 0x0000002d,0x00000042,0x0004003d,0x0000000a,0x0000005b,0x0000005a,0x0004003d,0x0000000b,
+ 0x0000005c,0x0000002d,0x0008004f,0x00000046,0x0000005d,0x0000005c,0x0000005c,0x00000000,
+ 0x00000001,0x00000002,0x00060050,0x00000046,0x0000005e,0x0000005b,0x0000005b,0x0000005b,
+ 0x00050088,0x00000046,0x0000005f,0x0000005d,0x0000005e,0x0004003d,0x0000000b,0x00000060,
+ 0x0000002d,0x0009004f,0x0000000b,0x00000061,0x00000060,0x0000005f,0x00000004,0x00000005,
+ 0x00000006,0x00000003,0x0003003e,0x0000002d,0x00000061,0x000200f9,0x00000059,0x000200f8,
+ 0x00000059,0x000200f9,0x00000041,0x000200f8,0x00000041,0x0004003d,0x0000000b,0x00000065,
+ 0x0000002d,0x0004006d,0x00000062,0x00000066,0x00000065,0x0003003e,0x00000064,0x00000066,
+ 0x00050041,0x0000001e,0x00000068,0x00000015,0x00000067,0x0004003d,0x00000012,0x00000069,
+ 0x00000068,0x000500ab,0x00000021,0x0000006a,0x00000069,0x00000022,0x000300f7,0x0000006c,
+ 0x00000000,0x000400fa,0x0000006a,0x0000006b,0x00000072,0x000200f8,0x0000006b,0x0004003d,
+ 0x00000062,0x0000006e,0x00000064,0x0007004f,0x0000006d,0x0000006f,0x0000006e,0x0000006e,
+ 0x00000000,0x00000003,0x0004003d,0x00000062,0x00000070,0x00000064,0x0009004f,0x00000062,
+ 0x00000071,0x00000070,0x0000006f,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,
+ 0x00000064,0x00000071,0x000200f9,0x0000006c,0x000200f8,0x00000072,0x00050041,0x0000001e,
+ 0x00000074,0x00000015,0x00000073,0x0004003d,0x00000012,0x00000075,0x00000074,0x000500ab,
+ 0x00000021,0x00000076,0x00000075,0x00000022,0x000300f7,0x00000078,0x00000000,0x000400fa,
+ 0x00000076,0x00000077,0x0000007d,0x000200f8,0x00000077,0x00050041,0x00000079,0x0000007a,
+ 0x00000064,0x00000042,0x0004003d,0x00000012,0x0000007b,0x0000007a,0x00050041,0x00000079,
+ 0x0000007c,0x00000064,0x00000022,0x0003003e,0x0000007c,0x0000007b,0x000200f9,0x00000078,
+ 0x000200f8,0x0000007d,0x00050041,0x00000038,0x00000080,0x00000015,0x0000007f,0x0004003d,
+ 0x00000006,0x00000081,0x00000080,0x0003003e,0x0000007e,0x00000081,0x0004003d,0x00000006,
+ 0x00000082,0x0000007e,0x000500c7,0x00000006,0x00000083,0x00000082,0x00000037,0x000500ab,
+ 0x00000021,0x00000084,0x00000083,0x00000032,0x000300f7,0x00000086,0x00000000,0x000400fa,
+ 0x00000084,0x00000085,0x00000086,0x000200f8,0x00000085,0x00050041,0x00000079,0x00000087,
+ 0x00000064,0x00000026,0x0003003e,0x00000087,0x00000022,0x000200f9,0x00000086,0x000200f8,
+ 0x00000086,0x0004003d,0x00000006,0x00000088,0x0000007e,0x000500c7,0x00000006,0x00000089,
+ 0x00000088,0x0000001d,0x000500ab,0x00000021,0x0000008a,0x00000089,0x00000032,0x000300f7,
+ 0x0000008c,0x00000000,0x000400fa,0x0000008a,0x0000008b,0x0000008c,0x000200f8,0x0000008b,
+ 0x00050041,0x00000079,0x0000008e,0x00000064,0x0000008d,0x0003003e,0x0000008e,0x00000022,
+ 0x000200f9,0x0000008c,0x000200f8,0x0000008c,0x0004003d,0x00000006,0x0000008f,0x0000007e,
+ 0x000500c7,0x00000006,0x00000090,0x0000008f,0x00000073,0x000500ab,0x00000021,0x00000091,
+ 0x00000090,0x00000032,0x000300f7,0x00000093,0x00000000,0x000400fa,0x00000091,0x00000092,
+ 0x00000093,0x000200f8,0x00000092,0x00050041,0x00000079,0x00000094,0x00000064,0x00000042,
+ 0x0003003e,0x00000094,0x00000026,0x000200f9,0x00000093,0x000200f8,0x00000093,0x000200f9,
+ 0x00000078,0x000200f8,0x00000078,0x000200f9,0x0000006c,0x000200f8,0x0000006c,0x0004003d,
+ 0x00000062,0x00000097,0x00000064,0x0003003e,0x00000096,0x00000097,0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform texture2D src;
+layout(location = 0)out uvec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ vec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ uvec4 destValue = uvec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc
new file mode 100644
index 0000000..ceb2734
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc
@@ -0,0 +1,211 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000011[] = {
+ 0x07230203,0x00010000,0x00080007,0x0000009f,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009d,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002d,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000030,0x00637273,0x00050005,0x0000006b,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000085,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009d,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000030,0x00000022,
+ 0x00000000,0x00040047,0x00000030,0x00000021,0x00000000,0x00040047,0x0000009d,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040020,0x0000002c,0x00000007,0x0000000b,0x00090019,
+ 0x0000002e,0x0000000a,0x00000001,0x00000000,0x00000001,0x00000000,0x00000001,0x00000000,
+ 0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,0x00000030,0x00000000,
+ 0x0004002b,0x00000006,0x00000032,0x00000000,0x0004002b,0x00000006,0x00000037,0x00000003,
+ 0x00040020,0x00000038,0x00000009,0x00000006,0x00040017,0x0000003b,0x00000006,0x00000003,
+ 0x0004002b,0x00000006,0x0000003f,0x00000002,0x0004002b,0x00000006,0x00000043,0x00000005,
+ 0x0004002b,0x00000012,0x00000049,0x00000003,0x00040020,0x0000004a,0x00000007,0x0000000a,
+ 0x00040017,0x0000004d,0x0000000a,0x00000003,0x0004002b,0x00000006,0x00000054,0x00000006,
+ 0x0004002b,0x0000000a,0x0000005c,0x00000000,0x00040017,0x00000069,0x00000012,0x00000004,
+ 0x00040020,0x0000006a,0x00000007,0x00000069,0x0004002b,0x00000006,0x0000006e,0x00000007,
+ 0x00040017,0x00000074,0x00000012,0x00000002,0x0004002b,0x00000006,0x0000007a,0x00000008,
+ 0x00040020,0x00000080,0x00000007,0x00000012,0x0004002b,0x00000006,0x00000086,0x00000009,
+ 0x0004002b,0x00000012,0x00000094,0x00000002,0x00040020,0x0000009c,0x00000003,0x00000069,
+ 0x0004003b,0x0000009c,0x0000009d,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002c,0x0000002d,0x00000007,0x0004003b,
+ 0x0000006a,0x0000006b,0x00000007,0x0004003b,0x00000027,0x00000085,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002e,
+ 0x00000031,0x00000030,0x00050041,0x00000017,0x00000033,0x00000015,0x00000032,0x0004003d,
+ 0x00000007,0x00000034,0x00000033,0x0004003d,0x00000007,0x00000035,0x0000001b,0x00050080,
+ 0x00000007,0x00000036,0x00000034,0x00000035,0x00050041,0x00000038,0x00000039,0x00000015,
+ 0x00000037,0x0004003d,0x00000006,0x0000003a,0x00000039,0x00050051,0x00000006,0x0000003c,
+ 0x00000036,0x00000000,0x00050051,0x00000006,0x0000003d,0x00000036,0x00000001,0x00060050,
+ 0x0000003b,0x0000003e,0x0000003c,0x0000003d,0x0000003a,0x00050041,0x00000038,0x00000040,
+ 0x00000015,0x0000003f,0x0004003d,0x00000006,0x00000041,0x00000040,0x0007005f,0x0000000b,
+ 0x00000042,0x00000031,0x0000003e,0x00000002,0x00000041,0x0003003e,0x0000002d,0x00000042,
+ 0x00050041,0x0000001e,0x00000044,0x00000015,0x00000043,0x0004003d,0x00000012,0x00000045,
+ 0x00000044,0x000500ab,0x00000021,0x00000046,0x00000045,0x00000022,0x000300f7,0x00000048,
+ 0x00000000,0x000400fa,0x00000046,0x00000047,0x00000053,0x000200f8,0x00000047,0x00050041,
+ 0x0000004a,0x0000004b,0x0000002d,0x00000049,0x0004003d,0x0000000a,0x0000004c,0x0000004b,
+ 0x0004003d,0x0000000b,0x0000004e,0x0000002d,0x0008004f,0x0000004d,0x0000004f,0x0000004e,
+ 0x0000004e,0x00000000,0x00000001,0x00000002,0x0005008e,0x0000004d,0x00000050,0x0000004f,
+ 0x0000004c,0x0004003d,0x0000000b,0x00000051,0x0000002d,0x0009004f,0x0000000b,0x00000052,
+ 0x00000051,0x00000050,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,
+ 0x00000052,0x000200f9,0x00000048,0x000200f8,0x00000053,0x00050041,0x0000001e,0x00000055,
+ 0x00000015,0x00000054,0x0004003d,0x00000012,0x00000056,0x00000055,0x000500ab,0x00000021,
+ 0x00000057,0x00000056,0x00000022,0x000300f7,0x00000059,0x00000000,0x000400fa,0x00000057,
+ 0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,0x0000004a,0x0000005a,0x0000002d,
+ 0x00000049,0x0004003d,0x0000000a,0x0000005b,0x0000005a,0x000500ba,0x00000021,0x0000005d,
+ 0x0000005b,0x0000005c,0x000200f9,0x00000059,0x000200f8,0x00000059,0x000700f5,0x00000021,
+ 0x0000005e,0x00000057,0x00000053,0x0000005d,0x00000058,0x000300f7,0x00000060,0x00000000,
+ 0x000400fa,0x0000005e,0x0000005f,0x00000060,0x000200f8,0x0000005f,0x00050041,0x0000004a,
+ 0x00000061,0x0000002d,0x00000049,0x0004003d,0x0000000a,0x00000062,0x00000061,0x0004003d,
+ 0x0000000b,0x00000063,0x0000002d,0x0008004f,0x0000004d,0x00000064,0x00000063,0x00000063,
+ 0x00000000,0x00000001,0x00000002,0x00060050,0x0000004d,0x00000065,0x00000062,0x00000062,
+ 0x00000062,0x00050088,0x0000004d,0x00000066,0x00000064,0x00000065,0x0004003d,0x0000000b,
+ 0x00000067,0x0000002d,0x0009004f,0x0000000b,0x00000068,0x00000067,0x00000066,0x00000004,
+ 0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002d,0x00000068,0x000200f9,0x00000060,
+ 0x000200f8,0x00000060,0x000200f9,0x00000048,0x000200f8,0x00000048,0x0004003d,0x0000000b,
+ 0x0000006c,0x0000002d,0x0004006d,0x00000069,0x0000006d,0x0000006c,0x0003003e,0x0000006b,
+ 0x0000006d,0x00050041,0x0000001e,0x0000006f,0x00000015,0x0000006e,0x0004003d,0x00000012,
+ 0x00000070,0x0000006f,0x000500ab,0x00000021,0x00000071,0x00000070,0x00000022,0x000300f7,
+ 0x00000073,0x00000000,0x000400fa,0x00000071,0x00000072,0x00000079,0x000200f8,0x00000072,
+ 0x0004003d,0x00000069,0x00000075,0x0000006b,0x0007004f,0x00000074,0x00000076,0x00000075,
+ 0x00000075,0x00000000,0x00000003,0x0004003d,0x00000069,0x00000077,0x0000006b,0x0009004f,
+ 0x00000069,0x00000078,0x00000077,0x00000076,0x00000004,0x00000005,0x00000002,0x00000003,
+ 0x0003003e,0x0000006b,0x00000078,0x000200f9,0x00000073,0x000200f8,0x00000079,0x00050041,
+ 0x0000001e,0x0000007b,0x00000015,0x0000007a,0x0004003d,0x00000012,0x0000007c,0x0000007b,
+ 0x000500ab,0x00000021,0x0000007d,0x0000007c,0x00000022,0x000300f7,0x0000007f,0x00000000,
+ 0x000400fa,0x0000007d,0x0000007e,0x00000084,0x000200f8,0x0000007e,0x00050041,0x00000080,
+ 0x00000081,0x0000006b,0x00000049,0x0004003d,0x00000012,0x00000082,0x00000081,0x00050041,
+ 0x00000080,0x00000083,0x0000006b,0x00000022,0x0003003e,0x00000083,0x00000082,0x000200f9,
+ 0x0000007f,0x000200f8,0x00000084,0x00050041,0x00000038,0x00000087,0x00000015,0x00000086,
+ 0x0004003d,0x00000006,0x00000088,0x00000087,0x0003003e,0x00000085,0x00000088,0x0004003d,
+ 0x00000006,0x00000089,0x00000085,0x000500c7,0x00000006,0x0000008a,0x00000089,0x0000003f,
+ 0x000500ab,0x00000021,0x0000008b,0x0000008a,0x00000032,0x000300f7,0x0000008d,0x00000000,
+ 0x000400fa,0x0000008b,0x0000008c,0x0000008d,0x000200f8,0x0000008c,0x00050041,0x00000080,
+ 0x0000008e,0x0000006b,0x00000026,0x0003003e,0x0000008e,0x00000022,0x000200f9,0x0000008d,
+ 0x000200f8,0x0000008d,0x0004003d,0x00000006,0x0000008f,0x00000085,0x000500c7,0x00000006,
+ 0x00000090,0x0000008f,0x0000001d,0x000500ab,0x00000021,0x00000091,0x00000090,0x00000032,
+ 0x000300f7,0x00000093,0x00000000,0x000400fa,0x00000091,0x00000092,0x00000093,0x000200f8,
+ 0x00000092,0x00050041,0x00000080,0x00000095,0x0000006b,0x00000094,0x0003003e,0x00000095,
+ 0x00000022,0x000200f9,0x00000093,0x000200f8,0x00000093,0x0004003d,0x00000006,0x00000096,
+ 0x00000085,0x000500c7,0x00000006,0x00000097,0x00000096,0x0000007a,0x000500ab,0x00000021,
+ 0x00000098,0x00000097,0x00000032,0x000300f7,0x0000009a,0x00000000,0x000400fa,0x00000098,
+ 0x00000099,0x0000009a,0x000200f8,0x00000099,0x00050041,0x00000080,0x0000009b,0x0000006b,
+ 0x00000049,0x0003003e,0x0000009b,0x00000026,0x000200f9,0x0000009a,0x000200f8,0x0000009a,
+ 0x000200f9,0x0000007f,0x000200f8,0x0000007f,0x000200f9,0x00000073,0x000200f8,0x00000073,
+ 0x0004003d,0x00000069,0x0000009e,0x0000006b,0x0003003e,0x0000009d,0x0000009e,0x000100fd,
+ 0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform texture2DArray src;
+layout(location = 0)out uvec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ vec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ uvec4 destValue = uvec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc
new file mode 100644
index 0000000..4fa4717
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc
@@ -0,0 +1,207 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000012[] = {
+ 0x07230203,0x00010000,0x00080007,0x00000098,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000096,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000064,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x0000007e,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000096,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000096,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000006,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000006,0x00000001,0x00000000,
+ 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000002,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x0004002b,0x00000006,0x0000003d,0x00000005,0x0004002b,0x00000012,0x00000043,0x00000003,
+ 0x00040017,0x00000046,0x00000006,0x00000003,0x0004002b,0x00000006,0x0000004e,0x00000006,
+ 0x00040017,0x00000062,0x00000012,0x00000004,0x00040020,0x00000063,0x00000007,0x00000062,
+ 0x0004002b,0x00000006,0x00000067,0x00000007,0x00040017,0x0000006d,0x00000012,0x00000002,
+ 0x0004002b,0x00000006,0x00000073,0x00000008,0x00040020,0x00000079,0x00000007,0x00000012,
+ 0x0004002b,0x00000006,0x0000007f,0x00000009,0x0004002b,0x00000012,0x0000008d,0x00000002,
+ 0x00040020,0x00000095,0x00000003,0x00000062,0x0004003b,0x00000095,0x00000096,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002d,0x0000002e,0x00000007,0x0004003b,0x00000063,0x00000064,0x00000007,0x0004003b,
+ 0x00000027,0x0000007e,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,0x00000031,0x00050041,0x00000017,
+ 0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,0x00000035,0x00000034,0x0004003d,
+ 0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,0x00000037,0x00000035,0x00000036,
+ 0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,0x0004003d,0x00000006,0x0000003b,
+ 0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,0x00000037,0x00000002,0x0000003b,
+ 0x0003003e,0x0000002e,0x0000003c,0x00050041,0x0000001e,0x0000003e,0x00000015,0x0000003d,
+ 0x0004003d,0x00000012,0x0000003f,0x0000003e,0x000500ab,0x00000021,0x00000040,0x0000003f,
+ 0x00000022,0x000300f7,0x00000042,0x00000000,0x000400fa,0x00000040,0x00000041,0x0000004d,
+ 0x000200f8,0x00000041,0x00050041,0x00000027,0x00000044,0x0000002e,0x00000043,0x0004003d,
+ 0x00000006,0x00000045,0x00000044,0x0004003d,0x0000002c,0x00000047,0x0000002e,0x0008004f,
+ 0x00000046,0x00000048,0x00000047,0x00000047,0x00000000,0x00000001,0x00000002,0x00060050,
+ 0x00000046,0x00000049,0x00000045,0x00000045,0x00000045,0x00050084,0x00000046,0x0000004a,
+ 0x00000048,0x00000049,0x0004003d,0x0000002c,0x0000004b,0x0000002e,0x0009004f,0x0000002c,
+ 0x0000004c,0x0000004b,0x0000004a,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,
+ 0x0000002e,0x0000004c,0x000200f9,0x00000042,0x000200f8,0x0000004d,0x00050041,0x0000001e,
+ 0x0000004f,0x00000015,0x0000004e,0x0004003d,0x00000012,0x00000050,0x0000004f,0x000500ab,
+ 0x00000021,0x00000051,0x00000050,0x00000022,0x000300f7,0x00000053,0x00000000,0x000400fa,
+ 0x00000051,0x00000052,0x00000053,0x000200f8,0x00000052,0x00050041,0x00000027,0x00000054,
+ 0x0000002e,0x00000043,0x0004003d,0x00000006,0x00000055,0x00000054,0x000500ad,0x00000021,
+ 0x00000056,0x00000055,0x00000033,0x000200f9,0x00000053,0x000200f8,0x00000053,0x000700f5,
+ 0x00000021,0x00000057,0x00000051,0x0000004d,0x00000056,0x00000052,0x000300f7,0x00000059,
+ 0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,0x000200f8,0x00000058,0x00050041,
+ 0x00000027,0x0000005a,0x0000002e,0x00000043,0x0004003d,0x00000006,0x0000005b,0x0000005a,
+ 0x0004003d,0x0000002c,0x0000005c,0x0000002e,0x0008004f,0x00000046,0x0000005d,0x0000005c,
+ 0x0000005c,0x00000000,0x00000001,0x00000002,0x00060050,0x00000046,0x0000005e,0x0000005b,
+ 0x0000005b,0x0000005b,0x00050087,0x00000046,0x0000005f,0x0000005d,0x0000005e,0x0004003d,
+ 0x0000002c,0x00000060,0x0000002e,0x0009004f,0x0000002c,0x00000061,0x00000060,0x0000005f,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000061,0x000200f9,
+ 0x00000059,0x000200f8,0x00000059,0x000200f9,0x00000042,0x000200f8,0x00000042,0x0004003d,
+ 0x0000002c,0x00000065,0x0000002e,0x0004007c,0x00000062,0x00000066,0x00000065,0x0003003e,
+ 0x00000064,0x00000066,0x00050041,0x0000001e,0x00000068,0x00000015,0x00000067,0x0004003d,
+ 0x00000012,0x00000069,0x00000068,0x000500ab,0x00000021,0x0000006a,0x00000069,0x00000022,
+ 0x000300f7,0x0000006c,0x00000000,0x000400fa,0x0000006a,0x0000006b,0x00000072,0x000200f8,
+ 0x0000006b,0x0004003d,0x00000062,0x0000006e,0x00000064,0x0007004f,0x0000006d,0x0000006f,
+ 0x0000006e,0x0000006e,0x00000000,0x00000003,0x0004003d,0x00000062,0x00000070,0x00000064,
+ 0x0009004f,0x00000062,0x00000071,0x00000070,0x0000006f,0x00000004,0x00000005,0x00000002,
+ 0x00000003,0x0003003e,0x00000064,0x00000071,0x000200f9,0x0000006c,0x000200f8,0x00000072,
+ 0x00050041,0x0000001e,0x00000074,0x00000015,0x00000073,0x0004003d,0x00000012,0x00000075,
+ 0x00000074,0x000500ab,0x00000021,0x00000076,0x00000075,0x00000022,0x000300f7,0x00000078,
+ 0x00000000,0x000400fa,0x00000076,0x00000077,0x0000007d,0x000200f8,0x00000077,0x00050041,
+ 0x00000079,0x0000007a,0x00000064,0x00000043,0x0004003d,0x00000012,0x0000007b,0x0000007a,
+ 0x00050041,0x00000079,0x0000007c,0x00000064,0x00000022,0x0003003e,0x0000007c,0x0000007b,
+ 0x000200f9,0x00000078,0x000200f8,0x0000007d,0x00050041,0x00000039,0x00000080,0x00000015,
+ 0x0000007f,0x0004003d,0x00000006,0x00000081,0x00000080,0x0003003e,0x0000007e,0x00000081,
+ 0x0004003d,0x00000006,0x00000082,0x0000007e,0x000500c7,0x00000006,0x00000083,0x00000082,
+ 0x00000038,0x000500ab,0x00000021,0x00000084,0x00000083,0x00000033,0x000300f7,0x00000086,
+ 0x00000000,0x000400fa,0x00000084,0x00000085,0x00000086,0x000200f8,0x00000085,0x00050041,
+ 0x00000079,0x00000087,0x00000064,0x00000026,0x0003003e,0x00000087,0x00000022,0x000200f9,
+ 0x00000086,0x000200f8,0x00000086,0x0004003d,0x00000006,0x00000088,0x0000007e,0x000500c7,
+ 0x00000006,0x00000089,0x00000088,0x0000001d,0x000500ab,0x00000021,0x0000008a,0x00000089,
+ 0x00000033,0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,0x0000008b,0x0000008c,
+ 0x000200f8,0x0000008b,0x00050041,0x00000079,0x0000008e,0x00000064,0x0000008d,0x0003003e,
+ 0x0000008e,0x00000022,0x000200f9,0x0000008c,0x000200f8,0x0000008c,0x0004003d,0x00000006,
+ 0x0000008f,0x0000007e,0x000500c7,0x00000006,0x00000090,0x0000008f,0x00000073,0x000500ab,
+ 0x00000021,0x00000091,0x00000090,0x00000033,0x000300f7,0x00000093,0x00000000,0x000400fa,
+ 0x00000091,0x00000092,0x00000093,0x000200f8,0x00000092,0x00050041,0x00000079,0x00000094,
+ 0x00000064,0x00000043,0x0003003e,0x00000094,0x00000026,0x000200f9,0x00000093,0x000200f8,
+ 0x00000093,0x000200f9,0x00000078,0x000200f8,0x00000078,0x000200f9,0x0000006c,0x000200f8,
+ 0x0000006c,0x0004003d,0x00000062,0x00000097,0x00000064,0x0003003e,0x00000096,0x00000097,
+ 0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform itexture2D src;
+layout(location = 0)out uvec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ ivec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ uvec4 destValue = uvec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc
new file mode 100644
index 0000000..2ef8490
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc
@@ -0,0 +1,210 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000013[] = {
+ 0x07230203,0x00010000,0x00080007,0x0000009e,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009c,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000006a,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000084,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009c,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000009c,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000006,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000006,0x00000001,0x00000000,
+ 0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x00040017,0x0000003c,0x00000006,0x00000003,0x0004002b,0x00000006,0x00000040,0x00000002,
+ 0x0004002b,0x00000006,0x00000044,0x00000005,0x0004002b,0x00000012,0x0000004a,0x00000003,
+ 0x0004002b,0x00000006,0x00000054,0x00000006,0x00040017,0x00000068,0x00000012,0x00000004,
+ 0x00040020,0x00000069,0x00000007,0x00000068,0x0004002b,0x00000006,0x0000006d,0x00000007,
+ 0x00040017,0x00000073,0x00000012,0x00000002,0x0004002b,0x00000006,0x00000079,0x00000008,
+ 0x00040020,0x0000007f,0x00000007,0x00000012,0x0004002b,0x00000006,0x00000085,0x00000009,
+ 0x0004002b,0x00000012,0x00000093,0x00000002,0x00040020,0x0000009b,0x00000003,0x00000068,
+ 0x0004003b,0x0000009b,0x0000009c,0x00000003,0x00050036,0x00000002,0x00000004,0x00000000,
+ 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,
+ 0x00000008,0x0000001b,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x0004003b,
+ 0x00000069,0x0000006a,0x00000007,0x0004003b,0x00000027,0x00000084,0x00000007,0x0004003d,
+ 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,
+ 0x00000000,0x00000001,0x0004006e,0x00000007,0x00000011,0x00000010,0x00050041,0x00000017,
+ 0x00000018,0x00000015,0x00000016,0x0004003d,0x00000007,0x00000019,0x00000018,0x00050082,
+ 0x00000007,0x0000001a,0x00000011,0x00000019,0x0003003e,0x00000009,0x0000001a,0x0004003d,
+ 0x00000007,0x0000001c,0x00000009,0x0003003e,0x0000001b,0x0000001c,0x00050041,0x0000001e,
+ 0x0000001f,0x00000015,0x0000001d,0x0004003d,0x00000012,0x00000020,0x0000001f,0x000500ab,
+ 0x00000021,0x00000023,0x00000020,0x00000022,0x000300f7,0x00000025,0x00000000,0x000400fa,
+ 0x00000023,0x00000024,0x00000025,0x000200f8,0x00000024,0x00050041,0x00000027,0x00000028,
+ 0x0000001b,0x00000026,0x0004003d,0x00000006,0x00000029,0x00000028,0x0004007e,0x00000006,
+ 0x0000002a,0x00000029,0x00050041,0x00000027,0x0000002b,0x0000001b,0x00000026,0x0003003e,
+ 0x0000002b,0x0000002a,0x000200f9,0x00000025,0x000200f8,0x00000025,0x0004003d,0x0000002f,
+ 0x00000032,0x00000031,0x00050041,0x00000017,0x00000034,0x00000015,0x00000033,0x0004003d,
+ 0x00000007,0x00000035,0x00000034,0x0004003d,0x00000007,0x00000036,0x0000001b,0x00050080,
+ 0x00000007,0x00000037,0x00000035,0x00000036,0x00050041,0x00000039,0x0000003a,0x00000015,
+ 0x00000038,0x0004003d,0x00000006,0x0000003b,0x0000003a,0x00050051,0x00000006,0x0000003d,
+ 0x00000037,0x00000000,0x00050051,0x00000006,0x0000003e,0x00000037,0x00000001,0x00060050,
+ 0x0000003c,0x0000003f,0x0000003d,0x0000003e,0x0000003b,0x00050041,0x00000039,0x00000041,
+ 0x00000015,0x00000040,0x0004003d,0x00000006,0x00000042,0x00000041,0x0007005f,0x0000002c,
+ 0x00000043,0x00000032,0x0000003f,0x00000002,0x00000042,0x0003003e,0x0000002e,0x00000043,
+ 0x00050041,0x0000001e,0x00000045,0x00000015,0x00000044,0x0004003d,0x00000012,0x00000046,
+ 0x00000045,0x000500ab,0x00000021,0x00000047,0x00000046,0x00000022,0x000300f7,0x00000049,
+ 0x00000000,0x000400fa,0x00000047,0x00000048,0x00000053,0x000200f8,0x00000048,0x00050041,
+ 0x00000027,0x0000004b,0x0000002e,0x0000004a,0x0004003d,0x00000006,0x0000004c,0x0000004b,
+ 0x0004003d,0x0000002c,0x0000004d,0x0000002e,0x0008004f,0x0000003c,0x0000004e,0x0000004d,
+ 0x0000004d,0x00000000,0x00000001,0x00000002,0x00060050,0x0000003c,0x0000004f,0x0000004c,
+ 0x0000004c,0x0000004c,0x00050084,0x0000003c,0x00000050,0x0000004e,0x0000004f,0x0004003d,
+ 0x0000002c,0x00000051,0x0000002e,0x0009004f,0x0000002c,0x00000052,0x00000051,0x00000050,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000052,0x000200f9,
+ 0x00000049,0x000200f8,0x00000053,0x00050041,0x0000001e,0x00000055,0x00000015,0x00000054,
+ 0x0004003d,0x00000012,0x00000056,0x00000055,0x000500ab,0x00000021,0x00000057,0x00000056,
+ 0x00000022,0x000300f7,0x00000059,0x00000000,0x000400fa,0x00000057,0x00000058,0x00000059,
+ 0x000200f8,0x00000058,0x00050041,0x00000027,0x0000005a,0x0000002e,0x0000004a,0x0004003d,
+ 0x00000006,0x0000005b,0x0000005a,0x000500ad,0x00000021,0x0000005c,0x0000005b,0x00000033,
+ 0x000200f9,0x00000059,0x000200f8,0x00000059,0x000700f5,0x00000021,0x0000005d,0x00000057,
+ 0x00000053,0x0000005c,0x00000058,0x000300f7,0x0000005f,0x00000000,0x000400fa,0x0000005d,
+ 0x0000005e,0x0000005f,0x000200f8,0x0000005e,0x00050041,0x00000027,0x00000060,0x0000002e,
+ 0x0000004a,0x0004003d,0x00000006,0x00000061,0x00000060,0x0004003d,0x0000002c,0x00000062,
+ 0x0000002e,0x0008004f,0x0000003c,0x00000063,0x00000062,0x00000062,0x00000000,0x00000001,
+ 0x00000002,0x00060050,0x0000003c,0x00000064,0x00000061,0x00000061,0x00000061,0x00050087,
+ 0x0000003c,0x00000065,0x00000063,0x00000064,0x0004003d,0x0000002c,0x00000066,0x0000002e,
+ 0x0009004f,0x0000002c,0x00000067,0x00000066,0x00000065,0x00000004,0x00000005,0x00000006,
+ 0x00000003,0x0003003e,0x0000002e,0x00000067,0x000200f9,0x0000005f,0x000200f8,0x0000005f,
+ 0x000200f9,0x00000049,0x000200f8,0x00000049,0x0004003d,0x0000002c,0x0000006b,0x0000002e,
+ 0x0004007c,0x00000068,0x0000006c,0x0000006b,0x0003003e,0x0000006a,0x0000006c,0x00050041,
+ 0x0000001e,0x0000006e,0x00000015,0x0000006d,0x0004003d,0x00000012,0x0000006f,0x0000006e,
+ 0x000500ab,0x00000021,0x00000070,0x0000006f,0x00000022,0x000300f7,0x00000072,0x00000000,
+ 0x000400fa,0x00000070,0x00000071,0x00000078,0x000200f8,0x00000071,0x0004003d,0x00000068,
+ 0x00000074,0x0000006a,0x0007004f,0x00000073,0x00000075,0x00000074,0x00000074,0x00000000,
+ 0x00000003,0x0004003d,0x00000068,0x00000076,0x0000006a,0x0009004f,0x00000068,0x00000077,
+ 0x00000076,0x00000075,0x00000004,0x00000005,0x00000002,0x00000003,0x0003003e,0x0000006a,
+ 0x00000077,0x000200f9,0x00000072,0x000200f8,0x00000078,0x00050041,0x0000001e,0x0000007a,
+ 0x00000015,0x00000079,0x0004003d,0x00000012,0x0000007b,0x0000007a,0x000500ab,0x00000021,
+ 0x0000007c,0x0000007b,0x00000022,0x000300f7,0x0000007e,0x00000000,0x000400fa,0x0000007c,
+ 0x0000007d,0x00000083,0x000200f8,0x0000007d,0x00050041,0x0000007f,0x00000080,0x0000006a,
+ 0x0000004a,0x0004003d,0x00000012,0x00000081,0x00000080,0x00050041,0x0000007f,0x00000082,
+ 0x0000006a,0x00000022,0x0003003e,0x00000082,0x00000081,0x000200f9,0x0000007e,0x000200f8,
+ 0x00000083,0x00050041,0x00000039,0x00000086,0x00000015,0x00000085,0x0004003d,0x00000006,
+ 0x00000087,0x00000086,0x0003003e,0x00000084,0x00000087,0x0004003d,0x00000006,0x00000088,
+ 0x00000084,0x000500c7,0x00000006,0x00000089,0x00000088,0x00000040,0x000500ab,0x00000021,
+ 0x0000008a,0x00000089,0x00000033,0x000300f7,0x0000008c,0x00000000,0x000400fa,0x0000008a,
+ 0x0000008b,0x0000008c,0x000200f8,0x0000008b,0x00050041,0x0000007f,0x0000008d,0x0000006a,
+ 0x00000026,0x0003003e,0x0000008d,0x00000022,0x000200f9,0x0000008c,0x000200f8,0x0000008c,
+ 0x0004003d,0x00000006,0x0000008e,0x00000084,0x000500c7,0x00000006,0x0000008f,0x0000008e,
+ 0x0000001d,0x000500ab,0x00000021,0x00000090,0x0000008f,0x00000033,0x000300f7,0x00000092,
+ 0x00000000,0x000400fa,0x00000090,0x00000091,0x00000092,0x000200f8,0x00000091,0x00050041,
+ 0x0000007f,0x00000094,0x0000006a,0x00000093,0x0003003e,0x00000094,0x00000022,0x000200f9,
+ 0x00000092,0x000200f8,0x00000092,0x0004003d,0x00000006,0x00000095,0x00000084,0x000500c7,
+ 0x00000006,0x00000096,0x00000095,0x00000079,0x000500ab,0x00000021,0x00000097,0x00000096,
+ 0x00000033,0x000300f7,0x00000099,0x00000000,0x000400fa,0x00000097,0x00000098,0x00000099,
+ 0x000200f8,0x00000098,0x00050041,0x0000007f,0x0000009a,0x0000006a,0x0000004a,0x0003003e,
+ 0x0000009a,0x00000026,0x000200f9,0x00000099,0x000200f8,0x00000099,0x000200f9,0x0000007e,
+ 0x000200f8,0x0000007e,0x000200f9,0x00000072,0x000200f8,0x00000072,0x0004003d,0x00000068,
+ 0x0000009d,0x0000006a,0x0003003e,0x0000009c,0x0000009d,0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform itexture2DArray src;
+layout(location = 0)out uvec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ ivec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ uvec4 destValue = uvec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc
new file mode 100644
index 0000000..b54694e
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc
@@ -0,0 +1,209 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000014[] = {
+ 0x07230203,0x00010000,0x00080007,0x0000009a,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000098,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x00000063,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000080,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x00000098,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x00000098,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000012,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000012,0x00000001,0x00000000,
+ 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000002,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x0004002b,0x00000006,0x0000003d,0x00000005,0x0004002b,0x00000012,0x00000043,0x00000003,
+ 0x00040020,0x00000044,0x00000007,0x00000012,0x00040017,0x00000047,0x00000012,0x00000003,
+ 0x0004002b,0x00000006,0x0000004f,0x00000006,0x0004002b,0x00000006,0x0000006a,0x00000007,
+ 0x00040017,0x00000070,0x00000012,0x00000002,0x0004002b,0x00000006,0x00000076,0x00000008,
+ 0x0004002b,0x00000006,0x00000081,0x00000009,0x0004002b,0x00000012,0x0000008f,0x00000002,
+ 0x00040020,0x00000097,0x00000003,0x0000002c,0x0004003b,0x00000097,0x00000098,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002d,0x0000002e,0x00000007,0x0004003b,0x0000002d,0x00000063,0x00000007,0x0004003b,
+ 0x00000027,0x00000080,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,0x00000031,0x00050041,0x00000017,
+ 0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,0x00000035,0x00000034,0x0004003d,
+ 0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,0x00000037,0x00000035,0x00000036,
+ 0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,0x0004003d,0x00000006,0x0000003b,
+ 0x0000003a,0x0007005f,0x0000002c,0x0000003c,0x00000032,0x00000037,0x00000002,0x0000003b,
+ 0x0003003e,0x0000002e,0x0000003c,0x00050041,0x0000001e,0x0000003e,0x00000015,0x0000003d,
+ 0x0004003d,0x00000012,0x0000003f,0x0000003e,0x000500ab,0x00000021,0x00000040,0x0000003f,
+ 0x00000022,0x000300f7,0x00000042,0x00000000,0x000400fa,0x00000040,0x00000041,0x0000004e,
+ 0x000200f8,0x00000041,0x00050041,0x00000044,0x00000045,0x0000002e,0x00000043,0x0004003d,
+ 0x00000012,0x00000046,0x00000045,0x0004003d,0x0000002c,0x00000048,0x0000002e,0x0008004f,
+ 0x00000047,0x00000049,0x00000048,0x00000048,0x00000000,0x00000001,0x00000002,0x00060050,
+ 0x00000047,0x0000004a,0x00000046,0x00000046,0x00000046,0x00050084,0x00000047,0x0000004b,
+ 0x00000049,0x0000004a,0x0004003d,0x0000002c,0x0000004c,0x0000002e,0x0009004f,0x0000002c,
+ 0x0000004d,0x0000004c,0x0000004b,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,
+ 0x0000002e,0x0000004d,0x000200f9,0x00000042,0x000200f8,0x0000004e,0x00050041,0x0000001e,
+ 0x00000050,0x00000015,0x0000004f,0x0004003d,0x00000012,0x00000051,0x00000050,0x000500ab,
+ 0x00000021,0x00000052,0x00000051,0x00000022,0x000300f7,0x00000054,0x00000000,0x000400fa,
+ 0x00000052,0x00000053,0x00000054,0x000200f8,0x00000053,0x00050041,0x00000044,0x00000055,
+ 0x0000002e,0x00000043,0x0004003d,0x00000012,0x00000056,0x00000055,0x000500ac,0x00000021,
+ 0x00000057,0x00000056,0x00000022,0x000200f9,0x00000054,0x000200f8,0x00000054,0x000700f5,
+ 0x00000021,0x00000058,0x00000052,0x0000004e,0x00000057,0x00000053,0x000300f7,0x0000005a,
+ 0x00000000,0x000400fa,0x00000058,0x00000059,0x0000005a,0x000200f8,0x00000059,0x00050041,
+ 0x00000044,0x0000005b,0x0000002e,0x00000043,0x0004003d,0x00000012,0x0000005c,0x0000005b,
+ 0x0004003d,0x0000002c,0x0000005d,0x0000002e,0x0008004f,0x00000047,0x0000005e,0x0000005d,
+ 0x0000005d,0x00000000,0x00000001,0x00000002,0x00060050,0x00000047,0x0000005f,0x0000005c,
+ 0x0000005c,0x0000005c,0x00050086,0x00000047,0x00000060,0x0000005e,0x0000005f,0x0004003d,
+ 0x0000002c,0x00000061,0x0000002e,0x0009004f,0x0000002c,0x00000062,0x00000061,0x00000060,
+ 0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000062,0x000200f9,
+ 0x0000005a,0x000200f8,0x0000005a,0x000200f9,0x00000042,0x000200f8,0x00000042,0x0004003d,
+ 0x0000002c,0x00000064,0x0000002e,0x00050051,0x00000012,0x00000065,0x00000064,0x00000000,
+ 0x00050051,0x00000012,0x00000066,0x00000064,0x00000001,0x00050051,0x00000012,0x00000067,
+ 0x00000064,0x00000002,0x00050051,0x00000012,0x00000068,0x00000064,0x00000003,0x00070050,
+ 0x0000002c,0x00000069,0x00000065,0x00000066,0x00000067,0x00000068,0x0003003e,0x00000063,
+ 0x00000069,0x00050041,0x0000001e,0x0000006b,0x00000015,0x0000006a,0x0004003d,0x00000012,
+ 0x0000006c,0x0000006b,0x000500ab,0x00000021,0x0000006d,0x0000006c,0x00000022,0x000300f7,
+ 0x0000006f,0x00000000,0x000400fa,0x0000006d,0x0000006e,0x00000075,0x000200f8,0x0000006e,
+ 0x0004003d,0x0000002c,0x00000071,0x00000063,0x0007004f,0x00000070,0x00000072,0x00000071,
+ 0x00000071,0x00000000,0x00000003,0x0004003d,0x0000002c,0x00000073,0x00000063,0x0009004f,
+ 0x0000002c,0x00000074,0x00000073,0x00000072,0x00000004,0x00000005,0x00000002,0x00000003,
+ 0x0003003e,0x00000063,0x00000074,0x000200f9,0x0000006f,0x000200f8,0x00000075,0x00050041,
+ 0x0000001e,0x00000077,0x00000015,0x00000076,0x0004003d,0x00000012,0x00000078,0x00000077,
+ 0x000500ab,0x00000021,0x00000079,0x00000078,0x00000022,0x000300f7,0x0000007b,0x00000000,
+ 0x000400fa,0x00000079,0x0000007a,0x0000007f,0x000200f8,0x0000007a,0x00050041,0x00000044,
+ 0x0000007c,0x00000063,0x00000043,0x0004003d,0x00000012,0x0000007d,0x0000007c,0x00050041,
+ 0x00000044,0x0000007e,0x00000063,0x00000022,0x0003003e,0x0000007e,0x0000007d,0x000200f9,
+ 0x0000007b,0x000200f8,0x0000007f,0x00050041,0x00000039,0x00000082,0x00000015,0x00000081,
+ 0x0004003d,0x00000006,0x00000083,0x00000082,0x0003003e,0x00000080,0x00000083,0x0004003d,
+ 0x00000006,0x00000084,0x00000080,0x000500c7,0x00000006,0x00000085,0x00000084,0x00000038,
+ 0x000500ab,0x00000021,0x00000086,0x00000085,0x00000033,0x000300f7,0x00000088,0x00000000,
+ 0x000400fa,0x00000086,0x00000087,0x00000088,0x000200f8,0x00000087,0x00050041,0x00000044,
+ 0x00000089,0x00000063,0x00000026,0x0003003e,0x00000089,0x00000022,0x000200f9,0x00000088,
+ 0x000200f8,0x00000088,0x0004003d,0x00000006,0x0000008a,0x00000080,0x000500c7,0x00000006,
+ 0x0000008b,0x0000008a,0x0000001d,0x000500ab,0x00000021,0x0000008c,0x0000008b,0x00000033,
+ 0x000300f7,0x0000008e,0x00000000,0x000400fa,0x0000008c,0x0000008d,0x0000008e,0x000200f8,
+ 0x0000008d,0x00050041,0x00000044,0x00000090,0x00000063,0x0000008f,0x0003003e,0x00000090,
+ 0x00000022,0x000200f9,0x0000008e,0x000200f8,0x0000008e,0x0004003d,0x00000006,0x00000091,
+ 0x00000080,0x000500c7,0x00000006,0x00000092,0x00000091,0x00000076,0x000500ab,0x00000021,
+ 0x00000093,0x00000092,0x00000033,0x000300f7,0x00000095,0x00000000,0x000400fa,0x00000093,
+ 0x00000094,0x00000095,0x000200f8,0x00000094,0x00050041,0x00000044,0x00000096,0x00000063,
+ 0x00000043,0x0003003e,0x00000096,0x00000026,0x000200f9,0x00000095,0x000200f8,0x00000095,
+ 0x000200f9,0x0000007b,0x000200f8,0x0000007b,0x000200f9,0x0000006f,0x000200f8,0x0000006f,
+ 0x0004003d,0x0000002c,0x00000099,0x00000063,0x0003003e,0x00000098,0x00000099,0x000100fd,
+ 0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform utexture2D src;
+layout(location = 0)out uvec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ uvec4 srcValue = texelFetch(src, params . srcOffset + srcSubImageCoords, params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ uvec4 destValue = uvec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc
new file mode 100644
index 0000000..0dba87a
--- /dev/null
+++ b/src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc
@@ -0,0 +1,213 @@
+ // 7.11.3009
+ #pragma once
+const uint32_t kImageCopy_frag_00000015[] = {
+ 0x07230203,0x00010000,0x00080007,0x000000a1,0x00000000,0x00020011,0x00000001,0x0006000b,
+ 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
+ 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000009f,0x00030010,
+ 0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,
+ 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,
+ 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x00000009,0x74736564,0x49627553,
+ 0x6567616d,0x726f6f43,0x00007364,0x00060005,0x0000000d,0x465f6c67,0x43676172,0x64726f6f,
+ 0x00000000,0x00060005,0x00000013,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,
+ 0x00000013,0x00000000,0x4f637273,0x65736666,0x00000074,0x00060006,0x00000013,0x00000001,
+ 0x74736564,0x7366664f,0x00007465,0x00050006,0x00000013,0x00000002,0x4d637273,0x00007069,
+ 0x00060006,0x00000013,0x00000003,0x4c637273,0x72657961,0x00000000,0x00050006,0x00000013,
+ 0x00000004,0x70696c66,0x00000059,0x00080006,0x00000013,0x00000005,0x6d657270,0x69746c75,
+ 0x41796c70,0x6168706c,0x00000000,0x00070006,0x00000013,0x00000006,0x756d6e75,0x7069746c,
+ 0x6c41796c,0x00616870,0x00080006,0x00000013,0x00000007,0x74736564,0x4c736148,0x6e696d75,
+ 0x65636e61,0x00000000,0x00060006,0x00000013,0x00000008,0x74736564,0x6c417349,0x00616870,
+ 0x00090006,0x00000013,0x00000009,0x74736564,0x61666544,0x43746c75,0x6e6e6168,0x4d736c65,
+ 0x006b7361,0x00040005,0x00000015,0x61726170,0x0000736d,0x00070005,0x0000001b,0x53637273,
+ 0x6d496275,0x43656761,0x64726f6f,0x00000073,0x00050005,0x0000002e,0x56637273,0x65756c61,
+ 0x00000000,0x00030005,0x00000031,0x00637273,0x00050005,0x0000006a,0x74736564,0x756c6156,
+ 0x00000065,0x00070005,0x00000087,0x61666564,0x43746c75,0x6e6e6168,0x4d736c65,0x006b7361,
+ 0x00040005,0x0000009f,0x74736564,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000000f,
+ 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,
+ 0x00000023,0x00000008,0x00050048,0x00000013,0x00000002,0x00000023,0x00000010,0x00050048,
+ 0x00000013,0x00000003,0x00000023,0x00000014,0x00050048,0x00000013,0x00000004,0x00000023,
+ 0x00000018,0x00050048,0x00000013,0x00000005,0x00000023,0x0000001c,0x00050048,0x00000013,
+ 0x00000006,0x00000023,0x00000020,0x00050048,0x00000013,0x00000007,0x00000023,0x00000024,
+ 0x00050048,0x00000013,0x00000008,0x00000023,0x00000028,0x00050048,0x00000013,0x00000009,
+ 0x00000023,0x0000002c,0x00030047,0x00000013,0x00000002,0x00040047,0x00000031,0x00000022,
+ 0x00000000,0x00040047,0x00000031,0x00000021,0x00000000,0x00040047,0x0000009f,0x0000001e,
+ 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,0x000c001e,0x00000013,0x00000007,0x00000007,0x00000006,0x00000006,0x00000012,
+ 0x00000012,0x00000012,0x00000012,0x00000012,0x00000006,0x00040020,0x00000014,0x00000009,
+ 0x00000013,0x0004003b,0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,
+ 0x00000001,0x00040020,0x00000017,0x00000009,0x00000007,0x0004002b,0x00000006,0x0000001d,
+ 0x00000004,0x00040020,0x0000001e,0x00000009,0x00000012,0x00020014,0x00000021,0x0004002b,
+ 0x00000012,0x00000022,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000001,0x00040020,
+ 0x00000027,0x00000007,0x00000006,0x00040017,0x0000002c,0x00000012,0x00000004,0x00040020,
+ 0x0000002d,0x00000007,0x0000002c,0x00090019,0x0000002f,0x00000012,0x00000001,0x00000000,
+ 0x00000001,0x00000000,0x00000001,0x00000000,0x00040020,0x00000030,0x00000000,0x0000002f,
+ 0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000006,0x00000033,0x00000000,
+ 0x0004002b,0x00000006,0x00000038,0x00000003,0x00040020,0x00000039,0x00000009,0x00000006,
+ 0x00040017,0x0000003c,0x00000006,0x00000003,0x0004002b,0x00000006,0x00000040,0x00000002,
+ 0x0004002b,0x00000006,0x00000044,0x00000005,0x0004002b,0x00000012,0x0000004a,0x00000003,
+ 0x00040020,0x0000004b,0x00000007,0x00000012,0x00040017,0x0000004e,0x00000012,0x00000003,
+ 0x0004002b,0x00000006,0x00000056,0x00000006,0x0004002b,0x00000006,0x00000071,0x00000007,
+ 0x00040017,0x00000077,0x00000012,0x00000002,0x0004002b,0x00000006,0x0000007d,0x00000008,
+ 0x0004002b,0x00000006,0x00000088,0x00000009,0x0004002b,0x00000012,0x00000096,0x00000002,
+ 0x00040020,0x0000009e,0x00000003,0x0000002c,0x0004003b,0x0000009e,0x0000009f,0x00000003,
+ 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
+ 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x0000001b,0x00000007,0x0004003b,
+ 0x0000002d,0x0000002e,0x00000007,0x0004003b,0x0000002d,0x0000006a,0x00000007,0x0004003b,
+ 0x00000027,0x00000087,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,
+ 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004006e,0x00000007,
+ 0x00000011,0x00000010,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,
+ 0x00000007,0x00000019,0x00000018,0x00050082,0x00000007,0x0000001a,0x00000011,0x00000019,
+ 0x0003003e,0x00000009,0x0000001a,0x0004003d,0x00000007,0x0000001c,0x00000009,0x0003003e,
+ 0x0000001b,0x0000001c,0x00050041,0x0000001e,0x0000001f,0x00000015,0x0000001d,0x0004003d,
+ 0x00000012,0x00000020,0x0000001f,0x000500ab,0x00000021,0x00000023,0x00000020,0x00000022,
+ 0x000300f7,0x00000025,0x00000000,0x000400fa,0x00000023,0x00000024,0x00000025,0x000200f8,
+ 0x00000024,0x00050041,0x00000027,0x00000028,0x0000001b,0x00000026,0x0004003d,0x00000006,
+ 0x00000029,0x00000028,0x0004007e,0x00000006,0x0000002a,0x00000029,0x00050041,0x00000027,
+ 0x0000002b,0x0000001b,0x00000026,0x0003003e,0x0000002b,0x0000002a,0x000200f9,0x00000025,
+ 0x000200f8,0x00000025,0x0004003d,0x0000002f,0x00000032,0x00000031,0x00050041,0x00000017,
+ 0x00000034,0x00000015,0x00000033,0x0004003d,0x00000007,0x00000035,0x00000034,0x0004003d,
+ 0x00000007,0x00000036,0x0000001b,0x00050080,0x00000007,0x00000037,0x00000035,0x00000036,
+ 0x00050041,0x00000039,0x0000003a,0x00000015,0x00000038,0x0004003d,0x00000006,0x0000003b,
+ 0x0000003a,0x00050051,0x00000006,0x0000003d,0x00000037,0x00000000,0x00050051,0x00000006,
+ 0x0000003e,0x00000037,0x00000001,0x00060050,0x0000003c,0x0000003f,0x0000003d,0x0000003e,
+ 0x0000003b,0x00050041,0x00000039,0x00000041,0x00000015,0x00000040,0x0004003d,0x00000006,
+ 0x00000042,0x00000041,0x0007005f,0x0000002c,0x00000043,0x00000032,0x0000003f,0x00000002,
+ 0x00000042,0x0003003e,0x0000002e,0x00000043,0x00050041,0x0000001e,0x00000045,0x00000015,
+ 0x00000044,0x0004003d,0x00000012,0x00000046,0x00000045,0x000500ab,0x00000021,0x00000047,
+ 0x00000046,0x00000022,0x000300f7,0x00000049,0x00000000,0x000400fa,0x00000047,0x00000048,
+ 0x00000055,0x000200f8,0x00000048,0x00050041,0x0000004b,0x0000004c,0x0000002e,0x0000004a,
+ 0x0004003d,0x00000012,0x0000004d,0x0000004c,0x0004003d,0x0000002c,0x0000004f,0x0000002e,
+ 0x0008004f,0x0000004e,0x00000050,0x0000004f,0x0000004f,0x00000000,0x00000001,0x00000002,
+ 0x00060050,0x0000004e,0x00000051,0x0000004d,0x0000004d,0x0000004d,0x00050084,0x0000004e,
+ 0x00000052,0x00000050,0x00000051,0x0004003d,0x0000002c,0x00000053,0x0000002e,0x0009004f,
+ 0x0000002c,0x00000054,0x00000053,0x00000052,0x00000004,0x00000005,0x00000006,0x00000003,
+ 0x0003003e,0x0000002e,0x00000054,0x000200f9,0x00000049,0x000200f8,0x00000055,0x00050041,
+ 0x0000001e,0x00000057,0x00000015,0x00000056,0x0004003d,0x00000012,0x00000058,0x00000057,
+ 0x000500ab,0x00000021,0x00000059,0x00000058,0x00000022,0x000300f7,0x0000005b,0x00000000,
+ 0x000400fa,0x00000059,0x0000005a,0x0000005b,0x000200f8,0x0000005a,0x00050041,0x0000004b,
+ 0x0000005c,0x0000002e,0x0000004a,0x0004003d,0x00000012,0x0000005d,0x0000005c,0x000500ac,
+ 0x00000021,0x0000005e,0x0000005d,0x00000022,0x000200f9,0x0000005b,0x000200f8,0x0000005b,
+ 0x000700f5,0x00000021,0x0000005f,0x00000059,0x00000055,0x0000005e,0x0000005a,0x000300f7,
+ 0x00000061,0x00000000,0x000400fa,0x0000005f,0x00000060,0x00000061,0x000200f8,0x00000060,
+ 0x00050041,0x0000004b,0x00000062,0x0000002e,0x0000004a,0x0004003d,0x00000012,0x00000063,
+ 0x00000062,0x0004003d,0x0000002c,0x00000064,0x0000002e,0x0008004f,0x0000004e,0x00000065,
+ 0x00000064,0x00000064,0x00000000,0x00000001,0x00000002,0x00060050,0x0000004e,0x00000066,
+ 0x00000063,0x00000063,0x00000063,0x00050086,0x0000004e,0x00000067,0x00000065,0x00000066,
+ 0x0004003d,0x0000002c,0x00000068,0x0000002e,0x0009004f,0x0000002c,0x00000069,0x00000068,
+ 0x00000067,0x00000004,0x00000005,0x00000006,0x00000003,0x0003003e,0x0000002e,0x00000069,
+ 0x000200f9,0x00000061,0x000200f8,0x00000061,0x000200f9,0x00000049,0x000200f8,0x00000049,
+ 0x0004003d,0x0000002c,0x0000006b,0x0000002e,0x00050051,0x00000012,0x0000006c,0x0000006b,
+ 0x00000000,0x00050051,0x00000012,0x0000006d,0x0000006b,0x00000001,0x00050051,0x00000012,
+ 0x0000006e,0x0000006b,0x00000002,0x00050051,0x00000012,0x0000006f,0x0000006b,0x00000003,
+ 0x00070050,0x0000002c,0x00000070,0x0000006c,0x0000006d,0x0000006e,0x0000006f,0x0003003e,
+ 0x0000006a,0x00000070,0x00050041,0x0000001e,0x00000072,0x00000015,0x00000071,0x0004003d,
+ 0x00000012,0x00000073,0x00000072,0x000500ab,0x00000021,0x00000074,0x00000073,0x00000022,
+ 0x000300f7,0x00000076,0x00000000,0x000400fa,0x00000074,0x00000075,0x0000007c,0x000200f8,
+ 0x00000075,0x0004003d,0x0000002c,0x00000078,0x0000006a,0x0007004f,0x00000077,0x00000079,
+ 0x00000078,0x00000078,0x00000000,0x00000003,0x0004003d,0x0000002c,0x0000007a,0x0000006a,
+ 0x0009004f,0x0000002c,0x0000007b,0x0000007a,0x00000079,0x00000004,0x00000005,0x00000002,
+ 0x00000003,0x0003003e,0x0000006a,0x0000007b,0x000200f9,0x00000076,0x000200f8,0x0000007c,
+ 0x00050041,0x0000001e,0x0000007e,0x00000015,0x0000007d,0x0004003d,0x00000012,0x0000007f,
+ 0x0000007e,0x000500ab,0x00000021,0x00000080,0x0000007f,0x00000022,0x000300f7,0x00000082,
+ 0x00000000,0x000400fa,0x00000080,0x00000081,0x00000086,0x000200f8,0x00000081,0x00050041,
+ 0x0000004b,0x00000083,0x0000006a,0x0000004a,0x0004003d,0x00000012,0x00000084,0x00000083,
+ 0x00050041,0x0000004b,0x00000085,0x0000006a,0x00000022,0x0003003e,0x00000085,0x00000084,
+ 0x000200f9,0x00000082,0x000200f8,0x00000086,0x00050041,0x00000039,0x00000089,0x00000015,
+ 0x00000088,0x0004003d,0x00000006,0x0000008a,0x00000089,0x0003003e,0x00000087,0x0000008a,
+ 0x0004003d,0x00000006,0x0000008b,0x00000087,0x000500c7,0x00000006,0x0000008c,0x0000008b,
+ 0x00000040,0x000500ab,0x00000021,0x0000008d,0x0000008c,0x00000033,0x000300f7,0x0000008f,
+ 0x00000000,0x000400fa,0x0000008d,0x0000008e,0x0000008f,0x000200f8,0x0000008e,0x00050041,
+ 0x0000004b,0x00000090,0x0000006a,0x00000026,0x0003003e,0x00000090,0x00000022,0x000200f9,
+ 0x0000008f,0x000200f8,0x0000008f,0x0004003d,0x00000006,0x00000091,0x00000087,0x000500c7,
+ 0x00000006,0x00000092,0x00000091,0x0000001d,0x000500ab,0x00000021,0x00000093,0x00000092,
+ 0x00000033,0x000300f7,0x00000095,0x00000000,0x000400fa,0x00000093,0x00000094,0x00000095,
+ 0x000200f8,0x00000094,0x00050041,0x0000004b,0x00000097,0x0000006a,0x00000096,0x0003003e,
+ 0x00000097,0x00000022,0x000200f9,0x00000095,0x000200f8,0x00000095,0x0004003d,0x00000006,
+ 0x00000098,0x00000087,0x000500c7,0x00000006,0x00000099,0x00000098,0x0000007d,0x000500ab,
+ 0x00000021,0x0000009a,0x00000099,0x00000033,0x000300f7,0x0000009c,0x00000000,0x000400fa,
+ 0x0000009a,0x0000009b,0x0000009c,0x000200f8,0x0000009b,0x00050041,0x0000004b,0x0000009d,
+ 0x0000006a,0x0000004a,0x0003003e,0x0000009d,0x00000026,0x000200f9,0x0000009c,0x000200f8,
+ 0x0000009c,0x000200f9,0x00000082,0x000200f8,0x00000082,0x000200f9,0x00000076,0x000200f8,
+ 0x00000076,0x0004003d,0x0000002c,0x000000a0,0x0000006a,0x0003003e,0x0000009f,0x000000a0,
+ 0x000100fd,0x00010038
+};
+
+#if 0 // Generated from:
+#version 450 core
+
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(set = 0, binding = 0)uniform utexture2DArray src;
+layout(location = 0)out uvec4 dest;
+
+layout(push_constant)uniform PushConstants {
+
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
+
+ bool flipY;
+
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
+
+ bool destHasLuminance;
+ bool destIsAlpha;
+
+ int destDefaultChannelsMask;
+} params;
+
+void main()
+{
+ ivec2 destSubImageCoords = ivec2(gl_FragCoord . xy)- params . destOffset;
+
+ ivec2 srcSubImageCoords = destSubImageCoords;
+
+ if(params . flipY)
+ srcSubImageCoords . y = - srcSubImageCoords . y;
+
+ uvec4 srcValue = texelFetch(src, ivec3(params . srcOffset + srcSubImageCoords, params . srcLayer), params . srcMip);
+
+ if(params . premultiplyAlpha)
+ {
+ srcValue . rgb *= srcValue . a;
+ }
+ else if(params . unmultiplyAlpha && srcValue . a > 0)
+ {
+ srcValue . rgb /= srcValue . a;
+ }
+
+ uvec4 destValue = uvec4(srcValue);
+
+ if(params . destHasLuminance)
+ {
+ destValue . rg = destValue . ra;
+ }
+ else if(params . destIsAlpha)
+ {
+ destValue . r = destValue . a;
+ }
+ else
+ {
+ int defaultChannelsMask = params . destDefaultChannelsMask;
+ if((defaultChannelsMask & 2)!= 0)
+ {
+ destValue . g = 0;
+ }
+ if((defaultChannelsMask & 4)!= 0)
+ {
+ destValue . b = 0;
+ }
+ if((defaultChannelsMask & 8)!= 0)
+ {
+ destValue . a = 1;
+ }
+ }
+
+ dest = destValue;
+}
+#endif // Preprocessed code
diff --git a/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag b/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag
index 98ed5dd..f77c82e 100644
--- a/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag
+++ b/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag
@@ -9,19 +9,27 @@
#extension GL_EXT_samplerless_texture_functions : require
+#define MAKE_SRC_RESOURCE(prefix, type) prefix ## type
+
#if SrcIsFloat
#define SRC_RESOURCE(type) type
#define SrcType vec4
#elif SrcIsInt
-#define SRC_RESOURCE(type) i ## type
+#define SRC_RESOURCE(type) MAKE_SRC_RESOURCE(i, type)
#define SrcType ivec4
#elif SrcIsUint
-#define SRC_RESOURCE(type) u ## type
+#define SRC_RESOURCE(type) MAKE_SRC_RESOURCE(u, type)
#define SrcType uvec4
#else
#error "Not all source formats are accounted for"
#endif
+#if SrcIsArray
+#define SRC_RESOURCE_NAME texture2DArray
+#else
+#define SRC_RESOURCE_NAME texture2D
+#endif
+
#if DestIsFloat
#define DestType vec4
#elif DestIsInt
@@ -32,19 +40,27 @@
#error "Not all destinatoin formats are accounted for"
#endif
-layout(set = 0, binding = 0) uniform SRC_RESOURCE(texture2D) src;
+layout(set = 0, binding = 0) uniform SRC_RESOURCE(SRC_RESOURCE_NAME) src;
layout(location = 0) out DestType dest;
layout(push_constant) uniform PushConstants {
+ // Translation from source to destination coordinates.
+ ivec2 srcOffset;
+ ivec2 destOffset;
+ int srcMip;
+ int srcLayer;
// Whether y needs to be flipped
bool flipY;
+ // Premultiplied alpha conversions
+ bool premultiplyAlpha;
+ bool unmultiplyAlpha;
// Whether destination is emulated luminance/alpha.
bool destHasLuminance;
bool destIsAlpha;
- // Translation from source to destination coordinates.
- int srcMip;
- ivec2 srcOffset;
- ivec2 destOffset;
+ // Bits 0~3 tell whether R,G,B or A exist in destination, but as a result of format emulation.
+ // Bit 0 is ignored, because R is always present. For B and G, the result is set to 0 and for
+ // A, the result is set to 1.
+ int destDefaultChannelsMask;
} params;
void main()
@@ -58,7 +74,20 @@
if (params.flipY)
srcSubImageCoords.y = -srcSubImageCoords.y;
+#if SrcIsArray
+ SrcType srcValue = texelFetch(src, ivec3(params.srcOffset + srcSubImageCoords, params.srcLayer), params.srcMip);
+#else
SrcType srcValue = texelFetch(src, params.srcOffset + srcSubImageCoords, params.srcMip);
+#endif
+
+ if (params.premultiplyAlpha)
+ {
+ srcValue.rgb *= srcValue.a;
+ }
+ else if (params.unmultiplyAlpha && srcValue.a > 0)
+ {
+ srcValue.rgb /= srcValue.a;
+ }
// Convert value to destination type.
DestType destValue = DestType(srcValue);
@@ -72,6 +101,22 @@
{
destValue.r = destValue.a;
}
+ else
+ {
+ int defaultChannelsMask = params.destDefaultChannelsMask;
+ if ((defaultChannelsMask & 2) != 0)
+ {
+ destValue.g = 0;
+ }
+ if ((defaultChannelsMask & 4) != 0)
+ {
+ destValue.b = 0;
+ }
+ if ((defaultChannelsMask & 8) != 0)
+ {
+ destValue.a = 1;
+ }
+ }
dest = destValue;
}
diff --git a/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json b/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json
index 444ad27..e49aa1a 100644
--- a/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json
+++ b/src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag.json
@@ -6,6 +6,9 @@
"",
"ImageCopy.frag.json: Build parameters for ImageCopy.frag."
],
+ "Flags": [
+ "SrcIsArray"
+ ],
"SrcFormat": [
"SrcIsFloat",
"SrcIsInt",
diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/src/libANGLE/renderer/vulkan/vk_helpers.cpp
index 9251c45..acf9e8b 100644
--- a/src/libANGLE/renderer/vulkan/vk_helpers.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_helpers.cpp
@@ -458,8 +458,6 @@
if (!mDescriptorPools[poolIndex]->isReferenced() &&
!renderer->isSerialInUse(mDescriptorPools[poolIndex]->get().getSerial()))
{
- // The newly allocated pool must be a different index from the current pool.
- ASSERT(poolIndex != mCurrentPoolIndex);
mCurrentPoolIndex = poolIndex;
found = true;
break;
diff --git a/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp b/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
index 6551081..fdf5dc0 100644
--- a/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
@@ -49,12 +49,21 @@
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc"
-#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000C.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000D.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc"
// This is SPIR-V binary blob and the size.
struct ShaderBlob
@@ -105,14 +114,25 @@
{kImageCopy_frag_00000000, sizeof(kImageCopy_frag_00000000)},
{kImageCopy_frag_00000001, sizeof(kImageCopy_frag_00000001)},
{kImageCopy_frag_00000002, sizeof(kImageCopy_frag_00000002)},
- {nullptr, 0}, // 0x00000003
+ {kImageCopy_frag_00000003, sizeof(kImageCopy_frag_00000003)},
{kImageCopy_frag_00000004, sizeof(kImageCopy_frag_00000004)},
{kImageCopy_frag_00000005, sizeof(kImageCopy_frag_00000005)},
- {kImageCopy_frag_00000006, sizeof(kImageCopy_frag_00000006)},
+ {nullptr, 0}, // 0x00000006
{nullptr, 0}, // 0x00000007
{kImageCopy_frag_00000008, sizeof(kImageCopy_frag_00000008)},
{kImageCopy_frag_00000009, sizeof(kImageCopy_frag_00000009)},
{kImageCopy_frag_0000000A, sizeof(kImageCopy_frag_0000000A)},
+ {kImageCopy_frag_0000000B, sizeof(kImageCopy_frag_0000000B)},
+ {kImageCopy_frag_0000000C, sizeof(kImageCopy_frag_0000000C)},
+ {kImageCopy_frag_0000000D, sizeof(kImageCopy_frag_0000000D)},
+ {nullptr, 0}, // 0x0000000E
+ {nullptr, 0}, // 0x0000000F
+ {kImageCopy_frag_00000010, sizeof(kImageCopy_frag_00000010)},
+ {kImageCopy_frag_00000011, sizeof(kImageCopy_frag_00000011)},
+ {kImageCopy_frag_00000012, sizeof(kImageCopy_frag_00000012)},
+ {kImageCopy_frag_00000013, sizeof(kImageCopy_frag_00000013)},
+ {kImageCopy_frag_00000014, sizeof(kImageCopy_frag_00000014)},
+ {kImageCopy_frag_00000015, sizeof(kImageCopy_frag_00000015)},
};
angle::Result GetShader(Context *context,
diff --git a/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni b/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
index dfc1e80..810f544 100644
--- a/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
+++ b/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
@@ -42,10 +42,19 @@
"shaders/gen/ImageCopy.frag.00000000.inc",
"shaders/gen/ImageCopy.frag.00000001.inc",
"shaders/gen/ImageCopy.frag.00000002.inc",
+ "shaders/gen/ImageCopy.frag.00000003.inc",
"shaders/gen/ImageCopy.frag.00000004.inc",
"shaders/gen/ImageCopy.frag.00000005.inc",
- "shaders/gen/ImageCopy.frag.00000006.inc",
"shaders/gen/ImageCopy.frag.00000008.inc",
"shaders/gen/ImageCopy.frag.00000009.inc",
"shaders/gen/ImageCopy.frag.0000000A.inc",
+ "shaders/gen/ImageCopy.frag.0000000B.inc",
+ "shaders/gen/ImageCopy.frag.0000000C.inc",
+ "shaders/gen/ImageCopy.frag.0000000D.inc",
+ "shaders/gen/ImageCopy.frag.00000010.inc",
+ "shaders/gen/ImageCopy.frag.00000011.inc",
+ "shaders/gen/ImageCopy.frag.00000012.inc",
+ "shaders/gen/ImageCopy.frag.00000013.inc",
+ "shaders/gen/ImageCopy.frag.00000014.inc",
+ "shaders/gen/ImageCopy.frag.00000015.inc",
]
diff --git a/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h b/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
index 7cd09ee..b42271d 100644
--- a/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
+++ b/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
@@ -70,19 +70,24 @@
namespace ImageCopy_frag
{
+enum flags
+{
+ kSrcIsArray = 0x00000001,
+ kFlagsMask = 0x00000001,
+};
enum SrcFormat
{
kSrcIsFloat = 0x00000000,
- kSrcIsInt = 0x00000001,
- kSrcIsUint = 0x00000002,
- kSrcFormatMask = 0x00000003,
+ kSrcIsInt = 0x00000002,
+ kSrcIsUint = 0x00000004,
+ kSrcFormatMask = 0x00000006,
};
enum DestFormat
{
kDestIsFloat = 0x00000000,
- kDestIsInt = 0x00000004,
- kDestIsUint = 0x00000008,
- kDestFormatMask = 0x0000000C,
+ kDestIsInt = 0x00000008,
+ kDestIsUint = 0x00000010,
+ kDestFormatMask = 0x00000018,
};
} // namespace ImageCopy_frag
@@ -123,7 +128,8 @@
RefCounted<ShaderAndSerial> mFullScreenQuad_vert_shaders[1];
RefCounted<ShaderAndSerial> mImageClear_frag_shaders[1];
RefCounted<ShaderAndSerial>
- mImageCopy_frag_shaders[InternalShader::ImageCopy_frag::kSrcFormatMask |
+ mImageCopy_frag_shaders[InternalShader::ImageCopy_frag::kFlagsMask |
+ InternalShader::ImageCopy_frag::kSrcFormatMask |
InternalShader::ImageCopy_frag::kDestFormatMask];
};
} // namespace vk