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

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

// Generated from:
//
// #version 450 core
//
// #extension GL_ARB_shader_stencil_export : require
//
// layout(push_constant)uniform PushConstants {
//
//             vec2 offset;
//     vec2 stretch;
//     vec2 invSrcExtent;
//     int srcLayer;
//     int samples;
//     float invSamples;
//
//     int outputMask;
//
//     bool flipX;
//     bool flipY;
//     bool rotateXY;
// } params;
//
// layout(set = 0, binding = 1)uniform utexture2D stencil;
//
// layout(set = 0, binding = 2)uniform sampler blitSampler;
//
// void main()
// {
//
//             vec2 srcImageCoords = vec2(gl_FragCoord . xy);
//
//     srcImageCoords *= params . stretch;
//
//     srcImageCoords -= params . offset;
//
//     if(params . flipX)
//         srcImageCoords . x = - srcImageCoords . x;
//     if(params . flipY)
//         srcImageCoords . y = - srcImageCoords . y;
//     if(params . rotateXY)
//         srcImageCoords . xy = srcImageCoords . yx;
//
//     gl_FragStencilRefARB = int(texture(usampler2D(stencil, blitSampler), srcImageCoords * params . invSrcExtent). x);
//
// }
