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

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