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

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

// Generated from:
//
// #version 450 core
//
// #extension GL_GOOGLE_include_directive : require
// #extension GL_EXT_samplerless_texture_functions : require
//
// layout(local_size_x = 256, local_size_y = 1, local_size_z = 1)in;
//
// layout(set = 0, binding = 0, rgba8)uniform coherent image2D dst[6];
// layout(set = 0, binding = 1)uniform sampler2D src;
//
// layout(push_constant)uniform PushConstants {
//
//     vec2 invSrcExtent;
//
//     uint levelCount;
// } params;
//
// #line 1 "shaders/src/third_party/ffx_spd/ffx_a.h"
//
//    float AF1_x(float a){ return float(a);}
//    vec2 AF2_x(float a){ return vec2(a, a);}
//    vec3 AF3_x(float a){ return vec3(a, a, a);}
//    vec4 AF4_x(float a){ return vec4(a, a, a, a);}
//
//    uint AU1_x(uint a){ return uint(a);}
//    uvec2 AU2_x(uint a){ return uvec2(a, a);}
//    uvec3 AU3_x(uint a){ return uvec3(a, a, a);}
//    uvec4 AU4_x(uint a){ return uvec4(a, a, a, a);}
//
//    uint AAbsSU1(uint a){ return uint(abs(int(a)));}
//    uvec2 AAbsSU2(uvec2 a){ return uvec2(abs(ivec2(a)));}
//    uvec3 AAbsSU3(uvec3 a){ return uvec3(abs(ivec3(a)));}
//    uvec4 AAbsSU4(uvec4 a){ return uvec4(abs(ivec4(a)));}
//
//    uint ABfe(uint src, uint off, uint bits){ return bitfieldExtract(src, int(off), int(bits));}
//    uint ABfi(uint src, uint ins, uint mask){ return(ins & mask)|(src &(~ mask));}
//
//    uint ABfiM(uint src, uint ins, uint bits){ return bitfieldInsert(src, ins, 0, int(bits));}
//
//    float AFractF1(float x){ return fract(x);}
//    vec2 AFractF2(vec2 x){ return fract(x);}
//    vec3 AFractF3(vec3 x){ return fract(x);}
//    vec4 AFractF4(vec4 x){ return fract(x);}
//
//    float ALerpF1(float x, float y, float a){ return mix(x, y, a);}
//    vec2 ALerpF2(vec2 x, vec2 y, vec2 a){ return mix(x, y, a);}
//    vec3 ALerpF3(vec3 x, vec3 y, vec3 a){ return mix(x, y, a);}
//    vec4 ALerpF4(vec4 x, vec4 y, vec4 a){ return mix(x, y, a);}
//
//    float AMax3F1(float x, float y, float z){ return max(x, max(y, z));}
//    vec2 AMax3F2(vec2 x, vec2 y, vec2 z){ return max(x, max(y, z));}
//    vec3 AMax3F3(vec3 x, vec3 y, vec3 z){ return max(x, max(y, z));}
//    vec4 AMax3F4(vec4 x, vec4 y, vec4 z){ return max(x, max(y, z));}
//
//    uint AMax3SU1(uint x, uint y, uint z){ return uint(max(int(x), max(int(y), int(z))));}
//    uvec2 AMax3SU2(uvec2 x, uvec2 y, uvec2 z){ return uvec2(max(ivec2(x), max(ivec2(y), ivec2(z))));}
//    uvec3 AMax3SU3(uvec3 x, uvec3 y, uvec3 z){ return uvec3(max(ivec3(x), max(ivec3(y), ivec3(z))));}
//    uvec4 AMax3SU4(uvec4 x, uvec4 y, uvec4 z){ return uvec4(max(ivec4(x), max(ivec4(y), ivec4(z))));}
//
//    uint AMax3U1(uint x, uint y, uint z){ return max(x, max(y, z));}
//    uvec2 AMax3U2(uvec2 x, uvec2 y, uvec2 z){ return max(x, max(y, z));}
//    uvec3 AMax3U3(uvec3 x, uvec3 y, uvec3 z){ return max(x, max(y, z));}
//    uvec4 AMax3U4(uvec4 x, uvec4 y, uvec4 z){ return max(x, max(y, z));}
//
//    uint AMaxSU1(uint a, uint b){ return uint(max(int(a), int(b)));}
//    uvec2 AMaxSU2(uvec2 a, uvec2 b){ return uvec2(max(ivec2(a), ivec2(b)));}
//    uvec3 AMaxSU3(uvec3 a, uvec3 b){ return uvec3(max(ivec3(a), ivec3(b)));}
//    uvec4 AMaxSU4(uvec4 a, uvec4 b){ return uvec4(max(ivec4(a), ivec4(b)));}
//
//    float AMed3F1(float x, float y, float z){ return max(min(x, y), min(max(x, y), z));}
//    vec2 AMed3F2(vec2 x, vec2 y, vec2 z){ return max(min(x, y), min(max(x, y), z));}
//    vec3 AMed3F3(vec3 x, vec3 y, vec3 z){ return max(min(x, y), min(max(x, y), z));}
//    vec4 AMed3F4(vec4 x, vec4 y, vec4 z){ return max(min(x, y), min(max(x, y), z));}
//
//    float AMin3F1(float x, float y, float z){ return min(x, min(y, z));}
//    vec2 AMin3F2(vec2 x, vec2 y, vec2 z){ return min(x, min(y, z));}
//    vec3 AMin3F3(vec3 x, vec3 y, vec3 z){ return min(x, min(y, z));}
//    vec4 AMin3F4(vec4 x, vec4 y, vec4 z){ return min(x, min(y, z));}
//
//    uint AMin3SU1(uint x, uint y, uint z){ return uint(min(int(x), min(int(y), int(z))));}
//    uvec2 AMin3SU2(uvec2 x, uvec2 y, uvec2 z){ return uvec2(min(ivec2(x), min(ivec2(y), ivec2(z))));}
//    uvec3 AMin3SU3(uvec3 x, uvec3 y, uvec3 z){ return uvec3(min(ivec3(x), min(ivec3(y), ivec3(z))));}
//    uvec4 AMin3SU4(uvec4 x, uvec4 y, uvec4 z){ return uvec4(min(ivec4(x), min(ivec4(y), ivec4(z))));}
//
//    uint AMin3U1(uint x, uint y, uint z){ return min(x, min(y, z));}
//    uvec2 AMin3U2(uvec2 x, uvec2 y, uvec2 z){ return min(x, min(y, z));}
//    uvec3 AMin3U3(uvec3 x, uvec3 y, uvec3 z){ return min(x, min(y, z));}
//    uvec4 AMin3U4(uvec4 x, uvec4 y, uvec4 z){ return min(x, min(y, z));}
//
//    uint AMinSU1(uint a, uint b){ return uint(min(int(a), int(b)));}
//    uvec2 AMinSU2(uvec2 a, uvec2 b){ return uvec2(min(ivec2(a), ivec2(b)));}
//    uvec3 AMinSU3(uvec3 a, uvec3 b){ return uvec3(min(ivec3(a), ivec3(b)));}
//    uvec4 AMinSU4(uvec4 a, uvec4 b){ return uvec4(min(ivec4(a), ivec4(b)));}
//
//    float ANCosF1(float x){ return cos(x * AF1_x(float(6.28318530718)));}
//    vec2 ANCosF2(vec2 x){ return cos(x * AF2_x(float(6.28318530718)));}
//    vec3 ANCosF3(vec3 x){ return cos(x * AF3_x(float(6.28318530718)));}
//    vec4 ANCosF4(vec4 x){ return cos(x * AF4_x(float(6.28318530718)));}
//
//    float ANSinF1(float x){ return sin(x * AF1_x(float(6.28318530718)));}
//    vec2 ANSinF2(vec2 x){ return sin(x * AF2_x(float(6.28318530718)));}
//    vec3 ANSinF3(vec3 x){ return sin(x * AF3_x(float(6.28318530718)));}
//    vec4 ANSinF4(vec4 x){ return sin(x * AF4_x(float(6.28318530718)));}
//
//    float ARcpF1(float x){ return AF1_x(float(1.0))/ x;}
//    vec2 ARcpF2(vec2 x){ return AF2_x(float(1.0))/ x;}
//    vec3 ARcpF3(vec3 x){ return AF3_x(float(1.0))/ x;}
//    vec4 ARcpF4(vec4 x){ return AF4_x(float(1.0))/ x;}
//
//    float ARsqF1(float x){ return AF1_x(float(1.0))/ sqrt(x);}
//    vec2 ARsqF2(vec2 x){ return AF2_x(float(1.0))/ sqrt(x);}
//    vec3 ARsqF3(vec3 x){ return AF3_x(float(1.0))/ sqrt(x);}
//    vec4 ARsqF4(vec4 x){ return AF4_x(float(1.0))/ sqrt(x);}
//
//    float ASatF1(float x){ return clamp(x, AF1_x(float(0.0)), AF1_x(float(1.0)));}
//    vec2 ASatF2(vec2 x){ return clamp(x, AF2_x(float(0.0)), AF2_x(float(1.0)));}
//    vec3 ASatF3(vec3 x){ return clamp(x, AF3_x(float(0.0)), AF3_x(float(1.0)));}
//    vec4 ASatF4(vec4 x){ return clamp(x, AF4_x(float(0.0)), AF4_x(float(1.0)));}
//
//    uint AShrSU1(uint a, uint b){ return uint(int(a)>> int(b));}
//    uvec2 AShrSU2(uvec2 a, uvec2 b){ return uvec2(ivec2(a)>> ivec2(b));}
//    uvec3 AShrSU3(uvec3 a, uvec3 b){ return uvec3(ivec3(a)>> ivec3(b));}
//    uvec4 AShrSU4(uvec4 a, uvec4 b){ return uvec4(ivec4(a)>> ivec4(b));}
//
//    float ACpySgnF1(float d, float s){ return uintBitsToFloat(uint(floatBitsToUint(float(d))|(floatBitsToUint(float(s))& AU1_x(uint(0x80000000u)))));}
//    vec2 ACpySgnF2(vec2 d, vec2 s){ return uintBitsToFloat(uvec2(floatBitsToUint(vec2(d))|(floatBitsToUint(vec2(s))& AU2_x(uint(0x80000000u)))));}
//    vec3 ACpySgnF3(vec3 d, vec3 s){ return uintBitsToFloat(uvec3(floatBitsToUint(vec3(d))|(floatBitsToUint(vec3(s))& AU3_x(uint(0x80000000u)))));}
//    vec4 ACpySgnF4(vec4 d, vec4 s){ return uintBitsToFloat(uvec4(floatBitsToUint(vec4(d))|(floatBitsToUint(vec4(s))& AU4_x(uint(0x80000000u)))));}
//
//    float ASignedF1(float m){ return ASatF1(m * AF1_x(float(uintBitsToFloat(uint(0x7f800000u)))));}
//    vec2 ASignedF2(vec2 m){ return ASatF2(m * AF2_x(float(uintBitsToFloat(uint(0x7f800000u)))));}
//    vec3 ASignedF3(vec3 m){ return ASatF3(m * AF3_x(float(uintBitsToFloat(uint(0x7f800000u)))));}
//    vec4 ASignedF4(vec4 m){ return ASatF4(m * AF4_x(float(uintBitsToFloat(uint(0x7f800000u)))));}
//
//    float APrxLoSqrtF1(float a){ return uintBitsToFloat(uint((floatBitsToUint(float(a))>> AU1_x(uint(1)))+ AU1_x(uint(0x1fbc4639))));}
//    float APrxLoRcpF1(float a){ return uintBitsToFloat(uint(AU1_x(uint(0x7ef07ebb))- floatBitsToUint(float(a))));}
//    float APrxMedRcpF1(float a){ float b = uintBitsToFloat(uint(AU1_x(uint(0x7ef19fff))- floatBitsToUint(float(a))));return b *(- b * a + AF1_x(float(2.0)));}
//    float APrxLoRsqF1(float a){ return uintBitsToFloat(uint(AU1_x(uint(0x5f347d74))-(floatBitsToUint(float(a))>> AU1_x(uint(1)))));}
//
//    float APSinF1(float x){ return x * abs(x)- x;}
//    float APCosF1(float x){ x = AFractF1(x * AF1_x(float(0.5))+ AF1_x(float(0.75)));x = x * AF1_x(float(2.0))- AF1_x(float(1.0));return APSinF1(x);}
//
//    float ATo709F1(float c){ return max(min(c * AF1_x(float(4.5)), AF1_x(float(0.018))), AF1_x(float(1.099))* pow(c, AF1_x(float(0.45)))- AF1_x(float(0.099)));}
//
//    float AToGammaF1(float c, float rcpX){ return pow(c, rcpX);}
//
//    float AToPqF1(float x){ float p = pow(x, AF1_x(float(0.159302)));
//   return pow((AF1_x(float(0.835938))+ AF1_x(float(18.8516))* p)/(AF1_x(float(1.0))+ AF1_x(float(18.6875))* p), AF1_x(float(78.8438)));}
//
//    float AToSrgbF1(float c){ return max(min(c * AF1_x(float(12.92)), AF1_x(float(0.0031308))), AF1_x(float(1.055))* pow(c, AF1_x(float(0.41666)))- AF1_x(float(0.055)));}
//
//    float AToTwoF1(float c){ return sqrt(c);}
//
//    float AFrom709F1(float c){ return max(min(c * AF1_x(float(1.0 / 4.5)), AF1_x(float(0.081))),
//   pow((c + AF1_x(float(0.099)))*(AF1_x(float(1.0))/(AF1_x(float(1.099)))), AF1_x(float(1.0 / 0.45))));}
//
//    float AFromGammaF1(float c, float x){ return pow(c, x);}
//
//    float AFromPqF1(float x){ float p = pow(x, AF1_x(float(0.0126833)));
//   return pow(ASatF1(p - AF1_x(float(0.835938)))/(AF1_x(float(18.8516))- AF1_x(float(18.6875))* p), AF1_x(float(6.27739)));}
//
//    float AFromSrgbF1(float c){ return max(min(c * AF1_x(float(1.0 / 12.92)), AF1_x(float(0.04045))),
//   pow((c + AF1_x(float(0.055)))*(AF1_x(float(1.0))/ AF1_x(float(1.055))), AF1_x(float(2.4))));}
//
//    float AFromTwoF1(float c){ return c * c;}
//
//    uvec2 ARmp8x8(uint a){ return uvec2(ABfe(a, 1u, 3u), ABfiM(ABfe(a, 3u, 3u), a, 1u));}
//
//    uvec2 ARmpRed8x8(uint a){ return uvec2(ABfiM(ABfe(a, 2u, 3u), a, 1u), ABfiM(ABfe(a, 3u, 3u), ABfe(a, 1u, 2u), 2u));}
//
//    vec2 opAAbsF2(out vec2 d, in vec2 a){ d = abs(a);return d;}
//    vec3 opAAbsF3(out vec3 d, in vec3 a){ d = abs(a);return d;}
//    vec4 opAAbsF4(out vec4 d, in vec4 a){ d = abs(a);return d;}
//
//    vec2 opAAddF2(out vec2 d, in vec2 a, in vec2 b){ d = a + b;return d;}
//    vec3 opAAddF3(out vec3 d, in vec3 a, in vec3 b){ d = a + b;return d;}
//    vec4 opAAddF4(out vec4 d, in vec4 a, in vec4 b){ d = a + b;return d;}
//
//    vec2 opACpyF2(out vec2 d, in vec2 a){ d = a;return d;}
//    vec3 opACpyF3(out vec3 d, in vec3 a){ d = a;return d;}
//    vec4 opACpyF4(out vec4 d, in vec4 a){ d = a;return d;}
//
//    vec2 opALerpF2(out vec2 d, in vec2 a, in vec2 b, in vec2 c){ d = ALerpF2(a, b, c);return d;}
//    vec3 opALerpF3(out vec3 d, in vec3 a, in vec3 b, in vec3 c){ d = ALerpF3(a, b, c);return d;}
//    vec4 opALerpF4(out vec4 d, in vec4 a, in vec4 b, in vec4 c){ d = ALerpF4(a, b, c);return d;}
//
//    vec2 opALerpOneF2(out vec2 d, in vec2 a, in vec2 b, float c){ d = ALerpF2(a, b, AF2_x(float(c)));return d;}
//    vec3 opALerpOneF3(out vec3 d, in vec3 a, in vec3 b, float c){ d = ALerpF3(a, b, AF3_x(float(c)));return d;}
//    vec4 opALerpOneF4(out vec4 d, in vec4 a, in vec4 b, float c){ d = ALerpF4(a, b, AF4_x(float(c)));return d;}
//
//    vec2 opAMaxF2(out vec2 d, in vec2 a, in vec2 b){ d = max(a, b);return d;}
//    vec3 opAMaxF3(out vec3 d, in vec3 a, in vec3 b){ d = max(a, b);return d;}
//    vec4 opAMaxF4(out vec4 d, in vec4 a, in vec4 b){ d = max(a, b);return d;}
//
//    vec2 opAMinF2(out vec2 d, in vec2 a, in vec2 b){ d = min(a, b);return d;}
//    vec3 opAMinF3(out vec3 d, in vec3 a, in vec3 b){ d = min(a, b);return d;}
//    vec4 opAMinF4(out vec4 d, in vec4 a, in vec4 b){ d = min(a, b);return d;}
//
//    vec2 opAMulF2(out vec2 d, in vec2 a, in vec2 b){ d = a * b;return d;}
//    vec3 opAMulF3(out vec3 d, in vec3 a, in vec3 b){ d = a * b;return d;}
//    vec4 opAMulF4(out vec4 d, in vec4 a, in vec4 b){ d = a * b;return d;}
//
//    vec2 opAMulOneF2(out vec2 d, in vec2 a, float b){ d = a * AF2_x(float(b));return d;}
//    vec3 opAMulOneF3(out vec3 d, in vec3 a, float b){ d = a * AF3_x(float(b));return d;}
//    vec4 opAMulOneF4(out vec4 d, in vec4 a, float b){ d = a * AF4_x(float(b));return d;}
//
//    vec2 opANegF2(out vec2 d, in vec2 a){ d = - a;return d;}
//    vec3 opANegF3(out vec3 d, in vec3 a){ d = - a;return d;}
//    vec4 opANegF4(out vec4 d, in vec4 a){ d = - a;return d;}
//
//    vec2 opARcpF2(out vec2 d, in vec2 a){ d = ARcpF2(a);return d;}
//    vec3 opARcpF3(out vec3 d, in vec3 a){ d = ARcpF3(a);return d;}
//    vec4 opARcpF4(out vec4 d, in vec4 a){ d = ARcpF4(a);return d;}
//
// #line 70 "shaders/src/GenerateMipmap.comp"
//
// shared vec4 spd_intermediate[16][16];
//
// shared uint spd_counter;
//
//   vec4 SpdLoadSourceImage(ivec2 p)
// {
//       vec2 textureCoord = p * params . invSrcExtent + params . invSrcExtent;
//     return texture(src, textureCoord);
// }
//
//   vec4 SpdLoad(ivec2 p)
// {
//     return vec4(0);
// }
//
// void SpdStore(ivec2 p, vec4 value, uint mip)
// {
//     imageStore(dst[mip], p, value);
// }
//
//   vec4 SpdLoadIntermediate(uint x, uint y)
// {
//     return spd_intermediate[x][y];
// }
// void SpdStoreIntermediate(uint x, uint y, vec4 value)
// {
//     spd_intermediate[x][y]= value;
// }
//
//   vec4 SpdReduce4(vec4 v0, vec4 v1, vec4 v2, vec4 v3)
// {
//     return(v0 + v1 + v2 + v3)* 0.25;
// }
//
// #line 1 "shaders/src/third_party/ffx_spd/ffx_spd.h"
//
// #extension GL_KHR_shader_subgroup_quad : require
//
// void SpdWorkgroupShuffleBarrier(){
//
//     barrier();
//
// }
//
// bool SpdExitWorkgroup(uint numWorkGroups, uint localInvocationIndex)
// {
//
//     if(localInvocationIndex == 0)
//     {
//                                   ;
//     }
//     SpdWorkgroupShuffleBarrier();
//     return(0 !=(numWorkGroups - 1));
// }
//
//   vec4 SpdReduceQuad(vec4 v)
// {
//
//       vec4 v0 = v;
//       vec4 v1 = subgroupQuadSwapHorizontal(v);
//       vec4 v2 = subgroupQuadSwapVertical(v);
//       vec4 v3 = subgroupQuadSwapDiagonal(v);
//     return SpdReduce4(v0, v1, v2, v3);
//
//     return AF4_x(0.0);
// }
//
//   vec4 SpdReduceIntermediate(uvec2 i0, uvec2 i1, uvec2 i2, uvec2 i3)
// {
//       vec4 v0 = SpdLoadIntermediate(i0 . x, i0 . y);
//       vec4 v1 = SpdLoadIntermediate(i1 . x, i1 . y);
//       vec4 v2 = SpdLoadIntermediate(i2 . x, i2 . y);
//       vec4 v3 = SpdLoadIntermediate(i3 . x, i3 . y);
//     return SpdReduce4(v0, v1, v2, v3);
// }
//
//   vec4 SpdReduceLoad4(uvec2 i0, uvec2 i1, uvec2 i2, uvec2 i3)
// {
//       vec4 v0 = SpdLoad(ivec2(i0));
//       vec4 v1 = SpdLoad(ivec2(i1));
//       vec4 v2 = SpdLoad(ivec2(i2));
//       vec4 v3 = SpdLoad(ivec2(i3));
//     return SpdReduce4(v0, v1, v2, v3);
// }
//
//   vec4 SpdReduceLoad4(uvec2 base)
// {
//     return SpdReduceLoad4(
//           uvec2(base + uvec2(0, 0)),
//           uvec2(base + uvec2(0, 1)),
//           uvec2(base + uvec2(1, 0)),
//           uvec2(base + uvec2(1, 1)));
// }
//
//   vec4 SpdReduceLoadSourceImage4(uvec2 i0, uvec2 i1, uvec2 i2, uvec2 i3)
// {
//       vec4 v0 = SpdLoadSourceImage(ivec2(i0));
//       vec4 v1 = SpdLoadSourceImage(ivec2(i1));
//       vec4 v2 = SpdLoadSourceImage(ivec2(i2));
//       vec4 v3 = SpdLoadSourceImage(ivec2(i3));
//     return SpdReduce4(v0, v1, v2, v3);
// }
//
//   vec4 SpdReduceLoadSourceImage4(uvec2 base)
// {
//
//     return SpdLoadSourceImage(ivec2(base));
//
// }
//
// void SpdDownsampleMips_0_1_Intrinsics(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//       vec4 v[4];
//
//        ivec2 tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2, y * 2);
//        ivec2 pix = ivec2(workGroupID . xy * 32)+ ivec2(x, y);
//     v[0]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[0], 0);
//
//     tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2 + 32, y * 2);
//     pix = ivec2(workGroupID . xy * 32)+ ivec2(x + 16, y);
//     v[1]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[1], 0);
//
//     tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2, y * 2 + 32);
//     pix = ivec2(workGroupID . xy * 32)+ ivec2(x, y + 16);
//     v[2]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[2], 0);
//
//     tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2 + 32, y * 2 + 32);
//     pix = ivec2(workGroupID . xy * 32)+ ivec2(x + 16, y + 16);
//     v[3]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[3], 0);
//
//     if(mip <= 1)
//         return;
//
//     v[0]= SpdReduceQuad(v[0]);
//     v[1]= SpdReduceQuad(v[1]);
//     v[2]= SpdReduceQuad(v[2]);
//     v[3]= SpdReduceQuad(v[3]);
//
//     if((localInvocationIndex % 4)== 0)
//     {
//         SpdStore(ivec2(workGroupID . xy * 16)+
//                ivec2(x / 2, y / 2), v[0], 1);
//         SpdStoreIntermediate(
//             x / 2, y / 2, v[0]);
//
//         SpdStore(ivec2(workGroupID . xy * 16)+
//                ivec2(x / 2 + 8, y / 2), v[1], 1);
//         SpdStoreIntermediate(
//             x / 2 + 8, y / 2, v[1]);
//
//         SpdStore(ivec2(workGroupID . xy * 16)+
//                ivec2(x / 2, y / 2 + 8), v[2], 1);
//         SpdStoreIntermediate(
//             x / 2, y / 2 + 8, v[2]);
//
//         SpdStore(ivec2(workGroupID . xy * 16)+
//                ivec2(x / 2 + 8, y / 2 + 8), v[3], 1);
//         SpdStoreIntermediate(
//             x / 2 + 8, y / 2 + 8, v[3]);
//     }
// }
//
// void SpdDownsampleMips_0_1_LDS(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//       vec4 v[4];
//
//        ivec2 tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2, y * 2);
//        ivec2 pix = ivec2(workGroupID . xy * 32)+ ivec2(x, y);
//     v[0]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[0], 0);
//
//     tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2 + 32, y * 2);
//     pix = ivec2(workGroupID . xy * 32)+ ivec2(x + 16, y);
//     v[1]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[1], 0);
//
//     tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2, y * 2 + 32);
//     pix = ivec2(workGroupID . xy * 32)+ ivec2(x, y + 16);
//     v[2]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[2], 0);
//
//     tex = ivec2(workGroupID . xy * 64)+ ivec2(x * 2 + 32, y * 2 + 32);
//     pix = ivec2(workGroupID . xy * 32)+ ivec2(x + 16, y + 16);
//     v[3]= SpdReduceLoadSourceImage4(tex);
//     SpdStore(pix, v[3], 0);
//
//     if(mip <= 1)
//         return;
//
//     for(int i = 0;i < 4;i ++)
//     {
//         SpdStoreIntermediate(x, y, v[i]);
//         SpdWorkgroupShuffleBarrier();
//         if(localInvocationIndex < 64)
//         {
//             v[i]= SpdReduceIntermediate(
//                   uvec2(x * 2 + 0, y * 2 + 0),
//                   uvec2(x * 2 + 1, y * 2 + 0),
//                   uvec2(x * 2 + 0, y * 2 + 1),
//                   uvec2(x * 2 + 1, y * 2 + 1)
//             );
//             SpdStore(ivec2(workGroupID . xy * 16)+ ivec2(x +(i % 2)* 8, y +(i / 2)* 8), v[i], 1);
//         }
//         SpdWorkgroupShuffleBarrier();
//     }
//
//     if(localInvocationIndex < 64)
//     {
//         SpdStoreIntermediate(x + 0, y + 0, v[0]);
//         SpdStoreIntermediate(x + 8, y + 0, v[1]);
//         SpdStoreIntermediate(x + 0, y + 8, v[2]);
//         SpdStoreIntermediate(x + 8, y + 8, v[3]);
//     }
// }
//
// void SpdDownsampleMips_0_1(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//
//     SpdDownsampleMips_0_1_Intrinsics(x, y, workGroupID, localInvocationIndex, mip);
//
// }
//
// void SpdDownsampleMip_2(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//
//       vec4 v = SpdLoadIntermediate(x, y);
//     v = SpdReduceQuad(v);
//
//     if(localInvocationIndex % 4 == 0)
//     {
//         SpdStore(ivec2(workGroupID . xy * 8)+ ivec2(x / 2, y / 2), v, mip);
//         SpdStoreIntermediate(x +(y / 2)% 2, y, v);
//     }
//
// }
//
// void SpdDownsampleMip_3(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//
//     if(localInvocationIndex < 64)
//     {
//           vec4 v = SpdLoadIntermediate(x * 2 + y % 2, y * 2);
//         v = SpdReduceQuad(v);
//
//         if(localInvocationIndex % 4 == 0)
//         {
//             SpdStore(ivec2(workGroupID . xy * 4)+ ivec2(x / 2, y / 2), v, mip);
//             SpdStoreIntermediate(x * 2 + y / 2, y * 2, v);
//         }
//     }
//
// }
//
// void SpdDownsampleMip_4(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//
//     if(localInvocationIndex < 16)
//     {
//           vec4 v = SpdLoadIntermediate(x * 4 + y, y * 4);
//         v = SpdReduceQuad(v);
//
//         if(localInvocationIndex % 4 == 0)
//         {
//             SpdStore(ivec2(workGroupID . xy * 2)+ ivec2(x / 2, y / 2), v, mip);
//             SpdStoreIntermediate(x / 2 + y, 0, v);
//         }
//     }
//
// }
//
// void SpdDownsampleMip_5(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint mip)
// {
//
//     if(localInvocationIndex < 4)
//     {
//           vec4 v = SpdLoadIntermediate(localInvocationIndex, 0);
//         v = SpdReduceQuad(v);
//
//         if(localInvocationIndex % 4 == 0)
//         {
//             SpdStore(ivec2(workGroupID . xy), v, mip);
//         }
//     }
//
// }
//
// void SpdDownsampleMips_6_7(uint x, uint y, uint mips)
// {
//        ivec2 tex = ivec2(x * 4 + 0, y * 4 + 0);
//        ivec2 pix = ivec2(x * 2 + 0, y * 2 + 0);
//       vec4 v0 = SpdReduceLoad4(tex);
//     SpdStore(pix, v0, 6);
//
//     tex = ivec2(x * 4 + 2, y * 4 + 0);
//     pix = ivec2(x * 2 + 1, y * 2 + 0);
//       vec4 v1 = SpdReduceLoad4(tex);
//     SpdStore(pix, v1, 6);
//
//     tex = ivec2(x * 4 + 0, y * 4 + 2);
//     pix = ivec2(x * 2 + 0, y * 2 + 1);
//       vec4 v2 = SpdReduceLoad4(tex);
//     SpdStore(pix, v2, 6);
//
//     tex = ivec2(x * 4 + 2, y * 4 + 2);
//     pix = ivec2(x * 2 + 1, y * 2 + 1);
//       vec4 v3 = SpdReduceLoad4(tex);
//     SpdStore(pix, v3, 6);
//
//     if(mips <= 7)return;
//
//       vec4 v = SpdReduce4(v0, v1, v2, v3);
//     SpdStore(ivec2(x, y), v, 7);
//     SpdStoreIntermediate(x, y, v);
// }
//
// void SpdDownsampleNextFour(uint x, uint y, uvec2 workGroupID, uint localInvocationIndex, uint baseMip, uint mips)
// {
//     if(mips <= baseMip)return;
//     SpdWorkgroupShuffleBarrier();
//     SpdDownsampleMip_2(x, y, workGroupID, localInvocationIndex, baseMip);
//
//     if(mips <= baseMip + 1)return;
//     SpdWorkgroupShuffleBarrier();
//     SpdDownsampleMip_3(x, y, workGroupID, localInvocationIndex, baseMip + 1);
//
//     if(mips <= baseMip + 2)return;
//     SpdWorkgroupShuffleBarrier();
//     SpdDownsampleMip_4(x, y, workGroupID, localInvocationIndex, baseMip + 2);
//
//     if(mips <= baseMip + 3)return;
//     SpdWorkgroupShuffleBarrier();
//     SpdDownsampleMip_5(x, y, workGroupID, localInvocationIndex, baseMip + 3);
// }
//
// void SpdDownsample(
//       uvec2 workGroupID,
//       uint localInvocationIndex,
//       uint mips,
//       uint numWorkGroups
// ){
//       uvec2 sub_xy = ARmpRed8x8(localInvocationIndex % 64);
//       uint x = sub_xy . x + 8 *((localInvocationIndex >> 6)% 2);
//       uint y = sub_xy . y + 8 *((localInvocationIndex >> 7));
//     SpdDownsampleMips_0_1(x, y, workGroupID, localInvocationIndex, mips);
//
//     SpdDownsampleNextFour(x, y, workGroupID, localInvocationIndex, 2, mips);
//
//     if(mips <= 6)return;
//
//     if(SpdExitWorkgroup(numWorkGroups, localInvocationIndex))return;
//
//     SpdDownsampleMips_6_7(x, y, mips);
//
//     SpdDownsampleNextFour(x, y, uvec2(0, 0), localInvocationIndex, 8, mips);
// }
//
// #line 175 "shaders/src/GenerateMipmap.comp"
//
// void main()
// {
//
//     SpdDownsample(gl_WorkGroupID . xy, gl_LocalInvocationIndex, params . levelCount, 0);
//
// }
