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

#pragma once
constexpr uint8_t kConvertIndexIndirectLineLoop_comp_00000000[] = {
    0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x6d,0x57,0x6d,0x68,0x96,0x65,
    0x14,0x7e,0xce,0xde,0xed,0x9d,0x9a,0xa5,0xed,0xc3,0x35,0xac,0x58,0x5b,0x68,0x1f,
    0x6e,0x6e,0x54,0x63,0x53,0x0a,0xc7,0xa4,0xd5,0x58,0x12,0x6c,0xae,0x0f,0x48,0x37,
    0x92,0xcd,0xb9,0x5e,0xdb,0x2c,0xfa,0x70,0x1b,0x58,0x6c,0x85,0x04,0x6a,0x60,0x1b,
    0x39,0xfc,0xd5,0x86,0x14,0xa3,0x3f,0x11,0xb9,0x7f,0x6d,0xcd,0x1a,0x08,0x96,0xa0,
    0x20,0x58,0xc2,0x04,0xcb,0xb4,0xbf,0xa5,0xa6,0xb1,0xee,0xf3,0x9c,0xeb,0xc8,0xe5,
    0xc3,0x2b,0xdc,0xde,0xcf,0x7d,0x9d,0x73,0xae,0x73,0xee,0x73,0xdd,0xcf,0xfd,0x3e,
    0x4b,0xe5,0x54,0xe4,0x47,0x91,0x44,0xcb,0xa2,0x25,0xd1,0x21,0x89,0xe2,0x7f,0xf7,
    0x46,0x39,0x91,0x3e,0xde,0x15,0xa5,0xe3,0xb9,0xa9,0xa5,0xb5,0xa5,0xea,0xad,0xb7,
    0x77,0x54,0x3d,0xf9,0x54,0xb5,0xda,0xef,0x89,0x52,0xb1,0x9f,0xda,0x56,0x04,0x9f,
    0xbc,0x30,0xe7,0x86,0x91,0xe9,0xec,0xd9,0xad,0xf8,0xce,0x30,0x56,0x06,0x3c,0x37,
    0xe6,0x8a,0xa2,0x4d,0xf0,0x8d,0xb9,0x02,0x5a,0x10,0xe6,0x34,0x62,0x9e,0x0b,0xff,
    0x17,0x5a,0xda,0xe8,0xbe,0x78,0x9d,0x77,0x7b,0x5d,0x81,0xb9,0x29,0xe4,0x53,0x2c,
    0x85,0xf8,0xe2,0x30,0x97,0xdf,0xb6,0xd9,0xfa,0x21,0xf0,0x6b,0x7c,0x55,0x22,0xde,
    0x31,0x01,0x96,0x4b,0x58,0x0e,0xb0,0x25,0x84,0xa5,0x80,0x2d,0x47,0x6e,0xf7,0xd3,
    0x5c,0x75,0x77,0xd4,0x9e,0x17,0xd5,0x67,0xa9,0xb5,0x9e,0x6a,0xdd,0x98,0xa8,0x75,
    0x23,0x6a,0xf5,0x75,0x6b,0xa2,0x17,0x6d,0x89,0x5e,0xb4,0x65,0xe1,0x6f,0x23,0xfe,
    0xf6,0x04,0x7f,0x3b,0xf8,0xbd,0xde,0x9d,0xb1,0x8e,0x51,0x74,0x3f,0xd6,0x33,0x89,
    0xfa,0x67,0xb3,0xf0,0xcf,0x12,0xff,0x5c,0x82,0x7f,0x0e,0xfc,0x6e,0xbf,0x02,0xfe,
    0xd2,0x30,0x0a,0x43,0xd6,0x9c,0xd8,0x9e,0x8a,0xed,0xfa,0x5c,0x1c,0x7c,0x34,0x5f,
    0x19,0x38,0x1e,0x08,0x16,0xd7,0xff,0x41,0xe8,0x5a,0x10,0xdb,0x73,0xa3,0x22,0xc4,
    0x28,0xb6,0x11,0xeb,0x62,0xe2,0x59,0x05,0x1e,0xd5,0xf1,0x71,0xac,0x4b,0xc0,0xeb,
    0xeb,0x52,0xf8,0x2b,0xdf,0x6a,0x3c,0xa7,0x61,0xf7,0x3a,0x52,0xe4,0x5f,0x4e,0x6b,
    0xb5,0x3f,0x12,0xc6,0x62,0x5c,0x5b,0x3a,0xd6,0x3d,0x9d,0x18,0xca,0xbb,0x3e,0xcc,
    0x4b,0xc3,0xa8,0x42,0x9d,0xba,0xae,0x06,0xa6,0xf6,0x1a,0x3c,0xa7,0xb1,0xdf,0x3a,
    0xda,0xaf,0x9e,0x8d,0x3a,0xf8,0x6d,0x40,0x7d,0xf5,0xe0,0xd9,0x10,0xcf,0x86,0x79,
    0x7d,0x8d,0xa8,0x47,0x79,0x5a,0x89,0x47,0xcf,0x40,0x2b,0x78,0xb6,0x22,0xa6,0x0d,
    0x3c,0xba,0x6e,0x27,0x1e,0x8d,0xd9,0x86,0x75,0x49,0x58,0x77,0x81,0x27,0x85,0xf8,
    0x6e,0xf4,0xb4,0x0b,0xf1,0xdd,0x78,0x87,0x85,0xe2,0x7b,0xd0,0x67,0xf5,0xdf,0x05,
    0x1b,0xf7,0x35,0x03,0xac,0x28,0x64,0xd9,0x4d,0xf5,0x0f,0x03,0xd7,0xfa,0x67,0xa8,
    0x7e,0x3d,0x63,0x33,0xe0,0xfb,0x01,0xb5,0xcd,0x22,0xbf,0xae,0xe7,0x12,0xf5,0x2f,
    0xe0,0xcc,0xfa,0xfa,0x4f,0xdc,0x2b,0xeb,0xc2,0x4a,0xeb,0xbe,0x02,0x2c,0x83,0x51,
    0x1b,0xce,0x76,0x0e,0x62,0x22,0xec,0xf5,0x7a,0x40,0xf4,0xae,0xba,0x16,0x56,0x57,
    0x81,0xdf,0x0c,0xcf,0xba,0xb7,0xbf,0x60,0xd7,0xb9,0x21,0x78,0xa9,0x86,0x2f,0x41,
    0x57,0x3d,0x63,0x4f,0x23,0xef,0xcb,0xc0,0x1b,0xc2,0x4a,0xcf,0xd7,0x2b,0xe8,0x75,
    0x09,0x6c,0xee,0xf7,0x2a,0x6c,0xfb,0x02,0x97,0xae,0xb7,0xc3,0xbe,0x8d,0x62,0x3b,
    0x28,0x76,0x3b,0xc5,0x76,0xc2,0xa6,0x75,0x68,0xaf,0x7b,0xa1,0x47,0x0f,0xf9,0xbc,
    0x01,0xfc,0xeb,0xe0,0xa3,0xfd,0x7e,0x13,0x58,0x06,0xfb,0xeb,0xc7,0xfe,0xfe,0x0d,
    0xfe,0x6a,0xeb,0x0b,0xa3,0x1f,0x7b,0xd4,0xe7,0x1b,0x61,0xbe,0x8a,0x75,0x3f,0xd6,
    0x7b,0xb1,0xd6,0xf9,0xef,0x28,0x3f,0xce,0x33,0x20,0x56,0x8f,0xfa,0x8c,0x84,0x31,
    0x44,0xb6,0xf7,0xc5,0x6a,0x52,0xdb,0x41,0xb9,0xd3,0xf6,0x1e,0xd9,0x3e,0x4a,0xd8,
    0xde,0x25,0xdb,0x48,0xc2,0xf6,0x8e,0x58,0xef,0xd4,0x76,0x00,0xf9,0xa6,0xb0,0xc7,
    0x7d,0xb0,0x6b,0xec,0x3f,0x61,0x5f,0x83,0xb0,0xfb,0x3e,0xd5,0x3e,0x10,0xc6,0x20,
    0xf6,0x31,0x40,0xfd,0x1f,0xc1,0x5e,0x86,0xe3,0x73,0x66,0xd8,0x35,0x60,0xa5,0xa4,
    0xc9,0x75,0xdc,0x39,0x25,0xb0,0x7b,0xbf,0x6f,0xc0,0xf6,0x13,0x62,0x6f,0x22,0xb6,
    0x2c,0x3e,0xab,0x86,0xdd,0x02,0x5e,0x4e,0x39,0x16,0x11,0x7b,0x8b,0x62,0xf5,0x85,
    0x58,0xc4,0x5d,0xf3,0x15,0xf6,0xb6,0x9f,0xfa,0xa2,0x5a,0x7c,0x82,0x3d,0xe8,0xfc,
    0x65,0x88,0x4a,0xa3,0xc7,0xfb,0x11,0xaf,0xbd,0xff,0x10,0x7c,0x07,0xd0,0x97,0x61,
    0x3a,0xbb,0x07,0x71,0x76,0xcb,0x69,0x0f,0x87,0x80,0x7b,0xce,0x4f,0x81,0x65,0x08,
    0x3b,0x0c,0x7e,0xad,0xed,0x18,0xb0,0xcf,0xe0,0x7b,0x18,0x67,0x6b,0x8c,0x7a,0xae,
    0xb6,0xd1,0x58,0x23,0xab,0x77,0x94,0xf4,0xfa,0x1c,0x7b,0xf2,0x33,0x39,0x4e,0x71,
    0x6a,0x3b,0x12,0xc6,0x38,0xe2,0x8e,0x90,0x56,0x47,0x71,0x7e,0x78,0x3f,0x69,0xb1,
    0xfd,0x94,0xd2,0x7e,0xf2,0xc5,0x70,0xef,0xf5,0x52,0xb1,0xb8,0x52,0xe2,0x5a,0x26,
    0xe6,0xa7,0x36,0xd7,0x78,0xb9,0xd8,0x3d,0x5b,0x02,0xbb,0xf3,0xdd,0x2d,0x66,0x73,
    0x9d,0x56,0x80,0x8f,0x35,0x5e,0x29,0x86,0x97,0x03,0xd3,0x3b,0xae,0x40,0xec,0x9e,
    0x56,0xdb,0x3c,0xee,0xbd,0x42,0x31,0x7c,0x10,0xdc,0x45,0x62,0x98,0x73,0xaf,0x12,
    0xcb,0xa7,0xb8,0x73,0x97,0x8a,0x69,0xac,0x3c,0x27,0x80,0xad,0x16,0xf3,0x55,0xdb,
    0x33,0xa1,0x87,0x5a,0x9f,0x62,0x7a,0x46,0xbc,0x77,0xe3,0xf4,0xfe,0x7c,0x80,0x9a,
    0x47,0xd1,0xc7,0x23,0xa4,0xc7,0x17,0x74,0xc6,0x54,0x8f,0x49,0xd2,0x43,0x6d,0x13,
    0x61,0x4c,0x82,0x73,0x82,0x7a,0x78,0x0c,0xbc,0xac,0x47,0x45,0x16,0x3d,0x1e,0x16,
    0xc3,0x5d,0x8f,0x35,0x62,0x71,0xac,0xc7,0x5a,0x31,0xbf,0x35,0xa4,0xc7,0xa3,0xa4,
    0xc7,0x5a,0xd2,0xe3,0x31,0x31,0x9b,0xf7,0x6c,0x1d,0xf8,0x58,0x8f,0x4a,0x31,0x9c,
    0xf5,0x58,0x0f,0x3d,0x2a,0x49,0x8f,0x6a,0x31,0xdc,0xf5,0xa8,0x11,0xc3,0x9c,0xfb,
    0x09,0xb1,0x7c,0x35,0xa4,0x47,0x2d,0xde,0x83,0x4a,0xd2,0xa3,0x4e,0xcc,0xb7,0x16,
    0x7a,0x68,0x7d,0x75,0xd0,0xc3,0x7b,0x37,0x49,0x7a,0x7c,0x8c,0x9a,0xc7,0xd1,0xc7,
    0x09,0xbc,0xdf,0x63,0xf0,0x9d,0xa2,0x9e,0x6e,0xca,0xd2,0xd3,0x06,0x31,0xdc,0x7b,
    0xda,0x98,0xe5,0x8c,0x6f,0x16,0xf3,0x6b,0xa4,0x9e,0x3e,0x4b,0x3d,0xdd,0x4c,0x3d,
    0x6d,0x12,0xb3,0xf9,0xbe,0x9f,0xcf,0x72,0xc6,0x9b,0xc5,0x70,0xee,0x69,0x0b,0x7a,
    0xda,0x4c,0x3d,0x7d,0x41,0x0c,0xf7,0x9e,0x6e,0x11,0xc3,0x9c,0xfb,0x45,0xb1,0x7c,
    0x5b,0xa8,0xa7,0xad,0xf8,0x43,0xa0,0x99,0x7a,0xba,0x55,0xcc,0xb7,0x15,0x3d,0xd5,
    0xfa,0x14,0xf3,0xfd,0x7d,0x43,0xf7,0x81,0x63,0xdf,0xe2,0x2c,0x0f,0x27,0xfa,0x39,
    0x46,0xbd,0xd7,0xdf,0x1d,0xed,0xff,0x24,0x38,0xa6,0xc8,0x36,0x82,0xf7,0x60,0x12,
    0x5c,0x53,0xe0,0x19,0x02,0xcf,0x50,0xe2,0x37,0x71,0x90,0xde,0xa3,0xef,0x12,0xf7,
    0xda,0x34,0xbd,0x47,0x6a,0x3b,0x1e,0xc6,0x34,0xe2,0x8e,0x93,0xbe,0xaf,0x65,0xd1,
    0x77,0x9b,0x18,0xee,0xfa,0x76,0x64,0xd1,0xb7,0x53,0xcc,0xaf,0x83,0xf4,0x7d,0x9d,
    0xf4,0xed,0x24,0x7d,0x77,0x88,0xd9,0x5c,0x83,0xae,0x2c,0xfa,0x76,0x8b,0xe1,0xac,
    0x6f,0x0f,0xf4,0xed,0x26,0x7d,0x77,0x89,0xe1,0xae,0x6f,0xaf,0x18,0xe6,0xdc,0x19,
    0xb1,0x7c,0xbd,0xa4,0x6f,0x1f,0x7e,0x9b,0xba,0x49,0xdf,0x3d,0x62,0xbe,0x7d,0xd0,
    0x57,0xeb,0xdb,0x43,0xfa,0x7e,0x4f,0xfa,0x6a,0xcf,0xbd,0x77,0xd3,0xa4,0xd7,0x5e,
    0xec,0x63,0x10,0xfe,0xdc,0xd7,0x13,0xf8,0xad,0x1b,0xa6,0xbe,0xfe,0x08,0xdc,0xfb,
    0x35,0x8f,0x6f,0xca,0x12,0xd8,0xb4,0x8e,0x79,0xf0,0x7a,0x1d,0x27,0x61,0xcb,0x50,
    0xef,0x4f,0xe1,0xbb,0x2d,0x43,0x5c,0x3f,0xd3,0x77,0xdb,0x29,0xca,0xf9,0x0b,0x6c,
    0xee,0x77,0x9a,0x72,0x9e,0x44,0xce,0xd3,0xf0,0x73,0xfe,0x33,0xc8,0xc9,0xdf,0x85,
    0x67,0x29,0xee,0x0c,0xe2,0xce,0xe2,0xfb,0xcf,0xe3,0xce,0x21,0xae,0x8c,0xb0,0xf3,
    0xa8,0xb5,0x8c,0xb8,0x7e,0xa5,0x5a,0xcf,0x53,0xad,0xbf,0xc1,0xe6,0x7e,0x17,0x28,
    0xe7,0x39,0xe4,0xbc,0x00,0x3f,0xe7,0xbf,0x88,0x9c,0x0b,0x84,0x5d,0x42,0xce,0x05,
    0xe2,0xfa,0x9d,0x72,0x5e,0xa2,0x9c,0x7f,0xc0,0xe6,0x7e,0x97,0x29,0xe7,0x45,0xe4,
    0xbc,0x0c,0x3f,0xfe,0x3e,0xd5,0xf9,0xbf,0x70,0x69,0xd4,0x85,0xf1,0x3f,0xf2,0x4e,
    0xd1,0x9b,0xb0,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 dstData[];
// };
//
// layout(set = 0, binding = 1)readonly buffer src
// {
//
//     uint srcData[];
// };
//
// layout(set = 0, binding = 2)readonly buffer cmd
// {
//
//     uint cmdData[];
// };
//
// layout(set = 0, binding = 3)buffer dstCmd
// {
//
//     uint dstCmdData[];
// };
//
// layout(push_constant)uniform PushConstants
// {
//
//     uint cmdOffsetDiv4;
//
//     uint dstCmdOffsetDiv4;
//
//     uint dstOffsetDiv4;
//
//     uint isRestartEnabled;
// };
//
// uint GetIndexValue(uint index)
// {
//
//     uint srcBlock = srcData[index >> 2];
//
//     uint srcShift =((index & 0x3)<< 3);
//
//     uint value =(srcBlock >> srcShift)& 0xff;
//     return value;
//
// }
//
// void PutIndexValue(uint index, uint value)
// {
//
//     uint dstIndex = dstOffsetDiv4 +(index >> 2);
//
//     uint srcBlock = dstData[dstIndex];
//
//     uint srcShift =((index & 0x3)<< 3);
//
//     srcBlock &= ~(0xff << srcShift);
//
//     srcBlock |= value << srcShift;
//
//     dstData[dstIndex]= srcBlock;
//
// }
//
// void main()
// {
//
//     uint indexCount = cmdData[cmdOffsetDiv4];
//     uint firstIndex = cmdData[cmdOffsetDiv4 + 2];
//     uint endIndex = firstIndex + indexCount;
//
//     if(gl_GlobalInvocationID . x >= 1)
//         return;
//
//     uint workingCount = 0;
//     uint srcIdx = firstIndex;
//     uint indicesRemaining = indexCount;
//     uint lineSize = 0;
//     uint firstIndexValue = 0;
//     while(indicesRemaining > 0)
//     {
//         uint indexValue;
//         uint restartValue = 0xff;
//         indexValue = GetIndexValue(srcIdx ++);
//         if(lineSize == 0)
//         {
//             firstIndexValue = indexValue;
//         }
//         indicesRemaining --;
//         if((isRestartEnabled == 1)&&(indexValue == restartValue))
//         {
//
//             if(lineSize > 1)
//             {
//                 PutIndexValue(workingCount ++, firstIndexValue);
//             }
//             if(lineSize > 0)
//             {
//                 PutIndexValue(workingCount ++, restartValue);
//             }
//             lineSize = 0;
//         } else {
//             PutIndexValue(workingCount, indexValue);
//             workingCount ++;
//             lineSize ++;
//         }
//     }
//     if(lineSize > 1)
//     {
//         PutIndexValue(workingCount, firstIndexValue);
//         workingCount ++;
//     }
//
//     dstCmdData[dstCmdOffsetDiv4]= workingCount;
//     dstCmdData[dstCmdOffsetDiv4 + 1]= cmdData[cmdOffsetDiv4 + 1];
//     dstCmdData[dstCmdOffsetDiv4 + 2]= 0;
//     dstCmdData[dstCmdOffsetDiv4 + 3]= cmdData[cmdOffsetDiv4 + 3];
//     dstCmdData[dstCmdOffsetDiv4 + 4]= cmdData[cmdOffsetDiv4 + 4];
// }
