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

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