// 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/ConvertVertex.comp.00000002.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

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

// Generated from:
//
// #version 450 core
//
// layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
//
// layout(set = 0, binding = 0)buffer dst
// {
//     uint destData[];
// };
//
// layout(set = 0, binding = 1)buffer src
// {
//     uint srcData[];
// };
//
// layout(push_constant)uniform PushConstants
// {
//
//     uint outputCount;
//
//     uint componentCount;
//
//     uint srcOffset;
//     uint dstOffset;
//
//     uint Ns;
//     uint Bs;
//     uint Ss;
//     uint Es;
//
//     uint Nd;
//     uint Bd;
//     uint Sd;
//     uint Ed;
//
//     uint srcEmulatedAlpha;
//
//     bool isSrcHDR;
//     bool isSrcA2BGR10;
// } params;
//
// uint getSourceComponentOffset(uint vertex, uint component)
// {
//     return vertex * params . Ss + component * params . Bs + params . srcOffset;
// }
//
// uint getDestinationComponentOffset(uint vertex, uint component)
// {
//     return vertex * params . Sd + component * params . Bd + params . dstOffset;
// }
//
// uint getShiftBits(uint offset, uint B)
// {
//
//     uint shift =(offset % 4)* 8;
//
//     return shift;
// }
//
//       int loadSourceComponent(uint cd)
// {
//
//     uint vertex = cd / params . Nd;
//     uint component = cd % params . Nd;
//
//     if(component >= params . Ns && component < 3)
//     {
//         return 0;
//     }
//
//     uint offset = getSourceComponentOffset(vertex, component);
//     uint block = srcData[offset / 4];
//
//     uint shiftBits;
//     uint valueBits;
//     uint valueMask;
//
//     if(params . isSrcHDR)
//     {
//         valueBits = component == 3 ? 2 : 10;
//         valueMask = component == 3 ? 0x03 : 0x3FF;
//         if(params . isSrcA2BGR10)
//         {
//             shiftBits = 10 * component;
//         }
//         else
//         {
//
//             shiftBits = component == 3 ? 0 :(valueBits *(2 - component)+ 2);
//         }
//     }
//     else
//     {
//         shiftBits = getShiftBits(offset, params . Bs);
//         valueBits = params . Bs * 8;
//         valueMask = valueBits == 32 ? - 1 :(1 << valueBits)- 1;
//     }
//
//     uint valueAsUint;
//
//     if(component >= params . Ns && component == 3)
//     {
//         valueAsUint = params . srcEmulatedAlpha;
//     }
//     else
//     {
//         valueAsUint =(block >> shiftBits)& valueMask;
//     }
//
//     if(valueBits < 32)
//     {
//         bool isNegative =(valueAsUint &(1 <<(valueBits - 1)))!= 0;
//
//         uint signExtension = isNegative ? 0xFFFFFFFF << valueBits : 0;
//         valueAsUint |= signExtension;
//     }
//           int value = int(valueAsUint);
//
//     return value;
// }
//
//        float convertComponent(int srcValue)
// {
//
//     return srcValue;
// }
//
// uint makeDestinationComponent(uint cd, float value)
// {
//
//     uint valueAsUint;
//
//     if(params . Bd == 2)
//     {
//
//         uint shift =((cd & 1)== 0)? 0 : 16;
//         valueAsUint = packHalf2x16(vec2(value, 0.0))<< shift;
//     }
//     else
//     {
//         valueAsUint = floatBitsToInt(value);
//     }
//
//     return valueAsUint;
// }
//
// void storeDestinationComponents(uint valueAsUint)
// {
//
//     destData[gl_GlobalInvocationID . x + params . dstOffset / 4]= valueAsUint;
// }
//
// void main()
// {
//     if(gl_GlobalInvocationID . x >= params . outputCount)
//         return;
//
//     uint valueOut = 0;
//     for(uint i = 0;i < params . Ed;++ i)
//     {
//         uint cd = gl_GlobalInvocationID . x * params . Ed + i;
//         if(cd >= params . componentCount)
//         {
//             break;
//         }
//
//               int srcValue = loadSourceComponent(cd);
//                float destValue = convertComponent(srcValue);
//         valueOut |= makeDestinationComponent(cd, destValue);
//     }
//
//     storeDestinationComponents(valueOut);
// }
