// GENERATED FILE - DO NOT EDIT.
// Generated by gen_vk_internal_shaders.py.
//
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

#pragma once
constexpr uint8_t kBlitResolveStencilNoExport_comp_00000000[] = {
    0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x6d,0x96,0xe9,0x6f,0x95,0x45,
    0x14,0xc6,0xa7,0xbd,0xed,0xbd,0xe5,0x6a,0x4b,0xab,0x2d,0x60,0x2f,0x50,0x6a,0x0d,
    0x2e,0x35,0x80,0x09,0x6b,0x6c,0x1b,0x71,0xa1,0x44,0x41,0xda,0xba,0xa0,0xd2,0x98,
    0x98,0xd4,0x0f,0x5d,0xb4,0xc6,0xd2,0x26,0x6a,0xa5,0xb5,0x54,0x2c,0x1a,0x04,0x31,
    0x18,0xd1,0x90,0x90,0x48,0x6d,0x04,0x31,0x31,0x6c,0xfd,0xa4,0x89,0xd1,0x20,0x88,
    0x9f,0xf0,0x5f,0x71,0x8f,0xd1,0xf3,0xcc,0xfb,0x1b,0x73,0x6c,0xbc,0xc9,0x64,0xde,
    0x79,0xce,0xfa,0x9c,0x39,0x33,0x73,0x73,0xe5,0x2d,0x85,0x10,0xca,0x42,0x31,0x54,
    0x85,0x9f,0x42,0xf6,0xab,0x0b,0xe5,0x86,0x84,0x70,0x43,0xc8,0xc7,0xb9,0x73,0xc7,
    0x63,0x3b,0xd6,0x8c,0xec,0xed,0x5b,0xb3,0x7e,0xc3,0x3a,0xc9,0x6b,0x42,0x2e,0xea,
    0x49,0xb6,0xd8,0x74,0x2a,0x6d,0xae,0xb0,0xf1,0xc2,0x73,0xfd,0x2f,0x0a,0xaf,0xb6,
    0x51,0x6b,0x78,0x45,0xf4,0x15,0xcc,0x73,0x36,0xa2,0x2f,0x43,0xab,0xa3,0xef,0x10,
    0x96,0xdb,0xd8,0x6e,0xd6,0x2b,0x88,0xdb,0xc2,0x9c,0xb0,0x32,0xb0,0x2a,0x87,0x95,
    0x83,0xd5,0x3a,0x2c,0x07,0xb6,0xcc,0x61,0x15,0x60,0x3e,0x46,0x25,0xd8,0x2a,0x87,
    0xe5,0xc1,0xd6,0x39,0xac,0x00,0xb6,0xde,0x61,0x55,0x60,0x9b,0x1d,0xb6,0x08,0xac,
    0x2d,0xf2,0xca,0xfd,0x9b,0x9f,0x38,0x4e,0xdb,0x7c,0x2b,0x7c,0xd2,0xba,0xd9,0xd5,
    0x60,0x66,0x81,0x7c,0x06,0x79,0xb2,0x3f,0x45,0x6e,0x15,0xc4,0x9b,0x5d,0x50,0x23,
    0xc5,0x9b,0x85,0xbb,0xf4,0xe7,0x16,0xf8,0x9b,0xc3,0x5f,0x5a,0x5f,0xa4,0xe6,0xb7,
    0xd8,0xb8,0xd9,0xa2,0x94,0x47,0x79,0x2e,0xda,0xeb,0xbb,0xc1,0x74,0xf2,0xd4,0x46,
    0x39,0x2e,0xb5,0x75,0x81,0x1c,0x92,0xbc,0x88,0x3c,0x20,0x97,0xbf,0x22,0x39,0xac,
    0xb2,0xf5,0x8d,0xd8,0x0a,0xbf,0x97,0x75,0x35,0x58,0x2b,0xf6,0x35,0xd8,0x4b,0x7f,
    0x31,0xb2,0xa2,0x93,0xdf,0x04,0xe7,0xb4,0x6e,0x40,0x67,0x89,0x45,0x69,0x24,0xbe,
    0x62,0x97,0x6c,0x6e,0x24,0x37,0xad,0x97,0xbb,0x7a,0xad,0xb4,0xc8,0xda,0x8b,0x92,
    0x1b,0x79,0x46,0xd2,0x2b,0xba,0xa1,0x5c,0x56,0xb2,0x9f,0x2b,0xc8,0x5d,0xeb,0x26,
    0xb0,0x56,0x57,0x9b,0x4a,0xf4,0x9b,0x91,0xc9,0x5f,0xbd,0x65,0xb1,0x9a,0x3c,0x6e,
    0xb7,0x79,0x35,0x79,0x25,0xbb,0x8d,0x70,0x90,0xdd,0x26,0xec,0x4a,0x4e,0xde,0x46,
    0x4d,0xd2,0x7a,0x2b,0x3d,0x28,0xfd,0xfb,0xd1,0x2f,0x3a,0xf9,0x4e,0xfa,0x31,0xad,
    0x77,0x2f,0xc8,0xb3,0xcf,0xc6,0xdf,0xf6,0x4b,0xeb,0x61,0x57,0x53,0xd5,0x6c,0xc4,
    0xed,0xc1,0x2b,0xd8,0xe6,0x63,0x6f,0x2c,0x0a,0x53,0xc4,0x2a,0x0b,0xff,0xfd,0x95,
    0x39,0x9b,0xfd,0x7c,0x4f,0x51,0x2b,0xad,0xa7,0xc1,0x1a,0x8d,0xf9,0x01,0xf4,0xde,
    0x02,0x3b,0x80,0x9e,0xd6,0x33,0x60,0x25,0xdb,0xcf,0xb7,0xf1,0x91,0xf2,0x3c,0xe4,
    0xf6,0xf3,0x3d,0xf2,0xf0,0xbd,0x70,0x4c,0xbc,0xe2,0x1e,0xe5,0xe2,0xf9,0x28,0xc6,
    0xbd,0xce,0xce,0xc1,0x29,0x62,0x7e,0x8a,0x8f,0x59,0x62,0x6a,0x3d,0xb7,0x60,0x3f,
    0x4e,0xc3,0x57,0xfa,0xe7,0x90,0xf9,0x1e,0xbc,0x40,0x7d,0xef,0x36,0x2d,0xf5,0xf2,
    0x45,0xb0,0x0b,0xf4,0xe3,0x46,0xeb,0x82,0x72,0x72,0x0b,0xf4,0xff,0x6f,0x86,0xa8,
    0x37,0x7e,0xb5,0xd5,0x25,0xf0,0x3f,0xed,0x5b,0xfd,0x3e,0x8f,0x7c,0x3e,0xee,0x6d,
    0x65,0xec,0xfb,0x5a,0xce,0x86,0xe4,0xed,0xc4,0xad,0x03,0x9f,0x36,0x9d,0x62,0x3c,
    0xa7,0x19,0xa6,0x33,0x31,0x4e,0xee,0xf5,0xe0,0xc9,0xcf,0x12,0xfc,0x34,0x38,0x3f,
    0x4b,0xc1,0x93,0xcd,0x32,0xb0,0x2e,0xb3,0x29,0x70,0x07,0xd4,0x83,0xcb,0x4f,0x33,
    0x77,0x47,0x13,0x3d,0xde,0xce,0x79,0x6a,0x01,0xdf,0x65,0x56,0xb2,0xbb,0x0d,0xac,
    0x85,0x9a,0x89,0xf7,0x39,0xb3,0x57,0xcf,0xdf,0x81,0x5c,0xbe,0x3f,0x32,0x7b,0x9d,
    0x81,0x3b,0xc1,0x55,0x93,0x56,0x6a,0xf2,0x87,0xc9,0x84,0xdf,0x15,0xeb,0x9d,0xd5,
    0x45,0xdf,0xbf,0xdb,0x7c,0x89,0x75,0xab,0x8b,0xb9,0xd6,0xc5,0x4c,0x7d,0x38,0x09,
    0x8f,0x7b,0x88,0xb7,0x36,0xf6,0x78,0x76,0x27,0x6c,0x00,0x17,0xaf,0x4d,0xdc,0xd7,
    0x4d,0x9c,0xc1,0x76,0x74,0xb6,0x80,0xbf,0x69,0x3a,0xa5,0xd8,0x27,0x99,0xdd,0x16,
    0x67,0xd7,0x8e,0x5d,0x9b,0xb3,0xeb,0x00,0xdf,0x8f,0xdd,0x7d,0xd8,0x76,0x60,0xa7,
    0xb3,0xfa,0x00,0x76,0x5b,0xdd,0x7e,0x3c,0x08,0x7e,0xc6,0x74,0x54,0x97,0x87,0xc0,
    0x6a,0xa8,0x4d,0xa7,0xab,0x8d,0x64,0xdb,0xe2,0x9d,0x9d,0xd5,0x42,0xdf,0xdd,0x66,
    0xa7,0x73,0xfb,0x30,0x31,0xf5,0x9b,0xe0,0x2c,0x3f,0x02,0xde,0x63,0x3b,0xad,0x9c,
    0xbe,0x06,0x4b,0x7a,0xaa,0x6b,0xf2,0xa5,0xf9,0x67,0xab,0x9c,0xf4,0xbe,0x47,0xa7,
    0x15,0x9b,0x6d,0x8e,0xc3,0xa3,0x70,0xd8,0xe9,0x38,0xec,0x02,0x4f,0x1c,0xba,0xc0,
    0x12,0x87,0x1e,0xc7,0xa1,0x2b,0xe6,0x1c,0x22,0xa6,0xb8,0xdd,0x8e,0xc3,0xe3,0xc4,
    0x2e,0x73,0x1c,0x9e,0x00,0x4f,0x1c,0xbe,0x01,0x4b,0x7a,0xe2,0x90,0x7c,0xf5,0x38,
    0x0e,0x57,0xd0,0xe9,0xc4,0xa6,0xdb,0x71,0x78,0x0a,0x0e,0xbb,0x1d,0x87,0xa7,0xc1,
    0x13,0x87,0x67,0xc0,0x12,0x87,0x5e,0xc7,0x41,0xb2,0x3d,0x36,0x7a,0x89,0xbb,0x87,
    0x9e,0x54,0xdc,0x67,0x89,0x7d,0xc5,0xdd,0x8b,0xca,0x31,0xe9,0xf6,0xba,0x1c,0x7f,
    0x44,0xaf,0x07,0x3b,0xf9,0xf9,0xcc,0x78,0xea,0x5c,0x3e,0x4f,0x2f,0xf4,0xd1,0x9f,
    0xf2,0xd1,0x8f,0x8f,0x7e,0xe7,0xe3,0x1a,0x7e,0xe4,0xf7,0xb2,0x8d,0x21,0x64,0xe2,
    0xf4,0x03,0xf9,0x4b,0x76,0xdd,0xc9,0xe4,0xff,0x2a,0xfd,0x2b,0xd9,0x27,0xc8,0xbe,
    0x84,0xfb,0x4b,0xc8,0xf5,0x36,0xfc,0x62,0x7c,0x07,0x91,0x27,0xfe,0x92,0x0f,0xd8,
    0x18,0x24,0x9f,0x01,0xb7,0x87,0x2f,0x93,0x93,0x7e,0x5f,0xe1,0x6f,0x2f,0xf8,0x08,
    0xb5,0x1c,0x73,0xbe,0x24,0x1b,0xb5,0x31,0x86,0xaf,0x51,0xf6,0x49,0x6f,0xcf,0xab,
    0xec,0xd3,0x30,0xfb,0xa4,0xbc,0x5f,0x03,0x1f,0xa6,0x3f,0xc6,0xc1,0xe6,0x89,0xf5,
    0x3a,0xb1,0xc6,0xa9,0x59,0xf2,0x3b,0x06,0x77,0xe9,0xec,0x23,0xa7,0x01,0xf4,0x47,
    0xc9,0x6b,0xd2,0xe5,0xb5,0x2f,0xf6,0x60,0x88,0x98,0xec,0x27,0xc8,0x61,0x2a,0xde,
    0x0d,0xd9,0x9b,0xa6,0xb5,0xde,0xaf,0x83,0xbc,0x5d,0x4f,0x5a,0x0e,0x7a,0xb7,0xde,
    0x41,0xe7,0xa0,0xbb,0x33,0xde,0x85,0xcb,0x21,0x77,0x67,0x1c,0x06,0x4f,0x77,0xcd,
    0x11,0x6a,0x77,0x38,0xf6,0x62,0x21,0xbe,0x73,0x47,0xf1,0x77,0x84,0x7b,0x75,0x84,
    0x5a,0x6b,0x7f,0xdf,0x47,0x1e,0xe2,0xde,0x67,0xd8,0x07,0xe0,0xc7,0x78,0x2b,0x54,
    0xb3,0x0f,0xd9,0x4f,0x9d,0xd9,0x6f,0xd1,0x3b,0x8e,0xae,0x64,0xdf,0x81,0x7d,0x4c,
    0xcf,0x1c,0xa7,0x76,0x89,0xfb,0xa4,0xeb,0xa9,0xeb,0xe8,0x8c,0xa1,0x3f,0xe1,0xf6,
    0xe2,0x04,0x7d,0xfb,0x06,0xbd,0x70,0x92,0xbd,0x38,0xe1,0xce,0xef,0x65,0xf0,0x6b,
    0xee,0x6c,0x0c,0x11,0x67,0x88,0xfb,0x3b,0x4f,0x4f,0x5e,0xfd,0x9f,0xde,0x1f,0x74,
    0xfd,0x71,0x86,0x9a,0x9e,0x76,0xfd,0xf1,0x39,0xf8,0x38,0xe7,0xfa,0x2c,0x58,0x7a,
    0x37,0xbf,0xe0,0xbd,0x3b,0x4b,0xac,0x62,0xec,0xfb,0x0c,0xaf,0x8b,0xbe,0xf3,0xf1,
    0xdd,0x3f,0xcf,0x7f,0x83,0x36,0xe4,0x1d,0xd6,0x1f,0xe7,0xe1,0xee,0xdf,0x23,0xcd,
    0x7f,0xd9,0x49,0xdf,0x6c,0xe3,0x1f,0x16,0x20,0x9f,0xca,0x30,0x0d,0x00,0x00
};

// Generated from:
//
// #version 450 core
//
// layout(local_size_x = 8, local_size_y = 8, local_size_z = 1)in;
//
// layout(push_constant)uniform PushConstants {
//
//             vec2 offset;
//     vec2 stretch;
//     vec2 invSrcExtent;
//     int srcLayer;
//     int srcWidth;
//
//     ivec4 blitArea;
//     int destPitch;
//
//     bool flipX;
//     bool flipY;
//     bool rotateXY;
// } params;
//
// layout(set = 0, binding = 0)buffer dest
// {
//
//     uint destData[];
// };
//
// layout(set = 0, binding = 1)uniform utexture2D stencil;
//
// layout(set = 0, binding = 2)uniform sampler blitSampler;
//
// void main()
// {
//     ivec2 destSubImageCoords = ivec2(gl_GlobalInvocationID . x * 4, gl_GlobalInvocationID . y);
//     if(any(lessThanEqual(params . blitArea . zw, destSubImageCoords)))
//     {
//         return;
//     }
//
//     destSubImageCoords += params . blitArea . xy;
//             vec2 srcImageCoords = vec2(destSubImageCoords);
//
//     srcImageCoords *= params . stretch;
//
//     srcImageCoords -= params . offset;
//
//     if(params . flipX)
//         srcImageCoords . x = - srcImageCoords . x;
//     if(params . flipY)
//         srcImageCoords . y = - srcImageCoords . y;
//     if(params . rotateXY)
//         srcImageCoords . xy = srcImageCoords . yx;
//
//     int xDir = params . flipX ? - 1 : 1;
//
//     uint outStencils = 0;
//
//     for(int i = 0;i < 4;++ i)
//     {
//
//         if(srcImageCoords . x >= 0 && srcImageCoords . x < params . srcWidth)
//         {
//
//             uint stencilValue = texture(usampler2D(stencil, blitSampler), srcImageCoords * params . invSrcExtent). x;
//
//             outStencils |=(stencilValue & 0xFF)<<(i * 8);
//
//         }
//
//         srcImageCoords . x += xDir;
//     }
//
//     destData[gl_GlobalInvocationID . y * params . destPitch + gl_GlobalInvocationID . x]= outStencils;
// }
