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

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