chromium/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000003.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/ConvertIndex.comp.00000003.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

#pragma once
constexpr uint8_t kConvertIndex_comp_00000003[] =;

// 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 dstIndexBuf[];
// };
//
// layout(set = 0, binding = 1)readonly buffer src
// {
//
//     uint srcIndexBuf[];
// };
//
// layout(set = 0, binding = 2)readonly buffer srcIndirect
// {
//
//     uint srcIndirectBuf[];
// };
//
// layout(set = 0, binding = 3)buffer dstIndirect
// {
//
//     uint dstIndirectBuf[];
// };
//
// layout(push_constant)uniform PushConstants
// {
//
//     uint srcIndirectOffsetDiv4;
//
//     uint srcIndexOffset;
//
//     uint dstIndexBufOffsetDiv4;
//
//     uint maxIndex;
//
//     uint dstIndirectBufOffsetDiv4;
// };
//
// uint PullIndex(uint index)
// {
//     uint srcIndex = index + srcIndexOffset;
//     uint srcBlock = srcIndexBuf[srcIndex >> 2];
//     uint srcComponent =(srcIndex & 3);
//
//     uint value =(srcBlock >>(srcComponent << 3))& 0xFF;
//
//     if(value == 0xFF)
//         value = 0xFFFF;
//
//     return value;
// }
//
// void PackIndexValue(uint srcValue, uint indexIndex, inout uint dstValue)
// {
//
//     dstValue |= srcValue <<(indexIndex << 4);
// }
//
// void main()
// {
//
//     uint indexCount = srcIndirectBuf[srcIndirectOffsetDiv4];
//     uint firstIndex = srcIndirectBuf[srcIndirectOffsetDiv4 + 2];
//     uint endIndex = firstIndex + indexCount;
//
//     uint index =((gl_GlobalInvocationID . x +(firstIndex >> 1))<< 1);
//
//     if(index >= endIndex)
//         return;
//
//     uint dstValue = 0;
//
//     if(index >= firstIndex)
//     {
//         uint srcValue = PullIndex(index);
//         PackIndexValue(srcValue, 0, dstValue);
//     }
//
//     if(index + 1 < endIndex)
//     {
//         uint srcValue = PullIndex(index + 1);
//         PackIndexValue(srcValue, 1, dstValue);
//     }
//
//     dstIndexBuf[dstIndexBufOffsetDiv4 + gl_GlobalInvocationID . x]= dstValue;
//
//     if(gl_GlobalInvocationID . x == 0)
//     {
//         dstIndirectBuf[dstIndirectBufOffsetDiv4]= srcIndirectBuf[srcIndirectOffsetDiv4];
//
//         dstIndirectBuf[dstIndirectBufOffsetDiv4 + 1]= srcIndirectBuf[srcIndirectOffsetDiv4 + 1];
//
//         dstIndirectBuf[dstIndirectBufOffsetDiv4 + 2]= firstIndex & 1;
//
//         dstIndirectBuf[dstIndirectBufOffsetDiv4 + 3]= srcIndirectBuf[srcIndirectOffsetDiv4 + 3];
//         dstIndirectBuf[dstIndirectBufOffsetDiv4 + 4]= 0;
//     }
//
// }