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

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