// GENERATED FILE - DO NOT EDIT.
// Generated by gen_vk_internal_shaders.py.
//
// Copyright 2020 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.00000004.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

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