chromium/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000001.inc

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

#pragma once
constexpr uint8_t kConvertIndexIndirectLineLoop_comp_00000001[] =;

// 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 srcOffset;
//
//     uint dstOffsetDiv4;
//
//     uint isRestartEnabled;
// };
//
// uint GetIndexValue(uint index)
// {
//
//     index += srcOffset >>(2 - 1);
//
//     uint srcBlock = srcData[index >> 1];
//
//     uint srcShift =((index & 0x1)<< 4);
//
//     uint value =(srcBlock >> srcShift)& 0xffff;
//     return value;
//
// }
//
// void PutIndexValue(uint index, uint value)
// {
//
//     uint dstIndex = dstOffsetDiv4 +(index >> 1);
//
//     uint srcBlock = dstData[dstIndex];
//
//     uint srcShift =((index & 0x1)<< 4);
//
//     srcBlock &= ~(0xffff << 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 = 0xffff;
//         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];
// }