// 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; // } // // }