From 3f3e5d12669c4fc1555cc4dd4faffb61d0b5cabf Mon Sep 17 00:00:00 2001 From: Rodrigo Holztrattner Date: Thu, 2 Oct 2025 17:50:47 -0600 Subject: [PATCH 1/3] Add graph pipelines samplle Signed-off-by: Rodrigo Holztrattner --- .../code/camera/cameraControllerTouch.cpp | 14 +- .../code/graphicsApi/graphicsApiBase.hpp | 2 +- framework/code/main/applicationHelperBase.cpp | 16 +- framework/code/main/applicationHelperBase.hpp | 2 +- .../code/main/frameworkApplicationBase.cpp | 18 +- framework/code/material/computable.cpp | 20 +- .../material/descriptorSetDescription.hpp | 5 +- .../code/material/descriptorSetLayout.cpp | 14 + framework/code/material/drawable.cpp | 362 ++- framework/code/material/drawable.hpp | 26 +- framework/code/material/material.cpp | 118 +- framework/code/material/material.hpp | 22 +- framework/code/material/materialManager.cpp | 22 +- framework/code/material/materialManager.hpp | 1 + framework/code/material/shader.hpp | 20 +- framework/code/material/shaderDescription.cpp | 62 +- framework/code/material/shaderDescription.hpp | 4 + framework/code/material/shaderManagerT.hpp | 100 +- framework/code/material/shaderModule.hpp | 2 +- .../code/material/vulkan/shaderModule.cpp | 6 + .../code/memory/vulkan/memoryManager.cpp | 3 + framework/code/mesh/instanceGenerator.cpp | 2 +- framework/code/mesh/meshLoader.cpp | 7 +- framework/code/system/assetManager.hpp | 11 + framework/code/texture/loaderKtx.hpp | 30 +- framework/code/texture/texture.hpp | 110 +- framework/code/texture/textureManager.hpp | 4 +- framework/code/texture/vulkan/loaderKtx.cpp | 27 +- framework/code/texture/vulkan/loaderKtx.hpp | 9 +- framework/code/texture/vulkan/texture.cpp | 402 ++-- framework/code/texture/vulkan/texture.hpp | 142 +- .../code/texture/vulkan/textureManager.cpp | 23 +- .../code/texture/vulkan/textureManager.hpp | 16 +- framework/code/vulkan/extension.hpp | 42 +- framework/code/vulkan/extensionHelpers.cpp | 176 +- framework/code/vulkan/extensionHelpers.hpp | 363 ++- framework/code/vulkan/renderTarget.cpp | 42 - framework/code/vulkan/timerPool.cpp | 2 +- framework/code/vulkan/vulkan.cpp | 1155 +++++++--- framework/code/vulkan/vulkan.hpp | 250 ++- .../code/vulkanRT/extensionHelpersRT.hpp | 8 +- framework/code/vulkanRT/traceable.cpp | 4 +- framework/code/vulkanRT/vulkanRT.cpp | 4 +- framework/external/Vulkan-Headers | 2 +- project/android/build.bat | 10 +- project/android/build.gradle | 2 +- project/android/gradle.properties | 1 + project/android/gradlew | 285 ++- project/android/gradlew.bat | 37 +- project/android/settings.gradle | 14 +- project/windows/CMakeLists.txt | 1 + .../Adb_Logcat_graph_pipelines.bat | 11 + samples/graph_pipelines/CMakeLists.txt | 48 + samples/graph_pipelines/CompileShaders.bat | 39 + samples/graph_pipelines/Install_APK.bat | 13 + samples/graph_pipelines/build.gradle | 91 + .../graph_pipelines/code/main/application.cpp | 1978 +++++++++++++++++ .../graph_pipelines/code/main/application.hpp | 254 +++ .../project/android/AndroidManifest.xml | 48 + .../android/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6334 bytes .../android/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3797 bytes .../android/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 11107 bytes .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 20192 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 22194 bytes .../project/android/res/values/strings.xml | 4 + samples/graph_pipelines/shaders/Blit.frag | 65 + samples/graph_pipelines/shaders/Blit.json | 64 + samples/graph_pipelines/shaders/Blit.vert | 38 + samples/graph_pipelines/shaders/Scene.vert | 77 + .../graph_pipelines/shaders/SceneOpaque.frag | 259 +++ .../graph_pipelines/shaders/SceneOpaque.json | 106 + .../shaders/SceneTransparent.frag | 258 +++ .../shaders/SceneTransparent.json | 105 + 73 files changed, 6436 insertions(+), 1042 deletions(-) create mode 100644 project/android/gradle.properties create mode 100644 samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat create mode 100644 samples/graph_pipelines/CMakeLists.txt create mode 100644 samples/graph_pipelines/CompileShaders.bat create mode 100644 samples/graph_pipelines/Install_APK.bat create mode 100644 samples/graph_pipelines/build.gradle create mode 100644 samples/graph_pipelines/code/main/application.cpp create mode 100644 samples/graph_pipelines/code/main/application.hpp create mode 100644 samples/graph_pipelines/project/android/AndroidManifest.xml create mode 100644 samples/graph_pipelines/project/android/res/mipmap-hdpi/ic_launcher.png create mode 100644 samples/graph_pipelines/project/android/res/mipmap-mdpi/ic_launcher.png create mode 100644 samples/graph_pipelines/project/android/res/mipmap-xhdpi/ic_launcher.png create mode 100644 samples/graph_pipelines/project/android/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 samples/graph_pipelines/project/android/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 samples/graph_pipelines/project/android/res/values/strings.xml create mode 100644 samples/graph_pipelines/shaders/Blit.frag create mode 100644 samples/graph_pipelines/shaders/Blit.json create mode 100644 samples/graph_pipelines/shaders/Blit.vert create mode 100644 samples/graph_pipelines/shaders/Scene.vert create mode 100644 samples/graph_pipelines/shaders/SceneOpaque.frag create mode 100644 samples/graph_pipelines/shaders/SceneOpaque.json create mode 100644 samples/graph_pipelines/shaders/SceneTransparent.frag create mode 100644 samples/graph_pipelines/shaders/SceneTransparent.json diff --git a/framework/code/camera/cameraControllerTouch.cpp b/framework/code/camera/cameraControllerTouch.cpp index 57536e9..c617a4d 100644 --- a/framework/code/camera/cameraControllerTouch.cpp +++ b/framework/code/camera/cameraControllerTouch.cpp @@ -12,9 +12,8 @@ static const float cMouseRotSpeed = 0.1f; static const float cMouseMoveSpeeed = 0.001f; // Helpers -constexpr glm::vec3 cVecUp = glm::vec3(0.0f, 1.0f, 0.0f); -constexpr glm::vec3 cVecRight = glm::vec3(1.0f, 0.0f, 0.0f); -constexpr glm::vec3 cVecForward = glm::vec3(0.0f, 0.0f, -1.0f); +constexpr glm::vec3 cVecViewRight = glm::vec3( 1.0f, 0.0f, 0.0f ); // x-direction (vector pointing to right of screen)! +constexpr glm::vec3 cVecViewForward = glm::vec3( 0.0f, 0.0f, -1.0f ); // z-direction (vector pointing into screen) //----------------------------------------------------------------------------- @@ -100,7 +99,10 @@ void CameraControllerTouch::Update(float frameTime, glm::vec3& position, glm::qu auto angleChange = mouseDiff * frameTime * m_RotateSpeed; m_LastLookaroundTouchPosition = m_CurrentLookaroundTouchPosition; - rot = glm::angleAxis(angleChange.y, cVecForward) * rot * glm::angleAxis(angleChange.x, cVecUp); + + // one (touch) rotation axis is relative to the view direction, other is relative to world - prevents camera from 'twisting' although does introduce gimbal when looking along the UP axis and rotationg left/right. + rot = glm::angleAxis( angleChange.x, m_WorldUp ) * rot * glm::angleAxis( angleChange.y, cVecViewRight ); + rot = glm::normalize( rot ); } if (m_MovementTouchId != -1) @@ -108,8 +110,8 @@ void CameraControllerTouch::Update(float frameTime, glm::vec3& position, glm::qu auto mouseDiff = m_LastMovementTouchPosition - m_CurrentMovementTouchPosition; auto directionChange = mouseDiff * frameTime * m_MoveSpeed; - position -= (cVecRight * directionChange.x) * rot; - position += (cVecForward * directionChange.y) * rot; + position -= rot * cVecViewRight * directionChange.x; + position += rot * cVecViewForward * directionChange.y; } } diff --git a/framework/code/graphicsApi/graphicsApiBase.hpp b/framework/code/graphicsApi/graphicsApiBase.hpp index 0a8832d..7b62bad 100644 --- a/framework/code/graphicsApi/graphicsApiBase.hpp +++ b/framework/code/graphicsApi/graphicsApiBase.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/main/applicationHelperBase.cpp b/framework/code/main/applicationHelperBase.cpp index 30d2c01..4f3e838 100644 --- a/framework/code/main/applicationHelperBase.cpp +++ b/framework/code/main/applicationHelperBase.cpp @@ -496,31 +496,31 @@ void ApplicationHelperBase::TouchUpEvent(int iPointerID, float xPos, float yPos) TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetManager& assetManager, const char* filename, SamplerAddressMode samplerMode) //----------------------------------------------------------------------------- { - const Sampler* pSampler = nullptr; + SamplerT sampler; switch (samplerMode) { case SamplerAddressMode::Repeat: - pSampler = &m_SamplerRepeat; + sampler = m_SamplerRepeat.Copy(); break; case SamplerAddressMode::ClampEdge: - pSampler = &m_SamplerEdgeClamp; + sampler = m_SamplerEdgeClamp.Copy(); break; case SamplerAddressMode::MirroredRepeat: - pSampler = &m_SamplerMirroredRepeat; + sampler = m_SamplerMirroredRepeat.Copy(); break; default: assert(0 && "Invalid sampler"); break; } - return LoadKTXTexture(vulkan, assetManager, filename, *pSampler); + return LoadKTXTexture(vulkan, assetManager, filename, sampler); } //----------------------------------------------------------------------------- -TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetManager& assetManager, const char* filename, const Sampler& sampler) +TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetManager& assetManager, const char* filename, Sampler& sampler) //----------------------------------------------------------------------------- { auto* pTextureManagerVulkan = apiCast(m_TextureManager.get()); - const auto & samplerVulkan = static_cast&>(sampler); - return pTextureManagerVulkan->GetLoader()->LoadKtx(*vulkan, assetManager, filename, samplerVulkan); + auto & samplerVulkan = static_cast&>(sampler); + return pTextureManagerVulkan->GetLoader()->LoadKtx(*vulkan, assetManager, filename, std::move(samplerVulkan)); } //----------------------------------------------------------------------------- diff --git a/framework/code/main/applicationHelperBase.hpp b/framework/code/main/applicationHelperBase.hpp index 033fd6c..7ee1e96 100644 --- a/framework/code/main/applicationHelperBase.hpp +++ b/framework/code/main/applicationHelperBase.hpp @@ -142,7 +142,7 @@ class ApplicationHelperBase : public FrameworkApplicationBase /// Texture loader helper to replace the (old) texture loading code TextureT LoadKTXTexture(tGfxApi*, AssetManager&, const char* filename, SamplerAddressMode = SamplerAddressMode::ClampEdge); - TextureT LoadKTXTexture(tGfxApi*, AssetManager&, const char* filename, const Sampler&); + TextureT LoadKTXTexture(tGfxApi*, AssetManager&, const char* filename, Sampler&); /// Mesh loader helper to load the first shape in a .gltf file (no materials). /// Returned MeshObject does not have an index buffer (3 verts per triangle) and data is in the MeshHelper::vertex_layout format. diff --git a/framework/code/main/frameworkApplicationBase.cpp b/framework/code/main/frameworkApplicationBase.cpp index e248e8f..ccaf786 100644 --- a/framework/code/main/frameworkApplicationBase.cpp +++ b/framework/code/main/frameworkApplicationBase.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -29,20 +29,20 @@ const char* const FrameworkApplicationBase::sm_BuildTimestamp = BUILD_TIMESTAMP; // ************************************ // General Settings // ************************************ -VAR(uint32_t, gSurfaceWidth, 1280, kVariableNonpersistent); -VAR(uint32_t, gSurfaceHeight, 720, kVariableNonpersistent); +VAR(uint32_t, gSurfaceWidth, 1920, kVariableNonpersistent); +VAR(uint32_t, gSurfaceHeight, 1080, kVariableNonpersistent); -VAR(uint32_t, gRenderWidth, 1280, kVariableNonpersistent); -VAR(uint32_t, gRenderHeight, 720, kVariableNonpersistent); +VAR(uint32_t, gRenderWidth, 1920, kVariableNonpersistent); +VAR(uint32_t, gRenderHeight, 1080, kVariableNonpersistent); -VAR(uint32_t, gReflectMapWidth, 1280/2, kVariableNonpersistent); -VAR(uint32_t, gReflectMapHeight, 720/2, kVariableNonpersistent); +VAR(uint32_t, gReflectMapWidth, 1920, kVariableNonpersistent); +VAR(uint32_t, gReflectMapHeight, 1080, kVariableNonpersistent); VAR(uint32_t, gShadowMapWidth, 1024, kVariableNonpersistent); VAR(uint32_t, gShadowMapHeight, 1024, kVariableNonpersistent); -VAR(uint32_t, gHudRenderWidth, 1280, kVariableNonpersistent); -VAR(uint32_t, gHudRenderHeight, 720, kVariableNonpersistent); +VAR(uint32_t, gHudRenderWidth, 1920, kVariableNonpersistent); +VAR(uint32_t, gHudRenderHeight, 1080, kVariableNonpersistent); VAR(float, gFixedFrameRate, 0.0f, kVariableNonpersistent); diff --git a/framework/code/material/computable.cpp b/framework/code/material/computable.cpp index cbbead8..b06255e 100644 --- a/framework/code/material/computable.cpp +++ b/framework/code/material/computable.cpp @@ -218,7 +218,7 @@ bool Computable::Init() { for (const auto& passImageBinding : passImageBindings.first) // image binding can be an array of bindings { - const auto passUsage = BindingUseData( materialPassIdx, passImageBindings.second.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, ImageUsage(passImageBinding) ); + const auto passUsage = BindingUseData( materialPassIdx, passImageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, ImageUsage(passImageBinding) ); passNeedsExecutionBarrier |= emitBarrier(passUsage, prevImageUsages, [&imageMemoryBarriers](auto& prevUsage, auto& currentUsage) { const auto& image = currentUsage.buffer; @@ -279,7 +279,7 @@ bool Computable::Init() { for (const auto& passBufferBinding : passBufferBindings.first) // buffer binding can be an array of bindings { - const auto passUsage = BindingUseData(materialPassIdx, passBufferBindings.second.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passBufferBinding.buffer); + const auto passUsage = BindingUseData(materialPassIdx, passBufferBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passBufferBinding.buffer); passNeedsExecutionBarrier |= emitBarrier(passUsage, prevBufferUsages, [&](auto& prevUsage, auto& currentUsage) { @@ -308,7 +308,7 @@ bool Computable::Init() for (const auto& imageBindings : materialPass.GetImageBindings()) { - BindingAccess access = imageBindings.second.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite; + BindingAccess access = imageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite; for (const auto& imageBinding : imageBindings.first) { prevImageUsages.push_back( { materialPassIdx, access, ImageUsage{imageBinding.image, imageBinding.imageViewNumMips, imageBinding.imageViewFirstMip, imageBinding.imageLayout} } ); @@ -319,16 +319,19 @@ bool Computable::Init() for (const auto& texture : textureBinding.first) { const auto& textureVulkan = apiCast(texture); - prevImageUsages.push_back( { materialPassIdx, BindingAccess::ReadOnly, {textureVulkan->GetVkImage(), textureVulkan->MipLevels, textureVulkan->FirstMip, textureVulkan->GetVkImageLayout()} } ); + if (!textureVulkan->Image.IsEmpty()) // Only consider for barriers if the texture has a buffer/image, texture objects containing only a sampler can be ignored. + { + prevImageUsages.push_back( {materialPassIdx, BindingAccess::ReadOnly, {textureVulkan->GetVkImage(), textureVulkan->MipLevels, textureVulkan->FirstMip, textureVulkan->GetVkImageLayout()}} ); + } } } for (const auto& bufferBinding : materialPass.GetBufferBindings()) { - LOGI("Buffer Binding: %s", materialPass.mShaderPass.m_shaderPassDescription.m_sets[0].m_descriptorTypes[bufferBinding.second.index].names[0].c_str()); + LOGI("Buffer Binding: %s", materialPass.mShaderPass.m_shaderPassDescription.m_sets[bufferBinding.second.setIndex].m_descriptorTypes[bufferBinding.second.setBinding.index].names[0].c_str()); for (const auto& buffer : bufferBinding.first) { - prevBufferUsages.push_back({ materialPassIdx, bufferBinding.second.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, buffer.buffer }); + prevBufferUsages.push_back({ materialPassIdx, bufferBinding.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, buffer.buffer }); } } } @@ -457,9 +460,8 @@ void Computable::DispatchPass(VkCommandBuffer cmdBuffer, const ComputablePass& c vkCmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipeline); // Bind everything the shader needs - const auto& descriptorSets = computablePass.GetVkDescriptorSets(); - VkDescriptorSet descriptorSet = descriptorSets.size() >= 1 ? descriptorSets[bufferIdx] : descriptorSets[0]; - vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipelineLayout, 0, 1, &descriptorSet, 0, nullptr); + const std::span descriptorSets = computablePass.mMaterialPass.GetVkDescriptorSets(bufferIdx); + vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipelineLayout, 0, descriptorSets.size(), descriptorSets.data(), 0, nullptr); // Dispatch the compute task vkCmdDispatch(cmdBuffer, computablePass.GetDispatchGroupCount()[0], computablePass.GetDispatchGroupCount()[1], computablePass.GetDispatchGroupCount()[2]); diff --git a/framework/code/material/descriptorSetDescription.hpp b/framework/code/material/descriptorSetDescription.hpp index ab51db5..46eaba1 100644 --- a/framework/code/material/descriptorSetDescription.hpp +++ b/framework/code/material/descriptorSetDescription.hpp @@ -18,6 +18,7 @@ class DescriptorSetDescription { public: enum class DescriptorType { + Unused, ///< Use to pad unused 'slot' in descriptor set UniformBuffer, StorageBuffer, ImageSampler, ///< Texture and Sampler combined @@ -40,7 +41,9 @@ class DescriptorSetDescription RayGeneration = 16, RayClosestHit = 32, RayAnyHit = 64, - RayMiss = 128 + RayMiss = 128, + Task = 256, + Mesh = 512 }; StageFlag(const t _type) : type(_type) {} StageFlag& operator=(const StageFlag& other) { type = other.type; return *this; } diff --git a/framework/code/material/descriptorSetLayout.cpp b/framework/code/material/descriptorSetLayout.cpp index 194efff..c6b427a 100644 --- a/framework/code/material/descriptorSetLayout.cpp +++ b/framework/code/material/descriptorSetLayout.cpp @@ -51,6 +51,13 @@ bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& d m_descriptorSetLayoutBindings.reserve(numBindings); for (const auto& it : description.m_descriptorTypes) { + if (it.type == DescriptorSetDescription::DescriptorType::Unused) + { + // 'Unused' descriptor indicates a 'gap' in the descriptor set + assert( it.readOnly ); + index++; + continue; + } auto& binding = m_descriptorSetLayoutBindings.emplace_back(); binding.binding = index++; binding.descriptorCount = it.count; @@ -96,8 +103,15 @@ bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& d case DescriptorSetDescription::DescriptorType::DrawIndirectBuffer: assert(0 && "DrawIndirectBuffer is not a supported binding to a descriptor set"); break; + case DescriptorSetDescription::DescriptorType::Unused: + // Handled before switch, never hit! + break; } VkShaderStageFlagBits stageFlags = (VkShaderStageFlagBits)0; + if (it.stages & DescriptorSetDescription::StageFlag::t::Task) + binding.stageFlags = VK_SHADER_STAGE_TASK_BIT_EXT; + if (it.stages & DescriptorSetDescription::StageFlag::t::Mesh) + binding.stageFlags = VK_SHADER_STAGE_MESH_BIT_EXT; if (it.stages & DescriptorSetDescription::StageFlag::t::Vertex) binding.stageFlags = VK_SHADER_STAGE_VERTEX_BIT; if (it.stages & DescriptorSetDescription::StageFlag::t::Fragment) diff --git a/framework/code/material/drawable.cpp b/framework/code/material/drawable.cpp index 947949d..380d45d 100644 --- a/framework/code/material/drawable.cpp +++ b/framework/code/material/drawable.cpp @@ -83,6 +83,16 @@ static VkBlendFactor BlendFactorToVk( ShaderPassDescription::BlendFactor bf) return VK_BLEND_FACTOR_ZERO; } +bool Drawable::Init(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional drawIndirectBuffer, std::span passMultisample, std::span subpasses, int nodeId) +{ + mMeshObject = {}; + mVertexInstanceBuffer = {}; + mDrawIndirectBuffer = std::move(drawIndirectBuffer); + mNodeId = nodeId; + + return ReInit(vkRenderPasses, passNames, passMask, passMultisample, subpasses); +} + bool Drawable::Init(VkRenderPass vkRenderPass, const char* passName, Mesh meshObject, std::optional vertexInstanceBuffer, std::optional drawIndirectBuffer, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses, int nodeId) { mMeshObject = std::move(meshObject); @@ -101,6 +111,15 @@ bool Drawable::Init(std::span vkRenderPasses, const char* const* p return ReInit(vkRenderPasses, passNames, passMask, passMultisample, subpasses); } +bool Drawable::Init(VkRenderPass vkRenderPass, const char* passName, Mesh meshObject, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom) +{ + mMeshObject = std::move(meshObject); + mVertexInstanceBuffer = std::nullopt; + mDrawIndirectBuffer = std::nullopt; + mNodeId = -1; + return ReInit(vkRenderPass, passName, nullptr, nullptr, ia_custom, rs_custom); +} + bool Drawable::ReInit( VkRenderPass vkRenderPass, const char* passName, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses ) { auto multisampleSpan = passMultisample ? std::span(passMultisample, 1) : std::span{}; @@ -109,7 +128,35 @@ bool Drawable::ReInit( VkRenderPass vkRenderPass, const char* passName, const Vk return ReInit( { &vkRenderPass,1 }, &passName, 1, multisampleSpan, subpassesSpan ); } -bool Drawable::ReInit( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses ) +bool Drawable::ReInit( VkRenderPass vkRenderPass, const char* passName, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom) +{ + auto multisampleSpan = passMultisample ? std::span(passMultisample, 1) : std::span{}; + auto subpassesSpan = subpasses ? std::span( subpasses, 1 ) : std::span{}; + + return ReInit( { &vkRenderPass,1 }, &passName, 1, multisampleSpan, subpassesSpan, ia_custom, rs_custom); +} + +bool Drawable::ReInit(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses) +{ + // Need default values for InputAssembly and RasterizationState + + VkPipelineInputAssemblyStateCreateInfo ia_custom = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; + ia_custom.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + + // State for rasterization, such as polygon fill mode is defined. + VkPipelineRasterizationStateCreateInfo rs_custom = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; + rs_custom.polygonMode = VK_POLYGON_MODE_FILL; + rs_custom.cullMode = VK_CULL_MODE_NONE; + rs_custom.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + rs_custom.depthClampEnable = VK_FALSE; + rs_custom.rasterizerDiscardEnable = VK_FALSE; + rs_custom.depthBiasEnable = VK_FALSE; + rs_custom.lineWidth = 1.0f; + + return ReInit(vkRenderPasses, passNames, passMask, passMultisample, subpasses, ia_custom, rs_custom); +} + +bool Drawable::ReInit( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom) { assert( passMultisample.empty() || passMultisample.size() == vkRenderPasses.size() ); mPassMask = passMask; @@ -123,15 +170,17 @@ bool Drawable::ReInit( std::span vkRenderPasses, const char* const const auto& shader = mMaterial.m_shader; mPasses.reserve(shader.GetShaderPasses().size()); - for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8; ++passIdx) + for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8 && passMask != 0; ++passIdx) { - if (passMask & (1 << passIdx)) + bool passMaskSet = ((passMask & 1) != 0); + passMask >>= 1; + if (passMaskSet) { // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", passNames[passIdx]); MaterialPass* pMaterialPass = const_cast(mMaterial.GetMaterialPass(passNames[passIdx])); if (!pMaterialPass) { - LOGE(" Pass does not exist in shader"); + LOGE(" Pass %s does not exist in shader", passNames[passIdx]); continue; } assert(pMaterialPass); @@ -139,13 +188,13 @@ bool Drawable::ReInit( std::span vkRenderPasses, const char* const // Common to all pipelines // State for rasterization, such as polygon fill mode is defined. - VkPipelineRasterizationStateCreateInfo rs {VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO}; + VkPipelineRasterizationStateCreateInfo rs = rs_custom; const auto& fixedFunctionSettings = shaderPass.m_shaderPassDescription.m_fixedFunctionSettings; - rs.polygonMode = VK_POLYGON_MODE_FILL; + // Don't stomp this value! rs.polygonMode = VK_POLYGON_MODE_FILL; rs.cullMode = (fixedFunctionSettings.cullBackFace?VK_CULL_MODE_BACK_BIT:0) | (fixedFunctionSettings.cullFrontFace ? VK_CULL_MODE_FRONT_BIT : 0); - rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + // Don't stomp this value! rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; rs.depthClampEnable = fixedFunctionSettings.depthClampEnable ? VK_TRUE : VK_FALSE; - rs.rasterizerDiscardEnable = VK_FALSE; + // Don't stomp this value! rs.rasterizerDiscardEnable = VK_FALSE; rs.depthBiasEnable = fixedFunctionSettings.depthBiasEnable ? VK_TRUE : VK_FALSE; if (fixedFunctionSettings.depthBiasEnable) { @@ -153,7 +202,7 @@ bool Drawable::ReInit( std::span vkRenderPasses, const char* const rs.depthBiasClamp = fixedFunctionSettings.depthBiasClamp; rs.depthBiasSlopeFactor = fixedFunctionSettings.depthBiasSlope; } - rs.lineWidth = 1.0f; + // Don't stomp this value! rs.lineWidth = 1.0f; const auto& outputSettings = shaderPass.m_shaderPassDescription.m_outputs; @@ -320,6 +369,8 @@ bool Drawable::ReInit( std::span vkRenderPasses, const char* const ); VkShaderModule vkVertShader = VK_NULL_HANDLE; VkShaderModule vkFragShader = VK_NULL_HANDLE; + VkShaderModule vkMeshShader = VK_NULL_HANDLE; + VkShaderModule vkTaskShader = VK_NULL_HANDLE; std::visit( [&](auto& m) { @@ -329,6 +380,17 @@ bool Drawable::ReInit( std::span vkRenderPasses, const char* const vkVertShader = m.vert.GetVkShaderModule(); vkFragShader = m.frag.GetVkShaderModule(); } + else if constexpr (std::is_same_v>) + { + vkMeshShader = m.mesh.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } + else if constexpr (std::is_same_v>) + { + vkTaskShader = m.task.GetVkShaderModule(); + vkMeshShader = m.mesh.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } else if constexpr (std::is_same_v>) { vkVertShader = m.vert.GetVkShaderModule(); @@ -350,11 +412,235 @@ bool Drawable::ReInit( std::span vkRenderPasses, const char* const &ms, {},//dynamic states nullptr, nullptr, + vkTaskShader, + vkMeshShader, vkVertShader, vkFragShader, pMaterialPass->GetSpecializationConstants().GetVkSpecializationInfo(), false, VK_NULL_HANDLE, + &pass.mPipeline, + ia_custom)) + { + // Error + return false; + } + mVulkan.SetDebugObjectName(pass.mPipeline, pMaterialPass->mShaderPass.m_shaderPassDescription.m_vertexName.c_str()); + } + } + return true; +} + +bool Drawable::InitMeshShader(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional drawIndirectBuffer, std::span passMultisample, std::span subpasses, int nodeId) +{ + mMeshObject = {}; + mVertexInstanceBuffer = {}; + mDrawIndirectBuffer = std::move(drawIndirectBuffer); + mNodeId = nodeId; + + return ReInitMeshShader(vkRenderPasses, passNames, passMask, passMultisample, subpasses); +} +bool Drawable::ReInitMeshShader( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses ) +{ + assert( passMultisample.empty() || passMultisample.size() == vkRenderPasses.size() ); + mPassMask = passMask; + mPassNameToIndex.clear(); + for (auto& pass : mPasses) + { + vkDestroyPipeline(mVulkan.m_VulkanDevice, pass.mPipeline, nullptr); + pass.mPipeline = VK_NULL_HANDLE; + } + mPasses.clear(); + + const auto& shader = mMaterial.m_shader; + mPasses.reserve(shader.GetShaderPasses().size()); + for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8 && passMask != 0; ++passIdx) + { + bool passMaskSet = ((passMask & 1) != 0); + passMask >>= 1; + if (passMaskSet) + { + // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", passNames[passIdx]); + MaterialPass* pMaterialPass = const_cast(mMaterial.GetMaterialPass(passNames[passIdx])); + if (!pMaterialPass) + { + LOGE(" Pass %s does not exist in shader", passNames[passIdx]); + continue; + } + assert(pMaterialPass); + const auto& shaderPass = pMaterialPass->mShaderPass; + + // Common to all pipelines + // State for rasterization, such as polygon fill mode is defined. + VkPipelineRasterizationStateCreateInfo rs {VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO}; + const auto& fixedFunctionSettings = shaderPass.m_shaderPassDescription.m_fixedFunctionSettings; + rs.polygonMode = VK_POLYGON_MODE_FILL; + rs.cullMode = (fixedFunctionSettings.cullBackFace?VK_CULL_MODE_BACK_BIT:0) | (fixedFunctionSettings.cullFrontFace ? VK_CULL_MODE_FRONT_BIT : 0); + rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + rs.depthClampEnable = fixedFunctionSettings.depthClampEnable ? VK_TRUE : VK_FALSE; + rs.rasterizerDiscardEnable = VK_FALSE; + rs.depthBiasEnable = fixedFunctionSettings.depthBiasEnable ? VK_TRUE : VK_FALSE; + if (fixedFunctionSettings.depthBiasEnable) + { + rs.depthBiasConstantFactor = fixedFunctionSettings.depthBiasConstant; + rs.depthBiasClamp = fixedFunctionSettings.depthBiasClamp; + rs.depthBiasSlopeFactor = fixedFunctionSettings.depthBiasSlope; + } + rs.lineWidth = 1.0f; + + const auto& outputSettings = shaderPass.m_shaderPassDescription.m_outputs; + + // Setup blending/transparency + std::vector BlendStates; + BlendStates.reserve(outputSettings.size()); + for (const auto& outputSetting : outputSettings) + { + VkPipelineColorBlendAttachmentState& cb = BlendStates.emplace_back(VkPipelineColorBlendAttachmentState{}); + if (outputSetting.blendEnable) + { + cb.blendEnable = VK_TRUE; + cb.srcColorBlendFactor = BlendFactorToVk(outputSetting.srcColorBlendFactor); + cb.dstColorBlendFactor = BlendFactorToVk(outputSetting.dstColorBlendFactor); + cb.colorBlendOp = VK_BLEND_OP_ADD; + cb.srcAlphaBlendFactor = BlendFactorToVk(outputSetting.srcAlphaBlendFactor); + cb.dstAlphaBlendFactor = BlendFactorToVk(outputSetting.dstAlphaBlendFactor); + cb.alphaBlendOp = VK_BLEND_OP_ADD; + } + cb.colorWriteMask = outputSetting.colorWriteMask & (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT); + } + + VkPipelineColorBlendStateCreateInfo cb = {}; + cb.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; + cb.attachmentCount = (uint32_t)BlendStates.size(); + cb.pAttachments = BlendStates.data(); + + // Setup depth testing + VkPipelineDepthStencilStateCreateInfo ds = {}; + ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; + ds.depthTestEnable = fixedFunctionSettings.depthTestEnable ? VK_TRUE : VK_FALSE; + ds.depthWriteEnable = fixedFunctionSettings.depthWriteEnable ? VK_TRUE : VK_FALSE; + switch( fixedFunctionSettings.depthCompareOp ) { + case ShaderPassDescription::DepthCompareOp::LessEqual: + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + break; + case ShaderPassDescription::DepthCompareOp::Equal: + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + break; + case ShaderPassDescription::DepthCompareOp::Greater: + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + break; + } + ds.depthBoundsTestEnable = VK_FALSE; + ds.back.failOp = VK_STENCIL_OP_KEEP; + ds.back.passOp = VK_STENCIL_OP_KEEP; + ds.back.compareOp = VK_COMPARE_OP_ALWAYS; + ds.stencilTestEnable = VK_FALSE; + ds.front = ds.back; + + // Setup (multi) sampling + VkSampleMask sampleMask = 0; + VkPipelineMultisampleStateCreateInfo ms = {VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO}; + + ms.rasterizationSamples = passMultisample.empty() ? VK_SAMPLE_COUNT_1_BIT : passMultisample[passIdx]; + const auto& sampleShadingSettings = shaderPass.m_shaderPassDescription.m_sampleShadingSettings; + ms.sampleShadingEnable = sampleShadingSettings.sampleShadingEnable; + if (sampleShadingSettings.sampleShadingMask != 0) + { + assert(ms.rasterizationSamples <= VK_SAMPLE_COUNT_32_BIT ); // sampleMask is only 32bits currently! Easy fix if we want > 32x MSAA + sampleMask = sampleShadingSettings.sampleShadingMask & ((1 << ms.rasterizationSamples) -1); + ms.pSampleMask = &sampleMask; + } + + VkPipelineSampleLocationsStateCreateInfoEXT msLocations = { VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT }; + if( sampleShadingSettings.forceCenterSample ) + { + msLocations.sampleLocationsEnable = VK_TRUE; + msLocations.sampleLocationsInfo.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT; + msLocations.sampleLocationsInfo.sampleLocationsPerPixel = ms.rasterizationSamples; + msLocations.sampleLocationsInfo.sampleLocationsCount = (uint32_t) ms.rasterizationSamples; + msLocations.sampleLocationsInfo.sampleLocationGridSize = { 1,1 }; + std::vector msSampleLocations( msLocations.sampleLocationsInfo.sampleLocationsCount, { 0.5f,0.5f } ); + msLocations.sampleLocationsInfo.pSampleLocations = msSampleLocations.data(); + ms.pNext = &msLocations; + } + + mPassNameToIndex.try_emplace(passNames[passIdx], (uint32_t)mPasses.size()); // add the lookup (in to mPasses) + + VkBuffer indexBuffer = VK_NULL_HANDLE; + VkIndexType indexBufferType = VK_INDEX_TYPE_MAX_ENUM; + + // Indirect Draw buffer is optional + VkBuffer drawIndirectBuffer = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetVkBuffer() : VK_NULL_HANDLE; + uint32_t drawIndirectCount = mDrawIndirectBuffer.has_value() ? (uint32_t)mDrawIndirectBuffer->GetNumDraws() : 0; + uint32_t drawIndirectOffset = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetBufferOffset() : 0; + // Indirect Draw Count (count buffer) set to be the beginning of the drawIndirectBuffer IF there is an offset in the mDrawIndirectBuffer. + VkBuffer drawIndirectCountBuffer = drawIndirectOffset>0 ? drawIndirectBuffer : VK_NULL_HANDLE; + + // Pipeline layout may come from the shaderPass or (if that fails) from the materialPass (if it was created late because of 'dynamic' descriptor set layout). + VkPipelineLayout pipelineLayout = shaderPass.GetPipelineLayout().GetVkPipelineLayout(); + if (pipelineLayout == VK_NULL_HANDLE) + pipelineLayout = pMaterialPass->GetPipelineLayout().GetVkPipelineLayout(); + + // add the DrawablePass + DrawablePass& pass = mPasses.emplace_back( *pMaterialPass, + (VkPipeline) VK_NULL_HANDLE, + pipelineLayout, + pMaterialPass->GetVkDescriptorSets(), + shaderPass.GetPipelineVertexInputState(), + DrawablePassVertexBuffers { }, //DrawablePassVertexBuffers { std::move( passVertexBuffers ), std::move( passVertexBufferOffsets ) }, + VK_NULL_HANDLE, //indexBuffer, + indexBufferType, + drawIndirectBuffer, + drawIndirectCountBuffer, + 0, //(uint32_t)mMeshObject.m_NumVertices, + 0, //(uint32_t)indexCount, + (uint32_t)drawIndirectCount, + (uint32_t)drawIndirectOffset, + passIdx + ); + VkShaderModule vkVertShader = VK_NULL_HANDLE; + VkShaderModule vkFragShader = VK_NULL_HANDLE; + VkShaderModule vkMeshShader = VK_NULL_HANDLE; + VkShaderModule vkTaskShader = VK_NULL_HANDLE; + + std::visit( [&](auto& m) + { + using T = std::decay_t; + if constexpr (std::is_same_v>) + { + vkMeshShader = m.mesh.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } + else if constexpr (std::is_same_v>) + { + vkTaskShader = m.task.GetVkShaderModule(); + vkMeshShader = m.mesh.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } + else + { + assert( 0 ); // unsupported shader module type (eg ComputeShaderModule, VertexShaderModule, ...) + } + }, shaderPass.m_shaders.m_modules ); + + if (!mVulkan.CreatePipeline(mVulkan.GetPipelineCache(), + &pass.mPipelineVertexInputState.GetVkPipelineVertexInputStateCreateInfo(), + pass.mPipelineLayout, + vkRenderPasses[passIdx], + subpasses.empty() ? 0 :subpasses[passIdx], + &rs, + &ds, + BlendStates.empty() ? nullptr : &cb, + &ms, + {},//dynamic states + nullptr, nullptr, + vkTaskShader, + vkMeshShader, + VK_NULL_HANDLE, // no vertex shader vkVertShader, + vkFragShader, + pMaterialPass->GetSpecializationConstants().GetVkSpecializationInfo(), + false, + VK_NULL_HANDLE, &pass.mPipeline)) { // Error @@ -385,6 +671,58 @@ void Drawable::DrawPass(VkCommandBuffer cmdBuffer, const DrawablePass& drawableP NULL); } + const auto& shaderPassDescription = drawablePass.mMaterialPass.mShaderPass.m_shaderPassDescription; + if (!shaderPassDescription.m_meshName.empty() && !shaderPassDescription.m_taskName.empty()) // Has a mesh shader (maybe not the ideal way to test this) + { + auto* meshExtension = mVulkan.GetExtension(); + if (!meshExtension || meshExtension->Status != VulkanExtensionStatus::eLoaded) + assert( 0 && "mesh shader extension not loader or supported" ); + else + { + + meshExtension->m_vkCmdDrawMeshTasksEXT(cmdBuffer, mDispatchGroupCount[0], mDispatchGroupCount[1], mDispatchGroupCount[2]); + return; + } + } + else if (!shaderPassDescription.m_meshName.empty() && shaderPassDescription.m_taskName.empty()) // Has a mesh shader (maybe not the ideal way to test this) + { + auto* meshExtension = mVulkan.GetExtension(); + if (!meshExtension || meshExtension->Status != VulkanExtensionStatus::eLoaded) + assert( 0 && "mesh shader extension not loader or supported" ); + else + { + if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) + { + if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) + { + // Draw the mesh using Mesh indirect count buffer (vkCmdDrawMeshTasksIndirectCountEXT command) + assert(meshExtension->m_vkCmdDrawMeshTasksIndirectCountEXT != nullptr); + meshExtension->m_vkCmdDrawMeshTasksIndirectCountEXT( + cmdBuffer, + drawablePass.mDrawIndirectBuffer, + drawablePass.mDrawIndirectOffset, + drawablePass.mDrawIndirectCountBuffer, + 0, + drawablePass.mNumDrawIndirect, + sizeof(VkDrawIndexedIndirectCommand)); + } + else + { + // Draw the mesh using Mesh indirect buffer (vkCmdDrawMeshTasksIndirectEXT) + assert(meshExtension->m_vkCmdDrawMeshTasksIndirectEXT!= nullptr); + meshExtension->m_vkCmdDrawMeshTasksIndirectEXT( + cmdBuffer, + drawablePass.mDrawIndirectBuffer, + drawablePass.mDrawIndirectOffset, + drawablePass.mNumDrawIndirect, + sizeof(VkDrawIndexedIndirectCommand)); + } + } + } + // RETURN here if mesh shader + return; + } + const auto& vertexBuffers = vertexBufferOverrides.empty() ? drawablePass.mVertexBuffers : vertexBufferOverrides[bufferIdx % vertexBufferOverrides.size()]; if (!vertexBuffers.mVertexBuffers.empty()) @@ -416,15 +754,17 @@ void Drawable::DrawPass(VkCommandBuffer cmdBuffer, const DrawablePass& drawableP { if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) { - // Draw the mesh using draw indirect cont buffer (VkDrawIndexedIndirectCount command) + // Draw the mesh using draw indirect count buffer (VkDrawIndexedIndirectCount command) const auto* drawIndirectCountExt = mVulkan.GetExtension(); assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr); drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); } else + { // Draw the mesh using draw indirect buffer (VkDrawIndexedIndirectCommand) vkCmdDrawIndexedIndirect(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); } + } else { // Everything is set up, draw the mesh @@ -443,9 +783,11 @@ void Drawable::DrawPass(VkCommandBuffer cmdBuffer, const DrawablePass& drawableP drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); } else + { // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) vkCmdDrawIndirect(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); } + } else { // Draw the mesh without index buffer diff --git a/framework/code/material/drawable.hpp b/framework/code/material/drawable.hpp index 30e443d..47e4d3b 100644 --- a/framework/code/material/drawable.hpp +++ b/framework/code/material/drawable.hpp @@ -97,14 +97,29 @@ class Drawable Drawable(Drawable&&) noexcept; ~Drawable(); + /// Initialize this Drawable with the given mesh and render passes. + bool Init(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional indirectDrawBuffer = std::nullopt, std::span passMultisample = {}, std::span subpasses = {}, int nodeId = -1); + /// Initialize this Drawable with the given mesh and (single) render pass. bool Init(VkRenderPass vkRenderPass, const char* passNames, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, const VkSampleCountFlagBits* const passMultisample = nullptr, const uint32_t* const subpasses = nullptr, int nodeId = -1); /// Initialize this Drawable with the given mesh and render passes. bool Init( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, std::span passMultisample = {}, std::span subpasses = {}, int nodeId = -1); + /// Initialize this Drawable with the given mesh, (single) render pass, and raster information (triangles, lines, points, etc.). + bool Init(VkRenderPass vkRenderPass, const char* passName, Mesh meshObject, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom); + + bool InitMeshShader( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional indirectDrawBuffer = std::nullopt, std::span passMultisample = {}, std::span subpasses = {}, int nodeId = -1); + /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render pass has been modified. bool ReInit( VkRenderPass vkRenderPass, const char* passNames, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses ); + /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render pass has been modified. + bool ReInit( VkRenderPass vkRenderPass, const char* passNames, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom); /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render passes have been modified. bool ReInit(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses); + /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render passes have been modified. + bool ReInit(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom); + + + bool ReInitMeshShader(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses); /// Issues the Vulkan commands needed to draw this DrawablePass. /// Binds the pipeline, descriptor sets, vertex buffers, index buffers, and issues the appropriate vkCmdDraw* @@ -120,9 +135,18 @@ class Drawable const auto& GetDrawIndirectBuffer() const { return mDrawIndirectBuffer; } const int GetNodeId() const { return mNodeId; } + /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) + void SetDispatchGroupCount(std::array count) { mDispatchGroupCount = count; } + const auto& GetDispatchGroupCount() const { return mDispatchGroupCount; } + + // Need non const access to mMeshObject but don't want to break anyone using GetMeshObject() +public: + Mesh mMeshObject; + protected: Material mMaterial; - Mesh mMeshObject; + + std::array mDispatchGroupCount{ 1u,1u,1u }; std::vector mPasses; std::map mPassNameToIndex; // Index in to mpasses ///TODO: allow for generation of a list of these - so each pass can iterate through the passes easily diff --git a/framework/code/material/material.cpp b/framework/code/material/material.cpp index 3eb20b4..2694527 100644 --- a/framework/code/material/material.cpp +++ b/framework/code/material/material.cpp @@ -19,6 +19,8 @@ MaterialPass::MaterialPass(Vulkan& vulkan, const ShaderPass& shaderPass, VkDescriptorPool&& descriptorPool, std::vector&& descriptorSets, std::vector&& dynamicDescriptorSetLayouts, tTextureBindings&& textureBindings, tImageBindings&& imageBindings, tBufferBindings&& bufferBindings, tAccelerationStructureBindings&& accelerationStructureBindings, SpecializationConstants&& specializationConstants ) : mShaderPass(shaderPass) , mVulkan( vulkan ) + , mNumDescriptorSetsPerBuffer(uint32_t(shaderPass.GetDescriptorSetLayouts().size())) + , mNumBuffers(mNumDescriptorSetsPerBuffer>0 ? uint32_t(descriptorSets.size() / mNumDescriptorSetsPerBuffer) : 0) , mDescriptorPool(descriptorPool) , mDescriptorSets(std::move(descriptorSets)) , mDynamicDescriptorSetLayouts(std::move(dynamicDescriptorSetLayouts)) @@ -30,6 +32,7 @@ MaterialPass::MaterialPass(Vulkan& vulkan, const ShaderPass& shaderPass, { if (!mDynamicDescriptorSetLayouts.empty()) mDynamicPipelineLayout.Init(vulkan, mDynamicDescriptorSetLayouts); + assert( mDescriptorSets.size() == mNumBuffers*mNumDescriptorSetsPerBuffer ); descriptorPool = VK_NULL_HANDLE; // we took owenership } @@ -37,6 +40,8 @@ MaterialPass::MaterialPass(Vulkan& vulkan, const ShaderPass& shaderPass, MaterialPass::MaterialPass(MaterialPass&& other) noexcept : mShaderPass(other.mShaderPass) , mVulkan( other.mVulkan ) + , mNumDescriptorSetsPerBuffer( other.mNumDescriptorSetsPerBuffer ) + , mNumBuffers( other.mNumBuffers ) , mDescriptorPool(other.mDescriptorPool) , mDescriptorSets(std::move(other.mDescriptorSets)) , mDynamicDescriptorSetLayouts(std::move(other.mDynamicDescriptorSetLayouts)) @@ -136,19 +141,22 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) uint32_t writeInfoIdx = 0; uint32_t imageInfoCount = 0; uint32_t bufferInfoCount = 0; + const size_t numDescriptorSetsPerFrame = mShaderPass.GetDescriptorSetLayouts().size(); + const auto descriptorSetBaseIdx = bufferIdx * numDescriptorSetsPerFrame; // Go through the textures first for (const auto& textureBinding : mTextureBindings) { - uint32_t bindingIndex = textureBinding.second.index; - VkDescriptorType bindingType = textureBinding.second.type; + uint32_t setIndex = textureBinding.second.setIndex; + uint32_t bindingIndex = textureBinding.second.setBinding.index; + VkDescriptorType bindingType = textureBinding.second.setBinding.type; - uint32_t numTexToBind = textureBinding.second.isArray ? (uint32_t)textureBinding.first.size() : 1; - uint32_t texIndex = textureBinding.second.isArray ? 0 : (bufferIdx % textureBinding.first.size()); + uint32_t numTexToBind = textureBinding.second.setBinding.isArray ? (uint32_t)textureBinding.first.size() : 1; + uint32_t texIndex = textureBinding.second.setBinding.isArray ? 0 : (bufferIdx % textureBinding.first.size()); writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[bufferIdx]; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; writeInfo[writeInfoIdx].dstBinding = bindingIndex; writeInfo[writeInfoIdx].dstArrayElement = 0; writeInfo[writeInfoIdx].descriptorCount = numTexToBind; @@ -156,9 +164,7 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; for (uint32_t t = 0; t < numTexToBind; ++t, ++imageInfoCount, ++texIndex) { - if (texIndex >= textureBinding.first.size()) - texIndex = 0; - if (imageInfoCount >= cMAX_IMAGE_INFOS) + if (imageInfoCount >= cMAX_IMAGE_INFOS) { LOGE("Max number (%d) of VkDescriptorImageInfo elements reached!", cMAX_IMAGE_INFOS); assert(0); @@ -180,17 +186,18 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) // Go through the images for (const auto& imageBinding : mImageBindings) { - uint32_t bindingIndex = imageBinding.second.index; - VkDescriptorType bindingType = imageBinding.second.type; + uint32_t setIndex = imageBinding.second.setIndex; + uint32_t bindingIndex = imageBinding.second.setBinding.index; + VkDescriptorType bindingType = imageBinding.second.setBinding.type; assert(bindingType != VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER && bindingType != VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE); // combined image sampler or sampled image should go through mTextureBindings //assert(imageBinding.first.imageLayout == VK_IMAGE_LAYOUT_GENERAL); - uint32_t numImgToBind = imageBinding.second.isArray ? (uint32_t)imageBinding.first.size() : 1; - uint32_t imgIndex = imageBinding.second.isArray ? 0 : (bufferIdx % imageBinding.first.size()); + uint32_t numImgToBind = imageBinding.second.setBinding.isArray ? (uint32_t)imageBinding.first.size() : 1; + uint32_t imgIndex = imageBinding.second.setBinding.isArray ? 0 : (bufferIdx % imageBinding.first.size()); writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[bufferIdx]; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; writeInfo[writeInfoIdx].dstBinding = bindingIndex; writeInfo[writeInfoIdx].dstArrayElement = 0; writeInfo[writeInfoIdx].descriptorCount = numImgToBind; @@ -198,8 +205,6 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; for (uint32_t t = 0; t < numImgToBind; ++t, ++imageInfoCount, ++imgIndex) { - if (imgIndex >= imageBinding.first.size()) - imgIndex = 0; if (imageInfoCount >= cMAX_IMAGE_INFOS) { LOGE("Max number (%d) of VkDescriptorImageInfo elements reached!", cMAX_IMAGE_INFOS); @@ -225,7 +230,7 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) for (const auto& bufferBinding : mBufferBindings) { - bufferInfoCount += bufferBinding.second.isArray ? (uint32_t) bufferBinding.first.size() : 1; + bufferInfoCount += bufferBinding.second.setBinding.isArray ? (uint32_t) bufferBinding.first.size() : 1; } auto* pBufferInfo = bufferInfoFixed.data(); if (bufferInfoCount > cMAX_BUFFER_INFOS) @@ -236,15 +241,16 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) for (const auto& bufferBinding : mBufferBindings) { - uint32_t bindingIndex = bufferBinding.second.index; - VkDescriptorType bindingType = bufferBinding.second.type; + uint32_t setIndex = bufferBinding.second.setIndex; + uint32_t bindingIndex = bufferBinding.second.setBinding.index; + VkDescriptorType bindingType = bufferBinding.second.setBinding.type; - uint32_t numBuffersToBind = bufferBinding.second.isArray ? (uint32_t)bufferBinding.first.size() : 1; - uint32_t bufferIndex = bufferBinding.second.isArray ? 0 : (bufferIdx % bufferBinding.first.size()); + uint32_t numBuffersToBind = bufferBinding.second.setBinding.isArray ? (uint32_t)bufferBinding.first.size() : 1; + uint32_t bufferIndex = bufferBinding.second.setBinding.isArray ? 0 : (bufferIdx % bufferBinding.first.size()); writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[bufferIdx]; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; writeInfo[writeInfoIdx].dstBinding = bindingIndex; writeInfo[writeInfoIdx].dstArrayElement = 0; writeInfo[writeInfoIdx].descriptorCount = numBuffersToBind; @@ -253,8 +259,6 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) for (uint32_t t = 0; t < numBuffersToBind; ++t, ++bufferIndex) { - if (bufferIndex >= bufferBinding.first.size()) - bufferIndex = 0; pBufferInfo->buffer = bufferBinding.first[bufferIndex].buffer; pBufferInfo->offset = bufferBinding.first[bufferIndex].offset; pBufferInfo->range = VK_WHOLE_SIZE; @@ -277,11 +281,12 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) for (const auto& accelerationBinding : mAccelerationStructureBindings) { - uint32_t bindingIndex = accelerationBinding.second.index; - VkDescriptorType bindingType = accelerationBinding.second.type; + uint32_t setIndex = accelerationBinding.second.setIndex; + uint32_t bindingIndex = accelerationBinding.second.setBinding.index; + VkDescriptorType bindingType = accelerationBinding.second.setBinding.type; - uint32_t numAccelToBind = accelerationBinding.second.isArray ? (uint32_t)accelerationBinding.first.size() : 1; - uint32_t accelIndex = accelerationBinding.second.isArray ? 0 : (bufferIdx < accelerationBinding.first.size() ? bufferIdx : 0); + uint32_t numAccelToBind = accelerationBinding.second.setBinding.isArray ? (uint32_t)accelerationBinding.first.size() : 1; + uint32_t accelIndex = accelerationBinding.second.setBinding.isArray ? 0 : (bufferIdx < accelerationBinding.first.size() ? bufferIdx : 0); if (writeInfoIdx >= cMAX_WRITES) { @@ -304,7 +309,7 @@ bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; writeInfo[writeInfoIdx].descriptorType = bindingType;//VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[bufferIdx]; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; writeInfo[writeInfoIdx].dstBinding = bindingIndex; writeInfo[writeInfoIdx].dstArrayElement = 0; writeInfo[writeInfoIdx].descriptorCount = accelerationStructureInfo[accelerationStructureCount].accelerationStructureCount; @@ -332,32 +337,37 @@ bool MaterialPass::UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::str uint32_t writeInfoIdx = 0; uint32_t imageInfoCount = 0; - const auto& descriptorSet = GetVkDescriptorSet(bufferIdx); - const auto& passLayout = mShaderPass.GetDescriptorSetLayouts()[0]; - const auto& nameToBinding = passLayout.GetNameToBinding(); - const auto bindingIt = nameToBinding.find(bindingName); - if (bindingIt != nameToBinding.end()) - { - VkDescriptorType bindingType = bindingIt->second.type; - assert(bindingType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || bindingType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE); - - uint32_t bindingIndex = bindingIt->second.index; - - writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = descriptorSet; - writeInfo[writeInfoIdx].dstBinding = bindingIndex; - writeInfo[writeInfoIdx].dstArrayElement = 0; - writeInfo[writeInfoIdx].descriptorCount = 1; - writeInfo[writeInfoIdx].pBufferInfo = nullptr; - writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; - imageInfo[imageInfoCount] = newTexture.GetVkDescriptorImageInfo(); - - ++imageInfoCount; - ++writeInfoIdx; - - vkUpdateDescriptorSets(mVulkan.m_VulkanDevice, writeInfoIdx, writeInfo.data(), 0, NULL); - } - return true; + for (int setIdx = 0; const auto & setLayout : mShaderPass.GetDescriptorSetLayouts()) + { + const auto& nameToBinding = setLayout.GetNameToBinding(); + const auto bindingIt = nameToBinding.find( bindingName ); + if (bindingIt != nameToBinding.end()) + { + const auto& descriptorSet = GetVkDescriptorSet( bufferIdx, setIdx ); + VkDescriptorType bindingType = bindingIt->second.type; + assert( bindingType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || bindingType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ); + + uint32_t bindingIndex = bindingIt->second.index; + + writeInfo[writeInfoIdx].descriptorType = bindingType; + writeInfo[writeInfoIdx].dstSet = descriptorSet; + writeInfo[writeInfoIdx].dstBinding = bindingIndex; + writeInfo[writeInfoIdx].dstArrayElement = 0; + writeInfo[writeInfoIdx].descriptorCount = 1; + writeInfo[writeInfoIdx].pBufferInfo = nullptr; + writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; + imageInfo[imageInfoCount] = newTexture.GetVkDescriptorImageInfo(); + + ++imageInfoCount; + ++writeInfoIdx; + + vkUpdateDescriptorSets( mVulkan.m_VulkanDevice, writeInfoIdx, writeInfo.data(), 0, NULL ); + return true; + } + ++setIdx; + } + assert( 0 && "Binding name not found" ); + return false; } diff --git a/framework/code/material/material.hpp b/framework/code/material/material.hpp index 7a12c87..30572ed 100644 --- a/framework/code/material/material.hpp +++ b/framework/code/material/material.hpp @@ -169,17 +169,23 @@ class MaterialPass typedef std::vector tPerFrameTexInfo; typedef std::vector tPerFrameImageInfo; + struct MaterialDescriptorBinding { + uint32_t setIndex; ///< descriptor set index + DescriptorSetLayout::BindingTypeAndIndex setBinding; ///< binding within the descriptor set + }; + typedef std::vector tPerFrameVkAccelerationStructure; - typedef std::vector > tTextureBindings; - typedef std::vector > tImageBindings; - typedef std::vector > tBufferBindings; - typedef std::vector > tAccelerationStructureBindings; + typedef std::vector > tTextureBindings; + typedef std::vector > tImageBindings; + typedef std::vector > tBufferBindings; + typedef std::vector > tAccelerationStructureBindings; MaterialPass(Vulkan& vulkan, const ShaderPass&, VkDescriptorPool&&, std::vector&&, std::vector&&, tTextureBindings&&, tImageBindings&&, tBufferBindings&&, tAccelerationStructureBindings&&, SpecializationConstants&&); ~MaterialPass(); /// Get the descriptor set for the (numbered) frame buffer index, allows for a single descriptor set identical for all frames if required. - const auto& GetVkDescriptorSet(uint32_t bufferIndex) const { return mDescriptorSets[mDescriptorSets.size() > 1 ? bufferIndex : 0]; } + const auto& GetVkDescriptorSet(uint32_t bufferIndex, int32_t setIndex) const { return mDescriptorSets[(bufferIndex % mNumBuffers)* mNumDescriptorSetsPerBuffer + setIndex]; } + const std::span GetVkDescriptorSets( uint32_t bufferIndex ) const { return {&mDescriptorSets[(bufferIndex % mNumBuffers) * mNumDescriptorSetsPerBuffer], mNumDescriptorSetsPerBuffer}; } const auto& GetVkDescriptorSets() const { return mDescriptorSets; } const auto& GetPipelineLayout() const { return mDynamicPipelineLayout; } const auto& GetSpecializationConstants() const { return mSpecializationConstants; }; @@ -195,9 +201,13 @@ class MaterialPass protected: Vulkan& mVulkan; + // Helpers for size of mDescriptorSets + const uint32_t mNumDescriptorSetsPerBuffer; ///< number of descriptor sets needed by the shader(pass). Usually 1 but some shaders will use more then one secriptor set. + const uint32_t mNumBuffers; ///< Number of buffers worth of descriptors (may be 1, or number of framebuffers, or something else) + // Vulkan objects VkDescriptorPool mDescriptorPool; - std::vector mDescriptorSets; ///< array of descriptor sets (usually one or one per NUM_VULKAN_BUFFERS) + std::vector mDescriptorSets; ///< array of descriptor sets (mNumDescriptorSetsPerBuffer * mNumBuffers)) std::vector mDynamicDescriptorSetLayouts;///< array of descriptor set layouts specific for to this materialPass (usually they are shared across all materials with a specific shader, except in the case of descriptor sets that are 'dynamically' sized to fit the material specific contents) PipelineLayout mDynamicPipelineLayout; ///< pipeline layout specific to this materiaPass (usually shaderPass contains the pipeline layout but for materials with 'dynamic' descriptor set layouts we have to have a unique pipeline per materialPass SpecializationConstants mSpecializationConstants; ///< block of specialization constants for this material pass diff --git a/framework/code/material/materialManager.cpp b/framework/code/material/materialManager.cpp index 4bf4c19..26d44b9 100644 --- a/framework/code/material/materialManager.cpp +++ b/framework/code/material/materialManager.cpp @@ -42,7 +42,7 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( const std::vector& descriptorSetLayouts = shaderPass.GetDescriptorSetLayouts(); // Copy the Vulkan descriptor set layout handles from our descriptor set layout class. - // There may be 'null' handles in here - denoting descriptor set layouts with 'dynamic' descriptorCount that needs to be calculated from the textureLoader functions. + // There may be 'null' layouts in here - denoting descriptor set layouts with 'dynamic' descriptorCount that needs to be calculated from the textureLoader functions. // We will fill in any blank entries. std::vector vkDescSetLayouts; vkDescSetLayouts.reserve(descriptorSetLayouts.size()); @@ -73,13 +73,12 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( vkBindings = descSetLayout.GetVkDescriptorSetLayoutBinding(); } - const auto& layoutBindingsArray = descSetLayout.GetVkDescriptorSetLayoutBinding(); for (const auto& bindingNames : descSetLayout.GetNameToBinding()) { uint32_t descriptorCount = 0; const std::string& bindingName = bindingNames.first; - const DescriptorSetLayout::BindingTypeAndIndex& binding = bindingNames.second; - switch (binding.type) + const MaterialPass::MaterialDescriptorBinding binding{uint32_t(layoutIdx)/*set index*/, bindingNames.second}; + switch (binding.setBinding.type) { case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: @@ -142,9 +141,9 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( } // Fill in descriptor count if 'dynamically sized' - if (!vkBindings.empty() && vkBindings[binding.index].descriptorCount == 0) + if (!vkBindings.empty() && vkBindings[binding.setBinding.index].descriptorCount == 0) { - vkBindings[binding.index].descriptorCount = descriptorCount; + vkBindings[binding.setBinding.index].descriptorCount = descriptorCount; } } @@ -194,11 +193,11 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( } VkDescriptorPool descriptorPool = VK_NULL_HANDLE; - if (poolSizeTotal > 0) + //if (poolSizeTotal > 0) ok to make a pool with size zero (expected if a shader has a descriptor set with no entries) { VkDescriptorPoolCreateInfo poolInfo{ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO }; //PoolInfo.flags = 0; // VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT to allow them to be returned - poolInfo.maxSets = numFrameBuffers; // Since descriptor sets come out of this pool we need more than one + poolInfo.maxSets = numFrameBuffers * descriptorSetLayouts.size(); // Descriptor sets also come out of this pool poolInfo.poolSizeCount = (uint32_t)poolSizes.size(); poolInfo.pPoolSizes = poolSizes.data(); if (VK_SUCCESS != vkCreateDescriptorPool(vulkan.m_VulkanDevice, &poolInfo, NULL, &descriptorPool)) @@ -212,7 +211,7 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( // std::vector descriptorSets; - descriptorSets.reserve(numFrameBuffers); // pre-size so memory does not move in emplace_back + descriptorSets.reserve(numFrameBuffers * descriptorSetLayouts.size()); // pre-size so memory does not move in emplace_back if (!descriptorSetLayouts.empty()) { @@ -223,11 +222,12 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( // VkDescriptorSetAllocateInfo descSetInfo = {VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO}; descSetInfo.descriptorPool = descriptorPool; - descSetInfo.descriptorSetCount = (uint32_t) descriptorSetLayouts.size(); + descSetInfo.descriptorSetCount = (uint32_t) vkDescSetLayouts.size(); descSetInfo.pSetLayouts = vkDescSetLayouts.data(); descriptorSets.resize( descriptorSets.size() + descSetInfo.descriptorSetCount, VK_NULL_HANDLE ); VkDescriptorSet* pNewDescriptorSets = &descriptorSets[descriptorSets.size() - descSetInfo.descriptorSetCount]; - if (VK_SUCCESS != vkAllocateDescriptorSets( vulkan.m_VulkanDevice, &descSetInfo, pNewDescriptorSets )) + VkResult result = vkAllocateDescriptorSets( vulkan.m_VulkanDevice, &descSetInfo, pNewDescriptorSets ); + if (result != VK_SUCCESS) { assert(0); } diff --git a/framework/code/material/materialManager.hpp b/framework/code/material/materialManager.hpp index d59d4e9..200a2cc 100644 --- a/framework/code/material/materialManager.hpp +++ b/framework/code/material/materialManager.hpp @@ -44,6 +44,7 @@ class MaterialManager MaterialManager() noexcept {}; public: + virtual ~MaterialManager() {}; typedef std::vector tPerFrameTexInfo; typedef std::vector tPerFrameVkAccelerationStructure; diff --git a/framework/code/material/shader.hpp b/framework/code/material/shader.hpp index a68c5ff..3656b9d 100644 --- a/framework/code/material/shader.hpp +++ b/framework/code/material/shader.hpp @@ -42,6 +42,24 @@ struct GraphicsShaderModuleVertOnly ShaderModuleT& vert; operator const auto& () const { return vert; } }; +/// Reference to a 'mesh' graphics pipeline pairing of a mesh and fragment shader +/// @ingroup Material +template +struct GraphicsMeshShaderModules +{ + ShaderModuleT& mesh; + ShaderModuleT& frag; +}; +/// Reference to a 'task mesh' graphics pipeline pairing of a task, mesh and fragment shader +/// @ingroup Material +template +struct GraphicsTaskMeshShaderModules +{ + ShaderModuleT& task; + ShaderModuleT& mesh; + ShaderModuleT& frag; +}; + /// Reference to a compute shader /// @ingroup Material template @@ -75,7 +93,7 @@ class ShaderModules : m_modules(T( std::forward( m ) )) {} template const T& Get() const{ return std::get( m_modules ); } - const std::variant, GraphicsShaderModuleVertOnly, ComputeShaderModule, RayTracingShaderModules> m_modules; + const std::variant, GraphicsShaderModuleVertOnly, GraphicsMeshShaderModules, GraphicsTaskMeshShaderModules, ComputeShaderModule, RayTracingShaderModules> m_modules; }; diff --git a/framework/code/material/shaderDescription.cpp b/framework/code/material/shaderDescription.cpp index 2a903a8..11b732e 100644 --- a/framework/code/material/shaderDescription.cpp +++ b/framework/code/material/shaderDescription.cpp @@ -33,6 +33,30 @@ ShaderPassDescription::ShaderPassDescription(std::vector setDescriptions, std::vector outputs, std::string taskName, std::string meshName, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, ShaderPassDescription::FixedFunctionSettings fixedFunctionSettings, ShaderPassDescription::SampleShadingSettings sampleShadingSettings, ShaderPassDescription::WorkGroupSettings workGroupSettings, ShaderPassDescription::RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants ) + : m_sets(std::move(setDescriptions)) + , m_outputs(std::move(outputs)) + , m_taskName(std::move(taskName)) + , m_meshName(std::move(meshName)) + , m_computeName(std::move(computeName)) + , m_vertexName(std::move(vertexName)) + , m_fragmentName(std::move(fragmentName)) + , m_rayGenerationName(std::move(rayGenerationName)) + , m_rayClosestHitName(std::move(rayClosestHitName)) + , m_rayAnyHitName(std::move(rayAnyHitName)) + , m_rayMissName(std::move(rayMissName)) + , m_fixedFunctionSettings(std::move(fixedFunctionSettings)) + , m_sampleShadingSettings(std::move(sampleShadingSettings)) + , m_workGroupSettings(std::move(workGroupSettings)) + , m_rayTracingSettings(std::move(rayTracingSettings)) + , m_vertexFormatBindings(std::move(vertexFormatBindings)) + , m_constants(std::move(specializationConstants)) +// , m_vertexInstanceFormatBindings(std::move(vertexInstanceFormatBindings)) { } @@ -59,14 +83,15 @@ struct DescriptorTypeAndReadOnly { bool readOnly = false; }; const static std::map cBufferTypeByName { - {"ImageSampler", {DescriptorSetDescription::DescriptorType::ImageSampler, true}}, - {"ImageSampled", {DescriptorSetDescription::DescriptorType::ImageSampled, true}}, - {"Sampler", {DescriptorSetDescription::DescriptorType::Sampler, true}}, - {"UniformBuffer", {DescriptorSetDescription::DescriptorType::UniformBuffer, true}}, - {"StorageBuffer", {DescriptorSetDescription::DescriptorType::StorageBuffer, false}}, - {"ImageStorage", {DescriptorSetDescription::DescriptorType::ImageStorage, false}}, - {"InputAttachment", {DescriptorSetDescription::DescriptorType::InputAttachment, true}}, - {"AccelerationStructure", {DescriptorSetDescription::DescriptorType::AccelerationStructure, true}} + {"Unused", {DescriptorSetDescription::DescriptorType::Unused, true}}, + {"ImageSampler", {DescriptorSetDescription::DescriptorType::ImageSampler, true}}, + {"ImageSampled", {DescriptorSetDescription::DescriptorType::ImageSampled, true}}, + {"Sampler", {DescriptorSetDescription::DescriptorType::Sampler, true}}, + {"UniformBuffer", {DescriptorSetDescription::DescriptorType::UniformBuffer, true}}, + {"StorageBuffer", {DescriptorSetDescription::DescriptorType::StorageBuffer, false}}, + {"ImageStorage", {DescriptorSetDescription::DescriptorType::ImageStorage, false}}, + {"InputAttachment", {DescriptorSetDescription::DescriptorType::InputAttachment, true}}, + {"AccelerationStructure", {DescriptorSetDescription::DescriptorType::AccelerationStructure, true}} }; const static std::map cStageFlagBitsByName{ @@ -77,7 +102,9 @@ const static std::map cStageFl {"RayGeneration", DescriptorSetDescription::StageFlag::t::RayGeneration}, {"RayClosestHit", DescriptorSetDescription::StageFlag::t::RayClosestHit}, {"RayAnyHit", DescriptorSetDescription::StageFlag::t::RayAnyHit}, - {"RayMiss", DescriptorSetDescription::StageFlag::t::RayMiss} + {"RayMiss", DescriptorSetDescription::StageFlag::t::RayMiss}, + {"Task", DescriptorSetDescription::StageFlag::t::Task}, + {"Mesh", DescriptorSetDescription::StageFlag::t::Mesh} }; const static std::map cDepthCompareOpByName{ @@ -263,6 +290,8 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass std::vector descriptions; for(const auto& ar: json["Passes"] ) { + std::string taskShader; + std::string meshShader; std::string computeShader; std::string vertexShader; std::string fragmentShader; @@ -291,6 +320,8 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass { // Either Compute or Vertex shader has to be defined, but Fragment is optional. // Or none of the above and Ray Generation has to be defined, but any hit, closest hit and miss are optional + taskShader = el.value().contains( "Task" ) ? (std::string) el.value()["Task"] : std::string(); + meshShader = el.value().contains( "Mesh" ) ? (std::string) el.value()["Mesh"] : std::string(); computeShader = el.value().contains( "Compute" ) ? (std::string) el.value()["Compute"] : std::string(); vertexShader = el.value().contains( "Vertex" ) ? (std::string) el.value()["Vertex"] : std::string(); fragmentShader = el.value().contains( "Fragment" ) ? (std::string) el.value()["Fragment"] : std::string(); @@ -299,9 +330,13 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass rayAnyHitShader = el.value().contains( "RayAnyHit" ) ? (std::string) el.value()["RayAnyHit"] : std::string(); rayMissShader = el.value().contains( "RayMiss" ) ? (std::string) el.value()["RayMiss"] : std::string(); - if (computeShader.empty() && vertexShader.empty() && rayGenerationShader.empty()) + if (meshShader.empty() && computeShader.empty() && fragmentShader.empty() && vertexShader.empty() && rayGenerationShader.empty()) + { + throw std::runtime_error( "must have a Vertex, Compute, Mesh or RayGeneration shader name!" ); + } + if (!taskShader.empty() && meshShader.empty()) { - throw std::runtime_error( "must have a Vertex, Compute or RayGeneration shader name!" ); + throw std::runtime_error( "must have a Mesh shader when a Task is provided !" ); } } else if (el.key().compare( "DescriptorSets" ) == 0) @@ -394,7 +429,10 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass } descriptions.emplace_back( std::move(sets), - std::move(outputs), std::move(computeShader), + std::move(outputs), + std::move(taskShader), + std::move(meshShader), + std::move(computeShader), std::move(vertexShader), std::move(fragmentShader), std::move(rayGenerationShader), diff --git a/framework/code/material/shaderDescription.hpp b/framework/code/material/shaderDescription.hpp index 075fc9c..411d37b 100644 --- a/framework/code/material/shaderDescription.hpp +++ b/framework/code/material/shaderDescription.hpp @@ -95,10 +95,14 @@ class ShaderPassDescription }; ShaderPassDescription( std::vector sets, std::vector outputs, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, FixedFunctionSettings fixedFunctionSettings, SampleShadingSettings sampleShadingSettings, WorkGroupSettings workGroupSettings, RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants); + ShaderPassDescription( std::vector sets, std::vector outputs, std::string taskName, std::string meshName, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, FixedFunctionSettings fixedFunctionSettings, SampleShadingSettings sampleShadingSettings, WorkGroupSettings workGroupSettings, RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants); + ShaderPassDescription(ShaderPassDescription&&) = default; std::vector m_sets; std::vector m_outputs; + std::string m_taskName; ///< Name of the task shader (optional, not valid if m_vertexName or m_fragmentName are set) + std::string m_meshName; ///< Name of the mesh shader (optional, not valid if m_vertexName or m_fragmentName are set), mandatory if task shader is set std::string m_computeName; ///< Name of the compute shader (optional, not valid if m_vertexName or m_fragmentName are set) std::string m_vertexName; ///< Name of the vertex shader used by this shader pass (optional, not valid if m_computeName set) std::string m_fragmentName; ///< Name of the fragment shader used by this shader pass (optional, only valid if m_vertexName set) diff --git a/framework/code/material/shaderManagerT.hpp b/framework/code/material/shaderManagerT.hpp index e43d4f8..6d101de 100644 --- a/framework/code/material/shaderManagerT.hpp +++ b/framework/code/material/shaderManagerT.hpp @@ -104,7 +104,105 @@ bool ShaderManagerT::AddShader(AssetManager& assetManager, const std:: std::optional> shaderModules; - if (!shaderPassDescription.m_vertexName.empty()) + if (shaderPassDescription.m_vertexName.empty() && !shaderPassDescription.m_taskName.empty() && !shaderPassDescription.m_meshName.empty() && !shaderPassDescription.m_fragmentName.empty()) + { + // Create the task ShaderModule + auto taskShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_taskName); + if (taskShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Task)) + { + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase(shaderPassDescription.m_taskName); + success = false; + break; + } + taskShader.first->second = std::move(pShaderModule); + } + auto* pTaskShaderModule = apiCast(taskShader.first->second.get()); + + // Create the mesh ShaderModule + auto meshShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_meshName); + if (meshShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Mesh)) + { + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase(shaderPassDescription.m_meshName); + success = false; + break; + } + meshShader.first->second = std::move(pShaderModule); + } + auto* pMeshShaderModule = apiCast(meshShader.first->second.get()); + + // Create the fragment ShaderModule + auto fragShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_fragmentName); + if (fragShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Fragment)) + { + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase(shaderPassDescription.m_fragmentName); + success = false; + break; + } + fragShader.first->second = std::move(pShaderModule); + } + auto* pFragShaderModule = apiCast(fragShader.first->second.get()); + + shaderModules.emplace(ShaderModules(GraphicsTaskMeshShaderModules{ *pTaskShaderModule, *pMeshShaderModule, *pFragShaderModule })); + } + else if (shaderPassDescription.m_vertexName.empty() && shaderPassDescription.m_taskName.empty() && !shaderPassDescription.m_meshName.empty() && !shaderPassDescription.m_fragmentName.empty()) + { + // Create the mesh ShaderModule + auto meshShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_meshName); + if (meshShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Mesh)) + { + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase(shaderPassDescription.m_meshName); + success = false; + break; + } + meshShader.first->second = std::move(pShaderModule); + } + auto* pMeshShaderModule = apiCast(meshShader.first->second.get()); + + // Create the fragment ShaderModule + auto fragShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_fragmentName); + if (fragShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Fragment)) + { + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase(shaderPassDescription.m_fragmentName); + success = false; + break; + } + fragShader.first->second = std::move(pShaderModule); + } + auto* pFragShaderModule = apiCast(fragShader.first->second.get()); + + shaderModules.emplace(ShaderModules(GraphicsMeshShaderModules{ *pMeshShaderModule, *pFragShaderModule })); + } + else if (!shaderPassDescription.m_vertexName.empty()) { // Create the vertex ShaderModule auto vertShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_vertexName); diff --git a/framework/code/material/shaderModule.hpp b/framework/code/material/shaderModule.hpp index 0e6f09c..69b4089 100644 --- a/framework/code/material/shaderModule.hpp +++ b/framework/code/material/shaderModule.hpp @@ -31,7 +31,7 @@ class ShaderModule ~ShaderModule() {} enum class ShaderType { - Fragment, Vertex, Compute, RayGeneration, RayClosestHit, RayAnyHit, RayMiss + Fragment, Vertex, Compute, RayGeneration, RayClosestHit, RayAnyHit, RayMiss, Task, Mesh }; void Destroy() diff --git a/framework/code/material/vulkan/shaderModule.cpp b/framework/code/material/vulkan/shaderModule.cpp index 62f7f34..2aa8cb0 100644 --- a/framework/code/material/vulkan/shaderModule.cpp +++ b/framework/code/material/vulkan/shaderModule.cpp @@ -100,6 +100,12 @@ bool ShaderModuleT::Load(Vulkan& vulkan, AssetManager& assetManager, con case ShaderType::RayMiss: shaderFileName = &shaderDescription.m_rayMissName; break; + case ShaderType::Mesh: + shaderFileName = &shaderDescription.m_meshName; + break; + case ShaderType::Task: + shaderFileName = &shaderDescription.m_taskName; + break; } assert(shaderFileName!=nullptr); diff --git a/framework/code/memory/vulkan/memoryManager.cpp b/framework/code/memory/vulkan/memoryManager.cpp index 85a30c9..ab118ac 100644 --- a/framework/code/memory/vulkan/memoryManager.cpp +++ b/framework/code/memory/vulkan/memoryManager.cpp @@ -101,7 +101,10 @@ static VkBufferUsageFlags BufferUsageToVk(BufferUsageFlags usage) if ((usage & BufferUsageFlags::Indirect) != 0) vkUsage |= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT; if ((usage & BufferUsageFlags::AccelerationStructure) != 0) + { vkUsage |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR; + vkUsage |= VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT; + } if ((usage & BufferUsageFlags::AccelerationStructureBuild) != 0) vkUsage |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR; if ((usage & BufferUsageFlags::ShaderBindingTable) != 0) diff --git a/framework/code/mesh/instanceGenerator.cpp b/framework/code/mesh/instanceGenerator.cpp index f91a8a6..4eba4fc 100644 --- a/framework/code/mesh/instanceGenerator.cpp +++ b/framework/code/mesh/instanceGenerator.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/mesh/meshLoader.cpp b/framework/code/mesh/meshLoader.cpp index 953a4fa..54b5cc6 100644 --- a/framework/code/mesh/meshLoader.cpp +++ b/framework/code/mesh/meshLoader.cpp @@ -36,7 +36,12 @@ static bool Gltf_WriteWholeFile(std::string*, const std::string&, const std::vec { return false; } - +static bool Gltf_GetFileSize(size_t* output, std::string* error, const std::string& filename, void* vAssetManager) +{ + AssetManager* pAssetManager = (AssetManager*)vAssetManager; + *output = pAssetManager->GetFileSize(filename); + return output != 0; +} bool StubGltfLoadImageDataFunction(tinygltf::Image*, const int, std::string*, std::string*, int, int, const unsigned char*, int, void*) diff --git a/framework/code/system/assetManager.hpp b/framework/code/system/assetManager.hpp index 89bc3f6..45b5b70 100644 --- a/framework/code/system/assetManager.hpp +++ b/framework/code/system/assetManager.hpp @@ -174,6 +174,17 @@ class AssetManager return true; } + size_t GetFileSize(const std::string& portableFileName) + { + AssetHandle* handle = OpenFile(portableFileName, Mode::Read); + if (!handle) + { + return 0; + } + + return FileSize(handle); + } + AssetHandleGuard OpenFile( const std::string& portableFilename ) { auto* fileHandle = OpenFile( portableFilename, Mode::Read ); diff --git a/framework/code/texture/loaderKtx.hpp b/framework/code/texture/loaderKtx.hpp index a73b675..4e8c210 100644 --- a/framework/code/texture/loaderKtx.hpp +++ b/framework/code/texture/loaderKtx.hpp @@ -1,6 +1,5 @@ //============================================================================================================ // -// // Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // @@ -65,18 +64,18 @@ class TextureKtx /// @brief Do the necessary upload etc to go from a cpu texture representation to Vulkan format /// WE EXPECT THERE TO BE A SPECIALIZED IMPLEMENTATION OF THIS TEMPLATE for each supported T_GFXAPI. /// @param textureFile ktx file data we want to load as a vulkan texture - /// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) + /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure template - TextureT LoadKtx(T_GFXAPI& vulkan, const TextureKtxFileWrapper& textureFile, const SamplerT& sampler); + TextureT LoadKtx(T_GFXAPI& vulkan, const TextureKtxFileWrapper& textureFile, SamplerT sampler); /// @brief Load a ktx file and do the necessary upload etc to go from a cpu texture representation to Vulkan format /// WE EXPECT THERE TO BE A SPECIALIZED IMPLEMENTATION OF THIS TEMPLATE for each supported T_GFXAPI. /// @param filename of ktx (or ktx2) format file we want to load as a vulkan texture - /// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) + /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure template - TextureT LoadKtx(T_GFXAPI& vulkan, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler); + TextureT LoadKtx(T_GFXAPI& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler); protected: /// Helper to get the ktx texture pointer (for derived classes) @@ -96,24 +95,3 @@ class TextureKtxT : public TextureKtx static_assert( sizeof( TextureKtxT ) != sizeof( TextureKtx ) ); // Ensure this class template is specialized (and not used as-is) }; - - -//template -//TextureT TextureKtx::LoadKtx( T_GFXAPI&, const TextureKtxFileWrapper& textureFile, const SamplerT& sampler ) -//{ -// assert( 0 && "TextureKtx::LoadKtx called without using function specialization." ); -// return {}; -//} - -/// @brief Load a ktx file and do the necessary upload etc to go from a cpu texture representation to Vulkan format -/// @param filename of ktx (or ktx2) format file we want to load as a vulkan texture -/// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) -/// @returns a &TextureVulkan, will be empty on failure -//template -//TextureT TextureKtx::LoadKtx( T_GFXAPI&, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler ) -//{ -// assert( 0 && "TextureKtx::LoadKtx called without using function specialization." ); -// return {}; -//} - - diff --git a/framework/code/texture/texture.hpp b/framework/code/texture/texture.hpp index ce0dc4e..5e481a2 100644 --- a/framework/code/texture/texture.hpp +++ b/framework/code/texture/texture.hpp @@ -1,12 +1,12 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #pragma once +#include #include #include "textureFormat.hpp" @@ -14,6 +14,8 @@ // Forward declarations class GraphicsApiBase; template class TextureT; +template class ImageT; +template class ImageViewT; template class SamplerT; @@ -54,6 +56,62 @@ class TextureT final : public Texture }; +/// @brief Base class for a image object. +/// Is subclassed for each graphics API. +class Image +{ + Image( const Image& ) = delete; + Image& operator=( const Image& ) = delete; +public: + template using tApiDerived = ImageT; // make apiCast work! +protected: + Image() noexcept {} +}; + + +/// @brief Template for image to be specialized by graphics api. +template +class ImageT final : public Image +{ + ImageT( const ImageT& ) = delete; + ImageT& operator=( const ImageT& ) = delete; +public: + ImageT() noexcept = delete; // template class expected to be specialized + ImageT( ImageT&& ) noexcept = delete; // template class expected to be specialized + ImageT& operator=( ImageT&& ) noexcept = delete; // template class expected to be specialized + + static_assert(sizeof( ImageT ) != sizeof( Image )); // Ensure this class template is specialized (and not used as-is) +}; + + +/// @brief Base class for a image view object. +/// Is subclassed for each graphics API. +class ImageView +{ + ImageView(const ImageView&) = delete; + ImageView& operator=(const ImageView&) = delete; +public: + template using tApiDerived = ImageViewT; // make apiCast work! +protected: + ImageView() noexcept {} +}; + + +/// @brief Template for image view to be specialized by graphics api. +template +class ImageViewT final : public ImageView +{ + ImageViewT(const ImageViewT&) = delete; + ImageViewT& operator=(const ImageViewT&) = delete; +public: + ImageViewT() noexcept = delete; // template class expected to be specialized + ImageViewT( ImageViewT&&) noexcept = delete; // template class expected to be specialized + ImageViewT& operator=( ImageViewT&&) noexcept = delete; // template class expected to be specialized + + static_assert(sizeof(ImageViewT) != sizeof(ImageView)); // Ensure this class template is specialized (and not used as-is) +}; + + /// @brief Base class for a sampler object. /// Is subclassed for each graphics API. class Sampler @@ -136,6 +194,18 @@ enum TEXTURE_FLAGS }; +enum class ImageViewType { + View1D = 0, + View2D = 1, + View3D = 2, + ViewCube = 3, + View1DArray = 4, + View2DArray = 5, + ViewCubeArray = 6, +};; + + + /// Parameters for CreateTextureObject struct CreateTexObjectInfo { @@ -160,11 +230,13 @@ struct CreateSamplerObjectInfo { SamplerAddressMode Mode = SamplerAddressMode::Repeat; SamplerFilter Filter = SamplerFilter::Linear; + SamplerFilter MipFilter = SamplerFilter::Linear; SamplerBorderColor BorderColor = SamplerBorderColor::TransparentBlackFloat; bool UnnormalizedCoordinates = false; float MipBias = 0.0f; float MinLod = 0.0f; float MaxLod = FLT_MAX; + float Anisotropy = 4.0f; }; @@ -202,7 +274,7 @@ std::unique_ptr CreateTextureObject(GraphicsApiBase& gfxApi, const Crea /// Create texture from a memory buffer. template -TextureT CreateTextureFromBuffer( T_GFXAPI& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr, uint32_t extraFlags = 0 ) +TextureT CreateTextureFromBuffer( T_GFXAPI& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr ) { assert( 0 && "Expecting CreateTextureFromBuffer (per graphics api) to be used" ); return {}; @@ -210,10 +282,10 @@ TextureT CreateTextureFromBuffer( T_GFXAPI& gfxApi, const void* pData, /// Create texture (unique_ptr) (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. template -std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr, uint32_t extraFlags = 0 ) +std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr ) { auto pTexture = std::make_unique>(); - *pTexture = std::move( CreateTextureFromBuffer( static_cast( gfxApi ), pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, pName, extraFlags) ); + *pTexture = std::move( CreateTextureFromBuffer( static_cast( gfxApi ), pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, pName ) ); return pTexture; } @@ -222,6 +294,27 @@ std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const template void ReleaseTexture(T_GFXAPI& gfxApi, TextureT*); + +/// Release an image. +/// Must be specialized for the graphics api - will give linker error if called by application code. +template +void ReleaseImage( T_GFXAPI& gfxApi, ImageT* ); + + +/// Create a texture image view +/// Must be specialized for the graphics api - will give linker error if called by application code. +template +ImageViewT CreateImageView( T_GFXAPI& gfxApi, const ImageT< T_GFXAPI>& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t firstFace, ImageViewType viewType ) +{ + assert( 0 && "Expecting CreateImageView (per graphics api) to be used" ); + return {}; +} + +/// Release a texture image view. +/// Must be specialized for the graphics api - will give linker error if called by application code. +template +void ReleaseImageView( T_GFXAPI& gfxApi, ImageViewT* ); + /// Create a texture sampler (with some commonly used parameters) template SamplerT CreateSampler( T_GFXAPI& gfxApi, SamplerAddressMode SamplerMode, SamplerFilter FilterMode, SamplerBorderColor BorderColor, float MipBias ) @@ -229,6 +322,7 @@ SamplerT CreateSampler( T_GFXAPI& gfxApi, SamplerAddressMode SamplerMo CreateSamplerObjectInfo createInfo{}; createInfo.Mode = SamplerMode; createInfo.Filter = FilterMode; + createInfo.MipFilter = FilterMode, createInfo.BorderColor = BorderColor; createInfo.MipBias = MipBias; return CreateSampler( gfxApi, createInfo ); diff --git a/framework/code/texture/textureManager.hpp b/framework/code/texture/textureManager.hpp index f06579c..86fb834 100644 --- a/framework/code/texture/textureManager.hpp +++ b/framework/code/texture/textureManager.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -81,7 +81,7 @@ class TextureManager virtual std::unique_ptr CreateTextureObjectView( GraphicsApiBase& gfxApi, const Texture& original, TextureFormat viewFormat ) = 0; /// Create texture from a block of texture data in memory (with correct format, span etc). - virtual std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName, uint32_t extraFlags = 0) = 0; + virtual std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName) = 0; /// Get a 'default' sampler for the given address mode (all other sampler settings assumed to be 'normal' ie linearly sampled etc) virtual const Sampler* const GetSampler( SamplerAddressMode ) const = 0; diff --git a/framework/code/texture/vulkan/loaderKtx.cpp b/framework/code/texture/vulkan/loaderKtx.cpp index 02ca1b6..b979d68 100644 --- a/framework/code/texture/vulkan/loaderKtx.cpp +++ b/framework/code/texture/vulkan/loaderKtx.cpp @@ -1,6 +1,5 @@ //============================================================================================================ // -// // Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // @@ -8,6 +7,7 @@ #include "vulkan/vulkan.hpp" #include "vulkan/TextureFuncts.h" +#include "texture/vulkan/texture.hpp" #include "loaderKtx.hpp" #include // KTX-Software @@ -91,7 +91,7 @@ TextureKtxFileWrapper TextureKtxT::Transcode(TextureKtxFileWrapper&& fil return std::move(fileData); } -TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& fileData, const SamplerT& sampler) +TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& fileData, SamplerT sampler) { auto* const pKtxData = GetKtxTexture(fileData); if (!pKtxData) @@ -117,8 +117,11 @@ TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileW } sUploadingTextureKtxVulkan = nullptr; - VkImageView imageView; - if (!CreateImageView(vulkan, uploadedTexture.image, uploadedTexture.imageFormat, 0, uploadedTexture.levelCount, uploadedTexture.layerCount, uploadedTexture.viewType, &imageView)) + // Take ownership of the image from the container holding images created during ktxTexture_VkUploadEx + ImageT allocatedImage{std::move( m_AllocatedImages.extract( m_AllocatedImages.find( uploadedTexture.image ) ).value() )}; + + auto imageView = CreateImageView( vulkan, allocatedImage, VkToTextureFormat(uploadedTexture.imageFormat), uploadedTexture.levelCount, 0, uploadedTexture.layerCount, 0, (ImageViewType) uploadedTexture.viewType ); + if (imageView.IsEmpty()) { ktxVulkanTexture_Destruct(&uploadedTexture, vulkan.m_VulkanDevice, nullptr); return {}; @@ -136,19 +139,17 @@ TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileW TextureFormat textureFormat = VkToTextureFormat(uploadedTexture.imageFormat); - // Take ownership of the image from the container holding images created during ktxTexture_VkUploadEx - auto allocatedImage = std::move(m_AllocatedImages.extract(m_AllocatedImages.find(uploadedTexture.image)).value()); // Return the fully formed texture object - TextureVulkan texture{ uploadedTexture.width, uploadedTexture.height, uploadedTexture.depth, uploadedTexture.levelCount, textureFormat, uploadedTexture.imageLayout, std::move(allocatedImage), sampler, imageView }; + TextureVulkan texture{ uploadedTexture.width, uploadedTexture.height, uploadedTexture.depth, uploadedTexture.levelCount, 0, uploadedTexture.layerCount, 0, textureFormat, uploadedTexture.imageLayout, std::move(allocatedImage), std::move(sampler), std::move(imageView) }; return texture; } -TextureVulkan TextureKtxT::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler ) +TextureVulkan TextureKtxT::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler ) { auto ktxData = LoadFile( assetManager, pFileName ); if (!ktxData) return {}; - return LoadKtx( vulkan, ktxData, sampler ); + return LoadKtx( vulkan, ktxData, std::move(sampler) ); } // Comparison functions so we can look for VkBuffer in a set of MemoryAllocatedBuffer @@ -238,14 +239,14 @@ static bool operator<(const MemoryAllocatedBuffer& a, co /// @brief Function specialization template<> -TextureT TextureKtx::LoadKtx( Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, const SamplerT& sampler ) +TextureT TextureKtx::LoadKtx( Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, SamplerT sampler ) { - return apiCast( this )->LoadKtx( vulkan, textureFile, sampler ); + return apiCast( this )->LoadKtx( vulkan, textureFile, std::move(sampler) ); } /// @brief Function specialization template<> -TextureT TextureKtx::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler ) +TextureT TextureKtx::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler ) { - return apiCast( this )->LoadKtx( vulkan, assetManager, pFileName, sampler ); + return apiCast( this )->LoadKtx( vulkan, assetManager, pFileName, std::move(sampler) ); } diff --git a/framework/code/texture/vulkan/loaderKtx.hpp b/framework/code/texture/vulkan/loaderKtx.hpp index b16cea4..21f41c1 100644 --- a/framework/code/texture/vulkan/loaderKtx.hpp +++ b/framework/code/texture/vulkan/loaderKtx.hpp @@ -1,6 +1,5 @@ //============================================================================================================ // -// // Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // @@ -46,15 +45,15 @@ class TextureKtxT : public TextureKtx /// @brief Do the necessary upload etc to go from a cpu texture representation to Vulkan format /// @param textureFile ktx file data we want to load as a vulkan texture - /// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) + /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure - TextureVulkan LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, const SamplerT& sampler); + TextureVulkan LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, SamplerT sampler); /// @brief Load a ktx file and do the necessary upload etc to go from a cpu texture representation to Vulkan format /// @param filename of ktx (or ktx2) format file we want to load as a vulkan texture - /// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) + /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure - TextureVulkan LoadKtx(Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler); + TextureVulkan LoadKtx(Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler); /// @brief Run the Ktx2 transcoding step (if needed) /// Will do nothing for textures that do not need transcoding. diff --git a/framework/code/texture/vulkan/texture.cpp b/framework/code/texture/vulkan/texture.cpp index 11a4522..5a593f9 100644 --- a/framework/code/texture/vulkan/texture.cpp +++ b/framework/code/texture/vulkan/texture.cpp @@ -1,20 +1,23 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #include "memory/vulkan/memoryMapped.hpp" #include "texture.hpp" #include "imageWrapper.hpp" #include "vulkan/vulkan.hpp" -constexpr VkFilter EnumToVk(SamplerFilter s) { assert(s != SamplerFilter::Undefined); return VkFilter(int(s) - 1); } +VkFilter EnumToVk(SamplerFilter s) { assert(s != SamplerFilter::Undefined); return VkFilter(int( s ) - 1); } static_assert(VK_FILTER_NEAREST == int(SamplerFilter::Nearest) - 1); static_assert(VK_FILTER_LINEAR == int(SamplerFilter::Linear) - 1); +VkSamplerMipmapMode EnumToVkSamplerMipmapMode(SamplerFilter s) { assert(s != SamplerFilter::Undefined); return VkSamplerMipmapMode(int(s) - 1); } +static_assert(VK_SAMPLER_MIPMAP_MODE_NEAREST == int(SamplerFilter::Nearest) - 1); +static_assert(VK_SAMPLER_MIPMAP_MODE_LINEAR == int(SamplerFilter::Linear) - 1); + constexpr VkSamplerAddressMode EnumToVk(SamplerAddressMode s) { assert(s != SamplerAddressMode::Undefined); return VkSamplerAddressMode(int(s) - 1); } static_assert(VK_SAMPLER_ADDRESS_MODE_REPEAT == int(SamplerAddressMode::Repeat) -1); static_assert(VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT == int(SamplerAddressMode::MirroredRepeat) - 1); @@ -31,20 +34,21 @@ static_assert(VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE == int(SamplerBorderColor::Opaq static_assert(VK_BORDER_COLOR_INT_OPAQUE_WHITE == int(SamplerBorderColor::OpaqueWhiteInt)); -TextureT::TextureT() noexcept : VmaImage() +TextureT::TextureT() noexcept {} -TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, TextureFormat format, VkImageLayout imageLayout, MemoryAllocatedBuffer vmaImage, const SamplerT& sampler, VkImageView imageView) noexcept +TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, ImageT image, SamplerT sampler, ImageViewT imageView) noexcept : Texture() , Width(width) , Height(height) , Depth(depth) , MipLevels(mipLevels) + , Faces(faces) , Format(format) , ImageLayout(imageLayout) - , VmaImage(std::move(vmaImage)) - , Sampler(sampler) - , ImageView(imageView) + , Image(std::move(image)) + , Sampler(std::move(sampler)) + , ImageView(std::move(imageView)) { } @@ -52,19 +56,20 @@ TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint /// @param image - ownership NOT passed in to this TextureT, beware of lifetime issues. /// @param sampler - ownership passed to this TextureT. /// @param imageView - ownership passed to this TextureT. -TextureT::TextureT(uint32_t width, uint32_t height, uint32_t mipLevels, uint32_t firstMip, TextureFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, const SamplerT& sampler, VkImageView imageView) noexcept +TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, SamplerT sampler, ImageViewT imageView) noexcept : Texture() , Width(width) , Height(height) - , Depth(1) - , MipLevels(mipLevels) - , FirstMip(firstMip) + , Depth(depth) + , MipLevels( mipLevels ) + , FirstMip( firstMip ) + , Faces( faces) + , FirstFace( firstFace ) , Format(format) , ImageLayout(imageLayout) - , Sampler(sampler) - , ImageView(imageView) - , Image(image) - , Memory(memory) + , Sampler(std::move(sampler)) + , ImageView(std::move(imageView)) + , Image({image, memory}) { } @@ -86,18 +91,14 @@ TextureT& TextureT::operator=(TextureT&& other) noexcept Depth = other.Depth; MipLevels = other.MipLevels; FirstMip = other.FirstMip; + Faces = other.Faces; + FirstFace = other.FirstFace; Format = other.Format; ImageLayout = other.ImageLayout; // Actually transfer ownership from 'other' - VmaImage = std::move(other.VmaImage); - Sampler = other.Sampler; - other.Sampler = VK_NULL_HANDLE; - ImageView = other.ImageView; - other.ImageView = VK_NULL_HANDLE; - Image = other.Image; - other.Image = VK_NULL_HANDLE; - Memory = other.Memory; - other.Memory = VK_NULL_HANDLE; + Image = std::move(other.Image); + Sampler = std::move(other.Sampler); + ImageView = std::move(other.ImageView); } return *this; } @@ -105,32 +106,22 @@ TextureT& TextureT::operator=(TextureT&& other) noexcept TextureT::~TextureT() noexcept { // Asserts to ensure we called ReleaseTexture on this already. - assert(!VmaImage); + assert(Image.IsEmpty()); + assert(ImageView.IsEmpty()); assert(Sampler.IsEmpty()); - assert(ImageView == VK_NULL_HANDLE); } void TextureT::Release(GraphicsApiBase* pGraphicsApi) { auto* pVulkan = static_cast(pGraphicsApi); - if (ImageView != VK_NULL_HANDLE) - vkDestroyImageView(pVulkan->m_VulkanDevice, ImageView, NULL); - ImageView = VK_NULL_HANDLE; + ReleaseSampler( *pVulkan, &Sampler ); - //if (Sampler != VK_NULL_HANDLE) - // vkDestroySampler(pVulkan->m_VulkanDevice, Sampler, NULL); - //Sampler = VK_NULL_HANDLE; - Sampler = {}; + ReleaseImageView(*pVulkan, &ImageView); - if (VmaImage) - pVulkan->GetMemoryManager().Destroy(std::move(VmaImage)); - - Image = VK_NULL_HANDLE; - Memory = VK_NULL_HANDLE; + ReleaseImage(*pVulkan, &Image); } - static_assert(int(SamplerAddressMode::Repeat) == VK_SAMPLER_ADDRESS_MODE_REPEAT + 1); static_assert(int(SamplerAddressMode::MirroredRepeat) == VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT + 1); static_assert(int(SamplerAddressMode::ClampEdge) == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE + 1); @@ -147,6 +138,16 @@ static_assert(int(SamplerBorderColor::OpaqueBlackInt) == VK_BORDER_COLOR_INT_OPA static_assert(int(SamplerBorderColor::OpaqueWhiteFloat) == VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE); static_assert(int(SamplerBorderColor::OpaqueWhiteInt) == VK_BORDER_COLOR_INT_OPAQUE_WHITE); +constexpr VkImageViewType EnumToVk(ImageViewType t) { return VkImageViewType(int( t )); } +constexpr ImageViewType VkToEnum(VkImageViewType t) { return ImageViewType( int( t ) ); } +static_assert(int(ImageViewType::View1D) == VK_IMAGE_VIEW_TYPE_1D); +static_assert(int( ImageViewType::View2D ) == VK_IMAGE_VIEW_TYPE_2D); +static_assert(int( ImageViewType::View3D ) == VK_IMAGE_VIEW_TYPE_3D); +static_assert(int( ImageViewType::ViewCube ) == VK_IMAGE_VIEW_TYPE_CUBE); +static_assert(int( ImageViewType::View1DArray ) == VK_IMAGE_VIEW_TYPE_1D_ARRAY); +static_assert(int( ImageViewType::View2DArray ) == VK_IMAGE_VIEW_TYPE_2D_ARRAY); +static_assert(int( ImageViewType::ViewCubeArray ) == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY); + static constexpr std::array sTextureFormatToVk { VK_FORMAT_UNDEFINED, VK_FORMAT_R4G4_UNORM_PACK8, @@ -548,17 +549,18 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje if ((texInfo.Flags & TEXTURE_FLAGS::ForceLinearTiling) != 0) ImageInfo.tiling = VK_IMAGE_TILING_LINEAR; - // Need the return image - Wrap_VkImage RetImage; - bool ImageInitialized = RetImage.Initialize(&vulkan, ImageInfo, MemoryUsage, texInfo.pName); - if (!ImageInitialized && MemoryUsage == MemoryUsage::GpuLazilyAllocated) + // Create the Image + auto& memoryManager = vulkan.GetMemoryManager(); + auto VmaImage = memoryManager.CreateImage( ImageInfo, MemoryUsage ); + + if (!VmaImage && MemoryUsage == MemoryUsage::GpuLazilyAllocated) { LOGI("Unable to initialize GpuLazilyAllocated image (probably not supported by GPU hardware). Falling back to GpuExclusive"); MemoryUsage = MemoryUsage::GpuExclusive; ImageInfo.usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - ImageInitialized = RetImage.Initialize(&vulkan, ImageInfo, MemoryUsage, texInfo.pName); + VmaImage = memoryManager.CreateImage( ImageInfo, MemoryUsage ); } - if (!ImageInitialized) + if (!VmaImage) { LOGE("Unable to initialize image (Not from file)"); return {}; @@ -568,24 +570,24 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje switch (texInfo.TexType) { case TT_SHADING_RATE_IMAGE: - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); RetImageLayout = VK_IMAGE_LAYOUT_GENERAL; break; case TT_CPU_UPDATE: - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; break; case TT_NORMAL: - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; break; case TT_RENDER_TARGET: case TT_RENDER_TARGET_WITH_STORAGE: - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; break; case TT_RENDER_TARGET_TRANSFERSRC: - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); RetImageLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; break; case TT_RENDER_TARGET_SUBPASS: @@ -593,19 +595,19 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje break; case TT_COMPUTE_TARGET: case TT_COMPUTE_STORAGE: - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_GENERAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_GENERAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); RetImageLayout = VK_IMAGE_LAYOUT_GENERAL; break; case TT_DEPTH_TARGET: if (FormatHasStencil( texInfo.Format)) { // Can have depth and stencil flag - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); } else if (FormatHasDepth(texInfo.Format)) { // Only has the depth flag set - vulkan.SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); } else { @@ -620,11 +622,16 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje vulkan.FinishSetupCommandBuffer(SetupCmdBuffer); + // Create the Image wrapper (containing the vmaimage) + ImageT Image{ std::move( VmaImage ) }; + vulkan.SetDebugObjectName( Image.GetVkImage(), texInfo.pName ); + // ... and an ImageView + const ImageViewType ViewType = (texInfo.uiDepth == 1) ? ImageViewType::View2D : ImageViewType::View3D; // <== No support for VK_IMAGE_VIEW_TYPE_CUBE VkImageViewCreateInfo ImageViewInfo{ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; ImageViewInfo.flags = 0; - ImageViewInfo.image = RetImage.m_VmaImage.GetVkBuffer(); - ImageViewInfo.viewType = (texInfo.uiDepth == 1) ? VK_IMAGE_VIEW_TYPE_2D : VK_IMAGE_VIEW_TYPE_3D; // <== No support for VK_IMAGE_VIEW_TYPE_CUBE + ImageViewInfo.image = Image.GetVkImage(); + ImageViewInfo.viewType = EnumToVk( ViewType ); ImageViewInfo.format = ImageInfo.format; ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; // VK_COMPONENT_SWIZZLE_R; ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; // VK_COMPONENT_SWIZZLE_G; @@ -634,7 +641,7 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje ImageViewInfo.subresourceRange.baseMipLevel = 0; ImageViewInfo.subresourceRange.levelCount = ImageInfo.mipLevels; ImageViewInfo.subresourceRange.baseArrayLayer = 0; - ImageViewInfo.subresourceRange.layerCount = 1; + ImageViewInfo.subresourceRange.layerCount = ImageInfo.arrayLayers; SamplerAddressMode SamplerMode = texInfo.SamplerMode; @@ -669,6 +676,7 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje { return {}; } + ImageViewT ImageView{RetImageView, ImageViewInfo.viewType}; // LOGI("vkCreateImageView: %s -> %p", pName, RetImageView); @@ -689,7 +697,7 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje return {}; } - return{ texInfo.uiWidth, texInfo.uiHeight, texInfo.uiDepth, texInfo.uiMips, texInfo.Format, RetImageLayout, std::move(RetImage.m_VmaImage), Sampler, RetImageView }; + return{ texInfo.uiWidth, texInfo.uiHeight, texInfo.uiDepth, texInfo.uiMips, 0/*first mip*/, texInfo.uiFaces, 0/*first face*/, texInfo.Format, RetImageLayout, std::move(Image), std::move(Sampler), std::move(ImageView)}; } @@ -697,24 +705,8 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT& original, TextureFormat viewFormat ) //----------------------------------------------------------------------------- { - VkImageView imageView = VK_NULL_HANDLE; - - VkImageViewCreateInfo imageViewCreateInfo{ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; - imageViewCreateInfo.image = original.GetVkImage(); - imageViewCreateInfo.viewType = ( original.Depth == 1 ) ? VK_IMAGE_VIEW_TYPE_2D : VK_IMAGE_VIEW_TYPE_3D; // <== No support for VK_IMAGE_VIEW_TYPE_CUBE - imageViewCreateInfo.format = TextureFormatToVk(viewFormat); - imageViewCreateInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - imageViewCreateInfo.subresourceRange.baseMipLevel = 0; - imageViewCreateInfo.subresourceRange.levelCount = original.MipLevels; - imageViewCreateInfo.subresourceRange.baseArrayLayer = 0; - imageViewCreateInfo.subresourceRange.layerCount = 1; - - auto RetVal = vkCreateImageView( vulkan.m_VulkanDevice, &imageViewCreateInfo, NULL, &imageView ); - if (!CheckVkError( "vkCreateImageView()", RetVal )) + auto imageView = CreateImageView( vulkan, original.Image, viewFormat, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.ImageView.GetImageViewType() ); + if (imageView.IsEmpty()) { return {}; } @@ -725,12 +717,31 @@ TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT return {}; } - return { original.Width, original.Height, original.Depth, original.MipLevels, original.Format, original.GetVkImageLayout(), original.GetVkImage(), VK_NULL_HANDLE, sampler, imageView }; + return { original.Width, original.Height, original.Depth, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.Format, original.GetVkImageLayout(), original.GetVkImage(), VK_NULL_HANDLE, std::move(sampler), std::move(imageView) }; } + +//----------------------------------------------------------------------------- +TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT& original, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace ) +//----------------------------------------------------------------------------- +{ + ImageViewVulkan imageView = CreateImageView( vulkan, original.Image, original.Format, mipLevels, firstMip, faces, firstFace, original.ImageView.GetImageViewType() ); + if (imageView.IsEmpty()) + { + return {}; + } + SamplerVulkan sampler = CreateSampler( vulkan, SamplerAddressMode::ClampEdge, SamplerFilter::Linear, SamplerBorderColor::TransparentBlackFloat, 0.0f ); + if (sampler.IsEmpty()) + { + return {}; + } + return {original.Width, original.Height, original.Depth, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.Format, original.GetVkImageLayout(), original.GetVkImage(), VK_NULL_HANDLE, std::move( sampler ), std::move( imageView )}; +} + + //----------------------------------------------------------------------------- template<> -TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName, uint32_t extraFlags ) +TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) //----------------------------------------------------------------------------- { if (pName == nullptr) @@ -738,11 +749,12 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD else LOGI( "CreateTextureFromBuffer (%dx%d): %s", Width, Height, pName ); + auto& memorymanager = vulkan.GetMemoryManager(); + uint32_t Faces = 1; uint32_t MipLevels = 1; VkFormat vkFormat = TextureFormatToVk( Format ); VkImageUsageFlags FinalUsage = ( VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT ); - FinalUsage |= (VkImageUsageFlags)extraFlags; VkImageLayout FinalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; // Image creation info. Will change below based on need @@ -770,7 +782,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD const auto& GetImage( uint32_t depth, uint32_t mip ) const { return images[depth * mipsPerDepthSlice]; } auto& GetImage( uint32_t depth, uint32_t mip ) { return images[depth * mipsPerDepthSlice + mip]; } const uint32_t mipsPerDepthSlice; - std::vector images; + std::vector> images; }; // Allocate the depth slices (and contained mips) for each face @@ -810,8 +822,9 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD ImageInfo.extent.height = Height; ImageInfo.extent.depth = 1; - Wrap_VkImage& faceImage = cubeFaces[WhichFace].GetImage( WhichDepth, WhichMip ); - if (!faceImage.Initialize( &vulkan, ImageInfo, MemoryUsage::CpuToGpu )) + MemoryAllocatedBuffer& faceImage = cubeFaces[WhichFace].GetImage( WhichDepth, WhichMip ); + faceImage.operator=( std::move( memorymanager.CreateImage( ImageInfo, MemoryUsage::CpuToGpu ) ) ); + if (!faceImage) { LOGE( "CreateTextureFromBuffer: Unable to initialize mip %d of face %d", WhichMip + 1, WhichFace + 1 ); return {}; @@ -824,12 +837,10 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD SubresInfo.arrayLayer = 0; VkSubresourceLayout SubResLayout = {}; - auto& faceImageMem = faceImage.m_VmaImage; - vkGetImageSubresourceLayout( vulkan.m_VulkanDevice, faceImageMem.GetVkBuffer(), &SubresInfo, &SubResLayout ); + vkGetImageSubresourceLayout( vulkan.m_VulkanDevice, faceImage.GetVkBuffer(), &SubresInfo, &SubResLayout ); { - auto& memorymanager = vulkan.GetMemoryManager(); - auto mappedMemory = memorymanager.Map( faceImageMem ); + auto mappedMemory = memorymanager.Map( faceImage ); if (SubResLayout.rowPitch == Width * formatBytesPerPixel) { memcpy( mappedMemory.data(), pData8, SubResLayout.size ); @@ -845,7 +856,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD pData8 += Width * formatBytesPerPixel; } } - memorymanager.Unmap( faceImageMem, std::move( mappedMemory ) ); + memorymanager.Unmap( faceImage, std::move( mappedMemory ) ); } // Image barrier for linear image (base) @@ -855,7 +866,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD uint32_t baseMipLevel = 0; uint32_t mipLevelCount = 1; - vulkan.SetImageLayout( faceImageMem.GetVkBuffer(), + vulkan.SetImageLayout( faceImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_PREINITIALIZED, @@ -888,9 +899,9 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD ImageInfo.arrayLayers = Faces; - // Need the return image - Wrap_VkImage RetImage; - if (!RetImage.Initialize( &vulkan, ImageInfo, MemoryUsage::GpuExclusive )) + // Create the 'final' image + auto FinalVmaImage = memorymanager.CreateImage( ImageInfo, MemoryUsage::GpuExclusive ); + if (!FinalVmaImage) { LOGE( "CreateTextureFromBuffer: Unable to initialize texture image" ); return {}; @@ -905,7 +916,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD uint32_t baseLayer = 0; uint32_t layerCount = Faces; - vulkan.SetImageLayout( RetImage.m_VmaImage.GetVkBuffer(), + vulkan.SetImageLayout( FinalVmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_PREINITIALIZED, @@ -955,8 +966,8 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD // Put image copy into command buffer vkCmdCopyImage( SetupCmdBuffer, - cubeFaces[WhichFace].GetImage( WhichDepth, WhichMip ).m_VmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - RetImage.m_VmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + cubeFaces[WhichFace].GetImage( WhichDepth, WhichMip ).GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + FinalVmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ©Region ); } // Each mipmap in each depth slice } // Each depth slice in each face @@ -970,7 +981,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD baseLayer = 0; layerCount = Faces; - vulkan.SetImageLayout( RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, FinalLayout, + vulkan.SetImageLayout( FinalVmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, FinalLayout, srcMask, dstMask, baseMipLevel, @@ -981,24 +992,27 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD // Submit the command buffer we have been working on vulkan.FinishSetupCommandBuffer( SetupCmdBuffer ); + // Create the Image wrapper (takes ownership of FinalVmaImage) + ImageT Image{ std::move(FinalVmaImage) }; + // Need a sampler... - SamplerVulkan Sampler = CreateSampler( vulkan, SamplerMode, Filter, SamplerBorderColor::TransparentBlackFloat, 0.0f ); - if (Sampler.IsEmpty()) + SamplerVulkan sampler = CreateSampler( vulkan, SamplerMode, Filter, SamplerBorderColor::TransparentBlackFloat, 0.0f ); + if (sampler.IsEmpty()) { return {}; } - VkImageViewType viewType; + ImageViewType viewType; if (Depth > 1) - viewType = VK_IMAGE_VIEW_TYPE_3D; + viewType = ImageViewType::View3D; else if (Faces == 6) - viewType = VK_IMAGE_VIEW_TYPE_CUBE; + viewType = ImageViewType::ViewCube; else - viewType = VK_IMAGE_VIEW_TYPE_2D; - VkImageView RetImageView; - if (!CreateImageView(vulkan, RetImage.m_VmaImage.GetVkBuffer(), vkFormat, baseMipLevel, MipLevels, Faces, viewType, &RetImageView)) + viewType = ImageViewType::View2D; + ImageViewVulkan imageView = CreateImageView( vulkan, Image, Format, MipLevels, baseMipLevel, layerCount, baseLayer, viewType ); + if (imageView.IsEmpty()) { - ReleaseSampler(vulkan, &Sampler); + ReleaseSampler(vulkan, &sampler); return {}; } @@ -1006,77 +1020,158 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD cubeFaces.clear(); // Set the return values - TextureVulkan RetTex{ Width, Height, Depth, MipLevels, Format, FinalLayout, std::move( RetImage.m_VmaImage ), Sampler, RetImageView }; - return RetTex; + return { Width, Height, Depth, MipLevels, 0/*firstmip*/, Faces, 0/*firstface*/, Format, FinalLayout, std::move(Image), std::move(sampler), std::move(imageView)}; +} + +//----------------------------------------------------------------------------- +template<> +void ReleaseTexture( Vulkan& vulkan, TextureT* pTexture ) +//----------------------------------------------------------------------------- +{ + if (!pTexture) + return; + pTexture->Release( &vulkan ); + *pTexture = TextureT{}; // destroy and clear } +//----------------------------------------------------------------------------- +ImageT::ImageT( MemoryAllocatedBuffer vmaImage ) noexcept : VmaImage( std::move(vmaImage) ) +//----------------------------------------------------------------------------- +{} + +//----------------------------------------------------------------------------- +ImageT::ImageT( VkImage image, VkDeviceMemory memory ) noexcept : VmaImage(), Image(image)/*no change of ownership*/, Memory(memory)/*no change of ownership*/ +//----------------------------------------------------------------------------- +{} + +//----------------------------------------------------------------------------- +ImageT::~ImageT() +//----------------------------------------------------------------------------- +{ + assert( !VmaImage ); // expecting ReleaseImage to have been called already (and so this is empty) + Image = VK_NULL_HANDLE; + Memory = VK_NULL_HANDLE; +} + +//----------------------------------------------------------------------------- +template<> +void ReleaseImage( Vulkan& vulkan, ImageT* pImage ) +//----------------------------------------------------------------------------- +{ + if (pImage->VmaImage) + vulkan.GetMemoryManager().Destroy( std::move( pImage->VmaImage ) ); + + // We dont own Image or Memory, so just clear them! + pImage->Image = VK_NULL_HANDLE; + pImage->Memory = VK_NULL_HANDLE; + + *pImage = ImageT{}; // destroy and clear +} + + +//----------------------------------------------------------------------------- +ImageViewT::ImageViewT( VkImageView imageView, VkImageViewType viewType ) noexcept : m_ImageView( imageView ), m_ImageViewType( VkToEnum(viewType) ) +//----------------------------------------------------------------------------- +{} + +//----------------------------------------------------------------------------- +ImageViewT::~ImageViewT() +//----------------------------------------------------------------------------- +{ + assert( m_ImageView == VK_NULL_HANDLE ); +} + //----------------------------------------------------------------------------- /// Create a vulkan image view object -bool CreateImageView(Vulkan& vulkan, VkImage image, VkFormat format, uint32_t baseMipLevel, uint32_t numMipLevels, uint32_t numFaces, VkImageViewType viewType, VkImageView* pRetImageView) +template<> +ImageViewT CreateImageView(Vulkan& vulkan, const ImageT& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t baseFace, ImageViewType viewType ) //----------------------------------------------------------------------------- { - assert(pRetImageView); VkImageViewCreateInfo ImageViewInfo{ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; ImageViewInfo.flags = 0; - ImageViewInfo.image = image; - ImageViewInfo.viewType = viewType; - - ImageViewInfo.format = format; - ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_R; - ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_G; - ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_B; - ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_A; + ImageViewInfo.image = image.GetVkImage(); + ImageViewInfo.viewType = EnumToVk(viewType); + + ImageViewInfo.format = TextureFormatToVk(format); + ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; + ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; + ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; + ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; ImageViewInfo.subresourceRange.baseMipLevel = baseMipLevel; ImageViewInfo.subresourceRange.levelCount = numMipLevels; - ImageViewInfo.subresourceRange.baseArrayLayer = 0; - ImageViewInfo.subresourceRange.layerCount = 1; - if (numFaces == 6) - ImageViewInfo.subresourceRange.layerCount = 6; - else - ImageViewInfo.subresourceRange.layerCount = 1; + ImageViewInfo.subresourceRange.baseArrayLayer = baseFace; + ImageViewInfo.subresourceRange.layerCount = numFaces; - auto RetVal = vkCreateImageView(vulkan.m_VulkanDevice, &ImageViewInfo, NULL, pRetImageView); + VkImageView imageView; + auto RetVal = vkCreateImageView(vulkan.m_VulkanDevice, &ImageViewInfo, NULL, &imageView); if (!CheckVkError("vkCreateImageView()", RetVal)) { - return false; + return {}; } - return true; + return { imageView, ImageViewInfo.viewType }; } -// Implementation of template function specialization +//----------------------------------------------------------------------------- template<> -void ReleaseTexture( Vulkan& vulkan, TextureT* pTexture ) +void ReleaseImageView( Vulkan& vulkan, ImageViewT* pImageView ) +//----------------------------------------------------------------------------- { - if (!pTexture) + if (!pImageView || pImageView->IsEmpty()) return; - pTexture->Release( &vulkan ); - *pTexture = TextureT{}; // destroy and clear + vkDestroyImageView( vulkan.m_VulkanDevice, pImageView->m_ImageView, nullptr ); + pImageView->m_ImageView = VK_NULL_HANDLE; + pImageView->m_ImageViewType = ImageViewType::View1D; } +// +// Constructors/move-operators for SamplerT. +// +SamplerT::SamplerT() noexcept : m_Sampler( VK_NULL_HANDLE ) +{} +SamplerT::~SamplerT() noexcept +{ +} +SamplerT::SamplerT(VkSampler sampler) noexcept : m_Sampler( sampler ) +{} +SamplerT::SamplerT(SamplerT&& src) noexcept +{ + *this = std::move( src ); +} +SamplerT& SamplerT::operator=(SamplerT&& src ) noexcept +{ + if (this != &src) + { + m_Sampler = src.m_Sampler; + src.m_Sampler = VK_NULL_HANDLE; + } + return *this; +} -// Implementation of template function specialization + +//----------------------------------------------------------------------------- template<> SamplerT CreateSampler(Vulkan& vulkan, const CreateSamplerObjectInfo& createInfo) +//----------------------------------------------------------------------------- { - const bool anisotropyEnable = createInfo.Filter == SamplerFilter::Linear; + const bool anisotropyEnable = createInfo.Anisotropy > 1.0f && createInfo.Filter == SamplerFilter::Linear; const VkSamplerCreateInfo SamplerInfo{ .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, .flags = 0, .magFilter = EnumToVk(createInfo.Filter), .minFilter = EnumToVk(createInfo.Filter), - .mipmapMode = createInfo.Filter == SamplerFilter::Linear ? VK_SAMPLER_MIPMAP_MODE_LINEAR : VK_SAMPLER_MIPMAP_MODE_NEAREST, + .mipmapMode = EnumToVkSamplerMipmapMode(createInfo.MipFilter), .addressModeU = EnumToVk(createInfo.Mode), .addressModeV = EnumToVk(createInfo.Mode), .addressModeW = EnumToVk(createInfo.Mode), .mipLodBias = createInfo.MipBias, .anisotropyEnable = anisotropyEnable ? VK_TRUE : VK_FALSE, - .maxAnisotropy = anisotropyEnable == VK_TRUE ? 4.0f : 1.0f, + .maxAnisotropy = anisotropyEnable == VK_TRUE ? createInfo.Anisotropy : 1.0f, .compareEnable = VK_FALSE, .compareOp = VK_COMPARE_OP_NEVER, - .minLod = 0.0f, - .maxLod = FLT_MAX, + .minLod = createInfo.MinLod, + .maxLod = createInfo.MaxLod, .borderColor = EnumToVk(createInfo.BorderColor), .unnormalizedCoordinates = createInfo.UnnormalizedCoordinates ? VK_TRUE : VK_FALSE }; @@ -1087,12 +1182,41 @@ SamplerT CreateSampler(Vulkan& vulkan, const CreateSamplerObject return { vkSampler }; } +//----------------------------------------------------------------------------- // Implementation of template function specialization template<> void ReleaseSampler( Vulkan& vulkan, SamplerT* pSampler) +//----------------------------------------------------------------------------- { if (!pSampler) return; vkDestroySampler(vulkan.m_VulkanDevice, pSampler->m_Sampler, nullptr); *pSampler = SamplerT{}; // destroy and clear } + +//----------------------------------------------------------------------------- +std::vector> MakeTextureMipViews( Vulkan& vulkan, const TextureT& source, uint32_t maxMips ) +//----------------------------------------------------------------------------- +{ + TextureVulkan m_ReducedZBuffer; ///< half sized 'depth' buffer (half in each dimension of original ZBuffer size) with mips. Populated by the reduce. + std::vector mips; + + const auto numMips = std::min( source.MipLevels, maxMips ); + mips.reserve( numMips ); + + CreateSamplerObjectInfo samplerCreateInfo{ + .Mode = SamplerAddressMode::ClampEdge, + .Filter = SamplerFilter::Nearest + }; + for (int mipLevel = 0; mipLevel < numMips; ++mipLevel) + { + // Create an imageview and sampler to point to this mip. Assigned/stored in a TextureVulkan per mip (all pointing to the same VkImage). + samplerCreateInfo.MinLod = float( mipLevel ); + samplerCreateInfo.MaxLod = float( mipLevel ); + + auto imageView = CreateImageView( vulkan, source.Image, source.Format, 1, mipLevel, source.Faces, 0, source.ImageView.GetImageViewType() ); + SamplerT sampler = CreateSampler( vulkan, samplerCreateInfo ); + mips.emplace_back( source.Width, source.Height, source.Depth, 1, mipLevel, 1, 0, source.Format, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, source.GetVkImage(), (VkDeviceMemory)VK_NULL_HANDLE, std::move( sampler ), std::move( imageView ) ); + } + return mips; +} diff --git a/framework/code/texture/vulkan/texture.hpp b/framework/code/texture/vulkan/texture.hpp index b969bd4..e155380 100644 --- a/framework/code/texture/vulkan/texture.hpp +++ b/framework/code/texture/vulkan/texture.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,11 +10,14 @@ #include "../texture.hpp" #include "memory/vulkan/memoryMapped.hpp" #include +#include // Forward declarations class Vulkan; template class MemoryAllocatedBuffer; using TextureVulkan = TextureT; +using ImageVulkan = ImageT; +using ImageViewVulkan = ImageViewT; using SamplerVulkan = SamplerT; /// @brief Convert from our TextureFormat to Vulkan's VkFormat @@ -28,24 +31,98 @@ template<> class SamplerT final : public Sampler { public: - SamplerT() noexcept : m_Sampler(VK_NULL_HANDLE) {}; - SamplerT(VkSampler sampler) noexcept : m_Sampler(sampler) {}; - SamplerT(const SamplerT& src) noexcept : m_Sampler(src.m_Sampler) {}; - SamplerT& operator=(const SamplerT& src) noexcept { - if (this != &src) - m_Sampler = src.m_Sampler; - return *this; + SamplerT() noexcept; + ~SamplerT() noexcept; + SamplerT(VkSampler sampler) noexcept; + SamplerT(SamplerT&& src) noexcept; + SamplerT& operator=(SamplerT&& src) noexcept; + SamplerT Copy() const noexcept + { + return {m_Sampler}; } + auto GetVkSampler() const { return m_Sampler; } bool IsEmpty() const { return m_Sampler == VK_NULL_HANDLE; } private: - friend void ReleaseSampler( Vulkan& vulkan, SamplerT* pSampler ); VkSampler m_Sampler; }; +/// @brief Template specialization of sampler container for Vulkan graphics api. +template<> +class ImageViewT final : public ImageView +{ +public: + ImageViewT() noexcept : m_ImageView( VK_NULL_HANDLE ), m_ImageViewType( ImageViewType::View1D ) {}; + ImageViewT( VkImageView imageView, VkImageViewType viewType ) noexcept; + ImageViewT( ImageViewT&& src ) noexcept { + *this = std::move( src ); + } + ImageViewT& operator=( ImageViewT&& src ) noexcept { + m_ImageView = src.m_ImageView; + src.m_ImageView = VK_NULL_HANDLE; + m_ImageViewType = src.m_ImageViewType; + src.m_ImageViewType = ImageViewType::View1D; + return *this; + } + ~ImageViewT(); + auto GetImageViewType() const { return m_ImageViewType; } + auto GetVkImageView() const { return m_ImageView; } + bool IsEmpty() const { return m_ImageView == VK_NULL_HANDLE; } + +private: + friend void ReleaseImageView( Vulkan& vulkan, ImageViewT* pImageView ); + VkImageView m_ImageView; + ImageViewType m_ImageViewType; +}; + + +/// @brief Template specialization of image container for Vulkan graphics api. +template<> +class ImageT final : public Image +{ +public: + ImageT() noexcept {}; + + /// @brief Construct ImageT from a pre-existing vmaImage. + /// @param vmaImage - ownership passed to this ImageT. + ImageT( MemoryAllocatedBuffer vmaImage ) noexcept; + + /// @brief Construct ImageT from a pre-existing Vulkan image/memory handles. + /// @param image - ownership NOT passed in to this ImageT, beware of lifetime issues. + /// @param memory - ownership NOT passed to this ImageT, beware of lifetime issues. + ImageT( VkImage image, VkDeviceMemory memory ) noexcept; + + ImageT( ImageT&& src ) noexcept { + *this = std::move( src ); + } + ImageT& operator=( ImageT&& src ) noexcept + { + VmaImage = std::move(src.VmaImage); + Image = src.Image; + src.Image = VK_NULL_HANDLE; + Memory = src.Memory; + src.Memory = VK_NULL_HANDLE; + return *this; + } + ~ImageT(); + VkImage GetVkImage() const { return VmaImage ? VmaImage.GetVkBuffer() : Image; } + bool IsEmpty() const { return !VmaImage && Image == VK_NULL_HANDLE; } + +private: + friend void ReleaseImage( Vulkan& vulkan, ImageT* pImage ); + + // Managed memory buffer allocation and VkImage + MemoryAllocatedBuffer VmaImage; + + // Needed for functions handling own memory (i.e. AndroidHardwareBuffers) + VkImage Image = VK_NULL_HANDLE; + VkDeviceMemory Memory = VK_NULL_HANDLE; +}; + + /// @brief Template specialization of texture container for Vulkan graphics api. template<> class TextureT final : public Texture @@ -62,62 +139,68 @@ class TextureT final : public Texture /// @param vmaImage - ownership passed to this TextureT. /// @param sampler - ownership passed to this TextureT. /// @param imageView - ownership passed to this TextureT. - TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, TextureFormat, VkImageLayout imageLayout, MemoryAllocatedBuffer vmaImage, const SamplerT& sampler, VkImageView imageView) noexcept; + TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat, VkImageLayout imageLayout, ImageT image, SamplerT sampler, ImageViewT imageView) noexcept; /// @brief Construct TextureT from a pre-existing Vulkan image/memory handles. /// @param image - ownership NOT passed in to this TextureT, beware of lifetime issues. /// @param sampler - ownership passed to this TextureT. /// @param imageView - ownership passed to this TextureT. - TextureT(uint32_t width, uint32_t height, uint32_t mipLevels, uint32_t firstMip, TextureFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, const SamplerT& sampler, VkImageView imageView) noexcept; + TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, SamplerT sampler, ImageViewT imageView) noexcept; void Release(GraphicsApiBase* pGraphicsApi) override; - VkImage GetVkImage() const { return VmaImage ? VmaImage.GetVkBuffer() : Image; } - VkDescriptorImageInfo GetVkDescriptorImageInfo() const { return { Sampler.GetVkSampler(), ImageView, ImageLayout }; } + VkImage GetVkImage() const { return Image.GetVkImage(); } + VkDescriptorImageInfo GetVkDescriptorImageInfo() const { return { Sampler.GetVkSampler(), ImageView.GetVkImageView(), ImageLayout }; } VkImageLayout GetVkImageLayout() const { return ImageLayout; } VkSampler GetVkSampler() const { return Sampler.GetVkSampler(); } - VkImageView GetVkImageView() const { return ImageView; } - bool IsEmpty() const { return !VmaImage; } + VkImageView GetVkImageView() const { return ImageView.GetVkImageView(); } + bool IsEmpty() const { return Image.IsEmpty() || Sampler.IsEmpty(); } uint32_t Width = 0; uint32_t Height = 0; uint32_t Depth = 0; uint32_t MipLevels = 0; uint32_t FirstMip = 0; + uint32_t Faces = 0; + uint32_t FirstFace = 0; TextureFormat Format = TextureFormat::UNDEFINED; VkImageLayout ImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; public: - - MemoryAllocatedBuffer VmaImage; - + ImageT Image; SamplerT Sampler; - VkImageView ImageView = VK_NULL_HANDLE; - - // Needed for functions handling own memory (i.e. AndroidHardwareBuffers) - VkImage Image = VK_NULL_HANDLE; - VkDeviceMemory Memory = VK_NULL_HANDLE; + ImageViewT ImageView; }; -/// Helper to create a Vulkan VkImageView object (user is expected to release the object) -extern bool CreateImageView(Vulkan&, VkImage image, VkFormat format, uint32_t baseMipLevel, uint32_t numMipLevels, uint32_t numFaces, VkImageViewType viewType, VkImageView* pRetImageView); - - /// Template specialization for Vulkan CreateTextureObject template<> TextureT CreateTextureObject( Vulkan&, const CreateTexObjectInfo& texInfo ); /// Template specialization for Vulkan CreateTextureFromBuffer template<> -TextureT CreateTextureFromBuffer( Vulkan&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName, uint32_t extraFlags ); +TextureT CreateTextureFromBuffer( Vulkan&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ); /// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) TextureT CreateTextureObjectView( Vulkan&, const TextureT& original, TextureFormat viewFormat ); +/// Template specialization for Vulkan ReleaseTexture template<> void ReleaseTexture( Vulkan& vulkan, TextureT* ); +/// Template specialization for Vulkan ReleaseImage +template<> +void ReleaseImage( Vulkan& vulkan, ImageT* ); + +/// Template specialization for Vulkan CreateImageView +template<> +ImageViewT CreateImageView( Vulkan&, const ImageT& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t firstFace, ImageViewType viewType ); + +/// Template specialization for Vulkan ReleaseImageView +template<> +void ReleaseImageView( Vulkan& vulkan, ImageViewT* ); + + /// Template specialization for Vulkan CreateSampler template<> SamplerT CreateSampler( Vulkan&, const CreateSamplerObjectInfo& ); @@ -125,3 +208,6 @@ SamplerT CreateSampler( Vulkan&, const CreateSamplerObjectInfo& ); /// Template specialization for Vulkan ReleaseSampler template<> void ReleaseSampler( Vulkan& vulkan, SamplerT* ); + +/// Helper to take a sorce texture and make an array of textures where each one points to a single mip in the source +std::vector> MakeTextureMipViews( Vulkan& vulkan, const TextureT& source, uint32_t maxMips ); diff --git a/framework/code/texture/vulkan/textureManager.cpp b/framework/code/texture/vulkan/textureManager.cpp index c585fb5..0c98f3b 100644 --- a/framework/code/texture/vulkan/textureManager.cpp +++ b/framework/code/texture/vulkan/textureManager.cpp @@ -1,10 +1,9 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #include "textureManager.hpp" #include "texture.hpp" #include "imageWrapper.hpp" @@ -33,12 +32,14 @@ bool TextureManagerT::Initialize() { m_Loader = std::make_unique>( static_cast(m_GfxApi) ); - m_DefaultSamplers.resize( size_t(SamplerAddressMode::End), {} ); + m_DefaultSamplers.reserve( size_t(SamplerAddressMode::End) ); for (size_t i = (size_t)SamplerAddressMode::Repeat; i < (size_t)SamplerAddressMode::End; ++i) { SamplerAddressMode samplerMode = (SamplerAddressMode)i; if (samplerMode != SamplerAddressMode::MirroredClampEdge || m_MirrorClampToEdgeSupported) - m_DefaultSamplers[i] = CreateSampler( m_GfxApi, samplerMode, SamplerFilter::Linear, SamplerBorderColor::TransparentBlackFloat, 0.0f ); + m_DefaultSamplers.push_back( CreateSampler( m_GfxApi, samplerMode, SamplerFilter::Linear, SamplerBorderColor::TransparentBlackFloat, 0.0f ) ); + else + m_DefaultSamplers.push_back( {} ); } return TextureManager::Initialize(); @@ -82,7 +83,7 @@ const Texture* TextureManagerT::GetOrLoadTexture_(const std::string& tex if (!pTexture) { const SamplerVulkan& samplerVulkan = static_cast(sampler); - auto loadedTexture = GetLoader()->LoadKtx(m_GfxApi, rAssetManager, filename.c_str(), samplerVulkan); + auto loadedTexture = GetLoader()->LoadKtx(m_GfxApi, rAssetManager, filename.c_str(), std::move(samplerVulkan.Copy())); if (!loadedTexture.IsEmpty()) { auto insertedIt = m_LoadedTextures.insert({ textureSlotName, std::move(loadedTexture) }); @@ -142,7 +143,7 @@ void TextureManagerT::BatchLoad(AssetManager& rAssetManager, const std:: params.loadedFileQueue.pop(); } if (ktxData) - params.vulkanTextures[slotIndex] = pThis->GetLoader()->LoadKtx(pThis->m_GfxApi, ktxData, params.defaultSampler); + params.vulkanTextures[slotIndex] = pThis->GetLoader()->LoadKtx(pThis->m_GfxApi, ktxData, std::move(params.defaultSampler.Copy()) ); --texturesRemaining; } params.finishedSema.Post(); @@ -200,11 +201,11 @@ std::unique_ptr TextureManagerT::CreateTextureObject(GraphicsAp } //----------------------------------------------------------------------------- -std::unique_ptr TextureManagerT::CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName, uint32_t extraFlags) +std::unique_ptr TextureManagerT::CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) //----------------------------------------------------------------------------- { auto pTexture = std::make_unique>(); - *pTexture = ::CreateTextureFromBuffer( static_cast( gfxApi ), pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, pName, extraFlags); + *pTexture = ::CreateTextureFromBuffer( static_cast( gfxApi ), pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, pName ); return pTexture; } diff --git a/framework/code/texture/vulkan/textureManager.hpp b/framework/code/texture/vulkan/textureManager.hpp index 20720a4..9050894 100644 --- a/framework/code/texture/vulkan/textureManager.hpp +++ b/framework/code/texture/vulkan/textureManager.hpp @@ -1,10 +1,9 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #pragma once #include "../textureManager.hpp" @@ -33,6 +32,8 @@ class TextureManagerT final : public TextureManager TextureManagerT(tGfxApi& rGfxApi) noexcept; virtual ~TextureManagerT() override; + TextureManagerT& operator=(const TextureManagerT&) = delete; + TextureManagerT(const TextureManagerT&) = delete; bool Initialize(); void Release() override; @@ -49,7 +50,7 @@ class TextureManagerT final : public TextureManager /// Create texture from a block of texture data in memory (with correct format, span etc). /// Implements the base class virtual function. - std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName, uint32_t extraFlags = 0 ) override; + std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) override; /// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) /// Implements the base class virtual function. @@ -63,8 +64,9 @@ class TextureManagerT final : public TextureManager void BatchLoad(AssetManager& rAssetManager, const std::span>, const Sampler& defaultSampler) override; private: + std::vector< TextureT> arses; std::map> m_LoadedTextures; - std::vector> m_DefaultSamplers; + std::vector< SamplerT> m_DefaultSamplers; const bool m_MirrorClampToEdgeSupported = false; // currently this is never set, if we add VK_KHR_sampler_mirror_clamp_to_edge extension support or samplerMirrorClampToEdge feature flag then we can change this to non const and set/reset tGfxApi& m_GfxApi; }; diff --git a/framework/code/vulkan/extension.hpp b/framework/code/vulkan/extension.hpp index 03865e0..3893058 100644 --- a/framework/code/vulkan/extension.hpp +++ b/framework/code/vulkan/extension.hpp @@ -137,24 +137,42 @@ class ExtensionChain }; -/// @brief Class describing a Vulkan extension and base class for defining extension behaviour and hooks into Vulkan calls -class VulkanExtension +/// @brief Enumeration of the Vulkan extension type (eg Device extension or Instance extansion). +enum class VulkanExtensionType { eDevice, eInstance }; + +/// @brief Enumeration of the Vulkan extension status (eg loading state of an extenstion). +enum class VulkanExtensionStatus { eUninitialized, eOptional, eRequired, eLoaded }; + +/// @brief Class describing a Vulkan extension base for defining extension behaviour and hooks into Vulkan calls +class VulkanExtensionBase { - VulkanExtension( const VulkanExtension& ) = delete; // Functionality built on VulkanExtension assumes this class remains fixed in memory - VulkanExtension& operator=( const VulkanExtension& ) = delete; + VulkanExtensionBase(const VulkanExtensionBase&) = delete; // Functionality built on VulkanExtension assumes this class remains fixed in memory + VulkanExtensionBase& operator=(const VulkanExtensionBase&) = delete; public: - enum eStatus { eUninitialized, eOptional, eRequired, eLoaded }; - static constexpr std::array cStatusNames { "Uninitialized", "Optional", "Required", "Loaded" }; + static constexpr std::array cStatusNames{"Uninitialized", "Optional", "Required", "Loaded"}; - VulkanExtension( std::string name, VulkanExtension::eStatus status = eUninitialized, uint32_t version = 0 ) noexcept : Status( status ), Name( name ), Version( version ) {} - virtual ~VulkanExtension() = default; + VulkanExtensionBase(std::string name, VulkanExtensionStatus status = VulkanExtensionStatus::eUninitialized, uint32_t version = 0) noexcept : Name(name), Status(status), Version(version) {} + virtual ~VulkanExtensionBase() = default; - eStatus Status = eUninitialized; - const std::string Name; - uint32_t Version = 0; ///< Extension version (from Driver) + const std::string Name; + VulkanExtensionStatus Status = VulkanExtensionStatus::eUninitialized; + uint32_t Version = 0; ///< Extension version (from Driver) /// Register this extension with Vulkan. Typically will call Vulkan::AddExtensionHooks if the extension needs to hook in to any functionality. - virtual void Register( Vulkan& vulkan ) {/*does not have to be derived from (or do anything)*/ } + virtual void Register(Vulkan& vulkan) {/*does not have to be derived from (or do anything)*/ } +private: }; +/// @brief Class describing a Vulkan extension templated against the what the extension is extending (ie Instance or Device extsnion) +template +class VulkanExtension : public VulkanExtensionBase +{ + VulkanExtension( const VulkanExtension& ) = delete; // Functionality built on VulkanExtension assumes this class remains fixed in memory + VulkanExtension& operator=( const VulkanExtension& ) = delete; +public: + static const VulkanExtensionType Type = T_TYPE; + + VulkanExtension( std::string name, VulkanExtensionStatus status = VulkanExtensionStatus::eUninitialized, uint32_t version = 0 ) noexcept : VulkanExtensionBase(name, status, version ) {} + virtual ~VulkanExtension() = default; +}; diff --git a/framework/code/vulkan/extensionHelpers.cpp b/framework/code/vulkan/extensionHelpers.cpp index 08894a9..8693f1c 100644 --- a/framework/code/vulkan/extensionHelpers.cpp +++ b/framework/code/vulkan/extensionHelpers.cpp @@ -11,15 +11,74 @@ #include #include -void VulkanFunctionPointerExtensionHelper::Register(Vulkan& vulkan) +template<> +void VulkanFunctionPointerExtensionHelper::Register(Vulkan& vulkan) { vulkan.AddExtensionHooks( &m_InstanceFunctionPointerHook ); vulkan.AddExtensionHooks( &m_DeviceFunctionPointerHook ); } +template<> +void VulkanFunctionPointerExtensionHelper::Register(Vulkan& vulkan) +{ + vulkan.AddExtensionHooks(&m_InstanceFunctionPointerHook); +} + namespace ExtensionHelper { +#if VK_EXT_mesh_shader + void Ext_VK_KHR_mesh_shader::LookupFunctionPointers(VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr) + { + m_vkCmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)deviceProcAddr(vkDevice, "vkCmdDrawMeshTasksEXT"); + m_vkCmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)deviceProcAddr(vkDevice, "vkCmdDrawMeshTasksIndirectEXT"); + m_vkCmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)deviceProcAddr(vkDevice, "vkCmdDrawMeshTasksIndirectCountEXT"); + } + void Ext_VK_KHR_mesh_shader::PrintFeatures() const + { + LOGI("FeaturesMeshShader: "); + LOGI(" taskShader: %s", this->AvailableFeatures.taskShader ? "True" : "False"); + LOGI(" meshShader: %s", this->AvailableFeatures.meshShader ? "True" : "False"); + LOGI(" multiviewMeshShader: %s", this->AvailableFeatures.multiviewMeshShader ? "True" : "False"); + LOGI(" primitiveFragmentShadingRateMeshShader: %s", this->AvailableFeatures.primitiveFragmentShadingRateMeshShader ? "True" : "False"); + LOGI(" meshShaderQueries: %s", this->AvailableFeatures.meshShaderQueries ? "True" : "False"); + } + void Ext_VK_KHR_mesh_shader::PrintProperties() const + { + LOGI("VK_EXT_descriptor_indexing (VkPhysicalDeviceDescriptorIndexingProperties): "); + LOGI(" maxTaskWorkGroupTotalCount: %u", Properties.maxTaskWorkGroupTotalCount); + LOGI(" maxTaskWorkGroupCount: %u %u %u", Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0]); + LOGI(" maxTaskWorkGroupTotalCount: %u", Properties.maxTaskWorkGroupTotalCount); + LOGI(" maxTaskWorkGroupCount: %u %u %u", Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0]); + LOGI(" maxTaskWorkGroupInvocations: %u", Properties.maxTaskWorkGroupInvocations); + LOGI(" maxTaskWorkGroupSize: %u %u %u", Properties.maxTaskWorkGroupSize[0], Properties.maxTaskWorkGroupSize[0], Properties.maxTaskWorkGroupSize[0]); + LOGI(" maxTaskPayloadSize: %u", Properties.maxTaskPayloadSize); + LOGI(" maxTaskSharedMemorySize: %u", Properties.maxTaskSharedMemorySize); + LOGI(" maxTaskPayloadAndSharedMemorySize: %u", Properties.maxTaskPayloadAndSharedMemorySize); + LOGI(" maxMeshWorkGroupTotalCount: %u", Properties.maxMeshWorkGroupTotalCount); + LOGI(" maxMeshWorkGroupCount: %u %u %u", Properties.maxMeshWorkGroupCount[0], Properties.maxMeshWorkGroupCount[0], Properties.maxMeshWorkGroupCount[0]); + LOGI(" maxMeshWorkGroupInvocations: %u", Properties.maxMeshWorkGroupInvocations); + LOGI(" maxMeshWorkGroupSize: %u %u %u", Properties.maxMeshWorkGroupSize[0], Properties.maxMeshWorkGroupSize[0], Properties.maxMeshWorkGroupSize[0]); + LOGI(" maxMeshSharedMemorySize: %u", Properties.maxMeshSharedMemorySize); + LOGI(" maxMeshPayloadAndSharedMemorySize: %u", Properties.maxMeshPayloadAndSharedMemorySize); + LOGI(" maxMeshOutputMemorySize: %u", Properties.maxMeshOutputMemorySize); + LOGI(" maxMeshPayloadAndOutputMemorySize: %u", Properties.maxMeshPayloadAndOutputMemorySize); + LOGI(" maxMeshOutputComponents: %u", Properties.maxMeshOutputComponents); + LOGI(" maxMeshOutputVertices: %u", Properties.maxMeshOutputVertices); + LOGI(" maxMeshOutputPrimitives: %u", Properties.maxMeshOutputPrimitives); + LOGI(" maxMeshOutputLayers: %u", Properties.maxMeshOutputLayers); + LOGI(" maxMeshMultiviewViewCount: %u", Properties.maxMeshMultiviewViewCount); + LOGI(" meshOutputPerVertexGranularity: %u", Properties.meshOutputPerVertexGranularity); + LOGI(" meshOutputPerPrimitiveGranularity: %u", Properties.meshOutputPerPrimitiveGranularity); + LOGI(" maxPreferredTaskWorkGroupInvocations: %u", Properties.maxPreferredTaskWorkGroupInvocations); + LOGI(" maxPreferredMeshWorkGroupInvocations: %u", Properties.maxPreferredMeshWorkGroupInvocations); + LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersLocalInvocationVertexOutput ? "True" : "False"); + LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersLocalInvocationPrimitiveOutput ? "True" : "False"); + LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersCompactVertexOutput ? "True" : "False"); + LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersCompactPrimitiveOutput ? "True" : "False"); + } +#endif + #if VK_KHR_shader_float16_int8 void Ext_VK_KHR_shader_float16_int8::PrintFeatures() const @@ -178,6 +237,24 @@ namespace ExtensionHelper { } #endif // VK_KHR_fragment_shading_rate +#if VK_KHR_create_renderpass2 + void Ext_VK_KHR_create_renderpass2::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCreateRenderPass2KHR" ); + m_vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdBeginRenderPass2KHR" ); + m_vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdNextSubpass2KHR" ); + m_vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdEndRenderPass2KHR" ); + } +#endif // VK_KHR_create_renderpass2 + +#if VK_KHR_draw_indirect_count + void Ext_VK_KHR_draw_indirect_count::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndirectCountKHR" ); + m_vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndexedIndirectCountKHR" ); + } +#endif // VK_KHR_draw_indirect_count + #if VK_EXT_debug_utils bool Ext_VK_EXT_debug_utils::SetDebugUtilsObjectName( VkDevice vkDevice, uint64_t object, VkObjectType objectType, const char* name ) const { @@ -253,6 +330,48 @@ namespace ExtensionHelper { } #endif // VK_EXT_host_query_reset +#if VK_ARM_tensors + void Ext_VK_ARM_tensors::PrintFeatures() const + { + LOGI("VK_ARM_tensors (VkPhysicalDeviceTensorFeaturesARM):"); + LOGI(" tensorNonPacked: %s", this->AvailableFeatures.tensorNonPacked ? "True" : "False"); + LOGI(" shaderTensorAccess: %s", this->AvailableFeatures.shaderTensorAccess ? "True" : "False"); + LOGI(" shaderStorageTensorArrayDynamicIndexing: %s", this->AvailableFeatures.shaderStorageTensorArrayDynamicIndexing ? "True" : "False"); + LOGI(" shaderStorageTensorArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageTensorArrayNonUniformIndexing ? "True" : "False"); + LOGI(" descriptorBindingStorageTensorUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageTensorUpdateAfterBind ? "True" : "False"); + LOGI(" tensors: %s", this->AvailableFeatures.tensors ? "True" : "False"); + } + + void Ext_VK_ARM_tensors::PrintProperties() const + { + LOGI("VK_ARM_tensors (VkPhysicalDeviceTensorPropertiesARM):"); + LOGI(" maxTensorDimensionCount: %u", this->Properties.maxTensorDimensionCount); + LOGI(" maxTensorElements: %" PRIu64, this->Properties.maxTensorElements); + LOGI(" maxPerDimensionTensorElements: %" PRIu64, this->Properties.maxPerDimensionTensorElements); + LOGI(" maxTensorStride: %" PRId64, this->Properties.maxTensorStride); + LOGI(" maxTensorSize: %" PRIu64, this->Properties.maxTensorSize); + LOGI(" maxTensorShaderAccessArrayLength: %u", this->Properties.maxTensorShaderAccessArrayLength); + LOGI(" maxTensorShaderAccessSize: %u", this->Properties.maxTensorShaderAccessSize); + LOGI(" maxDescriptorSetStorageTensors: %u", this->Properties.maxDescriptorSetStorageTensors); + LOGI(" maxPerStageDescriptorSetStorageTensors: %u", this->Properties.maxPerStageDescriptorSetStorageTensors); + LOGI(" maxDescriptorSetUpdateAfterBindStorageTensors: %u", this->Properties.maxDescriptorSetUpdateAfterBindStorageTensors); + LOGI(" maxPerStageDescriptorUpdateAfterBindStorageTensors: %u", this->Properties.maxPerStageDescriptorUpdateAfterBindStorageTensors); + LOGI(" shaderStorageTensorArrayNonUniformIndexingNative: %s", this->Properties.shaderStorageTensorArrayNonUniformIndexingNative ? "True" : "False"); + LOGI(" shaderTensorSupportedStages: 0x%08X", this->Properties.shaderTensorSupportedStages); + } +#endif // VK_ARM_tensors + +#if VK_ARM_data_graph + void Ext_VK_ARM_data_graph::PrintFeatures() const + { + LOGI("VK_ARM_data_graph (VkPhysicalDeviceDataGraphFeaturesARM):"); + LOGI(" dataGraph: %s", this->AvailableFeatures.dataGraph ? "True" : "False"); + LOGI(" dataGraphUpdateAfterBind: %s", this->AvailableFeatures.dataGraphUpdateAfterBind ? "True" : "False"); + LOGI(" dataGraphSpecializationConstants: %s", this->AvailableFeatures.dataGraphSpecializationConstants ? "True" : "False"); + LOGI(" dataGraphDescriptorBuffer: %s", this->AvailableFeatures.dataGraphDescriptorBuffer ? "True" : "False"); + LOGI(" dataGraphShaderModule: %s", this->AvailableFeatures.dataGraphShaderModule ? "True" : "False"); + } +#endif // VK_ARM_data_graph #if VK_KHR_timeline_semaphore void Ext_VK_KHR_timeline_semaphore::PrintFeatures() const { @@ -275,9 +394,64 @@ namespace ExtensionHelper { void Ext_VK_KHR_synchronization2::LookupFunctionPointers(VkInstance vkInstance) { m_vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)vkGetInstanceProcAddr(vkInstance, "vkQueueSubmit2KHR"); + m_vkCmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdSetEvent2KHR"); + m_vkCmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdResetEvent2KHR"); + m_vkCmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdWaitEvents2KHR"); + m_vkCmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdPipelineBarrier2KHR"); + m_vkCmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdWriteTimestamp2KHR"); } #endif // VK_KHR_synchronization2 +#if VK_KHR_get_physical_device_properties2 + + void Ext_VK_KHR_get_physical_device_properties2::LookupFunctionPointers(VkInstance vkInstance) + { + m_vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceFeatures2KHR"); + m_vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceFormatProperties2KHR" ); + m_vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ); + m_vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceMemoryProperties2KHR" ); + m_vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceProperties2KHR" ); + } + +#endif // VK_KHR_get_physical_device_properties2 + +#if VK_KHR_surface + + void Ext_VK_KHR_surface::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)vkGetInstanceProcAddr( vkInstance, "vkDestroySurfaceKHR" ); + m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ); + m_vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ); + m_vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ); + m_vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceSupportKHR" ); + } + +#endif // VK_KHR_surface + +#if VK_KHR_get_surface_capabilities2 + + void Ext_VK_KHR_get_surface_capabilities2::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); + m_vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceSurfaceFormats2KHR"); + } + +#endif // VK_KHR_get_surface_capabilities2 + +#if VK_QCOM_tile_properties + + void Ext_VK_QCOM_tile_properties::LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr ) + { + m_vkGetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)deviceProcAddr( vkDevice, "vkGetDynamicRenderingTilePropertiesQCOM" ); + m_vkGetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)deviceProcAddr( vkDevice, "vkGetFramebufferTilePropertiesQCOM" ); + } + + void Ext_VK_QCOM_tile_properties::PrintFeatures() const + { + LOGI( "TileProperties: " ); + } + +#endif // VK_QCOM_tile_properties void Vulkan_SubgroupPropertiesHook::PrintProperties() const { diff --git a/framework/code/vulkan/extensionHelpers.hpp b/framework/code/vulkan/extensionHelpers.hpp index 9cd92c1..c424e33 100644 --- a/framework/code/vulkan/extensionHelpers.hpp +++ b/framework/code/vulkan/extensionHelpers.hpp @@ -90,10 +90,11 @@ class VulkanDevicePropertiesPrintHook final : public ExtensionHook -class VulkanDeviceFeaturesExtensionHelper : public VulkanExtension +class VulkanDeviceFeaturesExtensionHelper : public VulkanExtension { public: - VulkanDeviceFeaturesExtensionHelper( std::string extensionName, VulkanExtension::eStatus status ) : VulkanExtension( extensionName, status ), m_DeviceCreateInfoHook( this ), m_GetPhysicalDeviceFeaturesHook( this ), m_VulkanDeviceFeaturePrintHook( this ) + using tBase = VulkanExtension; + VulkanDeviceFeaturesExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : tBase( extensionName, status ), m_DeviceCreateInfoHook( this ), m_GetPhysicalDeviceFeaturesHook( this ), m_VulkanDeviceFeaturePrintHook( this ) {} void Register( Vulkan& vulkan ) override @@ -122,7 +123,7 @@ class VulkanDeviceFeaturePropertiesExtensionHelper : public VulkanDeviceFeatures { using tBase = VulkanDeviceFeaturesExtensionHelper; public: - VulkanDeviceFeaturePropertiesExtensionHelper( std::string extensionName, VulkanExtension::eStatus status ) + VulkanDeviceFeaturePropertiesExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : tBase( extensionName, status ) , m_GetPhysicalDevicePropertiesHook( this ) , m_VulkanDevicePropertiesPrintHook( this ) @@ -163,7 +164,7 @@ class DeviceFunctionPointerHook final : public ExtensionHook(), Parent( _Parent ) {} VkStructureType StructureType() const override { return (VkStructureType) 0; }; VkBaseOutStructure* Obtain( tBase* pBase ) override { - if (Parent->Status == VulkanExtension::eLoaded) + if (Parent->Status == VulkanExtensionStatus::eLoaded) Parent->LookupFunctionPointers( pBase->vkDevice, pBase->fpGetDeviceProcAddr ); return nullptr; } @@ -171,10 +172,11 @@ class DeviceFunctionPointerHook final : public ExtensionHook +class VulkanFunctionPointerExtensionHelper : public VulkanExtension { public: - explicit VulkanFunctionPointerExtensionHelper( std::string extensionName, VulkanExtension::eStatus status ) : VulkanExtension( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) + explicit VulkanFunctionPointerExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : VulkanExtension( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) {} void Register( Vulkan& vulkan ) override; @@ -198,7 +200,7 @@ class VulkanFeaturesAndFunctionPointerExtensionHelper : public VulkanDeviceFeatu { using tBase = VulkanDeviceFeaturesExtensionHelper; public: - explicit VulkanFeaturesAndFunctionPointerExtensionHelper( std::string extensionName, VulkanExtension::eStatus status ) : tBase( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) + explicit VulkanFeaturesAndFunctionPointerExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : tBase( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) {} void Register( Vulkan& vulkan ) override @@ -228,7 +230,7 @@ class VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper : public VulkanD { using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; public: - VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( std::string extensionName, VulkanExtension::eStatus status ) : tBase( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) + VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : tBase( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) {} void Register( Vulkan& vulkan ) override @@ -257,12 +259,39 @@ class VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper : public VulkanD namespace ExtensionHelper { +#if VK_EXT_mesh_shader + + struct Ext_VK_KHR_mesh_shader : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceMeshShaderFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT, + VkPhysicalDeviceMeshShaderPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT> + { + static constexpr auto Name = VK_EXT_MESH_SHADER_EXTENSION_NAME; + explicit Ext_VK_KHR_mesh_shader(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper(Name, status) + {} + + void PopulateRequestedFeatures() override + { + RequestedFeatures = AvailableFeatures; + RequestedFeatures.multiviewMeshShader = VK_FALSE; //if we need multiview then device needs setting up for multiview also + RequestedFeatures.primitiveFragmentShadingRateMeshShader = VK_FALSE;//if we need fragment shading rate then device needs setting up for it (and we need to revisit this flag!) + } + void LookupFunctionPointers(VkInstance) override {} + void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override; + void PrintFeatures() const override; + void PrintProperties() const override; + PFN_vkCmdDrawMeshTasksEXT m_vkCmdDrawMeshTasksEXT = nullptr; + PFN_vkCmdDrawMeshTasksIndirectEXT m_vkCmdDrawMeshTasksIndirectEXT = nullptr; + PFN_vkCmdDrawMeshTasksIndirectCountEXT m_vkCmdDrawMeshTasksIndirectCountEXT = nullptr; + }; + +#endif // VK_EXT_mesh_shader + #if VK_KHR_shader_float16_int8 struct Ext_VK_KHR_shader_float16_int8 : public VulkanDeviceFeaturesExtensionHelper { static constexpr auto Name = VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME; - explicit Ext_VK_KHR_shader_float16_int8( VulkanExtension::eStatus status = VulkanExtension::eRequired ) + explicit Ext_VK_KHR_shader_float16_int8( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) {} void PrintFeatures() const override; @@ -275,7 +304,7 @@ namespace ExtensionHelper struct Ext_VK_EXT_shader_image_atomic_int64 : public VulkanDeviceFeaturesExtensionHelper { static constexpr auto Name = VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME; - explicit Ext_VK_EXT_shader_image_atomic_int64( VulkanExtension::eStatus status = VulkanExtension::eRequired ) + explicit Ext_VK_EXT_shader_image_atomic_int64( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper( Name, status ) {} void PrintFeatures() const override; @@ -288,7 +317,7 @@ namespace ExtensionHelper struct Ext_VK_EXT_index_type_uint8 : public VulkanDeviceFeaturesExtensionHelper { static constexpr auto Name = VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME; - explicit Ext_VK_EXT_index_type_uint8( VulkanExtension::eStatus status = VulkanExtension::eRequired ) + explicit Ext_VK_EXT_index_type_uint8( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) {} void PrintFeatures() const override; @@ -301,7 +330,7 @@ namespace ExtensionHelper struct Ext_VK_KHR_shader_subgroup_extended_types : public VulkanDeviceFeaturesExtensionHelper { static constexpr auto Name = VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME; - explicit Ext_VK_KHR_shader_subgroup_extended_types( VulkanExtension::eStatus status = VulkanExtension::eRequired ) + explicit Ext_VK_KHR_shader_subgroup_extended_types( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) {} void PrintFeatures() const override; @@ -316,7 +345,7 @@ namespace ExtensionHelper VkPhysicalDeviceDescriptorIndexingPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT> { static constexpr auto Name = VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME; - explicit Ext_VK_EXT_descriptor_indexing( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) + explicit Ext_VK_EXT_descriptor_indexing( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) {} void PrintFeatures() const override; void PrintProperties() const override; @@ -330,7 +359,7 @@ namespace ExtensionHelper VkPhysicalDevice8BitStorageFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR> { static constexpr auto Name = VK_KHR_8BIT_STORAGE_EXTENSION_NAME; - explicit Ext_VK_KHR_8bit_storage( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) + explicit Ext_VK_KHR_8bit_storage( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) {} void PrintFeatures() const override; }; @@ -344,7 +373,7 @@ namespace ExtensionHelper VkPhysicalDevicePortabilitySubsetPropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR> { static constexpr auto Name = VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME; - explicit Ext_VK_KHR_portability_subset( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) + explicit Ext_VK_KHR_portability_subset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) {} void PrintFeatures() const override; void PrintProperties() const override; @@ -353,10 +382,10 @@ namespace ExtensionHelper #else // 'dummy' implementation of Ext_VK_KHR_portability_subset for when vulkan headers do not contain 'VK_KHR_portability_subset' - struct Ext_VK_KHR_portability_subset : public VulkanExtension + struct Ext_VK_KHR_portability_subset : public VulkanExtension { static constexpr auto Name = "VK_KHR_portability_subset"; - Ext_VK_KHR_portability_subset( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanExtension( Name, status ) {} + Ext_VK_KHR_portability_subset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanExtension( Name, status ) {} }; #endif // VK_KHR_portability_subset @@ -368,7 +397,7 @@ namespace ExtensionHelper VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR> { static constexpr auto Name = VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME; - explicit Ext_VK_KHR_fragment_shading_rate( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( Name, status ) + explicit Ext_VK_KHR_fragment_shading_rate( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( Name, status ) {} void PopulateRequestedFeatures() override @@ -390,17 +419,11 @@ namespace ExtensionHelper #if VK_KHR_create_renderpass2 - struct Ext_VK_KHR_create_renderpass2 : public VulkanFunctionPointerExtensionHelper + struct Ext_VK_KHR_create_renderpass2 : public VulkanFunctionPointerExtensionHelper { static constexpr auto Name = VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME; - explicit Ext_VK_KHR_create_renderpass2( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} - void LookupFunctionPointers( VkInstance vkInstance ) override - { - m_vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR) vkGetInstanceProcAddr( vkInstance, "vkCreateRenderPass2KHR" ); - m_vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR) vkGetInstanceProcAddr( vkInstance, "vkCmdBeginRenderPass2KHR" ); - m_vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR) vkGetInstanceProcAddr( vkInstance, "vkCmdNextSubpass2KHR" ); - m_vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR) vkGetInstanceProcAddr( vkInstance, "vkCmdEndRenderPass2KHR" ); - } + explicit Ext_VK_KHR_create_renderpass2( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers(VkInstance vkInstance) override; void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } PFN_vkCreateRenderPass2KHR m_vkCreateRenderPass2KHR = nullptr; PFN_vkCmdBeginRenderPass2KHR m_vkCmdBeginRenderPass2KHR = nullptr; @@ -412,15 +435,11 @@ namespace ExtensionHelper #if VK_KHR_draw_indirect_count - struct Ext_VK_KHR_draw_indirect_count : public VulkanFunctionPointerExtensionHelper + struct Ext_VK_KHR_draw_indirect_count : public VulkanFunctionPointerExtensionHelper { static constexpr auto Name = VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME; - explicit Ext_VK_KHR_draw_indirect_count( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} - void LookupFunctionPointers( VkInstance vkInstance ) override - { - m_vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndirectCountKHR" ); - m_vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndexedIndirectCountKHR" ); - } + explicit Ext_VK_KHR_draw_indirect_count( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers(VkInstance vkInstance) override; void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/} PFN_vkCmdDrawIndirectCountKHR m_vkCmdDrawIndirectCountKHR = nullptr; PFN_vkCmdDrawIndexedIndirectCountKHR m_vkCmdDrawIndexedIndirectCountKHR = nullptr; @@ -430,10 +449,10 @@ namespace ExtensionHelper #if VK_EXT_hdr_metadata - struct Ext_VK_EXT_hdr_metadata : public VulkanFunctionPointerExtensionHelper + struct Ext_VK_EXT_hdr_metadata : public VulkanFunctionPointerExtensionHelper { static constexpr auto Name = VK_EXT_HDR_METADATA_EXTENSION_NAME; - explicit Ext_VK_EXT_hdr_metadata(VulkanExtension::eStatus status = VulkanExtension::eRequired) : VulkanFunctionPointerExtensionHelper(Name, status) {} + explicit Ext_VK_EXT_hdr_metadata(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFunctionPointerExtensionHelper(Name, status) {} void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/} void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override { @@ -446,10 +465,10 @@ namespace ExtensionHelper #if VK_EXT_debug_utils - struct Ext_VK_EXT_debug_utils : public VulkanFunctionPointerExtensionHelper + struct Ext_VK_EXT_debug_utils : public VulkanFunctionPointerExtensionHelper { static constexpr auto Name = VK_EXT_DEBUG_UTILS_EXTENSION_NAME; - explicit Ext_VK_EXT_debug_utils( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + explicit Ext_VK_EXT_debug_utils( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} void LookupFunctionPointers( VkInstance vkInstance ) override { m_vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr( vkInstance, "vkSetDebugUtilsObjectNameEXT" ); @@ -464,10 +483,10 @@ namespace ExtensionHelper #if VK_EXT_debug_marker - struct Ext_VK_EXT_debug_marker : public VulkanFunctionPointerExtensionHelper + struct Ext_VK_EXT_debug_marker : public VulkanFunctionPointerExtensionHelper { static constexpr auto Name = VK_EXT_DEBUG_MARKER_EXTENSION_NAME; - explicit Ext_VK_EXT_debug_marker( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + explicit Ext_VK_EXT_debug_marker( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} void LookupFunctionPointers( VkInstance ) override {/*no instance functions*/ } void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override { @@ -488,7 +507,7 @@ namespace ExtensionHelper { using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; static constexpr auto Name = VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME; - explicit Ext_VK_EXT_subgroup_size_control( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper( Name, status ), m_ShaderCreateHook(this) + explicit Ext_VK_EXT_subgroup_size_control( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper( Name, status ), m_ShaderCreateHook(this) {} void PrintFeatures() const override; void PrintProperties() const override; @@ -534,7 +553,7 @@ namespace ExtensionHelper { using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; static constexpr auto Name = VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME; - explicit Ext_VK_EXT_host_query_reset( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : tBase( Name, status ) + explicit Ext_VK_EXT_host_query_reset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) {} void PrintFeatures() const override; void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ } @@ -548,6 +567,139 @@ namespace ExtensionHelper #endif // VK_EXT_host_query_reset +#if VK_ARM_tensors + + struct Ext_VK_ARM_tensors : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceTensorFeaturesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM, + VkPhysicalDeviceTensorPropertiesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM> + { + static constexpr auto Name = VK_ARM_TENSORS_EXTENSION_NAME; + + explicit Ext_VK_ARM_tensors(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) + : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper(Name, status) + { + } + + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.tensorNonPacked = AvailableFeatures.tensorNonPacked; + RequestedFeatures.shaderTensorAccess = AvailableFeatures.shaderTensorAccess; + RequestedFeatures.shaderStorageTensorArrayDynamicIndexing = AvailableFeatures.shaderStorageTensorArrayDynamicIndexing; + RequestedFeatures.shaderStorageTensorArrayNonUniformIndexing = AvailableFeatures.shaderStorageTensorArrayNonUniformIndexing; + RequestedFeatures.descriptorBindingStorageTensorUpdateAfterBind = AvailableFeatures.descriptorBindingStorageTensorUpdateAfterBind; + RequestedFeatures.tensors = AvailableFeatures.tensors; + + // Forcing a few features while the extension is private: + RequestedFeatures.shaderTensorAccess = true; + RequestedFeatures.tensors = true; + } + + void LookupFunctionPointers(VkInstance) override {} + + void LookupFunctionPointers(VkDevice device, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr) override + { + m_vkCreateTensorARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkCreateTensorARM")); + m_vkDestroyTensorARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkDestroyTensorARM")); + m_vkCreateTensorViewARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkCreateTensorViewARM")); + m_vkDestroyTensorViewARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkDestroyTensorViewARM")); + m_vkGetTensorMemoryRequirementsARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetTensorMemoryRequirementsARM")); + m_vkBindTensorMemoryARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkBindTensorMemoryARM")); + m_vkGetDeviceTensorMemoryRequirementsARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetDeviceTensorMemoryRequirementsARM")); + m_vkCmdCopyTensorARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkCmdCopyTensorARM")); + m_vkGetTensorOpaqueCaptureDescriptorDataARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetTensorOpaqueCaptureDescriptorDataARM")); + m_vkGetTensorViewOpaqueCaptureDescriptorDataARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetTensorViewOpaqueCaptureDescriptorDataARM")); + } + + void PrintFeatures() const override; + void PrintProperties() const override; + + PFN_vkCreateTensorARM m_vkCreateTensorARM = nullptr; + PFN_vkDestroyTensorARM m_vkDestroyTensorARM = nullptr; + PFN_vkCreateTensorViewARM m_vkCreateTensorViewARM = nullptr; + PFN_vkDestroyTensorViewARM m_vkDestroyTensorViewARM = nullptr; + PFN_vkGetTensorMemoryRequirementsARM m_vkGetTensorMemoryRequirementsARM = nullptr; + PFN_vkBindTensorMemoryARM m_vkBindTensorMemoryARM = nullptr; + PFN_vkGetDeviceTensorMemoryRequirementsARM m_vkGetDeviceTensorMemoryRequirementsARM = nullptr; + PFN_vkCmdCopyTensorARM m_vkCmdCopyTensorARM = nullptr; + PFN_vkGetTensorOpaqueCaptureDescriptorDataARM m_vkGetTensorOpaqueCaptureDescriptorDataARM = nullptr; + PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM m_vkGetTensorViewOpaqueCaptureDescriptorDataARM = nullptr; + }; + +#endif // VK_ARM_tensors + +#if VK_ARM_data_graph + + struct Ext_VK_ARM_data_graph : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceDataGraphFeaturesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM> + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_ARM_DATA_GRAPH_EXTENSION_NAME; + + explicit Ext_VK_ARM_data_graph(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) + : tBase(Name, status) + { + } + + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.dataGraph = AvailableFeatures.dataGraph; + RequestedFeatures.dataGraphUpdateAfterBind = AvailableFeatures.dataGraphUpdateAfterBind; + RequestedFeatures.dataGraphSpecializationConstants = AvailableFeatures.dataGraphSpecializationConstants; + RequestedFeatures.dataGraphDescriptorBuffer = AvailableFeatures.dataGraphDescriptorBuffer; + RequestedFeatures.dataGraphShaderModule = AvailableFeatures.dataGraphShaderModule; + + // Forcing a few features while the extension is private: + RequestedFeatures.dataGraph = true; + } + + void PrintFeatures() const override; + void LookupFunctionPointers(VkInstance vkInstance) override + { + m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = reinterpret_cast( + vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM")); + m_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = reinterpret_cast( + vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM")); + } + + void LookupFunctionPointers(VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr) override + { + m_vkCreateDataGraphPipelinesARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkCreateDataGraphPipelinesARM")); + m_vkCreateDataGraphPipelineSessionARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkCreateDataGraphPipelineSessionARM")); + m_vkGetDataGraphPipelineSessionBindPointRequirementsARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelineSessionBindPointRequirementsARM")); + m_vkGetDataGraphPipelineSessionMemoryRequirementsARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelineSessionMemoryRequirementsARM")); + m_vkBindDataGraphPipelineSessionMemoryARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkBindDataGraphPipelineSessionMemoryARM")); + m_vkDestroyDataGraphPipelineSessionARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkDestroyDataGraphPipelineSessionARM")); + m_vkCmdDispatchDataGraphARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkCmdDispatchDataGraphARM")); + m_vkGetDataGraphPipelineAvailablePropertiesARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelineAvailablePropertiesARM")); + m_vkGetDataGraphPipelinePropertiesARM = reinterpret_cast( + fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelinePropertiesARM")); + } + + // Function pointers + PFN_vkCreateDataGraphPipelinesARM m_vkCreateDataGraphPipelinesARM = nullptr; + PFN_vkCreateDataGraphPipelineSessionARM m_vkCreateDataGraphPipelineSessionARM = nullptr; + PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM m_vkGetDataGraphPipelineSessionBindPointRequirementsARM = nullptr; + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM m_vkGetDataGraphPipelineSessionMemoryRequirementsARM = nullptr; + PFN_vkBindDataGraphPipelineSessionMemoryARM m_vkBindDataGraphPipelineSessionMemoryARM = nullptr; + PFN_vkDestroyDataGraphPipelineSessionARM m_vkDestroyDataGraphPipelineSessionARM = nullptr; + PFN_vkCmdDispatchDataGraphARM m_vkCmdDispatchDataGraphARM = nullptr; + PFN_vkGetDataGraphPipelineAvailablePropertiesARM m_vkGetDataGraphPipelineAvailablePropertiesARM = nullptr; + PFN_vkGetDataGraphPipelinePropertiesARM m_vkGetDataGraphPipelinePropertiesARM = nullptr; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = nullptr; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM m_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = nullptr; + }; + +#endif // VK_ARM_data_graph #if VK_KHR_timeline_semaphore struct Ext_VK_KHR_timeline_semaphore : public VulkanDeviceFeaturePropertiesExtensionHelper< @@ -556,7 +708,7 @@ namespace ExtensionHelper { using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; static constexpr auto Name = VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME; - explicit Ext_VK_KHR_timeline_semaphore( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : tBase( Name, status ) + explicit Ext_VK_KHR_timeline_semaphore( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) {} void PrintFeatures() const override; void PrintProperties() const override; @@ -571,27 +723,137 @@ namespace ExtensionHelper { using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; static constexpr auto Name = VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME; - explicit Ext_VK_KHR_synchronization2(VulkanExtension::eStatus status = VulkanExtension::eRequired) : tBase(Name, status) + explicit Ext_VK_KHR_synchronization2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : tBase(Name, status) {} void PrintFeatures() const override; void LookupFunctionPointers(VkInstance vkInstance) override; void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override {/*no device functions*/ } - PFN_vkQueueSubmit2KHR m_vkQueueSubmit2KHR = nullptr; + + PFN_vkCmdSetEvent2KHR m_vkCmdSetEvent2KHR = nullptr; + PFN_vkCmdResetEvent2KHR m_vkCmdResetEvent2KHR = nullptr; + PFN_vkCmdWaitEvents2KHR m_vkCmdWaitEvents2KHR = nullptr; + PFN_vkCmdPipelineBarrier2KHR m_vkCmdPipelineBarrier2KHR = nullptr; + PFN_vkQueueSubmit2KHR m_vkQueueSubmit2KHR = nullptr; + PFN_vkCmdWriteTimestamp2KHR m_vkCmdWriteTimestamp2KHR = nullptr; }; #endif // VK_KHR_synchronization2 +#if VK_QCOM_tile_properties + + struct Ext_VK_QCOM_tile_properties : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceTilePropertiesFeaturesQCOM, (VkStructureType)VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM> + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME; + explicit Ext_VK_QCOM_tile_properties( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ }; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override; + void PrintFeatures() const override; + PFN_vkGetDynamicRenderingTilePropertiesQCOM m_vkGetDynamicRenderingTilePropertiesQCOM = nullptr; + PFN_vkGetFramebufferTilePropertiesQCOM m_vkGetFramebufferTilePropertiesQCOM = nullptr; + }; + +#endif // VK_QCOM_tile_properties + +#if VK_KHR_ray_tracing_position_fetch + + struct Ext_VK_KHR_ray_tracing_position_fetch : public VulkanDeviceFeaturesExtensionHelper< + VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR> + { + static constexpr auto Name = VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME; + explicit Ext_VK_KHR_ray_tracing_position_fetch( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper( Name, status ) + {} + void PrintFeatures() const override; + }; + +#endif // VK_KHR_ray_tracing_position_fetch + +#if VK_EXT_scalar_block_layout + + struct Ext_VK_EXT_scalar_block_layout : public VulkanDeviceFeaturesExtensionHelper< + VkPhysicalDeviceScalarBlockLayoutFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT> + { + static constexpr auto Name = VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME; + explicit Ext_VK_EXT_scalar_block_layout( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper( Name, status ) + {} + void PrintFeatures() const override; + }; + +#endif // VK_EXT_scalar_block_layout + +#if VK_KHR_get_physical_device_properties2 + + // Instance extension + struct Ext_VK_KHR_get_physical_device_properties2 : public VulkanFunctionPointerExtensionHelper + { + using tBase = VulkanFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME; + explicit Ext_VK_KHR_get_physical_device_properties2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : tBase(Name, status) + {} + void LookupFunctionPointers(VkInstance vkInstance) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkGetPhysicalDeviceFeatures2KHR m_vkGetPhysicalDeviceFeatures2KHR = nullptr; + PFN_vkGetPhysicalDeviceFormatProperties2KHR m_vkGetPhysicalDeviceFormatProperties2KHR = nullptr; + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR m_vkGetPhysicalDeviceImageFormatProperties2KHR = nullptr; + PFN_vkGetPhysicalDeviceMemoryProperties2KHR m_vkGetPhysicalDeviceMemoryProperties2KHR = nullptr; + PFN_vkGetPhysicalDeviceProperties2KHR m_vkGetPhysicalDeviceProperties2KHR = nullptr; + }; + +#endif // VK_KHR_get_physical_device_properties2 + +#if VK_KHR_surface + + // Instance extension + struct Ext_VK_KHR_surface : public VulkanFunctionPointerExtensionHelper + { + using tBase = VulkanFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_SURFACE_EXTENSION_NAME; + explicit Ext_VK_KHR_surface( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void LookupFunctionPointers( VkInstance vkInstance ) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkDestroySurfaceKHR m_vkDestroySurfaceKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR m_vkGetPhysicalDeviceSurfaceFormatsKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR m_vkGetPhysicalDeviceSurfacePresentModesKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceSupportKHR m_vkGetPhysicalDeviceSurfaceSupportKHR = nullptr; + }; + +#endif // VK_KHR_surface + +#if VK_KHR_get_surface_capabilities2 + + // Instance extension + struct Ext_VK_KHR_get_surface_capabilities2 : public VulkanFunctionPointerExtensionHelper + { + using tBase = VulkanFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME; + explicit Ext_VK_KHR_get_surface_capabilities2( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void LookupFunctionPointers( VkInstance vkInstance ) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR m_vkGetPhysicalDeviceSurfaceCapabilities2KHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR m_vkGetPhysicalDeviceSurfaceFormats2KHR = nullptr; + }; + +#endif // VK_KHR_get_surface_capabilities2 + // // Vulkan 1.1 (VK_VERSION_1_1) provided features/properties. // Same interface as other extensions but do not need to be added to the list of extension names on vkCreateDevice. // - struct Vulkan_SubgroupPropertiesHook : public VulkanExtension + struct Vulkan_SubgroupPropertiesHook : public VulkanExtension { static constexpr auto Name = "SubgroupProperties"; + using tBase = VulkanExtension; Vulkan_SubgroupPropertiesHook& operator=( const Vulkan_SubgroupPropertiesHook& ) = delete; Vulkan_SubgroupPropertiesHook( const Vulkan_SubgroupPropertiesHook& ) = delete; - explicit Vulkan_SubgroupPropertiesHook( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanExtension( Name, status ), m_GetPhysicalDevicePropertiesHook( this ), m_VulkanDevicePropertiesPrintHook( this ) + explicit Vulkan_SubgroupPropertiesHook( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ), m_GetPhysicalDevicePropertiesHook( this ), m_VulkanDevicePropertiesPrintHook( this ) {} VkPhysicalDeviceSubgroupProperties Properties { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES }; @@ -609,12 +871,13 @@ namespace ExtensionHelper void PrintProperties() const; }; - struct Vulkan_StorageFeaturesHook : public VulkanExtension + struct Vulkan_StorageFeaturesHook : public VulkanExtension { static constexpr auto Name = "StorageFeatures"; + using tBase = VulkanExtension; Vulkan_StorageFeaturesHook& operator=( const Vulkan_StorageFeaturesHook& ) = delete; Vulkan_StorageFeaturesHook( const Vulkan_StorageFeaturesHook& ) = delete; - explicit Vulkan_StorageFeaturesHook( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanExtension( std::string(), status ), m_DeviceCreateInfoHook(this), m_GetPhysicalDeviceFeaturesHook(this), m_VulkanDeviceFeaturePrintHook(this) + explicit Vulkan_StorageFeaturesHook( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( std::string(), status ), m_DeviceCreateInfoHook(this), m_GetPhysicalDeviceFeaturesHook(this), m_VulkanDeviceFeaturePrintHook(this) {} VkPhysicalDevice16BitStorageFeatures AvailableFeatures { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR }; @@ -632,7 +895,7 @@ namespace ExtensionHelper } virtual void PrintFeatures() const; virtual void PopulateRequestedFeatures() { RequestedFeatures = AvailableFeatures; } - VkPhysicalDevice16BitStorageFeatures RequestedFeatures; + VkPhysicalDevice16BitStorageFeatures RequestedFeatures { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR }; }; }; // namespace diff --git a/framework/code/vulkan/renderTarget.cpp b/framework/code/vulkan/renderTarget.cpp index 55093f0..1760afe 100644 --- a/framework/code/vulkan/renderTarget.cpp +++ b/framework/code/vulkan/renderTarget.cpp @@ -175,48 +175,6 @@ bool CRenderTarget::InitializeResolve(const std::span Resol return true; } -//----------------------------------------------------------------------------- -bool CRenderTarget::InitializeColor(const SwapchainBuffers& SwapchainBuffer) -//----------------------------------------------------------------------------- -{ - LOGI("Creating Swapchain Render Target (%s): (%d x %d)", m_Name.c_str(), m_Width, m_Height); - - m_ColorAttachments.clear(); - m_ColorAttachments.reserve(1); - m_ClearColorValues.clear(); - m_ClearColorValues.resize(1, {{0.0f,0.0f,0.0f,0.0f}}); - - char szName[256]; - - sprintf(szName, "%s: Swapchain", m_Name.c_str()); - - m_ColorAttachments.emplace_back(TextureVulkan(m_Width, m_Height, 1, 0, m_pVulkan->m_SurfaceFormat, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, SwapchainBuffer.image, VK_NULL_HANDLE, VK_NULL_HANDLE, SwapchainBuffer.view)); - - return true; -} - -//----------------------------------------------------------------------------- -bool CRenderTarget::InitializeResolve(const SwapchainBuffers& SwapchainBuffer) -//----------------------------------------------------------------------------- -{ - m_ResolveAttachments.clear(); - - if (!m_Msaa.empty()) - { - LOGI("Creating Swapchain resolved Render Target (%s): (%d x %d)", m_Name.c_str(), m_Width, m_Height); - - m_ResolveAttachments.reserve(1); - - char szName[256]; - - sprintf(szName, "%s: resolve Swapchain", m_Name.c_str()); - - m_ResolveAttachments.emplace_back(TextureVulkan(m_Width, m_Height, 1, 0, m_pVulkan->m_SurfaceFormat, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, SwapchainBuffer.image, VK_NULL_HANDLE, VK_NULL_HANDLE, SwapchainBuffer.view)); - } - - return true; -} - //----------------------------------------------------------------------------- bool CRenderTarget::InitializeFrameBuffer(VkRenderPass renderPass, const std::span ColorAttachments, const TextureVulkan* pDepthAttachment, const std::span ResolveAttachments, const TextureVulkan* pVRSAttachment, VkFramebuffer* pFramebuffer ) //----------------------------------------------------------------------------- diff --git a/framework/code/vulkan/timerPool.cpp b/framework/code/vulkan/timerPool.cpp index fd9e93b..82a70ad 100644 --- a/framework/code/vulkan/timerPool.cpp +++ b/framework/code/vulkan/timerPool.cpp @@ -40,7 +40,7 @@ bool TimerPoolBase::Initialize( uint32_t maxTimers ) QueryInfo.pipelineStatistics = 0; const auto* hostQueryResetExt = m_Vulkan.GetExtension(); - if (!hostQueryResetExt || hostQueryResetExt->Status != VulkanExtension::eLoaded) + if (!hostQueryResetExt || hostQueryResetExt->Status != VulkanExtensionStatus::eLoaded) { LOGE("TimerPoolBase functionality requires VK_EXT_host_query_reset extension"); // Likely missing appConfig.RequiredExtension() (or hardware does not support VK_EXT_host_query_reset) // If we move to requiring Vulkan 1.2 then we can remove this check and use vkResetQueryPool (no extension needed in 1.2) diff --git a/framework/code/vulkan/vulkan.cpp b/framework/code/vulkan/vulkan.cpp index 5c66a3f..e88682f 100644 --- a/framework/code/vulkan/vulkan.cpp +++ b/framework/code/vulkan/vulkan.cpp @@ -52,8 +52,15 @@ VkDebugReportCallbackEXT gDebugCallbackHandle = VK_NULL_H // Global access to GetDeviceProcAddr PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr = nullptr; -// If running on HLM, we don't want to use validation layers. +// Validation enables (from config) VAR(bool, gEnableValidation, true, kVariableNonpersistent); +VAR(bool, gEnableValidationBestPractices, false, kVariableNonpersistent); +VAR(bool, gEnableValidationGpu, false, kVariableNonpersistent); +VAR(bool, gEnableValidationDebugPrintf, false, kVariableNonpersistent); +VAR(bool, gEnableValidationSynchronization, false, kVariableNonpersistent); + +// Override the physical device number +VAR(int, gPhysicalDevice, -1, kVariableNonpersistent); // Forward declaration of helper functions bool CheckVkError(const char* pPrefix, VkResult CheckVal); @@ -109,8 +116,8 @@ Vulkan::Vulkan() // Vulkan Objects m_VulkanInstance = VK_NULL_HANDLE; + m_VulkanApiVersion = 0; m_VulkanGpuCount = 0; - m_VulkanGpuIdx = 0; m_pDeviceLayerNames.clear(); @@ -131,6 +138,7 @@ Vulkan::Vulkan() #endif // defined (OS_ANDROID) m_VulkanGraphicsQueueSupportsCompute = false; + m_VulkanGraphicsQueueSupportsDataGraph = false; m_VulkanDevice = VK_NULL_HANDLE; @@ -184,9 +192,7 @@ Vulkan::~Vulkan() // Debug/Validation Layers m_InstanceLayerProps.clear(); - m_InstanceExtensionProps.clear(); m_InstanceLayerNames.clear(); - m_InstanceExtensionNames.clear(); } @@ -227,12 +233,18 @@ bool Vulkan::Init(uintptr_t windowHandle, uintptr_t hInst, const Vulkan::tSelect if (!InitSurface()) return false; + if (!InitDataGraph()) + return false; + if (!InitCompute()) return false; if (!InitDevice()) return false; + if (!GetDataGraphProcessingEngine()) + return false; + if (!InitCommandPools()) return false; @@ -660,51 +672,107 @@ bool Vulkan::RegisterKnownExtensions() //----------------------------------------------------------------------------- { // - // Add any Vulkan Device Extensions we must have (expected to be a short list) + // Add any Vulkan Instance and Device Extensions we must have (expected to be a short list) // + for (auto& appExtension : m_ConfigOverride.AdditionalVulkanInstanceExtensions) + { + auto insertIt = m_InstanceExtensions.m_Extensions.insert(std::move(appExtension)); + assert(insertIt.second); // check we didnt add a duplicate! + } + for ( auto& appExtension : m_ConfigOverride.AdditionalVulkanDeviceExtensions ) { auto insertIt = m_DeviceExtensions.m_Extensions.insert( std::move( appExtension ) ); assert( insertIt.second ); // check we didnt add a duplicate! } + // + // Add the Instance extensions we need + // + m_ExtKhrSurface = m_InstanceExtensions.AddExtension(); + +#if defined(VK_USE_PLATFORM_WIN32_KHR) + m_InstanceExtensions.AddExtension( VK_KHR_WIN32_SURFACE_EXTENSION_NAME, VulkanExtensionStatus::eRequired ); +#endif // VK_USE_PLATFORM_WIN32_KHR + +#if defined(VK_USE_PLATFORM_ANDROID_KHR) + m_InstanceExtensions.AddExtension( VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, VulkanExtensionStatus::eRequired ); +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#if defined(USES_VULKAN_DEBUG_LAYERS) + // If this is NOT set, we cannot use the debug extensions! (Find vkCreateDebugReportCallback) + if (gEnableValidation) + { + m_InstanceExtensions.AddExtension( VK_EXT_DEBUG_REPORT_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + m_InstanceExtensions.AddExtension( VK_EXT_DEBUG_UTILS_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + } +#endif // USES_VULKAN_DEBUG_LAYERS + + // This extension may enable more than the default VK_COLOR_SPACE_SRGB_NONLINEAR_KHR color space (enable if available) + m_InstanceExtensions.AddExtension( VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + + // Extension to allow vkGetPhysicalDeviceProperties2KHR (which is provided by Vulkan 1.1 as vkGetPhysicalDeviceProperties2). May already have been requested/required by the application. + m_ExtKhrGetPhysicalDeviceProperties2 = m_InstanceExtensions.GetExtension(); + if (!m_ExtKhrGetPhysicalDeviceProperties2) + m_ExtKhrGetPhysicalDeviceProperties2 = m_InstanceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + + // This extension allows us to call VkPhysicalDeviceSurfaceInfo2KHR (enable if available) + m_ExtSurfaceCapabilities2 = m_InstanceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + + // This extension allows us to use VkValidationFeaturesEXT (>0 if available) +#if defined(USES_VULKAN_DEBUG_LAYERS) + if (gEnableValidation) + { + m_ExtValidationFeatures = m_InstanceExtensions.AddExtension( VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + } +#endif // defined(USES_VULKAN_DEBUG_LAYERS) + +#if defined (OS_ANDROID) + // This extension allow us to use Android Hardware Buffers + m_InstanceExtensions.AddExtension( "VK_KHR_external_memory_capabilities", VulkanExtensionStatus::eOptional ); +#endif // defined (OS_ANDROID) + // This extension says the device must be able to present images directly to the screen. - m_DeviceExtensions.AddExtension( VK_KHR_SWAPCHAIN_EXTENSION_NAME, VulkanExtension::eRequired ); + m_DeviceExtensions.AddExtension( VK_KHR_SWAPCHAIN_EXTENSION_NAME, VulkanExtensionStatus::eRequired ); // // Add extensions we would always LIKE to initialize (if they exist). // - m_DeviceExtensions.AddExtension( VulkanExtension::eOptional ); + m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); #if defined(USES_VULKAN_DEBUG_LAYERS) - m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtension::eOptional ); - m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtension::eOptional ); + m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); #else - m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtension::eUninitialized ); - m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtension::eUninitialized ); + m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eUninitialized ); + m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eUninitialized ); #endif - m_DeviceExtensions.AddExtension( VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, VulkanExtension::eOptional ); - m_ExtHdrMetadata = m_DeviceExtensions.AddExtension( VulkanExtension::eOptional ); - m_DeviceExtensions.AddExtension( VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VulkanExtension::eOptional ); - m_DeviceExtensions.AddExtension( "VK_QCOM_render_pass_transform", VulkanExtension::eOptional); + m_DeviceExtensions.AddExtension( VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + m_ExtHdrMetadata = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( "VK_QCOM_render_pass_transform", VulkanExtensionStatus::eOptional); // This extension allows us to set VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM (enable if available) - m_DeviceExtensions.AddExtension( "VK_QCOM_render_pass_shader_resolve", VulkanExtension::eOptional); - m_DeviceExtensions.AddExtension( VulkanExtension::eOptional ); - m_DeviceExtensions.AddExtension( VulkanExtension::eOptional ); + m_DeviceExtensions.AddExtension( "VK_QCOM_render_pass_shader_resolve", VulkanExtensionStatus::eOptional); + m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); - m_SubgroupProperties = m_Vulkan11ProvidedExtensions.AddExtension( VulkanExtension::eRequired ); - m_StorageFeatures = m_Vulkan11ProvidedExtensions.AddExtension( VulkanExtension::eRequired ); + m_SubgroupProperties = m_Vulkan11ProvidedExtensions.AddExtension( VulkanExtensionStatus::eRequired ); + m_StorageFeatures = m_Vulkan11ProvidedExtensions.AddExtension( VulkanExtensionStatus::eRequired ); #if defined (OS_ANDROID) - m_DeviceExtensions.AddExtension( VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME, VulkanExtension::eOptional ); + m_DeviceExtensions.AddExtension( VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); #endif m_ExtKhrSynchronization2 = m_DeviceExtensions.GetExtension(); m_ExtKhrDrawIndirectCount = m_DeviceExtensions.GetExtension(); m_ExtRenderPass2 = m_DeviceExtensions.GetExtension(); + m_ExtArmTensors = m_DeviceExtensions.GetExtension(); + m_ExtArmDataGraph = m_DeviceExtensions.GetExtension(); m_ExtFragmentShadingRate = m_DeviceExtensions.GetExtension(); + m_ExtMeshShader = m_DeviceExtensions.GetExtension(); // Now we have a list of all the extensions we know about we can ask them to Register themselves with whatever 'hooks' they require. + m_InstanceExtensions.RegisterAll(*this); m_DeviceExtensions.RegisterAll( *this ); m_Vulkan11ProvidedExtensions.RegisterAll( *this ); @@ -720,7 +788,10 @@ bool Vulkan::CreateInstance() // ******************************** // Debug/Validation/Whatever Layers // ******************************** - InitInstanceExtensions(); + if (!InitInstanceExtensions()) + { + return false; + } // ******************************** // Create the Vulkan Instance @@ -735,53 +806,68 @@ bool Vulkan::CreateInstance() AppInfoStruct.applicationVersion = 0; AppInfoStruct.pEngineName = "VkFrameworkEngine"; AppInfoStruct.engineVersion = 0; - AppInfoStruct.apiVersion = VK_MAKE_VERSION(1, 1, 0); // VK_API_VERSION = VK_MAKE_VERSION(1, 1, 0). + AppInfoStruct.apiVersion = m_ConfigOverride.ApiVerson.value_or( VK_MAKE_VERSION( 1, 1, 0 ) ); // Creation information for the instance points to details about // the application, and also the list of extensions to enable. + std::vector InstanceExtensionNames; + InstanceExtensionNames.reserve(m_InstanceExtensions.m_Extensions.size()); + for (const auto& e : m_InstanceExtensions.m_Extensions) + if (e.second->Status == VulkanExtensionStatus::eLoaded) + InstanceExtensionNames.push_back(e.first.c_str()); + VkInstanceCreateInfo InstanceInfoStruct {VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO}; InstanceInfoStruct.flags = 0; InstanceInfoStruct.pApplicationInfo = &AppInfoStruct; InstanceInfoStruct.enabledLayerCount = (uint32_t) m_InstanceLayerNames.size(); InstanceInfoStruct.ppEnabledLayerNames = m_InstanceLayerNames.data(); - InstanceInfoStruct.enabledExtensionCount = (uint32_t) m_InstanceExtensionNames.size(); - InstanceInfoStruct.ppEnabledExtensionNames = m_InstanceExtensionNames.data(); + InstanceInfoStruct.enabledExtensionCount = (uint32_t) InstanceExtensionNames.size(); + InstanceInfoStruct.ppEnabledExtensionNames = InstanceExtensionNames.data(); // // Potentially add Validation layer feature settings. // VkValidationFeaturesEXT ValidationFeaturesStruct { VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT }; - if (m_ExtValidationFeaturesVersion >= 2) // spec version 1 does not support 'best practices' + std::vector ValidationFeaturesEnables; + if (m_ExtValidationFeatures && m_ExtValidationFeatures->Version >= 2) // spec version 1 does not support 'best practices' { #if (VK_EXT_VALIDATION_FEATURES_SPEC_VERSION < 4) // if our header does not define the spec version 4 then add the 'missing' enable #define VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT (4) #endif - std::vector enables; -#if defined(VULKAN_VALIDATION_ENABLE_BEST_PRACTICES) - enables.push_back(VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT); -#endif // VALIDATION_ENABLE_BEST_PRACTICES -#if defined(VULKAN_VALIDATION_ENABLE_SYNCHRONIZATION) - if (m_ExtValidationFeaturesVersion >= 4) // spec versions before 4 do not support synchronization validation + if (gEnableValidationBestPractices) { - enables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT); + LOGI( "Enabling VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT in Validation Layer" ); + ValidationFeaturesEnables.push_back(VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT); } -#endif // VULKAN_VALIDATION_ENABLE_SYNCHRONIZATION -#if defined(VULKAN_VALIDATION_ENABLE_SYNCHRONIZATION) - if (m_ExtValidationFeaturesVersion >= 4) // spec versions before 4 do not support synchronization validation + if (gEnableValidationGpu) { - enables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT); + LOGI("Enabling VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT in Validation Layer"); + LOGI("Enabling VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT in Validation Layer"); + ValidationFeaturesEnables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT); + ValidationFeaturesEnables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT ); } -#endif // VULKAN_VALIDATION_ENABLE_SYNCHRONIZATION -#if defined(VULKAN_VALIDATION_ENABLE_PRINTF) - if (m_ExtValidationFeaturesVersion >= 3) // spec versions before 3 do not support printf + if (gEnableValidationDebugPrintf && m_ExtValidationFeatures->Version >= 3) // spec versions before 3 do not support printf { - enables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT); + if (gEnableValidationGpu) + { + LOGW("Cannot use gEnableValidationDebugPrintf at the same time as gEnableValidationGpu"); + } + else + { + LOGI("Enabling VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT in Validation Layer"); + ValidationFeaturesEnables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT); + } + } + if (gEnableValidationSynchronization && m_ExtValidationFeatures->Version >= 4) // spec versions before 4 do not support synchronization validation + { + LOGI("Enabling VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT in Validation Layer"); + ValidationFeaturesEnables.push_back((VkValidationFeatureEnableEXT)VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT); } -#endif // VULKAN_VALIDATION_ENABLE_PRINTF - if (!enables.empty()) + + if (!ValidationFeaturesEnables.empty()) { - ValidationFeaturesStruct.enabledValidationFeatureCount = (uint32_t) enables.size(); - ValidationFeaturesStruct.pEnabledValidationFeatures = enables.data(); + ValidationFeaturesStruct.enabledValidationFeatureCount = (uint32_t) ValidationFeaturesEnables.size(); + ValidationFeaturesStruct.pEnabledValidationFeatures = ValidationFeaturesEnables.data(); } InstanceInfoStruct.pNext = &ValidationFeaturesStruct; } @@ -798,7 +884,7 @@ bool Vulkan::CreateInstance() } LOGI("Requesting Extensions:"); - for (const auto& ExtensionName: m_InstanceExtensionNames) + for (const auto& ExtensionName: InstanceExtensionNames) { LOGI(" %s", ExtensionName); } @@ -839,11 +925,71 @@ bool Vulkan::CreateInstance() { return false; } + m_VulkanApiVersion = AppInfoStruct.apiVersion; + return true; } //----------------------------------------------------------------------------- -void Vulkan::InitInstanceExtensions() +// Parse ExtensionProps for extensions in RegisteredExtensions. +// If found set the registered extension's version and change Status to eLoaded if requested to load (status eOptional or eRequired). +// If not found add to the list of RegisteredExtensions (with a eUninitialized status) +template +static bool ParseExtensionProperties( const std::vector& ExtensionProps, Vulkan::RegisteredExtensions& RegisteredExtensions ) +//----------------------------------------------------------------------------- +{ + bool success = true; + for (uint32_t uiIndx = 0; uiIndx < (uint32_t)ExtensionProps.size(); uiIndx++) + { + const VkExtensionProperties* const pOneItem = &ExtensionProps[uiIndx]; + LOGI( " %d: %s", uiIndx, pOneItem->extensionName ); + + // Need to check if we found specific device extensions + { + std::string extensionName = pOneItem->extensionName; + auto* pExtension = RegisteredExtensions.GetExtension( extensionName ); + if (pExtension) + { + // Found an already known extension, see if we want to do anything with it. + switch (pExtension->Status) + { + case VulkanExtensionStatus::eOptional: + case VulkanExtensionStatus::eRequired: + pExtension->Status = VulkanExtensionStatus::eLoaded; // strictly not 'yet' loaded but will be shortly + break; + case VulkanExtensionStatus::eLoaded: + case VulkanExtensionStatus::eUninitialized: + break; + } + pExtension->Version = pOneItem->specVersion; + } + else + { + // Add to the list of known extensions (assume we dont want to load it) + RegisteredExtensions.AddExtension( extensionName, VulkanExtensionStatus::eUninitialized, pOneItem->specVersion ); + } + } + } + + // Do a final check of extensions we requested (as required or optional) that are not present in the list of available extensions. + for (auto& extension : RegisteredExtensions.m_Extensions) + { + if (extension.second->Status == VulkanExtensionStatus::eRequired) + { + LOGE( "Required Vulkan extension \"%s\" was not found", extension.first.c_str() ); + success = false; + } + else if (extension.second->Status == VulkanExtensionStatus::eOptional) + { + // If requested as optional but not available then set to be uninitialized. + extension.second->Status = VulkanExtensionStatus::eUninitialized; + } + } + return success; +} + +//----------------------------------------------------------------------------- +bool Vulkan::InitInstanceExtensions() //----------------------------------------------------------------------------- { VkResult RetVal; @@ -856,7 +1002,7 @@ void Vulkan::InitInstanceExtensions() RetVal = vkEnumerateInstanceLayerProperties(&NumInstanceLayerProps, nullptr); if (!CheckVkError("vkEnumerateInstanceLayerProperties(nullptr)", RetVal)) { - return; + return false; } LOGI("Found %d Vulkan Instance Layer Properties", NumInstanceLayerProps); @@ -869,7 +1015,7 @@ void Vulkan::InitInstanceExtensions() RetVal = vkEnumerateInstanceLayerProperties(&NumInstanceLayerProps, m_InstanceLayerProps.data()); if (!CheckVkError("vkEnumerateInstanceLayerProperties()", RetVal)) { - return; + return false; } for (uint32_t uiIndx = 0; uiIndx < NumInstanceLayerProps; uiIndx++) @@ -894,20 +1040,22 @@ void Vulkan::InitInstanceExtensions() RetVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, nullptr); if (!CheckVkError("vkEnumerateInstanceExtensionProperties(nullptr)", RetVal)) { - return; + return false; } + std::vector InstanceExtensionProps; + LOGI("Found %d Vulkan Instance Extension Properties", NumInstanceExtensionProps); if (NumInstanceExtensionProps > 0) { // Allocate memory for the structures... - m_InstanceExtensionProps.resize(NumInstanceExtensionProps); + InstanceExtensionProps.resize(NumInstanceExtensionProps); // ... then read the structures from the driver - RetVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, m_InstanceExtensionProps.data()); + RetVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, InstanceExtensionProps.data()); if (!CheckVkError("vkEnumerateInstanceExtensionProperties()", RetVal)) { - return; + return false; } } @@ -919,61 +1067,29 @@ void Vulkan::InitInstanceExtensions() RetVal = vkEnumerateInstanceExtensionProperties("VK_LAYER_KHRONOS_validation", &NumValidationLayerInstanceExtensionProps, nullptr); if (!CheckVkError("vkEnumerateInstanceExtensionProperties(VK_LAYER_KHRONOS_validation)", RetVal)) { - return; + return false; } LOGI("Found %d Vulkan VK_LAYER_KHRONOS_validation Instance Extension Properties", NumValidationLayerInstanceExtensionProps); if (NumValidationLayerInstanceExtensionProps > 0) { // Allocate memory for the structures... - m_InstanceExtensionProps.resize(NumInstanceExtensionProps + NumValidationLayerInstanceExtensionProps); + InstanceExtensionProps.resize(NumInstanceExtensionProps + NumValidationLayerInstanceExtensionProps); // ... then read the structures from the driver - RetVal = vkEnumerateInstanceExtensionProperties("VK_LAYER_KHRONOS_validation", &NumValidationLayerInstanceExtensionProps, &m_InstanceExtensionProps[NumInstanceExtensionProps]); + RetVal = vkEnumerateInstanceExtensionProperties("VK_LAYER_KHRONOS_validation", &NumValidationLayerInstanceExtensionProps, &InstanceExtensionProps[NumInstanceExtensionProps]); if (!CheckVkError("vkEnumerateInstanceExtensionProperties(VK_LAYER_KHRONOS_validation)", RetVal)) { - return; + return false; } } NumInstanceExtensionProps += NumValidationLayerInstanceExtensionProps; } - if (NumInstanceExtensionProps > 0) + if (!ParseExtensionProperties( InstanceExtensionProps, m_InstanceExtensions )) { - for (uint32_t uiIndx = 0; uiIndx < NumInstanceExtensionProps; uiIndx++) - { - const VkExtensionProperties& rOneItem = m_InstanceExtensionProps[uiIndx]; - LOGI(" %d: %s (%u)", uiIndx, rOneItem.extensionName, rOneItem.specVersion); - - if (!strcmp(VK_KHR_SURFACE_EXTENSION_NAME, rOneItem.extensionName)) - { - // Found one of the extensions we are looking for - } - else if (!strcmp(VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME, rOneItem.extensionName)) - { - m_ExtSwapchainColorspaceAvailable = true; - } - else if (!strcmp(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, rOneItem.extensionName)) - { - m_ExtSurfaceCapabilities2Available = true; - } - else if (!strcmp(VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME, rOneItem.extensionName)) - { - m_ExtValidationFeaturesVersion = rOneItem.specVersion; - } -#if defined (OS_ANDROID) - else if (!strcmp("VK_KHR_external_memory_capabilities", rOneItem.extensionName)) - { - m_ExtExternMemoryCapsAvailable = true; - } -#endif // defined (OS_ANDROID) -#if defined(USES_VULKAN_DEBUG_LAYERS) - else if (!strcmp( VK_EXT_DEBUG_UTILS_EXTENSION_NAME, rOneItem.extensionName )) - { - m_ExtDebugUtilsAvailable = true; - } -#endif // USES_VULKAN_DEBUG_LAYERS - } + LOGE("Required Vulkan Instance extensions missing."); + return false; } } @@ -985,77 +1101,6 @@ void Vulkan::InitInstanceExtensions() } #endif // USES_VULKAN_DEBUG_LAYERS - // Add the extensions we need - m_InstanceExtensionNames.push_back( VK_KHR_SURFACE_EXTENSION_NAME ); - -#if defined(VK_USE_PLATFORM_WIN32_KHR) - m_InstanceExtensionNames.push_back( VK_KHR_WIN32_SURFACE_EXTENSION_NAME ); -#endif // VK_USE_PLATFORM_WIN32_KHR - -#if defined(VK_USE_PLATFORM_ANDROID_KHR) - m_InstanceExtensionNames.push_back( VK_KHR_ANDROID_SURFACE_EXTENSION_NAME ); -#endif // VK_USE_PLATFORM_ANDROID_KHR - -#if defined(USES_VULKAN_DEBUG_LAYERS) - // If this is NOT set, we cannot use the debug extensions! (Find vkCreateDebugReportCallback) - if (gEnableValidation && m_LayerKhronosValidationAvailable) - { - m_InstanceExtensionNames.push_back( VK_EXT_DEBUG_REPORT_EXTENSION_NAME ); - } - if (gEnableValidation && m_ExtDebugUtilsAvailable) - { - m_InstanceExtensionNames.push_back( VK_EXT_DEBUG_UTILS_EXTENSION_NAME ); - } -#endif // USES_VULKAN_DEBUG_LAYERS - - // This extension may enable more than the default VK_COLOR_SPACE_SRGB_NONLINEAR_KHR color space (enable if available) - if (m_ExtSwapchainColorspaceAvailable) - { - m_InstanceExtensionNames.push_back( VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME ); - } - - // This extension allows us to call VkPhysicalDeviceSurfaceInfo2KHR (enable if available) - if (m_ExtSurfaceCapabilities2Available) - { - m_InstanceExtensionNames.push_back( VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME ); - } - - // This extension allows us to use VkValidationFeaturesEXT (>0 if available) -#if defined(USES_VULKAN_DEBUG_LAYERS) - if (gEnableValidation && m_ExtValidationFeaturesVersion > 0) - { - m_InstanceExtensionNames.push_back( VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME ); - } -#endif // defined(USES_VULKAN_DEBUG_LAYERS) - - m_InstanceExtensionNames.push_back( VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME ); // Needed by Nvidia VK_KHR_deferred_host_operations - -#if defined (OS_ANDROID) - // This extension allow us to use Android Hardware Buffers - // The basic problem is that there is a device extension requirement chain: - // VK_ANDROID_external_memory_android_hardware_buffer (Requires) - // VK_KHR_external_memory (Requires) - // VK_KHR_external_memory_capabilities <= Instance Extension!!! - // So we do the instance extensions before we get to handling the device extensions! - // Rather than rework the whole thing and check the device extensions here, just request it here. - if (m_ExtExternMemoryCapsAvailable) - { - // LOGE("VK_KHR_external_memory_capabilities is added as instance extension %d", m_NumInstanceExtensions); - m_InstanceExtensionNames.push_back( "VK_KHR_external_memory_capabilities" ); - } -#endif // defined (OS_ANDROID) - - { - // Sort alphabetically (can search using std::lower_bound) - std::sort(std::begin(m_InstanceExtensionNames), std::end(m_InstanceExtensionNames), [](auto a, auto b) { return strcmp(a, b) < 0; }); - size_t outIdx = 0; - for (size_t inIdx = 0; inIdx < m_InstanceExtensionNames.size(); ++inIdx) - if (inIdx == 0 || strcmp(m_InstanceExtensionNames[outIdx-1], m_InstanceExtensionNames[inIdx]) != 0) - ++outIdx; - - // Remove duplicates - m_InstanceExtensionNames.resize(outIdx); - } { // Sort alphabetically (can search using std::lower_bound) std::sort(std::begin(m_InstanceLayerNames), std::end(m_InstanceLayerNames), [](auto a, auto b) { return strcmp(a, b) < 0; }); @@ -1067,6 +1112,7 @@ void Vulkan::InitInstanceExtensions() // Remove duplicates m_InstanceLayerNames.resize(outIdx); } + return true; } //----------------------------------------------------------------------------- @@ -1115,6 +1161,21 @@ bool Vulkan::GetPhysicalDevices() DumpDeviceInfo( DeviceFeatures, DeviceProperties ); + if (gPhysicalDevice >= 0) + { + LOGI( "Forcing physical device: (config gPhysicalDevice=%d).\n", gPhysicalDevice ); + + if (gPhysicalDevice >= DeviceProperties.size()) + { + LOGE( "Forced physical device out of range. Reverting to automatic selection.\n" ); + m_VulkanGpuIdx = (uint32_t)GetBestVulkanPhysicalDeviceId( DeviceProperties ); + } + else + { + m_VulkanGpuIdx = gPhysicalDevice; + } + } + m_VulkanGpuIdx = (uint32_t) GetBestVulkanPhysicalDeviceId( DeviceProperties ); LOGI("Using Vulkan Device (GPU): %d \"%s\"", m_VulkanGpuIdx, DeviceProperties[m_VulkanGpuIdx].Base.properties.deviceName); @@ -1137,8 +1198,8 @@ bool Vulkan::GetPhysicalDevices() // Get Memory information and properties - this is required later, when we begin // allocating buffers to store data. - if (fpGetPhysicalDeviceMemoryProperties2) - fpGetPhysicalDeviceMemoryProperties2(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties); + if (m_ExtKhrGetPhysicalDeviceProperties2->Status == VulkanExtensionStatus::eLoaded) + m_ExtKhrGetPhysicalDeviceProperties2->m_vkGetPhysicalDeviceMemoryProperties2KHR(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties); else vkGetPhysicalDeviceMemoryProperties(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties.memoryProperties); @@ -1155,6 +1216,144 @@ bool Vulkan::GetPhysicalDevices() return true; } +//----------------------------------------------------------------------------- +bool Vulkan::GetDataGraphProcessingEngine() +//----------------------------------------------------------------------------- +{ + if (!m_VulkanGraphicsQueueSupportsDataGraph) + { + return true; + } + + // Force-enable the extension until it's turned into public (we check "Ext_VK_ARM_data_graph->AvailableFeatures.dataGraph" for HW support). +#if defined(OS_ANDROID) + { + auto* Ext_VK_ARM_tensors = static_cast(m_DeviceExtensions.GetExtension(VK_ARM_TENSORS_EXTENSION_NAME)); + auto* Ext_VK_ARM_data_graph = static_cast(m_DeviceExtensions.GetExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME)); + auto fpGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(GetVulkanInstance(), "vkGetDeviceProcAddr"); + if (Ext_VK_ARM_tensors + && Ext_VK_ARM_data_graph + && Ext_VK_ARM_data_graph->AvailableFeatures.dataGraph + && fpGetDeviceProcAddr) + { + LOGI("Forcing registering and enabling Graph Pipelines extensions for Android"); + + Ext_VK_ARM_tensors->Status = VulkanExtensionStatus::eLoaded; + Ext_VK_ARM_tensors->LookupFunctionPointers(m_VulkanDevice, fpGetDeviceProcAddr); + Ext_VK_ARM_tensors->LookupFunctionPointers(m_VulkanInstance); + + Ext_VK_ARM_data_graph->Status = VulkanExtensionStatus::eLoaded; + Ext_VK_ARM_data_graph->LookupFunctionPointers(m_VulkanDevice, fpGetDeviceProcAddr); + Ext_VK_ARM_data_graph->LookupFunctionPointers(m_VulkanInstance); + } + } +#endif + + LOGI("************************************"); + LOGI("*** DATA GRAPH PROCESSING ENGINE ***"); + LOGI("************************************"); + + const auto& data_graph_extension = GetExtension(); + if (!data_graph_extension) + { + return false; + } + + uint32_t propCount = 0; + data_graph_extension->m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + m_VulkanGpu, + m_VulkanQueues[Vulkan::eDataGraphQueue].QueueFamilyIndex, + &propCount, + nullptr); + std::vector dataGraphProps = std::vector(propCount); + data_graph_extension->m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + m_VulkanGpu, + m_VulkanQueues[Vulkan::eDataGraphQueue].QueueFamilyIndex, + &propCount, + dataGraphProps.data()); + + LOGI("*** Checking queue data graph props:"); + LOGI("*** \tpropCount: %d", propCount); + bool validEngineAvailable = false; + for (uint32_t j = 0; j < propCount; j++) + { + LOGI("*** \t\tEngine:"); + LOGI("*** \t\t\tType: 0x%x", dataGraphProps[j].engine.type); + LOGI("*** \t\t\tisForeign: %d", static_cast(dataGraphProps[j].engine.isForeign)); + LOGI("*** \t\tOperation:"); + LOGI("*** \t\t\toperationType: 0x%x", dataGraphProps[j].operation.operationType); + LOGI("*** \t\t\toperationType: %s", dataGraphProps[j].operation.name); + LOGI("*** \t\t\toperationType: %d", dataGraphProps[j].operation.version); + //if ((dataGraphProps[j].engine.type == VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_ARM) && + // (dataGraphProps[j].operation.operationType == VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_ARM )) + { + // Should also verify operation name and version to ensure compatibility with offline compiler + m_VulkanDataGraphProcessingEngine = dataGraphProps[j].engine; + break; + } + } + + LOGI("Ensuring Model <-> Device Capabilities support"); + { + // NOTE: Here you would normally compre the device limits with the graph you want to execute, you should + // make sure the tensor dimensions (VkPhysicalDeviceTensorPropertiesARM) are big enough to handle your model. + } + + LOGI("Checking for Tensor Storage Format Support"); + { + if(const auto& physical_device_properties2 = GetExtension(); + physical_device_properties2 && physical_device_properties2->m_vkGetPhysicalDeviceFormatProperties2KHR) + { + VkTensorFormatPropertiesARM tensorFmtProps = {}; + VkFormatProperties2 f32Props = {}; + + tensorFmtProps.sType = VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM; + f32Props.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; + f32Props.pNext = &tensorFmtProps; + + physical_device_properties2->m_vkGetPhysicalDeviceFormatProperties2KHR(m_VulkanGpu, VK_FORMAT_R32_SFLOAT, &f32Props); + LOGI("*** \t\t\ttensorFmtProps.linearTilingTensorFeatures: %d", static_cast(tensorFmtProps.linearTilingTensorFeatures)); + LOGI("*** \t\t\ttensorFmtProps.optimalTilingTensorFeatures: %d", static_cast(tensorFmtProps.optimalTilingTensorFeatures)); + + if ((tensorFmtProps.linearTilingTensorFeatures & VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM) == 0) + { + LOGI("*** \t\t\t - NOTE: Device doesn't support tensor storage format"); + } + } + } + + LOGI("Ensuring Engine Synchronization Support"); + { + VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM info = {}; + info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM; + info.queueFamilyIndex = m_VulkanQueues[Vulkan::eDataGraphQueue].QueueFamilyIndex; + info.engineType = m_VulkanDataGraphProcessingEngine.type; + VkQueueFamilyDataGraphProcessingEnginePropertiesARM engineProps = {}; + engineProps.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM; + + data_graph_extension->m_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(m_VulkanGpu, &info, &engineProps); + + // NOTE: These are only needed if you are using external objects (memory, synchronization, etc.). For this sample we only + // care about Vulkan primitives, but if you are using e.g. Android buffers, you should ensure they are supported first. +#if 0 + if ((engineProps.foreignSemaphoreHandleTypes & VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT) == 0) + { + return false; + } + if ((engineProps.foreignMemoryeHandleTypes & VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID) == 0) + { + return false; + } +#endif + } + + LOGI("************************************"); + LOGI("************************************"); + LOGI("************************************"); + + return true; +} + //----------------------------------------------------------------------------- bool Vulkan::InitDeviceExtensions() //----------------------------------------------------------------------------- @@ -1176,18 +1375,19 @@ bool Vulkan::InitDeviceExtensions() if (NumDeviceLayerProps > 0) { // Allocate memory for the structures... - m_pDeviceLayerProps.resize(NumDeviceLayerProps, {}); + std::vector DeviceLayerProps; + DeviceLayerProps.resize(NumDeviceLayerProps, {}); // ... then read the structures from the driver - RetVal = vkEnumerateDeviceLayerProperties(m_VulkanGpu, &NumDeviceLayerProps, m_pDeviceLayerProps.data()); - if (!CheckVkError("vkEnumerateInstanceLayerProperties()", RetVal)) + RetVal = vkEnumerateDeviceLayerProperties(m_VulkanGpu, &NumDeviceLayerProps, DeviceLayerProps.data()); + if (!CheckVkError("vkEnumerateDeviceLayerProperties()", RetVal)) { return false; } - for (uint32_t uiIndx = 0; uiIndx < (uint32_t) m_pDeviceLayerProps.size(); uiIndx++) + for (uint32_t uiIndx = 0; uiIndx < (uint32_t)DeviceLayerProps.size(); uiIndx++) { - VkLayerProperties* pOneItem = &m_pDeviceLayerProps[uiIndx]; + VkLayerProperties* pOneItem = &DeviceLayerProps[uiIndx]; LOGI(" %d: %s => %s", uiIndx, pOneItem->layerName, pOneItem->description); } } @@ -1204,11 +1404,12 @@ bool Vulkan::InitDeviceExtensions() return false; } + std::vector DeviceExtensionProps; + LOGI("Found %u Vulkan Device Extension Properties", NumDeviceExtensionProps ); if (NumDeviceExtensionProps > 0) { // Allocate memory for the structures... - std::vector DeviceExtensionProps; DeviceExtensionProps.resize( NumDeviceExtensionProps ); // ... then read the structures from the driver @@ -1217,54 +1418,13 @@ bool Vulkan::InitDeviceExtensions() { return false; } - - for (uint32_t uiIndx = 0; uiIndx < (uint32_t) DeviceExtensionProps.size(); uiIndx++) - { - VkExtensionProperties* pOneItem = &DeviceExtensionProps[uiIndx]; - LOGI(" %d: %s", uiIndx, pOneItem->extensionName); - - // Need to check if we found specific device extensions - { - std::string extensionName = pOneItem->extensionName; - auto* pExtension = m_DeviceExtensions.GetExtension( extensionName ); - if ( pExtension ) - { - // Found an already known extension, see if we want to do anything with it. - switch ( pExtension->Status ) - { - case VulkanExtension::eOptional: - case VulkanExtension::eRequired: - pExtension->Status = VulkanExtension::eLoaded; // strictly not 'yet' loaded but will be shortly - break; - case VulkanExtension::eLoaded: - case VulkanExtension::eUninitialized: - break; - } - pExtension->Version = pOneItem->specVersion; - } - else - { - // Add to the list of known extensions (assume we dont want to load it) - m_DeviceExtensions.AddExtension( extensionName, VulkanExtension::eUninitialized, pOneItem->specVersion ); - } - } - } } - } - // Do a final check of extensions we requested (as required or optional) that are not present in the list of available extensions. - for(auto& extension: m_DeviceExtensions.m_Extensions ) - { - if ( extension.second->Status == VulkanExtension::eRequired ) + if (!ParseExtensionProperties( DeviceExtensionProps, m_DeviceExtensions )) { - LOGE( "Required Vulkan extension \"%s\" was not found", extension.first.c_str() ); + LOGE( "Required Vulkan Device extensions missing." ); return false; } - else if ( extension.second->Status == VulkanExtension::eOptional ) - { - // If requested as optional but not available then set to be uninitialized. - extension.second->Status = VulkanExtension::eUninitialized; - } } // Cache off any 'has loaded' flags that we want to hold on to. @@ -1276,38 +1436,47 @@ bool Vulkan::InitDeviceExtensions() m_ExtAndroidExternalMemoryAvailable = HasLoadedVulkanDeviceExtension(VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME); #endif - // Create a vector of all the extensions (names) we are going to load as part of InitDevice() - std::vector DeviceExtensionNames; - for (const auto& e : m_DeviceExtensions.m_Extensions) - { - if (e.second->Status == VulkanExtension::eLoaded) - DeviceExtensionNames.push_back(e.first.c_str()); - } - - // Add layers we want for debugging - // Add any extensions that we only need if other extensions are available (ie dependancies). #if defined (OS_ANDROID) + auto loadExtension = [this]( const std::string& name ) { + auto it = m_DeviceExtensions.m_Extensions.find( name ); + if (it == m_DeviceExtensions.m_Extensions.end()) + { + } + else + { + if (it->second->Status == VulkanExtensionStatus::eUninitialized) + it->second->Status = VulkanExtensionStatus::eLoaded; + } + }; if (m_ExtAndroidExternalMemoryAvailable) { // Extensions required by the device extension VK_ANDROID_external_memory_android_hardware_buffer : - DeviceExtensionNames.push_back("VK_KHR_sampler_ycbcr_conversion"); - DeviceExtensionNames.push_back("VK_KHR_external_memory"); - DeviceExtensionNames.push_back("VK_EXT_queue_family_foreign"); + loadExtension( "VK_KHR_sampler_ycbcr_conversion" ); + loadExtension( "VK_KHR_external_memory" ); + loadExtension( "VK_EXT_queue_family_foreign" ); // Extensions required by the device extension VK_KHR_sampler_ycbcr_conversion : - DeviceExtensionNames.push_back("VK_KHR_maintenance1"); - DeviceExtensionNames.push_back("VK_KHR_bind_memory2"); - DeviceExtensionNames.push_back("VK_KHR_get_memory_requirements2"); + loadExtension( "VK_KHR_maintenance1" ); + loadExtension( "VK_KHR_bind_memory2" ); + loadExtension( "VK_KHR_get_memory_requirements2" ); } -#endif // defined (OS_ANDROID) - -#if (OS_ANDROID) && defined(ANDROID_HARDWARE_BUFFER_SUPPORT) +#if defined(ANDROID_HARDWARE_BUFFER_SUPPORT) // Need support for External Memory - DeviceExtensionNames.push_back("VK_KHR_external_memory_fd"); - DeviceExtensionNames.push_back("VK_KHR_external_memory"); - DeviceExtensionNames.push_back("VK_KHR_descriptor_update_template"); + loadExtension( "VK_KHR_external_memory_fd" ); + loadExtension( "VK_KHR_external_memory" ); + loadExtension( "VK_KHR_descriptor_update_template" ); +#endif // defined (ANDROID_HARDWARE_BUFFER_SUPPORT) #endif // defined (OS_ANDROID) + + // Create a vector of all the extensions (names) we are going to load as part of InitDevice() + std::vector DeviceExtensionNames; + for (const auto& e : m_DeviceExtensions.m_Extensions) + { + if (e.second->Status == VulkanExtensionStatus::eLoaded) + DeviceExtensionNames.push_back(e.first.c_str()); + } + // Sort alphabetically (so we can search using std::lower_bound). Also remove duplicates. { std::sort(std::begin(DeviceExtensionNames), std::end(DeviceExtensionNames), [](auto a, auto b) { return strcmp(a, b) < 0; }); @@ -1317,7 +1486,7 @@ bool Vulkan::InitDeviceExtensions() } for(const auto& n: DeviceExtensionNames) - m_DeviceExtensions.m_Extensions[n]->Status = VulkanExtension::eLoaded; + m_DeviceExtensions.m_Extensions[n]->Status = VulkanExtensionStatus::eLoaded; return true; } @@ -1377,6 +1546,15 @@ bool Vulkan::InitQueue() { LOGI(" %d: Does NOT Support TRANSFER", uiIndx); } + + if (pOneItem->queueFlags & VK_QUEUE_DATA_GRAPH_BIT_ARM) + { + LOGI(" %d: Supports DATA GRAPH", uiIndx); + } + else + { + LOGI(" %d: Does NOT Support DATA GRAPH", uiIndx); + } if (pOneItem->timestampValidBits > 0) { @@ -1388,7 +1566,6 @@ bool Vulkan::InitQueue() } } - return true; } @@ -1550,15 +1727,12 @@ bool Vulkan::InitSurface() // Look for queue that supports presenting // ******************************** // Iterate over each queue to learn whether it supports presenting: - VkBool32* pSupportFlags = new VkBool32[m_pVulkanQueueProps.size()]; + std::vector SupportFlags; + SupportFlags.resize( m_pVulkanQueueProps.size(), {} ); for (uint32_t uiIndx = 0; uiIndx < m_pVulkanQueueProps.size(); uiIndx++) { -#if defined (OS_WINDOWS) - fpGetPhysicalDeviceSurfaceSupportKHR(m_VulkanGpu, uiIndx, m_VulkanSurface, &pSupportFlags[uiIndx]); -#elif defined (OS_ANDROID) - vkGetPhysicalDeviceSurfaceSupportKHR(m_VulkanGpu, uiIndx, m_VulkanSurface, &pSupportFlags[uiIndx]); -#endif // defined (OS_WINDOWS|OS_ANDROID) + m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceSupportKHR(m_VulkanGpu, uiIndx, m_VulkanSurface, &SupportFlags[uiIndx]); } // Look for graphics and present queues and hope there is one that supports both @@ -1566,7 +1740,7 @@ bool Vulkan::InitSurface() uint32_t PresentIndx = -1; for (uint32_t uiIndx = 0; uiIndx < m_pVulkanQueueProps.size(); uiIndx++) { - if (pSupportFlags[uiIndx] == VK_TRUE && PresentIndx == -1) + if (SupportFlags[uiIndx] == VK_TRUE && PresentIndx == -1) { // This gives us a back up of at least the index. PresentIndx = uiIndx; @@ -1578,7 +1752,7 @@ bool Vulkan::InitSurface() if (GraphicsIndx == -1) GraphicsIndx = uiIndx; - if (pSupportFlags[uiIndx] == VK_TRUE) + if (SupportFlags[uiIndx] == VK_TRUE) { // Found a queue that supports both graphics and present. Grab it GraphicsIndx = uiIndx; @@ -1602,10 +1776,6 @@ bool Vulkan::InitSurface() } } - // No longer need the allocated memory - delete[] pSupportFlags; - pSupportFlags = nullptr; - // If we didn't find either queue or they are not the same then we have a problem! if (GraphicsIndx == -1 || PresentIndx == -1 || GraphicsIndx != PresentIndx) { @@ -1650,6 +1820,26 @@ bool Vulkan::InitCompute() return true; } +//----------------------------------------------------------------------------- +bool Vulkan::InitDataGraph() +//----------------------------------------------------------------------------- +{ + VkResult RetVal = VK_SUCCESS; + + // Look for a queue that supports data graph (note that this queue, if present, can ONLY support data graph operations) + for (int i = 0; i < m_pVulkanQueueProps.size(); ++i) + { + if ((m_pVulkanQueueProps[i].queueFlags & VK_QUEUE_DATA_GRAPH_BIT_ARM) == VK_QUEUE_DATA_GRAPH_BIT_ARM) + { + m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex = i; + m_VulkanGraphicsQueueSupportsDataGraph = true; + break; + } + } + + return true; +} + //----------------------------------------------------------------------------- bool Vulkan::InitDevice() //----------------------------------------------------------------------------- @@ -1680,6 +1870,7 @@ bool Vulkan::InitDevice() m_VulkanGpuFeatures.Base.features.sampleRateShading = AvailableFeatures.Base.features.sampleRateShading; m_VulkanGpuFeatures.Base.features.samplerAnisotropy = AvailableFeatures.Base.features.samplerAnisotropy; m_VulkanGpuFeatures.Base.features.shaderImageGatherExtended = AvailableFeatures.Base.features.shaderImageGatherExtended; + m_VulkanGpuFeatures.Base.features.shaderStorageImageWriteWithoutFormat = AvailableFeatures.Base.features.shaderStorageImageWriteWithoutFormat; m_VulkanGpuFeatures.Base.features.multiDrawIndirect = AvailableFeatures.Base.features.multiDrawIndirect; m_VulkanGpuFeatures.Base.features.drawIndirectFirstInstance = AvailableFeatures.Base.features.drawIndirectFirstInstance; @@ -1698,10 +1889,11 @@ bool Vulkan::InitDevice() // ******************************** float GraphicsPriority = 1.0f; float AsycComputePriority = 0.0f; // values of 1 and 0 are guaranteed by the spec (and required), more than that needs discreteQueuePriorities check. + float DataGraphPriority = 1.0f; uint32_t QueueCount = 1; VkDeviceQueueGlobalPriorityCreateInfoEXT DeviceQueueGlobalPriorityInfo {VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT}; - VkDeviceQueueCreateInfo DeviceQueueInfoStructs[2] = {}; + VkDeviceQueueCreateInfo DeviceQueueInfoStructs[3] = {}; DeviceQueueInfoStructs[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; DeviceQueueInfoStructs[0].flags = 0; DeviceQueueInfoStructs[0].queueFamilyIndex = m_VulkanQueues[eGraphicsQueue].QueueFamilyIndex; @@ -1723,13 +1915,33 @@ bool Vulkan::InitDevice() } ++QueueCount; } + if (m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex >= 0) + { + DeviceQueueInfoStructs[2].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; + DeviceQueueInfoStructs[2].flags = 0; + DeviceQueueInfoStructs[2].queueFamilyIndex = m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex; + DeviceQueueInfoStructs[2].queueCount = 1; + DeviceQueueInfoStructs[2].pQueuePriorities = &DataGraphPriority; + + ++QueueCount; + } std::vector DeviceExtensionNames; DeviceExtensionNames.reserve(m_DeviceExtensions.m_Extensions.size()); for (const auto& e : m_DeviceExtensions.m_Extensions) - if (e.second->Status == VulkanExtension::eLoaded) + if (e.second->Status == VulkanExtensionStatus::eLoaded) DeviceExtensionNames.push_back(e.first.c_str()); + if (m_VulkanApiVersion >= VK_MAKE_VERSION( 1, 1, 0 )) + { + // Mark all Vulkan 1.1 provided (built-in) extensions as 'loaded' so they get populated for vkCreateDevice + for (auto& extPair : m_Vulkan11ProvidedExtensions.m_Extensions) + { + assert( extPair.second->Status == VulkanExtensionStatus::eRequired ); + extPair.second->Status = VulkanExtensionStatus::eLoaded; + } + } + VkDeviceCreateInfo DeviceInfoStruct = {VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO}; DeviceInfoStruct.pNext = &m_VulkanGpuFeatures.Base; // Hardcoded features enabled through the 'pNext chain' DeviceInfoStruct.flags = 0; @@ -1771,6 +1983,8 @@ bool Vulkan::InitDevice() return false; } + LOGI("Vulkan Device Created!"); + // Pop the extensions back off the VkPhysicalDeviceFeatures2 chain (most registered extensions will do nothing here) m_DeviceCreateInfoExtensions.PopExtensions(&DeviceInfoStruct); @@ -1829,16 +2043,20 @@ bool Vulkan::InitDevice() { vkGetDeviceQueue(m_VulkanDevice, m_VulkanQueues[eComputeQueue].QueueFamilyIndex, 0, &m_VulkanQueues[eComputeQueue].Queue); } + + // ******************************** + // Create the Data Graph Device Queue + // ******************************** + if (m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex >= 0) + { + vkGetDeviceQueue(m_VulkanDevice, m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex, 0, &m_VulkanQueues[eDataGraphQueue].Queue); + } // ******************************** // Get Supported Formats // ******************************** uint32_t NumFormats; -#if defined (OS_WINDOWS) - RetVal = fpGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, nullptr); -#elif defined (OS_ANDROID) - RetVal = vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, nullptr); -#endif // defined (OS_WINDOWS|OS_ANDROID) + RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, nullptr); if (!CheckVkError("vkGetPhysicalDeviceSurfaceFormatsKHR()", RetVal)) { return false; @@ -1855,11 +2073,7 @@ bool Vulkan::InitDevice() vkSurfaceFormats.resize( NumFormats ); // ... then read the structures from the driver -#if defined (OS_WINDOWS) - RetVal = fpGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, vkSurfaceFormats.data()); -#elif defined (OS_ANDROID) - RetVal = vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, vkSurfaceFormats.data()); -#endif // defined (OS_WINDOWS|OS_ANDROID) + RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, vkSurfaceFormats.data()); if (!CheckVkError("vkGetPhysicalDeviceSurfaceFormatsKHR()", RetVal)) { return false; @@ -1954,6 +2168,27 @@ bool Vulkan::InitCommandPools() } } + // Allocate a command pool for Data Graph. + if (m_VulkanGraphicsQueueSupportsDataGraph && m_VulkanQueues[eDataGraphQueue].Queue) + { + VkDataGraphProcessingEngineCreateInfoARM engineInfo = {}; + engineInfo.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM; + engineInfo.pNext = NULL; + engineInfo.processingEngineCount = 1; + engineInfo.pProcessingEngines = &m_VulkanDataGraphProcessingEngine; + + VkCommandPoolCreateInfo CmdPoolInfoStruct {VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO}; + CmdPoolInfoStruct.pNext = &engineInfo; + CmdPoolInfoStruct.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + CmdPoolInfoStruct.queueFamilyIndex = m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex; + + RetVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eDataGraphQueue].CommandPool); + if (!CheckVkError("vkCreateCommandPool()", RetVal)) + { + return false; + } + } + return true; } @@ -1985,7 +2220,7 @@ bool Vulkan::QuerySurfaceCapabilities(VkSurfaceCapabilitiesKHR& outVulkanSurface { VkResult RetVal = VK_SUCCESS; - if (m_ExtSurfaceCapabilities2Available) + if (m_ExtSurfaceCapabilities2 && m_ExtSurfaceCapabilities2->Status == VulkanExtensionStatus::eLoaded) { // Have the extension for vkGetPhysicalDeviceSurfaceCapabilities2KHR. // Ideally we could query the VkHdrMetadataEXT for this surface and use that as part of colormapping/output. @@ -1994,7 +2229,7 @@ bool Vulkan::QuerySurfaceCapabilities(VkSurfaceCapabilitiesKHR& outVulkanSurface SurfaceInfo.surface = m_VulkanSurface; VkSurfaceCapabilities2KHR SurfaceCapabilities = { VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR }; - RetVal = fpGetPhysicalDeviceSurfaceCapabilities2KHR(m_VulkanGpu, &SurfaceInfo, &SurfaceCapabilities); + RetVal = m_ExtSurfaceCapabilities2->m_vkGetPhysicalDeviceSurfaceCapabilities2KHR(m_VulkanGpu, &SurfaceInfo, &SurfaceCapabilities); if (!CheckVkError("vkGetPhysicalDeviceSurfaceCapabilities2KHR()", RetVal)) { return false; @@ -2004,12 +2239,7 @@ bool Vulkan::QuerySurfaceCapabilities(VkSurfaceCapabilitiesKHR& outVulkanSurface } else { -#if defined (OS_WINDOWS) - RetVal = fpGetPhysicalDeviceSurfaceCapabilitiesKHR(m_VulkanGpu, m_VulkanSurface, &outVulkanSurfaceCaps); -#elif defined (OS_ANDROID) - RetVal = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(m_VulkanGpu, m_VulkanSurface, &outVulkanSurfaceCaps); -#endif // defined (OS_WINDOWS|OS_ANDROID) - + RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(m_VulkanGpu, m_VulkanSurface, &outVulkanSurfaceCaps); if (!CheckVkError("vkGetPhysicalDeviceSurfaceCapabilitiesKHR()", RetVal)) { return false; @@ -2070,12 +2300,7 @@ bool Vulkan::InitSwapChain() // ******************************** uint32_t NumPresentModes; -#if defined (OS_WINDOWS) - RetVal = fpGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, nullptr); -#elif defined (OS_ANDROID) - RetVal = vkGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, nullptr); -#endif // defined (OS_WINDOWS|OS_ANDROID) - + RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, nullptr); if (!CheckVkError("vkGetPhysicalDeviceSurfacePresentModesKHR()", RetVal)) { return false; @@ -2084,11 +2309,7 @@ bool Vulkan::InitSwapChain() std::vector PresentModes; PresentModes.resize(NumPresentModes); -#if defined (OS_WINDOWS) - RetVal = fpGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, PresentModes.data()); -#elif defined (OS_ANDROID) - RetVal = vkGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, PresentModes.data()); -#endif // defined (OS_WINDOWS|OS_ANDROID) + RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, PresentModes.data()); if (!CheckVkError("vkGetPhysicalDeviceSurfacePresentModesKHR()", RetVal)) { return false; @@ -2201,7 +2422,7 @@ bool Vulkan::InitSwapChain() if (SwapchainPresentMode == VK_PRESENT_MODE_MAILBOX_KHR) { // In mailbox mode we request the number of buffers the application needs and Vulkan will want one or two more! https://github.com/KhronosGroup/Vulkan-Docs/issues/909 - DesiredSwapchainImages = std::max((uint32_t)3, m_VulkanSurfaceCaps.minImageCount); + DesiredSwapchainImages = std::max((uint32_t)3, m_VulkanSurfaceCaps.minImageCount + 1/*when running multithreaded and mailbox present we need even more swapchains on Android! However many Android needs (which includes one we can be preparing on the CPU) plus one if we have a thread simultaneously submitting the last frames commands*/); } if (m_VulkanSurfaceCaps.minImageCount > DesiredSwapchainImages) @@ -2539,33 +2760,32 @@ bool Vulkan::InitSwapchainRenderPass() subpassDescription.pPreserveAttachments = nullptr; // Dependencies - std::array dependencies; - dependencies.fill( {} ); - // dependencies[0] is an acquire dependency - // dependencies[1] is a present dependency + m_SwapchainRenderPassDependencies.fill( {} ); + // m_SwapchainRenderPassDependencies[0] is an acquire dependency + // m_SwapchainRenderPassDependencies[1] is a present dependency // We use subpass dependencies to define the color image layout transitions rather than // explicitly do them in the command buffer, as it is more efficient to do it this way. // Before we can use the back buffer from the swapchain, we must change the // image layout from the PRESENT mode to the COLOR_ATTACHMENT mode. - dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; - dependencies[0].dstSubpass = 0; - dependencies[0].srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; - dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - dependencies[0].srcAccessMask = 0; - dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; + m_SwapchainRenderPassDependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; + m_SwapchainRenderPassDependencies[0].dstSubpass = 0; + m_SwapchainRenderPassDependencies[0].srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + m_SwapchainRenderPassDependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + m_SwapchainRenderPassDependencies[0].srcAccessMask = 0; + m_SwapchainRenderPassDependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + m_SwapchainRenderPassDependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; // After writing to the back buffer of the swapchain, we need to change the // image layout from the COLOR_ATTACHMENT mode to the PRESENT mode which // is optimal for sending to the screen for users to see the completed rendering. - dependencies[1].srcSubpass = 0; - dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; - dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; - dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - dependencies[1].dstAccessMask = 0; - dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; + m_SwapchainRenderPassDependencies[1].srcSubpass = 0; + m_SwapchainRenderPassDependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; + m_SwapchainRenderPassDependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + m_SwapchainRenderPassDependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; + m_SwapchainRenderPassDependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + m_SwapchainRenderPassDependencies[1].dstAccessMask = 0; + m_SwapchainRenderPassDependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; // The renderpass itself is created with the number of subpasses, and the // list of attachments which those subpasses can reference. @@ -2574,8 +2794,8 @@ bool Vulkan::InitSwapchainRenderPass() renderPassCreateInfo.pAttachments = attachmentDescriptions.data(); renderPassCreateInfo.subpassCount = 1; renderPassCreateInfo.pSubpasses = &subpassDescription; - renderPassCreateInfo.dependencyCount = (uint32_t) dependencies.size(); - renderPassCreateInfo.pDependencies = dependencies.data(); + renderPassCreateInfo.dependencyCount = (uint32_t) m_SwapchainRenderPassDependencies.size(); + renderPassCreateInfo.pDependencies = m_SwapchainRenderPassDependencies.data(); renderPassCreateInfo.flags = (m_ExtRenderPassTransformEnabled) ? VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM : 0; RetVal = vkCreateRenderPass(m_VulkanDevice, &renderPassCreateInfo, nullptr, &m_SwapchainRenderPass); @@ -2593,7 +2813,7 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter //----------------------------------------------------------------------------- { assert(pRenderPass && *pRenderPass == VK_NULL_HANDLE); // check not already allocated and that we have a location to place the renderpass handle - assert(!InternalColorFormats.empty()); // not supporting a depth only pass + assert(!InternalColorFormats.empty()); // not supporting a depth only pass assert(!OutputColorFormats.empty()); assert( InternalMsaa.size() == 2 ); @@ -2662,7 +2882,7 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*finalLayout*/ }; PassAttachDescs.push_back( AttachmentDescResolvePass0 ); - ResolveReferencesPass0.push_back( { (uint32_t) PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL } ); + ResolveReferencesPass0.push_back( { (uint32_t) PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} ); } // // Setup the resolve (first subpass) @@ -2704,7 +2924,7 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*finalLayout*/ }; PassAttachDescs.push_back( AttachmentDescResolvePass1 ); - ResolveReferencesPass1.push_back( { (uint32_t) PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL } ); + ResolveReferencesPass1.push_back( { (uint32_t) PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} ); } // // Setup the resolve (second subpass) @@ -3229,7 +3449,7 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu VkFormat vkResolveFormat = TextureFormatToVk(ResolveFormat); if( vkResolveFormat != VK_FORMAT_UNDEFINED) { - ResolveReferences[ColorIdx] = { (uint32_t) PassAttachDescs.size(), VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL }; + ResolveReferences[ColorIdx] = { (uint32_t) PassAttachDescs.size(), VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL}; // Pass1 color buffers to resolve to at end of pass. VkAttachmentDescription AttachmentDescResolvePass1 = { 0, vkResolveFormat/*format*/, @@ -3256,7 +3476,12 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu // Subpass dependencies std::array PassDependencies = {}; - if (ColorFormats.empty()) + if (bPresentPass) + { + // Use the same dependencies as the swapchain was created with + PassDependencies = m_SwapchainRenderPassDependencies; + } + else if (ColorFormats.empty()) { // Depth only pass PassDependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; @@ -3549,7 +3774,7 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te } assert( m_ExtFragmentShadingRate ); - assert( m_ExtFragmentShadingRate->Status == VulkanExtension::eLoaded ); + assert( m_ExtFragmentShadingRate->Status == VulkanExtensionStatus::eLoaded ); VkFragmentShadingRateAttachmentInfoKHR shading_rate_attachment = {}; shading_rate_attachment.sType = VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR; @@ -3658,7 +3883,6 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te return true; } - //----------------------------------------------------------------------------- bool Vulkan::CreatePipeline( VkPipelineCache pipelineCache, @@ -3681,14 +3905,81 @@ bool Vulkan::CreatePipeline( VkPipeline* pipeline) //----------------------------------------------------------------------------- { + // Original version that only supports triangle lists + // Create a basic pipeline structure with one or two shader stages, using the supplied cache. // Our vertex buffer describes a triangle list. - VkPipelineInputAssemblyStateCreateInfo ia = {VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO}; - ia.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + VkPipelineInputAssemblyStateCreateInfo ia_custom = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; + ia_custom.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; // State for rasterization, such as polygon fill mode is defined. - VkPipelineRasterizationStateCreateInfo rs = {VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO}; + // VkPipelineRasterizationStateCreateInfo rs_custom = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; + // rs_custom.polygonMode = VK_POLYGON_MODE_FILL; + // rs_custom.cullMode = VK_CULL_MODE_NONE; + // rs_custom.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + // rs_custom.depthClampEnable = VK_FALSE; + // rs_custom.rasterizerDiscardEnable = VK_FALSE; + // rs_custom.depthBiasEnable = VK_FALSE; + // rs_custom.lineWidth = 1.0f; + + // Call the custom topology version + return Vulkan::CreatePipeline( + pipelineCache, + visci, + pipelineLayout, + renderPass, + subpass, + providedRS, + providedDSS, + providedCBS, + providedMS, + dynamicStates, + viewport, + scissor, + VK_NULL_HANDLE, + VK_NULL_HANDLE, + vertShaderModule, + fragShaderModule, + specializationInfo, + bAllowDerivation, + deriveFromPipeline, + pipeline, + ia_custom); +} + +//----------------------------------------------------------------------------- +bool Vulkan::CreatePipeline( + VkPipelineCache pipelineCache, + const VkPipelineVertexInputStateCreateInfo* visci, + VkPipelineLayout pipelineLayout, + VkRenderPass renderPass, + uint32_t subpass, + const VkPipelineRasterizationStateCreateInfo* providedRS, + const VkPipelineDepthStencilStateCreateInfo* providedDSS, + const VkPipelineColorBlendStateCreateInfo* providedCBS, + const VkPipelineMultisampleStateCreateInfo* providedMS, + std::span dynamicStates, + const VkViewport* viewport, + const VkRect2D* scissor, + VkShaderModule taskShaderModule, + VkShaderModule meshShaderModule, + VkShaderModule vertShaderModule, + VkShaderModule fragShaderModule, + const VkSpecializationInfo* specializationInfo, + bool bAllowDerivation, + VkPipeline deriveFromPipeline, + VkPipeline* pipeline, + VkPipelineInputAssemblyStateCreateInfo ia_custom) + //----------------------------------------------------------------------------- +{ + // Create a basic pipeline structure with one or two shader stages, using the supplied cache. + + // Our vertex buffer describes a triangle list. + VkPipelineInputAssemblyStateCreateInfo ia = ia_custom; + + // State for rasterization, such as polygon fill mode is defined. + VkPipelineRasterizationStateCreateInfo rs = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; rs.polygonMode = VK_POLYGON_MODE_FILL; rs.cullMode = VK_CULL_MODE_NONE; rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; @@ -3721,26 +4012,92 @@ bool Vulkan::CreatePipeline( ds.maxDepthBounds = 1.0f; // Default to no msaa - VkPipelineMultisampleStateCreateInfo ms = {VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO}; + VkPipelineMultisampleStateCreateInfo ms = { VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO }; ms.pSampleMask = nullptr; ms.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; // We define two shader stages: our vertex and fragment shader. uint32_t stageCount = 1; - VkPipelineShaderStageCreateInfo shaderStages[2] = {}; - shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; - shaderStages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; - shaderStages[0].module = vertShaderModule; - shaderStages[0].pName = "main"; - shaderStages[0].pSpecializationInfo = specializationInfo; - if (fragShaderModule != VK_NULL_HANDLE) - { + VkPipelineShaderStageCreateInfo shaderStages[3] = {}; + + uint32_t EVertBit = 0; + uint32_t EFragBit = 1; + uint32_t EMeshBit = 2; + uint32_t ETaskBit = 3; + + uint32_t EVertMask = 1 << EVertBit; + uint32_t EFragMask = 1 << EFragBit; + uint32_t EMeshMask = 1 << EMeshBit; + uint32_t ETaskMask = 1 << ETaskBit; + uint32_t EVertFragMask = EFragMask | EVertMask; + uint32_t EMeshFragMask = EFragMask | EMeshMask; + uint32_t ETaskMeshFragMask = ETaskMask | EMeshFragMask; + + uint32_t drawbleType = 0; + drawbleType |= (fragShaderModule != VK_NULL_HANDLE) << EFragBit; + drawbleType |= (vertShaderModule != VK_NULL_HANDLE) << EVertBit; + drawbleType |= (meshShaderModule != VK_NULL_HANDLE) << EMeshBit; + drawbleType |= (taskShaderModule != VK_NULL_HANDLE) << ETaskBit; + + if (drawbleType == EVertFragMask) { + stageCount = 2; + + shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; + shaderStages[0].module = vertShaderModule; + shaderStages[0].pName = "main"; + shaderStages[0].pSpecializationInfo = specializationInfo; + + shaderStages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; + shaderStages[1].module = fragShaderModule; + shaderStages[1].pName = "main"; + shaderStages[1].pSpecializationInfo = specializationInfo; + } + else if (drawbleType == EMeshFragMask) { + stageCount = 2; + + shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[0].stage = VK_SHADER_STAGE_MESH_BIT_EXT; + shaderStages[0].module = meshShaderModule; + shaderStages[0].pName = "main"; + shaderStages[0].pSpecializationInfo = specializationInfo; + shaderStages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; shaderStages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; shaderStages[1].module = fragShaderModule; shaderStages[1].pName = "main"; shaderStages[1].pSpecializationInfo = specializationInfo; - ++stageCount; + } + else if (drawbleType == ETaskMeshFragMask) { + stageCount = 3; + + shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[0].stage = VK_SHADER_STAGE_TASK_BIT_EXT; + shaderStages[0].module = taskShaderModule; + shaderStages[0].pName = "main"; + shaderStages[0].pSpecializationInfo = specializationInfo; + + shaderStages[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[1].stage = VK_SHADER_STAGE_MESH_BIT_EXT; + shaderStages[1].module = meshShaderModule; + shaderStages[1].pName = "main"; + shaderStages[1].pSpecializationInfo = specializationInfo; + + shaderStages[2].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[2].stage = VK_SHADER_STAGE_FRAGMENT_BIT; + shaderStages[2].module = fragShaderModule; + shaderStages[2].pName = "main"; + shaderStages[2].pSpecializationInfo = specializationInfo; + } + else if (drawbleType == EVertMask) { + stageCount = 1; + + shaderStages[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; + shaderStages[0].module = vertShaderModule; + shaderStages[0].pName = "main"; + shaderStages[0].pSpecializationInfo = specializationInfo; } // Set up the flags @@ -3756,14 +4113,14 @@ bool Vulkan::CreatePipeline( // Create some dynamic states. #ifndef VK_DYNAMIC_STATE_RANGE_SIZE - #define VK_DYNAMIC_STATE_RANGE_SIZE (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1) +#define VK_DYNAMIC_STATE_RANGE_SIZE (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1) #endif // VK_DYNAMIC_STATE_RANGE_SIZE // // Populate dynamic states and viewport/scissor at the same time (if no viewport or scissor is defined we can assume it wants a dynamic state) // - VkPipelineDynamicStateCreateInfo dynamicStateCreateInfo {VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO}; - + VkPipelineDynamicStateCreateInfo dynamicStateCreateInfo{ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; + // Do we needs to add dynamic states for the viewport/scissor? bool setDefaultViewport = viewport == nullptr; bool setDefaultScissor = scissor == nullptr; @@ -3774,39 +4131,39 @@ bool Vulkan::CreatePipeline( if (setDefaultScissor) dynamicStateEnables[dynamicStateCreateInfo.dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR; if (m_ExtFragmentShadingRate && - m_ExtFragmentShadingRate->Status == VulkanExtension::eLoaded && + m_ExtFragmentShadingRate->Status == VulkanExtensionStatus::eLoaded && m_ExtFragmentShadingRate->RequestedFeatures.attachmentFragmentShadingRate == VK_TRUE) dynamicStateEnables[dynamicStateCreateInfo.dynamicStateCount++] = VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR; dynamicStateCreateInfo.pDynamicStates = dynamicStateEnables.data(); #if 0 - if( !dynamicStates.empty() ) + if (!dynamicStates.empty()) { dynamicStateCreateInfo.pDynamicStates = dynamicStates.data(); - dynamicStateCreateInfo.dynamicStateCount = (uint32_t) dynamicStates.size(); + dynamicStateCreateInfo.dynamicStateCount = (uint32_t)dynamicStates.size(); // see if we already have viewport and/or scissor in the dynamic states passed to this function - for( const auto& dynamicState : dynamicStates ) + for (const auto& dynamicState : dynamicStates) { - if( dynamicState == VK_DYNAMIC_STATE_VIEWPORT ) + if (dynamicState == VK_DYNAMIC_STATE_VIEWPORT) setDefaultViewport = false; - else if( dynamicState == VK_DYNAMIC_STATE_SCISSOR ) + else if (dynamicState == VK_DYNAMIC_STATE_SCISSOR) setDefaultScissor = false; } } #endif VkViewport defaultViewport; - if( setDefaultViewport ) + if (setDefaultViewport) { defaultViewport = {}; - defaultViewport.height = (float) m_SurfaceHeight; - defaultViewport.width = (float) m_SurfaceWidth; - defaultViewport.minDepth = (float) 0.0f; - defaultViewport.maxDepth = (float) 1.0f; + defaultViewport.height = (float)m_SurfaceHeight; + defaultViewport.width = (float)m_SurfaceWidth; + defaultViewport.minDepth = (float)0.0f; + defaultViewport.maxDepth = (float)1.0f; } VkRect2D defaultScissor; - if( setDefaultScissor ) + if (setDefaultScissor) { defaultScissor = {}; defaultScissor.extent.width = m_SurfaceWidth; @@ -3815,17 +4172,23 @@ bool Vulkan::CreatePipeline( defaultScissor.offset.y = 0; } - VkPipelineViewportStateCreateInfo ViewportInfo {VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO}; - ViewportInfo.viewportCount = (setDefaultViewport||viewport) ? 1 : 0; + VkPipelineViewportStateCreateInfo ViewportInfo{ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO }; + ViewportInfo.viewportCount = (setDefaultViewport || viewport) ? 1 : 0; ViewportInfo.pViewports = setDefaultViewport ? &defaultViewport : viewport; - ViewportInfo.scissorCount = (setDefaultScissor||scissor) ? 1 : 0; + ViewportInfo.scissorCount = (setDefaultScissor || scissor) ? 1 : 0; ViewportInfo.pScissors = setDefaultScissor ? &defaultScissor : scissor; - VkGraphicsPipelineCreateInfo pipelineCreateInfo {VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO}; + VkGraphicsPipelineCreateInfo pipelineCreateInfo{ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO }; pipelineCreateInfo.flags = flags; pipelineCreateInfo.layout = pipelineLayout; - pipelineCreateInfo.pVertexInputState = visci; - pipelineCreateInfo.pInputAssemblyState = &ia; + if (drawbleType == EMeshFragMask || drawbleType == ETaskMeshFragMask) { + pipelineCreateInfo.pVertexInputState = nullptr; + pipelineCreateInfo.pInputAssemblyState = nullptr; + } + else { + pipelineCreateInfo.pVertexInputState = visci; + pipelineCreateInfo.pInputAssemblyState = &ia; + } pipelineCreateInfo.pRasterizationState = (providedRS != nullptr) ? providedRS : &rs; pipelineCreateInfo.pColorBlendState = (providedCBS != nullptr) ? providedCBS : &cb; pipelineCreateInfo.pMultisampleState = (providedMS != nullptr) ? providedMS : &ms; @@ -3840,7 +4203,7 @@ bool Vulkan::CreatePipeline( pipelineCreateInfo.subpass = subpass; VkResult RetVal = VK_SUCCESS; - RetVal = vkCreateGraphicsPipelines(m_VulkanDevice, pipelineCache, 1, &pipelineCreateInfo, nullptr, pipeline); + RetVal = vkCreateGraphicsPipelines(m_VulkanDevice, pipelineCache, 1, &pipelineCreateInfo, nullptr, pipeline); if (!CheckVkError("vkCreateGraphicsPipelines()", RetVal)) { return false; @@ -3849,6 +4212,73 @@ bool Vulkan::CreatePipeline( return true; } +//----------------------------------------------------------------------------- +bool Vulkan::CreatePipeline( + VkPipelineCache pipelineCache, + const VkPipelineVertexInputStateCreateInfo* visci, + VkPipelineLayout pipelineLayout, + VkRenderPass renderPass, + uint32_t subpass, + const VkPipelineRasterizationStateCreateInfo* providedRS, + const VkPipelineDepthStencilStateCreateInfo* providedDSS, + const VkPipelineColorBlendStateCreateInfo* providedCBS, + const VkPipelineMultisampleStateCreateInfo* providedMS, + std::span dynamicStates, + const VkViewport* viewport, + const VkRect2D* scissor, + VkShaderModule taskShaderModule, + VkShaderModule meshShaderModule, + VkShaderModule vertShaderModule, + VkShaderModule fragShaderModule, + const VkSpecializationInfo* specializationInfo, + bool bAllowDerivation, + VkPipeline deriveFromPipeline, + VkPipeline* pipeline) + //----------------------------------------------------------------------------- +{ + // Original version that only supports triangle lists + + // Create a basic pipeline structure with one or two shader stages, using the supplied cache. + + // Our vertex buffer describes a triangle list. + VkPipelineInputAssemblyStateCreateInfo ia_custom = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; + ia_custom.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + + // State for rasterization, such as polygon fill mode is defined. + // VkPipelineRasterizationStateCreateInfo rs_custom = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; + // rs_custom.polygonMode = VK_POLYGON_MODE_FILL; + // rs_custom.cullMode = VK_CULL_MODE_NONE; + // rs_custom.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + // rs_custom.depthClampEnable = VK_FALSE; + // rs_custom.rasterizerDiscardEnable = VK_FALSE; + // rs_custom.depthBiasEnable = VK_FALSE; + // rs_custom.lineWidth = 1.0f; + + // Call the custom topology version + return Vulkan::CreatePipeline( + pipelineCache, + visci, + pipelineLayout, + renderPass, + subpass, + providedRS, + providedDSS, + providedCBS, + providedMS, + dynamicStates, + viewport, + scissor, + taskShaderModule, + meshShaderModule, + vertShaderModule, + fragShaderModule, + specializationInfo, + bAllowDerivation, + deriveFromPipeline, + pipeline, + ia_custom); +} + //----------------------------------------------------------------------------- bool Vulkan::CreateComputePipeline( VkPipelineCache pipelineCache, @@ -3884,7 +4314,7 @@ bool Vulkan::SetSwapchainHrdMetadata(const VkHdrMetadataEXT& RenderingHdrMetaDat // Set the HDR transfer function of the mastering device. assert(RenderingHdrMetaData.sType == VK_STRUCTURE_TYPE_HDR_METADATA_EXT); - if (m_ExtHdrMetadata == nullptr || m_ExtHdrMetadata->Status != VulkanExtension::eLoaded || m_ExtHdrMetadata->m_vkSetHdrMetadataEXT == nullptr) + if (m_ExtHdrMetadata == nullptr || m_ExtHdrMetadata->Status != VulkanExtensionStatus::eLoaded || m_ExtHdrMetadata->m_vkSetHdrMetadataEXT == nullptr) return false; m_ExtHdrMetadata->m_vkSetHdrMetadataEXT(m_VulkanDevice, 1, &m_VulkanSwapchain, &RenderingHdrMetaData); @@ -4025,7 +4455,7 @@ bool Vulkan::QueueSubmit(const std::span SubmitInfo, uin { VkQueue Queue = m_VulkanQueues[QueueIndex].Queue; assert(Queue != VK_NULL_HANDLE); - assert( m_ExtKhrSynchronization2 && m_ExtKhrSynchronization2->Status == VulkanExtension::eLoaded ); + assert( m_ExtKhrSynchronization2 && m_ExtKhrSynchronization2->Status == VulkanExtensionStatus::eLoaded ); VkResult RetVal = m_ExtKhrSynchronization2->m_vkQueueSubmit2KHR(Queue, (uint32_t)SubmitInfo.size(), SubmitInfo.data(), CompletedFence); if (!CheckVkError("vkQueueSubmit2KHR()", RetVal)) { @@ -4066,12 +4496,16 @@ bool Vulkan::PresentQueue(const std::span pWaitSemaphores, ui } else if (RetVal == VK_SUBOPTIMAL_KHR) { - // This should not be spammed. - // TODO: maybe log it every so often? - VkSurfaceCapabilitiesKHR optimalSurfaceCaps; - if (QuerySurfaceCapabilities(optimalSurfaceCaps)) + // This should not be spammed, print it 5 times and then be done! + static int spamCount = 0; + if (spamCount < 5) { - LOGE("Swapchain is not optimal! Should still be presented\n Ideal swapchain %d x %d (actual %d x %d)", optimalSurfaceCaps.currentExtent.width, optimalSurfaceCaps.currentExtent.height, m_SurfaceWidth, m_SurfaceHeight); + ++spamCount; + VkSurfaceCapabilitiesKHR optimalSurfaceCaps; + if (QuerySurfaceCapabilities(optimalSurfaceCaps)) + { + LOGE("Swapchain is not optimal! Should still be presented\n Ideal swapchain %d x %d (actual %d x %d)", optimalSurfaceCaps.currentExtent.width, optimalSurfaceCaps.currentExtent.height, m_SurfaceWidth, m_SurfaceHeight); + } } } else @@ -4185,7 +4619,7 @@ bool Vulkan::HasLoadedVulkanDeviceExtension( const std::string& extensionName ) auto foundIt = m_DeviceExtensions.m_Extensions.find( extensionName ); if (foundIt == m_DeviceExtensions.m_Extensions.end()) return false; - return foundIt->second->Status == VulkanExtension::eLoaded; + return foundIt->second->Status == VulkanExtensionStatus::eLoaded; } //----------------------------------------------------------------------------- @@ -4574,9 +5008,9 @@ void Vulkan::QueryPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, Physic if (featuresOut.Base.pNext != nullptr) { - if (fpGetPhysicalDeviceFeatures2 != nullptr) + if (m_ExtKhrGetPhysicalDeviceProperties2->Status == VulkanExtensionStatus::eLoaded) { - fpGetPhysicalDeviceFeatures2(physicalDevice, &featuresOut.Base); + m_ExtKhrGetPhysicalDeviceProperties2->m_vkGetPhysicalDeviceFeatures2KHR(physicalDevice, &featuresOut.Base); } else { @@ -4602,9 +5036,9 @@ void Vulkan::QueryPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, con m_GetPhysicalDevicePropertiesExtensions.PushExtensions( &propertiesOut.Base ); - if (fpGetPhysicalDeviceProperties2) + if (m_ExtKhrGetPhysicalDeviceProperties2->Status == VulkanExtensionStatus::eLoaded) { - fpGetPhysicalDeviceProperties2( physicalDevice, &propertiesOut.Base ); + m_ExtKhrGetPhysicalDeviceProperties2->m_vkGetPhysicalDeviceProperties2KHR( physicalDevice, &propertiesOut.Base ); } else { @@ -4879,12 +5313,3 @@ void Vulkan::DumpDeviceInfo( const std::span DeviceFeatu } } - -void Vulkan::RegisteredExtensions::RegisterAll( Vulkan& vulkan ) -{ - for (auto& extension : m_Extensions) - { - LOGI( "Registering extension: %s (%s)", extension.first.c_str(), VulkanExtension::cStatusNames[extension.second->Status] ); - extension.second->Register( vulkan ); - } -} diff --git a/framework/code/vulkan/vulkan.hpp b/framework/code/vulkan/vulkan.hpp index 3cdc798..22682c6 100644 --- a/framework/code/vulkan/vulkan.hpp +++ b/framework/code/vulkan/vulkan.hpp @@ -21,7 +21,7 @@ // rather than dynamically loading entrypoints to the API manually. #define VK_PROTOTYPES -#ifdef OS_WINDOWS +#if defined(OS_WINDOWS) && !defined(VK_ENABLE_BETA_EXTENSIONS) #define VK_ENABLE_BETA_EXTENSIONS #endif #include @@ -38,6 +38,7 @@ #include #include #include +#include #include "extension.hpp" #include "memory/vulkan/memoryManager.hpp" @@ -50,7 +51,7 @@ // Enable the Vulkan validation layer to output debugPrintf (if the debug/validation layers are in use) //#define VULKAN_VALIDATION_ENABLE_PRINTF -#define NUM_VULKAN_BUFFERS 6 // Kept track of with mSwapchainCurrentIdx +#define NUM_VULKAN_BUFFERS 8 // Kept track of with mSwapchainCurrentIdx // Comment this in if you need AHB support in your app (should be part of application configuration in the future). May interfere with profiling! //#define ANDROID_HARDWARE_BUFFER_SUPPORT @@ -59,7 +60,6 @@ #if OS_ANDROID struct ANativeWindow; #endif // OS_ANDROID -class VulkanExtension; template class IndexBuffer; template class VertexBuffer; struct VulkanDeviceFeaturePrint; @@ -67,15 +67,22 @@ struct VulkanDevicePropertiesPrint; struct VulkanInstanceFunctionPointerLookup; struct VulkanDeviceFunctionPointerLookup; namespace ExtensionHelper { + struct Ext_VK_KHR_surface; + struct Ext_VK_KHR_get_physical_device_properties2; + struct Ext_VK_KHR_get_surface_capabilities2; struct Ext_VK_KHR_draw_indirect_count; struct Ext_VK_EXT_debug_utils; struct Ext_VK_EXT_debug_marker; struct Ext_VK_EXT_hdr_metadata; struct Ext_VK_KHR_fragment_shading_rate; struct Ext_VK_KHR_create_renderpass2; + struct Ext_VK_ARM_tensors; + struct Ext_VK_ARM_data_graph; struct Ext_VK_KHR_synchronization2; + struct Ext_VK_QCOM_tile_properties; struct Vulkan_SubgroupPropertiesHook; struct Vulkan_StorageFeaturesHook; + struct Ext_VK_KHR_mesh_shader; }; class VulkanDebugCallback; enum class TextureFormat; @@ -128,6 +135,8 @@ class Vulkan : public GraphicsApiBase struct AppConfiguration { + /// (optional) Vulkan api version this app would like. If not set the framework will default to whatever version it choses. + std::optional ApiVerson; /// (optional) override of the priority used to initialize the async queue (assuming VK_EXT_global_priority is available and loaded) std::optional AsyncQueuePriority; /// (optional) override of the framebuffer depth format. Setting to VK_FORMAT_UNDEFINED will disable the creation of a depth buffer during InitSwapChain @@ -139,41 +148,51 @@ class Vulkan : public GraphicsApiBase /// @tparam T template class for the extension /// @return pointer to the registered extension (guaranteed to not go out of scope or move until Vulkan deleted) template - const T* RequiredExtension() { return AddExtension( std::make_unique( VulkanExtension::eRequired ) ); } - void RequiredExtension( const std::string& extensionName ) { AddExtension( std::make_unique( extensionName, VulkanExtension::eRequired ) ); } + const T* RequiredExtension() { return AddExtension( std::make_unique( VulkanExtensionStatus::eRequired ) ); } + const VulkanExtension* RequiredExtension( const std::string& extensionName ) { return AddExtension( std::make_unique>( extensionName, VulkanExtensionStatus::eRequired ) ); } /// @brief Register the vulkan extension (templated) as desired by this app (but optional) /// @tparam T template class for the extension /// @return pointer to the registered extension (guaranteed to not go out of scope or move until Vulkan deleted) template - const T* OptionalExtension() { return AddExtension( std::make_unique( VulkanExtension::eOptional ) ); } - const VulkanExtension* OptionalExtension( const std::string& extensionName ) { return AddExtension( std::make_unique( extensionName, VulkanExtension::eOptional ) ); } + const T* OptionalExtension() { return AddExtension( std::make_unique( VulkanExtensionStatus::eOptional ) ); } + const VulkanExtension* OptionalExtension( const std::string& extensionName ) { return AddExtension( std::make_unique>( extensionName, VulkanExtensionStatus::eOptional ) ); } template - const T* AddExtension( std::unique_ptr extension ) { - auto it = AdditionalVulkanDeviceExtensions.try_emplace( extension->Name, std::move( extension ) ); - if (!it.second) + const T* AddExtension(std::unique_ptr extension) { + if constexpr (T::Type == VulkanExtensionType::eInstance) { - assert( 0 ); // cannot add another extension with the same name but (potentially) a different implementation class - return nullptr; + auto it = AdditionalVulkanInstanceExtensions.try_emplace(extension->Name, std::move(extension)); + if (!it.second) + { + assert(0); // cannot add another extension with the same name but (potentially) a different implementation class + return nullptr; + } + return static_cast(&(*it.first->second.get())); } - return static_cast(&(*it.first->second.get())); - } - - // specialized for VulkanExtension base class. - template<> - const VulkanExtension* AddExtension( std::unique_ptr extension ) { - auto it = AdditionalVulkanDeviceExtensions.try_emplace( extension->Name, std::move( extension ) ); - if (!it.second) + else if constexpr (T::Type == VulkanExtensionType::eDevice) + { + auto it = AdditionalVulkanDeviceExtensions.try_emplace(extension->Name, std::move(extension)); + if (!it.second) + { + assert(0); // cannot add another extension with the same name but (potentially) a different implementation class + return nullptr; + } + return static_cast(&(*it.first->second.get())); + } + else { - // extension already registered! But ok because we are only adding the base type. + // constexpr static_assert in a template is 'problematic' in C++17 (and seemingly clang C++20). At some point this can turn back into static_assert(0, "..."); + [] () { static_assert(flag, "Unsupported VulkanExtensionType"); }(); } - return &(*it.first->second.get()); } + protected: friend class Vulkan; + /// (optional) list of 'additional' instance extensions that this app requires or would like (optional). + std::map>> AdditionalVulkanInstanceExtensions; /// (optional) list of 'additional' device extensions that this app requires or would like (optional). - std::map> AdditionalVulkanDeviceExtensions; + std::map>> AdditionalVulkanDeviceExtensions; }; typedef std::function)> tSelectSurfaceFormatFn; @@ -200,7 +219,8 @@ class Vulkan : public GraphicsApiBase uint32_t GetSurfaceWidth() const { return m_SurfaceWidth; } ///< Swapchain width uint32_t GetSurfaceHeight() const { return m_SurfaceHeight; } ///< Swapchain height - VkImage GetSwapchainImage(uint32_t index) const {return m_SwapchainBuffers[index].image;} + VkFramebuffer GetSwapchainFramebuffer(uint32_t index) const { return m_SwapchainBuffers[index].framebuffer; } + VkImage GetSwapchainImage(uint32_t index) const { return m_SwapchainBuffers[index].image; } TextureFormat GetSurfaceFormat() const { return m_SurfaceFormat; } /// Current buffer index (that can be filled) and the fence that should be signalled when the GPU completes this buffer and the semaphore to wait on before starting rendering. @@ -370,6 +390,39 @@ class Vulkan : public GraphicsApiBase VkSampleCountFlagBits OutputMsaa, VkRenderPass* pRenderPass/*out*/ ); + /// @brief Create a render pass pipeline. + /// @param pipelineCache (optional) vulkan pipeline cache + /// @param visci (required) vertex input state + /// @param pipelineLayout (required) Vulkan pipeline layout + /// @param renderPass (required) render pass to make this pipeline for + /// @param subpass (required) subpass number (0 if first subpass or not using subpasses) + /// @param providedRS (optional) rasterization state + /// @param providedDSS (optional) depth stencil state + /// @param specializationInfo (optional) specialization constants (shared between vert and frag shader) + /// @return true on success + bool CreatePipeline( + VkPipelineCache pipelineCache, + const VkPipelineVertexInputStateCreateInfo* visci, + VkPipelineLayout pipelineLayout, + VkRenderPass renderPass, + uint32_t subpass, + const VkPipelineRasterizationStateCreateInfo* providedRS, + const VkPipelineDepthStencilStateCreateInfo* providedDSS, + const VkPipelineColorBlendStateCreateInfo* providedCBS, + const VkPipelineMultisampleStateCreateInfo* providedMS, + std::span dynamicStates, + const VkViewport* viewport, + const VkRect2D* scissor, + VkShaderModule taskShaderModule, + VkShaderModule meshShaderModule, + VkShaderModule vertShaderModule, + VkShaderModule fragShaderModule, + const VkSpecializationInfo* specializationInfo, + bool bAllowDerivation, + VkPipeline deriveFromPipeline, + VkPipeline* pipeline, + VkPipelineInputAssemblyStateCreateInfo ia_custom); + /// @brief Create a render pass pipeline. /// @param pipelineCache (optional) vulkan pipeline cache /// @param visci (required) vertex input state @@ -400,6 +453,38 @@ class Vulkan : public GraphicsApiBase VkPipeline deriveFromPipeline, VkPipeline* pipeline); + /// @brief Create a render pass pipeline. + /// @param pipelineCache (optional) vulkan pipeline cache + /// @param visci (required) vertex input state + /// @param pipelineLayout (required) Vulkan pipeline layout + /// @param renderPass (required) render pass to make this pipeline for + /// @param subpass (required) subpass number (0 if first subpass or not using subpasses) + /// @param providedRS (optional) rasterization state + /// @param providedDSS (optional) depth stencil state + /// @param specializationInfo (optional) specialization constants (shared between vert and frag shader) + /// @return true on success + bool CreatePipeline( + VkPipelineCache pipelineCache, + const VkPipelineVertexInputStateCreateInfo* visci, + VkPipelineLayout pipelineLayout, + VkRenderPass renderPass, + uint32_t subpass, + const VkPipelineRasterizationStateCreateInfo* providedRS, + const VkPipelineDepthStencilStateCreateInfo* providedDSS, + const VkPipelineColorBlendStateCreateInfo* providedCBS, + const VkPipelineMultisampleStateCreateInfo* providedMS, + std::span dynamicStates, + const VkViewport* viewport, + const VkRect2D* scissor, + VkShaderModule taskShaderModule, + VkShaderModule meshShaderModule, + VkShaderModule vertShaderModule, + VkShaderModule fragShaderModule, + const VkSpecializationInfo* specializationInfo, + bool bAllowDerivation, + VkPipeline deriveFromPipeline, + VkPipeline* pipeline); + /// @brief Create a compute shader pipeline /// @param pipelineCache (optional) vulkan pipeline cache /// @param pipelineLayout (required) vulkan pipeline layout @@ -477,19 +562,31 @@ class Vulkan : public GraphicsApiBase return m_VulkanGpuProperties.Base.properties.limits.timestampPeriod; } + inline bool IsComputeQueueSupported() const + { + return m_VulkanGraphicsQueueSupportsCompute; + } + + inline bool IsDataGraphQueueSupported() const + { + return m_VulkanGraphicsQueueSupportsDataGraph; + } + private: // Vulkan takes a huge amount of code to initialize :) // Break up into multiple smaller functions. bool RegisterKnownExtensions(); bool CreateInstance(); - void InitInstanceExtensions(); + bool InitInstanceExtensions(); bool GetPhysicalDevices(); + bool GetDataGraphProcessingEngine(); bool InitDeviceExtensions(); bool InitQueue(); bool InitInstanceFunctions(); bool InitDebugCallback(); bool InitSurface(); bool InitCompute(); + bool InitDataGraph(); bool InitDevice(); bool InitSyncElements(); bool InitCommandPools(); @@ -525,7 +622,8 @@ class Vulkan : public GraphicsApiBase eGraphicsQueue = 0, eComputeQueue = 1, eTransferQueue = 2, - eMaxNumQueues = 3 + eDataGraphQueue = 3, + eMaxNumQueues = 4 }; struct VulkanQueue { VkQueue Queue = VK_NULL_HANDLE; @@ -538,6 +636,8 @@ class Vulkan : public GraphicsApiBase VkPhysicalDevice m_VulkanGpu; ///< Current Vulkan GPU device being used (only one GPU is currently supported) + VkPhysicalDeviceDataGraphProcessingEngineARM m_VulkanDataGraphProcessingEngine; ///< Current Vulkan NPU device type (only one NPU is currently supported) + VkSemaphore m_RenderCompleteSemaphore; uint32_t m_SwapchainImageCount; @@ -545,6 +645,7 @@ class Vulkan : public GraphicsApiBase std::vector m_SwapchainBuffers; DepthInfo m_SwapchainDepth; // ... but they all use the same depth + std::array m_SwapchainRenderPassDependencies{}; // dependencies used when creating m_SwapchainRenderPass VkRenderPass m_SwapchainRenderPass; TextureFormat m_SurfaceFormat; // Current surface format @@ -552,14 +653,16 @@ class Vulkan : public GraphicsApiBase bool m_UseRenderPassTransform; // If set attempt to disable the surfaceflinger doing backbuffer rotation and to use the Qualcomm render pass transform extension, assumes the application will render in the device's default orientation bool m_UsePreTransform; // If set attempt to disable the surfaceflinger doing backbuffer rotation without enabling the Qualcomm render pass transform extension. Assumes the application will render to the rotated backbuffer. + template struct RegisteredExtensions { /// Template to add a VulkanExtension definition, parameters are the extension name and (optionally) status/version template - void AddExtension(std::string name, T ...args) { - auto pExtension = std::make_unique(name, std::forward(args)...); + VulkanExtension* AddExtension(std::string name, T ...args) { + auto pExtension = std::make_unique>(name, std::forward(args)...); auto insertIt = m_Extensions.try_emplace( std::move(name), std::move(pExtension) ); - assert( insertIt.second == true );//check we didnt already register this extension which may be problematic if registered once as a 'basic' VulkanExtension and once as a derived class. + // since we are adding as a 'basic' extension (just a name, no extension class) it is ok if someone beat us to it and already registered. We will return a pointer to their instance and the unique we just created will be deleted upon return from this function! + return static_cast*>(insertIt.first->second.get()); } /// Template to add a more complex VulkanExtension definition (expects a class derived from VulkanExtension) template @@ -570,21 +673,28 @@ class Vulkan : public GraphicsApiBase return static_cast(insertIt.first->second.get()); } - const VulkanExtension* GetExtension( const std::string& extensionName ) const { + const VulkanExtension* GetExtension( const char*const extensionName ) const { auto it = m_Extensions.find( extensionName ); - if ( it == m_Extensions.end() ) + if (it == m_Extensions.end()) return nullptr; return it->second.get(); } - VulkanExtension* GetExtension( const std::string& extensionName ) { + VulkanExtension* GetExtension( const char* const extensionName ) { auto it = m_Extensions.find( extensionName ); - if ( it == m_Extensions.end() ) + if (it == m_Extensions.end()) return nullptr; return it->second.get(); } + const VulkanExtension* GetExtension( const std::string& extensionName ) const { + return GetExtension( extensionName.c_str() ); + } + VulkanExtension* GetExtension( const std::string& extensionName ) { + return GetExtension( extensionName.c_str() ); + } template const T* GetExtension() const { + static_assert(T_TYPE == T::Type, ""); auto foundIt = m_Extensions.find( T::Name ); if (foundIt == m_Extensions.end()) return nullptr; @@ -592,23 +702,46 @@ class Vulkan : public GraphicsApiBase } // Call once, once all the known/wanted extensions have been added. - void RegisterAll(Vulkan& vulkan); + void RegisterAll(Vulkan& vulkan) + { + for (auto& extension : m_Extensions) + { + LOGI("Registering extension: %s (%s)", extension.first.c_str(), VulkanExtensionBase::cStatusNames[static_cast(extension.second->Status)]); + extension.second->Register(vulkan); + } + } // Container of all the extensions we know about (app may add to this from its config). Our GPU device driver may not support all these known extensions. - std::map< std::string, std::unique_ptr, std::less<> > m_Extensions; + std::map< std::string, std::unique_ptr>, std::less<> > m_Extensions; }; // Containers for the registered (and potentially loaded) extensions. - RegisteredExtensions m_DeviceExtensions; ///< Device extensions - RegisteredExtensions m_Vulkan11ProvidedExtensions; ///< 'extensions' included in Vulkan 1.1 (implicitly loaded). + RegisteredExtensions m_InstanceExtensions; ///< Instance extensions + RegisteredExtensions m_DeviceExtensions; ///< Device extensions + RegisteredExtensions m_Vulkan11ProvidedExtensions; ///< 'extensions' included in Vulkan 1.1 (implicitly loaded). // Generic extension query (will fail to compile if type T does not define static Name). template const T* GetExtension() const { - return (const T*)m_DeviceExtensions.GetExtension(T::Name); + if constexpr (T::Type == VulkanExtensionType::eInstance) + return (const T*)m_InstanceExtensions.GetExtension(T::Name); + else if constexpr (T::Type == VulkanExtensionType::eDevice) + return (const T*)m_DeviceExtensions.GetExtension(T::Name); + else + { + // constexpr static_assert in a template is 'problematic' in C++17 (and seemingly clang C++20). At some point this can turn back into static_assert(0, "..."); + [] () { static_assert(flag, "Unsupported VulkanExtensionType"); }(); + } + return nullptr; } // Template specializations for stored extension pointers (compile time lookup). template<> + const ExtensionHelper::Ext_VK_KHR_surface* GetExtension() const { return m_ExtKhrSurface; }; + template<> + const ExtensionHelper::Ext_VK_KHR_get_physical_device_properties2* GetExtension() const { return m_ExtKhrGetPhysicalDeviceProperties2; }; + template<> + const ExtensionHelper::Ext_VK_KHR_get_surface_capabilities2* GetExtension() const { return m_ExtSurfaceCapabilities2; }; + template<> const ExtensionHelper::Ext_VK_KHR_draw_indirect_count* GetExtension() const { return m_ExtKhrDrawIndirectCount; }; template<> const ExtensionHelper::Ext_VK_EXT_debug_utils* GetExtension() const { return m_ExtDebugUtils; }; @@ -617,9 +750,17 @@ class Vulkan : public GraphicsApiBase template<> const ExtensionHelper::Ext_VK_EXT_hdr_metadata* GetExtension() const { return m_ExtHdrMetadata; }; template<> + const ExtensionHelper::Ext_VK_ARM_tensors* GetExtension() const { return m_ExtArmTensors; }; + template<> + const ExtensionHelper::Ext_VK_ARM_data_graph* GetExtension() const { return m_ExtArmDataGraph; }; + template<> const ExtensionHelper::Ext_VK_KHR_synchronization2* GetExtension() const { return m_ExtKhrSynchronization2; }; template<> + const ExtensionHelper::Ext_VK_QCOM_tile_properties* GetExtension() const { return m_ExtQcomTileProperties; }; + template<> const ExtensionHelper::Vulkan_SubgroupPropertiesHook* GetExtension() const { return m_SubgroupProperties; }; + template<> + const ExtensionHelper::Ext_VK_KHR_mesh_shader* GetExtension() const { return m_ExtMeshShader; }; template void AddExtensionHooks( ExtensionHook* t, TT... tt ) { @@ -636,6 +777,7 @@ class Vulkan : public GraphicsApiBase // Therefore, these have been moved from "private" to "public" std::array m_VulkanQueueFamilyIndx; bool m_VulkanGraphicsQueueSupportsCompute; + bool m_VulkanGraphicsQueueSupportsDataGraph; std::vector m_pVulkanQueueProps; private: @@ -654,15 +796,16 @@ class Vulkan : public GraphicsApiBase // Debug/Validation Layers std::vector m_InstanceLayerProps; - std::vector m_InstanceExtensionProps; + //std::vector m_InstanceExtensionProps; /// Layers we want to use (sorted alphabetically) std::vector m_InstanceLayerNames; /// Extensions we want to use (sorted alphabetically) - std::vector m_InstanceExtensionNames; + //std::vector m_InstanceExtensionNames; // Vulkan Objects VkInstance m_VulkanInstance; + uint32_t m_VulkanApiVersion; uint32_t m_VulkanGpuCount; uint32_t m_VulkanGpuIdx; @@ -680,7 +823,6 @@ class Vulkan : public GraphicsApiBase VkPhysicalDeviceMemoryProperties2 m_PhysicalDeviceMemoryProperties = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 }; - std::vector m_pDeviceLayerProps; std::vector m_pDeviceLayerNames; ///< Requested/Loaded device layers // Containers for handles in to VulkanExtensions that extend Vulkan structures (via pNext chain). @@ -716,15 +858,23 @@ class Vulkan : public GraphicsApiBase uint32_t m_ExtValidationFeaturesVersion; ///< Version of the VK_EXT_validation_features extension (0 validation is disabled and/or extension not loaded) // Extensions loaded by this class - const ExtensionHelper::Ext_VK_KHR_draw_indirect_count* m_ExtKhrDrawIndirectCount = nullptr; - const ExtensionHelper::Ext_VK_EXT_debug_utils* m_ExtDebugUtils = nullptr; - const ExtensionHelper::Ext_VK_EXT_debug_marker* m_ExtDebugMarker = nullptr; - const ExtensionHelper::Ext_VK_EXT_hdr_metadata* m_ExtHdrMetadata = nullptr; - const ExtensionHelper::Ext_VK_KHR_fragment_shading_rate* m_ExtFragmentShadingRate = nullptr; - const ExtensionHelper::Ext_VK_KHR_create_renderpass2* m_ExtRenderPass2 = nullptr; - const ExtensionHelper::Ext_VK_KHR_synchronization2* m_ExtKhrSynchronization2 = nullptr; - const ExtensionHelper::Vulkan_SubgroupPropertiesHook* m_SubgroupProperties = nullptr; - const ExtensionHelper::Vulkan_StorageFeaturesHook* m_StorageFeatures = nullptr; + const VulkanExtension* m_ExtValidationFeatures = nullptr; + const ExtensionHelper::Ext_VK_KHR_surface* m_ExtKhrSurface = nullptr; + const ExtensionHelper::Ext_VK_KHR_get_physical_device_properties2*m_ExtKhrGetPhysicalDeviceProperties2 = nullptr; + const ExtensionHelper::Ext_VK_KHR_get_surface_capabilities2*m_ExtSurfaceCapabilities2 = nullptr; + const ExtensionHelper::Ext_VK_KHR_draw_indirect_count* m_ExtKhrDrawIndirectCount = nullptr; + const ExtensionHelper::Ext_VK_EXT_debug_utils* m_ExtDebugUtils = nullptr; + const ExtensionHelper::Ext_VK_EXT_debug_marker* m_ExtDebugMarker = nullptr; + const ExtensionHelper::Ext_VK_EXT_hdr_metadata* m_ExtHdrMetadata = nullptr; + const ExtensionHelper::Ext_VK_KHR_fragment_shading_rate* m_ExtFragmentShadingRate = nullptr; + const ExtensionHelper::Ext_VK_KHR_create_renderpass2* m_ExtRenderPass2 = nullptr; + const ExtensionHelper::Ext_VK_ARM_tensors* m_ExtArmTensors = nullptr; + const ExtensionHelper::Ext_VK_ARM_data_graph* m_ExtArmDataGraph = nullptr; + const ExtensionHelper::Ext_VK_KHR_synchronization2* m_ExtKhrSynchronization2 = nullptr; + const ExtensionHelper::Ext_VK_QCOM_tile_properties* m_ExtQcomTileProperties = nullptr; + const ExtensionHelper::Ext_VK_KHR_mesh_shader* m_ExtMeshShader = nullptr; + const ExtensionHelper::Vulkan_SubgroupPropertiesHook* m_SubgroupProperties = nullptr; + const ExtensionHelper::Vulkan_StorageFeaturesHook* m_StorageFeatures = nullptr; #if defined (OS_ANDROID) bool m_ExtExternMemoryCapsAvailable; diff --git a/framework/code/vulkanRT/extensionHelpersRT.hpp b/framework/code/vulkanRT/extensionHelpersRT.hpp index f227db9..0cdda35 100644 --- a/framework/code/vulkanRT/extensionHelpersRT.hpp +++ b/framework/code/vulkanRT/extensionHelpersRT.hpp @@ -26,7 +26,7 @@ namespace ExtensionHelperRT VkPhysicalDeviceAccelerationStructurePropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR> { static constexpr auto Name = VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME; - Ext_VK_KHR_acceleration_structure( VulkanExtension::eStatus status = VulkanExtension::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) + Ext_VK_KHR_acceleration_structure( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) {} void PrintFeatures() const override { @@ -65,7 +65,7 @@ namespace ExtensionHelperRT struct Ext_VK_KHR_buffer_device_address : public VulkanDeviceFeaturesExtensionHelper { static constexpr auto Name = VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME; - Ext_VK_KHR_buffer_device_address( VulkanExtension::eStatus status = VulkanExtension::eRequired ) + Ext_VK_KHR_buffer_device_address( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) {} void PrintFeatures() const override @@ -91,7 +91,7 @@ namespace ExtensionHelperRT struct Ext_VK_KHR_ray_tracing_pipeline : public VulkanDeviceFeaturePropertiesExtensionHelper { static constexpr auto Name = VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME; - Ext_VK_KHR_ray_tracing_pipeline( VulkanExtension::eStatus status = VulkanExtension::eOptional ) + Ext_VK_KHR_ray_tracing_pipeline( VulkanExtensionStatus status = VulkanExtensionStatus::eOptional ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) {} void PrintFeatures() const override @@ -132,7 +132,7 @@ namespace ExtensionHelperRT struct Ext_VK_KHR_ray_query : public VulkanDeviceFeaturesExtensionHelper { static constexpr auto Name = VK_KHR_RAY_QUERY_EXTENSION_NAME; - Ext_VK_KHR_ray_query( VulkanExtension::eStatus status = VulkanExtension::eOptional ) + Ext_VK_KHR_ray_query( VulkanExtensionStatus status = VulkanExtensionStatus::eOptional ) : VulkanDeviceFeaturesExtensionHelper(Name, status) {} void PrintFeatures() const override diff --git a/framework/code/vulkanRT/traceable.cpp b/framework/code/vulkanRT/traceable.cpp index 7022055..a73ecc9 100644 --- a/framework/code/vulkanRT/traceable.cpp +++ b/framework/code/vulkanRT/traceable.cpp @@ -174,7 +174,7 @@ bool Traceable::Init() { for (const auto& passImageBinding : passImageBindings.first) // image binding can be an array of bindings { - const auto passUsage = BindingUseData(materialPassIdx, passImageBindings.second.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passImageBinding.image); + const auto passUsage = BindingUseData(materialPassIdx, passImageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passImageBinding.image); passNeedsExecutionBarrier |= emitBarrier(passUsage, prevImageUsages, [&imageMemoryBarriers](VkImage image) { imageMemoryBarriers.push_back(VkImageMemoryBarrier{ @@ -234,7 +234,7 @@ bool Traceable::Init() { for (const auto& passBufferBinding : passBufferBindings.first) // buffer binding can be an array of bindings { - const auto passUsage = BindingUseData(materialPassIdx, passBufferBindings.second.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passBufferBinding); + const auto passUsage = BindingUseData(materialPassIdx, passBufferBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passBufferBinding); passNeedsExecutionBarrier |= emitBarrier(passUsage, prevBufferUsages, [&](const VkBufferAndOffset& buffer) { diff --git a/framework/code/vulkanRT/vulkanRT.cpp b/framework/code/vulkanRT/vulkanRT.cpp index 111346d..b2c9d9e 100644 --- a/framework/code/vulkanRT/vulkanRT.cpp +++ b/framework/code/vulkanRT/vulkanRT.cpp @@ -25,7 +25,7 @@ VulkanRT::~VulkanRT() bool VulkanRT::Init() { // We MUST have bufferDeviceAddress for Ray Tracing (vkGetBufferDeviceAddress) - if (m_pExtKhrBufferDeviceAddress->Status!=VulkanExtension::eLoaded || m_pExtKhrBufferDeviceAddress->RequestedFeatures.bufferDeviceAddress == VK_FALSE) + if (m_pExtKhrBufferDeviceAddress->Status!=VulkanExtensionStatus::eLoaded || m_pExtKhrBufferDeviceAddress->RequestedFeatures.bufferDeviceAddress == VK_FALSE) { LOGE("Vulkan physical device must support bufferDeviceAddress (VK_KHR_buffer_device_address extension)"); return false; @@ -80,7 +80,7 @@ void VulkanRT::RegisterRequiredVulkanLayerExtensions( Vulkan::AppConfiguration& bool VulkanRT::HasRayPipelines() const { - return m_pExtKhrRayTracingPipeline != nullptr && m_pExtKhrRayTracingPipeline->Status == VulkanExtension::eLoaded; + return m_pExtKhrRayTracingPipeline != nullptr && m_pExtKhrRayTracingPipeline->Status == VulkanExtensionStatus::eLoaded; } void VulkanRT::vkGetAccelerationStructureBuildSizesKHR(VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) const diff --git a/framework/external/Vulkan-Headers b/framework/external/Vulkan-Headers index e8b8e06..a4f8ada 160000 --- a/framework/external/Vulkan-Headers +++ b/framework/external/Vulkan-Headers @@ -1 +1 @@ -Subproject commit e8b8e06d092ab406b097907ecaae1a8aae9c7d53 +Subproject commit a4f8ada9f4f97c45b8c89c57997be9cebaae65d2 diff --git a/project/android/build.bat b/project/android/build.bat index c7308a9..7744b14 100644 --- a/project/android/build.bat +++ b/project/android/build.bat @@ -1 +1,9 @@ -call gradlew build -Dorg.gradle.warning.mode=none --no-daemon -Dorg.gradle.jvmargs=-Xmx4096m --continue +@echo off +if "%1"=="" ( + echo Building all projects [build.bat can be invoved with project name argument to build just one project, if desired] + call gradlew build -Dorg.gradle.warning.mode=none --no-daemon -Dorg.gradle.jvmargs=-Xmx4096m --continue -x test +) else ( + echo Building project : %1 + call gradlew :%1:buildNeeded -Dorg.gradle.warning.mode=none --no-daemon -Dorg.gradle.jvmargs=-Xmx4096m --configure-on-demand -x test +) + diff --git a/project/android/build.gradle b/project/android/build.gradle index 8d83336..88387e3 100644 --- a/project/android/build.gradle +++ b/project/android/build.gradle @@ -9,7 +9,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.2.0' + classpath 'com.android.tools.build:gradle:8.8.1' // No application dependencies here; they belong in the individual module build.gradle files } } diff --git a/project/android/gradle.properties b/project/android/gradle.properties new file mode 100644 index 0000000..0d12a9d --- /dev/null +++ b/project/android/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 \ No newline at end of file diff --git a/project/android/gradlew b/project/android/gradlew index 4f906e0..f5feea6 100644 --- a/project/android/gradlew +++ b/project/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,69 +15,104 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +122,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,88 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/project/android/gradlew.bat b/project/android/gradlew.bat index 107acd3..9d21a21 100644 --- a/project/android/gradlew.bat +++ b/project/android/gradlew.bat @@ -13,8 +13,10 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +27,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/project/android/settings.gradle b/project/android/settings.gradle index 2304f1b..d9d9e04 100644 --- a/project/android/settings.gradle +++ b/project/android/settings.gradle @@ -1,13 +1,3 @@ -include ':empty', ':hello-gltf', ':hdrSwapchain', ':SubPass', ':shaderResolveTonemap', ':rotatedCopy', ':BloomImageProcessing', ':rayQueryShadows',':rayReflections',':sgsr',':sgsr2' +include ':empty', ':hello-gltf', ':hdrSwapchain', ':meshShaderKHR', ':SubPass', ':shaderResolveTonemap', ':rotatedCopy', ':BloomImageProcessing', ':rayPipelineGI', ':rayPipelineShadows', ':rayQueryShadows',':rayReflections',':sgsr', ':sgsr2', ':graph_pipelines' -project(':empty').projectDir = new File('../../samples/empty') -project(':hello-gltf').projectDir = new File('../../samples/hello-gltf') -project(':hdrSwapchain').projectDir = new File('../../samples/hdrSwapchain') -project(':SubPass').projectDir = new File('../../samples/SubPass') -project(':shaderResolveTonemap').projectDir = new File('../../samples/shaderResolveTonemap') -project(':rotatedCopy').projectDir = new File('../../samples/rotatedCopy') -project(':BloomImageProcessing').projectDir = new File('../../samples/BloomImageProcessing') -project(':rayQueryShadows').projectDir = new File('../../samples/rayQueryShadows') -project(':rayReflections').projectDir = new File('../../samples/rayReflections') -project(':sgsr').projectDir = new File('../../samples/sgsr') -project(':sgsr2').projectDir = new File('../../samples/sgsr2') \ No newline at end of file +project(':graph_pipelines').projectDir = new File('../../samples/graph_pipelines') diff --git a/project/windows/CMakeLists.txt b/project/windows/CMakeLists.txt index f2e322b..ef1ce4c 100644 --- a/project/windows/CMakeLists.txt +++ b/project/windows/CMakeLists.txt @@ -69,4 +69,5 @@ if(FRAMEWORK_ENABLE_VULKAN) add_subdirectory(../../samples/sgsr/ samples/sgsr) add_subdirectory(../../samples/sdp-cli/ samples/sdp-cli) add_subdirectory(../../samples/sgsr2/ samples/sgsr2) + add_subdirectory(../../samples/graph_pipelines/ samples/graph_pipelines) endif() diff --git a/samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat b/samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat new file mode 100644 index 0000000..674f5fd --- /dev/null +++ b/samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat @@ -0,0 +1,11 @@ +@echo off + +@echo Logcat (grep "graph_pipelines")... +call adb logcat -c +call adb logcat | FIND /I "graph_pipelines" + +@echo. +@echo **************************************** +@echo Done! +@echo **************************************** +pause diff --git a/samples/graph_pipelines/CMakeLists.txt b/samples/graph_pipelines/CMakeLists.txt new file mode 100644 index 0000000..b8e7fac --- /dev/null +++ b/samples/graph_pipelines/CMakeLists.txt @@ -0,0 +1,48 @@ +cmake_minimum_required (VERSION 3.21) + +project (graph_pipelines C CXX) +set(CMAKE_CXX_STANDARD 20) + +# +# Source files included in this application. +# + +set(CPP_SRC code/main/application.cpp + code/main/application.hpp +) + +# +# Setup the module path to include the 'project directory' (project/windows or project/android) +# +if(NOT DEFINED PROJECT_ROOT_DIR) + set(PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) # Windows can use CMAKE_SOURCE_DIR, Android needs build.gradle needs "-DPROJECT_ROOT_DIR=${project.rootDir}" in call to cmake set since there is not a 'top' cmakefile (gradle is top level) +endif() +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake) + +# +# Add in the contents of 'shaders' directory +# +include(AddShadersDir) + +# +# Do all the build steps for a Framework application. +# needs Framework_dir and project_name variables. +# +include(FrameworkApplicationHelper) + +# +# Copy required models to local folders +# +include(ModelPackager) + +# Museum GLTF +add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Museum) + +# +# Convert and copy textures to local folders +# +include(TexturePackager) + +# Textures +add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Textures) +add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/textures) \ No newline at end of file diff --git a/samples/graph_pipelines/CompileShaders.bat b/samples/graph_pipelines/CompileShaders.bat new file mode 100644 index 0000000..fcb833a --- /dev/null +++ b/samples/graph_pipelines/CompileShaders.bat @@ -0,0 +1,39 @@ +@echo off + +mkdir .\Media\Shaders + +@echo. +echo **************************************** +echo Compiling Shaders... +echo **************************************** +for %%i in (shaders\*.vert) do ( + call :COMPILE %%i || GOTO COMPILE_FAILED +) +for %%i in (shaders\*.frag) do ( + call :COMPILE %%i || GOTO COMPILE_FAILED +) +for %%i in (shaders\*.comp) do ( + call :COMPILE %%i || GOTO COMPILE_FAILED +) + +@echo. +echo **************************************** +echo Copying .json +echo **************************************** +xcopy /y shaders\*.json .\Media\Shaders\. + +@echo. +echo **************************************** +echo Done +echo **************************************** +IF %0 EQU "%~dpnx0" PAUSE +goto :EOF + +:COMPILE +glslangValidator.exe -V %1 -o .\Media\Shaders\%~nx1.spv +IF NOT ERRORLEVEL 1 echo. %1 -^> .\Media\Shaders\%~nx1.spv +goto :EOF + +:COMPILE_FAILED +echo COMPILE FAILED +IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/graph_pipelines/Install_APK.bat b/samples/graph_pipelines/Install_APK.bat new file mode 100644 index 0000000..c390062 --- /dev/null +++ b/samples/graph_pipelines/Install_APK.bat @@ -0,0 +1,13 @@ +@echo off +cd /D "%~dp0" + +@echo. +@echo **************************************** +@echo Install ..\..\build\android\graph_pipelines\outputs\apk\debug\graph_pipelines-debug.apk +@echo **************************************** +call adb install -r -t ..\..\build\android\graph_pipelines\outputs\apk\debug\graph_pipelines-debug.apk +@echo. +@echo **************************************** +@echo Done! +@echo **************************************** +IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/graph_pipelines/build.gradle b/samples/graph_pipelines/build.gradle new file mode 100644 index 0000000..c85b9b7 --- /dev/null +++ b/samples/graph_pipelines/build.gradle @@ -0,0 +1,91 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 30 + namespace "com.qualcomm.sgs.graph_pipelines" + + String rootDir = "${project.rootDir}" + rootDir = rootDir.replace("\\", "/") + + defaultConfig { + applicationId "com.quic.graph_pipelines" + minSdkVersion 26 + targetSdkVersion 33 + versionCode 1 + versionName "1.0" + ndkVersion "${project.ndkVersionDefault}" + ndk { + abiFilters 'arm64-v8a' + } + externalNativeBuild { + cmake { + arguments "-DPROJECT_ROOT_DIR=${rootDir}", "-DFRAMEWORK_DIR=${rootDir}/../../framework" + } + } + } + + signingConfigs{ + unsigned{ + storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") + storePassword = "android" + keyAlias = "androiddebugkey" + keyPassword = "android" + v2SigningEnabled = false + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.unsigned + } + debug { + debuggable = true + jniDebuggable = true + } + } + + sourceSets { + main { + jni.srcDirs = [] + manifest.srcFile 'project/android/AndroidManifest.xml' + //java.srcDirs = ['src'] + res.srcDirs = ['project/android/res'] + + // Uncomment this to enable validation +// jniLibs { +// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" +// } + } + main.assets { + srcDirs = ['assets'] + // Uncomment this to add Media folder to assets + srcDirs += ['assets_tmp'] + } + } + + dependencies { + } + + externalNativeBuild { + cmake { + version "3.19.0+" + path 'CMakeLists.txt' + } + } + + task copyTmpAssets(type: Copy) { + from "Media" + into "assets_tmp/Media" + } + task removeTmpAssets(type: Delete) { + delete "assets_tmp" + } + + afterEvaluate { + packageRelease.finalizedBy(removeTmpAssets) + } + + preBuild.dependsOn(copyTmpAssets) +} diff --git a/samples/graph_pipelines/code/main/application.cpp b/samples/graph_pipelines/code/main/application.cpp new file mode 100644 index 0000000..207a518 --- /dev/null +++ b/samples/graph_pipelines/code/main/application.cpp @@ -0,0 +1,1978 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "application.hpp" +#include "vulkan/extensionHelpers.hpp" +#include "main/applicationEntrypoint.hpp" +#include "camera/cameraController.hpp" +#include "camera/cameraControllerTouch.hpp" +#include "camera/cameraData.hpp" +#include "camera/cameraGltfLoader.hpp" +#include "gui/imguiVulkan.hpp" +#include "material/drawable.hpp" +#include "material/vulkan/shaderModule.hpp" +#include "material/shaderManagerT.hpp" +#include "material/materialManager.hpp" +#include "material/vulkan/specializationConstantsLayout.hpp" +#include "mesh/meshHelper.hpp" +#include "mesh/meshLoader.hpp" +#include "system/math_common.hpp" +#include "texture/textureManager.hpp" +#include "imgui.h" + +#include +#include +#include +#include + +/* +* # Major Keypoints: +* +* - For the Data Graph queue selection, see "Vulkan::InitDataGraph()". +* - For the Data Graph Processing Engine selection, see "bool Vulkan::GetDataGraphProcessingEngine()". +* - For command pool initialization, see "bool Vulkan::InitCommandPools()". +* +* +* +*/ + +namespace +{ + static constexpr std::array sRenderPassNames = { "RP_SCENE", "RP_HUD", "RP_BLIT" }; + + glm::vec3 gCameraStartPos = glm::vec3(26.48f, 20.0f, -5.21f); + glm::vec3 gCameraStartRot = glm::vec3(0.0f, 110.0f, 0.0f); + + float gFOV = PI_DIV_4; + float gNearPlane = 1.0f; + float gFarPlane = 1800.0f; + float gNormalAmount = 0.3f; + float gNormalMirrorReflectAmount = 0.05f; + + const char* gModelAssetPath = "Media\\Models\\PipelineCache.bin"; + const char* gMuseumAssetPath = "Media\\Meshes\\Museum.gltf"; + const char* gTextureFolder = "Media\\Textures\\"; + + static uint32_t FindMemoryType(VkPhysicalDevice& physicalDevice, uint32_t type_bits, VkMemoryPropertyFlags properties) + { + VkPhysicalDeviceMemoryProperties memProperties; + vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memProperties); + + for (uint32_t i = 0; i < memProperties.memoryTypeCount; i++) + { + if ((memProperties.memoryTypes[i].propertyFlags & properties) == properties && type_bits & (1 << i)) + return i; + } + + throw std::runtime_error("Failed to find suitable memory type!"); + }; +} + +/// +/// @brief Implementation of the Application entrypoint (called by the framework) +/// @return Pointer to Application (derived from @FrameworkApplicationBase). +/// Creates the Application class. Ownership is passed to the calling (framework) function. +/// +FrameworkApplicationBase* Application_ConstructApplication() +{ + return new Application(); +} + +Application::Application() : ApplicationHelperBase() +{ +} + +Application::~Application() +{ +} + +//----------------------------------------------------------------------------- +void Application::PreInitializeSetVulkanConfiguration(Vulkan::AppConfiguration& config) +//----------------------------------------------------------------------------- +{ + ApplicationHelperBase::PreInitializeSetVulkanConfiguration(config); + config.RequiredExtension(); + config.RequiredExtension(); + config.RequiredExtension(); + + config.OptionalExtension(); + config.OptionalExtension(); +} + +//----------------------------------------------------------------------------- +bool Application::Initialize(uintptr_t windowHandle, uintptr_t hInstance) +//----------------------------------------------------------------------------- +{ + if (!ApplicationHelperBase::Initialize( windowHandle, hInstance )) + { + return false; + } + + m_IsGraphPipelinesSupported &= GetVulkan()->HasLoadedVulkanDeviceExtension(VK_ARM_TENSORS_EXTENSION_NAME) + && GetVulkan()->HasLoadedVulkanDeviceExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME); + + // TODO: Remove when supported by the driver +#if defined(OS_ANDROID) + { + auto* Ext_VK_ARM_tensors = static_cast(GetVulkan()->m_DeviceExtensions.GetExtension(VK_ARM_TENSORS_EXTENSION_NAME)); + auto* Ext_VK_ARM_data_graph = static_cast(GetVulkan()->m_DeviceExtensions.GetExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME)); + auto fpGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(GetVulkan()->GetVulkanInstance(), "vkGetDeviceProcAddr"); + if (Ext_VK_ARM_tensors && Ext_VK_ARM_data_graph && fpGetDeviceProcAddr) + { + m_IsGraphPipelinesSupported = true; + } + } +#endif + + // NOTE: You should configure these according to what the model expects. + m_RenderResolution = glm::ivec2(960, 540); + m_UpscaledResolution = glm::ivec2(1920, 1080); // It just happens that this aligns with the default values of gSurfaceWidth and gSurfaceHeight. + + if (!InitializeCamera()) + { + return false; + } + + if (!InitializeLights()) + { + return false; + } + + if (!LoadShaders()) + { + return false; + } + + if (!CreateTensors()) + { + return false; + } + + if (!CreateGraphPipeline()) + { + return false; + } + + if (!InitUniforms()) + { + return false; + } + + if (!CreateRenderTargets()) + { + return false; + } + + if (!InitAllRenderPasses()) + { + return false; + } + + if (!InitGui(windowHandle)) + { + return false; + } + + if (!LoadMeshObjects()) + { + return false; + } + + if (!InitCommandBuffers()) + { + return false; + } + + if (!InitLocalSemaphores()) + { + return false; + } + + if (!BuildCmdBuffers()) + { + return false; + } + + if (!GetVulkan()->IsDataGraphQueueSupported()) + { + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +void Application::Destroy() +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + + // Uniform Buffers + ReleaseUniformBuffer(pVulkan, &m_ObjectVertUniform); + ReleaseUniformBuffer(pVulkan, &m_LightUniform); + + for (auto& [hash, objectUniform] : m_ObjectFragUniforms) + { + ReleaseUniformBuffer(pVulkan, &objectUniform.objectFragUniform); + } + + // Cmd buffers + for (int whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + for (auto& cmdBuffer : m_RenderPassData[whichPass].PassCmdBuffer) + { + cmdBuffer.Release(); + } + + for (auto& cmdBuffer : m_RenderPassData[whichPass].ObjectsCmdBuffer) + { + cmdBuffer.Release(); + } + + m_RenderPassData[whichPass].RenderTarget.Release(); + } + + // Render passes / Semaphores + for (int whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + vkDestroyRenderPass(pVulkan->m_VulkanDevice, m_RenderPassData[whichPass].RenderPass, nullptr); + vkDestroySemaphore(pVulkan->m_VulkanDevice, m_RenderPassData[whichPass].PassCompleteSemaphore, nullptr); + } + + // Drawables + m_SceneDrawables.clear(); + m_BlitQuadDrawable.reset(); + + // Internal + m_ShaderManager.reset(); + m_MaterialManager.reset(); + m_CameraController.reset(); + m_AssetManager.reset(); + + ApplicationHelperBase::Destroy(); +} + +//----------------------------------------------------------------------------- +bool Application::InitializeLights() +//----------------------------------------------------------------------------- +{ + m_LightUniformData.SpotLights_pos[0] = glm::vec4(-6.900000f, 32.299999f, -1.900000f, 1.0f); + m_LightUniformData.SpotLights_pos[1] = glm::vec4(3.300000f, 26.900000f, 7.600000f, 1.0f); + m_LightUniformData.SpotLights_pos[2] = glm::vec4(12.100000f, 41.400002f, -2.800000f, 1.0f); + m_LightUniformData.SpotLights_pos[3] = glm::vec4(-5.400000f, 18.500000f, 28.500000f, 1.0f); + + m_LightUniformData.SpotLights_dir[0] = glm::vec4(-0.534696f, -0.834525f, 0.132924f, 0.0f); + m_LightUniformData.SpotLights_dir[1] = glm::vec4(0.000692f, -0.197335f, 0.980336f, 0.0f); + m_LightUniformData.SpotLights_dir[2] = glm::vec4(0.985090f, -0.172016f, 0.003000f, 0.0f); + m_LightUniformData.SpotLights_dir[3] = glm::vec4(0.674125f, -0.295055f, -0.677125f, 0.0f); + + m_LightUniformData.SpotLights_color[0] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 3.000000f); + m_LightUniformData.SpotLights_color[1] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 3.500000f); + m_LightUniformData.SpotLights_color[2] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 2.000000f); + m_LightUniformData.SpotLights_color[3] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 2.800000f); + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::InitializeCamera() +//----------------------------------------------------------------------------- +{ + LOGI("******************************"); + LOGI("Initializing Camera..."); + LOGI("******************************"); + + m_Camera.SetPosition(gCameraStartPos, glm::quat(gCameraStartRot * TO_RADIANS)); + m_Camera.SetAspect(float(gRenderWidth) / float(gRenderHeight)); + m_Camera.SetFov(gFOV); + m_Camera.SetClipPlanes(gNearPlane, gFarPlane); + + // Camera Controller // + +#if defined(OS_ANDROID) + typedef CameraControllerTouch tCameraController; +#else + typedef CameraController tCameraController; +#endif + + auto cameraController = std::make_unique(); + if (!cameraController->Initialize(gRenderWidth, gRenderHeight)) + { + return false; + } + + m_CameraController = std::move(cameraController); + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::CreateTensors() +//----------------------------------------------------------------------------- +{ + if (!m_IsGraphPipelinesSupported) + { + LOGI("Not creating Tensors as base extension isn't supported"); + return true; + } + + auto& vulkan = *GetVulkan(); + const auto& tensor_extension = vulkan.GetExtension(); + assert(tensor_extension != nullptr); + + LOGI("Creating Tensors..."); + + const int64_t componentsPerPixel = 3; // R8G8B8_UNORM and Model is RGB + + m_InputTensor.strides = { componentsPerPixel * m_RenderResolution.x, componentsPerPixel, 1 }; + m_InputTensor.dimensions = { m_RenderResolution.y, m_RenderResolution.x, componentsPerPixel }; + m_InputTensor.portBindingIndex = m_QNNInputPortBinding; + + m_OutputTensor.strides = { componentsPerPixel * m_UpscaledResolution.x, componentsPerPixel, 1 }; + m_OutputTensor.dimensions = { m_UpscaledResolution.y, m_UpscaledResolution.x, componentsPerPixel }; + m_OutputTensor.portBindingIndex = m_QNNOutputPortBinding; + + auto CreateTensor = [&](GraphPipelineTensor& targetTensor) -> bool + { + const uint32_t bufferSize = targetTensor.dimensions[0] * targetTensor.dimensions[1] * targetTensor.dimensions[2]; + + // TENSOR OBJECT // + + LOGI("Creating Tensors Object"); + + targetTensor.tensorDescription = VkTensorDescriptionARM + { + .sType = VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM, + .pNext = nullptr, + .tiling = VK_TENSOR_TILING_LINEAR_ARM, // VK_TENSOR_TILING_OPTIMAL_ARM TODO: Find out why it cannot be optimal + .format = VK_FORMAT_R8_UNORM, + .dimensionCount = static_cast(targetTensor.dimensions.size()), + .pDimensions = targetTensor.dimensions.data(), + .pStrides = nullptr, + .usage = VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM/* | VK_TENSOR_USAGE_SHADER_BIT_ARM*/ + }; + + VkExternalMemoryTensorCreateInfoARM externalInfo + { + .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM, + .pNext = nullptr, + .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, + }; + + VkTensorCreateInfoARM tensorInfo = + { + .sType = VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM, + .pNext = &externalInfo, + .flags = 0, + .pDescription = &targetTensor.tensorDescription, + .sharingMode = VK_SHARING_MODE_EXCLUSIVE, + .queueFamilyIndexCount = 0, + .pQueueFamilyIndices = nullptr + }; + + if (tensor_extension->m_vkCreateTensorARM(vulkan.m_VulkanDevice, &tensorInfo, nullptr, &targetTensor.tensor) != VK_SUCCESS) + { + return false; + } + + // TENSOR MEMORY REQUIREMENTS // + +#if 0 + VkMemoryDedicatedAllocateInfoTensorARM dedicatedInfo = + { + .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM, + .pNext = nullptr, + .tensor = targetTensor.tensor + }; +#endif + +#if 0 + VkTensorMemoryRequirementsInfoARM memReqInfo = + { + .sType = VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM, + .pNext = nullptr, + .tensor = targetTensor.tensor + }; + + VkMemoryRequirements2 memReq = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; + tensor_extension->m_vkGetTensorMemoryRequirementsARM(vulkan.m_VulkanDevice, &memReqInfo, &memReq); +#else + + VkDeviceTensorMemoryRequirementsARM deviceMemReqInfo = + { + .sType = VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM, + .pNext = nullptr, + .pCreateInfo = &tensorInfo + }; + VkMemoryRequirements2 memReq = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; + tensor_extension->m_vkGetDeviceTensorMemoryRequirementsARM(vulkan.m_VulkanDevice, &deviceMemReqInfo, &memReq); +#endif + + // TENSOR ALIASED BUFFER // + + LOGI("Creating Tensor Aliased Buffer - Tensor Size: %d - Buffer Size: %d", memReq.memoryRequirements.size, bufferSize); + + // Create buffer with aliasing usage + VkBufferCreateInfo bufferInfo = + { + .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + .pNext = nullptr, + .flags = 0, + .size = bufferSize, + .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT/* | VK_BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM*/, + .sharingMode = VK_SHARING_MODE_EXCLUSIVE + }; + + if (vkCreateBuffer(vulkan.m_VulkanDevice, &bufferInfo, nullptr, &targetTensor.aliasedBuffer) != VK_SUCCESS) + { + return false; + } + + // TENSOR MEMORY // + + LOGI("Allocating Tensor Memory"); + + VkExportMemoryAllocateInfo exportAllocInfo = + { + .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, + .pNext = nullptr, + .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, + }; + + VkMemoryRequirements bufferMemReq = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; + vkGetBufferMemoryRequirements(vulkan.m_VulkanDevice, targetTensor.aliasedBuffer, &bufferMemReq); + + VkMemoryAllocateInfo allocInfo = + { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .pNext = &exportAllocInfo, + .allocationSize = bufferMemReq.size, + .memoryTypeIndex = FindMemoryType(vulkan.m_VulkanGpu, bufferMemReq.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) + }; + + if (vkAllocateMemory(vulkan.m_VulkanDevice, &allocInfo, nullptr, &targetTensor.tensorMemory) != VK_SUCCESS) + { + return false; + } + + VkBindTensorMemoryInfoARM bindInfo = + { + .sType = VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM, + .pNext = nullptr, + .tensor = targetTensor.tensor, + .memory = targetTensor.tensorMemory, + .memoryOffset = 0 + }; + + LOGI("Binding Tensor Memory"); + + if(tensor_extension->m_vkBindTensorMemoryARM(vulkan.m_VulkanDevice, 1, &bindInfo) != VK_SUCCESS) + { + return false; + } + + LOGI("Binding Aliased Buffer Memory"); + + if (vkBindBufferMemory(vulkan.m_VulkanDevice, targetTensor.aliasedBuffer, targetTensor.tensorMemory, 0) != VK_SUCCESS) + { + return false; + } + + // TENSOR VIEW // + + LOGI("Creating Tensor View"); + + VkTensorViewCreateInfoARM viewInfo = + { + .sType = VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM, + .pNext = nullptr, + .flags = 0, + .tensor = targetTensor.tensor, + .format = targetTensor.tensorDescription.format + }; + + if (tensor_extension->m_vkCreateTensorViewARM(vulkan.m_VulkanDevice, &viewInfo, nullptr, &targetTensor.tensorView) != VK_SUCCESS) + { + return false; + } + + return true; + }; + + if (!CreateTensor(m_InputTensor)) + { + return false; + } + + if (!CreateTensor(m_OutputTensor)) + { + return false; + } + + LOGI("Creating Tensors Descriptor Pool"); + + VkDataGraphProcessingEngineCreateInfoARM engineInfo = {}; + VkDescriptorPoolCreateInfo descPoolInfo = {}; + + engineInfo.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM; + engineInfo.processingEngineCount = 1; + engineInfo.pProcessingEngines = &vulkan.m_VulkanDataGraphProcessingEngine; + + VkDescriptorPoolSize pool = {}; + + pool.type = VK_DESCRIPTOR_TYPE_TENSOR_ARM; + pool.descriptorCount = m_QNNMaxPortIndex + 1; + + descPoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; + descPoolInfo.pNext = &engineInfo; + descPoolInfo.maxSets = 1; + descPoolInfo.poolSizeCount = 1; + descPoolInfo.pPoolSizes = &pool; + if (vkCreateDescriptorPool(vulkan.m_VulkanDevice, &descPoolInfo, NULL, &m_TensorDescriptorPool) != VK_SUCCESS) + { + return false; + } + + // TENSOR DESCRIPTOR SET LAYOUT // + + LOGI("Creating Tensor Descriptor Set Layout"); + + VkDescriptorSetLayoutCreateInfo descLayoutInfo = {}; + std::array< VkDescriptorSetLayoutBinding, 2> bindings = {}; + + bindings[0].binding = m_InputTensor.portBindingIndex; + bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_TENSOR_ARM; + bindings[0].descriptorCount = 1; + bindings[0].stageFlags = VK_SHADER_STAGE_ALL; + + bindings[1].binding = m_OutputTensor.portBindingIndex; + bindings[1].descriptorType = VK_DESCRIPTOR_TYPE_TENSOR_ARM; + bindings[1].descriptorCount = 1; + bindings[1].stageFlags = VK_SHADER_STAGE_ALL; + + descLayoutInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; + descLayoutInfo.pNext = NULL; + descLayoutInfo.flags = 0; + descLayoutInfo.bindingCount = static_cast(bindings.size()); + descLayoutInfo.pBindings = bindings.data(); + + if (vkCreateDescriptorSetLayout(vulkan.m_VulkanDevice, &descLayoutInfo, NULL, &m_TensorDescriptorSetLayout) != VK_SUCCESS) + { + return false; + } + + // TENSOR DESCRIPTOR SETS // + + LOGI("Creating Tensor Descriptor Sets"); + + // Allocate Descriptor Sets: + VkDescriptorSetAllocateInfo info = {}; + + info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; + info.descriptorPool = m_TensorDescriptorPool; + info.descriptorSetCount = 1; + info.pSetLayouts = &m_TensorDescriptorSetLayout; + + if (vkAllocateDescriptorSets(vulkan.m_VulkanDevice, &info, &m_TensorDescriptorSet) != VK_SUCCESS) + { + return false; + } + + // UPDATE/BIND TENSOR DESCRIPTOR SETS // + + LOGI("Updating Tensor Descriptor Sets"); + + //Bind tensors to descriptor set + VkWriteDescriptorSet write[2]; + VkWriteDescriptorSetTensorARM tensorWrite[2]; + + tensorWrite[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM; + tensorWrite[0].pNext = NULL; + tensorWrite[0].tensorViewCount = 1; + tensorWrite[0].pTensorViews = &m_InputTensor.tensorView; + + tensorWrite[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM; + tensorWrite[1].pNext = NULL; + tensorWrite[1].tensorViewCount = 1; + tensorWrite[1].pTensorViews = &m_OutputTensor.tensorView; + + write[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + write[0].pNext = &tensorWrite[0]; + write[0].dstBinding = m_InputTensor.portBindingIndex; + write[0].descriptorCount = 1; + write[0].descriptorType = VK_DESCRIPTOR_TYPE_TENSOR_ARM; + write[0].dstSet = m_TensorDescriptorSet; + write[0].dstArrayElement = 0; + write[0].pBufferInfo = NULL; + write[0].pImageInfo = NULL; + write[0].pTexelBufferView = NULL; + + write[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + write[1].pNext = &tensorWrite[1]; + write[1].dstBinding = m_OutputTensor.portBindingIndex; + write[1].descriptorCount = 1; + write[1].descriptorType = VK_DESCRIPTOR_TYPE_TENSOR_ARM; + write[1].dstSet = m_TensorDescriptorSet; + write[1].dstArrayElement = 0; + write[1].pBufferInfo = NULL; + write[1].pImageInfo = NULL; + write[1].pTexelBufferView = NULL; + + vkUpdateDescriptorSets(vulkan.m_VulkanDevice, 2, write, 0, NULL); + + LOGI("Tensors Objects Created!"); + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::CreateGraphPipeline() +//----------------------------------------------------------------------------- +{ + if (!m_IsGraphPipelinesSupported) + { + LOGI("Not creating Graph Pipeline as base extension isn't supported"); + return true; + } + + auto& vulkan = *GetVulkan(); + const auto& data_graph_extension = vulkan.GetExtension(); + assert(data_graph_extension != nullptr); + + LOGI("Loading file model from disk..."); + + std::vector modelData; + { + if (!m_AssetManager->LoadFileIntoMemory(gModelAssetPath, modelData)) + { + LOGE("Failed to load Model file, disabling the Graph Pipelines extension"); + m_IsGraphPipelinesSupported = false; + return true; + } + } + + LOGI("Creating Pipeline Cache from Model..."); + + VkPipelineCacheCreateInfo cacheInfo = + { + .sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, + .pNext = nullptr, + .flags = 0, + .initialDataSize = modelData.size(), + .pInitialData = modelData.data() + }; + + if (vkCreatePipelineCache(vulkan.m_VulkanDevice, &cacheInfo, nullptr, &m_GraphPipelineInstance.pipelineCache) != VK_SUCCESS) + { + return false; + } + + LOGI("Creating Graph Pipeline Layout..."); + + VkPipelineLayoutCreateInfo pipelineLayoutInfo = + { + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .pNext = nullptr, + .flags = 0, + .setLayoutCount = 1, + .pSetLayouts = &m_TensorDescriptorSetLayout, + .pushConstantRangeCount = 0, + .pPushConstantRanges = nullptr + }; + + if (vkCreatePipelineLayout(vulkan.m_VulkanDevice, &pipelineLayoutInfo, nullptr, &m_GraphPipelineInstance.pipelineLayout) != VK_SUCCESS) + { + return false; + } + + LOGI("Creating Graph Pipeline..."); + + VkDataGraphPipelineResourceInfoARM resourceInfos[2]; + + resourceInfos[0].sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM; + resourceInfos[0].binding = m_QNNInputPortBinding; // Same as the input tensor + resourceInfos[0].pNext = &m_InputTensor.tensorDescription; + + resourceInfos[1].sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM; + resourceInfos[1].binding = m_QNNOutputPortBinding; // Same as the output tensor + resourceInfos[1].pNext = &m_OutputTensor.tensorDescription; + + //////////////////// + // IMPORTANT NOTE // These values should be read from the file identifier!!! + //////////////////// + + uint32_t graphId = 0; + uint32_t qnnGraphIdSize = sizeof(uint32_t); + uint8_t qnnGraphId[32]; + std::memcpy(qnnGraphId, &graphId, qnnGraphIdSize); + + //////////////////// + //////////////////// + //////////////////// + + VkDataGraphProcessingEngineCreateInfoARM engineInfo = { VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM }; + engineInfo.processingEngineCount = 1; + engineInfo.pProcessingEngines = &vulkan.m_VulkanDataGraphProcessingEngine; + + VkDataGraphPipelineIdentifierCreateInfoARM identifier = { VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM }; + identifier.pNext = &engineInfo; + identifier.identifierSize = qnnGraphIdSize; + identifier.pIdentifier = qnnGraphId; + + VkDataGraphPipelineShaderModuleCreateInfoARM moduleInfo = { VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM }; + moduleInfo.pNext = &identifier; + moduleInfo.module = VK_NULL_HANDLE; + moduleInfo.pName = ""; + + VkDataGraphPipelineCreateInfoARM pipelineInfo = + { + .sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM, + .pNext = &moduleInfo, + .flags = 0, + .layout = m_GraphPipelineInstance.pipelineLayout, + .resourceInfoCount = 2, + .pResourceInfos = resourceInfos + }; + + if (data_graph_extension->m_vkCreateDataGraphPipelinesARM( + vulkan.m_VulkanDevice, + VK_NULL_HANDLE, + m_GraphPipelineInstance.pipelineCache, + 1, + &pipelineInfo, + nullptr, + &m_GraphPipelineInstance.graphPipeline) != VK_SUCCESS) + { + return false; + } + + LOGI("Creating Graph Pipeline Session..."); + + VkDataGraphPipelineSessionCreateInfoARM sessionInfo = + { + .sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM, + .pNext = nullptr, + .flags = 0, + .dataGraphPipeline = m_GraphPipelineInstance.graphPipeline + }; + + if (data_graph_extension->m_vkCreateDataGraphPipelineSessionARM( + vulkan.m_VulkanDevice, + &sessionInfo, + nullptr, + &m_GraphPipelineInstance.graphSession) != VK_SUCCESS) + { + return false; + } + + LOGI("Getting Graph Session Binding Points Requirements..."); + + VkDataGraphPipelineSessionBindPointRequirementsInfoARM bindReqsInfo = {}; + uint32_t bindReqsCount = 0; + + bindReqsInfo.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM; + bindReqsInfo.session = m_GraphPipelineInstance.graphSession; + + if (data_graph_extension->m_vkGetDataGraphPipelineSessionBindPointRequirementsARM(vulkan.m_VulkanDevice, &bindReqsInfo, &bindReqsCount, NULL) != VK_SUCCESS) + { + return false; + } + + std::vector bindReqs(bindReqsCount); + for (uint32_t i = 0; i < bindReqsCount; i++) + { + bindReqs[i].sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM; + } + + if (data_graph_extension->m_vkGetDataGraphPipelineSessionBindPointRequirementsARM(vulkan.m_VulkanDevice, &bindReqsInfo, &bindReqsCount, bindReqs.data()) != VK_SUCCESS) + { + return false; + } + + LOGI("Binding Graph Session Memory..."); + + uint32_t memCount = 0; + for (uint32_t i = 0; i < bindReqsCount; i++) + { + m_GraphPipelineInstance.sessionMemory.resize(m_GraphPipelineInstance.sessionMemory.size() + bindReqs[i].numObjects); + switch (bindReqs[i].bindPointType) + { + case(VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM): + { + LOGI("*** Bind Point (VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM) with %d objects", bindReqs[i].numObjects); + for (uint32_t j = 0; j < bindReqs[i].numObjects; j++) + { + VkDataGraphPipelineSessionMemoryRequirementsInfoARM memReqsInfo = { VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM }; + memReqsInfo.session = m_GraphPipelineInstance.graphSession; + memReqsInfo.bindPoint = bindReqs[i].bindPoint; + memReqsInfo.objectIndex = j; + + VkMemoryRequirements2 memReqs = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; + data_graph_extension->m_vkGetDataGraphPipelineSessionMemoryRequirementsARM(vulkan.m_VulkanDevice, &memReqsInfo, &memReqs); + + VkMemoryAllocateInfo info = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; + info.pNext = nullptr; + info.allocationSize = memReqs.memoryRequirements.size; + // info.memoryTypeIndex = 0; // should query the indices to find most appropiate one + info.memoryTypeIndex = FindMemoryType(vulkan.m_VulkanGpu, memReqs.memoryRequirements.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); + + LOGI("*** Bind Object [%d]", j); + LOGI("*** Binding Point [%d]", bindReqs[i].bindPoint); + LOGI("*** Allocation Size [%d]", info.allocationSize); + LOGI("*** Memory Type Index [%d]", info.memoryTypeIndex); + + if (vkAllocateMemory(vulkan.m_VulkanDevice, &info, nullptr, &m_GraphPipelineInstance.sessionMemory[memCount]) != VK_SUCCESS) + { + return false; + } + + VkBindDataGraphPipelineSessionMemoryInfoARM bindMem; + bindMem.sType = VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM; + bindMem.session = m_GraphPipelineInstance.graphSession; + bindMem.bindPoint = bindReqs[i].bindPoint; + bindMem.objectIndex = j; + bindMem.memory = m_GraphPipelineInstance.sessionMemory[memCount]; + + if (data_graph_extension->m_vkBindDataGraphPipelineSessionMemoryARM(vulkan.m_VulkanDevice, 1, &bindMem) != VK_SUCCESS) + { + return false; + } + + memCount++; + } + + break; + } + default: + { + // Error unhandled / unexpected memory type + return false; + } + } + } + + LOGI("Graph Pipeline Created!"); + + return true; +} + +//----------------------------------------------------------------------------- +void Application::CopyImageToTensor( + CommandListVulkan& cmdList, + TextureVulkan& srcImage, + VkImageLayout currentLayout, + const GraphPipelineTensor& tensorBinding) +//----------------------------------------------------------------------------- +{ + const auto& synchronization2_extension = GetVulkan()->GetExtension(); + assert(synchronization2_extension != nullptr); + + VkImageMemoryBarrier2 imageBarrierToTransfer = + { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + .srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + .srcAccessMask = VK_ACCESS_2_MEMORY_READ_BIT, + .dstStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT, + .dstAccessMask = VK_ACCESS_2_TRANSFER_READ_BIT, + .oldLayout = currentLayout, + .newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = srcImage.GetVkImage(), + .subresourceRange = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1 + } + }; + + VkDependencyInfo depInfo = + { + .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + .imageMemoryBarrierCount = 1, + .pImageMemoryBarriers = &imageBarrierToTransfer + }; + + synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); + + VkBufferImageCopy copyRegion = + { + .bufferOffset = 0, + .bufferRowLength = 0, + .bufferImageHeight = 0, + .imageSubresource = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .mipLevel = 0, + .baseArrayLayer = 0, + .layerCount = 1 + }, + .imageOffset = {0, 0, 0}, + .imageExtent = {srcImage.Width, srcImage.Height, 1} + }; + + vkCmdCopyImageToBuffer( + cmdList.m_VkCommandBuffer, + srcImage.GetVkImage(), + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + tensorBinding.aliasedBuffer, + 1, + ©Region); + + // Transition image back to original layout + std::swap(imageBarrierToTransfer.oldLayout, imageBarrierToTransfer.newLayout); + std::swap(imageBarrierToTransfer.srcAccessMask, imageBarrierToTransfer.dstAccessMask); + std::swap(imageBarrierToTransfer.srcStageMask, imageBarrierToTransfer.dstStageMask); + + synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); +} + +//----------------------------------------------------------------------------- +void Application::CopyTensorToImage( + CommandListVulkan& cmdList, + TextureVulkan& dstImage, + VkImageLayout currentLayout, + const GraphPipelineTensor& tensorBinding) +//----------------------------------------------------------------------------- +{ + const auto& synchronization2_extension = GetVulkan()->GetExtension(); + assert(synchronization2_extension != nullptr); + + VkImageMemoryBarrier2 imageBarrierToTransfer = + { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + .srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + .srcAccessMask = VK_ACCESS_2_MEMORY_WRITE_BIT, + .dstStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT, + .dstAccessMask = VK_ACCESS_2_TRANSFER_WRITE_BIT, + .oldLayout = currentLayout, + .newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = dstImage.GetVkImage(), + .subresourceRange = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1 + } + }; + + VkDependencyInfo depInfo = + { + .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + .imageMemoryBarrierCount = 1, + .pImageMemoryBarriers = &imageBarrierToTransfer + }; + + synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); + + VkBufferImageCopy copyRegion = + { + .bufferOffset = 0, + .bufferRowLength = 0, + .bufferImageHeight = 0, + .imageSubresource = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .mipLevel = 0, + .baseArrayLayer = 0, + .layerCount = 1 + }, + .imageOffset = {0, 0, 0}, + .imageExtent = {dstImage.Width, dstImage.Height, 1} + }; + + vkCmdCopyBufferToImage( + cmdList.m_VkCommandBuffer, + tensorBinding.aliasedBuffer, + dstImage.GetVkImage(), + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 1, + ©Region); + + std::swap(imageBarrierToTransfer.oldLayout, imageBarrierToTransfer.newLayout); + std::swap(imageBarrierToTransfer.srcAccessMask, imageBarrierToTransfer.dstAccessMask); + std::swap(imageBarrierToTransfer.srcStageMask, imageBarrierToTransfer.dstStageMask); + + synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); +} + + +//----------------------------------------------------------------------------- +void Application::CopyImageToImageBlit( + CommandListVulkan& cmdList, + TextureVulkan& srcImage, + VkImageLayout srcLayout, + TextureVulkan& dstImage, + VkImageLayout dstFinalLayout) +//----------------------------------------------------------------------------- +{ + const auto& synchronization2_extension = GetVulkan()->GetExtension(); + assert(synchronization2_extension != nullptr); + + VkImageMemoryBarrier2 dstBarrier = + { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + .srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + .srcAccessMask = VK_ACCESS_2_MEMORY_WRITE_BIT, + .dstStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT, + .dstAccessMask = VK_ACCESS_2_TRANSFER_WRITE_BIT, + .oldLayout = VK_IMAGE_LAYOUT_UNDEFINED, + .newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = dstImage.GetVkImage(), + .subresourceRange = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1 + } + }; + + VkDependencyInfo depInfoDst = + { + .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + .imageMemoryBarrierCount = 1, + .pImageMemoryBarriers = &dstBarrier + }; + + synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfoDst); + + // Blit image + VkImageBlit blitRegion = {}; + blitRegion.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + blitRegion.srcSubresource.mipLevel = 0; + blitRegion.srcSubresource.baseArrayLayer = 0; + blitRegion.srcSubresource.layerCount = 1; + blitRegion.srcOffsets[0] = { 0, 0, 0 }; + blitRegion.srcOffsets[1] = { static_cast(srcImage.Width), static_cast(srcImage.Height), 1 }; + + blitRegion.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + blitRegion.dstSubresource.mipLevel = 0; + blitRegion.dstSubresource.baseArrayLayer = 0; + blitRegion.dstSubresource.layerCount = 1; + blitRegion.dstOffsets[0] = { 0, 0, 0 }; + blitRegion.dstOffsets[1] = { static_cast(dstImage.Width), static_cast(dstImage.Height), 1 }; + + vkCmdBlitImage( + cmdList.m_VkCommandBuffer, + srcImage.GetVkImage(), + srcLayout, + dstImage.GetVkImage(), + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 1, + &blitRegion, + VK_FILTER_LINEAR + ); + + // Transition destination image to final layout + dstBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + dstBarrier.newLayout = dstFinalLayout; + dstBarrier.srcAccessMask = VK_ACCESS_2_TRANSFER_WRITE_BIT; + dstBarrier.dstAccessMask = VK_ACCESS_2_SHADER_READ_BIT; + dstBarrier.srcStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT; + dstBarrier.dstStageMask = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT; + + synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfoDst); +} + + +//----------------------------------------------------------------------------- +bool Application::LoadShaders() +//----------------------------------------------------------------------------- +{ + m_ShaderManager = std::make_unique>(*GetVulkan()); + m_ShaderManager->RegisterRenderPassNames(sRenderPassNames); + + m_MaterialManager = std::make_unique>(); + + LOGI("******************************"); + LOGI("Loading Shaders..."); + LOGI("******************************"); + + typedef std::pair tIdAndFilename; + for (const tIdAndFilename& i : + { tIdAndFilename { "Blit", "Media\\Shaders\\Blit.json" }, + tIdAndFilename { "SceneOpaque", "Media\\Shaders\\SceneOpaque.json" }, + tIdAndFilename { "SceneTransparent", "Media\\Shaders\\SceneTransparent.json" } + }) + { + if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second)) + { + LOGE("Error Loading shader %s from %s", i.first.c_str(), i.second.c_str()); + LOGI("Please verify if you have all required assets on the sample media folder"); + LOGI("If you are running on Android, don't forget to run the `02_CopyMediaToDevice.bat` script to copy all media files into the device memory"); + return false; + } + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::CreateRenderTargets() +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + + LOGI("**************************"); + LOGI("Creating Render Targets..."); + LOGI("**************************"); + + TextureFormat vkDesiredDepthFormat = pVulkan->GetBestSurfaceDepthFormat(); + TextureFormat desiredDepthFormat = vkDesiredDepthFormat; + + const TextureFormat MainColorType[] = { TextureFormat::R8G8B8_UNORM }; + const TEXTURE_TYPE MainTextureType[] = { TEXTURE_TYPE::TT_RENDER_TARGET_TRANSFERSRC }; // Needed for tensor copy from operation. + const TEXTURE_TYPE UpscaledTextureType = TEXTURE_TYPE::TT_CPU_UPDATE; // Needed for tensor copy to operation. + const TextureFormat HudColorType[] = { TextureFormat::R8G8B8A8_SRGB }; + + if (!m_RenderPassData[RP_SCENE].RenderTarget.Initialize( + pVulkan, + m_RenderResolution.x, + m_RenderResolution.y, + MainColorType, + desiredDepthFormat, + VK_SAMPLE_COUNT_1_BIT, + "Scene RT", + MainTextureType)) + { + LOGE("Unable to create scene render target"); + return false; + } + + { + CreateTexObjectInfo createInfo{}; + createInfo.uiWidth = m_UpscaledResolution.x; + createInfo.uiHeight = m_UpscaledResolution.y; + + createInfo.Format = MainColorType[0]; + createInfo.TexType = UpscaledTextureType; + createInfo.pName = "Upscaled RT"; + createInfo.Msaa = VK_SAMPLE_COUNT_1_BIT; + createInfo.FilterMode = SamplerFilter::Linear; + + m_UpscaledImageResult = CreateTextureObject(*GetVulkan(), createInfo); + } + + // Notice no depth on the HUD RT + if (!m_RenderPassData[RP_HUD].RenderTarget.Initialize(pVulkan, gSurfaceWidth, gSurfaceHeight, HudColorType, TextureFormat::UNDEFINED, VK_SAMPLE_COUNT_1_BIT, "HUD RT")) + { + LOGE("Unable to create hud render target"); + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::InitUniforms() +//----------------------------------------------------------------------------- +{ + LOGI("******************************"); + LOGI("Initializing Uniforms..."); + LOGI("******************************"); + + Vulkan* const pVulkan = GetVulkan(); + + if (!CreateUniformBuffer(pVulkan, m_ObjectVertUniform)) + { + return false; + } + + if (!CreateUniformBuffer(pVulkan, m_LightUniform)) + { + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::InitAllRenderPasses() +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + + // ColorInputUsage | ClearDepthRenderPass | ColorOutputUsage | DepthOutputUsage | ClearColor + m_RenderPassData[RP_SCENE].PassSetup = { RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, {}}; + m_RenderPassData[RP_HUD].PassSetup = { RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}}; + m_RenderPassData[RP_BLIT].PassSetup = { RenderPassInputUsage::DontCare, true, RenderPassOutputUsage::Present, RenderPassOutputUsage::Discard, {}}; + + TextureFormat surfaceFormat = pVulkan->m_SurfaceFormat; + auto swapChainColorFormat = std::span({ &surfaceFormat, 1 }); + auto swapChainDepthFormat = pVulkan->m_SwapchainDepth.format; + + LOGI("******************************"); + LOGI("Initializing Render Passes... "); + LOGI("******************************"); + + for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + bool isSwapChainRenderPass = whichPass == RP_BLIT; + + std::span colorFormats = isSwapChainRenderPass ? swapChainColorFormat : m_RenderPassData[whichPass].RenderTarget[0].m_pLayerFormats; + TextureFormat depthFormat = isSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget[0].m_DepthFormat; + + const auto& passSetup = m_RenderPassData[whichPass].PassSetup; + + if (!pVulkan->CreateRenderPass( + { colorFormats }, + depthFormat, + VK_SAMPLE_COUNT_1_BIT, + passSetup.ColorInputUsage, + passSetup.ColorOutputUsage, + passSetup.ClearDepthRenderPass, + passSetup.DepthOutputUsage, + & m_RenderPassData[whichPass].RenderPass)) + { + return false; + } + + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::InitGui(uintptr_t windowHandle) +//----------------------------------------------------------------------------- +{ + const auto& hudRenderTarget = m_RenderPassData[RP_HUD].RenderTarget; + m_Gui = std::make_unique>(*GetVulkan(), m_RenderPassData[RP_HUD].RenderPass); + if (!m_Gui->Initialize(windowHandle, hudRenderTarget[0].m_Width, hudRenderTarget[0].m_Height)) + { + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::LoadMeshObjects() +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + + LOGI("***********************"); + LOGI("Initializing Meshes... "); + LOGI("***********************"); + + const auto* pSceneOpaqueShader = m_ShaderManager->GetShader("SceneOpaque"); + const auto* pSceneTransparentShader = m_ShaderManager->GetShader("SceneTransparent"); + const auto* pBlitQuadShader = m_ShaderManager->GetShader("Blit"); + if (!pSceneOpaqueShader || !pSceneTransparentShader || !pBlitQuadShader) + { + return false; + } + + LOGI("***********************************"); + LOGI("Loading and preparing the museum..."); + LOGI("***********************************"); + + m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_PrefixDirectory{ "Media\\" }, PathManipulator_ChangeExtension{ ".ktx" }); + + auto* whiteTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\white_d.ktx", m_SamplerEdgeClamp); + auto* blackTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\black_d.ktx", m_SamplerEdgeClamp); + auto* normalDefaultTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\normal_default.ktx", m_SamplerEdgeClamp); + + if (!whiteTexture || !blackTexture || !normalDefaultTexture) + { + LOGE("Failed to load supporting textures"); + return false; + } + + auto UniformBufferLoader = [&](const ObjectMaterialParameters& objectMaterialParameters) -> ObjectMaterialParameters& + { + auto hash = objectMaterialParameters.GetHash(); + + auto iter = m_ObjectFragUniforms.try_emplace(hash, ObjectMaterialParameters()); + if (iter.second) + { + iter.first->second.objectFragUniformData = objectMaterialParameters.objectFragUniformData; + if (!CreateUniformBuffer(pVulkan, iter.first->second.objectFragUniform)) + { + LOGE("Failed to create object uniform buffer"); + } + } + + return iter.first->second; + }; + + auto MaterialLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef)->std::optional + { + auto* diffuseTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.diffuseFilename, m_SamplerEdgeClamp); + auto* normalTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.bumpFilename, m_SamplerEdgeClamp); + auto* emissiveTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.emissiveFilename, m_SamplerEdgeClamp); + auto* metallicRoughnessTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.specMapFilename, m_SamplerEdgeClamp); + bool alphaCutout = materialDef.alphaCutout; + bool transparent = materialDef.transparent; + + const Shader* targetShader = transparent ? pSceneTransparentShader : pSceneOpaqueShader; + + ObjectMaterialParameters objectMaterial; + objectMaterial.objectFragUniformData.Color.r = static_cast(materialDef.baseColorFactor[0]); + objectMaterial.objectFragUniformData.Color.g = static_cast(materialDef.baseColorFactor[1]); + objectMaterial.objectFragUniformData.Color.b = static_cast(materialDef.baseColorFactor[2]); + objectMaterial.objectFragUniformData.Color.a = static_cast(materialDef.baseColorFactor[3]); + objectMaterial.objectFragUniformData.ORM.b = static_cast(materialDef.metallicFactor); + objectMaterial.objectFragUniformData.ORM.g = static_cast(materialDef.roughnessFactor); + + if (diffuseTexture == nullptr || normalTexture == nullptr) + { + return std::nullopt; + } + + auto shaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *targetShader, NUM_VULKAN_BUFFERS, + [&](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo + { + if (texName == "Diffuse") + { + return { diffuseTexture ? diffuseTexture : whiteTexture }; + } + if (texName == "Normal") + { + return { normalTexture ? normalTexture : normalDefaultTexture }; + } + if (texName == "Emissive") + { + return { emissiveTexture ? emissiveTexture : blackTexture }; + } + if (texName == "MetallicRoughness") + { + return { metallicRoughnessTexture ? metallicRoughnessTexture : blackTexture }; + } + + return {}; + }, + [&](const std::string& bufferName) -> tPerFrameVkBuffer + { + if (bufferName == "Vert") + { + return { m_ObjectVertUniform.buf.GetVkBuffer() }; + } + else if (bufferName == "Frag") + { + return { UniformBufferLoader(objectMaterial).objectFragUniform.buf.GetVkBuffer() }; + } + else if (bufferName == "Light") + { + return { m_LightUniform.buf.GetVkBuffer() }; + } + + return {}; + } + ); + + return shaderMaterial; + }; + + + const auto loaderFlags = 0; // No instancing + const bool ignoreTransforms = (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0; + + MeshLoaderModelSceneSanityCheck meshSanityCheckProcessor(gMuseumAssetPath); + MeshObjectIntermediateGltfProcessor meshObjectProcessor(gMuseumAssetPath, ignoreTransforms, glm::vec3(1.0f,1.0f,1.0f)); + CameraGltfProcessor meshCameraProcessor{}; + + if (!MeshLoader::LoadGltf(*m_AssetManager, gMuseumAssetPath, meshSanityCheckProcessor, meshObjectProcessor, meshCameraProcessor) || + !DrawableLoader::CreateDrawables(*pVulkan, + std::move(meshObjectProcessor.m_meshObjects), + { &m_RenderPassData[RP_SCENE].RenderPass, 1 }, + &sRenderPassNames[RP_SCENE], + MaterialLoader, + m_SceneDrawables, + {}, // RenderPassMultisample + loaderFlags, + {})) // RenderPassSubpasses + { + LOGE("Error Loading the museum gltf file"); + LOGI("Please verify if you have all required assets on the sample media folder"); + LOGI("If you are running on Android, don't forget to run the `02_CopyMediaToDevice.bat` script to copy all media files into the device memory"); + return false; + } + + if (!meshCameraProcessor.m_cameras.empty()) + { + const auto& camera = meshCameraProcessor.m_cameras[0]; + m_Camera.SetPosition(camera.Position, camera.Orientation); + } + + + LOGI("*********************"); + LOGI("Creating Quad mesh..."); + LOGI("*********************"); + + MeshObject blitQuadMesh; + MeshHelper::CreateScreenSpaceMesh(pVulkan->GetMemoryManager(), 0, &blitQuadMesh); + + // Blit Material + auto blitQuadShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pBlitQuadShader, pVulkan->m_SwapchainImageCount, + [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo + { + if (texName == "Diffuse") + { + return { &m_UpscaledImageResult }; + } + else if (texName == "Overlay") + { + return { &m_RenderPassData[RP_HUD].RenderTarget[0].m_ColorAttachments[0] }; + } + return {}; + }, + [this](const std::string& bufferName) -> tPerFrameVkBuffer + { + return {}; + } + ); + + m_BlitQuadDrawable = std::make_unique(*pVulkan, std::move(blitQuadShaderMaterial)); + if (!m_BlitQuadDrawable->Init(m_RenderPassData[RP_BLIT].RenderPass, sRenderPassNames[RP_BLIT], std::move(blitQuadMesh))) + { + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::InitCommandBuffers() +//----------------------------------------------------------------------------- +{ + LOGI("*******************************"); + LOGI("Initializing Command Buffers..."); + LOGI("*******************************"); + + Vulkan* const pVulkan = GetVulkan(); + + auto GetPassName = [](uint32_t whichPass) + { + if (whichPass >= sRenderPassNames.size()) + { + LOGE("GetPassName() called with unknown pass (%d)!", whichPass); + return "RP_UNKNOWN"; + } + + return sRenderPassNames[whichPass]; + }; + + m_RenderPassData[RP_SCENE].PassCmdBuffer.resize(NUM_VULKAN_BUFFERS); + m_RenderPassData[RP_SCENE].ObjectsCmdBuffer.resize(NUM_VULKAN_BUFFERS); + m_RenderPassData[RP_HUD].PassCmdBuffer.resize(NUM_VULKAN_BUFFERS); + m_RenderPassData[RP_HUD].ObjectsCmdBuffer.resize(NUM_VULKAN_BUFFERS); + m_RenderPassData[RP_BLIT].PassCmdBuffer.resize(pVulkan->m_SwapchainImageCount); + m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.resize(pVulkan->m_SwapchainImageCount); + + char szName[256]; + const VkCommandBufferLevel CmdBuffLevel = VK_COMMAND_BUFFER_LEVEL_SECONDARY; + for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + for (uint32_t whichBuffer = 0; whichBuffer < m_RenderPassData[whichPass].PassCmdBuffer.size(); whichBuffer++) + { + // The Pass Command Buffer => Primary + sprintf(szName, "Primary (%s; Buffer %d of %d)", GetPassName(whichPass), whichBuffer + 1, NUM_VULKAN_BUFFERS); + if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY)) + { + return false; + } + + // Model => Secondary + sprintf(szName, "Model (%s; Buffer %d of %d)", GetPassName(whichPass), whichBuffer + 1, NUM_VULKAN_BUFFERS); + if (!m_RenderPassData[whichPass].ObjectsCmdBuffer[whichBuffer].Initialize(pVulkan, szName, CmdBuffLevel)) + { + return false; + } + } + } + + LOGI("Creating Graph Pipeline Command Lists"); + if (m_IsGraphPipelinesSupported) + { + m_GraphPipelineCommandLists.resize(NUM_VULKAN_BUFFERS); + for (auto& graphPipelineCommandList : m_GraphPipelineCommandLists) + { + if (!graphPipelineCommandList.Initialize(GetVulkan(), "Graph Pipeline CMD Buffer", VK_COMMAND_BUFFER_LEVEL_PRIMARY, Vulkan::eDataGraphQueue)) + { + return false; + } + } + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::InitLocalSemaphores() +//----------------------------------------------------------------------------- +{ + LOGI("********************************"); + LOGI("Initializing Local Semaphores..."); + LOGI("********************************"); + + const VkSemaphoreCreateInfo SemaphoreInfo = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO }; + + for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + VkResult retVal = vkCreateSemaphore(GetVulkan()->m_VulkanDevice, &SemaphoreInfo, NULL, &m_RenderPassData[whichPass].PassCompleteSemaphore); + if (!CheckVkError("vkCreateSemaphore()", retVal)) + { + return false; + } + } + + // Create the graph pipeline semaphore + { + VkResult retVal = vkCreateSemaphore(GetVulkan()->m_VulkanDevice, &SemaphoreInfo, NULL, &m_GraphPipelinePassCompleteSemaphore); + if (!CheckVkError("vkCreateSemaphore()", retVal)) + { + return false; + } + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Application::BuildCmdBuffers() +//----------------------------------------------------------------------------- +{ + LOGI("***************************"); + LOGI("Building Command Buffers..."); + LOGI("****************************"); + + Vulkan* const pVulkan = GetVulkan(); + + // Begin recording + for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + auto& renderPassData = m_RenderPassData[whichPass]; + bool bisSwapChainRenderPass = whichPass == RP_BLIT; + + for (uint32_t whichBuffer = 0; whichBuffer < renderPassData.ObjectsCmdBuffer.size(); whichBuffer++) + { + auto& cmdBufer = renderPassData.ObjectsCmdBuffer[whichBuffer]; + + uint32_t targetWidth = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget[0].m_Width; + uint32_t targetHeight = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget[0].m_Height; + + VkViewport viewport = {}; + viewport.x = 0.0f; + viewport.y = 0.0f; + viewport.width = (float)targetWidth; + viewport.height = (float)targetHeight; + viewport.minDepth = 0.0f; + viewport.maxDepth = 1.0f; + + VkRect2D scissor = {}; + scissor.offset.x = 0; + scissor.offset.y = 0; + scissor.extent.width = targetWidth; + scissor.extent.height = targetHeight; + + // Set up some values that change based on render pass + VkRenderPass whichRenderPass = renderPassData.RenderPass; + VkFramebuffer whichFramebuffer = bisSwapChainRenderPass ? pVulkan->m_SwapchainBuffers[whichBuffer].framebuffer : renderPassData.RenderTarget[0].m_FrameBuffer; + + // Objects (can render into any pass except Blit) + if (!cmdBufer.Begin(whichFramebuffer, whichRenderPass, bisSwapChainRenderPass)) + { + return false; + } + vkCmdSetViewport(cmdBufer.m_VkCommandBuffer, 0, 1, &viewport); + vkCmdSetScissor(cmdBufer.m_VkCommandBuffer, 0, 1, &scissor); + } + } + + // Scene drawables + for (const auto& sceneDrawable : m_SceneDrawables) + { + AddDrawableToCmdBuffers(sceneDrawable, m_RenderPassData[RP_SCENE].ObjectsCmdBuffer.data(), 1, static_cast(m_RenderPassData[RP_SCENE].ObjectsCmdBuffer.size())); + } + + // Blit quad drawable + AddDrawableToCmdBuffers(*m_BlitQuadDrawable.get(), m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.data(), 1, static_cast(m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.size())); + + // End recording + for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + { + auto& renderPassData = m_RenderPassData[whichPass]; + + for (uint32_t whichBuffer = 0; whichBuffer < renderPassData.ObjectsCmdBuffer.size(); whichBuffer++) + { + auto& cmdBufer = renderPassData.ObjectsCmdBuffer[whichBuffer]; + if (!cmdBufer.End()) + { + return false; + } + } + } + + return true; +} + +//----------------------------------------------------------------------------- +void Application::UpdateGui() +//----------------------------------------------------------------------------- +{ + if (m_Gui) + { + m_Gui->Update(); + ImGuiIO& io = ImGui::GetIO(); + + if (ImGui::Begin("FPS", (bool*)nullptr, ImGuiWindowFlags_NoTitleBar)) + { + ImGui::Text("FPS: %.1f", m_CurrentFPS); + ImGui::Text("Camera [%f, %f, %f]", m_Camera.Position().x, m_Camera.Position().y, m_Camera.Position().z); + + ImGui::Separator(); + + ImGui::BeginDisabled(!m_IsGraphPipelinesSupported); + ImGui::Checkbox("Upscaling Enabled", &m_ShouldUpscale); + ImGui::EndDisabled(); + + ImGui::Separator(); + + ImGui::DragFloat3("Sun Dir", &m_LightUniformData.LightDirection.x, 0.01f, -1.0f, 1.0f); + ImGui::DragFloat3("Sun Color", &m_LightUniformData.LightColor.x, 0.01f, 0.0f, 1.0f); + ImGui::DragFloat("Sun Intensity", &m_LightUniformData.LightColor.w, 0.1f, 0.0f, 100.0f); + ImGui::DragFloat3("Ambient Color", &m_LightUniformData.AmbientColor.x, 0.01f, 0.0f, 1.0f); + + for (int i = 0; i < NUM_SPOT_LIGHTS; i++) + { + std::string childName = std::string("Spot Light ").append(std::to_string(i+1)); + ImGui::TextColored(ImVec4(1, 1, 0, 1), "%s", childName.c_str()); + + if (ImGui::CollapsingHeader(childName.c_str(), ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed)) + { + ImGui::PushID(i); + + ImGui::DragFloat3("Pos", &m_LightUniformData.SpotLights_pos[i].x, 0.1f); + ImGui::DragFloat3("Dir", &m_LightUniformData.SpotLights_dir[i].x, 0.01f, -1.0f, 1.0f); + ImGui::DragFloat3("Color", &m_LightUniformData.SpotLights_color[i].x, 0.01f, 0.0f, 1.0f); + ImGui::DragFloat("Intensity", &m_LightUniformData.SpotLights_color[i].w, 0.1f, 0.0f, 100.0f); + + ImGui::PopID(); + } + + ImDrawList* list = ImGui::GetWindowDrawList(); + + glm::vec3 LightDirNotNormalized = m_LightUniformData.SpotLights_dir[i]; + LightDirNotNormalized = glm::normalize(LightDirNotNormalized); + m_LightUniformData.SpotLights_dir[i] = glm::vec4(LightDirNotNormalized, 0.0f); + } + + glm::vec3 LightDirNotNormalized = m_LightUniformData.LightDirection; + LightDirNotNormalized = glm::normalize(LightDirNotNormalized); + m_LightUniformData.LightDirection = glm::vec4(LightDirNotNormalized, 0.0f); + } + ImGui::End(); + + return; + } +} + +//----------------------------------------------------------------------------- +bool Application::UpdateUniforms(uint32_t whichBuffer) +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + + // Vert data + { + glm::mat4 LocalModel = glm::mat4(1.0f); + LocalModel = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, 0.0f)); + LocalModel = glm::scale(LocalModel, glm::vec3(1.0f)); + glm::mat4 LocalMVP = m_Camera.ProjectionMatrix() * m_Camera.ViewMatrix() * LocalModel; + + m_ObjectVertUniformData.MVPMatrix = LocalMVP; + m_ObjectVertUniformData.ModelMatrix = LocalModel; + UpdateUniformBuffer(pVulkan, m_ObjectVertUniform, m_ObjectVertUniformData); + } + + // Frag data + for (auto& [hash, objectUniform] : m_ObjectFragUniforms) + { + UpdateUniformBuffer(pVulkan, objectUniform.objectFragUniform, objectUniform.objectFragUniformData); + } + + // Light data + { + glm::mat4 CameraViewInv = glm::inverse(m_Camera.ViewMatrix()); + glm::mat4 CameraProjection = m_Camera.ProjectionMatrix(); + glm::mat4 CameraProjectionInv = glm::inverse(CameraProjection); + + m_LightUniformData.ProjectionInv = CameraProjectionInv; + m_LightUniformData.ViewInv = CameraViewInv; + m_LightUniformData.ViewProjectionInv = glm::inverse(CameraProjection * m_Camera.ViewMatrix()); + m_LightUniformData.ProjectionInvW = glm::vec4(CameraProjectionInv[0].w, CameraProjectionInv[1].w, CameraProjectionInv[2].w, CameraProjectionInv[3].w); + m_LightUniformData.CameraPos = glm::vec4(m_Camera.Position(), 0.0f); + + UpdateUniformBuffer(pVulkan, m_LightUniform, m_LightUniformData); + } + + return true; +} + +//----------------------------------------------------------------------------- +void Application::Render(float fltDiffTime) +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + + // Obtain the next swap chain image for the next frame. + auto currentVulkanBuffer = pVulkan->SetNextBackBuffer(); + uint32_t whichBuffer = currentVulkanBuffer.idx; + + // ******************************** + // Application Draw() - Begin + // ******************************** + + UpdateGui(); + + // Update camera + m_Camera.UpdateController(fltDiffTime * 0.1f, *m_CameraController); + m_Camera.UpdateMatrices(); + + // Update uniform buffers with latest data + UpdateUniforms(whichBuffer); + + // First time through, wait for the back buffer to be ready + std::span pWaitSemaphores = { ¤tVulkanBuffer.semaphore, 1 }; + + std::array waitDstStageMasks = { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT}; + + const bool isUpscalingActive = m_IsGraphPipelinesSupported && m_ShouldUpscale; + + // RP_SCENE + { + BeginRenderPass(whichBuffer, RP_SCENE, currentVulkanBuffer.swapchainPresentIdx); + AddPassCommandBuffer(whichBuffer, RP_SCENE); + EndRenderPass(whichBuffer, RP_SCENE); + + // Before finishing the scene cmd buffer, copy its color render target contents to the tensor buffer if upscaling + // is active, otherwise blit them directly to the upscaled image. + if (isUpscalingActive) + { + CopyImageToTensor( + m_RenderPassData[RP_SCENE].PassCmdBuffer[whichBuffer], + m_RenderPassData[RP_SCENE].RenderTarget.m_RenderTargets[0].m_ColorAttachments[0], + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + m_InputTensor); + } + else + { + CopyImageToImageBlit( + m_RenderPassData[RP_SCENE].PassCmdBuffer[whichBuffer], + m_RenderPassData[RP_SCENE].RenderTarget.m_RenderTargets[0].m_ColorAttachments[0], + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + m_UpscaledImageResult, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); + } + + // Submit the commands to the queue. + SubmitRenderPass(whichBuffer, RP_SCENE, pWaitSemaphores, waitDstStageMasks, { &m_RenderPassData[RP_SCENE].PassCompleteSemaphore,1 }); + pWaitSemaphores = { &m_RenderPassData[RP_SCENE].PassCompleteSemaphore, 1 }; + waitDstStageMasks[0] = { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT }; + } + + // Data Graph preparation + dispatch for Upscaling + if (isUpscalingActive) + { + const auto& data_graph_extension = GetVulkan()->GetExtension(); + assert(data_graph_extension != nullptr); + + m_GraphPipelineCommandLists[whichBuffer].Begin(); + + vkCmdBindPipeline( + m_GraphPipelineCommandLists[whichBuffer].m_VkCommandBuffer, + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM, + m_GraphPipelineInstance.graphPipeline); + + vkCmdBindDescriptorSets( + m_GraphPipelineCommandLists[whichBuffer].m_VkCommandBuffer, + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM, + m_GraphPipelineInstance.pipelineLayout, + 0, + 1, + &m_TensorDescriptorSet, + 0, + NULL); + + VkDataGraphPipelineDispatchInfoARM dispatchInfo; + dispatchInfo.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM; + dispatchInfo.flags = 0; + + data_graph_extension->m_vkCmdDispatchDataGraphARM( + m_GraphPipelineCommandLists[whichBuffer].m_VkCommandBuffer, + m_GraphPipelineInstance.graphSession, + &dispatchInfo); + + m_GraphPipelineCommandLists[whichBuffer].End(); + m_GraphPipelineCommandLists[whichBuffer].QueueSubmit(pWaitSemaphores[0], waitDstStageMasks[0], m_GraphPipelinePassCompleteSemaphore); + pWaitSemaphores = { &m_GraphPipelinePassCompleteSemaphore, 1 }; + waitDstStageMasks[0] = { VK_PIPELINE_STAGE_ALL_COMMANDS_BIT }; // Should be VK_PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM, but need to update framework + // to support VK_PIPELINE_STAGE_2. + } + + // RP_HUD + VkCommandBuffer guiCommandBuffer = VK_NULL_HANDLE; + if (m_Gui) + { + // Render gui (has its own command buffer, optionally returns vk_null_handle if not rendering anything) + guiCommandBuffer = GetGui()->Render(whichBuffer, m_RenderPassData[RP_HUD].RenderTarget[0].m_FrameBuffer); + if (guiCommandBuffer != VK_NULL_HANDLE) + { + BeginRenderPass(whichBuffer, RP_HUD, currentVulkanBuffer.swapchainPresentIdx); + vkCmdExecuteCommands(m_RenderPassData[RP_HUD].PassCmdBuffer[whichBuffer].m_VkCommandBuffer, 1, &guiCommandBuffer); + EndRenderPass(whichBuffer, RP_HUD); + + // Submit the commands to the queue. + SubmitRenderPass(whichBuffer, RP_HUD, pWaitSemaphores, waitDstStageMasks, { &m_RenderPassData[RP_HUD].PassCompleteSemaphore,1 }); + pWaitSemaphores = { &m_RenderPassData[RP_HUD].PassCompleteSemaphore,1 }; + waitDstStageMasks[0] = { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT }; + } + } + + // Blit Results to the screen + { + if (!m_RenderPassData[RP_BLIT].PassCmdBuffer[whichBuffer].Reset()) + { + LOGE("Pass (%d) command buffer Reset() failed !", RP_BLIT); + } + + if (!m_RenderPassData[RP_BLIT].PassCmdBuffer[whichBuffer].Begin()) + { + LOGE("Pass (%d) command buffer Begin() failed !", RP_BLIT); + } + + // Before begining the blit render pass, copy the output tensor contents to the upscaled image if upscaling + // is active, otherwise nothing needs to be done as the scene pass should have already blit its contents directly + // into the upscale image. + if (isUpscalingActive) + { + CopyTensorToImage( + m_RenderPassData[RP_BLIT].PassCmdBuffer[whichBuffer], + m_UpscaledImageResult, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + m_OutputTensor); + } + + BeginRenderPass(whichBuffer, RP_BLIT, currentVulkanBuffer.swapchainPresentIdx, false); + AddPassCommandBuffer(whichBuffer, RP_BLIT); + EndRenderPass(whichBuffer, RP_BLIT); + + // Submit the commands to the queue. + SubmitRenderPass(whichBuffer, RP_BLIT, pWaitSemaphores, waitDstStageMasks, { &m_RenderPassData[RP_BLIT].PassCompleteSemaphore,1 }, currentVulkanBuffer.fence); + pWaitSemaphores = { &m_RenderPassData[RP_BLIT].PassCompleteSemaphore,1 }; + waitDstStageMasks[0] = { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT }; + } + + // Queue is loaded up, tell the driver to start processing + pVulkan->PresentQueue(pWaitSemaphores, currentVulkanBuffer.swapchainPresentIdx); + + // ******************************** + // Application Draw() - End + // ******************************** +} + +//----------------------------------------------------------------------------- +void Application::BeginRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, uint32_t WhichSwapchainImage, bool beginCmdBuffer) +//----------------------------------------------------------------------------- +{ + Vulkan* const pVulkan = GetVulkan(); + auto& renderPassData = m_RenderPassData[whichPass]; + bool bisSwapChainRenderPass = whichPass == RP_BLIT; + + if (beginCmdBuffer) + { + if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Reset()) + { + LOGE("Pass (%d) command buffer Reset() failed !", whichPass); + } + + if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Begin()) + { + LOGE("Pass (%d) command buffer Begin() failed !", whichPass); + } + } + + VkFramebuffer framebuffer = nullptr; + switch (whichPass) + { + case RP_SCENE: + framebuffer = m_RenderPassData[whichPass].RenderTarget[0].m_FrameBuffer; + break; + case RP_HUD: + framebuffer = m_RenderPassData[whichPass].RenderTarget[0].m_FrameBuffer; + break; + case RP_BLIT: + framebuffer = pVulkan->m_SwapchainBuffers[WhichSwapchainImage].framebuffer; + break; + default: + framebuffer = nullptr; + break; + } + + assert(framebuffer != nullptr); + + VkRect2D passArea = {}; + passArea.offset.x = 0; + passArea.offset.y = 0; + passArea.extent.width = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget[0].m_Width; + passArea.extent.height = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget[0].m_Height; + + TextureFormat swapChainColorFormat = pVulkan->m_SurfaceFormat; + auto swapChainColorFormats = std::span({ &swapChainColorFormat, 1 }); + TextureFormat swapChainDepthFormat = pVulkan->m_SwapchainDepth.format; + std::span colorFormats = bisSwapChainRenderPass ? swapChainColorFormats : m_RenderPassData[whichPass].RenderTarget[0].m_pLayerFormats; + TextureFormat depthFormat = bisSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget[0].m_DepthFormat; + + VkClearColorValue clearColor = { renderPassData.PassSetup.ClearColor[0], renderPassData.PassSetup.ClearColor[1], renderPassData.PassSetup.ClearColor[2], renderPassData.PassSetup.ClearColor[3] }; + + m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].BeginRenderPass( + passArea, + 0.0f, + 1.0f, + { &clearColor , 1 }, + (uint32_t)colorFormats.size(), + depthFormat != TextureFormat::UNDEFINED, + m_RenderPassData[whichPass].RenderPass, + bisSwapChainRenderPass, + framebuffer, + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); +} + + +//----------------------------------------------------------------------------- +void Application::AddPassCommandBuffer(uint32_t whichBuffer, RENDER_PASS whichPass) +//----------------------------------------------------------------------------- +{ + if (m_RenderPassData[whichPass].ObjectsCmdBuffer[whichBuffer].m_NumDrawCalls) + { + vkCmdExecuteCommands(m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].m_VkCommandBuffer, 1, &m_RenderPassData[whichPass].ObjectsCmdBuffer[whichBuffer].m_VkCommandBuffer); + } +} + +//----------------------------------------------------------------------------- +void Application::EndRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass) +//----------------------------------------------------------------------------- +{ + m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].EndRenderPass(); +} + +//----------------------------------------------------------------------------- +void Application::SubmitRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, const std::span WaitSemaphores, const std::span WaitDstStageMasks, std::span SignalSemaphores, VkFence CompletionFence) +//----------------------------------------------------------------------------- +{ + m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].End(); + m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].QueueSubmit(WaitSemaphores, WaitDstStageMasks, SignalSemaphores, CompletionFence); +} diff --git a/samples/graph_pipelines/code/main/application.hpp b/samples/graph_pipelines/code/main/application.hpp new file mode 100644 index 0000000..577a480 --- /dev/null +++ b/samples/graph_pipelines/code/main/application.hpp @@ -0,0 +1,254 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "main/applicationHelperBase.hpp" +#include "memory/vulkan/uniform.hpp" +#include "vulkan/commandBuffer.hpp" +#include + +#define NUM_SPOT_LIGHTS 4 + +class ShaderManager; +class MaterialManager; +class Drawable; + +enum RENDER_PASS +{ + RP_SCENE = 0, + RP_HUD, + RP_BLIT, + NUM_RENDER_PASSES +}; + +// ********************** +// Uniform Buffers +// ********************** +struct ObjectVertUB +{ + glm::mat4 MVPMatrix; + glm::mat4 ModelMatrix; + glm::mat4 ShadowMatrix; +}; + +struct ObjectFragUB +{ + glm::vec4 Color; + glm::vec4 ORM; +}; + +struct LightUB +{ + glm::mat4 ProjectionInv; + glm::mat4 ViewInv; + glm::mat4 ViewProjectionInv; // ViewInv * ProjectionInv + glm::vec4 ProjectionInvW; // w components of ProjectionInv + glm::vec4 CameraPos; + + glm::vec4 LightDirection = glm::vec4(-0.564000f, 0.826000f, 0.000000f, 0.0f); + glm::vec4 LightColor = glm::vec4(1.000000f, 1.000000f, 1.000000f, 1.000000); + + glm::vec4 SpotLights_pos[NUM_SPOT_LIGHTS]; + glm::vec4 SpotLights_dir[NUM_SPOT_LIGHTS]; + glm::vec4 SpotLights_color[NUM_SPOT_LIGHTS]; + + glm::vec4 AmbientColor = glm::vec4(0.340000f, 0.340000f, 0.340000f, 0.0f); + + int Width; + int Height; +}; + +struct GraphPipelineTensor +{ + std::array dimensions; + std::array strides; + VkBuffer aliasedBuffer = VK_NULL_HANDLE; + VkTensorDescriptionARM tensorDescription; + VkTensorARM tensor = VK_NULL_HANDLE; + VkTensorViewARM tensorView = VK_NULL_HANDLE; + VkDeviceMemory tensorMemory = VK_NULL_HANDLE; + uint32_t portBindingIndex = -1; +}; + +struct GraphPipelineInstance +{ + VkPipelineLayout pipelineLayout = VK_NULL_HANDLE; + + VkPipeline graphPipeline = VK_NULL_HANDLE; + VkPipelineCache pipelineCache = VK_NULL_HANDLE; + VkDataGraphPipelineSessionARM graphSession = VK_NULL_HANDLE; + std::vector sessionMemory; +}; + + +// ********************** +// Render Pass +// ********************** +struct PassSetupInfo +{ + RenderPassInputUsage ColorInputUsage; + bool ClearDepthRenderPass; + RenderPassOutputUsage ColorOutputUsage; + RenderPassOutputUsage DepthOutputUsage; + glm::vec4 ClearColor; +}; + +struct PassData +{ + // Pass internal data + PassSetupInfo PassSetup; + VkRenderPass RenderPass = VK_NULL_HANDLE; + + // Recorded objects that are set to be drawn on this pass + std::vector< CommandListVulkan> ObjectsCmdBuffer; + + // Command buffer used to dispatch the render pass + std::vector< CommandListVulkan> PassCmdBuffer; + + // Indicates the completing of the underlying render pass + VkSemaphore PassCompleteSemaphore = VK_NULL_HANDLE; + + // Render targed used by the underlying render pass + // note: The blit pass uses the backbuffer directly instead this RT + CRenderTargetArray<1> RenderTarget; +}; + +// ********************** +// Application +// ********************** +class Application : public ApplicationHelperBase +{ + struct ObjectMaterialParameters + { + UniformT objectFragUniform; + ObjectFragUB objectFragUniformData; + + std::size_t GetHash() const + { + auto hash_combine = [](std::size_t seed, const float& v) -> std::size_t + { + std::hash hasher; + seed ^= hasher(v) + 0x9e3228b9 + (seed << 6) + (seed >> 2); + return seed; + }; + + std::size_t result = 0; + result = hash_combine(result, objectFragUniformData.Color.x); + result = hash_combine(result, objectFragUniformData.Color.y); + result = hash_combine(result, objectFragUniformData.Color.z); + result = hash_combine(result, objectFragUniformData.Color.w); + result = hash_combine(result, objectFragUniformData.ORM.r); + result = hash_combine(result, objectFragUniformData.ORM.g); + result = hash_combine(result, objectFragUniformData.ORM.b); + result = hash_combine(result, objectFragUniformData.ORM.a); + + return result; + }; + }; + +public: + Application(); + ~Application() override; + + // ApplicationHelperBase + virtual void PreInitializeSetVulkanConfiguration(Vulkan::AppConfiguration& config) override; + virtual bool Initialize(uintptr_t windowHandle, uintptr_t hInstance) override; + virtual void Destroy() override; + virtual void Render(float fltDiffTime) override; + +private: + + // Application - Initialization + bool InitializeLights(); + bool InitializeCamera(); + bool LoadShaders(); + bool CreateRenderTargets(); + bool InitUniforms(); + bool InitAllRenderPasses(); + bool InitGui(uintptr_t windowHandle); + bool LoadMeshObjects(); + bool InitCommandBuffers(); + bool InitLocalSemaphores(); + bool BuildCmdBuffers(); + + bool CreateTensors(); + bool CreateGraphPipeline(); + +private: + + // Application - Frame + void BeginRenderPass(uint32_t WhichBuffer, RENDER_PASS WhichPass, uint32_t WhichSwapchainImage, bool beginCmdBuffer = true); + void AddPassCommandBuffer(uint32_t WhichBuffer, RENDER_PASS WhichPass); + void EndRenderPass(uint32_t WhichBuffer, RENDER_PASS WhichPass); + void SubmitRenderPass(uint32_t WhichBuffer, RENDER_PASS WhichPass, const std::span WaitSemaphores, const std::span WaitDstStageMasks, std::span SignalSemaphores, VkFence CompletionFence = (VkFence)nullptr); + void UpdateGui(); + bool UpdateUniforms(uint32_t WhichBuffer); + + void CopyImageToTensor( + CommandListVulkan& cmdList, + TextureVulkan& srcImage, + VkImageLayout currentLayout, + const GraphPipelineTensor& tensorBinding); + + void CopyTensorToImage( + CommandListVulkan& cmdList, + TextureVulkan& dstImage, + VkImageLayout currentLayout, + const GraphPipelineTensor& tensorBinding); + + void CopyImageToImageBlit( + CommandListVulkan& cmdList, + TextureVulkan& srcImage, + VkImageLayout srcLayout, + TextureVulkan& dstImage, + VkImageLayout dstFinalLayout); + +private: + + // Render passes + std::array< PassData, NUM_RENDER_PASSES> m_RenderPassData; + + // UBOs + UniformT m_ObjectVertUniform; + ObjectVertUB m_ObjectVertUniformData; + UniformT m_LightUniform; + LightUB m_LightUniformData; + std::unordered_map m_ObjectFragUniforms; + + // Drawables + std::vector m_SceneDrawables; + std::unique_ptr m_BlitQuadDrawable; + + // Shaders + std::unique_ptr m_ShaderManager; + + // Materials + std::unique_ptr m_MaterialManager; + + // Upscaling + bool m_ShouldUpscale = false; // When m_IsGraphPipelinesSupported is true, controls if we run the model or just blit + glm::ivec2 m_RenderResolution; + glm::ivec2 m_UpscaledResolution; + + // Graph Pipelines + bool m_IsGraphPipelinesSupported = false; // Enables/disable the whole graph pipeline functionality + VkDescriptorPool m_TensorDescriptorPool = VK_NULL_HANDLE; + VkDescriptorSetLayout m_TensorDescriptorSetLayout = VK_NULL_HANDLE; + VkDescriptorSet m_TensorDescriptorSet = VK_NULL_HANDLE; + GraphPipelineTensor m_InputTensor; + GraphPipelineTensor m_OutputTensor; + GraphPipelineInstance m_GraphPipelineInstance; + std::vector< CommandListVulkan> m_GraphPipelineCommandLists; // Cmd buffer allocated from the Data Graph queue + VkSemaphore m_GraphPipelinePassCompleteSemaphore = VK_NULL_HANDLE; + TextureVulkan m_UpscaledImageResult; // Receives the model output, or scene color as a blit when upscaling is disabled + + // Hardcoded QNN constants -> These eventually will be infered from the binary model file + uint32_t m_QNNInputPortBinding = 0; + uint32_t m_QNNOutputPortBinding = 1; + uint32_t m_QNNMaxPortIndex = 2; +}; diff --git a/samples/graph_pipelines/project/android/AndroidManifest.xml b/samples/graph_pipelines/project/android/AndroidManifest.xml new file mode 100644 index 0000000..6d317b7 --- /dev/null +++ b/samples/graph_pipelines/project/android/AndroidManifest.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/graph_pipelines/project/android/res/mipmap-hdpi/ic_launcher.png b/samples/graph_pipelines/project/android/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1b58b37308d29c850ed552ade77caaf704f59ea9 GIT binary patch literal 6334 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 literal 0 HcmV?d00001 diff --git a/samples/graph_pipelines/project/android/res/mipmap-xxhdpi/ic_launcher.png b/samples/graph_pipelines/project/android/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b9e85bc64e93dd63b389d494fa81dec0655229 GIT binary patch literal 20192 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 literal 0 HcmV?d00001 diff --git a/samples/graph_pipelines/project/android/res/mipmap-xxxhdpi/ic_launcher.png b/samples/graph_pipelines/project/android/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7df4d52f1cbe1e0766f227062d9fda9251da6318 GIT binary patch literal 22194 zcma&Nby!pX8#jJ7M%U=>?gk}Cw=~j?G)N;kx>E#{4hdPi9ua9iXZ)r z0*SapVNU8pq+NRwLe~Xd4%P%N!si8hw^HOx)$xCN{g>ZY=_*QJq^Ab&Fwxx(EC2sI zExigzr8X9Eyktf}{2BXdo_a;K_-8R~voAG7A`tVn)@}O=_r|M_AluL1)FFU3215SveVMeXki$)GPh6N!FC|z za-Mcn_hrtv$(_##)`Ru>>i5zH5z`Z2!~>g;B{3H5SNu+RSN`^%o-75;ef5-~M#p=2 zMdlOm&K9z9Oa<5OOFg?H!@$DB#lpkH#=*q=Q!e8N21m+g$HZ{%ff%eu(=+QM`Z6ui zqGMM81|6MbSz>shZP=UJ>HN?=*$8Ypa21ZZMufTk%1JiaSfT6zTVP`+0 zhOI-TWs5h5BIUnbM@K1gqkPNMk%>|s!~x0K*x-a$R#txa?|1*V_sJlYcbrd5etu8r z3RnL+C7`pVPvnIYU-IE0nmob&a~^~ppDnic$9*sPz!O)L=H9K2`S=0fO#}W-m3$1N z^Y!UG+l0ogx?_uj13DFyg29cLaWg51Ws=rI$=KoXOpZq zg`c4?FcAEO8Rc9^PzvGT#K-N^5D}H4L`6jfb3WmY?TvtoVon8I7bRf&PXtWxq5{k1 zTb~mWydyU|i}oMQ(+|f9clh%!YZc+R34wN{id;K!+a_MFxm4%Nd$MviTj^7kjN#p>SZS1-{6C-P^l0u4oqnwJDm+!5Ik+ey&wDneh zYWP`7$U)Sip8zC6;`$Nw?0Cv{{JhnC3%+`lOXBfTIAFuw?DT8Qav)^!=WL$q@iNW% z&mD~yM?W=#@n~6#t?o;J$}vU+mA?Wrp#>(Tjn$c)ZZC&m-#5lg;6bFiukT&&wAk00 zhRRAmxNeoJ!a9~O9J%q-s00X& z=PFvKESf9IY-(bZ!PNT{f8(~!LSaQLa=(A0K!|Jkye~OES=r|Iqzh9@sFwX%uQV&K zgefk<|um2)S@J<+7m-Lg2mZF7;n=#N$L1ESrK8QJQZSAQ9cjb7R zMu`dYJ!ztZsnr*!j7Xt-q<iO)gYYfFyCL(j(Du)AE(T?)pG(Wj+2gy|A#vk0PFj zYj2~_qv@?&1ytEk5zofRCCEJ_BYSAbG2=%jWeLB9rHG~@PU{VbM;)0p9%9(bzhS@_ z8QJs*no;f4(^2WMVbUH&*zy=VztGADF!YNs>Lv-nY3kg-iIQ-@L7WRBp1t zW%UTF(!r{idl?z18CvD9^WB};nCNJK|qo%n#Tw6~>{K|)aUPW83F!Jldh@uef zqAOX*fgFf23{{<@pjQEZb+*x4f9KMh;*JlqDu(RzH@#zC+@{Br+EOKaQAkpxGz@{q z6qY&NWK3rX+-2$|32EU6TT{>h(VtGHo*Hsvp4C(!|V?9jGV6+^>aXu z-`?_^iR720>wU^fdT;o!yZFY}{r*x}z9_R(p#S-%6l~>sN2~RpaL97=!TVA+3bRMA z%SnXOVL{N_55B{Y{U1-(amb5ewU|jQMEVSd+K^2tvr*#0ZKX6Y)rq^+W-Szd_LoKN z36`OPOIRE;RB%5sdjp*~n~SM)I;wafG$Ac@7GkeZtchd4j;4We&?eh`DQZQ*$qGi2 zz+Lr1EAcnk)QJ@6l1d`-==c ziI4272mT?(KSN9TKVp)oLdzBROkuiGhyMib#xbBZ{A{wUyZ!5BsLww+CLC3O7u|kB zm-I_{x7_Els2}ao2#F|P=<=E~aFFq-4~AZp-Hp_V9tiDRzW+S@{`20m3H3awA(arc zsMAfEz03FBgc|G-&mhyAh4|6wj2-sf?9BtXX3i}+URd!dR1`#S7sWX_i=$oBn*bz$ z@68p=czTax4UOMX57(~STh=)#)4fwX{qj+UCl7^K>!B|%AfOwi;gsX=S*4$Cg#*)u z+Mxwr_6PsxUX4y{>%>CU=&*?RU!{(=*kFhb2*POswN&)>GMa`gxy+^=3D=}Pqk7K} z)Jv@)*LtczSXG>-_C@7IelL9olhy0*z}MmT=>-ynoSxEG5yOh{v)Gc^1>mdtJ()e~ zhtC+5(cd7kVZ1kg;!lW(qIWoTbeNf0n7R}D2QaQ3`OUZq2?;2?nFR%3DeLRI%Fr{4 zwidfq)gM&J_+`0`xt|aOg2aKJDJ0V^+RnmV#rWl0XFVdQsiji-W1<*1 zW*uMXp~wptoPGOYccu;5eJT}BT2mMLkx5sj~EI<3}N4! zG7xf2HfkFM(UZexWz&-(Ce0x-Pq*2;ma+lUXYNGa*}}FMvcthj@dH@#8+bX0TLW(?%|ZIrhIW8SS~IRGBo} z}v$YHVW`|Alq4KS_)Ph_0`**1_y-iO&Lg$6IQw2D=QDQ4>nlpHf==%5Et|;&6tqR-i*riB z28>drk`$NM?1`r^znxJ;-ZLOeC9xlfDzI7(2uZ|bdlx@K!SY-J?$D#)H zp`&==Nf`Y{2K*HHnaS9%vIxo zHlpJ(vB~$TQi>>S2#RpO(y+(P7xP=o5&GQJk|y8OR2b_T^~CLFv#D6&mo2QQGq1Sy zStU3<*+0=JjED%_u4tyNDBv53#aLRRr6*ehVPx8_k*Z9@8YZ@6^#cQeNNV5DrN?CJPXD1ZodMLnRw_HjoRk@PA8u&(ed&3}q%7Wl zWG-;#f&F-lP%xb~4M+WcK>Vq5Cdo-pK-4NkDVXJbiD4dt(g%LZyTwq(i|c5;ukjMzr3=UckUhov z_W|$ldpvo3yO$oafUsYrC^&{OP&CRuJmF5u$Uri1_dcUhsCR6AVZp2z#D_nfDu(k;g~Z^d(Imw5&ovWx zi3?(>ehk~Bm~Dqn6a|pQcCa2{;_mG1GIn%uihPp9G_ZL5TuQhh!xkG_2O&XEtNn%h zH8H|}rFj4gSrA(J7dBSspdhLC-I{dPdK0oo^`nMFt1~FCLQ7~vFyz8s*B0F5<<(yCWg~U(wN}8RQ-1bKc+s@8z+}uU2b4F45B{GheGEa4H^9|-3#BxQpzIV#O{e83x1{NSuHN}-U?i_xY6h;M*p>V8 zsunX%DVfgdw-$gSV?3R}tW!e5la3LMim8*sv}Qx_{Vf^X6QxO$;kC3lT8G?IhIdsl zgO&brlDU`5ESkAdS$So9JM{ny%cKHwBmy^V{2ozSf{%LyFi#fnhGNk%Zm}i+&~eMC0{1Jh5DH};AdB@EDuQhE z8xtcP{V02He}8`{%+=Mk_UTn3%CEooEP)FS+_$9KBBumu$#)E3tM2&EWmZHAdrn50VkYgIP??Z`%1^`u zY5M@GwQ?nqx@w{DR(1OQSx5JiIdKMbwlcbs12UpWsF>F`N80qPEv}xX;g!U3_&Mrt zH0m(bLd~JLJ<5HgW@aFyprIln5+f=C^GAceJXK|3di|b3XJ&rrD*+KL|MI6w2k*=u z>gSoSWB^*icUZ&a?oheae2u$)^t$kKsutP0qNjQe_*;Fz>OMYG#rYogj0E_JiiWr; z#=`LrUt%W~Gbd{Ln8J|Zbp-L^;4L6F>kZ%0E7g@bMx`qdyW7gJi6`X05R9=f2{a$~ z4L`i}E+kDpCEJwgtzjSSRMEic{#VX`CZM#zHM-oSaL^80RqtO{-{l%~<;H%=-c{-s zYtsv7TnanTL>ewqgeebv#`2{PU%}_@Fxg(u&)(zWBq+0Sr;YHx9T3&LS*^| z6|_h{$q4L%X^1LhffHX6J9W(v=D;7MJ2heS96b+Wx<+PlSXjcih5nwiF?FJTwS&Ri zXdRy0yWXV?SUM_{HtZa8Ta52g2}U~=58B}(tM*a?>iun64V2+fe2f$A3)QRO5+ial z%xvcpTe>DEpIIuegoOA)C5r2H0z}P6nal}`JD0CywqgzouBre|U}4`G3+S~S1!i|8 z&|P&N6c0Wt8pLm35MVX^bjWBuX2@6}sg;(|b)ClOY!nUMASHFWxn3?f`wrt0+{zX6 zkP;(FD9&h$XiZ8dX7&b2TT0q`pgelvSxOnA4<7Meys3-4Y!Mb7qXmdaEZ^n5N-%z0G;uJ>=GE; z4a0#OZf#=%A}n>YPw0|8z`6Nr@ko zIzG}q9~l`rhPSu>Q2L*30pEz_M_9hx&z>-wryO>g`o)MF?6LE~r=4f@4bfpT~w=TJg-Yx-lv#! zxD0!G@PA&QNPKj?u*+DCp*D&>?A)eeE@ah`Vpdhm`?9oJKV(HiNC@&$Q5JF}huf^y zaQJSf!QzAvmuggTiTdDP=&>{)4YfdX@ud3gu+x&p=!x8`o!=l{8_z;j-Yen=^a zF`F?{MIc0Xt@8=~v(w*lyQ==!>8TlQ!h3Hb-%J0m)N+3jk3}WB(o`19OeL+lXZW2P z!m`!+JwuQ7U|`J6gpR2CJCb3z;}uU+Z?Rm`bpjKka%0f?|GA(6k*2g!BRHA&7V9ZI z`;VGXWEhCf*VL^5akJ0mwY|T=DRx~J-^lLyjw365HSBqZF_&A2jAm*3R zhG}#0`aKSCm~(sPzutJPeo=PUjqHk7@;9xXe)($A|70yB^ky=AvK~f!UzqHlEc~-X zP;O%z-17nPrkx~RTd^(%|a5tP%p0#t9 zR-dME2SM3Zt}JF~E93@h2cNJYulG3Cu$Ck2q|HC^@Xs5v{~*Ob`@xz6ESkdhNyK@~ zYqAq;e;WDCi_(yg9Mcx&{Y1sURDC)dCjrbf$m-d4eJQ26>cUwEjVd3$vng1Jt%2h)&ylal=1>1Nh`>x0V-<@>K?5KGbZS^25;2s z8?pjDrkR-Zg5s|{f`cyrKyzEyX<8{g!bZ zD%-$D-k?5)Iy31YqwaQUe}oY>p+Y!CF`@(DOy~0N<>Y)3Hte6C?n>> zwie-WdzNHTJ#1qw5`D+xY_9Oz@abCD%YuKC@EfT~#)MIuD7FrHD4B{Ikr`XftnBC& z?)ih#)sUh{NmjCZ%K+DIq=mA-i2F-w&X7g0Y>SLL>O7S4 z4#^q2BzzeD{kvo;SWjYne(8&sxx1V3Pagua9}GQxe8`Syovc&A&^jb-j1h;|6FJ(& z7{R{tu6lz!2j?yZ1VY6{x}No!Fax1)=-O)P`Q<3yfZ)Cws;a8KR+@)YZ162>qH2;* zDSPQ6B%ra!qV)``a|cRQ12Y590F{A=9Qug2vo~5>uempQfT;N2Q&s{j2Z?%H^i;DD z>#zJhs5sx#a9gh8^)zYB^3t1v_)1C`12onlfJYn>e&11Dqwq+6AwS`7?#31VEPvp0 zoJ<7{{?Ods3<+OxsL?j`{AjdK9sSknKwbFYHz7Ce#t=_a0DRr)`|`&sz{=oIo?cq| z@lRRVXU!@=F_S)~+PclhRetFbYmao$2E?|~L7^`w*Q*f?xruVg|Ir61^+-!ov zlTCO02^z-VHN?pu;Fq{-8zGZwBBHiTK`wFLlWH+OwEgFw+&9T=@j*y+HSy&QxPgNW z{?-K5N~a3&)7wTjyV4joG`DSv-YT<=yLps+XNHL@Ppi!oiNY9=4{onk1pFJyd1dkb8-X6?LeR;M0?~^R8PvTuHXDU$^a~BI$!Exw~O28uw~Rw8bJ1I zxjZA1^1(1AVqgqIks~SzDm;uDPr+c>_#BUFr+?s$HuZ{pGTrM1F_smpK;aOSn$kgh z>f1o(c>lG8pGC5pG|tcbs|2KqWCajZM`MIAd&U51&`(Z2_zV^VF^3ia;wLx*TTw7v z(SniD3Yu(CRQnvQ0=>wvju^WcMYMv_Q2W=~#{K<84i5`-$HT9IZ(31G;Xh-{1+CKz zQckLWKUHY}3+>o~zX!qD0}|iJtY1`?h1csj+BQLlj4NhO==OQnpTKO8V5@ad#yoDmxIlk)Z@mE00#U)!D*9=K}(dTR6yLP_kCvyqaeglnB&Yn)6YCDN~0-AH(zVa96BOMg#tzi~)$4>j zit@2%GW zl)|RtvcPa}Js@O(bGF^o?d-2&`buSmg>u|o$68cZ`o&vlmfzWf>^(O_3ovT=p7;c( zFnyVEaZ5^6Ta4RGwetM!)N6ZZ4UL~h^qicHJ^#n$SzM1CO3ShJjx9XG+_z6&dij_T z?U0~;o8$&cFOCVcsnvP(sMR-}Q3To**TB|w&^SaaWiLKjzos@sdCV@xPj?%=Nbab{ zMMLy}oIv@25G2uc%^cfH6T9kz6oer%h;7Bm*PC*kHG_At5O0kB80)oH=JCWKx1SW zsJ*rF@zz~uo{QMsCM7DT88IdV+PWGc5@vliVIQLn5hewG;vN!+jf(D5&4|byxy&+* zN!O+XB;Db~mw7}|eUjYS{PNFi^m0@0oLep+D+x*jgcauWJ}Z3@|LI?(k&cFGqOc{& z?lpGhUVOnjQZIQC@(old9*H$4SS>}DqJsn@HQ@ly6XBAI`X5pURHJH3dcJ7cIt|N5 zulyc_-W2UuzlPeR*fiQMtAVi$N#phUXx3KQLXMBo63$%r5@QQQO4Q()5NebD9eo>A ztnD}4-nfG&ySM*h)UWT(t~#6p%=mgn07gynD(u`muCc9QfXJQ6U@UUg1KY+k&2Lt3e2hHOMlpdF~4 zdmW&Gs(pS_6~BK@_<8BQ84eDk6M-5f@lkn01^+Ug2kE;q>F?Id3n zrQetLF7v-Vu5?{jUJ5d)9J0KxAO^gnXM{~yYUcWUHEYuJYyvaQD^vSy-hU(}gG=<+ z={F4o4Gr7@4eOQZJ|Ac18fdrVw!u(PgW+V{vja*(bQ+YVc0==>`p&=|tq`XEuq7|T zMo*&WzO#Bvnxg?fY~k4q@Tu1td-pjzQOczoiHPoy+4uis0F@3K$2(?k@6uCa^H@^#T+zBl!q(Y zB)fgWgIB^WI1fSRZ^nZ@KANrp_X#Y!cwbk;y|+x^_A!JykO=4v!f0gzME)5A2Ez$L z2No6ZF|I&*b~Gdi6De89nDZf{-<(VOZK1xRUlO(A-v|Eq8y*WeteKfK2{CsS@YF7r z)D=xQmPhOt25?%0RSOUyC-?B%)Qaa!DMh3E%bRPsDV2YS-sSkL;!L{&6xcSvh8^Z_ zUT{qN;9W)FUO5ivS82au(R`=!wGGs+P}@?jiZWna8eDwT(D*ui7ZCFx-U5+nq+-=U z%aj)Ms1YP3+!ef2mMw>jpQZ0}z6U(XU%dQ+wzJ=TJ3JSqQ2W04$(e;50wpI-n0f}I zpr+o!`_I%MlMqb_|2%*4_0{&3nzO^g&OPJ5t0+6=iNq2v)a=n&HcG;^AvOLBIMh_GV z2<2*tuB26Iqvu5iJGk}D1&)73&LmDFsdKURt8lq9TPgX$@nId#|CY#ak0-7aU8f_Y z11Tp*2mW62G-xQ(-RAe8hE|)$e*egrWA-a-_>QlKK6ZCP5m^d^h{z`uiDps|av91u zH)x%p{}cpbt#zYTb?@LCY|MWW-kyvVM*e{sfBb|LZg*GqN-9~Rv% zAnJMXyH(6rk6|i~kap>~dJn6p?9^VW|3X8g2oCGxa1?5PM-NVTQ_l~ZYdE~6E)~Ux zqO1&MxLjgUZZ~(yFLxospWh@H84!;MlhI2j*dWXzs zc);)7E$hc>7k;y*)q4ElH{JVHV;HjBPOqo#xBsc#k*Tj;qdtus+tIAVIw-CqfZjsA zT7f?S1}_vFZPhtJWH}Wp+LZRB;YNHT?*}0=!~^Xb*&|R}4j4awGE^o2^n5SVYS)ul zjH}4fy4s!w)45U|&CVnv8|y54<1>4rz8YoMmoXho$GyWHBxF@UalE%CV9vop@X@O< z8>ue+zq@JO&wbpo1cexbO=`8W54u8_Uwype*MR_us8RX-n$S2Dzqo8Bz_$o z+LxqlF4(5zCfF6IX*Ux~$JE=>Kz|~mDchu{7yXUA9fnU!PjdAjIp*V7d^4aGJMosc zPiUJ@f`+oSAE5kEJeen-bB=;Mu{Nef4G!afEZX2dxPwS5fg`{VDDv|t29M)=ovQ~Q zSiGsZ;Sr*de!Iq3spBq7*JZP?it7v1v>;rzF!`yFjRbC)(&L6{V-{$aaFGGJcl1kJTP7jD%ETYg?EBioYOf)qzdG4X%I&0KJ#~0(?Wl5g3_I|NgN~ zTX|vmyno^(WHj~-Q~3e$CB*|-k@FhYvz5x#5O}9T>Uk|tH?1CcAaf;UlWf7@QUzl@ zriQN4ZHV zX;mm5YOT98nlGcn%iqWrAJ0%h3ynjl^k2%Cp>zXsM zLvO!pg$HVK?mRl3<&OV)lm+e!tXP4pf3Xt4H`q_1{ksP9ulHHQXL0Nb`@jHNJNoQR zJxVC(t7$|e6D!!@aje2|hq$k#zPuTv--`0(!WB)S8fmq-3{pQDy5u^D-Z&7!sA|8+ z1$!nTbA>A$>16vOd{r_fT zmQrPjt6gQ2nfUOCl*p@uP8?Bv-<##uq911luov4WY@anH*3bo=Tmie^OOl_bU2?e} z%BB-suLu)SdD&;r0hd&Gk~Se3cI7Fy5q-Fs(muwE5AJe!?3A`TIIjhYJmEc)eZN*KGN;*LzLfI@VkF$4ZfiVbX!Qmr>B4)_tLhzC>`U0gS$Dto#=Km0L7aDu*x3Wm=giQi3c3_ zgAq>u0#H^2QSU&2FS5=c@?yZyfD!Jb54^25R95=(Px|&Q>`9q*c8+25-!;>3hl#XU z{)qewP6$G`aFPiyOM9>b{VW}Ojc0>2Qc)AwD$=i*lbRI^e#|7z*{Vccc0@c>y{+%$ zd=F2(PK^4?TS;DJ(GE{q!O20c0nKR(G7PybD>*2qtL){oxV zEofe~y*Q|qrkNj5>!2`Olo(Ol$(oH%Wuj#Ph#bp)9=}A+*>i-k^NoW7L1sP+q~XDK ziiMJXjV?xGN+(ZnRsRDWhmm{S!nn?I$~v^FyQuPx<0g{=P}$JNJbA-LJq3_H<9;WmY#a~r+)G8 z($yUARruEPvE)QnKK@QAx1O~_Vpvc9YK7P?Pc7<>$<--JrR$wmvD_lQU9Ru<5kdE$ z!i$X$;kY0{T(`on`)_6`7`|i0=kC|5=#>u`%grpaT=Da?CO)&^PH03jp{(p8J^I*n zRI*TzC()NFhS3BYZJfvx?Kspd8&il~q)%CE+|ry213kPD>9n_{?{bnJH{=Dgu&g>2 z)pr{DoON?7;byVlkpn@OT!rVG_2Nx6TD+Z7Z)T$X-NN|_Z>{U_5C1tV6~5)DfDS*f zX)mzJ<~;&~_yc_HcNnlgrZ8;`uWu`<)Ylg*Y~A-WNH-Ej6z3T7_h{)lJnZ|TyLiWZ z$7Xvi53H~|Ye44FI&|BiYtTa@Njv%;pPlyk7san_dJZT{nqB#mf^K1KV`ZzWE`f%S zVc~{19N=LnnWt@Gnw)nlI}wPg{2g<-{8+6ypxVs{L=x~n+Oh># zLWB9DV!7BrY9E`XW!$a)ml9rq+j~ZrNQY0Kedn9>gBe<^$X2Kgey7GDPI2_P>2qgO-L0b+WZ!m@4Y8X)%?UE7AOTJB2okrOOl-7Z!(#`)B(>%?iPsqe=?U<` zWtQ{NGP((3k`v4ZkO?;)un~bn+&`ZXBFn{3^XUZpu0@FlA}HIdUz>7&MnUq`!C>SW zC*1n9H}zQ(r6OZ$AuK^%ZKSr#eC6zIv7R@e|Y74gUgq@M9C1MHE+Rg~(sv zPh@@3_FLRuaG%5A={6OdTH@qk>QBys{GEvSGovL8m97m{G=S&A}+WN2R zkT=K<-nfelvn+Dv2-8X8>>qNNs|NI68!0V*;#Agq#RWIRVdZz$go)j!5_g>}%_kO> z&+f5;hyLQ&+G2aslwlvi>>l?NeC%-c8uT2d8VO(%H!vLG4q#1r( zLc-mC;dLYCRpWq-zD2zU4OUdnpz(`XBT?6w= zqjG*jNPmZ5X4{D#=9Xa4lNx=rjYCQ#L0P~hu|QK1IEEsaIV0lFNQ=Pa_q|UHz1Ihd zl1DU9{+rzElTv^=%+l3EDa`Wd?E4m$dGMg}>hXJ4%^+xud86N+5XRUYfF!Bokpv5? zo3y|Ejcg_B_*$XPH*wjiPjC3>dNYZ7Kr5BFkA=fe{}-}M6kr^*GJ7jq@!n*_xVN4L zhHmQMo&6=VNduo@$c4$}-{F@1E~fQYh>WemFc(nfy|+aCF)tqvP@2bgABF?E-V4)M3INjCfzzK#`HL zQnP^iPO(tvO>M8FndBQ;^o{x1TX7GwwEMnp<7lEiUc)Qu4x!TW=g6&^IFZ1G)gDN& z5cP7PoOeVBK^`#t-&cE7{%|5h{jo&a_~%zlRyzw%J@RVqKW8xlmfjXhU5%l2AB{|E zz4>A0#~|F5FZl+`dV2ySdc-NnY1n!8Es2h|rvX7$a37mWt6aJ1Q4)TBvC$y5f1&>S zoA{eCOi}G{xIVbaoebaR=K44{m6V6iti1ri#ui9L+M91@@ceI(%LB!tR z;W`B%xEh5B-ug-m7ZhhqX91|43}%ahsJ9^-bmRw6YRX3{62!ik5+L@Mx;`YRz9Mup z=l%Tbq6ZimW1QIQU4y1_4oe+lD?ePvO?;+lM`wTZ3sf$$x=f1k_!gGxd@uJSBHsH6 zTqklIDrnv&BAeton<)?&TC2O%A*;m&h(5z!W&n@kOo$`(5+wsK+LbmW7g;35^sMFb zA0I$12lU>K)ciDo5$tbSK>955kEb+toh`VYd6!HXs<>1?3%|`A9tgA91tRvxeEgid z)+%W|8O=P2>z)^6l}o}m*%G{^Z!_8GeS%_`K(l+X)-RE?ZgdGwq5TsWyg%Hi4A1tk zIz=E}|0yaeLi(uxwG5b=I46c=co%nXjUU^79PYKyP^0V!AAMkPgIjZ@Z#0Q(z{__& z_PmlDLkTQy9O)fVX^Wumu}psHD15!A{8RZVte$7Oe1fd zWccKnk9zrd_6Y2Q1y=;Qk&|c8D0#0OeG3@WFrn=R#vtVzjl@Wa=OLg6=E?VLj8a_( z5-(oaB^Q7}poYO`InYK}F2KGm3!HW*YLtSFG?VGtl_E`EhhZhC3;(%i3`UHRbs9~L zu}U_u_ydRMu}P`IyU=pUxH^3D&}S2OscD^3411^YD3%@vcLB85aw)VDIvOY&!icf4 zUVAI6q6w;{yI|Y?{^e+SRyPzc(@V9{l5qYafstfQH#mpK(K!91nS0;F(rtdsEeQ2t zP?M8Zx+84!jH7VdKn0$#Q5Z&be;2YA_1qotZh03n-4eW|M~Cy2q4H^dsaT5?7Pm-3 zIgAPD7Ha@2R`E&{pqg2M;3mM48V)Y<2>*K8lc@2zkpWLeLr!r2$CtA^+>Dp{HPZ{F zwV(BJdnXI-tZr&%xRS)4b7%&<(kocXk>?Kv?n7ITz`>z>bYVw#lEIhcUbBA`?#{QR zzrwS#vrnj2Qu+S#kfuC8ERn8Y3bTjTndYc<`tW1`gF1i<2!f)>d-dg^Cg66z5XGjj`V= zyocTP1mZg1pE3xow6GmkOu}X=UEV6M7UtbYsQsjo9)Dw@<||lAW>)YPqw8l%3>{5k z1Bo)=;tRJS8@v7Nt~I&6wu2}x#dtX1oQjLnfvKnrS9sI`tS^G=_bb*vfI5=9p6kf> z#!A)#j(PM0xPh+S@y8(sKPI(M-ngM37Z1wdv)?)=p!QQomsU`9&peeQpHgGP#H2%6 z5XTWmFKgQ`2r+JBk$q$UQSU-F?lK_!)gkCj)`J=lNKuJam<7Q9El<;H{_;9H#G+={ zzz{g{BNGbknZX8IxlJ5pU~_kDct2X*3!nW$Z4eV=eFdb!o@m$1K#NOXOa;d$AVtXB z_xY8C18DY)?p34!mE*+WG$(LCX#b~l3U@`aDBO#(Nbr;I6+-PRYI_s@fD&5xxIcnF)!$;jmxEzbijeSvA#KTa2a~?9X<@`61Z4w_qK@K3 zaSh;82RLZOsr(&7P&f5c&7?s^&;8tCvIkaW$3$FnzIlyN5xr2^T~?5(`H z)ME!xIt@*fNesmoh}O_B`f&_Z>Pj9~&EDeqdmZ{ujI|xmCHc@bHaqU8ZiiC|9lM}R zMPAO>P%nf$z+Jv5J+lyPW<;>Ki?Vk?O5JQOmjuD=>$snIqnyUT2CTq7x=psNl?Ee! zb^;u8LwQtTG=LZmMd99`etTrri31X2OQd{i$uk?-zimakBA36S)?ygvAeZi)HMzJR zNaS(6xs1n0Tq*6|A$-t*;Lz7WaCzmFO}#?OM{~|7NBHBtg7eKO*hAqk^8a*WIG-yL z?FyITpf_ns?7X6C3rTaE-DSv~{G%Z^C3-(!c`V=GzM5}#cN=Fsr1$(vToL>!D+z-%3){g7uSxnAD(J&7Dp|w&1xRJvvxB{crXpMi+`k}WG!@losXnbp^y%) zfe*w?epr>nqhjz{+I=4KqN`{7~b^TZ_QQ7Y9BXPrw2slHG>uav2^)sW z0^5BBcN>5D-qHcv>z_}7rLHG9=QGJ}31ld6GK{Ya7i)gxlTmr6| zITN}E?f-Uon|C|$V*eOqRXOL$M;GNA5HX3bgs)A|kF+w!ik`K|c=LZgZ54cDy*Bj? z^Uu)EHFe7~_31}eo5kI5;ZNF$fQ1p{XB~j~`Gw+h+^${SI&B75xthC&8fUReD($mh z?UVg;8d}}mg)%`pD07!Gz394B&6-jUQyGB6^FBU4xS`5tRku?z+~22rMBrpv#Zb1u@5Vu zFY?7BVSce9&F4ha0sd^9;xBBY3CN|X>=L8vU<~`w=`jGg^v+#)WNa!UEjqqT$zT}W zGq0VSR-(0@-k{r?`-?&X;9Nh{kQ%D3Id}T+q{9uZ48`~rjr*&4H$^zx7t8`h=+e7l z2PTr`GhB#AY>c^{!Ep>V>IK@18uVOFgU^N`7yXY#2Dt~j&t09+^E`g?p6A8S*}{E; z3IueJ58oz?J!aECZV3>1U;@K=^l5nEV(@6t~X z3FgT$wL(<91^dtu>ke9vA++e}U;g1ooLi!&(EOpKrK9u6N=vii{y(M^Ifo)CxyHc2 za7sFE(?OSc9%weLc~4npIK>ZSfQx9B3v)QkTRz5 z+wG%j$>wJ#=)KQA{aaFuT+E$;any(-eABG(?5(S4iLb6f_g)8g+*PHC-%Dfgztk#@_r^#1JW{(8Fd4Kyu1JO6c8OZu~C@TB)IyVin(#g^~p*sxrm z`Vfe1b3gBw?=wc9yzFWke@TVTsZCf}Bpx_Gas#Fpk0M^5UAi7z^31VI)EYXN#N z#^+xD5wA4`5sKsnVi(S48$gI049RtnMJ(gZPP=JGoyA-4Tur{+`Np*T(l~|mzVOh~ z8ODx|l3$NQ$rIA(&hGctSU$0l)s0gGC=n_5Q)%o$oXz4RS6NVHnFek z<?vhrVmgTe~55>eiR>#F|UwVu0M8urh+1598PLv$dct%TJlD}-K5aw@7HD})6x6l*$(uTiTvz_S^7A%P!*D^!Ffw94Ic zRgr`WZrEhA0%s*F78@Z#d~0dF38oWBCAJTSZ2I?#G=PQFGd|`KlRenFOG{Ca!69d1 zKAgB8cW9C3^{o&?Zr|Y!T4MTn^ug(tEp$3|VT2GDyRg9UubZX*?VxAnV&C1}e`W3M z4R)K26au=btpzVu7V-mYg=S0!)@1EnNf(svtN+DNJxolA<$wT_&lY*JcGk2Xz#DkO zl*FH=fEeSl3l~1!^e-Vy%~wRdI9s%%hEy@e2r(GNr#F zB28>1AI>|^NUM9%4!uP$(Y}mVu*TiVqYrQh$Zvoivx?tnW32S#cF{zKGk?*JX1R(* z-DRC}!0GSm`>x-s^_HqSbpN#6s5RU>?H8l7!+k#{hk)TkYngSg*C`2~tg{Qa#qOlh zPY_o9F%be+PQNy>Ue7OcY$G^XAo!AMi+-)oX9IR+~ zc^uMzJ{o`n5Z>X(`3=YIzcU|AZ7_1qakj1;{Y1MGQ~!v;H!w(0MENMoONfH=DA{gh zB|4ujPNKEm>k8q&rSf4#vx6@`sS^tD$6%Y5Q_dj13Q)eHCF z!FEphV?8rjX-{cyMdCIj+78Af5e?K{6{U9F@}8!}G$s>>c~SDFM%5ILm~i&7 z=-~%*`lSoc^7?uTkE^r0+3nZ!J5V7-_<0v0(T-Ngi(%RJ2{NPTj@O;VhiuI=ZQ>(} zO-)P~$QPdw)Jz4|cx;wO!Z zW9e72NyP+qW4}qc4R{_M0X$e~Z-@+Q+BCQ#418%eV|a0*C7Q>1c>SS@V27@M7+E0k zAElrD>`u`PG2*&m5xG}!WBgg@hzusNm3OS*nC9y;o6vZjJ*uWvOz>1p+iOib6HY2O zoE(#69%BultbO55hYSt%zbJ~)X|IS8HN+Q=l-sVc4Wq9Q)*YUXidbGJno}CKx&H0~ z-ATj=!g8}7Hp)o-;@9pdiXk_58eDQ`;Jy66ZB687)?yQW&#ilg8xLxf2P1+9kaQPf z(*am2_H$1`-GfO#GoJObg*&3`T800JWDTUq>8BI{XoIFNYTgWR&a60jPVOs*RegN;>>ubc|5OUp|;ZauS9wCYowz%y`EHFMJj%R2!wtNUurVC z<{gH6wvi4~KuUmKa9b9S9@f<)43=n~RGU{x!pN~*Hd1}SmaQZxCyZ86^~*devL7db z?5^49&=oyt9YJ9o&-rL-iv5o7)O*Mg@8nMM-A3Oh6`6x3_JvlqI|7q7UTYL|5`pL` z#rZt~MNLp`v!I>VGN{4mZUA`9;n1X`oRLw?f?Z(4a+g)cnx1;zB?fwb<9&vPJEhGXZl4J5Wg7tQZc7@a6N1 z^x>`Q5b?h#%hbW#=b}V3AQUm)(JQLdHL=KNSGVWE)9O*uyPWJgxNnapKlMN>*$fpv zDM>VTr4;fv0NhFKX~Xf3Hire@!m6(5#zY28&C_H6aN_=A1*U7*{NV6^6o|sAF6rPt zDtydwLHCQ=^9t$7v>zf48k&fy48TgNz3E3*)zSP3;(fs;UHJ(=htLw^-czx(8+W-V z^U{yVxF&6V+N52{v6*qX&b4#y{7K1jWNHVhDd*2o&cLs@JTb_}kh7dc{OxKlZ^RhE z$ynJ{@~3DmqRn}y5+X!HODsB`YK`GN8lMrkaVPaG0NTSB85Yn#_i%me-13}o2ejx> zKLOMxZEh`xzqpX9he_Kk>@@=?jTXD=G^qd;FVer7*}?IkNxXI364 z?*s#}c|Mt+=Jn7r2f|O7SZh4&c=RDWZX=mwofk$b(VCbT$ERU9hRU!982QcIDqNX| z$4Q5-lAn%T)3<(NBf15jl#ZDwPwm{%mEv;?tJ8EF$_`*1z@3Y)N`#Ree~2!C?I-hw z=S1ea7iHVrHq=6T66745{3PUkl^mS#v=)@FR{IWi@eQ^xfn`WyUzn*B9t;xGUUka_*M(rRw=5_W-Q>U4dN`U_eDyfg zuqcM}(Z&5EVCY^WhXRLIg^55U_41KZRtGQYsh;B|U6OLJZN!Bw=Y7SZ8h&u!qh{x&YF{rKz#7gmO}*a^^LQi$MLp{Ml^Z5=KT%6<%g}eQqsmVRiI%gTa3ipG7g- zXQrpEoyPbqodcb|Qm>M~r=`B+<08Wl=`7kY|@T=_ivj9uaj7Eel4upGW7+nc| z8iKOO>gCLvyThm%`yXb(FEGM&H}7@TS)H}JL!)U`%!04_&Bj%)&ZSn1D(AP>2IvN( zcElsF?@Bg7zXUk*fk)xYfnK)Ei9)xog%US_@Xd@xzn}mPqq#X~n=e5VfUEE7$~-<+ zl^BVtc+7=i2v)!-*LM7;|!jlZ*`oKtxwwdYN^*ZfxpR^G`0u6F#r< zeF#wM_ZBS_NNA&(1e8QauPu0uWHZdLUVhNkK8;uA)Sje7^2Ew`{Z|;SSH3NbDGPU$@yq|#SGg`$Vvrd zIvxA&mGtZ+fF8&9#N65ZtuCuc<7Uj%2g%oHM-^PYF3lbyYHe)3!-mJdosBrfY|S_c zaW33jTq+|F0lgJO3CK=^bY+RW72?)4A>;;aRUuBSz_w4NP2^m5f0Dg>?QG(o-LQZ@X;@bmchhGeTAJZ=k?hs$! z+x|j{8!i8cRj~e6P{3TdS0m@C+@-G?Lv1N$ZJ8GXeQX0?LbwoXSB7mHW@#~2+PNuwyJ53IzQ5t`wtn(m7T3JbZA|)V zNZEgK?KGLbmJ7!Ee_T$JO3Bp%E!{fM2zavjn?JV50DTo(Wl^=%#mvd-KXO|!d~jE>+Eg#(q5pmR{s zfa4(1=~lRE10*HynCMVGdMhEoQZ10VqkkH*m|(j+kj#7{Xp4CmsH93#!FqNreL+oSd!{jvxVnJ*5!G; zM@Rwb(R`QS8eA4CF@Q_6Pm`0^pj2`H`xqb)OXL<*)jxP?h+#=7JSG8{+deG%l`?aC zkE%-NtqY2az&GCPH$6>P4cg~5GSFCpjj{(&*F~1D(^(qa_s#?zzY!)&GfoUMd`<-0 z+KmXc!&w$+4wcGK)>Su>5tl;(4$^Zx2Gcdl#AvQ3N$EOH`zizuVtX8z8uEBn>Z>#P&lIyQ{>#~bRVYtA z!tnJV^&L*Z{#A9bZ31(0wUfdk!0-;^xi=Dbgah@|`N`tvXT04E)flIF z5?b6tKnexG-F42*el|LHd?0h6hcUFaAc!9QQs_i3vY8dlSFOE`RNbG>8NEd`G>3e( zZToKF*2Ki$DTVC}@Od+iN=3xg%sLj}@gY}Buj1-mjRN1G8X)a|WZYjl{T#n0APA&8 zr-}U5iri$allUloUX=9H9p*>zokw4t?E%%wRsR6WFI#7|VLw0H<9AYC2Lz}m!KmJ;7Mgx(f4~JT?W&BkhzV@gm*A_^Wq7JXKbl!UR z&YjUKF$FQ4wwitq7srk;cxHiVx$xH2;qEj6Is4<#QTB-V5d=wcy%LaYb5q=Oby&fv z!vr>M((~)lfDIn_z7DDIpngn(5xo)h@WV*M_u&XEXI_2_ka5ZT2M5rA{vjcL%-(p^ zKzfin-AmxkfYE;$iAud)UB5m$p@Xd;`8GFyg4Js6T|0u_xk6#%?36bfS<`9GE#BQ1 zdM^&V2UTU&*n42U&Yv&ti3siAvogx6v5j(h-Zi5L%Smu0XIQ=F?PHH{JCaRgh2#1v zt++a_tkyZVjnT6cx@MdJK?!OW3C?WSZ`Pi84hbW~CTsEJ^Bj*03Y;8#=9+7GwZYTt z0H!AImU=4ma#2=r`NJRSl( z#vzX=W_iu0fNH*TGr2BYJzUZ1;%Opp(iq^#|2N+Ce<;{6)8P}aWLWrTgTmZF28$M8 MY;aelke`U3}82|tP literal 0 HcmV?d00001 diff --git a/samples/graph_pipelines/project/android/res/values/strings.xml b/samples/graph_pipelines/project/android/res/values/strings.xml new file mode 100644 index 0000000..2197b89 --- /dev/null +++ b/samples/graph_pipelines/project/android/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Graph Pipelines + diff --git a/samples/graph_pipelines/shaders/Blit.frag b/samples/graph_pipelines/shaders/Blit.frag new file mode 100644 index 0000000..839bc24 --- /dev/null +++ b/samples/graph_pipelines/shaders/Blit.frag @@ -0,0 +1,65 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#version 400 + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +// Buffer binding locations +#define SHADER_DIFFUSE_TEXTURE_LOC 0 +#define SHADER_OVERLAY_TEXTURE_LOC 1 + +layout(set = 0, binding = SHADER_DIFFUSE_TEXTURE_LOC) uniform sampler2D u_DiffuseTex; +layout(set = 0, binding = SHADER_OVERLAY_TEXTURE_LOC) uniform sampler2D u_OverlayTex; + +// Varying's +layout (location = 0) in vec2 v_TexCoord; +layout (location = 1) in vec4 v_VertColor; + +// Finally, the output color +layout (location = 0) out vec4 FragColor; + + +//----------------------------------------------------------------------------- +void main() +//----------------------------------------------------------------------------- +{ + vec2 LocalTexCoord = vec2(v_TexCoord.xy); + + // ******************************** + // Texture Colors + // ******************************** + // Get base color from the color texture + vec4 DiffuseColor = texture( u_DiffuseTex, LocalTexCoord.xy ); + + // Multiply by vertex color. + DiffuseColor.xyzw *= v_VertColor.xyzw; + + // Apply darkening/lightening control + // float lerp01 = min(1,FragCB.Diffuse); + // float lerp12 = max(0,FragCB.Diffuse-1); + // DiffuseColor = DiffuseColor * lerp01 + lerp12 - lerp12 * DiffuseColor; + + // Get the Overlay value + vec4 OverlayColor = texture( u_OverlayTex, LocalTexCoord.xy ); + + // ******************************** + // Alpha Blending + // ******************************** + FragColor.rgb = DiffuseColor.rgb *(1.0-OverlayColor.a) + OverlayColor.rgb; + FragColor.a = 1.0; + + // DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! DEBUG! + // FragColor.xyz = (1.0 - OverlayColor.a) * DiffuseColor.xyz + OverlayColor.a * OverlayColor.xyz; + // FragColor = vec4(DiffuseColor.xyz, DiffuseColor.a); + // FragColor = vec4(OverlayColor.xyz, OverlayColor.a); + // FragColor.a = 1.0; + // FragColor = vec4(0.8, 0.2, 0.8, 1.0); +} + diff --git a/samples/graph_pipelines/shaders/Blit.json b/samples/graph_pipelines/shaders/Blit.json new file mode 100644 index 0000000..d7d32c6 --- /dev/null +++ b/samples/graph_pipelines/shaders/Blit.json @@ -0,0 +1,64 @@ +{ + "$schema": "../../../framework/schema/shaderSchema.json", + "Passes": [ + { + "Name": "RP_BLIT", + "Shaders": { + "Vertex": "Media/Shaders/Blit.vert.spv", + "Fragment": "Media/Shaders/Blit.frag.spv" + }, + "DescriptorSets": [ + { + "Buffers": [ + { + "Type": "ImageSampler", + "Stages": [ "Fragment" ], + "Count": 1, + "Names": [ "Diffuse" ] + }, + { + "Type": "ImageSampler", + "Stages": [ "Fragment" ], + "Count": 1, + "Names": [ "Overlay" ] + } + ] + } + ], + "VertexBindings": [ "VB0" ] + } + ], + "Vertex": [ + { + "Span": 60, + "Name": "VB0", + "Elements": [ + { + "Name": "Position", + "Offset": 0, + "Type": "Vec3" + }, + { + "Name": "Normal", + "Offset": 12, + "Type": "Vec3" + }, + { + "Name": "UV", + "Offset": 24, + "Type": "Vec2" + }, + { + "Name": "Color", + "Offset": 32, + "Type": "Vec4" + }, + { + "Name": "Tangent", + "Offset": 48, + "Type": "Vec3" + } + ] + } + ] +} diff --git a/samples/graph_pipelines/shaders/Blit.vert b/samples/graph_pipelines/shaders/Blit.vert new file mode 100644 index 0000000..d11750a --- /dev/null +++ b/samples/graph_pipelines/shaders/Blit.vert @@ -0,0 +1,38 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#version 400 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +#define SHADER_ATTRIB_LOC_POSITION 0 +#define SHADER_ATTRIB_LOC_NORMAL 1 +#define SHADER_ATTRIB_LOC_TEXCOORD0 2 +#define SHADER_ATTRIB_LOC_COLOR 3 +#define SHADER_ATTRIB_LOC_TANGENT 4 + +layout (location = SHADER_ATTRIB_LOC_POSITION ) in vec4 a_Position; +layout (location = SHADER_ATTRIB_LOC_NORMAL ) in vec3 a_Normal; +layout (location = SHADER_ATTRIB_LOC_TEXCOORD0) in vec2 a_TexCoord; +layout (location = SHADER_ATTRIB_LOC_COLOR ) in vec4 a_Color; +layout (location = SHADER_ATTRIB_LOC_TANGENT ) in vec4 a_Tangent; + +// Varying's +layout (location = 0) out vec2 v_TexCoord; +layout (location = 1) out vec4 v_VertColor; + +void main() +{ + // Position and text coord are simple (Except Y in inverted on screen compared to OpenGL) + vec4 TempPos = vec4(a_Position.xyz, 1.0); + gl_Position = vec4(TempPos.x, -TempPos.y, TempPos.z, TempPos.w); + v_TexCoord = vec2(a_TexCoord.xy); + + // Color is simple attribute color + v_VertColor.xyzw = vec4(a_Color.xyz, 1.0); +} diff --git a/samples/graph_pipelines/shaders/Scene.vert b/samples/graph_pipelines/shaders/Scene.vert new file mode 100644 index 0000000..d1a33d9 --- /dev/null +++ b/samples/graph_pipelines/shaders/Scene.vert @@ -0,0 +1,77 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#version 400 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +#define SHADER_ATTRIB_LOC_POSITION 0 +#define SHADER_ATTRIB_LOC_NORMAL 1 +#define SHADER_ATTRIB_LOC_TEXCOORD0 2 +#define SHADER_ATTRIB_LOC_COLOR 3 +#define SHADER_ATTRIB_LOC_TANGENT 4 +// #define SHADER_ATTRIB_LOC_BITANGENT 5 +#define NUM_SHADER_ATTRIB_LOCATIONS 6 + +// These start back over at 0! +#define SHADER_VERT_UBO_LOCATION 0 +#define SHADER_FRAG_UBO_LOCATION 1 +#define SHADER_LIGHT_UBO_LOCATION 2 + +layout (location = SHADER_ATTRIB_LOC_POSITION ) in vec4 a_Position; +layout (location = SHADER_ATTRIB_LOC_NORMAL ) in vec3 a_Normal; +layout (location = SHADER_ATTRIB_LOC_TEXCOORD0) in vec2 a_TexCoord; +layout (location = SHADER_ATTRIB_LOC_COLOR ) in vec4 a_Color; +layout (location = SHADER_ATTRIB_LOC_TANGENT ) in vec4 a_Tangent; + +// Uniform Constant Buffer +layout(std140, set = 0, binding = SHADER_VERT_UBO_LOCATION) uniform VertConstantsBuff +{ + mat4 MVPMatrix; + mat4 ModelMatrix; + mat4 ShadowMatrix; +} VertCB; + +const mat4 biasMat = mat4( + 0.5, 0.0, 0.0, 0.0, + 0.0, 0.5, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.5, 0.5, 0.0, 1.0 ); + +// Varying's +layout (location = 0) out vec2 v_TexCoord; +layout (location = 1) out vec3 v_WorldPos; +layout (location = 2) out vec3 v_WorldNorm; +layout (location = 3) out vec3 v_WorldTan; +layout (location = 4) out vec3 v_WorldBitan; +layout (location = 5) out vec4 v_ShadowCoord; +layout (location = 6) out vec4 v_VertColor; + + +void main() +{ + vec4 TempPos = VertCB.MVPMatrix * vec4(a_Position.xyz, 1.0); + gl_Position = vec4(TempPos.x, -TempPos.y, TempPos.z, TempPos.w); + v_TexCoord = vec2(a_TexCoord.x, a_TexCoord.y); + + // Need Position in world space + v_WorldPos = (VertCB.ModelMatrix * vec4(a_Position.xyz, 1.0)).xyz; + + // Get shadow texture coordinate while we have world position + // Expanded out since trying to handle shadows in reflection + v_ShadowCoord = biasMat * VertCB.ShadowMatrix * vec4(v_WorldPos.x, v_WorldPos.y, v_WorldPos.z, 1.0); + + // Need Normal, Tangent, and Bitangent in world space + v_WorldNorm = normalize((VertCB.ModelMatrix * vec4(a_Normal.xyz, 0.0)).xyz); + v_WorldTan = normalize((VertCB.ModelMatrix * vec4(a_Tangent.xyz, 0.0)).xyz); + v_WorldBitan = normalize(cross(v_WorldNorm, v_WorldTan)); + + // Color is simple attribute color + v_VertColor.xyzw = vec4(a_Color.xyz, 1.0); + +} diff --git a/samples/graph_pipelines/shaders/SceneOpaque.frag b/samples/graph_pipelines/shaders/SceneOpaque.frag new file mode 100644 index 0000000..a0615de --- /dev/null +++ b/samples/graph_pipelines/shaders/SceneOpaque.frag @@ -0,0 +1,259 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#version 400 + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + + +// Uniform buffer locations +#define SHADER_VERT_UBO_LOCATION 0 +#define SHADER_FRAG_UBO_LOCATION 1 +#define SHADER_LIGHT_UBO_LOCATION 2 + +// Texture Locations +#define SHADER_DIFFUSE_TEXTURE_LOC 3 +#define SHADER_NORMAL_TEXTURE_LOC 4 +#define SHADER_EMISSIVE_TEXTURE_LOC 5 +#define SHADER_METALLIC_ROUGHNESS_TEXTURE_LOC 6 + +#define NUM_SPOT_LIGHTS (4) + +// Uniform Constant Buffer +layout(std140, set = 0, binding = SHADER_FRAG_UBO_LOCATION) uniform FragConstantsBuff +{ + vec4 Color; + vec4 ORM; + +} FragCB; + +// Light uniform +layout(std140, set = 0, binding = SHADER_LIGHT_UBO_LOCATION) uniform LightConstantsBuff +{ + mat4 ProjectionInv; + mat4 ViewInv; + mat4 ViewProjectionInv; // ViewInv * ProjectionInv + // mat4 WorldToShadow; + vec4 ProjectionInvW; // w components of ProjectionInv + vec4 CameraPos; + + vec4 LightDirection; + vec4 LightColor; + + // Spotlight data + vec4 SpotLights_pos[NUM_SPOT_LIGHTS]; + vec4 SpotLights_dir[NUM_SPOT_LIGHTS]; + vec4 SpotLights_color[NUM_SPOT_LIGHTS]; + + vec4 AmbientColor; + + float AmbientOcclusionScale; + int Width; + int Height; + +} LightCB; + +#ifndef PI +#define PI (3.14159265359) +#endif + +// Textures +layout(set = 0, binding = SHADER_DIFFUSE_TEXTURE_LOC) uniform sampler2D u_DiffuseTex; +layout(set = 0, binding = SHADER_NORMAL_TEXTURE_LOC) uniform sampler2D u_NormalTex; +layout(set = 0, binding = SHADER_EMISSIVE_TEXTURE_LOC) uniform sampler2D u_EmissiveTex; +layout(set = 0, binding = SHADER_METALLIC_ROUGHNESS_TEXTURE_LOC) uniform sampler2D u_MetallicRoughnessTex; + +// Varying's +layout (location = 0) in vec2 v_TexCoord; +layout (location = 1) in vec3 v_WorldPos; +layout (location = 2) in vec3 v_WorldNorm; +layout (location = 3) in vec3 v_WorldTan; +layout (location = 4) in vec3 v_WorldBitan; +layout (location = 5) in vec4 v_ShadowCoord; +layout (location = 6) in vec4 v_VertColor; + +// Output color +layout (location = 0) out vec4 FragColor; + +//----------------------------------------------------------------------------- +vec4 ScreenToView(vec2 ScreenCoord/*0-1 range*/, float Depth/*0-1*/) +//----------------------------------------------------------------------------- +{ + vec4 ClipSpacePosition = vec4((ScreenCoord * 2.0) - vec2(1.0), Depth, 1.0); + ClipSpacePosition.y = -ClipSpacePosition.y; + vec4 ViewSpacePosition = LightCB.ProjectionInv * ClipSpacePosition; + + // Perspective division + ViewSpacePosition /= vec4(ViewSpacePosition.w); + + return ViewSpacePosition; +} + +//----------------------------------------------------------------------------- +vec3 ScreenToWorld(vec2 ScreenCoord/*0-1 range*/, float Depth/*0-1*/) +//----------------------------------------------------------------------------- +{ + vec4 ViewSpacePosition = ScreenToView(ScreenCoord, Depth); + + vec4 WorldSpacePosition = LightCB.ViewInv * ViewSpacePosition; + return WorldSpacePosition.xyz; +} + +//----------------------------------------------------------------------------- +float FSchlick(float f0, float f90, float u) +//----------------------------------------------------------------------------- +{ + return f0 + (f90 - f0) * pow(1.0 - u, 5.0); +} + +//----------------------------------------------------------------------------- +vec3 FSchlick(vec3 f0, float f90, float u) +//----------------------------------------------------------------------------- +{ + return f0 + (f90 - f0) * pow(1.0 - u, 5.0); +} + +//----------------------------------------------------------------------------- +void CalcBRDF(vec3 EyeDir, vec3 Normal, vec3 LightDir, vec3 AlbedoColor, float Roughness, float Metallic, out vec3 f_diffuse, out vec3 f_specular, out vec3 f0) +//----------------------------------------------------------------------------- +{ + vec3 H = normalize(LightDir + EyeDir); + //float NL = max(0.0, dot(Normal, LightDir)); + float NV = max(0.0, dot(Normal, EyeDir)); + float LH = max(0.0, dot(LightDir, H)); + float NH = max(0.0, dot(Normal, H)); + float VH = max(0.0, dot(EyeDir, H)); + + float gltfDielectricSpecular = 0.04; + + vec3 c_diff = mix(AlbedoColor.rgb * (1 - gltfDielectricSpecular), vec3(0.0)/*diffuse color is black in a metallic material*/, Metallic); + f0 = mix(vec3(0.04, 0.04, 0.04), AlbedoColor.rgb, Metallic); + float alpha = Roughness * Roughness; + + vec3 F = FSchlick(f0, 1.0/*f90*/, VH); + f_diffuse = (1 - F) * (1 / PI) * c_diff; + + // D - GGX microfacet distribution + float alphaSqr = alpha * alpha; + float denom = NH * NH * (alphaSqr - 1.0) + 1.0f; + float D = alphaSqr / (PI * denom * denom); + + // V + float k = alpha / 2.0f; + float k2 = k * k; + float invK2 = 1.0f - k2; + float Vis = 1.0 / (LH * LH * invK2 + k2); + + f_specular = F * Vis * D; + +} + + +//----------------------------------------------------------------------------- +void main() +//----------------------------------------------------------------------------- +{ + vec2 LocalTexCoord = vec2(v_TexCoord.xy); + + // ******************************** + // Base (albedo) color + // ******************************** + // Get color from the color texture + + vec4 DiffuseColor = texture( u_DiffuseTex, v_TexCoord.xy ); + DiffuseColor.xyzw *= FragCB.Color.xyzw; + + if(DiffuseColor.a < 0.5) + { + discard; + } + + // Adjust by vertex color. + DiffuseColor.xyzw *= v_VertColor.xyzw; + + vec4 Emissive = texture( u_EmissiveTex, v_TexCoord.xy ); + vec4 MetallicRoughness = texture( u_MetallicRoughnessTex, v_TexCoord.xy ); + + // Get base normal from the bump texture + vec3 Normal = texture( u_NormalTex, v_TexCoord.xy ).rgb; + Normal = Normal * 2.0 - 1.0; + + mat3 TBN = mat3(normalize(v_WorldTan), normalize(v_WorldBitan), normalize(v_WorldNorm)); + Normal = normalize(TBN * Normal); + + float Depth = gl_FragCoord.z; + + // Determine World position of pixel + vec3 WorldPos = ScreenToWorld( LocalTexCoord, Depth ); + vec3 EyeDir = normalize(LightCB.CameraPos.xyz - v_WorldPos.xyz); + + vec3 L = -LightCB.LightDirection.xyz; + + vec3 f_diffuse = vec3(0.0); + vec3 f_specular = vec3(0.0); + vec3 f0 = vec3(0.0); + + CalcBRDF( + EyeDir, + Normal, + L, + DiffuseColor.rgb, + MetallicRoughness.g * FragCB.ORM.g, + MetallicRoughness.b * FragCB.ORM.b, + f_diffuse, + f_specular, + f0); + + // Spot lights + vec3 spot_diffuse = vec3(0.0); + vec3 spot_specular = vec3(0.0); + for(int l=0;l Date: Fri, 24 Oct 2025 16:19:10 -0600 Subject: [PATCH 2/3] 2025.Q3 framework update Signed-off-by: Rodrigo Holztrattner --- .gitignore | 49 +- .gitmodules | 38 - 01_BuildAndroid.bat | 4 - 01_Configure.bat | 4 + 01_Configure.sh | 5 + 02_Build.bat | 5 + 02_Build.sh | 5 + 02_BuildWindows.bat | 4 - 03_BuildTools.bat | 4 - Config.txt | 43 + Configure.py | 830 +++++ LICENSE => LICENSE.txt | 0 README.md | 100 +- assets | 1 - doc/doxygen.cfg | 4 +- doc/doxygen/footer.html | 2 +- framework/CMakeLists.txt | 601 ++-- framework/android/AndroidManifest.xml | 8 + framework/build.gradle | 77 +- framework/cmake/AddShadersDir.cmake | 37 + framework/cmake/CompileAlias.cmake | 73 + framework/cmake/CompileShadersHelper.cmake | 172 ++ framework/cmake/ExternalDependencies.cmake | 318 ++ framework/cmake/KTX-Software.diff | 40 + framework/cmake/ModelPackager.cmake | 59 + framework/cmake/TexturePackager.cmake | 181 ++ .../code/allocator/threadBufferResource.hpp | 189 ++ .../allocator/threadBufferResourceHelper.hpp | 108 + .../threadManagedBufferResourceAllocator.hpp | 209 ++ ...threadMonotonicBufferResourceAllocator.hpp | 238 ++ framework/code/animation/animation.cpp | 30 +- framework/code/animation/animation.hpp | 4 +- framework/code/animation/animationData.hpp | 2 +- .../code/animation/animationGltfLoader.cpp | 2 +- .../code/animation/animationGltfLoader.hpp | 2 +- framework/code/animation/skeleton.cpp | 27 +- framework/code/animation/skeleton.hpp | 11 +- framework/code/animation/skeletonData.cpp | 2 +- framework/code/animation/skeletonData.hpp | 3 +- .../code/animation/skeletonGltfLoader.cpp | 2 +- .../code/animation/skeletonGltfLoader.hpp | 2 +- framework/code/animation/skin.cpp | 22 + framework/code/animation/skin.hpp | 31 + framework/code/animation/skinData.cpp | 8 + framework/code/animation/skinData.hpp | 37 + framework/code/animation/skinGltfLoader.cpp | 43 + framework/code/animation/skinGltfLoader.hpp | 32 + framework/code/camera/camera.cpp | 20 +- framework/code/camera/camera.hpp | 14 +- framework/code/camera/cameraController.cpp | 17 +- framework/code/camera/cameraController.hpp | 12 +- .../code/camera/cameraControllerAnim.cpp | 34 +- .../code/camera/cameraControllerAnim.hpp | 7 +- .../code/camera/cameraControllerTouch.cpp | 10 +- .../code/camera/cameraControllerTouch.hpp | 5 +- framework/code/camera/cameraData.hpp | 2 +- framework/code/camera/cameraGltfLoader.cpp | 2 +- framework/code/camera/cameraGltfLoader.hpp | 2 +- framework/code/dx12/commandList.cpp | 107 + framework/code/dx12/commandList.hpp | 52 + framework/code/dx12/descriptorHeapManager.cpp | 146 + framework/code/dx12/descriptorHeapManager.hpp | 84 + framework/code/dx12/dx12.cpp | 712 +++++ framework/code/dx12/dx12.hpp | 255 ++ framework/code/dx12/meshObject.cpp | 89 + framework/code/dx12/renderPass.cpp | 57 + framework/code/dx12/renderPass.hpp | 58 + framework/code/dx12/renderTarget.cpp | 404 +++ framework/code/dx12/renderTarget.hpp | 97 + framework/code/graphicsApi/commandList.hpp | 63 +- .../code/graphicsApi/graphicsApiBase.cpp | 9 +- .../code/graphicsApi/graphicsApiBase.hpp | 13 +- framework/code/graphicsApi/pipeline.hpp | 29 + framework/code/graphicsApi/renderContext.hpp | 28 + framework/code/graphicsApi/renderPass.hpp | 29 + framework/code/graphicsApi/renderTarget.hpp | 45 + framework/code/gui/android/imguiAndroid.cpp | 6 +- framework/code/gui/android/imguiAndroid.hpp | 2 +- framework/code/gui/gui.hpp | 6 +- framework/code/gui/imguiBase.cpp | 7 +- framework/code/gui/imguiBase.hpp | 4 +- framework/code/gui/imguiDx12.cpp | 147 + framework/code/gui/imguiDx12.hpp | 45 + framework/code/gui/imguiPlatform.hpp | 11 +- framework/code/gui/imguiVulkan.cpp | 88 +- framework/code/gui/imguiVulkan.hpp | 13 +- framework/code/gui/linux/imguiLinux.cpp | 58 + framework/code/gui/linux/imguiLinux.hpp | 17 + framework/code/gui/windows/imguiWindows.cpp | 14 +- framework/code/gui/windows/imguiWindows.hpp | 8 +- framework/code/helper/postProcess.hpp | 19 +- framework/code/helper/postProcessSMAA.cpp | 27 +- framework/code/helper/postProcessSMAA.hpp | 16 +- framework/code/helper/postProcessStandard.cpp | 22 +- framework/code/helper/postProcessStandard.hpp | 18 +- framework/code/helper/zbufferReduce.cpp | 234 ++ framework/code/helper/zbufferReduce.hpp | 40 + framework/code/light/light.cpp | 2 +- framework/code/light/light.hpp | 2 +- framework/code/light/lightData.hpp | 2 +- framework/code/light/lightGltfLoader.cpp | 2 +- framework/code/light/lightGltfLoader.hpp | 2 +- framework/code/light/lightList.cpp | 2 +- framework/code/light/lightList.hpp | 2 +- framework/code/light/lightListGui.cpp | 2 +- framework/code/light/lightListGui.hpp | 2 +- framework/code/light/lightLoader.cpp | 2 +- framework/code/light/lightLoader.hpp | 2 +- framework/code/main/android/androidMain.cpp | 18 +- framework/code/main/applicationEntrypoint.hpp | 9 +- framework/code/main/applicationHelperBase.cpp | 509 ++-- framework/code/main/applicationHelperBase.hpp | 169 +- .../code/main/applicationHelperBaseDx12.cpp | 184 ++ .../code/main/applicationHelperBaseDx12.hpp | 162 + .../code/main/frameworkApplicationBase.cpp | 33 +- .../code/main/frameworkApplicationBase.hpp | 13 +- .../code/main/framework_static_empty.cpp | 2 + framework/code/main/linux/linuxMain.cpp | 155 + framework/code/main/windows/winMain.cpp | 23 +- framework/code/material/computable.cpp | 451 +-- framework/code/material/computable.hpp | 218 +- .../material/descriptorSetDescription.hpp | 12 +- .../code/material/descriptorSetLayout.hpp | 122 +- framework/code/material/drawable.cpp | 1005 ------ framework/code/material/drawable.hpp | 356 +-- framework/code/material/drawableLoader.cpp | 52 + framework/code/material/drawableLoader.hpp | 360 +++ framework/code/material/dx12/computable.cpp | 99 + framework/code/material/dx12/computable.hpp | 72 + .../material/dx12/descriptorSetLayout.cpp | 316 ++ .../material/dx12/descriptorSetLayout.hpp | 54 + framework/code/material/dx12/drawableDx12.cpp | 271 ++ framework/code/material/dx12/drawableDx12.hpp | 111 + framework/code/material/dx12/material.cpp | 15 + framework/code/material/dx12/material.hpp | 30 + .../code/material/dx12/materialManager.cpp | 175 ++ .../code/material/dx12/materialManager.hpp | 46 + framework/code/material/dx12/materialPass.cpp | 180 ++ framework/code/material/dx12/materialPass.hpp | 108 + framework/code/material/dx12/pipeline.cpp | 208 ++ framework/code/material/dx12/pipeline.hpp | 66 + .../code/material/dx12/pipelineLayout.cpp | 120 + .../code/material/dx12/pipelineLayout.hpp | 46 + .../dx12/pipelineVertexInputState.cpp | 94 + .../dx12/pipelineVertexInputState.hpp | 39 + framework/code/material/dx12/shader.hpp | 17 + framework/code/material/dx12/shaderModule.cpp | 83 + framework/code/material/dx12/shaderModule.hpp | 51 + .../dx12/specializationConstantsLayout.hpp | 31 + .../code/material/dx12/vertexDescription.cpp | 147 + .../code/material/dx12/vertexDescription.hpp | 31 + framework/code/material/material.cpp | 459 +-- framework/code/material/material.hpp | 247 +- framework/code/material/materialManager.hpp | 170 +- framework/code/material/materialManagerT.hpp | 112 +- framework/code/material/materialPass.hpp | 175 ++ framework/code/material/materialProps.cpp | 25 +- framework/code/material/materialProps.h | 19 +- .../material/materialShaderDefinition.cpp | 2 +- .../material/materialShaderDefinition.hpp | 2 +- framework/code/material/materialT.hpp | 116 + framework/code/material/pipeline.hpp | 72 + framework/code/material/pipelineLayout.hpp | 6 +- .../material/pipelineVertexInputState.hpp | 41 +- framework/code/material/shader.hpp | 131 +- framework/code/material/shaderDescription.cpp | 338 ++- framework/code/material/shaderDescription.hpp | 52 +- framework/code/material/shaderManager.cpp | 36 +- framework/code/material/shaderManager.hpp | 45 +- framework/code/material/shaderManagerT.hpp | 538 ++-- framework/code/material/shaderModule.hpp | 30 +- .../specializationConstantDescription.hpp | 2 +- .../code/material/specializationConstants.hpp | 27 + .../specializationConstantsLayout.hpp | 9 +- framework/code/material/vertexFormat.hpp | 76 +- framework/code/material/vulkan/computable.cpp | 502 +++ framework/code/material/vulkan/computable.hpp | 79 + .../{ => vulkan}/descriptorSetLayout.cpp | 48 +- .../material/vulkan/descriptorSetLayout.hpp | 51 + framework/code/material/vulkan/drawable.cpp | 389 +++ framework/code/material/vulkan/drawable.hpp | 99 + framework/code/material/vulkan/material.cpp | 17 + framework/code/material/vulkan/material.hpp | 23 +- .../material/{ => vulkan}/materialManager.cpp | 119 +- .../code/material/vulkan/materialManager.hpp | 5 +- .../code/material/vulkan/materialPass.cpp | 409 +++ .../code/material/vulkan/materialPass.hpp | 108 + framework/code/material/vulkan/pipeline.cpp | 209 ++ framework/code/material/vulkan/pipeline.hpp | 61 + .../code/material/vulkan/pipelineLayout.cpp | 8 +- .../code/material/vulkan/pipelineLayout.hpp | 11 +- .../vulkan/pipelineVertexInputState.cpp | 28 +- .../vulkan/pipelineVertexInputState.hpp | 22 +- framework/code/material/vulkan/shader.cpp | 8 +- framework/code/material/vulkan/shader.hpp | 13 +- .../code/material/vulkan/shaderManager.hpp | 11 + .../code/material/vulkan/shaderModule.cpp | 16 +- .../code/material/vulkan/shaderModule.hpp | 16 +- .../vulkan/specializationConstants.cpp | 51 + .../vulkan/specializationConstants.hpp | 45 + .../vulkan/specializationConstantsLayout.cpp | 2 +- .../vulkan/specializationConstantsLayout.hpp | 8 +- .../material/vulkan/vertexDescription.cpp | 30 +- .../material/vulkan/vertexDescription.hpp | 4 +- .../code/memory/androidHardwareBuffer.cpp | 2 +- .../code/memory/androidHardwareBuffer.hpp | 2 +- framework/code/memory/buffer.hpp | 38 +- framework/code/memory/drawIndirectBuffer.hpp | 94 +- framework/code/memory/dx12/bufferObject.cpp | 120 + framework/code/memory/dx12/bufferObject.hpp | 58 + .../code/memory/dx12/indexBufferObject.cpp | 35 + .../code/memory/dx12/indexBufferObject.hpp | 29 + framework/code/memory/dx12/memoryManager.cpp | 174 ++ framework/code/memory/dx12/memoryManager.hpp | 95 + framework/code/memory/dx12/memoryMapped.hpp | 132 + framework/code/memory/dx12/uniform.cpp | 98 + framework/code/memory/dx12/uniform.hpp | 116 + .../code/memory/dx12/vertexBufferObject.cpp | 153 + .../code/memory/dx12/vertexBufferObject.hpp | 86 + framework/code/memory/indexBuffer.hpp | 29 +- framework/code/memory/memory.hpp | 8 +- framework/code/memory/memoryManager.hpp | 2 +- framework/code/memory/memoryMapped.hpp | 50 +- framework/code/memory/uniform.hpp | 72 +- framework/code/memory/vertexBuffer.hpp | 54 +- framework/code/memory/vulkan/bufferObject.cpp | 48 +- framework/code/memory/vulkan/bufferObject.hpp | 24 +- .../vulkan/drawIndirectBufferObject.cpp | 108 +- .../vulkan/drawIndirectBufferObject.hpp | 74 +- .../code/memory/vulkan/indexBufferObject.cpp | 4 +- .../code/memory/vulkan/indexBufferObject.hpp | 5 +- .../code/memory/vulkan/memoryManager.cpp | 541 +++- .../code/memory/vulkan/memoryManager.hpp | 223 +- framework/code/memory/vulkan/memoryMapped.hpp | 42 +- framework/code/memory/vulkan/uniform.cpp | 9 +- framework/code/memory/vulkan/uniform.hpp | 24 +- .../code/memory/vulkan/vertexBufferObject.cpp | 26 +- .../code/memory/vulkan/vertexBufferObject.hpp | 24 +- framework/code/mesh/instanceGenerator.cpp | 7 +- framework/code/mesh/instanceGenerator.hpp | 2 +- framework/code/mesh/mesh.hpp | 8 +- framework/code/mesh/meshHelper.cpp | 8 +- framework/code/mesh/meshHelper.hpp | 79 +- framework/code/mesh/meshIntermediate.cpp | 190 +- framework/code/mesh/meshIntermediate.hpp | 23 +- framework/code/mesh/meshLoader.cpp | 13 +- framework/code/mesh/meshLoader.hpp | 2 +- framework/code/mesh/octree.cpp | 2 +- framework/code/mesh/octree.hpp | 4 +- .../code/rayTracing/accelerationStructure.hpp | 44 + framework/code/shadow/shadow.cpp | 2 +- framework/code/shadow/shadow.hpp | 4 +- framework/code/shadow/shadowVsm.cpp | 36 +- framework/code/shadow/shadowVsm.hpp | 29 +- framework/code/shadow/shadowVulkan.cpp | 39 +- framework/code/shadow/shadowVulkan.hpp | 45 +- framework/code/system/Worker.cpp | 30 +- framework/code/system/Worker.h | 35 +- .../system/android/androidAssetManager.cpp | 25 +- framework/code/system/assetManager.hpp | 15 +- framework/code/system/config.cpp | 2 +- framework/code/system/config.h | 5 +- framework/code/system/containers.cpp | 2 +- framework/code/system/containers.h | 2 +- framework/code/system/crc32c.hpp | 2 +- framework/code/system/glm_common.hpp | 3 +- .../code/system/linux/linuxAssetManager.cpp | 110 + framework/code/system/math_common.hpp | 2 +- framework/code/system/os_common.cpp | 74 +- framework/code/system/os_common.h | 8 +- framework/code/system/profile.cpp | 2 +- framework/code/system/profile.h | 2 +- framework/code/system/timer.cpp | 2 +- framework/code/system/timer.hpp | 2 +- .../system/windows/windowsAssetManager.cpp | 3 +- framework/code/texture/dx12/loaderKtx.cpp | 1149 +++++++ framework/code/texture/dx12/loaderKtx.hpp | 82 + framework/code/texture/dx12/sampler.cpp | 68 + framework/code/texture/dx12/sampler.hpp | 43 + framework/code/texture/dx12/texture.cpp | 428 +++ framework/code/texture/dx12/texture.hpp | 78 + .../code/texture/dx12/textureManager.cpp | 196 ++ .../code/texture/dx12/textureManager.hpp | 60 + framework/code/texture/loaderKtx.cpp | 85 +- framework/code/texture/loaderKtx.hpp | 44 +- framework/code/texture/loaderPpm.cpp | 9 +- framework/code/texture/loaderPpm.hpp | 35 +- framework/code/texture/sampler.cpp | 75 + framework/code/texture/sampler.hpp | 124 + framework/code/texture/texture.hpp | 237 +- framework/code/texture/textureFormat.cpp | 162 +- framework/code/texture/textureFormat.hpp | 24 +- framework/code/texture/textureManager.cpp | 24 +- framework/code/texture/textureManager.hpp | 114 +- .../code/texture/vulkan/imageWrapper.cpp | 67 - .../code/texture/vulkan/imageWrapper.hpp | 45 - framework/code/texture/vulkan/loaderKtx.cpp | 76 +- framework/code/texture/vulkan/loaderKtx.hpp | 24 +- framework/code/texture/vulkan/sampler.cpp | 109 + framework/code/texture/vulkan/sampler.hpp | 37 + framework/code/texture/vulkan/texture.cpp | 351 +-- framework/code/texture/vulkan/texture.hpp | 186 +- .../code/texture/vulkan/textureManager.cpp | 89 +- .../code/texture/vulkan/textureManager.hpp | 57 +- framework/code/vulkan/MeshObject.cpp | 2 +- framework/code/vulkan/MeshObject.h | 2 +- framework/code/vulkan/TextureFuncts.cpp | 2046 +------------ framework/code/vulkan/TextureFuncts.h | 121 +- framework/code/vulkan/commandBuffer.cpp | 418 ++- framework/code/vulkan/commandBuffer.hpp | 91 +- framework/code/vulkan/extension.cpp | 3 +- framework/code/vulkan/extension.hpp | 15 +- framework/code/vulkan/extensionHelpers.cpp | 472 +-- framework/code/vulkan/extensionHelpers.hpp | 724 +---- framework/code/vulkan/extensionLib.cpp | 609 ++++ framework/code/vulkan/extensionLib.hpp | 770 +++++ framework/code/vulkan/framebuffer.cpp | 185 ++ framework/code/vulkan/framebuffer.hpp | 122 + framework/code/vulkan/refHandle.hpp | 125 + .../code/vulkan/refHandleDestroyFuncs.hpp | 164 + framework/code/vulkan/renderContext.cpp | 355 +++ framework/code/vulkan/renderContext.hpp | 348 +++ framework/code/vulkan/renderPass.cpp | 38 + framework/code/vulkan/renderPass.hpp | 67 + framework/code/vulkan/renderTarget.cpp | 171 +- framework/code/vulkan/renderTarget.hpp | 397 ++- framework/code/vulkan/semaphore.cpp | 33 + framework/code/vulkan/semaphore.hpp | 38 + framework/code/vulkan/timerPool.cpp | 14 +- framework/code/vulkan/timerPool.hpp | 2 +- framework/code/vulkan/timerSimple.cpp | 14 +- framework/code/vulkan/timerSimple.hpp | 4 +- framework/code/vulkan/vulkan.cpp | 2219 +++++++------- framework/code/vulkan/vulkan.hpp | 593 ++-- framework/code/vulkan/vulkanDebugCallback.cpp | 10 +- framework/code/vulkan/vulkanDebugCallback.hpp | 8 +- framework/code/vulkan/vulkan_support.cpp | 59 - framework/code/vulkan/vulkan_support.hpp | 37 +- .../accelerationInstanceBufferObject.cpp | 8 +- .../accelerationInstanceBufferObject.hpp | 4 +- .../code/vulkanRT/accelerationStructure.cpp | 8 +- .../code/vulkanRT/accelerationStructure.hpp | 32 +- ...ensionHelpersRT.hpp => extensionLibRT.hpp} | 32 +- framework/code/vulkanRT/meshObjectRT.cpp | 21 +- framework/code/vulkanRT/meshObjectRT.hpp | 6 +- framework/code/vulkanRT/meshUpdateRT.cpp | 2 +- framework/code/vulkanRT/meshUpdateRT.hpp | 16 +- framework/code/vulkanRT/sceneRT.cpp | 8 +- framework/code/vulkanRT/sceneRT.hpp | 6 +- framework/code/vulkanRT/traceable.cpp | 14 +- framework/code/vulkanRT/traceable.hpp | 28 +- framework/code/vulkanRT/vulkanRT.cpp | 28 +- framework/code/vulkanRT/vulkanRT.hpp | 11 +- framework/external/.gitignore | 10 + framework/external/KTX-Software | 1 - framework/external/Vulkan-Headers | 1 - framework/external/VulkanMemoryAllocator | 1 - framework/external/eigen | 1 - framework/external/glm | 1 - framework/external/imgui | 1 - framework/external/implot | 1 - framework/external/json | 1 - framework/external/portable-file-dialogs | 1 - framework/external/tinygltf | 1 - framework/external/tinyobjloader | 1 - framework/schema/shaderAliasSchema.json | 6 + framework/schema/shaderSchema.json | 133 +- project/android/build.bat | 2 + project/android/build.gradle | 29 +- project/android/cmake/AddShadersDir.cmake | 170 -- project/android/cmake/CompileAlias.cmake | 43 - .../cmake/FrameworkApplicationHelper.cmake | 74 +- project/android/cmake/ModelPackager.cmake | 19 - project/android/cmake/TexturePackager.cmake | 127 - project/android/gradle.properties | 3 +- .../android/gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- project/android/gradlew | 54 +- project/android/gradlew.bat | 37 +- project/android/jniLibs/arm64-v8a/README.md | 3 + project/android/settings.gradle | 76 +- project/linux/CMakeLists.txt | 59 + project/linux/build.sh | 20 + .../cmake/FrameworkApplicationHelper.cmake | 48 + project/tools/.gitignore | 7 + project/tools/CMakeLists.txt | 11 +- project/tools/build.bat | 40 +- project/tools/build.sh | 21 + project/tools/clean.bat | 2 + project/windows/CMakeLists.txt | 46 +- project/windows/CmakePresets.json | 95 + project/windows/build.bat | 45 +- project/windows/buildArm64.bat | 46 +- project/windows/clean.bat | 7 + project/windows/cmake/AddShadersDir.cmake | 170 -- project/windows/cmake/CompileAlias.cmake | 43 - .../cmake/FrameworkApplicationHelper.cmake | 24 +- project/windows/cmake/ModelPackager.cmake | 19 - project/windows/cmake/TexturePackager.cmake | 127 - .../BloomImageProcessing/01_Install_APK.bat | 18 - .../BloomImageProcessing/02_InstallConfig.bat | 5 - samples/BloomImageProcessing/CMakeLists.txt | 39 - samples/BloomImageProcessing/build.gradle | 93 - .../project/android/res/values/strings.xml | 4 - .../shaders/BlurBase.frag | 56 - samples/CMakeLists.txt | 29 + samples/README.md | 102 +- samples/SubPass/01_CompileShaders.bat | 39 - samples/SubPass/02_Install_APK.bat | 13 - samples/SubPass/CMakeLists.txt | 48 - samples/SubPass/build.gradle | 90 - samples/empty/build.gradle | 73 - .../Adb_Logcat_graph_pipelines.bat | 11 - samples/graph_pipelines/CMakeLists.txt | 39 +- samples/graph_pipelines/CompileShaders.bat | 39 - samples/graph_pipelines/Install_APK.bat | 14 +- samples/graph_pipelines/build.gradle | 91 - .../graph_pipelines/code/main/application.cpp | 306 +- .../graph_pipelines/code/main/application.hpp | 22 +- samples/graph_pipelines/install_config.bat | 31 + .../project/android/res/values/strings.xml | 2 +- samples/hdrSwapchain/01_CompileShaders.bat | 39 - samples/hdrSwapchain/02_Install_APK.bat | 13 - samples/hdrSwapchain/02_PrepareMedia.bat | 65 - samples/hdrSwapchain/04_Install_APK.bat | 16 - samples/hdrSwapchain/06_Adb_Logcat.bat | 11 - samples/hdrSwapchain/CMakeLists.txt | 50 - samples/hdrSwapchain/README.md | 64 - samples/hdrSwapchain/build.gradle | 96 - samples/hdrSwapchain/img/screenshot_1.PNG | Bin 2221620 -> 0 bytes samples/hdrSwapchain/img/screenshot_2.PNG | Bin 2078420 -> 0 bytes samples/hdrSwapchain/shaders/ShadowShared.h | 128 - samples/hdrSwapchain/shaders/Skybox.frag | 53 - samples/hdr_swapchain/CMakeLists.txt | 68 + .../code/main/application.cpp} | 404 +-- .../code/main/application.hpp} | 67 +- .../code/main/materials.hpp | 8 +- samples/hdr_swapchain/install_apk.bat | 21 + samples/hdr_swapchain/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 3 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 4 + .../project/android/res/values/styles.xml | 0 .../shaders/Blit.frag | 8 +- .../shaders/Blit.json | 0 .../shaders/Blit.vert | 22 +- .../shaders/Light.frag | 8 +- .../shaders/Light.json | 0 .../shaders/Light.vert | 10 +- .../shaders/NNAO.comp | 8 +- .../shaders/NNAO.json | 0 .../shaders/NNAOFilter_horiz.comp | 8 +- .../shaders/NNAOFilter_vertical.comp | 8 +- .../shaders/ObjectDeferred.frag | 8 +- .../shaders/ObjectDeferred.json | 2 +- .../shaders/ObjectDeferred.vert | 8 +- .../shaders/ObjectEmissive.frag | 8 +- .../shaders/ObjectEmissive.json | 2 +- .../shaders/ShadowGen.vert | 8 +- .../shaders/ShadowShared.h | 8 +- .../shaders/Skybox.frag | 8 +- .../shaders/Skybox.json | 0 .../shaders/Skybox.vert | 8 +- .../shaders/VarianceShadowMap.json | 2 +- .../VarianceShadowMap1024_horizontal.comp | 8 +- .../VarianceShadowMap1024_vertical.comp | 8 +- samples/hello-gltf/01_CompileShaders.bat | 39 - samples/hello-gltf/02_Install_APK.bat | 13 - .../hello-gltf/03_Adb_Logcat_HelloGLTF.bat | 11 - samples/hello-gltf/README.md | 66 - samples/hello-gltf/build.gradle | 93 - samples/hello-gltf/code/main/application.cpp | 987 ------ samples/hello-gltf/code/main/application.hpp | 190 -- samples/hello-gltf/img/screenshot.png | Bin 2692986 -> 0 bytes samples/hello-gltf/shaders/SceneOpaque.frag | 259 -- .../hello-gltf/shaders/SceneTransparent.frag | 258 -- .../CMakeLists.txt | 37 +- .../README.md | 0 .../app_config.txt | 0 .../code/main/application.cpp} | 123 +- .../code/main/application.hpp} | 23 +- samples/image_processing/install_apk.bat | 21 + samples/image_processing/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 3 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 4 + .../shaders/BlurBase-Horizontal-Ext.frag | 2 +- .../shaders/BlurBase-Horizontal.frag | 2 +- .../shaders/BlurBase-Vertical-Ext.frag | 2 +- .../shaders/BlurBase-Vertical.frag | 2 +- .../shaders/Display.frag | 2 +- .../shaders/Downsample-Ext.frag | 2 +- .../shaders/Downsample.frag | 2 +- .../shaders/VertexShader.vert | 2 +- samples/rayQueryShadows/01_CompileShaders.bat | 39 - samples/rayQueryShadows/02_Install_APK.bat | 16 - samples/rayQueryShadows/02_PrepareMedia.bat | 72 - .../rayQueryShadows/02_PrepareMediaKtx2.bat | 72 - samples/rayQueryShadows/04_Install_APK.bat | 16 - .../rayQueryShadows/05_PrepareWindowsZip.bat | 8 - samples/rayQueryShadows/06_Adb_Logcat.bat | 11 - samples/rayQueryShadows/07_InstallConfig.bat | 5 - samples/rayQueryShadows/CMakeLists.txt | 57 - samples/rayQueryShadows/README.md | 123 - samples/rayQueryShadows/app_config.txt | 6 - samples/rayQueryShadows/build.gradle | 93 - .../rayQueryShadows/code/main/materials.hpp | 141 - .../code/main/rayQueryShadows.cpp | 2702 ----------------- .../code/main/rayQueryShadows.hpp | 291 -- samples/rayQueryShadows/img/screenshot.PNG | Bin 1723195 -> 0 bytes .../project/android/res/values/strings.xml | 4 - .../shaders/AnimateBuffer.comp | 60 - samples/rayQueryShadows/shaders/Blit.frag | 135 - samples/rayQueryShadows/shaders/Blit.json | 61 - .../rayQueryShadows/shaders/Fullscreen.vert | 29 - samples/rayQueryShadows/shaders/Light.frag | 180 -- samples/rayQueryShadows/shaders/Light.json | 67 - samples/rayQueryShadows/shaders/Light.vert | 28 - .../shaders/LightRasterizedShadows.frag | 196 -- .../shaders/LightRasterizedShadows.json | 67 - .../shaders/ObjectAnimated.json | 148 - .../shaders/ObjectAnimated.vert | 80 - .../shaders/ObjectDeferred.frag | 110 - .../shaders/ObjectDeferred.json | 147 - .../shaders/ObjectDeferred.vert | 73 - .../shaders/ObjectEmissive.frag | 99 - .../shaders/ObjectEmissive.json | 98 - .../rayQueryShadows/shaders/PointLight.frag | 178 -- .../rayQueryShadows/shaders/PointLight.json | 69 - .../rayQueryShadows/shaders/PointLight.vert | 50 - .../shaders/RasterizedShadowCull.json | 96 - .../RasterizedShadowCullInstances.comp | 83 - .../shaders/RasterizedShadowCullReset.comp | 66 - .../RasterizedShadowCullWriteIndirect.comp | 107 - .../rayQueryShadows/shaders/ShadowGen.vert | 38 - .../shaders/ShadowGenAnimated.vert | 49 - samples/rayQueryShadows/shaders/ShadowRQ.comp | 136 - samples/rayQueryShadows/shaders/ShadowRQ.json | 53 - .../rayQueryShadows/shaders/ShadowRQFrag.frag | 135 - .../rayQueryShadows/shaders/ShadowRQFrag.json | 67 - samples/rayQueryShadows/shaders/ShadowRT.comp | 125 - .../rayQueryShadows/shaders/ShadowShared.h | 140 - samples/rayQueryShadows/shaders/Skybox.json | 68 - samples/rayQueryShadows/shaders/Skybox.vert | 60 - .../shaders/VarianceShadowMap.json | 55 - .../VarianceShadowMap1024_horizontal.comp | 112 - .../VarianceShadowMap1024_vertical.comp | 227 -- samples/rayReflections/01_CompileShaders.bat | 42 - samples/rayReflections/02_PrepareMedia.bat | 75 - samples/rayReflections/04_Install_APK.bat | 16 - samples/rayReflections/CMakeLists.txt | 52 - samples/rayReflections/README.md | 72 - samples/rayReflections/build.gradle | 93 - .../rayReflections/code/main/SphereCamera.cpp | 325 -- .../rayReflections/code/main/SphereCamera.h | 131 - .../rayReflections/code/main/materials.hpp | 211 -- .../code/main/rayReflections.cpp | 2564 ---------------- .../code/main/rayReflections.hpp | 312 -- samples/rayReflections/img/screenshot.PNG | Bin 255235 -> 0 bytes .../project/android/AndroidManifest.xml | 43 - .../project/android/res/values/strings.xml | 4 - .../project/android/res/values/styles.xml | 9 - samples/rayReflections/shaders/Blit.frag | 133 - samples/rayReflections/shaders/Light.frag | 721 ----- samples/rayReflections/shaders/Light.json | 63 - .../shaders/ObjectDeferred.frag | 97 - .../shaders/ObjectDeferred.json | 95 - .../shaders/ObjectDeferred.vert | 74 - samples/rayReflections/shaders/Skybox.frag | 53 - samples/rayReflections/shaders/Skybox.json | 68 - samples/rotatedCopy/01_CompileShaders.bat | 39 - samples/rotatedCopy/02_Install_APK.bat | 16 - samples/rotatedCopy/02_PrepareMedia.bat | 17 - samples/rotatedCopy/04_Install_APK.bat | 16 - samples/rotatedCopy/06_Adb_Logcat.bat | 11 - samples/rotatedCopy/CMakeLists.txt | 48 - samples/rotatedCopy/README.md | 61 - samples/rotatedCopy/build.gradle | 94 - samples/rotatedCopy/img/screenshot.PNG | Bin 3085183 -> 0 bytes .../project/android/res/values/strings.xml | 4 - .../project/android/res/values/styles.xml | 9 - samples/rotatedCopy/shaders/Object.frag | 63 - samples/rotated_copy/CMakeLists.txt | 66 + samples/rotated_copy/README.md | 6 + .../code/main/VK_QCOM_rotated_copy_commands.h | 173 ++ .../code/main/application.cpp} | 235 +- .../code/main/application.hpp} | 46 +- samples/rotated_copy/install_apk.bat | 21 + samples/rotated_copy/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 3 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 2 +- .../project/android/res/values/styles.xml | 0 .../shaders/Fullscreen.vert | 8 +- .../shaders/Object.frag | 10 +- .../shaders/Object.json | 0 .../shaders/Object.vert | 9 +- .../shaders/Tonemap.frag | 8 +- .../shaders/Tonemap.json | 0 samples/sdp-cli/CMakeLists.txt | 46 - samples/sdp-cli/README.md | 31 - samples/sdp-cli/build.gradle | 73 - samples/sdp-cli/code/main/application.cpp | 399 --- samples/sdp-cli/code/main/application.hpp | 80 - .../code/main/helpers/console_common.cpp | 91 - .../code/main/helpers/console_common.hpp | 35 - .../code/main/helpers/console_helper.cpp | 235 -- .../code/main/helpers/console_helper.hpp | 61 - .../code/main/helpers/imgui_extensions.cpp | 245 -- .../code/main/helpers/imgui_extensions.hpp | 104 - .../code/main/helpers/module_interface.cpp | 100 - .../code/main/helpers/module_interface.hpp | 100 - .../main/helpers/numerical_aggregator.hpp | 173 -- .../code/main/modules/sdp_cli/sdp_cli.cpp | 1352 --------- .../code/main/modules/sdp_cli/sdp_cli.hpp | 216 -- samples/sdp-cli/img/screenshot.png | Bin 185691 -> 0 bytes .../android/res/mipmap-hdpi/ic_launcher.png | Bin 3593 -> 0 bytes .../android/res/mipmap-mdpi/ic_launcher.png | Bin 2636 -> 0 bytes .../android/res/mipmap-xhdpi/ic_launcher.png | Bin 4926 -> 0 bytes .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin 7909 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 10652 -> 0 bytes .../project/android/res/values/strings.xml | 4 - samples/sgsr/01_CompileShaders.bat | 39 - samples/sgsr/02_Install_APK.bat | 18 - samples/sgsr/03_InstallConfig.bat | 5 - samples/sgsr/CMakeLists.txt | 27 +- samples/sgsr/build.gradle | 93 - samples/sgsr/code/main/application.cpp | 491 +-- samples/sgsr/code/main/application.hpp | 32 +- samples/sgsr/install_apk.bat | 21 + samples/sgsr/install_config.bat | 31 + .../sgsr/project/android/AndroidManifest.xml | 4 +- .../project/android/res/values/strings.xml | 2 +- samples/sgsr/{ => project}/img/screenshot.png | Bin samples/sgsr/shaders/Blit.frag | 6 +- samples/sgsr/shaders/Blit.json | 19 +- samples/sgsr/shaders/Blit.vert | 12 +- samples/sgsr/shaders/sgsr_shader.vert | 8 +- samples/sgsr/shaders/sgsr_shader_mobile.json | 19 +- samples/sgsr2/01_Install_APK.bat | 13 - samples/sgsr2/CMakeLists.txt | 41 +- samples/sgsr2/build.gradle | 93 - samples/sgsr2/code/main/application.cpp | 470 +-- samples/sgsr2/code/main/application.hpp | 37 +- samples/sgsr2/code/main/sgsr2_context.cpp | 46 +- samples/sgsr2/code/main/sgsr2_context.hpp | 23 +- .../sgsr2/code/main/sgsr2_context_frag.cpp | 164 +- .../sgsr2/code/main/sgsr2_context_frag.hpp | 32 +- samples/sgsr2/install_apk.bat | 21 + samples/sgsr2/install_config.bat | 31 + .../sgsr2/project/android/AndroidManifest.xml | 4 +- .../project/android/res/values/strings.xml | 2 +- .../sgsr2/{ => project}/img/screenshot.png | Bin .../01_CompileShaders.bat | 39 - .../shaderResolveTonemap/02_Install_APK.bat | 13 - .../shaderResolveTonemap/02_PrepareMedia.bat | 17 - .../shaderResolveTonemap/04_Install_APK.bat | 16 - .../shaderResolveTonemap/06_Adb_Logcat.bat | 11 - samples/shaderResolveTonemap/README.md | 73 - samples/shaderResolveTonemap/build.gradle | 94 - .../code/main/application.cpp | 977 ------ .../code/main/application.hpp | 118 - .../shaderResolveTonemap/img/nosubpass.PNG | Bin 29309 -> 0 bytes .../img/nosubpssstage.PNG | Bin 50738 -> 0 bytes .../shaderResolveTonemap/img/screenshot_1.PNG | Bin 914320 -> 0 bytes .../shaderResolveTonemap/img/screenshot_2.PNG | Bin 928144 -> 0 bytes samples/shaderResolveTonemap/img/subpass.PNG | Bin 35686 -> 0 bytes .../shaderResolveTonemap/img/subpassstage.PNG | Bin 47473 -> 0 bytes .../project/android/AndroidManifest.xml | 48 - .../android/res/mipmap-hdpi/ic_launcher.png | Bin 6334 -> 0 bytes .../android/res/mipmap-mdpi/ic_launcher.png | Bin 3797 -> 0 bytes .../android/res/mipmap-xhdpi/ic_launcher.png | Bin 11107 -> 0 bytes .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin 20192 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 22194 -> 0 bytes .../project/android/res/values/strings.xml | 4 - .../project/android/res/values/styles.xml | 9 - .../shaderResolveTonemap/shaders/Blit.frag | 40 - .../shaderResolveTonemap/shaders/Blit.json | 49 - .../shaders/Fullscreen.vert | 28 - .../shaderResolveTonemap/shaders/Object.json | 79 - .../shaderResolveTonemap/shaders/Tonemap.frag | 104 - .../shaderResolveTonemap/shaders/Tonemap.json | 43 - .../shaders/TonemapMsaa.frag | 100 - .../shaders/TonemapMsaa.json | 43 - .../shaders/TonemapSubpassMsaa.frag | 105 - .../shaders/TonemapSubpassMsaa.json | 43 - .../TonemapSubpassShaderResolve1x.frag | 98 - .../TonemapSubpassShaderResolve1x.json | 43 - .../TonemapSubpassShaderResolve2x.frag | 103 - .../TonemapSubpassShaderResolve2x.json | 43 - .../TonemapSubpassShaderResolve4x.frag | 100 - .../TonemapSubpassShaderResolve4x.json | 43 - samples/sub_pass/CMakeLists.txt | 66 + samples/{SubPass => sub_pass}/README.md | 0 .../code/main/application.cpp} | 306 +- .../code/main/application.hpp} | 36 +- samples/sub_pass/install_apk.bat | 21 + samples/sub_pass/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 4 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 2 +- .../project}/img/nosubpass.PNG | Bin .../project}/img/nosubpassstage.PNG | Bin .../project}/img/screenshot.PNG | Bin .../project}/img/subpass.PNG | Bin .../project}/img/subpassstage.PNG | Bin .../{SubPass => sub_pass}/shaders/Blit.frag | 0 .../{SubPass => sub_pass}/shaders/Blit.json | 0 .../shaders/Fullscreen.vert | 0 .../{SubPass => sub_pass}/shaders/Object.frag | 0 .../{SubPass => sub_pass}/shaders/Object.json | 0 .../{SubPass => sub_pass}/shaders/Object.vert | 0 .../shaders/Tonemap.frag | 0 .../shaders/Tonemap.json | 0 .../shaders/TonemapMsaa.frag | 0 .../shaders/TonemapMsaa.json | 0 .../shaders/TonemapSubpassMsaa.frag | 0 .../shaders/TonemapSubpassMsaa.json | 0 .../TonemapSubpassShaderResolve1x.frag | 0 .../TonemapSubpassShaderResolve1x.json | 0 .../TonemapSubpassShaderResolve2x.frag | 0 .../TonemapSubpassShaderResolve2x.json | 0 .../TonemapSubpassShaderResolve4x.frag | 0 .../TonemapSubpassShaderResolve4x.json | 0 .../shaders/shaderSchema.json | 0 .../CMakeLists.txt | 40 +- samples/tile_memory/README.md | 41 + samples/tile_memory/code/main/application.cpp | 1686 ++++++++++ samples/tile_memory/code/main/application.hpp | 310 ++ samples/tile_memory/install_apk.bat | 21 + samples/tile_memory/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 5 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 2 +- .../tile_memory/project/img/screenshot.png | Bin 0 -> 2811228 bytes .../shaders/Blit.frag | 16 +- .../shaders/Blit.json | 2 +- .../shaders/Blit.vert | 0 .../tile_memory/shaders/DeferredLight.frag | 215 ++ .../tile_memory/shaders/DeferredLight.json | 94 + .../shaders/DeferredLight.vert} | 0 samples/tile_memory/shaders/LightCulling.comp | 164 + .../shaders/LightCulling.json} | 24 +- .../shaders/Scene.vert | 0 samples/tile_memory/shaders/SceneOpaque.frag | 93 + .../shaders/SceneOpaque.json | 6 +- .../tile_memory/shaders/SceneTransparent.frag | 93 + .../shaders/SceneTransparent.json | 6 +- samples/tile_shading/CMakeLists.txt | 66 + samples/tile_shading/README.md | 37 + .../tile_shading/code/main/application.cpp | 2167 +++++++++++++ .../tile_shading/code/main/application.hpp | 275 ++ samples/tile_shading/install_apk.bat | 21 + samples/tile_shading/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 6 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 4 + .../tile_shading/project/img/screenshot.png | Bin 0 -> 2811228 bytes samples/tile_shading/shaders/Blit.frag | 65 + .../shaders/Blit.json | 14 +- .../shaders/Blit.vert | 2 - .../tile_shading/shaders/DeferredLight.frag | 202 ++ .../tile_shading/shaders/DeferredLight.json | 94 + .../shaders/DeferredLight.vert} | 6 +- .../shaders/DeferredLightTileShading.frag | 202 ++ .../shaders/DeferredLightTileShading.json | 94 + .../tile_shading/shaders/LightCulling.comp | 151 + .../shaders/LightCulling.json} | 30 +- .../shaders/LightCullingTileShading.comp | 153 + .../shaders/LightCullingTileShading.json | 47 + .../LightCullingTileShadingAreaDispatch.comp | 174 ++ .../LightCullingTileShadingAreaDispatch.json | 47 + .../shaders/Scene.vert} | 28 +- samples/tile_shading/shaders/SceneOpaque.frag | 93 + samples/tile_shading/shaders/SceneOpaque.json | 102 + .../shaders/SceneTransparent.frag | 93 + .../shaders/SceneTransparent.json | 101 + tests/CMakeLists.txt | 29 + {samples => tests}/empty/CMakeLists.txt | 31 +- .../empty/code/main/application.cpp | 3 +- .../empty/code/main/application.hpp | 2 +- .../empty/project/android/AndroidManifest.xml | 4 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 2 +- tests/framework_test_vulkan/CMakeLists.txt | 64 + tests/framework_test_vulkan/README.md | 15 + tests/framework_test_vulkan/app_config.txt | 9 + .../code/main/Materials.h | 87 + .../code/main/application.cpp | 1007 ++++++ .../code/main/application.hpp | 102 + tests/framework_test_vulkan/install_apk.bat | 21 + .../framework_test_vulkan/install_config.bat | 31 + .../project/android/AndroidManifest.xml | 4 +- .../android/res/mipmap-hdpi/ic_launcher.png | Bin .../android/res/mipmap-mdpi/ic_launcher.png | Bin .../android/res/mipmap-xhdpi/ic_launcher.png | Bin .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher.png | Bin .../project/android/res/values/strings.xml | 4 + .../framework_test_vulkan/shaders/Debug.frag | 95 + .../framework_test_vulkan/shaders/Debug.vert | 23 +- 829 files changed, 37107 insertions(+), 35652 deletions(-) delete mode 100644 .gitmodules delete mode 100644 01_BuildAndroid.bat create mode 100644 01_Configure.bat create mode 100644 01_Configure.sh create mode 100644 02_Build.bat create mode 100644 02_Build.sh delete mode 100644 02_BuildWindows.bat delete mode 100644 03_BuildTools.bat create mode 100644 Config.txt create mode 100644 Configure.py rename LICENSE => LICENSE.txt (100%) delete mode 160000 assets create mode 100644 framework/android/AndroidManifest.xml create mode 100644 framework/cmake/AddShadersDir.cmake create mode 100644 framework/cmake/CompileAlias.cmake create mode 100644 framework/cmake/CompileShadersHelper.cmake create mode 100644 framework/cmake/ExternalDependencies.cmake create mode 100644 framework/cmake/KTX-Software.diff create mode 100644 framework/cmake/ModelPackager.cmake create mode 100644 framework/cmake/TexturePackager.cmake create mode 100644 framework/code/allocator/threadBufferResource.hpp create mode 100644 framework/code/allocator/threadBufferResourceHelper.hpp create mode 100644 framework/code/allocator/threadManagedBufferResourceAllocator.hpp create mode 100644 framework/code/allocator/threadMonotonicBufferResourceAllocator.hpp create mode 100644 framework/code/animation/skin.cpp create mode 100644 framework/code/animation/skin.hpp create mode 100644 framework/code/animation/skinData.cpp create mode 100644 framework/code/animation/skinData.hpp create mode 100644 framework/code/animation/skinGltfLoader.cpp create mode 100644 framework/code/animation/skinGltfLoader.hpp create mode 100644 framework/code/dx12/commandList.cpp create mode 100644 framework/code/dx12/commandList.hpp create mode 100644 framework/code/dx12/descriptorHeapManager.cpp create mode 100644 framework/code/dx12/descriptorHeapManager.hpp create mode 100644 framework/code/dx12/dx12.cpp create mode 100644 framework/code/dx12/dx12.hpp create mode 100644 framework/code/dx12/meshObject.cpp create mode 100644 framework/code/dx12/renderPass.cpp create mode 100644 framework/code/dx12/renderPass.hpp create mode 100644 framework/code/dx12/renderTarget.cpp create mode 100644 framework/code/dx12/renderTarget.hpp create mode 100644 framework/code/graphicsApi/pipeline.hpp create mode 100644 framework/code/graphicsApi/renderContext.hpp create mode 100644 framework/code/graphicsApi/renderPass.hpp create mode 100644 framework/code/graphicsApi/renderTarget.hpp create mode 100644 framework/code/gui/imguiDx12.cpp create mode 100644 framework/code/gui/imguiDx12.hpp create mode 100644 framework/code/gui/linux/imguiLinux.cpp create mode 100644 framework/code/gui/linux/imguiLinux.hpp create mode 100644 framework/code/helper/zbufferReduce.cpp create mode 100644 framework/code/helper/zbufferReduce.hpp create mode 100644 framework/code/main/applicationHelperBaseDx12.cpp create mode 100644 framework/code/main/applicationHelperBaseDx12.hpp create mode 100644 framework/code/main/framework_static_empty.cpp create mode 100644 framework/code/main/linux/linuxMain.cpp delete mode 100644 framework/code/material/drawable.cpp create mode 100644 framework/code/material/drawableLoader.cpp create mode 100644 framework/code/material/drawableLoader.hpp create mode 100644 framework/code/material/dx12/computable.cpp create mode 100644 framework/code/material/dx12/computable.hpp create mode 100644 framework/code/material/dx12/descriptorSetLayout.cpp create mode 100644 framework/code/material/dx12/descriptorSetLayout.hpp create mode 100644 framework/code/material/dx12/drawableDx12.cpp create mode 100644 framework/code/material/dx12/drawableDx12.hpp create mode 100644 framework/code/material/dx12/material.cpp create mode 100644 framework/code/material/dx12/material.hpp create mode 100644 framework/code/material/dx12/materialManager.cpp create mode 100644 framework/code/material/dx12/materialManager.hpp create mode 100644 framework/code/material/dx12/materialPass.cpp create mode 100644 framework/code/material/dx12/materialPass.hpp create mode 100644 framework/code/material/dx12/pipeline.cpp create mode 100644 framework/code/material/dx12/pipeline.hpp create mode 100644 framework/code/material/dx12/pipelineLayout.cpp create mode 100644 framework/code/material/dx12/pipelineLayout.hpp create mode 100644 framework/code/material/dx12/pipelineVertexInputState.cpp create mode 100644 framework/code/material/dx12/pipelineVertexInputState.hpp create mode 100644 framework/code/material/dx12/shader.hpp create mode 100644 framework/code/material/dx12/shaderModule.cpp create mode 100644 framework/code/material/dx12/shaderModule.hpp create mode 100644 framework/code/material/dx12/specializationConstantsLayout.hpp create mode 100644 framework/code/material/dx12/vertexDescription.cpp create mode 100644 framework/code/material/dx12/vertexDescription.hpp create mode 100644 framework/code/material/materialPass.hpp create mode 100644 framework/code/material/materialT.hpp create mode 100644 framework/code/material/pipeline.hpp create mode 100644 framework/code/material/specializationConstants.hpp create mode 100644 framework/code/material/vulkan/computable.cpp create mode 100644 framework/code/material/vulkan/computable.hpp rename framework/code/material/{ => vulkan}/descriptorSetLayout.cpp (79%) create mode 100644 framework/code/material/vulkan/descriptorSetLayout.hpp create mode 100644 framework/code/material/vulkan/drawable.cpp create mode 100644 framework/code/material/vulkan/drawable.hpp create mode 100644 framework/code/material/vulkan/material.cpp rename framework/code/material/{ => vulkan}/materialManager.cpp (68%) rename samples/sdp-cli/code/main/helpers/numerical_aggregator.cpp => framework/code/material/vulkan/materialManager.hpp (84%) create mode 100644 framework/code/material/vulkan/materialPass.cpp create mode 100644 framework/code/material/vulkan/materialPass.hpp create mode 100644 framework/code/material/vulkan/pipeline.cpp create mode 100644 framework/code/material/vulkan/pipeline.hpp create mode 100644 framework/code/material/vulkan/shaderManager.hpp create mode 100644 framework/code/material/vulkan/specializationConstants.cpp create mode 100644 framework/code/material/vulkan/specializationConstants.hpp create mode 100644 framework/code/memory/dx12/bufferObject.cpp create mode 100644 framework/code/memory/dx12/bufferObject.hpp create mode 100644 framework/code/memory/dx12/indexBufferObject.cpp create mode 100644 framework/code/memory/dx12/indexBufferObject.hpp create mode 100644 framework/code/memory/dx12/memoryManager.cpp create mode 100644 framework/code/memory/dx12/memoryManager.hpp create mode 100644 framework/code/memory/dx12/memoryMapped.hpp create mode 100644 framework/code/memory/dx12/uniform.cpp create mode 100644 framework/code/memory/dx12/uniform.hpp create mode 100644 framework/code/memory/dx12/vertexBufferObject.cpp create mode 100644 framework/code/memory/dx12/vertexBufferObject.hpp create mode 100644 framework/code/rayTracing/accelerationStructure.hpp create mode 100644 framework/code/system/linux/linuxAssetManager.cpp create mode 100644 framework/code/texture/dx12/loaderKtx.cpp create mode 100644 framework/code/texture/dx12/loaderKtx.hpp create mode 100644 framework/code/texture/dx12/sampler.cpp create mode 100644 framework/code/texture/dx12/sampler.hpp create mode 100644 framework/code/texture/dx12/texture.cpp create mode 100644 framework/code/texture/dx12/texture.hpp create mode 100644 framework/code/texture/dx12/textureManager.cpp create mode 100644 framework/code/texture/dx12/textureManager.hpp create mode 100644 framework/code/texture/sampler.cpp create mode 100644 framework/code/texture/sampler.hpp delete mode 100644 framework/code/texture/vulkan/imageWrapper.cpp delete mode 100644 framework/code/texture/vulkan/imageWrapper.hpp create mode 100644 framework/code/texture/vulkan/sampler.cpp create mode 100644 framework/code/texture/vulkan/sampler.hpp create mode 100644 framework/code/vulkan/extensionLib.cpp create mode 100644 framework/code/vulkan/extensionLib.hpp create mode 100644 framework/code/vulkan/framebuffer.cpp create mode 100644 framework/code/vulkan/framebuffer.hpp create mode 100644 framework/code/vulkan/refHandle.hpp create mode 100644 framework/code/vulkan/refHandleDestroyFuncs.hpp create mode 100644 framework/code/vulkan/renderContext.cpp create mode 100644 framework/code/vulkan/renderContext.hpp create mode 100644 framework/code/vulkan/renderPass.cpp create mode 100644 framework/code/vulkan/renderPass.hpp create mode 100644 framework/code/vulkan/semaphore.cpp create mode 100644 framework/code/vulkan/semaphore.hpp rename framework/code/vulkanRT/{extensionHelpersRT.hpp => extensionLibRT.hpp} (82%) create mode 100644 framework/external/.gitignore delete mode 160000 framework/external/KTX-Software delete mode 160000 framework/external/Vulkan-Headers delete mode 160000 framework/external/VulkanMemoryAllocator delete mode 160000 framework/external/eigen delete mode 160000 framework/external/glm delete mode 160000 framework/external/imgui delete mode 160000 framework/external/implot delete mode 160000 framework/external/json delete mode 160000 framework/external/portable-file-dialogs delete mode 160000 framework/external/tinygltf delete mode 160000 framework/external/tinyobjloader delete mode 100644 project/android/cmake/AddShadersDir.cmake delete mode 100644 project/android/cmake/CompileAlias.cmake delete mode 100644 project/android/cmake/ModelPackager.cmake delete mode 100644 project/android/cmake/TexturePackager.cmake create mode 100644 project/android/jniLibs/arm64-v8a/README.md create mode 100644 project/linux/CMakeLists.txt create mode 100644 project/linux/build.sh create mode 100644 project/linux/cmake/FrameworkApplicationHelper.cmake create mode 100644 project/tools/.gitignore create mode 100644 project/tools/build.sh create mode 100644 project/tools/clean.bat create mode 100644 project/windows/CmakePresets.json create mode 100644 project/windows/clean.bat delete mode 100644 project/windows/cmake/AddShadersDir.cmake delete mode 100644 project/windows/cmake/CompileAlias.cmake delete mode 100644 project/windows/cmake/ModelPackager.cmake delete mode 100644 project/windows/cmake/TexturePackager.cmake delete mode 100644 samples/BloomImageProcessing/01_Install_APK.bat delete mode 100644 samples/BloomImageProcessing/02_InstallConfig.bat delete mode 100644 samples/BloomImageProcessing/CMakeLists.txt delete mode 100644 samples/BloomImageProcessing/build.gradle delete mode 100644 samples/BloomImageProcessing/project/android/res/values/strings.xml delete mode 100644 samples/BloomImageProcessing/shaders/BlurBase.frag create mode 100644 samples/CMakeLists.txt delete mode 100644 samples/SubPass/01_CompileShaders.bat delete mode 100644 samples/SubPass/02_Install_APK.bat delete mode 100644 samples/SubPass/CMakeLists.txt delete mode 100644 samples/SubPass/build.gradle delete mode 100644 samples/empty/build.gradle delete mode 100644 samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat delete mode 100644 samples/graph_pipelines/CompileShaders.bat delete mode 100644 samples/graph_pipelines/build.gradle create mode 100644 samples/graph_pipelines/install_config.bat delete mode 100644 samples/hdrSwapchain/01_CompileShaders.bat delete mode 100644 samples/hdrSwapchain/02_Install_APK.bat delete mode 100644 samples/hdrSwapchain/02_PrepareMedia.bat delete mode 100644 samples/hdrSwapchain/04_Install_APK.bat delete mode 100644 samples/hdrSwapchain/06_Adb_Logcat.bat delete mode 100644 samples/hdrSwapchain/CMakeLists.txt delete mode 100644 samples/hdrSwapchain/README.md delete mode 100644 samples/hdrSwapchain/build.gradle delete mode 100644 samples/hdrSwapchain/img/screenshot_1.PNG delete mode 100644 samples/hdrSwapchain/img/screenshot_2.PNG delete mode 100644 samples/hdrSwapchain/shaders/ShadowShared.h delete mode 100644 samples/hdrSwapchain/shaders/Skybox.frag create mode 100644 samples/hdr_swapchain/CMakeLists.txt rename samples/{hdrSwapchain/code/main/hdrSwapchain.cpp => hdr_swapchain/code/main/application.cpp} (82%) rename samples/{hdrSwapchain/code/main/hdrSwapchain.hpp => hdr_swapchain/code/main/application.hpp} (78%) rename samples/{hdrSwapchain => hdr_swapchain}/code/main/materials.hpp (91%) create mode 100644 samples/hdr_swapchain/install_apk.bat create mode 100644 samples/hdr_swapchain/install_config.bat rename samples/{rotatedCopy => hdr_swapchain}/project/android/AndroidManifest.xml (97%) rename samples/{BloomImageProcessing => hdr_swapchain}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename samples/{BloomImageProcessing => hdr_swapchain}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename samples/{BloomImageProcessing => hdr_swapchain}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename samples/{BloomImageProcessing => hdr_swapchain}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename samples/{BloomImageProcessing => hdr_swapchain}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) create mode 100644 samples/hdr_swapchain/project/android/res/values/strings.xml rename samples/{hdrSwapchain => hdr_swapchain}/project/android/res/values/styles.xml (100%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/Blit.frag (94%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/Blit.json (100%) rename samples/{rayQueryShadows => hdr_swapchain}/shaders/Blit.vert (52%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/Light.frag (96%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/Light.json (100%) rename samples/{rayReflections => hdr_swapchain}/shaders/Light.vert (81%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/NNAO.comp (96%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/NNAO.json (100%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/NNAOFilter_horiz.comp (93%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/NNAOFilter_vertical.comp (93%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/ObjectDeferred.frag (93%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/ObjectDeferred.json (97%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/ObjectDeferred.vert (91%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/ObjectEmissive.frag (90%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/ObjectEmissive.json (96%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/ShadowGen.vert (80%) rename samples/{rayReflections => hdr_swapchain}/shaders/ShadowShared.h (93%) rename samples/{rayQueryShadows => hdr_swapchain}/shaders/Skybox.frag (85%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/Skybox.json (100%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/Skybox.vert (88%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/VarianceShadowMap.json (93%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/VarianceShadowMap1024_horizontal.comp (91%) rename samples/{hdrSwapchain => hdr_swapchain}/shaders/VarianceShadowMap1024_vertical.comp (90%) delete mode 100644 samples/hello-gltf/01_CompileShaders.bat delete mode 100644 samples/hello-gltf/02_Install_APK.bat delete mode 100644 samples/hello-gltf/03_Adb_Logcat_HelloGLTF.bat delete mode 100644 samples/hello-gltf/README.md delete mode 100644 samples/hello-gltf/build.gradle delete mode 100644 samples/hello-gltf/code/main/application.cpp delete mode 100644 samples/hello-gltf/code/main/application.hpp delete mode 100644 samples/hello-gltf/img/screenshot.png delete mode 100644 samples/hello-gltf/shaders/SceneOpaque.frag delete mode 100644 samples/hello-gltf/shaders/SceneTransparent.frag rename samples/{shaderResolveTonemap => image_processing}/CMakeLists.txt (52%) rename samples/{BloomImageProcessing => image_processing}/README.md (100%) rename samples/{BloomImageProcessing => image_processing}/app_config.txt (100%) rename samples/{BloomImageProcessing/code/main/bloom-image-processing.cpp => image_processing/code/main/application.cpp} (86%) rename samples/{BloomImageProcessing/code/main/bloom-image-processing.hpp => image_processing/code/main/application.hpp} (91%) create mode 100644 samples/image_processing/install_apk.bat create mode 100644 samples/image_processing/install_config.bat rename samples/{SubPass => image_processing}/project/android/AndroidManifest.xml (98%) rename samples/{SubPass => image_processing}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename samples/{SubPass => image_processing}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename samples/{SubPass => image_processing}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename samples/{SubPass => image_processing}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename samples/{SubPass => image_processing}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) create mode 100644 samples/image_processing/project/android/res/values/strings.xml rename samples/{BloomImageProcessing => image_processing}/shaders/BlurBase-Horizontal-Ext.frag (94%) rename samples/{BloomImageProcessing => image_processing}/shaders/BlurBase-Horizontal.frag (94%) rename samples/{BloomImageProcessing => image_processing}/shaders/BlurBase-Vertical-Ext.frag (94%) rename samples/{BloomImageProcessing => image_processing}/shaders/BlurBase-Vertical.frag (94%) rename samples/{BloomImageProcessing => image_processing}/shaders/Display.frag (94%) rename samples/{BloomImageProcessing => image_processing}/shaders/Downsample-Ext.frag (94%) rename samples/{BloomImageProcessing => image_processing}/shaders/Downsample.frag (96%) rename samples/{BloomImageProcessing => image_processing}/shaders/VertexShader.vert (93%) delete mode 100644 samples/rayQueryShadows/01_CompileShaders.bat delete mode 100644 samples/rayQueryShadows/02_Install_APK.bat delete mode 100644 samples/rayQueryShadows/02_PrepareMedia.bat delete mode 100644 samples/rayQueryShadows/02_PrepareMediaKtx2.bat delete mode 100644 samples/rayQueryShadows/04_Install_APK.bat delete mode 100644 samples/rayQueryShadows/05_PrepareWindowsZip.bat delete mode 100644 samples/rayQueryShadows/06_Adb_Logcat.bat delete mode 100644 samples/rayQueryShadows/07_InstallConfig.bat delete mode 100644 samples/rayQueryShadows/CMakeLists.txt delete mode 100644 samples/rayQueryShadows/README.md delete mode 100644 samples/rayQueryShadows/app_config.txt delete mode 100644 samples/rayQueryShadows/build.gradle delete mode 100644 samples/rayQueryShadows/code/main/materials.hpp delete mode 100644 samples/rayQueryShadows/code/main/rayQueryShadows.cpp delete mode 100644 samples/rayQueryShadows/code/main/rayQueryShadows.hpp delete mode 100644 samples/rayQueryShadows/img/screenshot.PNG delete mode 100644 samples/rayQueryShadows/project/android/res/values/strings.xml delete mode 100644 samples/rayQueryShadows/shaders/AnimateBuffer.comp delete mode 100644 samples/rayQueryShadows/shaders/Blit.frag delete mode 100644 samples/rayQueryShadows/shaders/Blit.json delete mode 100644 samples/rayQueryShadows/shaders/Fullscreen.vert delete mode 100644 samples/rayQueryShadows/shaders/Light.frag delete mode 100644 samples/rayQueryShadows/shaders/Light.json delete mode 100644 samples/rayQueryShadows/shaders/Light.vert delete mode 100644 samples/rayQueryShadows/shaders/LightRasterizedShadows.frag delete mode 100644 samples/rayQueryShadows/shaders/LightRasterizedShadows.json delete mode 100644 samples/rayQueryShadows/shaders/ObjectAnimated.json delete mode 100644 samples/rayQueryShadows/shaders/ObjectAnimated.vert delete mode 100644 samples/rayQueryShadows/shaders/ObjectDeferred.frag delete mode 100644 samples/rayQueryShadows/shaders/ObjectDeferred.json delete mode 100644 samples/rayQueryShadows/shaders/ObjectDeferred.vert delete mode 100644 samples/rayQueryShadows/shaders/ObjectEmissive.frag delete mode 100644 samples/rayQueryShadows/shaders/ObjectEmissive.json delete mode 100644 samples/rayQueryShadows/shaders/PointLight.frag delete mode 100644 samples/rayQueryShadows/shaders/PointLight.json delete mode 100644 samples/rayQueryShadows/shaders/PointLight.vert delete mode 100644 samples/rayQueryShadows/shaders/RasterizedShadowCull.json delete mode 100644 samples/rayQueryShadows/shaders/RasterizedShadowCullInstances.comp delete mode 100644 samples/rayQueryShadows/shaders/RasterizedShadowCullReset.comp delete mode 100644 samples/rayQueryShadows/shaders/RasterizedShadowCullWriteIndirect.comp delete mode 100644 samples/rayQueryShadows/shaders/ShadowGen.vert delete mode 100644 samples/rayQueryShadows/shaders/ShadowGenAnimated.vert delete mode 100644 samples/rayQueryShadows/shaders/ShadowRQ.comp delete mode 100644 samples/rayQueryShadows/shaders/ShadowRQ.json delete mode 100644 samples/rayQueryShadows/shaders/ShadowRQFrag.frag delete mode 100644 samples/rayQueryShadows/shaders/ShadowRQFrag.json delete mode 100644 samples/rayQueryShadows/shaders/ShadowRT.comp delete mode 100644 samples/rayQueryShadows/shaders/ShadowShared.h delete mode 100644 samples/rayQueryShadows/shaders/Skybox.json delete mode 100644 samples/rayQueryShadows/shaders/Skybox.vert delete mode 100644 samples/rayQueryShadows/shaders/VarianceShadowMap.json delete mode 100644 samples/rayQueryShadows/shaders/VarianceShadowMap1024_horizontal.comp delete mode 100644 samples/rayQueryShadows/shaders/VarianceShadowMap1024_vertical.comp delete mode 100644 samples/rayReflections/01_CompileShaders.bat delete mode 100644 samples/rayReflections/02_PrepareMedia.bat delete mode 100644 samples/rayReflections/04_Install_APK.bat delete mode 100644 samples/rayReflections/CMakeLists.txt delete mode 100644 samples/rayReflections/README.md delete mode 100644 samples/rayReflections/build.gradle delete mode 100644 samples/rayReflections/code/main/SphereCamera.cpp delete mode 100644 samples/rayReflections/code/main/SphereCamera.h delete mode 100644 samples/rayReflections/code/main/materials.hpp delete mode 100644 samples/rayReflections/code/main/rayReflections.cpp delete mode 100644 samples/rayReflections/code/main/rayReflections.hpp delete mode 100644 samples/rayReflections/img/screenshot.PNG delete mode 100644 samples/rayReflections/project/android/AndroidManifest.xml delete mode 100644 samples/rayReflections/project/android/res/values/strings.xml delete mode 100644 samples/rayReflections/project/android/res/values/styles.xml delete mode 100644 samples/rayReflections/shaders/Blit.frag delete mode 100644 samples/rayReflections/shaders/Light.frag delete mode 100644 samples/rayReflections/shaders/Light.json delete mode 100644 samples/rayReflections/shaders/ObjectDeferred.frag delete mode 100644 samples/rayReflections/shaders/ObjectDeferred.json delete mode 100644 samples/rayReflections/shaders/ObjectDeferred.vert delete mode 100644 samples/rayReflections/shaders/Skybox.frag delete mode 100644 samples/rayReflections/shaders/Skybox.json delete mode 100644 samples/rotatedCopy/01_CompileShaders.bat delete mode 100644 samples/rotatedCopy/02_Install_APK.bat delete mode 100644 samples/rotatedCopy/02_PrepareMedia.bat delete mode 100644 samples/rotatedCopy/04_Install_APK.bat delete mode 100644 samples/rotatedCopy/06_Adb_Logcat.bat delete mode 100644 samples/rotatedCopy/CMakeLists.txt delete mode 100644 samples/rotatedCopy/README.md delete mode 100644 samples/rotatedCopy/build.gradle delete mode 100644 samples/rotatedCopy/img/screenshot.PNG delete mode 100644 samples/rotatedCopy/project/android/res/values/strings.xml delete mode 100644 samples/rotatedCopy/project/android/res/values/styles.xml delete mode 100644 samples/rotatedCopy/shaders/Object.frag create mode 100644 samples/rotated_copy/CMakeLists.txt create mode 100644 samples/rotated_copy/README.md create mode 100644 samples/rotated_copy/code/main/VK_QCOM_rotated_copy_commands.h rename samples/{rotatedCopy/code/main/rotatedCopy.cpp => rotated_copy/code/main/application.cpp} (75%) rename samples/{rotatedCopy/code/main/rotatedCopy.hpp => rotated_copy/code/main/application.hpp} (66%) create mode 100644 samples/rotated_copy/install_apk.bat create mode 100644 samples/rotated_copy/install_config.bat rename samples/{rayQueryShadows => rotated_copy}/project/android/AndroidManifest.xml (97%) rename samples/{hdrSwapchain => rotated_copy}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename samples/{hdrSwapchain => rotated_copy}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename samples/{hdrSwapchain => rotated_copy}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename samples/{hdrSwapchain => rotated_copy}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename samples/{hdrSwapchain => rotated_copy}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename samples/{hdrSwapchain => rotated_copy}/project/android/res/values/strings.xml (54%) rename samples/{rayQueryShadows => rotated_copy}/project/android/res/values/styles.xml (100%) rename samples/{rotatedCopy => rotated_copy}/shaders/Fullscreen.vert (75%) rename samples/{shaderResolveTonemap => rotated_copy}/shaders/Object.frag (86%) rename samples/{rotatedCopy => rotated_copy}/shaders/Object.json (100%) rename samples/{rotatedCopy => rotated_copy}/shaders/Object.vert (88%) rename samples/{rotatedCopy => rotated_copy}/shaders/Tonemap.frag (92%) rename samples/{rotatedCopy => rotated_copy}/shaders/Tonemap.json (100%) delete mode 100644 samples/sdp-cli/CMakeLists.txt delete mode 100644 samples/sdp-cli/README.md delete mode 100644 samples/sdp-cli/build.gradle delete mode 100644 samples/sdp-cli/code/main/application.cpp delete mode 100644 samples/sdp-cli/code/main/application.hpp delete mode 100644 samples/sdp-cli/code/main/helpers/console_common.cpp delete mode 100644 samples/sdp-cli/code/main/helpers/console_common.hpp delete mode 100644 samples/sdp-cli/code/main/helpers/console_helper.cpp delete mode 100644 samples/sdp-cli/code/main/helpers/console_helper.hpp delete mode 100644 samples/sdp-cli/code/main/helpers/imgui_extensions.cpp delete mode 100644 samples/sdp-cli/code/main/helpers/imgui_extensions.hpp delete mode 100644 samples/sdp-cli/code/main/helpers/module_interface.cpp delete mode 100644 samples/sdp-cli/code/main/helpers/module_interface.hpp delete mode 100644 samples/sdp-cli/code/main/helpers/numerical_aggregator.hpp delete mode 100644 samples/sdp-cli/code/main/modules/sdp_cli/sdp_cli.cpp delete mode 100644 samples/sdp-cli/code/main/modules/sdp_cli/sdp_cli.hpp delete mode 100644 samples/sdp-cli/img/screenshot.png delete mode 100644 samples/sdp-cli/project/android/res/mipmap-hdpi/ic_launcher.png delete mode 100644 samples/sdp-cli/project/android/res/mipmap-mdpi/ic_launcher.png delete mode 100644 samples/sdp-cli/project/android/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 samples/sdp-cli/project/android/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 samples/sdp-cli/project/android/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 samples/sdp-cli/project/android/res/values/strings.xml delete mode 100644 samples/sgsr/01_CompileShaders.bat delete mode 100644 samples/sgsr/02_Install_APK.bat delete mode 100644 samples/sgsr/03_InstallConfig.bat delete mode 100644 samples/sgsr/build.gradle create mode 100644 samples/sgsr/install_apk.bat create mode 100644 samples/sgsr/install_config.bat rename samples/sgsr/{ => project}/img/screenshot.png (100%) delete mode 100644 samples/sgsr2/01_Install_APK.bat delete mode 100644 samples/sgsr2/build.gradle create mode 100644 samples/sgsr2/install_apk.bat create mode 100644 samples/sgsr2/install_config.bat rename samples/sgsr2/{ => project}/img/screenshot.png (100%) delete mode 100644 samples/shaderResolveTonemap/01_CompileShaders.bat delete mode 100644 samples/shaderResolveTonemap/02_Install_APK.bat delete mode 100644 samples/shaderResolveTonemap/02_PrepareMedia.bat delete mode 100644 samples/shaderResolveTonemap/04_Install_APK.bat delete mode 100644 samples/shaderResolveTonemap/06_Adb_Logcat.bat delete mode 100644 samples/shaderResolveTonemap/README.md delete mode 100644 samples/shaderResolveTonemap/build.gradle delete mode 100644 samples/shaderResolveTonemap/code/main/application.cpp delete mode 100644 samples/shaderResolveTonemap/code/main/application.hpp delete mode 100644 samples/shaderResolveTonemap/img/nosubpass.PNG delete mode 100644 samples/shaderResolveTonemap/img/nosubpssstage.PNG delete mode 100644 samples/shaderResolveTonemap/img/screenshot_1.PNG delete mode 100644 samples/shaderResolveTonemap/img/screenshot_2.PNG delete mode 100644 samples/shaderResolveTonemap/img/subpass.PNG delete mode 100644 samples/shaderResolveTonemap/img/subpassstage.PNG delete mode 100644 samples/shaderResolveTonemap/project/android/AndroidManifest.xml delete mode 100644 samples/shaderResolveTonemap/project/android/res/mipmap-hdpi/ic_launcher.png delete mode 100644 samples/shaderResolveTonemap/project/android/res/mipmap-mdpi/ic_launcher.png delete mode 100644 samples/shaderResolveTonemap/project/android/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 samples/shaderResolveTonemap/project/android/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 samples/shaderResolveTonemap/project/android/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 samples/shaderResolveTonemap/project/android/res/values/strings.xml delete mode 100644 samples/shaderResolveTonemap/project/android/res/values/styles.xml delete mode 100644 samples/shaderResolveTonemap/shaders/Blit.frag delete mode 100644 samples/shaderResolveTonemap/shaders/Blit.json delete mode 100644 samples/shaderResolveTonemap/shaders/Fullscreen.vert delete mode 100644 samples/shaderResolveTonemap/shaders/Object.json delete mode 100644 samples/shaderResolveTonemap/shaders/Tonemap.frag delete mode 100644 samples/shaderResolveTonemap/shaders/Tonemap.json delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapMsaa.frag delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapMsaa.json delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassMsaa.frag delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassMsaa.json delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassShaderResolve1x.frag delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassShaderResolve1x.json delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassShaderResolve2x.frag delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassShaderResolve2x.json delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassShaderResolve4x.frag delete mode 100644 samples/shaderResolveTonemap/shaders/TonemapSubpassShaderResolve4x.json create mode 100644 samples/sub_pass/CMakeLists.txt rename samples/{SubPass => sub_pass}/README.md (100%) rename samples/{SubPass/code/main/SubPass.cpp => sub_pass/code/main/application.cpp} (75%) rename samples/{SubPass/code/main/SubPass.hpp => sub_pass/code/main/application.hpp} (70%) create mode 100644 samples/sub_pass/install_apk.bat create mode 100644 samples/sub_pass/install_config.bat rename samples/{hello-gltf => sub_pass}/project/android/AndroidManifest.xml (98%) rename samples/{hello-gltf => sub_pass}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename samples/{hello-gltf => sub_pass}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename samples/{hello-gltf => sub_pass}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename samples/{hello-gltf => sub_pass}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename samples/{hello-gltf => sub_pass}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename samples/{hello-gltf => sub_pass}/project/android/res/values/strings.xml (56%) rename samples/{SubPass => sub_pass/project}/img/nosubpass.PNG (100%) rename samples/{SubPass => sub_pass/project}/img/nosubpassstage.PNG (100%) rename samples/{SubPass => sub_pass/project}/img/screenshot.PNG (100%) rename samples/{SubPass => sub_pass/project}/img/subpass.PNG (100%) rename samples/{SubPass => sub_pass/project}/img/subpassstage.PNG (100%) rename samples/{SubPass => sub_pass}/shaders/Blit.frag (100%) rename samples/{SubPass => sub_pass}/shaders/Blit.json (100%) rename samples/{SubPass => sub_pass}/shaders/Fullscreen.vert (100%) rename samples/{SubPass => sub_pass}/shaders/Object.frag (100%) rename samples/{SubPass => sub_pass}/shaders/Object.json (100%) rename samples/{SubPass => sub_pass}/shaders/Object.vert (100%) rename samples/{SubPass => sub_pass}/shaders/Tonemap.frag (100%) rename samples/{SubPass => sub_pass}/shaders/Tonemap.json (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapMsaa.frag (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapMsaa.json (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassMsaa.frag (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassMsaa.json (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassShaderResolve1x.frag (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassShaderResolve1x.json (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassShaderResolve2x.frag (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassShaderResolve2x.json (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassShaderResolve4x.frag (100%) rename samples/{SubPass => sub_pass}/shaders/TonemapSubpassShaderResolve4x.json (100%) rename samples/{SubPass => sub_pass}/shaders/shaderSchema.json (100%) rename samples/{hello-gltf => tile_memory}/CMakeLists.txt (51%) create mode 100644 samples/tile_memory/README.md create mode 100644 samples/tile_memory/code/main/application.cpp create mode 100644 samples/tile_memory/code/main/application.hpp create mode 100644 samples/tile_memory/install_apk.bat create mode 100644 samples/tile_memory/install_config.bat rename samples/{BloomImageProcessing => tile_memory}/project/android/AndroidManifest.xml (94%) rename samples/{rayQueryShadows => tile_memory}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename samples/{rayQueryShadows => tile_memory}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename samples/{rayQueryShadows => tile_memory}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename samples/{rayQueryShadows => tile_memory}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename samples/{rayQueryShadows => tile_memory}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename samples/{empty => tile_memory}/project/android/res/values/strings.xml (54%) create mode 100644 samples/tile_memory/project/img/screenshot.png rename samples/{hello-gltf => tile_memory}/shaders/Blit.frag (74%) rename samples/{hello-gltf => tile_memory}/shaders/Blit.json (97%) rename samples/{hello-gltf => tile_memory}/shaders/Blit.vert (100%) create mode 100644 samples/tile_memory/shaders/DeferredLight.frag create mode 100644 samples/tile_memory/shaders/DeferredLight.json rename samples/{rayReflections/shaders/Blit.vert => tile_memory/shaders/DeferredLight.vert} (100%) create mode 100644 samples/tile_memory/shaders/LightCulling.comp rename samples/{rayQueryShadows/shaders/ShadowRT.json => tile_memory/shaders/LightCulling.json} (58%) rename samples/{hello-gltf => tile_memory}/shaders/Scene.vert (100%) create mode 100644 samples/tile_memory/shaders/SceneOpaque.frag rename samples/{hello-gltf => tile_memory}/shaders/SceneOpaque.json (94%) create mode 100644 samples/tile_memory/shaders/SceneTransparent.frag rename samples/{hello-gltf => tile_memory}/shaders/SceneTransparent.json (94%) create mode 100644 samples/tile_shading/CMakeLists.txt create mode 100644 samples/tile_shading/README.md create mode 100644 samples/tile_shading/code/main/application.cpp create mode 100644 samples/tile_shading/code/main/application.hpp create mode 100644 samples/tile_shading/install_apk.bat create mode 100644 samples/tile_shading/install_config.bat rename samples/{hdrSwapchain => tile_shading}/project/android/AndroidManifest.xml (91%) rename samples/{rayReflections => tile_shading}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename samples/{rayReflections => tile_shading}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename samples/{rayReflections => tile_shading}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename samples/{rayReflections => tile_shading}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename samples/{rayReflections => tile_shading}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) create mode 100644 samples/tile_shading/project/android/res/values/strings.xml create mode 100644 samples/tile_shading/project/img/screenshot.png create mode 100644 samples/tile_shading/shaders/Blit.frag rename samples/{rayReflections => tile_shading}/shaders/Blit.json (77%) rename samples/{hdrSwapchain => tile_shading}/shaders/Blit.vert (99%) create mode 100644 samples/tile_shading/shaders/DeferredLight.frag create mode 100644 samples/tile_shading/shaders/DeferredLight.json rename samples/{hdrSwapchain/shaders/Light.vert => tile_shading/shaders/DeferredLight.vert} (91%) create mode 100644 samples/tile_shading/shaders/DeferredLightTileShading.frag create mode 100644 samples/tile_shading/shaders/DeferredLightTileShading.json create mode 100644 samples/tile_shading/shaders/LightCulling.comp rename samples/{rayQueryShadows/shaders/AnimateBuffer.json => tile_shading/shaders/LightCulling.json} (50%) create mode 100644 samples/tile_shading/shaders/LightCullingTileShading.comp create mode 100644 samples/tile_shading/shaders/LightCullingTileShading.json create mode 100644 samples/tile_shading/shaders/LightCullingTileShadingAreaDispatch.comp create mode 100644 samples/tile_shading/shaders/LightCullingTileShadingAreaDispatch.json rename samples/{shaderResolveTonemap/shaders/Object.vert => tile_shading/shaders/Scene.vert} (73%) create mode 100644 samples/tile_shading/shaders/SceneOpaque.frag create mode 100644 samples/tile_shading/shaders/SceneOpaque.json create mode 100644 samples/tile_shading/shaders/SceneTransparent.frag create mode 100644 samples/tile_shading/shaders/SceneTransparent.json create mode 100644 tests/CMakeLists.txt rename {samples => tests}/empty/CMakeLists.txt (52%) rename {samples => tests}/empty/code/main/application.cpp (89%) rename {samples => tests}/empty/code/main/application.hpp (93%) rename {samples => tests}/empty/project/android/AndroidManifest.xml (97%) rename {samples => tests}/empty/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename {samples => tests}/empty/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename {samples => tests}/empty/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename {samples => tests}/empty/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {samples => tests}/empty/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {samples/SubPass => tests/empty}/project/android/res/values/strings.xml (57%) create mode 100644 tests/framework_test_vulkan/CMakeLists.txt create mode 100644 tests/framework_test_vulkan/README.md create mode 100644 tests/framework_test_vulkan/app_config.txt create mode 100644 tests/framework_test_vulkan/code/main/Materials.h create mode 100644 tests/framework_test_vulkan/code/main/application.cpp create mode 100644 tests/framework_test_vulkan/code/main/application.hpp create mode 100644 tests/framework_test_vulkan/install_apk.bat create mode 100644 tests/framework_test_vulkan/install_config.bat rename {samples/sdp-cli => tests/framework_test_vulkan}/project/android/AndroidManifest.xml (97%) rename {samples/rotatedCopy => tests/framework_test_vulkan}/project/android/res/mipmap-hdpi/ic_launcher.png (100%) rename {samples/rotatedCopy => tests/framework_test_vulkan}/project/android/res/mipmap-mdpi/ic_launcher.png (100%) rename {samples/rotatedCopy => tests/framework_test_vulkan}/project/android/res/mipmap-xhdpi/ic_launcher.png (100%) rename {samples/rotatedCopy => tests/framework_test_vulkan}/project/android/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {samples/rotatedCopy => tests/framework_test_vulkan}/project/android/res/mipmap-xxxhdpi/ic_launcher.png (100%) create mode 100644 tests/framework_test_vulkan/project/android/res/values/strings.xml create mode 100644 tests/framework_test_vulkan/shaders/Debug.frag rename samples/rayReflections/shaders/Skybox.vert => tests/framework_test_vulkan/shaders/Debug.vert (70%) diff --git a/.gitignore b/.gitignore index 4f329d5..cb99575 100644 --- a/.gitignore +++ b/.gitignore @@ -9,13 +9,36 @@ *.aar *.ap_ *.aab +*.exe +*.lib +*.dll +*.a # ignore Media within samples samples/*/Media +tests/*/Media + +# ignore external folders (contents pulled by cmake fetchcontent) +samples/external +framework/external/.fetchcontent + +# ignore loose image files (eg screenshots) +*.bmp + +# ignore timestamp file +project/buildtimestamp.h + +# Ignore local config files +ConfigLocal.txt +ConfigLocal.cmake +ConfigLocal.properties # ignore generated (doxygen) documentation doc/html/ +# ignore generated timestamp file +project/buildtimestamp.h + # Files for the ART/Dalvik VM *.dex @@ -32,10 +55,12 @@ out/ # Gradle files .gradle/ build/ +samples/*/assets_tmp +tests/*/assets_tmp # Visual Studio files .vs/ -project/windows/solution/ +project/windows/solution*/ *.user *.suo @@ -51,6 +76,11 @@ proguard/ # Log Files *.log +# Generic editor backup files +*.tmp +*.temp +*.bak + # Android Studio Navigation editor temp files .navigation/ @@ -110,13 +140,10 @@ debug/ # imgui config imgui.ini -project/buildtimestamp.h -samples/hdrSwapchain/assets_tmp/ -samples/hello-gltf/assets_tmp/ -samples/rotatedCopy/assets_tmp/ -samples/shaderResolveTonemap/assets_tmp/ -samples/SubPass/assets_tmp/ -samples/BloomImageProcessing/assets_tmp/ -project/tools/ktx.dll -project/tools/ktxinfo.exe -project/tools/toktx.exe + +# archives +*.zip +*.7z +*.rar +*.gz +*.tar diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e22e54c..0000000 --- a/.gitmodules +++ /dev/null @@ -1,38 +0,0 @@ -[submodule "framework/external/VulkanMemoryAllocator"] - path = framework/external/VulkanMemoryAllocator - url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator -[submodule "framework/external/glm"] - path = framework/external/glm - url = https://github.com/g-truc/glm - shallow = true -[submodule "framework/external/tinyobjloader"] - path = framework/external/tinyobjloader - url = https://github.com/tinyobjloader/tinyobjloader -[submodule "framework/external/json"] - path = framework/external/json - url = https://github.com/nlohmann/json -[submodule "framework/external/tinygltf"] - path = framework/external/tinygltf - url = https://github.com/syoyo/tinygltf -[submodule "framework/external/imgui"] - path = framework/external/imgui - url = https://github.com/ocornut/imgui -[submodule "framework/external/eigen"] - path = framework/external/eigen - url = https://gitlab.com/libeigen/eigen.git - shallow = true -[submodule "framework/external/Vulkan-Headers"] - path = framework/external/Vulkan-Headers - url = https://github.com/KhronosGroup/Vulkan-Headers.git -[submodule "assets"] - path = assets - url = https://github.com/quic/game-assets-for-adreno-gpu-code-samples -[submodule "framework/external/KTX-Software"] - path = framework/external/KTX-Software - url = https://github.com/KhronosGroup/KTX-Software -[submodule "framework/external/portable-file-dialogs"] - path = framework/external/portable-file-dialogs - url = https://github.com/samhocevar/portable-file-dialogs -[submodule "framework/external/implot"] - path = framework/external/implot - url = https://github.com/epezent/implot diff --git a/01_BuildAndroid.bat b/01_BuildAndroid.bat deleted file mode 100644 index dabfd8c..0000000 --- a/01_BuildAndroid.bat +++ /dev/null @@ -1,4 +0,0 @@ -call cls -pushd project\android -call build.bat -popd diff --git a/01_Configure.bat b/01_Configure.bat new file mode 100644 index 0000000..5cacae3 --- /dev/null +++ b/01_Configure.bat @@ -0,0 +1,4 @@ +@echo off +cd /D "%~dp0" +python Configure.py + diff --git a/01_Configure.sh b/01_Configure.sh new file mode 100644 index 0000000..981c6fd --- /dev/null +++ b/01_Configure.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +cd "$(dirname "$0")" + +python Configure.py + diff --git a/02_Build.bat b/02_Build.bat new file mode 100644 index 0000000..16cc406 --- /dev/null +++ b/02_Build.bat @@ -0,0 +1,5 @@ +@echo off +cd /D "%~dp0" + +python Configure.py --build + diff --git a/02_Build.sh b/02_Build.sh new file mode 100644 index 0000000..9a66bc0 --- /dev/null +++ b/02_Build.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +cd "$(dirname "$0")" + +python Configure.py --build + diff --git a/02_BuildWindows.bat b/02_BuildWindows.bat deleted file mode 100644 index aa60047..0000000 --- a/02_BuildWindows.bat +++ /dev/null @@ -1,4 +0,0 @@ -call cls -pushd project\windows -call build.bat -popd diff --git a/03_BuildTools.bat b/03_BuildTools.bat deleted file mode 100644 index e264958..0000000 --- a/03_BuildTools.bat +++ /dev/null @@ -1,4 +0,0 @@ -call cls -pushd project\tools -call build.bat -popd diff --git a/Config.txt b/Config.txt new file mode 100644 index 0000000..e450e62 --- /dev/null +++ b/Config.txt @@ -0,0 +1,43 @@ +tests\ + empty; framework\base + vulkan; framework\vulkan + framework_test_vulkan + hello_gltf_vulkan +samples\ + vulkan; framework\vulkan + vk_extensions + graph_pipelines + image_processing + tile_shading + tile_memory + misc + sgsr + sgsr2 + others + hdr_swapchain + rotated_copy + sub_pass + external\ +framework\ + base; framework\external\GameSampleAssets, framework\external\glm, framework\external\tinyobjloader, framework\external\tinygltf, framework\external\json, framework\external\eigen + generic; framework\base, framework\external\imgui, framework\external\implot, framework\external\portable-file-dialogs, framework\external\KTX-Software, Tools + vulkan; framework\generic, framework\external\volk, framework\external\SPIRV-Cross, framework\external\glslang, framework\external\slang, framework\external\VulkanMemoryAllocator, framework\external\Vulkan-Headers + external\ + VulkanMemoryAllocator @ https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/refs/tags/v3.0.1.tar.gz MD5:8571f3def0ff86f228e2864c907ba0b3 + tinyobjloader @ https://github.com/tinyobjloader/tinyobjloader/archive/e39c1737bc61c8dce28be7932cfe839d408e7838.zip + tinygltf @ https://github.com/syoyo/tinygltf/archive/925b83627a136d24411067031893dc8ea661444d.zip + imgui @ https://github.com/ocornut/imgui/archive/4f9ba19e520bea478f5cb654d37ef45e6404bd52.zip MD5:2d0aa43693cdada8abb9d49a44c1337b + implot @ https://github.com/epezent/implot/archive/f156599faefe316f7dd20fe6c783bf87c8bb6fd9.zip MD5:b95d158f69b1716da2cd7c17d63bdce4 + portable-file-dialogs @ https://github.com/samhocevar/portable-file-dialogs/archive/7f852d88a480020d7f91957cbcefe514fc95000c.zip MD5:ec1fd9e86f260b99a50294b8f53f872f + Vulkan-Headers @ https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/v1.4.328.zip + glm @ https://github.com/g-truc/glm/archive/6ad79aae3eb5bf809c30bf1168171e9e55857e45.zip + GameSampleAssets @ https://github.com/SnapdragonStudios/game-assets-for-adreno-gpu-code-samples/archive/0ef8e70049ffd9ee4f9138b43815b21f959497d0.zip + volk @ https://github.com/zeux/volk/archive/1e0ec168f1726e6389b8647435a3018f0cef9428.zip + SPIRV-Cross @ https://github.com/KhronosGroup/SPIRV-Cross/archive/7affe74d77f93a622bb5002789d5332d32e512ee.zip + glslang @ https://github.com/KhronosGroup/glslang/archive/3a7f78758f8faa9a6e059b09e25fc64ede7fbfb0.zip + slang @ https://github.com/shader-slang/slang/archive/9c2024a7509baae921083d49a56e1321c51f00ec.zip + json @ https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz MD5:4b67aba51ddf17c798e80361f527f50e + eigen @ https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz MD5:4c527a9171d71a72a9d4186e65bea559 + KTX-Software @ https://github.com/KhronosGroup/KTX-Software/archive/refs/tags/v4.1.0.tar.gz MD5:b35fc412cdb3a00aa92aadcdd1e5f004 PATCH:..\cmake\KTX-Software.diff; Tools + D3D12MemoryAllocator @ https://github.com/GPUOpen-LibrariesAndSDKs/D3D12MemoryAllocator/archive/7597f717c7b32b74d263009ecc15985b517585c7.zip + diff --git a/Configure.py b/Configure.py new file mode 100644 index 0000000..764508c --- /dev/null +++ b/Configure.py @@ -0,0 +1,830 @@ +# +# Copyright (c) 2025 QUALCOMM Technologies Inc. +# All Rights Reserved. +# +import sys +import os +import argparse +import hashlib +import pathlib +import platform +import shutil +import tarfile +import subprocess +import tempfile +import zipfile + +tab_size = 8 # hard tab size + +parser = argparse.ArgumentParser( + description="Configuration tool for Snapdragon Studios's Sample Framework", + epilog="see README.md for additional help") +parser.add_argument('--build', help = 'Build with the current ConfigLocal settings, does require user input. Typically this option is used for subsequent builds after initial configuration.', action = 'store_true') +parser.add_argument('--clean', help = 'Clean all targets', action = 'store_true') +arguments = parser.parse_args() +enableUserInterface = not arguments.clean and not arguments.build + + +class Item: + def __init__(self, name, selected = -1, readOnly = False, saveable = True, groups = [], dependencies = [], location = None, function = None): + self.name = name + self.groups = groups + self.dependencies = dependencies + self.selected = selected + self.readOnly = readOnly + self.saveable = saveable + self.open = False + self.location = location + self.function = function + def select(self): + if self.function: + self.function(self) + else: + toggle_selected(self) + +class DisplayLine: + def __init__(self, item: Item, string: str): + self.item = item + self.string = string + def open(self): + self.item.open = True + def close(self): + self.item.open = False + +# determine correct keyboard handling code (per platform - we jump through these hoops so we do not need to install any external python libraries such as curses or pygame) +try: + import msvcrt + def get_key_blocking_windows(): + key = msvcrt.getch() + keyCode = 0 + if key == b'\xe0' or key == b'\000': + keyCode = int.from_bytes(msvcrt.getch(),byteorder='little') + return ('c' + str(keyCode)) # turns into c?? (where ?? is the decimal representation of the keyCode) + else: + return str(key, encoding='ascii') + get_key_blocking = get_key_blocking_windows +except ImportError: + import tty, sys, termios + def get_key_blocking_unix(): + stdinFd = sys.stdin.fileno() + savedAttr = termios.tcgetattr(stdinFd) + try: + tty.setraw(sys.stdin.fileno()) + key = sys.stdin.read(1) + # read another character if escaped (special key sequence such as cursor) + if key[0] == '\x1b': + key = 'e' + while True: + keyEscaped = sys.stdin.read(1) + key += keyEscaped + if keyEscaped.isalpha(): + break + finally: + termios.tcsetattr(stdinFd, termios.TCSADRAIN, savedAttr) + return key + get_key_blocking = get_key_blocking_unix + + +def toggle_selected(item: Item): + # toggle selection status of the item + recalculate_selections( groups, {item : 1 if item.selected == -1 else -1} ) + +def count_indent(s): + indent = 0 + for c in s: + if c.isspace(): + indent += 1 + elif c == '\t': + indent = ((indent + tab_size) / tab_size) * tab_size + else: + break + return indent + +def read_config_group(configLines, currentIndent = 0): + itemStrings = [] + groups = {} + currentLineIdx = 0 + while currentLineIdx < len(configLines): + configLine = configLines[currentLineIdx].rstrip() + #print(configLine + " " + str(currentIndent)) + + indent = count_indent(configLine) + configLine = configLine.strip() + if len(configLine) == 0: + # skip blank lines (or lines with no non-whitespace content) + currentLineIdx += 1 + continue + if currentLineIdx == 0 and indent != currentIndent: + raise Exception("indent mismatch error") + + if indent > currentIndent: + # start of child block + numProcessedLines, groupItemStrings, groupItemGroups = read_config_group(configLines[currentLineIdx:], indent) + currentLineIdx += numProcessedLines + groups[itemStrings[-1][0]] = [groupItemStrings, groupItemGroups] + elif indent < currentIndent: + # end of our block + break + else: + splitLine = [s.strip() for s in configLine.split(';', 1)] + name = splitLine[0].replace('\\', '/') + if len(splitLine) > 1 and len(splitLine[1]) > 0: + dependencies = [os.path.normpath(x.strip().replace('\\', '/')) for x in splitLine[1].split(',')] + else: + dependencies = [] + #print(dependencies) + itemStrings.append([name, dependencies]) + currentLineIdx += 1 + return currentLineIdx, itemStrings, groups + + +def read_config(folder, filename): + fullFilename = os.path.join(folder, filename) + if os.path.exists(fullFilename): + with open(fullFilename, 'r') as file: + configLines = file.readlines() + currentIndent = 0 + _, itemStrings, itemGroups = read_config_group(configLines) + #print(itemStrings) + #print(itemGroups) + + # make the Items + def make_items(itemStrings, itemGroups): + items = [] + for i in itemStrings: + name = i[0] + dependencies = i[1] + item_group = make_items(*itemGroups[name]) if name in itemGroups else [] + + splitLocation = [s.strip() for s in name.split("@")] + name = splitLocation[0] + location = splitLocation[1] if len(splitLocation)>1 else None + items.append( Item(name, -1, False, True, item_group, dependencies, location) ) + return items + items = make_items(itemStrings, itemGroups) + + #print(items) + return items + +# write a config file containing ONLY the items that are enabled (selected) +def write_enabled_config(groups, folder, filename): + filename = os.path.join(folder, filename) + with open(filename, 'w') as file: + + def write(groups, indent = 0): + for entry in groups: + if entry.saveable: + if entry.selected != -1: + #file.write(' ' * indent + entry.name + ((';' + ", ".join(entry.dependencies)) if len(entry.dependencies) > 0 else '') + '\n') + file.write(' ' * indent + entry.name + '\n') + write(entry.groups, indent + 1) + write(groups) + print("Wrote config to " + filename) + + +def recalculate_selections(groups, changed_selections): + if not changed_selections: + changed_selections = {i: i.selected for i in groups} + new_selections = {} + while True: + for item in changed_selections: + selected = changed_selections[item] + item.selected = selected + if item.groups and selected != 0: + for i in item.groups: + new_selections[i] = selected + if not new_selections: + break + changed_selections = new_selections + new_selections = {} + + + # now scan through and determine selection status (all, partial, none; 1 0 -1) for all items with children (from very top level down) + def recalculate_parent_selections(group): + allSelected = True + allClear = True + for item in group: + if item.groups: + childAllSelected, childAllClear = recalculate_parent_selections(item.groups) + item.selected = -1 if childAllClear else 1 if childAllSelected else 0 + allSelected = allSelected and childAllSelected + allClear = allClear and childAllClear + else: + allSelected = allSelected and item.selected == 1 + allClear = allClear and item.selected == -1 + if allClear and allSelected: + raise Exception("logic error") + return allSelected, allClear + recalculate_parent_selections(groups) + + # and re-set all the dependencies! + while True: + def find_dependencies(groups): + new_selections = {} + for item in groups: + if item.groups: + new_selections = {**new_selections, **find_dependencies(item.groups)} + if item.selected != -1 and item.dependencies: + for dependencyName in item.dependencies: + dependency = items_by_path[dependencyName] + if dependency.selected != 1: + # add as a new dependeny to set + new_selections[dependency] = 1 + return new_selections + new_selections = find_dependencies(groups) + if not new_selections: + break + # set all the dependencies + recalculate_selections(groups, new_selections) + +def clean_items(itemsToClean): + for item in itemsToClean: + cleanFunctionsMap[item.name]() + +def build_items(itemsToBuild): + success = True + for item in itemsToBuild: + if not buildFunctionsMap[item.name](): + success = False + return success + +def save_and_begin_processing_selected(_: Item): + write_enabled_config(groups, ".", "ConfigLocal.txt") + write_cmake_config(projectsItems, "ConfigLocal.cmake") + write_gradle_properties(projectsItems, "ConfigLocal.properties") + write_android_gradle_files(projectsItems) + + # clean selected items + itemsToClean = filter( lambda x: x.selected == 1, cleanTargetItems ) + clean_items( itemsToClean ) + + # download selected items + download(projectsItems) + + # see how many projects are set to build + selected_project_count = count_selected(projectsItems) + if selected_project_count == 0: + print("\nNo projects selected to be built") + else: + # build selected items + targetsToBuild = list(filter( lambda x: x.selected == 1, buildTargetItems )) + if not targetsToBuild: + print("\nNo targets selected to be built") + else: + if not build_items( targetsToBuild ): + print("ERROR BUILDING TARGETS (see output above)") + + print("\nCompleted.") + # quit the app! + exit(0) + +class Download: + def __init__(self, outputFolder, url, downloadDestination, md5Expected, patchFile): + self.outputFolder = outputFolder + self.url = url + self.downloadDestination = downloadDestination + self.md5Expected = md5Expected + self.patchFile = patchFile + +def find_downloads(groups, folder, onlySelected): + downloads = [] + for item in groups: + if not onlySelected or item.selected != -1: + if item.groups: + if item.name[-1] == '/': + subFolder = os.path.join(folder, item.name[:-1]) + else: + subFolder = folder + downloads.extend( find_downloads(item.groups, subFolder, onlySelected) ) + if item.location: + md5Expected = None + patchFile = None + security = item.location.split(' ', 2) + if len(security) > 1: + for s in security[1:]: + if s[:4] == 'MD5:': + md5Expected = s[4:] + elif s[:6] == 'PATCH:': + patchFile = os.path.normpath(os.path.join(folder, os.path.normcase(s[6:]))) + url = security[0] + elif len(security) == 1: + url = security[0] + else: + raise Exception("Error parsing download string " + item.location + ". Format is [ MD5:] [ PATCH:]") + + outputFolder = os.path.join(folder, item.name) + downloadDestination = os.path.join(folder, url.rsplit('/', 1)[-1]) + downloads.append( Download(outputFolder, url, downloadDestination, md5Expected, patchFile) ) + return downloads + +def download(groups): + + downloads = find_downloads(groups, '.', onlySelected=True) + + if not downloads: + return False + print("Preparing to download\n---------------------") + for download in downloads: + print("" + download.url + "\n -> " + download.outputFolder) + print("\n") + + for download in downloads: + outputFolder = download.outputFolder + url = download.url + downloadDestination = download.downloadDestination + md5Expected = download.md5Expected + patchFile = download.patchFile + + refreshFiles = False # assume everything up to date + + if os.path.exists(downloadDestination): + print("Found " + downloadDestination + " (skipping download)") + filename = downloadDestination + else: + destinationFolder = os.path.dirname(downloadDestination) + if not os.path.exists(destinationFolder): + print("Creating folder " + destinationFolder) + pathlib.Path(destinationFolder).mkdir(parents = True, exist_ok = True) + + print("Downloading " + url) + refreshFiles = True + import urllib.request, ssl + ssl._create_default_https_context = ssl._create_unverified_context + filename, headers = urllib.request.urlretrieve(url) + + if md5Expected: + md5hash = hashlib.md5() + with open(filename, 'rb') as file: + for b in iter(lambda: file.read(32768), b""): + md5hash.update(b) + if md5hash.hexdigest() != md5Expected: + os.remove(filename) + raise Exception("MD5 hash security check for " + filename + " (" + downloadDestination + ") failed.\n Expected " + md5Expected + " got " + md5hash.hexdigest()) + print(" MD5 hash verified") + + shutil.move(filename, downloadDestination) + filename = downloadDestination + print(" copied to " + filename) + + # prepare for files copied over destination folder + if refreshFiles and os.path.exists(outputFolder): + shutil.rmtree(outputFolder) + + if not os.path.exists(outputFolder): + filenameExtSplit = filename.rsplit('.', 2) + with tempfile.TemporaryDirectory() as tempExtractDir: # use a temporary directory as an extraction location + if len(filenameExtSplit)>1 and filenameExtSplit[-1].lower() == 'zip': + print(" extracting zip to " + tempExtractDir) + with zipfile.ZipFile(filename, 'r') as file: + file.extractall(tempExtractDir) + elif len(filenameExtSplit)>1 and filenameExtSplit[-2].lower() == 'tar': + print(" extracting tar to " + tempExtractDir) + + with tarfile.open(filename) as tar: + # check the tar only contains files/directories (no symlinks etc supported) and no attempts to write outside of the target directory + targetDir = pathlib.Path(outputFolder) + for tarinfo in tar.getmembers(): + if tarinfo.isfile() or tarinfo.isdir(): + tarinfo.uname = None + tarinfo.gname = None + outputPath = pathlib.Path( os.path.normpath(os.path.join(targetDir, tarinfo.name)) ) + if targetDir not in outputPath.parents: + raise Exception("Tar file " + filename + " prevented from write outside of safe directory structure (potential security issue). (" + str(outputPath) + ")") + + if sys.version_info[0] == 3 and sys.version_info[1] >= 12: + tar.extractall(path=tempExtractDir, filter = 'data') + else: + tar.extractall(path=tempExtractDir) + else: + raise Exception("Unknown file archive format for " + filename + " ( .tar.gz / .tar.xz / .zip supported)") + + # all the achives have a top level directory (and the contents we expect below it), get that directory name + print(" moving extracted files to " + outputFolder) + tempExtractDirContents = os.listdir(tempExtractDir) + if len(tempExtractDirContents)!=1: + raise Exception("Expected downloaded archive from " + url + " to contain a single top level folder, does not - actual contents: " + tempExtractDirContents) + extractedFolderPath = os.path.join(tempExtractDir, tempExtractDirContents[0]) + + # Move the top level folder out of the temporary extraction location to the correctly named destination + shutil.copytree(extractedFolderPath, outputFolder) + + if patchFile: + print(" patching using " + patchFile) + subprocess.run(["git", "apply","--verbose","--unsafe-paths","--ignore-space-change","--directory", outputFolder, patchFile]) + + elif refreshFiles: + raise Exception("Was expecting folder to be removed before extraction, try manually deleting? (folder: " + outputFolder + ")") + else: + print(" skipped extracting files to " + outputFolder + " (folder already exists)") + return True # did something + +# clean anything that (may have been) downloaded +def clean_externals(): + downloads = find_downloads(groups, '.', onlySelected=False) + for d in downloads: + if os.path.exists(d.downloadDestination): + print("Removing: " + d.downloadDestination) + os.remove(d.downloadDestination) + if os.path.isdir(d.outputFolder): + print("Removing: " + d.outputFolder) + shutil.rmtree(d.outputFolder, ignore_errors=True) + +def write_cmake_config(groups, filename): + with open(filename, "wt") as file: + file.write("# CMake file written by " + sys.argv[0] + "\n#\n# Defines which framework libraries and samples are enabled\n# Do not check this file in to version control (generate locally)\n\n") + file.write("cmake_minimum_required (VERSION 3.21)\n\n") + def write_items(groups, parentName, file): + for item in groups: + variableName = parentName + "_" + item.name.strip('\\/') + file.write("SET(" + variableName + (" True)\n" if item.selected != -1 else " False)\n")) + if item.groups: + if item.name[-1] == '/': + write_items(item.groups, variableName, file) + else: + write_items(item.groups, parentName, file) + write_items(groups, "FRAMEWORK", file) + print("Cmake build properties file \"" + filename + "\" written") + +def write_gradle_properties(groups, filename): + with open(filename, "wt") as file: + file.write("# Gradle properties file written by " + sys.argv[0] + "\n#\n# Defines which framework libraries and samples are enabled\n# Do not check this file in to version control (generate locally)\n\n") + def write_items(groups, parentName, file): + for item in groups: + variableName = parentName + "_" + item.name.strip('\\/') + file.write(variableName + (" = true\n" if item.selected != -1 else " = false\n")) + if item.groups: + if item.name[-1] == '/': + write_items(item.groups, variableName, file) + else: + write_items(item.groups, parentName, file) + write_items(groups, "FRAMEWORK", file) + print("Gradle (Android) build properties file \"" + filename + "\" written") + + + +def write_android_gradle_files(groups): + """ + * Generates Android build.gradle files for selected sample and test projects. + * @param groups : The top-level configuration groups containing all selectable items. + * @note This function creates build.gradle files under ./samples//build or ./tests//build + """ + build_gradle_template = """apply plugin: 'com.android.application' + +android {{ + compileSdkVersion 33 + namespace "com.quic.{project_name}" + lintOptions {{ + abortOnError false + }} + + String rootDir = "${{project.rootDir}}" + rootDir = rootDir.replace("\\\\", "/") + + defaultConfig {{ + applicationId "com.quic.{project_name}" + minSdkVersion 26 + targetSdkVersion 33 + versionCode 1 + versionName "1.0" + ndkVersion "${{project.ndkVersionDefault}}" + ndk {{ + abiFilters 'arm64-v8a' + }} + externalNativeBuild {{ + cmake {{ + arguments "-DPROJECT_ROOT_DIR=${{rootDir}}", "-DFRAMEWORK_DIR=${{rootDir}}/../../framework" + }} + }} + }} + + signingConfigs{{ + unsigned{{ + storeFile file("${{System.env.USERPROFILE}}/.android/debug.keystore") + storePassword = "android" + keyAlias = "androiddebugkey" + keyPassword = "android" + v2SigningEnabled = false + }} + }} + + buildTypes {{ + release {{ + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.unsigned + }} + debug {{ + debuggable = true + jniDebuggable = true + }} + }} + + sourceSets {{ + main {{ + jni.srcDirs = [] + manifest.srcFile '../project/android/AndroidManifest.xml' + res.srcDirs = ['../project/android/res'] + }} + main.assets {{ + srcDirs = ['assets'] + srcDirs += ['assets_tmp'] + }} + }} + + dependencies {{ + implementation project(':framework') + }} + + externalNativeBuild {{ + cmake {{ + version "3.25.0+" + path "../CMakeLists.txt" + buildStagingDirectory "../../../build/cxx/${{project.name}}" + }} + }} + + task copyTmpAssets(type: Copy) {{ + from "Media" + into "assets_tmp/build/Media" + }} + task removeTmpAssets(type: Delete) {{ + delete "assets_tmp" + }} + + afterEvaluate {{ + packageRelease.finalizedBy(removeTmpAssets) + preBuild.dependsOn(":framework:buildNeeded") + }} + + preBuild.dependsOn(copyTmpAssets) + + def overrideFile = file("${{project.projectDir}}/../override.gradle") + if (overrideFile.exists()) {{ + apply from: overrideFile + }} +}} +""" + + def write_items(groups): + for item in groups: + if item.selected != -1 and not item.groups: + # Check for existence in samples and tests + possible_paths = [os.path.join("samples", item.name), os.path.join("tests", item.name)] + target_path = None + for path in possible_paths: + if os.path.isdir(path): + target_path = path + break + + if target_path: + build_dir = os.path.join(target_path, "build") + os.makedirs(build_dir, exist_ok=True) + gradle_path = os.path.join(build_dir, "build.gradle") + with open(gradle_path, "w") as f: + f.write(build_gradle_template.format(project_name=item.name)) + print(f"Generated build.gradle for {target_path}") + else: + print(f"Skipped {item.name}: no matching folder in samples/ or tests/") + + if item.groups: + write_items(item.groups) + + write_items(groups) + +def count_selected(groups): + count = 0 + for item in groups: + if item.groups: + count += count_selected(item.groups) + else: + count += 1 if item.selected != -1 else 0 + return count + + +# load the list of projects (that we can build) and their dependencies, from Config.txt +projectsItems = read_config(".", "Config.txt") + +# +# setup top level menu items +# + +# Clean functions +cleanFunctionsMap = { + "Android" : lambda: shutil.rmtree("./build", ignore_errors=True), + "Linux" : lambda: shutil.rmtree("./project/linux/solution", ignore_errors=True), + "Windows ARM64": lambda: shutil.rmtree("./project/windows/solutionArm64", ignore_errors=True), + "Windows x64" : lambda: shutil.rmtree("./project/windows/solution", ignore_errors=True), + "Externals" : clean_externals +} + +# run the given batch file and return True if successful (errorcode == 0) +def RunBatch(filename): + retcode = subprocess.call([os.path.abspath(filename)], shell=False) + return retcode == 0 + +cleanTargetItems = [Item(n) for n in cleanFunctionsMap] +# Build functions +if platform.system() == 'Windows': + buildFunctionsMap = { + "Tools" : lambda: RunBatch("./project/tools/build.bat"), + "Android" : lambda: RunBatch("./project/android/build.bat"), + "Windows ARM64": lambda: RunBatch("./project/windows/buildArm64.bat"), + "Windows x64" : lambda: RunBatch("./project/windows/build.bat"), + } +else: + buildFunctionsMap = { + "Tools" : lambda: subprocess.Popen('source ' + os.path.abspath("./project/tools/build.sh"), shell=True, executable="/bin/bash"), + "Linux" : lambda: subprocess.Popen('source ' + os.path.abspath("./project/linux/build.sh"), shell=True, executable="/bin/bash"), + } +buildTargetItems = [Item(n) for n in buildFunctionsMap] + +groups = [ + Item("Clean", selected = False, saveable = False, groups = cleanTargetItems), + Item("Build Targets", selected = False, groups = buildTargetItems), + Item("Build Projects", groups = projectsItems), + Item("Save And Begin Processing", function = save_and_begin_processing_selected) +] + +# for all the projects build a lookup by 'path' (for named dependencies) +def make_items_by_path(groups, path): + items_by_path = {} + for item in groups: + if item.groups: + # not a leaf item + if item.name[-1] == '/': + # folder based grouping + group_items_by_path = make_items_by_path(item.groups, os.path.join(path, item.name[:-1])) + else: + # non folder grouping + group_items_by_path = make_items_by_path(item.groups, path) + if group_items_by_path: + items_by_path = {**items_by_path, **group_items_by_path} + else: + # leaf node (or empty 'folder') + if item.name[-1] == '/': + pass # we dont need to record empty folders! + else: + items_by_path[os.path.join(path, item.name)] = item + return items_by_path +items_by_path = make_items_by_path(groups, "") + + +# now load the 'local' settings (which items/projects are currently selected for our local build) +if groups: + localSelectedGroups = read_config(".", "ConfigLocal.txt") + if not localSelectedGroups: + localSelectedGroups = [] + + def set_selected(items, override_items): + leaf_selections = {} + items_dict = { g.name: g for g in items } + for override in override_items: + if override.name in items_dict: + item = items_dict[override.name] + if override.groups: + # parent node + leaf_selections = {**leaf_selections, **set_selected( item.groups, override.groups )} + else: + # leaf node + leaf_selections[item] = 1 + return leaf_selections + recalculate_selections(groups, set_selected(groups, localSelectedGroups)) + +# recaulculate whether items are selected, unselected or partially selected (some children selected and some unselected) +recalculate_selections(groups, {}) + + +# see if we are running the user interface or in 'commandline' mode! +if enableUserInterface: + + # + # Gui Mode + # + + # open the top level project groups + for topLevelItem in projectsItems: + topLevelItem.open = True + + + quitMode = 0 + cursorIdx = 0 + topLine = 0 + + # get number of lines in scrolling window + numLines = os.get_terminal_size().lines - 5 + # clear terminal + print('\x1bc') + + # UI loop (draw menu and wait-for / react-to key input) + while(True): + indent = 0 + + def make_display(item : Item, cursorIdx, indent = 0): + cursor = '>>' if cursorIdx == 0 else ' ' + selected = '' + if not item.function: + selected = '[-]' + if item.selected == 1: + selected = '[X]' + elif item.selected == -1: + selected = '[ ]' + more = '' if not item.groups else '...' + display = [DisplayLine(item, str(cursor + ' ' * indent + selected + item.name + more))] + if item.open: + for group in item.groups: + display.extend(make_display(group, cursorIdx - len(display), indent + 2)) + return display + + all_display = [] + for group in groups: + all_display.extend( make_display(group, cursorIdx - len(all_display)) ) + + for d in all_display[topLine : topLine+numLines]: + print(d.string) + for r in range(0, numLines - len(all_display)): + print() + print() + if quitMode == 0: + if all_display[cursorIdx].item.function: + print('Up/Down - Move, Return = Select') + else: + print('Up/Down - Move, Return = Toggle selection' + (', Right/left - Open/close sub-menu' if all_display[cursorIdx].item.groups else '')) + print('Q = Quit, S - Save Settings') + elif quitMode == 1: + print('B - Back, W - Write settings and quit, Q - Quit without saving') + + key = get_key_blocking() #msvcrt.getch() + print('\x1bc') + if quitMode ==0: + if key == 'x' or key == 'X': + quitMode = 1 + elif key == 'q' or key == 'Q': + quitMode = 1 + elif key == 's' or key == 'S': + write_enabled_config(groups, ".", "ConfigLocal.txt") + elif key == ' ' or key == '\r': + # select item (call function) + item = all_display[cursorIdx].item + item.select() + elif key == 'c72' or key == 'e[A': # up + if cursorIdx == 0: + cursorIdx = len(all_display) - 1 + topLine = max(0, len(all_display) - numLines) + else: + cursorIdx = cursorIdx - 1 + if topLine >= cursorIdx - 1 and topLine > 0: + topLine = max(0, cursorIdx - 1) + elif key == 'c80' or key == 'e[B': # down + cursorIdx = cursorIdx + 1 + if cursorIdx == len(all_display): + cursorIdx = 0 + topLine = 0 + else: + if cursorIdx >= topLine + numLines - 2 and topLine + numLines < len(all_display): + topLine = max(0, min(cursorIdx - numLines + 2, len(all_display) - numLines)) + elif key == 'c77' or key == 'e[C': # right + all_display[cursorIdx].open() + elif key == 'c75' or key == 'e[D': # left + all_display[cursorIdx].close() + + if topLine >= cursorIdx - 1 and topLine > 0: + topLine = cursorIdx - 1 + + elif quitMode == 1: + if key == 'b' or key == 'B': + quitMode = 0 + elif key == 'w' or key == 'W': + # for g in groups: + # write_folder(g) + write_enabled_config(groups, ".", "ConfigLocal.txt") + exit(0) + elif key == 'q' or key == 'Q': + print("Exited without writing") + exit(0) + +else: + # + # Commandline mode + # + write_cmake_config(projectsItems, "ConfigLocal.cmake") + write_gradle_properties(projectsItems, "ConfigLocal.properties") + write_android_gradle_files(projectsItems) + + if arguments.clean: + # clean everything! + clean_items( cleanTargetItems ) + + if arguments.build: + # always do the downloads (build will fail if we are missing a download we are dependent on) + download(projectsItems) + + # only build what was previously selected (and saved) + targetsToBuild = list(filter( lambda x: x.selected == 1, buildTargetItems)) + if not targetsToBuild: + print("\nNo targets to build (did you run 'python Configure.py' and select something to build?)") + else: + selected_project_count = count_selected(projectsItems) + if selected_project_count == 0: + print("\nNo projects selected to be built (did you run 'python Configure.py' and select something to build?)") + else: + build_items( targetsToBuild ) diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/README.md b/README.md index 5be4634..f20df60 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Vulkan Code Sample Framework +# Vulkan Sample Framework The Adreno™ GPU Vulkan Code Sample Framework is a lightweight collection of C++ classes and sample projects to demonstrate Vulkan rendering features on the Qualcomm Snapdragon Adreno™ GPU. @@ -6,88 +6,104 @@ Both Android and Microsoft Windows build targets are supported (some samples may ## Prerequisites +- Git https://git-scm.com/downloads +- Python (tested against 3.10.9) +- CMake (tested against 3.30+) https://cmake.org/download/ +- Vulkan SDK (1.3 or later) https://vulkan.lunarg.com/ + ### Windows -- Visual Studio (tested against 2019) -- CMake (tested against 3.18+) https://cmake.org/download/ -- Git https://git-scm.com/downloads -- Vulkan SDK (1.3.224 or later) https://vulkan.lunarg.com/ +- Visual Studio 2022 ### Android - Android Studio (install NDK and SDK) -- CMake (> 3.10) https://cmake.org/download/ -- Ninja https://github.com/ninja-build/ninja/releases (or install Cmake from Android Studio and add the cmake bin folder to your PATH - AFTER the CMake path from the step above) -- Java JDK https://www.oracle.com/java/technologies/javase-downloads.html - -## Getting the vkSampleFramework project +- Ninja https://github.com/ninja-build/ninja/releases
+ After installation ninja.exe should be copied in to the same directory as cmake.exe - this works around a current [July2022] open bug with gradle where it expects ninja to be in the same directory as cmake!) +- Java JDK
+ Ensure JAVA_HOME environment variable points to a current version of Java. While a 'standalone' Java can be used it is highly recommended to use the Java build shipped inside Android Studio as the Android build system and gradle are very sensitive to Java versions. Eg. `set JAVA_HOME=c:\Program Files\Android\Android Studio\jbr` -The framework uses submodules for both external code dependencies and to get the shared assets for the sample projects (vkSampleFrameworkAssets). +### Linux -`git clone --recursive https://github.com/quic/adreno-gpu-vulkan-code-sample-framework` +Tested using WSL running Ubuntu. -Will clone the vkSampleFramework and its submodules. - -Subsequent pulls can be done with - -`git pull --recurse-submodules` ## Build Setup ### Windows -Ensure CMake is in the Windows PATH +Ensure CMake and python are in the Windows PATH ### Android -Create *project/android/local.properties* with the location of our cmake install eg: -
cmake.dir=C\:\\Tools\\cmake\\3.10.2.4988404
-
+Ensure you have CMake and a recent version of Android SDK installed (Android Studio can install both). +Android builds require CMake version 3.25 and above, if when building Android projects gradle is throwing arrors about cmake or Android SDK/NDK versions you can override the defaults by creating `project/android/local.properties` and adding the location of your local Android SDK and Cmake installs eg: +
sdk.dir=C\:\\Users\\yournamehere\\AppData\\Local\\Android\\Sdk
+cmake.dir=c\:\\Program Files\\CMake
+ +### Linux -If necessary, also include on *local.properties* the ndk and sdk locations eg: +## Configuring -
ndk.dir=C\:\\Users\\yourname\\AppData\\Local\\Android\\Sdk\\ndk\\21.0.6113669
-sdk.dir=C\:\\Users\\yourname\\AppData\\Local\\Android\\Sdk
-
+In the root folder run the configuration/build script: +`01_Configure.bat` (source `01_Configure.sh` on Linux) -Create *project/android/gradle.properties* with the location of our jdk and build heap space parameter, eg: -
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-11
-org.gradle.jvmargs=-Xms512M -Xmx4G
-
+Select the build targets and solutions you are interested in building (sub-menus can be opened with the 'right' arrow). +Then select 'Save And Begin Processing' which: +- saves your selections. +- creates configuration files for building (`ConfigLocal.cmake` / `ConfigLocal.properties`). +- cleans any previous builds (if targets to clean are selected) +- downloads any external project dependencies (eg tinygltfloader, glm, KTX-Software). +- runs project\tools\build.bat to build tools required for building. +- runs project\windows\build.bat and/or buildArm64.bat (if windows target is selected) + - which creates the MSVC solution containing your selected projects; project\windows\solution\SampleFramework.sln + - attempts to build this solution for both debug and release. +- runs project\android\build.bat (if Android target is selected) + - which runs gradle to build the apk targets for your selected projects. -Note: Setting up the jdk location does not affect the Java version used to launch the Gradle client VM, so make sure your *JAVA_HOME* is set to a valid java version -(this is specially true if you receive errors in the format: *Unsupported class file major version XX)* +## Subsequent builds -## Building +01_Configure.bat can be used to re-run builds after changes. -In the root folder there is a batch file for building and packaging on each platform +Alternately the Windows solution can be used to make changes and re-build Windows targets + - project\windows\solution\SampleFramework.sln + - project\windowsArm64\solution\SampleFramework.sln +and Android builds can be re-ran with + - project\android\build.bat -`01_BuildAndroid.bat` +If desired you can also open/build the SampleFramework using Android Studio. In Android Studio open the project/android folder (initial load of the projects takes a while, subsequent opens are fast). Using Android Studio to build is untested and not supported! If you are having problems building framework samples please test using the batch file build scripts before opening any support requests. -`02_BuildWindows.bat` +IMPORTANT NOTE: Most of the samples require binary assets to be generated before that sample can be run. Refer to each sample's README for instructions on how to perform that step for each sample you are interested in running. + +## Running -Android uses Gradle and CMake to build an Android .apk for each sample. +See the [Samples](samples) folder for instructions on building assets and running individual samples. -Windows uses CMake to build a Visual Studio solution that is then built using Visual Studio (and can then be opened in the Visual Studio IDE). An .exe is output for each sample. +Most samples also support a configuration file (`app_config.txt`) placed in the base of the sample's directory (Windows) or pushed loose to the sample's install folder (Android). -The Windows Visual Studio file is written to `project\windows\solution\vkSampleFramework.sln`. Once created for the first time it can be opened and used in Visual Studio 2019 (VS2019 has full support for editing CMakeLists.txt). When using VS2019 to compile and run, be sure to point the debugger to the correct 'Working Directory' for each sample. -Note: Depending on your sample you might need to perform certain steps before running these batch files, see the readme on the desired sample for more information about this. +### Android -## Running +Android apk are written to `build\android\\outputs\apk\debug\` . +If the Android apk was correctly built (see note above about binary assets) it can be installed with `apk install ` and run from Android. -See the [Samples](samples) folder for instructions on building assets and running individual samples. +### Windows + +Executables are written to `project\windows\solution\samples\\debug\` or `project\windowsArm64\solution\samples\\debug\`. +When running sample executables from command line ensure you are running from the relevant sample directory (not the location of the built exe). The Visual Studio solution is already configured to launch samples from the correct directory. ## Directory Structure - [/framework](framework) Contains the sample framework code. - [/framework/external](framework/external) -Contains external projects used by the framework (mostly as git submodules) +Contains external projects downloaded and extracted by Configure.py - [/project](project) Platform specific top level build files and build tools. - [/samples](samples) Samples that use the framework. +- [/samples/external](samples/external) +External projects shared between samples, downloaded and extracted by Configure.py ## License Adreno™ GPU Vulkan Code Sample Framework is licensed under the BSD 3-clause “New” or “Revised” License. Check out the [LICENSE](LICENSE) for more details. \ No newline at end of file diff --git a/assets b/assets deleted file mode 160000 index f0e8460..0000000 --- a/assets +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f0e84608e78e71e5c9a1d7c20c2e8d0b1bd7d095 diff --git a/doc/doxygen.cfg b/doc/doxygen.cfg index 25dd51c..3d6a36a 100644 --- a/doc/doxygen.cfg +++ b/doc/doxygen.cfg @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = SampleFramework +PROJECT_NAME = vkSampleFramework # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -44,7 +44,7 @@ PROJECT_NUMBER = # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "Vulkan Code Sample Framework" +PROJECT_BRIEF = "Qualcomm Vulkan Sample Framework" # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 diff --git a/doc/doxygen/footer.html b/doc/doxygen/footer.html index 6768647..8bd9a71 100644 --- a/doc/doxygen/footer.html +++ b/doc/doxygen/footer.html @@ -10,7 +10,7 @@ diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt index 946a841..238fe67 100644 --- a/framework/CMakeLists.txt +++ b/framework/CMakeLists.txt @@ -1,22 +1,27 @@ -cmake_minimum_required (VERSION 3.21 FATAL_ERROR) # 3.7 added FindVulkan, 3.10 supported MSVC c++17 (without manually setting flags), 3.19 (maybe before) supported C++20 on Win/Android, 3.21 added Android NDK support with NDK r23 although we are not currently using it! -cmake_policy(VERSION 3.7) +cmake_minimum_required (VERSION 3.25 FATAL_ERROR) # 3.7 added FindVulkan, 3.10 supported MSVC c++17 (without manually setting flags), 3.19 (maybe before) supported C++20 on Win/Android, 3.21 added Android NDK support with NDK r23 although we are not currently using it!, 3.25 for fetchontent features +include(FindVulkan) project (framework C CXX) set(CMAKE_CXX_STANDARD 20) set_property(GLOBAL PROPERTY USE_FOLDERS ON) +define_property(TARGET PROPERTY FOLDER INHERITED BRIEF_DOCS "Set the folder name." FULL_DOCS "Use to organize targets in an IDE.") +set_property(DIRECTORY "." PROPERTY FOLDER "framework/") + +include("../ConfigLocal.cmake") -add_compile_definitions(IMGUI_DEFINE_MATH_OPERATORS) +# Pull down all the external dependencies needed by the Framework +# we only do this if we are a 'top level' framework project such as with Windows (Android gradle will include the framework in each application's project but we dont want to re-get externals) +option(FRAMEWORK_DOWNLOAD_EXTERNALS "Set download/fetch external repositiories" No) +include(cmake/ExternalDependencies.cmake) -# Platform and Graphics API independant source here -# Graphics API independant (base functionality) source here +set(FRAMEWORK_LIB_OUTPUT "" CACHE STRING "Location to output framework libraries (use on Android to output static libraries from gradle)") + +# Base functionality for Framework applications (including command-line executables) set(CPP_BASE_SRC - code/system/crc32c.hpp - code/system/glm_common.hpp - code/system/math_common.hpp - code/system/os_common.cpp - code/system/os_common.h + code/main/frameworkApplicationBase.cpp + code/main/frameworkApplicationBase.hpp code/mesh/instanceGenerator.cpp code/mesh/instanceGenerator.hpp code/mesh/meshLoader.cpp @@ -25,13 +30,23 @@ set(CPP_BASE_SRC code/mesh/meshIntermediate.hpp code/mesh/octree.cpp code/mesh/octree.hpp - code/texture/textureManager.cpp - code/texture/textureManager.hpp + code/system/config.cpp + code/system/config.h + code/system/containers.cpp + code/system/containers.h + code/system/crc32c.hpp + code/system/glm_common.hpp + code/system/math_common.hpp + code/system/os_common.cpp + code/system/os_common.h ) +# Graphics API agnostic framework code set(CPP_GENERIC_SRC - code/main/frameworkApplicationBase.cpp - code/main/frameworkApplicationBase.hpp + code/allocator/threadBufferResource.hpp + code/allocator/threadBufferResourceHelper.hpp + code/allocator/threadManagedBufferResourceAllocator.hpp + code/allocator/threadMonotonicBufferResourceAllocator.hpp code/animation/animation.cpp code/animation/animation.hpp code/animation/animationData.hpp @@ -43,6 +58,12 @@ set(CPP_GENERIC_SRC code/animation/skeletonData.hpp code/animation/skeletonGltfLoader.cpp code/animation/skeletonGltfLoader.hpp + code/animation/skin.cpp + code/animation/skin.hpp + code/animation/skinData.cpp + code/animation/skinData.hpp + code/animation/skinGltfLoader.cpp + code/animation/skinGltfLoader.hpp code/camera/camera.cpp code/camera/camera.hpp code/camera/cameraController.cpp @@ -54,8 +75,13 @@ set(CPP_GENERIC_SRC code/camera/cameraData.hpp code/camera/cameraGltfLoader.cpp code/camera/cameraGltfLoader.hpp + code/graphicsApi/commandList.hpp code/graphicsApi/graphicsApiBase.cpp code/graphicsApi/graphicsApiBase.hpp + code/graphicsApi/pipeline.hpp + code/graphicsApi/renderContext.hpp + code/graphicsApi/renderPass.hpp + code/graphicsApi/renderTarget.hpp code/gui/gui.hpp code/gui/imguiBase.cpp code/gui/imguiBase.hpp @@ -71,12 +97,31 @@ set(CPP_GENERIC_SRC code/light/lightGltfLoader.hpp code/light/lightLoader.cpp code/light/lightLoader.hpp - code/material/shader.hpp - code/material/shaderModule.hpp + code/material/computable.cpp + code/material/computable.hpp + code/material/descriptorSetLayout.hpp + code/material/drawable.hpp + code/material/drawableLoader.cpp + code/material/drawableLoader.hpp + code/material/material.cpp + code/material/material.hpp + code/material/materialT.hpp + code/material/materialPass.hpp + code/material/materialManagerT.hpp + code/material/pipeline.hpp code/material/pipelineLayout.hpp code/material/pipelineVertexInputState.hpp + code/material/shader.hpp + code/material/shaderDescription.cpp + code/material/shaderDescription.hpp + code/material/shaderModule.hpp + code/material/shaderManager.cpp + code/material/shaderManager.hpp + code/material/shaderManagerT.hpp + code/material/specializationConstants.hpp code/material/specializationConstantsLayout.hpp code/memory/buffer.hpp + code/memory/drawIndirectBuffer.hpp code/memory/memory.hpp code/memory/memoryManager.hpp code/memory/memoryMapped.hpp @@ -91,23 +136,23 @@ set(CPP_GENERIC_SRC code/shadow/shadow.cpp code/shadow/shadow.hpp code/system/assetManager.hpp - code/system/config.cpp - code/system/config.h - code/system/containers.cpp - code/system/containers.h code/system/profile.cpp code/system/profile.h code/system/timer.cpp code/system/timer.hpp - code/system/worker.cpp - code/system/worker.h + code/system/Worker.cpp + code/system/Worker.h code/texture/loaderKtx.cpp code/texture/loaderKtx.hpp code/texture/loaderPpm.cpp code/texture/loaderPpm.hpp + code/texture/sampler.cpp + code/texture/sampler.hpp code/texture/texture.hpp code/texture/textureFormat.cpp code/texture/textureFormat.hpp + code/texture/textureManager.cpp + code/texture/textureManager.hpp ) # OS independant (Vulkan targetted) source here @@ -121,37 +166,40 @@ set(CPP_VULKAN_SRC code/helper/postProcessStandard.hpp code/helper/postProcessSMAA.cpp code/helper/postProcessSMAA.hpp + code/helper/zbufferReduce.cpp + code/helper/zbufferReduce.hpp + code/material/vulkan/computable.cpp + code/material/vulkan/computable.hpp + code/material/vulkan/drawable.cpp + code/material/vulkan/drawable.hpp code/material/descriptorSetDescription.hpp - code/material/descriptorSetLayout.cpp - code/material/descriptorSetLayout.hpp - code/material/material.cpp - code/material/material.hpp - code/material/materialManager.cpp + code/material/vulkan/descriptorSetLayout.cpp + code/material/vulkan/descriptorSetLayout.hpp code/material/materialManager.hpp - code/material/materialManagerT.hpp code/material/materialProps.cpp code/material/materialProps.h code/material/materialShaderDefinition.cpp code/material/materialShaderDefinition.hpp - code/material/computable.cpp - code/material/computable.hpp - code/material/drawable.cpp - code/material/drawable.hpp + code/material/vulkan/material.cpp + code/material/vulkan/material.hpp + code/material/vulkan/materialManager.cpp + code/material/vulkan/materialManager.hpp + code/material/vulkan/materialPass.cpp + code/material/vulkan/materialPass.hpp + code/material/vulkan/pipeline.cpp + code/material/vulkan/pipeline.hpp code/material/vulkan/pipelineLayout.cpp code/material/vulkan/pipelineLayout.hpp code/material/vulkan/pipelineVertexInputState.cpp code/material/vulkan/pipelineVertexInputState.hpp - code/material/shaderDescription.cpp - code/material/shaderDescription.hpp - code/material/shaderManager.cpp - code/material/shaderManager.hpp - code/material/shaderManagerT.hpp code/material/vulkan/shader.cpp code/material/vulkan/shader.hpp + code/material/vulkan/shaderManager.hpp code/material/vulkan/shaderModule.cpp code/material/vulkan/shaderModule.hpp code/material/specializationConstantDescription.hpp - code/material/vulkan/material.hpp + code/material/vulkan/specializationConstants.cpp + code/material/vulkan/specializationConstants.hpp code/material/vulkan/specializationConstantsLayout.cpp code/material/vulkan/specializationConstantsLayout.hpp code/material/vulkan/vertexDescription.cpp @@ -176,10 +224,10 @@ set(CPP_VULKAN_SRC code/shadow/shadowVsm.hpp code/shadow/shadowVulkan.cpp code/shadow/shadowVulkan.hpp - code/texture/vulkan/imageWrapper.cpp - code/texture/vulkan/imageWrapper.hpp code/texture/vulkan/loaderKtx.cpp code/texture/vulkan/loaderKtx.hpp + code/texture/vulkan/sampler.cpp + code/texture/vulkan/sampler.hpp code/texture/vulkan/texture.cpp code/texture/vulkan/texture.hpp code/texture/vulkan/textureManager.cpp @@ -190,10 +238,21 @@ set(CPP_VULKAN_SRC code/vulkan/extension.hpp code/vulkan/extensionHelpers.cpp code/vulkan/extensionHelpers.hpp + code/vulkan/extensionLib.cpp + code/vulkan/extensionLib.hpp + code/vulkan/framebuffer.cpp + code/vulkan/framebuffer.hpp code/vulkan/MeshObject.cpp code/vulkan/MeshObject.h + code/vulkan/renderContext.cpp + code/vulkan/renderContext.hpp + code/vulkan/renderPass.cpp + code/vulkan/renderPass.hpp + code/vulkan/refHandle.hpp code/vulkan/renderTarget.cpp code/vulkan/renderTarget.hpp + code/vulkan/semaphore.cpp + code/vulkan/semaphore.hpp code/vulkan/TextureFuncts.cpp code/vulkan/TextureFuncts.h code/vulkan/vulkan.cpp @@ -208,46 +267,120 @@ set(CPP_VULKAN_SRC code/vulkan/vulkan_support.hpp ) +# DX12 specific source files here +set(CPP_DX12_SRC + code/main/applicationHelperBaseDx12.cpp + code/main/applicationHelperBaseDx12.hpp + code/dx12/dx12.cpp + code/dx12/dx12.hpp + code/dx12/commandList.cpp + code/dx12/commandList.hpp + code/dx12/descriptorHeapManager.cpp + code/dx12/descriptorHeapManager.hpp + code/dx12/renderPass.cpp + code/dx12/renderPass.hpp + code/dx12/renderContext.cpp + code/dx12/renderContext.hpp + code/dx12/renderTarget.cpp + code/dx12/renderTarget.hpp + code/gui/imguiDx12.cpp + code/gui/imguiDx12.hpp + code/material/dx12/computable.cpp + code/material/dx12/computable.hpp + code/material/dx12/descriptorSetLayout.hpp + code/material/dx12/descriptorSetLayout.cpp + code/material/dx12/drawableDx12.cpp + code/material/dx12/drawableDx12.hpp + code/material/dx12/material.cpp + code/material/dx12/material.hpp + code/material/dx12/materialManager.cpp + code/material/dx12/materialManager.hpp + code/material/dx12/materialPass.hpp + code/material/dx12/materialPass.cpp + code/material/dx12/pipeline.cpp + code/material/dx12/pipeline.hpp + code/material/dx12/pipelineLayout.cpp + code/material/dx12/pipelineLayout.hpp + code/material/dx12/pipelineVertexInputState.cpp + code/material/dx12/pipelineVertexInputState.hpp + code/material/dx12/shader.hpp + code/material/dx12/shaderModule.cpp + code/material/dx12/shaderModule.hpp + code/material/dx12/specializationConstantsLayout.hpp + code/material/dx12/vertexDescription.cpp + code/material/dx12/vertexDescription.hpp + code/memory/dx12/bufferObject.cpp + code/memory/dx12/bufferObject.hpp + code/memory/dx12/indexBufferObject.cpp + code/memory/dx12/indexBufferObject.hpp + code/memory/dx12/memoryMapped.hpp + code/memory/dx12/memoryManager.cpp + code/memory/dx12/memoryManager.hpp + code/memory/dx12/uniform.cpp + code/memory/dx12/uniform.hpp + code/memory/dx12/vertexBufferObject.cpp + code/memory/dx12/vertexBufferObject.hpp + code/texture/dx12/loaderKtx.cpp + code/texture/dx12/loaderKtx.hpp + code/texture/dx12/sampler.cpp + code/texture/dx12/sampler.hpp + code/texture/dx12/texture.cpp + code/texture/dx12/texture.hpp + code/texture/dx12/textureManager.cpp + code/texture/dx12/textureManager.hpp +) + # Platform Specific source files here if(WIN32) - set(CPP_BASE_SRC ${CPP_BASE_SRC} - code/system/windows/windowsAssetManager.cpp - ) - set(CPP_GENERIC_SRC ${CPP_GENERIC_SRC} - code/main/windows/winMain.cpp - code/gui/windows/imguiWindows.cpp - ) -else() - set(CPP_GENERIC_SRC ${CPP_GENERIC_SRC} - code/main/android/androidMain.cpp - code/memory/androidHardwareBuffer.cpp - code/memory/androidHardwareBuffer.hpp - code/gui/android/imguiAndroid.cpp - code/system/android/androidAssetManager.cpp - ) - set(CPP_VULKAN_SRC ${CPP_VULKAN_SRC} - ) - include_directories( ${ANDROID_NDK}/sources/android/native_app_glue/ ) + set(CPP_BASE_SRC ${CPP_BASE_SRC} + code/system/windows/windowsAssetManager.cpp + code/main/windows/winMain.cpp + ) + set(CPP_GENERIC_SRC ${CPP_GENERIC_SRC} + code/gui/windows/imguiWindows.cpp + ) +elseif(ANDROID) + set(CPP_BASE_SRC ${CPP_BASE_SRC} + code/system/android/androidAssetManager.cpp + code/main/android/androidMain.cpp + ) + set(CPP_GENERIC_SRC ${CPP_GENERIC_SRC} + code/memory/androidHardwareBuffer.cpp + code/memory/androidHardwareBuffer.hpp + code/gui/android/imguiAndroid.cpp + ) + set(CPP_VULKAN_SRC ${CPP_VULKAN_SRC} + ) + include_directories( ${ANDROID_NDK}/sources/android/native_app_glue/ ) +elseif(UNIX) + set(CPP_BASE_SRC ${CPP_BASE_SRC} + code/system/linux/linuxAssetManager.cpp + code/main/linux/linuxMain.cpp + ) + set(CPP_GENERIC_SRC ${CPP_GENERIC_SRC} + code/gui/linux/imguiLinux.cpp + ) endif() # Framework support for Ray Tracing/Query if(TRUE) - set(CPP_VULKAN_SRC ${CPP_VULKAN_SRC} - code/vulkanRT/accelerationStructure.cpp - code/vulkanRT/accelerationStructure.hpp - code/vulkanRT/accelerationInstanceBufferObject.cpp - code/vulkanRT/accelerationInstanceBufferObject.hpp - code/vulkanRT/extensionHelpersRT.hpp - code/vulkanRT/meshObjectRT.cpp - code/vulkanRT/meshObjectRT.hpp - code/vulkanRT/meshUpdateRT.cpp - code/vulkanRT/meshUpdateRT.hpp - code/vulkanRT/sceneRT.cpp - code/vulkanRT/sceneRT.hpp - code/vulkanRT/traceable.cpp - code/vulkanRT/traceable.hpp - code/vulkanRT/vulkanRT.cpp - code/vulkanRT/vulkanRT.hpp + set(CPP_VULKAN_SRC ${CPP_VULKAN_SRC} + code/rayTracing/accelerationStructure.hpp + code/vulkanRT/accelerationStructure.cpp + code/vulkanRT/accelerationStructure.hpp + code/vulkanRT/accelerationInstanceBufferObject.cpp + code/vulkanRT/accelerationInstanceBufferObject.hpp + code/vulkanRT/extensionLibRT.hpp + code/vulkanRT/meshObjectRT.cpp + code/vulkanRT/meshObjectRT.hpp + code/vulkanRT/meshUpdateRT.cpp + code/vulkanRT/meshUpdateRT.hpp + code/vulkanRT/sceneRT.cpp + code/vulkanRT/sceneRT.hpp + code/vulkanRT/traceable.cpp + code/vulkanRT/traceable.hpp + code/vulkanRT/vulkanRT.cpp + code/vulkanRT/vulkanRT.hpp ) endif() @@ -255,14 +388,13 @@ endif() set(EXTERNAL_BASE_SRC external/tinyobjloader/tiny_obj_loader.cc ) -set(EXTERNAL_SRC +set(EXTERNAL_GENERIC_SRC external/imgui/imgui.h external/imgui/imgui.cpp external/imgui/imgui_demo.cpp external/imgui/imgui_draw.cpp external/imgui/imgui_tables.cpp external/imgui/imgui_widgets.cpp - external/implot/implot.h external/implot/implot.cpp external/implot/implot_items.cpp @@ -273,15 +405,26 @@ set(EXTERNAL_VULKAN_SRC external/imgui/backends/imgui_impl_vulkan.cpp external/imgui/backends/imgui_impl_vulkan.h ) +set(EXTERNAL_DX12_SRC + external/D3D12MemoryAllocator/src/D3D12MemAlloc.cpp + external/D3D12MemoryAllocator/include/D3D12MemAlloc.h + external/imgui/backends/imgui_impl_dx12.cpp + external/imgui/backends/imgui_impl_dx12.h +) # Platform Specific external files to compile here if(WIN32) - set(EXTERNAL_SRC ${EXTERNAL_SRC} - external/imgui/backends/imgui_impl_win32.cpp - external/imgui/backends/imgui_impl_win32.h - ) -else() - set(EXTERNAL_SRC ${EXTERNAL_SRC} + set(EXTERNAL_GENERIC_SRC ${EXTERNAL_GENERIC_SRC} + external/imgui/backends/imgui_impl_win32.cpp + external/imgui/backends/imgui_impl_win32.h + ) +elseif(ANDROID) + set(EXTERNAL_GENERIC_SRC ${EXTERNAL_GENERIC_SRC} ) +elseif(UNIX) + set(EXTERNAL_GENERIC_SRC ${EXTERNAL_GENERIC_SRC} + external/imgui/backends/imgui_impl_glfw.cpp + external/imgui/backends/imgui_impl_glfw.h + ) endif() # Json schemas here (so they are shown in the Solution Explorer) @@ -295,127 +438,233 @@ set(BASE_NATVIS_SCHEMA external/glm/util/glm.natvis external/json/nlohmann_json.natvis ) -set(NATVIS_SCHEMA - external/VulkanMemoryAllocator/src/vk_mem_alloc.natvis +set(NATVIS_GENERIC_SCHEMA external/imgui/misc/debuggers/imgui.natvis ) +set(NATVIS_VULKAN_SCHEMA + external/VulkanMemoryAllocator/src/vk_mem_alloc.natvis +) +set(NATVIS_DX12_SCHEMA + external/D3D12MemoryAllocator/src/D3D12MemAlloc.natvis +) -# 'Helper' function to call add_sub_directory() and put everything inside a named folder (rather than it littering the top level folder) -define_property(TARGET PROPERTY FOLDER INHERITED BRIEF_DOCS "Set the folder name." FULL_DOCS "Use to organize targets in an IDE.") -function(add_subdirectory_with_folder _folder_name _folder) - add_subdirectory(${_folder} ${ARGN}) - set_property(DIRECTORY "${_folder}" PROPERTY FOLDER "${_folder_name}") -endfunction() - -# Add the external KXT-Software project (restrict to ktx_read library) -if(TRUE) - set(KTX_FEATURE_TOOLS OFF) - set(KTX_FEATURE_TESTS OFF) - set(KTX_FEATURE_STATIC_LIBRARY ON) - set(KTX_FEATURE_WRITE OFF) - set(KTX_FEATURE_VULKAN ON) - set(KTX_FEATURE_GL_UPLOAD OFF) - set(BASISU_SUPPORT_OPENCL OFF) - #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) - # STRING (REGEX REPLACE "/RTC1" "/O2" ${flag_var} "${${flag_var}}") # Enable /O2 optimization level in debug builds (ktx library only) - #endforeach(flag_var) - add_subdirectory_with_folder("external/KTX-Software" external/KTX-Software EXCLUDE_FROM_ALL) - #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) - # STRING (REGEX REPLACE "/O2" "/RTC1" ${flag_var} "${${flag_var}}") # Disable /O2 optimizetion (in debug) - #endforeach(flag_var) +# Create the gfx api agnostic framework libraries +if (FRAMEWORK_framework_base) + add_library(framework_base STATIC ${CPP_BASE_SRC} ${EXTERNAL_BASE_SRC} ${BASE_NATVIS_SCHEMA}) + target_include_directories(framework_base PUBLIC code) + target_include_directories(framework_base PUBLIC external) + target_include_directories(framework_base PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc + target_include_directories(framework_base PUBLIC external/json/single_include) + if(ANDROID) + target_link_libraries(framework_base PUBLIC android log) + target_compile_options(framework_base PRIVATE -Wno-nullability-completeness) + target_compile_options(framework_base PRIVATE "$<$:-O3>" "$<$:-O3>") + target_compile_definitions(framework_base PRIVATE OS_ANDROID) + elseif(WIN32) + target_compile_definitions(framework_base PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) + elseif(UNIX) + target_compile_definitions(framework_base PRIVATE OS_LINUX) + find_package(glfw3 REQUIRED) + target_link_libraries(framework_base glfw) + else() + message(FATAL_ERROR "Need to have either ANDROID or WIN32 or UNIX defined in cmake") + endif() + + # MSVC hierachy + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" FILES ${CPP_BASE_SRC}) + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_BASE_SRC}) endif() -# Create the gfx api agnostic framework libraries -add_library(framework_base STATIC ${CPP_BASE_SRC} ${EXTERNAL_BASE_SRC} ${BASE_NATVIS_SCHEMA}) -add_library(framework STATIC ${CPP_GENERIC_SRC} ${EXTERNAL_SRC} ${JSON_SCHEMA} ${NATVIS_SCHEMA}) -target_include_directories(framework_base PUBLIC code) -target_include_directories(framework_base PUBLIC external) -target_include_directories(framework_base PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc -target_include_directories(framework_base PUBLIC external/json/single_include) -target_include_directories(framework PUBLIC code) -target_include_directories(framework PUBLIC external) -target_include_directories(framework PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc -target_include_directories(framework PUBLIC external/json/single_include) -target_include_directories(framework PUBLIC external/imgui) -target_include_directories(framework PUBLIC external/implot) +if(FRAMEWORK_framework_generic) + add_library(framework STATIC ${CPP_GENERIC_SRC} ${EXTERNAL_GENERIC_SRC} ${JSON_SCHEMA} ${NATVIS_GENERIC_SCHEMA}) + target_include_directories(framework PUBLIC code) + target_include_directories(framework PUBLIC external) + target_include_directories(framework PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc + target_include_directories(framework PUBLIC external/json/single_include) + target_include_directories(framework PUBLIC external/imgui) + target_include_directories(framework PUBLIC external/implot) + if(ANDROID) + target_compile_options(framework PRIVATE -Wno-nullability-completeness;-Wno-deprecated-volatile;-Wno-deprecated-anon-enum-enum-conversion) + target_compile_options(framework PRIVATE "$<$:-O3>" "$<$:-O3>") + target_compile_definitions(framework PRIVATE OS_ANDROID) + elseif(WIN32) + target_compile_definitions(framework PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) + elseif(UNIX) + target_compile_definitions(framework PRIVATE OS_LINUX) + endif() + + # Vulkan backend or not, set no prototypes + target_compile_definitions(framework PUBLIC IMGUI_IMPL_VULKAN_NO_PROTOTYPES) + + # MSVC hierachy + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" FILES ${CPP_GENERIC_SRC}) + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_GENERIC_SRC}) +endif() # Make sure our graphics api flags are set (Android in particular may/will not have gone through a top level CMakeLists.txt to set these) if(NOT DEFINED FRAMEWORK_ENABLE_VULKAN) set(FRAMEWORK_ENABLE_VULKAN ON) + set(FRAMEWORK_ENABLE_DX12 OFF) endif() # Vulkan framework support -if(FRAMEWORK_ENABLE_VULKAN) +if(FRAMEWORK_ENABLE_VULKAN AND FRAMEWORK_framework_vulkan) + + if(ANDROID) + set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_ANDROID_KHR) + elseif(WIN32) + set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_WIN32_KHR) + endif() + + # Add vulkan framework dependency libraries + add_subdirectory(external/volk) + #add_subdirectory(external/SPIRV-Cross) + #add_subdirectory(external/glslang) + #add_subdirectory(external/slang) + add_library(framework_vulkan STATIC ${CPP_VULKAN_SRC} ${EXTERNAL_VULKAN_SRC}) - target_include_directories(framework_vulkan PUBLIC code) - target_include_directories(framework_vulkan PUBLIC external) - target_include_directories(framework_vulkan PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc - target_include_directories(framework_vulkan PUBLIC external/json/single_include) - target_include_directories(framework_vulkan PUBLIC external/imgui) - target_include_directories(framework_vulkan PUBLIC external/implot) + target_include_directories(framework_vulkan PUBLIC code) + target_include_directories(framework_vulkan PUBLIC external) + target_include_directories(framework_vulkan PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc + target_include_directories(framework_vulkan PUBLIC external/json/single_include) + target_include_directories(framework_vulkan PUBLIC external/imgui) + target_include_directories(framework_vulkan PUBLIC external/implot) target_link_libraries(framework_vulkan framework) - find_package(Vulkan REQUIRED) - set_target_properties(Vulkan::Vulkan PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "") # remove the Vulkan incude paths from the local VulkanSDK - target_include_directories(framework_vulkan PUBLIC external/Vulkan-Headers/include) # point the framework to the Vulkan includes that we have as a submodule - if (FRAMEWORK_WINDOWS_ARM64) - target_link_directories(framework_vulkan BEFORE INTERFACE ../project/windows/libs_arm64) - target_link_libraries(framework_vulkan vulkan-1.lib) + get_target_property(VulkanHeaders_INCLUDE_DIRS Vulkan::Headers INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(framework_vulkan PUBLIC "${VulkanHeaders_INCLUDE_DIRS}") + + #set_target_properties(Vulkan::Vulkan PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "") # remove the Vulkan incude paths from the local VulkanSDK + target_include_directories(framework_vulkan PUBLIC external/Vulkan-Headers/include) # point the framework to the Vulkan includes that we have as a submodule + target_include_directories(framework_vulkan PUBLIC external/volk) # point the framework to the volk includes that we have as a submodule + target_include_directories(framework_vulkan PUBLIC external/SPIRV-Cross/include) + target_include_directories(framework_vulkan PUBLIC external/glslang) + target_include_directories(framework_vulkan PUBLIC external/slang/include) + + # Link vulkan framework library dependencies + target_link_libraries(framework_vulkan volk) + #target_link_libraries(framework_vulkan spirv-cross-core) + #target_link_libraries(framework_vulkan spirv-cross-cpp) + #target_link_libraries(framework_vulkan spirv-cross-glsl) + #target_link_libraries(framework_vulkan spirv-cross-hlsl) + #target_link_libraries(framework_vulkan spirv-cross-msl) + #target_link_libraries(framework_vulkan spirv-cross-reflect) + #target_link_libraries(framework_vulkan spirv-cross-util) + #target_link_libraries(framework_vulkan SPIRV) + #target_link_libraries(framework_vulkan glslang) + #target_link_libraries(framework_vulkan glslang-default-resource-limits) + #target_link_libraries(framework_vulkan slang) + + target_compile_definitions(framework_vulkan PUBLIC VK_ENABLE_BETA_EXTENSIONS) + + if(ANDROID) + target_compile_options(framework_vulkan PRIVATE -Wno-nullability-completeness) + target_compile_options(framework_vulkan PRIVATE "$<$:-O3>" "$<$:-O3>") + target_compile_definitions(framework_vulkan PRIVATE OS_ANDROID) + target_compile_definitions(framework_vulkan PUBLIC VK_USE_PLATFORM_ANDROID_KHR) + elseif(WIN32) + target_compile_definitions(framework_vulkan PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) + target_compile_definitions(framework_vulkan PUBLIC VK_USE_PLATFORM_WIN32_KHR) + if (FRAMEWORK_WINDOWS_ARM64) + target_link_directories(framework_vulkan BEFORE INTERFACE ../project/windows/libs_arm64) + endif() + elseif(UNIX) + target_compile_definitions(framework_vulkan PRIVATE OS_LINUX) + endif() + + # MSVC hierachy + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" PREFIX "code" FILES ${CPP_VULKAN_SRC}) + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_VULKAN_SRC}) +endif() + +# DX12 framework support +if(FRAMEWORK_ENABLE_DX12 AND FRAMEWORK_framework_dx12) + add_library(framework_dx12 STATIC ${CPP_DX12_SRC} ${EXTERNAL_DX12_SRC}) + target_include_directories(framework_dx12 PUBLIC code) + target_include_directories(framework_dx12 PUBLIC external) + target_include_directories(framework_dx12 PUBLIC external/glm) # so code can do #include "glm/mat3x3.hpp" etc + target_include_directories(framework_dx12 PUBLIC external/json/single_include) + target_include_directories(framework_dx12 PUBLIC external/imgui) + target_include_directories(framework_dx12 PUBLIC external/implot) + target_include_directories(framework_dx12 PUBLIC external/D3D12MemoryAllocator/include) + + target_link_libraries(framework_dx12 framework) + target_link_libraries(framework_dx12 d3d12.lib) + target_link_libraries(framework_dx12 dxgi.lib) + target_link_libraries(framework_dx12 dxguid.lib) + + if(ANDROID) + message(FATAL_ERROR "Android build does not support DirectX12") else() - target_link_libraries(framework_vulkan Vulkan::Vulkan) + target_compile_definitions(framework_dx12 PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) endif() + + # MSVC hierachy + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" PREFIX "code" FILES ${CPP_DX12_SRC}) + source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_DX12_SRC}) endif() # KTX library -target_link_libraries(framework ktx_read) +if(FRAMEWORK_framework_generic AND FRAMEWORK_framework_external_KTX-Software) + target_link_libraries(framework PUBLIC ktx_read) +endif() if(ANDROID) - # Setup Android native_app_glue - #include_directories( ${ANDROID_NDK}/sources/android/native_app_glue/ ) - #add_library( app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c ) - #target_link_libraries( framework app-glue ) - message("ndk at ${ANDROID_NDK}") - - # Export ANativeActivity_onCreate(), - # Refer to: https://github.com/android-ndk/ndk/issues/381. - set(CMAKE_SHARED_LINKER_FLAGS - "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") - set(CMAKE_SHARED_LINKER_FLAGS - "${CMAKE_SHARED_LINKER_FLAGS} -u android_main") - - target_link_libraries(framework_base android log) - - target_compile_options(framework_base PRIVATE -Wno-nullability-completeness) - target_compile_options(framework PRIVATE -Wno-nullability-completeness;-Wno-deprecated-volatile;-Wno-deprecated-anon-enum-enum-conversion) - target_compile_options(framework_vulkan PRIVATE -Wno-nullability-completeness) - - target_compile_definitions(framework_base PRIVATE OS_ANDROID) - target_compile_definitions(framework PRIVATE OS_ANDROID) - target_compile_definitions(framework_vulkan PRIVATE OS_ANDROID) -endif() + # Setup Android native_app_glue + #include_directories( ${ANDROID_NDK}/sources/android/native_app_glue/ ) + #add_library( app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c ) + #target_link_libraries( framework app-glue ) + message("ndk at ${ANDROID_NDK}") -if(WIN32) - target_compile_definitions(framework_base PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) - target_compile_definitions(framework PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) - if (FRAMEWORK_ENABLE_VULKAN) - target_compile_definitions(framework_vulkan PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS) - endif() + # Export ANativeActivity_onCreate(), + # Refer to: https://github.com/android-ndk/ndk/issues/381. + set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") + set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} -u android_main") endif() # framework links framework_base -target_link_libraries(framework framework_base) - -if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.8") - # create MSVC hierachy (if appropriate) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" PREFIX "code" FILES ${CPP_VULKAN_SRC}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" FILES ${CPP_GENERIC_SRC}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/code" FILES ${CPP_BASE_SRC}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_BASE_SRC}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_SRC}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/external" PREFIX "external" FILES ${EXTERNAL_VULKAN_SRC}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/schema" PREFIX "schema" FILES ${JSON_SCHEMA}) - source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "natvis" FILES ${NATVIS_SCHEMA}) +if(FRAMEWORK_framework_generic) + target_link_libraries(framework PUBLIC framework_base) +endif() + + + +# Potentially build shared library versions too and copy the static library into a more easily accessable location for potential use by other projects. +# We likely will do this for the 'framework' project only (projects that use the framework dont need to re-build the shared library) +if(FRAMEWORK_LIB_OUTPUT) + add_library(framework_base_shared SHARED code/main/framework_static_empty.cpp) + target_link_libraries(framework_base_shared PUBLIC framework_base) + add_custom_command(TARGET framework_base POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${FRAMEWORK_LIB_OUTPUT}/${CMAKE_BUILD_TYPE}/$) + + add_library(framework_shared SHARED code/main/framework_static_empty.cpp) + if(FRAMEWORK_framework_generic) + target_link_libraries(framework_shared PUBLIC framework) + add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${FRAMEWORK_LIB_OUTPUT}/${CMAKE_BUILD_TYPE}/$) + if(FRAMEWORK_framework_external_KTX-Software) + add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${FRAMEWORK_LIB_OUTPUT}/${CMAKE_BUILD_TYPE}/$) + endif() + endif() + + if (FRAMEWORK_ENABLE_VULKAN AND FRAMEWORK_framework_vulkan) + add_library(framework_vulkan_shared SHARED code/main/framework_static_empty.cpp) + target_link_libraries(framework_vulkan_shared PUBLIC framework_vulkan) + add_custom_command(TARGET framework_vulkan POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${FRAMEWORK_LIB_OUTPUT}/${CMAKE_BUILD_TYPE}/$) + endif() + if (FRAMEWORK_ENABLE_DX12) + add_library(framework_dx12_shared SHARED code/main/framework_static_empty.cpp) + target_link_libraries(framework_dx12_shared PUBLIC framework_dx12) + endif() + endif() + + +# MSVC hierachy +source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/schema" PREFIX "schema" FILES ${JSON_SCHEMA}) +source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "natvis" FILES ${NATVIS_SCHEMA}) + + diff --git a/framework/android/AndroidManifest.xml b/framework/android/AndroidManifest.xml new file mode 100644 index 0000000..4a201d0 --- /dev/null +++ b/framework/android/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/framework/build.gradle b/framework/build.gradle index db6e81a..3b007f4 100644 --- a/framework/build.gradle +++ b/framework/build.gradle @@ -1,50 +1,95 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 26 + compileSdkVersion 33 + namespace "com.qualcomm.sgs.framework" defaultConfig { minSdkVersion 26 - targetSdkVersion 26 - versionCode 1 - versionName "1.0" + targetSdkVersion 33 + ndkVersion "${project.ndkVersionDefault}" ndk { abiFilters 'arm64-v8a' } + externalNativeBuild { + cmake { + arguments "-DFRAMEWORK_DOWNLOAD_EXTERNALS=On", "-DFRAMEWORK_LIB_OUTPUT=${rootDir}/../../build/android/${project.name}", "-DANDROID_ALLOW_UNDEFINED_SYMBOLS=On" + version "3.25.0+" + } + } + } + + lintOptions { + tasks.lint.enabled = false } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - // signingConfig signingConfigs.unsigned + packagingOptions { + //doNotStrip '**/*.so' + } } debug { debuggable = true jniDebuggable = true + packagingOptions { + //doNotStrip '**/*.so' + } } } sourceSets { main { - // jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - // //java.srcDirs = ['src'] - // res.srcDirs = ['project/android/res'] - // assets.srcDirs = ['assets'] - - // Uncomment this to enable validation - //jniLibs { - // srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" - //} + manifest.srcFile 'android/AndroidManifest.xml' } } externalNativeBuild { cmake { - version "3.10.2+" + version "3.25.0+" path 'CMakeLists.txt' + buildStagingDirectory "../build/cxx/${project.name}" } } + task extractFrameworkAarDebug(type: Copy) { + def aarPath = file("${project.buildDir}/outputs/aar/framework-debug.aar") + + from zipTree("${aarPath}") + into "${project.buildDir}/extracted/Debug" + include "**/*.so" + + eachFile { + def segments = it.getRelativePath().getSegments() as List + println segments + it.setPath(segments.tail().join("/")) + return it + } + includeEmptyDirs = false + } + + task extractFrameworkAarRelease(type: Copy) { + def aarPath = file("${project.buildDir}/outputs/aar/framework-release.aar") + doLast { + project.logger.lifecycle("Extracted ${aarPath} file(s).... into ${project.buildDir}/extracted/RelWithDebInfo/") + } + from zipTree("${aarPath}") + into "${project.buildDir}/extracted/RelWithDebInfo/" + include "**/*.so" + + eachFile { + def segments = it.getRelativePath().getSegments() as List + println segments + it.setPath(segments.tail().join("/")) + return it + } + includeEmptyDirs = false + } + + afterEvaluate { + //assembleDebug.finalizedBy extractFrameworkAarDebug + //assembleRelease.finalizedBy extractFrameworkAarRelease + } } diff --git a/framework/cmake/AddShadersDir.cmake b/framework/cmake/AddShadersDir.cmake new file mode 100644 index 0000000..a6f6668 --- /dev/null +++ b/framework/cmake/AddShadersDir.cmake @@ -0,0 +1,37 @@ + +# +# Build shaders +# Add everything with .frag .vert .comp .json (etc) extension from the shaders/ directory and build using Vulkan shader compiler. +# If a sample needs more fine-grained control over this it can 'include(CompileShadersHelper)' and call compile_glsl etc manually. +# +include(CompileShadersHelper) + +function(scan_for_shaders) + # Optional destination path for compiled shaders + set(SHADER_OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders") + if(DEFINED SHADER_DESTINATION) + set(SHADER_OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${SHADER_DESTINATION}") + endif() + + # Use project name to generate unique target names + set(target_prefix "${PROJECT_NAME}") + + # Scan through shaders directory looking for shader source files and generate build commands for them + file(GLOB glsl_files "shaders/*.vert" "shaders/*.frag" "shaders/*.comp") + compile_glsl("${glsl_files}" "vulkan1.1" "${SHADER_OUTPUT_PATH}" "${target_prefix}_GLSL") + + # Ray Tracing and Mesh shaders need to target Vulkan 1.2 + file(GLOB rt_files "shaders/*.rgen" "shaders/*.rint" "shaders/*.rahit" "shaders/*.rchit" "shaders/*.rmiss" "shaders/*.rcall" "shaders/*.mesh" "shaders/*.task") + compile_glsl("${rt_files}" "spirv1.4" "${SHADER_OUTPUT_PATH}" "${target_prefix}_RTMESH") + + # HLSL files (compiled to SPIR-V). Entry point assumed to be "main". + file(GLOB hlsl_files "shaders/*.comp.hlsl") + compile_hlsl("${hlsl_files}" "vulkan1.1" "${SHADER_OUTPUT_PATH}" "${target_prefix}_HLSL") + + # JSON configuration files + file(GLOB json_files "shaders/*.json") + copy_json("${json_files}" "json" "${SHADER_OUTPUT_PATH}" "${target_prefix}_JSON") + + # Add shaders (sources) into a 'Shaders' folder for Visual Studio + source_group("shaders" FILES ${SHADERS_SRC}) +endfunction() \ No newline at end of file diff --git a/framework/cmake/CompileAlias.cmake b/framework/cmake/CompileAlias.cmake new file mode 100644 index 0000000..71d19bc --- /dev/null +++ b/framework/cmake/CompileAlias.cmake @@ -0,0 +1,73 @@ +# +# Parse and build shader alias +# +# Inputs: +# INPUT_ALIAS +# OUTPUT_SHADER +# OUTPUT_SHADER_DEP + +file(READ ${INPUT_ALIAS} ALIAS_JSON) + +string(JSON INPUT_SHADER GET ${ALIAS_JSON} Shader) +string(JSON INPUT_DEFINES GET ${ALIAS_JSON} Defines) +string(JSON TARGET_ENV ERROR_VARIABLE TARGET_ENV_JSON_ERROR GET ${ALIAS_JSON} TargetEnv) +if(NOT ${TARGET_ENV_JSON_ERROR} STREQUAL "NOTFOUND") + set(TARGET_ENV "vulkan1.1") +endif() + +string(JSON STAGE ERROR_VARIABLE STAGE_JSON_ERROR GET ${ALIAS_JSON} Stage) +if(NOT ${STAGE_JSON_ERROR} STREQUAL "NOTFOUND") + set(STAGE_OPT "") +else() + set(STAGE_OPT "-S ${STAGE}") +endif() + +# expand out the "Defines: []" JSON array +set(DEFINES "") +string(JSON INPUT_DEFINES_COUNT LENGTH ${INPUT_DEFINES}) +if(INPUT_DEFINES_COUNT GREATER 0) + math(EXPR INPUT_DEFINES_COUNT "${INPUT_DEFINES_COUNT} - 1") + foreach(DEFINE_IDX RANGE ${INPUT_DEFINES_COUNT}) + string(JSON DEFINE GET ${INPUT_DEFINES} ${DEFINE_IDX}) + list(APPEND DEFINES "-D${DEFINE}") + endforeach() +endif() +string(REPLACE ";" " " DEFINES "${DEFINES}") + +message(VERBOSE "Defines ${DEFINES}") + +cmake_path(REMOVE_FILENAME INPUT_ALIAS OUTPUT_VARIABLE INPUT_ALIAS_PATH) +cmake_path(APPEND I ${INPUT_ALIAS_PATH} ${INPUT_SHADER}) +set(INPUT_SHADER ${I}) +cmake_path(GET INPUT_SHADER EXTENSION LAST_ONLY INPUT_SHADER_EXT) + +#message("Shader ${INPUT_SHADER}") +#message("Defines ${INPUT_DEFINES}") +#message("GLSL_VALIDATOR ${GLSL_VALIDATOR}") +#message("Shader ext ${INPUT_SHADER_EXT}") + +if ( "${INPUT_SHADER_EXT}" STREQUAL ".hlsl" ) + # HLSL + message(VERBOSE "COMMAND ${DXC_EXE} ${SHADER_INCLUDE} -T cs_6_7 -spirv -Wno-conversion -fspv-target-env=${TARGET_ENV} ${DEFINES} -enable-16bit-types -E main -Fo ${OUTPUT_SHADER} -MF ${OUTPUT_SHADER_DEP} ${INPUT_SHADER}") + separate_arguments(ARGS NATIVE_COMMAND PROGRAM SEPARATE_ARGS "${DXC_EXE} ${SHADER_INCLUDE} -T cs_6_7 -spirv -Wno-conversion -fspv-target-env=${TARGET_ENV} ${DEFINES} -enable-16bit-types -E main -Fo ${OUTPUT_SHADER} ${INPUT_SHADER}") + execute_process( + COMMAND ${ARGS} "-MF ${OUTPUT_SHADER_DEP}" + COMMAND_ECHO STDOUT + COMMAND_ERROR_IS_FATAL ANY + ) + execute_process( + COMMAND ${ARGS} + COMMAND_ECHO STDOUT + COMMAND_ERROR_IS_FATAL ANY + ) +else() + # GLSL + message(VERBOSE "COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet ${STAGE_OPT} --target-env ${TARGET_ENV} ${DEFINES} ${INPUT_SHADER} -o ${OUTPUT_SHADER} --depfile ${OUTPUT_SHADER_DEP}") + separate_arguments(ARGS NATIVE_COMMAND PROGRAM SEPARATE_ARGS "${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet ${STAGE_OPT} --target-env ${TARGET_ENV} ${DEFINES} ${INPUT_SHADER} -o ${OUTPUT_SHADER} --depfile ${OUTPUT_SHADER_DEP}") + execute_process( + COMMAND ${ARGS} + COMMAND_ECHO STDOUT + COMMAND_ERROR_IS_FATAL ANY + ) +endif() + diff --git a/framework/cmake/CompileShadersHelper.cmake b/framework/cmake/CompileShadersHelper.cmake new file mode 100644 index 0000000..ee21404 --- /dev/null +++ b/framework/cmake/CompileShadersHelper.cmake @@ -0,0 +1,172 @@ +# +# Helper for building shaders +# Implements function "compile_glsl" which should be used to compile a list of shaders +# Implements function "compile_hlsl" which should be used to compile a list of shaders +# Implements function "copy_json" which copies a list of shader json configs +# Implements function "compile_alias" which compiles a list of shader .alias files +# + +# Make sure we have the Vulkan compiler +find_program( + GLSL_VALIDATOR + glslangValidator + DOC "Vulkan Shader Compiler (glslangValidator) (is Vulkan SDK installed?)" + REQUIRED +) + +# Make sure we have the DXC compiler. See if it is installed alngside Vulkan first. +if(DEFINED ENV{VULKAN_SDK}) + cmake_path(SET VULKAN_SDK_PATH NORMALIZE $ENV{VULKAN_SDK}) + find_program( + DXC_EXE + dxc + HINTS ${VULKAN_SDK_PATH} + PATH_SUFFIXES Bin + NO_DEFAULT_PATH + DOC "Microsoft Shader compiler (dxc) (is Vulkan SDK installed?)" + OPTIONAL + ) +endif() + +# We couldnt find dxc installed with Vulkan, look for it on the path (should find the Windows SDK version) +find_program( + DXC_EXE + dxc + DOC "Microsoft Shader compiler (dxc) (is Vulkan SDK installed?)" + REQUIRED +) + +# Runs the command to get the pluginval version (more recent versions of dcx support --version, older ones dont and print the version inside -help) +if (NOT DEFINED ENV{DXC_VERSION}) + message("DCX compiler found at: ${DXC_EXE}") + execute_process(COMMAND ${DXC_EXE} --help + OUTPUT_VARIABLE DXC_VERSION_RAW + ERROR_VARIABLE DXC_VERSION_RAW) + string(REGEX MATCH "Version: ([^\r\n]+)[\r\n]" + DXC_VERSION "${DXC_VERSION_RAW}") + string(REGEX REPLACE "Version: (.*)" + "\\1" + DXC_VERSION "${DXC_VERSION}") + message( "DXC version: ${DXC_VERSION}" ) + set(ENV{DXC_VERSION} ${DXC_VERSION}) +endif() + + +# Custom shader include direcotry +if(DEFINED SHADER_INCLUDE) + list(JOIN SHADER_INCLUDE ";" SHADER_INCLUDE_TMP) + cmake_path(CONVERT "${SHADER_INCLUDE_TMP}" TO_NATIVE_PATH_LIST SHADER_INCLUDE) + list(TRANSFORM SHADER_INCLUDE PREPEND "-I") +else() + set(SHADER_INCLUDE "-I.") +endif() + +# Ensure we have a place to put the .d dependency files emitted by the compiler +set(DEPENDS_PATH ${CMAKE_CURRENT_BINARY_DIR}/Media/Shaders/) +file(MAKE_DIRECTORY ${DEPENDS_PATH}) +if (NOT DEFINED SHADERS_SRC) + set(SHADERS_SRC "") +endif() + +function(compile_glsl files targetenv dst_dir target_name) + set(output_files "") + foreach(file ${files}) + get_filename_component(output_filename ${file} NAME) + set(output_shader "${dst_dir}/${output_filename}.spv") + set(output_shader_dep "${DEPENDS_PATH}/${output_filename}.spv.d") + + add_custom_command( + OUTPUT ${output_shader} + MAIN_DEPENDENCY ${file} + DEPFILE ${output_shader_dep} + COMMAND ${CMAKE_COMMAND} -E make_directory ${dst_dir} + COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V ${file} -o ${output_filename}.spv --target-env ${targetenv} --quiet --depfile ${output_shader_dep} + COMMAND ${CMAKE_COMMAND} -E rename ${output_filename}.spv ${output_shader} + ) + list(APPEND output_files ${output_shader}) + list(APPEND SHADERS_SRC ${file}) + endforeach() + + add_custom_target(${target_name} ALL DEPENDS ${output_files}) + set_target_properties(${target_name} PROPERTIES FOLDER "shaders") + if(TARGET ${PROJECT_NAME}) + add_dependencies(${PROJECT_NAME} ${target_name}) + endif() + set(SHADERS_SRC ${SHADERS_SRC} PARENT_SCOPE) +endfunction() + +function(compile_hlsl files targetenv dst_dir target_name) + set(output_files "") + foreach(file ${files}) + get_filename_component(output_filename ${file} NAME) + set(output_shader "${dst_dir}/${output_filename}.spv") + set(output_shader_dep "${DEPENDS_PATH}/${output_filename}.spv.d") + + add_custom_command( + OUTPUT ${output_shader} + MAIN_DEPENDENCY ${file} + DEPFILE ${output_shader_dep} + COMMAND ${CMAKE_COMMAND} -E make_directory ${dst_dir} + COMMAND ${DXC_EXE} ${SHADER_INCLUDE} -T cs_6_7 -spirv -Wno-conversion -fspv-target-env=${targetenv} -enable-16bit-types -E main ${file} -Fo ${output_filename}.spv -MF ${output_shader_dep} + COMMAND ${CMAKE_COMMAND} -E rename ${output_filename}.spv ${output_shader} + ) + list(APPEND output_files ${output_shader}) + list(APPEND SHADERS_SRC ${file}) + endforeach() + + add_custom_target(${target_name} ALL DEPENDS ${output_files}) + set_target_properties(${target_name} PROPERTIES FOLDER "shaders") + if(TARGET ${PROJECT_NAME}) + add_dependencies(${PROJECT_NAME} ${target_name}) + endif() + set(SHADERS_SRC ${SHADERS_SRC} PARENT_SCOPE) +endfunction() + +function(copy_json files targetenv dst_dir target_name) + set(output_files "") + foreach(file ${files}) + get_filename_component(output_filename ${file} NAME) + set(output_json "${dst_dir}/${output_filename}") + + add_custom_command( + OUTPUT ${output_json} + MAIN_DEPENDENCY ${file} + COMMAND ${CMAKE_COMMAND} -E make_directory ${dst_dir} + COMMAND ${CMAKE_COMMAND} -E copy ${file} ${output_json} + ) + list(APPEND output_files ${output_json}) + list(APPEND SHADERS_SRC ${file}) + endforeach() + + add_custom_target(${target_name} ALL DEPENDS ${output_files}) + set_target_properties(${target_name} PROPERTIES FOLDER "shaders") + if(TARGET ${PROJECT_NAME}) + add_dependencies(${PROJECT_NAME} ${target_name}) + endif() + set(SHADERS_SRC ${SHADERS_SRC} PARENT_SCOPE) +endfunction() + +function(compile_alias files) + foreach(file ${files}) + set(INPUT_ALIAS ${CMAKE_CURRENT_SOURCE_DIR}/${file}) + get_filename_component(OUTPUT_FILENAME ${file} NAME_WLE) + set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) + set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) + cmake_path(NATIVE_PATH INPUT_ALIAS NORMALIZE INPUT_ALIAS_NATIVE) + cmake_path(NATIVE_PATH OUTPUT_SHADER NORMALIZE OUTPUT_SHADER_NATIVE) + cmake_path(NATIVE_PATH OUTPUT_SHADER_DEP NORMALIZE OUTPUT_SHADER_DEP_NATIVE) + + add_custom_command( + OUTPUT ${OUTPUT_SHADER} + MAIN_DEPENDENCY ${INPUT_ALIAS} + DEPFILE ${OUTPUT_SHADER_DEP} + COMMENT "Aliasing ... ${INPUT_ALIAS} to ${OUTPUT_SHADER} (dependency file ${OUTPUT_SHADER_DEP})" + #COMMAND "echo Aliasing ... ${INPUT_ALIAS} to ${OUTPUT_SHADER} (dependency file ${OUTPUT_SHADER_DEP})" + COMMAND ${CMAKE_COMMAND} -DINPUT_ALIAS=${INPUT_ALIAS} -DOUTPUT_SHADER=${OUTPUT_SHADER} -DOUTPUT_SHADER_DEP=${OUTPUT_SHADER_DEP} -DGLSL_VALIDATOR=${GLSL_VALIDATOR} -DDXC_EXE=${DXC_EXE} -DSHADER_INCLUDE=${SHADER_INCLUDE} -P ${CMAKE_CURRENT_LIST_DIR}/CompileAlias.cmake + ) + list(APPEND SHADERS_SRC ${file}) + + unset(OUTPUT_JSON) + endforeach() + set(SHADERS_SRC ${SHADERS_SRC} PARENT_SCOPE) +endfunction() diff --git a/framework/cmake/ExternalDependencies.cmake b/framework/cmake/ExternalDependencies.cmake new file mode 100644 index 0000000..c54b96a --- /dev/null +++ b/framework/cmake/ExternalDependencies.cmake @@ -0,0 +1,318 @@ +# +# Cmake script to pull down external dependencies needed by the Framework project +# +cmake_minimum_required (VERSION 3.25) +if(POLICY CMP0169) + cmake_policy(SET CMP0169 OLD) +endif() + +set(FRAMEWORK_EXTERNALS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external) +message("FRAMEWORK_EXTERNALS_DIR ${FRAMEWORK_EXTERNALS_DIR}") + + +if (TRUE) + +# build the required externals +if(NOT FRAMEWORK_framework_external) + message(FATAL_ERROR "Expecting FRAMEWORK_framework_external to be set, did you run \"python configure.py\" to generate \"ConfigLocal.cmake\"?") +else() + + if(FRAMEWORK_framework_external_VulkanMemoryAllocator) + # Using as 'header only' library (nothing to do here) + endif() + + if(FRAMEWORK_framework_external_tinyobjloader) + # Using as 'header only' library (nothing to do here) + endif() + + if(FRAMEWORK_framework_external_tinygltf) + # Using as 'header only' library (nothing to do here) + endif() + + if (FRAMEWORK_framework_external_imgui) + endif() + + if(FRAMEWORK_framework_external_Vulkan-Headers) + # Using as 'header only' library (nothing to do here) + endif() + + if(FRAMEWORK_framework_external_glm) + # Using as 'header only' library (nothing to do here) + endif() + + if(FRAMEWORK_framework_external_json) + # Using as 'header only' library (nothing to do here) + endif() + + if(FRAMEWORK_framework_external_eigen) + # Using as 'header only' library (nothing to do here) + endif() + + if(FRAMEWORK_framework_external_KTX-Software) + # Add the external KXT-Software project (restrict to ktx_read library) + set(KTX_FEATURE_TOOLS OFF) + set(KTX_FEATURE_TESTS OFF) + set(KTX_FEATURE_STATIC_LIBRARY ON) + set(KTX_FEATURE_WRITE OFF) + set(KTX_FEATURE_VULKAN ON) + set(KTX_FEATURE_GL_UPLOAD OFF) + set(BASISU_SUPPORT_OPENCL OFF) + #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) + # STRING (REGEX REPLACE "/RTC1" "/O2" ${flag_var} "${${flag_var}}") # Enable /O2 optimization level in debug builds (ktx library only) + #endforeach(flag_var) + set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE) # disable 'deprecated' warnings from cmake (ktx library throws a deprecation warning) + add_subdirectory(${FRAMEWORK_EXTERNALS_DIR}/KTX-Software EXCLUDE_FROM_ALL) + set(CMAKE_WARN_DEPRECATED ON CACHE BOOL "" FORCE) # restore 'deprecated' warnings from cmake + #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) + # STRING (REGEX REPLACE "/O2" "/RTC1" ${flag_var} "${${flag_var}}") # Disable /O2 optimizetion (in debug) + #endforeach(flag_var) + endif() + + if(FRAMEWORK_framework_external_D3D12MemoryAllocator) + # Using as 'header only' library (nothing to do here) + endif() + +endif() + + + + + +else() + +include(FetchContent) + +option(FRAMEWORK_DOWNLOAD_EXTERNALS "Set download/fetch external repositiories" Yes) + +set(FETCHCONTENT_QUIET Off) +set(FETCHCONTENT_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/_deps) +set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE) # disable 'deprecated' warnings from cmake while we pull the depenencies (some of which have these warnings!) + +# Add the external KXT-Software project +function(AddKtxSubdirectory_full) + #set(_saved_CMAKE_MESSAGE_LOG_LEVEL ${CMAKE_MESSAGE_LOG_LEVEL}) + #set(CMAKE_MESSAGE_LOG_LEVEL NOTICE) # KTX is noisy fetching content, quieting it down! + set(KTX_FEATURE_TOOLS OFF) + set(KTX_FEATURE_TESTS OFF) + set(KTX_FEATURE_STATIC_LIBRARY ON) + set(KTX_FEATURE_WRITE OFF) + set(KTX_FEATURE_VULKAN ON) + set(KTX_FEATURE_GL_UPLOAD OFF) + set(BASISU_SUPPORT_OPENCL OFF) + #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) + # STRING (REGEX REPLACE "/RTC1" "/O2" ${flag_var} "${${flag_var}}") # Enable /O2 optimization level in debug builds (ktx library only) + #endforeach(flag_var) + #add_subdirectory_with_folder(${ktx-software_SOURCE_DIR} ${ktx-software_SOURCE_DIR} EXCLUDE_FROM_ALL) + #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) + # STRING (REGEX REPLACE "/O2" "/RTC1" ${flag_var} "${${flag_var}}") # Disable /O2 optimizetion (in debug) + #endforeach(flag_var) + + message("ktx-software_SOURCE_DIR ${ktx-software_SOURCE_DIR} ktx-software_BINARY_DIR ${ktx-software_BINARY_DIR}") + + add_subdirectory(${ktx-software_SOURCE_DIR} ${ktx-software_BINARY_DIR}) + #set(CMAKE_MESSAGE_LOG_LEVEL ${_saved_CMAKE_MESSAGE_LOG_LEVEL}) +endfunction() + +# Add the external KXT-Software project (restrict to ktx_read library) +function(AddKtxSubdirectory_partial) + set(KTX_FEATURE_TOOLS OFF) + set(KTX_FEATURE_TESTS OFF) + set(KTX_FEATURE_STATIC_LIBRARY ON) + set(KTX_FEATURE_WRITE OFF) + set(KTX_FEATURE_VULKAN ON) + set(KTX_FEATURE_GL_UPLOAD OFF) + set(BASISU_SUPPORT_OPENCL OFF) + #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) + # STRING (REGEX REPLACE "/RTC1" "/O2" ${flag_var} "${${flag_var}}") # Enable /O2 optimization level in debug builds (ktx library only) + #endforeach(flag_var) + set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE) # disable 'deprecated' warnings from cmake (ktx library throws a deprecation warning) + add_subdirectory(${ktx-software_SOURCE_DIR} EXCLUDE_FROM_ALL) + set(CMAKE_WARN_DEPRECATED ON CACHE BOOL "" FORCE) # restore 'deprecated' warnings from cmake + #foreach(flag_var CMAKE_CXX_FLAGS_DEBUG) + # STRING (REGEX REPLACE "/O2" "/RTC1" ${flag_var} "${${flag_var}}") # Disable /O2 optimizetion (in debug) + #endforeach(flag_var) + set_property(DIRECTORY "${ktx-software_SOURCE_DIR}" PROPERTY FOLDER "framework/external/KTX-Software") +endfunction() + + +if(FRAMEWORK_DOWNLOAD_EXTERNALS) + message("Downloading framework external dependencies") +else() + set(FETCHCONTENT_FULLY_DISCONNECTED On) + message("Adding framework external dependencies") +endif() + + +###################### +# TINY OBJECT LOADER # +###################### +message(STATUS ">>> Fetching Tiny Object Loader") +FetchContent_Declare( + tinyobjloader + GIT_REPOSITORY https://github.com/tinyobjloader/tinyobjloader + GIT_TAG e39c1737bc61c8dce28be7932cfe839d408e7838 + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/tinyobjloader +) +FetchContent_MakeAvailable(tinyobjloader) +set_property(DIRECTORY "${tinyobjloader_SOURCE_DIR}" PROPERTY FOLDER "framework/external/tinyobjloader") + +############# +# TINY GLTF # +############# +message(STATUS ">>> Fetching Tiny GLTF") +set(TINYGLTF_BUILD_EXAMPLES OFF CACHE INTERNAL "") +FetchContent_Declare( + tinygltf + GIT_REPOSITORY https://github.com/syoyo/tinygltf + GIT_TAG 925b83627a136d24411067031893dc8ea661444d + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/tinygltf +) +FetchContent_MakeAvailable(tinygltf) +set_property(DIRECTORY "${tinygltf_SOURCE_DIR}" PROPERTY FOLDER "framework/external/tinygltf") + +######### +# IMGUI # +######### +message(STATUS ">>> Fetching ImGui") +FetchContent_Declare( + imgui + #GIT_REPOSITORY https://github.com/ocornut/imgui + #GIT_TAG c71a50deb5ddf1ea386b91e60fa2e4a26d080074 + URL https://github.com/ocornut/imgui/archive/refs/tags/v1.87.tar.gz + URL_MD5 b154fabaa2b3f62e3ec6325be60bbad2 + DOWNLOAD_EXTRACT_TIMESTAMP ON + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/imgui +) +# ImGui doesn't have a cmakelists, add_subdirectory(${imgui_SOURCE_DIR} ${imgui_BINARY_DIR}) will not work here, instead +# we add the source files manually in the framework projects +FetchContent_GetProperties(imgui) +if(NOT imgui_POPULATED) + FetchContent_Populate(imgui) +endif() + +####### +# GLM # +####### +message(STATUS ">>> Fetching GLM") +FetchContent_Declare( + glm + GIT_REPOSITORY https://github.com/g-truc/glm + GIT_TAG 6ad79aae3eb5bf809c30bf1168171e9e55857e45 + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/glm +) +FetchContent_MakeAvailable(glm) +set_property(DIRECTORY "${glm_SOURCE_DIR}" PROPERTY FOLDER "framework/external/glm") + +######## +# JSON # +######## +message(STATUS ">>> Fetching JSON") +FetchContent_Declare( + json + #GIT_REPOSITORY https://github.com/nlohmann/json + #GIT_TAG db78ac1d7716f56fc9f1b030b715f872f93964e4 + URL https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz + URL_MD5 4b67aba51ddf17c798e80361f527f50e + DOWNLOAD_EXTRACT_TIMESTAMP ON + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/json +) +SET(JSON_BuildTests OFF) +FetchContent_MakeAvailable(json) +set_property(DIRECTORY "${json_SOURCE_DIR}" PROPERTY FOLDER "framework/external/json") + +########################### +# VULKAN MEMORY ALLOCATOR # +########################### +message(STATUS ">>> Fetching Vulkan Memory Allocator") +FetchContent_Declare( + vma + #GIT_REPOSITORY https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator + #GIT_TAG db4c1639bf30c51bbddcd813c6521b3473afa1a1 + URL https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/refs/tags/v3.0.1.tar.gz + URL_MD5 8571f3def0ff86f228e2864c907ba0b3 + DOWNLOAD_EXTRACT_TIMESTAMP ON + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/VulkanMemoryAllocator +) +# Using as 'header only' library +FetchContent_GetProperties(vma) +if(NOT vma_POPULATED) + FetchContent_Populate(vma) +endif() + +################## +# VULKAN HEADERS # +################## +message(STATUS ">>> Fetching Vulkan Headers") +FetchContent_Declare( + Vulkan-Headers + #GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers + #GIT_TAG cbcad3c0587dddc768d76641ea00f5c45ab5a278 + URL https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/vulkan-sdk-1.3.296.0.tar.gz + URL_MD5 c1e5eaee17f6dfde2e5b843d1e9380d4 + DOWNLOAD_EXTRACT_TIMESTAMP ON + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/Vulkan-Headers +) +FetchContent_MakeAvailable(Vulkan-Headers) +set_property(DIRECTORY "${vulkan-headers_SOURCE_DIR}" PROPERTY FOLDER "framework/external/Vulkan-Headers") + +######### +# EIGEN # +######### +message(STATUS ">>> Fetching Eigen") +FetchContent_Declare( + eigen + #GIT_REPOSITORY https://gitlab.com/libeigen/eigen + #GIT_TAG 3147391d946bb4b6c68edd901f2add6ac1f31f8c + URL https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz + URL_MD5 4c527a9171d71a72a9d4186e65bea559 + DOWNLOAD_EXTRACT_TIMESTAMP ON + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/eigen +) +# Eigen is header-only +FetchContent_GetProperties(eigen) +if(NOT eigen_POPULATED) + FetchContent_Populate(eigen) +endif() + +################ +# KTX SOFTWARE # +################ +message(STATUS ">>> Fetching KTX Software") +FetchContent_Declare( + KTX-Software + #GIT_REPOSITORY https://github.com/KhronosGroup/KTX-Software + #GIT_TAG 7149d4fc08bb00c070883d174e46e102a6974a8c + URL https://github.com/KhronosGroup/KTX-Software/archive/refs/tags/v4.1.0.tar.gz + URL_MD5 b35fc412cdb3a00aa92aadcdd1e5f004 + DOWNLOAD_EXTRACT_TIMESTAMP ON + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/KTX-Software +) +# Manually add the KTX library +FetchContent_GetProperties(KTX-Software) +if(NOT ktx-software_POPULATED) + FetchContent_Populate(KTX-Software) + AddKtxSubdirectory_partial() +endif() + +####################### +# DX Memory Allocator # +####################### +message(STATUS ">>> DX Memory Allocator") +FetchContent_Declare( + D3D12MemoryAllocator + GIT_REPOSITORY https://github.com/GPUOpen-LibrariesAndSDKs/D3D12MemoryAllocator + GIT_TAG 7597f717c7b32b74d263009ecc15985b517585c7 + SOURCE_DIR ${FRAMEWORK_EXTERNALS_DIR}/D3D12MemoryAllocator +) +FetchContent_MakeAvailable(D3D12MemoryAllocator) +set_property(DIRECTORY "${d3d12memoryallocator_SOURCE_DIR}" PROPERTY FOLDER "framework/external/D3D12MemoryAllocator") + + +set(CMAKE_WARN_DEPRECATED ON CACHE BOOL "" FORCE) # restore 'deprecated' warnings from cmake + + +endif() + + + + diff --git a/framework/cmake/KTX-Software.diff b/framework/cmake/KTX-Software.diff new file mode 100644 index 0000000..3da5fff --- /dev/null +++ b/framework/cmake/KTX-Software.diff @@ -0,0 +1,40 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5e239daf..e6b93a3f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -217,7 +217,8 @@ if(MSVC) + add_compile_options($<$:/W4>) + add_compile_options( $,/Gz,/O2> ) + elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" +- OR ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") ++ OR ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" ++ OR ${CMAKE_CXX_COMPILER_ID} MATCHES "AppleClang") + add_compile_options(-Wall -Wextra) + add_compile_options( $,-O0,-O3> ) + if(EMSCRIPTEN) +diff --git a/cmake/cputypetest.cmake b/cmake/cputypetest.cmake +index 31d38882..119533c5 100644 +--- a/cmake/cputypetest.cmake ++++ b/cmake/cputypetest.cmake +@@ -1,7 +1,7 @@ + # Copyright 2016, Simon Werta (@webmaster128). + # SPDX-License-Identifier: Apache-2.0 + +-cmake_minimum_required(VERSION 2.8.12) ++cmake_minimum_required(VERSION 3.6) + + set(cputypetest_code " + // +diff --git a/cmake/version.cmake b/cmake/version.cmake +index f9f20015..ce8c5532 100644 +--- a/cmake/version.cmake ++++ b/cmake/version.cmake +@@ -148,7 +148,7 @@ else() + set(KTX_VERSION_PATCH "0") + endif() + else() +- message(WARNING "Error retrieving version from GIT tag. Falling back to 0.0.0-noversion ") ++ #message(WARNING "Error retrieving version from GIT tag. Falling back to 0.0.0-noversion ") + set(KTX_VERSION_MAJOR "0" ) + set(KTX_VERSION_MINOR "0" ) + set(KTX_VERSION_PATCH "0" ) diff --git a/framework/cmake/ModelPackager.cmake b/framework/cmake/ModelPackager.cmake new file mode 100644 index 0000000..4264618 --- /dev/null +++ b/framework/cmake/ModelPackager.cmake @@ -0,0 +1,59 @@ +# +# Model Packager +# Copy model files from specified path to media path or optional destination. +# +function(add_gltf _path) + cmake_parse_arguments(args "" "DESTINATION" "" ${ARGN}) + + if(DEFINED GLOBAL_ASSET_BASE_PATH) + set(_path "${GLOBAL_ASSET_BASE_PATH}/${_path}") + endif() + + # Strip .gltf extension if present + get_filename_component(ext "${_path}" EXT) + if(ext STREQUAL ".gltf") + string(REGEX REPLACE "\\.gltf$" "" _path "${_path}") + endif() + + if(NOT EXISTS "${_path}.gltf") + message(FATAL_ERROR "ModelPackager -> Couldn't find .gltf file on given path ${_path}") + return() + endif() + + set(MODEL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Meshes") + if(DEFINED args_DESTINATION) + set(MODEL_PATH "${args_DESTINATION}") + elseif(DEFINED MESH_DESTINATION) + set(MODEL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${MESH_DESTINATION}") + endif() + + if(NOT EXISTS ${MODEL_PATH}) + file(MAKE_DIRECTORY ${MODEL_PATH}) + endif() + + set(ASSET_CACHE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../build/assets_cache/models") + if(NOT EXISTS ${ASSET_CACHE_PATH}) + file(MAKE_DIRECTORY ${ASSET_CACHE_PATH}) + endif() + + get_filename_component(model_name ${_path} NAME) + + set(cached_gltf "${ASSET_CACHE_PATH}/${model_name}.gltf") + set(cached_bin "${ASSET_CACHE_PATH}/${model_name}.bin") + + # Copy to cache if not already cached + if(NOT EXISTS ${cached_gltf}) + file(COPY "${_path}.gltf" DESTINATION ${ASSET_CACHE_PATH}) + endif() + + if(EXISTS "${_path}.bin" AND NOT EXISTS ${cached_bin}) + file(COPY "${_path}.bin" DESTINATION ${ASSET_CACHE_PATH}) + endif() + + # Copy from cache to destination + file(COPY ${cached_gltf} DESTINATION ${MODEL_PATH}) + + if(EXISTS ${cached_bin}) + file(COPY ${cached_bin} DESTINATION ${MODEL_PATH}) + endif() +endfunction() \ No newline at end of file diff --git a/framework/cmake/TexturePackager.cmake b/framework/cmake/TexturePackager.cmake new file mode 100644 index 0000000..221e83d --- /dev/null +++ b/framework/cmake/TexturePackager.cmake @@ -0,0 +1,181 @@ + +# +# Texture Packager +# Convert PNG textures from the specified path into its media equivalent. +# + +function(add_textures_from_path _path) + cmake_parse_arguments(args "UASTC" "SCALE;DESTINATION" "" ${ARGN}) + + if(DEFINED GLOBAL_ASSET_BASE_PATH) + set(_path "${GLOBAL_ASSET_BASE_PATH}/${_path}") + endif() + + if(NOT DEFINED args_SCALE) + set(args_SCALE 1.0) + endif() + + if(DEFINED args_UASTC) + set(TEXTURE_COMPRESSION "--encode" "uastc" "--zcmp") + else() + set(TEXTURE_COMPRESSION "") + endif() + + set(CONVERTER_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/../../project/tools/toktx.exe") + if(NOT EXISTS ${CONVERTER_TOOL}) + message(WARNING "TexturePackager -> Texture converter tool wasn't found: ${CONVERTER_TOOL}") + return() + endif() + + set(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Textures") + if(DEFINED args_DESTINATION) + set(TEXTURE_PATH "${args_DESTINATION}") + elseif(DEFINED TEXTURE_DESTINATION) + set(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${TEXTURE_DESTINATION}") + endif() + + if(NOT EXISTS ${TEXTURE_PATH}) + file(MAKE_DIRECTORY ${TEXTURE_PATH}) + endif() + + set(ASSET_CACHE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../build/assets_cache/textures") + if(NOT EXISTS ${ASSET_CACHE_PATH}) + file(MAKE_DIRECTORY ${ASSET_CACHE_PATH}) + endif() + + file(GLOB png_textures "${_path}/*.png") + list(LENGTH png_textures total_textures) + + message(STATUS "Preparing to convert ${total_textures} textures from '${_path}'") + + set(current_index 0) + foreach(file ${png_textures}) + math(EXPR current_index "${current_index} + 1") + get_filename_component(output_filename ${file} NAME_WE) + set(cached_output "${ASSET_CACHE_PATH}/${output_filename}.ktx") + set(final_output "${TEXTURE_PATH}/${output_filename}.ktx") + + if(EXISTS ${cached_output}) + file(COPY ${cached_output} DESTINATION ${TEXTURE_PATH}) + else() + set(PARAMS + "--genmipmap" + --scale ${args_SCALE} + ${TEXTURE_COMPRESSION} + "--" + "${cached_output}" + "${file}" + ) + execute_process(COMMAND "${CONVERTER_TOOL}" ${PARAMS} + ERROR_VARIABLE conv_error + RESULT_VARIABLE conv_retval) + + if(conv_error) + message(WARNING "TexturePackager -> ${conv_error}") + endif() + + file(COPY ${cached_output} DESTINATION ${TEXTURE_PATH}) + endif() + + # Progress bar simulation + math(EXPR percent_done "(${current_index} * 100) / ${total_textures}") + math(EXPR filled "(${percent_done} / 10)") + math(EXPR empty "10 - ${filled}") + + set(bar "") + if(filled GREATER 0) + foreach(i RANGE 1 ${filled}) + set(bar "${bar}#") + endforeach() + endif() + + if(empty GREATER 0) + foreach(i RANGE 1 ${empty}) + set(bar "${bar}-") + endforeach() + endif() + + message(STATUS "[${bar}] ${percent_done}% - Processed: '${output_filename}'") + + endforeach() +endfunction() + +function(add_texture _texture_path) + cmake_parse_arguments(args "UASTC" "SCALE;DESTINATION" "" ${ARGN}) + + if(DEFINED GLOBAL_ASSET_BASE_PATH) + set(_texture_path "${GLOBAL_ASSET_BASE_PATH}/${_texture_path}") + endif() + + if(NOT EXISTS ${_texture_path}) + message(WARNING "TexturePackager -> Requested texture doesn't exist: ${_texture_path}") + return() + endif() + + if(NOT DEFINED args_SCALE) + set(args_SCALE 1.0) + endif() + + if(DEFINED args_UASTC) + set(TEXTURE_COMPRESSION "--encode" "uastc" "--zcmp") + else() + set(TEXTURE_COMPRESSION "") + endif() + + set(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Textures") + if(DEFINED args_DESTINATION) + set(TEXTURE_PATH "${args_DESTINATION}") + elseif(DEFINED TEXTURE_DESTINATION) + set(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${TEXTURE_DESTINATION}") + endif() + + set(ASSET_CACHE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../build/assets_cache/textures") + if(NOT EXISTS ${ASSET_CACHE_PATH}) + file(MAKE_DIRECTORY ${ASSET_CACHE_PATH}) + endif() + + if(NOT EXISTS ${TEXTURE_PATH}) + file(MAKE_DIRECTORY ${TEXTURE_PATH}) + endif() + + get_filename_component(output_filename ${_texture_path} NAME_WE) + get_filename_component(output_ext ${_texture_path} EXT) + + set(dst_output_path "${TEXTURE_PATH}/${output_filename}.ktx") + set(cached_output "${ASSET_CACHE_PATH}/${output_filename}.ktx") + + if(EXISTS ${dst_output_path}) + return() + endif() + + if(output_ext STREQUAL ".ktx") + message("Copying KTX texture: '${output_filename}'") + file(COPY ${_texture_path} DESTINATION ${TEXTURE_PATH}) + return() + endif() + + set(CONVERTER_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/../../project/tools/toktx.exe") + if(NOT EXISTS ${CONVERTER_TOOL}) + message(WARNING "TexturePackager -> Texture converter tool wasn't found: ${CONVERTER_TOOL}") + return() + endif() + + message("Converting texture: '${output_filename}' to KTX") + set(PARAMS + "--genmipmap" + --scale ${args_SCALE} + ${TEXTURE_COMPRESSION} + "--" + "${cached_output}" + "${_texture_path}" + ) + execute_process(COMMAND "${CONVERTER_TOOL}" ${PARAMS} + ERROR_VARIABLE conv_error + RESULT_VARIABLE conv_retval) + + if(conv_error) + message(WARNING "TexturePackager -> ${conv_error}") + endif() + + file(COPY ${cached_output} DESTINATION ${TEXTURE_PATH}) +endfunction() \ No newline at end of file diff --git a/framework/code/allocator/threadBufferResource.hpp b/framework/code/allocator/threadBufferResource.hpp new file mode 100644 index 0000000..510fc49 --- /dev/null +++ b/framework/code/allocator/threadBufferResource.hpp @@ -0,0 +1,189 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include "threadManagedBufferResourceAllocator.hpp" +#include "threadMonotonicBufferResourceAllocator.hpp" + +namespace core +{ + inline std::span GetThreadMonotonicLocalBufferResourceBlob() + { + static thread_local std::array buffer; + return buffer; + } + + inline std::span GetThreadManagedLocalBufferResourceBlob() + { + static thread_local std::array buffer; + return buffer; + } + + thread_local ThreadMonotonicBufferResourceAllocator s_monotonic_buffer_resource(GetThreadMonotonicLocalBufferResourceBlob().data(), GetThreadMonotonicLocalBufferResourceBlob().size()); + thread_local ThreadManagedBufferResourceAllocator s_managed_buffer_resource(GetThreadManagedLocalBufferResourceBlob().data(), GetThreadManagedLocalBufferResourceBlob().size()); +} + +namespace core +{ +//////////////////////////////////////////////////////////////////////////////// +// Class name: ThreadMonotonicMemoryScope +//////////////////////////////////////////////////////////////////////////////// +class ThreadMonotonicMemoryScope +{ +public: + + ThreadMonotonicMemoryScope() + { + s_buffer_monotonic_resource_usage_count++; + } + + ~ThreadMonotonicMemoryScope() + { + s_buffer_monotonic_resource_usage_count--; + if (s_buffer_monotonic_resource_usage_count == 0) + { + s_monotonic_buffer_resource.release(); + } + } + + inline ThreadMonotonicBufferResourceAllocator& GetResource() + { + return s_monotonic_buffer_resource; + } + + inline operator ThreadMonotonicBufferResourceAllocator& () + { + return s_monotonic_buffer_resource; + } + + inline operator ThreadMonotonicBufferResourceAllocator* () + { + return &s_monotonic_buffer_resource; + } + + template + inline operator std::pmr::polymorphic_allocator<_Ty>() + { + return std::pmr::polymorphic_allocator<_Ty>{ &s_monotonic_buffer_resource }; + } + + /* + * Allocates an object with lifetime tied to the monotonic buffer resource, returning a reference to it + */ + template + std::unique_ptr<_Ty, std::function> AllocateUniquePtr(Args&&... args) + { + auto& memory_resource = GetResource(); + _Ty* ptr = memory_resource.allocate(sizeof(_Ty)); + + ::new((void*)ptr) _Ty(std::forward(args)...); + + auto deleter = [](_Ty* p, std::pmr::memory_resource& alloc) + { + p->~_Ty(); + alloc.deallocate(p, sizeof(_Ty)); + }; + + return { ptr, std::bind(deleter, std::placeholders::_1, memory_resource) }; + } + + /* + * Allocates an object with lifetime tied to the monotonic buffer resource, returning a reference to it + * No destructor is called when it goes out of scope, for unique_ptr behavior use the AllocateUniquePtr() + */ + template + _Ty& AllocateObject(Args&&... args) + { + auto& memory_resource = GetResource(); + auto allocation = memory_resource.allocate_released(sizeof(_Ty), alignof(_Ty)); + _Ty* ptr = static_cast<_Ty*>(allocation); + ::new((void*)ptr) _Ty(std::forward(args)...); + + return *ptr; + } + + /* + * Allocates one or more objects with lifetime tied to the monotonic buffer resource, returning a reference + * to it + * No destructor is called when they go out of scope + */ + template + std::span<_Ty> AllocateObjects(std::size_t count, Args&&... args) + { + auto& memory_resource = GetResource(); + _Ty* ptr = static_cast<_Ty*>(memory_resource.allocate_released(sizeof(_Ty) * count, alignof(_Ty))); + + for (std::size_t i = 0; i < count; ++i) + { + ::new((void*)&ptr[i]) _Ty(std::forward(args)...); + } + + return std::span(ptr, count); + } +}; + +//////////////////////////////////////////////////////////////////////////////// +// Class name: ThreadAutomaticMonotonicMemoryResource +//////////////////////////////////////////////////////////////////////////////// +class ThreadAutomaticMonotonicMemoryResource +{ +public: + + ThreadAutomaticMonotonicMemoryResource() = default; + ~ThreadAutomaticMonotonicMemoryResource() = default; + + inline std::pmr::memory_resource& GetResource() + { + return s_managed_buffer_resource; + } + + inline operator std::pmr::memory_resource& () + { + return s_managed_buffer_resource; + } + + inline operator std::pmr::memory_resource* () + { + return &s_managed_buffer_resource; + } + + template + inline operator std::pmr::polymorphic_allocator<_Ty>() + { + return std::pmr::polymorphic_allocator<_Ty>{ &GetResource() }; + } + + /* + * Allocates an object with lifetime tied to the monotonic buffer resource, returning a reference to it + */ + template + std::unique_ptr<_Ty, std::function> AllocateUniquePtr(Args&&... args) + { + auto& memory_resource = GetResource(); + _Ty* ptr = memory_resource.allocate(sizeof(_Ty)); + + ::new((void*)ptr) _Ty(std::forward(args)...); + + auto deleter = [](_Ty* p, std::pmr::memory_resource& alloc) + { + p->~_Ty(); + alloc.deallocate(p, sizeof(_Ty)); + }; + + return { ptr, std::bind(deleter, std::placeholders::_1, memory_resource) }; + } +}; +} \ No newline at end of file diff --git a/framework/code/allocator/threadBufferResourceHelper.hpp b/framework/code/allocator/threadBufferResourceHelper.hpp new file mode 100644 index 0000000..9910cc8 --- /dev/null +++ b/framework/code/allocator/threadBufferResourceHelper.hpp @@ -0,0 +1,108 @@ +/* +* This file is based on work by Microsoft Corporation. +* Original license: Apache-2.0 WITH LLVM-exception +* Copyright (c) Microsoft Corporation. +* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +* Original file: "memory_resource" +* +* Modifications: +* - Add support for thread-specific memory allocation counting +*/ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +namespace core +{ + thread_local uint32_t s_buffer_monotonic_resource_usage_count = 0; + + inline void CheckMemoryResourceAlignment(void* const _Ptr, const size_t _Align) noexcept + { +#if defined(_STL_ASSERT) + _STL_ASSERT((reinterpret_cast(_Ptr) & (_Align - 1)) == 0, + "Upstream resource did not respect alignment requirement."); +#endif + (void)_Ptr; + (void)_Align; + } + + ////////////////// + // STACK BUFFER // + ////////////////// + // Supporting stack buffer for buffer resource types + + template + struct StackBufferEntryLink // base class for intrusive singly-linked structures + { + StackBufferEntryLink* _Next; + }; + + template + struct StackBuffer { // intrusive stack of _Ty, which must derive from StackBufferEntryLink<_Tag> + using _Link_type = StackBufferEntryLink<_Tag>; + +#if defined(_STL_INTERNAL_STATIC_ASSERT) + _STL_INTERNAL_STATIC_ASSERT(is_base_of_v<_Link_type, _Ty>); +#endif + + constexpr StackBuffer() noexcept = default; + constexpr StackBuffer(StackBuffer&& _That) noexcept : _Head{_That._Head} { + _That._Head = nullptr; + } + constexpr StackBuffer& operator=(StackBuffer&& _That) noexcept { + _Head = _That._Head; + _That._Head = nullptr; + return *this; + } + + static constexpr _Link_type* _As_link(_Ty* const _Ptr) noexcept { + return static_cast<_Link_type*>(_Ptr); + } + + static constexpr _Ty* _As_item(_Link_type* const _Ptr) noexcept { + return static_cast<_Ty*>(_Ptr); + } + + constexpr bool _Empty() const noexcept { + return _Head == nullptr; + } + + constexpr _Ty* _Top() const noexcept { + return _As_item(_Head); + } + + constexpr void _Push(_Ty* const _Item) noexcept { + const auto _Ptr = _As_link(_Item); + _Ptr->_Next = _Head; + _Head = _Ptr; + } + + constexpr _Ty* _Pop() noexcept { // pre: _Head != nullptr + const auto _Result = _Head; + _Head = _Head->_Next; + return _As_item(_Result); + } + + constexpr void _Remove(_Ty* const _Item) noexcept { + const auto _Ptr = _As_link(_Item); + for (_Link_type** _Pnext = &_Head; *_Pnext; _Pnext = &(*_Pnext)->_Next) { + if (*_Pnext == _Ptr) { + *_Pnext = _Ptr->_Next; + break; + } + } + } + + _Link_type* _Head = nullptr; + }; + + ////////////////// + ////////////////// + ////////////////// +} \ No newline at end of file diff --git a/framework/code/allocator/threadManagedBufferResourceAllocator.hpp b/framework/code/allocator/threadManagedBufferResourceAllocator.hpp new file mode 100644 index 0000000..60f4b4f --- /dev/null +++ b/framework/code/allocator/threadManagedBufferResourceAllocator.hpp @@ -0,0 +1,209 @@ +/* +* This file is based on work by Microsoft Corporation. +* Original license: Apache-2.0 WITH LLVM-exception +* Copyright (c) Microsoft Corporation. +* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +* Original file: "memory_resource" +* +* Modifications: +* - Add support for thread-specific memory allocation counting +*/ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "threadBufferResourceHelper.hpp" + +namespace core +{ + class ThreadManagedBufferResourceAllocator : public std::pmr::memory_resource { + public: + explicit ThreadManagedBufferResourceAllocator(std::pmr::memory_resource* const _Upstream) noexcept // strengthened + : _Resource{_Upstream} {} // initialize this resource with upstream + + ThreadManagedBufferResourceAllocator(const size_t _Initial_size, std::pmr::memory_resource* const _Upstream) noexcept // strengthened + : _Next_buffer_size(_Round(_Initial_size)), _Resource{_Upstream} { + // initialize this resource with upstream and initial allocation size + } + + ThreadManagedBufferResourceAllocator(void* const _Buffer, const size_t _Buffer_size, + std::pmr::memory_resource* const _Upstream) noexcept // strengthened + : _Current_buffer(_Buffer), _Space_available(_Buffer_size), + _Next_buffer_size(_Buffer_size ? _Scale(_Buffer_size) : _Min_allocation), _Resource{_Upstream} { + // initialize this resource with upstream and initial buffer + } + + ThreadManagedBufferResourceAllocator() = default; + + explicit ThreadManagedBufferResourceAllocator(const size_t _Initial_size) noexcept // strengthened + : _Next_buffer_size(_Round(_Initial_size)) {} // initialize this resource with initial allocation size + + ThreadManagedBufferResourceAllocator(void* const _Buffer, const size_t _Buffer_size) noexcept // strengthened + : _Current_buffer(_Buffer), _Space_available(_Buffer_size), + _Next_buffer_size(_Buffer_size ? _Scale(_Buffer_size) : _Min_allocation) { + // initialize this resource with initial buffer + } + + ~ThreadManagedBufferResourceAllocator() noexcept override { + release(); + } + + ThreadManagedBufferResourceAllocator(const ThreadManagedBufferResourceAllocator&) = delete; + ThreadManagedBufferResourceAllocator& operator=(const ThreadManagedBufferResourceAllocator&) = delete; + + void release() noexcept /* strengthened */ + { + // Cannot share memory between different threads when using this allocator + assert(m_self_thread_id == std::this_thread::get_id()); + + // If this was hit, you are potentially leaking memory or returning locally allocated memory to + // the callee without the callee guarding such memory + assert(m_allocation_count == 0); + + if (_Chunks._Empty()) { + // nothing to release; potentially continues to use an initial block provided at construction + return; + } + + _Current_buffer = nullptr; + _Space_available = 0; + + // unscale _Next_buffer_size so the next allocation will be the same size as the most recent allocation + // (keep synchronized with ThreadManagedBufferResourceAllocator::_Scale) + const size_t _Unscaled = (_Next_buffer_size / 3 * 2 + alignof(_Header) - 1) & _Max_allocation; + _Next_buffer_size = (std::max)(_Unscaled, _Min_allocation); + + StackBuffer<_Header> _Tmp{}; + std::swap(_Tmp, _Chunks); + while (!_Tmp._Empty()) { + const auto _Ptr = _Tmp._Pop(); + _Resource->deallocate(_Ptr->_Base_address(), _Ptr->_Size, _Ptr->_Align); + } + } + + [[nodiscard]] std::pmr::memory_resource* upstream_resource() const noexcept /* strengthened */ { + // retrieve the upstream resource + return _Resource; + } + + protected: + void* do_allocate(const size_t _Bytes, const size_t _Align) override + { + // Cannot share memory between different threads when using this allocator + assert(m_self_thread_id == std::this_thread::get_id()); + + // allocate from the current buffer or a new larger buffer from upstream + if (!std::align(_Align, _Bytes, _Current_buffer, _Space_available)) { + _Increase_capacity(_Bytes, _Align); + } + + void* const _Result = _Current_buffer; + _Current_buffer = static_cast(_Current_buffer) + _Bytes; + _Space_available -= _Bytes; + + m_allocation_count++; + + return _Result; + } + + void do_deallocate(void* data, size_t, size_t) override + { + // Cannot share memory between different threads when using this allocator + assert(m_self_thread_id == std::this_thread::get_id()); + + m_allocation_count--; + if (!m_allocation_count) + { + release(); + } + } + + bool do_is_equal(const memory_resource& _That) const noexcept override { + return this == &_That; + } + + private: + struct _Header : StackBufferEntryLink<> { // track the size and alignment of an allocation from upstream + size_t _Size; + size_t _Align; + + _Header(const size_t _Size_, const size_t _Align_) : _Size{_Size_}, _Align{_Align_} {} + + void* _Base_address() const { // header is stored at the end of the allocated memory block + return const_cast(reinterpret_cast(this + 1) - _Size); + } + }; + + static constexpr size_t _Min_allocation = 2 * sizeof(_Header); + static constexpr size_t _Max_allocation = 0 - alignof(_Header); + + static constexpr size_t _Round(const size_t _Size) noexcept { + // return the smallest multiple of alignof(_Header) greater than _Size, + // clamped to the range [_Min_allocation, _Max_allocation] + if (_Size < _Min_allocation) { + return _Min_allocation; + } + + if (_Size >= _Max_allocation) { + return _Max_allocation; + } + + // Since _Max_allocation == -alignof(_Header), _Size < _Max_allocation implies that + // (_Size + alignof(_Header) - 1) does not overflow. + return (_Size + alignof(_Header) - 1) & _Max_allocation; + } + + static constexpr size_t _Scale(const size_t _Size) noexcept { + // scale _Size by 1.5, rounding up to a multiple of alignof(_Header), saturating to _Max_allocation + // (keep synchronized with ThreadManagedBufferResourceAllocator::release) +#pragma warning(push) +#pragma warning(disable : 26450) // TRANSITION, VSO-1828677 + constexpr auto _Max_size = (_Max_allocation - alignof(_Header) + 1) / 3 * 2; +#pragma warning(pop) + if (_Size >= _Max_size) { + return _Max_allocation; + } + + return (_Size + (_Size + 1) / 2 + alignof(_Header) - 1) & _Max_allocation; + } + + void _Increase_capacity(const size_t _Bytes, const size_t _Align) { // obtain a new buffer from upstream + if (_Bytes > _Max_allocation - sizeof(_Header)) { + throw; + } + + size_t _New_size = _Next_buffer_size; + if (_New_size < _Bytes + sizeof(_Header)) { + _New_size = (_Bytes + sizeof(_Header) + alignof(_Header) - 1) & _Max_allocation; + } + + const size_t _New_align = (std::max)(alignof(_Header), _Align); + + void* _New_buffer = _Resource->allocate(_New_size, _New_align); + CheckMemoryResourceAlignment(_New_buffer, _New_align); + + _Current_buffer = _New_buffer; + _Space_available = _New_size - sizeof(_Header); + _New_buffer = static_cast(_New_buffer) + _Space_available; + _Chunks._Push(::new (_New_buffer) _Header{_New_size, _New_align}); + + _Next_buffer_size = _Scale(_New_size); + } + + void* _Current_buffer = nullptr; // current memory block to parcel out to callers + size_t _Space_available = 0; // space remaining in current block + size_t _Next_buffer_size = _Min_allocation; // size of next block to allocate from upstream + StackBuffer<_Header> _Chunks{}; // list of memory blocks allocated from upstream + std::pmr::memory_resource* _Resource = std::pmr::get_default_resource(); // upstream resource from which to allocate + + uint32_t m_allocation_count = 0; + std::thread::id m_self_thread_id = std::this_thread::get_id(); + }; +} \ No newline at end of file diff --git a/framework/code/allocator/threadMonotonicBufferResourceAllocator.hpp b/framework/code/allocator/threadMonotonicBufferResourceAllocator.hpp new file mode 100644 index 0000000..ba65f02 --- /dev/null +++ b/framework/code/allocator/threadMonotonicBufferResourceAllocator.hpp @@ -0,0 +1,238 @@ +/* +* This file is based on work by Microsoft Corporation. +* Original license: Apache-2.0 WITH LLVM-exception +* Copyright (c) Microsoft Corporation. +* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +* Original file: "memory_resource" +* +* Modifications: +* - Add support for thread-specific memory allocation counting +* - Add memory leak guard (m_allocated_resources) +*/ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "threadBufferResourceHelper.hpp" + +namespace core +{ + class ThreadMonotonicBufferResourceAllocator : public std::pmr::memory_resource { + public: + explicit ThreadMonotonicBufferResourceAllocator(std::pmr::memory_resource* const _Upstream) noexcept // strengthened + : _Resource{_Upstream} {} // initialize this resource with upstream + + ThreadMonotonicBufferResourceAllocator(const size_t _Initial_size, std::pmr::memory_resource* const _Upstream) noexcept // strengthened + : _Next_buffer_size(_Round(_Initial_size)), _Resource{_Upstream} { + // initialize this resource with upstream and initial allocation size + } + + ThreadMonotonicBufferResourceAllocator(void* const _Buffer, const size_t _Buffer_size, + std::pmr::memory_resource* const _Upstream) noexcept // strengthened + : _Current_buffer(_Buffer), _Space_available(_Buffer_size), + _Next_buffer_size(_Buffer_size ? _Scale(_Buffer_size) : _Min_allocation), _Resource{_Upstream} { + // initialize this resource with upstream and initial buffer + } + + ThreadMonotonicBufferResourceAllocator() = default; + + explicit ThreadMonotonicBufferResourceAllocator(const size_t _Initial_size) noexcept // strengthened + : _Next_buffer_size(_Round(_Initial_size)) {} // initialize this resource with initial allocation size + + ThreadMonotonicBufferResourceAllocator(void* const _Buffer, const size_t _Buffer_size) noexcept // strengthened + : _Current_buffer(_Buffer), _Space_available(_Buffer_size), + _Next_buffer_size(_Buffer_size ? _Scale(_Buffer_size) : _Min_allocation) { + // initialize this resource with initial buffer + } + + ~ThreadMonotonicBufferResourceAllocator() noexcept override { + release(); + } + + ThreadMonotonicBufferResourceAllocator(const ThreadMonotonicBufferResourceAllocator&) = delete; + ThreadMonotonicBufferResourceAllocator& operator=(const ThreadMonotonicBufferResourceAllocator&) = delete; + + void release() noexcept /* strengthened */ { + +#ifndef SAAA_SHIPPING_BUILD + // If this was hit, you are potentially leaking memory or returning locally allocated memory to + // the callee without the callee guarding such memory + // assert(m_allocated_resources.empty()); + assert(m_allocation_count == 0); +#endif + + if (_Chunks._Empty()) { + // nothing to release; potentially continues to use an initial block provided at construction + return; + } + + _Current_buffer = nullptr; + _Space_available = 0; + + // unscale _Next_buffer_size so the next allocation will be the same size as the most recent allocation + // (keep synchronized with ThreadMonotonicBufferResourceAllocator::_Scale) + const size_t _Unscaled = (_Next_buffer_size / 3 * 2 + alignof(_Header) - 1) & _Max_allocation; + _Next_buffer_size = (std::max)(_Unscaled, _Min_allocation); + + StackBuffer<_Header> _Tmp{}; + std::swap(_Tmp, _Chunks); + while (!_Tmp._Empty()) { + const auto _Ptr = _Tmp._Pop(); + _Resource->deallocate(_Ptr->_Base_address(), _Ptr->_Size, _Ptr->_Align); + } + } + + [[nodiscard]] std::pmr::memory_resource* upstream_resource() const noexcept /* strengthened */ { + // retrieve the upstream resource + return _Resource; + } + + void* allocate_released(const size_t _Bytes, const size_t _Align) + { +#ifndef SAAA_SHIPPING_BUILD + // If this was hit, the thread memory resource scope isn't available when the allocation + // was performed, ensure the ThreadMonotonicMemoryScope is left alive (it can be used + // recursivelly between function calls as long as the very first callee retains an active + // scope) + assert(s_buffer_monotonic_resource_usage_count > 0); +#endif + + // allocate from the current buffer or a new larger buffer from upstream + if (!std::align(_Align, _Bytes, _Current_buffer, _Space_available)) { + _Increase_capacity(_Bytes, _Align); + } + + void* const _Result = _Current_buffer; + _Current_buffer = static_cast(_Current_buffer) + _Bytes; + _Space_available -= _Bytes; + + return _Result; + } + + protected: + void* do_allocate(const size_t _Bytes, const size_t _Align) override { + +#ifndef SAAA_SHIPPING_BUILD + // If this was hit, the thread memory resource scope isn't available when the allocation + // was performed, ensure the ThreadMonotonicMemoryScope is left alive (it can be used + // recursivelly between function calls as long as the very first callee retains an active + // scope) + assert(s_buffer_monotonic_resource_usage_count > 0); +#endif + + // allocate from the current buffer or a new larger buffer from upstream + if (!std::align(_Align, _Bytes, _Current_buffer, _Space_available)) { + _Increase_capacity(_Bytes, _Align); + } + + void* const _Result = _Current_buffer; + _Current_buffer = static_cast(_Current_buffer) + _Bytes; + _Space_available -= _Bytes; + +#ifndef SAAA_SHIPPING_BUILD + // m_allocated_resources.emplace(_Result); + m_allocation_count++; +#endif + + return _Result; + } + + void do_deallocate(void* data, size_t, size_t) override + { +#ifndef SAAA_SHIPPING_BUILD + // m_allocated_resources.erase(data); + m_allocation_count--; +#endif + } + + bool do_is_equal(const memory_resource& _That) const noexcept override { + return this == &_That; + } + + private: + struct _Header : StackBufferEntryLink<> { // track the size and alignment of an allocation from upstream + size_t _Size; + size_t _Align; + + _Header(const size_t _Size_, const size_t _Align_) : _Size{_Size_}, _Align{_Align_} {} + + void* _Base_address() const { // header is stored at the end of the allocated memory block + return const_cast(reinterpret_cast(this + 1) - _Size); + } + }; + + static constexpr size_t _Min_allocation = 2 * sizeof(_Header); + static constexpr size_t _Max_allocation = 0 - alignof(_Header); + + static constexpr size_t _Round(const size_t _Size) noexcept { + // return the smallest multiple of alignof(_Header) greater than _Size, + // clamped to the range [_Min_allocation, _Max_allocation] + if (_Size < _Min_allocation) { + return _Min_allocation; + } + + if (_Size >= _Max_allocation) { + return _Max_allocation; + } + + // Since _Max_allocation == -alignof(_Header), _Size < _Max_allocation implies that + // (_Size + alignof(_Header) - 1) does not overflow. + return (_Size + alignof(_Header) - 1) & _Max_allocation; + } + + static constexpr size_t _Scale(const size_t _Size) noexcept { + // scale _Size by 1.5, rounding up to a multiple of alignof(_Header), saturating to _Max_allocation + // (keep synchronized with ThreadMonotonicBufferResourceAllocator::release) +#pragma warning(push) +#pragma warning(disable : 26450) // TRANSITION, VSO-1828677 + constexpr auto _Max_size = (_Max_allocation - alignof(_Header) + 1) / 3 * 2; +#pragma warning(pop) + if (_Size >= _Max_size) { + return _Max_allocation; + } + + return (_Size + (_Size + 1) / 2 + alignof(_Header) - 1) & _Max_allocation; + } + + void _Increase_capacity(const size_t _Bytes, const size_t _Align) { // obtain a new buffer from upstream + if (_Bytes > _Max_allocation - sizeof(_Header)) { + throw; + } + + size_t _New_size = _Next_buffer_size; + if (_New_size < _Bytes + sizeof(_Header)) { + _New_size = (_Bytes + sizeof(_Header) + alignof(_Header) - 1) & _Max_allocation; + } + + const size_t _New_align = (std::max)(alignof(_Header), _Align); + + void* _New_buffer = _Resource->allocate(_New_size, _New_align); + CheckMemoryResourceAlignment(_New_buffer, _New_align); + + _Current_buffer = _New_buffer; + _Space_available = _New_size - sizeof(_Header); + _New_buffer = static_cast(_New_buffer) + _Space_available; + _Chunks._Push(::new (_New_buffer) _Header{_New_size, _New_align}); + + _Next_buffer_size = _Scale(_New_size); + } + + void* _Current_buffer = nullptr; // current memory block to parcel out to callers + size_t _Space_available = 0; // space remaining in current block + size_t _Next_buffer_size = _Min_allocation; // size of next block to allocate from upstream + StackBuffer<_Header> _Chunks{}; // list of memory blocks allocated from upstream + std::pmr::memory_resource* _Resource = std::pmr::get_default_resource(); // upstream resource from which to allocate + +#ifndef SAAA_SHIPPING_BUILD + // std::unordered_set m_allocated_resources; + uint32_t m_allocation_count = 0; +#endif + }; +} \ No newline at end of file diff --git a/framework/code/animation/animation.cpp b/framework/code/animation/animation.cpp index 38daf85..5ccb958 100644 --- a/framework/code/animation/animation.cpp +++ b/framework/code/animation/animation.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -13,7 +13,7 @@ #include #include #include -#include "glm\gtx\quaternion.hpp" +#include "glm/gtx/quaternion.hpp" static const glm::quat cRotateToYUp{ 0.7071067094802856f, -0.7071068286895752f, 0.f, 0.f }; static const glm::quat cIdentityRotate = glm::identity(); @@ -167,7 +167,7 @@ AnimationIterator AnimationList::MakeIterator(const Animation& animation) } // Recalculate matrix array (one per nodeId) -void AnimationList::UpdateSkeletonMatrixes(const Skeleton& skeleton, AnimationIterator& iterator, std::span nodeMatrixs) +void AnimationList::UpdateSkeletonMatrixes(const Skeleton& skeleton, AnimationIterator& iterator, std::span nodeMatrixs) { const Animation& animation = iterator.animation; float time = iterator.time; @@ -175,26 +175,16 @@ void AnimationList::UpdateSkeletonMatrixes(const Skeleton& skeleton, AnimationIt const auto& animationDataNodes = animation.GetAnimationData().GetNodes(); assert(animationDataNodes.size() == iterator.nodeIterators.size()); - for (uint32_t animationNodeIndex =0; animationNodeIndex<(uint32_t)iterator.nodeIterators.size(); ++animationNodeIndex) + for (uint32_t animationNodeIndex = 0; animationNodeIndex < (uint32_t)iterator.nodeIterators.size(); ++animationNodeIndex) { const auto& nodeId = animationDataNodes[animationNodeIndex].NodeId; // gltf/nodeMatrixs id/index - glm::mat4 Matrix = glm::translate(animation.CalcLocalTranslation(animationNodeIndex, time, iterator.nodeIterators[animationNodeIndex].frameIdx )); - Matrix = Matrix * glm::toMat4(animation.CalcLocalRotation(animationNodeIndex, time, iterator.nodeIterators[animationNodeIndex].frameIdx)); - Matrix = Matrix * glm::scale(animation.CalcLocalScale(animationNodeIndex, time, iterator.nodeIterators[animationNodeIndex].frameIdx)); + glm::mat4 matrix = glm::translate(animation.CalcLocalTranslation(animationNodeIndex, time, iterator.nodeIterators[animationNodeIndex].frameIdx)); + matrix = matrix * glm::toMat4(animation.CalcLocalRotation(animationNodeIndex, time, iterator.nodeIterators[animationNodeIndex].frameIdx)); + matrix = matrix * glm::scale(animation.CalcLocalScale(animationNodeIndex, time, iterator.nodeIterators[animationNodeIndex].frameIdx)); - nodeMatrixs[nodeId] = glm::transpose(Matrix); - - const SkeletonNodeData* skeletonNodeData = skeleton.GetSkeletonData().GetNodeById(nodeId); - const SkeletonNodeData* skeletonNodeDataParent = skeletonNodeData->Parent(); - if (skeletonNodeDataParent) - { - nodeMatrixs[nodeId] = Matrix * nodeMatrixs[skeletonNodeDataParent->NodeId()]; - } - for (const auto& child : skeletonNodeData->Children()) - { - auto childWorld = Matrix * child.LocalTransform(); - nodeMatrixs[child.NodeId()] = glm::transpose(childWorld); - } + nodeMatrixs[nodeId] = matrix; } + + skeleton.TransformLocalToWorld(nodeMatrixs, nodeMatrixs); } diff --git a/framework/code/animation/animation.hpp b/framework/code/animation/animation.hpp index f37ca2b..542ecc4 100644 --- a/framework/code/animation/animation.hpp +++ b/framework/code/animation/animation.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -100,7 +100,7 @@ class AnimationList /// Recalculate matrix array /// @param nodeMatrixs array of matrixes we want to update (indexed by nodeId) - static void UpdateSkeletonMatrixes( const Skeleton&, AnimationIterator& iterator, std::span nodeMatrixs ); + static void UpdateSkeletonMatrixes( const Skeleton&, AnimationIterator& iterator, std::span nodeMatrixs ); protected: std::vector m_Animations; diff --git a/framework/code/animation/animationData.hpp b/framework/code/animation/animationData.hpp index a0bd2a4..da6fbbf 100644 --- a/framework/code/animation/animationData.hpp +++ b/framework/code/animation/animationData.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/animation/animationGltfLoader.cpp b/framework/code/animation/animationGltfLoader.cpp index 1c6f6e6..d2dd11a 100644 --- a/framework/code/animation/animationGltfLoader.cpp +++ b/framework/code/animation/animationGltfLoader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/animation/animationGltfLoader.hpp b/framework/code/animation/animationGltfLoader.hpp index 112f4a3..3603445 100644 --- a/framework/code/animation/animationGltfLoader.hpp +++ b/framework/code/animation/animationGltfLoader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/animation/skeleton.cpp b/framework/code/animation/skeleton.cpp index f90f9d9..bb23e04 100644 --- a/framework/code/animation/skeleton.cpp +++ b/framework/code/animation/skeleton.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,7 +12,6 @@ Skeleton::Skeleton(const SkeletonData& skeletonData) : m_SkeletonData(skeletonData) { - m_WorldTransforms.resize( m_SkeletonData.m_NodesById.size(), glm::identity() ); // iterate through node hierarchy to calculate the world transforms. @@ -32,6 +31,30 @@ Skeleton::Skeleton(const SkeletonData& skeletonData) } } +void Skeleton::TransformLocalToWorld(const std::span local, std::span world) const +{ + assert(local.size() == world.size()); + assert(world.size() == m_SkeletonData.m_NodesById.size()); + + // iterate through node hierarchy to calculate the world transforms. + for (const auto* rootNode : m_SkeletonData.m_RootNodes) + { + const auto TransformTree = [local, world](auto& node, const auto& ParentTransform) -> void { + auto TransformTreeImpl = [local, world](auto& node, const auto& ParentTransform, auto& TransformTreeRef) -> void + { + const auto nodeId = node.NodeId(); + auto WorldTransform = ParentTransform * local[nodeId]; + world[nodeId] = WorldTransform; + for (auto& child : node.Children()) + TransformTreeRef(child, WorldTransform, TransformTreeRef); + }; + TransformTreeImpl(node, ParentTransform, TransformTreeImpl); + }; + TransformTree(*rootNode, glm::identity()); + } + +} + Skeleton::~Skeleton() { } diff --git a/framework/code/animation/skeleton.hpp b/framework/code/animation/skeleton.hpp index 4a4ce73..d980b19 100644 --- a/framework/code/animation/skeleton.hpp +++ b/framework/code/animation/skeleton.hpp @@ -1,13 +1,14 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once +#include #include #include "system/glm_common.hpp" @@ -25,10 +26,14 @@ class Skeleton Skeleton(const SkeletonData&); ~Skeleton(); - const auto GetTransforms() const { return m_WorldTransforms; } + const auto& GetTransforms() const { return m_WorldTransforms; } const SkeletonData& GetSkeletonData() const { return m_SkeletonData; } + /// Transform local matrices for a skeleton to world space (using the skeleton hierarchy) + /// local and world can point to the same data if desired (skeleton is assumed to be a tree structure) + void TransformLocalToWorld(const std::span local, std::span world) const; + private: - const SkeletonData& m_SkeletonData; //NOT owned, do not delete before deleting this class! + const SkeletonData& m_SkeletonData; //NOT owned, do not delete before deleting this class! std::vector m_WorldTransforms; // Current world transforms by nodeId order (same order as @SkeletonData::NodesById). }; diff --git a/framework/code/animation/skeletonData.cpp b/framework/code/animation/skeletonData.cpp index 015eb79..1084b6a 100644 --- a/framework/code/animation/skeletonData.cpp +++ b/framework/code/animation/skeletonData.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/animation/skeletonData.hpp b/framework/code/animation/skeletonData.hpp index 88462a5..c038b48 100644 --- a/framework/code/animation/skeletonData.hpp +++ b/framework/code/animation/skeletonData.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -54,6 +54,7 @@ class SkeletonData SkeletonData(std::vector&& Nodes, std::vector&& NodesById, std::vector&& rootNodes); const SkeletonNodeData* GetNodeById(uint32_t nodeId) const { return m_NodesById[nodeId]; } + const auto& GetRootNodes() const { return m_RootNodes; } protected: friend class Skeleton; diff --git a/framework/code/animation/skeletonGltfLoader.cpp b/framework/code/animation/skeletonGltfLoader.cpp index aef3f8c..1e10c43 100644 --- a/framework/code/animation/skeletonGltfLoader.cpp +++ b/framework/code/animation/skeletonGltfLoader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/animation/skeletonGltfLoader.hpp b/framework/code/animation/skeletonGltfLoader.hpp index bb3d6c3..27f2c79 100644 --- a/framework/code/animation/skeletonGltfLoader.hpp +++ b/framework/code/animation/skeletonGltfLoader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/animation/skin.cpp b/framework/code/animation/skin.cpp new file mode 100644 index 0000000..2bf10c3 --- /dev/null +++ b/framework/code/animation/skin.cpp @@ -0,0 +1,22 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#include "skin.hpp" + +Skin::Skin(SkinData&& d) noexcept : m_SkinData(std::move(d)) +{ + m_SkinTransformMatrixes.resize(m_SkinData.GetNumJoints(), glm::identity()); +} + +void Skin::UpdateSkinMatrixes(const std::span sceneMatrixs) +{ + assert(m_SkinTransformMatrixes.size() == m_SkinData.GetNumJoints()); + + const auto& inverseBindMatrices = m_SkinData.GetInverseBindMatrices(); + for (uint32_t i = 0; int jointNodeId : m_SkinData.GetJoints()) + m_SkinTransformMatrixes[i++] = sceneMatrixs[jointNodeId] * inverseBindMatrices[i];//glm::transpose(m_SceneTransformMatrixes[jointNodeId]) * inverseBindMatrices[i]; +} diff --git a/framework/code/animation/skin.hpp b/framework/code/animation/skin.hpp new file mode 100644 index 0000000..5434aff --- /dev/null +++ b/framework/code/animation/skin.hpp @@ -0,0 +1,31 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "skinData.hpp" + +#include +#include +#include "system/glm_common.hpp" + + +class Skin +{ + Skin(const Skin&) = delete; + Skin& operator=(const Skin&) = delete; + + SkinData m_SkinData; + std::vector m_SkinTransformMatrixes; +public: + Skin(SkinData&& d) noexcept; + typedef decltype(m_SkinTransformMatrixes)::value_type tSkinMatrix; + + const auto& GetSkinTransformMatrices() const { return m_SkinTransformMatrixes; } + + void UpdateSkinMatrixes(const std::span sceneMatrixs); +}; diff --git a/framework/code/animation/skinData.cpp b/framework/code/animation/skinData.cpp new file mode 100644 index 0000000..1e9e9b1 --- /dev/null +++ b/framework/code/animation/skinData.cpp @@ -0,0 +1,8 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#include "skinData.hpp" diff --git a/framework/code/animation/skinData.hpp b/framework/code/animation/skinData.hpp new file mode 100644 index 0000000..e331285 --- /dev/null +++ b/framework/code/animation/skinData.hpp @@ -0,0 +1,37 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include "system/glm_common.hpp" + +class SkinData { + friend class SkinGltfProcessor; + SkinData(const SkinData&) = delete; + SkinData& operator=(const SkinData&) = delete; + SkinData(std::string name, std::vector&& nodeIds, std::vector&& inverseBindMatrices) noexcept + : Name(std::move(name)) + , NodeIds(std::move(nodeIds)) + , m_InverseBindMatrices(std::move(inverseBindMatrices)) + {} +public: + SkinData(SkinData&&) noexcept = default; + SkinData& operator=(SkinData&&) noexcept = default; + + size_t GetNumJoints() const { return NodeIds.size(); } + const auto& GetJoints() const { return NodeIds; } + + const auto& GetInverseBindMatrices() const { return m_InverseBindMatrices; } + +protected: + std::string Name; + std::vector NodeIds; ///< gltf node indices (one per joint) + std::vector m_InverseBindMatrices; ///< one per NodeId (one per joint) +}; diff --git a/framework/code/animation/skinGltfLoader.cpp b/framework/code/animation/skinGltfLoader.cpp new file mode 100644 index 0000000..12c2acf --- /dev/null +++ b/framework/code/animation/skinGltfLoader.cpp @@ -0,0 +1,43 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#include "skinGltfLoader.hpp" +#include "skinData.hpp" +#include "mesh/meshLoader.hpp" +#include "system/os_common.h" +#include +#include + + +SkinGltfProcessor::SkinGltfProcessor() noexcept {} +SkinGltfProcessor::~SkinGltfProcessor() {} + + +bool SkinGltfProcessor::operator()(const tinygltf::Model& ModelData) +{ + const tinygltf::Scene& SceneData = ModelData.scenes[ModelData.defaultScene]; + + m_skins.reserve(ModelData.skins.size()); + for (const auto& skin : ModelData.skins) + { + + // Grab a pointer to the inverse bind matrix data (one per joint in the skin). + const tinygltf::Accessor& inverseBindMatricesAccessorData = ModelData.accessors[skin.inverseBindMatrices]; + const size_t inverseBindMatricesDataItemCount = inverseBindMatricesAccessorData.count; + const auto& ibmBuffer = ModelData.bufferViews[inverseBindMatricesAccessorData.bufferView]; + + if ((ibmBuffer.byteStride != 4 && ibmBuffer.byteStride != 0/*packed/default*/) || (ibmBuffer.byteOffset & 3) != 0) + { + LOGE("Error reading time data for gltf skin inverse bind matrices\"%s\" (expecting contiguous array of aligned matrix data)", skin.name.c_str()); + return false; + } + std::span ibmDataSrcPtr{(glm::mat4*)&ModelData.buffers[ibmBuffer.buffer].data[ibmBuffer.byteOffset + inverseBindMatricesAccessorData.byteOffset], inverseBindMatricesDataItemCount}; + + m_skins.push_back(SkinData{skin.name, std::vector{skin.joints}/*copy*/, std::vector{ibmDataSrcPtr.begin(), ibmDataSrcPtr.end()}}); + } + return true; +} diff --git a/framework/code/animation/skinGltfLoader.hpp b/framework/code/animation/skinGltfLoader.hpp new file mode 100644 index 0000000..d90f46c --- /dev/null +++ b/framework/code/animation/skinGltfLoader.hpp @@ -0,0 +1,32 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include + +// forward declarations +class SkinData; + +namespace tinygltf { + class Model; +}; + +/// Gltf model processor for skeleton (node hierarchy) data (passed in to @MeshLoader::LoadGltf) +/// Creates and populates a @SkeletonData based on the nodes inside the gltf model. +/// @ingroup Animation +class SkinGltfProcessor +{ + SkinGltfProcessor& operator=(const SkinGltfProcessor&) = delete; + SkinGltfProcessor(const SkinGltfProcessor&) = delete; +public: + SkinGltfProcessor() noexcept; + ~SkinGltfProcessor(); + bool operator()(const tinygltf::Model& ModelData); + std::vector m_skins; +}; diff --git a/framework/code/camera/camera.cpp b/framework/code/camera/camera.cpp index f6c58ba..3e681cf 100644 --- a/framework/code/camera/camera.cpp +++ b/framework/code/camera/camera.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,6 +12,7 @@ Camera::Camera() : m_Orthographic(false) + , m_Cut(false) , m_Aspect(1.0) , m_FOV(PI*0.25f) , m_NearClip(1.0f) @@ -21,6 +22,7 @@ Camera::Camera() , m_Jitter() , m_ProjectionMatrix(1.0) , m_ViewMatrix() + , m_ViewMatrixPreTranslation() , m_InverseViewProjection() { UpdateMatrices(); // set sensible proj/view matrices @@ -70,6 +72,13 @@ void Camera::SetJitter(const glm::vec2 jitter) m_Jitter = jitter; } +//----------------------------------------------------------------------------- +void Camera::SetCut(bool cut) +//----------------------------------------------------------------------------- +{ + m_Cut = cut; +} + //----------------------------------------------------------------------------- void Camera::UpdateMatrices() //----------------------------------------------------------------------------- @@ -91,6 +100,7 @@ void Camera::UpdateMatrices() //m_ViewMatrix = glm::translate(m_ViewMatrix, -m_CurrentCameraPos); auto translation = glm::mat4( 1.0f ); + m_ViewMatrixPreTranslation = m_ViewMatrix; translation = glm::translate( translation, -m_CurrentCameraPos ); m_ViewMatrix = m_ViewMatrix * translation; @@ -103,10 +113,6 @@ void Camera::UpdateMatrices() glm::mat4 Camera::GetProjectionWithJitter(const glm::vec3 jitter) const //----------------------------------------------------------------------------- { - auto jitteredProj = m_ProjectionMatrixNoJitter; - jitteredProj[2][0] += jitter.x; - jitteredProj[2][1] += jitter.y; - jitteredProj[2][2] += jitter.z; - return jitteredProj; + glm::mat4 jm = glm::translate(jitter); + return jm * m_ProjectionMatrixNoJitter; } - diff --git a/framework/code/camera/camera.hpp b/framework/code/camera/camera.hpp index 8d02684..6bcbf9b 100644 --- a/framework/code/camera/camera.hpp +++ b/framework/code/camera/camera.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -43,6 +43,9 @@ class Camera /// Set Jitter amount (applied in UpdateMatrices) void SetJitter(const glm::vec2 Jitter); + /// Set Camera 'cut' flag + void SetCut(bool cut); + /// Return current projection matrix with the given jitter amount added glm::mat4 GetProjectionWithJitter(const glm::vec3 jitter) const; @@ -50,7 +53,7 @@ class Camera template void UpdateController(float ElapsedTimeSeconds, T_CameraController& CameraController) { - CameraController.Update(ElapsedTimeSeconds, m_CurrentCameraPos, m_CurrentCameraRot); + CameraController.Update(ElapsedTimeSeconds, m_CurrentCameraPos, m_CurrentCameraRot, m_Cut); } /// Update camera matrices (based on current rotation/position) @@ -62,16 +65,20 @@ class Camera glm::mat4 ProjectionMatrix() const { return m_ProjectionMatrix; } ///<@returns the camera projection matrix (as computed by UpdateMatrices) glm::mat4 ProjectionMatrixNoJitter() const { return m_ProjectionMatrixNoJitter; } ///<@returns the camera projection matrix without any Jitter applied glm::mat4 ViewMatrix() const { return m_ViewMatrix; } ///<@returns the camera view matrix (as computed by UpdateMatrices) + glm::mat4 ViewMatrixPreTranslation() const { return m_ViewMatrixPreTranslation; }; glm::vec3 ViewDirection() const { return m_ViewMatrix[2]; } ///<@returns the current camera direction (view along the z axis) glm::mat4 InverseViewProjection() const { return m_InverseViewProjection; }///<@returns the inverse of the view projection matrix float NearClip() const { return m_NearClip; } ///<@returns the camera near clip distance float FarClip() const { return m_FarClip; } ///<@returns the camera far clip distance - float Fov() const { return m_FOV; } ///<@returns the camera field of view + float Fov() const { return m_FOV; } ///<@returns the camera field of view (in the vertical direction) float Aspect() const { return m_Aspect; } ///<@returns the camera aspect ratio + glm::vec2 Jitter() const { return m_Jitter; } ///<@returns the camera jitter offsets + bool Cut() const { return m_Cut; } ///<@returns if the camera position was suddently 'cut' (dependent on camera controller setting the m_Cut flag) protected: // Camera parameters bool m_Orthographic; + bool m_Cut; float m_Aspect; float m_FOV; float m_NearClip; @@ -88,5 +95,6 @@ class Camera glm::mat4 m_ProjectionMatrixNoJitter; glm::mat4 m_ProjectionMatrix; glm::mat4 m_ViewMatrix; + glm::mat4 m_ViewMatrixPreTranslation; glm::mat4 m_InverseViewProjection; }; diff --git a/framework/code/camera/cameraController.cpp b/framework/code/camera/cameraController.cpp index 28ab76c..caa5ef7 100644 --- a/framework/code/camera/cameraController.cpp +++ b/framework/code/camera/cameraController.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -89,6 +89,9 @@ enum CameraController::KeysDownBits CameraControllerBase::KeyToBits(uint32_t key case 'E': return KeysDownBits::eUp; break; + case 16: + return KeysDownBits::eShift; + break; default: return KeysDownBits::eNone; break; @@ -154,8 +157,9 @@ void CameraController::TouchUpEvent(int iPointerID, float xPos, float yPos) //----------------------------------------------------------------------------- -void CameraController::Update(float frameTime, glm::vec3& position, glm::quat& rot) +void CameraController::Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut) { + cut = false; if (m_touchDown) { auto mouseDiff = m_LastMousePosition - m_CurrentMousePosition; @@ -168,28 +172,29 @@ void CameraController::Update(float frameTime, glm::vec3& position, glm::quat& r } + const float moveSpeed = m_MoveSpeed * ((m_KeysDown & KeysDownBits::eShift) == 0 ? 1.0f : 4.0f); if (m_KeysDown != KeysDownBits::eNone) { // Position change is relative to the camera rotation/direction. if (m_KeysDown & (KeysDownBits::eLeft | KeysDownBits::eRight)) { float direction = (m_KeysDown & KeysDownBits::eLeft) ? -1.0f : 1.0f; - position += rot * cVecViewRight * frameTime * m_MoveSpeed * direction; + position += rot * cVecViewRight * frameTime * moveSpeed * direction; } if (m_KeysDown & (KeysDownBits::eForward | KeysDownBits::eBackward)) { float direction = (m_KeysDown & KeysDownBits::eBackward) ? -1.0f : 1.0f; - position += rot * cVecViewForward * frameTime * m_MoveSpeed * direction; + position += rot * cVecViewForward * frameTime * moveSpeed * direction; } if (m_KeysDown & KeysDownBits::eUp) { glm::vec3 VecUp = glm::vec3(0.0f, 1.0f, 0.0f); - position += VecUp * frameTime * m_MoveSpeed; + position += VecUp * frameTime * moveSpeed; } if (m_KeysDown & KeysDownBits::eDown) { glm::vec3 VecUp = glm::vec3(0.0f, -1.0f, 0.0f); - position += VecUp * frameTime * m_MoveSpeed; + position += VecUp * frameTime * moveSpeed; } } } diff --git a/framework/code/camera/cameraController.hpp b/framework/code/camera/cameraController.hpp index 9246e64..bf2edab 100644 --- a/framework/code/camera/cameraController.hpp +++ b/framework/code/camera/cameraController.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -24,6 +24,7 @@ class CameraControllerBase virtual void TouchDownEvent(int iPointerID, float xPos, float yPos) {} virtual void TouchMoveEvent(int iPointerID, float xPos, float yPos) {} virtual void TouchUpEvent(int iPointerID, float xPos, float yPos) {} + virtual void TouchDoubleClickEvent(int iPointerID) {} /// Set screen size (for mouse events) void SetSize(uint32_t width, uint32_t height); @@ -38,7 +39,8 @@ class CameraControllerBase /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller - virtual void Update(float frameTime, glm::vec3& position, glm::quat& rot) = 0; + /// @param cut in - current camera cut, out - camera cut after applying controller + virtual void Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut) = 0; protected: enum KeysDownBits { @@ -48,7 +50,8 @@ class CameraControllerBase eLeft = 0x4, eRight = 0x8, eUp = 0x10, - eDown = 0x20 + eDown = 0x20, + eShift = 0x40 }; typedef std::underlying_type_t KeysDownBits_base; static enum KeysDownBits KeyToBits(uint32_t key); @@ -86,7 +89,8 @@ class CameraController : public CameraControllerBase /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller - void Update(float frameTime, glm::vec3& position, glm::quat& rot) override; + /// @param cut in - current camera cut, out - camera cut after applying controller + void Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut ) override; protected: glm::vec2 m_LastMousePosition; diff --git a/framework/code/camera/cameraControllerAnim.cpp b/framework/code/camera/cameraControllerAnim.cpp index 567dedd..110c65b 100644 --- a/framework/code/camera/cameraControllerAnim.cpp +++ b/framework/code/camera/cameraControllerAnim.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,6 +9,7 @@ #include "cameraControllerAnim.hpp" #include "animation/animation.hpp" #include +#include #include static const float cMouseRotSpeed = 0.1f; @@ -47,10 +48,16 @@ void CameraControllerAnim::SetPathAnimation(const Animation * pAnimation, int no /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller -void CameraControllerAnim::Update(float frameTime, glm::vec3& position, glm::quat& rot) +/// @param cut in - current camera cut, out - camera cut after applying controller +void CameraControllerAnim::Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut) { - m_CameraAnimationTime += frameTime * m_CameraAnimationSpeed; - m_CameraAnimationTime = std::fmodf(m_CameraAnimationTime, m_Animation->GetEndTime()); + cut = false; + const float cameraTimeStep = frameTime * m_CameraAnimationSpeed; + m_CameraAnimationTime += cameraTimeStep; + if ((m_CameraAnimationTime > m_Animation->GetEndTime() && cameraTimeStep > 0.0f) || + (m_CameraAnimationTime < 0.0f && cameraTimeStep < 0.0f)) + cut = true; + m_CameraAnimationTime = ::fmodf(m_CameraAnimationTime, m_Animation->GetEndTime()); if (m_CameraAnimationTime < 0.0f) m_CameraAnimationTime += m_Animation->GetEndTime(); @@ -133,8 +140,9 @@ void CameraControllerAnimControllable::TouchUpEvent( int iPointerID, float xPos, /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller -void CameraControllerAnimControllable::Update( float frameTime, glm::vec3& position, glm::quat& rot ) +void CameraControllerAnimControllable::Update( float frameTime, glm::vec3& position, glm::quat& rot, bool& cut ) { + cut = false; if (m_LookaroundTouchId != -1) { auto mouseDiff = m_LastLookaroundTouchPosition - m_CurrentLookaroundTouchPosition; @@ -152,9 +160,9 @@ void CameraControllerAnimControllable::Update( float frameTime, glm::vec3& posit m_CameraZoom += m_CameraZoomVelocity; if (m_CameraZoom > m_CameraZoomMax) - m_CameraZoom *= std::expf( 0.1f * (m_CameraZoomMax - m_CameraZoom) ); + m_CameraZoom *= ::expf( 0.1f * (m_CameraZoomMax - m_CameraZoom) ); else if (m_CameraZoom < m_CameraZoomMin) - m_CameraZoom *= std::expf( 0.1f * (m_CameraZoom - m_CameraZoomMin) ); + m_CameraZoom *= ::expf( 0.1f * (m_CameraZoom - m_CameraZoomMin) ); if (m_MovementTouchId != -1) { @@ -174,9 +182,9 @@ void CameraControllerAnimControllable::Update( float frameTime, glm::vec3& posit m_CameraElevationRotation += m_directionVelocity.y; if (m_CameraElevationRotation > m_CameraElevationRotationMax) - m_CameraElevationRotation *= std::expf( 0.1f * (m_CameraElevationRotationMax - m_CameraElevationRotation) ); + m_CameraElevationRotation *= ::expf( 0.1f * (m_CameraElevationRotationMax - m_CameraElevationRotation) ); else if (m_CameraElevationRotation < m_CameraElevationRotationMin) - m_CameraElevationRotation *= std::expf( 0.1f * (m_CameraElevationRotation - m_CameraElevationRotationMin) ); + m_CameraElevationRotation *= ::expf( 0.1f * (m_CameraElevationRotation - m_CameraElevationRotationMin) ); // Countdown the timer until the camera automatically moves m_AnimationRestartTimer -= frameTime; @@ -194,8 +202,12 @@ void CameraControllerAnimControllable::Update( float frameTime, glm::vec3& posit else animationSpeedLerp = 0.0f; - m_CameraAnimationTime += frameTime * m_CameraAnimationSpeed * animationSpeedLerp * m_animationLastRotationDirection; - m_CameraAnimationTime = std::fmodf( m_CameraAnimationTime, m_Animation->GetEndTime() ); + const float cameraTimeStep = frameTime * m_CameraAnimationSpeed * animationSpeedLerp * m_animationLastRotationDirection; + m_CameraAnimationTime += cameraTimeStep; + if ((m_CameraAnimationTime > m_Animation->GetEndTime() && cameraTimeStep > 0.0f) || + (m_CameraAnimationTime < 0.0f && cameraTimeStep < 0.0f)) + cut = true; + m_CameraAnimationTime = ::fmodf( m_CameraAnimationTime, m_Animation->GetEndTime() ); if (m_CameraAnimationTime < 0.0f) m_CameraAnimationTime += m_Animation->GetEndTime(); diff --git a/framework/code/camera/cameraControllerAnim.hpp b/framework/code/camera/cameraControllerAnim.hpp index c0828a3..b3cb425 100644 --- a/framework/code/camera/cameraControllerAnim.hpp +++ b/framework/code/camera/cameraControllerAnim.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -39,7 +39,8 @@ class CameraControllerAnim : public CameraControllerBase /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller - void Update(float frameTime, glm::vec3& position, glm::quat& rot) override; + /// @param cut in - current camera cut, out - camera cut after applying controller + void Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut) override; protected: const Animation* m_Animation = nullptr; ///< pointer to the animation controlling this camera postion (not owned by us) @@ -71,7 +72,7 @@ class CameraControllerAnimControllable : public CameraControllerAnim /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller - void Update( float frameTime, glm::vec3& position, glm::quat& rot ) override; + void Update( float frameTime, glm::vec3& position, glm::quat& rot, bool& cut ) override; protected: glm::vec2 m_LastMovementTouchPosition; diff --git a/framework/code/camera/cameraControllerTouch.cpp b/framework/code/camera/cameraControllerTouch.cpp index c617a4d..271b49e 100644 --- a/framework/code/camera/cameraControllerTouch.cpp +++ b/framework/code/camera/cameraControllerTouch.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,7 +9,7 @@ #include "cameraControllerTouch.hpp" static const float cMouseRotSpeed = 0.1f; -static const float cMouseMoveSpeeed = 0.001f; +static const float cTouchMoveSpeedMultipler = 0.001f; // Helpers constexpr glm::vec3 cVecViewRight = glm::vec3( 1.0f, 0.0f, 0.0f ); // x-direction (vector pointing to right of screen)! @@ -91,15 +91,15 @@ void CameraControllerTouch::TouchUpEvent(int iPointerID, float xPos, float yPos) //----------------------------------------------------------------------------- -void CameraControllerTouch::Update(float frameTime, glm::vec3& position, glm::quat& rot) +void CameraControllerTouch::Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut) { + cut = false; if (m_LookaroundTouchId != -1) { auto mouseDiff = m_LastLookaroundTouchPosition - m_CurrentLookaroundTouchPosition; auto angleChange = mouseDiff * frameTime * m_RotateSpeed; m_LastLookaroundTouchPosition = m_CurrentLookaroundTouchPosition; - // one (touch) rotation axis is relative to the view direction, other is relative to world - prevents camera from 'twisting' although does introduce gimbal when looking along the UP axis and rotationg left/right. rot = glm::angleAxis( angleChange.x, m_WorldUp ) * rot * glm::angleAxis( angleChange.y, cVecViewRight ); rot = glm::normalize( rot ); @@ -108,7 +108,7 @@ void CameraControllerTouch::Update(float frameTime, glm::vec3& position, glm::qu if (m_MovementTouchId != -1) { auto mouseDiff = m_LastMovementTouchPosition - m_CurrentMovementTouchPosition; - auto directionChange = mouseDiff * frameTime * m_MoveSpeed; + auto directionChange = mouseDiff * frameTime * m_MoveSpeed * cTouchMoveSpeedMultipler; position -= rot * cVecViewRight * directionChange.x; position += rot * cVecViewForward * directionChange.y; diff --git a/framework/code/camera/cameraControllerTouch.hpp b/framework/code/camera/cameraControllerTouch.hpp index f07d943..89a4614 100644 --- a/framework/code/camera/cameraControllerTouch.hpp +++ b/framework/code/camera/cameraControllerTouch.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -36,7 +36,8 @@ class CameraControllerTouch : public CameraControllerBase /// @param frameTime time in seconds since last Update. /// @param position in - current camera position, out - camera position after applying controller /// @param rot in - current camera rotation, out - camera rotation after applying controller - void Update(float frameTime, glm::vec3& position, glm::quat& rot) override; + /// @param cut in - current camera cut, out - camera cut after applying controller + void Update(float frameTime, glm::vec3& position, glm::quat& rot, bool& cut) override; protected: glm::vec2 m_LastMovementTouchPosition; diff --git a/framework/code/camera/cameraData.hpp b/framework/code/camera/cameraData.hpp index 0912aaa..33c55ed 100644 --- a/framework/code/camera/cameraData.hpp +++ b/framework/code/camera/cameraData.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/camera/cameraGltfLoader.cpp b/framework/code/camera/cameraGltfLoader.cpp index c8f48df..2664c3d 100644 --- a/framework/code/camera/cameraGltfLoader.cpp +++ b/framework/code/camera/cameraGltfLoader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/camera/cameraGltfLoader.hpp b/framework/code/camera/cameraGltfLoader.hpp index 644f5ec..75e42af 100644 --- a/framework/code/camera/cameraGltfLoader.hpp +++ b/framework/code/camera/cameraGltfLoader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/dx12/commandList.cpp b/framework/code/dx12/commandList.cpp new file mode 100644 index 0000000..053d574 --- /dev/null +++ b/framework/code/dx12/commandList.cpp @@ -0,0 +1,107 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "commandList.hpp" +#include "dx12.hpp" + +//----------------------------------------------------------------------------- +CommandList::CommandList() noexcept +//----------------------------------------------------------------------------- + : CommandListBase() +{ +} + +//----------------------------------------------------------------------------- +CommandList::~CommandList() +//----------------------------------------------------------------------------- +{ +} + +//----------------------------------------------------------------------------- +CommandList::CommandList(CommandList&& other) noexcept +//--------------------------------------------------------------------------- +{ + assert(0); // Currently move is not implemented for this class, but std::vector will not compile if a move (or copy) is not provided, we currently expect that the move will not get called (ie vector of CommandList will not resize) +} + +//----------------------------------------------------------------------------- +CommandList& CommandList::operator=(CommandList && other) noexcept +//----------------------------------------------------------------------------- +{ + assert(0); // Currently move is not implemented for this class, but std::vector will not compile if a move (or copy) is not provided, we currently expect that the move will not get called (ie vector of CommandList will not resize) + return *this; +} + +//----------------------------------------------------------------------------- +bool CommandList::Initialize(Dx12* gfxApi, const std::string& Name, CommandListBase::Type CommandListType, uint32_t QueueIndex, ID3D12PipelineState* pPipelineState) +//----------------------------------------------------------------------------- +{ + m_pDx12 = gfxApi; + m_Name = Name; + m_Type = CommandListType; + // ensure framework enums match Dx12 enum values so they can be cast + static_assert(uint32_t( Type::Direct ) == uint32_t( D3D12_COMMAND_LIST_TYPE_DIRECT )); + static_assert(uint32_t( Type::Bundle ) == uint32_t( D3D12_COMMAND_LIST_TYPE_BUNDLE )); + static_assert(uint32_t( Type::Compute ) == uint32_t( D3D12_COMMAND_LIST_TYPE_COMPUTE )); + static_assert(uint32_t( Type::Copy ) == uint32_t( D3D12_COMMAND_LIST_TYPE_COPY )); + static_assert(uint32_t( Type::VideoDecode ) == uint32_t( D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE )); + static_assert(uint32_t( Type::VideoProcess ) == uint32_t( D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS )); + static_assert(uint32_t( Type::VideoEncode ) == uint32_t( D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )); + + // Reset draw counts + m_NumDrawCalls = 0; + m_NumTriangles = 0; + + if (!gfxApi->CreateCommandList( (D3D12_COMMAND_LIST_TYPE)m_Type, pPipelineState, m_CommandList)) + return false; + Dx12::SetName(m_CommandList.Get(), Name); + return true; +} + +//----------------------------------------------------------------------------- +bool CommandList::Reset() +//----------------------------------------------------------------------------- +{ + m_NumDrawCalls = 0; + m_NumTriangles = 0; + + //if (!Dx12::CheckError( "CmdList Reset", m_CommandList.Get()->Reset())) + // return false; + + return true; +} + +//----------------------------------------------------------------------------- +bool CommandList::Begin(ID3D12PipelineState* pPipelineState) +//----------------------------------------------------------------------------- +{ + m_CommandAllocator = m_pDx12->OpenCommandAllocator( (D3D12_COMMAND_LIST_TYPE)m_Type ); + if (!m_CommandAllocator) + return false; + return Dx12::CheckError( "CommandListReset", m_CommandList->Reset(m_CommandAllocator.Get(), pPipelineState) ); +} + +//----------------------------------------------------------------------------- +bool CommandList::End() +//----------------------------------------------------------------------------- +{ + assert(m_CommandAllocator); + bool success = Dx12::CheckError( "CommandListClose", m_CommandList->Close() ); + m_pDx12->CloseCommandAllocator( (D3D12_COMMAND_LIST_TYPE)m_Type, std::move(m_CommandAllocator) ); + return success; +} + +//----------------------------------------------------------------------------- +void CommandList::Release() +//----------------------------------------------------------------------------- +{ + CommandListBase::Release(); + + assert(!m_CommandAllocator); // expected to be closed + m_CommandList.Reset(); +} diff --git a/framework/code/dx12/commandList.hpp b/framework/code/dx12/commandList.hpp new file mode 100644 index 0000000..d101699 --- /dev/null +++ b/framework/code/dx12/commandList.hpp @@ -0,0 +1,52 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include +#include +#include +#include "graphicsApi/commandList.hpp" + +// Forward declares +using namespace Microsoft::WRL; // for ComPtr +class Dx12; + + +template<> +class CommandList final : public CommandListBase +{ + CommandList(const CommandList&) = delete; + CommandList& operator=(const CommandList&) = delete; +public: + CommandList() noexcept; + ~CommandList(); + CommandList(CommandList&&) noexcept; + CommandList& operator=(CommandList&&) noexcept; + + bool Initialize(Dx12*, const std::string& Name = {}, Type CommandListType = Type::Direct, uint32_t QueueIndex = 0, ID3D12PipelineState* pPipelineState = nullptr); + + // Begin command buffer + bool Begin(ID3D12PipelineState* pPipelineState = nullptr); + + bool End(); + + bool Reset(); + + /// @brief Release the Dx12 resources used by this wrapper and cleanup. + void Release() override; + + ID3D12GraphicsCommandList* Get() const { return m_CommandList.Get(); } + ID3D12GraphicsCommandList* operator->() const { return m_CommandList.Get(); } + ID3D12GraphicsCommandList* operator*() const { return m_CommandList.Get(); } + +private: + ComPtr m_CommandList; + ComPtr m_CommandAllocator; // We take ownership of the allocator for the duration of recording (and return to Dx12 class in End) + Dx12* m_pDx12 = nullptr; +}; + diff --git a/framework/code/dx12/descriptorHeapManager.cpp b/framework/code/dx12/descriptorHeapManager.cpp new file mode 100644 index 0000000..bdf067f --- /dev/null +++ b/framework/code/dx12/descriptorHeapManager.cpp @@ -0,0 +1,146 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "descriptorHeapManager.hpp" +#include "dx12.hpp" +#include + +// Forward declarations +using namespace Microsoft::WRL; // for ComPtr + + +//----------------------------------------------------------------------------- +bool DescriptorHeapManager::Initialize(ComPtr descriptorHeap, uint32_t maxHandles, uint32_t handleSize) +//----------------------------------------------------------------------------- +{ + m_DescriptorHeap = std::move(descriptorHeap); + m_HandleSize = handleSize; + m_FreeDescriptors.clear(); + m_FreeDescriptors.push_back({ 0,maxHandles }); + m_TemporaryAllocations.fill({}); + return true; +} + +//----------------------------------------------------------------------------- +DescriptorTableHandle DescriptorHeapManager::Allocate(uint32_t numHandles) +//----------------------------------------------------------------------------- +{ + auto foundIt = std::find_if(m_FreeDescriptors.begin(), m_FreeDescriptors.end(), [numHandles](const auto& freeRange) -> bool { + uint32_t freeSize = freeRange.end - freeRange.start; + return freeSize >= numHandles; + }); + if (foundIt == m_FreeDescriptors.end()) + return {}; // out of space! + + const uint32_t handleStartIdx = foundIt->start; + foundIt->start += numHandles; + if (foundIt->start == foundIt->end) + // Block used completely + m_FreeDescriptors.erase(foundIt); + + return DescriptorTableHandle{ m_DescriptorHeap->GetGPUDescriptorHandleForHeapStart().ptr + UINT64(handleStartIdx) * m_HandleSize, + m_DescriptorHeap->GetCPUDescriptorHandleForHeapStart().ptr + UINT64(handleStartIdx) * m_HandleSize, + numHandles, + m_HandleSize}; +} + +//----------------------------------------------------------------------------- +DescriptorTableHandle DescriptorHeapManager::AllocateTemporary(uint32_t frameIndex, uint32_t numHandles) +//----------------------------------------------------------------------------- +{ + // Search/allocate in reverse (opposite direction from Allocate, so temporaries are at the top of the descriptor heap) + auto foundIt = std::find_if(m_FreeDescriptors.rbegin(), m_FreeDescriptors.rend(), [numHandles](const auto& freeRange) -> bool { + uint32_t freeSize = freeRange.end - freeRange.start; + return freeSize >= numHandles; + }); + if (foundIt == m_FreeDescriptors.rend()) + return {}; // out of space! + + const uint32_t handleStartIdx = foundIt->end - numHandles; + foundIt->end -= numHandles; + if (foundIt->start == foundIt->end) + // Block used completely + m_FreeDescriptors.erase((++foundIt).base());//convert reverse iterator to forward and erase from free + + DescriptorTableHandle handle{ m_DescriptorHeap->GetGPUDescriptorHandleForHeapStart().ptr + UINT64(handleStartIdx) * m_HandleSize, + m_DescriptorHeap->GetCPUDescriptorHandleForHeapStart().ptr + SIZE_T(handleStartIdx) * m_HandleSize, + numHandles, + m_HandleSize}; + m_TemporaryAllocations[frameIndex].push_back({ handleStartIdx, handleStartIdx + numHandles }); + + return handle; +} + +//----------------------------------------------------------------------------- +void DescriptorHeapManager::Free(DescriptorTableHandle&& handle) +//----------------------------------------------------------------------------- +{ + assert(handle.numHandles > 0); + const uint32_t handleStartIdx = (handle.GetCpuHandle(0).ptr - m_DescriptorHeap->GetCPUDescriptorHandleForHeapStart().ptr) / m_HandleSize; + const uint32_t handleEndIdx = handleStartIdx + handle.numHandles; +} + +//----------------------------------------------------------------------------- +void DescriptorHeapManager::Free(Range range) +//----------------------------------------------------------------------------- +{ + const uint32_t startIdx = range.start; + const uint32_t endIdx = range.end; + assert(startIdx < endIdx); + + auto nextFreeIt = std::find_if(m_FreeDescriptors.begin(), m_FreeDescriptors.end(), [startIdx](const auto& freeRange) -> bool { + return (startIdx < freeRange.start); + }); + if (nextFreeIt == m_FreeDescriptors.end()) + { + assert(m_FreeDescriptors.empty() || m_FreeDescriptors.back().end <= startIdx); + if (!m_FreeDescriptors.empty() && m_FreeDescriptors.back().end == startIdx) + // add to the end of the final free block + m_FreeDescriptors.back().end = endIdx; + else + // add a new 'final' free block + m_FreeDescriptors.push_back({ startIdx, endIdx }); + } + else + { + assert(nextFreeIt->start <= endIdx); + if (endIdx == nextFreeIt->start) + // Extend the next free block to include this newly freed block + nextFreeIt->start = startIdx; + else + { + if (nextFreeIt != m_FreeDescriptors.begin() && (nextFreeIt - 1)->end == startIdx) + { + if (nextFreeIt->start == endIdx) + { + // Combine previous free block with the next free block (we just plugged the gap) + (nextFreeIt - 1)->end = nextFreeIt->end; + m_FreeDescriptors.erase(nextFreeIt); + } + else + // Just extend the previous free block + (nextFreeIt - 1)->end = endIdx; + } + else + // Make a new free block in the middle of the allocations (add a hole) + m_FreeDescriptors.insert(nextFreeIt, { startIdx, endIdx }); + } + } +} + +//----------------------------------------------------------------------------- +void DescriptorHeapManager::FreeTemporaries(uint32_t frameIndex) +//----------------------------------------------------------------------------- +{ + for (const auto& alloc : m_TemporaryAllocations[frameIndex]) + { + Free(alloc); + } + m_TemporaryAllocations[frameIndex].clear(); +} diff --git a/framework/code/dx12/descriptorHeapManager.hpp b/framework/code/dx12/descriptorHeapManager.hpp new file mode 100644 index 0000000..5454455 --- /dev/null +++ b/framework/code/dx12/descriptorHeapManager.hpp @@ -0,0 +1,84 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include +#include +#include +#include + +#define NUM_SWAPCHAIN_BUFFERS (8) + +// Forward declarations +struct ID3D12DescriptorHeap; +class Dx12; + + +struct DescriptorTableHandle +{ + DescriptorTableHandle(const DescriptorTableHandle&) = default; + DescriptorTableHandle& operator=(const DescriptorTableHandle&) = default; + DescriptorTableHandle() noexcept {}; + DescriptorTableHandle(UINT64 _gpu, UINT64 _cpu, uint32_t _numHandles, uint32_t _handleSize) noexcept + : gpu{.ptr=_gpu}, cpu{.ptr=_cpu}, numHandles(_numHandles), handleSize(_handleSize) {} + DescriptorTableHandle(DescriptorTableHandle && other) noexcept { + *this = std::move(other); + } + DescriptorTableHandle& operator=(DescriptorTableHandle && other) noexcept { + if (this != &other) + { + gpu = other.gpu; + other.gpu = {}; + cpu = other.cpu; + other.cpu = {}; + numHandles = other.numHandles; + other.numHandles = 0; + handleSize = other.handleSize; + other.handleSize = 0; + } + return *this; + } + D3D12_CPU_DESCRIPTOR_HANDLE GetCpuHandle(size_t index) const { return {cpu.ptr + size_t(index)*handleSize}; } + D3D12_GPU_DESCRIPTOR_HANDLE GetGpuHandle() const { return gpu; } + uint32_t numHandles = 0; + uint32_t handleSize = 0; +private: + D3D12_GPU_DESCRIPTOR_HANDLE gpu{}; + D3D12_CPU_DESCRIPTOR_HANDLE cpu{}; +}; + + +struct DescriptorTableHandleAndRootIndex +{ + uint32_t rootIndex; + DescriptorTableHandle descriptorTable; +}; + + + +class DescriptorHeapManager +{ + DescriptorHeapManager(const DescriptorHeapManager&) = delete; + DescriptorHeapManager& operator=(const DescriptorHeapManager&) = delete; +public: + DescriptorHeapManager() noexcept {} + bool Initialize(Microsoft::WRL::ComPtr descriptorHeap, uint32_t maxHandles, uint32_t handleSize); + DescriptorTableHandle Allocate(uint32_t numHandles); + DescriptorTableHandle AllocateTemporary(uint32_t frameIndex, uint32_t numHandles); + void Free(DescriptorTableHandle&&); + void FreeTemporaries(uint32_t frameIndex); + ID3D12DescriptorHeap* const GetHeap() const { return m_DescriptorHeap.Get(); } +private: + Microsoft::WRL::ComPtr m_DescriptorHeap; + uint32_t m_HandleSize = 0; + struct Range { uint32_t start = 0, end = 0; }; + std::vector m_FreeDescriptors; + std::array, NUM_SWAPCHAIN_BUFFERS> m_TemporaryAllocations; +protected: + void Free(Range); +}; diff --git a/framework/code/dx12/dx12.cpp b/framework/code/dx12/dx12.cpp new file mode 100644 index 0000000..4c167f0 --- /dev/null +++ b/framework/code/dx12/dx12.cpp @@ -0,0 +1,712 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "dx12.hpp" +#include "system/os_common.h" +#include +#include +#include "texture/texture.hpp" + +static const uint32_t cnMaxSamplers = 64; +static const uint32_t cnMaxShaderResourceViewHandles = 16384; + + +//----------------------------------------------------------------------------- +Dx12::Dx12() : GraphicsApiBase() + , m_SwapchainFormat(TextureFormat::UNDEFINED) +//----------------------------------------------------------------------------- +{} + +//----------------------------------------------------------------------------- +Dx12::~Dx12() +//----------------------------------------------------------------------------- +{ +// DestroyFrameBuffers(); +// DestroySwapchainRenderPass(); +// DestroySwapChain(); + + m_MemoryManager.Destroy(); +} + +//----------------------------------------------------------------------------- +bool Dx12::Init(uintptr_t hWnd, uintptr_t hInst, const Dx12::tSelectSurfaceFormatFn& SelectSurfaceFormatFn, const Dx12::tConfigurationFn& CustomConfigurationFn ) +//----------------------------------------------------------------------------- +{ + m_hWnd = (HWND)hWnd; + m_hInstance = (HINSTANCE)hInst; + + if (!InitDevice()) + { + return false; + } + if (!InitMemoryManager()) + { + return false; + } + if (!CreateQueues()) + { + return false; + } + if (!CreateCommandAllocators()) + { + return false; + } + if (!CreateSwapchain()) + { + return false; + } + if (!CreateSamplerHeap()) + { + return false; + } + if (!CreateShaderResourceViewHeap()) + { + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +bool Dx12::CheckError(const char*const pPrefix, HRESULT result) +//----------------------------------------------------------------------------- +{ + if (result == S_OK) + return true; + LOGE("DX12 error: (%ld) from %s", (long)result, pPrefix); + return false; +} + +//----------------------------------------------------------------------------- +bool Dx12::InitDevice() +//----------------------------------------------------------------------------- +{ +#if defined(_DEBUG) + // Enable debug layer before everything else. + { + ComPtr debugI; + if (!CheckError("D3D12GetDebugInterface", D3D12GetDebugInterface(IID_PPV_ARGS(&debugI)))) + return false; + debugI->EnableDebugLayer(); + } +#endif + + ComPtr dxgiFactory; + if (!CheckError( "CreateDXGIFactory2", CreateDXGIFactory2(DXGI_CREATE_FACTORY_DEBUG, IID_PPV_ARGS(&dxgiFactory)) )) + return false; + + // Ignore warp drivers (could add as an option here if we waned) + ComPtr dxgiAdapter; + UINT adaptorIdx=0; + bool foundValidAdaptor = false; + // Grab the first non-software adaptor. + ///TODO: pass in desired adaptor index + while (dxgiFactory->EnumAdapters1(adaptorIdx, &dxgiAdapter) != DXGI_ERROR_NOT_FOUND) + { + DXGI_ADAPTER_DESC1 adaptorDescription; + dxgiAdapter->GetDesc1(&adaptorDescription); + if ((adaptorDescription.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) == 0) + { + foundValidAdaptor = true; + break; + } + ++adaptorIdx; + } + if (!foundValidAdaptor) + return false; + ComPtr device; + if (!CheckError("D3D12CreateDevice", D3D12CreateDevice(dxgiAdapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&device)))) + return false; + + m_DxgiFactory = dxgiFactory; + m_Device = device; + m_Adaptor = dxgiAdapter; + + return true; +} + +//----------------------------------------------------------------------------- +bool Dx12::InitMemoryManager() +//----------------------------------------------------------------------------- +{ + return m_MemoryManager.Initialize(m_Adaptor.Get(), m_Device.Get()); +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateQueues() +//----------------------------------------------------------------------------- +{ + D3D12_COMMAND_QUEUE_DESC queueDesc{}; + queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT; + queueDesc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL; + queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; + queueDesc.NodeMask = 0; + ComPtr graphicsQueue; + if (!CheckError("CreateCommandQueue", m_Device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&graphicsQueue)))) + return false; + + queueDesc.Type = D3D12_COMMAND_LIST_TYPE_COMPUTE; + queueDesc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL; + queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; + queueDesc.NodeMask = 0; + ComPtr computeQueue; + if (!CheckError("CreateCommandQueue", m_Device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&computeQueue)))) + return false; + + m_DirectCommandQueue = graphicsQueue; + m_ComputeCommandQueue = computeQueue; + + CheckError("CreateQueues Fence", m_Device->CreateFence(m_DirectCommandQueueFenceValue++, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&m_DirectCommandQueueFence))); + + CheckError( "CreateQueues Fence", m_Device->CreateFence( m_ComputeCommandQueueFenceValue++, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS( &m_ComputeCommandQueueFence ) ) ); + + + return true; +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateCommandAllocators() + //----------------------------------------------------------------------------- +{ + typedef std::pair tAC; + decltype(m_commandAllocators) commandAllocators{}; + + for (auto& [allocatorCount, allocatorType] : { tAC{1 + NUM_SWAPCHAIN_BUFFERS, D3D12_COMMAND_LIST_TYPE_DIRECT}, tAC{64, D3D12_COMMAND_LIST_TYPE_BUNDLE}, tAC{NUM_SWAPCHAIN_BUFFERS, D3D12_COMMAND_LIST_TYPE_COMPUTE}, tAC{NUM_SWAPCHAIN_BUFFERS, D3D12_COMMAND_LIST_TYPE_COPY} }) + { + for(auto i=0;iCreateCommandAllocator(allocatorType, IID_PPV_ARGS(&commandAllocators[allocatorType].emplace_back())))) + return false; + } + m_commandAllocators = std::move(commandAllocators); + return true; +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateCommandList(D3D12_COMMAND_LIST_TYPE commandListType, ID3D12PipelineState*const pPipelineState, ComPtr& pCmdList/*out*/) +//----------------------------------------------------------------------------- +{ + assert(pCmdList.Get() == nullptr); // check not already allocated + bool error = false; + + // Get a command allocator for duretion of the create (no longer needed after we close it). THREAD UNSAFE (for the duration of this function) + if (m_commandAllocators[commandListType].empty()) + return false; + auto commandAllocator = m_commandAllocators[commandListType].back(); + + // Allocate the command buffer from the allocator + auto RetVal = m_Device->CreateCommandList(0,//nodeMask + commandListType, + commandAllocator.Get(), + pPipelineState, + IID_PPV_ARGS(&pCmdList)); + if (!CheckError("CreateCommandList", RetVal)) + return false; + return CheckError("CloseCommandList", pCmdList->Close()); +} + +//----------------------------------------------------------------------------- +ComPtr Dx12::OpenCommandAllocator(D3D12_COMMAND_LIST_TYPE listType) +//----------------------------------------------------------------------------- +{ + auto a = m_commandAllocators[listType].back(); + m_commandAllocators[listType].pop_back(); + return a; +} + +//----------------------------------------------------------------------------- +void Dx12::CloseCommandAllocator(D3D12_COMMAND_LIST_TYPE listType, ComPtr && commandAllocator) +//----------------------------------------------------------------------------- +{ + m_commandAllocators[listType].push_back( std::move(commandAllocator) ); +} + +//----------------------------------------------------------------------------- +uint64_t Dx12::CommandListExecute( ID3D12CommandList* const pCommandList ) +//----------------------------------------------------------------------------- +{ + std::span commandLists{&pCommandList, 1}; + + m_DirectCommandQueue->ExecuteCommandLists( commandLists.size(), commandLists.data() ); + const uint64_t valueToSignal = m_DirectCommandQueueFenceValue++; + m_DirectCommandQueue->Signal( m_DirectCommandQueueFence.Get(), valueToSignal ); + return valueToSignal; +} + +//----------------------------------------------------------------------------- +uint64_t Dx12::ComputeCommandListExecute(ID3D12CommandList* const pCommandList) +//----------------------------------------------------------------------------- +{ + std::span commandLists{ &pCommandList, 1 }; + + m_ComputeCommandQueue->ExecuteCommandLists(commandLists.size(), commandLists.data()); + const uint64_t valueToSignal = m_ComputeCommandQueueFenceValue++; + m_ComputeCommandQueue->Signal(m_ComputeCommandQueueFence.Get(), valueToSignal); + return valueToSignal; +} + +//----------------------------------------------------------------------------- +ID3D12GraphicsCommandList* const Dx12::StartSetupCommandBuffer() +//----------------------------------------------------------------------------- +{ + assert(!m_SetupCommandList); + + ComPtr commandList; + if (!CreateCommandList(D3D12_COMMAND_LIST_TYPE_DIRECT, nullptr, commandList)) + return nullptr; + auto commandAllocator = OpenCommandAllocator( D3D12_COMMAND_LIST_TYPE_DIRECT ); + if (!commandAllocator) + return nullptr; + if (!Dx12::CheckError( "CommandListReset", commandList->Reset( commandAllocator.Get(), nullptr))) + return nullptr; + m_SetupCommandAllocator = commandAllocator; + m_SetupCommandList = commandList; + return m_SetupCommandList.Get(); +} + +//----------------------------------------------------------------------------- +void Dx12::FinishSetupCommandBuffer(ID3D12GraphicsCommandList* const cmdList) +//----------------------------------------------------------------------------- +{ + assert(cmdList); + if (cmdList != m_SetupCommandList.Get()) + { + LOGE("Setup CommandList does not match he one passed in to FinishSetupCommandBuffer!"); + } + CheckError("CmdList Close", cmdList->Close()); + + CommandListExecute(cmdList); + QueueWaitIdle(0); + + CloseCommandAllocator( D3D12_COMMAND_LIST_TYPE_DIRECT, std::move(m_SetupCommandAllocator) ); + m_SetupCommandList = nullptr; +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateSwapchain() +//----------------------------------------------------------------------------- +{ + m_SwapchainFormat = TextureFormat::R8G8B8A8_UNORM; + + DXGI_SWAP_CHAIN_DESC1 swapchainDesc{}; + swapchainDesc.Width = 0; /* get from window */ + swapchainDesc.Height = 0; /* get from window */ + swapchainDesc.Format = TextureFormatToDx( m_SwapchainFormat ); + swapchainDesc.SampleDesc = { 1,0 }; + swapchainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swapchainDesc.BufferCount = NUM_SWAPCHAIN_BUFFERS; + swapchainDesc.Scaling = DXGI_SCALING_NONE; + swapchainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD; + swapchainDesc.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED; + swapchainDesc.Flags = 0;///TODO: optional tearing + + ComPtr swapchain; + if (!CheckError("CreateSwapChainForHwnd", m_DxgiFactory->CreateSwapChainForHwnd(m_DirectCommandQueue.Get(), m_hWnd, &swapchainDesc, nullptr, nullptr, &swapchain))) + return false; + + // Make a descriptor heap for the swapchain render targets + uint32_t rtvHandleSize = 0; + ComPtr descriptorHeap = CreateDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_RTV, swapchainDesc.BufferCount, &rtvHandleSize); + + D3D12_CPU_DESCRIPTOR_HANDLE descHandle = descriptorHeap->GetCPUDescriptorHandleForHeapStart(); + + for (UINT i = 0; i < swapchainDesc.BufferCount; ++i) + { + if (!CheckError("Swapchain GetBuffer", swapchain->GetBuffer(i, IID_PPV_ARGS(&m_FrameBuffers[i])))) + return false; + m_Device->CreateRenderTargetView(m_FrameBuffers[i].Get(), nullptr, descHandle); + descHandle.ptr += rtvHandleSize; + } + + m_SwapchainDescriptorHeap = descriptorHeap; + m_SwapchainDescriptorSize = rtvHandleSize; + m_SwapchainBufferCount = swapchainDesc.BufferCount; + + swapchain.As(&m_Swapchain); // to IDXGISwapChain3 + m_SwapchainPresentIndx = m_Swapchain->GetCurrentBackBufferIndex(); + m_SwapchainCurrentIndx = 0; + + // Take the surface dimensions from the swapchain + m_Swapchain->GetDesc1(&swapchainDesc); + m_SurfaceWidth = swapchainDesc.Width; + m_SurfaceHeight = swapchainDesc.Height; + + //DELETE THIS BLOCK + // dumb sync object for waiting for framesync (slow). + { + HRESULT hr = m_Device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&m_Fence)); + m_FenceValue = 0; + + // Create an event handle to use for frame synchronization. + m_FenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); + if (m_FenceEvent == nullptr) + { + hr = HRESULT_FROM_WIN32(GetLastError()); + } + } + + return true; +} + +//----------------------------------------------------------------------------- +ComPtr Dx12::CreateDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE heapType, uint32_t numDescriptors, uint32_t* pOutDescriptorHandleSize) +//----------------------------------------------------------------------------- +{ + ComPtr heap; + D3D12_DESCRIPTOR_HEAP_DESC heapDesc{}; + heapDesc.Type = heapType; + heapDesc.NumDescriptors = numDescriptors; + heapDesc.Flags = (heapType != D3D12_DESCRIPTOR_HEAP_TYPE_RTV && heapType != D3D12_DESCRIPTOR_HEAP_TYPE_DSV) ? D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE : D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + heapDesc.NodeMask = 0; + if (!CheckError("CreateDescriptorHeap", m_Device->CreateDescriptorHeap(&heapDesc, IID_PPV_ARGS(&heap)))) + return {}; + if (pOutDescriptorHandleSize) + { + *pOutDescriptorHandleSize = m_Device->GetDescriptorHandleIncrementSize(heapType); + } + + return heap; +} + +//----------------------------------------------------------------------------- +bool Dx12::FrameInit(uint32_t WhichFrame) +//----------------------------------------------------------------------------- +{ + m_ShaderResourceViewDescriptorHeap.FreeTemporaries(WhichFrame); + m_SamplerDescriptorHeap.FreeTemporaries(WhichFrame); + return true; +} + +//----------------------------------------------------------------------------- +bool Dx12::QueueWaitIdle(uint32_t QueueIndex) const +//----------------------------------------------------------------------------- +{ + assert(QueueIndex == 0); + + // Wait until the previous frame is finished. + if (m_DirectCommandQueueFence->GetCompletedValue() <= m_DirectCommandQueueFenceValue) + { + m_DirectCommandQueueFence->SetEventOnCompletion(m_DirectCommandQueueFenceValue-1, m_FenceEvent); + WaitForSingleObject(m_FenceEvent, INFINITE); + } + + assert(QueueIndex == 0); + return true; +} + +//----------------------------------------------------------------------------- +bool Dx12::WaitUntilIdle() const +//----------------------------------------------------------------------------- +{ + // blah! + return true; +} + +//----------------------------------------------------------------------------- +void Dx12::BackbufferRenderSetup(uint32_t whichFrame, ID3D12GraphicsCommandList* pCommandList) +//----------------------------------------------------------------------------- +{ + const D3D12_VIEWPORT viewport{ + .TopLeftX = 0.0f, + .TopLeftY = 0.0f, + .Width = (float)GetSurfaceWidth(), + .Height = (float)GetSurfaceHeight(), + .MinDepth = 0.0f, + .MaxDepth = 1.0f + }; + const D3D12_RECT scissor{ + .left = 0, + .top = 0, + .right = (LONG)GetSurfaceWidth(), + .bottom = (LONG)GetSurfaceHeight() + }; + + pCommandList->RSSetViewports(1, &viewport); + pCommandList->RSSetScissorRects(1, &scissor); + + D3D12_RESOURCE_BARRIER backbufferBarrier{ + .Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION, + .Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE , + .Transition = { + .pResource = m_FrameBuffers[whichFrame].Get(), + .Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, + .StateBefore = D3D12_RESOURCE_STATE_PRESENT, + .StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET + } + }; + pCommandList->ResourceBarrier(1, &backbufferBarrier); + + D3D12_CPU_DESCRIPTOR_HANDLE descriptorHandle{ .ptr = m_SwapchainDescriptorHeap->GetCPUDescriptorHandleForHeapStart().ptr + whichFrame * m_SwapchainDescriptorSize }; + pCommandList->OMSetRenderTargets(1, &descriptorHandle, FALSE, nullptr); + + const float clearColor[4] {}; + pCommandList->ClearRenderTargetView(descriptorHandle, clearColor, 0, nullptr); +} + +//----------------------------------------------------------------------------- +void Dx12::BackbufferPresentSetup(uint32_t whichFrame, ID3D12GraphicsCommandList* pCommandList) +//----------------------------------------------------------------------------- +{ + // Backbuffer transition to presentable + D3D12_RESOURCE_BARRIER backbufferBarrier{ + .Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION, + .Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE , + .Transition = { + .pResource = m_FrameBuffers[whichFrame].Get(), + .Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, + .StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET, + .StateAfter = D3D12_RESOURCE_STATE_PRESENT + } + }; + pCommandList->ResourceBarrier(1, &backbufferBarrier); +} + +//----------------------------------------------------------------------------- +bool Dx12::PresentSwapchain() +//----------------------------------------------------------------------------- +{ + bool error = CheckError("PresentSwapchain", m_Swapchain->Present(1/*SyncInterval*/, 0/*Flags*/)); + + // Signal and increment the fence value. + const UINT64 fence = m_FenceValue; + m_DirectCommandQueue->Signal(m_Fence.Get(), fence); + m_FenceValue++; + + return error; +} + +//----------------------------------------------------------------------------- +Dx12::BufferIndexAndFence Dx12::SetNextBackBuffer() +//----------------------------------------------------------------------------- +{ + QueueWaitIdle(0); + + // Get next frame + const auto SwapchainPresentIndx = m_Swapchain->GetCurrentBackBufferIndex(); + + // Grab the swapchain index and then increment. + // This index is decoupled from the present index returned by GetCurrentBackBufferIndex (which may not run in sequence depending on present modes etc). + const uint32_t CurrentIndex = m_SwapchainCurrentIndx++; + if( m_SwapchainCurrentIndx == m_SwapchainBufferCount ) + m_SwapchainCurrentIndx = 0; + return {CurrentIndex, SwapchainPresentIndx/*, Fence, BackBufferSemaphore*/}; +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateSamplerHeap() +//----------------------------------------------------------------------------- +{ + uint32_t handleSize = 0; + auto heap = CreateDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, cnMaxSamplers, &handleSize); + if (!heap) + return false; + return m_SamplerDescriptorHeap.Initialize(std::move(heap), cnMaxSamplers, handleSize); +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateShaderResourceViewHeap() +//----------------------------------------------------------------------------- +{ + uint32_t handleSize = 0; + auto heap = CreateDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, cnMaxShaderResourceViewHandles, &handleSize); + if (!heap) + return false; + return m_ShaderResourceViewDescriptorHeap.Initialize(std::move(heap), cnMaxShaderResourceViewHandles, handleSize); +} + +//----------------------------------------------------------------------------- +DescriptorTableHandle Dx12::AllocateShaderResourceViewDescriptors(uint32_t numHandles, const std::optional frameNumTemporary) +//----------------------------------------------------------------------------- +{ + if (frameNumTemporary.has_value()) + return m_ShaderResourceViewDescriptorHeap.AllocateTemporary(*frameNumTemporary, numHandles); + else + return m_ShaderResourceViewDescriptorHeap.Allocate(numHandles); +} + +//----------------------------------------------------------------------------- +DescriptorTableHandle Dx12::AllocateSamplerDescriptors(uint32_t numHandles, const std::optional frameNumTemporary) +//----------------------------------------------------------------------------- +{ + if (frameNumTemporary.has_value()) + return m_SamplerDescriptorHeap.AllocateTemporary( *frameNumTemporary, numHandles); + else + return m_SamplerDescriptorHeap.Allocate(numHandles); +} + +//----------------------------------------------------------------------------- +void Dx12::FreeShaderResourceViewDescriptors(DescriptorTableHandle&& handle) +//----------------------------------------------------------------------------- +{ + return m_ShaderResourceViewDescriptorHeap.Free(std::move(handle)); +} + +//----------------------------------------------------------------------------- +void Dx12::FreeSamplerDescriptors(DescriptorTableHandle&& handle) +//----------------------------------------------------------------------------- +{ + return m_SamplerDescriptorHeap.Free(std::move(handle)); +} + +//----------------------------------------------------------------------------- +void Dx12::SetDescriptorHeaps(ID3D12GraphicsCommandList* pCommandList) const +//----------------------------------------------------------------------------- +{ + std::array descriptorHeaps{ m_ShaderResourceViewDescriptorHeap.GetHeap(), m_SamplerDescriptorHeap.GetHeap() }; + pCommandList->SetDescriptorHeaps(descriptorHeaps.size(), descriptorHeaps.data()); +} + +//----------------------------------------------------------------------------- +bool Dx12::CreateSampler(const D3D12_SAMPLER_DESC& desc, D3D12_CPU_DESCRIPTOR_HANDLE destHandle) +//----------------------------------------------------------------------------- +{ + m_Device->CreateSampler(&desc, destHandle); + return true; +} + +//----------------------------------------------------------------------------- +TextureFormat Dx12::GetBestSurfaceDepthFormat(bool NeedStencil) const +//----------------------------------------------------------------------------- +{ + TextureFormat desiredDepthFormat = NeedStencil ? TextureFormat::D32_SFLOAT_S8_UINT : TextureFormat::D32_SFLOAT; + + D3D12_FEATURE_DATA_FORMAT_SUPPORT formatSupport = { .Format = TextureFormatToDx(desiredDepthFormat) }; + if (!CheckError("CheckFeatureSupport", m_Device->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &formatSupport, sizeof(formatSupport)))) + { + return TextureFormat::UNDEFINED; + } + if ((formatSupport.Support1 & D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL) == 0) + { + assert(0);///TODO: try some other formats if the selected one isnt supported + return TextureFormat::UNDEFINED; + } + + return desiredDepthFormat; +} + +//----------------------------------------------------------------------------- +bool Dx12::IsTextureFormatSupported(TextureFormat format) const +//----------------------------------------------------------------------------- +{ + D3D12_FEATURE_DATA_FORMAT_SUPPORT formatSupport = { .Format = TextureFormatToDx(format) }; + if (CheckError("CheckFeatureSupport", m_Device->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &formatSupport, sizeof(formatSupport)))) + { + return false; + } + ///TODO: what are we wanting to check here? support for what feature? + if ((formatSupport.Support1 & D3D12_FORMAT_SUPPORT1_TEXTURE2D) == 0) + { + return false; + } + return true; +} + +//----------------------------------------------------------------------------- +/*static*/ uint32_t Dx12::FormatBytesPerPixel(DXGI_FORMAT format) +//----------------------------------------------------------------------------- +{ + switch (format) { + case DXGI_FORMAT_R32G32B32A32_TYPELESS: + case DXGI_FORMAT_R32G32B32A32_FLOAT: + case DXGI_FORMAT_R32G32B32A32_UINT: + case DXGI_FORMAT_R32G32B32A32_SINT: + return 16; + case DXGI_FORMAT_R32G32B32_TYPELESS: + case DXGI_FORMAT_R32G32B32_FLOAT: + case DXGI_FORMAT_R32G32B32_UINT: + case DXGI_FORMAT_R32G32B32_SINT: + return 12; + case DXGI_FORMAT_R16G16B16A16_TYPELESS: + case DXGI_FORMAT_R16G16B16A16_FLOAT: + case DXGI_FORMAT_R16G16B16A16_UNORM: + case DXGI_FORMAT_R16G16B16A16_UINT: + case DXGI_FORMAT_R16G16B16A16_SNORM: + case DXGI_FORMAT_R16G16B16A16_SINT: + case DXGI_FORMAT_R32G32_TYPELESS: + case DXGI_FORMAT_R32G32_FLOAT: + case DXGI_FORMAT_R32G32_UINT: + case DXGI_FORMAT_R32G32_SINT: + case DXGI_FORMAT_R32G8X24_TYPELESS: + case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: + case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: + case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: + return 8; + case DXGI_FORMAT_R10G10B10A2_TYPELESS: + case DXGI_FORMAT_R10G10B10A2_UNORM: + case DXGI_FORMAT_R10G10B10A2_UINT: + case DXGI_FORMAT_R11G11B10_FLOAT: + case DXGI_FORMAT_R8G8B8A8_TYPELESS: + case DXGI_FORMAT_R8G8B8A8_UNORM: + case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: + case DXGI_FORMAT_R8G8B8A8_UINT: + case DXGI_FORMAT_R8G8B8A8_SNORM: + case DXGI_FORMAT_R8G8B8A8_SINT: + case DXGI_FORMAT_R16G16_TYPELESS: + case DXGI_FORMAT_R16G16_FLOAT: + case DXGI_FORMAT_R16G16_UNORM: + case DXGI_FORMAT_R16G16_UINT: + case DXGI_FORMAT_R16G16_SNORM: + case DXGI_FORMAT_R16G16_SINT: + case DXGI_FORMAT_R32_TYPELESS: + case DXGI_FORMAT_D32_FLOAT: + case DXGI_FORMAT_R32_FLOAT: + case DXGI_FORMAT_R32_UINT: + case DXGI_FORMAT_R32_SINT: + case DXGI_FORMAT_R24G8_TYPELESS: + case DXGI_FORMAT_D24_UNORM_S8_UINT: + case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: + case DXGI_FORMAT_X24_TYPELESS_G8_UINT: + case DXGI_FORMAT_B8G8R8A8_UNORM: + case DXGI_FORMAT_B8G8R8X8_UNORM: + case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: + case DXGI_FORMAT_B8G8R8A8_TYPELESS: + case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: + case DXGI_FORMAT_B8G8R8X8_TYPELESS: + case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: + return 4; + case DXGI_FORMAT_R8G8_TYPELESS: + case DXGI_FORMAT_R8G8_UNORM: + case DXGI_FORMAT_R8G8_UINT: + case DXGI_FORMAT_R8G8_SNORM: + case DXGI_FORMAT_R8G8_SINT: + case DXGI_FORMAT_R16_TYPELESS: + case DXGI_FORMAT_R16_FLOAT: + case DXGI_FORMAT_D16_UNORM: + case DXGI_FORMAT_R16_UNORM: + case DXGI_FORMAT_R16_UINT: + case DXGI_FORMAT_R16_SNORM: + case DXGI_FORMAT_R16_SINT: + case DXGI_FORMAT_B5G6R5_UNORM: + case DXGI_FORMAT_B5G5R5A1_UNORM: + return 2; + case DXGI_FORMAT_R8_TYPELESS: + case DXGI_FORMAT_R8_UNORM: + case DXGI_FORMAT_R8_UINT: + case DXGI_FORMAT_R8_SNORM: + case DXGI_FORMAT_R8_SINT: + case DXGI_FORMAT_A8_UNORM: + case DXGI_FORMAT_R1_UNORM: + return 1; + default: + assert(0); + return 1; + } +} + +//----------------------------------------------------------------------------- +void Dx12::SetName(ID3D12DeviceChild* pObject, const std::string& Name) +//----------------------------------------------------------------------------- +{ + pObject->SetPrivateData(WKPDID_D3DDebugObjectName, Name.size(), Name.c_str()); +} + +//----------------------------------------------------------------------------- +void Dx12::SetName(ID3D12DeviceChild* pObject, const std::string_view& Name) +//----------------------------------------------------------------------------- +{ + pObject->SetPrivateData(WKPDID_D3DDebugObjectName, Name.size(), Name.data()); +} diff --git a/framework/code/dx12/dx12.hpp b/framework/code/dx12/dx12.hpp new file mode 100644 index 0000000..6fbcb5d --- /dev/null +++ b/framework/code/dx12/dx12.hpp @@ -0,0 +1,255 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#define NOMINMAX +#include "graphicsApi/graphicsApiBase.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "descriptorHeapManager.hpp" +#include "memory/dx12/memoryManager.hpp" + +using namespace Microsoft::WRL; // for ComPtr + +// Forward declarations +template class IndexBuffer; +template class VertexBuffer; +template class MemoryManager; +enum class TextureFormat; +DXGI_FORMAT TextureFormatToDx(TextureFormat f); + +#define NUM_SWAPCHAIN_BUFFERS (8) + +struct SurfaceFormat +{ + TextureFormat format; +}; + + +/// DirectX 12 API implementation +/// Contains DirectX12 top level (driver etc) objects and provides a simple initialization interface. +class Dx12 : public GraphicsApiBase +{ + Dx12(const Dx12&) = delete; + Dx12& operator=(const Dx12&) = delete; +public: + // typedefs + using ViewportClass = D3D12_VIEWPORT; + using Rect2DClass = D3D12_RECT; + using MemoryManager = MemoryManager; + using BufferHandleType = ID3D12Resource*; + + struct AppConfiguration + { + /// (optional) override of the framebuffer depth format. Setting to UNDEFINED will disable the creation of a depth buffer during InitSwapChain + std::optional SwapchainDepthFormat; + }; + +public: + Dx12(); + virtual ~Dx12(); + + typedef std::function )> tSelectSurfaceFormatFn; + typedef std::function tConfigurationFn; + + /// @brief Main entry point to Dx12. + /// Initialize the Dx12 device/driver and create objects needed to start recording and executing command lists + /// @param hWnd windows window handle + /// @param hInst windows application instance + /// @param iDesiredMSAA + /// @return + bool Init(uintptr_t hWnd, uintptr_t hInst, const tSelectSurfaceFormatFn& SelectSurfaceFormatFn = nullptr, const tConfigurationFn& CustomConfigurationFn = nullptr ); + + /// @brief Prepare for update of frame + bool FrameInit(uint32_t WhichFrame); + + /// Stall CPU thread until GPU device is idle + /// Not recommended for use in a regular rendering pipeline as it will introduce an undesirable stall. + /// Implements base class pure virtual. + bool WaitUntilIdle() const override; + + /// Stall CPU thread until GPU queue is idle + bool QueueWaitIdle(uint32_t QueueIndex) const; + + // Accessors + MemoryManager& GetMemoryManager() { return m_MemoryManager; } + const MemoryManager& GetMemoryManager() const { return m_MemoryManager; } + auto GetDevice() const { return m_Device.Get(); } + + uint32_t GetSurfaceWidth() const { return m_SurfaceWidth; } ///< Swapchain width + uint32_t GetSurfaceHeight() const { return m_SurfaceHeight; } ///< Swapchain height + TextureFormat GetSwapchainFormat() const { return m_SwapchainFormat; } ///< Swapchain format + uint32_t GetSwapchainBufferCount() const { return m_SwapchainBufferCount; } ///< Swapchain number of images + + // + // Helpers + // + + /// @brief Check a windows hresult error code, and (on error) output error message string including pPrefix + /// @return return true on 'ok', false on 'error' + static bool CheckError(const char* const pPrefix, HRESULT result); + + /// @brief Create a command list object ready for recording commands. + /// @param commandListType type of command list (type must be supported by CreateCommandAllocators) + /// @param pCmdList output command list object + /// @return true on success + bool CreateCommandList(D3D12_COMMAND_LIST_TYPE commandListType, ID3D12PipelineState* const pPipelineState, ComPtr& pCmdList/*out*/); + + /// @brief Obtain a command allocator for use by ID3D12CommandList::Reset + /// @param commandListType type of command list allocator (type must be supported by CreateCommandAllocators) + /// @returns a valid command list allocator (or nullptr object) that can be used to record commands and MUST then be returned to Dx12 via CloseCommandAllocator + ComPtr OpenCommandAllocator(D3D12_COMMAND_LIST_TYPE listType); + + /// @brief Returns a command allocator back to the pool of allocators than can be grabbed by OpenCommandAllocator + /// Expected that the 'closed' command allocator is not used after this function is called + /// @param commandListType type of command list allocator (must match the type passed to the matching OpenCommandAllocator) + void CloseCommandAllocator(D3D12_COMMAND_LIST_TYPE listType, ComPtr && commandAllocator); + + /// @brief Submit/execute a command list on the GPU + /// @return value that will be signalled when this command completes + uint64_t CommandListExecute(ID3D12CommandList* const); + + /// @brief Submit/execute a compute command list on the GPU + /// @return value that will be signalled when this command completes + uint64_t ComputeCommandListExecute(ID3D12CommandList* const); + + /// @brief Setup a command buffer ready to record 'setup' commands such as texture transfers etc + /// @return command buffer ready to be recorded into + ID3D12GraphicsCommandList* const StartSetupCommandBuffer(); + /// @brief Close and execute the given command buffer (expected to have been created by StartSetupCommandBuffer) + /// Will wait for command buffer execution to complete. + void FinishSetupCommandBuffer(ID3D12GraphicsCommandList* const); + + void CreateRenderTargetView(); + + /// @brief Add commands to transition and setup the backbuffer to be a render target (do prior to commands rendering to the backbuffer) + void BackbufferRenderSetup(uint32_t whichFrame, ID3D12GraphicsCommandList* pCommandList); + + /// @brief Add commands to transition and setup the backbuffer to be presentable (do prior to calling PresentSwapchain) + void BackbufferPresentSetup(uint32_t whichFrame, ID3D12GraphicsCommandList* pCommandList); + + /// @brief Present the swapchain to the display + bool PresentSwapchain(); + + /// Current buffer index (that can be filled) and the fence that should be signalled when the GPU completes this buffer and the semaphore to wait on before starting rendering. + struct BufferIndexAndFence + { + /// Current frame index (internal - always in order) + const uint32_t idx; + /// Current backbuffer index (from vkAcquireNextImageKHR - may be 'out of order') + const uint32_t swapchainPresentIdx; + /// Fence set when GPU completes rendering this buffer + //const VkFence fence; + /// Backbuffer semaphore (start of rendering pipeline needs to wait for this) + //const VkSemaphore semaphore; + }; + + /// Get the next image to render to and the fence to signal at the end, then queue a wait until the image is ready + /// @return index of next backbuffer and the fence to signal upon comdbuffer completion. May not be in sequential order! + BufferIndexAndFence SetNextBackBuffer(); + + DescriptorTableHandle AllocateShaderResourceViewDescriptors(uint32_t numHandles, const std::optional frameNumTemporary = std::nullopt); + DescriptorTableHandle AllocateSamplerDescriptors(uint32_t numHandles, const std::optional frameNumTemporary = std::nullopt ); + void FreeShaderResourceViewDescriptors(DescriptorTableHandle &&); + void FreeSamplerDescriptors(DescriptorTableHandle &&); + void SetDescriptorHeaps(ID3D12GraphicsCommandList* pCommandList) const; + const auto& GetShaderResourceViewDescriptorHeap() const { return m_ShaderResourceViewDescriptorHeap; } + + bool CreateSampler(const D3D12_SAMPLER_DESC&, D3D12_CPU_DESCRIPTOR_HANDLE destHandle); + + /// @brief return the supported depth format with the highest precision depth/stencil supported with optimal tiling + /// @param NeedStencil set if we have to have a format with stencil bits (defaulted to false). + TextureFormat GetBestSurfaceDepthFormat(bool NeedStencil = false) const; + + /// Check if the Dx12 device supports the given texture format. + /// @return true if format is supported + bool IsTextureFormatSupported(TextureFormat) const; + + /// Get the number of bytes per pixel of the given DXGI_FORMAT + static uint32_t FormatBytesPerPixel(DXGI_FORMAT format); + + /// @brief Helper to set debug name (ascii) on any D3D12 object + static void SetName(ID3D12DeviceChild* pObject, const std::string& Name); + /// @brief Helper to set debug name (ascii) on any D3D12 object + static void SetName(ID3D12DeviceChild* pObject, const std::string_view& Name); + + // Helper + ComPtr CreateDescriptorHeap( D3D12_DESCRIPTOR_HEAP_TYPE heapType, uint32_t numDescriptors, uint32_t* pOutDescriptorHandleSize ); + +protected: + // Internal initialization functions (called by Init). + bool InitMemoryManager(); + bool InitDevice(); + bool CreateQueues(); + bool CreateCommandAllocators(); + bool CreateSwapchain(); + bool CreateSamplerHeap(); + bool CreateShaderResourceViewHeap(); + +private: + // Windows window/app handles + HINSTANCE m_hInstance = 0; + HWND m_hWnd = 0; + + // D3d objects + ComPtr m_DxgiFactory; + ComPtr m_Device; + ComPtr m_Adaptor; + + ComPtr m_Swapchain; + ComPtrm_SwapchainDescriptorHeap; + uint32_t m_SwapchainDescriptorSize = 0; + TextureFormat m_SwapchainFormat; + uint32_t m_SwapchainBufferCount = 0; + + ComPtr m_DirectCommandQueue; + ComPtr m_DirectCommandQueueFence; // Fence that is signalled on every execute + uint64_t m_DirectCommandQueueFenceValue = 0; // Value that will be signalled by m_DirectCommandQueueFence on the next execute + + ComPtr m_ComputeCommandQueue; + ComPtr m_ComputeCommandQueueFence; // Fence that is signalled on every execute + uint64_t m_ComputeCommandQueueFenceValue = 0;// Value that will be signalled by m_ComputeCommandQueueFence on the next execute + + ComPtr m_SetupCommandList; // Command list created and returned by StartSetupCommandBuffer + ComPtr m_SetupCommandAllocator; // Command allocator used by command list returned by StartSetupCommandBuffer + + static const size_t cNumCommandListTypes = 4; + std::array< std::deque< ComPtr >, cNumCommandListTypes > m_commandAllocators{}; + + // Memory manager + MemoryManager m_MemoryManager; + + std::array, NUM_SWAPCHAIN_BUFFERS> m_FrameBuffers; + + /// Current frame index (internal - always in order) + uint32_t m_SwapchainCurrentIndx = 0; + /// Current swapchain/backbuffer index (from directx) + uint32_t m_SwapchainPresentIndx = 0; + + // TEMPORARY + HANDLE m_FenceEvent = 0; + ComPtr m_Fence; + UINT64 m_FenceValue = 0; + // END TEMPORARY + + uint32_t m_SurfaceWidth = 0; ///< Swapchain width + uint32_t m_SurfaceHeight = 0; ///< Swapchain height + + DescriptorHeapManager m_ShaderResourceViewDescriptorHeap; + DescriptorHeapManager m_SamplerDescriptorHeap; +}; diff --git a/framework/code/dx12/meshObject.cpp b/framework/code/dx12/meshObject.cpp new file mode 100644 index 0000000..092eb12 --- /dev/null +++ b/framework/code/dx12/meshObject.cpp @@ -0,0 +1,89 @@ +//============================================================================================================ +// +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include +#include +#include "system/glm_common.hpp" +//#include "memory/indexBufferObject.hpp" +//#include "memory/memoryManager.hpp" + +// Forward declarations +class VertexFormat; +class AssetManager; +class VertexBufferObject; +class MeshObjectIntermediate; + +/// Defines a simple object for creating and holding DX12 state corresponding to a single mesh. +template +class MeshObject +{ + MeshObject(const MeshObject&) = delete; + MeshObject& operator=(const MeshObject&) = delete; +public: + MeshObject() = default; + MeshObject(MeshObject&&) noexcept = default; + MeshObject& operator=(MeshObject&&) noexcept = default; + ~MeshObject(); + + /// Builds a screen space mesh as a single Vertex Buffer containing relevant vertex positions, normals and colors. Vertices are held in TRIANGLE_LIST format. + /// Vertex layout corresponds to MeshObject::vertex_layout structure. + /// @returns true on success + static bool CreateScreenSpaceMesh(MemoryManager& memoryManager, glm::vec4 PosLLRadius, glm::vec4 UVLLRadius, uint32_t binding, MeshObject* meshObject); + /// Helper for CreateScreenSpaceMesh that has a x,y position from -1,-1 to 1,1 and UV from 0,0 to 1,1. + /// @returns true on success + static bool CreateScreenSpaceMesh(MemoryManager& memoryManager, uint32_t binding, MeshObject* meshObject) + { + return CreateScreenSpaceMesh(memoryManager, glm::vec4(-1.0f, -1.0f, 2.0f, 2.0f), glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), binding, meshObject); + } + + /// Create a MeshObject from a 'fat' MeshObjectIntermediate object, rearranging the vertex data to match the supplied vertex format(s). + /// Can have multiple VertexFormats, which will create multiple vertex buffers (eg if we want to split vertex position data away from other vertex attributes) + /// @param pVertexFormat format of the vertex data being output + /// @returns true on success + static bool CreateMesh(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, uint32_t binding, const std::span pVertexFormat, MeshObject* meshObjectOut); + + virtual bool Destroy(); + + /// Helper to create a IndexBufferObject, IF the mesh object has index buffer data. + /// @returns true for success (including no index buffer data existing in IndexBufferObject), false on error. + static bool CreateIndexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, std::optional& indexBufferOut, VkBufferUsageFlags usage = VK_BUFFER_USAGE_INDEX_BUFFER_BIT); + + // These MUST match the order of the attrib locations and sFormat must reflect the layout of this struct too! + struct vertex_layout + { + float pos[3]; // SHADER_ATTRIB_LOC_POSITION + float normal[3]; // SHADER_ATTRIB_LOC_NORMAL + float uv[2]; // SHADER_ATTRIB_LOC_TEXCOORD0 + float color[4]; // SHADER_ATTRIB_LOC_COLOR + float tangent[3]; // SHADER_ATTRIB_LOC_TANGENT + // float binormal[3]; // SHADER_ATTRIB_LOC_BITANGENT + static VertexFormat sFormat; + }; + +public: + uint32_t m_NumVertices; + std::vector m_VertexBuffers; + std::optionalm_IndexBuffer; +}; + + +namespace MeshObjectHelper +{ + /// Create a MeshObject for the first shape in a .gltf file (no materials). + /// Returned MeshObject does not have an index buffer (3 verts per triangle) and data is in the MeshObject::vertex_layout format. + /// @returns true on success + static bool LoadGLTF(MemoryManager& memoryManager, AssetManager&, const std::string& filename, uint32_t binding, MeshObject* meshObject); + +} // namespace MeshObjectHelper; + + +template +MeshObject::~MeshObject() {} diff --git a/framework/code/dx12/renderPass.cpp b/framework/code/dx12/renderPass.cpp new file mode 100644 index 0000000..380df9f --- /dev/null +++ b/framework/code/dx12/renderPass.cpp @@ -0,0 +1,57 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include +#include +#include "renderPass.hpp" +#include "dx12/dx12.hpp" + +// Forward declarations +class Dx12; + + +RenderPass::RenderPass() noexcept +{ +} + +RenderPass::~RenderPass() +{ +} + +RenderPass::RenderPass( RenderPass&& ) noexcept +{ + assert( 0 ); // move operator needed to keep containers happy, but currently not expected to be called (and so not implemented) +} + + +RenderPass::RenderPass(std::span ColorFormats, TextureFormat DepthFormat) noexcept +{ + std::transform(ColorFormats.begin(), ColorFormats.end(), + std::back_inserter(mRenderTargetFormats), [](TextureFormat t) { return TextureFormatToDx(t); }); + mRenderTargetDepthFormat = TextureFormatToDx( DepthFormat ); +} + + +RenderPass CreateRenderPass(Dx12& dx12, + std::span ColorFormats, + TextureFormat DepthFormat, + Msaa Msaa, + RenderPassInputUsage ColorInputUsage, + RenderPassOutputUsage ColorOutputUsage, + bool ShouldClearDepth, + RenderPassOutputUsage DepthOutputUsage, + std::span ResolveFormats) +{ + return RenderPass{ ColorFormats, DepthFormat }; +} + +void ReleaseRenderPass(Dx12& dx12, RenderPass& renderPass) +{ + renderPass = {}; +} + diff --git a/framework/code/dx12/renderPass.hpp b/framework/code/dx12/renderPass.hpp new file mode 100644 index 0000000..9765eff --- /dev/null +++ b/framework/code/dx12/renderPass.hpp @@ -0,0 +1,58 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include "graphicsApi/renderPass.hpp" +#include "texture/textureFormat.hpp" +#include "graphicsApi/graphicsApiBase.hpp" + +// Forward declarations +class Dx12; + + +/// Simple wrapper around VkRenderPass. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// Specialization of RenderPass +/// @ingroup Material +template<> +class RenderPass +{ + RenderPass& operator=(const RenderPass&) = delete; + RenderPass(const RenderPass&) = delete; +public: + RenderPass() noexcept; + RenderPass(RenderPass&&) noexcept; + RenderPass(std::span ColorFormats, TextureFormat DepthFormat ) noexcept; + RenderPass& operator=(RenderPass&&) noexcept = default; + ~RenderPass(); + + operator bool() const { return true; } // currently always valid! + + const auto& GetRenderTargetFormats() const { return mRenderTargetFormats; } + DXGI_FORMAT GetRenderTargetDepthFormat() const { return mRenderTargetDepthFormat; } + +protected: + std::vector mRenderTargetFormats; + DXGI_FORMAT mRenderTargetDepthFormat = DXGI_FORMAT_UNKNOWN; +}; + + +RenderPass CreateRenderPass(Dx12&, + std::span < const TextureFormat > ColorFormats, + TextureFormat DepthFormat, + Msaa Msaa, + RenderPassInputUsage ColorInputUsage, + RenderPassOutputUsage ColorOutputUsage, + bool ShouldClearDepth, + RenderPassOutputUsage DepthOutputUsage, + std::span < const TextureFormat > ResolveFormats); + +void ReleaseRenderPass(Dx12& dx12, RenderPass& renderPass); diff --git a/framework/code/dx12/renderTarget.cpp b/framework/code/dx12/renderTarget.cpp new file mode 100644 index 0000000..430a326 --- /dev/null +++ b/framework/code/dx12/renderTarget.cpp @@ -0,0 +1,404 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "renderTarget.hpp" +#include "system/os_common.h" +#include "commandList.hpp" + + +//----------------------------------------------------------------------------- +RenderTarget::RenderTarget() +//----------------------------------------------------------------------------- +{ + // class is fully initialized by member constructors and member value initilization in the class definition +} + +//----------------------------------------------------------------------------- +RenderTarget::~RenderTarget() +//----------------------------------------------------------------------------- +{ + Release(true/*assume we own the framebuffers*/); +} + +//----------------------------------------------------------------------------- +RenderTarget::RenderTarget( RenderTarget&& src ) noexcept +//----------------------------------------------------------------------------- +{ + *this = std::move( src ); +} + +//----------------------------------------------------------------------------- +RenderTarget& RenderTarget::operator=( RenderTarget&& src) noexcept +//----------------------------------------------------------------------------- +{ + if (this != &src) + { + m_Name = std::move(src.m_Name); + m_Width = src.m_Width; + src.m_Width = 0; + m_Height = src.m_Height; + src.m_Height = 0; + m_pLayerFormats = std::move( src.m_pLayerFormats ); + m_Msaa = std::move( src.m_Msaa ); + m_FilterMode = std::move( src.m_FilterMode ); + m_DepthFormat = src.m_DepthFormat; + src.m_DepthFormat = TextureFormat::UNDEFINED; + m_ColorAttachments = std::move( src.m_ColorAttachments ); + m_ClearColors = std::move( src.m_ClearColors ); + m_ResolveAttachments = std::move( src.m_ResolveAttachments ); + m_DepthAttachment = std::move( src.m_DepthAttachment ); + //m_FrameBuffer = src.m_FrameBuffer; + //src.m_FrameBuffer = VK_NULL_HANDLE; + //m_FrameBufferDepthOnly = src.m_FrameBufferDepthOnly; + //src.m_FrameBufferDepthOnly = VK_NULL_HANDLE; + + m_pGfxApi = src.m_pGfxApi; + src.m_pGfxApi = nullptr; + } + + return *this; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::Initialize( Dx12* pGfxApi, const RenderTargetInitializeInfo& info, const char* pName ) +//----------------------------------------------------------------------------- +{ + const size_t numColorAttachments = info.LayerFormats.size(); + + m_pGfxApi = pGfxApi; + m_DepthFormat = info.DepthFormat; + + m_Msaa.assign( info.Msaa.begin(), info.Msaa.end() ); + if (info.Msaa.empty()) + m_Msaa.resize( numColorAttachments, Msaa::Samples1 ); + else + m_Msaa.resize( numColorAttachments, info.Msaa.back() ); + + m_FilterMode.assign( info.FilterModes.begin(), info.FilterModes.end() ); + if (info.FilterModes.empty()) + m_FilterMode.resize( numColorAttachments, SamplerFilter::Linear ); + else + m_FilterMode.resize( numColorAttachments, info.FilterModes.back() ); + + m_Width = info.Width; + m_Height = info.Height; + + // If we have a name, save it + if (pName != NULL) + { + m_Name = pName; + } + + m_ColorAttachments.clear(); + m_ColorAttachments.reserve( numColorAttachments ); + m_ClearColors.resize( numColorAttachments, {{ 0.0f, 0.0f, 0.0f, 0.0f }} ); + m_ResolveAttachments.clear(); + + m_pLayerFormats.assign( info.LayerFormats.begin(), info.LayerFormats.end() ); + + for (auto i = 0; i < numColorAttachments; ++i) + { + m_ColorAttachments.emplace_back( CreateTextureObject( *m_pGfxApi, m_Width, m_Height, info.LayerFormats[i], i < info.TextureTypes.size() ? info.TextureTypes[i] : TT_RENDER_TARGET, m_Name.c_str(), m_Msaa[i])); + } + + if (m_DepthFormat != TextureFormat::UNDEFINED) + m_DepthAttachment = CreateTextureObject( *m_pGfxApi, m_Width, m_Height, m_DepthFormat, TT_DEPTH_TARGET, m_Name.c_str(), m_Msaa[0] ); + else + m_DepthFormat = {}; + + + // Make a descriptor heap for the swapchain render targets + ComPtr descriptorHeap; + if (GetNumColorLayers() > 0) + { + uint32_t rtvHandleSize = 0; + descriptorHeap = m_pGfxApi->CreateDescriptorHeap( D3D12_DESCRIPTOR_HEAP_TYPE_RTV, GetNumColorLayers(), &rtvHandleSize ); + D3D12_CPU_DESCRIPTOR_HANDLE descHandle = descriptorHeap->GetCPUDescriptorHandleForHeapStart(); + + // Color + for (UINT i = 0; i < m_ColorAttachments.size(); ++i) + { + const auto& attachment = m_ColorAttachments[i]; + D3D12_RENDER_TARGET_VIEW_DESC rtvDesc{.Format = attachment.GetResourceViewDesc().Format, + .ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D}; + m_pGfxApi->GetDevice()->CreateRenderTargetView( attachment.GetResource(), &rtvDesc, descHandle ); + descHandle.ptr += rtvHandleSize; + } + } + + // Depth + ComPtr depthDescriptorHeap; + if (!m_DepthAttachment.IsEmpty()) + { + uint32_t dsvHandleSize = 0; + depthDescriptorHeap = m_pGfxApi->CreateDescriptorHeap( D3D12_DESCRIPTOR_HEAP_TYPE_DSV, 1, &dsvHandleSize ); + D3D12_CPU_DESCRIPTOR_HANDLE descHandle = depthDescriptorHeap->GetCPUDescriptorHandleForHeapStart(); + + const auto& attachment = m_DepthAttachment; + D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc{.Format = attachment.GetResourceViewDesc().Format, + .ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D, + .Flags = D3D12_DSV_FLAG_NONE}; + m_pGfxApi->GetDevice()->CreateDepthStencilView( attachment.GetResource(), &dsvDesc, descHandle ); + } + + m_descriptorHeap = std::move( descriptorHeap ); + m_depthDescriptorHeap = std::move( depthDescriptorHeap ); + return true; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::Initialize(Dx12* pGfxApi, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, std::span Msaa, const char* pName) +//----------------------------------------------------------------------------- +{ + m_pGfxApi = pGfxApi; + m_DepthFormat = DepthFormat; + m_Msaa.assign(Msaa.begin(), Msaa.end()); + m_Msaa.resize(pLayerFormats.size(), Msaa::Samples1); + m_FilterMode.resize(pLayerFormats.size(), SamplerFilter::Linear); + + m_Width = uiWidth; + m_Height = uiHeight; + + // If we have a name, save it + if (pName != NULL) + { + m_Name = pName; + } + + m_ColorAttachments.clear(); + m_ColorAttachments.reserve(pLayerFormats.size()); + m_ClearColors.resize(pLayerFormats.size(), {{ 0.0f, 0.0f, 0.0f, 0.0f }}); + m_ResolveAttachments.clear(); + + m_pLayerFormats.assign(pLayerFormats.begin(), pLayerFormats.end()); + + for(auto i=0;i< pLayerFormats.size(); ++i) + { + m_ColorAttachments.emplace_back( CreateTextureObject( *m_pGfxApi, m_Width, m_Height, pLayerFormats[i], TT_RENDER_TARGET, m_Name.c_str(), m_Msaa.empty() ? Msaa::Samples1 : m_Msaa[0] ) ); + } + + if (m_DepthFormat != TextureFormat::UNDEFINED) + m_DepthAttachment = CreateTextureObject( *m_pGfxApi, m_Width, m_Height, m_DepthFormat, TT_DEPTH_TARGET, m_Name.c_str(), m_Msaa.empty() ? Msaa::Samples1 : m_Msaa[0] ); + else + m_DepthFormat = {}; + + + // Make a descriptor heap for the swapchain render targets + ComPtr descriptorHeap; + if (GetNumColorLayers() > 0) + { + uint32_t rtvHandleSize = 0; + descriptorHeap = m_pGfxApi->CreateDescriptorHeap( D3D12_DESCRIPTOR_HEAP_TYPE_RTV, GetNumColorLayers(), &rtvHandleSize ); + D3D12_CPU_DESCRIPTOR_HANDLE descHandle = descriptorHeap->GetCPUDescriptorHandleForHeapStart(); + + // Color + for (UINT i = 0; i < m_ColorAttachments.size(); ++i) + { + const auto& attachment = m_ColorAttachments[i]; + D3D12_RENDER_TARGET_VIEW_DESC rtvDesc{.Format = attachment.GetResourceViewDesc().Format, + .ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D}; + m_pGfxApi->GetDevice()->CreateRenderTargetView( attachment.GetResource(), &rtvDesc, descHandle ); + descHandle.ptr += rtvHandleSize; + } + } + + // Depth + ComPtr depthDescriptorHeap; + if (!m_DepthAttachment.IsEmpty()) + { + uint32_t dsvHandleSize = 0; + depthDescriptorHeap = m_pGfxApi->CreateDescriptorHeap( D3D12_DESCRIPTOR_HEAP_TYPE_DSV, 1, &dsvHandleSize ); + D3D12_CPU_DESCRIPTOR_HANDLE descHandle = depthDescriptorHeap->GetCPUDescriptorHandleForHeapStart(); + + const auto& attachment = m_DepthAttachment; + D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc{.Format = attachment.GetResourceViewDesc().Format, + .ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D, + .Flags = D3D12_DSV_FLAG_NONE}; + m_pGfxApi->GetDevice()->CreateDepthStencilView( attachment.GetResource(), &dsvDesc, descHandle ); + } + + m_descriptorHeap = std::move(descriptorHeap); + m_depthDescriptorHeap = std::move( depthDescriptorHeap ); + return true; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::InitializeDepth() +//----------------------------------------------------------------------------- +{ + if (m_DepthFormat != TextureFormat::UNDEFINED) + { + char szName[256]; + sprintf(szName, "%s: Depth", m_Name.c_str()); + m_DepthAttachment = CreateTextureObject(*m_pGfxApi, m_Width, m_Height, m_DepthFormat, TT_DEPTH_TARGET, m_Name.c_str(), m_Msaa.empty() ? Msaa::Samples1 : m_Msaa[0]); + } + else + { + ReleaseTexture(*m_pGfxApi, &m_DepthAttachment); + } + return true; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::InitializeColor(const std::span TextureTypes) +//----------------------------------------------------------------------------- +{ + const auto NumColorLayers = GetNumColorLayers(); + LOGI("Creating Render Target (%s): (%d x %d); %d color layer[s]", m_Name.c_str(), m_Width, m_Height, NumColorLayers); + + m_ColorAttachments.clear(); + m_ColorAttachments.reserve(NumColorLayers); + + m_ClearColors.clear(); + m_ClearColors.resize(NumColorLayers, {{0.0f,0.0f,0.0f,0.0f}}); + + CreateTexObjectInfo createInfo{}; + createInfo.uiWidth = m_Width; + createInfo.uiHeight = m_Height; + + // First create the actual texture objects... + char szName[256]; + for (size_t WhichLayer = 0; WhichLayer < NumColorLayers; WhichLayer++) + { + sprintf(szName, "%s: Color", m_Name.c_str()); + + createInfo.Format = m_pLayerFormats[WhichLayer]; + createInfo.TexType = (WhichLayer < TextureTypes.size()) ? TextureTypes[WhichLayer] : TT_RENDER_TARGET; + createInfo.pName = m_Name.c_str(); + createInfo.Msaa = m_Msaa[WhichLayer]; + createInfo.FilterMode = m_FilterMode[WhichLayer]; + + m_ColorAttachments.emplace_back(CreateTextureObject(*m_pGfxApi, createInfo)); + } + + return true; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::InitializeResolve(const std::span ResolveTextureFormats) +//----------------------------------------------------------------------------- +{ + m_ResolveAttachments.clear(); + + if (!m_Msaa.empty() && !ResolveTextureFormats.empty()) + { + const auto NumColorLayers = GetNumColorLayers(); + LOGI("Creating Render Target (%s): (%d x %d); %d resolve layer[s]", m_Name.c_str(), m_Width, m_Height, NumColorLayers); + + m_ResolveAttachments.reserve(NumColorLayers); + + // Create texture objects to resolve in to. + char szName[256]; + for (size_t WhichLayer = 0; WhichLayer < NumColorLayers; WhichLayer++) + { + if (m_Msaa[WhichLayer] != Msaa::Samples1 && WhichLayer < ResolveTextureFormats.size() && ResolveTextureFormats[WhichLayer] != TextureFormat::UNDEFINED) + { + sprintf(szName, "%s: Color Resolve", m_Name.c_str()); + + const TEXTURE_TYPE TextureType = TT_RENDER_TARGET; + m_ResolveAttachments.emplace_back(CreateTextureObject(*m_pGfxApi, m_Width, m_Height, ResolveTextureFormats[WhichLayer], TextureType, m_Name.c_str())); + } + } + } + return true; +} + +//----------------------------------------------------------------------------- +void RenderTarget::SetClearColors(const std::span clearColors) +//----------------------------------------------------------------------------- +{ + assert(clearColors.size() == m_ColorAttachments.size()); + m_ClearColors.assign( std::begin(clearColors), std::end(clearColors) ); +} + +//----------------------------------------------------------------------------- +void RenderTarget::Release(bool bReleaseFramebuffers) +//----------------------------------------------------------------------------- +{ + if (m_pGfxApi == nullptr) + return; + + for (auto& ColorAttachment : m_ColorAttachments) + { + ColorAttachment.Release(m_pGfxApi); + } + m_ColorAttachments.clear(); + m_ClearColors.clear(); + m_pLayerFormats.clear(); + m_FilterMode.clear(); + + for (auto& ResolveAttachment : m_ResolveAttachments) + { + ResolveAttachment.Release(m_pGfxApi); + } + m_ResolveAttachments.clear(); + + m_Msaa.clear(); + + m_DepthAttachment.Release(m_pGfxApi); + m_DepthFormat = TextureFormat::UNDEFINED; + +// if (m_FrameBufferDepthOnly != VK_NULL_HANDLE && bReleaseFramebuffers) +// vkDestroyFramebuffer(m_pGfxApi->m_VulkanDevice, m_FrameBufferDepthOnly, NULL); +// m_FrameBufferDepthOnly = VK_NULL_HANDLE; + +// if (m_FrameBuffer != VK_NULL_HANDLE && bReleaseFramebuffers) +// vkDestroyFramebuffer(m_pGfxApi->m_VulkanDevice, m_FrameBuffer, NULL); +// m_FrameBuffer = VK_NULL_HANDLE; + + m_Height = 0; + m_Width = 0; + m_Name = std::string{}; +} + +//----------------------------------------------------------------------------- +void RenderTarget::SetRenderTarget(CommandList& commandList) +//----------------------------------------------------------------------------- +{ + const D3D12_VIEWPORT viewport{ + .TopLeftX = 0.0f, + .TopLeftY = 0.0f, + .Width = (float)m_Width, + .Height = (float)m_Height, + .MinDepth = 0.0f, + .MaxDepth = 1.0f + }; + const D3D12_RECT scissor{ + .left = 0, + .top = 0, + .right = (LONG)m_Width, + .bottom = (LONG)m_Height + }; + + commandList->RSSetViewports( 1, &viewport ); + commandList->RSSetScissorRects( 1, &scissor ); + + //D3D12_RESOURCE_BARRIER backbufferBarrier{ + // .Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION, + // .Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE , + // .Transition = { + // .pResource = m_FrameBuffers[whichFrame].Get(), + // .Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, + // .StateBefore = D3D12_RESOURCE_STATE_PRESENT, + // .StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET + // } + //}; + //pCommandList->ResourceBarrier( 1, &backbufferBarrier ); + + D3D12_CPU_DESCRIPTOR_HANDLE colorDescriptorHandle{.ptr = m_descriptorHeap->GetCPUDescriptorHandleForHeapStart().ptr}; + D3D12_CPU_DESCRIPTOR_HANDLE depthDescriptorHandle{.ptr = m_depthDescriptorHeap ? m_depthDescriptorHeap->GetCPUDescriptorHandleForHeapStart().ptr : 0}; + commandList->OMSetRenderTargets( GetNumColorLayers(), &colorDescriptorHandle, FALSE, m_DepthAttachment.IsEmpty() ? nullptr : &depthDescriptorHandle); + + const float clearColor[4] {}; + commandList->ClearRenderTargetView( colorDescriptorHandle, clearColor, 0, nullptr ); + + if (!m_DepthAttachment.IsEmpty()) + { + commandList->ClearDepthStencilView( depthDescriptorHandle, D3D12_CLEAR_FLAG_DEPTH, 1.0f, 0, 0, nullptr ); + } +} diff --git a/framework/code/dx12/renderTarget.hpp b/framework/code/dx12/renderTarget.hpp new file mode 100644 index 0000000..22f141b --- /dev/null +++ b/framework/code/dx12/renderTarget.hpp @@ -0,0 +1,97 @@ +//============================================================================= +// +// +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#pragma once +#include +#include +#include +#include +#include +#include "graphicsApi/renderTarget.hpp" +#include "texture/dx12/texture.hpp" + + +class Dx12; +template class Texture; +template class CommandList; + +union ClearColor +{ + float r32g32b32a32_float[4]; +}; + +template<> +class RenderTarget final : public RenderTargetBase +{ + RenderTarget(const RenderTarget&) = delete; + RenderTarget& operator=(const RenderTarget&) = delete; +public: + RenderTarget(); + ~RenderTarget(); + RenderTarget( RenderTarget&& ) noexcept; + RenderTarget& operator=( RenderTarget&& ) noexcept; + uint32_t GetNumColorLayers() const { return (uint32_t)m_pLayerFormats.size(); } + + bool Initialize(Dx12* pGfxApi, const RenderTargetInitializeInfo& info, const char* pName); + + bool Initialize(Dx12* pGfxApi, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, std::span Msaa = {}, const char* pName = NULL); + bool Initialize(Dx12* pGfxApi, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, Msaa Msaa = Msaa::Samples1, const char* pName = NULL) + { + RenderTargetInitializeInfo info{ + .Width = uiWidth, + .Height = uiHeight, + .LayerFormats = pLayerFormats, + .DepthFormat = DepthFormat, + .Msaa = {&Msaa, 1}, + //.TextureTypes + //.FilterModes(filtermode) + }; + //return Initialize(pGfxApi, uiWidth, uiHeight, pLayerFormats, DepthFormat, { &Msaa,1 }, pName); + return Initialize( pGfxApi, info, pName ); + } + + void SetRenderTarget( CommandList& ); +private: + template friend class RenderTargetArray; + bool InitializeDepth(); + bool InitializeColor(const std::span TextureTypes); + bool InitializeResolve(const std::span ResolveTextureFormats); + + void SetClearColors(const std::span clearColors); + + void Release(bool bReleaseFramebuffers /*set true if we are the owner of the framebuffers (and so want to clean them up)*/); + + // Attributes +public: + std::string m_Name; + + uint32_t m_Width = 0; + uint32_t m_Height = 0; + + std::vector m_pLayerFormats; + std::vector m_Msaa; + std::vector m_FilterMode; + TextureFormat m_DepthFormat = TextureFormat::UNDEFINED; + + // The Color Attachments + + std::vector m_ColorAttachments; + std::vector m_ClearColors; + + // The Resolve Attachments + std::vector m_ResolveAttachments; + + // The Depth Attachment + TextureDx12 m_DepthAttachment; + +private: + Dx12* m_pGfxApi = nullptr; + + ComPtr m_descriptorHeap; + ComPtr m_depthDescriptorHeap; +}; diff --git a/framework/code/graphicsApi/commandList.hpp b/framework/code/graphicsApi/commandList.hpp index f203ad0..41880cc 100644 --- a/framework/code/graphicsApi/commandList.hpp +++ b/framework/code/graphicsApi/commandList.hpp @@ -1,40 +1,69 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once // Forward declarations -template class CommandListT; +template class CommandList; // Base graphics Command list container class -class CommandList +class CommandListBase { - CommandList(const CommandList&) = delete; - CommandList& operator=(const CommandList&) = delete; + CommandListBase(const CommandListBase&) = delete; + CommandListBase& operator=(const CommandListBase&) = delete; public: - CommandList() noexcept {} - ~CommandList() {} + CommandListBase() noexcept {} + virtual ~CommandListBase() {} - template using tApiDerived = CommandListT; // make apiCast work! + std::string m_Name; + uint32_t m_NumDrawCalls = 0; + uint32_t m_NumTriangles = 0; + + enum class Type + { + // Match Dx12 types (Vulkan supports a subset) + Primary = 0, + Direct = Primary, + Secondary = 1, + Bundle = Secondary, + Compute = 2, + Copy, + VideoDecode, + VideoProcess, + VideoEncode + } m_Type = Type::Primary; + + virtual void Release() = 0; + + template using tApiDerived = CommandList; // make apiCast work! }; +inline void CommandListBase::Release() +{ + m_Name.clear(); + m_NumDrawCalls = 0; + m_NumTriangles = 0; + m_Type = Type::Primary; +} + + // Templated command list container class (templated against graphics api) // Expected for this class to be specialized for each graphics api. template -class CommandListT : public CommandList +class CommandList : public CommandListBase { - CommandListT(const CommandListT&) = delete; - CommandListT& operator=(const CommandListT&) = delete; + CommandList(const CommandList&) = delete; + CommandList& operator=(const CommandList&) = delete; public: - CommandListT() noexcept {} // This class is expected to be specialized! - ~CommandListT() = delete; // This class is expected to be specialized! + CommandList() noexcept {} // This class is expected to be specialized! + ~CommandList() = delete; // This class is expected to be specialized! protected: - static_assert(sizeof(CommandListT) != sizeof(CommandList)); // Ensure this class template is specialized (and not used as-is) + static_assert(sizeof(CommandList) != sizeof(CommandListBase)); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/graphicsApi/graphicsApiBase.cpp b/framework/code/graphicsApi/graphicsApiBase.cpp index b5732ec..b681658 100644 --- a/framework/code/graphicsApi/graphicsApiBase.cpp +++ b/framework/code/graphicsApi/graphicsApiBase.cpp @@ -1,10 +1,9 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #include "graphicsApiBase.hpp" diff --git a/framework/code/graphicsApi/graphicsApiBase.hpp b/framework/code/graphicsApi/graphicsApiBase.hpp index 7b62bad..21556ac 100644 --- a/framework/code/graphicsApi/graphicsApiBase.hpp +++ b/framework/code/graphicsApi/graphicsApiBase.hpp @@ -1,10 +1,9 @@ -//============================================================================================================ -// +//============================================================================= // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include @@ -31,7 +30,7 @@ enum class RenderPassOutputUsage { /// @brief Helpers to convert from base type to graphics api derived type /// Use ONLY if you are sure the base object ACTUALLY matches give graphics api. /// @tparam T_GFXAPI graphics api to cast to. -/// @param rBase base object (eg Texture) +/// @param rBase base object (eg TextureBase) template const auto& apiCast(const T& rBase) { using tDerived = typename T::template tApiDerived; @@ -58,7 +57,7 @@ auto* apiCast(T* rBase) { template auto apiCast(std::unique_ptr&& rBase) { using tDerived = typename T::template tApiDerived; - return std::unique_ptr(static_cast(rBase.release())); + return std::unique_ptr(static_cast(rBase.get())); } diff --git a/framework/code/graphicsApi/pipeline.hpp b/framework/code/graphicsApi/pipeline.hpp new file mode 100644 index 0000000..883c98b --- /dev/null +++ b/framework/code/graphicsApi/pipeline.hpp @@ -0,0 +1,29 @@ +//============================================================================= +// +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +// Forward declarations + + +/// Simple wrapper around VkPipeline or DirectX render target data used by BeginRenderPass and CreateGraphicsPipelineState. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// This template class expected to be specialized (if this template throws compiler errors then the code is not using the specialization classes which is an issue!) +/// @ingroup Material +template +class Pipeline +{ + Pipeline& operator=(const Pipeline&) = delete; + Pipeline(const Pipeline&) = delete; +public: + Pipeline() noexcept = delete; + Pipeline( Pipeline&&) noexcept = delete; + ~Pipeline() = delete; + + static_assert(sizeof( Pipeline) >= 1); // Ensure this class template is specialized (and not used as-is) +}; + diff --git a/framework/code/graphicsApi/renderContext.hpp b/framework/code/graphicsApi/renderContext.hpp new file mode 100644 index 0000000..824f1d2 --- /dev/null +++ b/framework/code/graphicsApi/renderContext.hpp @@ -0,0 +1,28 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +// Forward declarations + + +/// Simple wrapper for a rendering context (RenderContext and Pipeline or a dynamic rendering state) +/// This template class expected to be specialized (if this template throws compiler errors then the code is not using the specialization classes which is an issue!) +/// @ingroup Material +template +class RenderContext +{ + RenderContext& operator=(const RenderContext&) = delete; + RenderContext(const RenderContext&) = delete; +public: + RenderContext() noexcept = delete; + RenderContext(RenderContext&&) noexcept = delete; + ~RenderContext() = delete; + + static_assert(sizeof(RenderContext) >= 1); // Ensure this class template is specialized (and not used as-is) +}; + diff --git a/framework/code/graphicsApi/renderPass.hpp b/framework/code/graphicsApi/renderPass.hpp new file mode 100644 index 0000000..69e72ac --- /dev/null +++ b/framework/code/graphicsApi/renderPass.hpp @@ -0,0 +1,29 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +// Forward declarations + + +/// Simple wrapper around VkRenderPass or DirectX render target data used by BeginRenderPass and CreateGraphicsPipelineState. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// This template class expected to be specialized (if this template throws compiler errors then the code is not using the specialization classes which is an issue!) +/// @ingroup Material +template +class RenderPass +{ + RenderPass& operator=(const RenderPass&) = delete; + RenderPass(const RenderPass&) = delete; +public: + RenderPass() noexcept = delete; + RenderPass(RenderPass&&) noexcept = delete; + ~RenderPass() = delete; + + static_assert(sizeof(RenderPass) >= 1); // Ensure this class template is specialized (and not used as-is) +}; + diff --git a/framework/code/graphicsApi/renderTarget.hpp b/framework/code/graphicsApi/renderTarget.hpp new file mode 100644 index 0000000..5d0e331 --- /dev/null +++ b/framework/code/graphicsApi/renderTarget.hpp @@ -0,0 +1,45 @@ +//============================================================================= +// +// Copyright (c) 2024 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "texture/textureFormat.hpp" +#include "texture/texture.hpp" +#include +#include + +class GraphicsApiBase; +template class RenderTarget; + +struct RenderTargetInitializeInfo +{ + uint32_t Width = 0; + uint32_t Height = 0; + std::span LayerFormats = {}; + TextureFormat DepthFormat = TextureFormat::UNDEFINED; + const std::span TextureTypes = {}; + const std::optional DepthTextureType = std::nullopt; + std::span Msaa = {}; + const std::span ResolveTextureFormats = {}; + const std::span FilterModes = {}; +}; + +class RenderTargetBase +{ + RenderTargetBase( const RenderTargetBase& ) = delete; + RenderTargetBase& operator=( const RenderTargetBase& ) = delete; +public: + RenderTargetBase() = default; + virtual ~RenderTargetBase() = default; + template using tApiDerived = RenderTarget; // make apiCast work! +}; + + +template +class RenderTarget : public RenderTargetBase +{ +protected: + static_assert(sizeof( RenderTarget ) != sizeof( RenderTargetBase )); // Ensure this class template is specialized (and not used as-is) +}; diff --git a/framework/code/gui/android/imguiAndroid.cpp b/framework/code/gui/android/imguiAndroid.cpp index daa07fc..c62947b 100644 --- a/framework/code/gui/android/imguiAndroid.cpp +++ b/framework/code/gui/android/imguiAndroid.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -22,9 +22,9 @@ GuiImguiPlatform::~GuiImguiPlatform() {} -bool GuiImguiPlatform::Initialize(uintptr_t windowHandle, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight) +bool GuiImguiPlatform::Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight) { - if (!GuiImguiBase::Initialize(windowHandle, renderWidth, renderHeight)) + if (!GuiImguiBase::Initialize(windowHandle, renderFormat, renderWidth, renderHeight)) { return false; } diff --git a/framework/code/gui/android/imguiAndroid.hpp b/framework/code/gui/android/imguiAndroid.hpp index d3cd4f9..ac41815 100644 --- a/framework/code/gui/android/imguiAndroid.hpp +++ b/framework/code/gui/android/imguiAndroid.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/gui/gui.hpp b/framework/code/gui/gui.hpp index d21ad45..8bf4087 100644 --- a/framework/code/gui/gui.hpp +++ b/framework/code/gui/gui.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,6 +11,8 @@ /// Game (onscreen) GUI functionality. #include +enum class TextureFormat; + /// /// @brief (Pure virtual) base for gui implementations (gui solution agnostic). @@ -20,7 +22,7 @@ class Gui { public: virtual ~Gui() = 0; - virtual bool Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint32_t renderHeight) = 0; + virtual bool Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) = 0; virtual void Update() = 0; /// @returns True if the GUI is capturing mouse events (and so they shouldnt be sent to our application code) diff --git a/framework/code/gui/imguiBase.cpp b/framework/code/gui/imguiBase.cpp index 7370968..1e4d7e6 100644 --- a/framework/code/gui/imguiBase.cpp +++ b/framework/code/gui/imguiBase.cpp @@ -1,15 +1,15 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "imguiBase.hpp" -#include "imgui.h" +#include "imgui/imgui.h" -bool GuiImguiBase::Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint32_t renderHeight) +bool GuiImguiBase::Initialize(uintptr_t windowHandle, TextureFormat, uint32_t renderWidth, uint32_t renderHeight) { // Setup Dear ImGui context IMGUI_CHECKVERSION(); @@ -29,7 +29,6 @@ bool GuiImguiBase::Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint void GuiImguiBase::Update() { ImGui::NewFrame(); -// ImGui::ShowDemoWindow(); } bool GuiImguiBase::WantCaptureMouse() const diff --git a/framework/code/gui/imguiBase.hpp b/framework/code/gui/imguiBase.hpp index 5014153..46fd44f 100644 --- a/framework/code/gui/imguiBase.hpp +++ b/framework/code/gui/imguiBase.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -17,7 +17,7 @@ class GuiImguiBase : public Gui { public: - bool Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint32_t renderHeight) override; + bool Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) override; void Update() override; bool WantCaptureMouse() const override; diff --git a/framework/code/gui/imguiDx12.cpp b/framework/code/gui/imguiDx12.cpp new file mode 100644 index 0000000..8d6828a --- /dev/null +++ b/framework/code/gui/imguiDx12.cpp @@ -0,0 +1,147 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "imguiDx12.hpp" +#include "imgui/imgui.h" +#include "imgui/backends/imgui_impl_dx12.h" +#include "imgui/backends/imgui_impl_win32.h" +#include "dx12/dx12.hpp" +#include "dx12/commandList.hpp" +#include "dx12/renderTarget.hpp" +#include "system/os_common.h" +#include + +// Forward declarations +using namespace Microsoft::WRL; // for ComPtr + + +//----------------------------------------------------------------------------- + +GuiImguiGfx::GuiImguiGfx(Dx12& gfxApi, const RenderPass&/*unused*/) + : GuiImguiPlatform() + , m_GfxApi(gfxApi) +{} + +//----------------------------------------------------------------------------- + +GuiImguiGfx::~GuiImguiGfx() +{ + ImGui_ImplDX12_Shutdown(); +} + +//----------------------------------------------------------------------------- + +bool GuiImguiGfx::Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) +{ + // Call the platform (windows/android) specific implementation initialize... + if (!GuiImguiPlatform::Initialize(windowHandle, renderFormat, m_GfxApi.GetSurfaceWidth(), m_GfxApi.GetSurfaceHeight(), renderWidth, renderHeight)) + { + return false; + } + + // Make a descriptor heap just for the GUI + ComPtr descriptorHeap = m_GfxApi.CreateDescriptorHeap( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, 1, nullptr ); + if (!descriptorHeap) + return false; + + // Give imgui its own commandLists + { + m_CommandList.reserve( m_GfxApi.GetSwapchainBufferCount() ); + for (uint32_t imageIdx = 0; imageIdx < m_GfxApi.GetSwapchainBufferCount(); ++imageIdx) + { + if (!m_CommandList.emplace_back().Initialize( &m_GfxApi, "ImGui", CommandListBase::Type::Secondary )) + { + return false; + } + } + m_UploadCommandList = std::make_unique>(); + if (!m_UploadCommandList->Initialize( &m_GfxApi, "ImGui upload" )) + { + return false; + } + } + + // Create the ImGui Dx12 implementation! + { + const auto outputFormat = TextureFormatToDx( renderFormat ); + + D3D12_CPU_DESCRIPTOR_HANDLE font_srv_cpu_desc_handle = descriptorHeap->GetCPUDescriptorHandleForHeapStart(); + D3D12_GPU_DESCRIPTOR_HANDLE font_srv_gpu_desc_handle = descriptorHeap->GetGPUDescriptorHandleForHeapStart(); + + if (!ImGui_ImplDX12_Init(m_GfxApi.GetDevice(), + NUM_SWAPCHAIN_BUFFERS, + outputFormat, + m_GfxApi.GetShaderResourceViewDescriptorHeap().GetHeap() /*cbv_srv_heap*/, + font_srv_cpu_desc_handle, + font_srv_gpu_desc_handle)) + { + return false; + } + } + + m_DescriptorHeap = std::move( descriptorHeap ); + + return true; +} + +//----------------------------------------------------------------------------- + +void GuiImguiGfx::Update() +{ + ImGui_ImplDX12_NewFrame(); + GuiImguiPlatform::Update(); +} + +//----------------------------------------------------------------------------- + +ID3D12GraphicsCommandList* GuiImguiGfx::Render(uint32_t frameIdx, RenderTarget& renderTarget) +{ + auto& commandList = m_CommandList[frameIdx]; + if (!commandList.Begin()) + { + return nullptr; + } + + //if (commandList.m_IsPrimary) + //{ + // VkRenderPassBeginInfo info = {VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO}; + // info.renderPass = m_RenderPass; + // info.framebuffer = frameBuffer; + // info.renderArea.extent.width = m_Vulkan.m_SurfaceWidth; + // info.renderArea.extent.height = m_Vulkan.m_SurfaceHeight; + // info.clearValueCount = 0; + // info.pClearValues = nullptr; + // vkCmdBeginRenderPass(m_CommandBuffer[frameIdx].m_VkCommandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE); + //} + + Render(commandList.Get()); + + //if (m_CommandBuffer[frameIdx].m_IsPrimary) + //{ + // vkCmdEndRenderPass(m_CommandBuffer[frameIdx].m_VkCommandBuffer); + //} + + commandList.End(); + return commandList.Get(); +} + +//----------------------------------------------------------------------------- + +void GuiImguiGfx::Render(ID3D12GraphicsCommandList* commandList) +{ + auto* descriptorHeapPtr = m_DescriptorHeap.Get(); + commandList->SetDescriptorHeaps( 1, &descriptorHeapPtr); + + + ImGui::Render(); + ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), commandList); +} + +//----------------------------------------------------------------------------- + +template class GuiImguiGfx; diff --git a/framework/code/gui/imguiDx12.hpp b/framework/code/gui/imguiDx12.hpp new file mode 100644 index 0000000..1d6eee3 --- /dev/null +++ b/framework/code/gui/imguiDx12.hpp @@ -0,0 +1,45 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include "imguiPlatform.hpp" + +class Dx12; +struct ID3D12DescriptorHeap; +struct ID3D12GraphicsCommandList; +template class CommandList; +template class RenderPass; +template class RenderTarget; + +/// +/// @brief DirectX 12 specialized implementation of imgui rendering. +/// Derives from the Windows (or whatever) platform specific class implementation. +/// @ingroup GUI +/// +template<> +class GuiImguiGfx : public GuiImguiPlatform +{ +public: + GuiImguiGfx(Dx12&, const RenderPass&/*unused*/); + ~GuiImguiGfx(); + + bool Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) override; + void Update() override; + + ID3D12GraphicsCommandList* Render(uint32_t frameIdx, RenderTarget& renderTarget); + void Render( ID3D12GraphicsCommandList* cmdBuffer); + +private: + Dx12& m_GfxApi; + Microsoft::WRL::ComPtr m_DescriptorHeap; + std::vector> m_CommandList; + std::unique_ptr> m_UploadCommandList; +}; diff --git a/framework/code/gui/imguiPlatform.hpp b/framework/code/gui/imguiPlatform.hpp index efa98fe..78bc942 100644 --- a/framework/code/gui/imguiPlatform.hpp +++ b/framework/code/gui/imguiPlatform.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -14,7 +14,7 @@ class Vulkan; /// /// @brief Platform specific imgui class declaration -/// Implementation is in the Windows / Android (or whatever) subdirectory. +/// Implementation derives from this and is in the Windows / Android (or whatever) subdirectory. /// Does the input/screen (but not rendering) for whichever platform we are running on /// @ingroup GUI /// @@ -23,8 +23,8 @@ class GuiImguiPlatform : public GuiImguiBase public: GuiImguiPlatform(); ~GuiImguiPlatform(); - bool Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint32_t renderHeight) override = 0; - bool Initialize(uintptr_t windowHandle, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight); + virtual bool Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) override = 0; + bool Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight); void Update() override; bool TouchDownEvent(int iPointerID, float xPos, float yPos) override; @@ -32,7 +32,6 @@ class GuiImguiPlatform : public GuiImguiBase bool TouchUpEvent(int iPointerID, float xPos, float yPos) override; }; - /// /// @brief Graphics API specific imgui rendering class template /// Actual implementations are implemented as a specialization of this class. @@ -41,6 +40,6 @@ class GuiImguiPlatform : public GuiImguiBase template class GuiImguiGfx : public GuiImguiPlatform { - + static_assert(sizeof( GuiImguiGfx ) > sizeof( GuiImguiPlatform )); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/gui/imguiVulkan.cpp b/framework/code/gui/imguiVulkan.cpp index 81d8eab..89545fa 100644 --- a/framework/code/gui/imguiVulkan.cpp +++ b/framework/code/gui/imguiVulkan.cpp @@ -1,13 +1,14 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "imguiVulkan.hpp" #include "vulkan/vulkan.hpp" +#include "texture/vulkan/texture.hpp" #include "imgui/imgui.h" #include "imgui/backends/imgui_impl_vulkan.h" #include "imgui/backends/imgui_impl_win32.h" @@ -25,9 +26,9 @@ static void check_vk_result(VkResult err) //----------------------------------------------------------------------------- -GuiImguiGfx::GuiImguiGfx(Vulkan& vulkan, VkRenderPass renderPass) +GuiImguiGfx::GuiImguiGfx(Vulkan& vulkan, RenderPass renderPass) : GuiImguiPlatform() - , m_RenderPass(renderPass) + , m_RenderPass(std::move(renderPass)) , m_GfxApi(vulkan) {} @@ -43,14 +44,16 @@ GuiImguiGfx::~GuiImguiGfx() //----------------------------------------------------------------------------- -bool GuiImguiGfx::Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint32_t renderHeight) +bool GuiImguiGfx::Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) { // Call the platform (windows/android) specific implementation initialize... - if (!GuiImguiPlatform::Initialize(windowHandle, m_GfxApi.GetSurfaceWidth(), m_GfxApi.GetSurfaceHeight(), renderWidth, renderHeight)) + if (!GuiImguiPlatform::Initialize(windowHandle, renderFormat, renderWidth, renderHeight, renderWidth, renderHeight )) { return false; } + const auto outputFormat = TextureFormatToVk( renderFormat ); + // Give Imgui its own descriptor pool { // Sizes from imgui example main.cpp @@ -68,12 +71,13 @@ bool GuiImguiGfx::Initialize(uintptr_t windowHandle, uint32_t renderWidt { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 }, { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 } }; - VkDescriptorPoolCreateInfo pool_info = {}; - pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; - pool_info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; - pool_info.maxSets = 1000 * IM_ARRAYSIZE(pool_sizes); - pool_info.poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes); - pool_info.pPoolSizes = pool_sizes; + const VkDescriptorPoolCreateInfo pool_info { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, + .flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, + .maxSets = 1000 * IM_ARRAYSIZE(pool_sizes), + .poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes), + .pPoolSizes = pool_sizes + }; VkResult err = vkCreateDescriptorPool(m_GfxApi.m_VulkanDevice, &pool_info, nullptr, &m_DescriptorPool); check_vk_result(err); if (err != VK_SUCCESS) @@ -87,7 +91,7 @@ bool GuiImguiGfx::Initialize(uintptr_t windowHandle, uint32_t renderWidt m_CommandBuffer.reserve(m_GfxApi.m_SwapchainImageCount); for (uint32_t imageIdx = 0; imageIdx < m_GfxApi.m_SwapchainImageCount; ++imageIdx) { - if (!m_CommandBuffer.emplace_back().Initialize(&m_GfxApi, "ImGui", VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_CommandBuffer.emplace_back().Initialize(&m_GfxApi, "ImGui", CommandListBase::Type::Secondary)) { return false; } @@ -111,8 +115,28 @@ bool GuiImguiGfx::Initialize(uintptr_t windowHandle, uint32_t renderWidt init_info.Allocator = nullptr;// g_Allocator; init_info.MinImageCount = m_GfxApi.m_SwapchainImageCount; //unused? init_info.ImageCount = m_GfxApi.m_SwapchainImageCount; - init_info.RenderPass = m_RenderPass; init_info.CheckVkResultFn = check_vk_result; + init_info.UseDynamicRendering = !m_RenderPass; + if (init_info.UseDynamicRendering) + { + init_info.PipelineRenderingCreateInfo = { + .sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR, + .viewMask = 0, + .colorAttachmentCount = 1, + .pColorAttachmentFormats = &outputFormat, + }; + } + else + { + // Non dynamic rendering + init_info.RenderPass = m_RenderPass.mRenderPass; + } + + ImGui_ImplVulkan_LoadFunctions([](const char* function_name, void* vulkan_instance) + { + return vkGetInstanceProcAddr(*(reinterpret_cast(vulkan_instance)), function_name); + }, &init_info.Instance); + if (!ImGui_ImplVulkan_Init(&init_info)) { vkDestroyDescriptorPool(m_GfxApi.m_VulkanDevice, m_DescriptorPool, nullptr); @@ -163,35 +187,37 @@ void GuiImguiGfx::Update() VkCommandBuffer GuiImguiGfx::Render(uint32_t frameIdx, VkFramebuffer frameBuffer) { - if (!m_CommandBuffer[frameIdx].Begin(frameBuffer, m_RenderPass, false, 0, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)) + assert(m_RenderPass); // cannot be called when doing dynamic rendering (use Render(VkCommandBuffer)) + if (!m_RenderPass) + return VK_NULL_HANDLE; + + auto& commandBuffer = m_CommandBuffer[frameIdx]; + if (!commandBuffer.Begin(frameBuffer, m_RenderPass, false, 0, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)) { return VK_NULL_HANDLE; } - if (m_CommandBuffer[frameIdx].m_IsPrimary) + if (commandBuffer.m_Type == CommandListBase::Type::Primary) { - VkRenderPassBeginInfo info = {VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO}; - info.renderPass = m_RenderPass; - info.framebuffer = frameBuffer; - info.renderArea.extent.width = m_GfxApi.m_SurfaceWidth; - info.renderArea.extent.height = m_GfxApi.m_SurfaceHeight; - info.clearValueCount = 0; - info.pClearValues = nullptr; - vkCmdBeginRenderPass(m_CommandBuffer[frameIdx].m_VkCommandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE); + fvk::VkRenderPassBeginInfo info; + info->renderPass = m_RenderPass.mRenderPass; + info->framebuffer = frameBuffer; + info->renderArea.extent.width = m_GfxApi.m_SurfaceWidth; + info->renderArea.extent.height = m_GfxApi.m_SurfaceHeight; + info->clearValueCount = 0; + info->pClearValues = nullptr; + commandBuffer.BeginRenderPass(*info, VK_SUBPASS_CONTENTS_INLINE); } - Render(m_CommandBuffer[frameIdx].m_VkCommandBuffer); + Render(commandBuffer); - if (m_CommandBuffer[frameIdx].m_IsPrimary) + if (commandBuffer.m_Type == CommandListBase::Type::Primary) { - vkCmdEndRenderPass(m_CommandBuffer[frameIdx].m_VkCommandBuffer); + commandBuffer.EndRenderPass(); } - { - VkResult err = vkEndCommandBuffer(m_CommandBuffer[frameIdx].m_VkCommandBuffer); - check_vk_result(err); - } - return m_CommandBuffer[frameIdx].m_VkCommandBuffer; + commandBuffer.End(); + return commandBuffer; } void GuiImguiGfx::Render(VkCommandBuffer cmdBuffer) diff --git a/framework/code/gui/imguiVulkan.hpp b/framework/code/gui/imguiVulkan.hpp index 0c4135e..f618c91 100644 --- a/framework/code/gui/imguiVulkan.hpp +++ b/framework/code/gui/imguiVulkan.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,6 +12,7 @@ #include "imguiPlatform.hpp" #include "vulkan/vulkan.hpp" #include "vulkan/commandBuffer.hpp" +#include "vulkan/renderPass.hpp" /// /// @brief Vulkan specialized implementation of imgui rendering. @@ -22,20 +23,20 @@ template<> class GuiImguiGfx : public GuiImguiPlatform { public: - GuiImguiGfx(Vulkan&, VkRenderPass renderPass); + GuiImguiGfx(Vulkan&, RenderPass renderPass = {}); ~GuiImguiGfx(); - bool Initialize(uintptr_t windowHandle, uint32_t renderWidth, uint32_t renderHeight) override; + bool Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) override; void Update() override; VkCommandBuffer Render(uint32_t frameIdx, VkFramebuffer frameBuffer); void Render(VkCommandBuffer cmdBuffer); private: - const VkRenderPass m_RenderPass; + const RenderPass m_RenderPass {}; // if null, use dynamic rendering VkDescriptorPool m_DescriptorPool = VK_NULL_HANDLE; - Wrap_VkCommandBuffer m_UploadCommandBuffer; - std::vector m_CommandBuffer; + CommandListVulkan m_UploadCommandBuffer; + std::vector m_CommandBuffer; Vulkan& m_GfxApi; }; diff --git a/framework/code/gui/linux/imguiLinux.cpp b/framework/code/gui/linux/imguiLinux.cpp new file mode 100644 index 0000000..5002ad1 --- /dev/null +++ b/framework/code/gui/linux/imguiLinux.cpp @@ -0,0 +1,58 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================================================ + +#include "imguiLinux.hpp" +#include +#include "imgui/backends/imgui_impl_glfw.h" + +// +// Implementation of GuiImguiPlatform (for glfw) +// + +GuiImguiPlatform::GuiImguiPlatform() +{} + +GuiImguiPlatform::~GuiImguiPlatform() +{ +} + +bool GuiImguiPlatform::Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t renderWidth, uint32_t renderHeight) +{ + if (!GuiImguiBase::Initialize(windowHandle, renderFormat, renderWidth, renderHeight)) + { + return false; + } + + if (!ImGui_ImplGlfw_InitForVulkan((GLFWwindow*)windowHandle, true/*callbacks*/)) + { + return false; + } + + // Disable the IME callback, if IME is needed then we can revisit but this fixes a hang when entering text into an entry box. + // Remove if/when we upgrade IMGUI past 1.88. https://github.com/ocornut/imgui/issues/5535 + ImGui::GetIO().SetPlatformImeDataFn = nullptr; + + return true; +} + +//----------------------------------------------------------------------------- + +void GuiImguiPlatform::Update() +{ + ImGui_ImplGlfw_NewFrame(); + GuiImguiBase::Update(); +} + +//----------------------------------------------------------------------------- +// Windows inputs are all handled by ImGui_ImplGlfw_NewFrame +// No need to pass these events on to imGui (unlike on Android for instance!) +//----------------------------------------------------------------------------- + +bool GuiImguiPlatform::TouchDownEvent(int iPointerID, float xPos, float yPos) { return false; } +bool GuiImguiPlatform::TouchMoveEvent(int iPointerID, float xPos, float yPos) { return false; } +bool GuiImguiPlatform::TouchUpEvent(int iPointerID, float xPos, float yPos) { return false; } diff --git a/framework/code/gui/linux/imguiLinux.hpp b/framework/code/gui/linux/imguiLinux.hpp new file mode 100644 index 0000000..f1e752d --- /dev/null +++ b/framework/code/gui/linux/imguiLinux.hpp @@ -0,0 +1,17 @@ +//============================================================================= +// +// +// Copyright (c) 2025 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "../imguiPlatform.hpp" + +/// +/// @file imguiLinux.hpp +/// Linux specific implementation for imgui +/// Only Linux specific implementation files should include this header (eg imGuiLinux.cpp and linuxMain.cpp) +/// @ingroup GUI +/// diff --git a/framework/code/gui/windows/imguiWindows.cpp b/framework/code/gui/windows/imguiWindows.cpp index dc8ab3f..4f0edc0 100644 --- a/framework/code/gui/windows/imguiWindows.cpp +++ b/framework/code/gui/windows/imguiWindows.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -29,9 +29,9 @@ GuiImguiPlatform::~GuiImguiPlatform() PFN_Gui_WndProcHandler = nullptr; } -bool GuiImguiPlatform::Initialize(uintptr_t windowHandle, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight) +bool GuiImguiPlatform::Initialize(uintptr_t windowHandle, TextureFormat renderFormat, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight) { - if (!GuiImguiBase::Initialize(windowHandle, renderWidth, renderHeight)) + if (!GuiImguiBase::Initialize(windowHandle, renderFormat, renderWidth, renderHeight)) { return false; } @@ -43,15 +43,15 @@ bool GuiImguiPlatform::Initialize(uintptr_t windowHandle, uint32_t deviceWidth, PFN_Gui_WndProcHandler = &ImGui_ImplWin32_WndProcHandler; - // Disable the IME callback, if IME is needed then we can revisit but this fixes a hang when entering text into an entry box. - // Remove if/when we upgrade IMGUI past 1.88. https://github.com/ocornut/imgui/issues/5535 - ImGui::GetIO().SetPlatformImeDataFn = nullptr; - return true; } //----------------------------------------------------------------------------- +//bool Initialize( uintptr_t windowHandle, TextureFormat renderFormat, uint32_t deviceWidth, uint32_t deviceHeight, uint32_t renderWidth, uint32_t renderHeight ); + +//----------------------------------------------------------------------------- + void GuiImguiPlatform::Update() { ImGui_ImplWin32_NewFrame(); diff --git a/framework/code/gui/windows/imguiWindows.hpp b/framework/code/gui/windows/imguiWindows.hpp index 4a26d28..edf1e61 100644 --- a/framework/code/gui/windows/imguiWindows.hpp +++ b/framework/code/gui/windows/imguiWindows.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include "../imguiPlatform.hpp" diff --git a/framework/code/helper/postProcess.hpp b/framework/code/helper/postProcess.hpp index df3449c..4b8d4ff 100644 --- a/framework/code/helper/postProcess.hpp +++ b/framework/code/helper/postProcess.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -13,15 +13,21 @@ // Forward declarations class Vulkan; -class Drawable; -class Computable; +class ComputableBase; +template class Drawable; using Json = nlohmann::json; /// @brief Base class for Post Process classes. /// Roughly defines interface for a post processing class that does the final compositing of output image (generally using a fullscreen shader pass). -/// +/// +template class PostProcess { +protected: + using Drawable = Drawable; + PostProcess(const PostProcess&) = delete; + PostProcess& operator=(const PostProcess&) = delete; + PostProcess() noexcept = default; public: virtual ~PostProcess() = 0; @@ -32,7 +38,8 @@ class PostProcess virtual void UpdateGui() {}; virtual const Drawable* const GetDrawable() const { return nullptr; } - virtual const Computable* const GetComputable() const { return nullptr; } + virtual const ComputableBase* const GetComputable() const { return nullptr; } }; -inline PostProcess::~PostProcess() {} +template +inline PostProcess< T_GFXAPI>::~PostProcess() {} diff --git a/framework/code/helper/postProcessSMAA.cpp b/framework/code/helper/postProcessSMAA.cpp index aa13330..f8b065a 100644 --- a/framework/code/helper/postProcessSMAA.cpp +++ b/framework/code/helper/postProcessSMAA.cpp @@ -1,16 +1,18 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "postProcessSMAA.hpp" #include "imgui/imgui.h" -#include "material/materialManager.hpp" -#include "material/computable.hpp" +#include "material/vulkan/computable.hpp" +#include "material/vulkan/materialManager.hpp" +#include "material/vulkan/shader.hpp" #include "system/os_common.h" +#include "texture/vulkan/texture.hpp" #include "texture/vulkan/textureManager.hpp" @@ -25,7 +27,7 @@ PostProcessSMAA::~PostProcessSMAA() ReleaseUniformBuffer(&m_Vulkan, m_Uniform); } -bool PostProcessSMAA::Init(const Shader& shader, MaterialManagerT& materialManager, TextureVulkan* diffuseRenderTarget, TextureVulkan* depthRenderTarget) +bool PostProcessSMAA::Init(const Shader& shader, MaterialManager& materialManager, TextureVulkan* diffuseRenderTarget, TextureVulkan* depthRenderTarget) { assert(diffuseRenderTarget); assert(depthRenderTarget); @@ -40,8 +42,8 @@ bool PostProcessSMAA::Init(const Shader& shader, MaterialManagerT& mater if (!CreateUniformBuffer(&m_Vulkan, m_Uniform, &m_UniformData)) return false; - auto blitShaderMaterial = materialManager.CreateMaterial(m_Vulkan, shader, (uint32_t) m_historyDiffuse.size(), - [&](const std::string& texName) -> const MaterialManagerT::tPerFrameTexInfo { + auto blitShaderMaterial = materialManager.CreateMaterial(shader, (uint32_t) m_historyDiffuse.size(), + [&](const std::string& texName) -> const MaterialManager::tPerFrameTexInfo { if (texName == "Diffuse") { return { diffuseRenderTarget }; } @@ -57,17 +59,18 @@ bool PostProcessSMAA::Init(const Shader& shader, MaterialManagerT& mater assert(0); return {}; }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - return { m_Uniform.vkBuffers.begin(), m_Uniform.vkBuffers.end() }; + [this](const std::string& bufferName) -> PerFrameBufferVulkan { + return { m_Uniform.bufferHandles }; } ); - m_Computable = std::make_unique(m_Vulkan, std::move(blitShaderMaterial)); - if (!m_Computable->Init()) + auto computable = std::make_unique>(m_Vulkan, std::move(blitShaderMaterial)); + if (!computable->Init()) { return false; } - m_Computable->SetDispatchGroupCount(0, { diffuseRenderTarget->Width/16, diffuseRenderTarget->Height/4, 1}); + computable->SetDispatchGroupCount(0, { diffuseRenderTarget->Width/16, diffuseRenderTarget->Height/4, 1}); + m_Computable = std::move(computable); return true; } @@ -98,7 +101,7 @@ void PostProcessSMAA::UpdateGui() { } -const Computable* const PostProcessSMAA::GetComputable() const +const ComputableBase* const PostProcessSMAA::GetComputable() const { return m_Computable.get(); } diff --git a/framework/code/helper/postProcessSMAA.hpp b/framework/code/helper/postProcessSMAA.hpp index abf0a53..f2e9d03 100644 --- a/framework/code/helper/postProcessSMAA.hpp +++ b/framework/code/helper/postProcessSMAA.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -17,12 +17,12 @@ #include // Forward declarations -class Computable; -class Shader; -template class MaterialManagerT; +template class Computable; +template class MaterialManager; +template class Shader; -class PostProcessSMAA : public PostProcess +class PostProcessSMAA : public PostProcess { PostProcessSMAA& operator=(const PostProcessSMAA&) = delete; PostProcessSMAA(const PostProcessSMAA&) = delete; @@ -30,18 +30,18 @@ class PostProcessSMAA : public PostProcess PostProcessSMAA(Vulkan& vulkan); ~PostProcessSMAA(); - bool Init(const Shader& shader, MaterialManagerT& materialManager, TextureVulkan* diffuseRenderTarget, TextureVulkan* depthRenderTarget); + bool Init(const Shader& shader, MaterialManager& materialManager, TextureVulkan* diffuseRenderTarget, TextureVulkan* depthRenderTarget); bool UpdateUniforms(uint32_t WhichFrame, float ElapsedTime) override { return UpdateUniforms(WhichFrame, ElapsedTime, glm::mat4(1.0f)); } bool UpdateUniforms(uint32_t WhichFrame, float ElapsedTime, const glm::mat4& clipToPrevClip); void UpdateGui() override; - const Computable* const GetComputable() const override; + const ComputableBase* const GetComputable() const override; std::span GetOutput() const; protected: Vulkan& m_Vulkan; - std::unique_ptr m_Computable; + std::unique_ptr m_Computable; std::array m_historyDiffuse; struct UniformData { diff --git a/framework/code/helper/postProcessStandard.cpp b/framework/code/helper/postProcessStandard.cpp index c1ca008..08c6a80 100644 --- a/framework/code/helper/postProcessStandard.cpp +++ b/framework/code/helper/postProcessStandard.cpp @@ -1,14 +1,16 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "postProcessStandard.hpp" #include "imgui/imgui.h" -#include "material/materialManager.hpp" -#include "material/drawable.hpp" +#include "material/vulkan/drawable.hpp" +#include "material/vulkan/material.hpp" +#include "material/vulkan/materialManager.hpp" +#include "vulkan/renderPass.hpp" #include "material/shader.hpp" #include "mesh/meshHelper.hpp" #include "system/os_common.h" @@ -25,7 +27,7 @@ PostProcessStandard::~PostProcessStandard() ReleaseUniformBuffer(&m_Vulkan, m_FragUniform); } -bool PostProcessStandard::Init(const Shader& shader, MaterialManagerT& materialManager, VkRenderPass blitRenderPass, std::span> diffuseRenderTargets, TextureT* bloomRenderTarget, TextureT* uiRenderTarget) +bool PostProcessStandard::Init(const Shader& shader, MaterialManager& materialManager, const RenderPass& blitRenderPass, std::span> diffuseRenderTargets, Texture* bloomRenderTarget, Texture* uiRenderTarget) { assert(!diffuseRenderTargets.empty()); assert(bloomRenderTarget); @@ -42,8 +44,8 @@ bool PostProcessStandard::Init(const Shader& shader, MaterialManagerT& m Mesh blitMesh; MeshHelper::CreateScreenSpaceMesh(m_Vulkan.GetMemoryManager(), 0, &blitMesh); - auto blitShaderMaterial = materialManager.CreateMaterial(m_Vulkan, shader, NUM_VULKAN_BUFFERS, - [&](const std::string& texName) -> const MaterialManagerT::tPerFrameTexInfo { + auto blitShaderMaterial = materialManager.CreateMaterial(shader, NUM_VULKAN_BUFFERS, + [&](const std::string& texName) -> const MaterialManager::tPerFrameTexInfo { if (texName == "Diffuse") { return { diffuseRenderTargets.data() }; } @@ -56,14 +58,14 @@ bool PostProcessStandard::Init(const Shader& shader, MaterialManagerT& m assert(0); return {}; }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { + [this](const std::string& bufferName) -> PerFrameBufferVulkan { //BlitFragCB - return { m_FragUniform.vkBuffers.begin(), m_FragUniform.vkBuffers.end() }; + return { m_FragUniform.bufferHandles }; } ); m_Drawable = std::make_unique(m_Vulkan, std::move(blitShaderMaterial)); - if (!m_Drawable->Init(blitRenderPass, "RP_BLIT", std::move(blitMesh))) + if (!m_Drawable->Init( blitRenderPass, {}, "RP_BLIT", std::move( blitMesh ) )) { return false; } @@ -132,7 +134,7 @@ void PostProcessStandard::Save(Json& json) const json = Json(*this); } -const Drawable* const PostProcessStandard::GetDrawable() const +const Drawable* const PostProcessStandard::GetDrawable() const { return m_Drawable.get(); } diff --git a/framework/code/helper/postProcessStandard.hpp b/framework/code/helper/postProcessStandard.hpp index 5867034..193874f 100644 --- a/framework/code/helper/postProcessStandard.hpp +++ b/framework/code/helper/postProcessStandard.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -15,13 +15,15 @@ #include // Forward declarations -class Drawable; -class Shader; -template class MaterialManagerT; -template class TextureT; +class ShaderBase; +template class Drawable; +template class MaterialManager; +template class RenderPass; +template class Shader; +template class Texture; -class PostProcessStandard : public PostProcess +class PostProcessStandard : public PostProcess { PostProcessStandard& operator=(const PostProcessStandard&) = delete; PostProcessStandard(const PostProcessStandard&) = delete; @@ -29,7 +31,7 @@ class PostProcessStandard : public PostProcess PostProcessStandard(Vulkan& vulkan); ~PostProcessStandard(); - bool Init(const Shader& shader, MaterialManagerT& materialManager, VkRenderPass blitRenderPass, std::span> diffuseRenderTargets, TextureT* bloomRenderTarget, TextureT* uiRenderTarget); + bool Init(const Shader& shader, MaterialManager& materialManager, const RenderPass& blitRenderPass, std::span> diffuseRenderTargets, Texture* bloomRenderTarget, Texture* uiRenderTarget); bool UpdateUniforms(uint32_t WhichFrame, float ElapsedTime) override; void UpdateGui() override; @@ -55,7 +57,7 @@ class PostProcessStandard : public PostProcess int sRGB = 0; // 1 - apply srgb conversion in output blit shader, 0 passthrough color } m_FragUniformData; UniformArrayT m_FragUniform; - std::vector const*> m_DiffuseRenderTargets; + std::vector const*> m_DiffuseRenderTargets; size_t m_CurrentRenderTargetIdx = 0; private: diff --git a/framework/code/helper/zbufferReduce.cpp b/framework/code/helper/zbufferReduce.cpp new file mode 100644 index 0000000..f274313 --- /dev/null +++ b/framework/code/helper/zbufferReduce.cpp @@ -0,0 +1,234 @@ +//============================================================================= +// +// +// Copyright (c) 2024 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "zbufferReduce.hpp" +#include "vulkan/vulkan.hpp" +#include "vulkan/commandBuffer.hpp" +#include "texture/vulkan/texture.hpp" +#include "material/vulkan/computable.hpp" +#include "material/vulkan/materialManager.hpp" +#include + +//----------------------------------------------------------------------------- +bool ZBufferReduce::Init( Vulkan* pVulkan, const Texture& srcDepth, const MaterialManager& materialManager, const Shader* const pReduce4x4Shader, MemoryPool* pPool ) +//----------------------------------------------------------------------------- +{ + using ImageInfo = ImageInfo; + + int numMips = -1; + { + uint32_t x = std::max( srcDepth.Width, srcDepth.Height ); + while (x >>= 1) + { + ++numMips; + } + } + assert( numMips > 1 ); + // Ensure an even number of mips, reduction shader generates 2 lod at a time + if ((numMips & 1) != 0) + --numMips; + const CreateTexObjectInfo reducedZBufferInfo{ + srcDepth.Width / 2, + srcDepth.Height / 2, + 1, // depth + (uint32_t)numMips, + 1, // faces + TextureFormat::R32_SFLOAT, + TT_COMPUTE_TARGET, + TEXTURE_FLAGS::None, + "ReducedZ", + Msaa::Samples1, + SamplerFilter::Nearest, + SamplerAddressMode::Undefined, //default to picking from a default dependant on the texture type + false // UnNormalizedCoordinates + }; + auto reducedZBuffer = CreateTextureObject( *pVulkan, reducedZBufferInfo, pPool ); + + // override the starting image layout because we are binding the 'entire' texture as read input (and sub-image views as outputs and inputs). + VkCommandBuffer setupCmdBuffer = pVulkan->StartSetupCommandBuffer(); + pVulkan->SetImageLayout( reducedZBuffer.GetVkImage(), setupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, reducedZBuffer.FirstMip, reducedZBuffer.MipLevels, 0, 1 ); + pVulkan->FinishSetupCommandBuffer( setupCmdBuffer ); + reducedZBuffer.ImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + + std::map mipTextures = { + { "InputDepth", &srcDepth } + }; + constexpr int cMaxMips = 12; + numMips = std::min( cMaxMips, numMips ); + std::map mipImages = { + { "InputDepth", ImageInfo( srcDepth ) }, + { "0", ImageInfo( reducedZBuffer ) }, + { "1", ImageInfo( reducedZBuffer ) }, + { "2", ImageInfo( reducedZBuffer ) }, + { "3", ImageInfo( reducedZBuffer ) }, + { "4", ImageInfo( reducedZBuffer ) }, + { "5", ImageInfo( reducedZBuffer ) }, + { "6", ImageInfo( reducedZBuffer ) }, + { "7", ImageInfo( reducedZBuffer ) }, + { "8", ImageInfo( reducedZBuffer ) }, + { "9", ImageInfo( reducedZBuffer ) }, + { "10", ImageInfo( reducedZBuffer ) }, + { "11", ImageInfo( reducedZBuffer ) } + }; + // Create (and fill in) in the imageviews and 'textures' for each of the mip levels in m_ReducedZBuffer + assert( m_ReducedZBufferMipTexInfos.empty() ); + m_ReducedZBufferMipTexInfos.reserve( cMaxMips ); + + VkImageViewCreateInfo imageViewCreateInfo{VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO}; + imageViewCreateInfo.image = reducedZBuffer.GetVkImage(); + imageViewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; + imageViewCreateInfo.format = TextureFormatToVk( reducedZBuffer.Format ); + imageViewCreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + imageViewCreateInfo.subresourceRange.levelCount = 1; + imageViewCreateInfo.subresourceRange.layerCount = 1; + + VkSamplerCreateInfo samplerCreateInfo{VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO}; + samplerCreateInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + samplerCreateInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + + int mipLevel = 0; + for (; mipLevel < numMips; ++mipLevel) + { + VkImageView imageView = VK_NULL_HANDLE; + VkSampler vkSampler = VK_NULL_HANDLE; + + // Create an imageview and sampler to point to this mip. Assigned/stored in a Texture per mip (all pointing to the same VkImage). + imageViewCreateInfo.subresourceRange.baseMipLevel = mipLevel; + samplerCreateInfo.minLod = float( mipLevel ); + samplerCreateInfo.maxLod = float( mipLevel ); + vkCreateImageView( pVulkan->m_VulkanDevice, &imageViewCreateInfo, nullptr, &imageView ); + vkCreateSampler( pVulkan->m_VulkanDevice, &samplerCreateInfo, nullptr, &vkSampler ); + SamplerVulkan sampler{pVulkan->m_VulkanDevice, vkSampler}; + + ImageViewVulkan imageViewVulkan{imageView,imageViewCreateInfo.viewType}; + m_ReducedZBufferMipTexInfos.emplace_back( reducedZBufferInfo.uiWidth, reducedZBufferInfo.uiHeight, reducedZBufferInfo.uiDepth, 1, mipLevel, 1, 0, reducedZBufferInfo.Format, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VkClearValue{}, reducedZBuffer.GetVkImage(), (VkDeviceMemory)VK_NULL_HANDLE, std::move(sampler), std::move(imageViewVulkan)); + + const auto insertedTexture = mipTextures.insert( {std::to_string( mipLevel ), &m_ReducedZBufferMipTexInfos.back()} ); // map name to Texture* for this mip. + const auto insertedImage = mipImages.insert_or_assign( insertedTexture.first->first, *insertedTexture.first->second ); // map name to an ImageInfo for this mip. + insertedImage.first->second.imageLayout = VK_IMAGE_LAYOUT_GENERAL; + } + for (; mipLevel < cMaxMips; ++mipLevel) + { + const auto insertedTexture = mipTextures.insert( {std::to_string( mipLevel ), &m_ReducedZBufferMipTexInfos.back()} ); // map name to Texture* for the last valid mip. + const auto insertedImage = mipImages.insert_or_assign( insertedTexture.first->first, *insertedTexture.first->second ); // map name to an ImageInfo for this mip. + insertedImage.first->second.imageLayout = VK_IMAGE_LAYOUT_GENERAL; + } + + assert( pReduce4x4Shader ); + auto material = materialManager.CreateMaterial( *pReduce4x4Shader, 1, + [&mipTextures, this]( const std::string& textureName ) -> const MaterialManagerBase::tPerFrameTexInfo { + return {mipTextures.find( textureName )->second}; + }, + nullptr, + [&mipImages]( const std::string& imageName ) -> const ImageInfo { + return mipImages.find( imageName )->second; + } + ); + + auto pComputable = std::make_unique>( *pVulkan, std::move( material ) ); + if (!pComputable->Init()) + return false; + for (uint32_t passIdx = 0; passIdx < (uint32_t)pComputable->GetPasses().size(); ++passIdx) + pComputable->SetDispatchThreadCount( passIdx, {srcDepth.Width, srcDepth.Height, 1} ); + m_ReduceComputable = std::move( pComputable ); + m_NumMips = numMips; + m_ReducedZBuffer = std::make_unique>( std::move( reducedZBuffer ) ); + + return true; +} + +//----------------------------------------------------------------------------- +void ZBufferReduce::Release( Vulkan* pVulkan ) +//----------------------------------------------------------------------------- +{ + for (auto& texInfo : m_ReducedZBufferMipTexInfos) + { + texInfo.Release( pVulkan ); + } + m_ReducedZBufferMipTexInfos.clear(); + if (m_ReducedZBuffer) + m_ReducedZBuffer->Release( pVulkan ); + m_ReducedZBuffer.reset(); + m_ReduceComputable.reset(); +} + +//----------------------------------------------------------------------------- +void ZBufferReduce::UpdateCommandBuffer( CommandList& vkCommandBuffer ) +//----------------------------------------------------------------------------- +{ + std::vector< VkImageMemoryBarrier> reduceInputImageMemoryBarrier; + reduceInputImageMemoryBarrier.push_back( {VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + nullptr, + VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask + VK_ACCESS_SHADER_READ_BIT, //dstAccessMask + VK_IMAGE_LAYOUT_UNDEFINED, //oldLayout; + VK_IMAGE_LAYOUT_GENERAL, //newLayout; + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + m_ReducedZBuffer->GetVkImage(), //image; + { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; + m_ReducedZBuffer->FirstMip, //baseMipLevel; + m_ReducedZBuffer->MipLevels, //mipLevelCount; + 0, //baseLayer; + 1, //layerCount; + }//subresourceRange; + } ); + + // Barrier on input image, with correct layouts set. + vkCmdPipelineBarrier( vkCommandBuffer, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // srcMask, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // dstMask, + 0, + 0, nullptr, + 0, nullptr, + (uint32_t)reduceInputImageMemoryBarrier.size(), + reduceInputImageMemoryBarrier.empty() ? nullptr : reduceInputImageMemoryBarrier.data() ); + + int mip = 0; + for (const auto& pass : m_ReduceComputable->GetPasses()) + { + m_ReduceComputable->DispatchPass( vkCommandBuffer, pass, 0 ); + mip += 2; + if (mip >= m_NumMips) // only using a subset of the computable passes + break; + } + + const auto& computableOutputBufferBarriers = m_ReduceComputable->GetBufferOutputMemoryBarriers(); + auto computableOutputImageBarriers = m_ReduceComputable->GetImageOutputMemoryBarriers(); // take a copy! + // transition the last mip too! + computableOutputImageBarriers.emplace_back( VkImageMemoryBarrier{VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + nullptr, + VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask + VK_ACCESS_SHADER_READ_BIT, //dstAccessMask + VK_IMAGE_LAYOUT_GENERAL, //oldLayout; + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, //newLayout; + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + m_ReducedZBuffer->GetVkImage(), //image; + { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; + uint32_t( mip ) - 1, //baseMipLevel; + 1, //mipLevelCount; + 0, //baseLayer; + 1, //layerCount; + }//subresourceRange; + } ); + + // Barrier on output memory, with correct layouts set. + using tBufferBarrier = std::remove_reference::type::value_type::tBarrier; + using tImageBarrier = std::remove_reference::type::value_type::tBarrier; + vkCmdPipelineBarrier( vkCommandBuffer, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // srcMask, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // dstMask, + 0, + 0, nullptr, + (uint32_t)computableOutputBufferBarriers.size(), + computableOutputBufferBarriers.empty() ? nullptr : (tBufferBarrier*)computableOutputBufferBarriers.data(), + (uint32_t)computableOutputImageBarriers.size(), + (tImageBarrier*)computableOutputImageBarriers.data() ); +} + diff --git a/framework/code/helper/zbufferReduce.hpp b/framework/code/helper/zbufferReduce.hpp new file mode 100644 index 0000000..aad3f6a --- /dev/null +++ b/framework/code/helper/zbufferReduce.hpp @@ -0,0 +1,40 @@ +//============================================================================= +// +// +// Copyright (c) 2024 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#pragma once + +#include +#include + +// Forward declarations +class Vulkan; +template class CommandList; +template class Computable; +template class MaterialManager; +template class MemoryPool; +template class Shader; +template class Texture; + +/// @brief Class to implement a fast zbuffer 'reduction' (pyramid/mipmap of depth images, each half size of previous level) +class ZBufferReduce +{ + ZBufferReduce( const ZBufferReduce& ) = delete; + ZBufferReduce& operator=( const ZBufferReduce& ) = delete; +public: + ZBufferReduce() = default; + bool Init( Vulkan* pVulkan, const Texture& srcDepth, const MaterialManager& materialManager, const Shader* const pReduce4x4Shader, MemoryPool* pPool = nullptr); + void Release( Vulkan* pVulkan ); + void UpdateCommandBuffer( CommandList& ); + auto& GetHierarchicalZTexture() const { return *m_ReducedZBuffer; } + +protected: + std::unique_ptr> m_ReducedZBuffer; ///< half sized 'depth' buffer (half in each dimension of original ZBuffer size) with mips. Populated by the reduce. + std::vector> m_ReducedZBufferMipTexInfos;///< Texture pointing to each of the mip levels in m_ReducedZBuffer. All points to Image owned by m_ReducedZBuffer + std::unique_ptr> m_ReduceComputable; ///< Computable that does the reduce (some passes may not be needed depending on mip count needed) + int m_NumMips = 0; +}; diff --git a/framework/code/light/light.cpp b/framework/code/light/light.cpp index b8149bf..6832b9c 100644 --- a/framework/code/light/light.cpp +++ b/framework/code/light/light.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/light.hpp b/framework/code/light/light.hpp index ad037f0..5947b44 100644 --- a/framework/code/light/light.hpp +++ b/framework/code/light/light.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightData.hpp b/framework/code/light/lightData.hpp index 6131e97..7fbd201 100644 --- a/framework/code/light/lightData.hpp +++ b/framework/code/light/lightData.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightGltfLoader.cpp b/framework/code/light/lightGltfLoader.cpp index 46a5a45..7ffd16a 100644 --- a/framework/code/light/lightGltfLoader.cpp +++ b/framework/code/light/lightGltfLoader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightGltfLoader.hpp b/framework/code/light/lightGltfLoader.hpp index b468ccc..c268c1a 100644 --- a/framework/code/light/lightGltfLoader.hpp +++ b/framework/code/light/lightGltfLoader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightList.cpp b/framework/code/light/lightList.cpp index 92deccf..0fa7005 100644 --- a/framework/code/light/lightList.cpp +++ b/framework/code/light/lightList.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightList.hpp b/framework/code/light/lightList.hpp index 49b0871..091a7e3 100644 --- a/framework/code/light/lightList.hpp +++ b/framework/code/light/lightList.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightListGui.cpp b/framework/code/light/lightListGui.cpp index 17dabd8..a6e9534 100644 --- a/framework/code/light/lightListGui.cpp +++ b/framework/code/light/lightListGui.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightListGui.hpp b/framework/code/light/lightListGui.hpp index 8e8862c..54275ba 100644 --- a/framework/code/light/lightListGui.hpp +++ b/framework/code/light/lightListGui.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightLoader.cpp b/framework/code/light/lightLoader.cpp index 44a4fa1..a11c532 100644 --- a/framework/code/light/lightLoader.cpp +++ b/framework/code/light/lightLoader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/light/lightLoader.hpp b/framework/code/light/lightLoader.hpp index aaecf70..abcbb50 100644 --- a/framework/code/light/lightLoader.hpp +++ b/framework/code/light/lightLoader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/main/android/androidMain.cpp b/framework/code/main/android/androidMain.cpp index 788895f..3c31a7c 100644 --- a/framework/code/main/android/androidMain.cpp +++ b/framework/code/main/android/androidMain.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -77,11 +77,23 @@ static void engine_handle_cmd(struct android_app* app, int32_t cmd) // InitializeVulkan assert(engine->application); - assert(engine->application->GetGraphicsApi()); + assert(engine->application->GetGraphicsApiBase()); assert(engine->app->window); if (engine->application) - engine->application->SetWindowSize(ANativeWindow_getWidth(engine->app->window), ANativeWindow_getHeight(engine->app->window)); + { + // Tell the application the Window Size (likely the screen resolution, but may not be!) + engine->application->SetWindowSize( ANativeWindow_getWidth( engine->app->window ), ANativeWindow_getHeight( engine->app->window ) ); + + // If the surface sizes havent been set in app_config then set them to the wind size (so surface is at native device resolution) + const auto applicationWindowSize = engine->application->GetWindowSize(); + const auto* var = GetVariable( "gSurfaceWidth" ); + if ((nullptr == var || 0 == (var->GetFlags() & kVariableModified)) && applicationWindowSize.first > 0) + gSurfaceWidth = applicationWindowSize.first; + var = GetVariable( "gSurfaceHeight" ); + if ((nullptr == var || 0 == (var->GetFlags() & kVariableModified)) && applicationWindowSize.second > 0) + gSurfaceHeight = applicationWindowSize.second; + } if (engine->initialized) { diff --git a/framework/code/main/applicationEntrypoint.hpp b/framework/code/main/applicationEntrypoint.hpp index 040e8c9..a7d7d2c 100644 --- a/framework/code/main/applicationEntrypoint.hpp +++ b/framework/code/main/applicationEntrypoint.hpp @@ -1,10 +1,9 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #pragma once #include "frameworkApplicationBase.hpp" diff --git a/framework/code/main/applicationHelperBase.cpp b/framework/code/main/applicationHelperBase.cpp index 4f3e838..c56d97c 100644 --- a/framework/code/main/applicationHelperBase.cpp +++ b/framework/code/main/applicationHelperBase.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,11 +10,11 @@ #include "memory/vulkan/vertexBufferObject.hpp" #include "camera/cameraController.hpp" #include "camera/cameraControllerTouch.hpp" -#include "material/computable.hpp" -#include "material/drawable.hpp" +#include "material/vulkan/computable.hpp" +#include "material/vulkan/drawable.hpp" +#include "material/vulkan/material.hpp" +#include "material/vulkan/materialManager.hpp" #include "material/vertexFormat.hpp" -#include "material/materialManager.hpp" -#include "material/vulkan/specializationConstantsLayout.hpp" #include "material/shaderManagerT.hpp" #include "mesh/meshHelper.hpp" #include "texture/vulkan/texture.hpp" @@ -29,12 +29,15 @@ #include "vulkanRT/traceable.hpp" #endif // VK_KHR_ray_tracing_pipeline #include "applicationHelperBase.hpp" // last header to be included +using namespace std::string_literals; extern "C" { VAR(float, gCameraRotateSpeed, 0.25f, kVariableNonpersistent); VAR(float, gCameraMoveSpeed, 4.0f, kVariableNonpersistent); }; //extern "C" +static const uint32_t cClickTimeMs = 400; //max time we count as a single 'click' (finger/button down and up) +static const uint32_t cClickReleaseTimeMs = 400; //max time we count as a 'release' in the middle of a double-click (finger/button up and down) //----------------------------------------------------------------------------- ApplicationHelperBase::ApplicationHelperBase() noexcept : FrameworkApplicationBase() @@ -66,11 +69,18 @@ bool ApplicationHelperBase::Initialize(uintptr_t hWnd, uintptr_t hInstance) return false; } - CRenderTargetArray backbuffer; - if (!m_BackbufferRenderTarget.InitializeFromSwapchain(pVulkan)) - return false; + // Backbuffer/swapchain render target and render context + for(uint32_t frameIdx=0; frameIdxGetSwapchainBufferCount(); frameIdx++) + { + const TextureFormat surfaceFormat = pVulkan->m_SurfaceFormat; + const TextureFormat depthFormat = pVulkan->m_SwapchainDepth.format; + + if (!m_BackbufferRenderTarget[frameIdx].Initialize( pVulkan, pVulkan->m_SurfaceWidth, pVulkan->m_SurfaceHeight, {&surfaceFormat, 1}, depthFormat, Msaa::Samples1, "Swapchain" )) + return false; + m_BackbufferRenderContext[frameIdx] = {{}/*renderPass*/, {}/*pipeline*/, pVulkan->m_SwapchainBuffers[frameIdx].framebuffer, "Swapchain"s}; + } - auto textureManagerVulkan = std::make_unique(*pVulkan); + auto textureManagerVulkan = std::make_unique(*pVulkan, *m_AssetManager); if (!textureManagerVulkan->Initialize()) return false; m_TextureManager = std::move(textureManagerVulkan); @@ -85,9 +95,42 @@ bool ApplicationHelperBase::Initialize(uintptr_t hWnd, uintptr_t hInstance) if (m_SamplerMirroredRepeat.IsEmpty()) return false; - m_ShaderManager = std::make_unique>(*pVulkan); + m_ShaderManager = std::make_unique(*pVulkan); + + m_MaterialManager = std::make_unique(*pVulkan); + + return true; +} + +//----------------------------------------------------------------------------- +bool ApplicationHelperBase::ReInitialize( uintptr_t hWnd, uintptr_t hInstance ) +//----------------------------------------------------------------------------- +{ + if (!FrameworkApplicationBase::ReInitialize( hWnd, hInstance )) + return false; + + auto* const pVulkan = GetVulkan(); + + // Attempt to re-init vulkan surface etc with the new window + if (!pVulkan->ReInit( hWnd )) + return false; + + // Recreate the vulkan swapchain with the new vulkan surface. + if (!pVulkan->RecreateSwapChain()) + return false; + + // Remake the m_BackbufferRenderTarget helper object. + for (auto& renderTarget : m_BackbufferRenderTarget) + renderTarget.Release(); + for (uint32_t frameIdx = 0; frameIdx < pVulkan->GetSwapchainBufferCount(); frameIdx++) + { + const TextureFormat surfaceFormat = pVulkan->m_SurfaceFormat; + const TextureFormat depthFormat = pVulkan->m_SwapchainDepth.format; - m_MaterialManager = std::make_unique>(); + if (!m_BackbufferRenderTarget[frameIdx].Initialize( pVulkan, pVulkan->m_SurfaceWidth, pVulkan->m_SurfaceHeight, {&surfaceFormat, 1}, depthFormat, Msaa::Samples1, "Swapchain" )) + return false; + m_BackbufferRenderContext[frameIdx] = {{}/*renderPass*/, {}/*pipeline*/, pVulkan->m_SwapchainBuffers[frameIdx].framebuffer, "Swapchain"s}; + } return true; } @@ -98,18 +141,16 @@ void ApplicationHelperBase::Destroy() { auto* const pVulkan = GetVulkan(); - vkDestroySampler(pVulkan->m_VulkanDevice, m_SamplerMirroredRepeat.GetVkSampler(), nullptr); - //m_SamplerMirroredRepeat = VK_NULL_HANDLE; - vkDestroySampler(pVulkan->m_VulkanDevice, m_SamplerEdgeClamp.GetVkSampler(), nullptr); - //m_SamplerEdgeClamp = VK_NULL_HANDLE; - vkDestroySampler(pVulkan->m_VulkanDevice, m_SamplerRepeat.GetVkSampler(), nullptr); - //m_SamplerRepeat = VK_NULL_HANDLE; + ReleaseSampler(*pVulkan, &m_SamplerMirroredRepeat); + ReleaseSampler(*pVulkan, &m_SamplerEdgeClamp); + ReleaseSampler(*pVulkan, &m_SamplerRepeat); m_TextureManager.reset(); m_MaterialManager.reset(); m_ShaderManager.reset(); + for (auto& renderTarget : m_BackbufferRenderTarget) + renderTarget.Release(); - //m_BackbufferRenderTarget.HardReset(); // DO NOT destroy as this instance does not own its framebuffer (points to the vulkan backbuffers) FrameworkApplicationBase::Destroy(); } @@ -130,10 +171,19 @@ bool ApplicationHelperBase::SetWindowSize(uint32_t width, uint32_t height) } //----------------------------------------------------------------------------- -int ApplicationHelperBase::PreInitializeSelectSurfaceFormat(std::span) +int ApplicationHelperBase::PreInitializeSelectSurfaceFormat(std::span formats) //----------------------------------------------------------------------------- { - return -1; + // We want to select a SRGB output format (if one exists) unless running on HLM (does not support srgb output) + TextureFormat idealFormat = gRunOnHLM ? TextureFormat::B8G8R8A8_UNORM : TextureFormat::B8G8R8A8_SRGB; + int index = 0; + for (const auto& format : formats) + { + if (format.format == idealFormat) + return index; + ++index; + } + return -1; // let the driver decide } //----------------------------------------------------------------------------- @@ -168,9 +218,34 @@ bool ApplicationHelperBase::InitCamera() } //----------------------------------------------------------------------------- -void ApplicationHelperBase::AddDrawableToCmdBuffers(const Drawable& drawable, Wrap_VkCommandBuffer* cmdBuffers, uint32_t numRenderPasses, uint32_t numVulkanBuffers, uint32_t startDescriptorSetIdx) const +void ApplicationHelperBase::AddDrawableToCmdBuffers(const Drawable& drawable, CommandBufferT* cmdBuffers, uint32_t numRenderPasses, uint32_t numFrameBuffers, uint32_t startDescriptorSetIdx) const //----------------------------------------------------------------------------- { + const auto& drawablePasses = drawable.GetDrawablePasses(); + for (const auto& drawablePass : drawablePasses) + { + const auto passIdx = drawablePass.mPassIdx; + assert(passIdx < numRenderPasses); + + for (uint32_t bufferIdx = 0; bufferIdx < numFrameBuffers; ++bufferIdx) + { + CommandBufferT& buffer = cmdBuffers[bufferIdx * numRenderPasses + passIdx]; + assert(buffer.m_VkCommandBuffer != VK_NULL_HANDLE); + + // Add commands to bind the pipeline, buffers etc and issue the draw. + drawable.DrawPass(buffer, drawablePass, drawablePass.mDescriptorSet.empty() ? 0 : (startDescriptorSetIdx + bufferIdx) % drawablePass.mDescriptorSet.size() ); + + ++buffer.m_NumDrawCalls; + buffer.m_NumTriangles += drawablePass.mNumVertices / 3; + } + } +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::AddDrawableToCmdBuffers(const Drawable& drawable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t whichVulkanBuffer, uint32_t startDescriptorSetIdx, float dummy) const +//----------------------------------------------------------------------------- +{ + // Version of AddDrawableToCmdBuffers that doesn't add to every vulkan buffer Vulkan* pVulkan = GetVulkan(); const auto& drawablePasses = drawable.GetDrawablePasses(); @@ -179,23 +254,22 @@ void ApplicationHelperBase::AddDrawableToCmdBuffers(const Drawable& drawable, Wr const auto passIdx = drawablePass.mPassIdx; assert(passIdx < numRenderPasses); - for (uint32_t bufferIdx = 0; bufferIdx < numVulkanBuffers; ++bufferIdx) + uint32_t bufferIdx = whichVulkanBuffer; { - Wrap_VkCommandBuffer& buffer = cmdBuffers[bufferIdx * numRenderPasses + passIdx]; - VkCommandBuffer cmdBuffer = buffer.m_VkCommandBuffer; - assert(cmdBuffer != VK_NULL_HANDLE); + auto& cmdBuffer = cmdBuffers[bufferIdx * numRenderPasses + passIdx]; + assert(cmdBuffer.m_VkCommandBuffer != VK_NULL_HANDLE); // Add commands to bind the pipeline, buffers etc and issue the draw. drawable.DrawPass(cmdBuffer, drawablePass, drawablePass.mDescriptorSet.empty() ? 0 : (startDescriptorSetIdx + bufferIdx) % drawablePass.mDescriptorSet.size() ); - ++buffer.m_NumDrawCalls; - buffer.m_NumTriangles += drawablePass.mNumVertices / 3; + ++cmdBuffer.m_NumDrawCalls; + cmdBuffer.m_NumTriangles += drawablePass.mNumVertices / 3; } } } //----------------------------------------------------------------------------- -void ApplicationHelperBase::AddComputableToCmdBuffer(const Computable& computable, Wrap_VkCommandBuffer* cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool) const +void ApplicationHelperBase::AddComputableToCmdBuffer( const Computable & computable, CommandList * cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx, TimerPoolBase * timerPool ) const //----------------------------------------------------------------------------- { // LOGI("AddComputableToCmdBuffer() Entered..."); @@ -204,46 +278,49 @@ void ApplicationHelperBase::AddComputableToCmdBuffer(const Computable& computabl for(uint32_t whichBuffer = 0; whichBuffer < numCmdBuffers; ++whichBuffer) { - for (uint32_t passIdx =0; const auto& computablePass : computable.GetPasses()) - { - const int timerIdx = timerPool ? cmdBuffers->StartGpuTimer( computable.GetPassName( passIdx )) : -1; - computable.DispatchPass(cmdBuffers->m_VkCommandBuffer, computablePass, (whichBuffer + startDescriptorSetIdx) % (uint32_t)computablePass.GetVkDescriptorSets().size()); - if (timerIdx>=0) - cmdBuffers->StopGpuTimer( timerIdx ); - ++passIdx; - } + computable.Dispatch(*cmdBuffers, whichBuffer + startDescriptorSetIdx, true/*timers*/); ++cmdBuffers; } } //----------------------------------------------------------------------------- -void ApplicationHelperBase::AddComputableOutputBarrierToCmdBuffer(const Computable& computable, Wrap_VkCommandBuffer* cmdBuffers, uint32_t numCmdBuffers) const +void ApplicationHelperBase::AddComputableToCmdBuffer(const ComputableBase& computable, CommandList* cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool) const //----------------------------------------------------------------------------- { - const auto& computableOutputBufferBarriers = computable.GetBufferOutputMemoryBarriers(); - const auto& computableOutputImageBarriers = computable.GetImageOutputMemoryBarriers(); + assert( cmdBuffers != nullptr ); - if (computableOutputBufferBarriers.empty() && computableOutputImageBarriers.empty()) - return; + for (uint32_t whichBuffer = 0; whichBuffer < numCmdBuffers; ++whichBuffer) + { + computable.Dispatch( *cmdBuffers, whichBuffer + startDescriptorSetIdx, true/*timers*/ ); + ++cmdBuffers; + } +} - // Barrier on memory, with correct layouts set. - for (uint32_t WhichBuffer = 0; WhichBuffer < numCmdBuffers; ++WhichBuffer) +//----------------------------------------------------------------------------- +void ApplicationHelperBase::AddComputableOutputBarrierToCmdBuffer( const Computable& computable, CommandList* cmdBuffers, uint32_t numCmdBuffers ) const +//----------------------------------------------------------------------------- +{ + for (uint32_t whichBuffer = 0; whichBuffer < numCmdBuffers; ++whichBuffer) { - vkCmdPipelineBarrier(cmdBuffers[WhichBuffer].m_VkCommandBuffer, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // srcMask, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // dstMask, - 0, - 0, nullptr, - (uint32_t)computableOutputBufferBarriers.size(), - computableOutputBufferBarriers.empty() ? nullptr : computableOutputBufferBarriers.data(), - (uint32_t)computableOutputImageBarriers.size(), - computableOutputImageBarriers.empty() ? nullptr : computableOutputImageBarriers.data()); + computable.AddOutputBarriersToCmdList( *cmdBuffers ); + ++cmdBuffers; + } +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::AddComputableOutputBarrierToCmdBuffer(const ComputableBase& computable, CommandList* cmdBuffers, uint32_t numCmdBuffers) const +//----------------------------------------------------------------------------- +{ + for (uint32_t whichBuffer = 0; whichBuffer < numCmdBuffers; ++whichBuffer) + { + computable.AddOutputBarriersToCmdList(*cmdBuffers); + ++cmdBuffers; } } #if VK_KHR_ray_tracing_pipeline //----------------------------------------------------------------------------- -void ApplicationHelperBase::AddTraceableToCmdBuffer(const Traceable& traceable, Wrap_VkCommandBuffer* cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool) const +void ApplicationHelperBase::AddTraceableToCmdBuffer(const Traceable& traceable, CommandList* cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool) const //----------------------------------------------------------------------------- { // LOGI("AddTraceableToCmdBuffer() Entered..."); @@ -255,7 +332,7 @@ void ApplicationHelperBase::AddTraceableToCmdBuffer(const Traceable& traceable, for (uint32_t passIdx = 0; const auto& traceablePass : traceable.GetPasses()) { const int timerIdx = timerPool ? cmdBuffers->StartGpuTimer( traceable.GetPassName( passIdx ) ) : -1; - traceable.DispatchPass(cmdBuffers->m_VkCommandBuffer, traceablePass, (whichBuffer + startDescriptorSetIdx) % (uint32_t)traceablePass.GetVkDescriptorSets().size()); + traceable.DispatchPass(*cmdBuffers, traceablePass, (whichBuffer + startDescriptorSetIdx) % (uint32_t)traceablePass.GetVkDescriptorSets().size()); if (timerIdx >= 0) cmdBuffers->StopGpuTimer( timerIdx ); ++passIdx; @@ -270,10 +347,8 @@ bool ApplicationHelperBase::PresentQueue( const std::span Wai //----------------------------------------------------------------------------- { auto& vulkan = *GetVulkan(); - if (!vulkan.PresentQueue( WaitSemaphores, SwapchainPresentIndx )) return false; - #if OS_WINDOWS { static int gHLMFrameNumber = -1; @@ -282,111 +357,109 @@ bool ApplicationHelperBase::PresentQueue( const std::span Wai if (gHLMFrameNumber >= gHLMDumpFrame && gHLMFrameNumber < gHLMDumpFrame + gHLMDumpFrameCount && gHLMDumpFile!=nullptr && *gHLMDumpFile!='\0') { bool dumpResult = DumpImagePixelData( - vulkan, - vulkan.GetSwapchainImage(SwapchainPresentIndx), - vulkan.GetSurfaceFormat(), - vulkan.GetSurfaceWidth(), - vulkan.GetSurfaceHeight(), - true, - 0, - 0, - []( uint32_t width, uint32_t height, TextureFormat format, uint32_t spanBytes, const void* data ) - { - auto* dataBytes = static_cast(data); + vulkan, + vulkan.GetSwapchainImage( SwapchainPresentIndx ), + vulkan.GetSurfaceFormat(), + vulkan.GetSurfaceWidth(), + vulkan.GetSurfaceHeight(), + true, + 0, + 0, + []( uint32_t width, uint32_t height, TextureFormat format, uint32_t spanBytes, const void* data ) + { + auto* dataBytes = static_cast(data); - std::string fullFileName( gHLMDumpFile ); - const std::string cBmp( ".bmp" ); + std::string fullFileName( gHLMDumpFile ); + const std::string cBmp( ".bmp" ); - size_t extPos = fullFileName.rfind( '.' ); - if (extPos == -1) - { - extPos = fullFileName.size(); - fullFileName.append( cBmp ); - } - if (gHLMDumpFrameCount > 1) - { - // Number the frames (if asking for more than one frame to be saved) - const std::string frameIndex( std::to_string( gHLMFrameNumber ) ); - fullFileName.insert( extPos, frameIndex ); - extPos += frameIndex.size(); - } - if (extPos != -1 && !std::equal( std::begin( fullFileName ) + extPos, std::end( fullFileName ), std::begin( cBmp ), std::end( cBmp ), []( auto a, auto b )->bool { return std::tolower( a ) == std::tolower( b ); } )) - { - // save a non BMP image - SaveTextureData( fullFileName.c_str(), format, width, height, data ); - } - else - { - #pragma pack(push,2) - struct bmp_file_header { - uint16_t bfType; - uint32_t bfSize; - uint16_t bfReserved1; - uint16_t bfReserved2; - uint32_t bfOffBits; - }; - #pragma pack(pop) - struct bmp_v4_info_header { - uint32_t biSize; - int32_t biWidth; - int32_t biHeight; - uint16_t biPlanes; - uint16_t biBitCount; - uint32_t biCompression; - uint32_t biSizeImage; - int32_t biXPelsPerMeter; - int32_t biYPelsPerMeter; - uint32_t biClrUsed; - uint32_t biClrImportant; - uint32_t biRedMask; - uint32_t biGreenMask; - uint32_t biBlueMask; - uint32_t biAlphaMask; - uint32_t biCSType; - uint32_t biEndPoints[9]; - uint32_t biGammaRed; - uint32_t biGammaGreen; - uint32_t biGammaBlue; - }; - - FILE* stream; - struct bmp_file_header bmf; - struct bmp_v4_info_header bmi; - - memset( &bmf, 0, sizeof( bmf ) ); - bmf.bfType = 0x4d42; - bmf.bfSize = sizeof( bmf ) + sizeof( bmi ) + (height * width * 4); - bmf.bfOffBits = sizeof( bmf ) + sizeof( bmi ); - - memset( &bmi, 0, sizeof( bmi ) ); - bmi.biSize = sizeof( bmi ); - bmi.biWidth = width; - bmi.biHeight = /*-(int32_t)*/height; - bmi.biPlanes = 1; - bmi.biBitCount = 32; - bmi.biCompression = BI_BITFIELDS; - bmi.biSizeImage = 0; - bmi.biRedMask = 0xff; - bmi.biGreenMask = 0xff00; - bmi.biBlueMask = 0xff0000; - bmi.biAlphaMask = 0xff00000; - - stream = fopen( fullFileName.c_str(), "wb" ); - assert( stream ); - - fwrite( &bmf, sizeof( bmf ), 1, stream ); - fwrite( &bmi, sizeof( bmi ), 1, stream ); - - for (int y = height - 1; y >= 0; y--) { - fwrite( dataBytes + spanBytes * y, width * 4, 1, stream ); - } - fclose( stream ); + size_t extPos = fullFileName.rfind( '.' ); + if (extPos == -1) + { + extPos = fullFileName.size(); + fullFileName.append( cBmp ); + } + if (gHLMDumpFrameCount > 1) + { + // Number the frames (if asking for more than one frame to be saved) + const std::string frameIndex( std::to_string( gHLMFrameNumber ) ); + fullFileName.insert( extPos, frameIndex ); + extPos += frameIndex.size(); + } + if (extPos != -1 && !std::equal( std::begin( fullFileName ) + extPos, std::end( fullFileName ), std::begin( cBmp ), std::end( cBmp ), []( auto a, auto b )->bool { return std::tolower( a ) == std::tolower( b ); } )) + { + // save a non BMP image + SaveTextureData( fullFileName.c_str(), format, width, height, data ); + } + else + { +#pragma pack(push,2) + struct bmp_file_header { + uint16_t bfType; + uint32_t bfSize; + uint16_t bfReserved1; + uint16_t bfReserved2; + uint32_t bfOffBits; + }; +#pragma pack(pop) + struct bmp_v4_info_header { + uint32_t biSize; + int32_t biWidth; + int32_t biHeight; + uint16_t biPlanes; + uint16_t biBitCount; + uint32_t biCompression; + uint32_t biSizeImage; + int32_t biXPelsPerMeter; + int32_t biYPelsPerMeter; + uint32_t biClrUsed; + uint32_t biClrImportant; + uint32_t biRedMask; + uint32_t biGreenMask; + uint32_t biBlueMask; + uint32_t biAlphaMask; + uint32_t biCSType; + uint32_t biEndPoints[9]; + uint32_t biGammaRed; + uint32_t biGammaGreen; + uint32_t biGammaBlue; + }; + + FILE* stream; + struct bmp_file_header bmf; + struct bmp_v4_info_header bmi; + + memset( &bmf, 0, sizeof( bmf ) ); + bmf.bfType = 0x4d42; + bmf.bfSize = sizeof( bmf ) + sizeof( bmi ) + (height * width * 4); + bmf.bfOffBits = sizeof( bmf ) + sizeof( bmi ); + + memset( &bmi, 0, sizeof( bmi ) ); + bmi.biSize = sizeof( bmi ); + bmi.biWidth = width; + bmi.biHeight = /*-(int32_t)*/height; + bmi.biPlanes = 1; + bmi.biBitCount = 32; + bmi.biCompression = BI_BITFIELDS; + bmi.biSizeImage = 0; + bmi.biRedMask = 0xff; + bmi.biGreenMask = 0xff00; + bmi.biBlueMask = 0xff0000; + bmi.biAlphaMask = 0xff00000; + + stream = fopen( fullFileName.c_str(), "wb" ); + assert( stream ); + + fwrite( &bmf, sizeof( bmf ), 1, stream ); + fwrite( &bmi, sizeof( bmi ), 1, stream ); + + for (int y = height - 1; y >= 0; y--) { + fwrite( dataBytes + spanBytes * y, width * 4, 1, stream ); } - } ); - if (!dumpResult) - { - return false; - } + fclose( stream ); + } + + + } ); } } #endif // OS_WINDOWS @@ -409,10 +482,12 @@ bool ApplicationHelperBase::PresentQueue(const std::span Wa return PresentQueue( std::span(semaphores).subspan(0, numSemaphores), SwapchainPresentIndx); } +//----------------------------------------------------------------------------- bool ApplicationHelperBase::PresentQueue(const SemaphoreWait& WaitSemaphore, uint32_t SwapchainPresentIndx) +//----------------------------------------------------------------------------- { - auto WaitSemaphores = std::span(&WaitSemaphore, 1); - return PresentQueue(WaitSemaphores, SwapchainPresentIndx); + auto waitSemaphores = std::span(&WaitSemaphore, 1); + return PresentQueue(waitSemaphores, SwapchainPresentIndx); } //----------------------------------------------------------------------------- @@ -442,7 +517,7 @@ void ApplicationHelperBase::TouchDownEvent(int iPointerID, float xPos, float yPo //----------------------------------------------------------------------------- { // Make sure we are big enough for this ID - m_TouchStates.resize(std::max(m_TouchStates.size(), (size_t)(iPointerID + 1)), {}); + m_TouchStates.resize(std::max(m_TouchStates.size(), size_t(iPointerID + 1))); m_TouchStates[iPointerID].m_isDown = true; m_TouchStates[iPointerID].m_xPos = xPos; @@ -450,6 +525,16 @@ void ApplicationHelperBase::TouchDownEvent(int iPointerID, float xPos, float yPo m_TouchStates[iPointerID].m_xDownPos = xPos; m_TouchStates[iPointerID].m_yDownPos = yPos; + const uint32_t timeNowMS = uint32_t( OS_GetTimeUS() / uint64_t( 1000 ) ); + const uint32_t releasedTime = timeNowMS - m_TouchStates[iPointerID].m_lastDownChangeTimeMs; + m_TouchStates[iPointerID].m_lastDownChangeTimeMs = timeNowMS; + + if (releasedTime < cClickReleaseTimeMs && m_TouchStates[iPointerID].m_clicks > 0) + // We count a quick relase IF we already did a quick click (we are 2/3 of the way through a double click!) + m_TouchStates[iPointerID].m_clicks++; + else + m_TouchStates[iPointerID].m_clicks = 0; + if (m_CameraController) m_CameraController->TouchDownEvent(iPointerID, xPos, yPos); } @@ -459,11 +544,7 @@ void ApplicationHelperBase::TouchMoveEvent(int iPointerID, float xPos, float yPo //----------------------------------------------------------------------------- { // Make sure we are big enough for this ID - while (m_TouchStates.size() < iPointerID + 1) - { - TouchStatus NewEntry; - m_TouchStates.push_back(NewEntry); - } + m_TouchStates.resize(std::max(m_TouchStates.size(), size_t(iPointerID + 1))); m_TouchStates[iPointerID].m_isDown = true; m_TouchStates[iPointerID].m_xPos = xPos; @@ -478,25 +559,44 @@ void ApplicationHelperBase::TouchUpEvent(int iPointerID, float xPos, float yPos) //----------------------------------------------------------------------------- { // Make sure we are big enough for this ID - while (m_TouchStates.size() < iPointerID + 1) - { - TouchStatus NewEntry; - m_TouchStates.push_back(NewEntry); - } + m_TouchStates.resize(std::max(m_TouchStates.size(), size_t(iPointerID + 1))); m_TouchStates[iPointerID].m_isDown = false; m_TouchStates[iPointerID].m_xPos = xPos; m_TouchStates[iPointerID].m_yPos = yPos; + const uint32_t timeNowMS = uint32_t(OS_GetTimeUS() / uint64_t(1000)); + const uint32_t pressTime = timeNowMS - m_TouchStates[iPointerID].m_lastDownChangeTimeMs; + m_TouchStates[iPointerID].m_lastDownChangeTimeMs = timeNowMS; + + if (pressTime < cClickTimeMs) + { + if (m_TouchStates[iPointerID].m_clicks == 2) + { + // Double click! + TouchDoubleClickEvent(iPointerID); + m_TouchStates[iPointerID].m_clicks = 0; + } + else + m_TouchStates[iPointerID].m_clicks = 1; + } + else + m_TouchStates[iPointerID].m_clicks = 0; + if (m_CameraController) m_CameraController->TouchUpEvent(iPointerID, xPos, yPos); } //----------------------------------------------------------------------------- -TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetManager& assetManager, const char* filename, SamplerAddressMode samplerMode) +void ApplicationHelperBase::TouchDoubleClickEvent(int iPointerID) +//----------------------------------------------------------------------------- +{} + +//----------------------------------------------------------------------------- +Texture ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, const char* filename, SamplerAddressMode samplerMode) //----------------------------------------------------------------------------- { - SamplerT sampler; + Sampler sampler; switch (samplerMode) { case SamplerAddressMode::Repeat: sampler = m_SamplerRepeat.Copy(); @@ -511,16 +611,16 @@ TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetMana assert(0 && "Invalid sampler"); break; } - return LoadKTXTexture(vulkan, assetManager, filename, sampler); + return LoadKTXTexture(vulkan, filename, sampler); } //----------------------------------------------------------------------------- -TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetManager& assetManager, const char* filename, Sampler& sampler) +Texture ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, const char* filename, SamplerBase& sampler) //----------------------------------------------------------------------------- { auto* pTextureManagerVulkan = apiCast(m_TextureManager.get()); - auto & samplerVulkan = static_cast&>(sampler); - return pTextureManagerVulkan->GetLoader()->LoadKtx(*vulkan, assetManager, filename, std::move(samplerVulkan)); + auto & samplerVulkan = apiCast(sampler); + return pTextureManagerVulkan->GetLoader()->LoadKtx(*vulkan, *m_AssetManager, filename, std::move(samplerVulkan)); } //----------------------------------------------------------------------------- @@ -529,11 +629,62 @@ TextureT ApplicationHelperBase::LoadKTXTexture(Vulkan* vulkan, AssetMana // positions, normals and threadColors. Vertices are held in TRIANGLE_LIST format. // // Vertex layout corresponds to ApplicationHelperBase::vertex_layout structure. -bool ApplicationHelperBase::LoadGLTF(const std::string& filename, uint32_t binding, Mesh* meshObject) +bool ApplicationHelperBase::LoadGLTF(const std::string& filename, uint32_t binding, Mesh* meshObject) { const auto meshObjects = MeshObjectIntermediate::LoadGLTF(*m_AssetManager, filename); if (meshObjects.empty()) return false; - return MeshHelper::CreateMesh(GetVulkan()->GetMemoryManager(), meshObjects[0].CopyFlattened()/*remove indices*/, binding, { &MeshHelper::vertex_layout::sFormat, 1 }, meshObject); + return MeshHelper::CreateMesh(GetVulkan()->GetMemoryManager(), meshObjects[0].CopyFlattened()/*remove indices*/, binding, { &MeshHelper::vertex_layout::sFormat, 1 }, meshObject); +} + +//----------------------------------------------------------------------------- +std::unique_ptr> ApplicationHelperBase::InitFullscreenDrawable( const char* pShaderName, const std::map& ColorAttachmentsLookup, const std::map& ImageAttachmentsLookup, const std::map& UniformsLookup, const std::map specializationConstants, const RenderPass& renderPass ) +//----------------------------------------------------------------------------- +{ + auto* const pVulkan = GetVulkan(); + + LOGI( "Creating %s mesh...", pShaderName ); + + const auto* pShader = m_ShaderManager->GetShader( pShaderName ); + assert( pShader ); + if (!pShader) + { + LOGE( "Error, %s shader is unknown (not loaded?)", pShaderName ); + return nullptr; + } + + Mesh mesh; + if (!MeshHelper::CreateMesh( pVulkan->GetMemoryManager(), MeshObjectIntermediate::CreateScreenSpaceMesh(), 0, pShader->m_shaderDescription->m_vertexFormats, &mesh )) + { + LOGE( "Error creating Fullscreen Mesh (for %s)", pShaderName ); + return nullptr; + } + + auto shaderMaterial = m_MaterialManager->CreateMaterial( *pShader, NUM_VULKAN_BUFFERS, + [&ColorAttachmentsLookup]( const std::string& texName, MaterialManagerBase::tPerFrameTexInfo& texInfo ) { + texInfo = {ColorAttachmentsLookup.find( texName )->second}; + }, + [&UniformsLookup]( const std::string& bufferName, PerFrameBufferBase& buffers ) { + buffers = {UniformsLookup.find( bufferName )->second}; + }, + [&ImageAttachmentsLookup]( const std::string& imageName, ImageInfoBase& image ) { + auto* imageT = static_cast(&image); + imageT->operator=({ImageAttachmentsLookup.find(imageName)->second}); + }, + nullptr, + [&specializationConstants]( const std::string& constantName ) -> const VertexElementData { + return {specializationConstants.find( constantName )->second}; + }); + + static const char* passName = "Fullscreen"; + + auto drawable = std::make_unique( *pVulkan, std::move( shaderMaterial ) ); + if (!drawable->Init( renderPass, {}, passName, std::move( mesh ) )) + { + LOGE( "Error creating Blit Drawable" ); + return nullptr; + } + + return std::move( drawable ); } diff --git a/framework/code/main/applicationHelperBase.hpp b/framework/code/main/applicationHelperBase.hpp index 7ee1e96..ef6cf7f 100644 --- a/framework/code/main/applicationHelperBase.hpp +++ b/framework/code/main/applicationHelperBase.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,25 +9,42 @@ #include "vulkan/vulkan.hpp" #include "frameworkApplicationBase.hpp" -#include "texture/vulkan/texture.hpp" -#include "vulkan/renderTarget.hpp" #include "camera/camera.hpp" +#include "vulkan/renderPass.hpp" +#include "material/vulkan/materialManager.hpp" +#include "memory/vulkan/uniform.hpp" #include "mesh/mesh.hpp" +#include "texture/vulkan/texture.hpp" +#include "vulkan/renderContext.hpp" +#include "vulkan/renderTarget.hpp" class CameraControllerBase; -class Computable; -class Drawable; -class Traceable; -class ShaderManager; +class CommandListBase; +class ComputableBase; class SemaphoreWait; -class TextureManager; +class ShaderManagerBase; +class TextureManagerBase; class TimerPoolBase; +class Traceable; +class VertexElementData; class VertexFormat; -template class CommandListT; +template class Buffer; +template class CommandList; +template class Computable; +template class Drawable; +template class DrawableLoader; +template class DrawIndirectBuffer; template class GuiImguiGfx; -template class MaterialManagerT; +template struct ImageInfo; +template class Material; +template class MaterialManager; +template class MaterialPass; template class Mesh; -template class TextureManagerT; +template struct PerFrameBuffer; +template class RenderPass; +template class RenderTarget; +template class ShaderManager; +template class TextureManager; template struct Uniform; template struct UniformT; template struct UniformArray; @@ -36,14 +53,20 @@ template struct UniformArra class TouchStatus { public: - TouchStatus() {m_isDown = false; m_xPos = 0.0f; m_yPos = 0.0f; m_xDownPos = 0.0f; m_yDownPos = 0.0f; }; + TouchStatus() = default; ~TouchStatus() { }; + TouchStatus( const TouchStatus& ) = delete; + TouchStatus& operator=( const TouchStatus& ) = delete; + TouchStatus( TouchStatus&& ) = default; + TouchStatus& operator=( TouchStatus&& ) = default; - bool m_isDown; - float m_xPos; - float m_yPos; - float m_xDownPos; - float m_yDownPos; + bool m_isDown = false; + uint8_t m_clicks = 0; // 1 if we just did a quick 'click', 2 if we did a quick click followed by a quick release + float m_xPos = 0.0f; + float m_yPos = 0.0f; + float m_xDownPos = 0.0f; + float m_yDownPos = 0.0f; + uint32_t m_lastDownChangeTimeMs = 0;// Timestamp (in ms) of last 'down' or 'up' }; /// Helper class that applications can be derived from. @@ -56,8 +79,30 @@ class ApplicationHelperBase : public FrameworkApplicationBase // This class is for Vulkan applications using tGfxApi = Vulkan; - using MeshObject = Mesh; + using CommandList = CommandList; + using CommandBufferT = CommandList; + using CommandBuffer = CommandBufferT; + using Computable = Computable; + using Drawable = Drawable; + using DrawableLoader = DrawableLoader; + using DrawIndirectBuffer = DrawIndirectBuffer; + using ImageInfo = ImageInfo; + using IndexBufferObject = IndexBuffer; + using Material = Material; + using MaterialPass = MaterialPass; + using MaterialManager = MaterialManager; + using Mesh = Mesh; + using PerFrameTexInfo = MaterialManager::tPerFrameTexInfo; + using PerFrameBuffer = PerFrameBuffer; + using RenderContext = RenderContext; + using RenderPass = RenderPass; + using RenderTarget = RenderTarget; + using ShaderManager = ShaderManager; using Uniform = Uniform; + using VertexBufferObject = VertexBuffer; + using BufferVulkan = Buffer; + using GuiImguiGfx = GuiImguiGfx; + template using UniformArray = UniformArray; template using UniformT = UniformT; template using UniformArrayT = UniformArrayT; @@ -67,6 +112,7 @@ class ApplicationHelperBase : public FrameworkApplicationBase virtual bool InitCamera(); bool Initialize(uintptr_t hWnd, uintptr_t hInstance) override; ///< Override FrameworkApplicationBase::Initialize + bool ReInitialize(uintptr_t hWnd, uintptr_t hInstance) override; ///< Override FrameworkApplicationBase::ReInitialize void Destroy() override; ///< Override FrameworkApplicationBase::Destroy bool SetWindowSize(uint32_t width, uint32_t height) override; ///< Override FrameworkApplicationBase::SetWindowSize. Passes new window size in to camera. @@ -77,7 +123,7 @@ class ApplicationHelperBase : public FrameworkApplicationBase /// May be called during initialize (from Vulkan.cpp, during inital Vulkan setup). /// @param configuration (if untouched, Vulkan will be setup using defaults). - virtual void PreInitializeSetVulkanConfiguration(Vulkan::AppConfiguration&); + virtual void PreInitializeSetVulkanConfiguration( tGfxApi::AppConfiguration&); void KeyDownEvent(uint32_t key) override; ///< Override FrameworkApplicationBase::KeyDownEvent void KeyRepeatEvent(uint32_t key) override; ///< Override FrameworkApplicationBase::KeyRepeatEvent @@ -85,21 +131,40 @@ class ApplicationHelperBase : public FrameworkApplicationBase void TouchDownEvent(int iPointerID, float xPos, float yPos) override; ///< Override FrameworkApplicationBase::TouchDownEvent void TouchMoveEvent(int iPointerID, float xPos, float yPos) override; ///< Override FrameworkApplicationBase::TouchMoveEvent void TouchUpEvent(int iPointerID, float xPos, float yPos) override; ///< Override FrameworkApplicationBase::TouchUpEvent + virtual void TouchDoubleClickEvent(int iPointerID); ///< Generated by ApplicationHelperBase (in ApplicationHelperBase::TouchUpEvent) /// @brief Add the commands to draw this drawable to the given commandbuffers. /// @param drawable the Drawable object we want to add commands for (may contain multiple DrawablePass) /// @param cmdBuffers pointer to array, assumed to be sized [numVulkanBuffers][numRenderPasses] /// @param numRenderPasses number of render passes in the array (the DrawablePass has the pass index that is written to) - /// @param numVulkanBuffers number of buffers in the array (number of frames to build the command buffers for) - void AddDrawableToCmdBuffers(const Drawable& drawable, CommandListT* cmdBuffers, uint32_t numRenderPasses, uint32_t numVulkanBuffers, uint32_t startDescriptorSetIdx = 0) const; + /// @param numFrameBuffers number of buffers in the array (number of frames to build the command buffers for) + void AddDrawableToCmdBuffers(const Drawable& drawable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t numFrameBuffers, uint32_t startDescriptorSetIdx = 0) const; + void AddDrawableToCmdBuffer( const Drawable& drawable, CommandList& cmdBuffer, uint32_t startDescriptorSetIdx = 0 ) const + { + AddDrawableToCmdBuffers( drawable, &cmdBuffer, 1, 1, startDescriptorSetIdx ); + } + + /// @brief Add the commands to draw this drawable to the given commandbuffers. + /// @param drawable the Drawable object we want to add commands for (may contain multiple DrawablePass) + /// @param cmdBuffers pointer to array, assumed to be sized [numVulkanBuffers][numRenderPasses] + /// @param numRenderPasses number of render passes in the array (the DrawablePass has the pass index that is written to) + /// @param whichVulkanBuffer which vulkan buffer to add to (not all vulkan buffers) + /// @param dummy to distinguish other version of AddDrawableToCmdBuffers(..., uint32_t startDescriptorSetIdx = 0) + void AddDrawableToCmdBuffers(const Drawable& drawable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t whichVulkanBuffer, uint32_t startDescriptorSetIdx, float dummy) const; + /// @brief Add the commands to dispatch this computable to a command buffer. /// Potentially adds multiple vkCmdDispatch (will make one per 'pass' in the Computable) and inserts appropiate memory barriers between passes. /// @param computable /// @param cmdBuffers pointer to array of commandbuffers we want to fill, assumed to be sized [numRenderPasses] /// @param numRenderPasses number of cmdBuffers to fill /// @param startDescriptorSetIdx index of the first descriptor set to add - void AddComputableToCmdBuffer(const Computable& computable, CommandListT* cmdBuffers, uint32_t numRenderPasses, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool = nullptr ) const; - void AddComputableToCmdBuffer( const Computable& computable, CommandListT& cmdBuffer, TimerPoolBase* timerPool = nullptr ) const + void AddComputableToCmdBuffer(const Computable& computable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool = nullptr ) const; + void AddComputableToCmdBuffer(const Computable& computable, CommandList& cmdBuffer, TimerPoolBase* timerPool = nullptr) const + { + AddComputableToCmdBuffer( computable, &cmdBuffer, 1, 0, timerPool ); + } + void AddComputableToCmdBuffer(const ComputableBase& computable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool = nullptr ) const; + void AddComputableToCmdBuffer(const ComputableBase& computable, CommandList& cmdBuffer, TimerPoolBase* timerPool = nullptr ) const { AddComputableToCmdBuffer( computable, &cmdBuffer, 1, 0, timerPool ); } @@ -108,8 +173,13 @@ class ApplicationHelperBase : public FrameworkApplicationBase /// @param computable /// @param cmdBuffers pointer to array of commandbuffers we want to add the barrier to, assumed to be sized [numRenderPasses] /// @param numRenderPasses number of cmdBuffers to fill - void AddComputableOutputBarrierToCmdBuffer(const Computable& computable, CommandListT* cmdBuffers, uint32_t numRenderPasses) const; - void AddComputableOutputBarrierToCmdBuffer(const Computable& computable, CommandListT& cmdBuffer) const + void AddComputableOutputBarrierToCmdBuffer(const Computable& computable, CommandList* cmdBuffers, uint32_t numRenderPasses) const; + void AddComputableOutputBarrierToCmdBuffer(const Computable& computable, CommandList& cmdBuffer) const + { + AddComputableOutputBarrierToCmdBuffer(computable, &cmdBuffer, 1); + } + void AddComputableOutputBarrierToCmdBuffer(const ComputableBase& computable, CommandList* cmdBuffers, uint32_t numRenderPasses) const; + void AddComputableOutputBarrierToCmdBuffer(const ComputableBase& computable, CommandList& cmdBuffer) const { AddComputableOutputBarrierToCmdBuffer(computable, &cmdBuffer, 1); } @@ -120,8 +190,8 @@ class ApplicationHelperBase : public FrameworkApplicationBase /// @param cmdBuffers pointer to array of commandbuffers we want to fill, assumed to be sized [numRenderPasses] /// @param numRenderPasses number of cmdBuffers to fill /// @param startDescriptorSetIdx index of the first descriptor set to add (use when Computable - void AddTraceableToCmdBuffer(const Traceable& traceable, CommandListT* cmdBuffers, uint32_t numRenderPasses, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool = nullptr ) const; - void AddTraceableToCmdBuffer(const Traceable& traceable, CommandListT& cmdBuffer, TimerPoolBase* timerPool = nullptr ) const + void AddTraceableToCmdBuffer(const Traceable& traceable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool = nullptr ) const; + void AddTraceableToCmdBuffer(const Traceable& traceable, CommandList& cmdBuffer, TimerPoolBase* timerPool = nullptr ) const { AddTraceableToCmdBuffer(traceable, &cmdBuffer, 1, 0, timerPool); } @@ -141,18 +211,23 @@ class ApplicationHelperBase : public FrameworkApplicationBase bool PresentQueue(const SemaphoreWait& WaitSemaphore, uint32_t SwapchainPresentIndx); /// Texture loader helper to replace the (old) texture loading code - TextureT LoadKTXTexture(tGfxApi*, AssetManager&, const char* filename, SamplerAddressMode = SamplerAddressMode::ClampEdge); - TextureT LoadKTXTexture(tGfxApi*, AssetManager&, const char* filename, Sampler&); + Texture LoadKTXTexture(tGfxApi*, const char* filename, SamplerAddressMode = SamplerAddressMode::ClampEdge); + Texture LoadKTXTexture(tGfxApi*, const char* filename, SamplerBase&); /// Mesh loader helper to load the first shape in a .gltf file (no materials). /// Returned MeshObject does not have an index buffer (3 verts per triangle) and data is in the MeshHelper::vertex_layout format. /// @returns true on success - bool LoadGLTF(const std::string& filename, uint32_t binding, Mesh* meshObject); + bool LoadGLTF(const std::string& filename, uint32_t binding, Mesh* meshObject); + + /// @brief Helper to create a fullscreen (quad) drawable + std::unique_ptr InitFullscreenDrawable( const char* pShaderName, const std::map& ColorAttachmentsLookup, const std::map& ImageAttachmentsLookup, const std::map& UniformsLookup, const std::map specializationConstants, const RenderPass& renderPass ); /// @brief Get pointer to the framework Vulkan class Vulkan* GetVulkan() const { return static_cast(m_gfxBase.get()); } + /// @brief Get pointer to the framework graphicsApi Vulkan class (will get the Dx12 class when called from the Dx12 ApplicationHelperBase). Can use FrameworkApplicationBase::GetGraphicsApiBase if you want the base class only! + Vulkan* GetGfxApi() const { return static_cast(m_gfxBase.get()); } /// @brief Get pointer to the framework gui (Vulkan) class - GuiImguiGfx* GetGui() const { return (GuiImguiGfx*)(m_Gui.get()); } + auto* GetGui() const { return (GuiImguiGfx*)(m_Gui.get()); } protected: // Scene Camera @@ -164,19 +239,37 @@ class ApplicationHelperBase : public FrameworkApplicationBase std::vector m_TouchStates; // Shaders - std::unique_ptr m_ShaderManager; + std::unique_ptr m_ShaderManager; // Materials - std::unique_ptr> m_MaterialManager; + std::unique_ptr m_MaterialManager; // Output backbuffer (framebuffer) helper - CRenderTargetArray m_BackbufferRenderTarget; + std::array m_BackbufferRenderTarget; + std::array m_BackbufferRenderContext; // Texture manager - std::unique_ptr m_TextureManager; + std::unique_ptr m_TextureManager; // Default samplers - SamplerT m_SamplerRepeat; - SamplerT m_SamplerEdgeClamp; - SamplerT m_SamplerMirroredRepeat; + Sampler m_SamplerRepeat; + Sampler m_SamplerEdgeClamp; + Sampler m_SamplerMirroredRepeat; }; + +// +// Additional helpers for app_config.txt parsing +// + +template <> +inline void ReadFromText( VkSampleCountFlagBits* val, const char* const text ) +{ + ReadFromText((uint32_t*)(val), text); +} + +template <> +inline void ReadFromText( Msaa* val, const char* const text ) +{ + ReadFromText((uint32_t*)(val), text); +} + diff --git a/framework/code/main/applicationHelperBaseDx12.cpp b/framework/code/main/applicationHelperBaseDx12.cpp new file mode 100644 index 0000000..8a05283 --- /dev/null +++ b/framework/code/main/applicationHelperBaseDx12.cpp @@ -0,0 +1,184 @@ +//============================================================================= +// +// +// Copyright (c) 2021 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "applicationHelperBaseDx12.hpp" +#include "camera/cameraController.hpp" +#include "camera/cameraControllerTouch.hpp" +#include "material/vertexFormat.hpp" +#include "material/dx12/descriptorSetLayout.hpp" +#include "material/dx12/drawableDx12.hpp" +#include "material/dx12/material.hpp" +#include "material/dx12/materialManager.hpp" +#include "material/dx12/shader.hpp" +#include "material/dx12/shaderModule.hpp" +#include "material/shaderManagerT.hpp" +#include "mesh/meshHelper.hpp" +#include "memory/dx12/indexBufferObject.hpp" +#include "memory/dx12/vertexBufferObject.hpp" +#include "texture/dx12/textureManager.hpp" +#include "dx12/dx12.hpp" +#include "dx12/commandList.hpp" + + +/////////////////////////////////////////////////////////////////////////////// + +// Format of vertex_layout +VertexFormat ApplicationHelperBase::vertex_layout::sFormat{ + sizeof(ApplicationHelperBase::vertex_layout), + VertexFormat::eInputRate::Vertex, + { + { offsetof(ApplicationHelperBase::vertex_layout, pos), VertexElementType::Vec3 }, //float pos[3]; // SHADER_ATTRIB_LOC_POSITION + { offsetof(ApplicationHelperBase::vertex_layout, normal), VertexElementType::Vec3 }, //float normal[3]; // SHADER_ATTRIB_LOC_NORMAL + { offsetof(ApplicationHelperBase::vertex_layout, uv), VertexElementType::Vec2 }, //float uv[2]; // SHADER_ATTRIB_LOC_TEXCOORD0 + { offsetof(ApplicationHelperBase::vertex_layout, color), VertexElementType::Vec4 }, //float color[4]; // SHADER_ATTRIB_LOC_COLOR + { offsetof(ApplicationHelperBase::vertex_layout, tangent), VertexElementType::Vec3 }, //float tangent[3]; // SHADER_ATTRIB_LOC_TANGENT + //{ offsetof(ApplicationHelperBase::vertex_layout, bitangent), VertexElementType::Vec3 }, // float binormal[3]; // SHADER_ATTRIB_LOC_BITANGENT + }, + {"Position", "Normal", "UV", "Color", "Tangent" /*,"Bitangent"*/ } +}; + +//----------------------------------------------------------------------------- +ApplicationHelperBase::ApplicationHelperBase() +//----------------------------------------------------------------------------- + : FrameworkApplicationBase() +{ + m_gfxBase = std::make_unique(); +} + +//----------------------------------------------------------------------------- +ApplicationHelperBase::~ApplicationHelperBase() +//----------------------------------------------------------------------------- +{ +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::PreInitializeSetVulkanConfiguration( ApplicationHelperBase::AppConfiguration& ) +//----------------------------------------------------------------------------- +{ +} + +//----------------------------------------------------------------------------- +bool ApplicationHelperBase::Initialize(uintptr_t hWnd, uintptr_t hInstance) +//----------------------------------------------------------------------------- +{ + Dx12* pDx12 = GetDx12(); + if (!pDx12->Init(hWnd, hInstance)) + { + LOGE("Unable to initialize DirectX12!!"); + return false; + } + + auto textureManager = std::make_unique(*pDx12, *m_AssetManager); + if (!textureManager->Initialize()) + return false; + m_TextureManager = std::move(textureManager); + + m_ShaderManager = std::make_unique(*pDx12); + + m_MaterialManager = std::make_unique(*pDx12); + + return true; +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::Destroy() +//----------------------------------------------------------------------------- +{ + m_MaterialManager.reset(); + + m_ShaderManager.reset(); + + m_TextureManager.reset(); + + FrameworkApplicationBase::Destroy(); +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::KeyDownEvent(uint32_t key) +//----------------------------------------------------------------------------- +{ + if (m_CameraController) + m_CameraController->KeyDownEvent(key); +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::KeyRepeatEvent(uint32_t key) +//----------------------------------------------------------------------------- +{ +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::KeyUpEvent(uint32_t key) +//----------------------------------------------------------------------------- +{ + if (m_CameraController) + m_CameraController->KeyUpEvent(key); +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::TouchDownEvent(int iPointerID, float xPos, float yPos) +//----------------------------------------------------------------------------- +{ + if (m_CameraController) + m_CameraController->TouchDownEvent(iPointerID, xPos, yPos); +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::TouchMoveEvent(int iPointerID, float xPos, float yPos) +//----------------------------------------------------------------------------- +{ + if (m_CameraController) + m_CameraController->TouchMoveEvent(iPointerID, xPos, yPos); +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::TouchUpEvent(int iPointerID, float xPos, float yPos) +//----------------------------------------------------------------------------- +{ + if (m_CameraController) + m_CameraController->TouchUpEvent(iPointerID, xPos, yPos); +} + +//----------------------------------------------------------------------------- +// Loads a .gltf file and builds a single Vertex Buffer containing relevant vertex. +// DOES not use (or populate) the index buffer although it does respect the gltf index buffer when loading the mesh +// positions, normals and threadColors. Vertices are held in TRIANGLE_LIST format. +// +// Vertex layout corresponds to ApplicationHelperBase::vertex_layout structure. +bool ApplicationHelperBase::LoadGLTF(const std::string& filename, uint32_t binding, Mesh* meshObject) +{ + const auto meshObjects = MeshObjectIntermediate::LoadGLTF(*m_AssetManager, filename); + if (meshObjects.empty()) + return false; + + return MeshHelper::CreateMesh(GetDx12()->GetMemoryManager(), meshObjects[0].CopyFlattened()/*remove indices*/, binding, { &MeshHelper::vertex_layout::sFormat, 1 }, meshObject); +} + +//----------------------------------------------------------------------------- +void ApplicationHelperBase::AddDrawableToCmdBuffers(const Drawable& drawable, CommandList* cmdLists, uint32_t numRenderPasses, uint32_t numFrameBuffers, uint32_t startDescriptorSetIdx) const +//----------------------------------------------------------------------------- +{ + const auto& drawablePasses = drawable.GetDrawablePasses(); + for (const auto& drawablePass : drawablePasses) + { + const auto passIdx = drawablePass.mPassIdx; + assert(passIdx < numRenderPasses); + + for (uint32_t bufferIdx = 0; bufferIdx < numFrameBuffers; ++bufferIdx) + { + auto& cmdList = cmdLists[bufferIdx * numRenderPasses + passIdx]; + + // Add commands to bind the pipeline, buffers etc and issue the draw. + drawable.DrawPass(cmdList, drawablePass, /*drawablePass.mDescriptorSet.empty() ? 0 : (startDescriptorSetIdx + bufferIdx) % drawablePass.mDescriptorSet.size()*/ startDescriptorSetIdx + bufferIdx ); + + ++cmdList.m_NumDrawCalls; + cmdList.m_NumTriangles += drawablePass.mNumVertices / 3; + } + } +} + diff --git a/framework/code/main/applicationHelperBaseDx12.hpp b/framework/code/main/applicationHelperBaseDx12.hpp new file mode 100644 index 0000000..92bbd8d --- /dev/null +++ b/framework/code/main/applicationHelperBaseDx12.hpp @@ -0,0 +1,162 @@ +//============================================================================= +// +// +// Copyright (c) 2021 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "dx12/dx12.hpp" +#include "frameworkApplicationBase.hpp" +#include "camera/camera.hpp" +#include "texture/dx12/sampler.hpp" +#include "texture/dx12/texture.hpp" + +class CameraController; +class CameraControllerTouch; +class ComputableBase; +class MaterialManagerBase; +class ShaderManagerBase; +class TextureManagerBase; +class VertexFormat; +template class CommandList; +template class Computable; +template class Drawable; +template class DrawableLoader; +template class DrawIndirectBuffer; +template class GuiImguiGfx; +template class Material; +template class MaterialManager; +template class Mesh; +template struct PerFrameBuffer; +template class RenderPass; +template class RenderTarget; +template class ShaderManager; +template class TextureManager; +template struct Uniform; +template struct UniformT; +template struct UniformArray; +template struct UniformArrayT; + +using TimerPoolBase = void; ///TODO: implement Dx12 timers + +/// Helper class that applications can be derived from. +/// Provides Camera and Drawable functionality to reduce code duplication of more 'boilderplate' application features. +class ApplicationHelperBase : public FrameworkApplicationBase +{ +protected: + ApplicationHelperBase(); + ~ApplicationHelperBase() override; + + // This class is for Dx12 applications + using tGfxApi = Dx12; + using CommandList = CommandList; + using CommandBuffer = CommandList; + using Computable = Computable; + using Drawable = Drawable; + using DrawableLoader = DrawableLoader; + using DrawIndirectBuffer = DrawIndirectBuffer; + using Material = Material; + using MaterialManager = MaterialManager; + using Mesh = Mesh; + using PerFrameBuffer = PerFrameBuffer; + using RenderPass = RenderPass; + using RenderTarget = RenderTarget; + using ShaderManager = ShaderManager; + using Uniform = Uniform; + template using UniformArray = UniformArray; + template using UniformT = UniformT; + template using UniformArrayT = UniformArrayT; + using GuiImguiGfx = GuiImguiGfx; + + struct AppConfiguration + { + tGfxApi::AppConfiguration gfx; + }; + + virtual void PreInitializeSetVulkanConfiguration( AppConfiguration& ); + + bool Initialize(uintptr_t hWnd, uintptr_t hInstance) override; ///< Override FrameworkApplicationBase::Initialize + void Destroy() override; ///< Override FrameworkApplicationBase::Destroy + + void KeyDownEvent(uint32_t key) override; ///< Override FrameworkApplicationBase::KeyDownEvent + void KeyRepeatEvent(uint32_t key) override; ///< Override FrameworkApplicationBase::KeyRepeatEvent + void KeyUpEvent(uint32_t key) override; ///< Override FrameworkApplicationBase::KeyUpEvent + void TouchDownEvent(int iPointerID, float xPos, float yPos) override; ///< Override FrameworkApplicationBase::TouchDownEvent + void TouchMoveEvent(int iPointerID, float xPos, float yPos) override; ///< Override FrameworkApplicationBase::TouchMoveEvent + void TouchUpEvent(int iPointerID, float xPos, float yPos) override; ///< Override FrameworkApplicationBase::TouchUpEvent + + /// @brief Get pointer to the framework Dx12 class + Dx12* GetDx12() const { return static_cast(m_gfxBase.get()); } + /// @brief Get pointer to the framework graphicsApi Dx12 class (will get the Vulkan class when called from the Vulkan ApplicationHelperBase). Can use FrameworkApplicationBase::GetGraphicsApiBase if you want the base class only! + Dx12* GetGfxApi() const { return static_cast(m_gfxBase.get()); } + /// @brief Get pointer to the framework gui (Dx12) class + GuiImguiGfx* GetGui() const { return (GuiImguiGfx*)(m_Gui.get()); } + + // These MUST match the order of the attrib locations and sFormat must reflect the layout of this struct too! + struct vertex_layout + { + float pos[3]; // SHADER_ATTRIB_LOC_POSITION + float normal[3]; // SHADER_ATTRIB_LOC_NORMAL + float uv[2]; // SHADER_ATTRIB_LOC_TEXCOORD0 + float color[4]; // SHADER_ATTRIB_LOC_COLOR + float tangent[3]; // SHADER_ATTRIB_LOC_TANGENT + // float binormal[3]; // SHADER_ATTRIB_LOC_BITANGENT + static VertexFormat sFormat; + }; + + /// Mesh loader helper to load the first shape in a .gltf file (no materials). + /// Returned MeshObject does not have an index buffer (3 verts per triangle) and data is in the ApplicationHelperBase::vertex_layout format. + /// @returns true on success + bool LoadGLTF(const std::string& filename, uint32_t binding, Mesh* meshObject); + + /// @brief Add the commands to draw this drawable to the given commandbuffers. + /// @param drawable the Drawable object we want to add commands for (may contain multiple DrawablePass) + /// @param cmdBuffers pointer to array, assumed to be sized [numVulkanBuffers][numRenderPasses] + /// @param numRenderPasses number of render passes in the array (the DrawablePass has the pass index that is written to) + /// @param numVulkanBuffers number of buffers in the array (number of frames to build the command buffers for) + void AddDrawableToCmdBuffers(const Drawable& drawable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t numFrameBuffers, uint32_t startDescriptorSetIdx = 0) const; + void AddDrawableToCmdBuffer(const Drawable& drawable, CommandList& cmdBuffer, uint32_t startDescriptorSetIdx = 0) const + { + AddDrawableToCmdBuffers(drawable, &cmdBuffer, 1, 1, startDescriptorSetIdx); + } + /// @brief Add the commands to dispatch this computable to a command buffer. + /// Potentially adds multiple vkCmdDispatch (will make one per 'pass' in the Computable) and inserts appropiate memory barriers between passes. + /// @param computable + /// @param cmdBuffers pointer to array of commandbuffers we want to fill, assumed to be sized [numRenderPasses] + /// @param numRenderPasses number of cmdBuffers to fill + /// @param startDescriptorSetIdx index of the first descriptor set to add + void AddComputableToCmdBuffer(const Computable& computable, CommandList* cmdBuffers, uint32_t numRenderPasses, uint32_t startDescriptorSetIdx, TimerPoolBase* timerPool = nullptr ) const; + void AddComputableToCmdBuffer( const Computable& computable, CommandList& cmdBuffer, TimerPoolBase* timerPool = nullptr ) const + { + AddComputableToCmdBuffer( computable, &cmdBuffer, 1, 0, timerPool ); + } + + +protected: + // Scene Camera + Camera m_Camera; + + // Camera Controller +#if defined(OS_ANDROID) ///TODO: make this an option + std::unique_ptr m_CameraController; +#else + std::unique_ptr m_CameraController; +#endif + + // Shaders + std::unique_ptr m_ShaderManager; + + // Materials + std::unique_ptr m_MaterialManager; + + // Texture manager + std::unique_ptr> m_TextureManager; + + // Ready to use samplers + // Default samplers + Sampler m_SamplerRepeat; + Sampler m_SamplerEdgeClamp; + Sampler m_SamplerMirroredRepeat; +}; diff --git a/framework/code/main/frameworkApplicationBase.cpp b/framework/code/main/frameworkApplicationBase.cpp index ccaf786..656ee27 100644 --- a/framework/code/main/frameworkApplicationBase.cpp +++ b/framework/code/main/frameworkApplicationBase.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -13,14 +13,9 @@ #include "system/os_common.h" // Bring in the timestamp (and assign to a variable) -// Temporary fix for Android not building the timestamp, upstream cmake update will fix this in a future update -#if defined(_WIN32) -#include "../../project/buildtimestamp.h" -#else -#define BUILD_TIMESTAMP "UNDEFINED" -#endif - -const char* const FrameworkApplicationBase::sm_BuildTimestamp = BUILD_TIMESTAMP; +//#include "../../project/buildtimestamp.h" +//const char* const FrameworkApplicationBase::sm_BuildTimestamp = BUILD_TIMESTAMP; +const char* const FrameworkApplicationBase::sm_BuildTimestamp = ""; //######################################################### @@ -29,20 +24,20 @@ const char* const FrameworkApplicationBase::sm_BuildTimestamp = BUILD_TIMESTAMP; // ************************************ // General Settings // ************************************ -VAR(uint32_t, gSurfaceWidth, 1920, kVariableNonpersistent); -VAR(uint32_t, gSurfaceHeight, 1080, kVariableNonpersistent); +VAR(uint32_t, gSurfaceWidth, 1280, kVariableNonpersistent); +VAR(uint32_t, gSurfaceHeight, 720, kVariableNonpersistent); -VAR(uint32_t, gRenderWidth, 1920, kVariableNonpersistent); -VAR(uint32_t, gRenderHeight, 1080, kVariableNonpersistent); +VAR(uint32_t, gRenderWidth, 1280, kVariableNonpersistent); +VAR(uint32_t, gRenderHeight, 720, kVariableNonpersistent); -VAR(uint32_t, gReflectMapWidth, 1920, kVariableNonpersistent); -VAR(uint32_t, gReflectMapHeight, 1080, kVariableNonpersistent); +VAR(uint32_t, gReflectMapWidth, 1280/2, kVariableNonpersistent); +VAR(uint32_t, gReflectMapHeight, 720/2, kVariableNonpersistent); VAR(uint32_t, gShadowMapWidth, 1024, kVariableNonpersistent); VAR(uint32_t, gShadowMapHeight, 1024, kVariableNonpersistent); -VAR(uint32_t, gHudRenderWidth, 1920, kVariableNonpersistent); -VAR(uint32_t, gHudRenderHeight, 1080, kVariableNonpersistent); +VAR(uint32_t, gHudRenderWidth, 1280, kVariableNonpersistent); +VAR(uint32_t, gHudRenderHeight, 720, kVariableNonpersistent); VAR(float, gFixedFrameRate, 0.0f, kVariableNonpersistent); @@ -77,7 +72,7 @@ FrameworkApplicationBase::FrameworkApplicationBase() m_WindowWidth = 0; m_WindowHeight = 0; - LOGI("Application build time: %s", sm_BuildTimestamp); + //LOGI("Application build time: %s", sm_BuildTimestamp); } //----------------------------------------------------------------------------- @@ -111,7 +106,7 @@ void FrameworkApplicationBase::SetConfigFilename(const std::string& filename) bool FrameworkApplicationBase::LoadConfigFile() //----------------------------------------------------------------------------- { - const std::string ConfigFileFallbackPath = std::string("Media\\") + m_ConfigFilename; + const std::string ConfigFileFallbackPath = std::string("build\\Media\\") + m_ConfigFilename; LOGI("Loading Configuration File: %s", m_ConfigFilename.c_str()); std::string configFile; if (!m_AssetManager->LoadFileIntoMemory(m_ConfigFilename, configFile ) && diff --git a/framework/code/main/frameworkApplicationBase.hpp b/framework/code/main/frameworkApplicationBase.hpp index c7a3db9..710c882 100644 --- a/framework/code/main/frameworkApplicationBase.hpp +++ b/framework/code/main/frameworkApplicationBase.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -96,7 +96,10 @@ class FrameworkApplicationBase virtual void Destroy(); /// Called by framework whenever the screen (swap chain) size has changed. This is the WINDOW size (not necissarily the buffer size etc), mouse/touch input is expected to be in this coordinate space) - virtual bool SetWindowSize(uint32_t width, uint32_t height); + virtual bool SetWindowSize( uint32_t width, uint32_t height ); + + /// Return the WINDOW size (not necissarily the buffer size etc), mouse/touch input is expected to be in this coordinate space) + std::pair GetWindowSize() const { return {m_WindowWidth, m_WindowHeight}; }; /// Application Main thread 'render' loop (eg ALooper_pollAll loop on Android) /// Called every frame. @@ -125,9 +128,9 @@ class FrameworkApplicationBase bool Render(); // Accessors - GraphicsApiBase*GetGraphicsApi() const { return m_gfxBase.get(); } - Gui* GetGui() const { return m_Gui.get(); } - uint32_t GetFrameCount() const { return m_FrameCount; } + GraphicsApiBase*GetGraphicsApiBase() const { return m_gfxBase.get(); } + Gui* GetGui() const { return m_Gui.get(); } + uint32_t GetFrameCount() const { return m_FrameCount; } public: // Frame timings diff --git a/framework/code/main/framework_static_empty.cpp b/framework/code/main/framework_static_empty.cpp new file mode 100644 index 0000000..d114a92 --- /dev/null +++ b/framework/code/main/framework_static_empty.cpp @@ -0,0 +1,2 @@ +// Empty file used by Android build when creating static libraries + diff --git a/framework/code/main/linux/linuxMain.cpp b/framework/code/main/linux/linuxMain.cpp new file mode 100644 index 0000000..778c678 --- /dev/null +++ b/framework/code/main/linux/linuxMain.cpp @@ -0,0 +1,155 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +/// @file unixMain.cpp +/// @brief Unix 'main' entry point and event handler. +/// +/// Implements Unix specific wrapping of frameworkApplicationBase. +// There should be the minimum (possible) amount of code in here. + +#include +#include +#include +#include + +#include "system/os_common.h" + +#include "main/frameworkApplicationBase.hpp" +#include "main/applicationEntrypoint.hpp" +#include "gui/gui.hpp" + +#include + + + +// Based on config file loading, there is a window between the application being created, +// and it is intialized. A WM_PAINT can come in at this point and will crash because +// nothing has been initialized. +bool gAppInitialized = false; + +// Flag to indicate if the gui is currently 'eating' all the mouse input events (if false the events are passed on to the application) +static bool gGuiMouseActive = false; + +// If the mouse is down and being handled by the application (not the gui) +static bool gAppMouseActive = false; + +//------------------------------------------------------------------------------ +/// Create Window for rendering into +//------------------------------------------------------------------------------ +GLFWwindow* CreateWindow(int width, int height) { + GLFWwindow* window; + + // Initialize the library + if (!glfwInit()) + return nullptr; + + // Tel GLFW to not attach to OpenGL + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + + // Create a windowed mode window + window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); + if (!window) + { + glfwTerminate(); + return nullptr; + } + + /* Make the window's context current */ + glfwMakeContextCurrent(window); + + return window; +} + +//------------------------------------------------------------------------------ +// Destroy the Window +//------------------------------------------------------------------------------ +void DestroyWindow(GLFWwindow* window) +{ + glfwDestroyWindow(window); +} + + + +/// This is the main entry point of the Unix app. +/// initializes Vulkan and loops processing windows events (until the app is closed). +//----------------------------------------------------------------------------- +int main(int argc, const char*const* argv) +//----------------------------------------------------------------------------- +{ + // Check for a media directy (fatal to not have one). + constexpr auto mediaPath = "build/Media"; + if (!std::filesystem::exists(mediaPath) || !std::filesystem::is_directory(mediaPath)) + { + std::string errorMessage = "Cannot find 'build/Media' folder.\n You're likely not running from the correct directory or are missing files from the Media folder (check this sample's README.md for instructions).\n"; + LOGE(errorMessage.c_str()); + return EXIT_FAILURE; + } + + // Create the application + auto* gpApplication = Application_ConstructApplication(); + + // Do a very simple parse of the cmd line... + std::string sConfigFilenameOverride; + if (argc > 1) + gpApplication->SetConfigFilename(argv[1]); + + // Load the config file + // Need this here in order to get the window sizes + gpApplication->LoadConfigFile(); + + if (gSurfaceWidth == 0) + { + LOGI("gSurfaceWidth => %d", gRenderWidth); + gSurfaceWidth = gRenderWidth; + } + if (gSurfaceHeight == 0) + { + LOGI("gSurfaceHeight => %d", gRenderHeight); + gSurfaceHeight = gRenderHeight; + } + + auto* pWindow = CreateWindow(gSurfaceWidth, gSurfaceHeight); + + // Initialize the application class + if (!gpApplication->Initialize((uintptr_t)pWindow, (uintptr_t)0)) { + LOGE("Application initialization failed!!"); + return EXIT_FAILURE; + } + + gAppInitialized = true; + + if (!gpApplication->PostInitialize()) + return EXIT_FAILURE; + + // Loop on signals + bool fDone = false; + while (!fDone && !glfwWindowShouldClose(pWindow)) + { + glfwPollEvents(); + + if (!gpApplication->Render()) + fDone = true; + + OS_SleepMs(1); + } + // Release the application + if (gpApplication) + { + gpApplication->Destroy(); + + delete gpApplication; + gpApplication = NULL; + } + + DestroyWindow(pWindow); + pWindow = nullptr; + + glfwTerminate(); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/framework/code/main/windows/winMain.cpp b/framework/code/main/windows/winMain.cpp index 0f1f910..4382417 100644 --- a/framework/code/main/windows/winMain.cpp +++ b/framework/code/main/windows/winMain.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -35,6 +35,8 @@ //============================================================================= // Declare the application global so can access it in WndProc FrameworkApplicationBase* gpApplication = nullptr; +// Define a funcion pointer to the GUI's winproc handler. Use this so the GUI can catch winproc events at the lowest level (eg imgui integration) +LRESULT(*PFN_Gui_WndProcHandler)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) = nullptr/*do nothing by default*/; #define KEY_THIS_FRAME_TIME 250 @@ -49,8 +51,8 @@ static bool gGuiMouseActive = false; // If the mouse is down and being handled by the application (not the gui) static bool gAppMouseActive = false; -// Define a funcion pointer to the GUI's winproc handler. Use this so the GUI can catch winproc events at the lowest level (eg imgui integration) -LRESULT (*PFN_Gui_WndProcHandler)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) = nullptr/*do nothing by default*/; +// From WinMain.cpp +extern LRESULT(*PFN_Gui_WndProcHandler)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); int DefaultCrashReport(int i, char* msg, int* p) { @@ -88,6 +90,7 @@ bool CreateConsoleWindow( bool forceNewConsole ) } _CrtSetReportHook( PFN_CrashReportHook ); + _set_error_mode( _OUT_TO_STDERR ); // Redirect stdout and stderr from our app to the new console window... @@ -142,19 +145,11 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_PAINT: if (gpApplication && gAppInitialized) { - static bool is_rendering = false; - if (is_rendering) - { - return DefWindowProc(hWnd, uMsg, wParam, lParam); - } - - is_rendering = true; if (!gpApplication->Render()) { // Exit requested. DestroyWindow(hWnd); } - is_rendering = false; } break; @@ -316,10 +311,10 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi bool allocatedNewConsoleWindow = CreateConsoleWindow(false); // Check for a media directy (fatal to not have one). - constexpr auto mediaPath = "Media"; + constexpr auto mediaPath = "build/Media"; if (!std::filesystem::exists(mediaPath) || !std::filesystem::is_directory(mediaPath)) { - std::string errorMessage = "Cannot find 'Media' folder.\n If you built this application maybe you didnt run the corresponding 02_PrepareMedia.bat script?\n If you did prepare the media (or are running a pre-built build) you're likely not running from the correct directory.\n"; + std::string errorMessage = "Cannot find 'build/Media' folder.\n You're likely not running from the correct directory or are missing files from the Media folder (check this sample's README.md for instructions).\n"; LOGE(errorMessage.c_str()); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); @@ -407,7 +402,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi // Initialize the application class if (!gpApplication->Initialize((uintptr_t)hWnd, (uintptr_t)hInstance)) { - LOGE("Application initialization failed!!"); + LOGE("\n\n===================================\nApplication initialization failed!!\n===================================\n\n"); return FALSE; } diff --git a/framework/code/material/computable.cpp b/framework/code/material/computable.cpp index b06255e..6a15e45 100644 --- a/framework/code/material/computable.cpp +++ b/framework/code/material/computable.cpp @@ -1,468 +1,35 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "computable.hpp" -#include "shader.hpp" -#include "vulkan/shaderModule.hpp" +#include "materialPass.hpp" #include "shaderDescription.hpp" -#include "vulkan/material.hpp" -#include "vulkan/vulkan.hpp" -#include "vulkan/TextureFuncts.h" -#include "texture/vulkan/texture.hpp" -#include "system/os_common.h" -#include -#include - -ComputablePass::ComputablePass(ComputablePass&& other) noexcept - : mMaterialPass(std::move(other.mMaterialPass)) - , mImageMemoryBarriers(std::move(other.mImageMemoryBarriers)) - , mBufferMemoryBarriers(std::move(other.mBufferMemoryBarriers)) - , mDispatchGroupCount(other.mDispatchGroupCount) - , mNeedsExecutionBarrier( other.mNeedsExecutionBarrier ) -{ - mPipeline = other.mPipeline; - other.mPipeline = VK_NULL_HANDLE; - mPipelineLayout = other.mPipelineLayout; - other.mPipelineLayout = VK_NULL_HANDLE; -} - -ComputablePass::~ComputablePass() -{ - assert(mPipeline == VK_NULL_HANDLE); -} - -Computable::Computable(Vulkan& vulkan, Material&& material) - : mMaterial(std::move(material)) - , mVulkan(vulkan) -{ -} - -Computable::Computable(Computable&& other) noexcept - : mMaterial(std::move(other.mMaterial)) - , mVulkan(other.mVulkan) - , mPasses(std::move(other.mPasses)) - , mImageInputMemoryBarriers(std::move(other.mImageInputMemoryBarriers)) - , mImageOutputMemoryBarriers(std::move(other.mImageOutputMemoryBarriers)) - , mBufferOutputMemoryBarriers(std::move(other.mBufferOutputMemoryBarriers)) +ComputablePassBase::ComputablePassBase( ComputablePassBase&& other) noexcept + : mDispatchGroupCount( other.mDispatchGroupCount ) + , mMaterialPass( other.mMaterialPass ) { + other.mDispatchGroupCount = {1,1,1}; } -void ComputablePass::SetDispatchThreadCount(const std::array threadCount) +void ComputablePassBase::SetDispatchThreadCount( const std::array threadCount ) { std::array groupCount; const auto& cWorkGroupLocalSize = mMaterialPass.mShaderPass.m_shaderPassDescription.m_workGroupSettings.localSize; if (cWorkGroupLocalSize[0] == 0 || cWorkGroupLocalSize[1] == 0 || cWorkGroupLocalSize[2] == 0) { // Workgroup local size must be defined in the shader definition if we want to use this function - assert(0); + assert( 0 ); return; } groupCount[0] = (threadCount[0] + cWorkGroupLocalSize[0] - 1) / cWorkGroupLocalSize[0]; groupCount[1] = (threadCount[1] + cWorkGroupLocalSize[1] - 1) / cWorkGroupLocalSize[1]; groupCount[2] = (threadCount[2] + cWorkGroupLocalSize[2] - 1) / cWorkGroupLocalSize[2]; - SetDispatchGroupCount(groupCount); -} - - -Computable::~Computable() -{ - for (auto& pass : mPasses) - { - vkDestroyPipeline(mVulkan.m_VulkanDevice, pass.mPipeline, nullptr); - pass.mPipeline = VK_NULL_HANDLE; - } -} - - -enum class BindingAccess { - ReadOnly, - WriteOnly, - ReadWrite -}; -static VkAccessFlags BindingAccessToBufferAccessMask(BindingAccess access) -{ - switch (access) { - case BindingAccess::ReadOnly: - return VK_ACCESS_SHADER_READ_BIT; - case BindingAccess::WriteOnly: - return VK_ACCESS_SHADER_WRITE_BIT; - case BindingAccess::ReadWrite: - default: - return VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT; - } -} - -/// @brief Structure holding the 'use' information for one binding -/// @tparam VK_TYPE Vulkan buffer type for this list of bindings (eg VkImage, VkBuffer) -template -struct BindingUseData -{ - typedef VK_BUFFERTYPE buffer_type; - BindingUseData(uint32_t _passIdx, BindingAccess _access, VK_BUFFERTYPE _buffer) : passIdx(_passIdx), access(_access), buffer(_buffer) {} - uint32_t passIdx; - BindingAccess access; - VK_BUFFERTYPE buffer; -}; - - -bool Computable::Init() -{ - LOGI("Creating Computable"); - - const auto& materialPasses = mMaterial.GetMaterialPasses(); - mPasses.reserve(materialPasses.size() ); - - // - // Previour pass buffer usage data (for all passes before the current one). - // - struct ImageUsage { - VkImage image; - uint32_t numMips; - uint32_t firstMip; - VkImageLayout imageLayout; - ImageUsage( VkImage _image, uint32_t _numMips, uint32_t _firstMip, VkImageLayout _imageLayout ) noexcept : image( _image ), numMips( _numMips ), firstMip( _firstMip ), imageLayout(_imageLayout) {}; - ImageUsage( const ImageInfo& other ) noexcept : image( other.image ), numMips( other.imageViewNumMips ), firstMip( other.imageViewFirstMip ), imageLayout( other.imageLayout) {} - bool operator==( const ImageUsage& other ) const noexcept { - return image == other.image && ((firstMip < other.firstMip + other.numMips) && (firstMip + numMips > other.firstMip)); - } - }; - std::vector> prevImageUsages; - std::vector> prevBufferUsages; - prevImageUsages.reserve(64); - prevBufferUsages.reserve(64); - - // Lambda helper! Calls emitFn when the buffer passed to 'currentUsage' was last accessed in a differnet way by a previous pass (ie it is in prevPassUsages as a write and was not read from in a pass between current use and the previous write, also applies for read in a previous pass and now a write). - // Returns true if we need an execution barrier emitting. - // We want to buffer/image barrier on Write then Read patterns, and on Read then write patterns (we need to do the layout transition). - const auto& emitBarrier = [](const auto& currentUsage, const auto& prevPassUsages, const auto& emitFn) -> bool { - - // scan backwards looking for prior uses of this buffer/image... - int priorUseIdx = (int)prevPassUsages.size(); - while (priorUseIdx-- > 0) - { - const auto& priorUsage = prevPassUsages[priorUseIdx]; - if (currentUsage.buffer == priorUsage.buffer) - { - // if we found a prior use determine what kind of barrier we need to insert. - const auto& priorUsage = prevPassUsages[priorUseIdx]; - if (priorUsage.access == BindingAccess::ReadOnly) - { - if (currentUsage.access == BindingAccess::ReadOnly) - { - // Read followed by Read. - // do nothing... . Doesnt even need an execution barrier. - // HOWEVER DONT EARLY OUT BECAUSE WE MAY ALSO BIND AS A WRITE (albeit on a different frame - we need to sort that out, happens if we read the 'previous frame' as a texture and write the 'current frame' as an image in the same shader pass) - } - else - { - // Read followed by Write or ReadWrite. - // We used to only emit an execution barrier but we now emit a barrier to do the layout transition - emitFn(priorUsage, currentUsage); - return true; - } - } - else // priorUsage.access != BindingAccess::ReadOnly - { - // Write followed by something (read, write, readwrite). - // emit barrier. - emitFn(priorUsage, currentUsage); - return true; - } - } - } - return false; - }; - - - for (uint32_t materialPassIdx = 0; materialPassIdx < (uint32_t) materialPasses.size(); ++materialPassIdx) - { - const auto& materialPass = materialPasses[materialPassIdx]; - const auto& shaderPass = materialPass.mShaderPass; - assert(std::holds_alternative>(shaderPass.m_shaders.m_modules)); - - // Usually pipeline layout will be stored with the shader but if the descriptor set layout is 'dynamic' (and stored in the materialPass) the pipeline layout will also be in the materialPass. - VkPipelineLayout pipelineLayout = shaderPass.GetPipelineLayout().GetVkPipelineLayout(); - if (pipelineLayout == VK_NULL_HANDLE) - pipelineLayout = materialPass.GetPipelineLayout().GetVkPipelineLayout(); - - VkPipeline pipeline; - const ShaderModuleT& shaderModule = shaderPass.m_shaders.Get>(); - LOGI("CreateComputePipeline: %s\n", shaderPass.m_shaderPassDescription.m_computeName.c_str()); - - if (!mVulkan.CreateComputePipeline(VK_NULL_HANDLE, - pipelineLayout, - shaderModule.GetVkShaderModule(), - materialPass.GetSpecializationConstants().GetVkSpecializationInfo(), - &pipeline)) - { - // Error - return false; - } - - // - // Build any memory barriers between passes - // - bool passNeedsExecutionBarrier = false; // Set if the pass needs (at least) an execution barrier. Adds barriers for WAR (write after read) use cases. - std::vector imageMemoryBarriers; - std::vector bufferMemoryBarriers; - - // Barriers for Image bindings - for (const auto& passImageBindings : materialPass.GetImageBindings()) - { - for (const auto& passImageBinding : passImageBindings.first) // image binding can be an array of bindings - { - const auto passUsage = BindingUseData( materialPassIdx, passImageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, ImageUsage(passImageBinding) ); - - passNeedsExecutionBarrier |= emitBarrier(passUsage, prevImageUsages, [&imageMemoryBarriers](auto& prevUsage, auto& currentUsage) { - const auto& image = currentUsage.buffer; - imageMemoryBarriers.push_back(VkImageMemoryBarrier{ - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, - nullptr, - VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask - VK_ACCESS_SHADER_READ_BIT, //dstAccessMask - prevUsage.buffer.imageLayout,//oldLayout; - currentUsage.buffer.imageLayout,//newLayout; - VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; - image.image, //image; - { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; - image.firstMip, //baseMipLevel; - image.numMips, //mipLevelCount; - 0, //baseLayer; - 1, //layerCount; - }//subresourceRange; - }); - }); - } - } - - // Barriers for texture bindings - for (const auto& passTextureBindings : materialPass.GetTextureBindings()) - { - for (const auto& passTextureBinding : passTextureBindings.first) // texture binding can be an array of bindings - { - const auto passUsage = BindingUseData(materialPassIdx, BindingAccess::ReadOnly/*always readonly*/, ImageUsage(*passTextureBinding)); - - passNeedsExecutionBarrier |= emitBarrier(passUsage, prevImageUsages, - [&imageMemoryBarriers](auto& prevUsage, auto& currentUsage) { - const auto& image = currentUsage.buffer; - imageMemoryBarriers.push_back(VkImageMemoryBarrier{ - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, - nullptr, - VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask - VK_ACCESS_SHADER_READ_BIT, //dstAccessMask - prevUsage.buffer.imageLayout, //oldLayout; - currentUsage.buffer.imageLayout, //newLayout; - VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; - image.image, //image; - { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; - image.firstMip, //baseMipLevel; - image.numMips, //mipLevelCount; - 0, //baseLayer; - 1, //layerCount; - }//subresourceRange; - }); - }); - } - } - - // Barriers for buffer bindings - for (const auto& passBufferBindings : materialPass.GetBufferBindings()) - { - for (const auto& passBufferBinding : passBufferBindings.first) // buffer binding can be an array of bindings - { - const auto passUsage = BindingUseData(materialPassIdx, passBufferBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passBufferBinding.buffer); - - passNeedsExecutionBarrier |= emitBarrier(passUsage, prevBufferUsages, - [&](auto& prevUsage, auto& currentUsage) { - VkBuffer bufferUsage = currentUsage.buffer; - //LOGI("Pass %d: Buffer Barrier: %s", materialPassIdx, materialPass.mShaderPass.m_shaderPassDescription.m_sets[0].m_descriptorTypes[tmp].names[0].c_str()); - bufferMemoryBarriers.push_back(VkBufferMemoryBarrier{ - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - nullptr, - BindingAccessToBufferAccessMask(prevUsage.access), //srcAccessMask - BindingAccessToBufferAccessMask(currentUsage.access), //dstAccessMask - VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; - bufferUsage, //buffer; - 0, //offset - VK_WHOLE_SIZE //size - }); - }); - } - } - - mPasses.push_back( ComputablePass{ materialPass, pipeline, pipelineLayout, std::move(imageMemoryBarriers), std::move(bufferMemoryBarriers), passNeedsExecutionBarrier } ); - - // - // Store out the arrays of buffers used by this pass - // - - for (const auto& imageBindings : materialPass.GetImageBindings()) - { - BindingAccess access = imageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite; - for (const auto& imageBinding : imageBindings.first) - { - prevImageUsages.push_back( { materialPassIdx, access, ImageUsage{imageBinding.image, imageBinding.imageViewNumMips, imageBinding.imageViewFirstMip, imageBinding.imageLayout} } ); - } - } - for (const auto& textureBinding : materialPass.GetTextureBindings()) - { - for (const auto& texture : textureBinding.first) - { - const auto& textureVulkan = apiCast(texture); - if (!textureVulkan->Image.IsEmpty()) // Only consider for barriers if the texture has a buffer/image, texture objects containing only a sampler can be ignored. - { - prevImageUsages.push_back( {materialPassIdx, BindingAccess::ReadOnly, {textureVulkan->GetVkImage(), textureVulkan->MipLevels, textureVulkan->FirstMip, textureVulkan->GetVkImageLayout()}} ); - } - } - } - for (const auto& bufferBinding : materialPass.GetBufferBindings()) - { - LOGI("Buffer Binding: %s", materialPass.mShaderPass.m_shaderPassDescription.m_sets[bufferBinding.second.setIndex].m_descriptorTypes[bufferBinding.second.setBinding.index].names[0].c_str()); - - for (const auto& buffer : bufferBinding.first) - { - prevBufferUsages.push_back({ materialPassIdx, bufferBinding.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, buffer.buffer }); - } - } - } - - // Create the final set of barriers. - // Any bindings that (may) write and were not used as a (read only) input to a subsequent ComputePass will be assumed as being outputs from the Computable (and will get memory barriers built) - - // Helper to scan through passUsages and call emitFn on any bindings that have a write as their last access type (ie things that are being output from the Computable and haven't already been barriered). - // Mangles/clears passUsages. - const auto& emitOutputBarrier = [](auto&& passUsages, const auto& emitFn) -> void - { - while( !passUsages.empty() ) - { - std::optional::value_type::buffer_type> currentBuffer {}; - for (auto revIt = passUsages.rbegin(); revIt != passUsages.rend(); ) - { - if (!currentBuffer) - { - if (revIt->access == BindingAccess::ReadOnly) - { - // last use of this binding was a readonly - no need for any output barriers - currentBuffer = revIt->buffer; - } - else - { - // last use of this binding is write or read-write - currentBuffer = revIt->buffer; - // pushback - emitFn(revIt->buffer); - } - } - if (currentBuffer == revIt->buffer) - { - // Once we have found a candidate buffer remove all prior references to it (and itself). - revIt = std::reverse_iterator(passUsages.erase((++revIt).base())); - } - else - { - ++revIt; - } - } - } - }; - - emitOutputBarrier(prevBufferUsages, - [this](const VkBuffer& buffer) -> void { - mBufferOutputMemoryBarriers.push_back(VkBufferMemoryBarrier{ - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - nullptr, - VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask - VK_ACCESS_SHADER_READ_BIT, //dstAccessMask - VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; - buffer, //buffer; - 0, //offset - VK_WHOLE_SIZE //size - }); - }); - - emitOutputBarrier(prevImageUsages, - [this](const ImageUsage& image) -> void { - mImageOutputMemoryBarriers.push_back(VkImageMemoryBarrier{ - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, - nullptr, - VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask - VK_ACCESS_SHADER_READ_BIT, //dstAccessMask - VK_IMAGE_LAYOUT_GENERAL, //oldLayout; - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,//newLayout; - VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; - image.image, //image; - { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; - image.firstMip, //baseMipLevel; - image.numMips, //mipLevelCount; - 0, //baseLayer; - 1, //layerCount; - }//subresourceRange; - }); - }); - - for (uint32_t whichBuffer = 0; whichBuffer < mMaterial.GetNumFrameBuffers(); ++whichBuffer) - { - mMaterial.UpdateDescriptorSets(whichBuffer); - } - return true; -} - -const std::string& Computable::GetPassName( uint32_t passIdx ) const -{ - const auto& passNames = mMaterial.m_shader.GetShaderPassIndicesToNames(); - assert( passIdx <= passNames.size() ); - return passNames[passIdx]; -} - -void Computable::SetDispatchGroupCount(uint32_t passIdx, const std::array& groupCount) -{ - mPasses[passIdx].SetDispatchGroupCount(groupCount); -} - -void Computable::SetDispatchThreadCount(uint32_t passIdx, const std::array& threadCount) -{ - mPasses[passIdx].SetDispatchThreadCount(threadCount); -} - -void Computable::DispatchPass(VkCommandBuffer cmdBuffer, const ComputablePass& computablePass, uint32_t bufferIdx) const -{ - // Add image barriers (if needed) - if (computablePass.NeedsBarrier()) - { - const auto& imageMemoryBarriers = computablePass.GetVkImageMemoryBarriers(); - const auto& bufferMemoryBarriers = computablePass.GetVkBufferMemoryBarriers(); - - // Barrier on memory, with correct layouts set. - vkCmdPipelineBarrier(cmdBuffer, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // srcMask, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // dstMask, - 0, - 0, nullptr, - (uint32_t)bufferMemoryBarriers.size(), - bufferMemoryBarriers.empty() ? nullptr : bufferMemoryBarriers.data(), - (uint32_t)imageMemoryBarriers.size(), - imageMemoryBarriers.empty() ? nullptr : imageMemoryBarriers.data()); - } - - // Bind the pipeline for this material - vkCmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipeline); - - // Bind everything the shader needs - const std::span descriptorSets = computablePass.mMaterialPass.GetVkDescriptorSets(bufferIdx); - vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipelineLayout, 0, descriptorSets.size(), descriptorSets.data(), 0, nullptr); - - // Dispatch the compute task - vkCmdDispatch(cmdBuffer, computablePass.GetDispatchGroupCount()[0], computablePass.GetDispatchGroupCount()[1], computablePass.GetDispatchGroupCount()[2]); + SetDispatchGroupCount( groupCount ); } diff --git a/framework/code/material/computable.hpp b/framework/code/material/computable.hpp index a2d67e0..d7da3c6 100644 --- a/framework/code/material/computable.hpp +++ b/framework/code/material/computable.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,89 +12,211 @@ #include #include #include -#include "material/material.hpp" +#include "shader.hpp" +#include "material.hpp" + // Forward Declarations -template class ShaderT; -class Vulkan; +class CommandListBase; +class MaterialBase; +class MaterialPassBase; +template class Computable; +template class ComputablePass; +template class Material; +template class CommandList; +class ImageMemoryBarrierBase +{ +protected: + ImageMemoryBarrierBase() noexcept = default; + // ok to copy (default copy operators!) +}; + +template +class ImageMemoryBarrier final : public ImageMemoryBarrierBase +{ + ImageMemoryBarrier( const ImageMemoryBarrier& ) = delete; + ImageMemoryBarrier& operator=( const ImageMemoryBarrier& ) = delete; + ImageMemoryBarrier() = delete; + ~ImageMemoryBarrier() = delete; + static_assert(sizeof( ImageMemoryBarrier ) != sizeof( ImageMemoryBarrierBase )); // static assert if not specialized +}; + +class BufferMemoryBarrierBase +{ +protected: + BufferMemoryBarrierBase() noexcept = default; + // ok to copy (default copy operators!) +}; + +template +class BufferMemoryBarrier final : public BufferMemoryBarrierBase +{ + BufferMemoryBarrier( const BufferMemoryBarrier& ) = delete; + BufferMemoryBarrier& operator=( const BufferMemoryBarrier& ) = delete; + BufferMemoryBarrier() = delete; + ~BufferMemoryBarrier() = delete; + static_assert(sizeof( BufferMemoryBarrier ) != sizeof( BufferMemoryBarrierBase )); // static assert if not specialized +}; + /// Encapsulates a 'computable' pass, contains the materialpass, pipeline, etc). /// Similar to a DrawablePass but without the vertex buffer /// @ingroup Material -class ComputablePass +class ComputablePassBase { - ComputablePass(const ComputablePass&) = delete; - ComputablePass& operator=(const ComputablePass&) = delete; + ComputablePassBase(const ComputablePassBase&) = delete; + ComputablePassBase& operator=(const ComputablePassBase&) = delete; public: - ComputablePass(const MaterialPass& materialPass, VkPipeline pipeline, VkPipelineLayout pipelineLayout, std::vector imageMemoryBarriers, std::vector bufferMemoryBarriers, bool needsExecutionBarrier) + template using tApiDerived = ComputablePass; // make apiCast work! + /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) + void SetDispatchGroupCount( std::array count ) { mDispatchGroupCount = count; } + const auto& GetDispatchGroupCount() const { return mDispatchGroupCount; } + /// number of global workgroup threads to run (value before the local workgroup sizes are accounted for). Requires "WorkGroup" : { "LocalSize": {x,y,z} } in the shader definition json. + void SetDispatchThreadCount( std::array count ); + +protected: + ComputablePassBase( const MaterialPassBase& materialPass ) noexcept : mMaterialPass(materialPass) - , mPipeline(pipeline) - , mPipelineLayout(pipelineLayout) - , mImageMemoryBarriers(std::move(imageMemoryBarriers)) - , mBufferMemoryBarriers(std::move(bufferMemoryBarriers)) - , mNeedsExecutionBarrier(needsExecutionBarrier) {} - ComputablePass(ComputablePass&&) noexcept; - ~ComputablePass(); + ComputablePassBase( ComputablePassBase&& ) noexcept; - const std::vector& GetVkDescriptorSets() const { return mMaterialPass.GetVkDescriptorSets(); } - const auto& GetVkImageMemoryBarriers() const { return mImageMemoryBarriers; } - const auto& GetVkBufferMemoryBarriers() const { return mBufferMemoryBarriers; } - const bool NeedsBarrier() const { return mNeedsExecutionBarrier || (!mImageMemoryBarriers.empty()) || (!mBufferMemoryBarriers.empty()); }; ///< @return true if there needs to be a barrier before executing this compute pass + const MaterialPassBase& mMaterialPass; + std::array mDispatchGroupCount{1u,1u,1u}; +}; - /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) - void SetDispatchGroupCount(std::array count) { mDispatchGroupCount = count; } - const auto& GetDispatchGroupCount() const { return mDispatchGroupCount; } - /// number of global workgroup threads to run (value before the local workgroup sizes are accounted for). Requires "WorkGroup" : { "LocalSize": {x,y,z} } in the shader definition json. - void SetDispatchThreadCount(std::array count); - const MaterialPass& mMaterialPass; +template +class ComputablePass final : public ComputablePassBase +{ + ComputablePass() = delete; + ~ComputablePass() = delete; + static_assert(sizeof( ComputablePass ) != sizeof( ComputablePassBase )); // static assert if not specialized +}; - VkPipeline mPipeline = VK_NULL_HANDLE; // Owned by us - VkPipelineLayout mPipelineLayout; // Owned by ShaderPass or MaterialPass +/// Encapsulates a 'computable' object, contains the MaterialBase, computable passes. +/// Similar to a Drawable but without the vertex buffer +class ComputableBase +{ + ComputableBase(const ComputableBase&) = delete; + ComputableBase& operator=(const ComputableBase&) = delete; protected: - std::vector mImageMemoryBarriers; ///< Image barriers for ENTRY in to this pass. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho - std::vector mBufferMemoryBarriers; ///< Buffer barriers for ENTRY in to this pass. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho - std::array mDispatchGroupCount{ 1u,1u,1u }; - bool mNeedsExecutionBarrier = false;///< Denotes if we need an execution barrier for ENTRY to this pass (even if there are no image or buffer barriers). + ComputableBase() noexcept {} +public: + template using tApiDerived = Computable; // make apiCast work! + virtual ~ComputableBase() {} + + /// @brief Initialize the computable (call once, prior to dispatching) + /// @return true on success + virtual bool Init() = 0; + + /// Return the pass name for the given compute pass index + virtual const std::string& GetPassName( uint32_t passIdx ) const = 0; + + /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) + virtual void SetDispatchGroupCount(uint32_t passIdx, const std::array& groupCount) = 0; + /// number of global workgroup threads to run (value before the local workgroup sizes are accounted for). Requires "WorkGroup" : { "LocalSize": {x,y,z} } in the shader definition json. + virtual void SetDispatchThreadCount(uint32_t passIdx, const std::array& threadCount) = 0; + + /// Add all the commands to cmdList needed to 'dispatch' all the passes contained in this Computable + /// Will add necissary barriers before the first dispatch, between the passes and will bind the appropriate descriptor sets needed by each. + virtual void Dispatch(CommandListBase& commandList, uint32_t bufferIdx, bool addTimers) const = 0; + + /// Add the commands to barrier / syncronize all buffers written by the computable. + virtual void AddOutputBarriersToCmdList(CommandListBase& commandList) const = 0; }; -/// Encapsulates a 'computable' object, contains the Material, computable passes. -/// Similar to a Drawable but without the vertex buffer -class Computable +template +class Computable final : public ComputableBase { Computable(const Computable&) = delete; Computable& operator=(const Computable&) = delete; + public: - Computable(Vulkan& vulkan, Material&&); - ~Computable(); - Computable(Computable&&) noexcept; + Computable(T_GFXAPI&, Material&&) noexcept; + Computable(T_GFXAPI&, std::unique_ptr material) noexcept; + Computable(Computable&&) noexcept; + ~Computable() override; + + /// @brief Initialize the computable (call once, prior to dispatching) + /// @return true on success + bool Init() override; - bool Init(); const auto& GetPasses() const { return mPasses; } const auto& GetImageInputMemoryBarriers() const { return mImageInputMemoryBarriers; } const auto& GetImageOutputMemoryBarriers() const { return mImageOutputMemoryBarriers; } const auto& GetBufferOutputMemoryBarriers() const { return mBufferOutputMemoryBarriers; } - const std::string& GetPassName( uint32_t passIdx ) const; + /// Return the pass name for the given compute pass index + const std::string& GetPassName( uint32_t passIdx ) const override; /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) - void SetDispatchGroupCount(uint32_t passIdx, const std::array& groupCount); + void SetDispatchGroupCount(uint32_t passIdx, const std::array& groupCount) override; /// number of global workgroup threads to run (value before the local workgroup sizes are accounted for). Requires "WorkGroup" : { "LocalSize": {x,y,z} } in the shader definition json. - void SetDispatchThreadCount(uint32_t passIdx, const std::array& threadCount); + void SetDispatchThreadCount(uint32_t passIdx, const std::array& threadCount) override; /// Add all the commands to the cmdBuffer needed to 'dispatch' the given pass. /// Will add necissary barriers before the dispatch, along with binding the appropriate descriptor sets needed by the pass. - void DispatchPass(VkCommandBuffer cmdBuffer, const ComputablePass& computablePass, uint32_t bufferIdx) const; + void DispatchPass(CommandList& cmdList, const ComputablePass& computablePass, uint32_t bufferIdx) const; + + /// Add all the commands to cmdList needed to 'dispatch' all the passes contained in this Computable + /// Will add necissary barriers before the first dispatch, between the passes and will bind the appropriate descriptor sets needed by each. + void Dispatch(CommandListBase& commandList, uint32_t bufferIdx, bool addTimers) const override; + void Dispatch(CommandList& commandList, uint32_t bufferIdx, bool addTimers) const; + + /// Add the commands to barrier / syncronize all buffers written by the computable. + void AddOutputBarriersToCmdList(CommandListBase& commandList) const override; + void AddOutputBarriersToCmdList(CommandList& commandList) const; protected: - Material mMaterial; - Vulkan& mVulkan; - std::vector mPasses; - std::vector mImageInputMemoryBarriers; // barriers for ENTRY to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho - std::vector mImageOutputMemoryBarriers; // barriers for EXIT to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho - std::vector mBufferOutputMemoryBarriers; // barriers for EXIT to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + T_GFXAPI& mGfxApi; + Material mMaterial; + std::vector> mPasses; + std::vector> mImageInputMemoryBarriers; // barriers for ENTRY to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + std::vector> mImageOutputMemoryBarriers; // barriers for EXIT to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + std::vector> mBufferOutputMemoryBarriers; // barriers for EXIT to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho }; + + +template +Computable::Computable(T_GFXAPI& gfxApi, Material&& material) noexcept + : ComputableBase() + , mGfxApi(gfxApi) + , mMaterial(std::move(material)) +{ +} + +template +Computable::Computable(T_GFXAPI& gfxapi, std::unique_ptr material) noexcept + : ComputableBase() + , mGfxApi( gfxapi ) + , mMaterial(std::move( *apiCast( material.get() ) )) +{ +} + +template +Computable::Computable(Computable&& other) noexcept + : mGfxApi(other.mGfxApi) + , mMaterial(std::move(other.mMaterial)) + , mPasses(std::move(other.mPasses)) + , mImageInputMemoryBarriers(std::move(other.mImageInputMemoryBarriers)) + , mImageOutputMemoryBarriers(std::move(other.mImageOutputMemoryBarriers)) + , mBufferOutputMemoryBarriers(std::move(other.mBufferOutputMemoryBarriers)) +{ +} + +template +Computable::~Computable() +{ +} + +template +const std::string& Computable::GetPassName( uint32_t passIdx ) const +{ + const auto& passNames = static_cast(mMaterial).GetShader().GetShaderPassIndicesToNames(); + assert( passIdx <= passNames.size() ); + return passNames[passIdx]; +} + diff --git a/framework/code/material/descriptorSetDescription.hpp b/framework/code/material/descriptorSetDescription.hpp index 46eaba1..b7aadc8 100644 --- a/framework/code/material/descriptorSetDescription.hpp +++ b/framework/code/material/descriptorSetDescription.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -27,7 +27,8 @@ class DescriptorSetDescription ImageStorage, InputAttachment, DrawIndirectBuffer, - AccelerationStructure ///< Ray Tracing + AccelerationStructure, ///< Ray Tracing + DescriptorTable ///< Dx12 descriptor table (set) reference }; class StageFlag { @@ -65,16 +66,19 @@ class DescriptorSetDescription std::vector names; uint32_t count; bool readOnly; + int descriptorIndex; - DescriptorTypeAndCount(DescriptorType _type, StageFlag _stages, std::vector _names, int _count = -1 /* if un-set (-1), default to the number of names) */, bool _readOnly = false ) + DescriptorTypeAndCount(DescriptorType _type, StageFlag _stages, std::vector _names, int _count /*= -1*/ /* if un-set (-1), default to the number of names) */, bool _readOnly /*= false*/, int _descriptorIndex /*= -1*/) : type(_type) , stages(_stages) , names(_names) , count(_count) , readOnly(_readOnly) + , descriptorIndex(_descriptorIndex) { } - }; + std::string m_name; + uint32_t m_setIndex = 0; ///< numbered from 0 (0 is the root descriptor on DX12) std::vector m_descriptorTypes; }; diff --git a/framework/code/material/descriptorSetLayout.hpp b/framework/code/material/descriptorSetLayout.hpp index 383e939..eac0652 100644 --- a/framework/code/material/descriptorSetLayout.hpp +++ b/framework/code/material/descriptorSetLayout.hpp @@ -7,52 +7,106 @@ //============================================================================================================ #pragma once -#include -#include +#include #include #include -#include //TEMP -#include +#include "descriptorSetDescription.hpp" -// Forward declares -class DescriptorSetDescription; -class Vulkan; -/// Representation of the descriptor set layout. -/// Builds/owns the Vulkan Descriptor Set Layout that can be used to allocate the descriptor sets. -/// Also has a mapping from descriptor slots name (nice name) to the their shader binding index. +/// Base class for the descriptor set layout. +/// Graphics api independent. /// @ingroup Material -class DescriptorSetLayout +class DescriptorSetLayoutBase { - DescriptorSetLayout& operator=(const DescriptorSetLayout&) = delete; - DescriptorSetLayout(const DescriptorSetLayout&) = delete; -public: - DescriptorSetLayout(); - ~DescriptorSetLayout(); - DescriptorSetLayout(DescriptorSetLayout&&) noexcept; - - bool Init(Vulkan& vulkan, const DescriptorSetDescription&); - void Destroy(Vulkan& vulkan); - - static VkDescriptorSetLayout CreateVkDescriptorSetLayout(Vulkan& vulkan, const std::span descriptorSetLayoutBindings); - static void CalculatePoolSizes(const std::span descriptorSetLayoutBindings, std::vector& descriptorPoolSizes/*output*/); + DescriptorSetLayoutBase& operator=(const DescriptorSetLayoutBase&) = delete; + DescriptorSetLayoutBase(const DescriptorSetLayoutBase&) = delete; +protected: + DescriptorSetLayoutBase() noexcept; + ~DescriptorSetLayoutBase(); + DescriptorSetLayoutBase(DescriptorSetLayoutBase && other) noexcept + : m_nameToBinding(std::move(other.m_nameToBinding)) + {} - const auto& GetVkDescriptorSetLayoutBinding() const { return m_descriptorSetLayoutBindings; } - const auto& GetVkDescriptorSetLayout() const { return m_descriptorSetLayout; } + bool Init(const DescriptorSetDescription&); +public: const auto& GetNameToBinding() const { return m_nameToBinding; } - const auto& GetDescriptorPoolSizes() const { return m_descriptorPoolSizes; } struct BindingTypeAndIndex { - VkDescriptorType type; - uint32_t index; - bool isArray; - bool isReadOnly; + DescriptorSetDescription::DescriptorType type; + uint32_t index; ///< index within the descriptor set + bool isArray; + bool isReadOnly; + }; + struct DescriptorBinding { + uint32_t setIndex; ///< descriptor set index + BindingTypeAndIndex setBinding; ///< binding within the descriptor set }; + private: std::map m_nameToBinding; ///< For each named descriptor slot store the relevant binding index (one name per binding for simplicity) ///< @TODO should this be in here, or in the materialPass. +}; + + +struct DescriptorTypeAndLocation { + DescriptorTypeAndLocation(uint32_t _setIndex, DescriptorSetLayoutBase::BindingTypeAndIndex _typeAndIndex) + : setIndex(_setIndex) + , index(_typeAndIndex.index) + , isArray(_typeAndIndex.isArray) + , isReadOnly(_typeAndIndex.isReadOnly) + {} + uint32_t setIndex; ///< index of descriptor set / table + uint32_t index; ///< index of descriptor within set / table + bool isArray; ///< is descriptor an array + bool isReadOnly; ///< is descriptor readonly +}; + + +inline DescriptorSetLayoutBase::DescriptorSetLayoutBase() noexcept +{ +} + +inline DescriptorSetLayoutBase::~DescriptorSetLayoutBase() +{ +} + + +inline bool DescriptorSetLayoutBase::Init(const DescriptorSetDescription& description) +{ + uint32_t index = 0; + for (const auto& it : description.m_descriptorTypes) + { + BindingTypeAndIndex bindingTypeAndIndex {}; + bindingTypeAndIndex.isReadOnly = it.readOnly; + bindingTypeAndIndex.isArray = it.count!=1; + bindingTypeAndIndex.type = it.type; + + if (it.descriptorIndex < 0) + // Index of < 0 denotes we want to use sequential descriptor binding indices. + ///TODO: look for collisions or determine how/if we want to handle out of order desciptor indices or enforce shaders that have an explicit binding index to define indices for all descriptors. + bindingTypeAndIndex.index = index++; + else + bindingTypeAndIndex.index = it.descriptorIndex; + + assert(it.names.size() <= 1); ///TODO: only one name supported, needs to store the index within the descriptor as well as the binding index if we want to support this! (the 'for' loop below is not the full implementation) + for (const auto& name : it.names) + { + auto nameToBindingEmplaced = m_nameToBinding.try_emplace(name, bindingTypeAndIndex); + assert(nameToBindingEmplaced.second); // name must be unique + } + } + return true; +} + + +/// Templated (by graphics API) derived version of DescriptorSetLayoutBase +/// Graphics api may want to specialize this. +template +class DescriptorSetLayout : public DescriptorSetLayoutBase +{ +public: + DescriptorSetLayout() noexcept = delete; // Expecting that this template be specialized + ~DescriptorSetLayout() = delete; // Expecting that this template be specialized + DescriptorSetLayout(DescriptorSetLayout&&) noexcept = delete; // Expecting that this template be specialized - // Vulkan objects - VkDescriptorSetLayout m_descriptorSetLayout = VK_NULL_HANDLE; ///< Vulkan descriptor set layout object. Can be VK_NULL_HANDLE after Init if there are bindings with 'dynamic' descriptorCount (0) - std::vector m_descriptorSetLayoutBindings; - std::vector m_descriptorPoolSizes; + static_assert(sizeof(DescriptorSetLayout) != sizeof(DescriptorSetLayoutBase)); // Expecting that this template be specialized }; diff --git a/framework/code/material/drawable.cpp b/framework/code/material/drawable.cpp deleted file mode 100644 index 380d45d..0000000 --- a/framework/code/material/drawable.cpp +++ /dev/null @@ -1,1005 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#include "drawable.hpp" -#include "vulkan/material.hpp" -#include "shader.hpp" -#include "shaderDescription.hpp" -#include "vulkan/shaderModule.hpp" -#include "system/os_common.h" -#include "mesh/meshHelper.hpp" -#include "mesh/instanceGenerator.hpp" -#include "vulkan/extensionHelpers.hpp" -#include -#include - -DrawablePass::~DrawablePass() -{ - assert(mPipeline == VK_NULL_HANDLE); -} - -const DrawablePass* Drawable::GetDrawablePass(const std::string& passName) const -{ - auto it = mPassNameToIndex.find(passName); - if (it != mPassNameToIndex.end()) - { - return &mPasses[it->second]; - } - return nullptr; -} - - -Drawable::Drawable(Vulkan& vulkan, Material&& material) - : mMaterial(std::move(material)) - , mVulkan(vulkan) -{ -} - -Drawable::Drawable(Drawable&& other) noexcept - : mMaterial(std::move(other.mMaterial)) - , mVulkan( other.mVulkan ) - , mMeshObject(std::move(other.mMeshObject)) - , mPasses(std::move(other.mPasses)) - , mPassNameToIndex(std::move(other.mPassNameToIndex)) - , mPassMask(other.mPassMask) - , mVertexInstanceBuffer(std::move(other.mVertexInstanceBuffer)) - , mDrawIndirectBuffer(std::move(other.mDrawIndirectBuffer)) -{ - other.mPassMask = 0; -} - -Drawable::~Drawable() -{ - for (auto& pass : mPasses) - { - vkDestroyPipeline(mVulkan.m_VulkanDevice, pass.mPipeline, nullptr); - pass.mPipeline = VK_NULL_HANDLE; - } -} - -static VkBlendFactor BlendFactorToVk( ShaderPassDescription::BlendFactor bf) -{ - switch( bf ) - { - case ShaderPassDescription::BlendFactor::Zero: - return VK_BLEND_FACTOR_ZERO; - case ShaderPassDescription::BlendFactor::One: - return VK_BLEND_FACTOR_ONE; - case ShaderPassDescription::BlendFactor::SrcAlpha: - return VK_BLEND_FACTOR_SRC_ALPHA; - case ShaderPassDescription::BlendFactor::OneMinusSrcAlpha: - return VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA; - case ShaderPassDescription::BlendFactor::DstAlpha: - return VK_BLEND_FACTOR_DST_ALPHA; - case ShaderPassDescription::BlendFactor::OneMinusDstAlpha: - return VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA; - } - assert( 0 ); - return VK_BLEND_FACTOR_ZERO; -} - -bool Drawable::Init(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional drawIndirectBuffer, std::span passMultisample, std::span subpasses, int nodeId) -{ - mMeshObject = {}; - mVertexInstanceBuffer = {}; - mDrawIndirectBuffer = std::move(drawIndirectBuffer); - mNodeId = nodeId; - - return ReInit(vkRenderPasses, passNames, passMask, passMultisample, subpasses); -} - -bool Drawable::Init(VkRenderPass vkRenderPass, const char* passName, Mesh meshObject, std::optional vertexInstanceBuffer, std::optional drawIndirectBuffer, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses, int nodeId) -{ - mMeshObject = std::move(meshObject); - mVertexInstanceBuffer = std::move(vertexInstanceBuffer); - mDrawIndirectBuffer = std::move(drawIndirectBuffer); - mNodeId = nodeId; - return ReInit( vkRenderPass, passName, passMultisample, subpasses ); -} - -bool Drawable::Init(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, Mesh meshObject, std::optional vertexInstanceBuffer, std::optional drawIndirectBuffer, std::span passMultisample, std::span subpasses, int nodeId) -{ - mMeshObject = std::move(meshObject); - mVertexInstanceBuffer = std::move(vertexInstanceBuffer); - mDrawIndirectBuffer = std::move(drawIndirectBuffer); - mNodeId = nodeId; - return ReInit(vkRenderPasses, passNames, passMask, passMultisample, subpasses); -} - -bool Drawable::Init(VkRenderPass vkRenderPass, const char* passName, Mesh meshObject, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom) -{ - mMeshObject = std::move(meshObject); - mVertexInstanceBuffer = std::nullopt; - mDrawIndirectBuffer = std::nullopt; - mNodeId = -1; - return ReInit(vkRenderPass, passName, nullptr, nullptr, ia_custom, rs_custom); -} - -bool Drawable::ReInit( VkRenderPass vkRenderPass, const char* passName, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses ) -{ - auto multisampleSpan = passMultisample ? std::span(passMultisample, 1) : std::span{}; - auto subpassesSpan = subpasses ? std::span( subpasses, 1 ) : std::span{}; - - return ReInit( { &vkRenderPass,1 }, &passName, 1, multisampleSpan, subpassesSpan ); -} - -bool Drawable::ReInit( VkRenderPass vkRenderPass, const char* passName, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom) -{ - auto multisampleSpan = passMultisample ? std::span(passMultisample, 1) : std::span{}; - auto subpassesSpan = subpasses ? std::span( subpasses, 1 ) : std::span{}; - - return ReInit( { &vkRenderPass,1 }, &passName, 1, multisampleSpan, subpassesSpan, ia_custom, rs_custom); -} - -bool Drawable::ReInit(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses) -{ - // Need default values for InputAssembly and RasterizationState - - VkPipelineInputAssemblyStateCreateInfo ia_custom = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; - ia_custom.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - - // State for rasterization, such as polygon fill mode is defined. - VkPipelineRasterizationStateCreateInfo rs_custom = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; - rs_custom.polygonMode = VK_POLYGON_MODE_FILL; - rs_custom.cullMode = VK_CULL_MODE_NONE; - rs_custom.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - rs_custom.depthClampEnable = VK_FALSE; - rs_custom.rasterizerDiscardEnable = VK_FALSE; - rs_custom.depthBiasEnable = VK_FALSE; - rs_custom.lineWidth = 1.0f; - - return ReInit(vkRenderPasses, passNames, passMask, passMultisample, subpasses, ia_custom, rs_custom); -} - -bool Drawable::ReInit( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom) -{ - assert( passMultisample.empty() || passMultisample.size() == vkRenderPasses.size() ); - mPassMask = passMask; - mPassNameToIndex.clear(); - for (auto& pass : mPasses) - { - vkDestroyPipeline(mVulkan.m_VulkanDevice, pass.mPipeline, nullptr); - pass.mPipeline = VK_NULL_HANDLE; - } - mPasses.clear(); - - const auto& shader = mMaterial.m_shader; - mPasses.reserve(shader.GetShaderPasses().size()); - for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8 && passMask != 0; ++passIdx) - { - bool passMaskSet = ((passMask & 1) != 0); - passMask >>= 1; - if (passMaskSet) - { - // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", passNames[passIdx]); - MaterialPass* pMaterialPass = const_cast(mMaterial.GetMaterialPass(passNames[passIdx])); - if (!pMaterialPass) - { - LOGE(" Pass %s does not exist in shader", passNames[passIdx]); - continue; - } - assert(pMaterialPass); - const auto& shaderPass = pMaterialPass->mShaderPass; - - // Common to all pipelines - // State for rasterization, such as polygon fill mode is defined. - VkPipelineRasterizationStateCreateInfo rs = rs_custom; - const auto& fixedFunctionSettings = shaderPass.m_shaderPassDescription.m_fixedFunctionSettings; - // Don't stomp this value! rs.polygonMode = VK_POLYGON_MODE_FILL; - rs.cullMode = (fixedFunctionSettings.cullBackFace?VK_CULL_MODE_BACK_BIT:0) | (fixedFunctionSettings.cullFrontFace ? VK_CULL_MODE_FRONT_BIT : 0); - // Don't stomp this value! rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - rs.depthClampEnable = fixedFunctionSettings.depthClampEnable ? VK_TRUE : VK_FALSE; - // Don't stomp this value! rs.rasterizerDiscardEnable = VK_FALSE; - rs.depthBiasEnable = fixedFunctionSettings.depthBiasEnable ? VK_TRUE : VK_FALSE; - if (fixedFunctionSettings.depthBiasEnable) - { - rs.depthBiasConstantFactor = fixedFunctionSettings.depthBiasConstant; - rs.depthBiasClamp = fixedFunctionSettings.depthBiasClamp; - rs.depthBiasSlopeFactor = fixedFunctionSettings.depthBiasSlope; - } - // Don't stomp this value! rs.lineWidth = 1.0f; - - const auto& outputSettings = shaderPass.m_shaderPassDescription.m_outputs; - - // Setup blending/transparency - std::vector BlendStates; - BlendStates.reserve(outputSettings.size()); - for (const auto& outputSetting : outputSettings) - { - VkPipelineColorBlendAttachmentState& cb = BlendStates.emplace_back(VkPipelineColorBlendAttachmentState{}); - if (outputSetting.blendEnable) - { - cb.blendEnable = VK_TRUE; - cb.srcColorBlendFactor = BlendFactorToVk(outputSetting.srcColorBlendFactor); - cb.dstColorBlendFactor = BlendFactorToVk(outputSetting.dstColorBlendFactor); - cb.colorBlendOp = VK_BLEND_OP_ADD; - cb.srcAlphaBlendFactor = BlendFactorToVk(outputSetting.srcAlphaBlendFactor); - cb.dstAlphaBlendFactor = BlendFactorToVk(outputSetting.dstAlphaBlendFactor); - cb.alphaBlendOp = VK_BLEND_OP_ADD; - } - cb.colorWriteMask = outputSetting.colorWriteMask & (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT); - } - - VkPipelineColorBlendStateCreateInfo cb = {}; - cb.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; - cb.attachmentCount = (uint32_t)BlendStates.size(); - cb.pAttachments = BlendStates.data(); - - // Setup depth testing - VkPipelineDepthStencilStateCreateInfo ds = {}; - ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; - ds.depthTestEnable = fixedFunctionSettings.depthTestEnable ? VK_TRUE : VK_FALSE; - ds.depthWriteEnable = fixedFunctionSettings.depthWriteEnable ? VK_TRUE : VK_FALSE; - switch( fixedFunctionSettings.depthCompareOp ) { - case ShaderPassDescription::DepthCompareOp::LessEqual: - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - break; - case ShaderPassDescription::DepthCompareOp::Equal: - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - break; - case ShaderPassDescription::DepthCompareOp::Greater: - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - break; - } - ds.depthBoundsTestEnable = VK_FALSE; - ds.back.failOp = VK_STENCIL_OP_KEEP; - ds.back.passOp = VK_STENCIL_OP_KEEP; - ds.back.compareOp = VK_COMPARE_OP_ALWAYS; - ds.stencilTestEnable = VK_FALSE; - ds.front = ds.back; - - // Setup (multi) sampling - VkSampleMask sampleMask = 0; - VkPipelineMultisampleStateCreateInfo ms = {VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO}; - - ms.rasterizationSamples = passMultisample.empty() ? VK_SAMPLE_COUNT_1_BIT : passMultisample[passIdx]; - const auto& sampleShadingSettings = shaderPass.m_shaderPassDescription.m_sampleShadingSettings; - ms.sampleShadingEnable = sampleShadingSettings.sampleShadingEnable; - if (sampleShadingSettings.sampleShadingMask != 0) - { - assert(ms.rasterizationSamples <= VK_SAMPLE_COUNT_32_BIT ); // sampleMask is only 32bits currently! Easy fix if we want > 32x MSAA - sampleMask = sampleShadingSettings.sampleShadingMask & ((1 << ms.rasterizationSamples) -1); - ms.pSampleMask = &sampleMask; - } - - VkPipelineSampleLocationsStateCreateInfoEXT msLocations = { VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT }; - if( sampleShadingSettings.forceCenterSample ) - { - msLocations.sampleLocationsEnable = VK_TRUE; - msLocations.sampleLocationsInfo.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT; - msLocations.sampleLocationsInfo.sampleLocationsPerPixel = ms.rasterizationSamples; - msLocations.sampleLocationsInfo.sampleLocationsCount = (uint32_t) ms.rasterizationSamples; - msLocations.sampleLocationsInfo.sampleLocationGridSize = { 1,1 }; - std::vector msSampleLocations( msLocations.sampleLocationsInfo.sampleLocationsCount, { 0.5f,0.5f } ); - msLocations.sampleLocationsInfo.pSampleLocations = msSampleLocations.data(); - ms.pNext = &msLocations; - } - - mPassNameToIndex.try_emplace(passNames[passIdx], (uint32_t)mPasses.size()); // add the lookup (in to mPasses) - - // Build the passVertexBufferLookup so at runtime we can easily populate the vkBuffer array with the vertex and instance buffers in the order specified per pass by m_vertexFormatBindings. - // Could do this in a single loop; currently split into 2 so we can potentially add more flexibility in where we get the VKBuffers from (TODO) - std::vector tmp; - tmp.reserve(shader.m_shaderDescription->m_vertexFormats.size()); - int numVertexRateFormats = 0, numInstanceRateFormats = 0; - for (const auto& vertexFormat : shader.m_shaderDescription->m_vertexFormats) - { - switch (vertexFormat.inputRate) { - case VertexFormat::eInputRate::Vertex: - tmp.push_back(numVertexRateFormats++); - break; - case VertexFormat::eInputRate::Instance: - tmp.push_back(--numInstanceRateFormats); - break; - } - } - std::vector passVertexBufferLookup; // order of the vkBuffers for this pass (index is in to the vertex array if positive, or in to the instance array if negative (-1 is the 'first') - std::vector passVertexBuffers; - passVertexBufferLookup.reserve(shader.m_shaderDescription->m_vertexFormats.size()); - passVertexBuffers.reserve(shader.m_shaderDescription->m_vertexFormats.size()); - for (uint32_t formatBindingIdx : shaderPass.m_shaderPassDescription.m_vertexFormatBindings) - { - const int bufferIdx = tmp[formatBindingIdx]; - passVertexBufferLookup.push_back(bufferIdx); - if (bufferIdx >= 0) - { - // Vertex rate data (ie the mesh) - passVertexBuffers.push_back(mMeshObject.m_VertexBuffers[bufferIdx].GetVkBuffer()); - - // Double check the mesh is supplying the data we expect in the shader, may mismatch if the mesh was not built using the vertex format (eg Mesh::CreateScreenSpaceMesh) - // We could dive even deeper, for now check the span and the number of attributes match - assert(mMeshObject.m_VertexBuffers[bufferIdx].GetAttributes().size() == shader.m_shaderDescription->m_vertexFormats[formatBindingIdx].elements.size()); - assert(mMeshObject.m_VertexBuffers[bufferIdx].GetSpan() == shader.m_shaderDescription->m_vertexFormats[formatBindingIdx].span); - } - else - { - // Instance rate data (ie the instance buffer) - assert(bufferIdx == -1); - assert(mVertexInstanceBuffer.has_value()); - passVertexBuffers.push_back(mVertexInstanceBuffer->GetVkBuffer()); - } - } - std::vector passVertexBufferOffsets(passVertexBuffers.size(), 0); - - // Index buffer is optional - VkBuffer indexBuffer = VK_NULL_HANDLE; - VkIndexType indexBufferType = VK_INDEX_TYPE_MAX_ENUM; - size_t indexCount = 0; - if (mMeshObject.m_IndexBuffer) - { - indexBuffer = mMeshObject.m_IndexBuffer->GetVkBuffer(); - indexBufferType = mMeshObject.m_IndexBuffer->GetVkIndexType(); - indexCount = mMeshObject.m_IndexBuffer->GetNumIndices(); - } - - // Indirect Draw buffer is optional - VkBuffer drawIndirectBuffer = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetVkBuffer() : VK_NULL_HANDLE; - uint32_t drawIndirectCount = mDrawIndirectBuffer.has_value() ? (uint32_t)mDrawIndirectBuffer->GetNumDraws() : 0; - uint32_t drawIndirectOffset = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetBufferOffset() : 0; - // Indirect Draw Count (count buffer) set to be the beginning of the drawIndirectBuffer IF there is an offset in the mDrawIndirectBuffer. - VkBuffer drawIndirectCountBuffer = drawIndirectOffset>0 ? drawIndirectBuffer : VK_NULL_HANDLE; - - // Pipeline layout may come from the shaderPass or (if that fails) from the materialPass (if it was created late because of 'dynamic' descriptor set layout). - VkPipelineLayout pipelineLayout = shaderPass.GetPipelineLayout().GetVkPipelineLayout(); - if (pipelineLayout == VK_NULL_HANDLE) - pipelineLayout = pMaterialPass->GetPipelineLayout().GetVkPipelineLayout(); - - // add the DrawablePass - DrawablePass& pass = mPasses.emplace_back( *pMaterialPass, - (VkPipeline) VK_NULL_HANDLE, - pipelineLayout, - pMaterialPass->GetVkDescriptorSets(), - shaderPass.GetPipelineVertexInputState(), - DrawablePassVertexBuffers { std::move( passVertexBuffers ), - std::move( passVertexBufferOffsets ) }, - indexBuffer, - indexBufferType, - drawIndirectBuffer, - drawIndirectCountBuffer, - (uint32_t)mMeshObject.m_NumVertices, - (uint32_t)indexCount, - (uint32_t)drawIndirectCount, - (uint32_t)drawIndirectOffset, - passIdx - ); - VkShaderModule vkVertShader = VK_NULL_HANDLE; - VkShaderModule vkFragShader = VK_NULL_HANDLE; - VkShaderModule vkMeshShader = VK_NULL_HANDLE; - VkShaderModule vkTaskShader = VK_NULL_HANDLE; - - std::visit( [&](auto& m) - { - using T = std::decay_t; - if constexpr (std::is_same_v>) - { - vkVertShader = m.vert.GetVkShaderModule(); - vkFragShader = m.frag.GetVkShaderModule(); - } - else if constexpr (std::is_same_v>) - { - vkMeshShader = m.mesh.GetVkShaderModule(); - vkFragShader = m.frag.GetVkShaderModule(); - } - else if constexpr (std::is_same_v>) - { - vkTaskShader = m.task.GetVkShaderModule(); - vkMeshShader = m.mesh.GetVkShaderModule(); - vkFragShader = m.frag.GetVkShaderModule(); - } - else if constexpr (std::is_same_v>) - { - vkVertShader = m.vert.GetVkShaderModule(); - } - else - { - assert( 0 ); // unsupported shader module type (eg ComputeShaderModule) - } - }, shaderPass.m_shaders.m_modules ); - - if (!mVulkan.CreatePipeline(mVulkan.GetPipelineCache(), - &pass.mPipelineVertexInputState.GetVkPipelineVertexInputStateCreateInfo(), - pass.mPipelineLayout, - vkRenderPasses[passIdx], - subpasses.empty() ? 0 :subpasses[passIdx], - &rs, - &ds, - BlendStates.empty() ? nullptr : &cb, - &ms, - {},//dynamic states - nullptr, nullptr, - vkTaskShader, - vkMeshShader, - vkVertShader, - vkFragShader, - pMaterialPass->GetSpecializationConstants().GetVkSpecializationInfo(), - false, - VK_NULL_HANDLE, - &pass.mPipeline, - ia_custom)) - { - // Error - return false; - } - mVulkan.SetDebugObjectName(pass.mPipeline, pMaterialPass->mShaderPass.m_shaderPassDescription.m_vertexName.c_str()); - } - } - return true; -} - -bool Drawable::InitMeshShader(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional drawIndirectBuffer, std::span passMultisample, std::span subpasses, int nodeId) -{ - mMeshObject = {}; - mVertexInstanceBuffer = {}; - mDrawIndirectBuffer = std::move(drawIndirectBuffer); - mNodeId = nodeId; - - return ReInitMeshShader(vkRenderPasses, passNames, passMask, passMultisample, subpasses); -} -bool Drawable::ReInitMeshShader( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses ) -{ - assert( passMultisample.empty() || passMultisample.size() == vkRenderPasses.size() ); - mPassMask = passMask; - mPassNameToIndex.clear(); - for (auto& pass : mPasses) - { - vkDestroyPipeline(mVulkan.m_VulkanDevice, pass.mPipeline, nullptr); - pass.mPipeline = VK_NULL_HANDLE; - } - mPasses.clear(); - - const auto& shader = mMaterial.m_shader; - mPasses.reserve(shader.GetShaderPasses().size()); - for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8 && passMask != 0; ++passIdx) - { - bool passMaskSet = ((passMask & 1) != 0); - passMask >>= 1; - if (passMaskSet) - { - // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", passNames[passIdx]); - MaterialPass* pMaterialPass = const_cast(mMaterial.GetMaterialPass(passNames[passIdx])); - if (!pMaterialPass) - { - LOGE(" Pass %s does not exist in shader", passNames[passIdx]); - continue; - } - assert(pMaterialPass); - const auto& shaderPass = pMaterialPass->mShaderPass; - - // Common to all pipelines - // State for rasterization, such as polygon fill mode is defined. - VkPipelineRasterizationStateCreateInfo rs {VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO}; - const auto& fixedFunctionSettings = shaderPass.m_shaderPassDescription.m_fixedFunctionSettings; - rs.polygonMode = VK_POLYGON_MODE_FILL; - rs.cullMode = (fixedFunctionSettings.cullBackFace?VK_CULL_MODE_BACK_BIT:0) | (fixedFunctionSettings.cullFrontFace ? VK_CULL_MODE_FRONT_BIT : 0); - rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - rs.depthClampEnable = fixedFunctionSettings.depthClampEnable ? VK_TRUE : VK_FALSE; - rs.rasterizerDiscardEnable = VK_FALSE; - rs.depthBiasEnable = fixedFunctionSettings.depthBiasEnable ? VK_TRUE : VK_FALSE; - if (fixedFunctionSettings.depthBiasEnable) - { - rs.depthBiasConstantFactor = fixedFunctionSettings.depthBiasConstant; - rs.depthBiasClamp = fixedFunctionSettings.depthBiasClamp; - rs.depthBiasSlopeFactor = fixedFunctionSettings.depthBiasSlope; - } - rs.lineWidth = 1.0f; - - const auto& outputSettings = shaderPass.m_shaderPassDescription.m_outputs; - - // Setup blending/transparency - std::vector BlendStates; - BlendStates.reserve(outputSettings.size()); - for (const auto& outputSetting : outputSettings) - { - VkPipelineColorBlendAttachmentState& cb = BlendStates.emplace_back(VkPipelineColorBlendAttachmentState{}); - if (outputSetting.blendEnable) - { - cb.blendEnable = VK_TRUE; - cb.srcColorBlendFactor = BlendFactorToVk(outputSetting.srcColorBlendFactor); - cb.dstColorBlendFactor = BlendFactorToVk(outputSetting.dstColorBlendFactor); - cb.colorBlendOp = VK_BLEND_OP_ADD; - cb.srcAlphaBlendFactor = BlendFactorToVk(outputSetting.srcAlphaBlendFactor); - cb.dstAlphaBlendFactor = BlendFactorToVk(outputSetting.dstAlphaBlendFactor); - cb.alphaBlendOp = VK_BLEND_OP_ADD; - } - cb.colorWriteMask = outputSetting.colorWriteMask & (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT); - } - - VkPipelineColorBlendStateCreateInfo cb = {}; - cb.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; - cb.attachmentCount = (uint32_t)BlendStates.size(); - cb.pAttachments = BlendStates.data(); - - // Setup depth testing - VkPipelineDepthStencilStateCreateInfo ds = {}; - ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; - ds.depthTestEnable = fixedFunctionSettings.depthTestEnable ? VK_TRUE : VK_FALSE; - ds.depthWriteEnable = fixedFunctionSettings.depthWriteEnable ? VK_TRUE : VK_FALSE; - switch( fixedFunctionSettings.depthCompareOp ) { - case ShaderPassDescription::DepthCompareOp::LessEqual: - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - break; - case ShaderPassDescription::DepthCompareOp::Equal: - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - break; - case ShaderPassDescription::DepthCompareOp::Greater: - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - break; - } - ds.depthBoundsTestEnable = VK_FALSE; - ds.back.failOp = VK_STENCIL_OP_KEEP; - ds.back.passOp = VK_STENCIL_OP_KEEP; - ds.back.compareOp = VK_COMPARE_OP_ALWAYS; - ds.stencilTestEnable = VK_FALSE; - ds.front = ds.back; - - // Setup (multi) sampling - VkSampleMask sampleMask = 0; - VkPipelineMultisampleStateCreateInfo ms = {VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO}; - - ms.rasterizationSamples = passMultisample.empty() ? VK_SAMPLE_COUNT_1_BIT : passMultisample[passIdx]; - const auto& sampleShadingSettings = shaderPass.m_shaderPassDescription.m_sampleShadingSettings; - ms.sampleShadingEnable = sampleShadingSettings.sampleShadingEnable; - if (sampleShadingSettings.sampleShadingMask != 0) - { - assert(ms.rasterizationSamples <= VK_SAMPLE_COUNT_32_BIT ); // sampleMask is only 32bits currently! Easy fix if we want > 32x MSAA - sampleMask = sampleShadingSettings.sampleShadingMask & ((1 << ms.rasterizationSamples) -1); - ms.pSampleMask = &sampleMask; - } - - VkPipelineSampleLocationsStateCreateInfoEXT msLocations = { VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT }; - if( sampleShadingSettings.forceCenterSample ) - { - msLocations.sampleLocationsEnable = VK_TRUE; - msLocations.sampleLocationsInfo.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT; - msLocations.sampleLocationsInfo.sampleLocationsPerPixel = ms.rasterizationSamples; - msLocations.sampleLocationsInfo.sampleLocationsCount = (uint32_t) ms.rasterizationSamples; - msLocations.sampleLocationsInfo.sampleLocationGridSize = { 1,1 }; - std::vector msSampleLocations( msLocations.sampleLocationsInfo.sampleLocationsCount, { 0.5f,0.5f } ); - msLocations.sampleLocationsInfo.pSampleLocations = msSampleLocations.data(); - ms.pNext = &msLocations; - } - - mPassNameToIndex.try_emplace(passNames[passIdx], (uint32_t)mPasses.size()); // add the lookup (in to mPasses) - - VkBuffer indexBuffer = VK_NULL_HANDLE; - VkIndexType indexBufferType = VK_INDEX_TYPE_MAX_ENUM; - - // Indirect Draw buffer is optional - VkBuffer drawIndirectBuffer = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetVkBuffer() : VK_NULL_HANDLE; - uint32_t drawIndirectCount = mDrawIndirectBuffer.has_value() ? (uint32_t)mDrawIndirectBuffer->GetNumDraws() : 0; - uint32_t drawIndirectOffset = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetBufferOffset() : 0; - // Indirect Draw Count (count buffer) set to be the beginning of the drawIndirectBuffer IF there is an offset in the mDrawIndirectBuffer. - VkBuffer drawIndirectCountBuffer = drawIndirectOffset>0 ? drawIndirectBuffer : VK_NULL_HANDLE; - - // Pipeline layout may come from the shaderPass or (if that fails) from the materialPass (if it was created late because of 'dynamic' descriptor set layout). - VkPipelineLayout pipelineLayout = shaderPass.GetPipelineLayout().GetVkPipelineLayout(); - if (pipelineLayout == VK_NULL_HANDLE) - pipelineLayout = pMaterialPass->GetPipelineLayout().GetVkPipelineLayout(); - - // add the DrawablePass - DrawablePass& pass = mPasses.emplace_back( *pMaterialPass, - (VkPipeline) VK_NULL_HANDLE, - pipelineLayout, - pMaterialPass->GetVkDescriptorSets(), - shaderPass.GetPipelineVertexInputState(), - DrawablePassVertexBuffers { }, //DrawablePassVertexBuffers { std::move( passVertexBuffers ), std::move( passVertexBufferOffsets ) }, - VK_NULL_HANDLE, //indexBuffer, - indexBufferType, - drawIndirectBuffer, - drawIndirectCountBuffer, - 0, //(uint32_t)mMeshObject.m_NumVertices, - 0, //(uint32_t)indexCount, - (uint32_t)drawIndirectCount, - (uint32_t)drawIndirectOffset, - passIdx - ); - VkShaderModule vkVertShader = VK_NULL_HANDLE; - VkShaderModule vkFragShader = VK_NULL_HANDLE; - VkShaderModule vkMeshShader = VK_NULL_HANDLE; - VkShaderModule vkTaskShader = VK_NULL_HANDLE; - - std::visit( [&](auto& m) - { - using T = std::decay_t; - if constexpr (std::is_same_v>) - { - vkMeshShader = m.mesh.GetVkShaderModule(); - vkFragShader = m.frag.GetVkShaderModule(); - } - else if constexpr (std::is_same_v>) - { - vkTaskShader = m.task.GetVkShaderModule(); - vkMeshShader = m.mesh.GetVkShaderModule(); - vkFragShader = m.frag.GetVkShaderModule(); - } - else - { - assert( 0 ); // unsupported shader module type (eg ComputeShaderModule, VertexShaderModule, ...) - } - }, shaderPass.m_shaders.m_modules ); - - if (!mVulkan.CreatePipeline(mVulkan.GetPipelineCache(), - &pass.mPipelineVertexInputState.GetVkPipelineVertexInputStateCreateInfo(), - pass.mPipelineLayout, - vkRenderPasses[passIdx], - subpasses.empty() ? 0 :subpasses[passIdx], - &rs, - &ds, - BlendStates.empty() ? nullptr : &cb, - &ms, - {},//dynamic states - nullptr, nullptr, - vkTaskShader, - vkMeshShader, - VK_NULL_HANDLE, // no vertex shader vkVertShader, - vkFragShader, - pMaterialPass->GetSpecializationConstants().GetVkSpecializationInfo(), - false, - VK_NULL_HANDLE, - &pass.mPipeline)) - { - // Error - return false; - } - mVulkan.SetDebugObjectName(pass.mPipeline, pMaterialPass->mShaderPass.m_shaderPassDescription.m_vertexName.c_str()); - } - } - return true; -} - -void Drawable::DrawPass(VkCommandBuffer cmdBuffer, const DrawablePass& drawablePass, uint32_t bufferIdx, const std::span vertexBufferOverrides) const -{ - // Bind the pipeline for this material - vkCmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, drawablePass.mPipeline); - - // Bind everything the shader needs - if (!drawablePass.mDescriptorSet.empty()) - { - VkDescriptorSet vkDescriptorSet = drawablePass.mDescriptorSet.size() >= 1 ? drawablePass.mDescriptorSet[bufferIdx] : drawablePass.mDescriptorSet[0]; - vkCmdBindDescriptorSets(cmdBuffer, - VK_PIPELINE_BIND_POINT_GRAPHICS, - drawablePass.mPipelineLayout, - 0, - 1, - &vkDescriptorSet, - 0, - NULL); - } - - const auto& shaderPassDescription = drawablePass.mMaterialPass.mShaderPass.m_shaderPassDescription; - if (!shaderPassDescription.m_meshName.empty() && !shaderPassDescription.m_taskName.empty()) // Has a mesh shader (maybe not the ideal way to test this) - { - auto* meshExtension = mVulkan.GetExtension(); - if (!meshExtension || meshExtension->Status != VulkanExtensionStatus::eLoaded) - assert( 0 && "mesh shader extension not loader or supported" ); - else - { - - meshExtension->m_vkCmdDrawMeshTasksEXT(cmdBuffer, mDispatchGroupCount[0], mDispatchGroupCount[1], mDispatchGroupCount[2]); - return; - } - } - else if (!shaderPassDescription.m_meshName.empty() && shaderPassDescription.m_taskName.empty()) // Has a mesh shader (maybe not the ideal way to test this) - { - auto* meshExtension = mVulkan.GetExtension(); - if (!meshExtension || meshExtension->Status != VulkanExtensionStatus::eLoaded) - assert( 0 && "mesh shader extension not loader or supported" ); - else - { - if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) - { - if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) - { - // Draw the mesh using Mesh indirect count buffer (vkCmdDrawMeshTasksIndirectCountEXT command) - assert(meshExtension->m_vkCmdDrawMeshTasksIndirectCountEXT != nullptr); - meshExtension->m_vkCmdDrawMeshTasksIndirectCountEXT( - cmdBuffer, - drawablePass.mDrawIndirectBuffer, - drawablePass.mDrawIndirectOffset, - drawablePass.mDrawIndirectCountBuffer, - 0, - drawablePass.mNumDrawIndirect, - sizeof(VkDrawIndexedIndirectCommand)); - } - else - { - // Draw the mesh using Mesh indirect buffer (vkCmdDrawMeshTasksIndirectEXT) - assert(meshExtension->m_vkCmdDrawMeshTasksIndirectEXT!= nullptr); - meshExtension->m_vkCmdDrawMeshTasksIndirectEXT( - cmdBuffer, - drawablePass.mDrawIndirectBuffer, - drawablePass.mDrawIndirectOffset, - drawablePass.mNumDrawIndirect, - sizeof(VkDrawIndexedIndirectCommand)); - } - } - } - // RETURN here if mesh shader - return; - } - - const auto& vertexBuffers = vertexBufferOverrides.empty() ? drawablePass.mVertexBuffers : vertexBufferOverrides[bufferIdx % vertexBufferOverrides.size()]; - - if (!vertexBuffers.mVertexBuffers.empty()) - { - // Bind mesh vertex/instance buffer(s) - vkCmdBindVertexBuffers(cmdBuffer, - 0, - (uint32_t)vertexBuffers.mVertexBuffers.size(), - vertexBuffers.mVertexBuffers.data(), - vertexBuffers.mVertexBufferOffsets.data()); - } - if (!vertexBufferOverrides.empty()) - { - assert(vertexBuffers.mVertexBuffers.size() == vertexBuffers.mVertexBufferOffsets.size()); - assert(vertexBufferOverrides.empty() || vertexBuffers.mVertexBuffers.size() == drawablePass.mVertexBuffers.mVertexBuffers.size()); - } - - if (drawablePass.mIndexBuffer != VK_NULL_HANDLE) - { - assert( drawablePass.mIndexBufferType != VK_INDEX_TYPE_MAX_ENUM ); - - // Bind index buffer data - vkCmdBindIndexBuffer(cmdBuffer, - drawablePass.mIndexBuffer, - 0, - drawablePass.mIndexBufferType); - - if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) - { - if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) - { - // Draw the mesh using draw indirect count buffer (VkDrawIndexedIndirectCount command) - const auto* drawIndirectCountExt = mVulkan.GetExtension(); - assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr); - drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); - } - else - { - // Draw the mesh using draw indirect buffer (VkDrawIndexedIndirectCommand) - vkCmdDrawIndexedIndirect(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); - } - } - else - { - // Everything is set up, draw the mesh - vkCmdDrawIndexed(cmdBuffer, drawablePass.mNumIndices, GetInstances() ? (uint32_t)GetInstances()->GetNumVertices() : 1, 0, 0, 0); - } - } - else - { - if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) - { - if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) - { - // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) - const auto* drawIndirectCountExt = mVulkan.GetExtension(); - assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr ); - drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); - } - else - { - // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) - vkCmdDrawIndirect(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); - } - } - else - { - // Draw the mesh without index buffer - vkCmdDraw(cmdBuffer, drawablePass.mNumVertices, GetInstances() ? (uint32_t)GetInstances()->GetNumVertices() : 1, 0, 0); - } - } -} - -bool DrawableLoader::LoadDrawables(Vulkan& vulkan, AssetManager& assetManager, std::span vkRenderPasses, const char* const* renderPassNames, const std::string& meshFilename, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, std::span renderPassMultisample, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, std::span renderPassSubpasses, const glm::vec3 globalScale) -{ - LOGI("Loading Object mesh: %s...", meshFilename.c_str()); - - std::vector fatObjects; - if (meshFilename.size() > 4 && meshFilename.substr(meshFilename.size() - 4) == std::string(".obj")) - { - // Load .obj file - fatObjects = MeshObjectIntermediate::LoadObj(assetManager, meshFilename); - } - else - { - // Load .gltf file - fatObjects = MeshObjectIntermediate::LoadGLTF(assetManager, meshFilename, (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0, globalScale); - } - if (fatObjects.size() == 0) - { - LOGE("Error loading Object mesh: %s", meshFilename.c_str()); - return false; - } - // Print some debug - DrawableLoader::PrintStatistics(fatObjects); - - // Turn the intermediate mesh objects into Drawables (and load the materials) - if (!CreateDrawables(vulkan, std::move(fatObjects), vkRenderPasses, renderPassNames, materialLoader, drawables, renderPassMultisample, loaderFlags, renderPassSubpasses)) - { - LOGE("Error initializing Drawable: %s", meshFilename.c_str()); - return false; - } - return true; // success -} - -bool DrawableLoader::CreateDrawables(Vulkan& vulkan, std::vector&& intermediateMeshObjects, std::span vkRenderPasses, const char* const* renderPassNames, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, const std::span renderPassMultisample, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, const std::span renderPassSubpasses) -{ - // See if we can find instances, we assume there is no instance information in the gltf! - auto instancedFatObjects = (loaderFlags & LoaderFlags::FindInstances) ? MeshInstanceGenerator::FindInstances(std::move(intermediateMeshObjects)) : MeshInstanceGenerator::NullFindInstances(std::move(intermediateMeshObjects)); - intermediateMeshObjects.clear(); - - return CreateDrawables(vulkan, std::move(instancedFatObjects), vkRenderPasses, renderPassNames, materialLoader, drawables, renderPassMultisample, loaderFlags, renderPassSubpasses); -} - -bool DrawableLoader::CreateDrawables(Vulkan& vulkan, std::vector&& intermediateMeshInstances, std::span vkRenderPasses, const char* const* renderPassNames, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, const std::span renderPassMultisample, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, const std::span renderPassSubpasses) -{ - drawables.reserve(intermediateMeshInstances.size() ); - for (auto& [fatObject, instances] : intermediateMeshInstances) - { - // Get the material for this mesh - std::optional material; - if (fatObject.m_Materials.size() == 0) - { - // default material (materialId = 0) - auto loadedMaterial = materialLoader( MeshObjectIntermediate::MaterialDef{ "", 0, "textures/white_d.ktx"}); - if (loadedMaterial.has_value()) - material.emplace( std::move(loadedMaterial.value()) ); - } - else - { - if (fatObject.m_Materials.size() > 1) - { - LOGE(" Drawable loader does not support per-face materials, using first material"); - } - auto loadedMaterial = materialLoader( fatObject.m_Materials[0] ); - if (loadedMaterial.has_value()) - material.emplace( std::move(loadedMaterial.value()) ); - } - if (!material) - { - // It is valid for the material loader to return a null material - denotes we dont want to render this object! - continue; - } - const auto& shader = material->m_shader; - - uint32_t passMask = 0; // max 32 passes! - const ShaderPass* pFirstPass = nullptr; - for (uint32_t pass = 0; pass < vkRenderPasses.size(); ++pass) - { - const char* pRenderPassName = renderPassNames[pass]; - const auto* pShaderPass = shader.GetShaderPass(pRenderPassName); ///TODO: std::string generated here! - if (pShaderPass) - { - passMask |= 1 << pass; - } - if (!pFirstPass) - pFirstPass = pShaderPass; - } - - // If this drawable was in one or more passes (hopefully it was used for something) then initialize them - if (pFirstPass) - { - ///TODO: implement having different bindings and packing for different passes - - // Do the (optional) transform baking before creating the device mesh. - if (true && (loaderFlags & LoaderFlags::BakeTransforms) != 0) - { - if ((instances.size() > 1) || ((loaderFlags & LoaderFlags::FindInstances) != 0)) - { - // When we are using instancing dont bake the transform into the mesh - apply the transform to each of the instance transforms. - // It is quite likely the fatObject.m_Transform matrix will be 'identity' as it should have already been applied while instances were being found. - glm::mat4x3 objectTransform4x3 = fatObject.m_Transform; // convert 4x4 to 4x3 (keeps rotation and translation, lost column is unimportant if the transform is a simple TRS (translation/rotation/scale) matrix - for (MeshObjectIntermediate::FatInstance& instance : instances) - { - instance.transform = instance.transform * objectTransform4x3; - } - fatObject.m_Transform = glm::identity(); - fatObject.m_NodeId = -1; // object (may) point to multiple instances so m_NodeId is likely not valid at the mesh level - } - else - { - // Bake the object transform down into the mesh (instances[0] may well be identity but apply it to the transform incase it is not). - glm::mat4x3 combinedTransform = glm::transpose(instances[0].transform * glm::mat4x3(fatObject.m_Transform)); - fatObject.m_Transform = combinedTransform; - instances[0].transform = glm::identity(); - fatObject.BakeTransform(); - } - } - - const auto nodeId = fatObject.m_NodeId; // grab the nodeId before it goes away! - - Mesh meshObject; - const auto& vertexFormats = shader.m_shaderDescription->m_vertexFormats; - MeshHelper::CreateMesh(vulkan.GetMemoryManager(), fatObject, (uint32_t)pFirstPass->m_shaderPassDescription.m_vertexFormatBindings[0], vertexFormats, &meshObject); - - // We are done with the FatObject here, Release it to save some memory earlier. - fatObject.Release(); - - // Potentially the vertex format has some Instance bindings in here (will have been ignored by the CreateMesh). - std::optional vertexInstanceBuffer; - const auto instanceFormatIt = std::find_if(vertexFormats.cbegin(), vertexFormats.cend(), - [](const VertexFormat& f) { return f.inputRate == VertexFormat::eInputRate::Instance; }); - if (instanceFormatIt != vertexFormats.cend()) - { - if (instanceFormatIt != vertexFormats.cbegin() && instanceFormatIt != vertexFormats.end()-1) - { - LOGE(" Drawable loader (currently) only suports shaders with instance rate 'vertex' buffers at the beginning or end of their vertex layout"); - return false; - } - // Create the instance data - std::span instancesSpan = instances; - if( instancesSpan.empty() ) - { - // Even if we are not instancing there should be one instance per mesh - LOGE(" Drawable loader expected mesh to have (at least) one instance matrix"); - return false; - } - - const std::vector formattedVertexData = MeshObjectIntermediate::CopyFatInstanceToFormattedBuffer(instancesSpan, *instanceFormatIt); - - if (!vertexInstanceBuffer.emplace().Initialize(&vulkan.GetMemoryManager(), instanceFormatIt->span, instancesSpan.size(), formattedVertexData.data())) - { - return false; - } - } - else - { - if( instances.size() > 1) - { - LOGE(" Drawable loader found instances - expects shaders vertex layout to have instance data support"); - return false; - } - } - - // Create the drawable - if (!drawables.emplace_back(vulkan, std::move(material.value())).Init(vkRenderPasses, renderPassNames, passMask, std::move(meshObject), std::move(vertexInstanceBuffer), std::nullopt, renderPassMultisample, renderPassSubpasses, nodeId)) - { - return false; - } - } - } - return true; -} - -DrawableLoader::MeshStatistics DrawableLoader::GatherStatistics(const std::span meshObjects) -{ - MeshStatistics stats; - stats.totalVerts = 0; - stats.boundingBoxMin = glm::vec3(std::numeric_limits::max(), std::numeric_limits::max(), std::numeric_limits::max()); - stats.boundingBoxMax = glm::vec3(std::numeric_limits::min(), std::numeric_limits::min(), std::numeric_limits::min()); - for (const auto& mesh : meshObjects) - { - stats.totalVerts += mesh.m_VertexBuffer.size(); - - for (const auto& OneFat : mesh.m_VertexBuffer) - { - stats.boundingBoxMin[0] = std::min(stats.boundingBoxMin[0], OneFat.position[0]); - stats.boundingBoxMin[1] = std::min(stats.boundingBoxMin[1], OneFat.position[1]); - stats.boundingBoxMin[2] = std::min(stats.boundingBoxMin[2], OneFat.position[2]); - - stats.boundingBoxMax[0] = std::max(stats.boundingBoxMax[0], OneFat.position[0]); - stats.boundingBoxMax[1] = std::max(stats.boundingBoxMax[1], OneFat.position[1]); - stats.boundingBoxMax[2] = std::max(stats.boundingBoxMax[2], OneFat.position[2]); - } - } - if (stats.totalVerts == 0) - { - stats.boundingBoxMin = glm::vec3(0.0f, 0.0f, 0.0f); - stats.boundingBoxMax = glm::vec3(0.0f, 0.0f, 0.0f); - } - return stats; -} - -void DrawableLoader::PrintStatistics(const std::span meshObjects) -{ - MeshStatistics stats = GatherStatistics(meshObjects); - LOGI("Model total Vertices: %zu", stats.totalVerts); - LOGI("Model Bounding Box: (%0.2f, %0.2f, %0.2f) -> (%0.2f, %0.2f, %0.2f)", stats.boundingBoxMin[0], stats.boundingBoxMin[1], stats.boundingBoxMin[2], stats.boundingBoxMax[0], stats.boundingBoxMax[1], stats.boundingBoxMax[2]); - LOGI("Model Extent: (%0.2f, %0.2f, %0.2f)", stats.boundingBoxMax[0] - stats.boundingBoxMin[0], stats.boundingBoxMax[1] - stats.boundingBoxMin[1], stats.boundingBoxMax[2] - stats.boundingBoxMin[2]); -} diff --git a/framework/code/material/drawable.hpp b/framework/code/material/drawable.hpp index 47e4d3b..6c84799 100644 --- a/framework/code/material/drawable.hpp +++ b/framework/code/material/drawable.hpp @@ -1,225 +1,233 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once -#include -#include -#include -#include -#include #include -#include "vulkan/vulkan.hpp" -#include "mesh/mesh.hpp" -#include "material/material.hpp" -#include "memory/vulkan/indexBufferObject.hpp" -#include "memory/vulkan/vertexBufferObject.hpp" -#include "memory/vulkan/drawIndirectBufferObject.hpp" -#include "mesh/meshIntermediate.hpp" -#include "vulkan/pipelineVertexInputState.hpp" +#include +#include "texture/textureFormat.hpp" //for Msaa // Forward Declarations -class Material; -template class ShaderT; -class Vulkan; -struct MeshInstance; - - -/// Collection of VkBuffers for vertex buffer stream(s) (including instance buffers). -/// @ingroup Material -struct DrawablePassVertexBuffers +class MaterialBase; +template class CommandList; +template class DrawablePass; +template class DrawIndirectBuffer; +template class Material; +template class Mesh; +template class Pipeline; +template class RenderContext; +template class RenderPass; +template class VertexBuffer; + + +class DrawablePassVertexBuffersBase +{}; + +template +class DrawablePassVertexBuffers : public DrawablePassVertexBuffersBase { - std::vector mVertexBuffers; - std::vector mVertexBufferOffsets; + static_assert(sizeof( DrawablePassVertexBuffers ) != sizeof( DrawablePassVertexBuffersBase )); // static assert if not specialized }; -/// Encapsulates a drawable pass. -/// Owns the Vulkan pipeline, descriptor sets required by that pipeline. References vertex/index buffers etc from the parent Drawable. -/// Users are expected to use Drawable (which contains a vector of DrawablePasses and is more 'user friendly'). -/// @ingroup Material -class DrawablePass -{ - DrawablePass(const DrawablePass&) = delete; - DrawablePass& operator=(const DrawablePass&) = delete; -public: - DrawablePass(DrawablePass&&) = default; - DrawablePass() = delete; - ~DrawablePass(); - DrawablePass(const MaterialPass& MaterialPass, - VkPipeline Pipeline, - VkPipelineLayout PipelineLayout, - std::vector DescriptorSet, - const PipelineVertexInputState& PipelineVertexInputState, - DrawablePassVertexBuffers VertexBuffers, - VkBuffer IndexBuffer, - VkIndexType IndexBufferType, - VkBuffer DrawIndirectBuffer, - VkBuffer DrawIndirectCountBuffer, - uint32_t NumVertices, - uint32_t NumIndices, - uint32_t NumDrawIndirect, - uint32_t DrawIndirectOffset, - uint32_t PassIdx - ) : mMaterialPass( MaterialPass ), mPipeline( Pipeline ), mPipelineLayout( PipelineLayout ), mDescriptorSet( DescriptorSet ), mPipelineVertexInputState( PipelineVertexInputState ), mVertexBuffers( VertexBuffers ), mIndexBuffer( IndexBuffer ), mIndexBufferType( IndexBufferType ), mDrawIndirectBuffer( DrawIndirectBuffer ), mDrawIndirectCountBuffer( DrawIndirectCountBuffer ), mNumVertices( NumVertices ), - mNumIndices( NumIndices), mNumDrawIndirect( NumDrawIndirect), mDrawIndirectOffset( DrawIndirectOffset), mPassIdx( PassIdx) - { - } - - const MaterialPass& mMaterialPass; - VkPipeline mPipeline = VK_NULL_HANDLE; // Owned by us - VkPipelineLayout mPipelineLayout; // Owned by shader - std::vector mDescriptorSet; // one per NUM_VULKAN_BUFFERS (double/triple buffering) - const PipelineVertexInputState& mPipelineVertexInputState; // contains vertex binding and attribute descriptions - DrawablePassVertexBuffers mVertexBuffers; // contains vkbuffer/offsets; one per mVertexBuffersLookup entry. May be vertex rate or instance rate. - VkBuffer mIndexBuffer = VK_NULL_HANDLE; - VkIndexType mIndexBufferType = VK_INDEX_TYPE_MAX_ENUM; - VkBuffer mDrawIndirectBuffer = VK_NULL_HANDLE; - VkBuffer mDrawIndirectCountBuffer = VK_NULL_HANDLE; - uint32_t mNumVertices; - uint32_t mNumIndices; - uint32_t mNumDrawIndirect; - uint32_t mDrawIndirectOffset; // if non zero offset mDrawIndirectBuffer by this - uint32_t mPassIdx; // index of the bit in Drawable::m_passMask -}; /// Encapsulates a drawable object, owns the material (multiple passes, descriptor sets, etc) and the mesh (vertex list). /// @ingroup Material +template class Drawable { - Drawable(const Drawable&) = delete; - Drawable& operator=(const Drawable&) = delete; + Drawable( const Drawable& ) = delete; + Drawable& operator=( const Drawable& ) = delete; + using CommandList = CommandList; + using DrawablePass = DrawablePass; + using DrawIndirectBuffer = DrawIndirectBuffer; + using DrawablePassVertexBuffers = DrawablePassVertexBuffers; + using Mesh = Mesh; + using Material = Material; + using Pipeline = Pipeline; + using RenderContext = RenderContext; + using RenderPass = RenderPass; + using VertexBuffer = VertexBuffer; public: - Drawable(Vulkan& vulkan, Material&& material); - Drawable(Drawable&&) noexcept; + Drawable( T_GFXAPI&, Material&& material ) noexcept; + Drawable( T_GFXAPI&, std::unique_ptr material ) noexcept; + Drawable( Drawable&& ) noexcept; ~Drawable(); - /// Initialize this Drawable with the given mesh and render passes. - bool Init(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional indirectDrawBuffer = std::nullopt, std::span passMultisample = {}, std::span subpasses = {}, int nodeId = -1); + /// Initialize this Drawable with the given mesh and single render pass. + bool Init( const RenderPass& renderPass, const Pipeline&, const std::string& passName, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, int nodeId = -1 ); - /// Initialize this Drawable with the given mesh and (single) render pass. - bool Init(VkRenderPass vkRenderPass, const char* passNames, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, const VkSampleCountFlagBits* const passMultisample = nullptr, const uint32_t* const subpasses = nullptr, int nodeId = -1); - /// Initialize this Drawable with the given mesh and render passes. - bool Init( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, std::span passMultisample = {}, std::span subpasses = {}, int nodeId = -1); - /// Initialize this Drawable with the given mesh, (single) render pass, and raster information (triangles, lines, points, etc.). - bool Init(VkRenderPass vkRenderPass, const char* passName, Mesh meshObject, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom); - bool InitMeshShader( std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::optional indirectDrawBuffer = std::nullopt, std::span passMultisample = {}, std::span subpasses = {}, int nodeId = -1); + /// Initialize this Drawable with the given mesh and single render pass. + bool Init( const RenderContext& renderPass, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, int nodeId = -1 ); + /// Initialize this Drawable with the given mesh and render passes. + bool Init( std::span renderPasses, uint32_t passMask, Mesh meshObject, std::optional vertexInstanceBuffer = std::nullopt, std::optional indirectDrawBuffer = std::nullopt, int nodeId = -1 ); + /// Initialize this Drawable without a mesh + bool Init( std::span renderPasses, uint32_t passMask, std::optional indirectDrawBuffer = std::nullopt, int nodeId = -1 ); + /// Initialize the mesh shader variant of the pipeline. + bool InitMeshShader( std::span renderPasses, uint32_t passMask, std::optional indirectDrawBuffer = std::nullopt, int nodeId = -1); /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render pass has been modified. - bool ReInit( VkRenderPass vkRenderPass, const char* passNames, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses ); - /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render pass has been modified. - bool ReInit( VkRenderPass vkRenderPass, const char* passNames, const VkSampleCountFlagBits* const passMultisample, const uint32_t* const subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom); - /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render passes have been modified. - bool ReInit(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses); + bool ReInit( const RenderContext& renderPass ); /// Re-initialize the drawable. Used internally by Init but can be used by the user when the render passes have been modified. - bool ReInit(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses, VkPipelineInputAssemblyStateCreateInfo ia_custom, VkPipelineRasterizationStateCreateInfo rs_custom); - + bool ReInit( std::span renderPasses, uint32_t passMask ); - bool ReInitMeshShader(std::span vkRenderPasses, const char* const* passNames, uint32_t passMask, std::span passMultisample, std::span subpasses); + bool ReInitMeshShader(std::span renderPasses, uint32_t passMask); - /// Issues the Vulkan commands needed to draw this DrawablePass. + /// Issues the commands needed to draw this DrawablePass. /// Binds the pipeline, descriptor sets, vertex buffers, index buffers, and issues the appropriate vkCmdDraw* /// @param vertexBindingsOverride allows user to replace @DrawablePass::mVertexBuffers with their own. Span is for each 'bufferIdx' (can be size()==1 if all buffers bind the same). DrawablePassVertexBuffers contains multiple buffers so all mesh and instance streams are overridden. - void DrawPass(VkCommandBuffer cmdBuffer, const DrawablePass& drawablePass, uint32_t bufferIdx, const std::span vertexBuffersOverride = {}) const; + void DrawPass(CommandList& cmdList, const DrawablePass& drawablePass, uint32_t bufferIdx, const std::span vertexBuffersOverride = {} ) const; - const DrawablePass* GetDrawablePass(const std::string& passName) const; - const auto& GetDrawablePasses() const { return mPasses; }; - uint32_t GetPassMask() const { return mPassMask; } - const auto& GetMaterial() const { return mMaterial; } + const DrawablePass* GetDrawablePass( const std::string& passName ) const; + const auto& GetDrawablePasses() const { return mPasses; }; + uint32_t GetPassMask() const { return mPassMask; } + const auto& GetMaterial() const { return mMaterial; } const auto& GetMeshObject() const { return mMeshObject; } - const auto& GetInstances() const { return mVertexInstanceBuffer; } - const auto& GetDrawIndirectBuffer() const { return mDrawIndirectBuffer; } - const int GetNodeId() const { return mNodeId; } + auto& GetMeshObject() { return mMeshObject; } + const auto& GetInstances() const { return mVertexInstanceBuffer; } + const auto& GetDrawIndirectBuffer() const { return mDrawIndirectBuffer; } + const int GetNodeId() const { return mNodeId; } /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) void SetDispatchGroupCount(std::array count) { mDispatchGroupCount = count; } - const auto& GetDispatchGroupCount() const { return mDispatchGroupCount; } + const auto& GetDispatchGroupCount() const { return mDispatchGroupCount; } - // Need non const access to mMeshObject but don't want to break anyone using GetMeshObject() public: - Mesh mMeshObject; + Material mMaterial; + Mesh mMeshObject; protected: - Material mMaterial; + std::vector mPasses; + std::map mPassNameToIndex; // Index in to mpasses ///TODO: allow for generation of a list of these - so each pass can iterate through the passes easily + uint32_t mPassMask = 0; + int mNodeId = -1; // Identifier used by application to determine what this drawable is attached to, eg for attaching to animations. Not used by Drawable. + std::array mDispatchGroupCount{1u,1u,1u}; - std::array mDispatchGroupCount{ 1u,1u,1u }; + std::optional mVertexInstanceBuffer; + std::optional mDrawIndirectBuffer; - std::vector mPasses; - std::map mPassNameToIndex; // Index in to mpasses ///TODO: allow for generation of a list of these - so each pass can iterate through the passes easily - uint32_t mPassMask = 0; - int mNodeId = -1; // Identifier used by application to determine what this drawable is attached to, eg for attaching to animations. Not used by Drawable. + T_GFXAPI& mGfxApi; +}; - std::optional mVertexInstanceBuffer; - std::optional mDrawIndirectBuffer; - Vulkan& mVulkan; +class DrawablePassBase +{ + DrawablePassBase( const DrawablePassBase& ) = delete; + DrawablePassBase& operator=( const DrawablePassBase& ) = delete; +protected: + DrawablePassBase() = default; + DrawablePassBase& operator=( DrawablePassBase&& ) noexcept = default; + DrawablePassBase( DrawablePassBase&& ) noexcept = default; }; - -/// Wrapper class for LoadDrawables (user entry point for loading a drawable mesh object). +/// Encapsulates a drawable pass. +/// We require that this template is specialized by the graphics api (and this class not used as-is, in it's non specialized form) /// @ingroup Material -class DrawableLoader +template +class DrawablePass : public DrawablePassBase { - DrawableLoader(const DrawableLoader&) = delete; - DrawableLoader& operator=(const DrawableLoader&) = delete; + DrawablePass( const DrawablePass& ) = delete; + DrawablePass& operator=( const DrawablePass& ) = delete; public: - /// @brief Flags controlling the behaviour of LoadDrawables - enum LoaderFlags : uint32_t { - None = 0, - FindInstances = 0x1, // useInstancing pass true if drawable loader should try to find duplicated instances of meshes(same MaterialDef, same vertex uv sets, vertex positions onlly differing by rotation and translation). Can take a little time to process. - BakeTransforms = 0x2, // bake world transform in to mesh data (and clear the m_Transform for all baked drawables) - IgnoreHierarchy = 0x4 // Ignore the gltf node hierarchy when loading model - }; - - /// @brief Load a mesh object and create the @Drawable(s) for rendering it. - /// This is the recommended way of loading meshes in to the Framework Material system. - /// @param vkRenderPasses span of Vulkan render passes that we may want to create DrawablePasses for (can be duplicated if we have subpasses) - /// @param renderPassNames names of the render passes, expected to match the names inside the Material - /// @param meshFilename name of the mesh filename to load (via assetManager) - /// @param materialLoader user supplied function that returns a Material for each mesh material (@ref MeshObjectIntermediate::MaterialDef) that the loaded mesh returns. Meshes can have multiple materials (possibly hundreds). - /// @param drawables output vector of @Drawable objects - /// @param renderPassMultisample optional multisample flags (if zero size assume no multisampling) - /// @param loaderFlags loader feature enables - /// @param renderPassSubpasses subpass indices for each render pass (0 for first subpass of if there are no subpasses). If empty treat everything as using subpass 0 - /// @param globalScale global scale applied to every loaded Drawable object - /// @return true on success - static bool LoadDrawables(Vulkan& vulkan, AssetManager& assetManager, std::span vkRenderPasses, const char* const* renderPassNames, const std::string& meshFilename, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, std::span renderPassMultisample, /*LoaderFlags*/uint32_t loaderFlags, std::span renderPassSubpasses, const glm::vec3 globalScale = glm::vec3(1.0f,1.0f,1.0f)); - - /// @brief Create @Drawable(s) for rendering a given vector of @MeshObjectIntermediate objects. - /// This is the recommended way of creating meshes in the Framework Material system and is used by the LoadDrawables function. - /// @param intermediateMeshObjects vector of the (intermediate format) mesh objects we are going to make drawables from. CreateDrawables takes ownership of this data. - /// @param vkRenderPasses span of Vulkan render passes that we may want to create DrawablePasses for (can be duplicated if we have subpasses) - /// @param renderPassNames names of the render passes, expected to match the names inside the Material - /// @param meshFilename name of the mesh filename to load (via assetManager) - /// @param materialLoader user supplied function that returns a Material for each mesh material (@ref MeshObjectIntermediate::MaterialDef) that the loaded mesh returns. Meshes can have multiple materials (possibly hundreds). - /// @param drawables output vector of @Drawable objects - /// @param renderPassMultisample optional multisample flags (if zero size assume no multisampling) - /// @param loaderFlags loader feature enables - /// @param RenderPassSubpasses subpass indices for each render pass (0 for first subpass of if there are no subpasses). If empty treat everything as using subpass 0 - /// @return true on success - static bool CreateDrawables(Vulkan& vulkan, std::vector&& intermediateMeshObjects, std::span vkRenderPasses, const char* const* renderPassNames, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, const std::span renderPassMultisample, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, const std::span renderPassSubpasses); - - /// @brief Create @Drawables() for rendering the ficen @MeshInstance objects. - /// Identical to CreateDrawables but does not generate the MeshInstance data (is required to be already generated). - static bool CreateDrawables(Vulkan& vulkan, std::vector&& intermediateMeshInstances, std::span vkRenderPasses, const char* const* renderPassNames, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, const std::span renderPassMultisample, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, const std::span renderPassSubpasses); - - /// @brief Print some combined statistics about the given meshObjects. - /// @param meshObjects span of the objects we want to gather the statistics for. - static void PrintStatistics(const std::span meshObjects); - - struct MeshStatistics { - size_t totalVerts; - glm::vec3 boundingBoxMin; - glm::vec3 boundingBoxMax; - }; - - /// @brief Collect some combined statistics about the given meshObjects. - /// @param meshObjects span of the objects we want to gather the statistics for. - /// @returns @DrawableLoaderMeshStatistics with statistics for the given objects (combined). - static MeshStatistics GatherStatistics(const std::span meshObjects); + DrawablePass() = delete; + static_assert(sizeof( DrawablePass ) != sizeof( DrawablePassBase )); // static assert if not specialized }; + + +template +Drawable::Drawable( T_GFXAPI& gfxapi, Material&& material ) noexcept + : mMaterial( std::move( material ) ) + , mGfxApi( gfxapi ) +{ +} + +template +Drawable::Drawable( T_GFXAPI& gfxapi, std::unique_ptr material ) noexcept + : mMaterial( std::move(*apiCast(material.get()) ) ) + , mGfxApi( gfxapi ) +{ +} + +template +Drawable::Drawable( Drawable&& other ) noexcept + : mMaterial( std::move( other.mMaterial ) ) + , mGfxApi( other.mGfxApi ) + , mMeshObject( std::move( other.mMeshObject ) ) + , mPasses( std::move( other.mPasses ) ) + , mPassNameToIndex( std::move( other.mPassNameToIndex ) ) + , mPassMask( other.mPassMask ) + , mVertexInstanceBuffer( std::move( other.mVertexInstanceBuffer ) ) + , mDrawIndirectBuffer( std::move( other.mDrawIndirectBuffer ) ) +{ + other.mPassMask = 0; +} + +template +bool Drawable::Init( const RenderPass& renderPass, const Pipeline& pipeline, const std::string& passName, Mesh meshObject, std::optional vertexInstanceBuffer, std::optional indirectDrawBuffer, int nodeId ) +{ + return Init( RenderContext{renderPass.Copy(), pipeline.Copy(), {}, passName}, std::move( meshObject ), std::move( vertexInstanceBuffer ), std::move( indirectDrawBuffer ), nodeId ); +} + +template +bool Drawable::Init( const RenderContext& renderPass, Mesh meshObject, std::optional vertexInstanceBuffer, std::optional drawIndirectBuffer, int nodeId ) +{ + mMeshObject = std::move( meshObject ); + mVertexInstanceBuffer = std::move( vertexInstanceBuffer ); + mDrawIndirectBuffer = std::move( drawIndirectBuffer ); + mNodeId = nodeId; + return ReInit( renderPass ); +} + +template +bool Drawable::Init( std::span renderPasses, uint32_t passMask, Mesh meshObject, std::optional vertexInstanceBuffer, std::optional drawIndirectBuffer, int nodeId ) +{ + mMeshObject = std::move( meshObject ); + mVertexInstanceBuffer = std::move( vertexInstanceBuffer ); + mDrawIndirectBuffer = std::move( drawIndirectBuffer ); + mNodeId = nodeId; + return ReInit( renderPasses, passMask ); +} + +template +bool Drawable::Init( std::span renderPasses, uint32_t passMask, std::optional drawIndirectBuffer, int nodeId ) +{ + mMeshObject = {}; + mVertexInstanceBuffer = {}; + mDrawIndirectBuffer = std::move( drawIndirectBuffer ); + mNodeId = nodeId; + + return ReInit( renderPasses, passMask ); +} + +template +bool Drawable::InitMeshShader( std::span renderPasses, uint32_t passMask, std::optional drawIndirectBuffer, int nodeId ) +{ + mMeshObject = {}; + mVertexInstanceBuffer = {}; + mDrawIndirectBuffer = std::move( drawIndirectBuffer ); + mNodeId = nodeId; + + return ReInitMeshShader( renderPasses, passMask ); +} + +template +bool Drawable::ReInit( const RenderContext& renderPass ) +{ + return ReInit( {&renderPass,1}, 1); +} + +template +const DrawablePass* Drawable::GetDrawablePass( const std::string& passName ) const +{ + auto it = mPassNameToIndex.find( passName ); + if (it != mPassNameToIndex.end()) + { + return &mPasses[it->second]; + } + return nullptr; +} diff --git a/framework/code/material/drawableLoader.cpp b/framework/code/material/drawableLoader.cpp new file mode 100644 index 0000000..91dd04a --- /dev/null +++ b/framework/code/material/drawableLoader.cpp @@ -0,0 +1,52 @@ +//============================================================================================================ +// +// +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "drawableLoader.hpp" +#include "drawable.hpp" +#include "mesh/meshIntermediate.hpp" +#include "system/os_common.h" +#include +#include + + +DrawableLoaderBase::MeshStatistics DrawableLoaderBase::GatherStatistics(const std::span meshObjects) +{ + MeshStatistics stats; + stats.totalVerts = 0; + stats.boundingBoxMin = glm::vec3(std::numeric_limits::max(), std::numeric_limits::max(), std::numeric_limits::max()); + stats.boundingBoxMax = glm::vec3(std::numeric_limits::min(), std::numeric_limits::min(), std::numeric_limits::min()); + for (const auto& mesh : meshObjects) + { + stats.totalVerts += mesh.m_VertexBuffer.size(); + + for (const auto& OneFat : mesh.m_VertexBuffer) + { + stats.boundingBoxMin[0] = std::min(stats.boundingBoxMin[0], OneFat.position[0]); + stats.boundingBoxMin[1] = std::min(stats.boundingBoxMin[1], OneFat.position[1]); + stats.boundingBoxMin[2] = std::min(stats.boundingBoxMin[2], OneFat.position[2]); + + stats.boundingBoxMax[0] = std::max(stats.boundingBoxMax[0], OneFat.position[0]); + stats.boundingBoxMax[1] = std::max(stats.boundingBoxMax[1], OneFat.position[1]); + stats.boundingBoxMax[2] = std::max(stats.boundingBoxMax[2], OneFat.position[2]); + } + } + if (stats.totalVerts == 0) + { + stats.boundingBoxMin = glm::vec3(0.0f, 0.0f, 0.0f); + stats.boundingBoxMax = glm::vec3(0.0f, 0.0f, 0.0f); + } + return stats; +} + +void DrawableLoaderBase::PrintStatistics(const std::span meshObjects) +{ + MeshStatistics stats = GatherStatistics(meshObjects); + LOGI("Model total Vertices: %zu", stats.totalVerts); + LOGI("Model Bounding Box: (%0.2f, %0.2f, %0.2f) -> (%0.2f, %0.2f, %0.2f)", stats.boundingBoxMin[0], stats.boundingBoxMin[1], stats.boundingBoxMin[2], stats.boundingBoxMax[0], stats.boundingBoxMax[1], stats.boundingBoxMax[2]); + LOGI("Model Extent: (%0.2f, %0.2f, %0.2f)", stats.boundingBoxMax[0] - stats.boundingBoxMin[0], stats.boundingBoxMax[1] - stats.boundingBoxMin[1], stats.boundingBoxMax[2] - stats.boundingBoxMin[2]); +} diff --git a/framework/code/material/drawableLoader.hpp b/framework/code/material/drawableLoader.hpp new file mode 100644 index 0000000..48b81db --- /dev/null +++ b/framework/code/material/drawableLoader.hpp @@ -0,0 +1,360 @@ +//============================================================================================================ +// +// +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include +#include "mesh/instanceGenerator.hpp" +#include "mesh/mesh.hpp" +#include "mesh/meshHelper.hpp" +#include "mesh/meshIntermediate.hpp" +#include "pipeline.hpp" +#include "system/glm_common.hpp" +#include "system/os_common.h" +#include "texture/textureFormat.hpp" + +// Forward Declarations +class AssetManager; +class MaterialBase; +struct MeshInstance; +class MeshObjectIntermediate; +template class Material; +template class Pipeline; +template class RenderContext; +template class RenderPass; +template class ShaderPass; + +//class Dx12; +//class MaterialBase; +//enum class Msaa; +//template class Shader; + +template class Drawable; +template class DrawableLoader; + + +/// Base (platform agnostic) wrapper class for loading drawables +class DrawableLoaderBase +{ + DrawableLoaderBase( const DrawableLoaderBase& ) = delete; + DrawableLoaderBase& operator=( const DrawableLoaderBase& ) = delete; + template using tApiDerived = DrawableLoader; // make apiCast work! +public: + /// @brief Flags controlling the behaviour of LoadDrawables + enum LoaderFlags : uint32_t { + None = 0, + FindInstances = 0x1, // useInstancing pass true if drawable loader should try to find duplicated instances of meshes(same MaterialDef, same vertex uv sets, vertex positions onlly differing by rotation and translation). Can take a little time to process. + BakeTransforms = 0x2, // bake world transform in to mesh data (and clear the m_Transform for all baked drawables) + IgnoreHierarchy = 0x4 // Ignore the gltf node hierarchy when loading model + }; + + /// @brief Print some combined statistics about the given meshObjects. + /// @param meshObjects span of the objects we want to gather the statistics for. + static void PrintStatistics( const std::span meshObjects ); + + struct MeshStatistics { + size_t totalVerts; + glm::vec3 boundingBoxMin; + glm::vec3 boundingBoxMax; + }; + + /// @brief Collect some combined statistics about the given meshObjects. + /// @param meshObjects span of the objects we want to gather the statistics for. + /// @returns @DrawableLoaderMeshStatistics with statistics for the given objects (combined). + static MeshStatistics GatherStatistics( const std::span meshObjects ); +}; + + +/// Wrapper class for LoadDrawables (user entry point for loading a drawable mesh object). +/// @ingroup Material +template +class DrawableLoader : public DrawableLoaderBase +{ + DrawableLoader( const DrawableLoader& ) = delete; + DrawableLoader& operator=(const DrawableLoader&) = delete; + using Drawable = Drawable; + using Material = Material; + using RenderContext = RenderContext; + using RenderPass = RenderPass; + using PipelineRasterizationState = PipelineRasterizationState; +public: + /// @brief Load a mesh object and create the @Drawable(s) for rendering it. + /// This is the recommended way of loading meshes in to the Framework MaterialBase system. + /// @param renderPasses span of render pass contexts that we may want to create DrawablePasses for (can be duplicated if we have subpasses) + /// @param meshFilename name of the mesh filename to load (via assetManager) + /// @param materialLoader user supplied function that returns a MaterialBase for each mesh material (@ref MeshObjectIntermediate::MaterialDef) that the loaded mesh returns. Meshes can have multiple materials (possibly hundreds). + /// @param drawables output vector of @Drawable objects + /// @param renderPassMultisample optional multisample flags (if zero size assume no multisampling) + /// @param loaderFlags loader feature enables + /// @param globalScale global scale applied to every loaded Drawable object + /// @return true on success + static bool LoadDrawables(T_GFXAPI&, AssetManager& assetManager, std::span renderPasses, const std::string& meshFilename, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, /*LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale = glm::vec3(1.0f,1.0f,1.0f)); + static bool LoadDrawables(T_GFXAPI&, AssetManager& assetManager, std::span renderPasses, const std::string& meshFilename, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, /*LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale = glm::vec3(1.0f,1.0f,1.0f)); + + /// @brief Load a mesh object and create the @Drawable(s) for rendering it. + /// Identical to LoadDrawables but for a single pass only (helper to save end-user from creating spans with a single entry) + static bool LoadDrawables(T_GFXAPI&, AssetManager& assetManager, const RenderContext& renderPass, const std::string& meshFilename, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale = glm::vec3( 1.0f, 1.0f, 1.0f ) ); + static bool LoadDrawables(T_GFXAPI&, AssetManager& assetManager, const RenderContext& renderPass, const std::string& meshFilename, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale = glm::vec3( 1.0f, 1.0f, 1.0f ) ); + + /// @brief Create @Drawable(s) for rendering a given vector of @MeshObjectIntermediate objects. + /// This is the recommended way of creating meshes in the Framework MaterialBase system and is used by the LoadDrawables function. + /// @param intermediateMeshObjects vector of the (intermediate format) mesh objects we are going to make drawables from. CreateDrawables takes ownership of this data. + /// @param renderPasses span of render passes that we may want to create DrawablePasses for (can be duplicated if we have subpasses) + /// @param renderPassNames names of the render passes, expected to match the names inside the MaterialBase + /// @param meshFilename name of the mesh filename to load (via assetManager) + /// @param materialLoader user supplied function that returns a MaterialBase for each mesh material (@ref MeshObjectIntermediate::MaterialDef) that the loaded mesh returns. Meshes can have multiple materials (possibly hundreds). + /// @param drawables output vector of @Drawable objects + /// @param renderPassMultisample optional multisample flags (if zero size assume no multisampling) + /// @param loaderFlags loader feature enables + /// @param RenderPassSubpasses subpass indices for each render pass (0 for first subpass of if there are no subpasses). If empty treat everything as using subpass 0 + /// @return true on success + static bool CreateDrawables(T_GFXAPI&, std::vector&& intermediateMeshObjects, std::span renderPasses, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags); + + /// @brief Create @Drawables() for rendering the given @MeshInstance objects. + /// Identical to CreateDrawables but does not generate the MeshInstance data (is required to be already generated). + static bool CreateDrawables(T_GFXAPI&, std::vector&& intermediateMeshInstances, std::span renderPasses, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags); + + /// @brief Create @Drawables() for rendering the given @MeshInstance objects. + /// Identical to CreateDrawables but for a single pass only (helper to save end-user from creating spans with a single entry) + static bool CreateDrawables(T_GFXAPI&, std::vector&& intermediateMeshObjects, const RenderContext& renderPass, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags); +}; + + +template +bool DrawableLoader::LoadDrawables( T_GFXAPI& gfxapi, AssetManager& assetManager, std::span renderPasses, const std::string& meshFilename, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale ) +{ + LOGI( "Loading Object mesh: %s...", meshFilename.c_str() ); + + std::vector fatObjects; + if (meshFilename.size() > 4 && meshFilename.substr( meshFilename.size() - 4 ) == std::string( ".obj" )) + { + // Load .obj file + fatObjects = MeshObjectIntermediate::LoadObj( assetManager, meshFilename ); + } + else + { + // Load .gltf file + fatObjects = MeshObjectIntermediate::LoadGLTF( assetManager, meshFilename, (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0, globalScale ); + } + if (fatObjects.size() == 0) + { + LOGE( "Error loading Object mesh: %s", meshFilename.c_str() ); + return false; + } + // Print some debug + DrawableLoader::PrintStatistics( fatObjects ); + + // Turn the intermediate mesh objects into Drawables (and load the materials) + if (!CreateDrawables( gfxapi, std::move( fatObjects ), renderPasses, materialLoader, drawables, loaderFlags )) + { + LOGE( "Error initializing Drawable: %s", meshFilename.c_str() ); + return false; + } + return true; // success +} + +template +bool DrawableLoader::LoadDrawables( T_GFXAPI& gfxapi, AssetManager& assetManager, std::span renderPasses, const std::string& meshFilename, const std::function(const MeshObjectIntermediate::MaterialDef&)>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale ) +{ + auto materialLoader2 = [&materialLoader]( const MeshObjectIntermediate::MaterialDef& materialDef ) -> std::optional + { + auto pMaterial = materialLoader( materialDef ); + if (pMaterial) + { + return {std::move( *static_cast(pMaterial.get()) )}; + } + else + { + return std::nullopt; + } + }; + return LoadDrawables(gfxapi, assetManager, renderPasses, meshFilename, materialLoader2, drawables, loaderFlags, globalScale ); +} + +template +bool DrawableLoader::LoadDrawables( T_GFXAPI& gfxApi, AssetManager& assetManager, const RenderContext& renderPass, const std::string& meshFilename, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale ) +{ + return DrawableLoader::LoadDrawables( gfxApi, assetManager, {&renderPass, 1}, meshFilename, materialLoader, drawables, loaderFlags, globalScale ); +} + +template +bool DrawableLoader::LoadDrawables( T_GFXAPI& gfxApi, AssetManager& assetManager, const RenderContext& renderPass, const std::string& meshFilename, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*LoaderFlags*/uint32_t loaderFlags, const glm::vec3 globalScale ) +{ + return DrawableLoader::LoadDrawables( gfxApi, assetManager, {&renderPass, 1}, meshFilename, materialLoader, drawables, loaderFlags, globalScale ); +} + +template +bool DrawableLoader::CreateDrawables( T_GFXAPI& gfxapi, std::vector&& intermediateMeshObjects, std::span renderPasses, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags ) +{ + // See if we can find instances, we assume there is no instance information in the gltf! + auto instancedFatObjects = (loaderFlags & LoaderFlags::FindInstances) ? MeshInstanceGenerator::FindInstances( std::move( intermediateMeshObjects ) ) : MeshInstanceGenerator::NullFindInstances( std::move( intermediateMeshObjects ) ); + intermediateMeshObjects.clear(); + + return CreateDrawables( gfxapi, std::move( instancedFatObjects ), renderPasses, materialLoader, drawables, loaderFlags ); +} + +template +bool DrawableLoader::CreateDrawables( T_GFXAPI& gfxapi, std::vector&& intermediateMeshInstances, std::span renderPasses, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags ) +{ + // Create a pipeline container for each render pass, dont create the underlying pipeline until we know it is needed + std::vector> pipelines; + pipelines.resize( renderPasses.size() ); + + drawables.reserve( intermediateMeshInstances.size() ); + for (auto& [fatObject, instances] : intermediateMeshInstances) + { + // Get the material for this mesh + std::optional material; + if (fatObject.m_Materials.size() == 0) + { + // default material (materialId = 0) + auto loadedMaterial = materialLoader( MeshObjectIntermediate::MaterialDef{"", 0, "textures/white_d.ktx"} ); + if (loadedMaterial.has_value()) + material.emplace( std::move( loadedMaterial.value() ) ); + } + else + { + if (fatObject.m_Materials.size() > 1) + { + LOGE( " Drawable loader does not support per-face materials, using first material" ); + } + auto loadedMaterial = materialLoader( fatObject.m_Materials[0] ); + if (loadedMaterial.has_value()) + material.emplace( std::move( loadedMaterial.value() ) ); + } + if (!material) + { + // It is valid for the material loader to return a null material - denotes we dont want to render this object! + continue; + } + const auto& shader = material->GetShader(); + + // Determine which passes are being used + uint32_t passMask = 0; // max 32 passes! + const ShaderPass* pFirstPass = nullptr; + for (uint32_t pass = 0; pass < renderPasses.size(); ++pass) + { + const char* pRenderPassName = renderPasses[pass].name.c_str(); + const auto* pShaderPass = shader.GetShaderPass( pRenderPassName ); ///TODO: std::string generated here! + if (pShaderPass) + { + passMask |= 1 << pass; + // Make sure we have pipeline for this pass + if (!pipelines[pass]) + { + const auto* materialPass = material->GetMaterialPass( pRenderPassName ); + assert( materialPass ); + + PipelineRasterizationState rasterizationState{pShaderPass->m_shaderPassDescription}; + pipelines[pass] = ::CreatePipeline( gfxapi, + pShaderPass->m_shaderPassDescription, + pShaderPass->GetPipelineLayout(), + pShaderPass->GetPipelineVertexInputState(), + rasterizationState, + materialPass->GetSpecializationConstants(), + pShaderPass->m_shaders, + renderPasses[pass], + Msaa::Samples1 ); + } + } + if (!pFirstPass) + pFirstPass = pShaderPass; + } + + // If this drawable was in one or more passes (hopefully it was used for something) then initialize them + if (pFirstPass) + { + ///TODO: implement having different bindings and packing for different passes + + // Do the (optional) transform baking before creating the device mesh. + if (true && (loaderFlags & LoaderFlags::BakeTransforms) != 0) + { + if ((instances.size() > 1) || ((loaderFlags & LoaderFlags::FindInstances) != 0)) + { + // When we are using instancing dont bake the transform into the mesh - apply the transform to each of the instance transforms. + // It is quite likely the fatObject.m_Transform matrix will be 'identity' as it should have already been applied while instances were being found. + glm::mat4x3 objectTransform4x3 = fatObject.m_Transform; // convert 4x4 to 4x3 (keeps rotation and translation, lost column is unimportant if the transform is a simple TRS (translation/rotation/scale) matrix + for (MeshObjectIntermediate::FatInstance& instance : instances) + { + instance.transform = instance.transform * objectTransform4x3; + } + fatObject.m_Transform = glm::identity(); + fatObject.m_NodeId = -1; // object (may) point to multiple instances so m_NodeId is likely not valid at the mesh level + } + else + { + // Bake the object transform down into the mesh (instances[0] may well be identity but apply it to the transform incase it is not). + glm::mat4x3 combinedTransform = glm::transpose( instances[0].transform * glm::mat4x3( fatObject.m_Transform ) ); + fatObject.m_Transform = combinedTransform; + instances[0].transform = glm::identity(); + fatObject.BakeTransform(); + } + } + + const auto nodeId = fatObject.m_NodeId; // grab the nodeId before it goes away! + + Mesh meshObject; + const auto& vertexFormats = shader.m_shaderDescription->m_vertexFormats; + MeshHelper::CreateMesh( gfxapi.GetMemoryManager(), fatObject, (uint32_t)pFirstPass->m_shaderPassDescription.m_vertexFormatBindings[0], vertexFormats, &meshObject ); + + // We are done with the FatObject here, Release it to save some memory earlier. + fatObject.Release(); + + // Potentially the vertex format has some Instance bindings in here (will have been ignored by the CreateMesh). + std::optional> vertexInstanceBuffer; + const auto instanceFormatIt = std::find_if( vertexFormats.cbegin(), vertexFormats.cend(), + []( const VertexFormat& f ) { return f.inputRate == VertexFormat::eInputRate::Instance; } ); + if (instanceFormatIt != vertexFormats.cend()) + { + if (instanceFormatIt != vertexFormats.cbegin() && instanceFormatIt != vertexFormats.end() - 1) + { + LOGE( " Drawable loader (currently) only suports shaders with instance rate 'vertex' buffers at the beginning or end of their vertex layout" ); + return false; + } + // Create the instance data + std::span instancesSpan = instances; + if (instancesSpan.empty()) + { + // Even if we are not instancing there should be one instance per mesh + LOGE( " Drawable loader expected mesh to have (at least) one instance matrix" ); + return false; + } + + const std::vector formattedVertexData = MeshObjectIntermediate::CopyFatInstanceToFormattedBuffer( instancesSpan, *instanceFormatIt ); + + if (!vertexInstanceBuffer.emplace().Initialize( &gfxapi.GetMemoryManager(), instanceFormatIt->span, instancesSpan.size(), formattedVertexData.data() )) + { + return false; + } + } + else + { + if (instances.size() > 1) + { + LOGE( " Drawable loader found instances - expects shaders vertex layout to have instance data support" ); + return false; + } + } + + // Create the drawable + if (!drawables.emplace_back( gfxapi, std::move( material.value() ) ).Init( renderPasses, passMask, std::move( meshObject ), std::move( vertexInstanceBuffer ), std::nullopt, nodeId )) + { + return false; + } + } + } + return true; +} + +template +bool DrawableLoader::CreateDrawables( T_GFXAPI& gfxApi, std::vector&& intermediateMeshObjects, const RenderContext& renderPass, const std::function( const MeshObjectIntermediate::MaterialDef& )>& materialLoader, std::vector& drawables, /*DrawableLoader::LoaderFlags*/uint32_t loaderFlags ) +{ + return CreateDrawables( gfxApi, std::move( intermediateMeshObjects ), {&renderPass, 1}, std::move( materialLoader ), drawables, loaderFlags ); +} diff --git a/framework/code/material/dx12/computable.cpp b/framework/code/material/dx12/computable.cpp new file mode 100644 index 0000000..22b2554 --- /dev/null +++ b/framework/code/material/dx12/computable.cpp @@ -0,0 +1,99 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#include "computable.hpp" +#include "system/os_common.h" +#include "dx12/commandList.hpp" + + +ComputablePass::~ComputablePass() +{ +} + + +ComputablePass::ComputablePass( ComputablePass&& other ) noexcept + : ComputablePassBase(std::move(other)) + , mPipeline(std::move(other.mPipeline)) + , mImageMemoryBarriers(std::move(other.mImageMemoryBarriers)) + , mBufferMemoryBarriers(std::move(other.mBufferMemoryBarriers)) + , mNeedsExecutionBarrier(other.mNeedsExecutionBarrier) +{ +} + + +template<> +bool Computable::Init() +{ + LOGI( "Creating Computable" ); + + const auto& materialPasses = mMaterial.GetMaterialPasses(); + mPasses.reserve( materialPasses.size() ); + + return true; +} + + +template<> +void Computable::SetDispatchGroupCount( uint32_t passIdx, const std::array& groupCount ) +{ + mPasses[passIdx].SetDispatchGroupCount( groupCount ); +} + +template<> +void Computable::SetDispatchThreadCount( uint32_t passIdx, const std::array& threadCount ) +{ + mPasses[passIdx].SetDispatchThreadCount( threadCount ); +} + +template<> +void Computable::DispatchPass( CommandList& cmdList, const ComputablePass& computablePass, uint32_t bufferIdx ) const +{ + auto* cmdBuffer = cmdList.Get(); + + // Add image barriers (if needed) + if (computablePass.NeedsBarrier()) + { + } + + // Bind the pipeline for this material + + // Bind everything the shader needs + + // Dispatch the compute task +} + +template<> +void Computable::Dispatch( CommandList& cmdList, uint32_t bufferIdx, bool timers ) const +{ + for (uint32_t passIdx = 0; const auto & computablePass : GetPasses()) + { + DispatchPass( cmdList, computablePass, bufferIdx % (uint32_t)computablePass.GetMaterialPass().GetDescriptorTables().size()); + ++passIdx; + } +} + +template<> +void Computable::Dispatch( CommandListBase& cmdList, uint32_t bufferIdx, bool timers ) const /*override*/ +{ + Dispatch( apiCast( cmdList ), bufferIdx, timers ); +} + +template<> +void Computable::AddOutputBarriersToCmdList( CommandList& commandList ) const +{ + const auto& computableOutputBufferBarriers = GetBufferOutputMemoryBarriers(); + const auto& computableOutputImageBarriers = GetImageOutputMemoryBarriers(); + + if (computableOutputBufferBarriers.empty() && computableOutputImageBarriers.empty()) + return; +} + +template<> +void Computable::AddOutputBarriersToCmdList( CommandListBase& cmdList ) const /*override*/ +{ + AddOutputBarriersToCmdList( apiCast( cmdList ) ); +} diff --git a/framework/code/material/dx12/computable.hpp b/framework/code/material/dx12/computable.hpp new file mode 100644 index 0000000..e6e08b0 --- /dev/null +++ b/framework/code/material/dx12/computable.hpp @@ -0,0 +1,72 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include "../computable.hpp" +#include "material.hpp" +#include "pipeline.hpp" + + +template<> +class ImageMemoryBarrier final : public ImageMemoryBarrierBase +{ +public: + typedef D3D12_RESOURCE_BARRIER tBarrier; + ImageMemoryBarrier( D3D12_RESOURCE_BARRIER&& barrier ) noexcept + : vkBarrier( std::move( barrier ) ) + {} + D3D12_RESOURCE_BARRIER vkBarrier; +}; +static_assert(sizeof( ImageMemoryBarrier ) == sizeof( D3D12_RESOURCE_BARRIER )); + +template<> +class BufferMemoryBarrier final : public BufferMemoryBarrierBase +{ +public: + typedef D3D12_RESOURCE_BARRIER tBarrier; + BufferMemoryBarrier( D3D12_RESOURCE_BARRIER&& barrier ) noexcept + : vkBarrier( std::move( barrier ) ) + {} + tBarrier vkBarrier; +}; +static_assert(sizeof( BufferMemoryBarrier ) == sizeof( D3D12_RESOURCE_BARRIER )); + + +template<> +class ComputablePass final : public ComputablePassBase +{ + ComputablePass( const ComputablePass& ) = delete; + ComputablePass& operator=( const ComputablePass& ) = delete; +public: + ComputablePass( const MaterialPass& materialPass, Pipeline pipeline, /*VkPipelineLayout pipelineLayout,*/ std::vector imageMemoryBarriers, std::vector bufferMemoryBarriers, bool needsExecutionBarrier) + : ComputablePassBase( materialPass ) + , mPipeline( std::move( pipeline ) ) + //, mPipelineLayout( pipelineLayout ) + , mImageMemoryBarriers( std::move( imageMemoryBarriers ) ) + , mBufferMemoryBarriers( std::move( bufferMemoryBarriers ) ) + , mNeedsExecutionBarrier( needsExecutionBarrier ) + {} + ComputablePass( ComputablePass&& ) noexcept; + ~ComputablePass(); + + const auto& GetMaterialPass() const { return apiCast( mMaterialPass ); } + + const auto& GetVkImageMemoryBarriers() const { return mImageMemoryBarriers; } + const auto& GetVkBufferMemoryBarriers() const { return mBufferMemoryBarriers; } + const bool NeedsBarrier() const { return mNeedsExecutionBarrier || (!mImageMemoryBarriers.empty()) || (!mBufferMemoryBarriers.empty()); }; ///< @return true if there needs to be a barrier before executing this compute pass + + Pipeline mPipeline; + //VkPipelineLayout mPipelineLayout; // Owned by ShaderPass or MaterialPass + +protected: + std::vector mImageMemoryBarriers; ///< Image barriers for ENTRY in to this pass. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + std::vector mBufferMemoryBarriers; ///< Buffer barriers for ENTRY in to this pass. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + bool mNeedsExecutionBarrier = false;///< Denotes if we need an execution barrier for ENTRY to this pass (even if there are no image or buffer barriers). +}; + diff --git a/framework/code/material/dx12/descriptorSetLayout.cpp b/framework/code/material/dx12/descriptorSetLayout.cpp new file mode 100644 index 0000000..511f62f --- /dev/null +++ b/framework/code/material/dx12/descriptorSetLayout.cpp @@ -0,0 +1,316 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "descriptorSetLayout.hpp" +#include "../descriptorSetDescription.hpp" +//#include "dx12/dx12.hpp" +#include +#include + +static D3D12_SHADER_VISIBILITY EnumToDx12(DescriptorSetDescription::StageFlag::t f) { + switch(f) + { + case DescriptorSetDescription::StageFlag::t::Vertex: + return D3D12_SHADER_VISIBILITY_VERTEX; + case DescriptorSetDescription::StageFlag::t::Fragment: + return D3D12_SHADER_VISIBILITY_PIXEL; + case DescriptorSetDescription::StageFlag::t::Geometry: + return D3D12_SHADER_VISIBILITY_GEOMETRY; + case DescriptorSetDescription::StageFlag::t::Compute: + return D3D12_SHADER_VISIBILITY_ALL; + case DescriptorSetDescription::StageFlag::t::None: + assert(0); + default: + // Mixing flags (or using any of the ray flags) just make the descriptor visible to all stages. + // DirectX 12 has a less finely grained control over this stuff (compared to other graphics api). + return D3D12_SHADER_VISIBILITY_ALL; + } + return D3D12_SHADER_VISIBILITY_ALL; +} + +DescriptorSetLayout::DescriptorSetLayout() noexcept + : DescriptorSetLayoutBase() +{ +} + +DescriptorSetLayout::~DescriptorSetLayout() +{ +// assert(m_descriptorSetLayout == VK_NULL_HANDLE); +} + +void DescriptorSetLayout::Destroy(Dx12& dx12) +{ +// if (m_descriptorSetLayout != VK_NULL_HANDLE) +// { +// vkDestroyDescriptorSetLayout(dx12.m_VulkanDevice, m_descriptorSetLayout, nullptr); +// m_descriptorSetLayout = VK_NULL_HANDLE; +// } +// m_descriptorSetLayoutBindings.clear(); +// m_descriptorPoolSizes.clear(); +} + +DescriptorSetLayout::DescriptorSetLayout(DescriptorSetLayout&& other) noexcept + : DescriptorSetLayoutBase(std::move(other)) +// , m_descriptorSetLayoutBindings(std::move(other.m_descriptorSetLayoutBindings)) +// , m_descriptorPoolSizes(std::move(other.m_descriptorPoolSizes)) +{ +// m_descriptorSetLayout = other.m_descriptorSetLayout; +// other.m_descriptorSetLayout = VK_NULL_HANDLE; +} + +bool DescriptorSetLayout::Init(Dx12& dx12, const DescriptorSetDescription& description) +{ + if (!DescriptorSetLayoutBase::Init(description)) + return false; + + const size_t numDescriptors = description.m_descriptorTypes.size(); + uint32_t shaderRegisterIndex = 0; + if (description.m_setIndex == 0) + { + // Root signature + auto& [rootParams, rootSamplers] = m_Layout.emplace(); + + rootParams.reserve(numDescriptors); + rootSamplers.reserve(numDescriptors); + uint32_t rootParamCount = 0; + uint32_t rootSamplerCount = 0; + uint32_t shaderRegisterIndex = 0; + + for (const auto& it : description.m_descriptorTypes) + { + bool validRootParam = false; + bool validRootSampler = false; + D3D12_ROOT_PARAMETER rootParam {}; + D3D12_STATIC_SAMPLER_DESC rootSampler {}; + + if (it.descriptorIndex < 0) + { + // Index of < 0 denotes we want to use sequential parameter indices. + ///TODO: look for collisions or determine how/if we want to handle out of order desciptor indices or enforce shaders that have an explicit binding index to define indices for all descriptors. + } + else + assert(0); ///TODO: implement user defined indices for DX12 + + assert(it.count == 1); // do we need to support a count > 1 (or <=0) for the root signature + + bool readOnly = it.readOnly; + switch (it.type) { + case DescriptorSetDescription::DescriptorType::ImageSampler: + assert(0); //not supported in the root (currently) + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::ImageSampled: + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV; + validRootParam = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::Sampler: +// assert(0);// Needs data setting into rootSampler + rootSampler = {}; + validRootSampler = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::UniformBuffer: + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV; + validRootParam = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::StorageBuffer: + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV; + validRootParam = true; + break; + case DescriptorSetDescription::DescriptorType::ImageStorage: + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV; + validRootParam = true; + break; + case DescriptorSetDescription::DescriptorType::InputAttachment: + assert(0); ///TODO: implement DX12 equivalent to input attachements (if one exists with render passes) + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::AccelerationStructure: + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV; + validRootParam = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::DrawIndirectBuffer: + assert(0 && "DrawIndirectBuffer is not a supported binding to a root signature"); + break; + case DescriptorSetDescription::DescriptorType::DescriptorTable: + rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE; + validRootParam = true; + break; + } + + if (validRootParam) + { + switch (rootParam.ParameterType) { + case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE: + rootParam.DescriptorTable = {}; // needs filling out when creating the root signature (in PipelineLayout::Init) + break; + case D3D12_ROOT_PARAMETER_TYPE_CBV: + case D3D12_ROOT_PARAMETER_TYPE_SRV: + case D3D12_ROOT_PARAMETER_TYPE_UAV: + rootParam.Descriptor = D3D12_ROOT_DESCRIPTOR { + .ShaderRegister = shaderRegisterIndex++, + .RegisterSpace = 0 + }; + break; + case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS: + assert(0);//not currently supported + break; + } + rootParam.ShaderVisibility = EnumToDx12(it.stages); + rootParams.emplace_back(rootParam); + } + else if (validRootSampler) + { + rootSamplers.emplace_back(rootSampler); + } + } + } + else + { + // Descriptor table (non root) + auto& [descriptors] = m_Layout.emplace(); + descriptors.reserve(numDescriptors); + + for (const auto& it : description.m_descriptorTypes) + { + D3D12_DESCRIPTOR_RANGE descriptor {}; + bool validDescriptor = false; + + bool readOnly = it.readOnly; + switch (it.type) { + case DescriptorSetDescription::DescriptorType::ImageSampler: + assert(0); // not currently valid (needs 2 slots?) + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::ImageSampled: + descriptor.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV; + validDescriptor = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::Sampler: + descriptor.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER; + validDescriptor = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::UniformBuffer: + descriptor.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_CBV; + validDescriptor = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::StorageBuffer: + descriptor.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV; + validDescriptor = true; + break; + case DescriptorSetDescription::DescriptorType::ImageStorage: + descriptor.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV; + validDescriptor = true; + break; + case DescriptorSetDescription::DescriptorType::InputAttachment: + assert(0); ///TODO: implement DX12 equivalent to input attachements (if one exists with render passes) + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::AccelerationStructure: + descriptor.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV; + validDescriptor = true; + assert(readOnly); + break; + case DescriptorSetDescription::DescriptorType::DrawIndirectBuffer: + assert(0 && "DrawIndirectBuffer is not a supported binding to a descriptor set"); + break; + case DescriptorSetDescription::DescriptorType::DescriptorTable: + assert(0); // Descriptor table cannot reference another table + break; + } + + if (validDescriptor) + { + descriptor.NumDescriptors = it.count; + if (it.count <= 0) + { + // Count of 0 denotes that we dont (yet) know how many descriptors will go into this slot. + ///TODO: support variable descriptor counts for DX12 + assert(0); + } + + if (it.descriptorIndex < 0) + { + // Index of < 0 denotes we want to use sequential descriptor binding indices. + ///TODO: look for collisions or determine how/if we want to handle out of order desciptor indices or enforce shaders that have an explicit binding index to define indices for all descriptors. + ///TODO: also ensure D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND works in this case + descriptor.BaseShaderRegister = shaderRegisterIndex; + shaderRegisterIndex += descriptor.NumDescriptors; + } + else + assert(0); ///TODO: implement user defined descriptor indices for DX12 + + descriptor.RegisterSpace = 1; + descriptor.OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND; + descriptors.emplace_back(descriptor); + } + } + } + + return true; +} + + +//VkDescriptorSetLayout DescriptorSetLayout::CreateVkDescriptorSetLayout(Dx12& dx12, const std::span descriptorSetLayoutBindings) +//{ +// // +// // Create the descriptor set layout +// // +// VkDescriptorSetLayoutCreateInfo layoutInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO }; +// layoutInfo.bindingCount = static_cast(descriptorSetLayoutBindings.size()); +// layoutInfo.pBindings = descriptorSetLayoutBindings.data(); +// +// VkDescriptorSetLayout descriptorSetLayout = VK_NULL_HANDLE; +// +// VkResult retVal = vkCreateDescriptorSetLayout(dx12.m_VulkanDevice, &layoutInfo, nullptr, &descriptorSetLayout); +// +// LOGI("vkCreateDescriptorSetLayout"); +// for (const auto& binding: descriptorSetLayoutBindings) +// { +// LOGI(" binding: %u\tdescriptorType: 0x%x descriptorCount: %d stageFlags: 0x%x pImmutableSamplers : %p", binding.binding, binding.descriptorType, binding.descriptorCount, binding.stageFlags, binding.pImmutableSamplers); +// } +// +// if (!CheckVkError("vkCreateDescriptorSetLayout()", retVal)) +// { +// return VK_NULL_HANDLE; +// } +// return descriptorSetLayout; +//} +// +// +//void DescriptorSetLayout::CalculatePoolSizes(const std::span descriptorSetLayoutBindings, std::vector& descriptorPoolSizes) +//{ +//#define MAX_USED_DESCRIPTOR_TYPES ((VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1) + 2) // Take a guess at how many unique descript types will be used +// +// descriptorPoolSizes.reserve(MAX_USED_DESCRIPTOR_TYPES); +// +// // +// // Calculate the descriptor set pool sizes +// // +// for (const auto& binding : descriptorSetLayoutBindings) +// { +// auto it = std::find_if(descriptorPoolSizes.begin(), descriptorPoolSizes.end(), [&binding](const VkDescriptorPoolSize& x) { return x.type == binding.descriptorType; }); +// if (it == descriptorPoolSizes.end()) +// { +// descriptorPoolSizes.push_back({ binding.descriptorType, binding.descriptorCount }); +// } +// else +// { +// it->descriptorCount += binding.descriptorCount; +// } +// } +//} + + + diff --git a/framework/code/material/dx12/descriptorSetLayout.hpp b/framework/code/material/dx12/descriptorSetLayout.hpp new file mode 100644 index 0000000..2834dc2 --- /dev/null +++ b/framework/code/material/dx12/descriptorSetLayout.hpp @@ -0,0 +1,54 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include +#include "../descriptorSetLayout.hpp" + +// Forward declares +class DescriptorSetDescription; +class Dx12; + + +/// Representation of a descriptor table (set) for Dx12. +/// template specialization of DescriptSetLayout +/// Used to describe the root signature or a descriptor table pointed to by the root signature. +/// Also has a mapping from descriptor slots name (nice name) to the their table index. +/// @ingroup Material +template<> +class DescriptorSetLayout : public DescriptorSetLayoutBase +{ + DescriptorSetLayout& operator=(const DescriptorSetLayout&) = delete; + DescriptorSetLayout(const DescriptorSetLayout&) = delete; +public: + DescriptorSetLayout() noexcept; + ~DescriptorSetLayout(); + DescriptorSetLayout(DescriptorSetLayout&&) noexcept; + + bool Init(Dx12& , const DescriptorSetDescription&); + void Destroy(Dx12&); + + struct RootSignatureParameters { + std::vector root; + std::vector samplers; + }; + struct DescriptorTableParameters { + std::vector ranges; + }; + const auto& GetLayout() const { return m_Layout; } + + template const auto& GetLayout() const; + template<> const auto& GetLayout() const { return std::get(m_Layout); } + template<> const auto& GetLayout() const { return std::get(m_Layout); } + +private: + std::variant < RootSignatureParameters, DescriptorTableParameters > m_Layout; +}; diff --git a/framework/code/material/dx12/drawableDx12.cpp b/framework/code/material/dx12/drawableDx12.cpp new file mode 100644 index 0000000..2c2ea9d --- /dev/null +++ b/framework/code/material/dx12/drawableDx12.cpp @@ -0,0 +1,271 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "drawableDx12.hpp" +#include "dx12/dx12.hpp" +#include "dx12/commandList.hpp" +#include "dx12/descriptorHeapManager.hpp" +#include "dx12/renderPass.hpp" +#include "material.hpp" +#include "pipeline.hpp" +#include "shader.hpp" +#include "../specializationConstants.hpp" +#include "material/shaderDescription.hpp" +#include "shaderModule.hpp" +#include "system/os_common.h" +#include "mesh/meshHelper.hpp" +#include "mesh/instanceGenerator.hpp" +#include +#include + +DrawablePass::~DrawablePass() +{ +} + +const DrawablePass* Drawable::GetDrawablePass(const std::string& passName) const +{ + auto it = mPassNameToIndex.find(passName); + if (it != mPassNameToIndex.end()) + { + return &mPasses[it->second]; + } + return nullptr; +} + + +Drawable::~Drawable() +{ +} + +bool Drawable::ReInit(std::span renderPasses, std::span pipelines, std::span passNames, uint32_t passMask, std::span passMultisample, std::span subpasses) +{ + assert( passMultisample.empty() || passMultisample.size() == passNames.size() ); + assert( renderPasses.size() == passNames.size() ); + + mPassMask = passMask; + mPassNameToIndex.clear(); + mPasses.clear(); + + const auto& shader = mMaterial.GetShader(); + mPasses.reserve(shader.GetShaderPasses().size()); + for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8; ++passIdx) + { + if (passMask & (1 << passIdx)) + { + // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", passNames[passIdx]); + auto* pMaterialPass = const_cast*>(mMaterial.GetMaterialPass(passNames[passIdx])); + if (!pMaterialPass) + { + LOGE(" Pass does not exist in shader"); + continue; + } + assert(pMaterialPass); + const auto& shaderPass = pMaterialPass->GetShaderPass(); + PipelineRasterizationState rasterizationState; + SpecializationConstants specializationConstants; + + Pipeline pipeline = pipelines[passIdx] + ? pipelines[passIdx].Copy() + : CreatePipeline( mGfxApi, + shaderPass.m_shaderPassDescription, + shaderPass.GetPipelineLayout(), + shaderPass.GetPipelineVertexInputState(), + rasterizationState, + specializationConstants, + shaderPass.m_shaders, + renderPasses[passIdx], + subpasses.empty() ? 0 : subpasses[passIdx], + passMultisample.empty() ? Msaa::Samples1 : passMultisample[passIdx] ); + + // Common to all pipelines + mPassNameToIndex.try_emplace(passNames[passIdx], (uint32_t)mPasses.size()); // add the lookup (in to mPasses) + + // Build the passVertexBufferLookup so at runtime we can easily populate the vkBuffer array with the vertex and instance buffers in the order specified per pass by m_vertexFormatBindings. + // Could do this in a single loop; currently split into 2 so we can potentially add more flexibility in where we get the VKBuffers from (TODO) + std::vector tmp; + tmp.reserve(shader.m_shaderDescription->m_vertexFormats.size()); + int numVertexRateFormats = 0, numInstanceRateFormats = 0; + for (const auto& vertexFormat : shader.m_shaderDescription->m_vertexFormats) + { + switch (vertexFormat.inputRate) { + case VertexFormat::eInputRate::Vertex: + tmp.push_back(numVertexRateFormats++); + break; + case VertexFormat::eInputRate::Instance: + tmp.push_back(--numInstanceRateFormats); + break; + } + } + std::vector passVertexBufferLookup; // order of the vkBuffers for this pass (index is in to the vertex array if positive, or in to the instance array if negative (-1 is the 'first') + DrawablePassVertexBuffers passVertexBuffers; + passVertexBufferLookup.reserve(shader.m_shaderDescription->m_vertexFormats.size()); + passVertexBuffers.views.reserve(shader.m_shaderDescription->m_vertexFormats.size()); + for (uint32_t formatBindingIdx : shaderPass.m_shaderPassDescription.m_vertexFormatBindings) + { + const int bufferIdx = tmp[formatBindingIdx]; + passVertexBufferLookup.push_back(bufferIdx); + if (bufferIdx >= 0) + { + // Vertex rate data (ie the mesh) + passVertexBuffers.views.push_back(mMeshObject.m_VertexBuffers[bufferIdx].GetVertexBufferView()); + + // Double check the mesh is supplying the data we expect in the shader, may mismatch if the mesh was not built using the vertex format (eg Mesh::CreateScreenSpaceMesh) + // We could dive even deeper, for now check the span and the number of attributes match + //assert(mMeshObject.m_VertexBuffers[bufferIdx].GetAttributes().size() == shader.m_shaderDescription->m_vertexFormats[formatBindingIdx].elements.size()); + assert(mMeshObject.m_VertexBuffers[bufferIdx].GetSpan() == shader.m_shaderDescription->m_vertexFormats[formatBindingIdx].span); + } + else + { + // Instance rate data (ie the instance buffer) + assert(bufferIdx == -1); + assert(mVertexInstanceBuffer.has_value()); + passVertexBuffers.views.push_back(mVertexInstanceBuffer->GetVertexBufferView()); + } + } + + // Index buffer is optional + D3D12_INDEX_BUFFER_VIEW indexBuffer = {}; + size_t indexCount = 0; + if (mMeshObject.m_IndexBuffer) + { + indexBuffer = mMeshObject.m_IndexBuffer->GetIndexBufferView(); + indexCount = mMeshObject.m_IndexBuffer->GetNumIndices(); + } + + // Indirect Draw buffer is optional +// VkBuffer drawIndirectBuffer = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetVkBuffer() : VK_NULL_HANDLE; +// uint32_t drawIndirectCount = mDrawIndirectBuffer.has_value() ? (uint32_t)mDrawIndirectBuffer->GetNumDraws() : 0; +// uint32_t drawIndirectOffset = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetBufferOffset() : 0; +// // Indirect Draw Count (count buffer) set to be the beginning of the drawIndirectBuffer IF there is an offset in the mDrawIndirectBuffer. +// VkBuffer drawIndirectCountBuffer = drawIndirectOffset>0 ? drawIndirectBuffer : VK_NULL_HANDLE; +// +// // Pipeline layout may come from the shaderPass or (if that fails) from the materialPass (if it was created late because of 'dynamic' descriptor set layout). +// VkPipelineLayout pipelineLayout = shaderPass.GetPipelineLayout().GetVkPipelineLayout(); +// if (pipelineLayout == VK_NULL_HANDLE) +// pipelineLayout = pMaterialPass->GetPipelineLayout().GetVkPipelineLayout(); + + // add the DrawablePass + DrawablePass& pass = mPasses.emplace_back( *pMaterialPass, + std::move( pipeline ), + pMaterialPass->GetRootData(), + pMaterialPass->GetDescriptorTables(), + std::move( passVertexBuffers ), + indexBuffer, + (uint32_t)mMeshObject.m_NumVertices, + (uint32_t)indexCount, + passIdx + ); + } + } + return true; +} + +void Drawable::DrawPass(CommandList& cmdList, const DrawablePass& drawablePass, uint32_t bufferIdx, const std::span vertexBufferOverrides) const +{ + ID3D12GraphicsCommandList* dxCmdList = cmdList.Get(); + const auto& shaderPass = drawablePass.mMaterialPass.GetShaderPass(); + + // Set the pipeline for this material + dxCmdList->SetPipelineState( drawablePass.mPipeline.GetPipeline() ); + + mGfxApi.SetDescriptorHeaps(dxCmdList); + + dxCmdList->SetGraphicsRootSignature( shaderPass.GetPipelineLayout().GetRootSignature() ); + + // Bind everything the shader needs + { + // Set the root parameters! + const auto& rootDescriptorTable = drawablePass.mDescriptorTables.begin(); + const auto& rootLayout = shaderPass.GetDescriptorSetLayouts()[0].GetLayout(); + uint32_t descriptorTableIdx = 0; // root is table 0 + for (size_t i = 0; i < rootLayout.root.size(); ++i) + { + switch (rootLayout.root[i].ParameterType) { + case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE: + dxCmdList->SetGraphicsRootDescriptorTable(i, drawablePass.mDescriptorTables[++descriptorTableIdx].GetGpuHandle()); + break; + case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS: + dxCmdList->SetGraphicsRoot32BitConstants(i, 0, nullptr, 0); + assert(0 && "unhandled root parameter"); + break; + case D3D12_ROOT_PARAMETER_TYPE_CBV: + dxCmdList->SetGraphicsRootConstantBufferView( i, drawablePass.mRootItems[i].gpuAddress ); + break; + case D3D12_ROOT_PARAMETER_TYPE_SRV: + dxCmdList->SetGraphicsRootShaderResourceView(i, 0); + assert(0 && "unhandled root parameter"); + break; + case D3D12_ROOT_PARAMETER_TYPE_UAV: + dxCmdList->SetGraphicsRootUnorderedAccessView(i, 0); + assert(0 && "unhandled root parameter"); + break; + } + } + } + + const auto& vertexBuffers = vertexBufferOverrides.empty() ? drawablePass.mVertexBuffers : vertexBufferOverrides[bufferIdx % vertexBufferOverrides.size()]; + + if (!vertexBuffers.views.empty()) + { + // Bind mesh vertex/instance buffer(s) + dxCmdList->IASetVertexBuffers( 0, (UINT) vertexBuffers.views.size(), vertexBuffers.views.data() ); + dxCmdList->IASetPrimitiveTopology( D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST ); + } + if (!vertexBufferOverrides.empty()) + { + assert(vertexBufferOverrides.empty() || vertexBuffers.views.size() == drawablePass.mVertexBuffers.views.size()); + } + + if (drawablePass.mIndexBuffer.Format != DXGI_FORMAT_UNKNOWN) + { + // Bind index buffer data + dxCmdList->IASetIndexBuffer(&drawablePass.mIndexBuffer); + +// if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) +// { +// if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) +// { +// // Draw the mesh using draw indirect cont buffer (VkDrawIndexedIndirectCount command) +// const auto* drawIndirectCountExt = mVulkan.GetExtension(); +// assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr); +// drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); +// assert(0);//not yet implemented +// } +// else +// // Draw the mesh using draw indirect buffer (VkDrawIndexedIndirectCommand) +// vkCmdDrawIndexedIndirect(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); +// } +// else + { + // Everything is set up, draw the mesh + dxCmdList->DrawIndexedInstanced(drawablePass.mNumIndices, GetInstances() ? (uint32_t)GetInstances()->GetNumVertices() : 1, 0, 0, 0); + } + } + else + { +// if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) +// { +// if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) +// { +// // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) +// const auto* drawIndirectCountExt = mVulkan.GetExtension(); +// assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr ); +// drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); +// } +// else +// // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) +// vkCmdDrawIndirect(cmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); +// } +// else + { + // Draw the mesh without index buffer + dxCmdList->DrawInstanced(drawablePass.mNumVertices, GetInstances() ? (uint32_t)GetInstances()->GetNumVertices() : 1, 0, 0); + } + } +} + diff --git a/framework/code/material/dx12/drawableDx12.hpp b/framework/code/material/dx12/drawableDx12.hpp new file mode 100644 index 0000000..a4b74a8 --- /dev/null +++ b/framework/code/material/dx12/drawableDx12.hpp @@ -0,0 +1,111 @@ +//============================================================================= +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include +#include +#include +#include +#include +#include +#include "../drawable.hpp" +#include "dx12/dx12.hpp" +#include "mesh/mesh.hpp" +#include "material.hpp" +#include "pipeline.hpp" +#include "dx12/renderPass.hpp" +#include "material/shaderDescription.hpp" +#include "memory/dx12/indexBufferObject.hpp" +#include "memory/dx12/vertexBufferObject.hpp" +#include "memory/drawIndirectBuffer.hpp" +#include "mesh/instanceGenerator.hpp" +#include "mesh/meshHelper.hpp" +#include "mesh/meshIntermediate.hpp" +#include "system/os_common.h" +//#include "pipelineVertexInputState.hpp" + +// Forward Declarations +class Dx12; +class MaterialBase; +struct MeshInstance; +enum class Msaa; +template class Material; +template class Shader; + +template<> +struct DrawablePassVertexBuffers : public DrawablePassVertexBuffersBase +{ + std::vector views; +}; + + +/// Encapsulates a drawable pass. +/// References vertex/index buffers etc from the parent Drawable. +/// Users are expected to use Drawable (which contains a vector of DrawablePasses and is more 'user friendly'). +/// @ingroup Material +template<> +class DrawablePass : public DrawablePassBase +{ + DrawablePass(const DrawablePass&) = delete; + DrawablePass& operator=(const DrawablePass&) = delete; + using tGfxApi = Dx12; +public: + DrawablePass(DrawablePass&&) noexcept = default; + DrawablePass() = delete; + ~DrawablePass(); + DrawablePass(const MaterialPass& MaterialPass, + Pipeline Pipeline, + //VkPipelineLayout PipelineLayout, + std::vector RootDescriptorTableItems, + std::vector DescriptorTables, + //const PipelineVertexInputState& PipelineVertexInputState, + DrawablePassVertexBuffers VertexBuffers, + D3D12_INDEX_BUFFER_VIEW IndexBuffer, + //VkIndexType IndexBufferType, + //VkBuffer DrawIndirectBuffer, + //VkBuffer DrawIndirectCountBuffer, + uint32_t NumVertices, + uint32_t NumIndices, +// uint32_t NumDrawIndirect, +// uint32_t DrawIndirectOffset, + uint32_t PassIdx + ) noexcept + : mMaterialPass( MaterialPass ) + , mPipeline( std::move(Pipeline) ) + //, mPipelineLayout( PipelineLayout )*/ + , mRootItems( std::move(RootDescriptorTableItems) ) + , mDescriptorTables( std::move(DescriptorTables) ) + /*, mPipelineVertexInputState( PipelineVertexInputState )*/ + , mVertexBuffers( std::move(VertexBuffers) ) + , mIndexBuffer( IndexBuffer ) + /*, mIndexBufferType( IndexBufferType ), mDrawIndirectBuffer( DrawIndirectBuffer ), mDrawIndirectCountBuffer( DrawIndirectCountBuffer )*/ + , mNumVertices( NumVertices ) + , mNumIndices( NumIndices) + /*mNumDrawIndirect( NumDrawIndirect), mDrawIndirectOffset( DrawIndirectOffset),*/ + , mPassIdx( PassIdx) + { + } + + const MaterialPass& mMaterialPass; + Pipeline mPipeline; + //VkPipeline mPipeline = VK_NULL_HANDLE; // Owned by us + //VkPipelineLayout mPipelineLayout; // Owned by shader + std::vector mRootItems; + std::vector mDescriptorTables; // + //const PipelineVertexInputState& mPipelineVertexInputState; // contains vertex binding and attribute descriptions + //DrawablePassVertexBuffers mVertexBuffers; // contains vkbuffer/offsets; one per mVertexBuffersLookup entry. May be vertex rate or instance rate. + DrawablePassVertexBuffers mVertexBuffers; // one per mVertexBuffersLookup entry. May be vertex rate or instance rate + D3D12_INDEX_BUFFER_VIEW mIndexBuffer = {0,0,DXGI_FORMAT_UNKNOWN}; + //VkIndexType mIndexBufferType = VK_INDEX_TYPE_MAX_ENUM; + //VkBuffer mDrawIndirectBuffer = VK_NULL_HANDLE; + //VkBuffer mDrawIndirectCountBuffer = VK_NULL_HANDLE; + uint32_t mNumVertices; + uint32_t mNumIndices; + //uint32_t mNumDrawIndirect; + //uint32_t mDrawIndirectOffset; // if non zero offset mDrawIndirectBuffer by this + uint32_t mPassIdx; // index of the bit in Drawable::m_passMask +}; diff --git a/framework/code/material/dx12/material.cpp b/framework/code/material/dx12/material.cpp new file mode 100644 index 0000000..98c0b07 --- /dev/null +++ b/framework/code/material/dx12/material.cpp @@ -0,0 +1,15 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "material.hpp" +#include "shader.hpp" +//#include "vulkan/vulkan.hpp" +#include +#include "system/os_common.h" +//#include "vulkan/TextureFuncts.h" +#include "texture/dx12/texture.hpp" diff --git a/framework/code/material/dx12/material.hpp b/framework/code/material/dx12/material.hpp new file mode 100644 index 0000000..a03a635 --- /dev/null +++ b/framework/code/material/dx12/material.hpp @@ -0,0 +1,30 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "dx12/dx12.hpp" +#include "materialPass.hpp" +#include "../material.hpp" +#include "../materialT.hpp" + +using MaterialDx12 = Material; + + +/// @defgroup Material +/// Material and Shader loader. +/// Handles creation of descriptor sets, buffer binding, shader binaries (everything in Dx12 that describes and is used to render a shader). +/// +/// Typically user (application) writes a Json description for each 'Shader' that describes the inputs, outputs, and internal state of the shader, and the shader code (glsl). +/// The user then uses ShaderManagerBase::AddShader to register (and load) each Json file and the shader binaries. +/// +/// From there the user uses MaterialManagerBase::CreateMaterial to create a MaterialBase instance of the Shader (a MaterialBase contains bindings to the various texture/buffer inputs that a Shader requires - there can be many Materials using the same Shader (each MaterialBase with different textures, vertex buffers and/or uniform buffers etc) +/// +/// The MaterialBase returned by CreateMaterial can be used to Create a Drawable or Computable object that wraps everything together with one convenient interface! +/// +/// For more complex models the user should use DrawableLoader::LoadDrawable to load the mesh model file (and return a vector of Drawables). This api greatly simplifies the material creation and binding, splitting model meshes across material boundaries, automatically detecting instances (optionally). +/// diff --git a/framework/code/material/dx12/materialManager.cpp b/framework/code/material/dx12/materialManager.cpp new file mode 100644 index 0000000..95fe40c --- /dev/null +++ b/framework/code/material/dx12/materialManager.cpp @@ -0,0 +1,175 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "material.hpp" +#include "materialManager.hpp" +#include "../shaderDescription.hpp" +#include "../specializationConstants.hpp" +#include "descriptorSetLayout.hpp" +#include "shader.hpp" +#include "system/os_common.h" +#include "dx12/dx12.hpp" +#include "texture/Dx12/texture.hpp" + +#include +static_assert(GLM_HAS_CONSTEXPR); + + +MaterialManager::MaterialManager( Dx12& dx12 ) noexcept : MaterialManagerBase(dx12) +{} + +MaterialManager::~MaterialManager() +{} + +MaterialPass MaterialManager::CreateMaterialPassInternal( + const ShaderPass& shaderPass, + uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function(const std::string&)>& bufferLoader, + const std::function(const std::string&)>& imageLoader, + const std::function& accelerationStructureLoader, + const std::function& specializationStructureLoader, + const std::string& passDebugName) const +{ + using ImageInfo = ImageInfo; + auto& dx12 = static_cast(mGfxApi); + const std::vector>& descriptorSetLayouts = shaderPass.GetDescriptorSetLayouts(); + + // + // Gather the (named) texture and uniform buffer slots (for this material pass) + // + MaterialPass::tTextureBindings textureBindings; + MaterialPass::tImageBindings imageBindings; + MaterialPass::tBufferBindings bufferBindings; + MaterialPass::tAccelerationStructureBindings accelerationStructureBindings; + + for (uint32_t layoutIdx = 0; layoutIdx < (uint32_t) descriptorSetLayouts.size(); ++layoutIdx) + { + const auto& descSetLayout = descriptorSetLayouts[layoutIdx]; + std::vector dxBindings; + + for (const auto& bindingNames : descSetLayout.GetNameToBinding()) + { + uint32_t descriptorCount = 0; + const std::string& bindingName = bindingNames.first; + const DescriptorSetLayoutBase::BindingTypeAndIndex& binding = bindingNames.second; + using DescriptorType = DescriptorSetDescription::DescriptorType; + switch (binding.type) + { + case DescriptorType::ImageSampler: + case DescriptorType::ImageSampled: + case DescriptorType::Sampler: + { + MaterialManagerBase::tPerFrameTexInfo pTextures = textureLoader(bindingName); // Get the texture(s) and/or samplers from the callback + descriptorCount = (uint32_t) pTextures.size(); + textureBindings.push_back({std::move(pTextures), {layoutIdx, binding}}); + break; + } + case DescriptorType::InputAttachment: + case DescriptorType::ImageStorage: + { + if (imageLoader) + { + const ImageInfo imageInfo(imageLoader(bindingName)); + descriptorCount = 1; + imageBindings.push_back({{imageInfo}, {layoutIdx, binding}}); + } + else + { + // Fallback to using the texture callback + MaterialManagerBase::tPerFrameTexInfo pTextures = textureLoader(bindingName); + std::vector imageInfos; + descriptorCount = (uint32_t)pTextures.size(); + imageInfos.reserve(descriptorCount); + for (const auto* pTexture : pTextures) + imageInfos.push_back(ImageInfo(*pTexture)); + imageBindings.push_back({std::move(imageInfos), {layoutIdx, binding}}); + } + break; + } + + case DescriptorType::UniformBuffer: + case DescriptorType::StorageBuffer: + { + PerFrameBuffer dxBuffers = bufferLoader(bindingName); // Get the buffer(s) from the callback + descriptorCount = (uint32_t) dxBuffers.size(); + bufferBindings.push_back({std::move(dxBuffers), {layoutIdx, binding}}); + break; + } +#if VK_KHR_acceleration_structure +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wswitch" +#endif // defined(__clang__) + case DescriptorType::AccelerationStructure: + { + assert(accelerationStructureLoader && "Needs accelerationStructureLoader function defining"); + MaterialPass::tPerFrameAccelerationStructure vkAS = accelerationStructureLoader(bindingName); // Get the buffer(s) from the callback + accelerationStructureBindings.push_back({ std::move(vkAS), binding }); + break; + } +#if defined(__clang__) +#pragma clang diagnostic pop +#endif // defined(__clang__) +#endif // VK_KHR_acceleration_structure + case DescriptorType::DescriptorTable: + { + // Skip past this (Name points to one of the other descriptor sets in descriptorSetLayouts) + break; + } + default: + assert(0); // needs implementing + break; + } + + // Fill in descriptor count if 'dynamically sized' + if (!dxBindings.empty() && dxBindings[binding.index].count == 0) + { + dxBindings[binding.index].count = descriptorCount; + } + } + } + + SpecializationConstants specializationConstants; + return MaterialPass(dx12, shaderPass/*, std::move(descriptorPool), std::move(descriptorTables), std::move(dynamicVkDescriptorSetLayouts)*/, + std::move(textureBindings), std::move(imageBindings), std::move(bufferBindings), std::move(accelerationStructureBindings), std::move(specializationConstants)); +} + +//Material MaterialManager::CreateMaterial(Dx12& dx12, const Shader& shader, uint32_t numFrameBuffers, +// const std::function::tPerFrameTexInfo(const std::string&)>& textureLoader, +// const std::function(const std::string&)>& bufferLoader, +// const std::function& imageLoader, +// const std::function::tPerFrameAccelerationStructure(const std::string&)>& accelerationStructureLoader, +// const std::function& specializationConstantLoader) const + +Material MaterialManager::CreateMaterial( const Shader& shader, + uint32_t numFrameBuffers, + const std::function::tPerFrameTexInfo( const std::string& )>& textureLoader, + const std::function( const std::string& )>& bufferLoader, + const std::function( const std::string& )>& imageLoader, + const std::function::tPerFrameAccelerationStructure( const std::string& )>& accelerationStructureLoader, + const std::function& specializationConstantLoader ) const +{ + Material material( shader, numFrameBuffers ); + + // iterate over the passes (in their index order - iterating std::map gaurantees to iterate in key order) + const auto& shaderPasses = shader.GetShaderPasses(); + for (uint32_t passIdx = 0; const auto& passName : shader.GetShaderPassIndicesToNames()) + { + const auto& shaderPass = shaderPasses[passIdx]; + material.AddMaterialPass(passName, CreateMaterialPassInternal(shaderPass, numFrameBuffers, textureLoader, bufferLoader, imageLoader, accelerationStructureLoader, specializationConstantLoader, passName)); + ++passIdx; + } + + for (uint32_t whichBuffer = 0; whichBuffer < numFrameBuffers; ++whichBuffer) + { + material.UpdateDescriptorSets(whichBuffer); + } + + return material; +} diff --git a/framework/code/material/dx12/materialManager.hpp b/framework/code/material/dx12/materialManager.hpp new file mode 100644 index 0000000..8d28cd3 --- /dev/null +++ b/framework/code/material/dx12/materialManager.hpp @@ -0,0 +1,46 @@ +//============================================================================================================ +// +// +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "../materialManager.hpp" + +class Dx12; + + +///// @brief Template specialization of MaterialManager container for Dx12 graphics api. +//template<> +//class MaterialManager final : public MaterialManagerBase +//{ +// using ImageInfo = ImageInfo; +// MaterialManager& operator=( const MaterialManager& ) = delete; +// MaterialManager( const MaterialManager& ) = delete; +//public: +// +// MaterialManager(); +// ~MaterialManager(); +// +// /// Create a material to be used for rendering (potentially contains multiple passes) +// /// If numFrameBuffers is not 1 there will be numFrameBuffers descriptor sets created (so different buffers can be bound on different 'frames', although the layout is fixed) +// Material CreateMaterial( Dx12& gfxApi, const Shader& shader, uint32_t numFrameBuffers, +// const std::function& textureLoader, +// const std::function( const std::string& )>& bufferLoader, +// const std::function& imageLoader = nullptr, +// const std::function& accelerationStructureLoader = nullptr, +// const std::function& specializationConstantLoader = nullptr ) const; +//protected: +// /// Internal material pass creation (does not UpdateDescriptorSets) +// MaterialPass CreateMaterialPassInternal( Dx12& gfxapi, +// const ShaderPass& shaderPass, +// uint32_t numFrameBuffers, +// const std::function& textureLoader, +// const std::function( const std::string& )>& bufferLoader, +// const std::function& imageLoader, +// const std::function& accelerationStructureLoader, +// const std::function& specializationStructureLoader, +// const std::string& passDebugName ) const; +//}; diff --git a/framework/code/material/dx12/materialPass.cpp b/framework/code/material/dx12/materialPass.cpp new file mode 100644 index 0000000..9ae65bc --- /dev/null +++ b/framework/code/material/dx12/materialPass.cpp @@ -0,0 +1,180 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "material.hpp" +#include "shader.hpp" +#include "../specializationConstants.hpp" +#include +#include "system/os_common.h" +#include "texture/dx12/texture.hpp" + + +MaterialPass::MaterialPass(Dx12& gfxapi, const ShaderPass& shaderPass/*, VkDescriptorPool descriptorPool, std::vector&& descriptorTables, std::vector dynamicDescriptorSetLayouts*/, tTextureBindings textureBindings, tImageBindings imageBindings, tBufferBindings bufferBindings, tAccelerationStructureBindings accelerationStructureBindings, SpecializationConstants specializationConstants ) noexcept + : MaterialPassBase(shaderPass) + , mGfxApi( gfxapi ) + , mTextureBindings(std::move(textureBindings)) + , mImageBindings(std::move(imageBindings)) + , mBufferBindings(std::move(bufferBindings)) + , mAccelerationStructureBindings( std::move( accelerationStructureBindings ) ) +{ +} + +MaterialPass::MaterialPass(MaterialPass&& other) noexcept + : MaterialPassBase(std::move(other)) + , mGfxApi( other.mGfxApi ) + , mRootData(std::move(other.mRootData)) + , mDescriptorTables(std::move(other.mDescriptorTables)) + , mTextureBindings(std::move(other.mTextureBindings)) + , mImageBindings(std::move(other.mImageBindings)) + , mBufferBindings(std::move(other.mBufferBindings)) + , mAccelerationStructureBindings( std::move( other.mAccelerationStructureBindings ) ) +{ +} + +MaterialPass::~MaterialPass() +{ + for (auto& descriptorTable: mDescriptorTables) + { + mGfxApi.FreeShaderResourceViewDescriptors(std::move(descriptorTable)); + } +} + +const SpecializationConstants& MaterialPass::GetSpecializationConstants() const +{ + static SpecializationConstants empty; //not available on Dx12 + return empty; +} + +ImageInfo::ImageInfo(const Texture& t) + : ImageInfoBase() + , imageViewNumMips(t.MipLevels) + , imageViewFirstMip(t.FirstMip) +{ +} + +ImageInfo::ImageInfo(const TextureBase& t) : ImageInfo( apiCast(t) ) +{ +} + +ImageInfo::ImageInfo(const ImageInfo& src) + : ImageInfoBase() + , imageViewNumMips(src.imageViewNumMips) + , imageViewFirstMip( src.imageViewFirstMip ) +{ +} + +ImageInfo::ImageInfo( ImageInfo&& src ) noexcept + : ImageInfoBase() + , imageViewNumMips( src.imageViewNumMips ) + , imageViewFirstMip( src.imageViewFirstMip ) +{ + src.imageViewNumMips = 0; + src.imageViewFirstMip = 0; +} + +ImageInfo& ImageInfo::operator=(ImageInfo&& src) noexcept +{ + if (this != &src) + { + src.imageViewNumMips = 0; + src.imageViewFirstMip = 0; + } + return *this; +} + +bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) +{ + const auto& descriptorTableLayouts = GetShaderPass().GetDescriptorSetLayouts(); + mDescriptorTables.reserve(descriptorTableLayouts.size()); + + for (bool root=true; auto& descriptorTableLayout : descriptorTableLayouts) + { + if (root) + { + // The 'root' descriptor table allocation isnt used (root descriptor table is handled differently), but we make a dummy allocation anyhow! ///TODO: remove this allocation + const auto& layout = descriptorTableLayout.GetLayout(); + mDescriptorTables.emplace_back(mGfxApi.AllocateShaderResourceViewDescriptors(layout.root.size())); + // Pre-size the rootdata array (so we can write 'out of order') + mRootData.resize(layout.root.size()); + } + else + { + const auto& layout = descriptorTableLayout.GetLayout(); + mDescriptorTables.emplace_back(mGfxApi.AllocateShaderResourceViewDescriptors(layout.ranges.size())); + } + root = false; + } + + // Go through the textures first + for (const auto& textureBinding : mTextureBindings) + { + uint32_t tableIndex = textureBinding.second.setIndex; + uint32_t bindingIndex = textureBinding.second.index; + uint32_t numTexToBind = textureBinding.second.isArray ? (uint32_t)textureBinding.first.size() : 1; + uint32_t texIndex = textureBinding.second.isArray ? 0 : (bufferIdx < textureBinding.first.size() ? bufferIdx : 0); + + if (tableIndex == 0) + { + // Add to root + for (uint32_t t = 0; t < numTexToBind; ++t, ++bindingIndex, ++texIndex) + { + const auto& texture = apiCast( textureBinding.first[texIndex] ); + mRootData[bindingIndex] = RootItem{.binding = {.descriptorType = DescriptorBinding::DescriptorType::SRV, + .bindingIndex = bindingIndex, + .count = 1}, + .gpuAddress = texture->GetResource()->GetGPUVirtualAddress()}; + } + } + else + { + for (uint32_t t = 0; t < numTexToBind; ++t, ++bindingIndex, ++texIndex) + { + // Create texture view + const auto& texture = apiCast( textureBinding.first[texIndex] ); + mGfxApi.GetDevice()->CreateShaderResourceView( texture->GetResource(), &texture->GetResourceViewDesc(), mDescriptorTables[tableIndex].GetCpuHandle( bindingIndex ) ); + } + } + } + + // Now do the buffers + for (const auto& bufferBinding : mBufferBindings) + { + uint32_t tableIndex = bufferBinding.second.setIndex; + uint32_t bindingIndex = bufferBinding.second.index; + uint32_t numBuffersToBind = bufferBinding.second.isArray ? (uint32_t)bufferBinding.first.size() : 1; + uint32_t bufferIndex = bufferBinding.second.isArray ? 0 : (bufferIdx < bufferBinding.first.size() ? bufferIdx : 0); + + if (tableIndex == 0) + { + // Add to root + for (uint32_t t = 0; t < numBuffersToBind; ++t, ++bufferIndex) + { + const auto& buffer = bufferBinding.first[bufferIndex]; + mRootData[bindingIndex] = RootItem{.binding = {.descriptorType = DescriptorBinding::DescriptorType::CBV, + .bindingIndex = bindingIndex, + .count = 1}, + .gpuAddress = buffer.buffer()->GetGPUVirtualAddress()}; + } + } + else + { + for (uint32_t t = 0; t < numBuffersToBind; ++t, ++bufferIndex) + { + const auto& buffer = bufferBinding.first[bufferIndex]; + assert(buffer.offset() == 0 && "Buffer offset not (currently) implemented for Dx12"); + D3D12_CONSTANT_BUFFER_VIEW_DESC viewDesc{}; + viewDesc.BufferLocation = buffer.buffer()->GetGPUVirtualAddress(); + viewDesc.SizeInBytes = buffer.buffer()->GetDesc().Width; + mGfxApi.GetDevice()->CreateConstantBufferView(&viewDesc, mDescriptorTables[tableIndex].GetCpuHandle(bindingIndex)); + } + } + } + + return true; +} + diff --git a/framework/code/material/dx12/materialPass.hpp b/framework/code/material/dx12/materialPass.hpp new file mode 100644 index 0000000..1937ecd --- /dev/null +++ b/framework/code/material/dx12/materialPass.hpp @@ -0,0 +1,108 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include "shader.hpp" +#include "../materialManager.hpp" +#include "../materialPass.hpp" + +using MaterialPassDx12 = MaterialPass; + +// Forward declarations +class TextureBase; +struct DescriptorTableHandle; +template struct ImageInfo; +template class PipelineLayout; +template class ShaderPass; +template class SpecializationConstants; +template class Texture; + + +struct DescriptorBinding +{ + enum class DescriptorType { + Constant, + CBV, + SRV, + UAV, + Descriptor + } descriptorType; + UINT bindingIndex; + UINT count; +}; + +struct RootItem { + DescriptorBinding binding; + D3D12_GPU_VIRTUAL_ADDRESS gpuAddress; +}; + + +/// Reference to a texture image. +/// Does not have ownership over referenced image or view and lifetime of those object should be longer than the referencing @ImageInfo (no reference counting). +/// @ingroup Material +template<> +struct ImageInfo : public ImageInfoBase { + ImageInfo() noexcept : ImageInfoBase() {} + ImageInfo(ImageInfo&&) noexcept; + ImageInfo& operator=(ImageInfo&&) noexcept; + ImageInfo& operator=(const ImageInfo&) = delete; + ImageInfo(const ImageInfo&); + ImageInfo(const Texture&); + ImageInfo(const TextureBase&); + uint32_t imageViewNumMips = 0; + uint32_t imageViewFirstMip = 0; +}; + + +/// An instance of a ShaderPass material. +/// Template class specialization for Vulkan +/// @ingroup Material +template<> +class MaterialPass : public MaterialPassBase +{ + MaterialPass(const MaterialPass&) = delete; + MaterialPass& operator=(const MaterialPass&) = delete; + using ImageInfo = ImageInfo; +public: + + typedef std::vector tPerFrameImageInfo; + + typedef std::vector > tTextureBindings; + typedef std::vector > tImageBindings; + typedef std::vector , DescriptorTypeAndLocation>> tBufferBindings; + typedef std::vector > tAccelerationStructureBindings; + + MaterialPass() noexcept = delete; + MaterialPass(Dx12& gfxapi, const ShaderPass&/*, VkDescriptorPool, std::vector&&/*, std::vector,*/, tTextureBindings, tImageBindings, tBufferBindings, tAccelerationStructureBindings, SpecializationConstants) noexcept; + MaterialPass(MaterialPass&&) noexcept; + ~MaterialPass(); + + const auto& GetShaderPass() const { return apiCast( mShaderPass ); } + + const auto& GetRootData() const { return mRootData; } + const auto& GetDescriptorTables() const { return mDescriptorTables; } + const SpecializationConstants& GetSpecializationConstants() const; + + bool UpdateDescriptorSets(uint32_t bufferIdx); + +protected: + Dx12& mGfxApi; + + // Dx12 objects + std::vector mRootData; ///< Root descriptor table data + std::vector mDescriptorTables;///< Non root descriptor tables + + tTextureBindings mTextureBindings; ///< Images (textures) (with sampler) considered readonly + tImageBindings mImageBindings; ///< Images that may be bound as writable (or read/write). + tBufferBindings mBufferBindings; + tAccelerationStructureBindings mAccelerationStructureBindings; + +}; + + diff --git a/framework/code/material/dx12/pipeline.cpp b/framework/code/material/dx12/pipeline.cpp new file mode 100644 index 0000000..5aa102d --- /dev/null +++ b/framework/code/material/dx12/pipeline.cpp @@ -0,0 +1,208 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include "dx12/dx12.hpp" +#include "dx12/renderPass.hpp" +#include "pipeline.hpp" +#include "pipelineLayout.hpp" +#include "pipelineVertexInputState.hpp" +#include "shader.hpp" +#include "shaderModule.hpp" +#include "../shaderDescription.hpp" + +// Forward declarations +class Dx12; + + +Pipeline::Pipeline() noexcept + : mPipeline() +{ +} + +Pipeline::Pipeline(ComPtr pipeline) noexcept + : mPipeline( std::move(pipeline) ) +{ + assert( mPipeline ); +} + +Pipeline::~Pipeline() +{ +} + +static D3D12_BLEND EnumToDx12( ShaderPassDescription::BlendFactor bf) +{ + switch( bf ) + { + case ShaderPassDescription::BlendFactor::Zero: + return D3D12_BLEND_ZERO; + case ShaderPassDescription::BlendFactor::One: + return D3D12_BLEND_ONE; + case ShaderPassDescription::BlendFactor::SrcAlpha: + return D3D12_BLEND_SRC_ALPHA; + case ShaderPassDescription::BlendFactor::OneMinusSrcAlpha: + return D3D12_BLEND_INV_SRC_ALPHA; + case ShaderPassDescription::BlendFactor::DstAlpha: + return D3D12_BLEND_DEST_ALPHA; + case ShaderPassDescription::BlendFactor::OneMinusDstAlpha: + return D3D12_BLEND_INV_DEST_ALPHA; + } + assert( 0 ); + return D3D12_BLEND_ZERO; +} + +static UINT EnumToDx12( Msaa msaa ) +{ + return (UINT) msaa; +} + + +template<> +Pipeline CreatePipeline( Dx12& dx12, + const ShaderPassDescription& shaderPassDescription, + const PipelineLayout& pipelineLayout, + const PipelineVertexInputState& inputLayout, + const PipelineRasterizationState& rasterizationState, + const SpecializationConstants&, + const ShaderModules& shaderModules, + const RenderPass& renderPass, + uint32_t subpass, + Msaa msaa) +{ + // State for rasterization, such as polygon fill mode is defined. + const auto& fixedFunctionSettings = shaderPassDescription.m_fixedFunctionSettings; + D3D12_CULL_MODE cullMode = (fixedFunctionSettings.cullBackFace == false) ? ((fixedFunctionSettings.cullFrontFace == false) ? D3D12_CULL_MODE_NONE : D3D12_CULL_MODE_FRONT) : D3D12_CULL_MODE_BACK; + D3D12_RASTERIZER_DESC rasterizerState{ + .FillMode = D3D12_FILL_MODE_SOLID, + .CullMode = cullMode, + .FrontCounterClockwise = FALSE, + .DepthBias = fixedFunctionSettings.depthBiasEnable ? (int)fixedFunctionSettings.depthBiasConstant : D3D12_DEFAULT_DEPTH_BIAS, + .DepthBiasClamp = fixedFunctionSettings.depthBiasEnable ? fixedFunctionSettings.depthBiasClamp : D3D12_DEFAULT_DEPTH_BIAS_CLAMP, + .SlopeScaledDepthBias = fixedFunctionSettings.depthBiasEnable ? fixedFunctionSettings.depthBiasSlope : D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS, + .DepthClipEnable = fixedFunctionSettings.depthClampEnable ? TRUE : FALSE, + .MultisampleEnable = FALSE, + .AntialiasedLineEnable = FALSE, + .ForcedSampleCount = 0, + .ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF + }; + + // Setup blending/transparency + D3D12_BLEND_DESC blendState{ + .AlphaToCoverageEnable = FALSE, + .IndependentBlendEnable = FALSE, + }; + const auto& outputSettings = shaderPassDescription.m_outputs; + assert(outputSettings.size() <= 8/*max render targets currently in Dx12*/); + for (auto i=0; i < outputSettings.size(); ++i) + { + const auto& outputSetting = outputSettings[i]; + blendState.RenderTarget[i] = D3D12_RENDER_TARGET_BLEND_DESC{ + .BlendEnable = outputSetting.blendEnable ? TRUE : FALSE, + .LogicOpEnable = FALSE, + .SrcBlend = EnumToDx12(outputSetting.srcColorBlendFactor), + .DestBlend = EnumToDx12(outputSetting.dstColorBlendFactor), + .BlendOp = D3D12_BLEND_OP_ADD, + .SrcBlendAlpha = EnumToDx12(outputSetting.srcAlphaBlendFactor), + .DestBlendAlpha = EnumToDx12(outputSetting.dstAlphaBlendFactor), + .BlendOpAlpha = D3D12_BLEND_OP_ADD, + .LogicOp = D3D12_LOGIC_OP_NOOP, + .RenderTargetWriteMask = outputSetting.colorWriteMask & (D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN | D3D12_COLOR_WRITE_ENABLE_BLUE | D3D12_COLOR_WRITE_ENABLE_ALPHA) + }; + } + + // Setup depth testing + D3D12_COMPARISON_FUNC depthFunction; + switch( fixedFunctionSettings.depthCompareOp ) { + case ShaderPassDescription::DepthCompareOp::LessEqual: + depthFunction = D3D12_COMPARISON_FUNC_LESS_EQUAL; + break; + case ShaderPassDescription::DepthCompareOp::Equal: + depthFunction = D3D12_COMPARISON_FUNC_EQUAL; + break; + case ShaderPassDescription::DepthCompareOp::Greater: + depthFunction = D3D12_COMPARISON_FUNC_GREATER; + break; + } + D3D12_DEPTH_STENCIL_DESC depthState { + .DepthEnable = fixedFunctionSettings.depthTestEnable ? TRUE : FALSE, + .DepthWriteMask = fixedFunctionSettings.depthWriteEnable ? D3D12_DEPTH_WRITE_MASK_ALL : D3D12_DEPTH_WRITE_MASK_ZERO, + .DepthFunc = depthFunction, + .StencilEnable = FALSE, + .StencilReadMask = 0xff, + .StencilWriteMask = 0xff, + }; + + DXGI_SAMPLE_DESC sampleDesc { + .Count = EnumToDx12(msaa), + .Quality = 0 + }; + + uint32_t sampleMask = UINT_MAX; + const auto& sampleShadingSettings = shaderPassDescription.m_sampleShadingSettings; + assert(sampleShadingSettings.sampleShadingEnable == false); // not currently implemented + assert(sampleShadingSettings.forceCenterSample == false); // not currently implemented + if (sampleShadingSettings.sampleShadingMask != 0) + { + assert(sampleDesc.Count <= 32 ); // sampleMask is only 32bits currently! Easy fix if we want > 32x MSAA + sampleMask = sampleShadingSettings.sampleShadingMask & ((1u << sampleDesc.Count) -1u); + } + + using tShaderModuleData = ShaderModule::tData; + tShaderModuleData emptyData = {}; + auto [vertData, fragData] = std::visit( [&](auto& m) -> std::pair + { + using T = std::decay_t; + if constexpr (std::is_same_v>) + { + return { m.vert.GetShaderData(), m.frag.GetShaderData() }; + } + else if constexpr (std::is_same_v>) + { + return { m.vert.GetShaderData(), emptyData }; + } + else + { + assert(0); // unsupported shader module type (eg ComputeShaderModule) + return { emptyData, emptyData }; + } + }, shaderModules.m_modules ); + + ComPtr pipelineState; + D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc{}; + psoDesc.InputLayout = inputLayout.GetInputLayoutDesc(); + psoDesc.pRootSignature = const_cast( pipelineLayout.GetRootSignature() ); + psoDesc.VS.pShaderBytecode = vertData.data(); + psoDesc.VS.BytecodeLength = vertData.size(); + psoDesc.PS.pShaderBytecode = fragData.data(); + psoDesc.PS.BytecodeLength = fragData.size(); + psoDesc.RasterizerState = rasterizerState; + psoDesc.BlendState = blendState; + psoDesc.DepthStencilState = depthState; + psoDesc.SampleMask = sampleMask; + psoDesc.SampleDesc = sampleDesc; + psoDesc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + psoDesc.NumRenderTargets = outputSettings.size(); + + const auto& renderPassFormats = renderPass.GetRenderTargetFormats(); + psoDesc.NumRenderTargets = (UINT) renderPassFormats.size(); + assert(psoDesc.NumRenderTargets <= 8); + psoDesc.NumRenderTargets = std::min(psoDesc.NumRenderTargets, 8u); + for (auto i=0; i < psoDesc.NumRenderTargets; ++i) + psoDesc.RTVFormats[i] = renderPassFormats[i]; + psoDesc.DSVFormat = renderPass.GetRenderTargetDepthFormat(); + + assert( psoDesc.BlendState.RenderTarget[0].RenderTargetWriteMask == 0xf ); + + if (S_OK != dx12.GetDevice()->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&pipelineState))) + { + // Error + return {}; + } + return Pipeline(std::move(pipelineState)); +} diff --git a/framework/code/material/dx12/pipeline.hpp b/framework/code/material/dx12/pipeline.hpp new file mode 100644 index 0000000..33554c0 --- /dev/null +++ b/framework/code/material/dx12/pipeline.hpp @@ -0,0 +1,66 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include "../pipeline.hpp" + +// Forward declarations +class Dx12; +class ShaderPassDescription; +enum class Msaa; +template class PipelineLayout; +template class GraphicsShaderModules; +template class PipelineVertexInputState; +template class ShaderModules; +template class RenderPass; +using namespace Microsoft::WRL; // for ComPtr + + +/// Simple wrapper around Pipeline. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// Specialization of Pipeline +/// @ingroup Material +template<> +class Pipeline final +{ + Pipeline& operator=( const Pipeline& ) = delete; +public: + Pipeline() noexcept; + ~Pipeline(); + Pipeline( Pipeline&& ) noexcept = default; + Pipeline& operator=( Pipeline&& ) noexcept = default; + Pipeline( ComPtr ) noexcept; + + Pipeline Copy() const { return Pipeline{*this}; } + + operator bool() const { return mPipeline; } + + ID3D12PipelineState* GetPipeline() const { return mPipeline.Get(); } + +private: + Pipeline( const Pipeline& src ) noexcept { + mPipeline = src.mPipeline; + } + ComPtr mPipeline; +}; + + +template<> +Pipeline CreatePipeline(Dx12&, + const ShaderPassDescription&, + const PipelineLayout&, + const PipelineVertexInputState& inputLayout, + const PipelineRasterizationState&, + const SpecializationConstants&, + const ShaderModules&, + const RenderPass&, + uint32_t subpass, + Msaa msaa); diff --git a/framework/code/material/dx12/pipelineLayout.cpp b/framework/code/material/dx12/pipelineLayout.cpp new file mode 100644 index 0000000..14a7bb7 --- /dev/null +++ b/framework/code/material/dx12/pipelineLayout.cpp @@ -0,0 +1,120 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "pipelineLayout.hpp" +#include "descriptorSetLayout.hpp" +#include +#include "dx12/dx12.hpp" +#include "texture/dx12/sampler.hpp" + +PipelineLayout::~PipelineLayout() +{ + assert(m_rootSignature == nullptr); // call Destroy prior to object being deleted +} + +void PipelineLayout::Destroy(Dx12&) +{ + m_rootSignature.Reset(); +} + +bool PipelineLayout::Init(Dx12& dx12, const std::span> descriptorTableLayouts, const std::span rootSamplers) +{ + assert(!descriptorTableLayouts.empty()); + + // Require that the first descriptor table (set) layout is for the root signature. + + // Get the root signature layout + const auto& rootSignatureLayout = std::get::RootSignatureParameters>(descriptorTableLayouts[0].GetLayout()); + + using tRangeSpan = std::span ; + std::vector pDescriptorTableRanges; + pDescriptorTableRanges.reserve(descriptorTableLayouts.size()-1); + + // Get the descriptor tables + for (auto i = 1; i < descriptorTableLayouts.size(); ++i) + { + const auto& descriptorTableParameters = std::get::DescriptorTableParameters>(descriptorTableLayouts[i].GetLayout()); + pDescriptorTableRanges.push_back( { std::begin(descriptorTableParameters.ranges), std::end(descriptorTableParameters.ranges) }); + } + + // We may need to copy the root descriptor table so we can modify it (patch in descriptor table pointers) + std::vector rootParametersWritable; + std::span pRootParameters { std::begin(rootSignatureLayout.root), std::end(rootSignatureLayout.root) }; + for (auto i=0; i < pRootParameters.size(); ++i) + { + if (pRootParameters[i].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE) + { + std::copy(pRootParameters.begin(), pRootParameters.end(), std::back_inserter(rootParametersWritable)); + pRootParameters = { rootParametersWritable.begin(), rootParametersWritable.end() }; + + size_t tableIdx = 0; + for (; i < rootParametersWritable.size(); ++i) + { + D3D12_ROOT_PARAMETER& rootParam = rootParametersWritable[i]; + if (rootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE) + { + rootParam.DescriptorTable.NumDescriptorRanges = pDescriptorTableRanges[tableIdx].size(); + rootParam.DescriptorTable.pDescriptorRanges = pDescriptorTableRanges[tableIdx].data(); + } + } + + break; + } + } + + D3D12_STATIC_SAMPLER_DESC staticSamplers[]{ { + .Filter = D3D12_FILTER_ANISOTROPIC, + .AddressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + .AddressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + .AddressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP, + .ComparisonFunc = D3D12_COMPARISON_FUNC_ALWAYS, + .BorderColor = D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, + .MaxLOD = FLT_MAX + } }; + + std::vector rootSamplersDx12; + UINT i = 0; + std::transform(rootSamplers.begin(), rootSamplers.end(), std::back_inserter(rootSamplersDx12), [&i](const auto& a) -> D3D12_STATIC_SAMPLER_DESC { + auto samplerDesc = StructToDx12( a ); + + return D3D12_STATIC_SAMPLER_DESC{ + .Filter = samplerDesc.Filter, + .AddressU = samplerDesc.AddressU, + .AddressV = samplerDesc.AddressV, + .AddressW = samplerDesc.AddressW, + .MipLODBias = samplerDesc.MipLODBias, + .MaxAnisotropy = samplerDesc.MaxAnisotropy, + .ComparisonFunc = samplerDesc.ComparisonFunc, + .MinLOD = samplerDesc.MinLOD, + .MaxLOD = samplerDesc.MaxLOD, + .ShaderRegister = i++, + .RegisterSpace = 0, + .ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL + }; + }); + + D3D12_ROOT_SIGNATURE_DESC rootSignatureDesc{ + .NumParameters = (UINT)pRootParameters.size(), + .pParameters = pRootParameters.data(), + .NumStaticSamplers = _countof(staticSamplers), + .pStaticSamplers = staticSamplers, + .Flags = D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT }; + + ComPtr signatureData; + ComPtr error; + if (!Dx12::CheckError("D3D12SerializeRootSignature", D3D12SerializeRootSignature(&rootSignatureDesc, D3D_ROOT_SIGNATURE_VERSION_1, &signatureData, &error))) + { + return false; + } + + if (!Dx12::CheckError("CreateRootSignature", dx12.GetDevice()->CreateRootSignature(0, signatureData->GetBufferPointer(), signatureData->GetBufferSize(), IID_PPV_ARGS(&m_rootSignature)))) + return false; + + return true; +} + diff --git a/framework/code/material/dx12/pipelineLayout.hpp b/framework/code/material/dx12/pipelineLayout.hpp new file mode 100644 index 0000000..9086f8a --- /dev/null +++ b/framework/code/material/dx12/pipelineLayout.hpp @@ -0,0 +1,46 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include "../pipelineLayout.hpp" + +// Forward declarations +using namespace Microsoft::WRL; // for ComPtr +class Dx12; +template class DescriptorSetLayout; +struct CreateSamplerObjectInfo; + + +/// Representation of the RootSignature (roughly the DirectX12 equivalent of a Vulkan pipeline layout). +/// template specialization of PipelineLayout +/// Builds/owns the root layout. +/// @ingroup Material +template<> +class PipelineLayout +{ + PipelineLayout& operator=(const PipelineLayout&) = delete; + PipelineLayout(const PipelineLayout&) = delete; +public: + PipelineLayout() noexcept {}; + PipelineLayout(PipelineLayout&&) noexcept = default; + ~PipelineLayout(); + + bool Init(Dx12&, const std::span>, const std::span); + void Destroy(Dx12&); + + operator bool() const { return m_rootSignature.Get() != nullptr; } + + /// Get the root signature + ID3D12RootSignature* GetRootSignature() const { return m_rootSignature.Get(); } + +private: + ComPtr m_rootSignature; +}; diff --git a/framework/code/material/dx12/pipelineVertexInputState.cpp b/framework/code/material/dx12/pipelineVertexInputState.cpp new file mode 100644 index 0000000..2c14863 --- /dev/null +++ b/framework/code/material/dx12/pipelineVertexInputState.cpp @@ -0,0 +1,94 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include +#include +#include "pipelineVertexInputState.hpp" +#include "material/shaderDescription.hpp" +#include "vertexDescription.hpp" + +DXGI_FORMAT EnumToDx12(VertexFormat::Element::ElementType elementType) +{ + switch (elementType.type) + { + case VertexFormat::Element::ElementType::t::Int32: + return DXGI_FORMAT_R32_SINT; + break; + case VertexFormat::Element::ElementType::t::Float: + return DXGI_FORMAT_R32_FLOAT; + break; + case VertexFormat::Element::ElementType::t::Boolean: + return DXGI_FORMAT_R32_UINT; + break; + case VertexFormat::Element::ElementType::t::Vec2: + return DXGI_FORMAT_R32G32_FLOAT; + break; + case VertexFormat::Element::ElementType::t::Vec3: + return DXGI_FORMAT_R32G32B32_FLOAT; + break; + case VertexFormat::Element::ElementType::t::Vec4: + return DXGI_FORMAT_R32G32B32A32_FLOAT; + break; + case VertexFormat::Element::ElementType::t::Int16: + return DXGI_FORMAT_R16_SINT; + break; + case VertexFormat::Element::ElementType::t::Float16: + return DXGI_FORMAT_R16_FLOAT; + break; + case VertexFormat::Element::ElementType::t::F16Vec2: + return DXGI_FORMAT_R16G16_FLOAT; + break; + case VertexFormat::Element::ElementType::t::F16Vec3: + assert(0);//unsupported + return DXGI_FORMAT_UNKNOWN; + break; + case VertexFormat::Element::ElementType::t::F16Vec4: + return DXGI_FORMAT_R16G16B16A16_FLOAT; + break; + case VertexFormat::Element::ElementType::t::Null: + return DXGI_FORMAT_UNKNOWN; + break; + } + assert(0);//unsupported + return DXGI_FORMAT_UNKNOWN; +} + + +PipelineVertexInputState::PipelineVertexInputState(const ShaderDescription& shaderDescription, const std::vector& buffersToBind) noexcept +{ + mInputElementDescs.reserve(buffersToBind.size() * 4/*rough estimate!*/); + + for (uint32_t binding = 0; binding < buffersToBind.size(); ++binding) + { + const auto& vertexFormat = shaderDescription.m_vertexFormats[buffersToBind[binding]]; + VertexDescription vertexDesc { vertexFormat, binding }; + std::copy( std::begin(vertexDesc.GetVertexElementDescs()), std::end(vertexDesc.GetVertexElementDescs()), std::back_inserter(mInputElementDescs)); + } + + /* + mInputElementDescs.reserve(buffersToBind.size()); + uint32_t location = 0; + for (uint32_t b = 0; b < buffersToBind.size(); ++b) + { + const auto& vertexFormat = shaderDescription.m_vertexFormats[buffersToBind[b]]; + for (uint32_t e = 0; e < vertexFormat.elements.size(); ++e) + { + const auto& elementFormat = vertexFormat.elements[e]; + + auto& elementDesc = mInputElementDescs.emplace_back(); + elementDesc.SemanticName = vertexFormat.elementIds[e].c_str(); + elementDesc.SemanticIndex = 0; + elementDesc.Format = EnumToDx12(elementFormat.type); + elementDesc.InputSlot = b; + elementDesc.AlignedByteOffset = elementFormat.offset; + elementDesc.InputSlotClass = vertexFormat.inputRate == VertexFormat::eInputRate::Vertex ? D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA : D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA; + elementDesc.InstanceDataStepRate = vertexFormat.inputRate == VertexFormat::eInputRate::Vertex ? 0 : 1; + } + } + */ +} diff --git a/framework/code/material/dx12/pipelineVertexInputState.hpp b/framework/code/material/dx12/pipelineVertexInputState.hpp new file mode 100644 index 0000000..59dd4ab --- /dev/null +++ b/framework/code/material/dx12/pipelineVertexInputState.hpp @@ -0,0 +1,39 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include "../pipelineVertexInputState.hpp" + + +// Forward declarations +class ShaderDescription; +class Dx12; + + +/// Template specialization for PipelineVertexInputState on Dx12. +/// Empty class since DX12 does not need to have anything equivalient defined. +/// @ingroup Material +template<> +class PipelineVertexInputState +{ + PipelineVertexInputState(const PipelineVertexInputState&) = delete; + PipelineVertexInputState& operator=(const PipelineVertexInputState&) = delete; +public: + PipelineVertexInputState(const ShaderDescription& shaderDescription, const std::vector& buffersToBind /*indices of buffers (in shaderDescription.m_vertexFormats) to bind in this input state*/ ) noexcept; + PipelineVertexInputState(PipelineVertexInputState&&) noexcept = default; + + const auto& GetInputElementDescs() const { return mInputElementDescs; } + D3D12_INPUT_LAYOUT_DESC GetInputLayoutDesc() const { return D3D12_INPUT_LAYOUT_DESC { mInputElementDescs.data(), (uint32_t) mInputElementDescs.size() }; } + +protected: + + std::vector mInputElementDescs; +}; + diff --git a/framework/code/material/dx12/shader.hpp b/framework/code/material/dx12/shader.hpp new file mode 100644 index 0000000..9eb8875 --- /dev/null +++ b/framework/code/material/dx12/shader.hpp @@ -0,0 +1,17 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "shaderModule.hpp" +#include "pipelineLayout.hpp" +#include "pipelineVertexInputState.hpp" +#include "descriptorSetLayout.hpp" +#include "specializationConstantsLayout.hpp" +#include "../shader.hpp" + +using ShaderDx12 = Shader; diff --git a/framework/code/material/dx12/shaderModule.cpp b/framework/code/material/dx12/shaderModule.cpp new file mode 100644 index 0000000..5381a78 --- /dev/null +++ b/framework/code/material/dx12/shaderModule.cpp @@ -0,0 +1,83 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "shaderModule.hpp" +#include +#include "material/shaderDescription.hpp" +//#include "material/vertexDescription.hpp" +#include "system/assetManager.hpp" + +class Dx12; + +ShaderModule::ShaderModule() noexcept : ShaderModuleBase() + , m_Shader{} +{ +} + +ShaderModule::~ShaderModule() +{ + assert(m_Shader.empty()); // expects that Destroy() called before destruction +} + +void ShaderModule::Destroy(Dx12& dx12) +{ + m_Shader = {}; + ShaderModuleBase::Destroy(); +} + +bool ShaderModule::Load(Dx12& dx12, AssetManager& assetManager, const std::string& filename) +{ + bool success = true; + Destroy(dx12); + + m_filename = filename; + + if (!m_filename.empty()) + { + if ( assetManager.LoadFileIntoMemory(m_filename.c_str(), m_Shader) ) + { + } + else + { + success = false; + } + } + return success; +} + +bool ShaderModule::Load(Dx12& dx12, AssetManager& assetManager, const ShaderPassDescription& shaderDescription, const ShaderType shaderType) +{ + const std::string* shaderFileName = nullptr; + switch (shaderType) + { + case ShaderType::Fragment: + shaderFileName = &shaderDescription.m_fragmentName; + break; + case ShaderType::Vertex: + shaderFileName = &shaderDescription.m_vertexName; + break; + case ShaderType::Compute: + shaderFileName = &shaderDescription.m_computeName; + break; + case ShaderType::RayGeneration: + shaderFileName = &shaderDescription.m_rayGenerationName; + break; + case ShaderType::RayClosestHit: + shaderFileName = &shaderDescription.m_rayClosestHitName; + break; + case ShaderType::RayAnyHit: + shaderFileName = &shaderDescription.m_rayAnyHitName; + break; + case ShaderType::RayMiss: + shaderFileName = &shaderDescription.m_rayMissName; + break; + } + + assert(shaderFileName!=nullptr); + return Load(dx12, assetManager, *shaderFileName); ///TODO: better return code / error handling +} diff --git a/framework/code/material/dx12/shaderModule.hpp b/framework/code/material/dx12/shaderModule.hpp new file mode 100644 index 0000000..d68477a --- /dev/null +++ b/framework/code/material/dx12/shaderModule.hpp @@ -0,0 +1,51 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include +#include +#include "material/shaderModule.hpp" + +// Forward declarations +class AssetManager; +class DescriptorSetLayoutBase; +class ShaderPassDescription; +class VertexDescription; +class VertexFormat; +class Dx12; + +/// Wrapper around a Dx12 VkShaderModule. +/// @ingroup Material +template<> +class ShaderModule : public ShaderModuleBase +{ + ShaderModule(const ShaderModule&) = delete; + ShaderModule& operator=(const ShaderModule&) = delete; +public: + typedef std::vector tData; + ShaderModule() noexcept; + ~ShaderModule(); + + /// Free up the shader memory. + void Destroy(Dx12&); + + /// Load the shader binary with the given shader name + /// @returns true on success + bool Load(Dx12& vulkan, AssetManager& assetManager, const std::string& filename); + + /// Load the shader binary for the given shader type (using ShaderPassDescription to get the appropriate shader name). + /// @returns true on success + bool Load(Dx12&, AssetManager&, const ShaderPassDescription&, const ShaderType); + + const tData& GetShaderData() const { return m_Shader; } +private: + tData m_Shader; +}; diff --git a/framework/code/material/dx12/specializationConstantsLayout.hpp b/framework/code/material/dx12/specializationConstantsLayout.hpp new file mode 100644 index 0000000..3324785 --- /dev/null +++ b/framework/code/material/dx12/specializationConstantsLayout.hpp @@ -0,0 +1,31 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include "material/specializationConstantsLayout.hpp" + +// Forward declarations +class Dx12; + +/// Template specialization for specialization constants, not supported by dx12 (so this is just stub) +/// @ingroup Material +template<> +class SpecializationConstantsLayout +{ + SpecializationConstantsLayout( const SpecializationConstantsLayout& ) = delete; + SpecializationConstantsLayout& operator=( const SpecializationConstantsLayout& ) = delete; +public: + explicit SpecializationConstantsLayout( const std::span ) noexcept {}; + SpecializationConstantsLayout(SpecializationConstantsLayout && other) noexcept = default; + SpecializationConstantsLayout& operator=( SpecializationConstantsLayout&& ) noexcept = delete; + +private: +}; + diff --git a/framework/code/material/dx12/vertexDescription.cpp b/framework/code/material/dx12/vertexDescription.cpp new file mode 100644 index 0000000..8947818 --- /dev/null +++ b/framework/code/material/dx12/vertexDescription.cpp @@ -0,0 +1,147 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "vertexDescription.hpp" +#include +#include +#include +#include "system/os_common.h" + + +// Forward declaration +static std::pair ParseSemanticName(const std::string& name); + + +VertexDescription::VertexDescription(const VertexFormat& format, uint32_t binding) +{ + m_Stride = format.span; + m_Binding = binding; + + m_VertexElementDescs.reserve( format.elements.size() ); + + // THIS NEEDS TO BE FILLED IN FOR INSTANCE DATA TO WORK (FOR NOW JUST ASSERT) + uint32_t verticesPerInstance = 0; + assert(format.inputRate != VertexFormat::eInputRate::Instance); + // END + + uint32_t locationIdx = 0; + for( auto i = 0; i semantic = ParseSemanticName(elementId); + if (semantic.first == nullptr) + { + LOGE("Invalid semantic name (\"%s\") in vertex format.", elementId.c_str()); + } + + D3D12_INPUT_ELEMENT_DESC elementDesc{ + .SemanticName = semantic.first, + .SemanticIndex = semantic.second, + .Format = DxgiFormatFromElementType(element.type), + .InputSlot = binding, + .AlignedByteOffset = element.offset, + .InputSlotClass = format.inputRate == VertexFormat::eInputRate::Vertex ? D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA : D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA, + .InstanceDataStepRate = format.inputRate == VertexFormat::eInputRate::Vertex ? 0 : verticesPerInstance, + }; + m_VertexElementDescs.push_back(elementDesc); + } +} + +DXGI_FORMAT VertexDescription::DxgiFormatFromElementType( const VertexFormat::Element::ElementType& elementType ) +{ + switch(elementType.type) { + case VertexFormat::Element::ElementType::t::Int32: + return DXGI_FORMAT_R32_SINT; + case VertexFormat::Element::ElementType::t::UInt32: + return DXGI_FORMAT_R32_UINT; + case VertexFormat::Element::ElementType::t::Float: + return DXGI_FORMAT_R32_FLOAT; + case VertexFormat::Element::ElementType::t::Boolean: + return DXGI_FORMAT_R32_UINT; + case VertexFormat::Element::ElementType::t::Vec2: + return DXGI_FORMAT_R32G32_FLOAT; + case VertexFormat::Element::ElementType::t::Vec3: + return DXGI_FORMAT_R32G32B32_FLOAT; + case VertexFormat::Element::ElementType::t::Vec4: + return DXGI_FORMAT_R32G32B32A32_FLOAT; + case VertexFormat::Element::ElementType::t::IVec2: + return DXGI_FORMAT_R32G32_SINT; + case VertexFormat::Element::ElementType::t::IVec3: + return DXGI_FORMAT_R32G32B32_SINT; + case VertexFormat::Element::ElementType::t::IVec4: + return DXGI_FORMAT_R32G32B32A32_SINT; + case VertexFormat::Element::ElementType::t::UVec2: + return DXGI_FORMAT_R32G32_UINT; + case VertexFormat::Element::ElementType::t::UVec3: + return DXGI_FORMAT_R32G32B32_UINT; + case VertexFormat::Element::ElementType::t::UVec4: + return DXGI_FORMAT_R32G32B32A32_UINT; + case VertexFormat::Element::ElementType::t::Int16: + return DXGI_FORMAT_R16_SINT; + case VertexFormat::Element::ElementType::t::UInt16: + return DXGI_FORMAT_R16_UINT; + case VertexFormat::Element::ElementType::t::Float16: + return DXGI_FORMAT_R16_FLOAT; + case VertexFormat::Element::ElementType::t::F16Vec2: + return DXGI_FORMAT_R16G16_FLOAT; + //case VertexFormat::Element::ElementType::t::F16Vec3: + // return DXGI_FORMAT_R16G16B16_FLOAT;// undefined in DXGI + case VertexFormat::Element::ElementType::t::F16Vec4: + return DXGI_FORMAT_R16G16B16A16_FLOAT; + case VertexFormat::Element::ElementType::t::I16Vec2: + return DXGI_FORMAT_R16G16_SINT; + //case VertexFormat::Element::ElementType::t::I16Vec3: + // return DXGI_FORMAT_R16G16B16_SINT;// undefined in DXGI + case VertexFormat::Element::ElementType::t::I16Vec4: + return DXGI_FORMAT_R16G16B16A16_SINT; + case VertexFormat::Element::ElementType::t::U16Vec2: + return DXGI_FORMAT_R16G16_UINT; + //case VertexFormat::Element::ElementType::t::U16Vec3: + // return DXGI_FORMAT_R16G16B16_UINT;// undefined in DXGI + case VertexFormat::Element::ElementType::t::U16Vec4: + return DXGI_FORMAT_R16G16B16A16_UINT; + + default: + assert(0); + return DXGI_FORMAT_UNKNOWN; + break; + } +} + +// Searchable set of supported vertex shader semantic names. +// Because we created the name stringviews from 'C' char strings we can be confident they are \0 terminated although this is not guaranteed by the string_view spec. +static std::set sSemanticNames{ + {"BINORMAL"}, + {"BLENDINDICES"}, + {"BLENDWEIGHT"}, + {"COLOR"}, + {"NORMAL"}, + {"POSITION"}, + {"POSITIONT"}, + {"PSIZE"}, + {"TANGENT"}, + {"TEXCOORD"}}; + +static std::pair ParseSemanticName(const std::string& name) +{ + uint32_t semanticIndex = 0; + + auto numStartIt = std::find_if(name.begin(), name.end(), [](char c)->bool { return isdigit(c) != 0; }); + if (numStartIt != name.end()) + { + semanticIndex = strtol(&(*numStartIt), nullptr, 10); + } + auto semanticIt = std::find(sSemanticNames.begin(), sSemanticNames.end(), std::string_view(name)); + if (semanticIt == sSemanticNames.end()) + return {}; + else + return { semanticIt->data(), semanticIndex}; +} + diff --git a/framework/code/material/dx12/vertexDescription.hpp b/framework/code/material/dx12/vertexDescription.hpp new file mode 100644 index 0000000..75eb9a8 --- /dev/null +++ b/framework/code/material/dx12/vertexDescription.hpp @@ -0,0 +1,31 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "material/vertexFormat.hpp" +#include + +/// Describes the Dx12 elements (layout) for a single vertex stream (not the buffer, just one of the the contained vertices). +/// @ingroup Material +class VertexDescription +{ + VertexDescription(const VertexDescription&) = delete; + VertexDescription& operator=(const VertexDescription&) = delete; +public: + VertexDescription(const VertexFormat&, uint32_t binding); + + size_t GetStride() const { return m_Stride; } + uint32_t GetBinding() const { return m_Binding; } + const std::vector& GetVertexElementDescs() const { return m_VertexElementDescs; } + + static DXGI_FORMAT DxgiFormatFromElementType(const VertexFormat::Element::ElementType& elementType); +protected: + size_t m_Stride; + uint32_t m_Binding; + std::vector m_VertexElementDescs; +}; diff --git a/framework/code/material/material.cpp b/framework/code/material/material.cpp index 2694527..00afff8 100644 --- a/framework/code/material/material.cpp +++ b/framework/code/material/material.cpp @@ -7,462 +7,25 @@ //============================================================================================================ #include "material.hpp" -#include "shader.hpp" -#include "vulkan/vulkan.hpp" -#include -#include "system/os_common.h" -#include "vulkan/TextureFuncts.h" -#include "vulkan/material.hpp" -#include "texture/vulkan/texture.hpp" - - -MaterialPass::MaterialPass(Vulkan& vulkan, const ShaderPass& shaderPass, VkDescriptorPool&& descriptorPool, std::vector&& descriptorSets, std::vector&& dynamicDescriptorSetLayouts, tTextureBindings&& textureBindings, tImageBindings&& imageBindings, tBufferBindings&& bufferBindings, tAccelerationStructureBindings&& accelerationStructureBindings, SpecializationConstants&& specializationConstants ) - : mShaderPass(shaderPass) - , mVulkan( vulkan ) - , mNumDescriptorSetsPerBuffer(uint32_t(shaderPass.GetDescriptorSetLayouts().size())) - , mNumBuffers(mNumDescriptorSetsPerBuffer>0 ? uint32_t(descriptorSets.size() / mNumDescriptorSetsPerBuffer) : 0) - , mDescriptorPool(descriptorPool) - , mDescriptorSets(std::move(descriptorSets)) - , mDynamicDescriptorSetLayouts(std::move(dynamicDescriptorSetLayouts)) - , mSpecializationConstants( std::move( specializationConstants ) ) - , mTextureBindings(std::move(textureBindings)) - , mImageBindings(std::move(imageBindings)) - , mBufferBindings(std::move(bufferBindings)) - , mAccelerationStructureBindings( std::move( accelerationStructureBindings ) ) -{ - if (!mDynamicDescriptorSetLayouts.empty()) - mDynamicPipelineLayout.Init(vulkan, mDynamicDescriptorSetLayouts); - assert( mDescriptorSets.size() == mNumBuffers*mNumDescriptorSetsPerBuffer ); - - descriptorPool = VK_NULL_HANDLE; // we took owenership -} - -MaterialPass::MaterialPass(MaterialPass&& other) noexcept - : mShaderPass(other.mShaderPass) - , mVulkan( other.mVulkan ) - , mNumDescriptorSetsPerBuffer( other.mNumDescriptorSetsPerBuffer ) - , mNumBuffers( other.mNumBuffers ) - , mDescriptorPool(other.mDescriptorPool) - , mDescriptorSets(std::move(other.mDescriptorSets)) - , mDynamicDescriptorSetLayouts(std::move(other.mDynamicDescriptorSetLayouts)) - , mDynamicPipelineLayout(std::move(other.mDynamicPipelineLayout)) - , mAccelerationStructureBindings( std::move( other.mAccelerationStructureBindings ) ) - , mTextureBindings(std::move(other.mTextureBindings)) - , mImageBindings(std::move(other.mImageBindings)) - , mBufferBindings(std::move(other.mBufferBindings)) - , mSpecializationConstants( std::move( other.mSpecializationConstants ) ) -{ - other.mDescriptorPool = VK_NULL_HANDLE; -} - -MaterialPass::~MaterialPass() -{ - if (mDescriptorPool != VK_NULL_HANDLE) - { - //if (mDescriptorSet != VK_NULL_HANDLE) - // vkFreeDescriptorSets(mVulkan.m_VulkanDevice, mDescriptorPool, 1, &mDescriptorSet); only if VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT - vkDestroyDescriptorPool(mVulkan.m_VulkanDevice, mDescriptorPool, nullptr); - } - - mDynamicPipelineLayout.Destroy(mVulkan); - - for(auto& layout: mDynamicDescriptorSetLayouts) - vkDestroyDescriptorSetLayout(mVulkan.m_VulkanDevice, layout, nullptr); -} - -ImageInfo::ImageInfo(const TextureT& t) - : image(t.GetVkImage()) - , imageView(t.GetVkImageView()) - , imageViewNumMips(t.MipLevels) - , imageViewFirstMip(t.FirstMip) - , imageLayout( t.GetVkImageLayout() ) -{ -} - -ImageInfo::ImageInfo(const Texture& t) : ImageInfo( apiCast(t) ) -{ -} - -ImageInfo::ImageInfo(const ImageInfo& src) - : image(src.image) - , imageView(src.imageView) - , imageLayout( src.imageLayout ) - , imageViewNumMips( src.imageViewNumMips ) - , imageViewFirstMip( src.imageViewFirstMip ) -{ -} - -ImageInfo::ImageInfo( ImageInfo&& src ) noexcept - : image( src.image ) - , imageView( src.imageView ) - , imageLayout( src.imageLayout ) - , imageViewNumMips( src.imageViewNumMips ) - , imageViewFirstMip( src.imageViewFirstMip ) -{ - src.image = VK_NULL_HANDLE; - src.imageView = VK_NULL_HANDLE; - src.imageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - src.imageViewNumMips = 0; - src.imageViewFirstMip = 0; -} - -ImageInfo& ImageInfo::operator=(ImageInfo&& src) noexcept -{ - if (this != &src) - { - image = src.image; - imageView = src.imageView; - imageLayout = src.imageLayout; - imageViewNumMips = src.imageViewNumMips; - imageViewFirstMip = src.imageViewFirstMip; - src.image = VK_NULL_HANDLE; - src.imageView = VK_NULL_HANDLE; - src.imageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - src.imageViewNumMips = 0; - src.imageViewFirstMip = 0; - } - return *this; -} - -bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) -{ - // TODO: All these need to become vectors that can dynamically grow - static const int cMAX_WRITES = 32; - static const int cMAX_IMAGE_INFOS = 1048; - static const int cMAX_BUFFER_INFOS = 1048; - static const int cMAX_ACCELERATIONSTRUCTURE_INFOS = 32; - std::array writeInfo{/*zero it*/ }; - std::array imageInfo{/*zero it*/ }; - std::array bufferInfoFixed/*not initialized*/; - std::vector bufferInfoDynamic; - - // std::vector - - uint32_t writeInfoIdx = 0; - uint32_t imageInfoCount = 0; - uint32_t bufferInfoCount = 0; - const size_t numDescriptorSetsPerFrame = mShaderPass.GetDescriptorSetLayouts().size(); - const auto descriptorSetBaseIdx = bufferIdx * numDescriptorSetsPerFrame; - - // Go through the textures first - for (const auto& textureBinding : mTextureBindings) - { - uint32_t setIndex = textureBinding.second.setIndex; - uint32_t bindingIndex = textureBinding.second.setBinding.index; - VkDescriptorType bindingType = textureBinding.second.setBinding.type; - - uint32_t numTexToBind = textureBinding.second.setBinding.isArray ? (uint32_t)textureBinding.first.size() : 1; - uint32_t texIndex = textureBinding.second.setBinding.isArray ? 0 : (bufferIdx % textureBinding.first.size()); - - writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; - writeInfo[writeInfoIdx].dstBinding = bindingIndex; - writeInfo[writeInfoIdx].dstArrayElement = 0; - writeInfo[writeInfoIdx].descriptorCount = numTexToBind; - writeInfo[writeInfoIdx].pBufferInfo = nullptr; - writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; - for (uint32_t t = 0; t < numTexToBind; ++t, ++imageInfoCount, ++texIndex) - { - if (imageInfoCount >= cMAX_IMAGE_INFOS) - { - LOGE("Max number (%d) of VkDescriptorImageInfo elements reached!", cMAX_IMAGE_INFOS); - assert(0); - return false; - } - - imageInfo[imageInfoCount] = apiCast(textureBinding.first[texIndex])->GetVkDescriptorImageInfo(); - } - - ++writeInfoIdx; - if (writeInfoIdx >= cMAX_WRITES) - { - LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); - assert(0); - return false; - } - } - - // Go through the images - for (const auto& imageBinding : mImageBindings) - { - uint32_t setIndex = imageBinding.second.setIndex; - uint32_t bindingIndex = imageBinding.second.setBinding.index; - VkDescriptorType bindingType = imageBinding.second.setBinding.type; - assert(bindingType != VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER && bindingType != VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE); // combined image sampler or sampled image should go through mTextureBindings - //assert(imageBinding.first.imageLayout == VK_IMAGE_LAYOUT_GENERAL); - - uint32_t numImgToBind = imageBinding.second.setBinding.isArray ? (uint32_t)imageBinding.first.size() : 1; - uint32_t imgIndex = imageBinding.second.setBinding.isArray ? 0 : (bufferIdx % imageBinding.first.size()); - - writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; - writeInfo[writeInfoIdx].dstBinding = bindingIndex; - writeInfo[writeInfoIdx].dstArrayElement = 0; - writeInfo[writeInfoIdx].descriptorCount = numImgToBind; - writeInfo[writeInfoIdx].pBufferInfo = nullptr; - writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; - for (uint32_t t = 0; t < numImgToBind; ++t, ++imageInfoCount, ++imgIndex) - { - if (imageInfoCount >= cMAX_IMAGE_INFOS) - { - LOGE("Max number (%d) of VkDescriptorImageInfo elements reached!", cMAX_IMAGE_INFOS); - assert(0); - return false; - } - - imageInfo[imageInfoCount].sampler = VK_NULL_HANDLE; - imageInfo[imageInfoCount].imageView = imageBinding.first[imgIndex].imageView; - imageInfo[imageInfoCount].imageLayout = imageBinding.first[imgIndex].imageLayout; - } - ++writeInfoIdx; - - if (writeInfoIdx >= cMAX_WRITES) - { - LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); - assert(0); - return false; - } - } - - // Now do the buffers - - for (const auto& bufferBinding : mBufferBindings) - { - bufferInfoCount += bufferBinding.second.setBinding.isArray ? (uint32_t) bufferBinding.first.size() : 1; - } - auto* pBufferInfo = bufferInfoFixed.data(); - if (bufferInfoCount > cMAX_BUFFER_INFOS) - { - bufferInfoDynamic.resize( bufferInfoCount ); - pBufferInfo = bufferInfoDynamic.data(); - } - - for (const auto& bufferBinding : mBufferBindings) - { - uint32_t setIndex = bufferBinding.second.setIndex; - uint32_t bindingIndex = bufferBinding.second.setBinding.index; - VkDescriptorType bindingType = bufferBinding.second.setBinding.type; - - uint32_t numBuffersToBind = bufferBinding.second.setBinding.isArray ? (uint32_t)bufferBinding.first.size() : 1; - uint32_t bufferIndex = bufferBinding.second.setBinding.isArray ? 0 : (bufferIdx % bufferBinding.first.size()); - - writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; - writeInfo[writeInfoIdx].dstBinding = bindingIndex; - writeInfo[writeInfoIdx].dstArrayElement = 0; - writeInfo[writeInfoIdx].descriptorCount = numBuffersToBind; - writeInfo[writeInfoIdx].pBufferInfo = pBufferInfo; - writeInfo[writeInfoIdx].pImageInfo = nullptr; - - for (uint32_t t = 0; t < numBuffersToBind; ++t, ++bufferIndex) - { - pBufferInfo->buffer = bufferBinding.first[bufferIndex].buffer; - pBufferInfo->offset = bufferBinding.first[bufferIndex].offset; - pBufferInfo->range = VK_WHOLE_SIZE; - ++pBufferInfo; - } - - ++writeInfoIdx; - if (writeInfoIdx >= cMAX_WRITES) - { - LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); - assert(0); - return false; - } - } - -#if VK_KHR_acceleration_structure - // And the acceleration structures - std::array accelerationStructureInfo{}; - uint32_t accelerationStructureCount = 0; - - for (const auto& accelerationBinding : mAccelerationStructureBindings) - { - uint32_t setIndex = accelerationBinding.second.setIndex; - uint32_t bindingIndex = accelerationBinding.second.setBinding.index; - VkDescriptorType bindingType = accelerationBinding.second.setBinding.type; - - uint32_t numAccelToBind = accelerationBinding.second.setBinding.isArray ? (uint32_t)accelerationBinding.first.size() : 1; - uint32_t accelIndex = accelerationBinding.second.setBinding.isArray ? 0 : (bufferIdx < accelerationBinding.first.size() ? bufferIdx : 0); - - if (writeInfoIdx >= cMAX_WRITES) - { - LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); - assert(0); - return false; - } - - if (accelerationStructureCount >= cMAX_ACCELERATIONSTRUCTURE_INFOS) - { - LOGE("Max number (%d) of VkWriteDescriptorSetAccelerationStructureKHR elements reached!", cMAX_ACCELERATIONSTRUCTURE_INFOS); - assert(0); - return false; - } - - const VkAccelerationStructureKHR * pAs = &accelerationBinding.first[accelIndex]; - accelerationStructureInfo[accelerationStructureCount].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR; - accelerationStructureInfo[accelerationStructureCount].accelerationStructureCount = 1; - accelerationStructureInfo[accelerationStructureCount].pAccelerationStructures = pAs; - - writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - writeInfo[writeInfoIdx].descriptorType = bindingType;//VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR - writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; - writeInfo[writeInfoIdx].dstBinding = bindingIndex; - writeInfo[writeInfoIdx].dstArrayElement = 0; - writeInfo[writeInfoIdx].descriptorCount = accelerationStructureInfo[accelerationStructureCount].accelerationStructureCount; - writeInfo[writeInfoIdx].pBufferInfo = nullptr; - writeInfo[writeInfoIdx].pImageInfo = nullptr; - writeInfo[writeInfoIdx].pNext = &accelerationStructureInfo[accelerationStructureCount]; - ++writeInfoIdx; - ++accelerationStructureCount; - - } -#endif // VK_KHR_acceleration_structure - - // LOGI("Updating Descriptor Set (bufferIdx %d) with %d objects", bufferIdx, writeInfoIdx); - vkUpdateDescriptorSets(mVulkan.m_VulkanDevice, writeInfoIdx, writeInfo.data(), 0, NULL); - // LOGI("Descriptor Set Updated!"); - - return true; -} - -bool MaterialPass::UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const TextureT& newTexture) const -{ - std::array writeInfo{ {VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET} }; - std::array imageInfo{/*zero it*/ }; - - uint32_t writeInfoIdx = 0; - uint32_t imageInfoCount = 0; - - for (int setIdx = 0; const auto & setLayout : mShaderPass.GetDescriptorSetLayouts()) - { - const auto& nameToBinding = setLayout.GetNameToBinding(); - const auto bindingIt = nameToBinding.find( bindingName ); - if (bindingIt != nameToBinding.end()) - { - const auto& descriptorSet = GetVkDescriptorSet( bufferIdx, setIdx ); - VkDescriptorType bindingType = bindingIt->second.type; - assert( bindingType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || bindingType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ); - - uint32_t bindingIndex = bindingIt->second.index; - - writeInfo[writeInfoIdx].descriptorType = bindingType; - writeInfo[writeInfoIdx].dstSet = descriptorSet; - writeInfo[writeInfoIdx].dstBinding = bindingIndex; - writeInfo[writeInfoIdx].dstArrayElement = 0; - writeInfo[writeInfoIdx].descriptorCount = 1; - writeInfo[writeInfoIdx].pBufferInfo = nullptr; - writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; - imageInfo[imageInfoCount] = newTexture.GetVkDescriptorImageInfo(); - - ++imageInfoCount; - ++writeInfoIdx; - - vkUpdateDescriptorSets( mVulkan.m_VulkanDevice, writeInfoIdx, writeInfo.data(), 0, NULL ); - return true; - } - ++setIdx; - } - assert( 0 && "Binding name not found" ); - return false; -} - +#include // -// Material class implementation +// MaterialBase base class implementation // -Material::Material(const ShaderT& shader, uint32_t numFramebuffers) - : m_shader(shader) - , m_numFramebuffers(numFramebuffers) +MaterialBase::MaterialBase(const ShaderBase& shader, uint32_t numFramebuffers) +: m_shader(shader) +, m_numFramebuffers(numFramebuffers) { - assert(m_numFramebuffers > 0); + assert(m_numFramebuffers > 0); } -Material::Material(Material&& other) noexcept - : m_shader(other.m_shader) - , m_materialPassNamesToIndex(std::move(other.m_materialPassNamesToIndex)) - , m_materialPasses(std::move(other.m_materialPasses)) - , m_numFramebuffers(other.m_numFramebuffers) +MaterialBase::MaterialBase(MaterialBase&& other) noexcept + : m_shader(other.m_shader) + , m_materialPassNamesToIndex(std::move(other.m_materialPassNamesToIndex)) + , m_numFramebuffers(other.m_numFramebuffers) { } -Material::~Material() +MaterialBase::~MaterialBase() {} - - -const MaterialPass* Material::GetMaterialPass(const std::string& passName) const -{ - auto it = m_materialPassNamesToIndex.find(passName); - if (it != m_materialPassNamesToIndex.end()) - { - return &m_materialPasses[it->second]; - } - return nullptr; -} - -bool Material::UpdateDescriptorSets(uint32_t bufferIdx) -{ - // Just go through and update the MaterialPass descriptor sets. - // Could be much smarter (and could handle failures better than just continuing and reporting something went wrong) - bool success = true; - for (auto& materialPass : m_materialPasses) - { - success &= materialPass.UpdateDescriptorSets(bufferIdx); - } - return success; -} - -bool Material::UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const TextureT& newTexture) const -{ - bool success = true; - for (auto& materialPass : m_materialPasses) - { - success &= materialPass.UpdateDescriptorSetBinding(bufferIdx, bindingName, newTexture); - } - return success; -} - -bool SpecializationConstants::Init( const SpecializationConstantsLayout& layout, const std::span constants ) -{ - const auto& layoutMapEntry = layout.GetVkSpecializationMapEntry(); - assert( layoutMapEntry.size() == constants.size() ); - if (layoutMapEntry.empty()) - { - mSpecializationData.reset(); - return true; - } - - std::span specializationConstantsRaw { new std::byte[layout.GetBufferSize()], layout.GetBufferSize() }; // unsafe - raw pointer in the span! - - for (auto constantIdx = 0; constantIdx < layoutMapEntry.size(); ++constantIdx) - { - const auto& constantLayout = layoutMapEntry[constantIdx]; - - // copy the loaded constant data into the constant buffer - std::span constantDataRaw = constants[constantIdx].getUnsafeData(); - assert( constantLayout.size == constantDataRaw.size() ); - std::copy( constantDataRaw.begin(), constantDataRaw.end(), specializationConstantsRaw.begin() + constantLayout.offset ); - } - - VkSpecializationInfo vkSpecializationInfo {}; - vkSpecializationInfo.mapEntryCount = (uint32_t) layout.GetVkSpecializationMapEntry().size(); - vkSpecializationInfo.pMapEntries = layout.GetVkSpecializationMapEntry().data(); - vkSpecializationInfo.dataSize = specializationConstantsRaw.size(); - vkSpecializationInfo.pData = specializationConstantsRaw.data(); // move ownership of the allocated buffer. - - mSpecializationData.emplace().specializationInfo = vkSpecializationInfo; - - return true; -} - -SpecializationConstants::VulkanSpecializationData::VulkanSpecializationData( SpecializationConstants::VulkanSpecializationData&& other ) noexcept : specializationInfo( other.specializationInfo )/*dumb move*/ -{ - other.specializationInfo.mapEntryCount = 0; - other.specializationInfo.pMapEntries = nullptr; - other.specializationInfo.dataSize = 0; - other.specializationInfo.pData = nullptr; -} diff --git a/framework/code/material/material.hpp b/framework/code/material/material.hpp index 30572ed..0190fe1 100644 --- a/framework/code/material/material.hpp +++ b/framework/code/material/material.hpp @@ -1,260 +1,41 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include -#include -#include #include -#include -#ifdef OS_WINDOWS -#define VK_ENABLE_BETA_EXTENSIONS -#endif -#include -#include "descriptorSetLayout.hpp" -#include "vulkan/pipelineLayout.hpp" -#include "vulkan/shader.hpp" -#include "vulkan/specializationConstantsLayout.hpp" -// Forward declarations -class Vulkan; -template class TextureT; -class Texture; -class VertexElementData; - -/// @defgroup Material -/// Material and Shader loader. -/// Handles creation of descriptor sets, buffer binding, shader binaries (everything in Vulkan that describes and is used to render a shader). -/// -/// Typically user (application) writes a Json description for each 'Shader' that describes the inputs, outputs, and internal state of the shader, and the shader code (glsl). -/// The user then uses ShaderManager::AddShader to register (and load) each Json file and the shader binaries. -/// -/// From there the user uses MaterialManager::CreateMaterial to create a Material instance of the Shader (a Material contains bindings to the various texture/buffer inputs that a Shader requires - there can be many Materials using the same Shader (each Material with different textures, vertex buffers and/or uniform buffers etc) -/// -/// The Material returned by CreateMaterial can be used to Create a Drawable or Computable object that wraps everything together with one convenient interface! -/// -/// For more complex models the user should use DrawableLoader::LoadDrawable to load the mesh model file (and return a vector of Drawables). This api greatly simplifies the material creation and binding, splitting model meshes across material boundaries, automatically detecting instances (optionally). -/// - -/// Reference to a VkImage. -/// Does not have ownership over referenced VkImage or VkImageView and lifetime of those object should be longer than the referencing @ImageInfo (no reference counting). -/// @ingroup Material -struct ImageInfo { - ImageInfo(ImageInfo&&) noexcept; - ImageInfo& operator=(ImageInfo&&) noexcept; - ImageInfo& operator=(const ImageInfo&) = delete; - ImageInfo(const ImageInfo&); - ImageInfo(const TextureT&); - ImageInfo(const Texture&); - VkImage image; - VkImageView imageView; - uint32_t imageViewNumMips; - uint32_t imageViewFirstMip; - VkImageLayout imageLayout = VK_IMAGE_LAYOUT_GENERAL; -}; - -/// Reference to VkBuffer (with an offset). -/// Does not have ownership of the buffer (and so lifetime of the buffer should be longer than the referencing @VkBufferAndOffset) -struct VkBufferAndOffset { - VkBuffer buffer; - uint32_t offset = 0; - constexpr bool operator==( const VkBufferAndOffset& other ) const = default; -}; - -struct tPerFrameVkBuffer -{ - typedef std::vector tBuffers; - tBuffers buffers; - - template< typename InputIt> requires ( std::is_same_v::value_type, VkBuffer > ) - tPerFrameVkBuffer( InputIt first, InputIt last ) - { - while (first != last) - buffers.push_back( { *first++, 0 } ); - } - template< typename InputIt > requires (std::is_same_v) - tPerFrameVkBuffer( InputIt first, InputIt last ) : buffers( first, last ) - { - } - - template() ))>> - tPerFrameVkBuffer( const InputContainer& container ) - { - for (auto item : container) - buffers.push_back( { item } ); - } - tPerFrameVkBuffer( const VkBufferAndOffset& bufferAndOffset ) noexcept - { - buffers.push_back( bufferAndOffset ); - } - tPerFrameVkBuffer( VkBuffer buffer ) noexcept - { - buffers.push_back( { buffer, 0 } ); - } - explicit tPerFrameVkBuffer( tPerFrameVkBuffer&& other ) noexcept : buffers( std::move( other.buffers ) ) {} - tPerFrameVkBuffer& operator=( tPerFrameVkBuffer&& other ) noexcept { - if (this != &other) { - buffers = std::move( other.buffers ); - } - return *this; - } - tPerFrameVkBuffer( const tPerFrameVkBuffer& other ) noexcept : buffers( other.buffers ) {} - tPerFrameVkBuffer& operator=( const tPerFrameVkBuffer& other ) noexcept { - if (this != &other) { - buffers = other.buffers; - } - return *this; - } - tPerFrameVkBuffer() = default; - - constexpr size_t size() const noexcept { return buffers.size(); } - constexpr tBuffers::iterator begin() noexcept { return buffers.begin(); } - constexpr tBuffers::const_iterator begin() const noexcept { return buffers.begin(); } - constexpr tBuffers::const_iterator cbegin() const noexcept { return buffers.begin(); } - constexpr tBuffers::iterator end() { return buffers.end(); } - constexpr tBuffers::const_iterator end() const { return buffers.end(); } - constexpr tBuffers::const_iterator cend() const { return buffers.cend(); } - constexpr tBuffers::value_type& operator[]( const tBuffers::size_type x ) noexcept { return buffers[x]; } - constexpr const tBuffers::value_type& operator[]( const tBuffers::size_type x ) const noexcept { return buffers[x]; } -}; - -/// Specialization constant data for a MaterialPass. -/// @ingroup Material -class SpecializationConstants -{ - SpecializationConstants( const SpecializationConstants& ) = delete; - SpecializationConstants operator=( const SpecializationConstants& ) = delete; -public: - SpecializationConstants( SpecializationConstants&& ) noexcept = default; - SpecializationConstants() noexcept = default; - bool Init(const SpecializationConstantsLayout& layout, const std::span constants); - - const VkSpecializationInfo* GetVkSpecializationInfo() const { return mSpecializationData.has_value() ? &mSpecializationData.value().specializationInfo : nullptr; } - -private: - struct VulkanSpecializationData - { - VulkanSpecializationData( const VulkanSpecializationData& ) = delete; - VulkanSpecializationData operator=( const VulkanSpecializationData& ) = delete; - - VulkanSpecializationData() noexcept : specializationInfo() {} - ~VulkanSpecializationData() { delete[] (std::byte*) specializationInfo.pData/*we own just the data*/; specializationInfo.pData = nullptr; } - VulkanSpecializationData( VulkanSpecializationData&& ) noexcept; - VkSpecializationInfo specializationInfo; - }; - // container for specialization data prepared for vulkan use! - std::optional mSpecializationData; -}; - -/// An instance of a ShaderPass material. -/// @ingroup Material -class MaterialPass -{ - MaterialPass(const MaterialPass&) = delete; - MaterialPass& operator=(const MaterialPass&) = delete; -public: - MaterialPass(MaterialPass&&) noexcept; -#if VK_KHR_acceleration_structure - typedef VkAccelerationStructureKHR AccelerationStructureHandle; -#else - typedef void* AccelerationStructureHandle; // unused but defined to be void* -#endif - - typedef std::vector tPerFrameTexInfo; - typedef std::vector tPerFrameImageInfo; - - struct MaterialDescriptorBinding { - uint32_t setIndex; ///< descriptor set index - DescriptorSetLayout::BindingTypeAndIndex setBinding; ///< binding within the descriptor set - }; - - typedef std::vector tPerFrameVkAccelerationStructure; - typedef std::vector > tTextureBindings; - typedef std::vector > tImageBindings; - typedef std::vector > tBufferBindings; - typedef std::vector > tAccelerationStructureBindings; - - MaterialPass(Vulkan& vulkan, const ShaderPass&, VkDescriptorPool&&, std::vector&&, std::vector&&, tTextureBindings&&, tImageBindings&&, tBufferBindings&&, tAccelerationStructureBindings&&, SpecializationConstants&&); - ~MaterialPass(); - - /// Get the descriptor set for the (numbered) frame buffer index, allows for a single descriptor set identical for all frames if required. - const auto& GetVkDescriptorSet(uint32_t bufferIndex, int32_t setIndex) const { return mDescriptorSets[(bufferIndex % mNumBuffers)* mNumDescriptorSetsPerBuffer + setIndex]; } - const std::span GetVkDescriptorSets( uint32_t bufferIndex ) const { return {&mDescriptorSets[(bufferIndex % mNumBuffers) * mNumDescriptorSetsPerBuffer], mNumDescriptorSetsPerBuffer}; } - const auto& GetVkDescriptorSets() const { return mDescriptorSets; } - const auto& GetPipelineLayout() const { return mDynamicPipelineLayout; } - const auto& GetSpecializationConstants() const { return mSpecializationConstants; }; - - const auto& GetTextureBindings() const { return mTextureBindings; } - const auto& GetImageBindings() const { return mImageBindings; } - const auto& GetBufferBindings() const { return mBufferBindings; } - - bool UpdateDescriptorSets(uint32_t bufferIdx); - bool UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const TextureT& newTexture) const; - - const ShaderPass& mShaderPass; -protected: - Vulkan& mVulkan; - - // Helpers for size of mDescriptorSets - const uint32_t mNumDescriptorSetsPerBuffer; ///< number of descriptor sets needed by the shader(pass). Usually 1 but some shaders will use more then one secriptor set. - const uint32_t mNumBuffers; ///< Number of buffers worth of descriptors (may be 1, or number of framebuffers, or something else) - - // Vulkan objects - VkDescriptorPool mDescriptorPool; - std::vector mDescriptorSets; ///< array of descriptor sets (mNumDescriptorSetsPerBuffer * mNumBuffers)) - std::vector mDynamicDescriptorSetLayouts;///< array of descriptor set layouts specific for to this materialPass (usually they are shared across all materials with a specific shader, except in the case of descriptor sets that are 'dynamically' sized to fit the material specific contents) - PipelineLayout mDynamicPipelineLayout; ///< pipeline layout specific to this materiaPass (usually shaderPass contains the pipeline layout but for materials with 'dynamic' descriptor set layouts we have to have a unique pipeline per materialPass - SpecializationConstants mSpecializationConstants; ///< block of specialization constants for this material pass - - tTextureBindings mTextureBindings; ///< Images (textures) (with sampler) considered readonly - tImageBindings mImageBindings; ///< Images that may be bound as writable (or read/write). - tBufferBindings mBufferBindings; - tAccelerationStructureBindings mAccelerationStructureBindings; -}; +// Forward declarations +template class Material; +class ShaderBase; /// An instance of a Shader material. /// Container for MaterialPasses and reference to this material's Shader /// @ingroup Material -class Material +class MaterialBase { - Material(const Material&) = delete; - Material& operator=(const Material&) = delete; + MaterialBase(const MaterialBase&) = delete; + MaterialBase& operator=(const MaterialBase&) = delete; public: - Material(const ShaderT& shader, uint32_t numFramebuffers); - Material(Material&&) noexcept; - ~Material(); - - void AddMaterialPass(const std::string& passName, MaterialPass&& pass) - { - if (m_materialPassNamesToIndex.try_emplace(passName, (uint32_t)m_materialPasses.size()).second == true) - { - m_materialPasses.emplace_back(std::move(pass)); - } - // else pass name already exists - do nothing! - } + template using tApiDerived = Material; // make apiCast work! + MaterialBase(const ShaderBase& shader, uint32_t numFramebuffers); + MaterialBase(MaterialBase&&) noexcept; + ~MaterialBase(); - const MaterialPass* GetMaterialPass(const std::string& passName) const; - const auto& GetMaterialPasses() const { return m_materialPasses; } uint32_t GetNumFrameBuffers() const { return m_numFramebuffers; } - bool UpdateDescriptorSets(uint32_t bufferIdx); + const ShaderBase& m_shader; + const ShaderBase& GetShader() const { return m_shader; } - /// @brief Update a single value in a descriptor set - /// Not optimized for being called multiple times per set (per frame). Intended to be used sparingly. - /// @param bufferIdx - /// @return true on success - bool UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const TextureT& newTexture) const; - - const ShaderT& m_shader; protected: std::map m_materialPassNamesToIndex; /// pass name to index in m_materialPasses - std::vector m_materialPasses; const uint32_t m_numFramebuffers; /// more accurately 'number of frames of buffers'. }; + diff --git a/framework/code/material/materialManager.hpp b/framework/code/material/materialManager.hpp index 200a2cc..fd4381f 100644 --- a/framework/code/material/materialManager.hpp +++ b/framework/code/material/materialManager.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,97 +10,133 @@ #include #include #include -//#define VK_ENABLE_BETA_EXTENSIONS -#include +#include "material.hpp" // Forward declarations class GraphicsApiBase; class Vulkan; -class Material; -class MaterialPass; +class MaterialPassBase; class ShaderDescription; -class Shader; -template class ShaderT; +class ShaderBase; +template class Material; +template class MaterialManager; +template class MaterialPass; +template class Shader; template class ShaderPass; -class Texture; -struct ImageInfo; -struct tPerFrameVkBuffer; +class AccelerationStructureBase; +class TextureBase; +template struct ImageInfo; +struct ImageInfoBase; +struct PerFrameBufferBase; +template struct PerFrameBuffer; class VertexElementData; -/// Helper class for creating Material (base class, expected for there to be a graphics api specific derived class) +/// Helper class for creating MaterialBase (base class, expected for there to be a graphics api specific derived class) /// @ingroup Material -class MaterialManager +class MaterialManagerBase { -#if VK_KHR_acceleration_structure - typedef VkAccelerationStructureKHR AccelerationStructureHandle; -#else - typedef void* AccelerationStructureHandle; -#endif - - MaterialManager(const MaterialManager&) = delete; - MaterialManager& operator=(const MaterialManager&) = delete; + MaterialManagerBase(const MaterialManagerBase&) = delete; + MaterialManagerBase& operator=(const MaterialManagerBase&) = delete; protected: - MaterialManager() noexcept {}; + MaterialManagerBase(GraphicsApiBase& gfxApi) noexcept + : mGfxApi(gfxApi) + {} public: - virtual ~MaterialManager() {}; - typedef std::vector tPerFrameTexInfo; - typedef std::vector tPerFrameVkAccelerationStructure; + typedef std::vector tPerFrameTexInfo; + typedef std::vector tPerFrameAccelerationStructure; - virtual Material CreateMaterial(GraphicsApiBase&, const Shader& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader = nullptr, - const std::function& accelerationStructureLoader = nullptr, - const std::function& specializationConstantLoader = nullptr) const = 0; + virtual std::unique_ptr CreateMaterial(const ShaderBase& shader, + uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function& bufferLoader, + const std::function& imageLoader = nullptr, + const std::function& accelerationStructureLoader = nullptr, + const std::function& specializationConstantLoader = nullptr) const = 0; + GraphicsApiBase &mGfxApi; }; -/// Helper class for creating Material +/// Helper class for creating MaterialBase /// @ingroup Material template -class MaterialManagerT : public MaterialManager +class MaterialManager : public MaterialManagerBase { -#if VK_KHR_acceleration_structure - typedef VkAccelerationStructureKHR AccelerationStructureHandle; -#else - typedef void* AccelerationStructureHandle; -#endif - - MaterialManagerT& operator=(const MaterialManagerT&) = delete; - MaterialManagerT(const MaterialManagerT&) = delete; + MaterialManager& operator=(const MaterialManager&) = delete; + MaterialManager(const MaterialManager&) = delete; public: - typedef std::vector tPerFrameTexInfo; - typedef std::vector tPerFrameVkAccelerationStructure; - MaterialManagerT(); - ~MaterialManagerT(); + MaterialManager( T_GFXAPI& gfxApi ) noexcept; + ~MaterialManager(); - /// Create a material to be used for rendering (potentially contains multiple passes) - /// If numFrameBuffers is not 1 there will be numFrameBuffers descriptor sets created (so different buffers can be bound on different 'frames', although the layout is fixed) - Material CreateMaterial(GraphicsApiBase&, const Shader& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader = nullptr, - const std::function& accelerationStructureLoader = nullptr, - const std::function& specializationConstantLoader = nullptr) const override; + virtual std::unique_ptr CreateMaterial( const ShaderBase& shader, + uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function& bufferLoader, + const std::function& imageLoader = nullptr, + const std::function& accelerationStructureLoader = nullptr, + const std::function& specializationConstantLoader = nullptr ) const override final; - Material CreateMaterial(T_GFXAPI& gfxApi, const ShaderT& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader = nullptr, - const std::function& accelerationStructureLoader = nullptr, - const std::function& specializationConstantLoader = nullptr) const; + Material CreateMaterial( const Shader& shader, + uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function( const std::string& )>& bufferLoader, + const std::function( const std::string& )>& imageLoader = nullptr, + const std::function& accelerationStructureLoader = nullptr, + const std::function& specializationConstantLoader = nullptr ) const; + //{ + // static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"material//materialManager.hpp\""); + //} protected: + /// Internal material pass creation (does not UpdateDescriptorSets) - MaterialPass CreateMaterialPassInternal(T_GFXAPI& vulkan, - const ShaderPass& shaderPass, - uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader, - const std::function& accelerationStructureLoader, - const std::function& specializationStructureLoader, - const std::string& passDebugName) const; + MaterialPass CreateMaterialPassInternal( const ShaderPass& shaderPass, + uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function( const std::string& )>& bufferLoader, + const std::function( const std::string& )>& imageLoader, + const std::function& accelerationStructureLoader, + const std::function& specializationStructureLoader, + const std::string& passDebugName ) const; + //{ + // static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"material//materialManager.hpp\""); + //} + + //static_assert(sizeof( MaterialManager) != sizeof(MaterialManagerBase)); // Expecting that this template be specialized. If you get a compile error here maybe you didnt #include the materialManager.hpp for the gfxapi (eg MaterialBase\Vulkan\materialManager.hpp) }; + +template +std::unique_ptr MaterialManager::CreateMaterial( const ShaderBase& shader, + uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function& bufferLoader, + const std::function& imageLoader, + const std::function& accelerationStructureLoader, + const std::function& specializationConstantLoader ) const +{ + auto textureLoader2 = [&textureLoader]( const std::string& name ) ->tPerFrameTexInfo { + tPerFrameTexInfo texInfo; + textureLoader( name, texInfo ); + return texInfo; + }; + auto bufferLoader2 = [&bufferLoader]( const std::string& name ) -> PerFrameBuffer { + PerFrameBuffer buffers; + bufferLoader( name, buffers ); + return buffers; + }; + auto imageLoader2 = [&imageLoader]( const std::string& name ) ->ImageInfo { + ImageInfo imageInfo; + imageLoader( name, imageInfo ); + return imageInfo; + }; + + return std::make_unique< Material>( + MaterialManager::CreateMaterial( apiCast( shader ), + numFrameBuffers, + textureLoader2, + bufferLoader2, + imageLoader2, + accelerationStructureLoader, + specializationConstantLoader ) ); +} diff --git a/framework/code/material/materialManagerT.hpp b/framework/code/material/materialManagerT.hpp index 8fd45d7..c4808a9 100644 --- a/framework/code/material/materialManagerT.hpp +++ b/framework/code/material/materialManagerT.hpp @@ -1,118 +1,10 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once -#include -#include -#include -//#define VK_ENABLE_BETA_EXTENSIONS -#include - -// Forward declarations -class GraphicsApiBase; -class Vulkan; -class Material; -class MaterialPass; -class ShaderDescription; -class Shader; -template class ShaderT; -template class ShaderPass; -class Texture; -struct ImageInfo; -struct tPerFrameVkBuffer; -class VertexElementData; - - -/// Helper class for creating Material (base class, expected for there to be a graphics api specific derived class) -/// @ingroup Material -class MaterialManager -{ -#if VK_KHR_acceleration_structure - typedef VkAccelerationStructureKHR AccelerationStructureHandle; -#else - typedef void* AccelerationStructureHandle; -#endif - - MaterialManager(const MaterialManager&) = delete; - MaterialManager& operator=(const MaterialManager&) = delete; -protected: - MaterialManager() noexcept {}; - virtual ~MaterialManager() {} - -public: - typedef std::vector tPerFrameTexInfo; - typedef std::vector tPerFrameVkAccelerationStructure; - - virtual Material CreateMaterial(GraphicsApiBase&, const Shader& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader = nullptr, - const std::function& accelerationStructureLoader = nullptr, - const std::function& specializationConstantLoader = nullptr) const = 0; -}; - - -/// Helper class for creating Material -/// @ingroup Material -template -class MaterialManagerT final : public MaterialManager -{ -#if VK_KHR_acceleration_structure - typedef VkAccelerationStructureKHR AccelerationStructureHandle; -#else - typedef void* AccelerationStructureHandle; -#endif - - MaterialManagerT& operator=(const MaterialManagerT&) = delete; - MaterialManagerT(const MaterialManagerT&) = delete; -public: - typedef std::vector tPerFrameTexInfo; - typedef std::vector tPerFrameVkAccelerationStructure; - - MaterialManagerT(); - ~MaterialManagerT(); - - /// Create a material to be used for rendering (potentially contains multiple passes) - /// If numFrameBuffers is not 1 there will be numFrameBuffers descriptor sets created (so different buffers can be bound on different 'frames', although the layout is fixed) - Material CreateMaterial(GraphicsApiBase&, const Shader& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader = nullptr, - const std::function& accelerationStructureLoader = nullptr, - const std::function& specializationConstantLoader = nullptr) const override; - - Material CreateMaterial(T_GFXAPI& gfxApi, const ShaderT& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader = nullptr, - const std::function& accelerationStructureLoader = nullptr, - const std::function& specializationConstantLoader = nullptr) const; -protected: - /// Internal material pass creation (does not UpdateDescriptorSets) - MaterialPass CreateMaterialPassInternal(T_GFXAPI& vulkan, - const ShaderPass& shaderPass, - uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader, - const std::function& accelerationStructureLoader, - const std::function& specializationStructureLoader, - const std::string& passDebugName) const; -}; - -template -Material MaterialManagerT::CreateMaterial(GraphicsApiBase& gfxApi, const Shader& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader, - const std::function& accelerationStructureLoader, - const std::function& specializationConstantLoader) const /*override*/ -{ - return CreateMaterial(static_cast(gfxApi), static_cast>(shader), numFrameBuffers, - textureLoader, bufferLoader, imageLoader, accelerationStructureLoader, specializationConstantLoader ); -} +#include "materialManager.hpp" diff --git a/framework/code/material/materialPass.hpp b/framework/code/material/materialPass.hpp new file mode 100644 index 0000000..ed5d6f6 --- /dev/null +++ b/framework/code/material/materialPass.hpp @@ -0,0 +1,175 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +//#include "memory/memoryMapped.hpp" +#include "shader.hpp" + +// Forward declarations +template struct ImageInfo; +template class MaterialPass; +template class MemoryAllocatedBuffer; + + +/// Base class for ImageInfo (different per graphics api) +/// @ingroup Material +struct ImageInfoBase +{ + ImageInfoBase() {} + ImageInfoBase( const ImageInfoBase& ) = delete; + ImageInfoBase& operator=( const ImageInfoBase& ) = delete; + ImageInfoBase( ImageInfoBase&& ) = default; + ImageInfoBase& operator=( ImageInfoBase&& ) = default; + template using tApiDerived = ImageInfo; // make apiCast work! +}; + +/// @ingroup Material +template +struct ImageInfo : public ImageInfoBase +{ + ImageInfo() = delete; // must be specialized + ~ImageInfo() = delete; // must be specialized + ImageInfo( const ImageInfo& ) = delete; + ImageInfo& operator=( const ImageInfo& ) = delete; + static_assert(sizeof( ImageInfo ) != sizeof( ImageInfoBase )); // static assert if not specialized +}; + +/// An instance of a ShaderPass material. +/// @ingroup Material +class MaterialPassBase +{ +protected: + MaterialPassBase( const ShaderPassBase& shaderPass ) noexcept + : mShaderPass( shaderPass) {} + MaterialPassBase(MaterialPassBase && other) noexcept + : mShaderPass( other.mShaderPass ) {} + ~MaterialPassBase() {} +public: + template using tApiDerived = MaterialPass; // make apiCast work! + + const ShaderPassBase& mShaderPass; +}; + +/// Templated MaterialPass (by the graphics api) +/// Expected to be specialized by graphics api and for this non-specialized template not be intantiated/used +/// @ingroup Material +template +class MaterialPass : public MaterialPassBase +{ + MaterialPass() = delete; // must be specialized + ~MaterialPass() = delete; // must be specialized + MaterialPass( const MaterialPass& ) = delete; + MaterialPass& operator=( const MaterialPass& ) = delete; + static_assert(sizeof(MaterialPass) != sizeof(MaterialPassBase)); // static assert if not specialized +}; + + +struct BufferAndOffsetVoid { + void* _buffer; + uint32_t _offset = 0; + constexpr bool operator==( const BufferAndOffsetVoid& other ) const = default; + void* buffer() const { return _buffer; } + auto offset() const { return _offset; } +}; + +/// Reference to VkBuffer or ID3D12Resource (with an offset). +/// Does not have ownership of the buffer (and so lifetime of the buffer should be longer than the referencing @VkBufferAndOffset) +template +struct BufferAndOffset : public BufferAndOffsetVoid { + using tApiBufferType = typename T_GFXAPI::BufferHandleType; + constexpr bool operator==( const BufferAndOffset& other ) const = default; + tApiBufferType buffer() const { + return static_cast(_buffer); + } +}; + + +struct PerFrameBufferBase +{ + /// Reference to VkBuffer or ID3D12Resource (with an offset). + /// Does not have ownership of the buffer (and so lifetime of the buffer should be longer than the referencing @VkBufferAndOffset) + + PerFrameBufferBase() = default; + + template< typename InputIt> requires (sizeof(std::iterator_traits::value_type)==sizeof(void*)) + PerFrameBufferBase( InputIt first, InputIt last ) noexcept + { + while (first != last) + buffers.push_back( {*first++, 0} ); + } + template() ))>> + PerFrameBufferBase( const InputContainer& container ) + { + for (auto item : container) + buffers.push_back( {item} ); + } + + using tBuffers = std::vector; + tBuffers buffers; +}; + +/// Reference to an array of BufferAndOffset (VkBuffer or ID3D12Resource, with an offset). +/// Does not have ownership of the buffers (and so lifetime of the buffers should be longer than this container) +template +struct PerFrameBuffer : public PerFrameBufferBase +{ + using tApiBufferType = typename T_GFXAPI::BufferHandleType; + using tBuffers = std::vector>; + + const auto& getBuffers() const { return (const tBuffers&)buffers; } + auto& getBuffers() { return (tBuffers&)buffers; } + + template< typename InputIt> requires ( std::is_same_v::value_type, tApiBufferType > ) + PerFrameBuffer( InputIt first, InputIt last ) : PerFrameBufferBase() + { + while (first != last) + getBuffers().push_back({*first++, 0}); + } + template< typename InputIt > requires (std::is_same_v) + PerFrameBuffer( InputIt first, InputIt last ) : PerFrameBufferBase( first, last ) + { + } + + template() ))>> requires (std::is_same_v>) + PerFrameBuffer( const InputContainer& container ) : PerFrameBufferBase() + { + for (auto& item : container) + buffers.push_back( {item.GetVkBuffer()}); + } + + template() ))>> + PerFrameBuffer( const InputContainer& container ) : PerFrameBufferBase() + { + for (auto item : container) + buffers.push_back( { item } ); + } + PerFrameBuffer( const BufferAndOffset& bufferAndOffset ) noexcept : PerFrameBufferBase() + { + buffers.push_back( bufferAndOffset ); + } + PerFrameBuffer( tApiBufferType buffer ) noexcept : PerFrameBufferBase() + { + buffers.push_back( { buffer, 0 } ); + } + explicit PerFrameBuffer( PerFrameBuffer&& other ) noexcept = default; + PerFrameBuffer& operator=( PerFrameBuffer&& other ) noexcept = default; + PerFrameBuffer( const PerFrameBuffer& other ) noexcept = default; + PerFrameBuffer& operator=( const PerFrameBuffer& other ) noexcept = default; + PerFrameBuffer() = default; + + constexpr size_t size() const noexcept { return buffers.size(); } + constexpr typename tBuffers::iterator begin() noexcept { getBuffers().begin(); } + constexpr typename tBuffers::const_iterator begin() const noexcept { return getBuffers().begin(); } + constexpr typename tBuffers::const_iterator cbegin() const noexcept { return getBuffers().begin(); } + constexpr typename tBuffers::iterator end() { return buffers.end(); } + constexpr typename tBuffers::const_iterator end() const { return getBuffers().end(); } + constexpr typename tBuffers::const_iterator cend() const { return getBuffers().cend(); } + constexpr typename tBuffers::value_type& operator[]( const typename tBuffers::size_type x ) noexcept { return buffers[x]; } + constexpr const typename tBuffers::value_type& operator[]( const typename tBuffers::size_type x ) const noexcept { return(typename tBuffers::value_type&)(buffers[x]); } +}; diff --git a/framework/code/material/materialProps.cpp b/framework/code/material/materialProps.cpp index 6d2d2e3..030dd0e 100644 --- a/framework/code/material/materialProps.cpp +++ b/framework/code/material/materialProps.cpp @@ -1,12 +1,13 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #include "materialProps.h" +#include #include "system/os_common.h" #include "memory/vulkan/indexBufferObject.hpp" #include "memory/vulkan/uniform.hpp" @@ -87,12 +88,9 @@ void MaterialProps::InitOneLayout(Vulkan* pVulkan) } //----------------------------------------------------------------------------- -bool MaterialProps::InitOnePipeline(Vulkan* pVulkan, Mesh* pMesh, uint32_t TargetWidth, uint32_t TargetHeight, VkRenderPass RenderPass) +bool MaterialProps::InitOnePipeline(Vulkan* pVulkan, Mesh* pMesh, uint32_t TargetWidth, uint32_t TargetHeight, const RenderContext& renderingPassContext) //----------------------------------------------------------------------------- { - // This is based on a specific mesh at this point - // TODO: How do I do multiple meshes? - // Raster State VkPipelineRasterizationStateCreateInfo RasterState{ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; RasterState.flags = 0; @@ -204,18 +202,25 @@ bool MaterialProps::InitOnePipeline(Vulkan* pVulkan, Mesh* pMesh, uint32 // Grab the vertex input state for the vertex buffer we will be binding. VkPipelineVertexInputStateCreateInfo visci = pMesh->m_VertexBuffers[0].CreatePipelineState(); + VkPipelineInputAssemblyStateCreateInfo inputAssemblyState{ + .sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, + .topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST + }; + if( !pVulkan->CreatePipeline( PipelineCache, &visci, PipelineLayout, - RenderPass, - 0,//subpass, + renderingPassContext, &RasterState, &DepthStencilInfo, &BlendStateInfo, nullptr,//default multisample state + &inputAssemblyState, dynamicStateEnables, &Viewport, &Scissor, + VK_NULL_HANDLE,//task shader + VK_NULL_HANDLE,//mesh shader pShader->VertShaderModule.GetVkShaderModule(), pShader->FragShaderModule.GetVkShaderModule(), nullptr,//specializationInfo diff --git a/framework/code/material/materialProps.h b/framework/code/material/materialProps.h index e36a08a..311c531 100644 --- a/framework/code/material/materialProps.h +++ b/framework/code/material/materialProps.h @@ -1,10 +1,9 @@ -//============================================================================================================ -// +//============================================================================= // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #ifndef _MATERIAL_MATERIALPROPS_H_ @@ -31,12 +30,12 @@ // Forward declarations struct ShaderInfo; -class Texture; +class TextureBase; template class Mesh; template struct Uniform; //============================================================================= -// Material Description +// MaterialBase Description //============================================================================= typedef struct _MaterialProps @@ -44,7 +43,7 @@ typedef struct _MaterialProps // Used by the application, not the engine. Nice to have it here uint32_t RenderPassMask; - // Material Flags + // MaterialBase Flags // Need one per render target layer. Usually this will be one, but not for MRTs uint32_t NumBlendStates; VkPipelineColorBlendAttachmentState BlendStates[MAX_GMEM_OUTPUT_LAYERS]; @@ -66,7 +65,7 @@ typedef struct _MaterialProps ShaderInfo* pShader; // Textures (responsibility of owner to clean up) - Texture* pTexture[MAX_MATERIAL_SAMPLERS]; + TextureBase* pTexture[MAX_MATERIAL_SAMPLERS]; // Constant Buffers uint32_t VertUniformOffset; @@ -90,7 +89,7 @@ typedef struct _MaterialProps // Helper Functions void InitOneLayout(Vulkan*); - bool InitOnePipeline(Vulkan*, Mesh* pMesh, uint32_t TargetWidth, uint32_t TargetHeight, VkRenderPass RenderPass); + bool InitOnePipeline(Vulkan*, Mesh* pMesh, uint32_t TargetWidth, uint32_t TargetHeight, const RenderContext& renderingPassContext); bool InitDescriptorPool(Vulkan*); bool InitDescriptorSet(Vulkan*); diff --git a/framework/code/material/materialShaderDefinition.cpp b/framework/code/material/materialShaderDefinition.cpp index d3a6f2c..8d1cc23 100644 --- a/framework/code/material/materialShaderDefinition.cpp +++ b/framework/code/material/materialShaderDefinition.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/material/materialShaderDefinition.hpp b/framework/code/material/materialShaderDefinition.hpp index b3db6a0..a64fbf4 100644 --- a/framework/code/material/materialShaderDefinition.hpp +++ b/framework/code/material/materialShaderDefinition.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/material/materialT.hpp b/framework/code/material/materialT.hpp new file mode 100644 index 0000000..558ebe8 --- /dev/null +++ b/framework/code/material/materialT.hpp @@ -0,0 +1,116 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "material.hpp" +#include "materialPass.hpp" + + +// Forward declarations +template class Shader; +template class Texture; + + +// Material (MaterialBase templated by the graphics api) +template +class Material : public MaterialBase +{ + Material (const Material&) = delete; + Material& operator=(const Material&) = delete; +public: + Material(const Shader& shader, uint32_t numFramebuffers); + Material(Material&&) noexcept; + ~Material(); + + const Shader& GetShader() const { return apiCast(m_shader); } + + void AddMaterialPass(const std::string& passName, MaterialPass&& pass) + { + if (m_materialPassNamesToIndex.try_emplace(passName, (uint32_t)m_materialPasses.size()).second == true) + { + m_materialPasses.emplace_back(std::move(pass)); + } + // else pass name already exists - do nothing! + } + + const MaterialPass* GetMaterialPass(const std::string& passName) const; + const MaterialPass* GetMaterialPass(uint32_t passIdx) const; + const auto& GetMaterialPasses() const { return m_materialPasses; } + + bool UpdateDescriptorSets(uint32_t bufferIdx); + + /// @brief Update a single value in a descriptor set + /// Not optimized for being called multiple times per set (per frame). Intended to be used sparingly. + /// @param bufferIdx + /// @return true on success + bool UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const Texture& newTexture) const; + +protected: + std::vector> m_materialPasses; +}; + + +template +Material::Material(Material && other) noexcept +: MaterialBase( std::move(other) ) +, m_materialPasses(std::move(other.m_materialPasses)) +{ +} + +template +Material::~Material() +{ +} + +template +Material::Material(const Shader& shader, uint32_t numFramebuffers) + :MaterialBase(shader, numFramebuffers) +{ +} + + +template +const MaterialPass* Material::GetMaterialPass(const std::string& passName) const +{ + auto it = m_materialPassNamesToIndex.find(passName); + if (it != m_materialPassNamesToIndex.end()) + { + return &m_materialPasses[it->second]; + } + return nullptr; +} + +template +const MaterialPass* Material::GetMaterialPass(uint32_t passIdx) const +{ + return &m_materialPasses[passIdx]; +} + +template +bool Material::UpdateDescriptorSets(uint32_t bufferIdx) +{ + // Just go through and update the MaterialPass descriptor sets. + // Could be much smarter (and could handle failures better than just continuing and reporting something went wrong) + bool success = true; + for (auto& materialPass : m_materialPasses) + { + success &= materialPass.UpdateDescriptorSets(bufferIdx); + } + return success; +} + +template +bool Material::UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const Texture& newTexture) const +{ + bool success = true; + for (auto& materialPass : m_materialPasses) + { + success &= materialPass.UpdateDescriptorSetBinding(bufferIdx, bindingName, newTexture); + } + return success; +} diff --git a/framework/code/material/pipeline.hpp b/framework/code/material/pipeline.hpp new file mode 100644 index 0000000..4f7c650 --- /dev/null +++ b/framework/code/material/pipeline.hpp @@ -0,0 +1,72 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +// Forward declarations +class ShaderPassDescription; +template class SpecializationConstants; +template class PipelineLayout; +template class PipelineRasterizationState; +template class PipelineVertexInputState; +template class ShaderModules; +template class RenderPass; +template class RenderContext; +enum class Msaa; + +/// @brief Settings for vertex input assembly +struct PipelineInputAssemblySettings +{ + enum PrimitiveTopology { + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, + } PrimitiveTopology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + bool primitiveRestartEnable = false; +}; + + +/// Simple wrapper around VkPipeline or ID3D12PipelineState. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// This template class expected to be specialized (if this template throws compiler errors then the code is not using the specialization classes which is an issue!) +/// @ingroup Material +template +class Pipeline +{ + Pipeline& operator=(const Pipeline&) = delete; + Pipeline(const Pipeline&) = delete; +public: + Pipeline() noexcept = delete; + Pipeline(Pipeline&&) noexcept = delete; + ~Pipeline() = delete; + + static_assert(sizeof( Pipeline ) >= 1, "Must use the specialized version of this class. Your are likely missing #include \"material//pipeline.hpp\""); +}; + +template +Pipeline CreatePipeline( T_GFXAPI&, + const ShaderPassDescription& shaderPassDescription, + const PipelineLayout& pipelineLayout, + const PipelineVertexInputState& pipelineVertexInputState, + const PipelineRasterizationState& pipelineRasterizationState, + const SpecializationConstants& specializationConstants, + const ShaderModules& shaderModules, + const RenderContext& renderContext, + Msaa msaa ) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"material//pipeline.hpp\""); + assert( 0 && "Expecting CreatePipeline (per graphics api) to be used" ); + return {}; +} \ No newline at end of file diff --git a/framework/code/material/pipelineLayout.hpp b/framework/code/material/pipelineLayout.hpp index 34d6a4c..79276eb 100644 --- a/framework/code/material/pipelineLayout.hpp +++ b/framework/code/material/pipelineLayout.hpp @@ -1,14 +1,14 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once // Forward declarations -class DescriptorSetLayout; +class DescriptorSetLayoutBase; /// Simple wrapper around VkPipelineLayout or RootSignature. @@ -25,5 +25,5 @@ class PipelineLayout PipelineLayout(PipelineLayout&&) noexcept = delete; ~PipelineLayout() = delete; - static_assert(sizeof(PipelineLayout) >= 1); // Ensure this class template is specialized (and not used as-is) + static_assert(sizeof(PipelineLayout) >= 1, "Must use the specialized version of this class. Your are likely missing #include \"material//pipelineLayout.hpp\""); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/material/pipelineVertexInputState.hpp b/framework/code/material/pipelineVertexInputState.hpp index 10babac..897099b 100644 --- a/framework/code/material/pipelineVertexInputState.hpp +++ b/framework/code/material/pipelineVertexInputState.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,18 +9,47 @@ // Forward declarations class ShaderDescription; +class ShaderPassDescription; + +class PipelineVertexInputStateBase { + PipelineVertexInputStateBase( const PipelineVertexInputStateBase& ) = delete; + PipelineVertexInputStateBase& operator=( const PipelineVertexInputStateBase& ) = delete; +public: + PipelineVertexInputStateBase() noexcept = default; +}; /// Helper for making VkPipelineVertexInputStateCreateInfo. /// @ingroup Material template -class PipelineVertexInputState +class PipelineVertexInputState : public PipelineVertexInputStateBase { - PipelineVertexInputState(const PipelineVertexInputState&) = delete; - PipelineVertexInputState& operator=(const PipelineVertexInputState&) = delete; public: PipelineVertexInputState(const ShaderDescription& shaderDescription, const std::vector& buffersToBind /*indices of buffers (in shaderDescription.m_vertexFormats) to bind in this input state*/) noexcept; - PipelineVertexInputState(PipelineVertexInputState&&) noexcept; - static_assert(sizeof(PipelineVertexInputState) >= 1); // Ensure this class template is specialized (and not used as-is) }; + + +class PipelineRasterizationStateBase +{ + PipelineRasterizationStateBase( const PipelineRasterizationStateBase& ) = delete; + PipelineRasterizationStateBase& operator=( const PipelineRasterizationStateBase& ) = delete; +public: + PipelineRasterizationStateBase() noexcept = default; +}; + +/// Helper for making VkPipelineRasterizationStateCreateInfo. +/// @ingroup Material +template +class PipelineRasterizationState : public PipelineRasterizationStateBase +{ +public: + PipelineRasterizationState() noexcept + {} + PipelineRasterizationState( PipelineRasterizationState&& ) noexcept + {} + PipelineRasterizationState( const ShaderPassDescription& shaderPassDescription ) noexcept {} + + //ok to use the base class (eg for Dx12) when there is no rasterization state + //static_assert(sizeof( PipelineRasterizationState ) >= 1); // Ensure this class template is specialized (and not used as-is) +}; diff --git a/framework/code/material/shader.hpp b/framework/code/material/shader.hpp index 3656b9d..43f92bc 100644 --- a/framework/code/material/shader.hpp +++ b/framework/code/material/shader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -22,8 +22,10 @@ // forward declarations class GraphicsApiBase; class ShaderDescription; -template class ShaderT; -template class ShaderModuleT; +template class Shader; +template class ShaderModule; +template class ShaderPass; +template class DescriptorSetLayout; class ShaderPassDescription; /// Reference to a 'normal' graphics pipeline pairing of a vertex and fragment shader @@ -31,15 +33,15 @@ class ShaderPassDescription; template struct GraphicsShaderModules { - ShaderModuleT& vert; - ShaderModuleT& frag; + ShaderModule& vert; + ShaderModule& frag; }; /// Reference to a 'vertex only' graphics pipeline pairing of a vertex shader (no fragment, typically used when laying down a depth buffer) /// @ingroup Material template struct GraphicsShaderModuleVertOnly { - ShaderModuleT& vert; + ShaderModule& vert; operator const auto& () const { return vert; } }; /// Reference to a 'mesh' graphics pipeline pairing of a mesh and fragment shader @@ -47,17 +49,17 @@ struct GraphicsShaderModuleVertOnly template struct GraphicsMeshShaderModules { - ShaderModuleT& mesh; - ShaderModuleT& frag; + ShaderModule& mesh; + ShaderModule& frag; }; /// Reference to a 'task mesh' graphics pipeline pairing of a task, mesh and fragment shader /// @ingroup Material template struct GraphicsTaskMeshShaderModules { - ShaderModuleT& task; - ShaderModuleT& mesh; - ShaderModuleT& frag; + ShaderModule& task; + ShaderModule& mesh; + ShaderModule& frag; }; /// Reference to a compute shader @@ -65,18 +67,18 @@ struct GraphicsTaskMeshShaderModules template struct ComputeShaderModule { - ShaderModuleT& compute; - operator const ShaderModuleT& () const { return compute; } + ShaderModule& compute; + operator const ShaderModule& () const { return compute; } }; /// Reference to a ray tracing pipeline with a ray-generation shader and some combination of ray-miss, ray-hit, ray-first-hit /// @ingroup Material template struct RayTracingShaderModules { - ShaderModuleT& rayGeneration; - const ShaderModuleT* rayClosestHit = nullptr; - const ShaderModuleT* rayAnyHit = nullptr; - const ShaderModuleT* rayMiss = nullptr; + ShaderModule& rayGeneration; + const ShaderModule* rayClosestHit = nullptr; + const ShaderModule* rayAnyHit = nullptr; + const ShaderModule* rayMiss = nullptr; }; /// Container for a reference to one of the allowed shader module types. /// @ingroup Material @@ -97,34 +99,55 @@ class ShaderModules }; +class ShaderPassBase +{ + ShaderPassBase( const ShaderPassBase& ) = delete; + ShaderPassBase& operator=( const ShaderPassBase& ) = delete; + ShaderPassBase() = delete; +protected: + ShaderPassBase( const ShaderPassDescription& shaderPassDescription ) noexcept : m_shaderPassDescription( shaderPassDescription ) + {} + ShaderPassBase( ShaderPassBase&& other ) noexcept;///< @note currently implemented as an assert, so compiler does not complain (eg std::vector::push_back) but implementation expects this is never hit at runtime! +public: + template using tApiDerived = ShaderPass; // make apiCast work! + + const ShaderPassDescription& m_shaderPassDescription; +}; + + /// Container for the gpu objects needed for a shader pass (described by ShaderPassDescription). /// Typically used to create MaterialPass (s). /// @ingroup Material template -class ShaderPass +class ShaderPass final : public ShaderPassBase { + using DescriptorSetLayout = DescriptorSetLayout; + using PipelineLayout = PipelineLayout; + using PipelineVertexInputState = PipelineVertexInputState; + using ShaderModules = ShaderModules; + using SpecializationConstantsLayout = SpecializationConstantsLayout; + ShaderPass(const ShaderPass& src) = delete; ShaderPass& operator=(const ShaderPass& src) = delete; ShaderPass() = delete; public: - ShaderPass(const ShaderPassDescription& shaderPassDescription, ShaderModules shaders, std::vector descriptorSetLayouts, PipelineLayout, PipelineVertexInputState, SpecializationConstantsLayout, uint32_t numOutputs) noexcept; + + ShaderPass(const ShaderPassDescription& shaderPassDescription, ShaderModules shaders, std::vector descriptorSetLayouts, PipelineLayout, PipelineVertexInputState, SpecializationConstantsLayout, uint32_t numOutputs) noexcept; ShaderPass(ShaderPass&& other) noexcept;///< @note currently implemented as an assert, so compiler does not complain (eg std::vector::push_back) but implementation expects this is never hit at runtime! void Destroy(T_GFXAPI&); - ShaderModules m_shaders; + ShaderModules m_shaders; const auto& GetPipelineLayout() const { return m_pipelineLayout; } const auto& GetDescriptorSetLayouts() const { return m_descriptorSetLayouts; } const auto& GetPipelineVertexInputState() const { return m_pipelineVertexInputState; } const auto& GetSpecializationConstantsLayout()const { return m_specializationConstantsLayout; } - - const ShaderPassDescription& m_shaderPassDescription; private: std::vector m_descriptorSetLayouts; - PipelineLayout m_pipelineLayout; - PipelineVertexInputState m_pipelineVertexInputState; - SpecializationConstantsLayout m_specializationConstantsLayout; + PipelineLayout m_pipelineLayout; + PipelineVertexInputState m_pipelineVertexInputState; + SpecializationConstantsLayout m_specializationConstantsLayout; uint32_t m_numOutputs = 0; static_assert(sizeof(T_GFXAPI) > 1); @@ -132,41 +155,45 @@ class ShaderPass /// @brief Base class for shaders (graphics api agnostic, expected to have a derived API specific implementation) -class Shader +class ShaderBase { - Shader(const Shader&) = delete; - Shader& operator=(const Shader&) = delete; + ShaderBase(const ShaderBase&) = delete; + ShaderBase& operator=(const ShaderBase&) = delete; public: - template using tApiDerived = ShaderT; // make apiCast work! - Shader(const ShaderDescription* pShaderDescription) noexcept : m_shaderDescription(pShaderDescription) {} - virtual ~Shader() {} + template using tApiDerived = Shader; // make apiCast work! + ShaderBase(const ShaderDescription* pShaderDescription) noexcept : m_shaderDescription(pShaderDescription) {} + virtual ~ShaderBase() {} virtual void Destroy(GraphicsApiBase&) = 0; + const auto& GetShaderPassIndicesToNames() const { return m_passIndexToName; } + const ShaderDescription* m_shaderDescription = nullptr; + +protected: + std::map m_passNameToIndex; // maps shader pass name to m_shaderPasses[x] + std::vector> m_passIndexToName; // names in index order, eg reverse of m_passNameToIndex. string referenced is m_passNameToIndex.key }; /// Container for a vector of ShaderPass (with name lookup) -/// Typically used to create Material (s). +/// Typically used to create MaterialBase (s). /// @ingroup Material template -class ShaderT : public Shader +class Shader final : public ShaderBase { - ShaderT(const ShaderT&) = delete; - ShaderT& operator=(const ShaderT&) = delete; + Shader(const Shader&) = delete; + Shader& operator=(const Shader&) = delete; + using ShaderPass = ShaderPass; public: - ShaderT( const ShaderDescription* pShaderDescription, std::vector> shaderPasses, const std::vector& passNames) noexcept; - ~ShaderT() override { assert(m_shaderPasses.empty()); } + Shader( const ShaderDescription* pShaderDescription, std::vector shaderPasses, const std::vector& passNames) noexcept; + ~Shader() override { assert(m_shaderPasses.empty()); } void Destroy(GraphicsApiBase&) override; - const ShaderPass* GetShaderPass(const std::string& passName) const; - const auto& GetShaderPasses() const { return m_shaderPasses; } - const auto& GetShaderPassIndicesToNames() const { return m_passIndexToName; } + const ShaderPass*const GetShaderPass(const std::string& passName) const; + const auto& GetShaderPasses() const { return m_shaderPasses; } protected: - std::vector> m_shaderPasses; // in order of calls to AddShaderPass, concievably we could have shaders who share passes (eg shadow) with other Shaders, not currently supported though! - std::map m_passNameToIndex; // maps shader pass name to m_shaderPasses[x] - std::vector> m_passIndexToName; // names in index order, eg reverse of m_passNameToIndex. string referenced is m_passNameToIndex.key + std::vector m_shaderPasses; // in order of calls to AddShaderPass, concievably we could have shaders who share passes (eg shadow) with other Shaders, not currently supported though! }; // @@ -174,9 +201,9 @@ class ShaderT : public Shader // template -ShaderPass::ShaderPass(const ShaderPassDescription& shaderPassDescription, ShaderModules shaders, std::vector descriptorSetLayouts, PipelineLayout pipelineLayout, PipelineVertexInputState pipelineVertexInputState, SpecializationConstantsLayout specializationConstantsLayout, uint32_t numOutputs) noexcept - : m_shaders(std::move(shaders)) - , m_shaderPassDescription(shaderPassDescription) +ShaderPass::ShaderPass(const ShaderPassDescription& shaderPassDescription, ShaderModules shaders, std::vector descriptorSetLayouts, PipelineLayout pipelineLayout, PipelineVertexInputState pipelineVertexInputState, SpecializationConstantsLayout specializationConstantsLayout, uint32_t numOutputs) noexcept + : ShaderPassBase(shaderPassDescription) + , m_shaders(std::move(shaders)) , m_descriptorSetLayouts(std::move(descriptorSetLayouts)) , m_pipelineLayout(std::move(pipelineLayout)) , m_pipelineVertexInputState(std::move(pipelineVertexInputState)) @@ -187,8 +214,8 @@ ShaderPass::ShaderPass(const ShaderPassDescription& shaderPassDescript template ShaderPass::ShaderPass(ShaderPass&& other) noexcept - : m_shaders(std::move(other.m_shaders)) - , m_shaderPassDescription(other.m_shaderPassDescription) + : ShaderPassBase(other.m_shaderPassDescription) + , m_shaders(std::move(other.m_shaders)) , m_pipelineVertexInputState(std::move(other.m_pipelineVertexInputState)) , m_specializationConstantsLayout(std::move(other.m_specializationConstantsLayout)) { @@ -206,8 +233,8 @@ void ShaderPass::Destroy(T_GFXAPI& gfxapi) } template -ShaderT::ShaderT(const ShaderDescription* pShaderDescription, std::vector> shaderPasses, const std::vector& passNames) noexcept - : Shader(pShaderDescription) +Shader::Shader(const ShaderDescription* pShaderDescription, std::vector shaderPasses, const std::vector& passNames) noexcept + : ShaderBase(pShaderDescription) , m_shaderPasses(std::move(shaderPasses)) { uint32_t idx = 0; @@ -221,7 +248,7 @@ ShaderT::ShaderT(const ShaderDescription* pShaderDescription, std::vec } template -void ShaderT::Destroy(GraphicsApiBase& gfxapi) +void Shader::Destroy(GraphicsApiBase& gfxapi) { for (auto& sp : m_shaderPasses) sp.Destroy(static_cast(gfxapi)); @@ -229,7 +256,7 @@ void ShaderT::Destroy(GraphicsApiBase& gfxapi) } template -const ShaderPass* ShaderT::GetShaderPass(const std::string& passName) const +const ShaderPass* const Shader::GetShaderPass(const std::string& passName) const { auto it = m_passNameToIndex.find(passName); if (it != m_passNameToIndex.end()) diff --git a/framework/code/material/shaderDescription.cpp b/framework/code/material/shaderDescription.cpp index 11b732e..d5caa39 100644 --- a/framework/code/material/shaderDescription.cpp +++ b/framework/code/material/shaderDescription.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,13 +10,13 @@ #include "nlohmann/json.hpp" #include "system/assetManager.hpp" #include "system/os_common.h" -#include +#include "texture/sampler.hpp" #include -#include +using namespace std::string_literals; using Json = nlohmann::json; -ShaderPassDescription::ShaderPassDescription(std::vector setDescriptions, std::vector outputs, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, ShaderPassDescription::FixedFunctionSettings fixedFunctionSettings, ShaderPassDescription::SampleShadingSettings sampleShadingSettings, ShaderPassDescription::WorkGroupSettings workGroupSettings, ShaderPassDescription::RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants ) +ShaderPassDescription::ShaderPassDescription(std::vector setDescriptions, std::vector outputs, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, ShaderPassDescription::FixedFunctionSettings fixedFunctionSettings, ShaderPassDescription::SampleShadingSettings sampleShadingSettings, ShaderPassDescription::WorkGroupSettings workGroupSettings, ShaderPassDescription::RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants, std::vector rootSamplers ) : m_sets(std::move(setDescriptions)) , m_outputs(std::move(outputs)) , m_computeName(std::move(computeName)) @@ -32,13 +32,12 @@ ShaderPassDescription::ShaderPassDescription(std::vector setDescriptions, std::vector outputs, std::string taskName, std::string meshName, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, ShaderPassDescription::FixedFunctionSettings fixedFunctionSettings, ShaderPassDescription::SampleShadingSettings sampleShadingSettings, ShaderPassDescription::WorkGroupSettings workGroupSettings, ShaderPassDescription::RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants ) +ShaderPassDescription::ShaderPassDescription(std::vector setDescriptions, std::vector outputs, std::string taskName, std::string meshName, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, ShaderPassDescription::FixedFunctionSettings fixedFunctionSettings, ShaderPassDescription::SampleShadingSettings sampleShadingSettings, ShaderPassDescription::WorkGroupSettings workGroupSettings, ShaderPassDescription::RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants, std::vector rootSamplers ) : m_sets(std::move(setDescriptions)) , m_outputs(std::move(outputs)) , m_taskName(std::move(taskName)) @@ -56,26 +55,40 @@ ShaderPassDescription::ShaderPassDescription(std::vector cElementTypeByName{ - {"Int32", VertexFormat::Element::ElementType::t::Int32}, - {"Float", VertexFormat::Element::ElementType::t::Float}, - {"Boolean", VertexFormat::Element::ElementType::t::Boolean}, - {"Vec2", VertexFormat::Element::ElementType::t::Vec2}, - {"Vec3", VertexFormat::Element::ElementType::t::Vec3}, - {"Vec4", VertexFormat::Element::ElementType::t::Vec4}, - {"Int16", VertexFormat::Element::ElementType::t::Int16}, - {"Float16", VertexFormat::Element::ElementType::t::Float16}, - {"F16Vec2", VertexFormat::Element::ElementType::t::F16Vec2}, - {"F16Vec3", VertexFormat::Element::ElementType::t::F16Vec3}, - {"F16Vec4", VertexFormat::Element::ElementType::t::F16Vec4} + {"Int32"s, VertexFormat::Element::ElementType::t::Int32}, + {"UInt32"s, VertexFormat::Element::ElementType::t::UInt32}, + {"Float"s, VertexFormat::Element::ElementType::t::Float}, + {"Boolean"s, VertexFormat::Element::ElementType::t::Boolean}, + {"Vec2"s, VertexFormat::Element::ElementType::t::Vec2}, + {"Vec3"s, VertexFormat::Element::ElementType::t::Vec3}, + {"Vec4"s, VertexFormat::Element::ElementType::t::Vec4}, + {"IVec2"s, VertexFormat::Element::ElementType::t::IVec2}, + {"IVec3"s, VertexFormat::Element::ElementType::t::IVec3}, + {"IVec4"s, VertexFormat::Element::ElementType::t::IVec4}, + {"UVec2"s, VertexFormat::Element::ElementType::t::UVec2}, + {"UVec3"s, VertexFormat::Element::ElementType::t::UVec3}, + {"UVec4"s, VertexFormat::Element::ElementType::t::UVec4}, + {"Int16"s, VertexFormat::Element::ElementType::t::Int16}, + {"UInt16"s, VertexFormat::Element::ElementType::t::UInt16}, + {"Float16"s, VertexFormat::Element::ElementType::t::Float16}, + {"F16Vec2"s, VertexFormat::Element::ElementType::t::F16Vec2}, + {"F16Vec3"s, VertexFormat::Element::ElementType::t::F16Vec3}, + {"F16Vec4"s, VertexFormat::Element::ElementType::t::F16Vec4}, + {"I16Vec2"s, VertexFormat::Element::ElementType::t::I16Vec2}, + {"I16Vec3"s, VertexFormat::Element::ElementType::t::I16Vec3}, + {"I16Vec4"s, VertexFormat::Element::ElementType::t::I16Vec4}, + {"U16Vec2"s, VertexFormat::Element::ElementType::t::U16Vec2}, + {"U16Vec3"s, VertexFormat::Element::ElementType::t::U16Vec3}, + {"U16Vec4"s, VertexFormat::Element::ElementType::t::U16Vec4}, }; const static std::map cBufferRateByName{ - {"Vertex", VertexFormat::eInputRate::Vertex}, - {"Instance", VertexFormat::eInputRate::Instance} + {"Vertex"s, VertexFormat::eInputRate::Vertex}, + {"Instance"s, VertexFormat::eInputRate::Instance} }; struct DescriptorTypeAndReadOnly { @@ -83,43 +96,44 @@ struct DescriptorTypeAndReadOnly { bool readOnly = false; }; const static std::map cBufferTypeByName { - {"Unused", {DescriptorSetDescription::DescriptorType::Unused, true}}, - {"ImageSampler", {DescriptorSetDescription::DescriptorType::ImageSampler, true}}, - {"ImageSampled", {DescriptorSetDescription::DescriptorType::ImageSampled, true}}, - {"Sampler", {DescriptorSetDescription::DescriptorType::Sampler, true}}, - {"UniformBuffer", {DescriptorSetDescription::DescriptorType::UniformBuffer, true}}, - {"StorageBuffer", {DescriptorSetDescription::DescriptorType::StorageBuffer, false}}, - {"ImageStorage", {DescriptorSetDescription::DescriptorType::ImageStorage, false}}, - {"InputAttachment", {DescriptorSetDescription::DescriptorType::InputAttachment, true}}, - {"AccelerationStructure", {DescriptorSetDescription::DescriptorType::AccelerationStructure, true}} + {"Unused"s, {DescriptorSetDescription::DescriptorType::Unused, true}}, + {"ImageSampler"s, {DescriptorSetDescription::DescriptorType::ImageSampler, true}}, + {"ImageSampled"s, {DescriptorSetDescription::DescriptorType::ImageSampled, true}}, + {"Sampler"s, {DescriptorSetDescription::DescriptorType::Sampler, true}}, + {"UniformBuffer"s, {DescriptorSetDescription::DescriptorType::UniformBuffer, true}}, + {"StorageBuffer"s, {DescriptorSetDescription::DescriptorType::StorageBuffer, false}}, + {"ImageStorage"s, {DescriptorSetDescription::DescriptorType::ImageStorage, false}}, + {"InputAttachment"s, {DescriptorSetDescription::DescriptorType::InputAttachment, true}}, + {"AccelerationStructure"s, {DescriptorSetDescription::DescriptorType::AccelerationStructure, true}}, + {"DescriptorTable"s, {DescriptorSetDescription::DescriptorType::DescriptorTable, true}} }; const static std::map cStageFlagBitsByName{ - {"Vertex", DescriptorSetDescription::StageFlag::t::Vertex}, - {"Fragment", DescriptorSetDescription::StageFlag::t::Fragment}, - {"Geometry", DescriptorSetDescription::StageFlag::t::Geometry}, - {"Compute", DescriptorSetDescription::StageFlag::t::Compute}, - {"RayGeneration", DescriptorSetDescription::StageFlag::t::RayGeneration}, - {"RayClosestHit", DescriptorSetDescription::StageFlag::t::RayClosestHit}, - {"RayAnyHit", DescriptorSetDescription::StageFlag::t::RayAnyHit}, - {"RayMiss", DescriptorSetDescription::StageFlag::t::RayMiss}, - {"Task", DescriptorSetDescription::StageFlag::t::Task}, - {"Mesh", DescriptorSetDescription::StageFlag::t::Mesh} + {"Vertex"s, DescriptorSetDescription::StageFlag::t::Vertex}, + {"Fragment"s, DescriptorSetDescription::StageFlag::t::Fragment}, + {"Geometry"s, DescriptorSetDescription::StageFlag::t::Geometry}, + {"Compute"s, DescriptorSetDescription::StageFlag::t::Compute}, + {"RayGeneration"s, DescriptorSetDescription::StageFlag::t::RayGeneration}, + {"RayClosestHit"s, DescriptorSetDescription::StageFlag::t::RayClosestHit}, + {"RayAnyHit"s, DescriptorSetDescription::StageFlag::t::RayAnyHit}, + {"RayMiss"s, DescriptorSetDescription::StageFlag::t::RayMiss}, + {"Task"s, DescriptorSetDescription::StageFlag::t::Task}, + {"Mesh"s, DescriptorSetDescription::StageFlag::t::Mesh} }; const static std::map cDepthCompareOpByName{ - {"LessEqual", ShaderPassDescription::DepthCompareOp::LessEqual}, - {"Equal", ShaderPassDescription::DepthCompareOp::Equal}, - {"Greater", ShaderPassDescription::DepthCompareOp::Greater}, + {"LessEqual"s, ShaderPassDescription::DepthCompareOp::LessEqual}, + {"Equal"s, ShaderPassDescription::DepthCompareOp::Equal}, + {"Greater"s, ShaderPassDescription::DepthCompareOp::Greater}, }; const static std::map cBlendFactorByName{ - {"Zero", ShaderPassDescription::BlendFactor::Zero}, - {"One", ShaderPassDescription::BlendFactor::One}, - {"SrcAlpha", ShaderPassDescription::BlendFactor::SrcAlpha}, - {"OneMinusSrcAlpha", ShaderPassDescription::BlendFactor::OneMinusSrcAlpha}, - {"DstAlpha", ShaderPassDescription::BlendFactor::DstAlpha}, - {"OneMinusDstAlpha", ShaderPassDescription::BlendFactor::OneMinusDstAlpha}, + {"Zero"s, ShaderPassDescription::BlendFactor::Zero}, + {"One"s, ShaderPassDescription::BlendFactor::One}, + {"SrcAlpha"s, ShaderPassDescription::BlendFactor::SrcAlpha}, + {"OneMinusSrcAlpha"s, ShaderPassDescription::BlendFactor::OneMinusSrcAlpha}, + {"DstAlpha"s, ShaderPassDescription::BlendFactor::DstAlpha}, + {"OneMinusDstAlpha"s, ShaderPassDescription::BlendFactor::OneMinusDstAlpha}, }; static void from_json(const Json& j, ShaderPassDescription::DepthCompareOp& op) { @@ -128,7 +142,7 @@ static void from_json(const Json& j, ShaderPassDescription::DepthCompareOp& op) op = foundIt->second; } else { - throw std::invalid_argument("Unknown species"); + throw std::invalid_argument("Unknown DepthCompareOp"s); } } @@ -138,85 +152,86 @@ static void from_json(const Json& j, ShaderPassDescription::BlendFactor& op) { op = foundIt->second; } else { - throw std::invalid_argument("Unknown species"); + throw std::invalid_argument("Unknown BlendFactor"s); } } static void from_json(const Json& j, ShaderPassDescription::Output& output) { - auto it = j.find("BlendEnable"); + auto it = j.find("BlendEnable"s); if (it != j.end()) it->get_to(output.blendEnable); - it = j.find("SrcColorBlendFactor"); + it = j.find("SrcColorBlendFactor"s); if (it != j.end()) it->get_to(output.srcColorBlendFactor); - it = j.find("DstColorBlendFactor"); + it = j.find("DstColorBlendFactor"s); if (it != j.end()) it->get_to(output.dstColorBlendFactor); - it = j.find("SrcAlphaBlendFactor"); + it = j.find("SrcAlphaBlendFactor"s); if (it != j.end()) it->get_to(output.srcAlphaBlendFactor); - it = j.find("DstAlphaBlendFactor"); + it = j.find("DstAlphaBlendFactor"s); if (it != j.end()) it->get_to(output.dstAlphaBlendFactor); - it = j.find("ColorWriteMask"); + it = j.find("ColorWriteMask"s); if (it != j.end()) it->get_to(output.colorWriteMask); } static void from_json(const Json& j, ShaderPassDescription::FixedFunctionSettings& ffs) { - auto it = j.find("DepthTestEnable"); + auto it = j.find("DepthTestEnable"s); if (it != j.end()) it->get_to(ffs.depthTestEnable); - it = j.find("DepthWriteEnable"); + it = j.find("DepthWriteEnable"s); if (it != j.end()) it->get_to(ffs.depthWriteEnable); - it = j.find("DepthCompareOp"); + it = j.find("DepthCompareOp"s); if (it != j.end()) it->get_to(ffs.depthCompareOp); - it = j.find("DepthClampEnable"); + it = j.find("DepthClampEnable"s); if (it != j.end()) it->get_to(ffs.depthClampEnable); - it = j.find("DepthBiasEnable"); + it = j.find("DepthBiasEnable"s); if (it != j.end()) it->get_to(ffs.depthBiasEnable); - it = j.find("DepthBiasConstant"); + it = j.find("DepthBiasConstant"s); if (it != j.end()) it->get_to(ffs.depthBiasConstant); - it = j.find("DepthBiasClamp"); + it = j.find("DepthBiasClamp"s); if (it != j.end()) it->get_to(ffs.depthBiasClamp); - it = j.find("DepthBiasSlope"); + it = j.find("DepthBiasSlope"s); if (it != j.end()) it->get_to(ffs.depthBiasSlope); - it = j.find("CullBackFace"); + it = j.find("CullBackFace"s); if (it != j.end()) it->get_to(ffs.cullBackFace); - it = j.find("CullFrontFace"); + it = j.find("CullFrontFace"s); if (it != j.end()) it->get_to(ffs.cullFrontFace); } static void from_json(const Json& j, ShaderPassDescription::SampleShadingSettings& sss) { - auto it = j.find("Enable"); + auto it = j.find("Enable"s); if (it != j.end()) it->get_to(sss.sampleShadingEnable); - it = j.find("ForceCenterSample"); + it = j.find("ForceCenterSample"s); if (it != j.end()) it->get_to(sss.forceCenterSample); - it = j.find("Mask"); + it = j.find("Mask"s); if (it != j.end()) it->get_to(sss.sampleShadingMask); } static void from_json(const Json& j, ShaderPassDescription::WorkGroupSettings& ws) { - auto it = j.find("LocalSize"); + auto it = j.find("LocalSize"s); if (it != j.end()) it->get_to(ws.localSize); + it = j.find("PerTileDispatch"s); + if (it != j.end()) it->get_to(ws.perTileDispatch ); } static void from_json(const Json& j, ShaderPassDescription::RayTracingSettings& rts) { - auto it = j.find("MaxRecursionDepth"); + auto it = j.find("MaxRecursionDepth"s); if (it != j.end()) it->get_to(rts.maxRayRecursionDepth); } std::optional ShaderDescriptionLoader::Load(AssetManager& assetManager, const std::string& filename) { Json json; -#if true { std::vector data; if (!assetManager.LoadFileIntoMemory(filename, data)) @@ -225,61 +240,49 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass } json = Json::parse(data); } -#else - // Load using file streams - { - std::ifstream file(filename); - if (!file.is_open()) - { - return std::nullopt; - //throw std::runtime_error("failed to open file!"); - } - file >> json; - } -#endif std::vector vertexFormats; std::map vertexFormatLookup; // lookup in to the vertexFormats vector (by vertex format name) - if (json.contains("Vertex")) + if (json.contains("Vertex"s)) { // Array of 'Vertex" objects - for (const auto& el : json["Vertex"]) + for (const auto& el : json["Vertex"s]) { std::vector elements; std::vector elementIds; VertexFormat::eInputRate rate = VertexFormat::eInputRate::Vertex; - uint32_t span = el["Span"]; + uint32_t span = el["Span"s]; uint32_t offset = 0; - for (auto& ar : el["Elements"]) + for (auto& ar : el["Elements"s]) { - const std::string& elementType = ar["Type"]; + const std::string& elementType = ar["Type"s]; const auto typeIt = cElementTypeByName.find(elementType); assert(typeIt != cElementTypeByName.end()); - const uint32_t elementOffset = ar.contains("Offset") ? (uint32_t)ar["Offset"] : offset; + const uint32_t elementOffset = ar.contains("Offset"s) ? (uint32_t)ar["Offset"s] : offset; elements.emplace_back(VertexFormat::Element{ elementOffset, typeIt->second }); - if (ar.contains("Name")) + if (ar.contains("Name"s)) { - elementIds.emplace_back(ar["Name"]); + elementIds.emplace_back(ar["Name"s]); } offset = elementOffset + typeIt->second.size(); if (offset > span) { - throw std::runtime_error("Element outside of span range"); + throw std::runtime_error(filename + " : Element outside of span range"s); } } if (elementIds.size() > 0 && elementIds.size() != elements.size()) { - throw std::runtime_error("all vertex elements must all be named or none named!"); + throw std::runtime_error(filename + " : all vertex elements must all be named or none named!"s); } - if (el.contains("Name")) + if (el.contains("Name"s)) { - vertexFormatLookup.try_emplace(el["Name"], (uint32_t)vertexFormats.size()); // put in the lookup before vertexFormats.emplace_back so correctly indexed (from 0) + vertexFormatLookup.try_emplace(el["Name"s], (uint32_t)vertexFormats.size()); // put in the lookup before vertexFormats.emplace_back so correctly indexed (from 0) } - if (el.contains("Rate")) + if (el.contains("Rate"s)) { - const auto rateIt = cBufferRateByName.find(el["Rate"]); + const auto rateIt = cBufferRateByName.find(el["Rate"s]); assert(rateIt != cBufferRateByName.end()); rate = rateIt->second; } @@ -288,7 +291,13 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass } std::vector passNames; std::vector descriptions; - for(const auto& ar: json["Passes"] ) + auto jtileShading = json["TileShading"s]; + bool tileShading = false; + if (!jtileShading.is_null()) + { + jtileShading.get_to( tileShading ); + } + for(const auto& ar: json["Passes"s] ) { std::string taskShader; std::string meshShader; @@ -309,95 +318,120 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass ShaderPassDescription::WorkGroupSettings workGroupSettings; ShaderPassDescription::RayTracingSettings rayTracingSettings; std::vector specializationConstants; + std::vector rootSamplers; for (const auto& el : ar.items()) { - if (el.key().compare( "Name" ) == 0) + if (el.key().compare("Name"s ) == 0) { passname = el.value(); } - else if (el.key().compare( "Shaders" ) == 0) + else if (el.key().compare("Shaders"s ) == 0) { // Either Compute or Vertex shader has to be defined, but Fragment is optional. // Or none of the above and Ray Generation has to be defined, but any hit, closest hit and miss are optional - taskShader = el.value().contains( "Task" ) ? (std::string) el.value()["Task"] : std::string(); - meshShader = el.value().contains( "Mesh" ) ? (std::string) el.value()["Mesh"] : std::string(); - computeShader = el.value().contains( "Compute" ) ? (std::string) el.value()["Compute"] : std::string(); - vertexShader = el.value().contains( "Vertex" ) ? (std::string) el.value()["Vertex"] : std::string(); - fragmentShader = el.value().contains( "Fragment" ) ? (std::string) el.value()["Fragment"] : std::string(); - rayGenerationShader = el.value().contains( "RayGeneration" ) ? (std::string) el.value()["RayGeneration"] : std::string(); - rayClosestHitShader = el.value().contains( "RayClosestHit" ) ? (std::string) el.value()["RayClosestHit"] : std::string(); - rayAnyHitShader = el.value().contains( "RayAnyHit" ) ? (std::string) el.value()["RayAnyHit"] : std::string(); - rayMissShader = el.value().contains( "RayMiss" ) ? (std::string) el.value()["RayMiss"] : std::string(); + taskShader = el.value().contains( "Task"s) ? (std::string) el.value()["Task"s] : std::string(); + meshShader = el.value().contains( "Mesh"s) ? (std::string) el.value()["Mesh"s] : std::string(); + computeShader = el.value().contains( "Compute"s) ? (std::string) el.value()["Compute"s] : std::string(); + vertexShader = el.value().contains( "Vertex"s) ? (std::string) el.value()["Vertex"s] : std::string(); + fragmentShader = el.value().contains( "Fragment"s) ? (std::string) el.value()["Fragment"s] : std::string(); + rayGenerationShader = el.value().contains( "RayGeneration"s) ? (std::string) el.value()["RayGeneration"s] : std::string(); + rayClosestHitShader = el.value().contains( "RayClosestHit"s) ? (std::string) el.value()["RayClosestHit"s] : std::string(); + rayAnyHitShader = el.value().contains( "RayAnyHit"s) ? (std::string) el.value()["RayAnyHit"s] : std::string(); + rayMissShader = el.value().contains( "RayMiss"s) ? (std::string) el.value()["RayMiss"s] : std::string(); if (meshShader.empty() && computeShader.empty() && fragmentShader.empty() && vertexShader.empty() && rayGenerationShader.empty()) { - throw std::runtime_error( "must have a Vertex, Compute, Mesh or RayGeneration shader name!" ); + throw std::runtime_error(filename + " : must have a Vertex, Compute, Mesh or RayGeneration shader name!"s); } if (!taskShader.empty() && meshShader.empty()) { - throw std::runtime_error( "must have a Mesh shader when a Task is provided !" ); + throw std::runtime_error(filename + " : must have a Mesh shader when a Task is provided !"s); + } + if (!fragmentShader.empty() && (meshShader.empty() && vertexShader.empty())) + { + throw std::runtime_error(filename + " : must have a Vertex or Mesh shader when a Fragment is provided !"s); + } + const bool rayGen = !rayGenerationShader.empty(); + const bool rayProcess = !(rayClosestHitShader.empty() && rayAnyHitShader.empty() && rayMissShader.empty()); + if (rayGen && !rayProcess) + { + throw std::runtime_error(filename + " : must have a Ray hit, miss or closest hit shader when a RayGeneration is provided!"s); + } + else if (!rayGen && rayProcess) + { + throw std::runtime_error(filename + " : must have a RayGeneration shader when a Ray hit, miss or closest hit shader is provided!"s); } } - else if (el.key().compare( "DescriptorSets" ) == 0) + else if (el.key().compare("DescriptorSets"s) == 0) { - for (const auto& ar : el.value()) + for (uint32_t setIndex = 0; const auto& ar : el.value()) { std::vector descriptors; - if (ar.contains( "Buffers" )) + if (ar.contains( "Buffers"s)) { - auto& buffel = ar["Buffers"]; + auto& buffel = ar["Buffers"s]; for (const auto& ar : buffel) { - const std::string& bufferType = ar["Type"]; - uint32_t count = ar.contains( "Count" ) ? (uint32_t) ar["Count"] : 1; - bool readOnly = ar.contains( "ReadOnly" ) ? (bool) ar["ReadOnly"] : false; // may be overridden if the 'Type' is intrinsically read-only + const std::string& bufferType = ar["Type"s]; + uint32_t count = ar.contains( "Count"s) ? (uint32_t) ar["Count"s] : 1; + bool readOnly = ar.contains( "ReadOnly"s) ? (bool) ar["ReadOnly"s] : false; // may be overridden if the 'Type' is intrinsically read-only DescriptorSetDescription::StageFlag stageBindingFlags = { DescriptorSetDescription::StageFlag::t::None }; - for (const auto& ar2 : ar["Stages"]) + for (const auto& ar2 : ar["Stages"s]) { stageBindingFlags = stageBindingFlags | cStageFlagBitsByName.find( ar2 )->second; } std::vector names; - if (ar.contains( "Names" )) + if (ar.contains( "Names"s)) { - for (auto& ar2 : ar["Names"]) + for (auto& ar2 : ar["Names"s]) { names.push_back( ar2 ); } } + int registerIndex = -1; // default, ascending register indices + if (ar.contains( "Register"s)) + { + registerIndex = (int) ar["Register"s]; + } assert( names.size() <= 1 ); ///TODO: array of names does not currently work (especially since dynmamic 'Count' was added) //count = std::max(count, (uint32_t)names.size()); const auto& bufferTypeData = cBufferTypeByName.find( bufferType )->second; - descriptors.emplace_back( DescriptorSetDescription::DescriptorTypeAndCount { bufferTypeData.type, stageBindingFlags, names, (int) count, readOnly || bufferTypeData.readOnly } ); + descriptors.emplace_back( DescriptorSetDescription::DescriptorTypeAndCount { bufferTypeData.type, stageBindingFlags, names, (int) count, readOnly || bufferTypeData.readOnly, registerIndex } ); } } - sets.push_back( { std::move( descriptors ) } ); + std::string name; + if (ar.contains("Name"s)) + { + name = ar["Name"s]; + } + sets.push_back( { name, setIndex++, std::move( descriptors ) } ); } } - else if (el.key().compare( "Outputs" ) == 0) + else if (el.key().compare("Outputs"s) == 0) { for (const auto& ar2 : el.value()) { outputs.push_back( ar2 ); } } - else if (el.key().compare( "FixedFunction" ) == 0) + else if (el.key().compare("FixedFunction"s) == 0) { el.value().get_to( fixedFunctionSettings );// (); } - else if (el.key().compare( "SampleShading" ) == 0) + else if (el.key().compare("SampleShading"s) == 0) { el.value().get_to( sampleShadingSettings );// (); } - else if (el.key().compare( "WorkGroup" ) == 0) + else if (el.key().compare("WorkGroup"s) == 0) { el.value().get_to( workGroupSettings );// (); } - else if (el.key().compare( "RayTracing" ) == 0) + else if (el.key().compare("RayTracing"s) == 0) { el.value().get_to( rayTracingSettings );// (); } - else if (el.key().compare( "VertexBindings" ) == 0) + else if (el.key().compare("VertexBindings"s) == 0) { // Array of VertexBinding names for (const auto& vertexFormatName : el.value()) @@ -409,16 +443,16 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass } else { - throw std::runtime_error( "VertexBinding does not match a Name in the Vertex array" ); + throw std::runtime_error(filename + " : VertexBinding does not match a Name in the Vertex array"s); } } } - else if (el.key().compare( "SpecializationConstants" ) == 0) + else if (el.key().compare("SpecializationConstants"s) == 0) { for (const auto& ar : el.value()) { - const std::string& constantName = ar["Name"]; - const std::string& constantType = ar["Type"]; + const std::string& constantName = ar["Name"s]; + const std::string& constantType = ar["Type"s]; const auto typeIt = cElementTypeByName.find( constantType ); assert( typeIt != cElementTypeByName.end() ); assert( typeIt->second == VertexFormat::Element::ElementType::t::Int32 || typeIt->second == VertexFormat::Element::ElementType::t::Float || typeIt->second == VertexFormat::Element::ElementType::t::Boolean ); @@ -426,6 +460,14 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass specializationConstants.push_back( SpecializationConstantDescription { constantName, (uint32_t) specializationConstants.size(), typeIt->second } ); } } + else if (el.key().compare("RootSamplers"s) == 0) + { + for (const auto& ar : el.value()) + { + CreateSamplerObjectInfo& samplerInfo = rootSamplers.emplace_back( CreateSamplerObjectInfo{} ); + ar.get_to( samplerInfo ); + } + } } descriptions.emplace_back( std::move(sets), @@ -442,10 +484,30 @@ std::optional ShaderDescriptionLoader::Load(AssetManager& ass std::move(fixedFunctionSettings), std::move(sampleShadingSettings), std::move(workGroupSettings), - std::move(rayTracingSettings), + std::move(rayTracingSettings), std::move(vertexFormatBindings), - std::move(specializationConstants) ); + std::move(specializationConstants), + std::move(rootSamplers) + ); passNames.push_back(passname); } - return std::make_optional(ShaderDescription{ std::move(vertexFormats), std::move(descriptions), passNames }); + + // Run sanity checks on the shader description to catch common errors. + bool sane = std::all_of( descriptions.begin(), descriptions.end(), [&filename]( const ShaderPassDescription& desc ) -> bool { + if (!desc.m_vertexName.empty()) + { + if (desc.m_outputs.empty()) + { + //throw std::runtime_error(filename + " : must have outputs (in json) when vertex shader (rasterization) provided !"s); + //return false; // not hit + } + } + return true; + } ); + if (!sane) + { + return std::nullopt; + } + + return std::make_optional(ShaderDescription{ std::move(vertexFormats), std::move(descriptions), passNames, tileShading }); } diff --git a/framework/code/material/shaderDescription.hpp b/framework/code/material/shaderDescription.hpp index 411d37b..d04c378 100644 --- a/framework/code/material/shaderDescription.hpp +++ b/framework/code/material/shaderDescription.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,6 +10,7 @@ #include "vertexFormat.hpp" #include "descriptorSetDescription.hpp" #include "specializationConstantDescription.hpp" +#include "texture/sampler.hpp" #include #include #include @@ -18,6 +19,7 @@ // Forward declarations class AssetManager; +class CreateSamplerObjectInfo; /// Describes a 'ShaderPass'. /// Is platform agnostic. @@ -82,44 +84,42 @@ class ShaderPassDescription BlendFactor srcAlphaBlendFactor = BlendFactor::One; BlendFactor dstAlphaBlendFactor = BlendFactor::Zero; uint32_t colorWriteMask = 0x7fffffff; - //VkBlendOp colorBlendOp; - //VkBlendOp alphaBlendOp; }; struct WorkGroupSettings { std::array localSize = {}; + bool perTileDispatch = false; }; struct RayTracingSettings { uint32_t maxRayRecursionDepth = 1; }; - ShaderPassDescription( std::vector sets, std::vector outputs, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, FixedFunctionSettings fixedFunctionSettings, SampleShadingSettings sampleShadingSettings, WorkGroupSettings workGroupSettings, RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants); - ShaderPassDescription( std::vector sets, std::vector outputs, std::string taskName, std::string meshName, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, FixedFunctionSettings fixedFunctionSettings, SampleShadingSettings sampleShadingSettings, WorkGroupSettings workGroupSettings, RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants); - + ShaderPassDescription( std::vector sets, std::vector outputs, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, FixedFunctionSettings fixedFunctionSettings, SampleShadingSettings sampleShadingSettings, WorkGroupSettings workGroupSettings, RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants, std::vector rootSamplers ); + ShaderPassDescription( std::vector sets, std::vector outputs, std::string taskName, std::string meshName, std::string computeName, std::string vertexName, std::string fragmentName, std::string rayGenerationName, std::string rayClosestHitName, std::string rayAnyHitName, std::string rayMissName, FixedFunctionSettings fixedFunctionSettings, SampleShadingSettings sampleShadingSettings, WorkGroupSettings workGroupSettings, RayTracingSettings rayTracingSettings, std::vector vertexFormatBindings, std::vector specializationConstants, std::vector rootSamplers ); ShaderPassDescription(ShaderPassDescription&&) = default; - std::vector m_sets; - std::vector m_outputs; - std::string m_taskName; ///< Name of the task shader (optional, not valid if m_vertexName or m_fragmentName are set) - std::string m_meshName; ///< Name of the mesh shader (optional, not valid if m_vertexName or m_fragmentName are set), mandatory if task shader is set - std::string m_computeName; ///< Name of the compute shader (optional, not valid if m_vertexName or m_fragmentName are set) - std::string m_vertexName; ///< Name of the vertex shader used by this shader pass (optional, not valid if m_computeName set) - std::string m_fragmentName; ///< Name of the fragment shader used by this shader pass (optional, only valid if m_vertexName set) - std::string m_rayGenerationName; - std::string m_rayClosestHitName; - std::string m_rayAnyHitName; - std::string m_rayMissName; - FixedFunctionSettings m_fixedFunctionSettings; - SampleShadingSettings m_sampleShadingSettings; - WorkGroupSettings m_workGroupSettings; - RayTracingSettings m_rayTracingSettings; - std::vector m_vertexFormatBindings; //< Indices of the vertex buffers bound by this shader pass (index in to ShaderDescription::m_vertexFormats) - std::vector m_constants; - //std::vector m_vertexInstanceFormatBindings; ///TODO: support more than one buffer of instance rate data + std::vector m_sets; + std::vector m_outputs; + std::string m_taskName; ///< Name of the task shader (optional, not valid if m_vertexName or m_fragmentName are set) + std::string m_meshName; ///< Name of the mesh shader (optional, not valid if m_vertexName or m_fragmentName are set), mandatory if task shader is set + std::string m_computeName; ///< Name of the compute shader (optional, not valid if m_vertexName or m_fragmentName are set) + std::string m_vertexName; ///< Name of the vertex shader used by this shader pass (optional, not valid if m_computeName set) + std::string m_fragmentName; ///< Name of the fragment shader used by this shader pass (optional, only valid if m_vertexName set) + std::string m_rayGenerationName; + std::string m_rayClosestHitName; + std::string m_rayAnyHitName; + std::string m_rayMissName; + FixedFunctionSettings m_fixedFunctionSettings; + SampleShadingSettings m_sampleShadingSettings; + WorkGroupSettings m_workGroupSettings; + RayTracingSettings m_rayTracingSettings; + std::vector m_vertexFormatBindings; //< Indices of the vertex buffers bound by this shader pass (index in to ShaderDescription::m_vertexFormats) + std::vector m_constants; + std::vector m_rootSamplers; }; -/// Describes a 'Shader'. +/// Describes a 'ShaderBase'. /// May contain multiple shader passes (vector of ShaderPassDescription and a pass name lookup). /// Also contain description (VertexFormat) of the all the vertex buffers that can be bound to this set of shaders. /// Is platform agnostic. @@ -134,7 +134,7 @@ class ShaderDescription , m_descriptionPerPass(std::move(other.m_descriptionPerPass)) , m_passNameToIndex(std::move(other.m_passNameToIndex)) {} - ShaderDescription(std::vector vertexFormats, std::vector passes, const std::vector& passNames) + ShaderDescription(std::vector vertexFormats, std::vector passes, const std::vector& passNames, bool tileShading) : m_vertexFormats(std::move(vertexFormats)) , m_descriptionPerPass(std::move(passes)) { diff --git a/framework/code/material/shaderManager.cpp b/framework/code/material/shaderManager.cpp index 6f5fc58..74f7f81 100644 --- a/framework/code/material/shaderManager.cpp +++ b/framework/code/material/shaderManager.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,28 +9,21 @@ #include "shaderManager.hpp" #include "shaderDescription.hpp" #include "shaderModule.hpp" -#include "descriptorSetLayout.hpp" #include "shader.hpp" -#include "vulkan/specializationConstantsLayout.hpp" -#include "vulkan/shader.hpp" -#include "vulkan/shaderModule.hpp" -#include "vulkan/pipelineLayout.hpp" -#include "vulkan/vulkan.hpp" #include "system/os_common.h" -#include -ShaderManager::ShaderManager(GraphicsApiBase& graphicsApi) +ShaderManagerBase::ShaderManagerBase(GraphicsApiBase& graphicsApi) : m_GraphicsApi(graphicsApi) {} -ShaderManager::~ShaderManager() +ShaderManagerBase::~ShaderManagerBase() { assert(m_shadersByName.empty()); // Expected that the derived (playform specific) class destroys the shaders assert(m_shaderModulesByName.empty()); } -void ShaderManager::RegisterRenderPassNames(const std::span passNames) +void ShaderManagerBase::RegisterRenderPassNames(const std::span passNames) { assert(m_shaderPassIndexByName.size() == 0); // only expected to be called once uint32_t passIndex = 0; @@ -43,9 +36,13 @@ void ShaderManager::RegisterRenderPassNames(const std::span pa } } -bool ShaderManager::AddShader(AssetManager& assetManager, const std::string& shaderName, const std::string& filename) +bool ShaderManagerBase::AddShader( + AssetManager& assetManager, + const std::string& shaderName, + const std::string& filename, + const std::filesystem::path& source_dir) { - auto shaderDescription = ShaderDescriptionLoader::Load(assetManager, filename); + auto shaderDescription = ShaderDescriptionLoader::Load(assetManager, source_dir.empty() ? filename : (source_dir / filename).string()); if (!shaderDescription) { return false; @@ -53,7 +50,16 @@ bool ShaderManager::AddShader(AssetManager& assetManager, const std::string& sha return AddShader(assetManager, shaderName, std::move(*shaderDescription)); } -//const ShaderDescription* ShaderManager::GetShaderDescription(const std::string& shaderName) const +bool ShaderManagerBase::AddShader( + AssetManager& assetManager, + const std::string& shaderName, + const std::filesystem::path& filename, + const std::filesystem::path& source_dir) +{ + return AddShader(assetManager, shaderName, filename.string(), source_dir); +} + +//const ShaderDescription* ShaderManagerBase::GetShaderDescription(const std::string& shaderName) const //{ // auto it = m_shaderDescriptionsByName.find(shaderName); // if (it != m_shaderDescriptionsByName.end()) @@ -61,7 +67,7 @@ bool ShaderManager::AddShader(AssetManager& assetManager, const std::string& sha // return nullptr; //} -const Shader* ShaderManager::GetShader(const std::string& shaderName) const +const ShaderBase* ShaderManagerBase::GetShader(const std::string& shaderName) const { auto it = m_shadersByName.find(shaderName); if (it != m_shadersByName.end()) diff --git a/framework/code/material/shaderManager.hpp b/framework/code/material/shaderManager.hpp index acc2531..14bb7a6 100644 --- a/framework/code/material/shaderManager.hpp +++ b/framework/code/material/shaderManager.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,29 +11,28 @@ #include #include #include +#include // Forward declarations class AssetManager; -class ShaderDescription; -class Shader; -class ShaderModule; -//template class ShaderT; -//template class ShaderModuleT; -template class ShaderManagerT; class GraphicsApiBase; +class ShaderDescription; +class ShaderBase; +class ShaderModuleBase; +template class ShaderManager; -/// Manages Shader loading (and lookup). +/// Manages ShaderBase loading (and lookup). /// This is the entry point for applications to register (AddShader) the shaders they want to use and access the loaded data. /// @ingroup Material -class ShaderManager +class ShaderManagerBase { - ShaderManager() = delete; - ShaderManager& operator=(const ShaderManager&) = delete; - ShaderManager(const ShaderManager&) = delete; + ShaderManagerBase() = delete; + ShaderManagerBase& operator=(const ShaderManagerBase&) = delete; + ShaderManagerBase(const ShaderManagerBase&) = delete; public: - template using tApiDerived = ShaderManagerT; // make apiCast work! - ShaderManager(GraphicsApiBase& graphicsApi); - virtual ~ShaderManager(); + template using tApiDerived = ShaderManager; // make apiCast work! + ShaderManagerBase(GraphicsApiBase& graphicsApi); + virtual ~ShaderManagerBase(); /// User registration of render passes. Passes must be registered before shaders referencing these passes can be loaded. /// Order of pass names is important (passes can be requested by index). @@ -43,11 +42,17 @@ class ShaderManager /// @param shaderName name to be given to this shader for lookup within the application code (user determined name). /// @param filename name of the (json formatted) shader desciption file to load and parse. Filename should include extension. /// @return true if everything loaded correctly. - bool AddShader(AssetManager& assetManager, const std::string& shaderName, const std::string& filename); + bool AddShader(AssetManager& assetManager, const std::string& shaderName, const std::string& filename, const std::filesystem::path& source_dir = std::filesystem::path()); + + /// @brief Load a given shader definition (json file) and load all referenced shaders modules. Makes shader ready for material to be created from it. + /// @param shaderName name to be given to this shader for lookup within the application code (user determined name). + /// @param filename path of the (json formatted) shader desciption file to load and parse. Filename should include extension. + /// @return true if everything loaded correctly. + bool AddShader(AssetManager& assetManager, const std::string& shaderName, const std::filesystem::path& filename, const std::filesystem::path& source_dir = std::filesystem::path()); - // Get Shader for the given shader name + // Get ShaderBase for the given shader name /// @returns nullptr if shaderName unknown - virtual const Shader* GetShader(const std::string& shaderName) const; + const ShaderBase* GetShader(const std::string& shaderName) const; protected: virtual bool AddShader(AssetManager& assetManager, const std::string& shaderName, ShaderDescription shaderDescription) = 0; @@ -55,7 +60,7 @@ class ShaderManager protected: GraphicsApiBase& m_GraphicsApi; std::map m_shaderDescriptionsByName; // Contains descriptions (module names, inputs etc) for all the passes of a given 'shader' - std::map> m_shaderModulesByName; // Contains the ShaderModule (one per hardware shader program) - std::map> m_shadersByName; // Contains all the passes of a given Shader (this contains what is described by m_shaderDescriptionsByName although is not the material) + std::map> m_shaderModulesByName; // Contains the ShaderModule (one per hardware shader program) + std::map> m_shadersByName; // Contains all the passes of a given ShaderBase (this contains what is described by m_shaderDescriptionsByName although is not the material) std::map < std::string, uint32_t> m_shaderPassIndexByName; // Contains the registered render pass names (and their indices) }; diff --git a/framework/code/material/shaderManagerT.hpp b/framework/code/material/shaderManagerT.hpp index 6d101de..2c4ac55 100644 --- a/framework/code/material/shaderManagerT.hpp +++ b/framework/code/material/shaderManagerT.hpp @@ -1,12 +1,13 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once +#include #include #include "shaderManager.hpp" #include "shader.hpp" @@ -16,33 +17,41 @@ /// Tempated (by graphics api) ShaderManager. /// @ingroup Material template -class ShaderManagerT : public ShaderManager +class ShaderManager : public ShaderManagerBase { - ShaderManagerT() = delete; - ShaderManagerT& operator=(const ShaderManager&) = delete; - ShaderManagerT(const ShaderManagerT&) = delete; + ShaderManager() = delete; + ShaderManager& operator=(const ShaderManagerBase&) = delete; + ShaderManager(const ShaderManager&) = delete; public: - ShaderManagerT(T_GFXAPI& gpxApi); - ~ShaderManagerT(); + ShaderManager(T_GFXAPI& gpxApi); + ~ShaderManager(); + // Get ShaderBase for the given shader name + /// @returns nullptr if shaderName unknown + const Shader* GetShader(const std::string& shaderName) const; + + using ShaderManagerBase::AddShader; // bring into name resolution scope protected: - /// @brief Load all referenced shaders modules from the given description. Makes shader ready for material to be created from it. + /// @brief Load all referenced shaders modules from the given description for all passes. Makes shader ready for material to be created from it. /// @param shaderName name to be given to this shader for lookup within the application code (user determined name). /// @param shaderDescription description of this shader /// @return true if everything loaded correctly. bool AddShader(AssetManager& assetManager, const std::string& shaderName, ShaderDescription shaderDescription) override; -protected: + /// @brief Load all referenced shaders modules from the given description (called by AddShader) + std::optional > LoadShaderModules(AssetManager& assetManager, const ShaderPassDescription& shaderPassDescription); + + T_GFXAPI& GetGraphicsApi() const { return static_cast(m_GraphicsApi); } }; template -ShaderManagerT::ShaderManagerT(T_GFXAPI& gfxApi) : ShaderManager(gfxApi) +ShaderManager::ShaderManager(T_GFXAPI& gfxApi) : ShaderManagerBase(gfxApi) {} template -ShaderManagerT::~ShaderManagerT() +ShaderManager::~ShaderManager() { // Destroy the Shaders (which destroys the owned ShaderPasses etc) auto& rVulkan = static_cast(m_GraphicsApi); @@ -50,7 +59,7 @@ ShaderManagerT::~ShaderManagerT() s.second->Destroy(rVulkan); m_shadersByName.clear(); - // ShaderModules (do after Shaders, as the Shader(Pass) points to the ShaderModule) + // ShaderModules (do after Shaders, as the ShaderBase(Pass) points to the ShaderModule) // If you get an error here then maybe you haven't included the 'ShaderModule.hpp' for your graphics API ! for (auto& sm : m_shaderModulesByName) apiCast(sm.second.get())->Destroy(rVulkan); @@ -58,7 +67,7 @@ ShaderManagerT::~ShaderManagerT() } template -bool ShaderManagerT::AddShader(AssetManager& assetManager, const std::string& shaderName, ShaderDescription shaderDescription) +bool ShaderManager::AddShader(AssetManager& assetManager, const std::string& shaderName, ShaderDescription shaderDescription) { bool success = true; // Create the ShaderDescription @@ -86,7 +95,7 @@ bool ShaderManagerT::AddShader(AssetManager& assetManager, const std:: orderedPassNames[passNameIndex.second] = passNameIndex; } - T_GFXAPI& rGfxApi = static_cast(m_GraphicsApi); + T_GFXAPI& rGfxApi = GetGraphicsApi(); for (const auto& passIt : orderedPassNames) { @@ -98,319 +107,324 @@ bool ShaderManagerT::AddShader(AssetManager& assetManager, const std:: auto passIdxIt = m_shaderPassIndexByName.find(passName); if (passIdxIt == m_shaderPassIndexByName.end()) { - //LOGI("ShaderManager::AddShader - pass name \"%s\" not registered with RegisterRenderPassNames", passName.c_str()); + //LOGI("ShaderManagerBase::AddShader - pass name \"%s\" not registered with RegisterRenderPassNames", passName.c_str()); // This may not be an error (if we are manually grabbing or iterating passes from within a shader/material). } - std::optional> shaderModules; + auto shaderModules = LoadShaderModules(assetManager, shaderPassDescription); + if (!shaderModules) + { + return false; + } - if (shaderPassDescription.m_vertexName.empty() && !shaderPassDescription.m_taskName.empty() && !shaderPassDescription.m_meshName.empty() && !shaderPassDescription.m_fragmentName.empty()) + // + // Create the descriptor set layout (for the ShaderPass) + // + std::vector> descriptorSetLayouts; + + descriptorSetLayouts.reserve(shaderPassDescription.m_sets.size()); + for (const auto& set : shaderPassDescription.m_sets) { - // Create the task ShaderModule - auto taskShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_taskName); - if (taskShader.second == true) + if (!descriptorSetLayouts.emplace_back().Init(rGfxApi, set)) { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Task)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_taskName); - success = false; - break; - } - taskShader.first->second = std::move(pShaderModule); + // Error + return false; } - auto* pTaskShaderModule = apiCast(taskShader.first->second.get()); + } + + // + // Create the pipeline layout (for the ShaderPass) + // + PipelineLayout pipelineLayout; + if (!pipelineLayout.Init(rGfxApi, descriptorSetLayouts, shaderPassDescription.m_rootSamplers)) + { + // Error. Is ok (just means we didnt have a valid descriptor set layout yet) + } + + PipelineVertexInputState pipelineVertexInputState{ *pShaderDescription, shaderPassDescription.m_vertexFormatBindings }; + + SpecializationConstantsLayout specializationConstants{ shaderPassDescription.m_constants }; + + // + // Add the ShaderPass to the ShaderBase + // + + shaderPasses.emplace_back(shaderPassDescription, std::move(shaderModules.value()), std::move(descriptorSetLayouts), std::move(pipelineLayout), std::move(pipelineVertexInputState), std::move(specializationConstants), (uint32_t)shaderPassDescription.m_outputs.size()); + shaderPassNames.push_back(passName); + } + + if (!success) + { + // if we failed to load something then remove all knowledge of this shader + m_shaderDescriptionsByName.erase(shaderName); + return false; + } + + // Create the ShaderBase class + auto shader = m_shadersByName.try_emplace(shaderName, std::make_unique>( pShaderDescription, std::move(shaderPasses), shaderPassNames )); + if (!shader.second) + { + // Duplicate shader name + return false; + } - // Create the mesh ShaderModule - auto meshShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_meshName); - if (meshShader.second == true) + return true; +} + +template +std::optional> ShaderManager::LoadShaderModules(AssetManager& assetManager, const ShaderPassDescription& shaderPassDescription) +{ + // TEMPORARY FIX FOR RECENT MEDIA FOLDER CHANGES // + + if (shaderPassDescription.m_fragmentName.starts_with("Media/Shaders/")) + { + LOGW("Project uses old 'Media/Shaders/' path its shaders (fragment), the new one is 'build/Media/Shaders', please update your shader json accordingly, temporary fix will be applied"); + const_cast(shaderPassDescription).m_fragmentName = std::string("build/Media/Shaders/") + shaderPassDescription.m_fragmentName.substr(std::string("Media/Shaders/").size()); + } + + if (shaderPassDescription.m_vertexName.starts_with("Media/Shaders/")) + { + LOGW("Project uses old 'Media/Shaders/' path its shaders (vertex), the new one is 'build/Media/Shaders', please update your shader json accordingly, temporary fix will be applied"); + const_cast(shaderPassDescription).m_vertexName = std::string("build/Media/Shaders/") + shaderPassDescription.m_vertexName.substr(std::string("Media/Shaders/").size()); + } + + if (shaderPassDescription.m_computeName.starts_with("Media/Shaders/")) + { + LOGW("Project uses old 'Media/Shaders/' path its shaders (compute), the new one is 'build/Media/Shaders', please update your shader json accordingly, temporary fix will be applied"); + const_cast(shaderPassDescription).m_computeName = std::string("build/Media/Shaders/") + shaderPassDescription.m_computeName.substr(std::string("Media/Shaders/").size()); + } + + /////////////////////////////////////////////////// + + std::optional> shaderModules; + auto& rGfxApi = GetGraphicsApi(); + + if (!shaderPassDescription.m_meshName.empty()) + { + // Create the mesh ShaderModule + auto meshShader = m_shaderModulesByName.try_emplace( shaderPassDescription.m_meshName ); + if (meshShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load( rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::Mesh )) { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Mesh)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_meshName); - success = false; - break; - } - meshShader.first->second = std::move(pShaderModule); + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase( shaderPassDescription.m_meshName ); + return {}; } - auto* pMeshShaderModule = apiCast(meshShader.first->second.get()); + meshShader.first->second = std::move( pShaderModule ); + } + auto* pMeshShaderModule = apiCast( meshShader.first->second.get() ); - // Create the fragment ShaderModule - auto fragShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_fragmentName); - if (fragShader.second == true) + // Create the fragment ShaderModule + if (shaderPassDescription.m_fragmentName.empty()) + { + assert( shaderPassDescription.m_fragmentName.empty() ); + return {}; + } + auto fragShader = m_shaderModulesByName.try_emplace( shaderPassDescription.m_fragmentName ); + if (fragShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load( rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::Fragment )) { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Fragment)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_fragmentName); - success = false; - break; - } - fragShader.first->second = std::move(pShaderModule); + // Failed to load, remove the unloaded Shader class! + m_shaderModulesByName.erase( shaderPassDescription.m_fragmentName ); + return {}; } - auto* pFragShaderModule = apiCast(fragShader.first->second.get()); - - shaderModules.emplace(ShaderModules(GraphicsTaskMeshShaderModules{ *pTaskShaderModule, *pMeshShaderModule, *pFragShaderModule })); + fragShader.first->second = std::move( pShaderModule ); } - else if (shaderPassDescription.m_vertexName.empty() && shaderPassDescription.m_taskName.empty() && !shaderPassDescription.m_meshName.empty() && !shaderPassDescription.m_fragmentName.empty()) + auto* pFragShaderModule = apiCast( fragShader.first->second.get() ); + + // Create the (optional) task shader module + if (!shaderPassDescription.m_taskName.empty()) { - // Create the mesh ShaderModule - auto meshShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_meshName); - if (meshShader.second == true) + auto taskShader = m_shaderModulesByName.try_emplace( shaderPassDescription.m_taskName ); + if (taskShader.second == true) { // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); + auto pShaderModule = std::make_unique>(); // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Mesh)) + if (!pShaderModule->Load( rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::Task )) { // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_meshName); - success = false; - break; + m_shaderModulesByName.erase( shaderPassDescription.m_taskName ); + return {}; } - meshShader.first->second = std::move(pShaderModule); + taskShader.first->second = std::move( pShaderModule ); } - auto* pMeshShaderModule = apiCast(meshShader.first->second.get()); - + auto* pTaskShaderModule = apiCast( taskShader.first->second.get() ); + shaderModules.emplace( ShaderModules( GraphicsTaskMeshShaderModules{ *pTaskShaderModule, * pMeshShaderModule, * pFragShaderModule } ) ); + } + else + { + shaderModules.emplace( ShaderModules( GraphicsMeshShaderModules{ * pMeshShaderModule, * pFragShaderModule } ) ); + } + } + else if (!shaderPassDescription.m_taskName.empty()) + { + assert( 0 && "task shader without a mesh shader"); + return {}; + } + else if (!shaderPassDescription.m_vertexName.empty()) + { + // Create the vertex ShaderModule + auto vertShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_vertexName); + if (vertShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::Vertex)) + { + // Failed to load, remove the unloaded ShaderBase class! + m_shaderModulesByName.erase(shaderPassDescription.m_vertexName); + return {}; + } + vertShader.first->second = std::move(pShaderModule); + } + auto* pVertShaderModule = apiCast(vertShader.first->second.get()); + if (shaderPassDescription.m_fragmentName.empty()) // Dont have to have a fragment shader! + { + // Vertex only Module + shaderModules.emplace(ShaderModules(GraphicsShaderModuleVertOnly{ *pVertShaderModule })); + } + else + { // Create the fragment ShaderModule auto fragShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_fragmentName); if (fragShader.second == true) { // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); + auto pShaderModule = std::make_unique>(); // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Fragment)) + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::Fragment)) { - // Failed to load, remove the unloaded Shader class! + // Failed to load, remove the unloaded ShaderBase class! m_shaderModulesByName.erase(shaderPassDescription.m_fragmentName); - success = false; - break; + m_shaderModulesByName.erase(shaderPassDescription.m_vertexName); + return {}; } fragShader.first->second = std::move(pShaderModule); } auto* pFragShaderModule = apiCast(fragShader.first->second.get()); - - shaderModules.emplace(ShaderModules(GraphicsMeshShaderModules{ *pMeshShaderModule, *pFragShaderModule })); + shaderModules.emplace(ShaderModules(GraphicsShaderModules{ *pVertShaderModule, *pFragShaderModule })); } - else if (!shaderPassDescription.m_vertexName.empty()) + } + else if (!shaderPassDescription.m_computeName.empty()) + { + // Create the compute ShaderModule + auto computeShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_computeName); + if (computeShader.second == true) { - // Create the vertex ShaderModule - auto vertShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_vertexName); - if (vertShader.second == true) - { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Vertex)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_vertexName); - success = false; - break; - } - vertShader.first->second = std::move(pShaderModule); - } - auto* pVertShaderModule = apiCast(vertShader.first->second.get()); - if (shaderPassDescription.m_fragmentName.empty()) // Dont have to have a fragment shader! + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::Compute)) { - // Vertex only Module - shaderModules.emplace(ShaderModules(GraphicsShaderModuleVertOnly{ *pVertShaderModule })); + // Failed to load, remove the unloaded ShaderBase class! + m_shaderModulesByName.erase(shaderPassDescription.m_computeName); + return {}; } - else + computeShader.first->second = std::move(pShaderModule); + } + auto* pComputeShaderModule = apiCast(computeShader.first->second.get()); + shaderModules.emplace(ShaderModules(ComputeShaderModule{*pComputeShaderModule})); + } + else if (!shaderPassDescription.m_rayGenerationName.empty()) + { + // Create the ray generation ShaderModule + auto rayGenerationShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayGenerationName); + if (rayGenerationShader.second == true) + { + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::RayGeneration)) { - // Create the fragment ShaderModule - auto fragShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_fragmentName); - if (fragShader.second == true) - { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Fragment)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_fragmentName); - m_shaderModulesByName.erase(shaderPassDescription.m_vertexName); - success = false; - break; - } - fragShader.first->second = std::move(pShaderModule); - } - auto* pFragShaderModule = apiCast(fragShader.first->second.get()); - shaderModules.emplace(ShaderModules(GraphicsShaderModules{ *pVertShaderModule, *pFragShaderModule })); + // Failed to load, remove the unloaded ShaderBase class! + m_shaderModulesByName.erase(shaderPassDescription.m_rayGenerationName); + return {}; } + rayGenerationShader.first->second = std::move(pShaderModule); } - else if (!shaderPassDescription.m_computeName.empty()) + auto* pRayGenerationShaderModule = apiCast(rayGenerationShader.first->second.get()); + + const ShaderModule* pRayClosestHitShaderModule = nullptr; + const ShaderModule* pRayAnyHitShaderModule = nullptr; + const ShaderModule* pRayMissShaderModule = nullptr; + + if (!shaderPassDescription.m_rayClosestHitName.empty()) { - // Create the compute ShaderModule - auto computeShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_computeName); - if (computeShader.second == true) + auto rayClosestHitShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayClosestHitName); + if (rayClosestHitShader.second == true) { // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); + auto pShaderModule = std::make_unique>(); // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::Compute)) + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::RayClosestHit)) { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_computeName); - success = false; - break; + // Failed to load, remove the unloaded ShaderBase class! + m_shaderModulesByName.erase(shaderPassDescription.m_rayClosestHitName); + return {}; } - computeShader.first->second = std::move(pShaderModule); + rayClosestHitShader.first->second = std::move(pShaderModule); } - auto* pComputeShaderModule = apiCast(computeShader.first->second.get()); - shaderModules.emplace(ShaderModules(ComputeShaderModule{*pComputeShaderModule})); + pRayClosestHitShaderModule = apiCast (rayClosestHitShader.first->second.get()); } - else if (!shaderPassDescription.m_rayGenerationName.empty()) + if (!shaderPassDescription.m_rayAnyHitName.empty()) { - // Create the ray generation ShaderModule - auto rayGenerationShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayGenerationName); - if (rayGenerationShader.second == true) + auto rayAnyHitShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayAnyHitName); + if (rayAnyHitShader.second == true) { // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); + auto pShaderModule = std::make_unique>(); // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::RayGeneration)) + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::RayAnyHit)) { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_rayGenerationName); - success = false; - break; + // Failed to load, remove the unloaded ShaderBase class! + m_shaderModulesByName.erase(shaderPassDescription.m_rayAnyHitName); + return {}; } - rayGenerationShader.first->second = std::move(pShaderModule); + rayAnyHitShader.first->second = std::move(pShaderModule); } - auto* pRayGenerationShaderModule = apiCast(rayGenerationShader.first->second.get()); - - const ShaderModuleT* pRayClosestHitShaderModule = nullptr; - const ShaderModuleT* pRayAnyHitShaderModule = nullptr; - const ShaderModuleT* pRayMissShaderModule = nullptr; - - if (!shaderPassDescription.m_rayClosestHitName.empty()) - { - auto rayClosestHitShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayClosestHitName); - if (rayClosestHitShader.second == true) - { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::RayClosestHit)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_rayClosestHitName); - success = false; - break; - } - rayClosestHitShader.first->second = std::move(pShaderModule); - } - pRayClosestHitShaderModule = apiCast (rayClosestHitShader.first->second.get()); - } - if (!shaderPassDescription.m_rayAnyHitName.empty()) - { - auto rayAnyHitShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayAnyHitName); - if (rayAnyHitShader.second == true) - { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::RayAnyHit)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_rayAnyHitName); - success = false; - break; - } - rayAnyHitShader.first->second = std::move(pShaderModule); - } - pRayAnyHitShaderModule = apiCast(rayAnyHitShader.first->second.get()); - } - if (!shaderPassDescription.m_rayMissName.empty()) - { - auto rayMissShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayMissName); - if (rayMissShader.second == true) - { - // Create the unique_ptr object (is not already loaded) - auto pShaderModule = std::make_unique>(); - // Load the physical shader file - if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModule::ShaderType::RayMiss)) - { - // Failed to load, remove the unloaded Shader class! - m_shaderModulesByName.erase(shaderPassDescription.m_rayMissName); - success = false; - break; - } - rayMissShader.first->second = std::move(pShaderModule); - } - pRayMissShaderModule = apiCast(rayMissShader.first->second.get()); - } - - shaderModules.emplace(ShaderModules(RayTracingShaderModules{ *pRayGenerationShaderModule, pRayClosestHitShaderModule, pRayAnyHitShaderModule, pRayMissShaderModule })); + pRayAnyHitShaderModule = apiCast(rayAnyHitShader.first->second.get()); } - else + if (!shaderPassDescription.m_rayMissName.empty()) { - // Error - must have a vertex shader or a compute shader - success = false; - } - - - // - // Add the ShaderPass to the Shader - // - - // - // Create the descriptor set layout (for the ShaderPass) - // - std::vector descriptorSetLayouts; - - descriptorSetLayouts.reserve(shaderPassDescription.m_sets.size()); - for (const auto& set : shaderPassDescription.m_sets) - { - if (!descriptorSetLayouts.emplace_back().Init(rGfxApi, set)) + auto rayMissShader = m_shaderModulesByName.try_emplace(shaderPassDescription.m_rayMissName); + if (rayMissShader.second == true) { - // Error - return false; + // Create the unique_ptr object (is not already loaded) + auto pShaderModule = std::make_unique>(); + // Load the physical shader file + if (!pShaderModule->Load(rGfxApi, assetManager, shaderPassDescription, ShaderModuleBase::ShaderType::RayMiss)) + { + // Failed to load, remove the unloaded ShaderBase class! + m_shaderModulesByName.erase(shaderPassDescription.m_rayMissName); + return {}; + } + rayMissShader.first->second = std::move(pShaderModule); } + pRayMissShaderModule = apiCast(rayMissShader.first->second.get()); } - // - // Create the pipeline layout (for the ShaderPass) - // - PipelineLayout pipelineLayout; - if (!pipelineLayout.Init(rGfxApi, descriptorSetLayouts)) - { - // Error. Is ok (just means we didnt have a valid descriptor set layout yet) - } - - PipelineVertexInputState pipelineVertexInputState{ *pShaderDescription, shaderPassDescription.m_vertexFormatBindings }; - - SpecializationConstantsLayout specializationConstants{ shaderPassDescription.m_constants }; - - shaderPasses.emplace_back(shaderPassDescription, std::move(shaderModules.value()), std::move(descriptorSetLayouts), std::move(pipelineLayout), std::move(pipelineVertexInputState), std::move(specializationConstants), (uint32_t)shaderPassDescription.m_outputs.size()); - shaderPassNames.push_back(passName); + shaderModules.emplace(ShaderModules(RayTracingShaderModules{ *pRayGenerationShaderModule, pRayClosestHitShaderModule, pRayAnyHitShaderModule, pRayMissShaderModule })); } - - if (!success) + else { - // if we failed to load something then remove all knowledge of this shader - m_shaderDescriptionsByName.erase(shaderName); - return false; + // Error - must have a vertex shader or a compute shader } + return shaderModules; +} - // Create the Shader class - auto shader = m_shadersByName.try_emplace(shaderName, std::make_unique>( pShaderDescription, std::move(shaderPasses), shaderPassNames )); - if (!shader.second) - { - // Duplicate shader name - return false; - } - return true; +template +const Shader* ShaderManager::GetShader(const std::string& shaderName) const +{ + return apiCast(ShaderManagerBase::GetShader(shaderName)); } diff --git a/framework/code/material/shaderModule.hpp b/framework/code/material/shaderModule.hpp index 69b4089..5ea2948 100644 --- a/framework/code/material/shaderModule.hpp +++ b/framework/code/material/shaderModule.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -15,20 +15,20 @@ // Forward declarations class AssetManager; -class DescriptorSetLayout; +class DescriptorSetLayoutBase; class ShaderPassDescription; class VertexDescription; class VertexFormat; -template class ShaderModuleT; +template class ShaderModule; -class ShaderModule +class ShaderModuleBase { - ShaderModule(const ShaderModule&) = delete; - ShaderModule& operator=(const ShaderModule&) = delete; + ShaderModuleBase(const ShaderModuleBase&) = delete; + ShaderModuleBase& operator=(const ShaderModuleBase&) = delete; public: - template using tApiDerived = ShaderModuleT; // make apiCast work! - ShaderModule() noexcept {} - ~ShaderModule() {} + template using tApiDerived = ShaderModule; // make apiCast work! + ShaderModuleBase() noexcept {} + ~ShaderModuleBase() {} enum class ShaderType { Fragment, Vertex, Compute, RayGeneration, RayClosestHit, RayAnyHit, RayMiss, Task, Mesh @@ -43,16 +43,16 @@ class ShaderModule std::string m_filename; }; -/// Templated Shader module (container for shader code) +/// Templated ShaderBase module (container for shader code) /// Expected to be specialized (by the graphics api) /// @ingroup Material template -class ShaderModuleT : private ShaderModule +class ShaderModule : private ShaderModuleBase { - ShaderModuleT(const ShaderModuleT&) = delete; - ShaderModuleT& operator=(const ShaderModuleT&) = delete; + ShaderModule(const ShaderModule&) = delete; + ShaderModule& operator=(const ShaderModule&) = delete; public: - ShaderModuleT() noexcept = delete; // this template class must be specialized + ShaderModule() noexcept = delete; // this template class must be specialized /// Free up the vkShaderModule resource. void Destroy(T_GFXAPI&) = delete; @@ -65,5 +65,5 @@ class ShaderModuleT : private ShaderModule /// @returns true on success bool Load(T_GFXAPI&, AssetManager&, const ShaderPassDescription&, const ShaderType); - static_assert(sizeof(ShaderModuleT) != sizeof(ShaderModule)); // Ensure this class template is specialized (and not used as-is) + static_assert(sizeof(ShaderModule) != sizeof(ShaderModuleBase)); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/material/specializationConstantDescription.hpp b/framework/code/material/specializationConstantDescription.hpp index 80949cb..0d4075a 100644 --- a/framework/code/material/specializationConstantDescription.hpp +++ b/framework/code/material/specializationConstantDescription.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/material/specializationConstants.hpp b/framework/code/material/specializationConstants.hpp new file mode 100644 index 0000000..be9f7e5 --- /dev/null +++ b/framework/code/material/specializationConstants.hpp @@ -0,0 +1,27 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + + +/// Templated wrapper for collection of specialization constants (eg VkSpecializationMapEntry for Vulkan VkSpecializationInfo::pMapEntries). +/// Expected to be specialized (compile will fail if this template is used rather than a specialization of it) +/// @ingroup Material +template +class SpecializationConstants +{ + SpecializationConstants( const SpecializationConstants& ) = delete; + SpecializationConstants operator=( const SpecializationConstants& ) = delete; +public: + SpecializationConstants( SpecializationConstants&& ) noexcept = default; + SpecializationConstants() noexcept = default; + //bool Init( const SpecializationConstantsLayout& layout, const std::span constants ) {} + + //we are ok with this generic class being used as-is (eg by Dx12 who does not have specialization conatants!) + //static_assert(sizeof(SpecializationConstantsLayout ) >= 1); // Ensure this class template is specialized (and not used as-is) +}; + diff --git a/framework/code/material/specializationConstantsLayout.hpp b/framework/code/material/specializationConstantsLayout.hpp index 6bd7349..5699a5f 100644 --- a/framework/code/material/specializationConstantsLayout.hpp +++ b/framework/code/material/specializationConstantsLayout.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,17 +11,12 @@ #include "specializationConstantDescription.hpp" #include -//#include "vulkan/specializationConstantsLayout.hpp" - - -// Forward declarations -class Vulkan; /// Templated wrapper for collection of specialization constant layout data (eg VkSpecializationMapEntry for Vulkan VkSpecializationInfo::pMapEntries). /// Expected to be specialized (compile will fail if this template is used rather than a specialization of it) /// @ingroup Material template -class SpecializationConstantsLayout +class SpecializationConstantsLayout final { SpecializationConstantsLayout( const SpecializationConstantsLayout& ) = delete; SpecializationConstantsLayout& operator=( const SpecializationConstantsLayout& ) = delete; diff --git a/framework/code/material/vertexFormat.hpp b/framework/code/material/vertexFormat.hpp index 57276a9..b0a09a5 100644 --- a/framework/code/material/vertexFormat.hpp +++ b/framework/code/material/vertexFormat.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -28,16 +28,30 @@ class VertexFormat public: enum class t { Int32, + UInt32, Float, Boolean, Vec2, Vec3, Vec4, + IVec2, + IVec3, + IVec4, + UVec2, + UVec3, + UVec4, Int16, + UInt16, Float16, F16Vec2, F16Vec3, F16Vec4, + I16Vec2, + I16Vec3, + I16Vec4, + U16Vec2, + U16Vec3, + U16Vec4, Null }; constexpr ElementType( const ElementType& ) noexcept = default; @@ -49,79 +63,123 @@ class VertexFormat constexpr uint32_t elements() const noexcept { switch (type) { case t::Int32: + case t::UInt32: case t::Float: case t::Boolean: case t::Int16: + case t::UInt16: case t::Float16: return 1; case t::Vec2: case t::F16Vec2: + case t::I16Vec2: + case t::U16Vec2: + case t::IVec2: + case t::UVec2: return 2; case t::Vec3: case t::F16Vec3: + case t::I16Vec3: + case t::U16Vec3: + case t::IVec3: + case t::UVec3: return 3; case t::Vec4: case t::F16Vec4: + case t::I16Vec4: + case t::U16Vec4: + case t::IVec4: + case t::UVec4: return 4; default: + // Assert if runtime eval and arithmetic error if const (compiletime) evaluated + do { if (std::is_constant_evaluated()) { int error = 1 / (int(type) - int(type)); } else { assert(0); } } while (0); // constexpr friendly assert! case t::Null: return 0; } } constexpr uint32_t size() const noexcept { switch(type) { - case t::Int32: - return 4; case t::Float: + case t::Int32: + case t::UInt32: return 4; case t::Boolean: return 4; case t::Vec2: + case t::IVec2: + case t::UVec2: return 8; case t::Vec3: + case t::IVec3: + case t::UVec3: return 12; case t::Vec4: + case t::IVec4: + case t::UVec4: return 16; - case t::Int16: - return 2; case t::Float16: + case t::Int16: + case t::UInt16: return 2; case t::F16Vec2: + case t::I16Vec2: + case t::U16Vec2: return 4; case t::F16Vec3: + case t::I16Vec3: + case t::U16Vec3: return 6; case t::F16Vec4: + case t::I16Vec4: + case t::U16Vec4: return 8; default: + // Assert if runtime eval and arithmetic error if const (compiletime) evaluated + do { if (std::is_constant_evaluated()) { int error = 1 / (int(type) - int(type)); } else { assert(0); } } while (0); // constexpr friendly assert! case t::Null: return 0; } } constexpr uint32_t alignment() const noexcept { switch(type) { - case t::Int32: - return 4; case t::Float: + case t::Int32: + case t::UInt32: return 4; case t::Boolean: return 4; case t::Vec2: + case t::IVec2: + case t::UVec2: return 8; case t::Vec3: + case t::IVec3: + case t::UVec3: return 16; case t::Vec4: + case t::IVec4: + case t::UVec4: return 16; - case t::Int16: - return 2; case t::Float16: + case t::Int16: + case t::UInt16: return 2; case t::F16Vec2: + case t::I16Vec2: + case t::U16Vec2: return 4; case t::F16Vec3: + case t::I16Vec3: + case t::U16Vec3: return 8; case t::F16Vec4: + case t::I16Vec4: + case t::U16Vec4: return 8; default: + // Assert if runtime eval and arithmetic error if const (compiletime) evaluated + do { if (std::is_constant_evaluated()) { int error = 1 / (int(type) - int(type)); } else { assert(0); } } while (0); // constexpr friendly assert! case t::Null: return 0; } diff --git a/framework/code/material/vulkan/computable.cpp b/framework/code/material/vulkan/computable.cpp new file mode 100644 index 0000000..0eb0c10 --- /dev/null +++ b/framework/code/material/vulkan/computable.cpp @@ -0,0 +1,502 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "computable.hpp" +#include "material.hpp" +#include "pipeline.hpp" +#include "shader.hpp" +#include "shaderModule.hpp" +#include "../shaderDescription.hpp" +#include "vulkan/vulkan.hpp" +#include "vulkan/TextureFuncts.h" +#include "texture/vulkan/texture.hpp" +#include "vulkan/commandBuffer.hpp" +#include "vulkan/extensionLib.hpp" +#include "system/os_common.h" +#include +#include +#include + +//template<> +ComputablePass::ComputablePass(ComputablePass&& other) noexcept + : ComputablePassBase(std::move(other)) + , mPipeline(std::move(other.mPipeline)) + , mImageMemoryBarriers(std::move(other.mImageMemoryBarriers)) + , mBufferMemoryBarriers(std::move(other.mBufferMemoryBarriers)) + , mNeedsExecutionBarrier( other.mNeedsExecutionBarrier ) +{ + mPipelineLayout = other.mPipelineLayout; + other.mPipelineLayout = VK_NULL_HANDLE; +} + +ComputablePass::~ComputablePass() +{ +} + +void ComputablePass::SetDispatchThreadCount(const std::array threadCount) +{ + std::array groupCount; + const auto& cWorkGroupLocalSize = mMaterialPass.mShaderPass.m_shaderPassDescription.m_workGroupSettings.localSize; + if (cWorkGroupLocalSize[0] == 0 || cWorkGroupLocalSize[1] == 0 || cWorkGroupLocalSize[2] == 0) + { + // Workgroup local size must be defined in the shader definition if we want to use this function + assert(0); + return; + } + groupCount[0] = (threadCount[0] + cWorkGroupLocalSize[0] - 1) / cWorkGroupLocalSize[0]; + groupCount[1] = (threadCount[1] + cWorkGroupLocalSize[1] - 1) / cWorkGroupLocalSize[1]; + groupCount[2] = (threadCount[2] + cWorkGroupLocalSize[2] - 1) / cWorkGroupLocalSize[2]; + + SetDispatchGroupCount(groupCount); +} + + +enum class BindingAccess { + ReadOnly, + WriteOnly, + ReadWrite +}; +static VkAccessFlags BindingAccessToBufferAccessMask(BindingAccess access) +{ + switch (access) { + case BindingAccess::ReadOnly: + return VK_ACCESS_SHADER_READ_BIT; + case BindingAccess::WriteOnly: + return VK_ACCESS_SHADER_WRITE_BIT; + case BindingAccess::ReadWrite: + default: + return VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT; + } +} + +/// @brief Structure holding the 'use' information for one binding +/// @tparam VK_TYPE Vulkan buffer type for this list of bindings (eg VkImage, VkBuffer) +template +struct BindingUseData +{ + typedef VK_BUFFERTYPE buffer_type; + BindingUseData(uint32_t _passIdx, BindingAccess _access, VK_BUFFERTYPE _buffer) : passIdx(_passIdx), access(_access), buffer(_buffer) {} + uint32_t passIdx; + BindingAccess access; + VK_BUFFERTYPE buffer; +}; + +template<> +bool Computable::Init() +{ + LOGI("Creating Computable"); + + const auto& materialPasses = mMaterial.GetMaterialPasses(); + mPasses.reserve(materialPasses.size() ); + + // + // Previous pass buffer usage data (for all passes before the current one). + // + struct ImageUsage { + VkImage image; + uint32_t numMips; + uint32_t firstMip; + VkImageLayout imageLayout; + ImageUsage( VkImage _image, uint32_t _numMips, uint32_t _firstMip, VkImageLayout _imageLayout ) noexcept : image( _image ), numMips( _numMips ), firstMip( _firstMip ), imageLayout(_imageLayout) {}; + ImageUsage( const ImageInfo& other ) noexcept : image( other.image ), numMips( other.imageViewNumMips ), firstMip( other.imageViewFirstMip ), imageLayout( other.imageLayout) {} + bool operator==( const ImageUsage& other ) const noexcept { + return image == other.image && ((firstMip < other.firstMip + other.numMips) && (firstMip + numMips > other.firstMip)); + } + }; + std::vector> prevImageUsages; + std::vector> prevBufferUsages; + prevImageUsages.reserve(64); + prevBufferUsages.reserve(64); + + // Lambda helper! Calls emitFn when the buffer passed to 'currentUsage' was last accessed in a differnet way by a previous pass (ie it is in prevPassUsages as a write and was not read from in a pass between current use and the previous write, also applies for read in a previous pass and now a write). + // Returns true if we need an execution barrier emitting. + // We want to buffer/image barrier on Write then Read patterns, and on Read then write patterns (we need to do the layout transition). + const auto& emitBarrier = [](const auto& currentUsage, const auto& prevPassUsages, const auto& emitFn) -> bool { + + // scan backwards looking for prior uses of this buffer/image... + int priorUseIdx = (int)prevPassUsages.size(); + while (priorUseIdx-- > 0) + { + const auto& priorUsage = prevPassUsages[priorUseIdx]; + if (currentUsage.buffer == priorUsage.buffer) + { + // if we found a prior use determine what kind of barrier we need to insert. + const auto& priorUsage = prevPassUsages[priorUseIdx]; + if (priorUsage.access == BindingAccess::ReadOnly) + { + if (currentUsage.access == BindingAccess::ReadOnly) + { + // Read followed by Read. + // do nothing... . Doesnt even need an execution barrier. + // HOWEVER DONT EARLY OUT BECAUSE WE MAY ALSO BIND AS A WRITE (albeit on a different frame - we need to sort that out, happens if we read the 'previous frame' as a texture and write the 'current frame' as an image in the same shader pass) + } + else + { + // Read followed by Write or ReadWrite. + // We used to only emit an execution barrier but we now emit a barrier to do the layout transition + emitFn(priorUsage, currentUsage); + return true; + } + } + else // priorUsage.access != BindingAccess::ReadOnly + { + // Write followed by something (read, write, readwrite). + // emit barrier. + emitFn(priorUsage, currentUsage); + return true; + } + } + } + return false; + }; + + + for (uint32_t materialPassIdx = 0; materialPassIdx < (uint32_t) materialPasses.size(); ++materialPassIdx) + { + const auto& materialPass = materialPasses[materialPassIdx]; + const auto& shaderPass = materialPass.GetShaderPass(); + assert(std::holds_alternative>(shaderPass.m_shaders.m_modules)); + + // Usually pipeline layout will be stored with the shader but if the descriptor set layout is 'dynamic' (and stored in the materialPass) the pipeline layout will also be in the materialPass. + VkPipelineLayout pipelineLayout = shaderPass.GetPipelineLayout().GetVkPipelineLayout(); + if (pipelineLayout == VK_NULL_HANDLE) + pipelineLayout = materialPass.GetPipelineLayout().GetVkPipelineLayout(); + + VkPipeline vkPipeline; + const ShaderModule& shaderModule = shaderPass.m_shaders.Get>(); + LOGI("CreateComputePipeline: %s", shaderPass.m_shaderPassDescription.m_computeName.c_str()); + + if (!mGfxApi.CreateComputePipeline(VK_NULL_HANDLE, + pipelineLayout, + shaderModule.GetVkShaderModule(), + materialPass.GetSpecializationConstants().GetVkSpecializationInfo(), + &vkPipeline)) + { + // Error + return false; + } + Pipeline pipeline {mGfxApi.m_VulkanDevice, vkPipeline}; + + // + // Build any memory barriers between passes + // + bool passNeedsExecutionBarrier = false; // Set if the pass needs (at least) an execution barrier. Adds barriers for WAR (write after read) use cases. + std::vector imageMemoryBarriers; + std::vector bufferMemoryBarriers; + + // Barriers for Image bindings + for (const auto& passImageBindings : materialPass.GetImageBindings()) + { + for (const auto& passImageBinding : passImageBindings.first) // image binding can be an array of bindings + { + const auto passUsage = BindingUseData( materialPassIdx, passImageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, ImageUsage(passImageBinding) ); + + passNeedsExecutionBarrier |= emitBarrier(passUsage, prevImageUsages, [&imageMemoryBarriers](auto& prevUsage, auto& currentUsage) { + const auto& image = currentUsage.buffer; + imageMemoryBarriers.push_back(VkImageMemoryBarrier{ + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + nullptr, + VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask + VK_ACCESS_SHADER_READ_BIT, //dstAccessMask + prevUsage.buffer.imageLayout,//oldLayout; + currentUsage.buffer.imageLayout,//newLayout; + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + image.image, //image; + { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; + image.firstMip, //baseMipLevel; + image.numMips, //mipLevelCount; + 0, //baseLayer; + 1, //layerCount; + }//subresourceRange; + }); + }); + } + } + + // Barriers for texture bindings + for (const auto& passTextureBindings : materialPass.GetTextureBindings()) + { + for (const auto& passTextureBinding : passTextureBindings.first) // texture binding can be an array of bindings + { + const auto passUsage = BindingUseData(materialPassIdx, BindingAccess::ReadOnly/*always readonly*/, ImageUsage(*passTextureBinding)); + + passNeedsExecutionBarrier |= emitBarrier(passUsage, prevImageUsages, + [&imageMemoryBarriers](auto& prevUsage, auto& currentUsage) { + const auto& image = currentUsage.buffer; + imageMemoryBarriers.push_back(VkImageMemoryBarrier{ + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + nullptr, + VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask + VK_ACCESS_SHADER_READ_BIT, //dstAccessMask + prevUsage.buffer.imageLayout, //oldLayout; + currentUsage.buffer.imageLayout, //newLayout; + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + image.image, //image; + { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; + image.firstMip, //baseMipLevel; + image.numMips, //mipLevelCount; + 0, //baseLayer; + 1, //layerCount; + }//subresourceRange; + }); + }); + } + } + + // Barriers for buffer bindings + for (const auto& passBufferBindings : materialPass.GetBufferBindings()) + { + for (const auto& passBufferBinding : passBufferBindings.first) // buffer binding can be an array of bindings + { + const auto passUsage = BindingUseData(materialPassIdx, passBufferBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, passBufferBinding.buffer()); + + passNeedsExecutionBarrier |= emitBarrier(passUsage, prevBufferUsages, + [&](auto& prevUsage, auto& currentUsage) { + VkBuffer bufferUsage = currentUsage.buffer; + //LOGI("Pass %d: Buffer Barrier: %s", materialPassIdx, materialPass.mShaderPass.m_shaderPassDescription.m_sets[0].m_descriptorTypes[tmp].names[0].c_str()); + bufferMemoryBarriers.push_back(VkBufferMemoryBarrier{ + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + nullptr, + BindingAccessToBufferAccessMask(prevUsage.access), //srcAccessMask + BindingAccessToBufferAccessMask(currentUsage.access), //dstAccessMask + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + bufferUsage, //buffer; + 0, //offset + VK_WHOLE_SIZE //size + }); + }); + } + } + + mPasses.push_back( ComputablePass{ materialPass, std::move(pipeline), pipelineLayout, std::move(imageMemoryBarriers), std::move(bufferMemoryBarriers), passNeedsExecutionBarrier } ); + + // + // Store out the arrays of buffers used by this pass + // + + for (const auto& imageBindings : materialPass.GetImageBindings()) + { + BindingAccess access = imageBindings.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite; + for (const auto& imageBinding : imageBindings.first) + { + prevImageUsages.push_back( { materialPassIdx, access, ImageUsage{imageBinding.image, imageBinding.imageViewNumMips, imageBinding.imageViewFirstMip, imageBinding.imageLayout} } ); + } + } + for (const auto& textureBinding : materialPass.GetTextureBindings()) + { + for (const auto& texture : textureBinding.first) + { + const auto& textureVulkan = apiCast(texture); + if (!textureVulkan->Image.IsEmpty()) // Only consider for barriers if the texture has a buffer/image, texture objects containing only a sampler can be ignored. + { + prevImageUsages.push_back( {materialPassIdx, BindingAccess::ReadOnly, {textureVulkan->GetVkImage(), textureVulkan->MipLevels, textureVulkan->FirstMip, textureVulkan->GetVkImageLayout()}} ); + } + } + } + for (const auto& bufferBinding : materialPass.GetBufferBindings()) + { +// LOGI("Buffer Binding: %s", materialPass.mShaderPass.m_shaderPassDescription.m_sets[0].m_descriptorTypes[bufferBinding.second.index].names[0].c_str()); + + for (const auto& buffer : bufferBinding.first) + { + prevBufferUsages.push_back({ materialPassIdx, bufferBinding.second.setBinding.isReadOnly ? BindingAccess::ReadOnly : BindingAccess::ReadWrite, buffer.buffer()}); + } + } + } + + // Create the final set of barriers. + // Any bindings that (may) write and were not used as a (read only) input to a subsequent ComputePass will be assumed as being outputs from the Computable (and will get memory barriers built) + + // Helper to scan through passUsages and call emitFn on any bindings that have a write as their last access type (ie things that are being output from the Computable and haven't already been barriered). + // Mangles/clears passUsages. + const auto& emitOutputBarrier = [](auto&& passUsages, const auto& emitFn) -> void + { + while( !passUsages.empty() ) + { + std::optional::value_type::buffer_type> currentBuffer {}; + for (auto revIt = passUsages.rbegin(); revIt != passUsages.rend(); ) + { + if (!currentBuffer) + { + if (revIt->access == BindingAccess::ReadOnly) + { + // last use of this binding was a readonly - no need for any output barriers + currentBuffer = revIt->buffer; + } + else + { + // last use of this binding is write or read-write + currentBuffer = revIt->buffer; + // pushback + emitFn(revIt->buffer); + } + } + if (currentBuffer == revIt->buffer) + { + // Once we have found a candidate buffer remove all prior references to it (and itself). + revIt = std::reverse_iterator(passUsages.erase((++revIt).base())); + } + else + { + ++revIt; + } + } + } + }; + + emitOutputBarrier(prevBufferUsages, + [this](const VkBuffer& buffer) -> void { + mBufferOutputMemoryBarriers.emplace_back(VkBufferMemoryBarrier{ + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + nullptr, + VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask + VK_ACCESS_SHADER_READ_BIT, //dstAccessMask + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + buffer, //buffer; + 0, //offset + VK_WHOLE_SIZE //size + }); + }); + + emitOutputBarrier(prevImageUsages, + [this](const ImageUsage& image) -> void { + mImageOutputMemoryBarriers.emplace_back(VkImageMemoryBarrier{ + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + nullptr, + VK_ACCESS_SHADER_WRITE_BIT, //srcAccessMask + VK_ACCESS_SHADER_READ_BIT, //dstAccessMask + VK_IMAGE_LAYOUT_GENERAL, //oldLayout; + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,//newLayout; + VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; + image.image, //image; + { VK_IMAGE_ASPECT_COLOR_BIT,//aspect; + image.firstMip, //baseMipLevel; + image.numMips, //mipLevelCount; + 0, //baseLayer; + 1, //layerCount; + }//subresourceRange; + }); + }); + + for (uint32_t whichBuffer = 0; whichBuffer < mMaterial.GetNumFrameBuffers(); ++whichBuffer) + { + mMaterial.UpdateDescriptorSets(whichBuffer); + } + return true; +} + +template<> +void Computable::SetDispatchGroupCount(uint32_t passIdx, const std::array& groupCount) +{ + mPasses[passIdx].SetDispatchGroupCount(groupCount); +} + +template<> +void Computable::SetDispatchThreadCount(uint32_t passIdx, const std::array& threadCount) +{ + mPasses[passIdx].SetDispatchThreadCount(threadCount); +} + +template<> +void Computable::DispatchPass(CommandList& cmdList, const ComputablePass& computablePass, uint32_t bufferIdx) const +{ + VkCommandBuffer vkCmdBuffer = cmdList; + + // Add image barriers (if needed) + if (computablePass.NeedsBarrier()) + { + const auto& imageMemoryBarriers = computablePass.GetVkImageMemoryBarriers(); + const auto& bufferMemoryBarriers = computablePass.GetVkBufferMemoryBarriers(); + + // Barrier on memory, with correct layouts set. + vkCmdPipelineBarrier(vkCmdBuffer, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // srcMask, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // dstMask, + 0, + 0, nullptr, + (uint32_t)bufferMemoryBarriers.size(), + bufferMemoryBarriers.empty() ? nullptr : bufferMemoryBarriers.data(), + (uint32_t)imageMemoryBarriers.size(), + imageMemoryBarriers.empty() ? nullptr : imageMemoryBarriers.data()); + } + + // Bind the pipeline for this material + vkCmdBindPipeline(vkCmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipeline.GetVkPipeline()); + + // Bind everything the shader needs + const std::span descriptorSets = computablePass.GetMaterialPass().GetVkDescriptorSets(bufferIdx); + vkCmdBindDescriptorSets(vkCmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, computablePass.mPipelineLayout, 0, descriptorSets.size(), descriptorSets.data(), 0, nullptr); + + // Dispatch the compute task + const auto& workgroupSettings = computablePass.GetMaterialPass().mShaderPass.m_shaderPassDescription.m_workGroupSettings; + if (workgroupSettings.perTileDispatch) + { + mGfxApi.GetExtension()->m_vkCmdDispatchTileQCOM(vkCmdBuffer, nullptr); + } + else + { + vkCmdDispatch(vkCmdBuffer, computablePass.GetDispatchGroupCount()[0], computablePass.GetDispatchGroupCount()[1], computablePass.GetDispatchGroupCount()[2] ); + } +} + +template<> +void Computable::Dispatch(CommandList& cmdList, uint32_t bufferIdx, bool timers) const +{ + assert(!GetPasses().empty() && "No Computable passes, did you call Init() for the computable?"); + + // Determine if we want per-tile shader mode enabling (can either dispatch per tile or just run a compute shader with user defined workgroup sizes) + + for (uint32_t passIdx =0; const auto& computablePass : GetPasses()) + { + const int timerIdx = timers ? cmdList.StartGpuTimer( GetPassName( passIdx ) ) : -1; + DispatchPass(cmdList, computablePass, bufferIdx % (uint32_t)computablePass.GetMaterialPass().GetVkDescriptorSets().size()); + if (timerIdx>=0) + cmdList.StopGpuTimer( timerIdx ); + ++passIdx; + } +} + +template<> +void Computable::Dispatch(CommandListBase& cmdList, uint32_t bufferIdx, bool timers) const /*override*/ +{ + Dispatch(apiCast(cmdList), bufferIdx, timers); +} + +template<> +void Computable::AddOutputBarriersToCmdList(CommandList& commandList) const +{ + const auto& computableOutputBufferBarriers = GetBufferOutputMemoryBarriers(); + const auto& computableOutputImageBarriers = GetImageOutputMemoryBarriers(); + + if (computableOutputBufferBarriers.empty() && computableOutputImageBarriers.empty()) + return; + + static_assert(std::is_same_v> ); + static_assert(std::is_same_v> ); + + vkCmdPipelineBarrier(commandList, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // srcMask, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, // dstMask, + 0, + 0, nullptr, + (uint32_t)computableOutputBufferBarriers.size(), + computableOutputBufferBarriers.empty() ? nullptr : (const VkBufferMemoryBarrier*) computableOutputBufferBarriers.data(), + (uint32_t)computableOutputImageBarriers.size(), + computableOutputImageBarriers.empty() ? nullptr : (const VkImageMemoryBarrier*) computableOutputImageBarriers.data()); +} + +template<> +void Computable::AddOutputBarriersToCmdList(CommandListBase& cmdList) const /*override*/ +{ + AddOutputBarriersToCmdList(apiCast(cmdList)); +} diff --git a/framework/code/material/vulkan/computable.hpp b/framework/code/material/vulkan/computable.hpp new file mode 100644 index 0000000..9db1726 --- /dev/null +++ b/framework/code/material/vulkan/computable.hpp @@ -0,0 +1,79 @@ +//============================================================================= +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "material.hpp" +#include "pipeline.hpp" +#include "../computable.hpp" + + +template<> +class ImageMemoryBarrier final : public ImageMemoryBarrierBase +{ +public: + typedef VkImageMemoryBarrier tBarrier; + ImageMemoryBarrier( VkImageMemoryBarrier&& barrier ) noexcept + : ImageMemoryBarrierBase() + , vkBarrier( std::move( barrier ) ) + {} + VkImageMemoryBarrier vkBarrier; +}; +static_assert(sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier )); + +template<> +class BufferMemoryBarrier final : public BufferMemoryBarrierBase +{ +public: + typedef VkBufferMemoryBarrier tBarrier; + BufferMemoryBarrier( VkBufferMemoryBarrier&& barrier ) noexcept + : BufferMemoryBarrierBase() + , vkBarrier( std::move( barrier ) ) + {} + tBarrier vkBarrier; +}; +static_assert(sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier )); + + +template<> +class ComputablePass final : public ComputablePassBase +{ + ComputablePass( const ComputablePass& ) = delete; + ComputablePass& operator=( const ComputablePass& ) = delete; +public: + ComputablePass( const MaterialPass& materialPass, Pipeline pipeline, VkPipelineLayout pipelineLayout, std::vector imageMemoryBarriers, std::vector bufferMemoryBarriers, bool needsExecutionBarrier ) + : ComputablePassBase( materialPass ) + , mPipeline( std::move( pipeline ) ) + , mPipelineLayout( pipelineLayout ) + , mImageMemoryBarriers( std::move( imageMemoryBarriers ) ) + , mBufferMemoryBarriers( std::move( bufferMemoryBarriers ) ) + , mNeedsExecutionBarrier( needsExecutionBarrier ) + {} + ComputablePass( ComputablePass&& ) noexcept; + ~ComputablePass(); + + const auto& GetMaterialPass() const { return apiCast( mMaterialPass ); } + + const auto& GetVkImageMemoryBarriers() const { return mImageMemoryBarriers; } + const auto& GetVkBufferMemoryBarriers() const { return mBufferMemoryBarriers; } + const bool NeedsBarrier() const { return mNeedsExecutionBarrier || (!mImageMemoryBarriers.empty()) || (!mBufferMemoryBarriers.empty()); }; ///< @return true if there needs to be a barrier before executing this compute pass + + /// number of workgroup dispatches to execute (value after the local workgroup sizes are accounted for) + void SetDispatchGroupCount( std::array count ) { mDispatchGroupCount = count; } + const auto& GetDispatchGroupCount() const { return mDispatchGroupCount; } + /// number of global workgroup threads to run (value before the local workgroup sizes are accounted for). Requires "WorkGroup" : { "LocalSize": {x,y,z} } in the shader definition json. + void SetDispatchThreadCount( std::array count ); + + Pipeline mPipeline; // Owned by us + VkPipelineLayout mPipelineLayout; // Owned by ShaderPass or MaterialPass + +protected: + std::vector mImageMemoryBarriers; ///< Image barriers for ENTRY in to this pass. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + std::vector mBufferMemoryBarriers; ///< Buffer barriers for ENTRY in to this pass. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho + bool mNeedsExecutionBarrier = false;///< Denotes if we need an execution barrier for ENTRY to this pass (even if there are no image or buffer barriers). +}; + + diff --git a/framework/code/material/descriptorSetLayout.cpp b/framework/code/material/vulkan/descriptorSetLayout.cpp similarity index 79% rename from framework/code/material/descriptorSetLayout.cpp rename to framework/code/material/vulkan/descriptorSetLayout.cpp index c6b427a..e075e1c 100644 --- a/framework/code/material/descriptorSetLayout.cpp +++ b/framework/code/material/vulkan/descriptorSetLayout.cpp @@ -1,27 +1,28 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "descriptorSetLayout.hpp" -#include "descriptorSetDescription.hpp" +#include "../descriptorSetDescription.hpp" #include "vulkan/vulkan.hpp" #include #include -DescriptorSetLayout::DescriptorSetLayout() +DescriptorSetLayout::DescriptorSetLayout() noexcept + : DescriptorSetLayoutBase() { } -DescriptorSetLayout::~DescriptorSetLayout() +DescriptorSetLayout::~DescriptorSetLayout() { assert(m_descriptorSetLayout == VK_NULL_HANDLE); } -void DescriptorSetLayout::Destroy(Vulkan& vulkan) +void DescriptorSetLayout::Destroy(Vulkan& vulkan) { if (m_descriptorSetLayout != VK_NULL_HANDLE) { @@ -32,8 +33,8 @@ void DescriptorSetLayout::Destroy(Vulkan& vulkan) m_descriptorPoolSizes.clear(); } -DescriptorSetLayout::DescriptorSetLayout(DescriptorSetLayout&& other) noexcept - : m_nameToBinding( std::move(other.m_nameToBinding)) +DescriptorSetLayout::DescriptorSetLayout(DescriptorSetLayout&& other) noexcept + : DescriptorSetLayoutBase(std::move(other)) , m_descriptorSetLayoutBindings(std::move(other.m_descriptorSetLayoutBindings)) , m_descriptorPoolSizes(std::move(other.m_descriptorPoolSizes)) { @@ -41,8 +42,11 @@ DescriptorSetLayout::DescriptorSetLayout(DescriptorSetLayout&& other) noexcept other.m_descriptorSetLayout = VK_NULL_HANDLE; } -bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& description) +bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& description) { + if (!DescriptorSetLayoutBase::Init(description)) + return false; + const size_t numBindings = description.m_descriptorTypes.size(); uint32_t index = 0; bool dynamicDescriptorCount = false; @@ -59,7 +63,12 @@ bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& d continue; } auto& binding = m_descriptorSetLayoutBindings.emplace_back(); - binding.binding = index++; + if (it.descriptorIndex < 0) + // Index of < 0 denotes we want to use sequential descriptor binding indices. + ///TODO: look for collisions or determine how/if we want to handle out of order desciptor indices or enforce shaders that have an explicit binding index to define indices for all descriptors. + binding.binding = index++; + else + binding.binding = it.descriptorIndex; binding.descriptorCount = it.count; if (it.count <= 0) // Count of 0 denotes that we dont (yet) know how many descriptors will go into this slot - layout will be created alongside the descriptor set. @@ -106,6 +115,9 @@ bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& d case DescriptorSetDescription::DescriptorType::Unused: // Handled before switch, never hit! break; + case DescriptorSetDescription::DescriptorType::DescriptorTable: + assert( 0 && "Descriptor tables are a DirectX12 feature, not supported on Vulkan" ); + break; } VkShaderStageFlagBits stageFlags = (VkShaderStageFlagBits)0; if (it.stages & DescriptorSetDescription::StageFlag::t::Task) @@ -131,13 +143,6 @@ bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& d binding.stageFlags |= VK_SHADER_STAGE_ANY_HIT_BIT_KHR; #endif binding.pImmutableSamplers = nullptr; - - assert(it.names.size() <= 1); ///TODO: only one name supported, needs to store the index within the descriptor as well as the binding index if we want to support this! (the 'for' loop below is not the full implementation) - for (const auto& name : it.names) - { - auto nameToBindingEmplaced = m_nameToBinding.try_emplace(name, BindingTypeAndIndex{ binding.descriptorType, binding.binding, binding.descriptorCount!=1/*isArray*/, readOnly }); - assert(nameToBindingEmplaced.second); // name must be unique - } } m_descriptorPoolSizes.clear(); @@ -157,7 +162,7 @@ bool DescriptorSetLayout::Init(Vulkan& vulkan, const DescriptorSetDescription& d } -VkDescriptorSetLayout DescriptorSetLayout::CreateVkDescriptorSetLayout(Vulkan& vulkan, const std::span descriptorSetLayoutBindings) +VkDescriptorSetLayout DescriptorSetLayout::CreateVkDescriptorSetLayout(Vulkan& vulkan, const std::span descriptorSetLayoutBindings) { // // Create the descriptor set layout @@ -169,6 +174,13 @@ VkDescriptorSetLayout DescriptorSetLayout::CreateVkDescriptorSetLayout(Vulkan& v VkDescriptorSetLayout descriptorSetLayout = VK_NULL_HANDLE; VkResult retVal = vkCreateDescriptorSetLayout(vulkan.m_VulkanDevice, &layoutInfo, nullptr, &descriptorSetLayout); + + LOGI("vkCreateDescriptorSetLayout"); + for (const auto& binding: descriptorSetLayoutBindings) + { + LOGI(" binding: %u\tdescriptorType: 0x%x descriptorCount: %d stageFlags: 0x%x pImmutableSamplers : %p", binding.binding, binding.descriptorType, binding.descriptorCount, binding.stageFlags, binding.pImmutableSamplers); + } + if (!CheckVkError("vkCreateDescriptorSetLayout()", retVal)) { return VK_NULL_HANDLE; @@ -177,7 +189,7 @@ VkDescriptorSetLayout DescriptorSetLayout::CreateVkDescriptorSetLayout(Vulkan& v } -void DescriptorSetLayout::CalculatePoolSizes(const std::span descriptorSetLayoutBindings, std::vector& descriptorPoolSizes) +void DescriptorSetLayout::CalculatePoolSizes(const std::span descriptorSetLayoutBindings, std::vector& descriptorPoolSizes) { #define MAX_USED_DESCRIPTOR_TYPES ((VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1) + 2) // Take a guess at how many unique descript types will be used diff --git a/framework/code/material/vulkan/descriptorSetLayout.hpp b/framework/code/material/vulkan/descriptorSetLayout.hpp new file mode 100644 index 0000000..c7c8238 --- /dev/null +++ b/framework/code/material/vulkan/descriptorSetLayout.hpp @@ -0,0 +1,51 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +//#include //TEMP +#include +#include "../descriptorSetLayout.hpp" + +// Forward declares +class DescriptorSetDescription; +class Vulkan; + + +/// Representation of the descriptor set layout. +/// template specialization of DescriptSetLayout +/// Builds/owns the Vulkan Descriptor Set Layout that can be used to allocate the descriptor sets. +/// Also has a mapping from descriptor slots name (nice name) to the their shader binding index. +/// @ingroup Material +template<> +class DescriptorSetLayout : public DescriptorSetLayoutBase +{ + DescriptorSetLayout& operator=(const DescriptorSetLayout&) = delete; + DescriptorSetLayout(const DescriptorSetLayout&) = delete; +public: + DescriptorSetLayout() noexcept; + ~DescriptorSetLayout(); + DescriptorSetLayout(DescriptorSetLayout&&) noexcept; + + bool Init(Vulkan& vulkan, const DescriptorSetDescription&); + void Destroy(Vulkan& vulkan); + + static VkDescriptorSetLayout CreateVkDescriptorSetLayout(Vulkan& vulkan, const std::span descriptorSetLayoutBindings); + static void CalculatePoolSizes(const std::span descriptorSetLayoutBindings, std::vector& descriptorPoolSizes/*output*/); + + const auto& GetVkDescriptorSetLayoutBinding() const { return m_descriptorSetLayoutBindings; } + const auto& GetVkDescriptorSetLayout() const { return m_descriptorSetLayout; } + const auto& GetDescriptorPoolSizes() const { return m_descriptorPoolSizes; } + +private: + // Vulkan objects + VkDescriptorSetLayout m_descriptorSetLayout = VK_NULL_HANDLE; ///< Vulkan descriptor set layout object. Can be VK_NULL_HANDLE after Init if there are bindings with 'dynamic' descriptorCount (0) + std::vector m_descriptorSetLayoutBindings; + std::vector m_descriptorPoolSizes; +}; diff --git a/framework/code/material/vulkan/drawable.cpp b/framework/code/material/vulkan/drawable.cpp new file mode 100644 index 0000000..0417360 --- /dev/null +++ b/framework/code/material/vulkan/drawable.cpp @@ -0,0 +1,389 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "drawable.hpp" +#include "vulkan/vulkan.hpp" +#include "material.hpp" +#include "shader.hpp" +#include "../shaderDescription.hpp" +#include "vulkan/commandBuffer.hpp" +#include "vulkan/extensionLib.hpp" + +namespace +{ + inline VkSampleCountFlagBits EnumToVk(Msaa msaa) + { + return (VkSampleCountFlagBits)msaa; + } +} + +DrawablePass::~DrawablePass() +{ +} + +template<> +Drawable::~Drawable() +{ +} + +template<> +bool Drawable::ReInit( std::span renderContexts, uint32_t passMask ) +{ + mPassMask = passMask; + mPassNameToIndex.clear(); + mPasses.clear(); + + const auto& shader = mMaterial.GetShader(); + mPasses.reserve(shader.GetShaderPasses().size()); + + // we allow either no pass names or a single empty passName to denote that we want to just process the passes in order, otherwise lookup by name +// const bool lookupPassNames = !passNames.empty() && (passNames.size() > 1 || (passNames[0] != nullptr && passNames[0][0] != '\0')); + + for (uint32_t passIdx = 0; passIdx < sizeof(passMask) * 8 && passMask != 0 && passIdx < renderContexts.size(); ++passIdx) + { + bool passMaskSet = ((passMask & 1) != 0); + passMask >>= 1; + if (passMaskSet) + { + const auto& renderContext = renderContexts[passIdx]; + // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", renderContext.name.c_str()); + auto* pMaterialPass = renderContext.name.empty() ? mMaterial.GetMaterialPass(passIdx) : mMaterial.GetMaterialPass(renderContext.name); + if (!pMaterialPass) + { + LOGE(" Pass %s does not exist in shader", renderContext.name.c_str()); + continue; + } + assert(pMaterialPass); + const auto& shaderPass = pMaterialPass->GetShaderPass(); + + mPassNameToIndex.try_emplace(renderContext.name, (uint32_t)mPasses.size()); // add the lookup (in to mPasses) + + // Build the passVertexBufferLookup so at runtime we can easily populate the vkBuffer array with the vertex and instance buffers in the order specified per pass by m_vertexFormatBindings. + // Could do this in a single loop; currently split into 2 so we can potentially add more flexibility in where we get the VKBuffers from (TODO) + std::vector tmp; + tmp.reserve(shader.m_shaderDescription->m_vertexFormats.size()); + int numVertexRateFormats = 0, numInstanceRateFormats = 0; + for (const auto& vertexFormat : shader.m_shaderDescription->m_vertexFormats) + { + switch (vertexFormat.inputRate) { + case VertexFormat::eInputRate::Vertex: + tmp.push_back(numVertexRateFormats++); + break; + case VertexFormat::eInputRate::Instance: + tmp.push_back(--numInstanceRateFormats); + break; + } + } + + std::vector passVertexBufferLookup; // order of the vkBuffers for this pass (index is in to the vertex array if positive, or in to the instance array if negative (-1 is the 'first') + std::vector passVertexBuffers; + passVertexBufferLookup.reserve(shader.m_shaderDescription->m_vertexFormats.size()); + passVertexBuffers.reserve(shader.m_shaderDescription->m_vertexFormats.size()); + for (uint32_t formatBindingIdx : shaderPass.m_shaderPassDescription.m_vertexFormatBindings) + { + const int bufferIdx = tmp[formatBindingIdx]; + passVertexBufferLookup.push_back(bufferIdx); + if (bufferIdx >= 0) + { + // Vertex rate data (ie the mesh) + passVertexBuffers.push_back(mMeshObject.m_VertexBuffers[bufferIdx].GetVkBuffer()); + + // Double check the mesh is supplying the data we expect in the shader, may mismatch if the mesh was not built using the vertex format (eg Mesh::CreateScreenSpaceMesh) + // We could dive even deeper, for now check the span and the number of attributes match + assert(mMeshObject.m_VertexBuffers[bufferIdx].GetAttributes().size() == shader.m_shaderDescription->m_vertexFormats[formatBindingIdx].elements.size()); + assert(mMeshObject.m_VertexBuffers[bufferIdx].GetSpan() == shader.m_shaderDescription->m_vertexFormats[formatBindingIdx].span); + } + else + { + // Instance rate data (ie the instance buffer) + assert(bufferIdx == -1); + assert(mVertexInstanceBuffer.has_value()); + passVertexBuffers.push_back(mVertexInstanceBuffer->GetVkBuffer()); + } + } + std::vector passVertexBufferOffsets(passVertexBuffers.size(), 0); + + // Index buffer is optional + VkBuffer indexBuffer = VK_NULL_HANDLE; + VkIndexType indexBufferType = VK_INDEX_TYPE_MAX_ENUM; + size_t indexCount = 0; + if (mMeshObject.m_IndexBuffer) + { + indexBuffer = mMeshObject.m_IndexBuffer->GetVkBuffer(); + indexBufferType = mMeshObject.m_IndexBuffer->GetVkIndexType(); + indexCount = mMeshObject.m_IndexBuffer->GetNumIndices(); + } + + // Indirect Draw buffer is optional + VkBuffer drawIndirectBuffer = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetVkBuffer() : VK_NULL_HANDLE; + uint32_t drawIndirectCount = mDrawIndirectBuffer.has_value() ? (uint32_t)mDrawIndirectBuffer->GetNumDraws() : 0; + uint32_t drawIndirectOffset = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetBufferOffset() : 0; + // Indirect Draw Count (count buffer) set to be the beginning of the drawIndirectBuffer IF there is an offset in the mDrawIndirectBuffer. + VkBuffer drawIndirectCountBuffer = drawIndirectOffset>0 ? drawIndirectBuffer : VK_NULL_HANDLE; + + Pipeline pipeline; + + // Pipeline (and layout) may come from the shaderPass or (if that fails) from the materialPass (if it was created late because of 'dynamic' descriptor set layout). + bool materialSpecificPipeline = !shaderPass.GetPipelineLayout(); + const PipelineLayout& pipelineLayout = materialSpecificPipeline ? pMaterialPass->GetPipelineLayout() : shaderPass.GetPipelineLayout(); + if (!materialSpecificPipeline) + { + // We (probably) have a valid pipeline we can (re)use + pipeline = !renderContext.IsDynamic() ? renderContext.GetOverridePipeline() : Pipeline(); + } + if (!pipeline) + { + PipelineRasterizationState pipelineRasterizationState { shaderPass.m_shaderPassDescription }; + pipeline = CreatePipeline( mGfxApi, shaderPass.m_shaderPassDescription, pipelineLayout, shaderPass.GetPipelineVertexInputState(), pipelineRasterizationState, pMaterialPass->GetSpecializationConstants(), shaderPass.m_shaders, renderContext, renderContext.msaa); + } + + // add the DrawablePass + DrawablePass& pass = mPasses.emplace_back( *pMaterialPass, + std::move(pipeline), + pipelineLayout.GetVkPipelineLayout(), + pMaterialPass->GetVkDescriptorSets(), + shaderPass.GetPipelineVertexInputState(), + DrawablePassVertexBuffers { .mVertexBuffers = std::move( passVertexBuffers ), + .mVertexBufferOffsets = std::move( passVertexBufferOffsets ) }, + indexBuffer, + indexBufferType, + drawIndirectBuffer, + drawIndirectCountBuffer, + (uint32_t)mMeshObject.m_NumVertices, + (uint32_t)indexCount, + (uint32_t)drawIndirectCount, + (uint32_t)drawIndirectOffset, + passIdx + ); + } + } + return true; +} + +template<> +bool Drawable::ReInitMeshShader(std::span renderContexts, uint32_t passMask) +{ + mPassMask = passMask; + mPassNameToIndex.clear(); + mPasses.clear(); + + const auto& shader = mMaterial.GetShader(); + mPasses.reserve( shader.GetShaderPasses().size() ); + for (uint32_t passIdx = 0; passIdx < sizeof( passMask ) * 8 && passMask != 0; ++passIdx) + { + bool passMaskSet = ((passMask & 1) != 0); + passMask >>= 1; + if (passMaskSet) + { + const auto& renderContext = renderContexts[passIdx]; + // LOGI("Creating Mesh Object PipelineState and Pipeline for pass... %s", passNames[passIdx]); + auto* pMaterialPass = renderContext.name.empty() ? mMaterial.GetMaterialPass(passIdx) : mMaterial.GetMaterialPass(renderContext.name); + if (!pMaterialPass) + { + LOGE(" Pass %s does not exist in shader", renderContext.name.c_str()); + continue; + } + assert(pMaterialPass); + assert( pMaterialPass ); + const auto& shaderPass = pMaterialPass->GetShaderPass(); + + mPassNameToIndex.try_emplace( renderContext.name, (uint32_t)mPasses.size() ); // add the lookup (in to mPasses) + + VkBuffer indexBuffer = VK_NULL_HANDLE; + VkIndexType indexBufferType = VK_INDEX_TYPE_MAX_ENUM; + + // Indirect Draw buffer is optional + VkBuffer drawIndirectBuffer = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetVkBuffer() : VK_NULL_HANDLE; + uint32_t drawIndirectCount = mDrawIndirectBuffer.has_value() ? (uint32_t)mDrawIndirectBuffer->GetNumDraws() : 0; + uint32_t drawIndirectOffset = mDrawIndirectBuffer.has_value() ? mDrawIndirectBuffer->GetBufferOffset() : 0; + // Indirect Draw Count (count buffer) set to be the beginning of the drawIndirectBuffer IF there is an offset in the mDrawIndirectBuffer. + VkBuffer drawIndirectCountBuffer = drawIndirectOffset > 0 ? drawIndirectBuffer : VK_NULL_HANDLE; + + Pipeline pipeline; + + // Pipeline (and layout) may come from the shaderPass or (if that fails) from the materialPass (if it was created late because of 'dynamic' descriptor set layout). + bool materialSpecificPipeline = !shaderPass.GetPipelineLayout(); + const PipelineLayout& pipelineLayout = materialSpecificPipeline ? pMaterialPass->GetPipelineLayout() : shaderPass.GetPipelineLayout(); + if (!renderContext.IsDynamic()) + { + if (!materialSpecificPipeline && !renderContext.IsDynamic()) + { + // We (probably) have a valid pipeline we can (re)use + pipeline = renderContext.GetOverridePipeline(); + } + if (!pipeline) + { + PipelineRasterizationState pipelineRasterizationState{shaderPass.m_shaderPassDescription}; + pipeline = CreatePipeline( mGfxApi, shaderPass.m_shaderPassDescription, pipelineLayout, shaderPass.GetPipelineVertexInputState(), pipelineRasterizationState, pMaterialPass->GetSpecializationConstants(), shaderPass.m_shaders, renderContext, renderContext.msaa); + } + } + + // add the DrawablePass + DrawablePass& pass = mPasses.emplace_back( *pMaterialPass, + std::move(pipeline), + pipelineLayout.GetVkPipelineLayout(), + pMaterialPass->GetVkDescriptorSets(), + shaderPass.GetPipelineVertexInputState(), + DrawablePassVertexBuffers { }, //{ .mVertexBuffers = std::move( passVertexBuffers ), .mVertexBufferOffsets = std::move( passVertexBufferOffsets ) }, + VK_NULL_HANDLE, //indexBuffer, + indexBufferType, + drawIndirectBuffer, + drawIndirectCountBuffer, + 0, //(uint32_t)mMeshObject.m_NumVertices, + 0, //(uint32_t)indexCount, + (uint32_t)drawIndirectCount, + (uint32_t)drawIndirectOffset, + passIdx + ); + } + } + return true; +} + +template<> +void Drawable::DrawPass(CommandList& cmdBuffer, const DrawablePass& drawablePass, uint32_t bufferIdx, const std::span vertexBufferOverrides) const +{ + VkCommandBuffer vkCmdBuffer = cmdBuffer; + + // Bind the pipeline for this material + vkCmdBindPipeline(vkCmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, drawablePass.mPipeline.GetVkPipeline()); + + // Bind everything the shader needs + if (!drawablePass.mDescriptorSet.empty()) + { + VkDescriptorSet vkDescriptorSet = drawablePass.mDescriptorSet.size() >= 1 ? drawablePass.mDescriptorSet[bufferIdx] : drawablePass.mDescriptorSet[0]; + vkCmdBindDescriptorSets(vkCmdBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + drawablePass.mPipelineLayout, + 0, + 1, + &vkDescriptorSet, + 0, + NULL); + } + + const auto& shaderPassDescription = drawablePass.mMaterialPass.mShaderPass.m_shaderPassDescription; + if (shaderPassDescription.m_meshName.empty()) + { + // + // Traditional vert (and maybe frag) shader rasterization pipeline + // + const auto& vertexBuffers = vertexBufferOverrides.empty() ? drawablePass.mVertexBuffers : vertexBufferOverrides[bufferIdx % vertexBufferOverrides.size()]; + + if (!vertexBuffers.mVertexBuffers.empty()) + { + // Bind mesh vertex/instance buffer(s) + vkCmdBindVertexBuffers( vkCmdBuffer, + 0, + (uint32_t)vertexBuffers.mVertexBuffers.size(), + vertexBuffers.mVertexBuffers.data(), + vertexBuffers.mVertexBufferOffsets.data() ); + } + if (!vertexBufferOverrides.empty()) + { + assert( vertexBuffers.mVertexBuffers.size() == vertexBuffers.mVertexBufferOffsets.size() ); + assert( vertexBufferOverrides.empty() || vertexBuffers.mVertexBuffers.size() == drawablePass.mVertexBuffers.mVertexBuffers.size() ); + } + + if (drawablePass.mIndexBuffer != VK_NULL_HANDLE) + { + assert( drawablePass.mIndexBufferType != VK_INDEX_TYPE_MAX_ENUM ); + + // Bind index buffer data + vkCmdBindIndexBuffer(vkCmdBuffer, + drawablePass.mIndexBuffer, + 0, + drawablePass.mIndexBufferType); + + if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) + { + if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) + { + // Draw the mesh using draw indirect cont buffer (VkDrawIndexedIndirectCount command) + const auto* drawIndirectCountExt = mGfxApi.GetExtension(); + assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr); + drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(vkCmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); + } + else + // Draw the mesh using draw indirect buffer (VkDrawIndexedIndirectCommand) + vkCmdDrawIndexedIndirect(vkCmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndexedIndirectCommand)); + } + else + { + // Everything is set up, draw the mesh + vkCmdDrawIndexed(vkCmdBuffer, drawablePass.mNumIndices, GetInstances() ? (uint32_t)GetInstances()->GetNumVertices() : 1, 0, 0, 0); + } + } + else + { + if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) + { + if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) + { + // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) + const auto* drawIndirectCountExt = mGfxApi.GetExtension(); + assert( drawIndirectCountExt != nullptr && drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR != nullptr ); + drawIndirectCountExt->m_vkCmdDrawIndexedIndirectCountKHR(vkCmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mDrawIndirectCountBuffer, 0, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); + } + else + // Draw the mesh using draw indirect buffer (VkDrawIndirectCommand - no index buffer) + vkCmdDrawIndirect(vkCmdBuffer, drawablePass.mDrawIndirectBuffer, drawablePass.mDrawIndirectOffset, drawablePass.mNumDrawIndirect, sizeof(VkDrawIndirectCommand)); + } + else + { + // Draw the mesh without index buffer + vkCmdDraw(vkCmdBuffer, drawablePass.mNumVertices, GetInstances() ? (uint32_t)GetInstances()->GetNumVertices() : 1, 0, 0); + } + } + } + else + { + // + // Mesh shader pipeline + // + auto* meshExtension = mGfxApi.GetExtension(); + if (!meshExtension || meshExtension->Status != VulkanExtensionStatus::eLoaded) + assert( 0 && "mesh shader extension not loader or supported" ); + else if (!shaderPassDescription.m_taskName.empty()) + { + // Task, mesh (and frag) shader + meshExtension->m_vkCmdDrawMeshTasksEXT( vkCmdBuffer, mDispatchGroupCount[0], mDispatchGroupCount[1], mDispatchGroupCount[2] ); + } + else + { + // Mesh (and frag) only, no task shader + if (drawablePass.mDrawIndirectBuffer != VK_NULL_HANDLE) + { + if (drawablePass.mDrawIndirectCountBuffer != VK_NULL_HANDLE) + { + // Draw the mesh using Mesh indirect count buffer (vkCmdDrawMeshTasksIndirectCountEXT command) + assert(meshExtension->m_vkCmdDrawMeshTasksIndirectCountEXT != nullptr); + meshExtension->m_vkCmdDrawMeshTasksIndirectCountEXT( + vkCmdBuffer, + drawablePass.mDrawIndirectBuffer, + drawablePass.mDrawIndirectOffset, + drawablePass.mDrawIndirectCountBuffer, + 0, + drawablePass.mNumDrawIndirect, + sizeof(VkDrawMeshTasksIndirectCommandEXT)); + } + else + { + // Draw the mesh using Mesh indirect buffer (vkCmdDrawMeshTasksIndirectEXT) + assert(meshExtension->m_vkCmdDrawMeshTasksIndirectEXT!= nullptr); + meshExtension->m_vkCmdDrawMeshTasksIndirectEXT( + vkCmdBuffer, + drawablePass.mDrawIndirectBuffer, + drawablePass.mDrawIndirectOffset, + drawablePass.mNumDrawIndirect, + sizeof(VkDrawMeshTasksIndirectCommandEXT)); + } + } + } + } +} diff --git a/framework/code/material/vulkan/drawable.hpp b/framework/code/material/vulkan/drawable.hpp new file mode 100644 index 0000000..bae16d5 --- /dev/null +++ b/framework/code/material/vulkan/drawable.hpp @@ -0,0 +1,99 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + + +#include "../drawableLoader.hpp" + +#include "../drawable.hpp" +#include "vulkan/vulkan.hpp" +#include "memory/vulkan/drawIndirectBufferObject.hpp" +#include "memory/vulkan/indexBufferObject.hpp" +#include "memory/vulkan/vertexBufferObject.hpp" +#include "pipeline.hpp" +#include "pipelineVertexInputState.hpp" +#include "vulkan/renderContext.hpp" + + +// Forward Declarations +class MaterialBase; +template class IndexBuffer; +template class Material; +template class MaterialPass; +template class Shader; +template class RenderContext; + +class Vulkan; +struct MeshInstance; + + +/// Collection of VkBuffers for vertex buffer stream(s) (including instance buffers). +/// @ingroup Material +template<> +struct DrawablePassVertexBuffers : public DrawablePassVertexBuffersBase +{ + std::vector mVertexBuffers; + std::vector mVertexBufferOffsets; +}; + +/// Encapsulates a drawable pass. Specialized for Vulkan. +/// Owns the Vulkan pipeline, descriptor sets required by that pipeline. References vertex/index buffers etc from the parent Drawable. +/// Users are expected to use Drawable (which contains a vector of DrawablePasses and is more 'user friendly'). +/// @ingroup Material +template<> +class DrawablePass : public DrawablePassBase +{ + DrawablePass(const DrawablePass&) = delete; + DrawablePass& operator=(const DrawablePass&) = delete; + DrawablePass& operator=( DrawablePass&& ) noexcept = delete; +public: + DrawablePass( DrawablePass&& ) noexcept = default; + DrawablePass() = delete; + ~DrawablePass(); + DrawablePass(const MaterialPass& MaterialPass, + Pipeline Pipeline, + VkPipelineLayout PipelineLayout, + std::vector DescriptorSet, + const PipelineVertexInputState& PipelineVertexInputState, + DrawablePassVertexBuffers VertexBuffers, + VkBuffer IndexBuffer, + VkIndexType IndexBufferType, + VkBuffer DrawIndirectBuffer, + VkBuffer DrawIndirectCountBuffer, + uint32_t NumVertices, + uint32_t NumIndices, + uint32_t NumDrawIndirect, + uint32_t DrawIndirectOffset, + uint32_t PassIdx + ) : mMaterialPass( MaterialPass ), mPipeline( std::move(Pipeline) ), mPipelineLayout( PipelineLayout ), mDescriptorSet( DescriptorSet ), mPipelineVertexInputState( PipelineVertexInputState ), mVertexBuffers( VertexBuffers ), mIndexBuffer( IndexBuffer ), mIndexBufferType( IndexBufferType ), mDrawIndirectBuffer( DrawIndirectBuffer ), mDrawIndirectCountBuffer( DrawIndirectCountBuffer ), mNumVertices( NumVertices ), + mNumIndices( NumIndices), mNumDrawIndirect( NumDrawIndirect), mDrawIndirectOffset( DrawIndirectOffset), mPassIdx( PassIdx) + { + } + + const MaterialPass& mMaterialPass; + Pipeline mPipeline; // Owned by us + VkPipelineLayout mPipelineLayout; // Owned by shader + std::vector mDescriptorSet; // one per NUM_VULKAN_BUFFERS (double/triple buffering) + const PipelineVertexInputState& mPipelineVertexInputState; // contains vertex binding and attribute descriptions + DrawablePassVertexBuffers mVertexBuffers; // contains vkbuffer/offsets; one per mVertexBuffersLookup entry. May be vertex rate or instance rate. + VkBuffer mIndexBuffer = VK_NULL_HANDLE; + VkIndexType mIndexBufferType = VK_INDEX_TYPE_MAX_ENUM; + VkBuffer mDrawIndirectBuffer = VK_NULL_HANDLE; + VkBuffer mDrawIndirectCountBuffer = VK_NULL_HANDLE; + uint32_t mNumVertices; + uint32_t mNumIndices; + uint32_t mNumDrawIndirect; + uint32_t mDrawIndirectOffset; // if non zero offset mDrawIndirectBuffer by this + uint32_t mPassIdx; // index of the bit in Drawable::m_passMask +}; + + +class PipelineRasterizationInfo { + // contents of D3D12_GRAPHICS_PIPELINE_STATE_DESC or VkPipelineRasterizationStateCreateInfo +}; + diff --git a/framework/code/material/vulkan/material.cpp b/framework/code/material/vulkan/material.cpp new file mode 100644 index 0000000..60e506c --- /dev/null +++ b/framework/code/material/vulkan/material.cpp @@ -0,0 +1,17 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "material.hpp" +#include "shader.hpp" +#include "vulkan/vulkan.hpp" +#include +#include "system/os_common.h" +#include "vulkan/TextureFuncts.h" +#include "texture/vulkan/texture.hpp" + + diff --git a/framework/code/material/vulkan/material.hpp b/framework/code/material/vulkan/material.hpp index cd97e65..b113ce9 100644 --- a/framework/code/material/vulkan/material.hpp +++ b/framework/code/material/vulkan/material.hpp @@ -1,12 +1,31 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once +#include "vulkan/vulkan.hpp" +#include "materialPass.hpp" +#include "descriptorSetLayout.hpp" #include "../material.hpp" +#include "../materialT.hpp" #include "specializationConstantsLayout.hpp" -#include "pipelineVertexInputState.hpp" + + +/// @defgroup Material +/// Material and Shader loader. +/// Handles creation of descriptor sets, buffer binding, shader binaries (everything in Vulkan that describes and is used to render a shader). +/// +/// Typically user (application) writes a Json description for each 'Shader' that describes the inputs, outputs, and internal state of the shader, and the shader code (glsl). +/// The user then uses ShaderManagerBase::AddShader to register (and load) each Json file and the shader binaries. +/// +/// From there the user uses MaterialManagerBase::CreateMaterial to create a MaterialBase instance of the Shader (a MaterialBase contains bindings to the various texture/buffer inputs that a Shader requires - there can be many Materials using the same Shader (each MaterialBase with different textures, vertex buffers and/or uniform buffers etc) +/// +/// The MaterialBase returned by CreateMaterial can be used to Create a Drawable or Computable object that wraps everything together with one convenient interface! +/// +/// For more complex models the user should use DrawableLoader::LoadDrawable to load the mesh model file (and return a vector of Drawables). This api greatly simplifies the material creation and binding, splitting model meshes across material boundaries, automatically detecting instances (optionally). +/// + diff --git a/framework/code/material/materialManager.cpp b/framework/code/material/vulkan/materialManager.cpp similarity index 68% rename from framework/code/material/materialManager.cpp rename to framework/code/material/vulkan/materialManager.cpp index 26d44b9..0c2838a 100644 --- a/framework/code/material/materialManager.cpp +++ b/framework/code/material/vulkan/materialManager.cpp @@ -1,45 +1,45 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "materialManager.hpp" #include "descriptorSetLayout.hpp" -#include "vulkan/material.hpp" +#include "material.hpp" #include "shader.hpp" -#include "shaderDescription.hpp" +#include "../shaderDescription.hpp" #include "system/os_common.h" #include "vulkan/vulkan.hpp" #include "texture/vulkan/texture.hpp" -//#include "material/vulkan/specializationConstantsLayout.hpp" #include static_assert(GLM_HAS_CONSTEXPR); template<> -MaterialManagerT::MaterialManagerT() +MaterialManager::MaterialManager(Vulkan& gfxApi) noexcept + : MaterialManagerBase(gfxApi) {} template<> -MaterialManagerT::~MaterialManagerT() +MaterialManager::~MaterialManager() {} template<> -MaterialPass MaterialManagerT::CreateMaterialPassInternal( - Vulkan& vulkan, +MaterialPass MaterialManager::CreateMaterialPassInternal( const ShaderPass& shaderPass, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader, - const std::function& accelerationStructureLoader, + const std::function& textureLoader, + const std::function& bufferLoader, + const std::function(const std::string&)>& imageLoader, + const std::function& accelerationStructureLoader, const std::function& specializationStructureLoader, const std::string& passDebugName) const { - const std::vector& descriptorSetLayouts = shaderPass.GetDescriptorSetLayouts(); + auto& vulkan = static_cast(mGfxApi); + const std::vector>& descriptorSetLayouts = shaderPass.GetDescriptorSetLayouts(); // Copy the Vulkan descriptor set layout handles from our descriptor set layout class. // There may be 'null' layouts in here - denoting descriptor set layouts with 'dynamic' descriptorCount that needs to be calculated from the textureLoader functions. @@ -56,10 +56,10 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( // // Gather the (named) texture and uniform buffer slots (for this material pass) // - MaterialPass::tTextureBindings textureBindings; - MaterialPass::tImageBindings imageBindings; - MaterialPass::tBufferBindings bufferBindings; - MaterialPass::tAccelerationStructureBindings accelerationStructureBindings; + MaterialPass::tTextureBindings textureBindings; + MaterialPass::tImageBindings imageBindings; + MaterialPass::tBufferBindings bufferBindings; + MaterialPass::tAccelerationStructureBindings accelerationStructureBindings; for (size_t layoutIdx = 0; layoutIdx < descriptorSetLayouts.size(); ++layoutIdx) { @@ -77,20 +77,21 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( { uint32_t descriptorCount = 0; const std::string& bindingName = bindingNames.first; - const MaterialPass::MaterialDescriptorBinding binding{uint32_t(layoutIdx)/*set index*/, bindingNames.second}; + const DescriptorSetLayoutBase::DescriptorBinding binding{uint32_t(layoutIdx)/*set index*/, bindingNames.second}; + using DescriptorType = DescriptorSetDescription::DescriptorType; switch (binding.setBinding.type) { - case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: - case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: - case VK_DESCRIPTOR_TYPE_SAMPLER: + case DescriptorType::ImageSampler: + case DescriptorType::ImageSampled: + case DescriptorType::Sampler: { - MaterialPass::tPerFrameTexInfo pTextures = textureLoader(bindingName); // Get the texture(s) and/or samplers from the callback + MaterialManagerBase::tPerFrameTexInfo pTextures = textureLoader(bindingName); // Get the texture(s) and/or samplers from the callback descriptorCount = (uint32_t) pTextures.size(); textureBindings.push_back({ std::move(pTextures), binding }); break; } - case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: - case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: + case DescriptorType::InputAttachment: + case DescriptorType::ImageStorage: { if (imageLoader) { @@ -101,20 +102,21 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( else { // Fallback to using the texture callback - MaterialPass::tPerFrameTexInfo pTextures = textureLoader(bindingName); - std::vector imageInfos; + MaterialManagerBase::tPerFrameTexInfo pTextures = textureLoader(bindingName); + std::vector> imageInfos; descriptorCount = (uint32_t)pTextures.size(); imageInfos.reserve(descriptorCount); for (const auto* pTexture : pTextures) - imageInfos.push_back(ImageInfo(*pTexture)); + imageInfos.push_back( ImageInfo(*pTexture)); imageBindings.push_back({ std::move(imageInfos), binding }); } break; } - case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: - case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: + + case DescriptorType::UniformBuffer: + case DescriptorType::StorageBuffer: { - tPerFrameVkBuffer vkBuffers = bufferLoader(bindingName); // Get the buffer(s) from the callback + PerFrameBufferVulkan vkBuffers = bufferLoader(bindingName); // Get the buffer(s) from the callback descriptorCount = (uint32_t) vkBuffers.size(); bufferBindings.push_back({ std::move(vkBuffers), binding }); break; @@ -124,10 +126,10 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wswitch" #endif // defined(__clang__) - case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: + case DescriptorType::AccelerationStructure: { assert(accelerationStructureLoader && "Needs accelerationStructureLoader function defining"); - MaterialPass::tPerFrameVkAccelerationStructure vkAS = accelerationStructureLoader(bindingName); // Get the buffer(s) from the callback + tPerFrameAccelerationStructure vkAS = accelerationStructureLoader(bindingName); // Get the buffer(s) from the callback accelerationStructureBindings.push_back({ std::move(vkAS), binding }); break; } @@ -135,6 +137,8 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( #pragma clang diagnostic pop #endif // defined(__clang__) #endif // VK_KHR_acceleration_structure + case DescriptorType::Unused: + break; default: assert(0); // needs implementing break; @@ -150,10 +154,10 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( if (vkDescSetLayout == VK_NULL_HANDLE) { // Create the descriptor set layout that is unique to this descriptor set (ideally we share the layouts but in the case of 'dynamic' descriptorCounts we cannot) - vkDescSetLayout = dynamicVkDescriptorSetLayouts.emplace_back(DescriptorSetLayout::CreateVkDescriptorSetLayout(vulkan, vkBindings)); + vkDescSetLayout = dynamicVkDescriptorSetLayouts.emplace_back(DescriptorSetLayout::CreateVkDescriptorSetLayout(vulkan, vkBindings)); // Add counts directly into pool sizes array! - DescriptorSetLayout::CalculatePoolSizes(vkBindings, poolSizes); + DescriptorSetLayout::CalculatePoolSizes(vkBindings, poolSizes); } } @@ -247,21 +251,22 @@ MaterialPass MaterialManagerT::CreateMaterialPassInternal( for (const auto& constantDescription : shaderPassConstantDescriptions) shaderConstantDatas.push_back( specializationStructureLoader( constantDescription.name ) ); - SpecializationConstants specializationConstants; + SpecializationConstants specializationConstants; specializationConstants.Init( shaderPass.GetSpecializationConstantsLayout(), { shaderConstantDatas } ); - return MaterialPass(vulkan, shaderPass, std::move(descriptorPool), std::move(descriptorSets), std::move(dynamicVkDescriptorSetLayouts), std::move(textureBindings), std::move(imageBindings), std::move(bufferBindings), std::move(accelerationStructureBindings), std::move(specializationConstants)); + return MaterialPass(vulkan, shaderPass, std::move(descriptorPool), std::move(descriptorSets), std::move(dynamicVkDescriptorSetLayouts), std::move(textureBindings), std::move(imageBindings), std::move(bufferBindings), std::move(accelerationStructureBindings), std::move(specializationConstants)); } template<> -Material MaterialManagerT::CreateMaterial(Vulkan& vulkan, const ShaderT& shader, uint32_t numFrameBuffers, - const std::function::tPerFrameTexInfo(const std::string&)>& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader, - const std::function::tPerFrameVkAccelerationStructure(const std::string&)>& accelerationStructureLoader, +Material MaterialManager::CreateMaterial(const Shader& shader, uint32_t numFrameBuffers, + const std::function& textureLoader, + const std::function(const std::string&)>& bufferLoader, + const std::function(const std::string&)>& imageLoader, + const std::function& accelerationStructureLoader, const std::function& specializationConstantLoader) const { - Material material( shader, numFrameBuffers ); + auto& vulkan = static_cast(mGfxApi); + Material material( shader, numFrameBuffers ); // We do each pass seperately. const ShaderDescription* pShaderDescription = shader.m_shaderDescription; @@ -271,7 +276,7 @@ Material MaterialManagerT::CreateMaterial(Vulkan& vulkan, const ShaderT< for (uint32_t passIdx = 0; const auto& passName : shader.GetShaderPassIndicesToNames()) { const auto& shaderPass = shaderPasses[passIdx]; - material.AddMaterialPass(passName, CreateMaterialPassInternal(vulkan, shaderPass, numFrameBuffers, textureLoader, bufferLoader, imageLoader, accelerationStructureLoader, specializationConstantLoader, passName)); + material.AddMaterialPass(passName, CreateMaterialPassInternal(shaderPass, numFrameBuffers, textureLoader, bufferLoader, imageLoader, accelerationStructureLoader, specializationConstantLoader, passName)); ++passIdx; } @@ -283,14 +288,20 @@ Material MaterialManagerT::CreateMaterial(Vulkan& vulkan, const ShaderT< return material; } -template<> -Material MaterialManagerT::CreateMaterial(GraphicsApiBase& gfxApi, const Shader& shader, uint32_t numFrameBuffers, - const std::function& textureLoader, - const std::function& bufferLoader, - const std::function& imageLoader, - const std::function& accelerationStructureLoader, - const std::function& specializationConstantLoader) const /*override*/ -{ - return CreateMaterial(static_cast(gfxApi), static_cast&>(shader), numFrameBuffers, - textureLoader, bufferLoader, imageLoader, accelerationStructureLoader, specializationConstantLoader); -} +//template<> +//MaterialBase MaterialManager::CreateMaterial(GraphicsApiBase& gfxApi, const Shader& shader, uint32_t numFrameBuffers, +// const std::function& textureLoader, +// const std::function& bufferLoader, +// const std::function& imageLoader, +// const std::function& accelerationStructureLoader, +// const std::function& specializationConstantLoader) const /*override*/ +//{ +// return CreateMaterial(static_cast(gfxApi), +// static_cast&>(shader), +// numFrameBuffers, +// textureLoader, +// bufferLoader, +// imageLoader, +// accelerationStructureLoader, +// specializationConstantLoader); +//} diff --git a/samples/sdp-cli/code/main/helpers/numerical_aggregator.cpp b/framework/code/material/vulkan/materialManager.hpp similarity index 84% rename from samples/sdp-cli/code/main/helpers/numerical_aggregator.cpp rename to framework/code/material/vulkan/materialManager.hpp index 3199802..f3df88e 100644 --- a/samples/sdp-cli/code/main/helpers/numerical_aggregator.cpp +++ b/framework/code/material/vulkan/materialManager.hpp @@ -5,5 +5,8 @@ // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ +#pragma once + +#include "material.hpp" +#include "../materialManager.hpp" -#include "numerical_aggregator.hpp" diff --git a/framework/code/material/vulkan/materialPass.cpp b/framework/code/material/vulkan/materialPass.cpp new file mode 100644 index 0000000..17c84f1 --- /dev/null +++ b/framework/code/material/vulkan/materialPass.cpp @@ -0,0 +1,409 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "material.hpp" +#include "shader.hpp" +#include "vulkan/vulkan.hpp" +#include +#include "system/os_common.h" +#include "vulkan/TextureFuncts.h" +#include "vulkanRT/accelerationStructure.hpp" +#include "texture/vulkan/texture.hpp" + +static constexpr VkDescriptorType cDescriptorTypeToVk[] { + VK_DESCRIPTOR_TYPE_MAX_ENUM, // unused + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // UniformBuffer + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // StorageBuffer + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // ImageSampler + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, // ImageSampled + VK_DESCRIPTOR_TYPE_SAMPLER, // Sampler + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, // ImageStorage, + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, // InputAttachment, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // DrawIndirectBuffer ///TODO: is this the correct conversion (should we have this descriptor type?) + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, // AccelerationStructure + VK_DESCRIPTOR_TYPE_MAX_ENUM, // descriptor table (not supported by Vk) +}; +static_assert(cDescriptorTypeToVk[(int)DescriptorSetDescription::DescriptorType::AccelerationStructure] == VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR); +static_assert(cDescriptorTypeToVk[(int)DescriptorSetDescription::DescriptorType::Sampler] == VK_DESCRIPTOR_TYPE_SAMPLER); + +static constexpr VkDescriptorType EnumToVk(const DescriptorSetDescription::DescriptorType t) { + return cDescriptorTypeToVk[(int)t]; +} + + + +MaterialPass::MaterialPass(Vulkan& vulkan, const ShaderPass& shaderPass, VkDescriptorPool descriptorPool, std::vector descriptorSets, std::vector dynamicDescriptorSetLayouts, tTextureBindings textureBindings, tImageBindings imageBindings, tBufferBindings bufferBindings, tAccelerationStructureBindings accelerationStructureBindings, SpecializationConstants specializationConstants ) noexcept + : MaterialPassBase(shaderPass) + , mVulkan( vulkan ) + , mNumDescriptorSetsPerBuffer(uint32_t(shaderPass.GetDescriptorSetLayouts().size())) + , mNumBuffers(mNumDescriptorSetsPerBuffer>0 ? uint32_t(descriptorSets.size() / mNumDescriptorSetsPerBuffer) : 0) + , mDescriptorPool(descriptorPool) + , mDescriptorSets(std::move(descriptorSets)) + , mDynamicDescriptorSetLayouts(std::move(dynamicDescriptorSetLayouts)) + , mSpecializationConstants( std::move( specializationConstants ) ) + , mTextureBindings(std::move(textureBindings)) + , mImageBindings(std::move(imageBindings)) + , mBufferBindings(std::move(bufferBindings)) + , mAccelerationStructureBindings( std::move( accelerationStructureBindings ) ) +{ + if (!mDynamicDescriptorSetLayouts.empty()) + mDynamicPipelineLayout.Init(vulkan, mDynamicDescriptorSetLayouts); + assert( mDescriptorSets.size() == mNumBuffers*mNumDescriptorSetsPerBuffer ); + + descriptorPool = VK_NULL_HANDLE; // we took owenership +} + +MaterialPass::MaterialPass(MaterialPass&& other) noexcept + : MaterialPassBase(std::move(other)) + , mVulkan( other.mVulkan ) + , mNumDescriptorSetsPerBuffer( other.mNumDescriptorSetsPerBuffer ) + , mNumBuffers( other.mNumBuffers ) + , mDescriptorPool(other.mDescriptorPool) + , mDescriptorSets(std::move(other.mDescriptorSets)) + , mDynamicDescriptorSetLayouts(std::move(other.mDynamicDescriptorSetLayouts)) + , mDynamicPipelineLayout(std::move(other.mDynamicPipelineLayout)) + , mAccelerationStructureBindings( std::move( other.mAccelerationStructureBindings ) ) + , mTextureBindings(std::move(other.mTextureBindings)) + , mImageBindings(std::move(other.mImageBindings)) + , mBufferBindings(std::move(other.mBufferBindings)) + , mSpecializationConstants( std::move( other.mSpecializationConstants ) ) +{ + other.mDescriptorPool = VK_NULL_HANDLE; +} + +MaterialPass::~MaterialPass() +{ + if (mDescriptorPool != VK_NULL_HANDLE) + { + //if (mDescriptorSet != VK_NULL_HANDLE) + // vkFreeDescriptorSets(mVulkan.m_VulkanDevice, mDescriptorPool, 1, &mDescriptorSet); only if VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT + vkDestroyDescriptorPool(mVulkan.m_VulkanDevice, mDescriptorPool, nullptr); + } + + mDynamicPipelineLayout.Destroy(mVulkan); + + for(auto& layout: mDynamicDescriptorSetLayouts) + vkDestroyDescriptorSetLayout(mVulkan.m_VulkanDevice, layout, nullptr); +} + +bool MaterialPass::UpdateDescriptorSets(uint32_t bufferIdx) +{ + // TODO: All these need to become vectors that can dynamically grow + static const int cMAX_WRITES = 32; + static const int cMAX_IMAGE_INFOS = 1048; + static const int cMAX_BUFFER_INFOS = 1048; + static const int cMAX_ACCELERATIONSTRUCTURE_INFOS = 32; + std::array writeInfo{/*zero it*/ }; + std::array imageInfo{/*zero it*/ }; + std::array bufferInfoFixed/*not initialized*/; + std::vector bufferInfoDynamic; + + // std::vector + + uint32_t writeInfoIdx = 0; + uint32_t imageInfoCount = 0; + uint32_t bufferInfoCount = 0; + const size_t numDescriptorSetsPerFrame = GetShaderPass().GetDescriptorSetLayouts().size(); + const auto descriptorSetBaseIdx = bufferIdx * numDescriptorSetsPerFrame; + + // Go through the textures first + for (const auto& textureBinding : mTextureBindings) + { + uint32_t setIndex = textureBinding.second.setIndex; + uint32_t bindingIndex = textureBinding.second.setBinding.index; + VkDescriptorType bindingType = EnumToVk(textureBinding.second.setBinding.type); + + uint32_t numTexToBind = textureBinding.second.setBinding.isArray ? (uint32_t)textureBinding.first.size() : 1; + uint32_t texIndex = textureBinding.second.setBinding.isArray ? 0 : (bufferIdx % textureBinding.first.size()); + + writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + writeInfo[writeInfoIdx].descriptorType = bindingType; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; + writeInfo[writeInfoIdx].dstBinding = bindingIndex; + writeInfo[writeInfoIdx].dstArrayElement = 0; + writeInfo[writeInfoIdx].descriptorCount = numTexToBind; + writeInfo[writeInfoIdx].pBufferInfo = nullptr; + writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; + for (uint32_t t = 0; t < numTexToBind; ++t, ++imageInfoCount, ++texIndex) + { + if (imageInfoCount >= cMAX_IMAGE_INFOS) + { + LOGE("Max number (%d) of VkDescriptorImageInfo elements reached!", cMAX_IMAGE_INFOS); + assert(0); + return false; + } + + imageInfo[imageInfoCount] = apiCast(textureBinding.first[texIndex])->GetVkDescriptorImageInfo(); + assert(imageInfo[imageInfoCount].imageView != VK_NULL_HANDLE); + } + + ++writeInfoIdx; + if (writeInfoIdx >= cMAX_WRITES) + { + LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); + assert(0); + return false; + } + } + + // Go through the images + for (const auto& imageBinding : mImageBindings) + { + uint32_t setIndex = imageBinding.second.setIndex; + uint32_t bindingIndex = imageBinding.second.setBinding.index; + VkDescriptorType bindingType = EnumToVk(imageBinding.second.setBinding.type); + assert(bindingType != VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER && bindingType != VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE); // combined image sampler or sampled image should go through mTextureBindings + //assert(imageBinding.first.imageLayout == VK_IMAGE_LAYOUT_GENERAL); + + uint32_t numImgToBind = imageBinding.second.setBinding.isArray ? (uint32_t)imageBinding.first.size() : 1; + uint32_t imgIndex = imageBinding.second.setBinding.isArray ? 0 : (bufferIdx % imageBinding.first.size()); + + writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + writeInfo[writeInfoIdx].descriptorType = bindingType; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; + writeInfo[writeInfoIdx].dstBinding = bindingIndex; + writeInfo[writeInfoIdx].dstArrayElement = 0; + writeInfo[writeInfoIdx].descriptorCount = numImgToBind; + writeInfo[writeInfoIdx].pBufferInfo = nullptr; + writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; + for (uint32_t t = 0; t < numImgToBind; ++t, ++imageInfoCount, ++imgIndex) + { + if (imageInfoCount >= cMAX_IMAGE_INFOS) + { + LOGE("Max number (%d) of VkDescriptorImageInfo elements reached!", cMAX_IMAGE_INFOS); + assert(0); + return false; + } + + imageInfo[imageInfoCount].sampler = VK_NULL_HANDLE; + imageInfo[imageInfoCount].imageView = imageBinding.first[imgIndex].imageView; + imageInfo[imageInfoCount].imageLayout = imageBinding.first[imgIndex].imageLayout; + assert(imageBinding.first[imgIndex].imageView != VK_NULL_HANDLE); + } + ++writeInfoIdx; + + if (writeInfoIdx >= cMAX_WRITES) + { + LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); + assert(0); + return false; + } + } + + // Now do the buffers + + for (const auto& bufferBinding : mBufferBindings) + { + bufferInfoCount += bufferBinding.second.setBinding.isArray ? (uint32_t) bufferBinding.first.size() : 1; + } + auto* pBufferInfo = bufferInfoFixed.data(); + if (bufferInfoCount > cMAX_BUFFER_INFOS) + { + bufferInfoDynamic.resize( bufferInfoCount ); + pBufferInfo = bufferInfoDynamic.data(); + } + + for (const auto& bufferBinding : mBufferBindings) + { + uint32_t setIndex = bufferBinding.second.setIndex; + uint32_t bindingIndex = bufferBinding.second.setBinding.index; + VkDescriptorType bindingType = EnumToVk(bufferBinding.second.setBinding.type); + + uint32_t numBuffersToBind = bufferBinding.second.setBinding.isArray ? (uint32_t)bufferBinding.first.size() : 1; + uint32_t bufferIndex = bufferBinding.second.setBinding.isArray ? 0 : (bufferIdx % bufferBinding.first.size()); + + writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + writeInfo[writeInfoIdx].descriptorType = bindingType; + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; + writeInfo[writeInfoIdx].dstBinding = bindingIndex; + writeInfo[writeInfoIdx].dstArrayElement = 0; + writeInfo[writeInfoIdx].descriptorCount = numBuffersToBind; + writeInfo[writeInfoIdx].pBufferInfo = pBufferInfo; + writeInfo[writeInfoIdx].pImageInfo = nullptr; + + for (uint32_t t = 0; t < numBuffersToBind; ++t, ++bufferIndex) + { + pBufferInfo->buffer = bufferBinding.first[bufferIndex].buffer(); + pBufferInfo->offset = bufferBinding.first[bufferIndex].offset(); + pBufferInfo->range = VK_WHOLE_SIZE; + ++pBufferInfo; + } + + ++writeInfoIdx; + if (writeInfoIdx >= cMAX_WRITES) + { + LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); + assert(0); + return false; + } + } + +#if VK_KHR_acceleration_structure + // And the acceleration structures + std::array accelerationStructureInfo{}; + uint32_t accelerationStructureCount = 0; + + for (const auto& accelerationBinding : mAccelerationStructureBindings) + { + uint32_t setIndex = accelerationBinding.second.setIndex; + uint32_t bindingIndex = accelerationBinding.second.setBinding.index; + VkDescriptorType bindingType = EnumToVk(accelerationBinding.second.setBinding.type); + + uint32_t numAccelToBind = accelerationBinding.second.setBinding.isArray ? (uint32_t)accelerationBinding.first.size() : 1; + uint32_t accelIndex = accelerationBinding.second.setBinding.isArray ? 0 : (bufferIdx < accelerationBinding.first.size() ? bufferIdx : 0); + + if (writeInfoIdx >= cMAX_WRITES) + { + LOGE("Max number (%d) of VkWriteDescriptorSet elements reached!", cMAX_WRITES); + assert(0); + return false; + } + + if (accelerationStructureCount >= cMAX_ACCELERATIONSTRUCTURE_INFOS) + { + LOGE("Max number (%d) of VkWriteDescriptorSetAccelerationStructureKHR elements reached!", cMAX_ACCELERATIONSTRUCTURE_INFOS); + assert(0); + return false; + } + + const auto* pAs = apiCast(accelerationBinding.first[accelIndex]); + accelerationStructureInfo[accelerationStructureCount].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR; + accelerationStructureInfo[accelerationStructureCount].accelerationStructureCount = 1; + accelerationStructureInfo[accelerationStructureCount].pAccelerationStructures = &pAs->GetVkAccelerationStructure(); + + writeInfo[writeInfoIdx].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + writeInfo[writeInfoIdx].descriptorType = bindingType;//VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR + writeInfo[writeInfoIdx].dstSet = mDescriptorSets[descriptorSetBaseIdx + setIndex]; + writeInfo[writeInfoIdx].dstBinding = bindingIndex; + writeInfo[writeInfoIdx].dstArrayElement = 0; + writeInfo[writeInfoIdx].descriptorCount = accelerationStructureInfo[accelerationStructureCount].accelerationStructureCount; + writeInfo[writeInfoIdx].pBufferInfo = nullptr; + writeInfo[writeInfoIdx].pImageInfo = nullptr; + writeInfo[writeInfoIdx].pNext = &accelerationStructureInfo[accelerationStructureCount]; + ++writeInfoIdx; + ++accelerationStructureCount; + + } +#endif // VK_KHR_acceleration_structure + + // LOGI("Updating Descriptor Set (bufferIdx %d) with %d objects", bufferIdx, writeInfoIdx); + vkUpdateDescriptorSets(mVulkan.m_VulkanDevice, writeInfoIdx, writeInfo.data(), 0, NULL); + // LOGI("Descriptor Set Updated!"); + + return true; +} + +bool MaterialPass::UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const Texture& newTexture) const +{ + std::array writeInfo{ {VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET} }; + std::array imageInfo{/*zero it*/ }; + + uint32_t writeInfoIdx = 0; + uint32_t imageInfoCount = 0; + + for (int setIdx = 0; const auto & setLayout : GetShaderPass().GetDescriptorSetLayouts()) + { + const auto& nameToBinding = setLayout.GetNameToBinding(); + const auto bindingIt = nameToBinding.find( bindingName ); + if (bindingIt != nameToBinding.end()) + { + const auto& descriptorSet = GetVkDescriptorSet( bufferIdx, setIdx ); + VkDescriptorType bindingType = EnumToVk(bindingIt->second.type); + assert( bindingType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || bindingType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE || bindingType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE); + + uint32_t bindingIndex = bindingIt->second.index; + + writeInfo[writeInfoIdx].descriptorType = bindingType; + writeInfo[writeInfoIdx].dstSet = descriptorSet; + writeInfo[writeInfoIdx].dstBinding = bindingIndex; + writeInfo[writeInfoIdx].dstArrayElement = 0; + writeInfo[writeInfoIdx].descriptorCount = 1; + writeInfo[writeInfoIdx].pBufferInfo = nullptr; + writeInfo[writeInfoIdx].pImageInfo = &imageInfo[imageInfoCount]; + imageInfo[imageInfoCount] = newTexture.GetVkDescriptorImageInfo(); + + ++imageInfoCount; + ++writeInfoIdx; + + vkUpdateDescriptorSets( mVulkan.m_VulkanDevice, writeInfoIdx, writeInfo.data(), 0, NULL ); + return true; + } + ++setIdx; + } + assert( 0 && "Binding name not found" ); + return false; +} + + +ImageInfo::ImageInfo(const Texture& t) +: image(t.GetVkImage()) +, imageView(t.GetVkImageView()) +, imageViewNumMips(t.MipLevels) +, imageViewFirstMip(t.FirstMip) +, imageLayout( t.GetVkImageLayout() ) +{ +} + +ImageInfo::ImageInfo(const TextureBase& t) : ImageInfo( apiCast(t) ) +{ +} + +ImageInfo::ImageInfo(const ImageInfo& src) +: image(src.image) +, imageView(src.imageView) +, imageLayout( src.imageLayout ) +, imageViewNumMips( src.imageViewNumMips ) +, imageViewFirstMip( src.imageViewFirstMip ) +{ +} + +ImageInfo::ImageInfo( ImageInfo&& src ) noexcept + : ImageInfoBase() + , image( src.image ) + , imageView( src.imageView ) + , imageLayout( src.imageLayout ) + , imageViewNumMips( src.imageViewNumMips ) + , imageViewFirstMip( src.imageViewFirstMip ) +{ + src.image = VK_NULL_HANDLE; + src.imageView = VK_NULL_HANDLE; + src.imageLayout = VK_IMAGE_LAYOUT_UNDEFINED; + src.imageViewNumMips = 0; + src.imageViewFirstMip = 0; +} + +ImageInfo& ImageInfo::operator=(ImageInfo&& src) noexcept +{ + if (this != &src) + { + image = src.image; + imageView = src.imageView; + imageLayout = src.imageLayout; + imageViewNumMips = src.imageViewNumMips; + imageViewFirstMip = src.imageViewFirstMip; + src.image = VK_NULL_HANDLE; + src.imageView = VK_NULL_HANDLE; + src.imageLayout = VK_IMAGE_LAYOUT_UNDEFINED; + src.imageViewNumMips = 0; + src.imageViewFirstMip = 0; + } + return *this; +} + +ImageInfo& ImageInfo::operator=( const ImageInfo& src) noexcept +{ + if (this != &src) + { + image = src.image; + imageView = src.imageView; + imageLayout = src.imageLayout; + imageViewNumMips = src.imageViewNumMips; + imageViewFirstMip = src.imageViewFirstMip; + } + return *this; +} diff --git a/framework/code/material/vulkan/materialPass.hpp b/framework/code/material/vulkan/materialPass.hpp new file mode 100644 index 0000000..d8d8ef6 --- /dev/null +++ b/framework/code/material/vulkan/materialPass.hpp @@ -0,0 +1,108 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include "vulkan/vulkan.hpp" +#include "../descriptorSetLayout.hpp" +#include "shader.hpp" +#include "pipelineLayout.hpp" +#include "specializationConstants.hpp" +#include "specializationConstantsLayout.hpp" +#include "../materialManager.hpp" +#include "../materialPass.hpp" + + +// Forward declarations +class TextureBase; +template struct ImageInfo; +template class PipelineLayout; +template class ShaderPass; +template class Texture; + +using VkBufferAndOffset = BufferAndOffset; +using PerFrameBufferVulkan = PerFrameBuffer; + + +/// Reference to a VkImage. +/// Does not have ownership over referenced VkImage or VkImageView and lifetime of those object should be longer than the referencing @ImageInfo (no reference counting). +/// @ingroup Material +template<> +struct ImageInfo : public ImageInfoBase { + ImageInfo() noexcept : ImageInfoBase() {} + ImageInfo( ImageInfo&&) noexcept; + ImageInfo& operator=(ImageInfo&&) noexcept; + ImageInfo& operator=(const ImageInfo&) noexcept; + ImageInfo(const ImageInfo&); + ImageInfo(const Texture&); + ImageInfo(const TextureBase&); + VkImage image = VK_NULL_HANDLE; + VkImageView imageView = VK_NULL_HANDLE; + uint32_t imageViewNumMips = 0; + uint32_t imageViewFirstMip = 0; + VkImageLayout imageLayout = VK_IMAGE_LAYOUT_GENERAL; +}; + + + +/// An instance of a ShaderPass material. +/// Template class specialization for Vulkan +/// @ingroup Material +template<> +class MaterialPass final : public MaterialPassBase +{ + MaterialPass(const MaterialPass&) = delete; + MaterialPass& operator=(const MaterialPass&) = delete; +public: + + typedef std::vector > tPerFrameImageInfo; + + typedef std::vector > tTextureBindings; + typedef std::vector > tImageBindings; + typedef std::vector > tBufferBindings; + typedef std::vector > tAccelerationStructureBindings; + + MaterialPass(Vulkan& vulkan, const ShaderPass&, VkDescriptorPool, std::vector, std::vector dynamicDescriptorSetLayouts, tTextureBindings, tImageBindings, tBufferBindings, tAccelerationStructureBindings, SpecializationConstants) noexcept; + MaterialPass(MaterialPass&&) noexcept; + ~MaterialPass(); + + const auto& GetShaderPass() const { return apiCast( mShaderPass ); } + + /// Get the descriptor set for the (numbered) frame buffer index, allows for a single descriptor set identical for all frames if required. + const auto& GetVkDescriptorSet(uint32_t bufferIndex, int32_t setIndex) const { return mDescriptorSets[mDescriptorSets.size() > 1 ? bufferIndex : 0]; } + const std::span GetVkDescriptorSets( uint32_t bufferIndex ) const { return {&mDescriptorSets[(bufferIndex % mNumBuffers) * mNumDescriptorSetsPerBuffer], mNumDescriptorSetsPerBuffer}; } + const auto& GetVkDescriptorSets() const { return mDescriptorSets; } + const auto& GetPipelineLayout() const { return mDynamicPipelineLayout; } + const auto& GetSpecializationConstants() const { return mSpecializationConstants; }; + + const auto& GetTextureBindings() const { return mTextureBindings; } + const auto& GetImageBindings() const { return mImageBindings; } + const auto& GetBufferBindings() const { return mBufferBindings; } + + bool UpdateDescriptorSets(uint32_t bufferIdx); + bool UpdateDescriptorSetBinding(uint32_t bufferIdx, const std::string& bindingName, const Texture& newTexture) const; + +protected: + Vulkan& mVulkan; + + // Helpers for size of mDescriptorSets + const uint32_t mNumDescriptorSetsPerBuffer; ///< number of descriptor sets needed by the shader(pass). Usually 1 but some shaders will use more then one secriptor set. + const uint32_t mNumBuffers; ///< Number of buffers worth of descriptors (may be 1, or number of framebuffers, or something else) + + // Vulkan objects + VkDescriptorPool mDescriptorPool; + std::vector mDescriptorSets; ///< array of descriptor sets (mNumDescriptorSetsPerBuffer * mNumBuffers)) + std::vector mDynamicDescriptorSetLayouts;///< array of descriptor set layouts specific for to this materialPass (usually they are shared across all materials with a specific shader, except in the case of descriptor sets that are 'dynamically' sized to fit the material specific contents) + PipelineLayout mDynamicPipelineLayout; ///< pipeline layout specific to this materiaPass (usually shaderPass contains the pipeline layout but for materials with 'dynamic' descriptor set layouts we have to have a unique pipeline per materialPass + SpecializationConstants mSpecializationConstants; ///< block of specialization constants for this material pass + + tTextureBindings mTextureBindings; ///< Images (textures) (with sampler) considered readonly + tImageBindings mImageBindings; ///< Images that may be bound as writable (or read/write). + tBufferBindings mBufferBindings; + tAccelerationStructureBindings mAccelerationStructureBindings; +}; diff --git a/framework/code/material/vulkan/pipeline.cpp b/framework/code/material/vulkan/pipeline.cpp new file mode 100644 index 0000000..b002e17 --- /dev/null +++ b/framework/code/material/vulkan/pipeline.cpp @@ -0,0 +1,209 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "vulkan/vulkan.hpp" +#include "vulkan/renderContext.hpp" +#include "pipeline.hpp" +#include "pipelineLayout.hpp" +#include "pipelineVertexInputState.hpp" +#include "shader.hpp" +#include "shaderModule.hpp" +#include "specializationConstants.hpp" +#include "../shaderDescription.hpp" + +// Forward declarations +class Vulkan; + + +Pipeline::Pipeline() noexcept + : mPipeline{} +{ +} + +Pipeline::Pipeline(VkDevice device, VkPipeline pipeline) noexcept + : mPipeline( device, pipeline ) +{ +} + +Pipeline::~Pipeline() +{} + +static VkBlendFactor EnumToVk( ShaderPassDescription::BlendFactor bf) +{ + switch( bf ) + { + case ShaderPassDescription::BlendFactor::Zero: + return VK_BLEND_FACTOR_ZERO; + case ShaderPassDescription::BlendFactor::One: + return VK_BLEND_FACTOR_ONE; + case ShaderPassDescription::BlendFactor::SrcAlpha: + return VK_BLEND_FACTOR_SRC_ALPHA; + case ShaderPassDescription::BlendFactor::OneMinusSrcAlpha: + return VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA; + case ShaderPassDescription::BlendFactor::DstAlpha: + return VK_BLEND_FACTOR_DST_ALPHA; + case ShaderPassDescription::BlendFactor::OneMinusDstAlpha: + return VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA; + } + assert( 0 ); + return VK_BLEND_FACTOR_ZERO; +} + +template<> +Pipeline CreatePipeline( Vulkan& vulkan, + const ShaderPassDescription& shaderPassDescription, + const PipelineLayout& pipelineLayout, + const PipelineVertexInputState& pipelineVertexInputState, + const PipelineRasterizationState& pipelineRasterizationState, + const SpecializationConstants& specializationConstants, + const ShaderModules& shaderModules, + const RenderContext& renderingPassContext, + Msaa msaa) +{ + //// State for rasterization, such as polygon fill mode is defined. + const auto& fixedFunctionSettings = shaderPassDescription.m_fixedFunctionSettings; + + const auto& outputSettings = shaderPassDescription.m_outputs; + + // Setup blending/transparency + std::vector BlendStates; + BlendStates.reserve(outputSettings.size()); + for (const auto& outputSetting : outputSettings) + { + VkPipelineColorBlendAttachmentState& cb = BlendStates.emplace_back(VkPipelineColorBlendAttachmentState{}); + if (outputSetting.blendEnable) + { + cb.blendEnable = VK_TRUE; + cb.srcColorBlendFactor = EnumToVk(outputSetting.srcColorBlendFactor); + cb.dstColorBlendFactor = EnumToVk(outputSetting.dstColorBlendFactor); + cb.colorBlendOp = VK_BLEND_OP_ADD; + cb.srcAlphaBlendFactor = EnumToVk(outputSetting.srcAlphaBlendFactor); + cb.dstAlphaBlendFactor = EnumToVk(outputSetting.dstAlphaBlendFactor); + cb.alphaBlendOp = VK_BLEND_OP_ADD; + } + cb.colorWriteMask = outputSetting.colorWriteMask & (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT); + } + + VkPipelineColorBlendStateCreateInfo cb = {}; + cb.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; + cb.attachmentCount = (uint32_t)BlendStates.size(); + cb.pAttachments = BlendStates.data(); + + // Setup depth testing + VkPipelineDepthStencilStateCreateInfo ds = {}; + ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; + ds.depthTestEnable = fixedFunctionSettings.depthTestEnable ? VK_TRUE : VK_FALSE; + ds.depthWriteEnable = fixedFunctionSettings.depthWriteEnable ? VK_TRUE : VK_FALSE; + switch( fixedFunctionSettings.depthCompareOp ) { + case ShaderPassDescription::DepthCompareOp::LessEqual: + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + break; + case ShaderPassDescription::DepthCompareOp::Equal: + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + break; + case ShaderPassDescription::DepthCompareOp::Greater: + ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; + break; + } + ds.depthBoundsTestEnable = VK_FALSE; + ds.back.failOp = VK_STENCIL_OP_KEEP; + ds.back.passOp = VK_STENCIL_OP_KEEP; + ds.back.compareOp = VK_COMPARE_OP_ALWAYS; + ds.stencilTestEnable = VK_FALSE; + ds.front = ds.back; + + // Setup (multi) sampling + const auto& sampleShadingSettings = shaderPassDescription.m_sampleShadingSettings; + VkSampleMask sampleMask = 0; + VkPipelineMultisampleStateCreateInfo ms = {VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO}; + ms.rasterizationSamples = EnumToVk(msaa); + ms.sampleShadingEnable = sampleShadingSettings.sampleShadingEnable; + if (sampleShadingSettings.sampleShadingMask != 0) + { + assert(ms.rasterizationSamples <= VK_SAMPLE_COUNT_32_BIT ); // sampleMask is only 32bits currently! Easy fix if we want > 32x MSAA + sampleMask = sampleShadingSettings.sampleShadingMask & ((1 << ms.rasterizationSamples) -1); + ms.pSampleMask = &sampleMask; + } + + VkPipelineSampleLocationsStateCreateInfoEXT msLocations = { VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT }; + if( sampleShadingSettings.forceCenterSample ) + { + msLocations.sampleLocationsEnable = VK_TRUE; + msLocations.sampleLocationsInfo.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT; + msLocations.sampleLocationsInfo.sampleLocationsPerPixel = ms.rasterizationSamples; + msLocations.sampleLocationsInfo.sampleLocationsCount = (uint32_t) ms.rasterizationSamples; + msLocations.sampleLocationsInfo.sampleLocationGridSize = { 1,1 }; + std::vector msSampleLocations( msLocations.sampleLocationsInfo.sampleLocationsCount, { 0.5f,0.5f } ); + msLocations.sampleLocationsInfo.pSampleLocations = msSampleLocations.data(); + ms.pNext = &msLocations; + } + + VkShaderModule vkVertShader = VK_NULL_HANDLE; + VkShaderModule vkFragShader = VK_NULL_HANDLE; + VkShaderModule vkTaskShader = VK_NULL_HANDLE; + VkShaderModule vkMeshShader = VK_NULL_HANDLE; + std::visit( [&]( auto& m ) + { + using T = std::decay_t; + if constexpr (std::is_same_v>) + { + vkVertShader = m.vert.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } + else if constexpr (std::is_same_v>) + { + vkVertShader = m.vert.GetVkShaderModule(); + } + else if constexpr (std::is_same_v>) + { + vkMeshShader = m.mesh.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } + else if constexpr (std::is_same_v>) + { + vkTaskShader = m.task.GetVkShaderModule(); + vkMeshShader = m.mesh.GetVkShaderModule(); + vkFragShader = m.frag.GetVkShaderModule(); + } + else + { + assert( 0 ); // unsupported shader module type (eg ComputeShaderModule) + } + }, shaderModules.m_modules ); + + VkPipeline pipeline = VK_NULL_HANDLE; + if (!vulkan.CreatePipeline( vulkan.GetPipelineCache(), + &pipelineVertexInputState.GetVkPipelineVertexInputStateCreateInfo(), + pipelineLayout.GetVkPipelineLayout(), + renderingPassContext, + &pipelineRasterizationState.mPipelineRasterizationStateCreateInfo, + &ds, + BlendStates.empty() ? nullptr : &cb, + &ms, + nullptr,//input assembly state + {},//dynamic states + nullptr/*viewport*/, nullptr/*scissor*/, + vkTaskShader, + vkMeshShader, + vkVertShader, + vkFragShader, + specializationConstants.GetVkSpecializationInfo(), + false, + VK_NULL_HANDLE, + &pipeline)) + { + // Error + return {}; + } + return Pipeline(vulkan.m_VulkanDevice, pipeline); +} + +void ReleasePipeline(Vulkan& vulkan, Pipeline& pipeline) +{ + pipeline = {}; +} \ No newline at end of file diff --git a/framework/code/material/vulkan/pipeline.hpp b/framework/code/material/vulkan/pipeline.hpp new file mode 100644 index 0000000..d866dcc --- /dev/null +++ b/framework/code/material/vulkan/pipeline.hpp @@ -0,0 +1,61 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include "vulkan/refHandle.hpp" +#include "pipelineVertexInputState.hpp" +#include "../pipeline.hpp" + +// Forward declarations +class ShaderPassDescription; +class Vulkan; +enum class Msaa; +template class PipelineLayout; +template class ShaderModules; +template class SpecializationConstants; + + +/// Simple wrapper around VkPipeline. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// Specialization of Pipeline +/// @ingroup Material +template<> +class Pipeline final +{ + Pipeline& operator=(const Pipeline&) = delete; +public: + Pipeline() noexcept; + ~Pipeline(); + Pipeline( VkDevice device, VkPipeline pipeline ) noexcept; + Pipeline( Pipeline&& ) noexcept = default; + Pipeline& operator=( Pipeline&& ) noexcept = default; + + Pipeline Copy() const { return Pipeline{*this}; } + + operator bool() const { return mPipeline != VK_NULL_HANDLE; } + + VkPipeline GetVkPipeline() const { return mPipeline.get(); } + +private: + Pipeline( const Pipeline& src ) noexcept { + mPipeline = src.mPipeline; + } + RefHandle mPipeline; +}; + +template<> +Pipeline CreatePipeline( Vulkan& vulkan, + const ShaderPassDescription& shaderPassDescription, + const PipelineLayout& pipelineLayout, + const PipelineVertexInputState& pipelineVertexInputState, + const PipelineRasterizationState& pipelineRasterizationState, + const SpecializationConstants& specializationConstants, + const ShaderModules& shaderModules, + const RenderContext& renderContext, + Msaa msaa ); \ No newline at end of file diff --git a/framework/code/material/vulkan/pipelineLayout.cpp b/framework/code/material/vulkan/pipelineLayout.cpp index c2f92d2..2258b68 100644 --- a/framework/code/material/vulkan/pipelineLayout.cpp +++ b/framework/code/material/vulkan/pipelineLayout.cpp @@ -1,14 +1,15 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "pipelineLayout.hpp" -#include "material/descriptorSetLayout.hpp" +#include "descriptorSetLayout.hpp" #include "vulkan/vulkan.hpp" +#include "texture/sampler.hpp" PipelineLayout::PipelineLayout() noexcept {} @@ -33,8 +34,9 @@ void PipelineLayout::Destroy(Vulkan& vulkan) } } -bool PipelineLayout::Init(Vulkan& vulkan, const std::span descriptorSetLayouts) +bool PipelineLayout::Init(Vulkan& vulkan, const std::span> descriptorSetLayouts, const std::span rootSamplers) { + assert(rootSamplers.empty()); // not supported in Vulkan std::vector vkDescriptorSetLayouts; vkDescriptorSetLayouts.reserve(descriptorSetLayouts.size()); for (const auto& descriptorSetLayout : descriptorSetLayouts) diff --git a/framework/code/material/vulkan/pipelineLayout.hpp b/framework/code/material/vulkan/pipelineLayout.hpp index 4db4ba5..3ae9838 100644 --- a/framework/code/material/vulkan/pipelineLayout.hpp +++ b/framework/code/material/vulkan/pipelineLayout.hpp @@ -1,20 +1,21 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include -#include +#include #include #include "material/pipelineLayout.hpp" // Forward declarations class Vulkan; -class DescriptorSetLayout; +template class DescriptorSetLayout; +struct CreateSamplerObjectInfo; /// Simple wrapper around VkPipelineLayout. @@ -31,7 +32,9 @@ class PipelineLayout PipelineLayout(PipelineLayout&&) noexcept; ~PipelineLayout(); - bool Init(Vulkan& vulkan, const std::span); + operator bool() const { return m_pipelineLayout != VK_NULL_HANDLE; } + + bool Init(Vulkan& vulkan, const std::span>, const std::span); bool Init(Vulkan& vulkan, const std::span vkDescriptorSetLayouts); void Destroy(Vulkan& vulkan); diff --git a/framework/code/material/vulkan/pipelineVertexInputState.cpp b/framework/code/material/vulkan/pipelineVertexInputState.cpp index 543f19b..80a92c0 100644 --- a/framework/code/material/vulkan/pipelineVertexInputState.cpp +++ b/framework/code/material/vulkan/pipelineVertexInputState.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,7 +11,8 @@ #include "vertexDescription.hpp" -PipelineVertexInputState::PipelineVertexInputState(const ShaderDescription& shaderDescription, const std::vector& buffersToBind) noexcept : mVisci{ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO } +PipelineVertexInputState::PipelineVertexInputState(const ShaderDescription& shaderDescription, const std::vector& buffersToBind) noexcept + : mVisci{ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO } { mBindings.reserve(buffersToBind.size()); uint32_t location = 0; @@ -44,3 +45,26 @@ PipelineVertexInputState::PipelineVertexInputState(PipelineVertexInputSt mVisci = other.mVisci; other.mVisci = {}; } + + +PipelineRasterizationState::PipelineRasterizationState( const ShaderPassDescription& shaderPassDescription ) noexcept + : mPipelineRasterizationStateCreateInfo() +{ + const auto& fixedFunctionSettings = shaderPassDescription.m_fixedFunctionSettings; + + //// State for rasterization, such as polygon fill mode is defined. + mPipelineRasterizationStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; + mPipelineRasterizationStateCreateInfo.polygonMode = VK_POLYGON_MODE_FILL; + mPipelineRasterizationStateCreateInfo.cullMode = (fixedFunctionSettings.cullBackFace ? VK_CULL_MODE_BACK_BIT : 0) | (fixedFunctionSettings.cullFrontFace ? VK_CULL_MODE_FRONT_BIT : 0); + mPipelineRasterizationStateCreateInfo.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + mPipelineRasterizationStateCreateInfo.depthClampEnable = fixedFunctionSettings.depthClampEnable ? VK_TRUE : VK_FALSE; + mPipelineRasterizationStateCreateInfo.rasterizerDiscardEnable = VK_FALSE; + mPipelineRasterizationStateCreateInfo.depthBiasEnable = fixedFunctionSettings.depthBiasEnable ? VK_TRUE : VK_FALSE; + if (fixedFunctionSettings.depthBiasEnable) + { + mPipelineRasterizationStateCreateInfo.depthBiasConstantFactor = fixedFunctionSettings.depthBiasConstant; + mPipelineRasterizationStateCreateInfo.depthBiasClamp = fixedFunctionSettings.depthBiasClamp; + mPipelineRasterizationStateCreateInfo.depthBiasSlopeFactor = fixedFunctionSettings.depthBiasSlope; + } + mPipelineRasterizationStateCreateInfo.lineWidth = 1.0f; +} diff --git a/framework/code/material/vulkan/pipelineVertexInputState.hpp b/framework/code/material/vulkan/pipelineVertexInputState.hpp index a10e692..45d84d4 100644 --- a/framework/code/material/vulkan/pipelineVertexInputState.hpp +++ b/framework/code/material/vulkan/pipelineVertexInputState.hpp @@ -1,17 +1,18 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include -#include -#include "material/pipelineVertexInputState.hpp" +#include +#include "../pipelineVertexInputState.hpp" // Forward declarations +class ShaderPassDescription; class ShaderDescription; class Vulkan; @@ -19,7 +20,7 @@ class Vulkan; /// Helper for making VkPipelineVertexInputStateCreateInfo. /// @ingroup Material template<> -class PipelineVertexInputState +class PipelineVertexInputState : public PipelineVertexInputStateBase { PipelineVertexInputState(const PipelineVertexInputState&) = delete; PipelineVertexInputState& operator=(const PipelineVertexInputState&) = delete; @@ -33,3 +34,16 @@ class PipelineVertexInputState std::vector mAttributes; }; + +template<> +class PipelineRasterizationState : public PipelineRasterizationStateBase +{ + PipelineRasterizationState( const PipelineRasterizationState& ) = delete; + PipelineRasterizationState& operator=( const PipelineRasterizationState& ) = delete; +public: + PipelineRasterizationState( const ShaderPassDescription& shaderPassDescription ) noexcept; + + VkPipelineRasterizationStateCreateInfo mPipelineRasterizationStateCreateInfo { + .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO + }; +}; diff --git a/framework/code/material/vulkan/shader.cpp b/framework/code/material/vulkan/shader.cpp index 4393b94..0d94ad6 100644 --- a/framework/code/material/vulkan/shader.cpp +++ b/framework/code/material/vulkan/shader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,3 +11,9 @@ #include "material/descriptorSetLayout.hpp" #include "pipelineLayout.hpp" #include + +ShaderPassBase::ShaderPassBase( ShaderPassBase&& other ) noexcept + : m_shaderPassDescription( other.m_shaderPassDescription ) +{ + assert( 0 ); // should not use this function +} diff --git a/framework/code/material/vulkan/shader.hpp b/framework/code/material/vulkan/shader.hpp index 79232ec..edeb425 100644 --- a/framework/code/material/vulkan/shader.hpp +++ b/framework/code/material/vulkan/shader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,14 +12,15 @@ #include #include #include -#include -#include "material/shader.hpp" +#include #include "pipelineLayout.hpp" #include "pipelineVertexInputState.hpp" -#include "material/specializationConstantsLayout.hpp" +#include "specializationConstantsLayout.hpp" +#include "shaderModule.hpp" +#include "../shader.hpp" // forward declarations -class DescriptorSetLayout; +class DescriptorSetLayoutBase; class ShaderDescription; -template class ShaderModuleT; +template class ShaderModule; class ShaderPassDescription; diff --git a/framework/code/material/vulkan/shaderManager.hpp b/framework/code/material/vulkan/shaderManager.hpp new file mode 100644 index 0000000..dbb2fdb --- /dev/null +++ b/framework/code/material/vulkan/shaderManager.hpp @@ -0,0 +1,11 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "shader.hpp" +#include "../shaderManagerT.hpp" diff --git a/framework/code/material/vulkan/shaderModule.cpp b/framework/code/material/vulkan/shaderModule.cpp index 2aa8cb0..5522143 100644 --- a/framework/code/material/vulkan/shaderModule.cpp +++ b/framework/code/material/vulkan/shaderModule.cpp @@ -1,43 +1,41 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "shaderModule.hpp" -#include #include -#include #include "material/shaderDescription.hpp" #include "vertexDescription.hpp" #include "vulkan/vulkan.hpp" #include "system/assetManager.hpp" -ShaderModuleT::ShaderModuleT() noexcept : ShaderModule() +ShaderModule::ShaderModule() noexcept : ShaderModuleBase() , m_shader(VK_NULL_HANDLE) { } /// Destructor. Will assert if a shader was loaded and the matching Destroy was not called. -ShaderModuleT::~ShaderModuleT() +ShaderModule::~ShaderModule() { assert(m_shader == VK_NULL_HANDLE); } -void ShaderModuleT::Destroy(Vulkan& vulkan) +void ShaderModule::Destroy(Vulkan& vulkan) { if (m_shader != VK_NULL_HANDLE) { vkDestroyShaderModule(vulkan.m_VulkanDevice, m_shader, nullptr); m_shader = VK_NULL_HANDLE; } - ShaderModule::Destroy(); + ShaderModuleBase::Destroy(); } -bool ShaderModuleT::Load(Vulkan& vulkan, AssetManager& assetManager, const std::string& filename) +bool ShaderModule::Load(Vulkan& vulkan, AssetManager& assetManager, const std::string& filename) { bool success = true; Destroy(vulkan); @@ -74,7 +72,7 @@ bool ShaderModuleT::Load(Vulkan& vulkan, AssetManager& assetManager, con return success; } -bool ShaderModuleT::Load(Vulkan& vulkan, AssetManager& assetManager, const ShaderPassDescription& shaderDescription, const ShaderType shaderType) +bool ShaderModule::Load(Vulkan& vulkan, AssetManager& assetManager, const ShaderPassDescription& shaderDescription, const ShaderType shaderType) { const std::string* shaderFileName = nullptr; switch (shaderType) diff --git a/framework/code/material/vulkan/shaderModule.hpp b/framework/code/material/vulkan/shaderModule.hpp index 4c28559..9109148 100644 --- a/framework/code/material/vulkan/shaderModule.hpp +++ b/framework/code/material/vulkan/shaderModule.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,12 +12,12 @@ #include #include #include -#include +#include #include "material/shaderModule.hpp" // Forward declarations class AssetManager; -class DescriptorSetLayout; +class DescriptorSetLayoutBase; class ShaderPassDescription; class VertexDescription; class VertexFormat; @@ -26,13 +26,13 @@ class Vulkan; /// Wrapper around a Vulkan VkShaderModule. /// @ingroup Material template<> -class ShaderModuleT : public ShaderModule +class ShaderModule : public ShaderModuleBase { - ShaderModuleT(const ShaderModuleT&) = delete; - ShaderModuleT& operator=(const ShaderModuleT&) = delete; + ShaderModule(const ShaderModule&) = delete; + ShaderModule& operator=(const ShaderModule&) = delete; public: - ShaderModuleT() noexcept; - ~ShaderModuleT(); + ShaderModule() noexcept; + ~ShaderModule(); /// Free up the vkShaderModule resource. void Destroy(Vulkan&); diff --git a/framework/code/material/vulkan/specializationConstants.cpp b/framework/code/material/vulkan/specializationConstants.cpp new file mode 100644 index 0000000..abe2803 --- /dev/null +++ b/framework/code/material/vulkan/specializationConstants.cpp @@ -0,0 +1,51 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "specializationConstants.hpp" + + +bool SpecializationConstants::Init( const SpecializationConstantsLayout& layout, const std::span constants ) +{ + const auto& layoutMapEntry = layout.GetVkSpecializationMapEntry(); + assert( layoutMapEntry.size() == constants.size() ); + if (layoutMapEntry.empty()) + { + mSpecializationData.reset(); + return true; + } + + std::span specializationConstantsRaw { new std::byte[layout.GetBufferSize()], layout.GetBufferSize() }; // unsafe - raw pointer in the span! + + for (auto constantIdx = 0; constantIdx < layoutMapEntry.size(); ++constantIdx) + { + const auto& constantLayout = layoutMapEntry[constantIdx]; + + // copy the loaded constant data into the constant buffer + std::span constantDataRaw = constants[constantIdx].getUnsafeData(); + assert( constantLayout.size == constantDataRaw.size() ); + std::copy( constantDataRaw.begin(), constantDataRaw.end(), specializationConstantsRaw.begin() + constantLayout.offset ); + } + + VkSpecializationInfo vkSpecializationInfo {}; + vkSpecializationInfo.mapEntryCount = (uint32_t) layout.GetVkSpecializationMapEntry().size(); + vkSpecializationInfo.pMapEntries = layout.GetVkSpecializationMapEntry().data(); + vkSpecializationInfo.dataSize = specializationConstantsRaw.size(); + vkSpecializationInfo.pData = specializationConstantsRaw.data(); // move ownership of the allocated buffer. + + mSpecializationData.emplace().specializationInfo = vkSpecializationInfo; + + return true; +} + +SpecializationConstants::VulkanSpecializationData::VulkanSpecializationData( SpecializationConstants::VulkanSpecializationData&& other ) noexcept : specializationInfo( other.specializationInfo )/*dumb move*/ +{ + other.specializationInfo.mapEntryCount = 0; + other.specializationInfo.pMapEntries = nullptr; + other.specializationInfo.dataSize = 0; + other.specializationInfo.pData = nullptr; +} diff --git a/framework/code/material/vulkan/specializationConstants.hpp b/framework/code/material/vulkan/specializationConstants.hpp new file mode 100644 index 0000000..c5c245f --- /dev/null +++ b/framework/code/material/vulkan/specializationConstants.hpp @@ -0,0 +1,45 @@ +//============================================================================================================ +// +// +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include "../specializationConstants.hpp" +#include "specializationConstantsLayout.hpp" + +// Forward declarations + + +/// Specialization constant data for a pipeline. +/// @ingroup Material +template<> +class SpecializationConstants final +{ + SpecializationConstants( const SpecializationConstants& ) = delete; + SpecializationConstants operator=( const SpecializationConstants& ) = delete; +public: + SpecializationConstants( SpecializationConstants&& ) noexcept = default; + SpecializationConstants() noexcept = default; + bool Init(const SpecializationConstantsLayout& layout, const std::span constants); + + const VkSpecializationInfo* GetVkSpecializationInfo() const { return mSpecializationData.has_value() ? &mSpecializationData.value().specializationInfo : nullptr; } + +private: + struct VulkanSpecializationData + { + VulkanSpecializationData( const VulkanSpecializationData& ) = delete; + VulkanSpecializationData operator=( const VulkanSpecializationData& ) = delete; + + VulkanSpecializationData() noexcept : specializationInfo() {} + ~VulkanSpecializationData() { delete[] (std::byte*) specializationInfo.pData/*we own just the data*/; specializationInfo.pData = nullptr; } + VulkanSpecializationData( VulkanSpecializationData&& ) noexcept; + VkSpecializationInfo specializationInfo; + }; + // container for specialization data prepared for vulkan use! + std::optional mSpecializationData; +}; diff --git a/framework/code/material/vulkan/specializationConstantsLayout.cpp b/framework/code/material/vulkan/specializationConstantsLayout.cpp index 6235d68..773942b 100644 --- a/framework/code/material/vulkan/specializationConstantsLayout.cpp +++ b/framework/code/material/vulkan/specializationConstantsLayout.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/material/vulkan/specializationConstantsLayout.hpp b/framework/code/material/vulkan/specializationConstantsLayout.hpp index 2f6762b..37e8f5e 100644 --- a/framework/code/material/vulkan/specializationConstantsLayout.hpp +++ b/framework/code/material/vulkan/specializationConstantsLayout.hpp @@ -1,15 +1,15 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include -#include -#include "material/specializationConstantsLayout.hpp" +#include +#include "../specializationConstantsLayout.hpp" #include // Forward declarations @@ -18,7 +18,7 @@ class Vulkan; /// Simple wrapper around collection of VkSpecializationMapEntry (for VkSpecializationInfo::pMapEntries). /// @ingroup Material template<> -class SpecializationConstantsLayout +class SpecializationConstantsLayout final { SpecializationConstantsLayout( const SpecializationConstantsLayout& ) = delete; SpecializationConstantsLayout& operator=( const SpecializationConstantsLayout& ) = delete; diff --git a/framework/code/material/vulkan/vertexDescription.cpp b/framework/code/material/vulkan/vertexDescription.cpp index ce00a7e..6457160 100644 --- a/framework/code/material/vulkan/vertexDescription.cpp +++ b/framework/code/material/vulkan/vertexDescription.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -33,6 +33,8 @@ VkFormat VertexDescription::VkFormatFromElementType( const VertexFormat::Element switch(elementType.type) { case VertexFormat::Element::ElementType::t::Int32: return VK_FORMAT_R32_SINT; + case VertexFormat::Element::ElementType::t::UInt32: + return VK_FORMAT_R32_UINT; case VertexFormat::Element::ElementType::t::Float: return VK_FORMAT_R32_SFLOAT; case VertexFormat::Element::ElementType::t::Boolean: @@ -45,6 +47,8 @@ VkFormat VertexDescription::VkFormatFromElementType( const VertexFormat::Element return VK_FORMAT_R32G32B32A32_SFLOAT; case VertexFormat::Element::ElementType::t::Int16: return VK_FORMAT_R16_SINT; + case VertexFormat::Element::ElementType::t::UInt16: + return VK_FORMAT_R16_UINT; case VertexFormat::Element::ElementType::t::Float16: return VK_FORMAT_R16_SFLOAT; case VertexFormat::Element::ElementType::t::F16Vec2: @@ -53,6 +57,30 @@ VkFormat VertexDescription::VkFormatFromElementType( const VertexFormat::Element return VK_FORMAT_R16G16B16_SFLOAT; case VertexFormat::Element::ElementType::t::F16Vec4: return VK_FORMAT_R16G16B16A16_SFLOAT; + case VertexFormat::Element::ElementType::t::I16Vec2: + return VK_FORMAT_R16G16_SINT; + case VertexFormat::Element::ElementType::t::I16Vec3: + return VK_FORMAT_R16G16B16_SINT; + case VertexFormat::Element::ElementType::t::I16Vec4: + return VK_FORMAT_R16G16B16A16_SINT; + case VertexFormat::Element::ElementType::t::U16Vec2: + return VK_FORMAT_R16G16_UINT; + case VertexFormat::Element::ElementType::t::U16Vec3: + return VK_FORMAT_R16G16B16_UINT; + case VertexFormat::Element::ElementType::t::U16Vec4: + return VK_FORMAT_R16G16B16A16_UINT; + case VertexFormat::Element::ElementType::t::IVec2: + return VK_FORMAT_R32G32_SINT; + case VertexFormat::Element::ElementType::t::IVec3: + return VK_FORMAT_R32G32B32_SINT; + case VertexFormat::Element::ElementType::t::IVec4: + return VK_FORMAT_R32G32B32A32_SINT; + case VertexFormat::Element::ElementType::t::UVec2: + return VK_FORMAT_R32G32_UINT; + case VertexFormat::Element::ElementType::t::UVec3: + return VK_FORMAT_R32G32B32_UINT; + case VertexFormat::Element::ElementType::t::UVec4: + return VK_FORMAT_R32G32B32A32_UINT; default: assert(0); diff --git a/framework/code/material/vulkan/vertexDescription.hpp b/framework/code/material/vulkan/vertexDescription.hpp index b982bc9..b2f34f0 100644 --- a/framework/code/material/vulkan/vertexDescription.hpp +++ b/framework/code/material/vulkan/vertexDescription.hpp @@ -1,14 +1,14 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include "material/vertexFormat.hpp" -#include +#include /// Describes the Vulkan layout of a single vertex stream (not the buffer, just one of the the contained vertices). /// @ingroup Material diff --git a/framework/code/memory/androidHardwareBuffer.cpp b/framework/code/memory/androidHardwareBuffer.cpp index 47ae108..a265363 100644 --- a/framework/code/memory/androidHardwareBuffer.cpp +++ b/framework/code/memory/androidHardwareBuffer.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/memory/androidHardwareBuffer.hpp b/framework/code/memory/androidHardwareBuffer.hpp index def8754..28fba1c 100644 --- a/framework/code/memory/androidHardwareBuffer.hpp +++ b/framework/code/memory/androidHardwareBuffer.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/memory/buffer.hpp b/framework/code/memory/buffer.hpp index f97d812..4e67f35 100644 --- a/framework/code/memory/buffer.hpp +++ b/framework/code/memory/buffer.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -16,23 +16,23 @@ struct AHardwareBuffer_Desc; struct AHardwareBuffer; template class MemoryManager; template class MemoryCpuMappedUntyped; -template class BufferT; +template class Buffer; template class MemoryCpuMapped; /// @brief Base class (virtual) for memory buffers. Platform agnostic. -class Buffer +class BufferBase { - Buffer(const Buffer&) = delete; - Buffer& operator=(const Buffer&) = delete; + BufferBase(const BufferBase&) = delete; + BufferBase& operator=(const BufferBase&) = delete; protected: - Buffer() noexcept {}; + BufferBase() noexcept {}; public: - virtual ~Buffer() {} + virtual ~BufferBase() {} virtual void Destroy() = 0; - Buffer(Buffer&&) noexcept = default; - Buffer& operator=(Buffer&&) noexcept = default; + BufferBase(BufferBase&&) noexcept = default; + BufferBase& operator=(BufferBase&&) noexcept = default; }; @@ -43,7 +43,7 @@ class MapGuard : public MemoryCpuMapped MapGuard& operator=(const MapGuard&) = delete; MapGuard& operator=(MapGuard&& other) = delete; public: - MapGuard( BufferT< T_GFXAPI>& buffer, MemoryCpuMapped mapped) + MapGuard( Buffer< T_GFXAPI>& buffer, MemoryCpuMapped mapped) : MemoryCpuMapped(std::move(mapped)) // Only ever one owner of a MemoryCpuMapped , mBuffer(&buffer) // not passed as a pointer so we know it's never initialized null {} @@ -67,7 +67,7 @@ class MapGuard : public MemoryCpuMapped other.mBuffer = nullptr; } private: - BufferT< T_GFXAPI>* mBuffer; + Buffer< T_GFXAPI>* mBuffer; }; @@ -75,16 +75,16 @@ class MapGuard : public MemoryCpuMapped /// Expected for only the specialized version to be used! /// @ingroup Memory template -class BufferT : public Buffer +class Buffer : public BufferBase { - BufferT& operator=(const BufferT&) = delete; - BufferT(const BufferT&) = delete; + Buffer& operator=(const Buffer&) = delete; + Buffer(const Buffer&) = delete; protected: public: - BufferT() noexcept = delete; // this template class must be specialized - virtual ~BufferT() = delete; // this template class must be specialized - BufferT(BufferT&&) noexcept = delete; // this template class must be specialized - BufferT& operator=(BufferT&&) noexcept = delete;// this template class must be specialized + Buffer() noexcept = delete; // this template class must be specialized + virtual ~Buffer() = delete; // this template class must be specialized + Buffer(Buffer&&) noexcept = delete; // this template class must be specialized + Buffer& operator=(Buffer&&) noexcept = delete;// this template class must be specialized /// destroy buffer and leave in a state where it could be re-initialized void Destroy() override = delete; // this template class must be specialized @@ -93,6 +93,6 @@ class BufferT : public Buffer template MapGuard Map() = delete; // this template class must be specialized - static_assert(sizeof(BufferT) != sizeof(Buffer)); // Ensure this class template is specialized (and not used as-is) + static_assert(sizeof(Buffer) != sizeof(BufferBase)); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/memory/drawIndirectBuffer.hpp b/framework/code/memory/drawIndirectBuffer.hpp index 0f58f17..6a19179 100644 --- a/framework/code/memory/drawIndirectBuffer.hpp +++ b/framework/code/memory/drawIndirectBuffer.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,18 +12,25 @@ /// Templated (by graphics api) buffer containing draw indirect commands /// @ingroup Memory template -class DrawIndirectBuffer: public BufferT +class DrawIndirectBuffer: public Buffer { DrawIndirectBuffer(const DrawIndirectBuffer&) = delete; DrawIndirectBuffer& operator=(const DrawIndirectBuffer&) = delete; public: - DrawIndirectBuffer(bool indexed) noexcept; + enum class eType { + Draw, + IndexedDraw, + MeshTasks + }; + + DrawIndirectBuffer(DrawIndirectBuffer::eType indirectBufferType) noexcept; DrawIndirectBuffer(DrawIndirectBuffer&&) noexcept; DrawIndirectBuffer& operator=(DrawIndirectBuffer&&) noexcept; ~DrawIndirectBuffer(); - /// Initialization + /// Buffer initialization with a prequel block (and then a block of type T_DRAW data for each potential draw) template bool Initialize(MemoryManager* pManager, size_t numDraws, const T_DRAW* initialData, const T_PREQUEL* initialPrequelData, const BufferUsageFlags usage = BufferUsageFlags::Indirect); + /// Buffer initialization with a block of type T_DRAW data for each potential draw template bool Initialize(MemoryManager* pManager, size_t numDraws, const T_DRAW* initialData, const BufferUsageFlags usage = BufferUsageFlags::Indirect); /// destroy buffer and leave in a state where it could be re-initialized @@ -39,8 +46,9 @@ class DrawIndirectBuffer: public BufferT /// Map this buffer to the cpu and return a guard object (automatically unmaps when it goes out of scope) template MapGuard Map(); - bool IsIndexed() const { return mIndexed; } - uint32_t GetDrawCommandBytes() const;// { return (mIndexed ? sizeof(VkDrawIndexedIndirectCommand) : sizeof(VkDrawIndirectCommand)); } + //bool IsIndexed() const { return mIndexed; } + eType GetIndirectBufferType() const { return mIndirectBufferType; } + uint32_t GetDrawCommandBytes() const; auto GetNumDraws() const { return mNumDraws; } auto GetBufferOffset() const { return mPrequelBytes; } @@ -49,18 +57,18 @@ class DrawIndirectBuffer: public BufferT bool Initialize(MemoryManager* pManager, size_t numDraws, const void* initialData, const BufferUsageFlags usage, const void* prequelData, uint32_t prequelBytes); private: - size_t mNumDraws = 0; - uint32_t mPrequelBytes = 0; // buffer bytes before the index data begins. - const bool mIndexed; + size_t mNumDraws = 0; + uint32_t mPrequelBytes = 0; // buffer bytes before the index data begins. + const eType mIndirectBufferType; }; template -DrawIndirectBuffer::DrawIndirectBuffer(bool indexed) noexcept : BufferT(), mIndexed(indexed) +DrawIndirectBuffer::DrawIndirectBuffer(eType indirectBufferType) noexcept : Buffer(), mIndirectBufferType(indirectBufferType) {} template -DrawIndirectBuffer::DrawIndirectBuffer(DrawIndirectBuffer&& other) noexcept : mIndexed(other.mIndexed) +DrawIndirectBuffer::DrawIndirectBuffer(DrawIndirectBuffer&& other) noexcept : mIndirectBufferType(other.mIndirectBufferType ) { *this = std::move(other); } @@ -68,10 +76,10 @@ DrawIndirectBuffer::DrawIndirectBuffer(DrawIndirectBuffer&& other) noe template DrawIndirectBuffer& DrawIndirectBuffer::operator=(DrawIndirectBuffer&& other) noexcept { - BufferT::operator=(std::move(other)); + Buffer::operator=(std::move(other)); if (&other != this) { - assert(mIndexed == other.mIndexed); + assert(mIndirectBufferType == other.mIndirectBufferType); mNumDraws = other.mNumDraws; other.mNumDraws = 0; mPrequelBytes = other.mPrequelBytes; @@ -97,16 +105,68 @@ bool DrawIndirectBuffer::Initialize(MemoryManager* pManager, return Initialize(pManager, numDraws, (const void*)initialData, usage, prequelData, sizeof(T_PREQUEL)); } +template +bool DrawIndirectBuffer::Initialize(MemoryManager* pManager, size_t numDraws, const void* initialData, const BufferUsageFlags usage, const void* prequelData, uint32_t prequelBytes ) +{ + mNumDraws = numDraws; + mPrequelBytes = prequelBytes; + + MemoryUsage memoryUsage = initialData ? MemoryUsage::CpuToGpu : MemoryUsage::GpuExclusive; + if ((usage & BufferUsageFlags::TransferSrc) != 0) + memoryUsage = MemoryUsage::CpuToGpu; + + if (!Buffer::Initialize( pManager, GetDrawCommandBytes() * mNumDraws + mPrequelBytes, usage, memoryUsage )) + { + return false; + } + + if (initialData) + { + auto mappedGuard = Buffer::template Map(); + auto initialDataSize = GetDrawCommandBytes() * mNumDraws; + if (prequelBytes) + memcpy( mappedGuard.data(), prequelData, prequelBytes ); + else + memset( mappedGuard.data(), 0, prequelBytes ); + memcpy( mappedGuard.data() + prequelBytes, initialData, initialDataSize ); + } + return true; +} + +template +void DrawIndirectBuffer::Destroy() +{ + mNumDraws = 0; + Buffer::Destroy(); +} + +template +DrawIndirectBuffer DrawIndirectBuffer::Copy( BufferUsageFlags newUsageFlags ) +{ + if (newUsageFlags == BufferUsageFlags::Unknown) + newUsageFlags = Buffer::template mBufferUsageFlags<>; + DrawIndirectBuffer copy( GetIndirectBufferType() ); + auto data = MapVoid(); + if (copy.Initialize( Buffer::template mManager<>, GetNumDraws(), static_cast(data.data()) + mPrequelBytes, newUsageFlags, data.data(), mPrequelBytes )) + { + return copy; + } + else + { + return {GetIndirectBufferType()}; + } +} + template template MapGuard DrawIndirectBuffer::Map() { - assert(mPrequelBytes == 0); // prequel bytes not yet supported in map - assert(sizeof(T) == GetDrawCommandBytes()); - return BufferT::template Map(); + assert( mPrequelBytes == 0 ); // prequel bytes not yet supported in map + assert( sizeof( T ) == GetDrawCommandBytes() ); + return Buffer::template Map(); } template MapGuard DrawIndirectBuffer::MapVoid() { - return BufferT::template Map(); + return Buffer::template Map(); } diff --git a/framework/code/memory/dx12/bufferObject.cpp b/framework/code/memory/dx12/bufferObject.cpp new file mode 100644 index 0000000..4f925e8 --- /dev/null +++ b/framework/code/memory/dx12/bufferObject.cpp @@ -0,0 +1,120 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "bufferObject.hpp" +#include "memoryManager.hpp" +#include +//#include + +Buffer::Buffer() noexcept +{ +} + +/////////////////////////////////////////////////////////////////////////////// + +Buffer::Buffer(Buffer&& other) noexcept +{ + *this = std::move(other); +} + +/////////////////////////////////////////////////////////////////////////////// + +Buffer& Buffer::operator=(Buffer&& other) noexcept +{ + if (this != &other) + { + mManager = other.mManager; + other.mManager = nullptr; + mAllocatedBuffer = std::move(other.mAllocatedBuffer); + mBufferUsageFlags = other.mBufferUsageFlags; + other.mBufferUsageFlags = BufferUsageFlags::Unknown; + } + return *this; +} + +/////////////////////////////////////////////////////////////////////////////// + +Buffer::~Buffer() +{ + Destroy(); +} + +/////////////////////////////////////////////////////////////////////////////// + +Buffer::operator bool() const +{ + return !!mAllocatedBuffer; +} + +/////////////////////////////////////////////////////////////////////////////// +template< class Enum > +constexpr std::underlying_type_t to_underlying(Enum e) noexcept { return static_cast>(e); }; + +bool Buffer::Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, const void* initialData) +{ + MemoryUsage memoryUsage = initialData ? MemoryUsage::CpuToGpu : MemoryUsage::GpuExclusive; + if ((to_underlying(bufferUsageFlags) & to_underlying(BufferUsageFlags::TransferSrc)) != 0) + memoryUsage = MemoryUsage::CpuToGpu; + + if (!Initialize(pManager, size, bufferUsageFlags, memoryUsage)) + { + return false; + } + + if (initialData) + { + auto mappedGuard = Map(); + memcpy(mappedGuard.data(), initialData, size); + } + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool Buffer::Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, MemoryUsage memoryUsage) +{ + assert(!mManager); + if (!pManager) + { + return false; + } + mManager = pManager; + + mAllocatedBuffer = mManager->CreateBuffer(size, bufferUsageFlags, memoryUsage); + mBufferUsageFlags = bufferUsageFlags; + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +void Buffer::Destroy() +{ + if (!mManager) + { + assert(!mAllocatedBuffer); // ensure we don't have an orphaned buffer (somehow) + return; + } + mManager->Destroy( std::move(mAllocatedBuffer) ); + mManager = nullptr; +} + +/////////////////////////////////////////////////////////////////////////////// + +void Buffer::Unmap(MemoryCpuMappedUntyped buffer) +{ + mManager->Unmap(mAllocatedBuffer, std::move(buffer)); +} + +/////////////////////////////////////////////////////////////////////////////// + +uint64_t Buffer::GetResourceGPUVirtualAddress() +{ + return mAllocatedBuffer.GetResource()->GetGPUVirtualAddress(); /*GetGPUVirtualAddress is not const, so this function cannot be either */ +} diff --git a/framework/code/memory/dx12/bufferObject.hpp b/framework/code/memory/dx12/bufferObject.hpp new file mode 100644 index 0000000..2354d9e --- /dev/null +++ b/framework/code/memory/dx12/bufferObject.hpp @@ -0,0 +1,58 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include "memoryManager.hpp" // dx12 +#include "memoryMapped.hpp" // dx12 +#include "memory/buffer.hpp" // agnostic +#include "memory/memory.hpp" // agnostic + + +/// Template specialization for creating and holding Dx12 graphics memory buffer objects. +/// @ingroup Memory +template<> +class Buffer : public BufferBase +{ +public: + Buffer() noexcept; + virtual ~Buffer(); + Buffer(Buffer&&) noexcept; + Buffer& operator=(Buffer&&) noexcept; + + using MemoryManager = MemoryManager; + using MemoryCpuMappedUntyped = MemoryCpuMappedUntyped; + + explicit operator bool() const; + + bool Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, const void* initialData); + bool Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, MemoryUsage memoryUsage); + + /// destroy buffer and leave in a state where it could be re-initialized + void Destroy() override; + + /// Map this buffer to the cpu and return a guard object (automatically unmaps when it goes out of scope) + template + MapGuard Map() + { + assert(mManager); + return { *this, std::move(mManager->Map(mAllocatedBuffer)) }; + } + + uint64_t GetResourceGPUVirtualAddress(); + +protected: + template friend class MapGuard; + void Unmap(MemoryCpuMappedUntyped buffer); + +protected: + using MemoryAllocatedBuffer = MemoryAllocatedBuffer; + MemoryManager* mManager = nullptr; + MemoryAllocatedBuffer mAllocatedBuffer; + BufferUsageFlags mBufferUsageFlags = BufferUsageFlags::Unknown; +}; diff --git a/framework/code/memory/dx12/indexBufferObject.cpp b/framework/code/memory/dx12/indexBufferObject.cpp new file mode 100644 index 0000000..3eca5a4 --- /dev/null +++ b/framework/code/memory/dx12/indexBufferObject.cpp @@ -0,0 +1,35 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "indexBufferObject.hpp" + + +D3D12_INDEX_BUFFER_VIEW IndexBuffer::GetIndexBufferView() const +{ + DXGI_FORMAT format = DXGI_FORMAT_R16_UINT; + UINT formatBytes = 2; + switch (mIndexType) { + case IndexType::IndexU16: + format = DXGI_FORMAT_R16_UINT; + formatBytes = 2; + break; + case IndexType::IndexU32: + format = DXGI_FORMAT_R32_UINT; + formatBytes = 4; + break; + default: + assert(0); + break; + } + + return D3D12_INDEX_BUFFER_VIEW{ + .BufferLocation = mAllocatedBuffer.GetResource()->GetGPUVirtualAddress(), + .SizeInBytes = (UINT) GetNumIndices() * formatBytes, + .Format = format + }; +} diff --git a/framework/code/memory/dx12/indexBufferObject.hpp b/framework/code/memory/dx12/indexBufferObject.hpp new file mode 100644 index 0000000..9af8720 --- /dev/null +++ b/framework/code/memory/dx12/indexBufferObject.hpp @@ -0,0 +1,29 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +class Dx12; + +#include "memoryMapped.hpp" +#include "bufferObject.hpp" +#include "memory/indexBuffer.hpp" + + +// Template specialization for Dx12 Index buffer +template<> +class IndexBuffer final : public IndexBufferT +{ +public: + IndexBuffer(IndexType i) noexcept : IndexBufferT(i) {} + //IndexBuffer(VkIndexType) noexcept; + IndexBuffer(IndexBuffer&& o) noexcept = default; + IndexBuffer& operator=(IndexBuffer&& o) noexcept = default; + ~IndexBuffer() {} + + D3D12_INDEX_BUFFER_VIEW GetIndexBufferView() const; +}; diff --git a/framework/code/memory/dx12/memoryManager.cpp b/framework/code/memory/dx12/memoryManager.cpp new file mode 100644 index 0000000..d2467e1 --- /dev/null +++ b/framework/code/memory/dx12/memoryManager.cpp @@ -0,0 +1,174 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "memoryManager.hpp" +#include "memoryMapped.hpp" +#include "dx12/dx12.hpp" +#include "D3D12MemoryAllocator/include/D3D12MemAlloc.h" // we should be the only file to include this header! +#include + + +MemoryManager::MemoryManager() +{ +} + +/////////////////////////////////////////////////////////////////////////////// + +MemoryManager::~MemoryManager() +{ + Destroy(); +} + +/////////////////////////////////////////////////////////////////////////////// + +bool MemoryManager::Initialize(IDXGIAdapter* adapter, ID3D12Device* device) +{ + assert(mDxmaAllocator == nullptr); + D3D12MA::ALLOCATOR_DESC allocatorDesc = {}; + allocatorDesc.pDevice = device; + allocatorDesc.pAdapter = adapter; + + HRESULT hr = D3D12MA::CreateAllocator(&allocatorDesc, &mDxmaAllocator); + if (hr != S_OK) + { + mDxmaAllocator = nullptr; + return false; + } + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +void MemoryManager::Destroy() +{ + auto* const tmp = mDxmaAllocator; + mDxmaAllocator = nullptr; + if (tmp!=nullptr) + tmp->Release(); +} + +/////////////////////////////////////////////////////////////////////////////// + +MemoryManager::MemoryAllocatedBuffer MemoryManager::CreateBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage) +{ + assert(memoryUsage != MemoryUsage::Unknown); + assert(bufferUsage != BufferUsageFlags::Unknown); + + auto heapType = D3D12_HEAP_TYPE_DEFAULT; + switch (memoryUsage) { + case MemoryUsage::CpuToGpu: + heapType = D3D12_HEAP_TYPE_UPLOAD; + break; + case MemoryUsage::GpuToCpu: + heapType = D3D12_HEAP_TYPE_READBACK; + break; + case MemoryUsage::GpuExclusive: + heapType = D3D12_HEAP_TYPE_DEFAULT; + break; + default: + assert(0); + break; + } + if ((bufferUsage&BufferUsageFlags::Uniform) != 0) + size = (size + D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT - 1) & ~(D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT-1); + + const D3D12_RESOURCE_DESC resourceDesc = { .Dimension = D3D12_RESOURCE_DIMENSION_BUFFER, + .Alignment = 0, + .Width = size, + .Height = 1, + .DepthOrArraySize = 1, + .MipLevels = 1, + .Format = DXGI_FORMAT_UNKNOWN, + .SampleDesc = {.Count = 1, .Quality = 0 }, + .Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR, + .Flags = D3D12_RESOURCE_FLAG_NONE }; + D3D12MA::ALLOCATION_DESC allocationDesc = {.HeapType = heapType}; + MemoryAllocatedBuffer allocatedBuffer; + HRESULT hr = mDxmaAllocator->CreateResource(&allocationDesc, + &resourceDesc, + D3D12_RESOURCE_STATE_GENERIC_READ, + NULL, + &allocatedBuffer.allocation.allocation, + IID_PPV_ARGS(&allocatedBuffer.resource)); + if (hr != S_OK) + return {}; + + return allocatedBuffer; +} + +/////////////////////////////////////////////////////////////////////////////// + +MemoryManager::MemoryAllocatedBuffer MemoryManager::CreateImage(const D3D12_RESOURCE_DESC& imageDesc, MemoryUsage memoryUsage, D3D12_RESOURCE_STATES initialResourceState, const D3D12_CLEAR_VALUE& clearValue) +{ + assert(memoryUsage != MemoryUsage::Unknown); + + auto heapType = D3D12_HEAP_TYPE_DEFAULT; + switch (memoryUsage) { + case MemoryUsage::CpuToGpu: + heapType = D3D12_HEAP_TYPE_UPLOAD; + break; + case MemoryUsage::GpuToCpu: + heapType = D3D12_HEAP_TYPE_READBACK; + break; + case MemoryUsage::GpuExclusive: + heapType = D3D12_HEAP_TYPE_DEFAULT; + break; + default: + assert(0); + break; + } + + D3D12MA::ALLOCATION_DESC allocationDesc = { .HeapType = heapType }; + MemoryAllocatedBuffer allocatedBuffer; + HRESULT hr = mDxmaAllocator->CreateResource(&allocationDesc, + &imageDesc, + initialResourceState, + clearValue.Format != DXGI_FORMAT_UNKNOWN ? &clearValue : nullptr, + &allocatedBuffer.allocation.allocation, + IID_PPV_ARGS(&allocatedBuffer.resource)); + if (hr != S_OK) + return {}; + + return allocatedBuffer; +} + +/////////////////////////////////////////////////////////////////////////////// + +void MemoryManager::Destroy(MemoryAllocatedBuffer allocatedBuffer) +{ + if (allocatedBuffer) + { + allocatedBuffer.resource->Release(); + allocatedBuffer.resource = nullptr; + allocatedBuffer.allocation.allocation->Release(); + allocatedBuffer.allocation.allocation = nullptr; + } +} + +/////////////////////////////////////////////////////////////////////////////// + +void MemoryManager::MapInternal(D3D12MA::Allocation* allocation, void** outCpuLocation) +{ + assert(outCpuLocation != nullptr); + assert(*outCpuLocation == nullptr); // mapped twice? + assert(allocation != nullptr); // Likely caused by a double mapping of this data + if (allocation->GetResource()->Map(0, nullptr, outCpuLocation) != S_OK) + { + outCpuLocation = nullptr; + assert(0); + } +} + +/////////////////////////////////////////////////////////////////////////////// + +void MemoryManager::UnmapInternal(D3D12MA::Allocation* allocation, void* cpuLocation) +{ + assert(cpuLocation); + allocation->GetResource()->Unmap(0, nullptr); +} diff --git a/framework/code/memory/dx12/memoryManager.hpp b/framework/code/memory/dx12/memoryManager.hpp new file mode 100644 index 0000000..2e7001d --- /dev/null +++ b/framework/code/memory/dx12/memoryManager.hpp @@ -0,0 +1,95 @@ +//============================================================================= +// +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include +#include "memory/memory.hpp" +#include "memory/memoryManager.hpp" +#include "memory/dx12/memoryMapped.hpp" +#include "material/materialPass.hpp" + +// forward declarations +class Dx12; +struct IDXGIAdapter; +struct ID3D12Device; +struct D3D12_CLEAR_VALUE; +struct D3D12_RESOURCE_DESC; +enum D3D12_RESOURCE_STATES; +namespace D3D12MA { + class Allocator; + class Allocation; +}; + + +/// Top level API for allocating memory buffers for use by DX12 +/// template specialization of MemoryManager. +/// @ingroup Memory +template<> +class MemoryManager +{ + MemoryManager(const MemoryManager&) = delete; + MemoryManager& operator=(const MemoryManager&) = delete; +public: + MemoryManager(); + ~MemoryManager(); + using tGfxApi = Dx12; + using MemoryAllocatedBuffer = MemoryAllocatedBuffer; + + /// Initialize the memory manager (must be initialized before using CreateBuffer etc) + /// @param EnableBufferDeviceAddress enable ability to call GetBufferDeviceAddress + /// @return true if successfully initialized + bool Initialize(IDXGIAdapter* adapter, ID3D12Device* device); + /// Destroy the memory manager (do before you destroy the Dx12 device) + void Destroy(); + + /// Create buffer in memory and create the associated Dx12 objects + MemoryAllocatedBuffer CreateBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage); + /// Create buffer in memory + MemoryAllocatedBuffer CreateImage(const D3D12_RESOURCE_DESC& imageDesc, MemoryUsage memoryUsage, D3D12_RESOURCE_STATES initialResourceState, const D3D12_CLEAR_VALUE& clearValue); + + /// Destruction of created buffer + void Destroy(MemoryAllocatedBuffer); + + /// Map a buffer to cpu memory + template + MemoryCpuMapped Map(MemoryAllocatedBuffer& buffer); + + /// Unmap a buffer from cpu memory + void Unmap(MemoryAllocatedBuffer& buffer, MemoryCpuMappedUntyped allocation); + +protected: + MemoryCpuMappedUntyped MapInt(MemoryAllocation allocation); +private: + void MapInternal(D3D12MA::Allocation*, void** outCpuLocation); + void UnmapInternal(D3D12MA::Allocation*, void* cpuLocation); + +private: + D3D12MA::Allocator* mDxmaAllocator = nullptr; +}; + +template +MemoryCpuMapped MemoryManager::Map(MemoryAllocatedBuffer& buffer) +{ + return MapInt(std::move(buffer.allocation)); +} + +inline void MemoryManager::Unmap(MemoryAllocatedBuffer& buffer, MemoryCpuMappedUntyped allocation) +{ + assert(allocation.mCpuLocation); + UnmapInternal(allocation.mAllocation.allocation, allocation.mCpuLocation); + allocation.mCpuLocation = nullptr; // clear ownership + buffer.allocation = std::move(allocation.mAllocation); +} + +inline MemoryCpuMappedUntyped MemoryManager::MapInt(MemoryAllocation allocation) +{ + MemoryCpuMappedUntyped guard(std::move(allocation)); + MapInternal(guard.mAllocation.allocation, &guard.mCpuLocation); + return guard; +} + diff --git a/framework/code/memory/dx12/memoryMapped.hpp b/framework/code/memory/dx12/memoryMapped.hpp new file mode 100644 index 0000000..8000ace --- /dev/null +++ b/framework/code/memory/dx12/memoryMapped.hpp @@ -0,0 +1,132 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include "../memoryMapped.hpp" + +// forward declarations +class Dx12; +struct ID3D12Resource; +namespace D3D12MA { + class Allocation; +}; + +/// Wraps the D3D12MA Allocation handle. Represents an allocation out of 'dx12' memory. Cannot be copied (only moved) - single owner. +/// Passed around between whomever is 'owner' of the allocation (when mapping etc) +/// @ingroup Memory +template<> +class MemoryAllocation final +{ + friend class MemoryManager; + friend class MemoryDx12AllocatedBuffer; +public: + MemoryAllocation(const MemoryAllocation&) = delete; + MemoryAllocation& operator=(const MemoryAllocation&) = delete; + MemoryAllocation() {} + MemoryAllocation(MemoryAllocation&& other) noexcept; + MemoryAllocation& operator=(MemoryAllocation&& other) noexcept; + ~MemoryAllocation() { assert(allocation == nullptr); } // protect accidental deletion (leak) + explicit operator bool() const { return allocation != nullptr; } +private: + //void clear() { allocation = nullptr; } + D3D12MA::Allocation* allocation = nullptr; +}; + + +/// Represents a memory resource allocated by D3D12MA +/// @ingroup Memory +template +class MemoryAllocatedBuffer final +{ + MemoryAllocatedBuffer(const MemoryAllocatedBuffer&) = delete; + MemoryAllocatedBuffer& operator=(const MemoryAllocatedBuffer&) = delete; +public: + friend class MemoryManager; + // Restrict MemoryAllocatedBuffer to not be duplicated and not accidentally deleted (leaking memory). + MemoryAllocatedBuffer(MemoryAllocatedBuffer&& other) noexcept; + MemoryAllocatedBuffer& operator=(MemoryAllocatedBuffer&& other) noexcept; + MemoryAllocatedBuffer() noexcept {} + ~MemoryAllocatedBuffer() { assert(resource == nullptr); } + auto* GetResource() const { return resource; } + auto* GetResource() { return resource; } + explicit operator bool() const { return static_cast(allocation); } +private: + MemoryAllocation allocation; + static_assert( std::is_pointer_v ); // expecting T_RESOURCETYPE is a pointer, eg ID3D12Resource* + T_RESOURCETYPE/*ID3D12Resource* */ resource = nullptr; +}; + + +// +// MemoryAllocation implementation +// +inline MemoryAllocation::MemoryAllocation(MemoryAllocation&& other) noexcept +{ + allocation = other.allocation; + other.allocation = nullptr; +} + +inline MemoryAllocation& MemoryAllocation::operator=(MemoryAllocation&& other) noexcept +{ + if (&other != this) { + assert(allocation==nullptr); + allocation = other.allocation; + other.allocation = nullptr; + } + return *this; +} + + +// +// MemoryDx12AllocatedBuffer implementation +// +template +inline MemoryAllocatedBuffer::MemoryAllocatedBuffer(MemoryAllocatedBuffer&& other) noexcept + : allocation(std::move(other.allocation)) +{ + resource = other.resource; + other.resource = 0; +} + +template +inline MemoryAllocatedBuffer& MemoryAllocatedBuffer::operator=(MemoryAllocatedBuffer&& other) noexcept +{ + if (this != &other) { + allocation = std::move(other.allocation); + assert(resource==nullptr); + resource = other.resource; + other.resource = 0; + } + return *this; +} + + +#if 0 +// +// MemoryCpuMappedUntyped implementation +// +inline MemoryCpuMappedUntyped::MemoryCpuMappedUntyped(MemoryAllocation&& memoryToMap) + : mAllocation(std::move(memoryToMap)) + , mCpuLocation(nullptr) +{ +} + +inline MemoryCpuMappedUntyped::MemoryCpuMappedUntyped(MemoryCpuMappedUntyped&& other) noexcept + : mAllocation(std::move(other.mAllocation)) + , mCpuLocation(other.mCpuLocation) +{ + other.mCpuLocation = nullptr; +} + +inline MemoryCpuMappedUntyped::~MemoryCpuMappedUntyped() +{ + assert(mCpuLocation == nullptr); // should have been unmapped through the memorymanager +} +#endif // 0 diff --git a/framework/code/memory/dx12/uniform.cpp b/framework/code/memory/dx12/uniform.cpp new file mode 100644 index 0000000..7f97349 --- /dev/null +++ b/framework/code/memory/dx12/uniform.cpp @@ -0,0 +1,98 @@ +//============================================================================= +// +// +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#include +#include "memory/memoryMapped.hpp" +#include "dx12/dx12.hpp" +#include "uniform.hpp" + + +//----------------------------------------------------------------------------- +bool CreateUniformBuffer(Dx12* pDx12, Uniform* pNewUniform, size_t dataSize, const void* const pData, BufferUsageFlags usage) +//----------------------------------------------------------------------------- +{ + auto& memoryManager = pDx12->GetMemoryManager(); + + // Create the memory buffer... + pNewUniform->buf = memoryManager.CreateBuffer(dataSize, usage, MemoryUsage::CpuToGpu); + + // If we have initial data, add it now + if (pData != nullptr) + { + UpdateUniformBuffer( pDx12, pNewUniform, dataSize, pData); + } + + return true; +} + +//----------------------------------------------------------------------------- +void UpdateUniformBuffer(Dx12* pDx12, Uniform* pUniform, size_t dataSize, const void* const pNewData) +//----------------------------------------------------------------------------- +{ + void* pMappedData = NULL; + auto mapped = pDx12->GetMemoryManager().Map(pUniform->buf); + if (mapped.data() == nullptr) + { + return; + } + + memcpy(mapped.data(), pNewData, dataSize); + + pDx12->GetMemoryManager().Unmap(pUniform->buf, std::move(mapped)); +} + + +//----------------------------------------------------------------------------- +void ReleaseUniformBuffer(Dx12* pDx12, Uniform* pUniform) +//----------------------------------------------------------------------------- +{ + if (pUniform->buf) + { + pDx12->GetMemoryManager().Destroy(std::move(pUniform->buf)); + } +} + + +//----------------------------------------------------------------------------- +bool CreateUniformBuffer(Dx12* pDx12, MemoryAllocatedBuffer& rNewUniformBuffer, size_t dataSize, const void* const pData, BufferUsageFlags usage) +//----------------------------------------------------------------------------- +{ + auto& memoryManager = pDx12->GetMemoryManager(); + + // Create the memory buffer... + rNewUniformBuffer = memoryManager.CreateBuffer(dataSize, usage, MemoryUsage::CpuToGpu); + + // If we have initial data, add it now + if (pData != nullptr) + { + UpdateUniformBuffer(pDx12, rNewUniformBuffer, dataSize, pData); + } + + return true; +} + +//----------------------------------------------------------------------------- +void UpdateUniformBuffer(Dx12* pDx12, MemoryAllocatedBuffer& rUniform, size_t dataSize, const void* const pNewData) +//----------------------------------------------------------------------------- +{ + auto mapped = pDx12->GetMemoryManager().Map(rUniform); + if (mapped.data() == nullptr) + { + return; + } + + memcpy(mapped.data(), pNewData, dataSize); + + pDx12->GetMemoryManager().Unmap(rUniform, std::move(mapped)); +} + +//----------------------------------------------------------------------------- +void ReleaseUniformBuffer(Dx12* pDx12, MemoryAllocatedBuffer& rUniform) +//----------------------------------------------------------------------------- +{ + pDx12->GetMemoryManager().Destroy(std::move(rUniform)); +} diff --git a/framework/code/memory/dx12/uniform.hpp b/framework/code/memory/dx12/uniform.hpp new file mode 100644 index 0000000..8d5fe25 --- /dev/null +++ b/framework/code/memory/dx12/uniform.hpp @@ -0,0 +1,116 @@ +//============================================================================= +// +// +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +/// @file uniform.hpp +/// @brief Dx12 Uniform buffer containers and support functions. + +#include +#include "memoryMapped.hpp" +#include "memory/uniform.hpp" + +#include + +// forward defines +class Dx12; +struct ID3D12Resource; + + +/// All the variables needed to create a uniform buffer +/// Template specialization of Uniform<> for Dx12 +template<> +struct Uniform +{ + Uniform() = default; + Uniform(const Uniform&) = delete; + Uniform& operator=(const Uniform&) = delete; + Uniform(Uniform&&) noexcept = default; + MemoryAllocatedBuffer buf; + //VkDescriptorBufferInfo bufferInfo; +}; + +/// Uniform buffer array that can be updated every frame without stomping the in-flight uniform buffers. +template +struct UniformArray +{ + UniformArray() = default; + UniformArray(const UniformArray&) = delete; + UniformArray& operator=(const UniformArray&) = delete; + UniformArray(UniformArray&&) noexcept { assert(0); } + std::array, T_NUM_BUFFERS> buf; + std::array bufferHandles{}; ///< copy of ID3D12Resource handles (for easy use in bindings etc) + constexpr size_t size() const { return T_NUM_BUFFERS; } +}; + +bool CreateUniformBuffer(Dx12*, Uniform* pNewUniform, size_t dataSize, const void* const pData = NULL, BufferUsageFlags usage = BufferUsageFlags::Uniform); +void UpdateUniformBuffer(Dx12*, Uniform* pUniform, size_t dataSize, const void* const pNewData); +void ReleaseUniformBuffer(Dx12*, Uniform* pUniform); + +template +bool CreateUniformBuffer(Dx12* pGfxApi, UniformT& newUniform, const T* const pData = nullptr, BufferUsageFlags usage = BufferUsageFlags::Uniform) +{ + return CreateUniformBuffer(pGfxApi, &newUniform, sizeof(T), pData, usage); +} +template +void UpdateUniformBuffer(Dx12* pGfxApi, Uniform& uniform, const T& newData) +{ + return UpdateUniformBuffer(pGfxApi, &uniform, sizeof(T), &newData); +} +template +void UpdateUniformBuffer(Dx12* pGfxApi, UniformT& uniform, const TT& newData) +{ + static_assert(std::is_same::value, "UpdateUniformBuffer, uniform is different type to newData"); + return UpdateUniformBuffer(pGfxApi, static_cast&>(uniform), newData); +} + +bool CreateUniformBuffer(Dx12* pGfxApi, MemoryAllocatedBuffer& rNewUniformBuffer, size_t dataSize, const void* const pData, BufferUsageFlags usage); +void UpdateUniformBuffer(Dx12* pGfxApi, MemoryAllocatedBuffer& rUniform, size_t dataSize, const void* const pNewData); +void ReleaseUniformBuffer(Dx12* pGfxApi, MemoryAllocatedBuffer& rUniform); + +template +bool CreateUniformBuffer(Dx12* pGfxApi, UniformArray& rNewUniform, size_t dataSize, const void* const pData = NULL, BufferUsageFlags usage = BufferUsageFlags::Uniform) +{ + for (size_t i = 0; i < T_NUM_BUFFERS; ++i) + { + if (!CreateUniformBuffer(pGfxApi, rNewUniform.buf[i], dataSize, pData, usage)) + return false; + rNewUniform.bufferHandles[i] = rNewUniform.buf[i].GetResource(); + } + return true; +} +template +void UpdateUniformBuffer(Dx12* pGfxApi, UniformArray& rUniform, size_t dataSize, const void* const pNewData, uint32_t bufferIdx) +{ + UpdateUniformBuffer(pGfxApi, rUniform.buf[bufferIdx], dataSize, pNewData); +} +template +void ReleaseUniformBuffer(Dx12* pGfxApi, UniformArray& rUniform) +{ + for (size_t i = 0; i < T_NUM_BUFFERS; ++i) + { + rUniform.bufferHandles[i] = nullptr; + ReleaseUniformBuffer(pGfxApi, rUniform.buf[i]); + } +} + +template +bool CreateUniformBuffer(Dx12* pGfxApi, UniformArrayT& newUniform, const T* const pData = nullptr, BufferUsageFlags usage = BufferUsageFlags::Uniform) +{ + return CreateUniformBuffer(pGfxApi, newUniform, sizeof(T), pData, usage); +} +template +void UpdateUniformBuffer(Dx12* pGfxApi, UniformArrayT& uniform, const T& newData, uint32_t bufferIdx) +{ + return UpdateUniformBuffer(pGfxApi, uniform, sizeof(T), &newData, bufferIdx); +} +template +void UpdateUniformBuffer(Dx12* pGfxApi, UniformArrayT& uniform, const TT& newData, uint32_t bufferIdx) +{ + static_assert(std::is_same::value, "UpdateUniformBuffer, uniform is different type to newData"); + return UpdateUniformBuffer(pGfxApi, static_cast&>(uniform), newData, bufferIdx); +} diff --git a/framework/code/memory/dx12/vertexBufferObject.cpp b/framework/code/memory/dx12/vertexBufferObject.cpp new file mode 100644 index 0000000..d098589 --- /dev/null +++ b/framework/code/memory/dx12/vertexBufferObject.cpp @@ -0,0 +1,153 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "vertexBufferObject.hpp" +#include "material/dx12/vertexDescription.hpp" + + +/////////////////////////////////////////////////////////////////////////////// + +VertexBuffer::~VertexBuffer() +{ + //mBindings.clear(); + //mAttributes.clear(); +} + + +/////////////////////////////////////////////////////////////////////////////// + +VertexBuffer::VertexBuffer(VertexBuffer&& other) noexcept +{ + *this = std::move(other); +} + +/////////////////////////////////////////////////////////////////////////////// + +VertexBuffer& VertexBuffer::operator=(VertexBuffer&& other) noexcept +{ + Buffer::operator=(std::move(other)); + if (&other != this) + { + mSpan = other.mSpan; + other.mSpan = 0; + mNumVertices = other.mNumVertices; + other.mNumVertices = 0; + mDspUsable = other.mDspUsable; + mView = other.mView; + other.mView = {}; + //mBindings = std::move(other.mBindings); + //mAttributes = std::move(other.mAttributes); + } + return *this; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool VertexBuffer::Initialize(MemoryManager* pManager, size_t span, size_t numVerts, const void* initialData, const bool dspUsable, const BufferUsageFlags usage ) +{ + mNumVertices = numVerts; + mSpan = span; + mDspUsable = dspUsable; + + mView = {}; + + if (dspUsable) + { + mManager = pManager; + assert(0); // dsp currently unsupported + return false; + } + else + { + if (!Buffer::Initialize(pManager, static_cast(mSpan * mNumVertices), usage, initialData)) + return false; + + mView.BufferLocation = mAllocatedBuffer.GetResource()->GetGPUVirtualAddress(); + mView.SizeInBytes = mNumVertices * mSpan; + mView.StrideInBytes = mSpan; + } + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +void VertexBuffer::Destroy() +{ + mView = {}; + //mBindings.clear(); + //mAttributes.clear(); + mNumVertices = 0; + Buffer::Destroy(); +} + +/////////////////////////////////////////////////////////////////////////////// + +VertexBuffer VertexBuffer::Copy() +{ + VertexBuffer copy; + if (copy.Initialize(mManager, GetSpan(), GetNumVertices(), Map().data(), mDspUsable, mBufferUsageFlags )) + { + //copy.mBindings = mBindings; + //copy.mAttributes = mAttributes; + copy.mElements = mElements; + return copy; + } + else + { + return {}; + } +} + +/////////////////////////////////////////////////////////////////////////////// + +void VertexBuffer::AddBindingAndAtributes(uint32_t binding, const VertexFormat& vertexFormat) +{ + VertexDescription v(vertexFormat, binding); + mElements.insert(mElements.end(), v.GetVertexElementDescs().begin(), v.GetVertexElementDescs().end()); +} +// +///////////////////////////////////////////////////////////////////////////////// +// +//void VertexBuffer::AddBinding(uint32_t binding, uint32_t stride, VkVertexInputRate inputRate) +//{ +// VkVertexInputBindingDescription vibd = {}; +// vibd.binding = binding; +// vibd.stride = stride; +// vibd.inputRate = inputRate; +// mBindings.push_back(vibd); +//} +// +///////////////////////////////////////////////////////////////////////////////// +// +//void VertexBuffer::AddAttribute(uint32_t binding, uint32_t location, uint32_t offset, VkFormat format) +//{ +// VkVertexInputAttributeDescription viad = {}; +// viad.binding = binding; +// viad.location = location; +// viad.offset = offset; +// viad.format = format; +// mAttributes.push_back(viad); +//} +// +///////////////////////////////////////////////////////////////////////////////// +// +//VkPipelineVertexInputStateCreateInfo VertexBuffer::CreatePipelineState() const +//{ +// assert(mBindings.size() > 0); +// assert(mAttributes.size() > 0); +// VkPipelineVertexInputStateCreateInfo visci = {}; +// visci.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; +// visci.pNext = nullptr; +// visci.vertexBindingDescriptionCount = (uint32_t)mBindings.size(); +// visci.pVertexBindingDescriptions = &mBindings[0]; +// visci.vertexAttributeDescriptionCount = (uint32_t)mAttributes.size(); +// visci.pVertexAttributeDescriptions = &mAttributes[0]; +// return visci; +//} + +/////////////////////////////////////////////////////////////////////////////// diff --git a/framework/code/memory/dx12/vertexBufferObject.hpp b/framework/code/memory/dx12/vertexBufferObject.hpp new file mode 100644 index 0000000..f58c2de --- /dev/null +++ b/framework/code/memory/dx12/vertexBufferObject.hpp @@ -0,0 +1,86 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include "dx12/dx12.hpp" +#include "bufferObject.hpp" +#include "memory/vertexBuffer.hpp" +#include + +class Dx12; +using VertexBufferDx12 = VertexBuffer; + + +/// Buffer containing vertex data (specialized for DX12). +/// @ingroup Memory +template<> +class VertexBuffer : public Buffer +{ + VertexBuffer& operator=(const VertexBuffer&) = delete; + VertexBuffer(const VertexBuffer&) = delete; +public: + VertexBuffer() noexcept = default; + VertexBuffer(VertexBuffer&&) noexcept; + VertexBuffer& operator=(VertexBuffer&&) noexcept; + virtual ~VertexBuffer(); + + bool Initialize(MemoryManager* pManager, size_t span, size_t numVerts, const void* initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex ); + template + bool Initialize(MemoryManager* pManager, const std::span initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex); + + /// destroy buffer and leave in a state where it could be re-initialized + virtual void Destroy() override; + + /// create a copy of this vertex buffer (including a new copy of the data) + VertexBuffer Copy(); + + /// get number of bytes allocated + size_t GetAllocationSize() const { return GetSpan() * GetNumVertices(); } + + /// get span (in bytes) + size_t GetSpan() const { return mSpan; } + + /// get number of vertices allocated + size_t GetNumVertices() const { return mNumVertices; } + + // Dx12 vertex attributes + //void AddBinding(uint32_t binding, uint32_t stride, VkVertexInputRate inputRate); + //void AddAttribute(uint32_t binding, uint32_t location, uint32_t offset, VkFormat format); + void AddBindingAndAtributes(uint32_t binding, const VertexFormat& vertexFormat); // helper, does AddBinding and AddAttribute(s) + //const auto& GetBindings() const { return mBindings; } + //const auto& GetAttributes() const { return mAttributes; } + //VkPipelineVertexInputStateCreateInfo CreatePipelineState() const; + const auto& GetVertexBufferView() const { return mView; } + const auto& GetElementDescs() const { return mElements; } + + /// Access (cpu mapped) vertex data using attribute information + //template + //const T* GetAttributeData(const MemoryCpuMappedUntyped& pMappedVertData, uint32_t location, uint32_t vertIndex, VkFormat expectedFormat) const + //{ + // assert(mAttributes[location].location == location); // going to assume locations are in order within mAttributes and contiguous. May need to revisit this code if not! + // assert(mAttributes[location].format == expectedFormat); // in the future we could convert, for now just expect it to match + // assert(vertIndex < mNumVertices); + // return (const T*)((static_cast(pMappedVertData.data())) + mAttributes[location].offset + mSpan * vertIndex); + //} + +protected: + size_t mSpan = 0; + size_t mNumVertices = 0; + bool mDspUsable = false; + //std::vector mBindings; + //std::vector mAttributes; + D3D12_VERTEX_BUFFER_VIEW mView{}; + std::vector mElements; + +}; + +template +bool VertexBuffer::Initialize(MemoryManager* pManager, const std::span initialData, const bool dspUsable, const BufferUsageFlags usage ) +{ + return Initialize(pManager, sizeof(T), initialData.size(), initialData.data(), dspUsable, usage); +} diff --git a/framework/code/memory/indexBuffer.hpp b/framework/code/memory/indexBuffer.hpp index ed0f8a4..52cb077 100644 --- a/framework/code/memory/indexBuffer.hpp +++ b/framework/code/memory/indexBuffer.hpp @@ -1,33 +1,34 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include "buffer.hpp" +#include /// Templated (by graphics api) buffer containing vertex indices /// DO NOT specialize this template (use IndexBuffer for that) /// @ingroup Memory template -class IndexBufferT: public BufferT +class IndexBufferT: public Buffer { IndexBufferT(const IndexBufferT&) = delete; IndexBufferT& operator=(const IndexBufferT&) = delete; public: IndexBufferT(IndexType) noexcept; - //IndexBufferObject(VkIndexType) noexcept; + //IndexBuffer(VkIndexType) noexcept; IndexBufferT(IndexBufferT&&) noexcept; IndexBufferT& operator=(IndexBufferT&&) noexcept; ~IndexBufferT(); using MemoryManager = MemoryManager; /// Initialization - template bool Initialize( MemoryManager* pManager, size_t numIndices, const T* initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Index); + template bool Initialize( MemoryManager* pManager, const std::span initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Index); /// Initialization bool Initialize( MemoryManager* pManager, size_t numIndices, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Index ); @@ -70,7 +71,7 @@ class IndexBuffer : public IndexBufferT { public: IndexBuffer(IndexType i) noexcept : IndexBufferT(i) {} - //IndexBufferObject(VkIndexType) noexcept; + //IndexBuffer(VkIndexType) noexcept; IndexBuffer(IndexBuffer&& o) noexcept : IndexBufferT(std::move(o)) {} IndexBuffer& operator=(IndexBuffer&& o) noexcept { return IndexBufferT::operator=(o); }; ~IndexBuffer() {} @@ -80,14 +81,14 @@ class IndexBuffer : public IndexBufferT template -IndexBufferT::IndexBufferT(IndexType indexType) noexcept : BufferT(), mIndexType(indexType) +IndexBufferT::IndexBufferT(IndexType indexType) noexcept : Buffer(), mIndexType(indexType) {} //template //IndexBufferT::IndexBufferT(VkIndexType) noexcept; template -IndexBufferT::IndexBufferT(IndexBufferT&& other) noexcept : BufferT(std::move(other)), mIndexType(other.mIndexType) +IndexBufferT::IndexBufferT(IndexBufferT&& other) noexcept : Buffer(std::move(other)), mIndexType(other.mIndexType) { assert(mIndexType == other.mIndexType); mNumIndices = other.mNumIndices; @@ -98,7 +99,7 @@ IndexBufferT::IndexBufferT(IndexBufferT&& other) noexcept : template IndexBufferT& IndexBufferT::operator=(IndexBufferT&& other) noexcept { - BufferT::operator=(std::move(other)); + Buffer::operator=(std::move(other)); if (&other != this) { assert(mIndexType == other.mIndexType); @@ -113,10 +114,10 @@ template IndexBufferT::~IndexBufferT() {} template template -bool IndexBufferT::Initialize(MemoryManager* pManager, size_t numIndices, const T* initialData, const bool dspUsable, const BufferUsageFlags usage) +bool IndexBufferT::Initialize(MemoryManager* pManager, const std::span initialData, const bool dspUsable, const BufferUsageFlags usage) { assert(sizeof(T) == GetIndexTypeBytes()); - return Initialize(pManager, numIndices, (const void*)initialData, dspUsable, usage); + return Initialize(pManager, initialData.size(), initialData.data(), dspUsable, usage); } template @@ -138,14 +139,14 @@ bool IndexBufferT::Initialize(MemoryManager* pManager, size_t numIndic } else { - return BufferT::Initialize(pManager, GetIndexTypeBytes() * mNumIndices, usage, initialData); + return Buffer::Initialize(pManager, GetIndexTypeBytes() * mNumIndices, usage, initialData); } } template void IndexBufferT::Destroy() { - BufferT::Destroy(); + Buffer::Destroy(); } template @@ -153,11 +154,11 @@ template MapGuard IndexBufferT::Map() { assert( sizeof(T) == GetIndexTypeBytes() ); - return BufferT::template Map(); + return Buffer::template Map(); } template MapGuard IndexBufferT::MapVoid() { - return BufferT::template Map(); + return Buffer::template Map(); } diff --git a/framework/code/memory/memory.hpp b/framework/code/memory/memory.hpp index 0a1a20f..d6e0b36 100644 --- a/framework/code/memory/memory.hpp +++ b/framework/code/memory/memory.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once /// Shared definitions used across all graphics APIs (Dx12, Vulkan) diff --git a/framework/code/memory/memoryManager.hpp b/framework/code/memory/memoryManager.hpp index a2065c8..a27e649 100644 --- a/framework/code/memory/memoryManager.hpp +++ b/framework/code/memory/memoryManager.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/memory/memoryMapped.hpp b/framework/code/memory/memoryMapped.hpp index d5f896b..5d968cf 100644 --- a/framework/code/memory/memoryMapped.hpp +++ b/framework/code/memory/memoryMapped.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -17,38 +17,32 @@ template class MemoryAllocation; /// Wraps the VMA or D3D12MA allocation handle. Represents an allocation out of 'gpu' memory. Cannot be copied (only moved) - single owner. /// Passed around between whomever is 'owner' of the allocation (when mapping etc) +/// Expected for this class to be specialized for each graphics api. /// @ingroup Memory template class MemoryAllocation final { - friend class MemoryManager; public: - MemoryAllocation(const MemoryAllocation&) = delete; - MemoryAllocation& operator=(const MemoryAllocation&) = delete; - MemoryAllocation() noexcept {} - MemoryAllocation(MemoryAllocation&& other) noexcept; - MemoryAllocation& operator=(MemoryAllocation&& other) noexcept; - ~MemoryAllocation() { assert(!allocation); } // protect accidental deletion (leak) - explicit operator bool() const { return allocation != nullptr; } -private: - void clear() { allocation = nullptr; } - void* allocation = nullptr; // anonymous handle (gpx api specific) + MemoryAllocation() noexcept {} // This class is expected to be specialized! + ~MemoryAllocation() = delete; // This class is expected to be specialized! +protected: + static_assert(sizeof( MemoryAllocation ) >= 1); // Ensure this class template is specialized (and not used as-is). Maybe the correct #include is not being pulled in! }; /// Represents a memory block allocated on the gfx device and that has an associated buffer/resource handle alongside the allocation -/// @tparam T_VKTYPE underlying buffer/resource type - eg VkImage or VkBuffer on Vulkan +/// @tparam T_BUFFERTYPE underlying buffer/resource type - eg VkImage or VkBuffer on Vulkan /// @ingroup Memory -template +template class MemoryAllocatedBuffer { - MemoryAllocatedBuffer(const MemoryAllocatedBuffer&) = delete; - MemoryAllocatedBuffer& operator=(const MemoryAllocatedBuffer&) = delete; + MemoryAllocatedBuffer(const MemoryAllocatedBuffer&) = delete; + MemoryAllocatedBuffer& operator=(const MemoryAllocatedBuffer&) = delete; public: friend class MemoryManager; // Restrict MemoryAllocatedBuffer to not be duplicated and not accidentally deleted (leaking memory). - MemoryAllocatedBuffer(MemoryAllocatedBuffer&& other) noexcept; - MemoryAllocatedBuffer& operator=(MemoryAllocatedBuffer&& other) noexcept; + MemoryAllocatedBuffer(MemoryAllocatedBuffer&& other) noexcept; + MemoryAllocatedBuffer& operator=(MemoryAllocatedBuffer&& other) noexcept; MemoryAllocatedBuffer() noexcept {} explicit operator bool() const { return static_cast(allocation); } private: @@ -94,26 +88,6 @@ MemoryCpuMappedUntyped::MemoryCpuMappedUntyped(MemoryCpuMappedUntyped< other.mCpuLocation = nullptr; } -// -// MemoryAllocation implementation -// -template -MemoryAllocation::MemoryAllocation(MemoryAllocation&& other) noexcept -{ - allocation = other.allocation; - other.allocation = nullptr; -} - -template -MemoryAllocation& MemoryAllocation::operator=(MemoryAllocation&& other) noexcept -{ - if (&other != this) { - allocation = other.allocation; - other.allocation = nullptr; - } - return *this; -} - // // MemoryCpuMappedUntyped implementation // diff --git a/framework/code/memory/uniform.hpp b/framework/code/memory/uniform.hpp index 09ff392..c48f684 100644 --- a/framework/code/memory/uniform.hpp +++ b/framework/code/memory/uniform.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once /// @file uniform.hpp @@ -43,6 +43,8 @@ struct UniformArray UniformArray(const UniformArray &) = delete; UniformArray& operator=(const UniformArray&) = delete; UniformArray(UniformArray&&) noexcept = delete; // template class expected to be specialized + + static_assert(sizeof( UniformArray ) > 1); // Ensure this class template is specialized (and not used as-is) }; /// @brief UniformArray buffer helper template @@ -55,77 +57,77 @@ struct UniformArrayT : public UniformArray template -bool CreateUniformBuffer(T_GFXAPI* pVulkan, Uniform* pNewUniform, size_t dataSize, const void* const pData = NULL, BufferUsageFlags usage = BufferUsageFlags::Uniform); +bool CreateUniformBuffer( T_GFXAPI*, Uniform* pNewUniform, size_t dataSize, const void* const pData = NULL, BufferUsageFlags usage = BufferUsageFlags::Uniform ) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"memory//uniform.hpp\""); +} template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, Uniform* pUniform, size_t dataSize, const void* const pNewData); +void UpdateUniformBuffer(T_GFXAPI* , Uniform* pUniform, size_t dataSize, const void* const pNewData) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"memory//uniform.hpp\""); +} template -void ReleaseUniformBuffer(T_GFXAPI* pVulkan, Uniform* pUniform); +void ReleaseUniformBuffer(T_GFXAPI* , Uniform* pUniform) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"memory//uniform.hpp\""); +} template -bool CreateUniformBuffer(T_GFXAPI* pVulkan, UniformT& newUniform, const T* const pData = nullptr, BufferUsageFlags usage = BufferUsageFlags::Uniform) +bool CreateUniformBuffer(T_GFXAPI* pGfxApi, UniformT& newUniform, const T* const pData = nullptr, BufferUsageFlags usage = BufferUsageFlags::Uniform) { - return CreateUniformBuffer(pVulkan, &newUniform, sizeof(T), pData, usage); + return CreateUniformBuffer(pGfxApi, &newUniform, sizeof(T), pData, usage); } template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, Uniform& uniform, const T& newData) +void UpdateUniformBuffer(T_GFXAPI* pGfxApi, Uniform& uniform, const T& newData) { - return UpdateUniformBuffer(pVulkan, &uniform, sizeof(T), &newData); + return UpdateUniformBuffer(pGfxApi, &uniform, sizeof(T), &newData); } template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, UniformT& uniform, const TT& newData) +void UpdateUniformBuffer(T_GFXAPI* pGfxApi, UniformT& uniform, const TT& newData) { static_assert(std::is_same::value, "UpdateUniformBuffer, uniform is different type to newData"); - return UpdateUniformBuffer(pVulkan, static_cast&>(uniform), newData); + return UpdateUniformBuffer(pGfxApi, static_cast&>(uniform), newData); } -#if 0 -template -bool CreateUniformBuffer(T_GFXAPI* pVulkan, MemoryAllocatedBuffer& rNewUniformBuffer, size_t dataSize, const void* const pData, BufferUsageFlags usage) = delete/* expected to be specialized*/; -template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, MemoryAllocatedBuffer& rUniform, size_t dataSize, const void* const pNewData) = delete/* expected to be specialized*/; -template -void ReleaseUniformBuffer(T_GFXAPI* pVulkan, MemoryAllocatedBuffer& rUniform) = delete/* expected to be specialized*/; -#endif - template -bool CreateUniformBuffer(T_GFXAPI* pVulkan, UniformArray& rNewUniform, size_t dataSize, const void* const pData = NULL, BufferUsageFlags usage = BufferUsageFlags::Uniform) +bool CreateUniformBuffer(T_GFXAPI* pGfxApi, UniformArray& rNewUniform, size_t dataSize, const void* const pData = NULL, BufferUsageFlags usage = BufferUsageFlags::Uniform) { for (size_t i = 0; i < T_NUM_BUFFERS; ++i) { - if (!CreateUniformBuffer(pVulkan, rNewUniform.buf[i], dataSize, pData, usage)) + if (!CreateUniformBuffer(pGfxApi, rNewUniform.buf[i], dataSize, pData, usage)) return false; //rNewUniform.vkBuffers[i] = rNewUniform.buf[i].GetVkBuffer(); } return true; } template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, UniformArray& rUniform, size_t dataSize, const void* const pNewData, uint32_t bufferIdx) +void UpdateUniformBuffer(T_GFXAPI* pGfxApi, UniformArray& rUniform, size_t dataSize, const void* const pNewData, uint32_t bufferIdx) { - UpdateUniformBuffer(pVulkan, rUniform.buf[bufferIdx], dataSize, pNewData); + UpdateUniformBuffer(pGfxApi, rUniform.buf[bufferIdx], dataSize, pNewData); } template -void ReleaseUniformBuffer(T_GFXAPI* pVulkan, UniformArray& rUniform) +void ReleaseUniformBuffer(T_GFXAPI* pGfxApi, UniformArray& rUniform) { for (size_t i = 0; i < T_NUM_BUFFERS; ++i) { - //rUniform.vkBuffers[i] = VK_NULL_HANDLE; - ReleaseUniformBuffer(pVulkan, rUniform.buf[i]); + rUniform.bufferHandles[i] = {}; + ReleaseUniformBuffer(pGfxApi, rUniform.buf[i]); } } template -bool CreateUniformBuffer(T_GFXAPI* pVulkan, UniformArrayT& newUniform, const T* const pData = nullptr, BufferUsageFlags usage = BufferUsageFlags::Uniform) +bool CreateUniformBuffer(T_GFXAPI* pGfxApi, UniformArrayT& newUniform, const T* const pData = nullptr, BufferUsageFlags usage = BufferUsageFlags::Uniform) { - return CreateUniformBuffer(pVulkan, newUniform, sizeof(T), pData, usage); + return CreateUniformBuffer(pGfxApi, newUniform, sizeof(T), pData, usage); } template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, UniformArrayT& uniform, const T& newData, uint32_t bufferIdx) +void UpdateUniformBuffer(T_GFXAPI* pGfxApi, UniformArrayT& uniform, const T& newData, uint32_t bufferIdx) { - return UpdateUniformBuffer(pVulkan, uniform, sizeof(T), &newData, bufferIdx); + return UpdateUniformBuffer(pGfxApi, uniform, sizeof(T), &newData, bufferIdx); } template -void UpdateUniformBuffer(T_GFXAPI* pVulkan, UniformArrayT& uniform, const TT& newData, uint32_t bufferIdx) +void UpdateUniformBuffer(T_GFXAPI* pGfxApi, UniformArrayT& uniform, const TT& newData, uint32_t bufferIdx) { static_assert(std::is_same::value, "UpdateUniformBuffer, uniform is different type to newData"); - return UpdateUniformBuffer(pVulkan, static_cast&>(uniform), newData, bufferIdx); + return UpdateUniformBuffer(pGfxApi, static_cast&>(uniform), newData, bufferIdx); } diff --git a/framework/code/memory/vertexBuffer.hpp b/framework/code/memory/vertexBuffer.hpp index f078ef3..359a118 100644 --- a/framework/code/memory/vertexBuffer.hpp +++ b/framework/code/memory/vertexBuffer.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -18,59 +18,11 @@ // forward declarations class VertexFormat; -#if 1 - /// Buffer containing vertex data. /// @ingroup Memory template -class VertexBuffer : public BufferT +class VertexBuffer : public Buffer { ~VertexBuffer() noexcept = delete; // Ensure this class template is specialized (and not used as-is) - static_assert(sizeof(VertexBuffer) != sizeof(BufferT)); // Ensure this class template is specialized (and not used as-is) -}; - -#else - -template -class VertexBuffer : public BufferT -{ -public: - VertexBuffer() noexcept; - VertexBuffer(VertexBuffer&&) noexcept; - VertexBuffer& operator=(VertexBuffer&&) noexcept; - virtual ~VertexBuffer(); - - bool Initialize(MemoryManager* pManager, size_t span, size_t numVerts, const void* initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex ); - template - bool Initialize(MemoryManager* pManager, size_t numVerts, const T* initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex); - - /// destroy buffer and leave in a state where it could be re-initialized - virtual void Destroy() override; - - /// create a copy of this vertex buffer (including a new copy of the data) - VertexBuffer Copy(); - - /// get number of bytes allocated - size_t GetAllocationSize() const { return GetSpan() * GetNumVertices(); } - - /// get span (in bytes) - size_t GetSpan() const { return mSpan; } - - /// get number of vertices allocated - size_t GetNumVertices() const { return mNumVertices; } - - /// Vertex attributes - void AddBindingAndAtributes(uint32_t binding, const VertexFormat& vertexFormat) {} - -protected: - size_t mSpan; - size_t mNumVertices; - bool mDspUsable; + static_assert(sizeof(VertexBuffer) != sizeof(Buffer)); // Ensure this class template is specialized (and not used as-is) }; - -template template -bool VertexBuffer::Initialize(MemoryManager* pManager, size_t numVerts, const T* initialData, const bool dspUsable, const BufferUsageFlags usage ) -{ - return false;//Initialize(pManager, sizeof(T), numVerts, initialData, dspUsable, usage); -} -#endif diff --git a/framework/code/memory/vulkan/bufferObject.cpp b/framework/code/memory/vulkan/bufferObject.cpp index a06d8ed..a584081 100644 --- a/framework/code/memory/vulkan/bufferObject.cpp +++ b/framework/code/memory/vulkan/bufferObject.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,24 +9,25 @@ #include "bufferObject.hpp" #include "memoryManager.hpp" #include +#include /////////////////////////////////////////////////////////////////////////////// -BufferT::BufferT() +Buffer::Buffer() { } /////////////////////////////////////////////////////////////////////////////// -BufferT::BufferT(BufferT&& other) noexcept +Buffer::Buffer(Buffer&& other) noexcept { *this = std::move(other); } /////////////////////////////////////////////////////////////////////////////// -BufferT& BufferT::operator=(BufferT&& other) noexcept +Buffer& Buffer::operator=(Buffer&& other) noexcept { if (this != &other) { @@ -41,21 +42,21 @@ BufferT& BufferT::operator=(BufferT&& other) noexcept /////////////////////////////////////////////////////////////////////////////// -BufferT::~BufferT() +Buffer::~Buffer() { Destroy(); } /////////////////////////////////////////////////////////////////////////////// -BufferT::operator bool() const +Buffer::operator bool() const { return !!mAllocatedBuffer; } /////////////////////////////////////////////////////////////////////////////// -bool BufferT::Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, const void* initialData) +bool Buffer::Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, const void* initialData) { MemoryUsage memoryUsage = initialData ? MemoryUsage::CpuToGpu : MemoryUsage::GpuExclusive; if ((bufferUsageFlags & BufferUsageFlags::TransferSrc) != 0) @@ -77,7 +78,7 @@ bool BufferT::Initialize(MemoryManager* pManager, size_t size, BufferUsa /////////////////////////////////////////////////////////////////////////////// -bool BufferT::Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, MemoryUsage memoryUsage) +bool Buffer::Initialize(MemoryManager* pManager, size_t size, BufferUsageFlags bufferUsageFlags, MemoryUsage memoryUsage) { assert(!mManager); if (!pManager) @@ -94,7 +95,34 @@ bool BufferT::Initialize(MemoryManager* pManager, size_t size, BufferUsa /////////////////////////////////////////////////////////////////////////////// -void BufferT::Destroy() +bool Buffer::Update(MemoryManager* pManager, size_t dataSize, const void* newData) +{ + if (newData) + { + auto mappedGuard = Map(); + memcpy(mappedGuard.data(), newData, dataSize); + } + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool Buffer::GetMeshData(MemoryManager* pManager, size_t dataSize, void* outputData) const +{ + auto* pThisNonConst = const_cast*>(this); // we remove the const-ness of 'this' so we can do the map/unmap. Treating this as "no harm no foul" - our class on exit is identical to what it is on entry! + if (outputData) + { + auto mappedGuard = pThisNonConst->Map(); + memcpy(outputData, mappedGuard.data(), dataSize); + } + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +void Buffer::Destroy() { if (!mManager) { @@ -107,7 +135,7 @@ void BufferT::Destroy() /////////////////////////////////////////////////////////////////////////////// -void BufferT::Unmap(MemoryCpuMappedUntyped buffer) +void Buffer::Unmap(MemoryCpuMappedUntyped buffer) { mManager->Unmap(mAllocatedBuffer, std::move(buffer)); } diff --git a/framework/code/memory/vulkan/bufferObject.hpp b/framework/code/memory/vulkan/bufferObject.hpp index 94913b1..e4a24e6 100644 --- a/framework/code/memory/vulkan/bufferObject.hpp +++ b/framework/code/memory/vulkan/bufferObject.hpp @@ -1,13 +1,13 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once -#include +#include #include "memory/buffer.hpp" #include "memory/memory.hpp" #include "memoryManager.hpp" @@ -16,23 +16,22 @@ // Forward declarations struct AHardwareBuffer_Desc; struct AHardwareBuffer; -template class BufferT; +template class Buffer; -using BufferVulkan = BufferT; /// Defines a simple (vulkan specialized) object for creating and holding Vulkan memory buffer objects. /// @ingroup Memory template<> -class BufferT : public Buffer +class Buffer : public BufferBase { - BufferT& operator=(const BufferT&) = delete; - BufferT(const BufferT&) = delete; + Buffer& operator=(const Buffer&) = delete; + Buffer(const Buffer&) = delete; protected: public: - BufferT(); - virtual ~BufferT(); - BufferT(BufferT&&) noexcept; - BufferT& operator=(BufferT&&) noexcept; + Buffer(); + virtual ~Buffer(); + Buffer(Buffer&&) noexcept; + Buffer& operator=(Buffer&&) noexcept; using MemoryManager = MemoryManager; using MemoryCpuMappedUntyped = MemoryCpuMappedUntyped; @@ -44,6 +43,9 @@ class BufferT : public Buffer //bool Initialize(MemoryManager* pManager, BufferUsageFlags usageFlags, const AHardwareBuffer_Desc& hardwareBufferDesc, const void* initialData); //bool Initialize(MemoryManager* pManagere, BufferUsageFlags usageFlags, const AHardwareBuffer* pAHardwareBuffer); + bool Update(MemoryManager* pManager, size_t dataSize, const void* newData); + bool GetMeshData(MemoryManager* pManager, size_t dataSize, void* outputData) const; + /// destroy buffer and leave in a state where it could be re-initialized virtual void Destroy(); diff --git a/framework/code/memory/vulkan/drawIndirectBufferObject.cpp b/framework/code/memory/vulkan/drawIndirectBufferObject.cpp index 99fa076..789d47e 100644 --- a/framework/code/memory/vulkan/drawIndirectBufferObject.cpp +++ b/framework/code/memory/vulkan/drawIndirectBufferObject.cpp @@ -1,105 +1,27 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "drawIndirectBufferObject.hpp" - -DrawIndirectBuffer::DrawIndirectBuffer(bool indexed) noexcept : BufferT(), mIndexed(indexed) -{ -} - -/////////////////////////////////////////////////////////////////////////////// - -DrawIndirectBuffer::~DrawIndirectBuffer() -{ -} - -/////////////////////////////////////////////////////////////////////////////// - -DrawIndirectBuffer::DrawIndirectBuffer(DrawIndirectBuffer&& other) noexcept : mIndexed(other.mIndexed) -{ - *this = std::move(other); -} - -/////////////////////////////////////////////////////////////////////////////// - -DrawIndirectBuffer& DrawIndirectBuffer::operator=(DrawIndirectBuffer&& other) noexcept -{ - BufferT::operator=(std::move(other)); - if (&other != this) - { - assert(mIndexed == other.mIndexed); - mNumDraws = other.mNumDraws; - other.mNumDraws = 0; - mPrequelBytes = other.mPrequelBytes; - other.mPrequelBytes = 0; - } - return *this; -} - -/////////////////////////////////////////////////////////////////////////////// - -bool DrawIndirectBuffer::Initialize(MemoryManager* pManager, size_t numDraws, const void* initialData, const BufferUsageFlags usage, const void* prequelData, uint32_t prequelBytes) -{ - mNumDraws = numDraws; - mPrequelBytes = prequelBytes; - - MemoryUsage memoryUsage = initialData ? MemoryUsage::CpuToGpu : MemoryUsage::GpuExclusive; - if ((usage & BufferUsageFlags::TransferSrc) != 0) - memoryUsage = MemoryUsage::CpuToGpu; - - if (!BufferT::Initialize(pManager, (VkDeviceSize)(GetDrawCommandBytes() * mNumDraws + mPrequelBytes), usage, memoryUsage)) - { - return false; - } - - if (initialData) - { - auto mappedGuard = BufferT::Map(); - auto initialDataSize = GetDrawCommandBytes() * mNumDraws; - if (prequelBytes) - memcpy(mappedGuard.data(), prequelData, prequelBytes); - else - memset(mappedGuard.data(), 0, prequelBytes); - memcpy(mappedGuard.data() + prequelBytes, initialData, initialDataSize); - } - return true; -} - -/////////////////////////////////////////////////////////////////////////////// - -void DrawIndirectBuffer::Destroy() -{ - mNumDraws = 0; - BufferT::Destroy(); -} - -/////////////////////////////////////////////////////////////////////////////// - -DrawIndirectBuffer DrawIndirectBuffer::Copy(BufferUsageFlags newUsageFlags) -{ - if (newUsageFlags == BufferUsageFlags::Unknown) - newUsageFlags = mBufferUsageFlags; - DrawIndirectBuffer copy( IsIndexed() ); - auto data = MapVoid(); - if (copy.Initialize(mManager, GetNumDraws(), static_cast(data.data()) + mPrequelBytes, newUsageFlags, data.data(), mPrequelBytes)) - { - return copy; - } - else - { - return { IsIndexed() }; +template<> +uint32_t DrawIndirectBuffer::GetDrawCommandBytes() const +{ + switch (mIndirectBufferType) { + case eType::Draw: + return sizeof( VkDrawIndirectCommand ); + case eType::IndexedDraw: + return sizeof( VkDrawIndexedIndirectCommand ); + case eType::MeshTasks: + return sizeof( VkDrawMeshTasksIndirectCommandEXT ); + break; + default: + assert(0); + return 0; } } -/////////////////////////////////////////////////////////////////////////////// - -MapGuard DrawIndirectBuffer::MapVoid() -{ - return BufferT::Map(); -} diff --git a/framework/code/memory/vulkan/drawIndirectBufferObject.hpp b/framework/code/memory/vulkan/drawIndirectBufferObject.hpp index fcede01..16e4ee0 100644 --- a/framework/code/memory/vulkan/drawIndirectBufferObject.hpp +++ b/framework/code/memory/vulkan/drawIndirectBufferObject.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,75 +10,3 @@ #include "vulkan/vulkan.hpp" #include "bufferObject.hpp" #include "memory/drawIndirectBuffer.hpp" - -class Vulkan; -using DrawIndirectBufferObject = DrawIndirectBuffer; - - -/// Buffer containing VkDrawIndirectCommand or VkDrawIndexedIndirectCommand (specialized for Vulkan) -/// @ingroup Memory -template<> -class DrawIndirectBuffer : public BufferT -{ - DrawIndirectBuffer(const DrawIndirectBuffer&) = delete; - DrawIndirectBuffer& operator=(const DrawIndirectBuffer&) = delete; -public: - DrawIndirectBuffer(bool indexed) noexcept; - DrawIndirectBuffer(DrawIndirectBuffer&&) noexcept; - DrawIndirectBuffer& operator=(DrawIndirectBuffer&&) noexcept; - ~DrawIndirectBuffer(); - - /// Initialization - template bool Initialize(MemoryManager* pManager, size_t numDraws, const T_DRAW* initialData, const T_PREQUEL* initialPrequelData, const BufferUsageFlags usage = BufferUsageFlags::Indirect); - template bool Initialize(MemoryManager* pManager, size_t numDraws, const T_DRAW* initialData, const BufferUsageFlags usage = BufferUsageFlags::Indirect); - - /// destroy buffer and leave in a state where it could be re-initialized - void Destroy(); - - /// create a copy of this buffer (including a new copy of the data) - /// @param newUsageFlags make the copy with new usage flags (default to copying the source usage flags) - DrawIndirectBuffer Copy(BufferUsageFlags newUsageFlags = BufferUsageFlags::Unknown); - - /// get number of bytes allocated - size_t GetAllocationSize() const { return mPrequelBytes + GetDrawCommandBytes() * mNumDraws; } - - /// Map this buffer to the cpu and return a guard object (automatically unmaps when it goes out of scope) - template MapGuard Map(); - - bool IsIndexed() const { return mIndexed; } - uint32_t GetDrawCommandBytes() const { return (mIndexed ? sizeof(VkDrawIndexedIndirectCommand) : sizeof(VkDrawIndirectCommand)); } - auto GetNumDraws() const { return mNumDraws; } - auto GetBufferOffset() const { return mPrequelBytes; } - -protected: - MapGuard MapVoid(); - bool Initialize(MemoryManager* pManager, size_t numDraws, const void* initialData, const BufferUsageFlags usage, const void* prequelData, uint32_t prequelBytes); - -private: - size_t mNumDraws = 0; - uint32_t mPrequelBytes = 0; // buffer bytes before the index data begins. - const bool mIndexed; -}; - - -template -bool DrawIndirectBuffer::Initialize(MemoryManager* pManager, size_t numDraws, const T* initialData, const BufferUsageFlags usage) -{ - assert(sizeof(T) == GetDrawCommandBytes()); - return Initialize(pManager, numDraws, (const void*)initialData, usage, nullptr, 0); -} - -template -bool DrawIndirectBuffer::Initialize(MemoryManager* pManager, size_t numDraws, const T_DRAW* initialData, const T_PREQUEL* prequelData, const BufferUsageFlags usage) -{ - assert(sizeof(T_DRAW) == GetDrawCommandBytes()); - return Initialize(pManager, numDraws, (const void*)initialData, usage, prequelData, sizeof(T_PREQUEL)); -} - -template -MapGuard DrawIndirectBuffer::Map() -{ - assert(mPrequelBytes == 0); // prequel bytes not yet supported in map - assert(sizeof(T) == GetDrawCommandBytes()); - return BufferT::template Map(); -} diff --git a/framework/code/memory/vulkan/indexBufferObject.cpp b/framework/code/memory/vulkan/indexBufferObject.cpp index a7df2d7..9af2596 100644 --- a/framework/code/memory/vulkan/indexBufferObject.cpp +++ b/framework/code/memory/vulkan/indexBufferObject.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -51,7 +51,7 @@ IndexBuffer IndexBuffer::Copy( VkCommandBuffer vkCommandBuffer, // Create the buffer we are copying into. size_t size = GetIndexTypeBytes() * mNumIndices; - if (!copy.BufferT::Initialize( mManager, size, bufferUsage, memoryUsage )) + if (!copy.Buffer::Initialize( mManager, size, bufferUsage, memoryUsage )) return copy; // Use gpu copy commands to copy buffer data diff --git a/framework/code/memory/vulkan/indexBufferObject.hpp b/framework/code/memory/vulkan/indexBufferObject.hpp index 9fdc4a1..2c4aad3 100644 --- a/framework/code/memory/vulkan/indexBufferObject.hpp +++ b/framework/code/memory/vulkan/indexBufferObject.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -13,7 +13,6 @@ class Vulkan; #include "bufferObject.hpp" #include "memory/indexBuffer.hpp" -using IndexBufferObject = IndexBuffer; // Template specialization for Vulkan Index buffer template<> @@ -21,7 +20,7 @@ class IndexBuffer final : public IndexBufferT { public: IndexBuffer(IndexType i) noexcept : IndexBufferT(i), mVkIndexType( IndexTypeToVk(i) ) {} - //IndexBufferObject(VkIndexType) noexcept; + //IndexBuffer(VkIndexType) noexcept; IndexBuffer(IndexBuffer&& o) noexcept : IndexBufferT(std::move(static_cast&&>(o))), mVkIndexType( o.mVkIndexType ) {} IndexBuffer& operator=(IndexBuffer&& o) noexcept { assert(mVkIndexType == o.mVkIndexType); IndexBufferT::operator=(std::move(static_cast &&>(o))); return *this; }; ~IndexBuffer() {} diff --git a/framework/code/memory/vulkan/memoryManager.cpp b/framework/code/memory/vulkan/memoryManager.cpp index ab118ac..6d660bf 100644 --- a/framework/code/memory/vulkan/memoryManager.cpp +++ b/framework/code/memory/vulkan/memoryManager.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -14,8 +14,9 @@ // Include the VulkanMemoryAllocator AND compile the implementation in this cpp (is a header-only library) #define VMA_IMPLEMENTATION #define VMA_STATIC_VULKAN_FUNCTIONS 0 -#include -#include "VulkanMemoryAllocator/src/vk_mem_alloc.h" +#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1 +#include +#include "VulkanMemoryAllocator/include/vk_mem_alloc.h" // Ensure our enum matches the one in VMA. This way we can pass out enum straight through to VMA (and not have to include the 700kb vma header everywhere) @@ -34,53 +35,61 @@ MemoryManager::MemoryManager() MemoryManager::~MemoryManager() { - Destroy(); + Destroy(); } /////////////////////////////////////////////////////////////////////////////// bool MemoryManager::Initialize(VkPhysicalDevice vkPhysicalDevice, VkDevice vkDevice, VkInstance vkInstance, bool EnableBufferDeviceAddress) { - assert(!mVmaAllocator); - mGpuDevice = vkDevice; - - VmaAllocatorCreateInfo allocatorInfo = {}; - allocatorInfo.physicalDevice = vkPhysicalDevice; - allocatorInfo.device = vkDevice; - allocatorInfo.instance = vkInstance; - allocatorInfo.flags = EnableBufferDeviceAddress ? VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT : 0; - - VkResult result = vmaCreateAllocator(&allocatorInfo, &mVmaAllocator); - if (result != VK_SUCCESS) - { - mVmaAllocator = nullptr; - return false; - } - - if ((allocatorInfo.flags & VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT) != 0) - { - PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(vkInstance, "vkGetDeviceProcAddr"); + assert(!mVmaAllocator); + mGpuDevice = vkDevice; + + VmaVulkanFunctions vulkanFunctions{ + .vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)vkGetInstanceProcAddr, + .vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr( vkInstance, "vkGetDeviceProcAddr" ) + }; + auto* fpGetDeviceProcAddr = vulkanFunctions.vkGetDeviceProcAddr; + + VmaAllocatorCreateInfo allocatorInfo = { + .flags = (VmaAllocatorCreateFlags) ( EnableBufferDeviceAddress ? VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT : 0 ), + .physicalDevice = vkPhysicalDevice, + .device = vkDevice, + .pVulkanFunctions = &vulkanFunctions, + .instance = vkInstance, + .vulkanApiVersion = VK_MAKE_API_VERSION( 0,1,1,0 ), + }; + + VkResult result = vmaCreateAllocator(&allocatorInfo, &mVmaAllocator); + if (result != VK_SUCCESS) + { + mVmaAllocator = nullptr; + return false; + } + + if ((allocatorInfo.flags & VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT) != 0) + { #if VK_KHR_buffer_device_address - mFpGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddressKHR)fpGetDeviceProcAddr(vkDevice, "vkGetBufferDeviceAddressKHR"); + mFpGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddressKHR)fpGetDeviceProcAddr(vkDevice, "vkGetBufferDeviceAddressKHR"); #elif VK_EXT_buffer_device_address - mFpGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddressEXT)fpGetDeviceProcAddr(vkDevice, "vkGetBufferDeviceAddressEXT"); + mFpGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddressEXT)fpGetDeviceProcAddr(vkDevice, "vkGetBufferDeviceAddressEXT"); #endif - if (!mFpGetBufferDeviceAddress) - { - // When we go to Vulkan 1.2 switch to use vkGetBufferDeviceAddress - assert(0 && "vkGetBufferDeviceAddressKHR/vkGetBufferDeviceAddressEXT not available, needed for VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT"); - return false; - } - } - return true; + if (!mFpGetBufferDeviceAddress) + { + // When we go to Vulkan 1.2 switch to use vkGetBufferDeviceAddress + assert(0 && "vkGetBufferDeviceAddressKHR/vkGetBufferDeviceAddressEXT not available, needed for VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT"); + return false; + } + } + return true; } /////////////////////////////////////////////////////////////////////////////// void MemoryManager::Destroy() { - vmaDestroyAllocator(mVmaAllocator); // safe to pass nullptr - mVmaAllocator = nullptr; + vmaDestroyAllocator(mVmaAllocator); // safe to pass nullptr + mVmaAllocator = nullptr; } static VkBufferUsageFlags BufferUsageToVk(BufferUsageFlags usage) @@ -101,10 +110,7 @@ static VkBufferUsageFlags BufferUsageToVk(BufferUsageFlags usage) if ((usage & BufferUsageFlags::Indirect) != 0) vkUsage |= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT; if ((usage & BufferUsageFlags::AccelerationStructure) != 0) - { - vkUsage |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR; - vkUsage |= VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT; - } + vkUsage |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT; if ((usage & BufferUsageFlags::AccelerationStructureBuild) != 0) vkUsage |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR; if ((usage & BufferUsageFlags::ShaderBindingTable) != 0) @@ -123,102 +129,226 @@ static VkBufferUsageFlags BufferUsageToVk(BufferUsageFlags usage) MemoryAllocatedBuffer MemoryManager::CreateBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage, VkDescriptorBufferInfo* pDescriptorBufferInfo) { - assert(memoryUsage != MemoryUsage::Unknown); - VkBufferCreateInfo bufferInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; - bufferInfo.size = (VkDeviceSize)size; - bufferInfo.usage = BufferUsageToVk(bufferUsage); - - VmaAllocationCreateInfo allocInfo = {}; - allocInfo.usage = static_cast(memoryUsage); - + assert(memoryUsage != MemoryUsage::Unknown); + VkBufferCreateInfo bufferInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; + bufferInfo.size = (VkDeviceSize)size; + bufferInfo.usage = BufferUsageToVk(bufferUsage); + + VmaAllocationCreateInfo allocInfo = {}; + allocInfo.usage = static_cast(memoryUsage); + MemoryAllocatedBuffer vmaAllocatedBuffer; - VmaAllocationInfo vmaAllocationInfo; - VkResult result = vmaCreateBuffer(mVmaAllocator, &bufferInfo, &allocInfo, &vmaAllocatedBuffer.buffer, (VmaAllocation*)&vmaAllocatedBuffer.allocation.allocation, &vmaAllocationInfo); - if (result != VK_SUCCESS) - { - return {}; - } - if (pDescriptorBufferInfo) - { - *pDescriptorBufferInfo = { vmaAllocatedBuffer.GetVkBuffer(), 0, size }; - } - return vmaAllocatedBuffer; + VmaAllocationInfo vmaAllocationInfo; + VkResult result = vmaCreateBuffer(mVmaAllocator, &bufferInfo, &allocInfo, &vmaAllocatedBuffer.buffer, (VmaAllocation*)&vmaAllocatedBuffer.allocation.allocation, &vmaAllocationInfo); + if (result != VK_SUCCESS) + { + return {}; + } + if (pDescriptorBufferInfo) + { + *pDescriptorBufferInfo = { vmaAllocatedBuffer.GetVkBuffer(), 0, size }; + } + return vmaAllocatedBuffer; } /////////////////////////////////////////////////////////////////////////////// MemoryAbhAllocatedBuffer MemoryManager::CreateAndroidHardwareBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage) { - assert(0 && "unimplemented"); - return {}; + assert(0 && "unimplemented"); + return {}; +} + +/////////////////////////////////////////////////////////////////////////////// + +VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateImageQCOM( + VmaAllocator allocator, + const VkImageCreateInfo* pImageCreateInfo, + const VmaAllocationCreateInfo* pAllocationCreateInfo, + VkImage* pImage, + VmaAllocation* pAllocation, + VmaAllocationInfo* pAllocationInfo ) +{ + VMA_ASSERT( allocator && pImageCreateInfo && pAllocationCreateInfo && pImage && pAllocation ); + + if (pImageCreateInfo->extent.width == 0 || + pImageCreateInfo->extent.height == 0 || + pImageCreateInfo->extent.depth == 0 || + pImageCreateInfo->mipLevels == 0 || + pImageCreateInfo->arrayLayers == 0) + { + return VK_ERROR_INITIALIZATION_FAILED; + } + + VMA_DEBUG_LOG( "vmaCreateImageQCOM" ); + + VMA_DEBUG_GLOBAL_MUTEX_LOCK + + * pImage = VK_NULL_HANDLE; + *pAllocation = VK_NULL_HANDLE; + + // 1. Create VkImage. + VkResult res = (*allocator->GetVulkanFunctions().vkCreateImage)( + allocator->m_hDevice, + pImageCreateInfo, + allocator->GetAllocationCallbacks(), + pImage); + if (res >= 0) + { + VmaSuballocationType suballocType = pImageCreateInfo->tiling == VK_IMAGE_TILING_OPTIMAL ? + VMA_SUBALLOCATION_TYPE_IMAGE_OPTIMAL : + VMA_SUBALLOCATION_TYPE_IMAGE_LINEAR; + + // 2. Allocate memory using allocator. + VkMemoryRequirements vkMemReq = {}; + + bool requiresDedicatedAllocation = false; + bool prefersDedicatedAllocation = false; + + allocator->GetImageMemoryRequirements( *pImage, vkMemReq, + requiresDedicatedAllocation, prefersDedicatedAllocation ); + + res = allocator->AllocateMemory( + vkMemReq, + requiresDedicatedAllocation, + prefersDedicatedAllocation, + VK_NULL_HANDLE, // dedicatedBuffer + *pImage, // dedicatedImage + pImageCreateInfo->usage, // dedicatedBufferImageUsage + *pAllocationCreateInfo, + suballocType, + 1, // allocationCount + pAllocation ); + + if (res >= 0) + { + // 3. Bind image with memory. + if ((pAllocationCreateInfo->flags & VMA_ALLOCATION_CREATE_DONT_BIND_BIT) == 0) + { + res = allocator->BindImageMemory( *pAllocation, 0, *pImage, VMA_NULL ); + } + if (res >= 0) + { + // All steps succeeded. +#if VMA_STATS_STRING_ENABLED + ( *pAllocation )->InitBufferImageUsage( pImageCreateInfo->usage ); +#endif + if (pAllocationInfo != VMA_NULL) + { + allocator->GetAllocationInfo( *pAllocation, pAllocationInfo ); + } + + return VK_SUCCESS; + } + allocator->FreeMemory( + 1, // allocationCount + pAllocation ); + *pAllocation = VK_NULL_HANDLE; + (*allocator->GetVulkanFunctions().vkDestroyImage)(allocator->m_hDevice, *pImage, allocator->GetAllocationCallbacks()); + *pImage = VK_NULL_HANDLE; + return res; + } + (*allocator->GetVulkanFunctions().vkDestroyImage)(allocator->m_hDevice, *pImage, allocator->GetAllocationCallbacks()); + *pImage = VK_NULL_HANDLE; + return res; + } + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + +static PFN_vkGetImageMemoryRequirements2KHR s_oldGetImageMemReq = nullptr; +void vkGetImageMemoryRequirements2KHR_Qcom( VkDevice device, const VkImageMemoryRequirementsInfo2KHR* memReqInfo, VkMemoryRequirements2KHR* memReq2 ) +{ + VkTileMemoryRequirementsQCOM memReqQCOM { + .sType = VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM, + .pNext = memReq2->pNext + }; + memReq2->pNext = &memReqQCOM; + s_oldGetImageMemReq(device, memReqInfo, memReq2); + + if (true) + { + LOGI("vkGetImageMemoryRequirements2KHR_Qcom image size: %zu (vs %zu for non tiled); alignment : %zu (vs %zu) memory type bits: %d", memReqQCOM.size, memReq2->memoryRequirements.size, memReqQCOM.alignment, memReq2->memoryRequirements.alignment, memReq2->memoryRequirements.memoryTypeBits); + //// Round alignment to next power of 2 (Qualcomm driver may not return a power of 2 alignment) + uint32_t alignment = memReqQCOM.alignment; + assert((memReqQCOM.size % alignment ) == 0); // make sure the buffer's size is aligned, we are going to have to assume everything can be laid out in order! + memReq2->memoryRequirements.alignment = 1;// alignment; + memReq2->memoryRequirements.size = memReqQCOM.size; + + // memReq2->memoryRequirements.memoryTypeBits = memReqQCOM.memoryTypeBits; + } + memReq2->pNext = const_cast(memReqQCOM.pNext); } /////////////////////////////////////////////////////////////////////////////// MemoryAllocatedBuffer MemoryManager::CreateImage(const VkImageCreateInfo& imageInfo, MemoryUsage memoryUsage) { - assert(memoryUsage != MemoryUsage::Unknown); - VmaAllocationCreateInfo allocInfo = {}; - allocInfo.usage = static_cast(memoryUsage); - - MemoryAllocatedBuffer vmaAllocatedImage; - VkResult result = vmaCreateImage(mVmaAllocator, &imageInfo, &allocInfo, &vmaAllocatedImage.buffer, (VmaAllocation*)&vmaAllocatedImage.allocation.allocation, nullptr); - if (result != VK_SUCCESS) - { - return {}; - } - return vmaAllocatedImage; + assert(memoryUsage != MemoryUsage::Unknown); + VmaAllocationCreateInfo allocInfo = {}; + allocInfo.usage = static_cast(memoryUsage); + + MemoryAllocatedBuffer vmaAllocatedImage; + + VkResult result = vmaCreateImage(mVmaAllocator, &imageInfo, &allocInfo, &vmaAllocatedImage.buffer, (VmaAllocation*)&vmaAllocatedImage.allocation.allocation, nullptr); + + if (result != VK_SUCCESS) + { + return {}; + } + return vmaAllocatedImage; } /////////////////////////////////////////////////////////////////////////////// MemoryAllocatedBuffer MemoryManager::AllocateMemory(size_t size, uint32_t memoryTypeBits) { - VkMemoryRequirements memoryRequirements{ .size = size, .memoryTypeBits = memoryTypeBits }; - - VmaAllocationCreateInfo allocInfo = {}; - allocInfo.usage = VMA_MEMORY_USAGE_UNKNOWN; - allocInfo.memoryTypeBits = memoryTypeBits; - allocInfo.flags = VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; - - MemoryAllocatedBuffer vmaAllocatedMemory; - VkResult result = vmaAllocateMemory(mVmaAllocator, &memoryRequirements, &allocInfo, (VmaAllocation*)&vmaAllocatedMemory.allocation.allocation, nullptr); - if (result != VK_SUCCESS) - { - return {}; - } - vmaAllocatedMemory.buffer = static_cast(vmaAllocatedMemory.allocation.allocation)->GetMemory(); - return vmaAllocatedMemory; + VkMemoryRequirements memoryRequirements{ .size = size, .memoryTypeBits = memoryTypeBits }; + + VmaAllocationCreateInfo allocInfo = {}; + allocInfo.usage = VMA_MEMORY_USAGE_UNKNOWN; + allocInfo.memoryTypeBits = memoryTypeBits; + allocInfo.flags = VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; + + MemoryAllocatedBuffer vmaAllocatedMemory; + VkResult result = vmaAllocateMemory(mVmaAllocator, &memoryRequirements, &allocInfo, (VmaAllocation*)&vmaAllocatedMemory.allocation.allocation, nullptr); + if (result != VK_SUCCESS) + { + return {}; + } + vmaAllocatedMemory.buffer = static_cast(vmaAllocatedMemory.allocation.allocation)->GetMemory(); + return vmaAllocatedMemory; } /////////////////////////////////////////////////////////////////////////////// MemoryAllocatedBuffer MemoryManager::BindImageToMemory(VkImage image, MemoryAllocatedBuffer&& memory) const { - VkResult result = vkBindImageMemory(mGpuDevice, image, static_cast(memory.allocation.allocation)->GetMemory(), static_cast(memory.allocation.allocation)->GetOffset()); - if (result != VK_SUCCESS) - { - return {}; - } - MemoryAllocatedBuffer imageMemory; - imageMemory.allocation = std::move(memory.allocation); - imageMemory.buffer = image; - return imageMemory; + VkResult result = vkBindImageMemory(mGpuDevice, image, static_cast(memory.allocation.allocation)->GetMemory(), static_cast(memory.allocation.allocation)->GetOffset()); + if (result != VK_SUCCESS) + { + return {}; + } + MemoryAllocatedBuffer imageMemory; + imageMemory.allocation = std::move(memory.allocation); + imageMemory.buffer = image; + return imageMemory; } /////////////////////////////////////////////////////////////////////////////// MemoryAllocatedBuffer MemoryManager::BindBufferToMemory(VkBuffer buffer, MemoryAllocatedBuffer&& memory) const { - VkResult result = vkBindBufferMemory(mGpuDevice, buffer, static_cast(memory.allocation.allocation)->GetMemory(), static_cast(memory.allocation.allocation)->GetOffset()); - if (result != VK_SUCCESS) - { - return {}; - } - MemoryAllocatedBuffer bufferMemory; - bufferMemory.allocation = std::move(memory.allocation); - bufferMemory.buffer = buffer; - return bufferMemory; + VkResult result = vkBindBufferMemory(mGpuDevice, buffer, static_cast(memory.allocation.allocation)->GetMemory(), static_cast(memory.allocation.allocation)->GetOffset()); + if (result != VK_SUCCESS) + { + return {}; + } + MemoryAllocatedBuffer bufferMemory; + bufferMemory.allocation = std::move(memory.allocation); + bufferMemory.buffer = buffer; + return bufferMemory; } /////////////////////////////////////////////////////////////////////////////// @@ -237,91 +367,208 @@ bool MemoryManager::CopyData( VkCommandBuffer vkCommandBuffer, const Mem void MemoryManager::Destroy(MemoryAllocatedBuffer vmaAllocatedBuffer) { - assert(mVmaAllocator); - vmaDestroyBuffer(mVmaAllocator, vmaAllocatedBuffer.buffer, static_cast(vmaAllocatedBuffer.allocation.allocation)); - // Set the allocated buffer to a clean (deletable) state. - vmaAllocatedBuffer.allocation.clear(); - vmaAllocatedBuffer.buffer = VK_NULL_HANDLE; - // no error code from vmaDestroyBuffer so assume it worked (is also safe to pass an empty vmaAllocatedBuffer) + assert(mVmaAllocator); + vmaDestroyBuffer(mVmaAllocator, vmaAllocatedBuffer.buffer, static_cast(vmaAllocatedBuffer.allocation.allocation)); + // Set the allocated buffer to a clean (deletable) state. + vmaAllocatedBuffer.allocation.clear(); + vmaAllocatedBuffer.buffer = VK_NULL_HANDLE; + // no error code from vmaDestroyBuffer so assume it worked (is also safe to pass an empty vmaAllocatedBuffer) } /////////////////////////////////////////////////////////////////////////////// void MemoryManager::Destroy(MemoryAllocatedBuffer vmaAllocatedImage) { - assert(mVmaAllocator); - vmaDestroyImage(mVmaAllocator, vmaAllocatedImage.buffer, static_cast(vmaAllocatedImage.allocation.allocation)); - // Set the allocated buffer to a clean (deletable) state. - vmaAllocatedImage.allocation.clear(); - vmaAllocatedImage.buffer = VK_NULL_HANDLE; - // no error code from vmaDestroyImage so assume it worked (is also safe to pass an empty vmaAllocatedImage) + assert(mVmaAllocator); + vmaDestroyImage(mVmaAllocator, vmaAllocatedImage.buffer, static_cast(vmaAllocatedImage.allocation.allocation)); + // Set the allocated buffer to a clean (deletable) state. + vmaAllocatedImage.allocation.clear(); + vmaAllocatedImage.buffer = VK_NULL_HANDLE; + // no error code from vmaDestroyImage so assume it worked (is also safe to pass an empty vmaAllocatedImage) } /////////////////////////////////////////////////////////////////////////////// void MemoryManager::Destroy(MemoryAllocatedBuffer vmaAllocatedMemory) { - assert(mVmaAllocator); + assert(mVmaAllocator); vmaFreeMemory(mVmaAllocator, (VmaAllocation_T*)vmaAllocatedMemory.allocation.allocation); - // Set the allocated buffer to a clean (deletable) state. - vmaAllocatedMemory.allocation.clear(); - vmaAllocatedMemory.buffer = VK_NULL_HANDLE; + // Set the allocated buffer to a clean (deletable) state. + vmaAllocatedMemory.allocation.clear(); + vmaAllocatedMemory.buffer = VK_NULL_HANDLE; } /////////////////////////////////////////////////////////////////////////////// MemoryAllocatedBuffer MemoryManager::DestroyBufferOnly(MemoryAllocatedBuffer vmaAllocatedBuffer) { - assert(mVmaAllocator); - vkDestroyBuffer(mGpuDevice, vmaAllocatedBuffer.buffer, nullptr); - MemoryAllocatedBuffer allocatedMemory; - allocatedMemory.buffer = static_cast(vmaAllocatedBuffer.allocation.allocation)->GetMemory(); - allocatedMemory.allocation = std::move(vmaAllocatedBuffer.allocation); - return allocatedMemory; + assert(mVmaAllocator); + vkDestroyBuffer(mGpuDevice, vmaAllocatedBuffer.buffer, nullptr); + MemoryAllocatedBuffer allocatedMemory; + allocatedMemory.buffer = static_cast(vmaAllocatedBuffer.allocation.allocation)->GetMemory(); + allocatedMemory.allocation = std::move(vmaAllocatedBuffer.allocation); + return allocatedMemory; } /////////////////////////////////////////////////////////////////////////////// MemoryAllocatedBuffer MemoryManager::DestroyBufferOnly(MemoryAllocatedBuffer vmaAllocatedImage) { - assert(mVmaAllocator); - vkDestroyImage(mGpuDevice, vmaAllocatedImage.buffer, nullptr); - MemoryAllocatedBuffer allocatedMemory; - allocatedMemory.buffer = static_cast(vmaAllocatedImage.allocation.allocation)->GetMemory(); - allocatedMemory.allocation = std::move(vmaAllocatedImage.allocation); - return allocatedMemory; + assert(mVmaAllocator); + vkDestroyImage(mGpuDevice, vmaAllocatedImage.buffer, nullptr); + MemoryAllocatedBuffer allocatedMemory; + allocatedMemory.buffer = static_cast(vmaAllocatedImage.allocation.allocation)->GetMemory(); + allocatedMemory.allocation = std::move(vmaAllocatedImage.allocation); + return allocatedMemory; } /////////////////////////////////////////////////////////////////////////////// VkDeviceAddress MemoryManager::GetBufferDeviceAddressInternal(VkBuffer buffer) const { - assert(mFpGetBufferDeviceAddress != nullptr); // need EnableBufferDeviceAddress parameter to be set on Initialize + assert(mFpGetBufferDeviceAddress != nullptr); // need EnableBufferDeviceAddress parameter to be set on Initialize - VkBufferDeviceAddressInfoEXT bufferAddressInfo = {}; - bufferAddressInfo.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT; - bufferAddressInfo.buffer = buffer; - return mFpGetBufferDeviceAddress(mGpuDevice, &bufferAddressInfo); + VkBufferDeviceAddressInfoEXT bufferAddressInfo = {}; + bufferAddressInfo.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT; + bufferAddressInfo.buffer = buffer; + return mFpGetBufferDeviceAddress(mGpuDevice, &bufferAddressInfo); } /////////////////////////////////////////////////////////////////////////////// void MemoryManager::MapInternal(void* vmaAllocation, void** outCpuLocation) { - assert(outCpuLocation != nullptr); - assert(*outCpuLocation == nullptr); // mapped twice? - assert(vmaAllocation != nullptr); // Likely caused by a double mapping of this data - if (vmaMapMemory(mVmaAllocator, static_cast(vmaAllocation), outCpuLocation) != VK_SUCCESS) - { - outCpuLocation = nullptr; - assert(0); - } + assert(outCpuLocation != nullptr); + assert(*outCpuLocation == nullptr); // mapped twice? + assert(vmaAllocation != nullptr); // Likely caused by a double mapping of this data + if (vmaMapMemory(mVmaAllocator, static_cast(vmaAllocation), outCpuLocation) != VK_SUCCESS) + { + outCpuLocation = nullptr; + assert(0); + } } /////////////////////////////////////////////////////////////////////////////// void MemoryManager::UnmapInternal(void* vmaAllocation, void* cpuLocation) { - assert(cpuLocation); - vmaUnmapMemory(mVmaAllocator, static_cast(vmaAllocation)); + assert(cpuLocation); + vmaUnmapMemory(mVmaAllocator, static_cast(vmaAllocation)); } + +/////////////////////////////////////////////////////////////////////////////// + +MemoryPool MemoryManager::CreateCustomPool( uint32_t typeIndex, uint32_t poolAllocationSize, uint32_t maxPoolAllocations, uint32_t bufferUsageFlag, uint32_t imageUsageFlag ) const +{ + VmaPoolCreateInfo poolCreateInfo{ + .memoryTypeIndex = typeIndex, + .blockSize = poolAllocationSize, + //.flags, + .maxBlockCount = maxPoolAllocations, + .pMemoryAllocateNext = nullptr + }; + + VmaPool vmaPool{}; + if (vmaCreatePool( mVmaAllocator, &poolCreateInfo, &vmaPool ) != VK_SUCCESS) + return {}; + return {vmaPool, bufferUsageFlag, imageUsageFlag}; +} + +/////////////////////////////////////////////////////////////////////////////// + +MemoryAllocatedBuffer MemoryManager::AllocateMemory( MemoryPool& pool, size_t size, uint32_t memoryTypeBits ) +{ + VkMemoryRequirements memoryRequirements{.size = size, .memoryTypeBits = memoryTypeBits}; + + VmaAllocationCreateInfo allocInfo{ + .pool = (VmaPool)pool.pool + }; + + MemoryAllocatedBuffer vmaAllocatedMemory; + VmaAllocationInfo retInfo{}; + VkResult result = vmaAllocateMemory( mVmaAllocator, &memoryRequirements, &allocInfo, (VmaAllocation*)&vmaAllocatedMemory.allocation.allocation, &retInfo ); + if (result != VK_SUCCESS) + { + return {}; + } + vmaAllocatedMemory.buffer = static_cast(vmaAllocatedMemory.allocation.allocation)->GetMemory(); + + LOGI("Allocated memory from pool. size=%zu offset=%zu memoryType=0x%x", (size_t) retInfo.size, (size_t) retInfo.offset, (uint32_t) retInfo.memoryType); + return vmaAllocatedMemory; +} + +/////////////////////////////////////////////////////////////////////////////// + +MemoryAllocatedBuffer MemoryManager::CreateBuffer( MemoryPool& pool, size_t size, BufferUsageFlags bufferUsage, VkDescriptorBufferInfo* pDescriptorBufferInfo ) +{ + assert( pool ); + static_assert(sizeof( VkBufferUsageFlags ) == sizeof( decltype(pool.bufferUsageFlag) )); + const VkBufferCreateInfo bufferInfo { + .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + .size = (VkDeviceSize)size, + .usage = BufferUsageToVk( bufferUsage ) | pool.bufferUsageFlag + }; + + const VmaAllocationCreateInfo allocInfo = { + .pool = (VmaPool)pool.pool + }; + + MemoryAllocatedBuffer vmaAllocatedBuffer; + VmaAllocationInfo vmaAllocationInfo; + VkResult result = vmaCreateBuffer( mVmaAllocator, &bufferInfo, &allocInfo, &vmaAllocatedBuffer.buffer, (VmaAllocation*)&vmaAllocatedBuffer.allocation.allocation, &vmaAllocationInfo ); + if (result != VK_SUCCESS) + { + return {}; + } + if (pDescriptorBufferInfo) + { + *pDescriptorBufferInfo = {vmaAllocatedBuffer.GetVkBuffer(), 0, size}; + } + LOGI( "Successfully called vmaCreateBuffer with pool. size=%zu offset=%zu memoryType=0x%x", (size_t)vmaAllocationInfo.size, (size_t)vmaAllocationInfo.offset, (uint32_t)vmaAllocationInfo.memoryType ); + return vmaAllocatedBuffer; +} + +/////////////////////////////////////////////////////////////////////////////// + +MemoryAllocatedBuffer MemoryManager::CreateImage( MemoryPool& pool, const VkImageCreateInfo& imageInfo ) +{ + assert( pool ); + const VmaAllocationCreateInfo allocInfo { + .pool = (VmaPool) pool.pool + }; + // Add in any flags specified with this pool + auto imageInfoCopy = imageInfo; + static_assert(sizeof( VkImageUsageFlags ) == sizeof( decltype(pool.imageUsageFlag) )); + imageInfoCopy.usage |= (VkImageUsageFlags) pool.imageUsageFlag; + + + + + + MemoryAllocatedBuffer vmaAllocatedImage; + VmaAllocationInfo vmaAllocationInfo; + + // Swap in our stub of vkGetImageMemoryRequirements2KHR + VmaVulkanFunctions& vmaVulkanFunctions = const_cast(mVmaAllocator->GetVulkanFunctions()); + s_oldGetImageMemReq = vmaVulkanFunctions.vkGetImageMemoryRequirements2KHR; + vmaVulkanFunctions.vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2KHR_Qcom; + // Call vmaCreateImage (will use our stub to get memory requirements) + VkResult result = vmaCreateImage( mVmaAllocator, &imageInfoCopy, &allocInfo, &vmaAllocatedImage.buffer, (VmaAllocation*)&vmaAllocatedImage.allocation.allocation, &vmaAllocationInfo ); + // Put vkGetImageMemoryRequirements2KHR back to how it was! + vmaVulkanFunctions.vkGetImageMemoryRequirements2KHR = s_oldGetImageMemReq; + + if (result != VK_SUCCESS) + { + return {}; + } + LOGI( "Successfully called vmaCreateImageQCOM with pool. size=%zu offset=%zu memoryType=0x%x format=%s", (size_t)vmaAllocationInfo.size, (size_t)vmaAllocationInfo.offset, (uint32_t)vmaAllocationInfo.memoryType, Vulkan::VulkanFormatString(imageInfo.format) ); + return vmaAllocatedImage; +} + +/////////////////////////////////////////////////////////////////////////////// + +VkDeviceMemory MemoryManager::GetVkDeviceMemory( const MemoryAllocation& alloc ) const +{ + return static_cast(alloc.allocation)->GetMemory(); +} + diff --git a/framework/code/memory/vulkan/memoryManager.hpp b/framework/code/memory/vulkan/memoryManager.hpp index 0fe3b1e..8d0bec2 100644 --- a/framework/code/memory/vulkan/memoryManager.hpp +++ b/framework/code/memory/vulkan/memoryManager.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -16,7 +16,7 @@ #include #include -#include +#include #ifdef OS_WINDOWS #include #endif // OS_WINDOWS @@ -33,19 +33,65 @@ struct AHardwareBuffer; //template class MemoryAbhAllocatedBuffer { - MemoryAbhAllocatedBuffer(const MemoryAbhAllocatedBuffer&) = delete; - MemoryAbhAllocatedBuffer& operator=(const MemoryAbhAllocatedBuffer&) = delete; + MemoryAbhAllocatedBuffer(const MemoryAbhAllocatedBuffer&) = delete; + MemoryAbhAllocatedBuffer& operator=(const MemoryAbhAllocatedBuffer&) = delete; public: - friend class MemoryManager; - // Restrict MemoryAbhAllocatedBuffer to not be duplicated and not accidentally deleted (leaking memory). - MemoryAbhAllocatedBuffer(MemoryAbhAllocatedBuffer&& other); - MemoryAbhAllocatedBuffer& operator=(MemoryAbhAllocatedBuffer&& other); - MemoryAbhAllocatedBuffer() {} -// const T_VKTYPE& GetVkBuffer() const { return buffer; } - explicit operator bool() const { return static_cast(allocation); } + friend class MemoryManager; + // Restrict MemoryAbhAllocatedBuffer to not be duplicated and not accidentally deleted (leaking memory). + MemoryAbhAllocatedBuffer(MemoryAbhAllocatedBuffer&& other); + MemoryAbhAllocatedBuffer& operator=(MemoryAbhAllocatedBuffer&& other); + MemoryAbhAllocatedBuffer() {} +// const T_VKTYPE& GetVkBuffer() const { return buffer; } + explicit operator bool() const { return static_cast(allocation); } private: - AHardwareBuffer* allocation = nullptr; -// T_VKTYPE buffer = VK_NULL_HANDLE; // the allocated vulkan buffer (or VK_NULL_HANDLE) + AHardwareBuffer* allocation = nullptr; +// T_VKTYPE buffer = VK_NULL_HANDLE; // the allocated vulkan buffer (or VK_NULL_HANDLE) +}; + + +/// Wraps the VMA custom pool handle. Represents a pool allocator for 'gpu' memory. Cannot be copied (only moved) - single owner. +/// @ingroup Memory +template +class MemoryPool final +{ + friend class MemoryManager; + //MemoryPool( void* _pool ) noexcept : pool( _pool ) {} + MemoryPool( void* _pool, uint32_t _bufferUsageFlag, uint32_t _imageUsageFlag ) noexcept + : pool( _pool ) + , bufferUsageFlag(_bufferUsageFlag) + , imageUsageFlag(_imageUsageFlag) + {} + +public: + MemoryPool( const MemoryPool& ) = delete; + MemoryPool& operator=( const MemoryPool& ) = delete; + MemoryPool() noexcept {} + MemoryPool( MemoryPool&& other ) noexcept + : pool( other.pool ) + , bufferUsageFlag( other.bufferUsageFlag ) + , imageUsageFlag( other.imageUsageFlag ) + { + other.pool = nullptr; + }; + MemoryPool& operator=( MemoryPool&& other ) noexcept { + if (this != &other) + { + pool = other.pool; + other.pool = nullptr; + bufferUsageFlag = other.bufferUsageFlag; + other.bufferUsageFlag = 0; + imageUsageFlag = other.imageUsageFlag; + other.imageUsageFlag = 0; + } + return *this; + } + ~MemoryPool() { assert( !pool ); } // protect accidental deletion (leak) + explicit operator bool() const { return pool != nullptr; } +private: + void clear() { pool = nullptr; } + void* pool = nullptr; // anonymous handle (gpx api specific) + uint32_t bufferUsageFlag = 0; // Additional flag that should be applied (or'ed) to creation parameters when buffers created out of this heap (eg VkBufferCreateInfo::usage) + uint32_t imageUsageFlag = 0; // Additional flag that should be applied (or'ed) to creation parameters when images created out of this heap (eg VkImageCreateInfo::usage) }; @@ -54,77 +100,92 @@ class MemoryAbhAllocatedBuffer template<> class MemoryManager { - MemoryManager(const MemoryManager&) = delete; - MemoryManager& operator=(const MemoryManager&) = delete; + MemoryManager(const MemoryManager&) = delete; + MemoryManager& operator=(const MemoryManager&) = delete; public: - MemoryManager(); - ~MemoryManager(); - using tGfxApi = Vulkan; - - /// Initialize the memory manager (must be initialized before using CreateBuffer etc) - /// @param EnableBufferDeviceAddress enable ability to call GetBufferDeviceAddress - /// @return true if successfully initialized - bool Initialize(VkPhysicalDevice vkPhysicalDevice, VkDevice vkDevice, VkInstance vkInstance, bool EnableBufferDeviceAddress); - /// Destroy the memory manager (do before you destroy the Vulkan device) - void Destroy(); - - /// Create buffer in memory and create the associated Vulkan objects - MemoryAllocatedBuffer CreateBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage, VkDescriptorBufferInfo* /*output, optional*/ = nullptr); - /// Create image in memory and create the associated Vulkan objects - MemoryAllocatedBuffer CreateImage(const VkImageCreateInfo& imageInfo, MemoryUsage memoryUsage); - /// Allocation with 'unknown' use type. Typically you would use CreateBuffer or CreateImage, this is for special cases! - MemoryAllocatedBuffer AllocateMemory(size_t size, uint32_t memoryTypeBits); - /// Bind the provided image to already allocated memory (assumes the memory was allocated to be compatible) - /// Memory allocation is transfered from the input MemoryVmaAllocatedBuffer to the returned MemoryVmaAllocatedBuffer (ownership transfer of memory and image) - MemoryAllocatedBuffer BindImageToMemory(VkImage image, MemoryAllocatedBuffer&& memory) const; - /// Bind the provided buffer to already allocated memory (assumes the memory was allocated to be compatible) - /// Memory allocation is transfered from the input MemoryVmaAllocatedBuffer to the returned MemoryVmaAllocatedBuffer (ownership transfer of memory and buffer) - MemoryAllocatedBuffer BindBufferToMemory(VkBuffer buffer, MemoryAllocatedBuffer&& memory) const; - - /// Destruction of created buffer - void Destroy(MemoryAllocatedBuffer); - /// Destruction of created image - void Destroy(MemoryAllocatedBuffer); - /// Destruction of a memory buffer (without a bound vkImage or vkBuffer) - void Destroy(MemoryAllocatedBuffer vmaAllocatedMemory); - /// Destruction of just the bound buffer (not the underlying device memory) - MemoryAllocatedBuffer DestroyBufferOnly(MemoryAllocatedBuffer); - /// Destruction of just the bound image (not the underlying device memory) - MemoryAllocatedBuffer DestroyBufferOnly(MemoryAllocatedBuffer); - - // Creation of Android Hardware buffer (with a Vulkan object) - MemoryAbhAllocatedBuffer CreateAndroidHardwareBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage); - - /// Map a buffer to cpu memory - template - MemoryCpuMapped Map(MemoryAllocatedBuffer& buffer); - - /// Unmap a buffer from cpu memory - template - void Unmap(MemoryAllocatedBuffer& buffer, MemoryCpuMappedUntyped allocation); + MemoryManager(); + ~MemoryManager(); + + /// Initialize the memory manager (must be initialized before using CreateBuffer etc) + /// @param EnableBufferDeviceAddress enable ability to call GetBufferDeviceAddress + /// @return true if successfully initialized + bool Initialize(VkPhysicalDevice vkPhysicalDevice, VkDevice vkDevice, VkInstance vkInstance, bool EnableBufferDeviceAddress); + /// Destroy the memory manager (do before you destroy the Vulkan device) + void Destroy(); + + /// Create buffer in memory and create the associated Vulkan objects + MemoryAllocatedBuffer CreateBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage, VkDescriptorBufferInfo* /*output, optional*/ = nullptr); + /// Create image in memory and create the associated Vulkan objects + MemoryAllocatedBuffer CreateImage(const VkImageCreateInfo& imageInfo, MemoryUsage memoryUsage); + /// Allocation with 'unknown' use type. Typically you would use CreateBuffer or CreateImage, this is for special cases! + MemoryAllocatedBuffer AllocateMemory(size_t size, uint32_t memoryTypeBits); + /// Bind the provided image to already allocated memory (assumes the memory was allocated to be compatible) + /// Memory allocation is transfered from the input MemoryVmaAllocatedBuffer to the returned MemoryVmaAllocatedBuffer (ownership transfer of memory and image) + MemoryAllocatedBuffer BindImageToMemory(VkImage image, MemoryAllocatedBuffer&& memory) const; + /// Bind the provided buffer to already allocated memory (assumes the memory was allocated to be compatible) + /// Memory allocation is transfered from the input MemoryVmaAllocatedBuffer to the returned MemoryVmaAllocatedBuffer (ownership transfer of memory and buffer) + MemoryAllocatedBuffer BindBufferToMemory(VkBuffer buffer, MemoryAllocatedBuffer&& memory) const; + + /// Destruction of created buffer + void Destroy(MemoryAllocatedBuffer); + /// Destruction of created image + void Destroy(MemoryAllocatedBuffer); + /// Destruction of a memory buffer (without a bound vkImage or vkBuffer) + void Destroy(MemoryAllocatedBuffer vmaAllocatedMemory); + /// Destruction of just the bound buffer (not the underlying device memory) + MemoryAllocatedBuffer DestroyBufferOnly(MemoryAllocatedBuffer); + /// Destruction of just the bound image (not the underlying device memory) + MemoryAllocatedBuffer DestroyBufferOnly(MemoryAllocatedBuffer); + + // Creation of Android Hardware buffer (with a Vulkan object) + MemoryAbhAllocatedBuffer CreateAndroidHardwareBuffer(size_t size, BufferUsageFlags bufferUsage, MemoryUsage memoryUsage); + + /// Map a buffer to cpu memory + template + MemoryCpuMapped Map(MemoryAllocatedBuffer& buffer); + + /// Unmap a buffer from cpu memory + template + void Unmap(MemoryAllocatedBuffer& buffer, MemoryCpuMappedUntyped allocation); /// Copy data in one buffer into another. Assumes buffers created with appropriate VK_BUFFER_USAGE_TRANSFER_SRC_BIT and VK_BUFFER_USAGE_TRANSFER_DST_BIT bool CopyData(VkCommandBuffer vkCommandBuffer, const MemoryAllocatedBuffer& src, MemoryAllocatedBuffer& dst, size_t copySize, size_t srcOffset = 0, size_t dstOffset = 0); - /// Query the device address (assuming that Vulkan extension was enabled) - VkDeviceAddress GetBufferDeviceAddress(VkBuffer b) const { return GetBufferDeviceAddressInternal(b); } - /// Query the device address (assuming that Vulkan extension was enabled) - template - VkDeviceAddress GetBufferDeviceAddress(const T& b) const { return GetBufferDeviceAddress(b.GetVkBuffer()); } + /// Query the device address (assuming that Vulkan extension was enabled) + VkDeviceAddress GetBufferDeviceAddress(VkBuffer b) const { return GetBufferDeviceAddressInternal(b); } + /// Query the device address (assuming that Vulkan extension was enabled) + template + VkDeviceAddress GetBufferDeviceAddress(const T& b) const { return GetBufferDeviceAddress(b.GetVkBuffer()); } + + /// @brief Create a custom memory pool using the given memory heap + /// @param heapIndex index of the Vulkan heap to use for this pool + /// @param poolAllocationSize size of each 'chunk' allocation made by this pool + /// @param maxPoolAllocations maximum number of 'chunk' allocations that can be made by this pool (NOT the number of buffers/iamges that can be allocated from those chunks) + /// @param bufferUsageFlag value to | into VkBufferCreateInfo::usage + /// @param imageUsageFlag value to | into VkImageCreateInfo::usage + /// @return + MemoryPool CreateCustomPool( uint32_t typeIndex, uint32_t poolAllocationSize, uint32_t maxPoolAllocations, uint32_t bufferUsageFlag, uint32_t imageUsageFlag ) const; + + /// @brief Allocate memory out of a pool + MemoryAllocatedBuffer AllocateMemory( MemoryPool& pool, size_t size, uint32_t memoryTypeBits ); + MemoryAllocatedBuffer CreateBuffer( MemoryPool& pool, size_t size, BufferUsageFlags bufferUsage, VkDescriptorBufferInfo* pDescriptorBufferInfo ); + MemoryAllocatedBuffer CreateImage( MemoryPool& pool, const VkImageCreateInfo& imageInfo ); + + VkDeviceMemory GetVkDeviceMemory(const MemoryAllocation& ) const; protected: - MemoryCpuMappedUntyped MapInt(MemoryAllocation allocation); + MemoryCpuMappedUntyped MapInt(MemoryAllocation allocation); private: - VkDeviceAddress GetBufferDeviceAddressInternal(VkBuffer buffer) const; - void MapInternal(void* vmaAllocation, void** outCpuLocation); - void UnmapInternal(void* vmaAllocation, void* cpuLocation); + VkDeviceAddress GetBufferDeviceAddressInternal(VkBuffer buffer) const; + void MapInternal(void* vmaAllocation, void** outCpuLocation); + void UnmapInternal(void* vmaAllocation, void* cpuLocation); private: - VmaAllocator_T* mVmaAllocator = nullptr; - VkDevice mGpuDevice = VK_NULL_HANDLE; + VmaAllocator_T* mVmaAllocator = nullptr; + VkDevice mGpuDevice = VK_NULL_HANDLE; #if VK_KHR_buffer_device_address - PFN_vkGetBufferDeviceAddressKHR mFpGetBufferDeviceAddress = nullptr; + PFN_vkGetBufferDeviceAddressKHR mFpGetBufferDeviceAddress = nullptr; #elif VK_EXT_buffer_device_address - PFN_vkGetBufferDeviceAddressEXT mFpGetBufferDeviceAddress = nullptr; + PFN_vkGetBufferDeviceAddressEXT mFpGetBufferDeviceAddress = nullptr; #endif // VK_KHR_buffer_device_address | VK_EXT_buffer_device_address }; @@ -132,21 +193,21 @@ class MemoryManager template MemoryCpuMapped MemoryManager::Map(MemoryAllocatedBuffer& buffer) { - return MapInt(std::move(buffer.allocation)); + return MapInt(std::move(buffer.allocation)); } template void MemoryManager::Unmap(MemoryAllocatedBuffer& buffer, MemoryCpuMappedUntyped allocation) { - assert(allocation.mCpuLocation); - UnmapInternal(allocation.mAllocation.allocation, allocation.mCpuLocation); - allocation.mCpuLocation = nullptr; // clear ownership - buffer.allocation = std::move(allocation.mAllocation); + assert(allocation.mCpuLocation); + UnmapInternal(allocation.mAllocation.allocation, allocation.mCpuLocation); + allocation.mCpuLocation = nullptr; // clear ownership + buffer.allocation = std::move(allocation.mAllocation); } inline MemoryCpuMappedUntyped MemoryManager::MapInt(MemoryAllocation allocation) { - MemoryCpuMappedUntyped guard(std::move(allocation)); - MapInternal(guard.mAllocation.allocation, &guard.mCpuLocation); - return guard; + MemoryCpuMappedUntyped guard(std::move(allocation)); + MapInternal(guard.mAllocation.allocation, &guard.mCpuLocation); + return guard; } diff --git a/framework/code/memory/vulkan/memoryMapped.hpp b/framework/code/memory/vulkan/memoryMapped.hpp index a27de42..12398e5 100644 --- a/framework/code/memory/vulkan/memoryMapped.hpp +++ b/framework/code/memory/vulkan/memoryMapped.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -17,6 +17,27 @@ class Vulkan; template class MemoryAllocatedBuffer; + +/// Wraps the Vk Allocation handle. Represents an allocation out of 'vulkan' memory. Cannot be copied (only moved) - single owner. +/// Passed around between whomever is 'owner' of the allocation (when mapping etc) +/// @ingroup Memory +template<> +class MemoryAllocation final +{ + friend class MemoryManager; +public: + MemoryAllocation( const MemoryAllocation& ) = delete; + MemoryAllocation& operator=( const MemoryAllocation& ) = delete; + MemoryAllocation() {} + MemoryAllocation( MemoryAllocation&& other ) noexcept; + MemoryAllocation& operator=( MemoryAllocation&& other ) noexcept; + ~MemoryAllocation() { assert( allocation == nullptr ); } // protect accidental deletion (leak) + explicit operator bool() const { return allocation != nullptr; } +private: + void clear() { allocation = nullptr; } + void* allocation = nullptr; // anonymous handle (gpx api specific) +}; + /// Vulkan template specialization of MemoryAllocatedBuffer /// Represents a memory block allocated by VMA and that has either a VkImage or VkBuffer /// @tparam T_VKTYPE underlying Vulkan buffer type - VkImage or VkBuffer @@ -33,12 +54,31 @@ class MemoryAllocatedBuffer MemoryAllocatedBuffer& operator=(MemoryAllocatedBuffer&& other) noexcept; MemoryAllocatedBuffer() noexcept {} const T_VKTYPE& GetVkBuffer() const { return buffer; } + const MemoryAllocation& GetMemoryAllocation() const { return allocation; } explicit operator bool() const { return static_cast(allocation); } private: MemoryAllocation allocation; T_VKTYPE buffer = 0; // the allocated vulkan buffer (or VK_NULL_HANDLE) }; +// +// MemoryAllocation implementation +// +inline MemoryAllocation::MemoryAllocation( MemoryAllocation&& other ) noexcept +{ + allocation = other.allocation; + other.allocation = nullptr; +} + +inline MemoryAllocation& MemoryAllocation::operator=( MemoryAllocation&& other ) noexcept +{ + if (&other != this) { + allocation = other.allocation; + other.allocation = nullptr; + } + return *this; +} + // // MemoryAllocatedBuffer vulkan specialization implementation // diff --git a/framework/code/memory/vulkan/uniform.cpp b/framework/code/memory/vulkan/uniform.cpp index df9820e..59de4b9 100644 --- a/framework/code/memory/vulkan/uniform.cpp +++ b/framework/code/memory/vulkan/uniform.cpp @@ -1,10 +1,11 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== +#include #include #include "memory/memoryMapped.hpp" #include "vulkan/vulkan.hpp" diff --git a/framework/code/memory/vulkan/uniform.hpp b/framework/code/memory/vulkan/uniform.hpp index 33c8848..2e0dab9 100644 --- a/framework/code/memory/vulkan/uniform.hpp +++ b/framework/code/memory/vulkan/uniform.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once /// @file uniform.hpp @@ -14,12 +14,13 @@ #include "memoryMapped.hpp" #include "memory/memory.hpp" #include "memory/uniform.hpp" -#include +#include // forward defines class Vulkan; template struct Uniform; using UniformVulkan = Uniform; +template using UniformVulkanArray = UniformArray; /// All the variables needed to create a uniform buffer template<> @@ -31,6 +32,7 @@ struct Uniform Uniform(Uniform&&) noexcept; MemoryAllocatedBuffer buf; VkDescriptorBufferInfo bufferInfo; + bool IsEmpty() const { return !buf; } }; /// Uniform buffer array that can be updated every frame without stomping the in-flight uniform buffers. @@ -42,8 +44,9 @@ struct UniformArray UniformArray& operator=(const UniformArray&) = delete; UniformArray(UniformArray&&) noexcept { assert(0); } std::array, T_NUM_BUFFERS> buf; - std::array vkBuffers{}; ///< copy of VkBuffer handles (for easy use in bindings etc) + std::array bufferHandles{}; ///< copy of VkBuffer handles (for easy use in bindings etc) constexpr size_t size() const { return T_NUM_BUFFERS; } + bool IsEmpty() const { return !buf[0]; } }; @@ -82,7 +85,7 @@ bool CreateUniformBuffer(Vulkan* pVulkan, UniformArray& r { if (!CreateUniformBuffer(pVulkan, rNewUniform.buf[i], dataSize, pData, usage)) return false; - rNewUniform.vkBuffers[i] = rNewUniform.buf[i].GetVkBuffer(); + rNewUniform.bufferHandles[i] = rNewUniform.buf[i].GetVkBuffer(); } return true; } @@ -96,7 +99,7 @@ void ReleaseUniformBuffer(Vulkan* pVulkan, UniformArray& { for (size_t i = 0; i < T_NUM_BUFFERS; ++i) { - rUniform.vkBuffers[i] = VK_NULL_HANDLE; + rUniform.bufferHandles[i] = VK_NULL_HANDLE; ReleaseUniformBuffer(pVulkan, rUniform.buf[i]); } } @@ -117,3 +120,8 @@ void UpdateUniformBuffer(Vulkan* pVulkan, UniformArrayT::value, "UpdateUniformBuffer, uniform is different type to newData"); return UpdateUniformBuffer(pVulkan, static_cast&>(uniform), newData, bufferIdx); } +template +void ReleaseUniformBuffer(Vulkan* pVulkan, UniformArrayT& uniform) +{ + ReleaseUniformBuffer(pVulkan, static_cast&>(uniform)); +} diff --git a/framework/code/memory/vulkan/vertexBufferObject.cpp b/framework/code/memory/vulkan/vertexBufferObject.cpp index 2915772..11d115a 100644 --- a/framework/code/memory/vulkan/vertexBufferObject.cpp +++ b/framework/code/memory/vulkan/vertexBufferObject.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,7 +11,7 @@ VertexBuffer::VertexBuffer() noexcept - : BufferT() + : Buffer() , mSpan(0) , mNumVertices(0) , mDspUsable(false) @@ -38,7 +38,7 @@ VertexBuffer::VertexBuffer(VertexBuffer&& other) noexcept VertexBuffer& VertexBuffer::operator=(VertexBuffer&& other) noexcept { - BufferT::operator=(std::move(other)); + Buffer::operator=(std::move(other)); if (&other != this) { mSpan = other.mSpan; @@ -68,18 +68,32 @@ bool VertexBuffer::Initialize(MemoryManager* pManager, size_t span, size } else { - return BufferT::Initialize(pManager, static_cast(mSpan * mNumVertices), usage, initialData); + return Buffer::Initialize(pManager, static_cast(mSpan * mNumVertices), usage, initialData); } } /////////////////////////////////////////////////////////////////////////////// +bool VertexBuffer::Update(MemoryManager* pManager, size_t dataSize, const void* newData) +{ + return Buffer::Update(pManager, dataSize, newData); +} + +/////////////////////////////////////////////////////////////////////////////// + +bool VertexBuffer::GetMeshData(MemoryManager* pManager, size_t dataSize, void* outputData) const +{ + return Buffer::GetMeshData(pManager, dataSize, outputData); +} + +/////////////////////////////////////////////////////////////////////////////// + void VertexBuffer::Destroy() { mBindings.clear(); mAttributes.clear(); mNumVertices = 0; - BufferT::Destroy(); + Buffer::Destroy(); } /////////////////////////////////////////////////////////////////////////////// @@ -117,7 +131,7 @@ VertexBuffer VertexBuffer::Copy( VkCommandBuffer vkCommandBuffer // Create the buffer we are copying into. size_t size = GetSpan() * GetNumVertices(); - if (!copy.BufferT::Initialize( mManager, size, bufferUsage, memoryUsage )) + if (!copy.Buffer::Initialize( mManager, size, bufferUsage, memoryUsage )) return {}; if (((mBufferUsageFlags & BufferUsageFlags::TransferSrc) == 0) || ((bufferUsage & BufferUsageFlags::TransferDst) == 0)) diff --git a/framework/code/memory/vulkan/vertexBufferObject.hpp b/framework/code/memory/vulkan/vertexBufferObject.hpp index b7eef5f..17e7558 100644 --- a/framework/code/memory/vulkan/vertexBufferObject.hpp +++ b/framework/code/memory/vulkan/vertexBufferObject.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,15 +10,15 @@ #include "vulkan/vulkan.hpp" #include "bufferObject.hpp" #include "memory/vertexBuffer.hpp" +#include class Vulkan; -using VertexBufferObject = VertexBuffer; /// Buffer containing vertex data (specialized for Vulkan). /// @ingroup Memory template<> -class VertexBuffer : public BufferT +class VertexBuffer : public Buffer { VertexBuffer& operator=(const VertexBuffer&) = delete; VertexBuffer(const VertexBuffer&) = delete; @@ -30,7 +30,13 @@ class VertexBuffer : public BufferT bool Initialize(MemoryManager* pManager, size_t span, size_t numVerts, const void* initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex ); template - bool Initialize(MemoryManager* pManager, size_t numVerts, const T* initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex); + bool Initialize(MemoryManager* pManager, const std::span initialData, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex); + template + bool Initialize(MemoryManager* pManager, size_t numVerts, const bool dspUsable = false, const BufferUsageFlags usage = BufferUsageFlags::Vertex); + + bool Update(MemoryManager* pManager, size_t dataSize, const void* newData); + + bool GetMeshData(MemoryManager* pManager, size_t dataSize, void* outputData) const; /// destroy buffer and leave in a state where it could be re-initialized virtual void Destroy() override; @@ -77,7 +83,13 @@ class VertexBuffer : public BufferT }; template -bool VertexBuffer::Initialize(MemoryManager* pManager, size_t numVerts, const T* initialData, const bool dspUsable, const BufferUsageFlags usage ) +bool VertexBuffer::Initialize(MemoryManager* pManager, const std::span initialData, const bool dspUsable, const BufferUsageFlags usage) +{ + return Initialize(pManager, sizeof(T), initialData.size(), initialData.data(), dspUsable, usage); +} + +template +bool VertexBuffer::Initialize(MemoryManager* pManager, size_t numVertices, const bool dspUsable, const BufferUsageFlags usage) { - return Initialize(pManager, sizeof(T), numVerts, initialData, dspUsable, usage); + return Initialize(pManager, sizeof(T), numVertices, nullptr, dspUsable, usage); } diff --git a/framework/code/mesh/instanceGenerator.cpp b/framework/code/mesh/instanceGenerator.cpp index 4eba4fc..f9f0325 100644 --- a/framework/code/mesh/instanceGenerator.cpp +++ b/framework/code/mesh/instanceGenerator.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,11 +11,6 @@ #include #define EIGEN_INITIALIZE_MATRICES_BY_ZERO #define EIGEN_MPL2_ONLY - -#if defined(_WIN32) -#define EIGEN_HAS_STD_RESULT_OF 0 -#endif - #include #include #include diff --git a/framework/code/mesh/instanceGenerator.hpp b/framework/code/mesh/instanceGenerator.hpp index 1dad295..70d7483 100644 --- a/framework/code/mesh/instanceGenerator.hpp +++ b/framework/code/mesh/instanceGenerator.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/mesh/mesh.hpp b/framework/code/mesh/mesh.hpp index 7672919..24e37e4 100644 --- a/framework/code/mesh/mesh.hpp +++ b/framework/code/mesh/mesh.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include diff --git a/framework/code/mesh/meshHelper.cpp b/framework/code/mesh/meshHelper.cpp index 81b4127..9d6427a 100644 --- a/framework/code/mesh/meshHelper.cpp +++ b/framework/code/mesh/meshHelper.cpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #include "meshHelper.hpp" #include "material/vertexFormat.hpp" diff --git a/framework/code/mesh/meshHelper.hpp b/framework/code/mesh/meshHelper.hpp index fcaac2b..a3e91d5 100644 --- a/framework/code/mesh/meshHelper.hpp +++ b/framework/code/mesh/meshHelper.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include "mesh.hpp" @@ -45,8 +45,8 @@ struct MeshHelper template static bool CreateMesh(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, uint32_t bindingIndex, const std::span pVertexFormat, Mesh* meshObjectOut); - /// Helper to create a IndexBufferObject, IF the mesh object has index buffer data. - /// @returns true on success (including no index buffer data existing in IndexBufferObject), false on error. + /// Helper to create a IndexBuffer object, IF the mesh object has index buffer data. + /// @returns true on success (including no index buffer data existing in IndexBuffer object), false on error. template static bool CreateIndexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, std::optional>& indexBufferOut, BufferUsageFlags usage = BufferUsageFlags::Index); @@ -59,6 +59,29 @@ struct MeshHelper /// @return true on success template static bool CreateScreenSpaceMesh(MemoryManager& memoryManager, glm::vec4 PosLLRadius, glm::vec4 UVLLRadius, uint32_t binding, Mesh* meshObjectOut); + + /// @brief Templated function to update a renderable Mesh + /// @tparam T_GFXAPI Graphics API class. + /// @param memoryManager + /// @param meshObject + /// @param whichBuffer + /// @param dataSize + /// @param newData + /// @return true on success + template + static bool UpdateMesh(MemoryManager& memoryManager, Mesh& meshObject, uint32_t whichBuffer, size_t dataSize, void *newData); + + /// @brief Templated function to update a renderable Mesh + /// @tparam T_GFXAPI Graphics API class. + /// @param memoryManager + /// @param meshObject + /// @param whichBuffer + /// @param dataSize + /// @param outputData + /// @return true on success + template + static bool GetMeshData(MemoryManager& memoryManager, const Mesh& meshObject, uint32_t whichBuffer, size_t dataSize, void *outputData); + }; /////////////////////////////////////////////////////////////////////////////// @@ -84,7 +107,7 @@ bool MeshHelper::CreateMesh(MemoryManager& memoryManager, const MeshOb const auto& vertexFormat = pVertexFormat[vertexBufferIdx]; if (vertexFormat.inputRate == VertexFormat::eInputRate::Vertex) { - const std::vector formattedVertexData = MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(meshObject.m_VertexBuffer, pVertexFormat[vertexBufferIdx]); + const std::vector formattedVertexData = MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(meshObject.m_VertexBuffer, meshObject.m_WeightBuffer, pVertexFormat[vertexBufferIdx]); if (!meshObjectOut->m_VertexBuffers.emplace_back().Initialize(&memoryManager, vertexFormat.span, numVertices, formattedVertexData.data())) { @@ -106,6 +129,40 @@ bool MeshHelper::CreateMesh(MemoryManager& memoryManager, const MeshOb /////////////////////////////////////////////////////////////////////////////// +template +bool MeshHelper::UpdateMesh(MemoryManager& memoryManager, Mesh& meshObject, uint32_t whichBuffer, size_t dataSize, void* newData) +{ + // Make sure the vertex buffer is in range + if (whichBuffer >= meshObject.m_VertexBuffers.size()) + { + LOGE("MeshHelper::UpdateMesh: Error! Buffer index (%d) out of range (%d vertex buffers)", whichBuffer, (int)meshObject.m_VertexBuffers.size()); + return false; + } + + meshObject.m_VertexBuffers[0].Update(&memoryManager, dataSize, newData); + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +template +bool MeshHelper::GetMeshData(MemoryManager& memoryManager, const Mesh& meshObject, uint32_t whichBuffer, size_t dataSize, void* outputData) +{ + // Make sure the vertex buffer is in range + if (whichBuffer >= meshObject.m_VertexBuffers.size()) + { + LOGE("MeshHelper::GetMeshData: Error! Buffer index (%d) out of range (%d vertex buffers)", whichBuffer, (int)meshObject.m_VertexBuffers.size()); + return false; + } + + meshObject.m_VertexBuffers[0].GetMeshData(&memoryManager, dataSize, outputData); + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + template bool MeshHelper::CreateIndexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, std::optional>& indexBufferOut, BufferUsageFlags usage) { @@ -118,7 +175,7 @@ bool MeshHelper::CreateIndexBuffer(MemoryManager& memoryManager, const if constexpr (std::is_same_v>) { auto& indexBuffer = indexBufferOut.emplace(IndexType::IndexU32); const auto& vec32 = std::get>(meshObject.m_IndexBuffer); - if (!indexBuffer.Initialize(&memoryManager, vec32.size(), vec32.data(), false, usage)) + if (!indexBuffer.Initialize(&memoryManager, std::span(vec32), false, usage)) { return false; } @@ -126,7 +183,7 @@ bool MeshHelper::CreateIndexBuffer(MemoryManager& memoryManager, const else if constexpr (std::is_same_v>) { auto& indexBuffer = indexBufferOut.emplace(IndexType::IndexU16); const auto& vec16 = std::get>(meshObject.m_IndexBuffer); - if (!indexBuffer.Initialize(&memoryManager, vec16.size(), vec16.data(), false, usage)) + if (!indexBuffer.Initialize(&memoryManager, std::span(vec16), false, usage)) { return false; } @@ -147,7 +204,7 @@ bool MeshHelper::CreateIndexBuffer(MemoryManager& memoryManager, const template bool MeshHelper::CreateScreenSpaceMesh( MemoryManager& memoryManager, uint32_t binding, Mesh* meshObjectOut ) { - return MeshHelper::CreateMesh( memoryManager, MeshObjectIntermediate::CreateScreenSpaceMesh(), binding, { &vertex_layout::sFormat,1 }, meshObjectOut ); + return MeshHelper::CreateMesh( memoryManager, MeshObjectIntermediate::CreateScreenSpaceMesh(), binding, { &vertex_layout::sFormat,1 }, meshObjectOut ); } /////////////////////////////////////////////////////////////////////////////// @@ -155,5 +212,5 @@ bool MeshHelper::CreateScreenSpaceMesh( MemoryManager& memoryManager, template bool MeshHelper::CreateScreenSpaceMesh( MemoryManager& memoryManager, glm::vec4 PosLLRadius, glm::vec4 UVLLRadius, uint32_t binding, Mesh* meshObjectOut ) { - return MeshHelper::CreateMesh( memoryManager, MeshObjectIntermediate::CreateScreenSpaceMesh(PosLLRadius, UVLLRadius), binding, { &vertex_layout::sFormat,1 }, meshObjectOut ); + return MeshHelper::CreateMesh( memoryManager, MeshObjectIntermediate::CreateScreenSpaceMesh(PosLLRadius, UVLLRadius), binding, { &vertex_layout::sFormat,1 }, meshObjectOut ); } diff --git a/framework/code/mesh/meshIntermediate.cpp b/framework/code/mesh/meshIntermediate.cpp index 507adc9..f003128 100644 --- a/framework/code/mesh/meshIntermediate.cpp +++ b/framework/code/mesh/meshIntermediate.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -162,6 +162,7 @@ static void CalculateTangentAndBitangent(const float* objNormal, const glm::vec3 void MeshObjectIntermediate::Release() { std::vector().swap(m_VertexBuffer); // use swap so we know the memory disappears (clear may leave the memory 'reserved'). + std::vector().swap(m_WeightBuffer); std::vector().swap(m_Materials); m_Transform = glm::identity(); m_NodeId = -1; @@ -212,22 +213,30 @@ MeshObjectIntermediate MeshObjectIntermediate::CopyFlattened() const std::visit([&](auto& m) { using T = std::decay_t; - if constexpr (std::is_same_v> || std::is_same_v>) + if constexpr (std::is_same_v> || std::is_same_v> || std::is_same_v>) { - dst.m_VertexBuffer.reserve(m.size()); - for (const auto index : m ) + dst.m_VertexBuffer.resize(m.size()); + std::transform(std::begin(m), std::end(m), std::begin(dst.m_VertexBuffer), [this](const auto index) { + return this->m_VertexBuffer[index]; + }); + if (!this->m_WeightBuffer.empty()) { - dst.m_VertexBuffer.push_back(this->m_VertexBuffer[index]); + dst.m_WeightBuffer.resize(m.size()); + std::transform(std::begin(m), std::end(m), std::begin(dst.m_WeightBuffer), [this](const auto index) { + return this->m_WeightBuffer[index]; + }); } } else { dst.m_VertexBuffer = m_VertexBuffer; + dst.m_WeightBuffer = m_WeightBuffer; } }, this->m_IndexBuffer); dst.m_Materials = m_Materials; dst.m_Transform = m_Transform; dst.m_NodeId = m_NodeId; + dst.m_WeightsPerVertex = m_WeightsPerVertex; return dst; } @@ -338,6 +347,7 @@ std::vector MeshObjectIntermediate::LoadObj(AssetManager materials[faceMaterialId].specular_texname, 0.5f, // metallicFactor 0.5f, // roughnessFactor + glm::vec3(0.0f), // emissiveFactor !materials[faceMaterialId].alpha_texname.empty(), materials[faceMaterialId].illum == 7 }); @@ -497,7 +507,7 @@ MeshObjectIntermediate MeshObjectIntermediate::CreateScreenSpaceTriMesh() // String literal lower case hash (constexpr) constexpr FnvHashLower operator "" _h(const char* str, size_t) { return FnvHashLower(str); } -std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(const std::span& fatVertexBuffer, const VertexFormat& vertexFormat) +std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(const std::span& fatVertexBuffer, const std::span& fatWeightBuffer, const VertexFormat& vertexFormat) { // // Determine the arrangement of the output data (based on the vertexFormat) @@ -509,6 +519,8 @@ std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(con int colorIndex = -1; int tangentIndex = -1; int bitangentIndex = -1; + int jointIndex = -1; + int weightIndex = -1; for (int i = 0; i < vertexFormat.elementIds.size(); ++i) { @@ -535,30 +547,46 @@ std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(con case "Bitangent"_h: bitangentIndex = i; break; + case "Joint"_h: + jointIndex = i; + break; + case "Weight"_h: + weightIndex = i; + break; default: LOGE("Cannot map vertex elementId %s to the mesh data", elementId.c_str()); break; } } - const uint32_t destSpan32 = (uint32_t)vertexFormat.span / 4; // span of output data (in 32bit words) - assert((vertexFormat.span & 3) == 0); // does not support spans that are not a multiple of 4 + const size_t numVertices = fatVertexBuffer.size(); - // Determine the mapping between the FatVertex (input) data and the output VertexFormat items - std::array copyOffsets; - memset(copyOffsets.data(), -1, sizeof(copyOffsets)); - for (const std::pair& srcOffset_DestIndex : { - std::pair((uint32_t)offsetof(MeshObjectIntermediate::FatVertex, position) / 4, positionIndex), - std::pair((uint32_t)offsetof(MeshObjectIntermediate::FatVertex, normal) / 4, normalIndex), - std::pair((uint32_t)offsetof(MeshObjectIntermediate::FatVertex, color) / 4, colorIndex), - std::pair((uint32_t)offsetof(MeshObjectIntermediate::FatVertex, uv0) / 4, uv0Index), - std::pair((uint32_t)offsetof(MeshObjectIntermediate::FatVertex, tangent) / 4, tangentIndex), - std::pair((uint32_t)offsetof(MeshObjectIntermediate::FatVertex, bitangent) / 4, bitangentIndex) }) + // Determine the mapping between the FatVertex / FatWeight (input) data and the output VertexFormat items + struct SrcToDstMapping { + size_t srcOffset; + int destIndex; + int* srcOffsetArray; + }; + std::array copyOffsets; + std::array copyWeightOffsets; + copyOffsets.fill(-1); + copyWeightOffsets.fill(-1); + for (const auto& srcOffset_DestIndex : { + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatVertex, position) / 4, positionIndex, copyOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatVertex, normal) / 4, normalIndex, copyOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatVertex, color) / 4, colorIndex, copyOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatVertex, uv0) / 4, uv0Index, copyOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatVertex, tangent) / 4, tangentIndex, copyOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatVertex, bitangent) / 4, bitangentIndex, copyOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatWeight, joint) / 4, jointIndex, copyWeightOffsets.data()}, + SrcToDstMapping{offsetof(MeshObjectIntermediate::FatWeight, weight) / 4, weightIndex, copyWeightOffsets.data()}, + }) { - int destIndex = srcOffset_DestIndex.second; + const int destIndex = srcOffset_DestIndex.destIndex; if (destIndex != -1) { - uint32_t srcOffset32 = srcOffset_DestIndex.first; + uint32_t srcOffset32 = srcOffset_DestIndex.srcOffset; + int* srcOffsetArray = srcOffset_DestIndex.srcOffsetArray; uint32_t destOffset = vertexFormat.elements[destIndex].offset; assert((destOffset & 3) == 0); // cannot handle non 4 byte aligned data destOffset /= 4; @@ -566,13 +594,13 @@ std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(con switch (destSize) { case 16: - copyOffsets[srcOffset32++] = destOffset++; + srcOffsetArray[srcOffset32++] = destOffset++; case 12: - copyOffsets[srcOffset32++] = destOffset++; + srcOffsetArray[srcOffset32++] = destOffset++; case 8: - copyOffsets[srcOffset32++] = destOffset++; + srcOffsetArray[srcOffset32++] = destOffset++; case 4: - copyOffsets[srcOffset32++] = destOffset++; + srcOffsetArray[srcOffset32++] = destOffset++; break; default: assert(0); @@ -581,17 +609,19 @@ std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(con } } - const size_t numVertices = fatVertexBuffer.size(); + const uint32_t destSpan32 = (uint32_t)vertexFormat.span / 4; // span of output data (in 32bit words) + assert((vertexFormat.span & 3) == 0); // does not support spans that are not a multiple of 4 std::vector outputData; outputData.resize(destSpan32 * numVertices, 0/*zero buffer*/); - uint32_t* pSrc = (uint32_t*)fatVertexBuffer.data(); + const uint32_t* pSrc = (const uint32_t*)fatVertexBuffer.data(); + const uint32_t* pSrcWeight = fatWeightBuffer.empty() ? nullptr : (const uint32_t*)fatWeightBuffer.data(); uint32_t* pDst = outputData.data(); for (size_t i = 0; i < numVertices; ++i) { - // Copy from tinyObjVertex to our buffer vertex format (compiler may decide to unroll this since copyOffsets.size() is known at compile time + // Copy vertex data from tinyObjVertex to our buffer vertex format (compiler may decide to unroll this since copyOffsets.size() is known at compile time for (uint32_t srcOffset = 0; srcOffset < copyOffsets.size(); ++srcOffset) { if (copyOffsets[srcOffset] >= 0) @@ -600,6 +630,15 @@ std::vector MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(con } ++pSrc; } + // Copy vertex weights and joint idxs from tinyObjVertex to our buffer vertex format (compiler may decide to unroll this since copyWeightOffsets.size() is known at compile time + for (uint32_t srcOffset = 0; srcOffset < copyWeightOffsets.size(); ++srcOffset) + { + if (copyWeightOffsets[srcOffset] >= 0) + { + pDst[copyWeightOffsets[srcOffset]] = *pSrcWeight; + } + ++pSrcWeight; + } pDst += destSpan32; } // WhichVert @@ -718,7 +757,7 @@ size_t MeshObjectIntermediate::CalcNumTriangles() const return std::visit( [&]( const auto& m ) { using T = std::decay_t; - if constexpr (std::is_same_v> || std::is_same_v>) + if constexpr (std::is_same_v> || std::is_same_v> || std::is_same_v>) { return m.size() / 3; } @@ -741,7 +780,9 @@ size_t MeshObjectIntermediate::CalcNumTriangles() const if (!material.diffuseFilename.empty()) textureNames.insert(material.diffuseFilename); if (!material.bumpFilename.empty()) - textureNames.insert(material.bumpFilename); + textureNames.insert( material.bumpFilename ); + if (!material.specMapFilename.empty()) + textureNames.insert( material.specMapFilename ); } } std::vector textureNamesVector; @@ -841,11 +882,11 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode // We now know the ModelData.accessors[] index for all our data. - for (uint32_t WhichAttrib = 0; WhichAttrib < NUM_GLTF_ATTRIBS; WhichAttrib++) + for (auto& attrib: AttribInfo) { - if (AttribInfo[WhichAttrib].AccessorIndx >= 0) + if (attrib.AccessorIndx >= 0) { - const tinygltf::Accessor& AccessorData = ModelData.accessors[AttribInfo[WhichAttrib].AccessorIndx]; + const tinygltf::Accessor& AccessorData = ModelData.accessors[attrib.AccessorIndx]; const tinygltf::BufferView& ViewData = ModelData.bufferViews[AccessorData.bufferView]; int Stride = AccessorData.ByteStride(ViewData); if (Stride < 0) @@ -853,12 +894,12 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode printf("\nError loading %s: Cannot calculate data stride", m_filename.c_str()); return false; } - AttribInfo[WhichAttrib].BytesPerElem = Stride; - AttribInfo[WhichAttrib].BytesTotal = ViewData.byteLength; - AttribInfo[WhichAttrib].Count = (uint32_t) AccessorData.count; + attrib.BytesPerElem = Stride; + attrib.BytesTotal = ViewData.byteLength; + attrib.Count = (uint32_t) AccessorData.count; const tinygltf::Buffer& BufferData = ModelData.buffers[ViewData.buffer]; - AttribInfo[WhichAttrib].pData = (void*)(&BufferData.data.at(ViewData.byteOffset + AccessorData.byteOffset)); + attrib.pData = (void*)(&BufferData.data.at(ViewData.byteOffset + AccessorData.byteOffset)); } } @@ -901,6 +942,7 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode auto& meshObject = meshObjects.emplace_back(); // Pass up the mesh name + meshObject.m_NodeName = NodeData.name; meshObject.m_MeshName = MeshData.name; // Set the object transform. @@ -908,6 +950,9 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode meshObject.m_Transform[3] *= glm::vec4(m_globalScale, 1.0f);// Transform position needs scale applying, dont scale entire transform as the vertex data is scaled independantly (below). meshObject.m_NodeId = (int)NodeIdx; + // Want the vertex color to be the base color from the material + glm::vec4 materialColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); + if (materialIdx >= 0)/*-1 is valid*/ { // Was seeing invalid material index on some GLTF exports. Protect from that. @@ -928,6 +973,9 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode material.pbrMetallicRoughness.baseColorFactor[2], material.pbrMetallicRoughness.baseColorFactor[3]); + // Want the vertex color to be the base color from the material + materialColor = baseColorFactor; + int normalIndex = material.normalTexture.index; normalIndex = normalIndex >= 0 ? ModelData.textures[normalIndex].source : -1; @@ -952,6 +1000,8 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode (float)material.pbrMetallicRoughness.roughnessFactor, + glm::vec3(material.emissiveFactor[0], material.emissiveFactor[1], material.emissiveFactor[2]), + material.alphaMode == "MASK", material.alphaMode == "BLEND" }); @@ -969,8 +1019,14 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode else if (AttribInfo[ATTRIB_INDICES].BytesPerElem == 2) { uint16_t* p16 = (uint16_t*)AttribInfo[ATTRIB_INDICES].pData; - std::span indicesSpan{ p16, NumIndices }; - meshObject.m_IndexBuffer.emplace< std::vector>(indicesSpan.begin(), indicesSpan.end()); + std::span indicesSpan{p16, NumIndices}; + meshObject.m_IndexBuffer.emplace< std::vector>( indicesSpan.begin(), indicesSpan.end() ); + } + else if (AttribInfo[ATTRIB_INDICES].BytesPerElem == 1) + { + uint8_t* p8 = (uint8_t*)AttribInfo[ATTRIB_INDICES].pData; + std::span indicesSpan{p8, NumIndices}; + meshObject.m_IndexBuffer.emplace< std::vector>( indicesSpan.begin(), indicesSpan.end() ); } else { @@ -978,14 +1034,33 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode return false; } - float* pPosition = (float*)AttribInfo[ATTRIB_POSITION].pData; + const float* pPosition = (const float*)AttribInfo[ATTRIB_POSITION].pData; uint32_t positionIncr = AttribInfo[ATTRIB_POSITION].BytesPerElem / sizeof(float); - float* pNormals = (float*)AttribInfo[ATTRIB_NORMAL].pData; + const float* pNormals = (const float*)AttribInfo[ATTRIB_NORMAL].pData; uint32_t normalIncr = AttribInfo[ATTRIB_NORMAL].BytesPerElem / sizeof(float); - float* pTangents = (float*)AttribInfo[ATTRIB_TANGENT].pData; + const float* pTangents = (const float*)AttribInfo[ATTRIB_TANGENT].pData; uint32_t tangentIncr = AttribInfo[ATTRIB_TANGENT].BytesPerElem / sizeof(float); - float* pTexCoords = (float*)AttribInfo[ATTRIB_TEXCOORD_0].pData; + const float* pTexCoords = (const float*)AttribInfo[ATTRIB_TEXCOORD_0].pData; uint32_t texCoordsIncr = AttribInfo[ATTRIB_TEXCOORD_0].BytesPerElem / sizeof(float); + const uint8_t* pJoints = (const uint8_t*)AttribInfo[ATTRIB_JOINTS_0].pData; + uint32_t jointsIncr = AttribInfo[ATTRIB_JOINTS_0].BytesPerElem / sizeof(uint8_t); + const float* pWeights = (const float*)AttribInfo[ATTRIB_WEIGHTS_0].pData; + uint32_t weightsIncr = AttribInfo[ATTRIB_WEIGHTS_0].BytesPerElem / sizeof(float); + + if (pJoints) + { + if (AttribInfo[ATTRIB_JOINTS_0].BytesPerElem != 4) + { + printf("\nError loading %s: Mesh has invalid BytesPerElem (%d) for joints", m_filename.c_str(), AttribInfo[ATTRIB_JOINTS_0].BytesPerElem); + return false; + } + if (AttribInfo[ATTRIB_WEIGHTS_0].BytesPerElem != 16) + { + printf("\nError loading %s: Mesh has invalid BytesPerElem (%d) for weights", m_filename.c_str(), AttribInfo[ATTRIB_WEIGHTS_0].BytesPerElem); + return false; + } + meshObject.m_WeightBuffer.reserve(NumPositions); + } // The problem is that color can come in as unsigned short (not floats), so // can't access as a float pointer @@ -994,7 +1069,8 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode for (uint32_t WhichVert = 0; WhichVert < NumPositions; ++WhichVert) { - MeshObjectIntermediate::FatVertex vertex = {}; + MeshObjectIntermediate::FatVertex vertex {}; + MeshObjectIntermediate::FatWeight jointWeights {.weight = {1.0f,0.0f,0.0f,0.0f}}; if (pPosition != nullptr) { vertex.position[0] = pPosition[0] * m_globalScale.x; @@ -1077,10 +1153,11 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode } else { - vertex.color[0] = 1.0f; - vertex.color[1] = 1.0f; - vertex.color[2] = 1.0f; - vertex.color[3] = 1.0f; + // Want the vertex color to be the base color from the material + vertex.color[0] = materialColor.x; + vertex.color[1] = materialColor.y; + vertex.color[2] = materialColor.z; + vertex.color[3] = materialColor.w; } if (AttribInfo[ATTRIB_NORMAL].pData != nullptr) @@ -1103,6 +1180,25 @@ bool MeshObjectIntermediateGltfProcessor::operator()(const tinygltf::Model& Mode vertex.material = materialIdx; meshObject.m_VertexBuffer.push_back(vertex); + + if (pWeights != nullptr) + { + jointWeights.weight[0] = pWeights[0]; + jointWeights.weight[1] = pWeights[1]; + jointWeights.weight[2] = pWeights[2]; + jointWeights.weight[3] = pWeights[3]; + pWeights += weightsIncr; + } + if (pJoints) + { + jointWeights.joint[0] = pJoints[0]; + jointWeights.joint[1] = pJoints[1]; + jointWeights.joint[2] = pJoints[2]; + jointWeights.joint[3] = pJoints[3]; + pJoints += jointsIncr; + + meshObject.m_WeightBuffer.push_back(jointWeights); + } } } } diff --git a/framework/code/mesh/meshIntermediate.hpp b/framework/code/mesh/meshIntermediate.hpp index 0f7d1d1..e5f1b99 100644 --- a/framework/code/mesh/meshIntermediate.hpp +++ b/framework/code/mesh/meshIntermediate.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -74,6 +74,13 @@ class MeshObjectIntermediate int material; ///< indexc in to m_Materials }; + /// Data for a vertex weight, at least one per animated vertex. 4 joint influences per vert follows gltf capabilities + struct FatWeight + { + int joint[4]; // index into skeleton joints + float weight[4]; // weight (influence) of joint + }; + /// All the data that could be associuated with an object instance struct FatInstance { @@ -86,8 +93,9 @@ class MeshObjectIntermediate }; /// Creates a 'raw' array of data from a 'fat' MeshObjectIntermediate object, with the returned data being formatted in the way described by vertexFormat + /// fatWeightBuffer may be empty if not required/supported, if not empty must have the same number of vertices as fatVertexBuffer. /// @returns data in the requested vertexFormat - static std::vector CopyFatVertexToFormattedBuffer(const std::span& fatVertexBuffer, const VertexFormat& vertexFormat); + static std::vector CopyFatVertexToFormattedBuffer(const std::span& fatVertexBuffer, const std::span& fatWeightBuffer, const VertexFormat& vertexFormat); /// Creates a 'raw' array of data from a 'fat instance' MeshObjectIntermediate object, with the returned data being formatted in the way described by vertexFormat /// Same functionality as @CopyFatVertexToFormattedBuffer but for instance rate data. @@ -116,6 +124,7 @@ class MeshObjectIntermediate std::string specMapFilename; // Texture version of roughnessFactor float metallicFactor = 0.0f; float roughnessFactor = 0.0f; + glm::vec3 emissiveFactor = glm::vec3(0.0f); bool alphaCutout = false; bool transparent = false; @@ -124,12 +133,16 @@ class MeshObjectIntermediate }; public: - typedef std::vector tVertexBuffer; - typedef std::variant, std::vector> tIndexBuffer; + using tVertexBuffer = std::vector; + using tWeightBuffer = std::vector; + using tIndexBuffer = std::variant, std::vector, std::vector>; std::string m_MeshName; + std::string m_NodeName; + tVertexBuffer m_VertexBuffer; + tWeightBuffer m_WeightBuffer; //< vertex weights (or empty) /// Index buffer can be 16bit or 32bit (or not exist; in which case every 3 vertices in m_VertexBuffer are the verts of a triangle). tIndexBuffer m_IndexBuffer; std::vector m_Materials; @@ -138,6 +151,8 @@ class MeshObjectIntermediate glm::mat4 m_Transform = glm::identity(); /// Node id (child node that this node is attached to) from gltf, can be used to lookup animations on this node (non skinned animation) int m_NodeId = -1; + /// Number of joint weights per vertex (or 0) + uint32_t m_WeightsPerVertex = 0; }; diff --git a/framework/code/mesh/meshLoader.cpp b/framework/code/mesh/meshLoader.cpp index 54b5cc6..0f18372 100644 --- a/framework/code/mesh/meshLoader.cpp +++ b/framework/code/mesh/meshLoader.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -36,12 +36,7 @@ static bool Gltf_WriteWholeFile(std::string*, const std::string&, const std::vec { return false; } -static bool Gltf_GetFileSize(size_t* output, std::string* error, const std::string& filename, void* vAssetManager) -{ - AssetManager* pAssetManager = (AssetManager*)vAssetManager; - *output = pAssetManager->GetFileSize(filename); - return output != 0; -} + bool StubGltfLoadImageDataFunction(tinygltf::Image*, const int, std::string*, std::string*, int, int, const unsigned char*, int, void*) @@ -70,12 +65,12 @@ bool MeshLoader::LoadGlftModel(AssetManager& assetManager, const std::string& fi bool RetVal = ModelLoader.LoadASCIIFromFile(&ModelData, &err, &warn, filename); if (!warn.empty()) { - printf("\nWarning loading %s: %s", filename.c_str(), warn.c_str()); + LOGE("\nWarning loading %s: %s", filename.c_str(), warn.c_str()); } if (!err.empty()) { - printf("\nError loading %s: %s", filename.c_str(), err.c_str()); + LOGE("\nError loading %s: %s", filename.c_str(), err.c_str()); } if (!RetVal) diff --git a/framework/code/mesh/meshLoader.hpp b/framework/code/mesh/meshLoader.hpp index c1831cb..6b665c6 100644 --- a/framework/code/mesh/meshLoader.hpp +++ b/framework/code/mesh/meshLoader.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/mesh/octree.cpp b/framework/code/mesh/octree.cpp index be65b28..5146299 100644 --- a/framework/code/mesh/octree.cpp +++ b/framework/code/mesh/octree.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/mesh/octree.hpp b/framework/code/mesh/octree.hpp index 956363b..29bc303 100644 --- a/framework/code/mesh/octree.hpp +++ b/framework/code/mesh/octree.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -384,7 +384,7 @@ struct SphereTest /// View frustum -/// Builds the +/// Builds a view frustum form camera matrixes and implements frustum test queries /// @ingroup Mesh class ViewFrustum { diff --git a/framework/code/rayTracing/accelerationStructure.hpp b/framework/code/rayTracing/accelerationStructure.hpp new file mode 100644 index 0000000..1d771c2 --- /dev/null +++ b/framework/code/rayTracing/accelerationStructure.hpp @@ -0,0 +1,44 @@ +//============================================================================================================ +// +// +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +// Forward declarations +class GraphicsApiBase; +template class AccelerationStructure; + + +/// @brief Base class for a acceleration structure object. +/// Is subclassed for each graphics API. +class AccelerationStructureBase +{ + AccelerationStructureBase( const AccelerationStructureBase& ) = delete; + AccelerationStructureBase& operator=( const AccelerationStructureBase& ) = delete; +public: + template using tApiDerived = AccelerationStructure; // make apiCast work! + + AccelerationStructureBase() noexcept {} + virtual ~AccelerationStructureBase() noexcept = 0; +}; +inline AccelerationStructureBase::~AccelerationStructureBase() noexcept {} + + +template +class AccelerationStructure final : public AccelerationStructureBase +{ + AccelerationStructure( const AccelerationStructure& ) = delete; + AccelerationStructure& operator=( const AccelerationStructure& ) = delete; +public: + AccelerationStructure() noexcept = delete; // template class expected to be specialized + AccelerationStructure( AccelerationStructure&& ) noexcept = delete; // template class expected to be specialized + AccelerationStructure& operator=( AccelerationStructure&& ) noexcept = delete;// template class expected to be specialized + + bool IsEmpty() const { return true; } + +protected: + static_assert(sizeof( AccelerationStructure ) != sizeof( AccelerationStructureBase )); // Ensure this class template is specialized (and not used as-is). Include the vulkan / dx12 (or whatever gfx api) specific header file +}; diff --git a/framework/code/shadow/shadow.cpp b/framework/code/shadow/shadow.cpp index 2758e72..43ecbe3 100644 --- a/framework/code/shadow/shadow.cpp +++ b/framework/code/shadow/shadow.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/shadow/shadow.hpp b/framework/code/shadow/shadow.hpp index f7c3efd..c67ba8f 100644 --- a/framework/code/shadow/shadow.hpp +++ b/framework/code/shadow/shadow.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -49,6 +49,6 @@ class Shadow template class ShadowT : public Shadow { - ~ShadowT() noexcept = delete; // Enforce specialization of this class + ~ShadowT() = delete; // Enforce specialization of this class static_assert(sizeof(ShadowT) != sizeof(Shadow)); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/shadow/shadowVsm.cpp b/framework/code/shadow/shadowVsm.cpp index 5c1eff1..73aed52 100644 --- a/framework/code/shadow/shadowVsm.cpp +++ b/framework/code/shadow/shadowVsm.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,9 +9,9 @@ #include "shadowVsm.hpp" #include "shadow.hpp" #include "shadowVulkan.hpp" -#include "material/computable.hpp" -#include "material/materialManager.hpp" -#include "material/shaderManager.hpp" +#include "material/vulkan/computable.hpp" +#include "material/vulkan/materialManager.hpp" +#include "material/shaderManagerT.hpp" #include "vulkan/commandBuffer.hpp" #include @@ -19,7 +19,8 @@ ShadowVSM::ShadowVSM() { } -bool ShadowVSM::Initialize(GraphicsApiBase& gfxApi, const ShaderManager& shaderManager, const MaterialManager& materialManager, const Shadow& shadow ) +template<> +bool ShadowVSM::Initialize(Vulkan& gfxApi, const ShaderManager& shaderManager, const MaterialManager& materialManager, const ShadowT& shadow ) { // Variant Shadow Map Computable // Computables @@ -43,10 +44,10 @@ bool ShadowVSM::Initialize(GraphicsApiBase& gfxApi, const ShaderManager& shaderM auto vsmTargetIntermediate = CreateTextureObject(vulkan, width / 2, height, TextureFormat::R16G16B16A16_SFLOAT, TEXTURE_TYPE::TT_COMPUTE_TARGET, "VSM Intermediate"); // Make a material (from the vsm shader) - auto material = materialManager.CreateMaterial(gfxApi, *pComputeShader, 1, - [this, &shadowVulkan, &vsmTarget, &vsmTargetIntermediate](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { + Material material = materialManager.CreateMaterial(*pComputeShader, 1, + [this, &shadowVulkan, &vsmTarget, &vsmTargetIntermediate](const std::string& texName) -> MaterialManagerBase::tPerFrameTexInfo { if (texName == "ShadowDepth") - return { &shadowVulkan.GetDepthTexture(0) }; + return { &shadowVulkan.GetDepthTexture() }; else if (texName == "VarianceShadowMap") return { &vsmTarget }; else if (texName == "VarianceShadowMapIntermediate") @@ -56,17 +57,17 @@ bool ShadowVSM::Initialize(GraphicsApiBase& gfxApi, const ShaderManager& shaderM }, nullptr); // Create the computable to execute the material - m_Computable = std::make_unique(vulkan, std::move(material)); - if (!m_Computable->Init()) + auto computable = std::make_unique>(vulkan, std::move(material)); + if (!computable->Init()) { LOGE("Error Creating VSM computable..."); - m_Computable.reset(); } else { - m_Computable->SetDispatchThreadCount(0, { vsmTarget.Width, vsmTarget.Height, 1 }); - m_Computable->SetDispatchThreadCount(1, { vsmTarget.Width, vsmTarget.Height, 1 }); + computable->SetDispatchThreadCount(0, { vsmTarget.Width, vsmTarget.Height, 1 }); + computable->SetDispatchThreadCount(1, { vsmTarget.Width, vsmTarget.Height, 1 }); } + m_Computable = std::move(computable); m_VsmTarget = std::make_unique( std::move(vsmTarget) ); m_VsmTargetIntermediate = std::make_unique( std::move(vsmTargetIntermediate) ); @@ -84,12 +85,7 @@ void ShadowVSM::Release(GraphicsApiBase& gfxApi) m_VsmTargetIntermediate.reset(); } -void ShadowVSM::AddComputableToCmdBuffer(CommandList& cmdBuffer) +void ShadowVSM::AddComputableToCmdBuffer(CommandListBase& cmdBuffer) { - const auto& computable = *m_Computable; - for (const auto& computablePass : computable.GetPasses()) - { - auto& cmdBufferVulkan = apiCast(cmdBuffer); - computable.DispatchPass(cmdBufferVulkan.m_VkCommandBuffer, computablePass, 0); - } + m_Computable->Dispatch(cmdBuffer, 0, false/*timers*/); } diff --git a/framework/code/shadow/shadowVsm.hpp b/framework/code/shadow/shadowVsm.hpp index c350fd3..f844d7e 100644 --- a/framework/code/shadow/shadowVsm.hpp +++ b/framework/code/shadow/shadowVsm.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,12 +10,16 @@ #include class GraphicsApiBase; -class Computable; -class MaterialManager; -class ShaderManager; +class ComputableBase; +class MaterialManagerBase; +class ShaderManagerBase; class Shadow; -class Texture; -class CommandList; +class TextureBase; +class CommandListBase; + +template class MaterialManager; +template class ShaderManager; +template class ShadowT; /// Variance Shadow Map class ShadowVSM @@ -25,14 +29,15 @@ class ShadowVSM public: ShadowVSM(); - bool Initialize(GraphicsApiBase& , const ShaderManager& , const MaterialManager& , const Shadow& ); + template + bool Initialize(T_GFXAPI& , const ShaderManager& , const MaterialManager& , const ShadowT& ); void Release(GraphicsApiBase&); - const Texture* const GetVSMTexture() const { return m_VsmTarget.get(); } - void AddComputableToCmdBuffer(CommandList& cmdBuffer); + const TextureBase* const GetVSMTexture() const { return m_VsmTarget.get(); } + void AddComputableToCmdBuffer(CommandListBase& cmdBuffer); protected: - std::unique_ptr m_Computable; - std::unique_ptr m_VsmTarget; - std::unique_ptr m_VsmTargetIntermediate; + std::unique_ptr m_Computable; + std::unique_ptr m_VsmTarget; + std::unique_ptr m_VsmTargetIntermediate; }; diff --git a/framework/code/shadow/shadowVulkan.cpp b/framework/code/shadow/shadowVulkan.cpp index ae4a22c..d53295c 100644 --- a/framework/code/shadow/shadowVulkan.cpp +++ b/framework/code/shadow/shadowVulkan.cpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #include "shadowVulkan.hpp" #include "vulkan/vulkan_support.hpp" @@ -30,19 +30,40 @@ bool ShadowT::Initialize(Vulkan& rGfxApi, uint32_t shadowMapWidth, uint3 m_Scissor.extent.width = shadowMapWidth; m_Scissor.extent.height = shadowMapHeight; - const TextureFormat colorFormat[]{ TextureFormat::R8G8B8A8_UNORM }; - const std::span emptyColorFormat{}; + TextureFormat colorFormat = TextureFormat::R8G8B8A8_UNORM; TextureFormat depthFormat = TextureFormat::D32_SFLOAT; - if (!m_ShadowMapRT.Initialize(&rGfxApi, shadowMapWidth, shadowMapHeight, addColorTarget ? colorFormat : emptyColorFormat, depthFormat, VK_SAMPLE_COUNT_1_BIT, "Shadow RT")) + m_ShadowDepthBuffer = CreateTextureObject( rGfxApi, shadowMapWidth, shadowMapHeight, depthFormat, TEXTURE_TYPE::TT_RENDER_TARGET, "Shadow Depth", Msaa::Samples1 ); + + std::span colorBufferSpan{}; + std::span colorFormatSpan{}; + if (addColorTarget) + { + m_ShadowColorBuffer = CreateTextureObject( rGfxApi, shadowMapWidth, shadowMapHeight, colorFormat, TEXTURE_TYPE::TT_RENDER_TARGET, "Shadow Depth", Msaa::Samples1 ); + colorBufferSpan ={ &m_ShadowColorBuffer, 1 }; + colorFormatSpan = {&colorFormat, 1}; + } + + RenderPass shadowRenderPass; + if (!rGfxApi.CreateRenderPass( + colorFormatSpan, + depthFormat, + Msaa::Samples1, + RenderPassInputUsage::Clear, // color input + RenderPassOutputUsage::StoreReadOnly, // color output + true, // depth clear + RenderPassOutputUsage::StoreReadOnly, // depth output + shadowRenderPass )) { - LOGE("Unable to create shadow render target"); return false; } + + Framebuffer framebuffer; + framebuffer.Initialize( rGfxApi, shadowRenderPass, colorBufferSpan, &m_ShadowDepthBuffer, "Shadow framebuffer" ); + m_ShadowMapRC = {std::move(shadowRenderPass), {}/*pipeline*/, framebuffer, "Shadow Context"}; return true; } void ShadowT::Release() { - m_ShadowMapRT.Release(); } diff --git a/framework/code/shadow/shadowVulkan.hpp b/framework/code/shadow/shadowVulkan.hpp index 29f7e9b..538d954 100644 --- a/framework/code/shadow/shadowVulkan.hpp +++ b/framework/code/shadow/shadowVulkan.hpp @@ -1,14 +1,15 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include "system/glm_common.hpp" #include "vulkan/vulkan_support.hpp" +#include "vulkan/renderContext.hpp" #include "vulkan/renderTarget.hpp" #include "shadow.hpp" @@ -31,45 +32,43 @@ class ShadowT : public Shadow return m_Scissor; } - auto GetRenderPass() const + const auto& GetRenderContext() const { - return m_ShadowMapRT.m_RenderPass; + return m_ShadowMapRC; } - auto GetFramebuffer(uint32_t idx = 0) const + VkFramebuffer GetFramebuffer(uint32_t idx = 0) const { - return m_ShadowMapRT[idx].m_FrameBuffer; + return m_ShadowMapRC.GetFramebuffer()->m_FrameBuffer; } void GetTargetSize(uint32_t& width, uint32_t& height) const { - width = m_ShadowMapRT[0].m_Width; - height = m_ShadowMapRT[0].m_Height; + width = m_ShadowDepthBuffer.Width; + height = m_ShadowDepthBuffer.Height; } auto GetDepthFormat(uint32_t frameBufferIndex = 0) const { - return m_ShadowMapRT[frameBufferIndex].m_DepthAttachment.Format; + return m_ShadowDepthBuffer.Format; } - const auto& GetDepthTexture(uint32_t frameBufferIndex = 0) const + const auto& GetDepthTexture() const { - return m_ShadowMapRT[frameBufferIndex].m_DepthAttachment; + return m_ShadowDepthBuffer; } - const TextureT* GetColorTexture(uint32_t frameBufferIndex = 0) const + const Texture* GetColorTexture() const { - if (frameBufferIndex < m_ShadowMapRT[frameBufferIndex].m_ColorAttachments.size()) - return &m_ShadowMapRT[frameBufferIndex].m_ColorAttachments[frameBufferIndex]; - return nullptr; - } - const auto& GetRenderTarget(uint32_t frameBufferIndex = 0) const - { - return m_ShadowMapRT[frameBufferIndex]; + return &m_ShadowColorBuffer; } protected: VkViewport m_Viewport = {}; VkRect2D m_Scissor = {}; - // Render targets and renderpass - CRenderTargetArray<1> m_ShadowMapRT; + // Render targets (images) + Texture m_ShadowDepthBuffer; + Texture m_ShadowColorBuffer; + + // Render context (renderpass and framebuffer) + RenderContext m_ShadowMapRC; }; using ShadowVulkan = ShadowT; diff --git a/framework/code/system/Worker.cpp b/framework/code/system/Worker.cpp index 7294c75..54a000c 100644 --- a/framework/code/system/Worker.cpp +++ b/framework/code/system/Worker.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -13,12 +13,12 @@ // ********************************************** // ********************************************** -// CWorker +// ThreadWorker // ********************************************** // ********************************************** //----------------------------------------------------------------------------- -void CWorker::WorkerThreadProc() +void ThreadWorker::WorkerThreadProc() //----------------------------------------------------------------------------- { // @@ -39,7 +39,7 @@ void CWorker::WorkerThreadProc() m_WorkAvailable.Wait(); // Get the work (will wait until work is available). - Work work; + ThreadWork work; { std::lock_guard lock( m_WaitingWorkQueueMutex ); work = m_WaitingWorkQueue.front(); @@ -71,21 +71,21 @@ void CWorker::WorkerThreadProc() } //----------------------------------------------------------------------------- -CWorker::CWorker() : m_WorkAvailable(0), m_WorkersRunning(0), m_WorkInFlight(0) +ThreadWorker::ThreadWorker() : m_WorkAvailable(0), m_WorkersRunning(0), m_WorkInFlight(0) //----------------------------------------------------------------------------- { m_Name = "Worker"; } //----------------------------------------------------------------------------- -CWorker::~CWorker() +ThreadWorker::~ThreadWorker() //----------------------------------------------------------------------------- { Terminate(); } //----------------------------------------------------------------------------- -uint32_t CWorker::Initialize(const char *pName, uint32_t uiDesiredThreads) +uint32_t ThreadWorker::Initialize(const char *pName, uint32_t uiDesiredThreads) //----------------------------------------------------------------------------- { if (pName != nullptr) @@ -134,24 +134,24 @@ uint32_t CWorker::Initialize(const char *pName, uint32_t uiDesiredThreads) // Create and startup the worker threads for(uint32_t uiIndx = 0; uiIndx < uiNumWorkers; uiIndx++) { - m_Workers.emplace_back( std::thread{ &CWorker::WorkerThreadProc, this } ); + m_Workers.emplace_back( std::thread{ &ThreadWorker::WorkerThreadProc, this } ); } return uiNumWorkers; } //----------------------------------------------------------------------------- -void CWorker::Terminate() +void ThreadWorker::Terminate() //----------------------------------------------------------------------------- { for( size_t i = 0; i < m_Workers.size(); ++i ) { // Send an 'empty' job for each of the workers (signals to stop running). - DoWork( Work{}, 10 * 1000 ); + DoWork( ThreadWork{}, 10 * 1000 ); } // Potentially the threads pushed jobs on to the m_WaitingWorkQueue between us pushing the 'empty' jobs and them getting processed. - // What do we do with that? We could either run the jobs here (single threaded) or just punt. What happens if another CWorker is + // What do we do with that? We could either run the jobs here (single threaded) or just punt. What happens if another ThreadWorker is // processing jobs that push work on to our queue? // Wait for all the threads to be done. @@ -167,7 +167,7 @@ void CWorker::Terminate() } //----------------------------------------------------------------------------- -void CWorker::FinishAllWork() +void ThreadWorker::FinishAllWork() //----------------------------------------------------------------------------- { if(m_Workers.empty()) @@ -183,7 +183,7 @@ void CWorker::FinishAllWork() } //----------------------------------------------------------------------------- -bool CWorker::IsAllWorkDone() +bool ThreadWorker::IsAllWorkDone() //----------------------------------------------------------------------------- { if (m_Workers.empty()) @@ -204,14 +204,14 @@ bool CWorker::IsAllWorkDone() //----------------------------------------------------------------------------- -void CWorker::DoWork(void (*lpStartAddress) (void *), void *pParam, uint32_t WaitTimeMS) +void ThreadWorker::DoWork(void (*lpStartAddress) (void *), void *pParam, uint32_t WaitTimeMS) //----------------------------------------------------------------------------- { DoWork({lpStartAddress, pParam}, WaitTimeMS); } //----------------------------------------------------------------------------- -void CWorker::DoWork(Work&& work, uint32_t WaitTimeMS) +void ThreadWorker::DoWork(ThreadWork&& work, uint32_t WaitTimeMS) //----------------------------------------------------------------------------- { if(m_Workers.empty()) diff --git a/framework/code/system/Worker.h b/framework/code/system/Worker.h index 0dde799..eff57b8 100644 --- a/framework/code/system/Worker.h +++ b/framework/code/system/Worker.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,11 +11,13 @@ #include #include #include +#include #include #include +#include #if !defined(MAX_CPU_CORES) - #define MAX_CPU_CORES 4 + #define MAX_CPU_CORES 12 #endif // !defined(MAX_CPU_CORES) /// Sempahore. Post increases the counter, Wait allows a thread through if the counter is greater than zero and then decreases the counter. @@ -128,7 +130,7 @@ class ReverseSemaphore // Some work that we want the worker to do -struct Work +struct ThreadWork { // Funtion pointer void (*lpStartAddress) (void *) = nullptr; @@ -142,12 +144,12 @@ struct Work /// Creates a number of worker threads that can then be given work to do (via DoWork / DoWork2) /// Holds the threads, the work queue, and the associated syncronization primitives. /// @ingroup System -class CWorker +class ThreadWorker { public: // Constructor/Destructor - CWorker(); - ~CWorker(); + ThreadWorker(); + ~ThreadWorker(); /// Initialize this worker with the given number of threads uint32_t Initialize(const char *pName, uint32_t uiDesiredThreads = 0); @@ -197,10 +199,27 @@ class CWorker DoWork( +lambdaWrap, pParams, 1000 ); } + struct pWrapper { + std::function m_function; + }; + + using tWork3Fn = std::function; + void DoWork3( tWork3Fn&& work ) { + + void* pWork = new tWork3Fn( std::forward( work ) ); + + auto lambdaWrap = []( void* voidParams ) { + tWork3Fn* pWork = static_cast(voidParams); + pWork->operator()(); + delete pWork; + }; + DoWork( +lambdaWrap, pWork, 1000 ); + } + void Terminate(); protected: - void DoWork(Work&& work, uint32_t WaitTimeMS); + void DoWork(ThreadWork&& work, uint32_t WaitTimeMS); /// Function run by the WorkerInfo::m_Thread, loops. void WorkerThreadProc(); @@ -212,7 +231,7 @@ class CWorker std::vector m_Workers; /// Queue that holds the work we have been asked to do (protected by a mutex). - std::queue m_WaitingWorkQueue; + std::queue m_WaitingWorkQueue; std::mutex m_WaitingWorkQueueMutex; /// Semaphore to control when work is available. diff --git a/framework/code/system/android/androidAssetManager.cpp b/framework/code/system/android/androidAssetManager.cpp index cc7c0db..27e0c9a 100644 --- a/framework/code/system/android/androidAssetManager.cpp +++ b/framework/code/system/android/androidAssetManager.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -80,8 +80,29 @@ AssetHandle* AssetManager::OpenFile(const std::string& portableFilename, Mode mo // Asset name needs to have / seperators and no ./ preamble! std::string aAssetFilename; const auto skipPreambleOffset = std::max(portableFilename.find_first_not_of("./\\"), (size_t)0); - std::transform(portableFilename.begin() + skipPreambleOffset, portableFilename.end(), std::back_inserter(aAssetFilename), [](char c) { return c == '\\' ? '/' : c; }); + // Convert to backslashes and remove double backslashes + aAssetFilename.resize(portableFilename.length() - skipPreambleOffset, ' '); + size_t outputIdx = 0, slashCount = 0; + for (size_t inputIdx = skipPreambleOffset; inputIdx < portableFilename.length(); ++inputIdx) + { + char c = portableFilename[inputIdx]; + c = c=='\\' ? '/' : c; + if (c == '/') + { + ++slashCount; + if (slashCount > 1) + continue; + } + else + { + slashCount = 0; + } + aAssetFilename[outputIdx++] = c; + } + aAssetFilename.resize(outputIdx); + + // Open the file AAsset* pAAsset = AAssetManager_open(m_AAssetManager, aAssetFilename.c_str(), AASSET_MODE_STREAMING); if (pAAsset != nullptr) { diff --git a/framework/code/system/assetManager.hpp b/framework/code/system/assetManager.hpp index 45b5b70..2b31780 100644 --- a/framework/code/system/assetManager.hpp +++ b/framework/code/system/assetManager.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -34,7 +34,7 @@ class AssetMemStream : public std::basic_istream { AssetMemStream& operator=(const AssetMemStream&) = delete; public: AssetMemStream() - : std::istream(&mBuffer) + : std::basic_istream(&mBuffer) , mBuffer() { this->set_rdbuf(&mBuffer); @@ -174,17 +174,6 @@ class AssetManager return true; } - size_t GetFileSize(const std::string& portableFileName) - { - AssetHandle* handle = OpenFile(portableFileName, Mode::Read); - if (!handle) - { - return 0; - } - - return FileSize(handle); - } - AssetHandleGuard OpenFile( const std::string& portableFilename ) { auto* fileHandle = OpenFile( portableFilename, Mode::Read ); diff --git a/framework/code/system/config.cpp b/framework/code/system/config.cpp index 4a6ec86..419a36f 100644 --- a/framework/code/system/config.cpp +++ b/framework/code/system/config.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/config.h b/framework/code/system/config.h index e8e8949..2df5466 100644 --- a/framework/code/system/config.h +++ b/framework/code/system/config.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -23,6 +23,7 @@ #include #include +#include #include #include #include "containers.h" @@ -689,4 +690,4 @@ Type RegisterVariable(const char* name, Type* ptr, Type init, unsigned long flag /// @} // End doxygen group -#endif //_SYS_CONFIG_H_ \ No newline at end of file +#endif //_SYS_CONFIG_H_ diff --git a/framework/code/system/containers.cpp b/framework/code/system/containers.cpp index ee7e5fb..24fd828 100644 --- a/framework/code/system/containers.cpp +++ b/framework/code/system/containers.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/containers.h b/framework/code/system/containers.h index b1f619e..b6fe588 100644 --- a/framework/code/system/containers.h +++ b/framework/code/system/containers.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/crc32c.hpp b/framework/code/system/crc32c.hpp index b21bfa5..d356d60 100644 --- a/framework/code/system/crc32c.hpp +++ b/framework/code/system/crc32c.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/glm_common.hpp b/framework/code/system/glm_common.hpp index b89daca..0020fe1 100644 --- a/framework/code/system/glm_common.hpp +++ b/framework/code/system/glm_common.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -22,5 +22,6 @@ #include #include #include +#include #include #include diff --git a/framework/code/system/linux/linuxAssetManager.cpp b/framework/code/system/linux/linuxAssetManager.cpp new file mode 100644 index 0000000..741a687 --- /dev/null +++ b/framework/code/system/linux/linuxAssetManager.cpp @@ -0,0 +1,110 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================================================ + +/// @file linuxAssetManager.cpp +/// Platform specific implementation of AssetManager class. +/// @ingroup System + +#include "../assetManager.hpp" +#include "system/os_common.h" +#include +#include +#include + + +//----------------------------------------------------------------------------- +// Define a class to hold the file handle pointers. +class AssetHandle +{ +public: + AssetHandle(FILE* fp, size_t fileSize) + : mFp(fp) + , mFileSize(fileSize) + {} + ~AssetHandle() + { + assert(mFp==nullptr); // expecting the fp to be cleared by Fileclose() + } + FILE* mFp; + size_t mFileSize; +}; + + +//----------------------------------------------------------------------------- +AssetHandle* AssetManager::OpenFile(const std::string& pPortableFileName, Mode mode) +//----------------------------------------------------------------------------- +{ + if (pPortableFileName.empty()) + return nullptr; + + // Fix the filename + const auto deviceFilename = PortableFilenameToDevicePath(pPortableFileName); + + // Open the file and see what is to be seen + FILE* fp = fopen(deviceFilename.c_str(), (mode == Mode::Write) ? "wb" : "rb"); + if (fp == nullptr) + { + LOGE("Unable to open file: %s (errno=%d)", deviceFilename.c_str(), (int)errno); + return nullptr; + } + + size_t fileSize = 0; + if (mode == Mode::Read) + { + // Get the file length + fseek(fp, 0, SEEK_END); + fileSize = ftell(fp); + fseek(fp, 0, SEEK_SET); + } + + return new AssetHandle(fp, fileSize); +} + +//----------------------------------------------------------------------------- +size_t AssetManager::FileSize(AssetHandle* pHandle) const +//----------------------------------------------------------------------------- +{ + return pHandle->mFileSize; +} + +//----------------------------------------------------------------------------- +size_t AssetManager::ReadFile(void* pDest, size_t bytes, AssetHandle* pHandle) +//----------------------------------------------------------------------------- +{ + return fread(pDest, sizeof(char), bytes, pHandle->mFp); +} + +//----------------------------------------------------------------------------- +size_t AssetManager::WriteFile(const void* pSrc, size_t bytes, AssetHandle* pHandle) +//----------------------------------------------------------------------------- +{ + size_t bytesWritten = fwrite(pSrc, sizeof(char), bytes, pHandle->mFp); + pHandle->mFileSize += (bytesWritten > 0 ? bytesWritten : 0); + return bytesWritten; +} + +//----------------------------------------------------------------------------- +void AssetManager::CloseFile(AssetHandle* pHandle) +//----------------------------------------------------------------------------- +{ + fclose(pHandle->mFp); + pHandle->mFp = nullptr; + delete pHandle; +} + + +//----------------------------------------------------------------------------- +std::string AssetManager::PortableFilenameToDevicePath(const std::string& portableFileName) +//----------------------------------------------------------------------------- +{ + std::string output; + output.reserve(portableFileName.length()); + // change backslash \ to forwardslash / . + std::transform(portableFileName.begin(), portableFileName.end(), std::back_inserter(output), [](char c) { return c == '\\' ? '/' : c; }); + return output; +} \ No newline at end of file diff --git a/framework/code/system/math_common.hpp b/framework/code/system/math_common.hpp index 3030d4d..b5bdbf1 100644 --- a/framework/code/system/math_common.hpp +++ b/framework/code/system/math_common.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/os_common.cpp b/framework/code/system/os_common.cpp index c83692c..9e1b746 100644 --- a/framework/code/system/os_common.cpp +++ b/framework/code/system/os_common.cpp @@ -1,19 +1,20 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "os_common.h" #include "assetManager.hpp" +#include #include -#if defined (OS_ANDROID) +#if defined (OS_ANDROID) || defined(OS_LINUX) #include #include -#endif // defined (OS_ANDROID) +#endif // defined (OS_ANDROID) || defined (OS_LINUX) #if defined (OS_WINDOWS) #define NOMINMAX @@ -62,6 +63,15 @@ uint32_t OS_GetNumCores() else return (uint32_t) iNumCores; +#elif defined(OS_LINUX) + + // sysconf can return a negative number! + int iNumCores = sysconf( _SC_NPROCESSORS_ONLN ); // Number of processors online + if( iNumCores <= 0 ) + return 0; + else + return (uint32_t) iNumCores; + #else #error Must define an OS! @@ -85,11 +95,10 @@ uint32_t OS_GetTimeMS() return (uint32_t)(((double)nTime.QuadPart / (double)nFrequency.QuadPart) * 1000.0f); -#elif defined (OS_ANDROID) +#elif defined (OS_ANDROID) || defined (OS_LINUX) struct timeval t; t.tv_sec = t.tv_usec = 0; - if (gettimeofday(&t, NULL) == -1) { return 0; @@ -97,10 +106,9 @@ uint32_t OS_GetTimeMS() return (uint32_t)(t.tv_sec * 1000LL + t.tv_usec / 1000LL); -#endif // defined (OS_WINDOWS|OS_ANDROID) +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) } - //----------------------------------------------------------------------------- uint64_t OS_GetTimeUS() //----------------------------------------------------------------------------- @@ -117,7 +125,7 @@ uint64_t OS_GetTimeUS() return (uint64_t)((double)nTime.QuadPart / (((double)nFrequency.QuadPart) / 1000000.0)); -#elif defined (OS_ANDROID) +#elif defined (OS_ANDROID) || defined(OS_LINUX) struct timeval t; t.tv_sec = t.tv_usec = 0; @@ -129,10 +137,9 @@ uint64_t OS_GetTimeUS() return (uint64_t)(t.tv_sec * 1000000LL + t.tv_usec); -#endif // defined (OS_WINDOWS|OS_ANDROID) +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) } - //----------------------------------------------------------------------------- void OS_SleepMs(uint32_t ms) //----------------------------------------------------------------------------- @@ -141,14 +148,13 @@ void OS_SleepMs(uint32_t ms) Sleep(ms); -#elif defined (OS_ANDROID) +#elif defined (OS_ANDROID) || defined (OS_LINUX) usleep(ms*1000); -#endif // defined (OS_WINDOWS|OS_ANDROID) +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) } - #if defined (OS_WINDOWS) //----------------------------------------------------------------------------- static void LOG_(WORD ConsoleColor, const char* pszFormat, va_list args) @@ -172,9 +178,6 @@ static void LOG_(WORD ConsoleColor, const char* pszFormat, va_list args) OutputDebugString(szBuffer); } } -#endif // defined (OS_WINDOWS) - -#if defined (OS_WINDOWS) //----------------------------------------------------------------------------- void LOGE(const char* pszFormat, ...) //----------------------------------------------------------------------------- @@ -184,9 +187,6 @@ void LOGE(const char* pszFormat, ...) LOG_(FOREGROUND_RED | FOREGROUND_INTENSITY, pszFormat, args); va_end(args); } -#endif // defined (OS_WINDOWS) - -#if defined (OS_WINDOWS) //----------------------------------------------------------------------------- void LOGW(const char* pszFormat, ...) //----------------------------------------------------------------------------- @@ -196,9 +196,6 @@ void LOGW(const char* pszFormat, ...) LOG_(FOREGROUND_BLUE | FOREGROUND_GREEN, pszFormat, args); va_end(args); } -#endif // defined (OS_WINDOWS) - -#if defined (OS_WINDOWS) //----------------------------------------------------------------------------- void LOGI(const char* pszFormat, ...) //----------------------------------------------------------------------------- @@ -210,3 +207,36 @@ void LOGI(const char* pszFormat, ...) } #endif // defined (OS_WINDOWS) +#if defined (OS_LINUX) +//----------------------------------------------------------------------------- +void LOGE(const char* pszFormat, ...) +//----------------------------------------------------------------------------- +{ + va_list args; + va_start(args, pszFormat); + vfprintf(stderr, pszFormat, args); + va_end(args); + fprintf(stderr, "\n"); +} +//----------------------------------------------------------------------------- +void LOGW(const char* pszFormat, ...) +//----------------------------------------------------------------------------- +{ + va_list args; + va_start(args, pszFormat); + vfprintf(stdout, pszFormat, args); + va_end(args); + fprintf(stdout, "\n"); +} +//----------------------------------------------------------------------------- +void LOGI(const char* pszFormat, ...) +//----------------------------------------------------------------------------- +{ + va_list args; + va_start(args, pszFormat); + vfprintf(stdout, pszFormat, args); + va_end(args); + fprintf(stdout, "\n"); +} +#endif // defined (OS_LINUX) + diff --git a/framework/code/system/os_common.h b/framework/code/system/os_common.h index 1ba9259..09f3d93 100644 --- a/framework/code/system/os_common.h +++ b/framework/code/system/os_common.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -53,6 +53,12 @@ void LOGI(const char* pszFormat, ...); void LOGW(const char* pszFormat, ...); void LOGE(const char* pszFormat, ...); +#elif OS_LINUX + +void LOGI(const char* pszFormat, ...); +void LOGW(const char* pszFormat, ...); +void LOGE(const char* pszFormat, ...); + #else #error "Must define an OS_xxx!" diff --git a/framework/code/system/profile.cpp b/framework/code/system/profile.cpp index 4599816..606e77a 100644 --- a/framework/code/system/profile.cpp +++ b/framework/code/system/profile.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/profile.h b/framework/code/system/profile.h index 99c3da4..e477636 100644 --- a/framework/code/system/profile.h +++ b/framework/code/system/profile.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/timer.cpp b/framework/code/system/timer.cpp index 62fb808..d947607 100644 --- a/framework/code/system/timer.cpp +++ b/framework/code/system/timer.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/timer.hpp b/framework/code/system/timer.hpp index b3db6a0..a64fbf4 100644 --- a/framework/code/system/timer.hpp +++ b/framework/code/system/timer.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/system/windows/windowsAssetManager.cpp b/framework/code/system/windows/windowsAssetManager.cpp index c8e7ebc..63e8fa4 100644 --- a/framework/code/system/windows/windowsAssetManager.cpp +++ b/framework/code/system/windows/windowsAssetManager.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -104,6 +104,7 @@ std::string AssetManager::PortableFilenameToDevicePath(const std::string& portab { std::string output; output.reserve(portableFileName.length()); + // change forwardslash / to backslash \ . std::transform(portableFileName.begin(), portableFileName.end(), std::back_inserter(output), [](char c) { return c == '/' ? '\\' : c; }); return output; } diff --git a/framework/code/texture/dx12/loaderKtx.cpp b/framework/code/texture/dx12/loaderKtx.cpp new file mode 100644 index 0000000..82ce357 --- /dev/null +++ b/framework/code/texture/dx12/loaderKtx.cpp @@ -0,0 +1,1149 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "loaderKtx.hpp" +#include "sampler.hpp" +#include "texture.hpp" +#include "dx12/dx12.hpp" +#include // KTX-Software +#include +#include // for GL_* defines + +#undef min +#undef max + +// Forward declarations +static uint32_t WidthToPitch(DXGI_FORMAT dxgiFormat, uint32_t width); +static uint32_t AreaToBytes(DXGI_FORMAT dxgiFormat, uint32_t width, uint32_t height); + + +TextureKtx::TextureKtx(Dx12& dx12) noexcept : TextureKtxBase(), m_Dx12(dx12) +{ +} + +TextureKtx::~TextureKtx() +{} + +bool TextureKtx::Initialize() +{ + if (!TextureKtxBase::Initialize()) + return false; + return true; +} + +void TextureKtx::Release() +{ + TextureKtxBase::Release(); +} + + +static constexpr std::array sTextureFormatToVk{ + VK_FORMAT_UNDEFINED, + VK_FORMAT_R4G4_UNORM_PACK8, + VK_FORMAT_R4G4B4A4_UNORM_PACK16, + VK_FORMAT_B4G4R4A4_UNORM_PACK16, + VK_FORMAT_R5G6B5_UNORM_PACK16, + VK_FORMAT_B5G6R5_UNORM_PACK16, + VK_FORMAT_R5G5B5A1_UNORM_PACK16, + VK_FORMAT_B5G5R5A1_UNORM_PACK16, + VK_FORMAT_A1R5G5B5_UNORM_PACK16, + VK_FORMAT_R8_UNORM, + VK_FORMAT_R8_SNORM, + VK_FORMAT_R8_USCALED, + VK_FORMAT_R8_SSCALED, + VK_FORMAT_R8_UINT, + VK_FORMAT_R8_SINT, + VK_FORMAT_R8_SRGB, + VK_FORMAT_R8G8_UNORM, + VK_FORMAT_R8G8_SNORM, + VK_FORMAT_R8G8_USCALED, + VK_FORMAT_R8G8_SSCALED, + VK_FORMAT_R8G8_UINT, + VK_FORMAT_R8G8_SINT, + VK_FORMAT_R8G8_SRGB, + VK_FORMAT_R8G8B8_UNORM, + VK_FORMAT_R8G8B8_SNORM, + VK_FORMAT_R8G8B8_USCALED, + VK_FORMAT_R8G8B8_SSCALED, + VK_FORMAT_R8G8B8_UINT, + VK_FORMAT_R8G8B8_SINT, + VK_FORMAT_R8G8B8_SRGB, + VK_FORMAT_B8G8R8_UNORM, + VK_FORMAT_B8G8R8_SNORM, + VK_FORMAT_B8G8R8_USCALED, + VK_FORMAT_B8G8R8_SSCALED, + VK_FORMAT_B8G8R8_UINT, + VK_FORMAT_B8G8R8_SINT, + VK_FORMAT_B8G8R8_SRGB, + VK_FORMAT_R8G8B8A8_UNORM, + VK_FORMAT_R8G8B8A8_SNORM, + VK_FORMAT_R8G8B8A8_USCALED, + VK_FORMAT_R8G8B8A8_SSCALED, + VK_FORMAT_R8G8B8A8_UINT, + VK_FORMAT_R8G8B8A8_SINT, + VK_FORMAT_R8G8B8A8_SRGB, + VK_FORMAT_B8G8R8A8_UNORM, + VK_FORMAT_B8G8R8A8_SNORM, + VK_FORMAT_B8G8R8A8_USCALED, + VK_FORMAT_B8G8R8A8_SSCALED, + VK_FORMAT_B8G8R8A8_UINT, + VK_FORMAT_B8G8R8A8_SINT, + VK_FORMAT_B8G8R8A8_SRGB, + VK_FORMAT_A8B8G8R8_UNORM_PACK32, + VK_FORMAT_A8B8G8R8_SNORM_PACK32, + VK_FORMAT_A8B8G8R8_USCALED_PACK32, + VK_FORMAT_A8B8G8R8_SSCALED_PACK32, + VK_FORMAT_A8B8G8R8_UINT_PACK32, + VK_FORMAT_A8B8G8R8_SINT_PACK32, + VK_FORMAT_A8B8G8R8_SRGB_PACK32, + VK_FORMAT_A2R10G10B10_UNORM_PACK32, + VK_FORMAT_A2R10G10B10_SNORM_PACK32, + VK_FORMAT_A2R10G10B10_USCALED_PACK32, + VK_FORMAT_A2R10G10B10_SSCALED_PACK32, + VK_FORMAT_A2R10G10B10_UINT_PACK32, + VK_FORMAT_A2R10G10B10_SINT_PACK32, + VK_FORMAT_A2B10G10R10_UNORM_PACK32, + VK_FORMAT_A2B10G10R10_SNORM_PACK32, + VK_FORMAT_A2B10G10R10_USCALED_PACK32, + VK_FORMAT_A2B10G10R10_SSCALED_PACK32, + VK_FORMAT_A2B10G10R10_UINT_PACK32, + VK_FORMAT_A2B10G10R10_SINT_PACK32, + VK_FORMAT_R16_UNORM, + VK_FORMAT_R16_SNORM, + VK_FORMAT_R16_USCALED, + VK_FORMAT_R16_SSCALED, + VK_FORMAT_R16_UINT, + VK_FORMAT_R16_SINT, + VK_FORMAT_R16_SFLOAT, + VK_FORMAT_R16G16_UNORM, + VK_FORMAT_R16G16_SNORM, + VK_FORMAT_R16G16_USCALED, + VK_FORMAT_R16G16_SSCALED, + VK_FORMAT_R16G16_UINT, + VK_FORMAT_R16G16_SINT, + VK_FORMAT_R16G16_SFLOAT, + VK_FORMAT_R16G16B16_UNORM, + VK_FORMAT_R16G16B16_SNORM, + VK_FORMAT_R16G16B16_USCALED, + VK_FORMAT_R16G16B16_SSCALED, + VK_FORMAT_R16G16B16_UINT, + VK_FORMAT_R16G16B16_SINT, + VK_FORMAT_R16G16B16_SFLOAT, + VK_FORMAT_R16G16B16A16_UNORM, + VK_FORMAT_R16G16B16A16_SNORM, + VK_FORMAT_R16G16B16A16_USCALED, + VK_FORMAT_R16G16B16A16_SSCALED, + VK_FORMAT_R16G16B16A16_UINT, + VK_FORMAT_R16G16B16A16_SINT, + VK_FORMAT_R16G16B16A16_SFLOAT, + VK_FORMAT_R32_UINT, + VK_FORMAT_R32_SINT, + VK_FORMAT_R32_SFLOAT, + VK_FORMAT_R32G32_UINT, + VK_FORMAT_R32G32_SINT, + VK_FORMAT_R32G32_SFLOAT, + VK_FORMAT_R32G32B32_UINT, + VK_FORMAT_R32G32B32_SINT, + VK_FORMAT_R32G32B32_SFLOAT, + VK_FORMAT_R32G32B32A32_UINT, + VK_FORMAT_R32G32B32A32_SINT, + VK_FORMAT_R32G32B32A32_SFLOAT, + VK_FORMAT_R64_UINT, + VK_FORMAT_R64_SINT, + VK_FORMAT_R64_SFLOAT, + VK_FORMAT_R64G64_UINT, + VK_FORMAT_R64G64_SINT, + VK_FORMAT_R64G64_SFLOAT, + VK_FORMAT_R64G64B64_UINT, + VK_FORMAT_R64G64B64_SINT, + VK_FORMAT_R64G64B64_SFLOAT, + VK_FORMAT_R64G64B64A64_UINT, + VK_FORMAT_R64G64B64A64_SINT, + VK_FORMAT_R64G64B64A64_SFLOAT, + VK_FORMAT_B10G11R11_UFLOAT_PACK32, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + VK_FORMAT_D16_UNORM, + VK_FORMAT_X8_D24_UNORM_PACK32, + VK_FORMAT_D32_SFLOAT, + VK_FORMAT_S8_UINT, + VK_FORMAT_D16_UNORM_S8_UINT, + VK_FORMAT_D24_UNORM_S8_UINT, + VK_FORMAT_D32_SFLOAT_S8_UINT, + VK_FORMAT_BC1_RGB_UNORM_BLOCK, + VK_FORMAT_BC1_RGB_SRGB_BLOCK, + VK_FORMAT_BC1_RGBA_UNORM_BLOCK, + VK_FORMAT_BC1_RGBA_SRGB_BLOCK, + VK_FORMAT_BC2_UNORM_BLOCK, + VK_FORMAT_BC2_SRGB_BLOCK, + VK_FORMAT_BC3_UNORM_BLOCK, + VK_FORMAT_BC3_SRGB_BLOCK, + VK_FORMAT_BC4_UNORM_BLOCK, + VK_FORMAT_BC4_SNORM_BLOCK, + VK_FORMAT_BC5_UNORM_BLOCK, + VK_FORMAT_BC5_SNORM_BLOCK, + VK_FORMAT_BC6H_UFLOAT_BLOCK, + VK_FORMAT_BC6H_SFLOAT_BLOCK, + VK_FORMAT_BC7_UNORM_BLOCK, + VK_FORMAT_BC7_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + VK_FORMAT_EAC_R11_UNORM_BLOCK, + VK_FORMAT_EAC_R11_SNORM_BLOCK, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + VK_FORMAT_ASTC_4x4_SRGB_BLOCK, + VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + VK_FORMAT_ASTC_5x5_SRGB_BLOCK, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + VK_FORMAT_ASTC_6x5_SRGB_BLOCK, + VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + VK_FORMAT_ASTC_8x5_SRGB_BLOCK, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + VK_FORMAT_ASTC_8x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + VK_FORMAT_ASTC_10x5_SRGB_BLOCK, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + VK_FORMAT_ASTC_10x6_SRGB_BLOCK, + VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + VK_FORMAT_ASTC_10x10_SRGB_BLOCK, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + VK_FORMAT_ASTC_12x10_SRGB_BLOCK, + VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK, //184 + + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, //1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, + + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, //1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, + + VK_FORMAT_G8B8G8R8_422_UNORM, //1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + VK_FORMAT_R10X6_UNORM_PACK16, + VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + VK_FORMAT_R12X4_UNORM_PACK16, + VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16B16G16R16_422_UNORM, + VK_FORMAT_B16G16R16G16_422_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + (VkFormat)1000330000, //VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + (VkFormat)1000330001, //VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + (VkFormat)1000330002, //VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + (VkFormat)1000330003, //VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, +}; +#include +// Ensure the sTextureFormatToVk array is in strict numerical order (so we can quickly std::find +consteval bool CheckFormatOrdering() { + return std::is_sorted( std::begin( sTextureFormatToVk ), std::end( sTextureFormatToVk ) ); +} +static_assert(CheckFormatOrdering()); + + +// do some rough checks to ensure our formats are in the order we expect (or else the above lookup doesnt work!) +static_assert(int( TextureFormat::B8G8R8A8_SRGB ) == 50); +static_assert(sTextureFormatToVk[int( TextureFormat::B8G8R8A8_SRGB )] == int( VK_FORMAT_B8G8R8A8_SRGB )); +static_assert(int( TextureFormat::R32_SFLOAT ) == 100); +static_assert(int( TextureFormat::ETC2_R8G8B8A1_SRGB_BLOCK ) == 150); +static_assert(sTextureFormatToVk[int( TextureFormat::ETC2_R8G8B8A1_SRGB_BLOCK )] == int( VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK )); +static_assert(int( TextureFormat::ASTC_12x12_SRGB_BLOCK ) == 184); +static_assert(int( TextureFormat::PVRTC1_2BPP_UNORM_BLOCK_IMG ) == 185); +static_assert(sTextureFormatToVk[int( TextureFormat::PVRTC1_2BPP_UNORM_BLOCK_IMG )] == int( VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG )); +static_assert(int( TextureFormat::ASTC_4x4_SFLOAT_BLOCK ) == 193); +static_assert(sTextureFormatToVk[int( TextureFormat::ASTC_4x4_SFLOAT_BLOCK )] == int( VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT )); +static_assert(int( TextureFormat::G8B8G8R8_422_UNORM ) == 207); +static_assert(sTextureFormatToVk[int( TextureFormat::G8B8G8R8_422_UNORM )] == int( VK_FORMAT_G8B8G8R8_422_UNORM )); +static_assert(int( TextureFormat::EndCount ) == 247); + +static inline VkFormat vkGetFormatFromOpenGLFormat( const GLenum format, const GLenum type ) +{ + switch (type) + { + // + // 8 bits per component + // + case GL_UNSIGNED_BYTE: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R8_UNORM; + case GL_RG: return VK_FORMAT_R8G8_UNORM; + case GL_RGB: return VK_FORMAT_R8G8B8_UNORM; + case GL_BGR: return VK_FORMAT_B8G8R8_UNORM; + case GL_RGBA: return VK_FORMAT_R8G8B8A8_UNORM; + case GL_BGRA: return VK_FORMAT_B8G8R8A8_UNORM; + case GL_RED_INTEGER: return VK_FORMAT_R8_UINT; + case GL_RG_INTEGER: return VK_FORMAT_R8G8_UINT; + case GL_RGB_INTEGER: return VK_FORMAT_R8G8B8_UINT; + case GL_BGR_INTEGER: return VK_FORMAT_B8G8R8_UINT; + case GL_RGBA_INTEGER: return VK_FORMAT_R8G8B8A8_UINT; + case GL_BGRA_INTEGER: return VK_FORMAT_B8G8R8A8_UINT; + case GL_STENCIL_INDEX: return VK_FORMAT_S8_UINT; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + case GL_BYTE: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R8_SNORM; + case GL_RG: return VK_FORMAT_R8G8_SNORM; + case GL_RGB: return VK_FORMAT_R8G8B8_SNORM; + case GL_BGR: return VK_FORMAT_B8G8R8_SNORM; + case GL_RGBA: return VK_FORMAT_R8G8B8A8_SNORM; + case GL_BGRA: return VK_FORMAT_B8G8R8A8_SNORM; + case GL_RED_INTEGER: return VK_FORMAT_R8_SINT; + case GL_RG_INTEGER: return VK_FORMAT_R8G8_SINT; + case GL_RGB_INTEGER: return VK_FORMAT_R8G8B8_SINT; + case GL_BGR_INTEGER: return VK_FORMAT_B8G8R8_SINT; + case GL_RGBA_INTEGER: return VK_FORMAT_R8G8B8A8_SINT; + case GL_BGRA_INTEGER: return VK_FORMAT_B8G8R8A8_SINT; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + + // + // 16 bits per component + // + case GL_UNSIGNED_SHORT: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R16_UNORM; + case GL_RG: return VK_FORMAT_R16G16_UNORM; + case GL_RGB: return VK_FORMAT_R16G16B16_UNORM; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R16G16B16A16_UNORM; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_R16_UINT; + case GL_RG_INTEGER: return VK_FORMAT_R16G16_UINT; + case GL_RGB_INTEGER: return VK_FORMAT_R16G16B16_UINT; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_R16G16B16A16_UINT; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_D16_UNORM; + case GL_DEPTH_STENCIL: return VK_FORMAT_D16_UNORM_S8_UINT; + } + break; + } + case GL_SHORT: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R16_SNORM; + case GL_RG: return VK_FORMAT_R16G16_SNORM; + case GL_RGB: return VK_FORMAT_R16G16B16_SNORM; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R16G16B16A16_SNORM; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_R16_SINT; + case GL_RG_INTEGER: return VK_FORMAT_R16G16_SINT; + case GL_RGB_INTEGER: return VK_FORMAT_R16G16B16_SINT; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_R16G16B16A16_SINT; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + case GL_HALF_FLOAT: + case GL_HALF_FLOAT_OES: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R16_SFLOAT; + case GL_RG: return VK_FORMAT_R16G16_SFLOAT; + case GL_RGB: return VK_FORMAT_R16G16B16_SFLOAT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R16G16B16A16_SFLOAT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RG_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGB_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + + // + // 32 bits per component + // + case GL_UNSIGNED_INT: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R32_UINT; + case GL_RG: return VK_FORMAT_R32G32_UINT; + case GL_RGB: return VK_FORMAT_R32G32B32_UINT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R32G32B32A32_UINT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_R32_UINT; + case GL_RG_INTEGER: return VK_FORMAT_R32G32_UINT; + case GL_RGB_INTEGER: return VK_FORMAT_R32G32B32_UINT; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_R32G32B32A32_UINT; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_X8_D24_UNORM_PACK32; + case GL_DEPTH_STENCIL: return VK_FORMAT_D24_UNORM_S8_UINT; + } + break; + } + case GL_INT: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R32_SINT; + case GL_RG: return VK_FORMAT_R32G32_SINT; + case GL_RGB: return VK_FORMAT_R32G32B32_SINT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R32G32B32A32_SINT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_R32_SINT; + case GL_RG_INTEGER: return VK_FORMAT_R32G32_SINT; + case GL_RGB_INTEGER: return VK_FORMAT_R32G32B32_SINT; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_R32G32B32A32_SINT; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + case GL_FLOAT: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R32_SFLOAT; + case GL_RG: return VK_FORMAT_R32G32_SFLOAT; + case GL_RGB: return VK_FORMAT_R32G32B32_SFLOAT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R32G32B32A32_SFLOAT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RG_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGB_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_D32_SFLOAT; + case GL_DEPTH_STENCIL: return VK_FORMAT_D32_SFLOAT_S8_UINT; + } + break; + } + + // + // 64 bits per component + // + case GL_UNSIGNED_INT64: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R64_UINT; + case GL_RG: return VK_FORMAT_R64G64_UINT; + case GL_RGB: return VK_FORMAT_R64G64B64_UINT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R64G64B64A64_UINT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RG_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGB_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + case GL_INT64: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R64_SINT; + case GL_RG: return VK_FORMAT_R64G64_SINT; + case GL_RGB: return VK_FORMAT_R64G64B64_SINT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R64G64B64A64_SINT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_R64_SINT; + case GL_RG_INTEGER: return VK_FORMAT_R64G64_SINT; + case GL_RGB_INTEGER: return VK_FORMAT_R64G64B64_SINT; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_R64G64B64A64_SINT; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + case GL_DOUBLE: + { + switch (format) + { + case GL_RED: return VK_FORMAT_R64_SFLOAT; + case GL_RG: return VK_FORMAT_R64G64_SFLOAT; + case GL_RGB: return VK_FORMAT_R64G64B64_SFLOAT; + case GL_BGR: return VK_FORMAT_UNDEFINED; + case GL_RGBA: return VK_FORMAT_R64G64B64A64_SFLOAT; + case GL_BGRA: return VK_FORMAT_UNDEFINED; + case GL_RED_INTEGER: return VK_FORMAT_R64_SFLOAT; + case GL_RG_INTEGER: return VK_FORMAT_R64G64_SFLOAT; + case GL_RGB_INTEGER: return VK_FORMAT_R64G64B64_SFLOAT; + case GL_BGR_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_RGBA_INTEGER: return VK_FORMAT_R64G64B64A64_SFLOAT; + case GL_BGRA_INTEGER: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_STENCIL: return VK_FORMAT_UNDEFINED; + } + break; + } + + // + // Packed + // + case GL_UNSIGNED_BYTE_3_3_2: + assert( format == GL_RGB || format == GL_RGB_INTEGER ); + return VK_FORMAT_UNDEFINED; + case GL_UNSIGNED_BYTE_2_3_3_REV: + assert( format == GL_BGR || format == GL_BGR_INTEGER ); + return VK_FORMAT_UNDEFINED; + case GL_UNSIGNED_SHORT_5_6_5: + assert( format == GL_RGB || format == GL_RGB_INTEGER ); + return VK_FORMAT_R5G6B5_UNORM_PACK16; + case GL_UNSIGNED_SHORT_5_6_5_REV: + assert( format == GL_BGR || format == GL_BGR_INTEGER ); + return VK_FORMAT_B5G6R5_UNORM_PACK16; + case GL_UNSIGNED_SHORT_4_4_4_4: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return VK_FORMAT_R4G4B4A4_UNORM_PACK16; + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return VK_FORMAT_B4G4R4A4_UNORM_PACK16; + case GL_UNSIGNED_SHORT_5_5_5_1: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return VK_FORMAT_R5G5B5A1_UNORM_PACK16; + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return VK_FORMAT_A1R5G5B5_UNORM_PACK16; + case GL_UNSIGNED_INT_8_8_8_8: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return (format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER) ? VK_FORMAT_R8G8B8A8_UINT : VK_FORMAT_R8G8B8A8_UNORM; + case GL_UNSIGNED_INT_8_8_8_8_REV: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return (format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER) ? VK_FORMAT_A8B8G8R8_UINT_PACK32 : VK_FORMAT_A8B8G8R8_UNORM_PACK32; + case GL_UNSIGNED_INT_10_10_10_2: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return (format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER) ? VK_FORMAT_A2R10G10B10_UINT_PACK32 : VK_FORMAT_A2R10G10B10_UNORM_PACK32; + case GL_UNSIGNED_INT_2_10_10_10_REV: + assert( format == GL_RGB || format == GL_BGRA || format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER ); + return (format == GL_RGB_INTEGER || format == GL_BGRA_INTEGER) ? VK_FORMAT_A2B10G10R10_UINT_PACK32 : VK_FORMAT_A2B10G10R10_UNORM_PACK32; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + assert( format == GL_RGB || format == GL_BGR ); + return VK_FORMAT_B10G11R11_UFLOAT_PACK32; + case GL_UNSIGNED_INT_5_9_9_9_REV: + assert( format == GL_RGB || format == GL_BGR ); + return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; + case GL_UNSIGNED_INT_24_8: + assert( format == GL_DEPTH_STENCIL ); + return VK_FORMAT_D24_UNORM_S8_UINT; + case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: + assert( format == GL_DEPTH_STENCIL ); + return VK_FORMAT_D32_SFLOAT_S8_UINT; + } + + return VK_FORMAT_UNDEFINED; +} + +static inline VkFormat vkGetFormatFromOpenGLInternalFormat( const GLenum internalFormat ) +{ + switch (internalFormat) + { + // + // 8 bits per component + // + case GL_R8: return VK_FORMAT_R8_UNORM; // 1-component, 8-bit unsigned normalized + case GL_RG8: return VK_FORMAT_R8G8_UNORM; // 2-component, 8-bit unsigned normalized + case GL_RGB8: return VK_FORMAT_R8G8B8_UNORM; // 3-component, 8-bit unsigned normalized + case GL_RGBA8: return VK_FORMAT_R8G8B8A8_UNORM; // 4-component, 8-bit unsigned normalized + + case GL_R8_SNORM: return VK_FORMAT_R8_SNORM; // 1-component, 8-bit signed normalized + case GL_RG8_SNORM: return VK_FORMAT_R8G8_SNORM; // 2-component, 8-bit signed normalized + case GL_RGB8_SNORM: return VK_FORMAT_R8G8B8_SNORM; // 3-component, 8-bit signed normalized + case GL_RGBA8_SNORM: return VK_FORMAT_R8G8B8A8_SNORM; // 4-component, 8-bit signed normalized + + case GL_R8UI: return VK_FORMAT_R8_UINT; // 1-component, 8-bit unsigned integer + case GL_RG8UI: return VK_FORMAT_R8G8_UINT; // 2-component, 8-bit unsigned integer + case GL_RGB8UI: return VK_FORMAT_R8G8B8_UINT; // 3-component, 8-bit unsigned integer + case GL_RGBA8UI: return VK_FORMAT_R8G8B8A8_UINT; // 4-component, 8-bit unsigned integer + + case GL_R8I: return VK_FORMAT_R8_SINT; // 1-component, 8-bit signed integer + case GL_RG8I: return VK_FORMAT_R8G8_SINT; // 2-component, 8-bit signed integer + case GL_RGB8I: return VK_FORMAT_R8G8B8_SINT; // 3-component, 8-bit signed integer + case GL_RGBA8I: return VK_FORMAT_R8G8B8A8_SINT; // 4-component, 8-bit signed integer + + case GL_SR8: return VK_FORMAT_R8_SRGB; // 1-component, 8-bit sRGB + case GL_SRG8: return VK_FORMAT_R8G8_SRGB; // 2-component, 8-bit sRGB + case GL_SRGB8: return VK_FORMAT_R8G8B8_SRGB; // 3-component, 8-bit sRGB + case GL_SRGB8_ALPHA8: return VK_FORMAT_R8G8B8A8_SRGB; // 4-component, 8-bit sRGB + + // + // 16 bits per component + // + case GL_R16: return VK_FORMAT_R16_UNORM; // 1-component, 16-bit unsigned normalized + case GL_RG16: return VK_FORMAT_R16G16_UNORM; // 2-component, 16-bit unsigned normalized + case GL_RGB16: return VK_FORMAT_R16G16B16_UNORM; // 3-component, 16-bit unsigned normalized + case GL_RGBA16: return VK_FORMAT_R16G16B16A16_UNORM; // 4-component, 16-bit unsigned normalized + + case GL_R16_SNORM: return VK_FORMAT_R16_SNORM; // 1-component, 16-bit signed normalized + case GL_RG16_SNORM: return VK_FORMAT_R16G16_SNORM; // 2-component, 16-bit signed normalized + case GL_RGB16_SNORM: return VK_FORMAT_R16G16B16_SNORM; // 3-component, 16-bit signed normalized + case GL_RGBA16_SNORM: return VK_FORMAT_R16G16B16A16_SNORM; // 4-component, 16-bit signed normalized + + case GL_R16UI: return VK_FORMAT_R16_UINT; // 1-component, 16-bit unsigned integer + case GL_RG16UI: return VK_FORMAT_R16G16_UINT; // 2-component, 16-bit unsigned integer + case GL_RGB16UI: return VK_FORMAT_R16G16B16_UINT; // 3-component, 16-bit unsigned integer + case GL_RGBA16UI: return VK_FORMAT_R16G16B16A16_UINT; // 4-component, 16-bit unsigned integer + + case GL_R16I: return VK_FORMAT_R16_SINT; // 1-component, 16-bit signed integer + case GL_RG16I: return VK_FORMAT_R16G16_SINT; // 2-component, 16-bit signed integer + case GL_RGB16I: return VK_FORMAT_R16G16B16_SINT; // 3-component, 16-bit signed integer + case GL_RGBA16I: return VK_FORMAT_R16G16B16A16_SINT; // 4-component, 16-bit signed integer + + case GL_R16F: return VK_FORMAT_R16_SFLOAT; // 1-component, 16-bit floating-point + case GL_RG16F: return VK_FORMAT_R16G16_SFLOAT; // 2-component, 16-bit floating-point + case GL_RGB16F: return VK_FORMAT_R16G16B16_SFLOAT; // 3-component, 16-bit floating-point + case GL_RGBA16F: return VK_FORMAT_R16G16B16A16_SFLOAT; // 4-component, 16-bit floating-point + + // + // 32 bits per component + // + case GL_R32UI: return VK_FORMAT_R32_UINT; // 1-component, 32-bit unsigned integer + case GL_RG32UI: return VK_FORMAT_R32G32_UINT; // 2-component, 32-bit unsigned integer + case GL_RGB32UI: return VK_FORMAT_R32G32B32_UINT; // 3-component, 32-bit unsigned integer + case GL_RGBA32UI: return VK_FORMAT_R32G32B32A32_UINT; // 4-component, 32-bit unsigned integer + + case GL_R32I: return VK_FORMAT_R32_SINT; // 1-component, 32-bit signed integer + case GL_RG32I: return VK_FORMAT_R32G32_SINT; // 2-component, 32-bit signed integer + case GL_RGB32I: return VK_FORMAT_R32G32B32_SINT; // 3-component, 32-bit signed integer + case GL_RGBA32I: return VK_FORMAT_R32G32B32A32_SINT; // 4-component, 32-bit signed integer + + case GL_R32F: return VK_FORMAT_R32_SFLOAT; // 1-component, 32-bit floating-point + case GL_RG32F: return VK_FORMAT_R32G32_SFLOAT; // 2-component, 32-bit floating-point + case GL_RGB32F: return VK_FORMAT_R32G32B32_SFLOAT; // 3-component, 32-bit floating-point + case GL_RGBA32F: return VK_FORMAT_R32G32B32A32_SFLOAT; // 4-component, 32-bit floating-point + + // + // Packed + // + case GL_R3_G3_B2: return VK_FORMAT_UNDEFINED; // 3-component 3:3:2, unsigned normalized + case GL_RGB4: return VK_FORMAT_UNDEFINED; // 3-component 4:4:4, unsigned normalized + case GL_RGB5: return VK_FORMAT_R5G5B5A1_UNORM_PACK16; // 3-component 5:5:5, unsigned normalized + case GL_RGB565: return VK_FORMAT_R5G6B5_UNORM_PACK16; // 3-component 5:6:5, unsigned normalized + case GL_RGB10: return VK_FORMAT_A2R10G10B10_UNORM_PACK32; // 3-component 10:10:10, unsigned normalized + case GL_RGB12: return VK_FORMAT_UNDEFINED; // 3-component 12:12:12, unsigned normalized + case GL_RGBA2: return VK_FORMAT_UNDEFINED; // 4-component 2:2:2:2, unsigned normalized + case GL_RGBA4: return VK_FORMAT_R4G4B4A4_UNORM_PACK16; // 4-component 4:4:4:4, unsigned normalized + case GL_RGBA12: return VK_FORMAT_UNDEFINED; // 4-component 12:12:12:12, unsigned normalized + case GL_RGB5_A1: return VK_FORMAT_A1R5G5B5_UNORM_PACK16; // 4-component 5:5:5:1, unsigned normalized + case GL_RGB10_A2: return VK_FORMAT_A2R10G10B10_UNORM_PACK32; // 4-component 10:10:10:2, unsigned normalized + case GL_RGB10_A2UI: return VK_FORMAT_A2R10G10B10_UINT_PACK32; // 4-component 10:10:10:2, unsigned integer + case GL_R11F_G11F_B10F: return VK_FORMAT_B10G11R11_UFLOAT_PACK32; // 3-component 11:11:10, floating-point + case GL_RGB9_E5: return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; // 3-component/exp 9:9:9/5, floating-point + + // + // S3TC/DXT/BC + // + + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: return VK_FORMAT_BC1_RGB_UNORM_BLOCK; // line through 3D space, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return VK_FORMAT_BC1_RGBA_UNORM_BLOCK; // line through 3D space plus 1-bit alpha, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: return VK_FORMAT_BC2_UNORM_BLOCK; // line through 3D space plus line through 1D space, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: return VK_FORMAT_BC3_UNORM_BLOCK; // line through 3D space plus 4-bit alpha, 4x4 blocks, unsigned normalized + + case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: return VK_FORMAT_BC1_RGB_SRGB_BLOCK; // line through 3D space, 4x4 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: return VK_FORMAT_BC1_RGBA_SRGB_BLOCK; // line through 3D space plus 1-bit alpha, 4x4 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: return VK_FORMAT_BC2_SRGB_BLOCK; // line through 3D space plus line through 1D space, 4x4 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: return VK_FORMAT_BC3_SRGB_BLOCK; // line through 3D space plus 4-bit alpha, 4x4 blocks, sRGB + + case GL_COMPRESSED_LUMINANCE_LATC1_EXT: return VK_FORMAT_BC4_UNORM_BLOCK; // line through 1D space, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: return VK_FORMAT_BC5_UNORM_BLOCK; // two lines through 1D space, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: return VK_FORMAT_BC4_SNORM_BLOCK; // line through 1D space, 4x4 blocks, signed normalized + case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: return VK_FORMAT_BC5_SNORM_BLOCK; // two lines through 1D space, 4x4 blocks, signed normalized + + case GL_COMPRESSED_RED_RGTC1: return VK_FORMAT_BC4_UNORM_BLOCK; // line through 1D space, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RG_RGTC2: return VK_FORMAT_BC5_UNORM_BLOCK; // two lines through 1D space, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_SIGNED_RED_RGTC1: return VK_FORMAT_BC4_SNORM_BLOCK; // line through 1D space, 4x4 blocks, signed normalized + case GL_COMPRESSED_SIGNED_RG_RGTC2: return VK_FORMAT_BC5_SNORM_BLOCK; // two lines through 1D space, 4x4 blocks, signed normalized + + case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: return VK_FORMAT_BC6H_UFLOAT_BLOCK; // 3-component, 4x4 blocks, unsigned floating-point + case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: return VK_FORMAT_BC6H_SFLOAT_BLOCK; // 3-component, 4x4 blocks, signed floating-point + case GL_COMPRESSED_RGBA_BPTC_UNORM: return VK_FORMAT_BC7_UNORM_BLOCK; // 4-component, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: return VK_FORMAT_BC7_SRGB_BLOCK; // 4-component, 4x4 blocks, sRGB + + // + // ETC + // + case GL_ETC1_RGB8_OES: return VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; // 3-component ETC1, 4x4 blocks, unsigned normalized + + case GL_COMPRESSED_RGB8_ETC2: return VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; // 3-component ETC2, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: return VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK; // 4-component ETC2 with 1-bit alpha, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA8_ETC2_EAC: return VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK; // 4-component ETC2, 4x4 blocks, unsigned normalized + + case GL_COMPRESSED_SRGB8_ETC2: return VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK; // 3-component ETC2, 4x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: return VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK; // 4-component ETC2 with 1-bit alpha, 4x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: return VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK; // 4-component ETC2, 4x4 blocks, sRGB + + case GL_COMPRESSED_R11_EAC: return VK_FORMAT_EAC_R11_UNORM_BLOCK; // 1-component ETC, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RG11_EAC: return VK_FORMAT_EAC_R11G11_UNORM_BLOCK; // 2-component ETC, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_SIGNED_R11_EAC: return VK_FORMAT_EAC_R11_SNORM_BLOCK; // 1-component ETC, 4x4 blocks, signed normalized + case GL_COMPRESSED_SIGNED_RG11_EAC: return VK_FORMAT_EAC_R11G11_SNORM_BLOCK; // 2-component ETC, 4x4 blocks, signed normalized + + // + // PVRTC + // + case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG: return VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG; // 3-component PVRTC, 16x8 blocks, unsigned normalized + case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: return VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG; // 3-component PVRTC, 8x8 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: return VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG; // 4-component PVRTC, 16x8 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: return VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG; // 4-component PVRTC, 8x8 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG: return VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG; // 4-component PVRTC, 8x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG: return VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG; // 4-component PVRTC, 4x4 blocks, unsigned normalized + + case GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT: return VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG; // 3-component PVRTC, 16x8 blocks, sRGB + case GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT: return VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG; // 3-component PVRTC, 8x8 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT: return VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG; // 4-component PVRTC, 16x8 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT: return VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG; // 4-component PVRTC, 8x8 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG: return VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG; // 4-component PVRTC, 8x4 blocks, sRGB + case GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG: return VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG; // 4-component PVRTC, 4x4 blocks, sRGB + + // + // ASTC + // + case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: return VK_FORMAT_ASTC_4x4_UNORM_BLOCK; // 4-component ASTC, 4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: return VK_FORMAT_ASTC_5x4_UNORM_BLOCK; // 4-component ASTC, 5x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_5x5_KHR: return VK_FORMAT_ASTC_5x5_UNORM_BLOCK; // 4-component ASTC, 5x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_6x5_KHR: return VK_FORMAT_ASTC_6x5_UNORM_BLOCK; // 4-component ASTC, 6x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_6x6_KHR: return VK_FORMAT_ASTC_6x6_UNORM_BLOCK; // 4-component ASTC, 6x6 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_8x5_KHR: return VK_FORMAT_ASTC_8x5_UNORM_BLOCK; // 4-component ASTC, 8x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_8x6_KHR: return VK_FORMAT_ASTC_8x6_UNORM_BLOCK; // 4-component ASTC, 8x6 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_8x8_KHR: return VK_FORMAT_ASTC_8x8_UNORM_BLOCK; // 4-component ASTC, 8x8 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_10x5_KHR: return VK_FORMAT_ASTC_10x5_UNORM_BLOCK; // 4-component ASTC, 10x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_10x6_KHR: return VK_FORMAT_ASTC_10x6_UNORM_BLOCK; // 4-component ASTC, 10x6 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_10x8_KHR: return VK_FORMAT_ASTC_10x8_UNORM_BLOCK; // 4-component ASTC, 10x8 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_10x10_KHR: return VK_FORMAT_ASTC_10x10_UNORM_BLOCK; // 4-component ASTC, 10x10 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_12x10_KHR: return VK_FORMAT_ASTC_12x10_UNORM_BLOCK; // 4-component ASTC, 12x10 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_12x12_KHR: return VK_FORMAT_ASTC_12x12_UNORM_BLOCK; // 4-component ASTC, 12x12 blocks, unsigned normalized + + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: return VK_FORMAT_ASTC_4x4_SRGB_BLOCK; // 4-component ASTC, 4x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: return VK_FORMAT_ASTC_5x4_SRGB_BLOCK; // 4-component ASTC, 5x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: return VK_FORMAT_ASTC_5x5_SRGB_BLOCK; // 4-component ASTC, 5x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: return VK_FORMAT_ASTC_6x5_SRGB_BLOCK; // 4-component ASTC, 6x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: return VK_FORMAT_ASTC_6x6_SRGB_BLOCK; // 4-component ASTC, 6x6 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: return VK_FORMAT_ASTC_8x5_SRGB_BLOCK; // 4-component ASTC, 8x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: return VK_FORMAT_ASTC_8x6_SRGB_BLOCK; // 4-component ASTC, 8x6 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: return VK_FORMAT_ASTC_8x8_SRGB_BLOCK; // 4-component ASTC, 8x8 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: return VK_FORMAT_ASTC_10x5_SRGB_BLOCK; // 4-component ASTC, 10x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: return VK_FORMAT_ASTC_10x6_SRGB_BLOCK; // 4-component ASTC, 10x6 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: return VK_FORMAT_ASTC_10x8_SRGB_BLOCK; // 4-component ASTC, 10x8 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: return VK_FORMAT_ASTC_10x10_SRGB_BLOCK; // 4-component ASTC, 10x10 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: return VK_FORMAT_ASTC_12x10_SRGB_BLOCK; // 4-component ASTC, 12x10 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: return VK_FORMAT_ASTC_12x12_SRGB_BLOCK; // 4-component ASTC, 12x12 blocks, sRGB + + case GL_COMPRESSED_RGBA_ASTC_3x3x3_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 3x3x3 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_4x3x3_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 4x3x3 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_4x4x3_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 4x4x3 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_4x4x4_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 4x4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_5x4x4_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 5x4x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_5x5x4_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 5x5x4 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_5x5x5_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 5x5x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_6x5x5_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 6x5x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_6x6x5_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 6x6x5 blocks, unsigned normalized + case GL_COMPRESSED_RGBA_ASTC_6x6x6_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 6x6x6 blocks, unsigned normalized + + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 3x3x3 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 4x3x3 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 4x4x3 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 4x4x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 5x4x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 5x5x4 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 5x5x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 6x5x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 6x6x5 blocks, sRGB + case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES: return VK_FORMAT_UNDEFINED; // 4-component ASTC, 6x6x6 blocks, sRGB + + // + // ATC + // + case GL_ATC_RGB_AMD: return VK_FORMAT_UNDEFINED; // 3-component, 4x4 blocks, unsigned normalized + case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD: return VK_FORMAT_UNDEFINED; // 4-component, 4x4 blocks, unsigned normalized + case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD: return VK_FORMAT_UNDEFINED; // 4-component, 4x4 blocks, unsigned normalized + + // + // Palletized + // + case GL_PALETTE4_RGB8_OES: return VK_FORMAT_UNDEFINED; // 3-component 8:8:8, 4-bit palette, unsigned normalized + case GL_PALETTE4_RGBA8_OES: return VK_FORMAT_UNDEFINED; // 4-component 8:8:8:8, 4-bit palette, unsigned normalized + case GL_PALETTE4_R5_G6_B5_OES: return VK_FORMAT_UNDEFINED; // 3-component 5:6:5, 4-bit palette, unsigned normalized + case GL_PALETTE4_RGBA4_OES: return VK_FORMAT_UNDEFINED; // 4-component 4:4:4:4, 4-bit palette, unsigned normalized + case GL_PALETTE4_RGB5_A1_OES: return VK_FORMAT_UNDEFINED; // 4-component 5:5:5:1, 4-bit palette, unsigned normalized + case GL_PALETTE8_RGB8_OES: return VK_FORMAT_UNDEFINED; // 3-component 8:8:8, 8-bit palette, unsigned normalized + case GL_PALETTE8_RGBA8_OES: return VK_FORMAT_UNDEFINED; // 4-component 8:8:8:8, 8-bit palette, unsigned normalized + case GL_PALETTE8_R5_G6_B5_OES: return VK_FORMAT_UNDEFINED; // 3-component 5:6:5, 8-bit palette, unsigned normalized + case GL_PALETTE8_RGBA4_OES: return VK_FORMAT_UNDEFINED; // 4-component 4:4:4:4, 8-bit palette, unsigned normalized + case GL_PALETTE8_RGB5_A1_OES: return VK_FORMAT_UNDEFINED; // 4-component 5:5:5:1, 8-bit palette, unsigned normalized + + // + // Depth/stencil + // + case GL_DEPTH_COMPONENT16: return VK_FORMAT_D16_UNORM; + case GL_DEPTH_COMPONENT24: return VK_FORMAT_X8_D24_UNORM_PACK32; + case GL_DEPTH_COMPONENT32: return VK_FORMAT_UNDEFINED; + case GL_DEPTH_COMPONENT32F: return VK_FORMAT_D32_SFLOAT; + case GL_DEPTH_COMPONENT32F_NV: return VK_FORMAT_D32_SFLOAT; + case GL_STENCIL_INDEX1: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX4: return VK_FORMAT_UNDEFINED; + case GL_STENCIL_INDEX8: return VK_FORMAT_S8_UINT; + case GL_STENCIL_INDEX16: return VK_FORMAT_UNDEFINED; + case GL_DEPTH24_STENCIL8: return VK_FORMAT_D24_UNORM_S8_UINT; + case GL_DEPTH32F_STENCIL8: return VK_FORMAT_D32_SFLOAT_S8_UINT; + case GL_DEPTH32F_STENCIL8_NV: return VK_FORMAT_D32_SFLOAT_S8_UINT; + + default: return VK_FORMAT_UNDEFINED; + } +} + + + +VkFormat +ktxTexture1_GetVkFormat( ktxTexture1* This ) +{ + VkFormat vkFormat; + + vkFormat = vkGetFormatFromOpenGLInternalFormat( This->glInternalformat ); + if (vkFormat == VK_FORMAT_UNDEFINED) { + vkFormat = vkGetFormatFromOpenGLFormat( This->glFormat, + This->glType ); + } + return vkFormat; +} + +//----------------------------------------------------------------------------- +TextureFormat VkToTextureFormat( VkFormat f ) +//----------------------------------------------------------------------------- +{ + // Use the fact we have ensured the TextureFormats are sorted with respect to the values of VkFormat, so we can binary search. + auto foundIt = std::lower_bound( std::begin( sTextureFormatToVk ), std::end( sTextureFormatToVk ), f ); + if (foundIt != std::end( sTextureFormatToVk ) && *foundIt == f) + return TextureFormat( std::distance( std::begin( sTextureFormatToVk ), foundIt ) ); + return TextureFormat::UNDEFINED; +} + +//----------------------------------------------------------------------------- +VkFormat ktxTexture2_GetVkFormat( ktxTexture2* This ) +//----------------------------------------------------------------------------- +{ + return (VkFormat) This->vkFormat; +} + +//----------------------------------------------------------------------------- +VkFormat ktxTexture_GetVkFormat( ktxTexture* This ) +//----------------------------------------------------------------------------- +{ + if (This->classId == ktxTexture2_c) + return (VkFormat) ktxTexture2_GetVkFormat( (ktxTexture2*)This ); + else + return (VkFormat) ktxTexture1_GetVkFormat( (ktxTexture1*)This ); +} + +//----------------------------------------------------------------------------- +TextureFormat ktxTexture_GetTextureFormat( ktxTexture* This ) +//----------------------------------------------------------------------------- +{ + return VkToTextureFormat( ktxTexture_GetVkFormat( This ) ); +} + +//----------------------------------------------------------------------------- +TextureDx12 TextureKtx::LoadKtx(Dx12& graphicsApi, const TextureKtxFileWrapper& fileData, Sampler sampler) +//----------------------------------------------------------------------------- +{ + auto* const pKtxData = GetKtxTexture(fileData); + if (!pKtxData) + return {}; + TextureFormat textureFormat = TextureFormat::UNDEFINED; + if (ktxTexture_NeedsTranscoding(pKtxData) && pKtxData->classId == class_id::ktxTexture2_c) + { + auto pKtx2Data = (ktxTexture2* const)pKtxData; + if (KTX_SUCCESS != ktxTexture2_TranscodeBasis(pKtx2Data, KTX_TTF_RGBA32, (ktx_transcode_flag_bits_e)0)) + { + return {}; + } + + textureFormat = TextureFormat::R8G8B8A8_UNORM; + } + else + { + textureFormat = ktxTexture_GetTextureFormat( pKtxData ); + ktxTexture_LoadImageData(pKtxData, nullptr, 0); + } + + auto& memoryManager = graphicsApi.GetMemoryManager(); + //bool Buffer::Initialize(MemoryManager * pManager, size_t size, BufferUsageFlags bufferUsageFlags, MemoryUsage memoryUsage) + + auto dimension = D3D12_RESOURCE_DIMENSION_TEXTURE1D; + switch (pKtxData->numDimensions) { + case 2: + dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; + break; + case 3: + dimension = D3D12_RESOURCE_DIMENSION_TEXTURE3D; + break; + default: break; + } + const uint8_t* pSrcData = ktxTexture_GetData(pKtxData); + + bool rgbTorgba = false; + switch (textureFormat) { + case TextureFormat::R8G8B8_UNORM: + case TextureFormat::R8G8B8_SNORM: + case TextureFormat::R8G8B8_USCALED: + case TextureFormat::R8G8B8_SSCALED: + case TextureFormat::R8G8B8_UINT: + case TextureFormat::R8G8B8_SINT: + case TextureFormat::R8G8B8_SRGB: + case TextureFormat::B8G8R8_UNORM: + case TextureFormat::B8G8R8_SNORM: + case TextureFormat::B8G8R8_USCALED: + case TextureFormat::B8G8R8_SSCALED: + case TextureFormat::B8G8R8_UINT: + case TextureFormat::B8G8R8_SINT: + case TextureFormat::B8G8R8_SRGB: + static_assert(uint32_t( TextureFormat::R8G8B8A8_UNORM ) == uint32_t( TextureFormat::R8G8B8_UNORM ) + 14); + static_assert(uint32_t( TextureFormat::R8G8B8A8_SNORM ) == uint32_t( TextureFormat::R8G8B8_SNORM ) + 14); + static_assert(uint32_t( TextureFormat::R8G8B8A8_USCALED ) == uint32_t( TextureFormat::R8G8B8_USCALED ) + 14); + static_assert(uint32_t( TextureFormat::R8G8B8A8_SSCALED ) == uint32_t( TextureFormat::R8G8B8_SSCALED ) + 14); + static_assert(uint32_t( TextureFormat::R8G8B8A8_UINT ) == uint32_t( TextureFormat::R8G8B8_UINT ) + 14); + static_assert(uint32_t( TextureFormat::R8G8B8A8_SINT ) == uint32_t( TextureFormat::R8G8B8_SINT ) + 14); + static_assert(uint32_t( TextureFormat::R8G8B8A8_SRGB ) == uint32_t( TextureFormat::R8G8B8_SRGB ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_UNORM ) == uint32_t( TextureFormat::B8G8R8_UNORM ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_SNORM ) == uint32_t( TextureFormat::B8G8R8_SNORM ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_USCALED ) == uint32_t( TextureFormat::B8G8R8_USCALED ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_SSCALED ) == uint32_t( TextureFormat::B8G8R8_SSCALED ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_UINT ) == uint32_t( TextureFormat::B8G8R8_UINT ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_SINT ) == uint32_t( TextureFormat::B8G8R8_SINT ) + 14); + static_assert(uint32_t( TextureFormat::B8G8R8A8_SRGB ) == uint32_t( TextureFormat::B8G8R8_SRGB ) + 14); + textureFormat = TextureFormat( uint32_t( textureFormat ) + 14 ); + rgbTorgba = true; + break; + default: + break; + } + + const DXGI_FORMAT dxgiFormat = TextureFormatToDx( textureFormat ); + const D3D12_RESOURCE_DESC textureDesc = { .Dimension = dimension, + .Alignment = 0, + .Width = pKtxData->baseWidth, + .Height = pKtxData->baseHeight, + .DepthOrArraySize = (UINT16) pKtxData->baseDepth, + .MipLevels = (uint16_t)pKtxData->numLevels, + .Format = dxgiFormat, + .SampleDesc = {.Count = 1, .Quality = 0 }, + .Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN, + .Flags = D3D12_RESOURCE_FLAG_NONE + }; + + D3D12_CLEAR_VALUE clearColor{}; + auto gpuBuffer = memoryManager.CreateImage(textureDesc, MemoryUsage::GpuExclusive, D3D12_RESOURCE_STATE_COPY_DEST, clearColor); + + { + const size_t numSubresources = textureDesc.DepthOrArraySize * textureDesc.MipLevels; + auto gpuBufferDesc = gpuBuffer.GetResource()->GetDesc(); + std::vector resourceLayouts; + resourceLayouts.resize(numSubresources); + size_t resourceDataSize = 0; + graphicsApi.GetDevice()->GetCopyableFootprints(&gpuBufferDesc, 0/*startSubresource*/, numSubresources, 0, resourceLayouts.data(), nullptr, nullptr, &resourceDataSize); + + //auto stagingBuffer = memoryManager.CreateImage(textureDesc, MemoryUsage::CpuToGpu, D3D12_RESOURCE_STATE_COPY_SOURCE); + auto stagingBuffer = memoryManager.CreateBuffer(resourceDataSize, BufferUsageFlags::TransferSrc, MemoryUsage::CpuToGpu); + { + assert( pKtxData->dataSize <= resourceDataSize ); + auto stagingCpu = memoryManager.Map( stagingBuffer ); + + for (size_t mip = 0; mip < pKtxData->numLevels; ++mip) + { + ktx_size_t srcOffset = 0; + ktxTexture_GetImageOffset(pKtxData, mip, 0/*layer*/, 0/*faceSlice*/, &srcOffset); + auto* pSrc = pSrcData + srcOffset; + + auto pDestMip = stagingCpu.data() + resourceLayouts[mip].Offset; + auto pitch = resourceLayouts[mip].Footprint.RowPitch; + auto mipWidth = resourceLayouts[mip].Footprint.Width; + auto mipHeight = resourceLayouts[mip].Footprint.Height; + auto mipDepth = resourceLayouts[mip].Footprint.Depth; + + auto srcPitch = WidthToPitch(dxgiFormat, mipWidth); + + uint32_t slicePitch = pitch * mipHeight; + for (size_t z = 0; z < mipDepth; ++z) + { + auto pDest = pDestMip + slicePitch * z; + { + for (auto y = 0; y < mipHeight; ++y) + { + if (rgbTorgba) + { + auto pS = pSrc; + auto pD = pDest; + for (auto x = 0; x < mipWidth; ++x) + { + *pD++ = *pS++; + *pD++ = *pS++; + *pD++ = *pS++; + *pD++ = 255; // fill alpha + } + } + else + memcpy(pDest, pSrc, pitch/*we may only want to copy the actual width (in bytes), for now copy the entire pitch*/); + pDest += pitch; + pSrc += srcPitch; + } + } + } + } + memoryManager.Unmap(stagingBuffer, std::move(stagingCpu)); + } + ID3D12GraphicsCommandList* cmdList = graphicsApi.StartSetupCommandBuffer(); + assert(cmdList); + + for(UINT subResourceIdx = 0; subResourceIdx < numSubresources; ++subResourceIdx) + { + const D3D12_TEXTURE_COPY_LOCATION gpuDest{ .pResource = gpuBuffer.GetResource(), + .Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX, + .SubresourceIndex = subResourceIdx + }; + const D3D12_TEXTURE_COPY_LOCATION stagingSrc{ .pResource = stagingBuffer.GetResource(), + .Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT, + .PlacedFootprint = resourceLayouts[subResourceIdx] + }; + cmdList->CopyTextureRegion(&gpuDest, 0, 0, 0, &stagingSrc, nullptr); + } + //cmdList->CopyResource(gpuBuffer.GetResource(), stagingBuffer.GetResource()); + graphicsApi.FinishSetupCommandBuffer(cmdList); + + memoryManager.Destroy(std::move(stagingBuffer)); + } + + // Return the fully formed texture object + return TextureDx12{ (uint32_t)textureDesc.Width, textureDesc.Height, (uint32_t)textureDesc.DepthOrArraySize, (uint32_t)textureDesc.MipLevels, textureFormat, textureDesc.Layout, std::move(gpuBuffer)/*, sampler*/}; +} + +TextureDx12 TextureKtx::LoadKtx(Dx12& graphicsApi, AssetManager& assetManager, const char* const pFileName, Sampler sampler) +{ + auto ktxData = LoadFile(assetManager, pFileName); + if (!ktxData) + return {}; + return LoadKtx(graphicsApi, ktxData, sampler); +} + +TextureKtxFileWrapper TextureKtx::Transcode(TextureKtxFileWrapper&& fileData) +{ + auto* const pKtxData = GetKtxTexture(fileData); + if (pKtxData != nullptr && ktxTexture_NeedsTranscoding(pKtxData) && pKtxData->classId == class_id::ktxTexture2_c) + { + auto pKtx2Data = (ktxTexture2* const)pKtxData; + if (KTX_SUCCESS != ktxTexture2_TranscodeBasis(pKtx2Data, KTX_TTF_RGBA32, (ktx_transcode_flag_bits_e)0)) + { + return {}; + } + } + return std::move(fileData); +} + +static uint32_t WidthToPitch( DXGI_FORMAT dxgiFormat, uint32_t width ) +{ + return Dx12::FormatBytesPerPixel( dxgiFormat ) * width; +} + +static uint32_t AreaToBytes( DXGI_FORMAT dxgiFormat, uint32_t width, uint32_t height ) +{ + return WidthToPitch( dxgiFormat, width) * height; +} + diff --git a/framework/code/texture/dx12/loaderKtx.hpp b/framework/code/texture/dx12/loaderKtx.hpp new file mode 100644 index 0000000..3e021e0 --- /dev/null +++ b/framework/code/texture/dx12/loaderKtx.hpp @@ -0,0 +1,82 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +/// +/// KTX image file loading for Dx12 +/// + +#include "../loaderKtx.hpp" +#include "memory/dx12/memoryMapped.hpp" +#include +#include +#include + +// Forward declarations +class GraphicsApiBase; + +struct ktxTexture; +class Dx12; +template class Texture; +template class Sampler; + + +/// @brief Class to handle loading KTX textures in to Vulkan memory +/// Generally applications will want a singleton of this class. +template<> +class TextureKtx : public TextureKtxBase +{ + TextureKtx(const TextureKtx&) = delete; + TextureKtx& operator=(const TextureKtx&) = delete; +public: + TextureKtx(Dx12&) noexcept; + ~TextureKtx() noexcept override; + + /// @brief Initialize this loader class + /// @return true on success + bool Initialize() override; + + /// @brief Release (de-initialize) back to a clean (initializable) state + void Release() override; + + /// @brief Do the necessary upload etc to go from a cpu texture representation to Vulkan format + /// @param textureFile ktx file data we want to load as a vulkan texture + /// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) + /// @returns a &TextureDx12, will be empty on failure + Texture LoadKtx(Dx12& dx12, const TextureKtxFileWrapper& textureFile, Sampler sampler); + + /// @brief Load a ktx file and do the necessary upload etc to go from a cpu texture representation to Vulkan format + /// @param filename of ktx (or ktx2) format file we want to load as a vulkan texture + /// @param sampler sampler that loaded texture will take OWNERSHIP of, may be VK_NULL_HANDLE (in which case LoadKtx creates an appropriate sampler) + /// @returns a &TextureDx12, will be empty on failure + Texture LoadKtx(Dx12& dx12, AssetManager& assetManager, const char* const pFileName, Sampler sampler); + + /// @brief Run the Ktx2 transcoding step (if needed) + /// Will do nothing for textures that do not need transcoding. + /// Performance will depend on ktx2 texture size and intermediate encoding format. + /// @param fileData ktx file data loaded by TextureKtxBase::LoadData or similar. + /// @return transcoded Ktx texture. + TextureKtxFileWrapper Transcode(TextureKtxFileWrapper&& fileData); + +protected: + Dx12& m_Dx12; +}; + + +///// @brief Function specialization +//template<> +//Texture TextureKtxBase::LoadKtx( Dx12& vulkan, const TextureKtxFileWrapper& textureFile, const Sampler& sampler ) +//{ +// return apiCast( this )->LoadKtx( vulkan, textureFile, sampler ); +//} +// +///// @brief Function specialization +//template<> +//Texture TextureKtxBase::LoadKtx( Dx12& vulkan, AssetManager& assetManager, const char* const pFileName, const Sampler& sampler ) +//{ +// return apiCast( this )->LoadKtx( vulkan, assetManager, pFileName, sampler ); +//} diff --git a/framework/code/texture/dx12/sampler.cpp b/framework/code/texture/dx12/sampler.cpp new file mode 100644 index 0000000..f325467 --- /dev/null +++ b/framework/code/texture/dx12/sampler.cpp @@ -0,0 +1,68 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "sampler.hpp" + + +constexpr D3D12_FILTER EnumToDx12( SamplerFilter s ) { + assert(s != SamplerFilter::Undefined && s <= SamplerFilter::Anisotropic); + if (s <= SamplerFilter::Linear) + return D3D12_FILTER( int( s ) - 1 ); + return D3D12_FILTER_ANISOTROPIC; +} +static_assert(D3D12_FILTER_MIN_MAG_MIP_POINT == int(SamplerFilter::Nearest) - 1); +static_assert(D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR == int(SamplerFilter::Linear) - 1); + +constexpr D3D12_TEXTURE_ADDRESS_MODE EnumToDx12(SamplerAddressMode s) { return D3D12_TEXTURE_ADDRESS_MODE(int(s) + 1); } +static_assert(D3D12_TEXTURE_ADDRESS_MODE_WRAP == int(SamplerAddressMode::Repeat)); +static_assert(D3D12_TEXTURE_ADDRESS_MODE_MIRROR == int(SamplerAddressMode::MirroredRepeat)); +static_assert(D3D12_TEXTURE_ADDRESS_MODE_CLAMP == int(SamplerAddressMode::ClampEdge)); +static_assert(D3D12_TEXTURE_ADDRESS_MODE_BORDER == int(SamplerAddressMode::ClampBorder)); +static_assert(D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE == int(SamplerAddressMode::MirroredClampEdge)); + + +//----------------------------------------------------------------------------- +// Implementation of template function specialization +template<> +Sampler CreateSampler(Dx12& dx12, const CreateSamplerObjectInfo& createInfo) +//----------------------------------------------------------------------------- +{ + return Sampler{ StructToDx12( createInfo ) }; +} + +//----------------------------------------------------------------------------- +D3D12_SAMPLER_DESC StructToDx12( const CreateSamplerObjectInfo& createInfo ) +//----------------------------------------------------------------------------- +{ + const D3D12_TEXTURE_ADDRESS_MODE SamplerModeDx12 = EnumToDx12( createInfo.Mode ); + D3D12_SAMPLER_DESC samplerDesc{ + .Filter = EnumToDx12( createInfo.Filter ), + .AddressU = SamplerModeDx12, + .AddressV = SamplerModeDx12, + .AddressW = SamplerModeDx12, + .MipLODBias = createInfo.MipBias, + .MaxAnisotropy = std::max( (UINT)1, (UINT)createInfo.Anisotropy ), + .ComparisonFunc = D3D12_COMPARISON_FUNC_ALWAYS, + .BorderColor = {}, + .MinLOD = createInfo.MinLod, + .MaxLOD = createInfo.MaxLod + }; + switch (createInfo.BorderColor) { + case SamplerBorderColor::TransparentBlackFloat: + case SamplerBorderColor::TransparentBlackInt: + break; + case SamplerBorderColor::OpaqueBlackFloat: + case SamplerBorderColor::OpaqueBlackInt: + samplerDesc.BorderColor[3] = 1.0f; + break; + case SamplerBorderColor::OpaqueWhiteFloat: + case SamplerBorderColor::OpaqueWhiteInt: + std::fill( std::begin( samplerDesc.BorderColor ), std::end( samplerDesc.BorderColor ), 1.0f ); + break; + } + return samplerDesc; +} diff --git a/framework/code/texture/dx12/sampler.hpp b/framework/code/texture/dx12/sampler.hpp new file mode 100644 index 0000000..e2a5e40 --- /dev/null +++ b/framework/code/texture/dx12/sampler.hpp @@ -0,0 +1,43 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "../sampler.hpp" +#define NOMINMAX +#include + +// Forward declarations +class Dx12; +struct D3D12_SAMPLER_DESC; + +using SamplerDx12 = Sampler; + +D3D12_SAMPLER_DESC StructToDx12( const CreateSamplerObjectInfo& createInfo ); + + +/// @brief Template specialization of sampler container for Dx12 graphics api. +template<> +class Sampler final : public SamplerBase +{ +public: + Sampler() noexcept {}; + Sampler(const Sampler& src) noexcept : m_SamplerDesc(src.m_SamplerDesc) {}; + Sampler(const D3D12_SAMPLER_DESC& desc) noexcept : m_SamplerDesc(desc) {}; + Sampler& operator=(const Sampler& src) noexcept { + if (this != &src) + m_SamplerDesc = src.m_SamplerDesc; + return *this; + } + const auto& GetDesc() const { return m_SamplerDesc; } +private: + D3D12_SAMPLER_DESC m_SamplerDesc{}; +}; + + +/// Template specialization for Dx12 CreateSampler +template<> +Sampler CreateSampler( Dx12&, const CreateSamplerObjectInfo& ); diff --git a/framework/code/texture/dx12/texture.cpp b/framework/code/texture/dx12/texture.cpp new file mode 100644 index 0000000..0f610f1 --- /dev/null +++ b/framework/code/texture/dx12/texture.cpp @@ -0,0 +1,428 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "memory/dx12/memoryMapped.hpp" +#include "texture.hpp" +#include "dx12/dx12.hpp" +#include "system/os_common.h" +#include + + +Texture::Texture() noexcept : TextureBase() +{} + +Texture::Texture(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, TextureFormat format, D3D12_TEXTURE_LAYOUT textureLayout, MemoryAllocatedBuffer resourceBuffer/*, const Sampler& sampler*/ ) noexcept + : TextureBase() + , Width(width) + , Height(height) + , Depth(depth) + , MipLevels(mipLevels) + , Format(format) + , TextureLayout(textureLayout) + , MemoryBuffer(std::move(resourceBuffer)) +// , Sampler(sampler) +{ + ResourceViewDesc = { + .Format = TextureFormatToDx(format), + .ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D, + .Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING, + .Texture2D { + .MostDetailedMip = 0, + .MipLevels = mipLevels + } }; +} + +// +// Constructors/move-operators for Texture. +// Ensures we are not leaking owned members. +// +Texture::Texture(Texture&& other) noexcept +{ + *this = std::move(other); +} +Texture& Texture::operator=(Texture&& other) noexcept +{ + if (this != &other) + { + // Some of the data can be copied and is ok to leave 'other' alone (move operator just has to ensure the 'other' is in a valid state and can be safely deleted) + Width = other.Width; + Height = other.Height; + Depth = other.Depth; + MipLevels = other.MipLevels; + FirstMip = other.FirstMip; + Format = other.Format; + TextureLayout = other.TextureLayout; + ResourceViewDesc = other.ResourceViewDesc; + // Actually transfer ownership from 'other' + MemoryBuffer = std::move(other.MemoryBuffer); +// Sampler = other.Sampler; +// other.Sampler = {}; + } + return *this; +} + +Texture::~Texture() noexcept +{ + // Asserts to ensure we called ReleaseTexture on this already. + assert(IsEmpty()); +} + +void Texture::Release(GraphicsApiBase* pGraphicsApi) +{ + auto* pDx12 = static_cast(pGraphicsApi); + + //Sampler = {}; + + if (MemoryBuffer) + pDx12->GetMemoryManager().Destroy(std::move(MemoryBuffer)); +} + +bool Texture::IsEmpty() const +{ + return !MemoryBuffer; +} + +constexpr UINT EnumToDx12( Msaa m ) { return UINT( m ); } + + +//----------------------------------------------------------------------------- +// Implementation of template function specialization +template<> +Texture CreateTextureObject( Dx12& dx12, const CreateTexObjectInfo& texInfo, MemoryPool* pPool ) +//----------------------------------------------------------------------------- +{ + assert( pPool == nullptr );//Needs implementing if used + + if (texInfo.pName == nullptr) + LOGI( "CreateTextureObject (%dx%d): ", texInfo.uiWidth, texInfo.uiHeight ); + else + LOGI( "CreateTextureObject (%dx%d): %s", texInfo.uiWidth, texInfo.uiHeight, texInfo.pName ); + + D3D12_TEXTURE_LAYOUT imageLayout = D3D12_TEXTURE_LAYOUT_UNKNOWN; + D3D12_RESOURCE_FLAGS resourceFlags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; + D3D12_RESOURCE_STATES resourceState = D3D12_RESOURCE_STATE_RENDER_TARGET; + D3D12_CLEAR_VALUE clearValue{.Format = TextureFormatToDx( texInfo.Format ), .Color = {}}; + if (texInfo.TexType == TT_DEPTH_TARGET) + { + resourceFlags = D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL; + resourceState = D3D12_RESOURCE_STATE_DEPTH_WRITE; + clearValue.DepthStencil = {.Depth = 1.0f, .Stencil = 0}; + } + const D3D12_RESOURCE_DESC textureDesc = { .Dimension = ( texInfo.uiDepth == 1 ) ? D3D12_RESOURCE_DIMENSION_TEXTURE2D : D3D12_RESOURCE_DIMENSION_TEXTURE3D, + .Alignment = 0, + .Width = texInfo.uiWidth, + .Height = texInfo.uiHeight, + .DepthOrArraySize = (UINT16) texInfo.uiDepth, + .MipLevels = (UINT16) texInfo.uiMips, + .Format = clearValue.Format, + .SampleDesc = {.Count = EnumToDx12(texInfo.Msaa), .Quality = 0 }, + .Layout = imageLayout, + .Flags = resourceFlags + }; + + auto& memoryManager = dx12.GetMemoryManager(); + auto gpuBuffer = memoryManager.CreateImage( textureDesc, MemoryUsage::GpuExclusive, resourceState, clearValue ); + if (!gpuBuffer) + return {}; + + return{ texInfo.uiWidth, texInfo.uiHeight, texInfo.uiDepth, texInfo.uiMips, texInfo.Format, imageLayout, std::move(gpuBuffer) }; +} + + +//----------------------------------------------------------------------------- +// Implementation of template function specialization +template<> +Texture CreateTextureFromBuffer( Dx12& dx12, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) +//----------------------------------------------------------------------------- +{ + assert( 0 && "unimplemented!" ); ///TODO: implement! + return {}; +} + +//----------------------------------------------------------------------------- +// Implementation of template function specialization +template<> +Texture CreateTextureObjectView( Dx12&, const Texture& original, TextureFormat viewFormat ) +//----------------------------------------------------------------------------- +{ + assert( 0 && "unimplemented!" ); ///TODO: implement! + return {}; +} + + +//----------------------------------------------------------------------------- +// Implementation of template function specialization +template<> +void ReleaseTexture( Dx12& dx12, Texture* pTexture ) +//----------------------------------------------------------------------------- +{ + pTexture->Release(&dx12); + *pTexture = Texture{}; // destroy and clear +} + + +static constexpr std::array sTextureFormatToDx { + DXGI_FORMAT_UNKNOWN, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R4G4_UNORM_PACK8, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R4G4B4A4_UNORM_PACK16, + DXGI_FORMAT_B4G4R4A4_UNORM,// VK_FORMAT_B4G4R4A4_UNORM_PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R5G6B5_UNORM_PACK16, + DXGI_FORMAT_B5G6R5_UNORM,// VK_FORMAT_B5G6R5_UNORM_PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R5G5B5A1_UNORM_PACK16, + DXGI_FORMAT_B5G5R5A1_UNORM,// VK_FORMAT_B5G5R5A1_UNORM_PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A1R5G5B5_UNORM_PACK16, + DXGI_FORMAT_R8_UNORM,// VK_FORMAT_R8_UNORM, + DXGI_FORMAT_R8_SNORM,// VK_FORMAT_R8_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8_SSCALED, + DXGI_FORMAT_R8_UINT,// VK_FORMAT_R8_UINT, + DXGI_FORMAT_R8_SINT,// VK_FORMAT_R8_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8_SRGB, + DXGI_FORMAT_R8G8_UNORM,// VK_FORMAT_R8G8_UNORM, + DXGI_FORMAT_R8G8_SNORM,// VK_FORMAT_R8G8_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8_SSCALED, + DXGI_FORMAT_R8G8_UINT,// VK_FORMAT_R8G8_UINT, + DXGI_FORMAT_R8G8_SINT,// VK_FORMAT_R8G8_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8_SRGB, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_SSCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8_SRGB, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_SSCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8_SRGB, + DXGI_FORMAT_R8G8B8A8_UNORM,// VK_FORMAT_R8G8B8A8_UNORM, + DXGI_FORMAT_R8G8B8A8_SNORM,// VK_FORMAT_R8G8B8A8_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8A8_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R8G8B8A8_SSCALED, + DXGI_FORMAT_R8G8B8A8_UINT,// VK_FORMAT_R8G8B8A8_UINT, + DXGI_FORMAT_R8G8B8A8_SINT,// VK_FORMAT_R8G8B8A8_SINT, + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,// VK_FORMAT_R8G8B8A8_SRGB, + DXGI_FORMAT_B8G8R8A8_UNORM,// VK_FORMAT_B8G8R8A8_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8A8_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8A8_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8A8_SSCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8A8_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8A8_SINT, + DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,// VK_FORMAT_B8G8R8A8_SRGB, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_UNORM_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_SNORM_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_USCALED_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_SSCALED_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_UINT_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_SINT_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A8B8G8R8_SRGB_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2R10G10B10_UNORM_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2R10G10B10_SNORM_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2R10G10B10_USCALED_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2R10G10B10_SSCALED_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2R10G10B10_UINT_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2R10G10B10_SINT_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2B10G10R10_UNORM_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2B10G10R10_SNORM_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2B10G10R10_USCALED_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2B10G10R10_SSCALED_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2B10G10R10_UINT_PACK32, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A2B10G10R10_SINT_PACK32, + DXGI_FORMAT_R16_UNORM,// VK_FORMAT_R16_UNORM, + DXGI_FORMAT_R16_SNORM,// VK_FORMAT_R16_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16_SSCALED, + DXGI_FORMAT_R16_UINT,// VK_FORMAT_R16_UINT, + DXGI_FORMAT_R16_SINT,// VK_FORMAT_R16_SINT, + DXGI_FORMAT_R16_FLOAT,// VK_FORMAT_R16_SFLOAT, + DXGI_FORMAT_R16G16_UNORM,// VK_FORMAT_R16G16_UNORM, + DXGI_FORMAT_R16G16_SNORM,// VK_FORMAT_R16G16_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16_SSCALED, + DXGI_FORMAT_R16G16_UINT,// VK_FORMAT_R16G16_UINT, + DXGI_FORMAT_R16G16_SINT,// VK_FORMAT_R16G16_SINT, + DXGI_FORMAT_R16G16_FLOAT,// VK_FORMAT_R16G16_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_SSCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16_SFLOAT, + DXGI_FORMAT_R16G16B16A16_UNORM,// VK_FORMAT_R16G16B16A16_UNORM, + DXGI_FORMAT_R16G16B16A16_SNORM,// VK_FORMAT_R16G16B16A16_SNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16A16_USCALED, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R16G16B16A16_SSCALED, + DXGI_FORMAT_R16G16B16A16_UINT,// VK_FORMAT_R16G16B16A16_UINT, + DXGI_FORMAT_R16G16B16A16_SINT,// VK_FORMAT_R16G16B16A16_SINT, + DXGI_FORMAT_R16G16B16A16_FLOAT,// VK_FORMAT_R16G16B16A16_SFLOAT, + DXGI_FORMAT_R32_UINT,// VK_FORMAT_R32_UINT, + DXGI_FORMAT_R32_SINT,// VK_FORMAT_R32_SINT, + DXGI_FORMAT_R32_FLOAT,// VK_FORMAT_R32_SFLOAT, + DXGI_FORMAT_R32G32_UINT,// VK_FORMAT_R32G32_UINT, + DXGI_FORMAT_R32G32_SINT,// VK_FORMAT_R32G32_SINT, + DXGI_FORMAT_R32G32_FLOAT,// VK_FORMAT_R32G32_SFLOAT, + DXGI_FORMAT_R32G32B32_UINT,// VK_FORMAT_R32G32B32_UINT, + DXGI_FORMAT_R32G32B32_SINT,// VK_FORMAT_R32G32B32_SINT, + DXGI_FORMAT_R32G32B32_FLOAT,// VK_FORMAT_R32G32B32_SFLOAT, + DXGI_FORMAT_R32G32B32A32_UINT,// VK_FORMAT_R32G32B32A32_UINT, + DXGI_FORMAT_R32G32B32A32_SINT,// VK_FORMAT_R32G32B32A32_SINT, + DXGI_FORMAT_R32G32B32A32_FLOAT,// VK_FORMAT_R32G32B32A32_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64B64_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64B64_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64B64_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64B64A64_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64B64A64_SINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R64G64B64A64_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B10G11R11_UFLOAT_PACK32, //DXGI_FORMAT_R11G11B10_FLOAT + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, //DXGI_FORMAT_R9G9B9E5_SHAREDEXP + DXGI_FORMAT_D16_UNORM,// VK_FORMAT_D16_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_X8_D24_UNORM_PACK32, //DXGI_FORMAT_R24_UNORM_X8_TYPELESS + DXGI_FORMAT_D32_FLOAT,// VK_FORMAT_D32_SFLOAT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_S8_UINT, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_D16_UNORM_S8_UINT, + DXGI_FORMAT_D24_UNORM_S8_UINT,// VK_FORMAT_D24_UNORM_S8_UINT, + DXGI_FORMAT_D32_FLOAT_S8X24_UINT,// VK_FORMAT_D32_SFLOAT_S8_UINT, + DXGI_FORMAT_BC1_UNORM,// VK_FORMAT_BC1_RGB_UNORM_BLOCK, + DXGI_FORMAT_BC1_UNORM_SRGB,// VK_FORMAT_BC1_RGB_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_BC1_RGBA_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_BC1_RGBA_SRGB_BLOCK, + DXGI_FORMAT_BC2_UNORM,// VK_FORMAT_BC2_UNORM_BLOCK, + DXGI_FORMAT_BC2_UNORM_SRGB,// VK_FORMAT_BC2_SRGB_BLOCK, + DXGI_FORMAT_BC3_UNORM,// VK_FORMAT_BC3_UNORM_BLOCK, + DXGI_FORMAT_BC3_UNORM_SRGB,// VK_FORMAT_BC3_SRGB_BLOCK, + DXGI_FORMAT_BC4_UNORM,// VK_FORMAT_BC4_UNORM_BLOCK, + DXGI_FORMAT_BC4_SNORM,// VK_FORMAT_BC4_SNORM_BLOCK, + DXGI_FORMAT_BC5_UNORM,// VK_FORMAT_BC5_UNORM_BLOCK, + DXGI_FORMAT_BC5_SNORM,// VK_FORMAT_BC5_SNORM_BLOCK, + DXGI_FORMAT_BC6H_UF16,// VK_FORMAT_BC6H_UFLOAT_BLOCK, + DXGI_FORMAT_BC6H_SF16,// VK_FORMAT_BC6H_SFLOAT_BLOCK, + DXGI_FORMAT_BC7_UNORM,// VK_FORMAT_BC7_UNORM_BLOCK, + DXGI_FORMAT_BC7_UNORM_SRGB,// VK_FORMAT_BC7_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_EAC_R11_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_EAC_R11_SNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_4x4_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_5x5_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_6x5_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x5_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x6_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x5_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x6_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x10_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_12x10_SRGB_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_12x12_SRGB_BLOCK, //184 + + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, //1000054000 + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, + + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, //1000066000 + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, + + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8B8G8R8_422_UNORM, //1000156000 + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B8G8R8G8_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R10X6_UNORM_PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R12X4_UNORM_PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16B16G16R16_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_B16G16R16G16_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A4R4G4B4_UNORM_PACK16, + DXGI_FORMAT_UNKNOWN, // VK_FORMAT_A4B4G4R4_UNORM_PACK16, +}; + + +//----------------------------------------------------------------------------- +DXGI_FORMAT TextureFormatToDx(TextureFormat f) +//----------------------------------------------------------------------------- +{ + return sTextureFormatToDx[uint32_t(f)]; +} + diff --git a/framework/code/texture/dx12/texture.hpp b/framework/code/texture/dx12/texture.hpp new file mode 100644 index 0000000..6225188 --- /dev/null +++ b/framework/code/texture/dx12/texture.hpp @@ -0,0 +1,78 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "../texture.hpp" +#include "memory/dx12/memoryMapped.hpp" +#include "dx12/dx12.hpp" ///TODO: can this be removed? + +// Forward declarations +class Dx12; +enum DXGI_FORMAT; +enum D3D12_TEXTURE_LAYOUT; + +using TextureDx12 = Texture; +using SamplerDx12 = Sampler; +template class MemoryAllocatedBuffer; + + +/// @brief Template specialization of texture container for Dx12 graphics api. +template<> +class Texture final : public TextureBase +{ +public: + Texture() noexcept; + Texture(const Texture&) = delete; + Texture& operator=(const Texture&) = delete; + Texture(Texture&&) noexcept; + Texture& operator=(Texture&&) noexcept; + ~Texture() noexcept; + + /// @brief Construct Texture from a pre-existing image resource. + /// @param resourceBuffer - ownership passed to this Texture. + /// @param sampler - ownership passed to this Texture. + Texture(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, TextureFormat format, D3D12_TEXTURE_LAYOUT textureLayout, MemoryAllocatedBuffer resourceBuffer /*, const Sampler& sampler*/) noexcept; + + void Release(GraphicsApiBase* pGfxApi) override; + + bool IsEmpty() const; + + auto* GetResource() const { return MemoryBuffer.GetResource(); } + const auto& GetResourceViewDesc() const { return ResourceViewDesc; } + +public: + uint32_t Width = 0; + uint32_t Height = 0; + uint32_t Depth = 0; + uint32_t MipLevels = 0; + uint32_t FirstMip = 0; + TextureFormat Format = TextureFormat::UNDEFINED; + D3D12_TEXTURE_LAYOUT TextureLayout{}; + D3D12_SHADER_RESOURCE_VIEW_DESC ResourceViewDesc{}; + + MemoryAllocatedBuffer MemoryBuffer; + //Sampler Sampler; +}; + +template<> +Texture CreateTextureObject(Dx12&, const CreateTexObjectInfo&, MemoryPool*); + +/// Template specialization for Dx12 CreateTextureFromBuffer +template<> +Texture CreateTextureFromBuffer(Dx12&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName); + +/// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) +/// Template specialization for Dx12 CreateTextureFromBuffer +template<> +Texture CreateTextureObjectView(Dx12&, const Texture& original, TextureFormat viewFormat ); + +/// Template specialization for Dx12 CreateTextureFromBuffer +template<> +void ReleaseTexture(Dx12&, Texture* pTexture); + + +DXGI_FORMAT TextureFormatToDx(TextureFormat f); diff --git a/framework/code/texture/dx12/textureManager.cpp b/framework/code/texture/dx12/textureManager.cpp new file mode 100644 index 0000000..0953e33 --- /dev/null +++ b/framework/code/texture/dx12/textureManager.cpp @@ -0,0 +1,196 @@ +//============================================================================= +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#include "textureManager.hpp" +#include "sampler.hpp" +#include "texture.hpp" +#include "loaderKtx.hpp" +#include "../loaderPpm.hpp" +#include "dx12/dx12.hpp" + + +TextureManager::TextureManager(tGfxApi& rGfxApi, AssetManager& rAssetManager) noexcept : TextureManagerBase(rAssetManager), m_GfxApi(rGfxApi) +{ +} + +bool TextureManager::Initialize() +{ + m_Loader = std::make_unique>( static_cast(m_GfxApi) ); + return TextureManagerBase::Initialize(); +} + +void TextureManager::Release() +{ + for (auto& [key, texture] : m_LoadedTextures) + { + texture.Release(&m_GfxApi); + } + m_LoadedTextures.clear(); + m_Loader->Release(); + TextureManagerBase::Release(); +} + +const TextureBase* TextureManager::GetTexture(const std::string& textureSlotName) const +{ + auto iter = m_LoadedTextures.find(textureSlotName); + if (iter == m_LoadedTextures.end()) + return nullptr; + return &iter->second; +} + +const TextureBase* TextureManager::GetOrLoadTexture_(const std::string& textureSlotName, const std::string& filename, const SamplerBase& sampler) +{ + const TextureBase* pTexture = GetTexture(textureSlotName); + if (!pTexture) + { + const SamplerDx12& samplerDx12 = static_cast(sampler); + auto loadedTexture = GetLoader()->LoadKtx(m_GfxApi, m_AssetManager, filename.c_str(), samplerDx12); + if (!loadedTexture.IsEmpty()) + { + auto insertedIt = m_LoadedTextures.insert({ textureSlotName, std::move(loadedTexture) }); + pTexture = &(insertedIt.first->second); + } + } + + return pTexture; +} + +typedef std::queue> tLoadedFileQueue; +struct BatchLoadThreadParams { + AssetManager& assetManager; + std::mutex& loadedFileQueueMutex; + tLoadedFileQueue& loadedFileQueue; + Semaphore& dataReadySema; + const std::string& filename; + size_t slotIndex; +}; + +void TextureManager::BatchLoad(const std::span> slotAndFileNames, const SamplerBase& defaultSampler) +{ + std::mutex loadedFileQueueMutex; + tLoadedFileQueue loadedFileQueue; + Semaphore dataReadySema{ 0 }; + Semaphore finishedSema{ 0 }; + + // Setup the output textures + std::vector textures; + textures.resize(slotAndFileNames.size()); + + // We have one worker job just grabbing loaded textures and transfering them to vulkan (gpu memory). + struct TransferWorkerParams { + std::mutex& loadedFileQueueMutex; + tLoadedFileQueue& loadedFileQueue; + Semaphore& dataReadySema; + Semaphore& finishedSema; + const SamplerDx12& defaultSampler; + std::vector& textures; + } transferWorkerParams{ loadedFileQueueMutex, loadedFileQueue, dataReadySema, finishedSema, apiCast(defaultSampler), textures }; + + m_LoadingThreadWorker.DoWork2([](TextureManagerDx12* pThis, TransferWorkerParams params) + { + size_t texturesRemaining = params.textures.size(); + while (texturesRemaining > 0) + { + TextureKtxFileWrapper ktxData; + size_t slotIndex; + params.dataReadySema.Wait(); + { + std::lock_guard lock(params.loadedFileQueueMutex); + auto&& loadedData = params.loadedFileQueue.front(); + ktxData = std::move(loadedData.second); + slotIndex = loadedData.first; + params.loadedFileQueue.pop(); + } + if (ktxData) + params.textures[slotIndex] = pThis->GetLoader()->LoadKtx(pThis->m_GfxApi, ktxData, params.defaultSampler); + --texturesRemaining; + } + params.finishedSema.Post(); + + }, this, transferWorkerParams); + + size_t currentSlotIndex = 0; + for (const auto& [textureSlotName, filename] : slotAndFileNames) + { + auto iter = m_LoadedTextures.find(textureSlotName); + if (iter == m_LoadedTextures.end()) + { + BatchLoadThreadParams params{ m_AssetManager, loadedFileQueueMutex, loadedFileQueue, dataReadySema, filename, currentSlotIndex }; + + m_LoadingThreadWorker.DoWork2([](TextureManagerDx12* pThis, BatchLoadThreadParams params) + { + auto ktxData = pThis->m_Loader->LoadFile(params.assetManager, params.filename.c_str()); + auto* pKtxLoader = apiCast( pThis->GetLoader() ); + ktxData = pKtxLoader->Transcode(std::move(ktxData)); + { + std::lock_guard lock(params.loadedFileQueueMutex); + params.loadedFileQueue.emplace(std::pair{ params.slotIndex, std::move(ktxData) }); + } + params.dataReadySema.Post(); + }, this, params); + + ++currentSlotIndex; + } + else + { + // Signal the transfer thread, but dont give it any data (it finishes when it has recieved a signal for every texture being BatchLoaded) + dataReadySema.Post(); + } + } + + finishedSema.Wait(); + + // Transfer all the loaded textures to m_LoadedTextures + for (size_t i = 0; i < textures.size(); ++i) + { + if (!textures[i].IsEmpty()) + { + m_LoadedTextures.emplace(std::pair{ slotAndFileNames[i].first/*slot*/, std::move(textures[i])}); + } + } +} + +const TextureBase* TextureManager::CreateTextureObject( const CreateTexObjectInfo& texInfo ) /*override*/ +{ + auto texture = ::CreateTextureObject( m_GfxApi, texInfo ); + + assert( texInfo.pName != nullptr && texInfo.pName[0] != '\0' ); // must have a valid name + auto it = m_LoadedTextures.try_emplace( texInfo.pName, std::move( texture ) ); + if (!it.second) + { + assert( 0 && "CreateTextureObjectView duplicate texture name, must be unique (or use ::CreateTextureObject)" ); + return nullptr; + } + else + return &it.first->second; +} + +const TextureBase* TextureManager::CreateTextureFromBuffer( const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, std::string name ) /*override*/ +{ + auto texture = ::CreateTextureFromBuffer( m_GfxApi, pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, name.c_str() ); + + assert( name.empty() ); // must have a valid name + auto it = m_LoadedTextures.try_emplace( name, std::move( texture ) ); + if (!it.second) + { + assert( 0 && "CreateTextureObjectView duplicate texture name, must be unique (or use ::CreateTextureObjectView)" ); + return nullptr; + } + else + return &it.first->second; +} + +const TextureBase* TextureManager::CreateTextureObjectView( const TextureBase& original, TextureFormat viewFormat, std::string name ) +{ + assert( 0 && "TextureManager::CreateTextureObjectView needs implementing!" ); + return {}; +} + +const SamplerBase* const TextureManager::GetSampler( SamplerAddressMode ) const +{ + assert( 0 && "needs to be implemented" ); + return nullptr; +} diff --git a/framework/code/texture/dx12/textureManager.hpp b/framework/code/texture/dx12/textureManager.hpp new file mode 100644 index 0000000..13ebcfb --- /dev/null +++ b/framework/code/texture/dx12/textureManager.hpp @@ -0,0 +1,60 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "../textureManager.hpp" +#include + + +// Forward declarations +class Dx12; +template class Texture; +template class TextureKtx; +template class TextureManager; +using TextureManagerDx12 = TextureManager; + + +/// @brief Templated implementation of TextureManagerBase that handles ktx file loading for Dx12 graphics api. +/// @tparam T_GFXAPI +template<> +class TextureManager final : public TextureManagerBase +{ +public: + using tGfxApi = Dx12; + using Texture = Texture; + using Sampler = Sampler; + + TextureManager(tGfxApi& rGfxApi, AssetManager& rAssetManager) noexcept; + + bool Initialize(); + void Release(); + + /// @brief Find a texture (by slot name) that may be already loaded + /// @param textureSlotName name to look for + /// @return pointer to already loaded texture, or null + const TextureBase* GetTexture( const std::string& textureSlotName ) const override; + + /// Create texture (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. + /// Implements the base class virtual function. + const TextureBase* CreateTextureObject( const CreateTexObjectInfo& texInfo ) override; + + /// Create texture from a block of texture data in memory (with correct format, span etc). + const TextureBase* CreateTextureFromBuffer( const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, std::string name ) override; + + /// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) + const TextureBase* CreateTextureObjectView( const TextureBase& original, TextureFormat viewFormat, std::string name ) override; + + const SamplerBase* const GetSampler( SamplerAddressMode ) const override; + +protected: + const TextureBase* GetOrLoadTexture_( const std::string& textureSlotName, const std::string& filename, const SamplerBase& sampler ) override; + void BatchLoad( const std::span>, const SamplerBase& defaultSampler ) override; + +private: + std::map m_LoadedTextures; + tGfxApi& m_GfxApi; +}; diff --git a/framework/code/texture/loaderKtx.cpp b/framework/code/texture/loaderKtx.cpp index c1bc362..62a08e2 100644 --- a/framework/code/texture/loaderKtx.cpp +++ b/framework/code/texture/loaderKtx.cpp @@ -1,7 +1,6 @@ //============================================================================================================ // -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,6 +8,7 @@ #include // KTX-Software #include #include +#include #include "system/assetManager.hpp" #include "loaderKtx.hpp" #include "../lib/gl_format.h" @@ -40,17 +40,17 @@ void TextureKtxFileWrapper::Release() m_ktxTexture = nullptr; } -TextureKtx::~TextureKtx() noexcept +TextureKtxBase::~TextureKtxBase() noexcept { Release(); } -bool TextureKtx::Initialize() +bool TextureKtxBase::Initialize() { return true; } -TextureKtxFileWrapper TextureKtx::LoadFile(AssetManager& assetManager, const char* const pFileName) const +TextureKtxFileWrapper TextureKtxBase::LoadFile(AssetManager& assetManager, const char* const pFileName) const { std::vector fileData; if (!assetManager.LoadFileIntoMemory(pFileName, fileData)) @@ -60,45 +60,54 @@ TextureKtxFileWrapper TextureKtx::LoadFile(AssetManager& assetManager, const cha } ///HACK: some of our ktx files have gl internal format and gl format set to be the same thing, which is the ktx library doesnt like. - struct KtxHeader { - uint8_t identifier[12]; - uint32_t endianness; - uint32_t glType; - uint32_t glTypeSize; - uint32_t glFormat; - uint32_t glInternalFormat; - uint32_t glBaseInternalFormat; - uint32_t pixelWidth; - uint32_t pixelHeight; - uint32_t pixelDepth; - uint32_t numberOfArrayElements; - uint32_t numberOfFaces; - uint32_t numberOfMipmapLevels; - uint32_t bytesOfKeyValueData; - }; - KtxHeader* pHeader = (KtxHeader*)fileData.data(); - - ktx_uint8_t ktx_identifier[] = KTX_IDENTIFIER_REF; - if (fileData.size() >= sizeof(KtxHeader) && memcmp(pHeader->identifier, ktx_identifier, sizeof(ktx_identifier)) == 0) + if (1) { - const auto glFormat = pHeader->glFormat; - const auto glType = pHeader->glType; + struct KtxHeader { + uint8_t identifier[12]; + uint32_t endianness; + uint32_t glType; + uint32_t glTypeSize; + uint32_t glFormat; + uint32_t glInternalFormat; + uint32_t glBaseInternalFormat; + uint32_t pixelWidth; + uint32_t pixelHeight; + uint32_t pixelDepth; + uint32_t numberOfArrayElements; + uint32_t numberOfFaces; + uint32_t numberOfMipmapLevels; + uint32_t bytesOfKeyValueData; + }; + KtxHeader* pHeader = (KtxHeader*)fileData.data(); - // Internal format should be sized but some exporters write it as untyped, see if we can fix that! - if ((glFormat == pHeader->glInternalFormat) && glFormat != 0) + ktx_uint8_t ktx_identifier[] = KTX_IDENTIFIER_REF; + if (fileData.size() >= sizeof( KtxHeader ) && memcmp( pHeader->identifier, ktx_identifier, sizeof( ktx_identifier ) ) == 0) { - if (glType == GL_UNSIGNED_BYTE && glFormat == GL_RGB) - { - pHeader->glInternalFormat = GL_RGB8; - } - else if (glType == GL_UNSIGNED_BYTE && glFormat == GL_RED) + const auto glFormat = pHeader->glFormat; + const auto glType = pHeader->glType; + + // Pure hack! + if (glFormat == 6408 && pHeader->glInternalFormat == 36220 && glType == GL_UNSIGNED_BYTE) { - pHeader->glInternalFormat = GL_R8; + pHeader->glInternalFormat = GL_RGBA8; } - else if (glType == GL_UNSIGNED_BYTE && glFormat == GL_RGBA) + + // Internal format should be sized but some exporters write it as untyped, see if we can fix that! + if ((glFormat == pHeader->glInternalFormat) && glFormat != 0) { - //pHeader->glInternalFormat = GL_SRGB8_ALPHA8_EXT; - pHeader->glInternalFormat = GL_RGBA8; + if (glType == GL_UNSIGNED_BYTE && glFormat == GL_RGB) + { + pHeader->glInternalFormat = GL_RGB8; + } + else if (glType == GL_UNSIGNED_BYTE && glFormat == GL_RED) + { + pHeader->glInternalFormat = GL_R8; + } + else if (glType == GL_UNSIGNED_BYTE && glFormat == GL_RGBA) + { + //pHeader->glInternalFormat = GL_SRGB8_ALPHA8_EXT; + pHeader->glInternalFormat = GL_RGBA8; + } } } } diff --git a/framework/code/texture/loaderKtx.hpp b/framework/code/texture/loaderKtx.hpp index 4e8c210..fe80401 100644 --- a/framework/code/texture/loaderKtx.hpp +++ b/framework/code/texture/loaderKtx.hpp @@ -1,6 +1,6 @@ //============================================================================================================ // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -15,9 +15,9 @@ // Forward declarations struct ktxTexture; class AssetManager; -template class TextureT; -template class TextureKtxT; -template class SamplerT; +template class Texture; +template class TextureKtx; +template class Sampler; /// @brief opaque class holding texture data (in some texture format internal format, not a vulkan texture) class TextureKtxFileWrapper final @@ -33,7 +33,7 @@ class TextureKtxFileWrapper final operator bool() const { return m_ktxTexture != nullptr; } void Release(); protected: - friend class TextureKtx; + friend class TextureKtxBase; auto GetKtxTexture() const { return m_ktxTexture; } private: ktxTexture* m_ktxTexture = nullptr; @@ -42,14 +42,14 @@ class TextureKtxFileWrapper final /// @brief Class to handle loading KTX textures /// Generally applications will want a singleton of this class (or a derived version eg @TextureKtxVulkan). -class TextureKtx +class TextureKtxBase { - TextureKtx(const TextureKtx&) = delete; - TextureKtx& operator=(const TextureKtx&) = delete; + TextureKtxBase(const TextureKtxBase&) = delete; + TextureKtxBase& operator=(const TextureKtxBase&) = delete; public: - template using tApiDerived = TextureKtxT; // make apiCast work! - TextureKtx() = default; - virtual ~TextureKtx() noexcept; + template using tApiDerived = TextureKtx; // make apiCast work! + TextureKtxBase() = default; + virtual ~TextureKtxBase() noexcept; /// @brief Load the given ktx(2) texture TextureKtxFileWrapper LoadFile(AssetManager& assetManager, const char* const pFileName) const; @@ -67,7 +67,10 @@ class TextureKtx /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure template - TextureT LoadKtx(T_GFXAPI& vulkan, const TextureKtxFileWrapper& textureFile, SamplerT sampler); + Texture LoadKtx(T_GFXAPI& gfxapi, const TextureKtxFileWrapper& textureFile, Sampler sampler) + { + return apiCast(this)->LoadKtx(gfxapi, textureFile, std::move(sampler)); + } /// @brief Load a ktx file and do the necessary upload etc to go from a cpu texture representation to Vulkan format /// WE EXPECT THERE TO BE A SPECIALIZED IMPLEMENTATION OF THIS TEMPLATE for each supported T_GFXAPI. @@ -75,7 +78,10 @@ class TextureKtx /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure template - TextureT LoadKtx(T_GFXAPI& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler); + Texture LoadKtx(T_GFXAPI& gfxapi, AssetManager& assetManager, const char* const pFileName, Sampler sampler) + { + return apiCast(this)->LoadKtx(gfxapi, assetManager, pFileName, std::move(sampler)); + } protected: /// Helper to get the ktx texture pointer (for derived classes) @@ -85,13 +91,13 @@ class TextureKtx /// @brief Templated (by graphics api) ktx loader class, expected to be specialized. /// @tparam T_GFXAPI template -class TextureKtxT : public TextureKtx +class TextureKtx : public TextureKtxBase { - TextureKtxT(const TextureKtxT&) = delete; - TextureKtxT& operator=(const TextureKtxT&) = delete; + TextureKtx(const TextureKtx&) = delete; + TextureKtx& operator=(const TextureKtx&) = delete; public: - TextureKtxT(T_GFXAPI& rGfxApi) noexcept = delete; // class expected to be specialized - ~TextureKtxT() noexcept override = delete; // class expected to be specialized + TextureKtx(T_GFXAPI& rGfxApi) noexcept = delete; // class expected to be specialized + ~TextureKtx() noexcept override = delete; // class expected to be specialized - static_assert( sizeof( TextureKtxT ) != sizeof( TextureKtx ) ); // Ensure this class template is specialized (and not used as-is) + static_assert( sizeof( TextureKtx ) != sizeof( TextureKtxBase ) ); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/texture/loaderPpm.cpp b/framework/code/texture/loaderPpm.cpp index d6e816f..dd15267 100644 --- a/framework/code/texture/loaderPpm.cpp +++ b/framework/code/texture/loaderPpm.cpp @@ -1,7 +1,6 @@ //============================================================================================================ // -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -36,17 +35,17 @@ void TexturePpmFileWrapper::Release() //m_ppmTexture = nullptr; } -TexturePpm::~TexturePpm() noexcept +TexturePpmBase::~TexturePpmBase() noexcept { Release(); } -bool TexturePpm::Initialize() +bool TexturePpmBase::Initialize() { return true; } -TexturePpmFileWrapper TexturePpm::LoadFile( AssetManager& assetManager, const char* const pFileName ) const +TexturePpmFileWrapper TexturePpmBase::LoadFile( AssetManager& assetManager, const char* const pFileName ) const { std::vector fileData; if (!assetManager.LoadFileIntoMemory( pFileName, fileData )) diff --git a/framework/code/texture/loaderPpm.hpp b/framework/code/texture/loaderPpm.hpp index fd694e6..80f156d 100644 --- a/framework/code/texture/loaderPpm.hpp +++ b/framework/code/texture/loaderPpm.hpp @@ -1,7 +1,6 @@ //============================================================================================================ // -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -33,7 +32,7 @@ class TexturePpmFileWrapper final operator bool() const { return !m_Data.empty(); } void Release(); protected: - friend class TexturePpm; + friend class TexturePpmBase; private: uint32_t m_Width = 0; uint32_t m_Height = 0; @@ -44,13 +43,13 @@ class TexturePpmFileWrapper final /// @brief Class to handle loading PPM textures /// Generally applications will want a singleton of this class. -class TexturePpm +class TexturePpmBase { - TexturePpm(const TexturePpm&) = delete; - TexturePpm& operator=(const TexturePpm&) = delete; + TexturePpmBase(const TexturePpmBase&) = delete; + TexturePpmBase& operator=(const TexturePpmBase&) = delete; public: - TexturePpm() = default; - virtual ~TexturePpm() noexcept; + TexturePpmBase() = default; + virtual ~TexturePpmBase() noexcept; /// @brief Load the given ppm(2) texture TexturePpmFileWrapper LoadFile(AssetManager& assetManager, const char* const pFileName) const; @@ -63,14 +62,14 @@ class TexturePpm virtual void Release() {} template - TextureT LoadPpm( T_GFXAPI& gfxApi, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler ); + Texture LoadPpm( T_GFXAPI& gfxApi, AssetManager& assetManager, const char* const pFileName, const Sampler& sampler ); template - TextureT LoadPpm( T_GFXAPI& gfxApi, const TexturePpmFileWrapper& ppmData, const SamplerT& sampler ); + Texture LoadPpm( T_GFXAPI& gfxApi, const TexturePpmFileWrapper& ppmData, const Sampler& sampler ); }; template -TextureT TexturePpm::LoadPpm( T_GFXAPI& gfxApi, AssetManager& assetManager, const char* const pFileName, const SamplerT& sampler ) +Texture TexturePpmBase::LoadPpm( T_GFXAPI& gfxApi, AssetManager& assetManager, const char* const pFileName, const Sampler& sampler ) { auto ppmData = LoadFile( assetManager, pFileName ); if (!ppmData) @@ -79,7 +78,7 @@ TextureT TexturePpm::LoadPpm( T_GFXAPI& gfxApi, AssetManager& assetMan } template -TextureT TexturePpm::LoadPpm( T_GFXAPI& gfxApi, const TexturePpmFileWrapper& ppmData, const SamplerT& sampler ) +Texture TexturePpmBase::LoadPpm( T_GFXAPI& gfxApi, const TexturePpmFileWrapper& ppmData, const Sampler& sampler ) { return ::CreateTextureFromBuffer( gfxApi, ppmData.m_Data.data(), ppmData.m_Data.size(), ppmData.m_Width, ppmData.m_Height, ppmData.m_Depth, ppmData.m_Format, SamplerAddressMode::Repeat, SamplerFilter::Linear ); } @@ -88,13 +87,13 @@ TextureT TexturePpm::LoadPpm( T_GFXAPI& gfxApi, const TexturePpmFileWr /// @brief Templated (by graphics api) ppm loader class, expected to be specialized. /// @tparam T_GFXAPI template -class TexturePpmT : public TexturePpm +class TexturePpm : public TexturePpmBase { - TexturePpmT( const TexturePpmT& ) = delete; - TexturePpmT& operator=( const TexturePpmT& ) = delete; + TexturePpm( const TexturePpm& ) = delete; + TexturePpm& operator=( const TexturePpm& ) = delete; public: - TexturePpmT( T_GFXAPI& rGfxApi ) noexcept = delete; // class expected to be specialized - ~TexturePpmT() noexcept override = delete; // class expected to be specialized + TexturePpm( T_GFXAPI& rGfxApi ) noexcept = delete; // class expected to be specialized + ~TexturePpm() noexcept override = delete; // class expected to be specialized - static_assert( sizeof( TexturePpmT ) != sizeof( TexturePpmT ) ); // Ensure this class template is specialized (and not used as-is) + static_assert( sizeof( TexturePpm ) != sizeof( TexturePpm ) ); // Ensure this class template is specialized (and not used as-is) }; diff --git a/framework/code/texture/sampler.cpp b/framework/code/texture/sampler.cpp new file mode 100644 index 0000000..7d0a585 --- /dev/null +++ b/framework/code/texture/sampler.cpp @@ -0,0 +1,75 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include +#include +#include +#include +#include +#include "texture.hpp" +#include "nlohmann/json.hpp" + +using Json = nlohmann::json; + + +const static std::map cSamplerAddressModeByName{ + {"Undefined", SamplerAddressMode::Undefined}, + {"Repeat", SamplerAddressMode::Repeat}, + {"MirroredRepeat", SamplerAddressMode::MirroredRepeat}, + {"ClampEdge", SamplerAddressMode::ClampEdge}, + {"ClampBorder", SamplerAddressMode::ClampBorder}, + {"MirroredClampEdge", SamplerAddressMode::MirroredClampEdge} +}; + +const static std::map cSamplerFilterByName{ + {"Undefined", SamplerFilter::Undefined}, + {"Nearest", SamplerFilter::Nearest}, + {"Linear", SamplerFilter::Linear} +}; + +static void from_json( const Json& j, SamplerAddressMode& op ) { + const auto foundIt = cSamplerAddressModeByName.find( j ); + if (foundIt != cSamplerAddressModeByName.end()) { + op = foundIt->second; + } + else { + throw std::invalid_argument( "Unknown SamplerAddressMode" ); + } +} + +static void from_json( const Json& j, SamplerFilter& op ) { + const auto foundIt = cSamplerFilterByName.find( j ); + if (foundIt != cSamplerFilterByName.end()) { + op = foundIt->second; + } + else { + throw std::invalid_argument( "Unknown SamplerFilter" ); + } +} + +void from_json( const Json& j, CreateSamplerObjectInfo& info ) { + auto it = j.find( "Mode" ); + if (it != j.end()) it->get_to( info.Mode ); + + it = j.find( "Filter" ); + if (it != j.end()) it->get_to( info.Filter ); + + it = j.find( "MipFilter" ); + if (it != j.end()) it->get_to( info.MipFilter ); + + it = j.find( "MipBias" ); + if (it != j.end()) it->get_to( info.MipBias); + + it = j.find( "Anisotropy" ); + if (it != j.end()) it->get_to( info.Anisotropy ); + + it = j.find( "MinLod" ); + if (it != j.end()) it->get_to( info.MinLod ); + + it = j.find( "MaxLod" ); + if (it != j.end()) it->get_to( info.MaxLod ); +} diff --git a/framework/code/texture/sampler.hpp b/framework/code/texture/sampler.hpp new file mode 100644 index 0000000..e9d1f0b --- /dev/null +++ b/framework/code/texture/sampler.hpp @@ -0,0 +1,124 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include +#include +#include +#include "json/include/nlohmann/json_fwd.hpp" + +// Forward declarations +class GraphicsApiBase; +template class Texture; +template class Image; +template class ImageView; +template class Sampler; +using Json = nlohmann::json; + +/// @brief Base class for a sampler object. +/// Is subclassed for each graphics API. +class SamplerBase +{ + SamplerBase(const SamplerBase&) = delete; + SamplerBase& operator=(const SamplerBase&) = delete; +public: + template using tApiDerived = Sampler; // make apiCast work! +protected: + SamplerBase() noexcept {} +}; + + +/// @brief Template for sampler to be specialized by Vulkan graphics api. +template +class Sampler final : public SamplerBase +{ + Sampler(const Sampler&) = delete; + Sampler& operator=(const Sampler&) = delete; +public: + Sampler() noexcept = delete; // template class expected to be specialized + Sampler(Sampler&&) noexcept = delete; // template class expected to be specialized + Sampler& operator=(Sampler&&) noexcept = delete;// template class expected to be specialized + + static_assert(sizeof(Sampler) != sizeof(SamplerBase)); // Ensure this class template is specialized (and not used as-is) +}; + + +enum class SamplerAddressMode { + Undefined = 0, + Repeat = 1, + MirroredRepeat = 2, + ClampEdge = 3, + ClampBorder = 4, + MirroredClampEdge = 5, + End +}; + + +enum class SamplerFilter { + Undefined = 0, + Nearest = 1, + Linear = 2, + Anisotropic = 3 //dx12 +}; + + +enum class SamplerBorderColor { + TransparentBlackFloat = 0, + TransparentBlackInt = 1, + OpaqueBlackFloat = 2, + OpaqueBlackInt = 3, + OpaqueWhiteFloat = 4, + OpaqueWhiteInt = 5 +}; + +/// Parameters for CreateTextureObject +struct CreateSamplerObjectInfo +{ + SamplerAddressMode Mode = SamplerAddressMode::Repeat; + SamplerFilter Filter = SamplerFilter::Linear; + SamplerFilter MipFilter = SamplerFilter::Linear; + SamplerBorderColor BorderColor = SamplerBorderColor::TransparentBlackFloat; + bool UnnormalizedCoordinates = false; + float MipBias = 0.0f; + float MinLod = 0.0f; + float MaxLod = FLT_MAX; + float Anisotropy = 4.0f; +}; + +/// Create a texture sampler (with some commonly used parameters) +template +Sampler CreateSampler( T_GFXAPI& gfxApi, SamplerAddressMode SamplerMode, SamplerFilter FilterMode, SamplerBorderColor BorderColor, float MipBias ) +{ + CreateSamplerObjectInfo createInfo{}; + createInfo.Mode = SamplerMode; + createInfo.Filter = FilterMode; + createInfo.MipFilter = FilterMode, + createInfo.BorderColor = BorderColor; + createInfo.MipBias = MipBias; + return CreateSampler( gfxApi, createInfo ); +} + +/// Create a texture sampler (must be specialized for the graphics api) +/// Must be specialized for the graphics api - this fallback will assert if called by application code. +template +Sampler CreateSampler( T_GFXAPI& gfxApi, const CreateSamplerObjectInfo&) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//sampler.hpp\""); + assert( 0 && "Expecting CreateSampler (per graphics api) to be used" ); + return {}; +} + +/// Release a texture sampler. +template +void ReleaseSampler( T_GFXAPI& gfxApi, Sampler* pSampler ) +{ + if (!pSampler) + return; + *pSampler = Sampler{}; // destroy and clear +} + +void from_json( const Json& j, CreateSamplerObjectInfo& info ); diff --git a/framework/code/texture/texture.hpp b/framework/code/texture/texture.hpp index 5e481a2..482cbcb 100644 --- a/framework/code/texture/texture.hpp +++ b/framework/code/texture/texture.hpp @@ -1,6 +1,6 @@ //============================================================================= // -// Copyright (c) 2023 QUALCOMM Technologies Inc. +// Copyright (c) 2022 QUALCOMM Technologies Inc. // All Rights Reserved. // //============================================================================== @@ -9,162 +9,108 @@ #include #include #include "textureFormat.hpp" +#include "sampler.hpp" // Forward declarations class GraphicsApiBase; -template class TextureT; -template class ImageT; -template class ImageViewT; -template class SamplerT; +template class Texture; +template class Image; +template class ImageView; +template class MemoryPool; +template class Sampler; /// @brief Base class for a texture object (image with a sampler). /// Is subclassed for each graphics API. -class Texture +class TextureBase { - Texture(const Texture&) = delete; - Texture& operator=(const Texture&) = delete; + TextureBase(const TextureBase&) = delete; + TextureBase& operator=(const TextureBase&) = delete; public: - template using tApiDerived = TextureT; // make apiCast work! + template using tApiDerived = Texture; // make apiCast work! - Texture() noexcept {} - virtual ~Texture() noexcept = 0; + TextureBase() noexcept {} + virtual ~TextureBase() noexcept = 0; virtual void Release(GraphicsApiBase* pApi) = 0; }; -inline Texture::~Texture() noexcept {} +inline TextureBase::~TextureBase() noexcept {} /// @brief Texture container for a (templated) graphics api. /// Owns memory and sampler etc associated with a single texture. /// Template is expected to be specialized for the graphics api (Vulkan, DirectX etc) template -class TextureT final : public Texture +class Texture final : public TextureBase { - TextureT(const TextureT&) = delete; - TextureT& operator=(const TextureT&) = delete; + Texture(const Texture&) = delete; + Texture& operator=(const Texture&) = delete; public: - TextureT() noexcept = delete; // template class expected to be specialized - TextureT(TextureT&&) noexcept = delete; // template class expected to be specialized - TextureT& operator=(TextureT&&) noexcept = delete;// template class expected to be specialized + Texture() noexcept = delete; // template class expected to be specialized + Texture(Texture&&) noexcept = delete; // template class expected to be specialized + Texture& operator=(Texture&&) noexcept = delete;// template class expected to be specialized bool IsEmpty() const { return true; } protected: - static_assert(sizeof(TextureT) != sizeof(Texture)); // Ensure this class template is specialized (and not used as-is) + static_assert(sizeof(Texture) != sizeof(TextureBase)); // Ensure this class template is specialized (and not used as-is) }; /// @brief Base class for a image object. /// Is subclassed for each graphics API. -class Image +class ImageBase { - Image( const Image& ) = delete; - Image& operator=( const Image& ) = delete; + ImageBase( const ImageBase& ) = delete; + ImageBase& operator=( const ImageBase& ) = delete; public: - template using tApiDerived = ImageT; // make apiCast work! + template using tApiDerived = Image; // make apiCast work! protected: - Image() noexcept {} + ImageBase() noexcept {} }; /// @brief Template for image to be specialized by graphics api. template -class ImageT final : public Image +class Image final : public ImageBase { - ImageT( const ImageT& ) = delete; - ImageT& operator=( const ImageT& ) = delete; + Image( const Image& ) = delete; + Image& operator=( const Image& ) = delete; public: - ImageT() noexcept = delete; // template class expected to be specialized - ImageT( ImageT&& ) noexcept = delete; // template class expected to be specialized - ImageT& operator=( ImageT&& ) noexcept = delete; // template class expected to be specialized + Image() noexcept = delete; // template class expected to be specialized + Image( Image&& ) noexcept = delete; // template class expected to be specialized + Image& operator=( Image&& ) noexcept = delete; // template class expected to be specialized - static_assert(sizeof( ImageT ) != sizeof( Image )); // Ensure this class template is specialized (and not used as-is) + static_assert(sizeof( Image ) != sizeof( ImageBase )); // Ensure this class template is specialized (and not used as-is) }; /// @brief Base class for a image view object. /// Is subclassed for each graphics API. -class ImageView +class ImageViewBase { - ImageView(const ImageView&) = delete; - ImageView& operator=(const ImageView&) = delete; + ImageViewBase(const ImageViewBase&) = delete; + ImageViewBase& operator=(const ImageViewBase&) = delete; public: - template using tApiDerived = ImageViewT; // make apiCast work! + template using tApiDerived = ImageView; // make apiCast work! protected: - ImageView() noexcept {} + ImageViewBase() noexcept {} }; /// @brief Template for image view to be specialized by graphics api. template -class ImageViewT final : public ImageView +class ImageView final : public ImageViewBase { - ImageViewT(const ImageViewT&) = delete; - ImageViewT& operator=(const ImageViewT&) = delete; + ImageView(const ImageView&) = delete; + ImageView& operator=(const ImageView&) = delete; public: - ImageViewT() noexcept = delete; // template class expected to be specialized - ImageViewT( ImageViewT&&) noexcept = delete; // template class expected to be specialized - ImageViewT& operator=( ImageViewT&&) noexcept = delete; // template class expected to be specialized + ImageView() noexcept = delete; // template class expected to be specialized + ImageView( ImageView&&) noexcept = delete; // template class expected to be specialized + ImageView& operator=( ImageView&&) noexcept = delete; // template class expected to be specialized - static_assert(sizeof(ImageViewT) != sizeof(ImageView)); // Ensure this class template is specialized (and not used as-is) -}; - - -/// @brief Base class for a sampler object. -/// Is subclassed for each graphics API. -class Sampler -{ - Sampler(const Sampler&) = delete; - Sampler& operator=(const Sampler&) = delete; -public: - template using tApiDerived = SamplerT; // make apiCast work! -protected: - Sampler() noexcept {} -}; - - -/// @brief Template for sampler to be specialized by Vulkan graphics api. -template -class SamplerT final : public Sampler -{ - SamplerT(const SamplerT&) = delete; - SamplerT& operator=(const SamplerT&) = delete; -public: - SamplerT() noexcept = delete; // template class expected to be specialized - SamplerT(SamplerT&&) noexcept = delete; // template class expected to be specialized - SamplerT& operator=(SamplerT&&) noexcept = delete;// template class expected to be specialized - - static_assert(sizeof(SamplerT) != sizeof(Sampler)); // Ensure this class template is specialized (and not used as-is) -}; - - -enum class SamplerAddressMode { - Undefined = 0, - Repeat = 1, - MirroredRepeat = 2, - ClampEdge = 3, - ClampBorder = 4, - MirroredClampEdge = 5, - End -}; - - -enum class SamplerFilter { - Undefined = 0, - Nearest = 1, - Linear = 2 -}; - - -enum class SamplerBorderColor { - TransparentBlackFloat = 0, - TransparentBlackInt = 1, - OpaqueBlackFloat = 2, - OpaqueBlackInt = 3, - OpaqueWhiteFloat = 4, - OpaqueWhiteInt = 5 + static_assert(sizeof(ImageView) != sizeof(ImageViewBase)); // Ensure this class template is specialized (and not used as-is) }; @@ -176,7 +122,10 @@ enum TEXTURE_TYPE TT_RENDER_TARGET_WITH_STORAGE, TT_RENDER_TARGET_TRANSFERSRC, TT_RENDER_TARGET_SUBPASS, + TT_RENDER_TARGET_LOCAL_READ, + TT_RENDER_TARGET_LOCAL_READ_TRANSIENT, TT_DEPTH_TARGET, + TT_DEPTH_TARGET_LOCAL_READ, TT_COMPUTE_TARGET, TT_COMPUTE_STORAGE, TT_CPU_UPDATE, @@ -218,39 +167,25 @@ struct CreateTexObjectInfo TEXTURE_TYPE TexType = TEXTURE_TYPE::TT_NORMAL; TEXTURE_FLAGS Flags = TEXTURE_FLAGS::None; const char* pName = nullptr; - uint32_t Msaa = 1; ///< number of msaa samples per pixel (ie 1, 2, 4, etc). Default to 1 (no msaa) + Msaa Msaa = Msaa::Samples1; ///< number of msaa samples per pixel (ie 1, 2, 4, etc). Default to 1 (no msaa) SamplerFilter FilterMode = SamplerFilter::Undefined; //default to picking from a default dependant on the texture format SamplerAddressMode SamplerMode = SamplerAddressMode::Undefined; //default to picking from a default dependant on the texture type bool UnNormalizedCoordinates = false; }; -/// Parameters for CreateTextureObject -struct CreateSamplerObjectInfo -{ - SamplerAddressMode Mode = SamplerAddressMode::Repeat; - SamplerFilter Filter = SamplerFilter::Linear; - SamplerFilter MipFilter = SamplerFilter::Linear; - SamplerBorderColor BorderColor = SamplerBorderColor::TransparentBlackFloat; - bool UnnormalizedCoordinates = false; - float MipBias = 0.0f; - float MinLod = 0.0f; - float MaxLod = FLT_MAX; - float Anisotropy = 4.0f; -}; - - /// Create texture (generally for render target usage) template -TextureT CreateTextureObject(T_GFXAPI& gfxApi, const CreateTexObjectInfo& texInfo) +Texture CreateTextureObject( T_GFXAPI&, const CreateTexObjectInfo&, MemoryPool* pPool = nullptr) { - assert(0 && "Expecting CreateTextureObject (per graphics api) to be used"); + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); + assert( 0 && "Expecting CreateTextureObject (per graphics api) to be used" ); return {}; } /// Create texture (generally for render target usage) template -TextureT CreateTextureObject(T_GFXAPI& gfxApi, uint32_t uiWidth, uint32_t uiHeight, TextureFormat Format, TEXTURE_TYPE TexType, const char* pName, uint32_t Msaa = 1, TEXTURE_FLAGS Flags = TEXTURE_FLAGS::None) +Texture CreateTextureObject(T_GFXAPI& gfxApi, uint32_t uiWidth, uint32_t uiHeight, TextureFormat Format, TEXTURE_TYPE TexType, const char* pName, Msaa Msaa = Msaa::Samples1, TEXTURE_FLAGS Flags = TEXTURE_FLAGS::None) { CreateTexObjectInfo createInfo{}; createInfo.uiWidth = uiWidth; @@ -265,47 +200,67 @@ TextureT CreateTextureObject(T_GFXAPI& gfxApi, uint32_t uiWidth, uint3 /// Create texture (unique_ptr) (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. template -std::unique_ptr CreateTextureObject(GraphicsApiBase& gfxApi, const CreateTexObjectInfo& texInfo) +std::unique_ptr CreateTextureObject(GraphicsApiBase& gfxApi, const CreateTexObjectInfo& texInfo) { - auto pTexture = std::make_unique>(); + auto pTexture = std::make_unique>(); *pTexture = std::move(CreateTextureObject(static_cast(gfxApi), texInfo)); return pTexture; } /// Create texture from a memory buffer. template -TextureT CreateTextureFromBuffer( T_GFXAPI& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr ) +Texture CreateTextureFromBuffer( T_GFXAPI& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr ) { + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); assert( 0 && "Expecting CreateTextureFromBuffer (per graphics api) to be used" ); return {}; } /// Create texture (unique_ptr) (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. template -std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr ) +std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName = nullptr ) { - auto pTexture = std::make_unique>(); + auto pTexture = std::make_unique>(); *pTexture = std::move( CreateTextureFromBuffer( static_cast( gfxApi ), pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, pName ) ); return pTexture; } +/// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) +template +Texture CreateTextureObjectView( T_GFXAPI&, const Texture& original, TextureFormat viewFormat ) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); + assert( 0 && "Expecting CreateTextureObjectView (per graphics api) to be used" ); + return {}; +} + + /// Release a texture. /// Must be specialized for the graphics api - will give linker error if called by application code. template -void ReleaseTexture(T_GFXAPI& gfxApi, TextureT*); +void ReleaseTexture(T_GFXAPI& gfxApi, Texture*) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); + assert( 0 && "Expecting ReleaseTexture (per graphics api) to be used" ); +} /// Release an image. /// Must be specialized for the graphics api - will give linker error if called by application code. template -void ReleaseImage( T_GFXAPI& gfxApi, ImageT* ); +void ReleaseImage( T_GFXAPI& gfxApi, Image* ) +{ + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); + assert( 0 && "Expecting ReleaseImage (per graphics api) to be used" ); +} /// Create a texture image view /// Must be specialized for the graphics api - will give linker error if called by application code. template -ImageViewT CreateImageView( T_GFXAPI& gfxApi, const ImageT< T_GFXAPI>& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t firstFace, ImageViewType viewType ) +ImageView CreateImageView( T_GFXAPI& gfxApi, const Image< T_GFXAPI>& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t firstFace, ImageViewType viewType ) { + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); assert( 0 && "Expecting CreateImageView (per graphics api) to be used" ); return {}; } @@ -313,32 +268,8 @@ ImageViewT CreateImageView( T_GFXAPI& gfxApi, const ImageT< T_GFXAPI>& /// Release a texture image view. /// Must be specialized for the graphics api - will give linker error if called by application code. template -void ReleaseImageView( T_GFXAPI& gfxApi, ImageViewT* ); - -/// Create a texture sampler (with some commonly used parameters) -template -SamplerT CreateSampler( T_GFXAPI& gfxApi, SamplerAddressMode SamplerMode, SamplerFilter FilterMode, SamplerBorderColor BorderColor, float MipBias ) -{ - CreateSamplerObjectInfo createInfo{}; - createInfo.Mode = SamplerMode; - createInfo.Filter = FilterMode; - createInfo.MipFilter = FilterMode, - createInfo.BorderColor = BorderColor; - createInfo.MipBias = MipBias; - return CreateSampler( gfxApi, createInfo ); -} - -/// Template specialization for Vulkan CreateSampler -/// Create a texture sampler (must be specialized for the graphics api) -/// Must be specialized for the graphics api - will give linker error if called by application code. -template -SamplerT CreateSampler( T_GFXAPI& gfxApi, const CreateSamplerObjectInfo&) +void ReleaseImageView( T_GFXAPI& gfxApi, ImageView* ) { - assert( 0 && "Expecting CreateSampler (per graphics api) to be used" ); - return {}; + static_assert(sizeof( T_GFXAPI ) != sizeof( T_GFXAPI ), "Must use the specialized version of this function. Your are likely missing #include \"texture//texture.hpp\""); + assert( 0 && "Expecting ReleaseImageView (per graphics api) to be used" ); } - -/// Release a texture sampler. -/// Must be specialized for the graphics api - will give linker error if called by application code. -template -void ReleaseSampler(T_GFXAPI& gfxApi, SamplerT*); diff --git a/framework/code/texture/textureFormat.cpp b/framework/code/texture/textureFormat.cpp index 8b29a79..ace39d9 100644 --- a/framework/code/texture/textureFormat.cpp +++ b/framework/code/texture/textureFormat.cpp @@ -1,10 +1,9 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2023 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #include "textureFormat.hpp" @@ -172,3 +171,156 @@ bool FormatIsSrgb( TextureFormat format ) return false; } } + +//----------------------------------------------------------------------------- +size_t FormatBytesPerPixel( TextureFormat format ) +//----------------------------------------------------------------------------- +{ + switch (format) + { + case TextureFormat::R4G4_UNORM_PACK8: + case TextureFormat::R8_UNORM: + case TextureFormat::R8_SNORM: + case TextureFormat::R8_USCALED: + case TextureFormat::R8_SSCALED: + case TextureFormat::R8_UINT: + case TextureFormat::R8_SINT: + case TextureFormat::R8_SRGB: + case TextureFormat::S8_UINT: + return 1; + case TextureFormat::R8G8_UNORM: + case TextureFormat::R8G8_SNORM: + case TextureFormat::R8G8_USCALED: + case TextureFormat::R8G8_SSCALED: + case TextureFormat::R8G8_UINT: + case TextureFormat::R8G8_SINT: + case TextureFormat::R8G8_SRGB: + case TextureFormat::R4G4B4A4_UNORM_PACK16: + case TextureFormat::B4G4R4A4_UNORM_PACK16: + case TextureFormat::R5G6B5_UNORM_PACK16: + case TextureFormat::B5G6R5_UNORM_PACK16: + case TextureFormat::R5G5B5A1_UNORM_PACK16: + case TextureFormat::B5G5R5A1_UNORM_PACK16: + case TextureFormat::A1R5G5B5_UNORM_PACK16: + case TextureFormat::R16_UNORM: + case TextureFormat::R16_SNORM: + case TextureFormat::R16_USCALED: + case TextureFormat::R16_SSCALED: + case TextureFormat::R16_UINT: + case TextureFormat::R16_SINT: + case TextureFormat::R16_SFLOAT: + case TextureFormat::D16_UNORM: + case TextureFormat::R12X4_UNORM_PACK16: + case TextureFormat::A4R4G4B4_UNORM_PACK16: + case TextureFormat::A4B4G4R4_UNORM_PACK16: + return 2; + case TextureFormat::R8G8B8_UNORM: + case TextureFormat::R8G8B8_SNORM: + case TextureFormat::R8G8B8_USCALED: + case TextureFormat::R8G8B8_SSCALED: + case TextureFormat::R8G8B8_UINT: + case TextureFormat::R8G8B8_SINT: + case TextureFormat::R8G8B8_SRGB: + case TextureFormat::B8G8R8_UNORM: + case TextureFormat::B8G8R8_SNORM: + case TextureFormat::B8G8R8_USCALED: + case TextureFormat::B8G8R8_SSCALED: + case TextureFormat::B8G8R8_UINT: + case TextureFormat::B8G8R8_SINT: + case TextureFormat::B8G8R8_SRGB: + return 3; + case TextureFormat::R8G8B8A8_UNORM: + case TextureFormat::R8G8B8A8_SNORM: + case TextureFormat::R8G8B8A8_USCALED: + case TextureFormat::R8G8B8A8_SSCALED: + case TextureFormat::R8G8B8A8_UINT: + case TextureFormat::R8G8B8A8_SINT: + case TextureFormat::R8G8B8A8_SRGB: + case TextureFormat::B8G8R8A8_UNORM: + case TextureFormat::B8G8R8A8_SNORM: + case TextureFormat::B8G8R8A8_USCALED: + case TextureFormat::B8G8R8A8_SSCALED: + case TextureFormat::B8G8R8A8_UINT: + case TextureFormat::B8G8R8A8_SINT: + case TextureFormat::B8G8R8A8_SRGB: + case TextureFormat::A8B8G8R8_UNORM_PACK32: + case TextureFormat::A8B8G8R8_SNORM_PACK32: + case TextureFormat::A8B8G8R8_USCALED_PACK32: + case TextureFormat::A8B8G8R8_SSCALED_PACK32: + case TextureFormat::A8B8G8R8_UINT_PACK32: + case TextureFormat::A8B8G8R8_SINT_PACK32: + case TextureFormat::A8B8G8R8_SRGB_PACK32: + case TextureFormat::A2R10G10B10_UNORM_PACK32: + case TextureFormat::A2R10G10B10_SNORM_PACK32: + case TextureFormat::A2R10G10B10_USCALED_PACK32: + case TextureFormat::A2R10G10B10_SSCALED_PACK32: + case TextureFormat::A2R10G10B10_UINT_PACK32: + case TextureFormat::A2R10G10B10_SINT_PACK32: + case TextureFormat::A2B10G10R10_UNORM_PACK32: + case TextureFormat::A2B10G10R10_SNORM_PACK32: + case TextureFormat::A2B10G10R10_USCALED_PACK32: + case TextureFormat::A2B10G10R10_SSCALED_PACK32: + case TextureFormat::A2B10G10R10_UINT_PACK32: + case TextureFormat::A2B10G10R10_SINT_PACK32: + case TextureFormat::R16G16_UNORM: + case TextureFormat::R16G16_SNORM: + case TextureFormat::R16G16_USCALED: + case TextureFormat::R16G16_SSCALED: + case TextureFormat::R16G16_UINT: + case TextureFormat::R16G16_SINT: + case TextureFormat::R16G16_SFLOAT: + case TextureFormat::R32_UINT: + case TextureFormat::R32_SINT: + case TextureFormat::R32_SFLOAT: + case TextureFormat::B10G11R11_UFLOAT_PACK32: + case TextureFormat::E5B9G9R9_UFLOAT_PACK32: + case TextureFormat::X8_D24_UNORM_PACK32: + case TextureFormat::D32_SFLOAT: + return 4; + case TextureFormat::R16G16B16_UNORM: + case TextureFormat::R16G16B16_SNORM: + case TextureFormat::R16G16B16_USCALED: + case TextureFormat::R16G16B16_SSCALED: + case TextureFormat::R16G16B16_UINT: + case TextureFormat::R16G16B16_SINT: + case TextureFormat::R16G16B16_SFLOAT: + return 6; + case TextureFormat::R32G32B32_UINT: + case TextureFormat::R32G32B32_SINT: + case TextureFormat::R32G32B32_SFLOAT: + return 12; + case TextureFormat::R32G32B32A32_UINT: + case TextureFormat::R32G32B32A32_SINT: + case TextureFormat::R32G32B32A32_SFLOAT: + return 16; + case TextureFormat::R16G16B16A16_UNORM: + case TextureFormat::R16G16B16A16_SNORM: + case TextureFormat::R16G16B16A16_USCALED: + case TextureFormat::R16G16B16A16_SSCALED: + case TextureFormat::R16G16B16A16_UINT: + case TextureFormat::R16G16B16A16_SINT: + case TextureFormat::R16G16B16A16_SFLOAT: + case TextureFormat::R64_UINT: + case TextureFormat::R64_SINT: + case TextureFormat::R64_SFLOAT: + case TextureFormat::R32G32_UINT: + case TextureFormat::R32G32_SINT: + case TextureFormat::R32G32_SFLOAT: + case TextureFormat::R64G64_UINT: + case TextureFormat::R64G64_SINT: + case TextureFormat::R64G64_SFLOAT: + return 8; + return 32; + case TextureFormat::R64G64B64_UINT: + case TextureFormat::R64G64B64_SINT: + case TextureFormat::R64G64B64_SFLOAT: + return 48; + case TextureFormat::R64G64B64A64_UINT: + case TextureFormat::R64G64B64A64_SINT: + case TextureFormat::R64G64B64A64_SFLOAT: + return 64; + case TextureFormat::UNDEFINED: + default: + return 0; + } +} diff --git a/framework/code/texture/textureFormat.hpp b/framework/code/texture/textureFormat.hpp index 3b9f4f8..bacdf85 100644 --- a/framework/code/texture/textureFormat.hpp +++ b/framework/code/texture/textureFormat.hpp @@ -1,11 +1,11 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #pragma once +#include /// @brief Texture formats that may be valid for creating texture surfaces/resources. /// Availability wil depend on the graphics api and hardware/driver. @@ -270,3 +270,17 @@ bool FormatHasDepth(TextureFormat); bool FormatIsCompressed(TextureFormat); /// @return true if the given format is sRGB, return false if linear bool FormatIsSrgb(TextureFormat); +/// @return number of bytes per pixel for this format (or 0 for block/unsupported formats) +size_t FormatBytesPerPixel(TextureFormat); + + +/// Multi sampling flags +enum class Msaa { + Samples1 = 1, + Samples2 = 2, + Samples4 = 4, + Samples8 = 8, + Samples16 = 16, + Samples32 = 32, + Samples64 = 64 +}; diff --git a/framework/code/texture/textureManager.cpp b/framework/code/texture/textureManager.cpp index ed8c1ea..c0d87f0 100644 --- a/framework/code/texture/textureManager.cpp +++ b/framework/code/texture/textureManager.cpp @@ -1,10 +1,9 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #include "system/assetManager.hpp" #include "textureManager.hpp" @@ -12,28 +11,29 @@ #include "loaderPpm.hpp" #include -TextureManager::TextureManager() noexcept +TextureManagerBase::TextureManagerBase( AssetManager& rAssetManager ) noexcept + : m_AssetManager( rAssetManager ) { } -TextureManager::~TextureManager() +TextureManagerBase::~TextureManagerBase() { Release(); } -bool TextureManager::Initialize() +bool TextureManagerBase::Initialize(uint32_t numWorkerThreads) { - if (m_LoadingThreadWorker.Initialize("TextureThreadWorker", 4) <= 0) + if (m_LoadingThreadWorker.Initialize("TextureThreadWorker", numWorkerThreads) <= 0) return false; return m_Loader->Initialize(); } -void TextureManager::Release() +void TextureManagerBase::Release() { m_LoadingThreadWorker.Terminate(); } -std::unique_ptr TextureManager::CreateTextureObject( GraphicsApiBase& gfxApi, uint32_t Width, uint32_t Height, TextureFormat Format, TEXTURE_TYPE TexType, const char* pName, uint32_t Msaa, TEXTURE_FLAGS Flags ) +const TextureBase* TextureManagerBase::CreateTextureObject( uint32_t Width, uint32_t Height, TextureFormat Format, TEXTURE_TYPE TexType, const char* pName, Msaa Msaa, TEXTURE_FLAGS Flags ) { CreateTexObjectInfo createInfo{}; createInfo.uiWidth = Width; @@ -43,5 +43,5 @@ std::unique_ptr TextureManager::CreateTextureObject( GraphicsApiBase& g createInfo.Flags = Flags; createInfo.pName = pName; createInfo.Msaa = Msaa; - return CreateTextureObject( gfxApi, createInfo ); + return CreateTextureObject( createInfo ); } diff --git a/framework/code/texture/textureManager.hpp b/framework/code/texture/textureManager.hpp index 86fb834..df7d8c1 100644 --- a/framework/code/texture/textureManager.hpp +++ b/framework/code/texture/textureManager.hpp @@ -1,14 +1,14 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #pragma once #include #include #include +#include /// /// Texture file loading and tracking @@ -19,52 +19,56 @@ // Forward declarations class AssetManager; -class TextureKtx; -class TexturePpm; -class Texture; -class Sampler; +class TextureKtxBase; +class TexturePpmBase; +class TextureBase; +class SamplerBase; class GraphicsApiBase; -template class TextureManagerT; +template class TextureManager; -class TextureManager +class TextureManagerBase { - TextureManager(const TextureManager&) = delete; - TextureManager& operator=(const TextureManager&) = delete; + TextureManagerBase(const TextureManagerBase&) = delete; + TextureManagerBase& operator=(const TextureManagerBase&) = delete; template static auto ExecutePathManipulators(std::string& filename, T&& currentManipulator, TT && ... subsequentManipulators); protected: - TextureManager() noexcept; + TextureManagerBase( AssetManager& ) noexcept; virtual void Release(); - bool Initialize(); + bool Initialize(uint32_t numWorkerThreads = 4); public: - virtual ~TextureManager(); - template using tApiDerived = TextureManagerT; // make apiCast work! + virtual ~TextureManagerBase(); + template using tApiDerived = TextureManager; // make apiCast work! /// @brief Load a texture if we haven't already loaded it (into the slot 'textureName'), otherwise return the previously loaded texture /// @param rAssetManager asset manager to use to load the file /// @param textureName name of texture (key in lookup) /// @param ...pathnameManipulators variadic functors to manipulate the textureName into a loadable image filename (eg change extension or path) /// @return pointer to loaded texture info - template - const Texture* GetOrLoadTexture(AssetManager& rAssetManager, const std::string& textureName, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators); + template || std::is_same_v, bool> = true, typename... T_PATHMANIPULATOR> + const TextureBase* GetOrLoadTexture(const std::string& textureName, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators); /// @brief Load a texture if we haven't already loaded it into a named 'slot', otherwise return the previously loaded texture /// @param rAssetManager asset manager to use to load the file /// @param textureName name of texture (key in lookup) /// @param ...pathnameManipulators variadic functors to manipulate the textureName into a loadable image filename (eg change extension or path) /// @return pointer to loaded texture info - template - const Texture* GetOrLoadTexture(const std::string& textureSlotName, AssetManager& rAssetManager, const std::string& filename, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators); + template + const TextureBase* GetOrLoadTexture(const std::string& textureSlotName, const std::string& filename, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators); template - void BatchLoad(AssetManager& rAssetManager, const std::span textureNames, const Sampler& defaultSampler, T_PATHMANIPULATOR && ... pathnameManipulators); + void BatchLoad(const std::span textureNames, const SamplerBase& defaultSampler, T_PATHMANIPULATOR && ... pathnameManipulators); /// @brief Find a texture (by slot name) that may be already loaded /// @param textureSlotName name to look for /// @return pointer to already loaded texture, or null - virtual const Texture* GetTexture(const std::string& textureSlotName) const = 0; + virtual const TextureBase* GetTexture(const std::string& textureSlotName) const = 0; + + /// @brief Helper to return the ktx file loader directly. If this throws a compile error then .cpp that includes this file is missing #include "texture/[gfxapi]/loaderKtx.hpp" + TextureKtxBase* GetLoader() const { return m_Loader.get(); } + TexturePpmBase* GetLoaderPpm() const { return m_LoaderPpm.get(); } /// @brief Set the pathname manipulators used by GetOrLoadTexture if it is not supplied a pathnameManipulators parameter. /// @param ...pathnameManipulators variadic functors to manipulate the textureName into a loadable image filename (eg change extension or path) @@ -72,34 +76,35 @@ class TextureManager void SetDefaultFilenameManipulators(T_PATHMANIPULATOR && ... pathnameManipulators); /// Create texture (generally for render target usage) - std::unique_ptr CreateTextureObject(GraphicsApiBase&, uint32_t uiWidth, uint32_t uiHeight, TextureFormat Format, TEXTURE_TYPE TexType, const char* pName, uint32_t Msaa = 1, TEXTURE_FLAGS Flags = TEXTURE_FLAGS::None); + const TextureBase* CreateTextureObject( uint32_t uiWidth, uint32_t uiHeight, TextureFormat Format, TEXTURE_TYPE TexType, const char* pName, Msaa Msaa = Msaa::Samples1, TEXTURE_FLAGS Flags = TEXTURE_FLAGS::None ); /// Create texture (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. Must be implemented per graphics api - virtual std::unique_ptr CreateTextureObject(GraphicsApiBase&, const CreateTexObjectInfo& texInfo) = 0; + virtual const TextureBase* CreateTextureObject( const CreateTexObjectInfo& texInfo ) = 0; /// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) - virtual std::unique_ptr CreateTextureObjectView( GraphicsApiBase& gfxApi, const Texture& original, TextureFormat viewFormat ) = 0; + virtual const TextureBase* CreateTextureObjectView( const TextureBase& original, TextureFormat viewFormat, std::string name ) = 0; /// Create texture from a block of texture data in memory (with correct format, span etc). - virtual std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName) = 0; + virtual const TextureBase* CreateTextureFromBuffer( const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, std::string name) = 0; /// Get a 'default' sampler for the given address mode (all other sampler settings assumed to be 'normal' ie linearly sampled etc) - virtual const Sampler* const GetSampler( SamplerAddressMode ) const = 0; + virtual const SamplerBase* const GetSampler( SamplerAddressMode ) const = 0; protected: - const Texture* GetOrLoadTexture_( const std::string& textureSlotName, AssetManager& rAssetManager, const std::string& filename, const SamplerAddressMode& sampler ) + const TextureBase* GetOrLoadTexture_( const std::string& textureSlotName, const std::string& filename, const SamplerAddressMode& sampler ) { - return GetOrLoadTexture_( textureSlotName, rAssetManager, filename, *GetSampler( sampler ) ); + return GetOrLoadTexture_( textureSlotName, filename, *GetSampler( sampler ) ); } - virtual const Texture* GetOrLoadTexture_( const std::string& textureSlotName, AssetManager& rAssetManager, const std::string& filename, const Sampler& sampler ) = 0; - virtual void BatchLoad(AssetManager& rAssetManager, const std::span>, const Sampler& defaultSampler) = 0; + virtual const TextureBase* GetOrLoadTexture_( const std::string& textureSlotName, const std::string& filename, const SamplerBase& sampler ) = 0; + virtual void BatchLoad(const std::span>, const SamplerBase& defaultSampler) = 0; protected: - std::unique_ptr m_Loader; - std::unique_ptr m_LoaderPpm; - std::function m_DefaultFilenameManipulator = [](std::string&) {return; }; - CWorker m_LoadingThreadWorker; + AssetManager& m_AssetManager; + std::unique_ptr m_Loader; + std::unique_ptr m_LoaderPpm; + std::function m_DefaultFilenameManipulator = [](std::string&) {return; }; + ThreadWorker m_LoadingThreadWorker; }; @@ -107,25 +112,28 @@ class TextureManager /// This template is expected to be specialized. /// @tparam T_GFXAPI template -class TextureManagerT final : public TextureManager +class TextureManager final : public TextureManagerBase { - TextureManagerT() noexcept = delete; // Error if we use this non specialized version of the TextureManagerT. - ~TextureManagerT() override = delete; // Error if we use this non specialized version of the TextureManagerT. + TextureManager() noexcept = delete; // Error if we use this non specialized version of the TextureManager. + ~TextureManager() override = delete; // Error if we use this non specialized version of the TextureManager. + + static_assert(sizeof( TextureManager ) != sizeof( TextureManagerBase )); // Ensure this class template is specialized (and not used as-is) }; /// @brief Helper class/functor to prefix filename with a (given) directory string -/// Can be passed as a parameter to TextureManager::SetDefaultFilenameManipulators or TextureManager::GetOrLoadTexture +/// Can be passed as a parameter to TextureManagerBase::SetDefaultFilenameManipulators or TextureManagerBase::GetOrLoadTexture struct PathManipulator_PrefixDirectory { /// @param prefix to change to put before filename (eg "Textures/") - PathManipulator_PrefixDirectory(std::string prefix) noexcept : m_prefix(std::move(prefix)) {}; - void operator()(std::string& filename) const noexcept { filename.assign(m_prefix + filename); }; - std::string m_prefix; + PathManipulator_PrefixDirectory(std::string prefix) noexcept : m_prefix(prefix) {}; + void operator()(std::string& filename) const noexcept { filename.assign((m_prefix / filename).string()); }; + void operator()(std::filesystem::path& filename) const noexcept { filename.assign((m_prefix / filename).string()); }; + std::filesystem::path m_prefix; }; /// @brief Helper class/functor to change filename extension -/// Can be passed as a parameter to TextureManager::SetDefaultFilenameManipulators or TextureManager::GetOrLoadTexture +/// Can be passed as a parameter to TextureManagerBase::SetDefaultFilenameManipulators or TextureManagerBase::GetOrLoadTexture struct PathManipulator_ChangeExtension { /// @param extension to change to (eg ".ktx") @@ -142,7 +150,7 @@ struct PathManipulator_ChangeExtension // Template implementations // template -auto TextureManager::ExecutePathManipulators(std::string& filename, T&& currentManipulator, TT && ... subsequentManipulators) +auto TextureManagerBase::ExecutePathManipulators(std::string& filename, T&& currentManipulator, TT && ... subsequentManipulators) { currentManipulator(filename); if constexpr (sizeof...(subsequentManipulators) == 0) @@ -151,8 +159,8 @@ auto TextureManager::ExecutePathManipulators(std::string& filename, T&& currentM ExecutePathManipulators(filename, subsequentManipulators...);// Recursively call the subsequent manipulator(s). } -template -const Texture* TextureManager::GetOrLoadTexture(AssetManager& rAssetManager, const std::string& textureName, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators) +template || std::is_same_v, bool>, typename... T_PATHMANIPULATOR> +const TextureBase* TextureManagerBase::GetOrLoadTexture(const std::string& textureName, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators) { if (textureName.empty()) return nullptr; @@ -165,11 +173,11 @@ const Texture* TextureManager::GetOrLoadTexture(AssetManager& rAssetManager, con m_DefaultFilenameManipulator(filename); else ExecutePathManipulators(filename, pathnameManipulators...); - return GetOrLoadTexture_(textureName, rAssetManager, filename, sampler); + return GetOrLoadTexture_(textureName, filename, sampler); } template -const Texture* TextureManager::GetOrLoadTexture(const std::string& textureSlotName, AssetManager& rAssetManager, const std::string& filename, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators) +const TextureBase* TextureManagerBase::GetOrLoadTexture(const std::string& textureSlotName, const std::string& filename, const T_SAMPLER& sampler, T_PATHMANIPULATOR && ... pathnameManipulators) { if (textureSlotName.empty()) return nullptr; @@ -184,11 +192,11 @@ const Texture* TextureManager::GetOrLoadTexture(const std::string& textureSlotNa m_DefaultFilenameManipulator(filename_); else ExecutePathManipulators(filename_, pathnameManipulators...); - return GetOrLoadTexture_(textureSlotName, rAssetManager, filename_, sampler); + return GetOrLoadTexture_(textureSlotName, filename_, sampler); } template -void TextureManager::BatchLoad(AssetManager& rAssetManager, const std::span textureNames, const Sampler& defaultSampler, T_PATHMANIPULATOR && ... pathnameManipulators) +void TextureManagerBase::BatchLoad(const std::span textureNames, const SamplerBase& defaultSampler, T_PATHMANIPULATOR && ... pathnameManipulators) { std::vector< std::pair> filenamesAndSlotNames; filenamesAndSlotNames.reserve(textureNames.size()); @@ -201,11 +209,11 @@ void TextureManager::BatchLoad(AssetManager& rAssetManager, const std::span -void TextureManager::SetDefaultFilenameManipulators(T_PATHMANIPULATOR && ... pathnameManipulators) +void TextureManagerBase::SetDefaultFilenameManipulators(T_PATHMANIPULATOR && ... pathnameManipulators) { m_DefaultFilenameManipulator = [... p = std::forward(pathnameManipulators)](std::string& filename) -> void { ExecutePathManipulators(filename, p ...); diff --git a/framework/code/texture/vulkan/imageWrapper.cpp b/framework/code/texture/vulkan/imageWrapper.cpp deleted file mode 100644 index aacc903..0000000 --- a/framework/code/texture/vulkan/imageWrapper.cpp +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#include "imageWrapper.hpp" -#include "memory/memory.hpp" -#include "vulkan/vulkan.hpp" - - -//----------------------------------------------------------------------------- -Wrap_VkImage::Wrap_VkImage() - : m_Usage{ MemoryUsage::Unknown } - , m_ImageInfo{} -//----------------------------------------------------------------------------- -{ -} - -//----------------------------------------------------------------------------- -Wrap_VkImage::~Wrap_VkImage() -//----------------------------------------------------------------------------- -{ - Release(); -} - -//----------------------------------------------------------------------------- -bool Wrap_VkImage::Initialize(Vulkan* pVulkan, const VkImageCreateInfo& ImageInfo, MemoryUsage Usage, const char* pName) -//----------------------------------------------------------------------------- -{ - // If we have a name, save it - if (pName != NULL) - { - m_Name = pName; - } - - // Need Vulkan objects to release ourselves - m_pVulkan = pVulkan; - m_ImageInfo = ImageInfo; - m_Usage = Usage; - - auto& memoryManager = pVulkan->GetMemoryManager(); - m_VmaImage = memoryManager.CreateImage(ImageInfo, Usage); - - if (m_VmaImage) - { - pVulkan->SetDebugObjectName(m_VmaImage.GetVkBuffer(), pName); - } - - return !!m_VmaImage; -} - -//----------------------------------------------------------------------------- -void Wrap_VkImage::Release() -//----------------------------------------------------------------------------- -{ - if (m_pVulkan) - { - auto& memoryManager = m_pVulkan->GetMemoryManager(); - memoryManager.Destroy(std::move(m_VmaImage)); - } - m_pVulkan = nullptr; - m_ImageInfo = {}; - m_Name.clear(); -} diff --git a/framework/code/texture/vulkan/imageWrapper.hpp b/framework/code/texture/vulkan/imageWrapper.hpp deleted file mode 100644 index 8c10a2b..0000000 --- a/framework/code/texture/vulkan/imageWrapper.hpp +++ /dev/null @@ -1,45 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ -#pragma once - -#include -#include -#include "memory/vulkan/memoryMapped.hpp" - -// Forward declarations -class Vulkan; -template class MemoryAllocatedBuffer; -enum class MemoryUsage; - - -/// @brief Wrapper around VkImage -/// Owns the image's memory buffer -class Wrap_VkImage -{ - // Functions - Wrap_VkImage(const Wrap_VkImage&) = delete; - Wrap_VkImage& operator=(const Wrap_VkImage&) = delete; -public: - Wrap_VkImage(); - ~Wrap_VkImage(); - - bool Initialize(Vulkan* pVulkan, const VkImageCreateInfo& ImageInfo, MemoryUsage TypeFlag, const char* pName = nullptr); - void Release(); - - const auto& GetImageInfo() const { return m_ImageInfo; } - - // Attributes -public: - std::string m_Name; - MemoryAllocatedBuffer m_VmaImage; - -private: - Vulkan* m_pVulkan = nullptr; - MemoryUsage m_Usage; - VkImageCreateInfo m_ImageInfo; -}; diff --git a/framework/code/texture/vulkan/loaderKtx.cpp b/framework/code/texture/vulkan/loaderKtx.cpp index b979d68..7bf0bf1 100644 --- a/framework/code/texture/vulkan/loaderKtx.cpp +++ b/framework/code/texture/vulkan/loaderKtx.cpp @@ -1,6 +1,6 @@ //============================================================================================================ // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -14,19 +14,19 @@ // Static // Set to TextureKtxVulkan before calling upload (for the callbacks to use). Cleaner than hacking on the vulkan allocator, although still icky. -static thread_local TextureKtxT* sUploadingTextureKtxVulkan = nullptr; +static thread_local TextureKtx* sUploadingTextureKtxVulkan = nullptr; -TextureKtxT::TextureKtxT(Vulkan& vulkan) noexcept : TextureKtx(), m_Vulkan(vulkan) +TextureKtx::TextureKtx(Vulkan& vulkan) noexcept : TextureKtxBase(), m_Vulkan(vulkan) { } -TextureKtxT::~TextureKtxT() noexcept +TextureKtx::~TextureKtx() noexcept {} -bool TextureKtxT::Initialize() +bool TextureKtx::Initialize() { - if (!TextureKtx::Initialize()) + if (!TextureKtxBase::Initialize()) return false; // Setup the ktx library's device info (ready for subsequent ktx texture data transfers to the GPU) @@ -38,11 +38,11 @@ bool TextureKtxT::Initialize() return false; // Callbacks to override the allocation/bind functions used by ktxTexture_VkUploadEx - // We want to use our memorymanager (and the VMA allocator under it) to do vulkan allocations so the allocations play nicely with the TextureT container) - m_VulkanDeviceInfo->vkFuncs.vkAllocateMemory = TextureKtxT::VkAllocateMemory; - m_VulkanDeviceInfo->vkFuncs.vkFreeMemory = TextureKtxT::VkFreeMemory; - m_VulkanDeviceInfo->vkFuncs.vkDestroyImage = TextureKtxT::VkDestroyImage; - m_VulkanDeviceInfo->vkFuncs.vkBindImageMemory = TextureKtxT::VkBindImageMemory; + // We want to use our memorymanager (and the VMA allocator under it) to do vulkan allocations so the allocations play nicely with the Texture container) + m_VulkanDeviceInfo->vkFuncs.vkAllocateMemory = TextureKtx::VkAllocateMemory; + m_VulkanDeviceInfo->vkFuncs.vkFreeMemory = TextureKtx::VkFreeMemory; + m_VulkanDeviceInfo->vkFuncs.vkDestroyImage = TextureKtx::VkDestroyImage; + m_VulkanDeviceInfo->vkFuncs.vkBindImageMemory = TextureKtx::VkBindImageMemory; const auto& gpuFeatures = m_Vulkan.GetGpuFeatures().Base.features; if (gpuFeatures.textureCompressionBC) @@ -55,16 +55,16 @@ bool TextureKtxT::Initialize() return true; } -void TextureKtxT::Release() +void TextureKtx::Release() { if (m_VulkanDeviceInfo) ktxVulkanDeviceInfo_Destruct(m_VulkanDeviceInfo.get()); m_VulkanDeviceInfo.release(); // we didnt own the pointer! - TextureKtx::Release(); + TextureKtxBase::Release(); } -uint32_t TextureKtxT::DetermineTranscodeOutputFormat() const +uint32_t TextureKtx::DetermineTranscodeOutputFormat() const { if (m_SupportsBcCompression && (m_FavorBcCompression || (!m_SupportsAstcCompression && !m_SupportsEtc2Compression))) return KTX_TTF_BC7_RGBA; // should be better quality than KTX_TTF_BC1_OR_3 but may take longer to transcode (untested) @@ -77,7 +77,7 @@ uint32_t TextureKtxT::DetermineTranscodeOutputFormat() const return KTX_TTF_RGBA32; } -TextureKtxFileWrapper TextureKtxT::Transcode(TextureKtxFileWrapper&& fileData) +TextureKtxFileWrapper TextureKtx::Transcode(TextureKtxFileWrapper&& fileData) { auto* const pKtxData = GetKtxTexture(fileData); if (pKtxData!=nullptr && ktxTexture_NeedsTranscoding(pKtxData) && pKtxData->classId == class_id::ktxTexture2_c) @@ -91,7 +91,7 @@ TextureKtxFileWrapper TextureKtxT::Transcode(TextureKtxFileWrapper&& fil return std::move(fileData); } -TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& fileData, SamplerT sampler) +TextureVulkan TextureKtx::LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& fileData, Sampler sampler) { auto* const pKtxData = GetKtxTexture(fileData); if (!pKtxData) @@ -118,7 +118,7 @@ TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileW sUploadingTextureKtxVulkan = nullptr; // Take ownership of the image from the container holding images created during ktxTexture_VkUploadEx - ImageT allocatedImage{std::move( m_AllocatedImages.extract( m_AllocatedImages.find( uploadedTexture.image ) ).value() )}; + Image allocatedImage{std::move( m_AllocatedImages.extract( m_AllocatedImages.find( uploadedTexture.image ) ).value() )}; auto imageView = CreateImageView( vulkan, allocatedImage, VkToTextureFormat(uploadedTexture.imageFormat), uploadedTexture.levelCount, 0, uploadedTexture.layerCount, 0, (ImageViewType) uploadedTexture.viewType ); if (imageView.IsEmpty()) @@ -126,25 +126,15 @@ TextureVulkan TextureKtxT::LoadKtx(Vulkan& vulkan, const TextureKtxFileW ktxVulkanTexture_Destruct(&uploadedTexture, vulkan.m_VulkanDevice, nullptr); return {}; } - //SamplerT& samplerVulkan = static_cast&>(sampler); - //if (samplerVulkan.IsEmpty()) - //{ - // if (!CreateSampler(&vulkan, VK_SAMPLER_ADDRESS_MODE_REPEAT, SamplerFilter::Linear, VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, false, 0.0f, &sampler)) - // { - // vkDestroyImageView(vulkan.m_VulkanDevice, imageView, nullptr); - // ktxVulkanTexture_Destruct(&uploadedTexture, vulkan.m_VulkanDevice, nullptr); - // return {}; - // } - //} TextureFormat textureFormat = VkToTextureFormat(uploadedTexture.imageFormat); // Return the fully formed texture object - TextureVulkan texture{ uploadedTexture.width, uploadedTexture.height, uploadedTexture.depth, uploadedTexture.levelCount, 0, uploadedTexture.layerCount, 0, textureFormat, uploadedTexture.imageLayout, std::move(allocatedImage), std::move(sampler), std::move(imageView) }; + TextureVulkan texture{uploadedTexture.width, uploadedTexture.height, uploadedTexture.depth, uploadedTexture.levelCount, 0, uploadedTexture.layerCount, 0, textureFormat, uploadedTexture.imageLayout, VkClearValue{}, std::move( allocatedImage ), std::move( sampler ), std::move( imageView )}; return texture; } -TextureVulkan TextureKtxT::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler ) +TextureVulkan TextureKtx::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, Sampler sampler ) { auto ktxData = LoadFile( assetManager, pFileName ); if (!ktxData) @@ -165,7 +155,7 @@ static bool operator<(const MemoryAllocatedBuffer& a, co static bool operator<(const VkDeviceMemory& a, const MemoryAllocatedBuffer& b) { return a < b.GetVkBuffer(); } static bool operator<(const MemoryAllocatedBuffer& a, const VkDeviceMemory& b) { return a.GetVkBuffer() < b; } -/*static*/ VkResult TextureKtxT::VkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) +/*static*/ VkResult TextureKtx::VkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) { if (sUploadingTextureKtxVulkan) { @@ -181,7 +171,7 @@ static bool operator<(const MemoryAllocatedBuffer& a, co return vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory); } -/*static*/ void TextureKtxT::VkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) +/*static*/ void TextureKtx::VkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { if (sUploadingTextureKtxVulkan) { @@ -203,7 +193,7 @@ static bool operator<(const MemoryAllocatedBuffer& a, co return VkFreeMemory(device, memory, pAllocator); } -/*static*/ VkResult TextureKtxT::VkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) +/*static*/ VkResult TextureKtx::VkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) { if (sUploadingTextureKtxVulkan) { @@ -221,7 +211,7 @@ static bool operator<(const MemoryAllocatedBuffer& a, co return vkBindImageMemory(device, image, memory, memoryOffset); } -/*static*/ void TextureKtxT::VkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) +/*static*/ void TextureKtx::VkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) { if (sUploadingTextureKtxVulkan && image != VK_NULL_HANDLE) { @@ -238,15 +228,15 @@ static bool operator<(const MemoryAllocatedBuffer& a, co } /// @brief Function specialization -template<> -TextureT TextureKtx::LoadKtx( Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, SamplerT sampler ) -{ - return apiCast( this )->LoadKtx( vulkan, textureFile, std::move(sampler) ); -} +//template<> +//Texture TextureKtxBase::LoadKtx( Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, Sampler sampler ) +//{ +// return apiCast( this )->LoadKtx( vulkan, textureFile, std::move(sampler) ); +//} /// @brief Function specialization -template<> -TextureT TextureKtx::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler ) -{ - return apiCast( this )->LoadKtx( vulkan, assetManager, pFileName, std::move(sampler) ); -} +//template<> +//Texture TextureKtxBase::LoadKtx( Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, Sampler sampler ) +//{ +// return apiCast( this )->LoadKtx( vulkan, assetManager, pFileName, std::move(sampler) ); +//} diff --git a/framework/code/texture/vulkan/loaderKtx.hpp b/framework/code/texture/vulkan/loaderKtx.hpp index 21f41c1..1a5de8e 100644 --- a/framework/code/texture/vulkan/loaderKtx.hpp +++ b/framework/code/texture/vulkan/loaderKtx.hpp @@ -1,6 +1,6 @@ //============================================================================================================ // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -13,7 +13,7 @@ #include "../loaderKtx.hpp" #include "memory/vulkan/memoryMapped.hpp" #include "texture.hpp" -#include +#include #include #include @@ -21,20 +21,20 @@ struct ktxVulkanDeviceInfo; struct ktxTexture; class Vulkan; -template class TextureT; -template class SamplerT; -using TextureVulkan = TextureT; +template class Texture; +template class Sampler; +using TextureVulkan = Texture; /// @brief Class to handle loading KTX textures in to Vulkan memory template<> -class TextureKtxT : public TextureKtx +class TextureKtx : public TextureKtxBase { - TextureKtxT(const TextureKtxT&) = delete; - TextureKtxT& operator=(const TextureKtxT&) = delete; + TextureKtx(const TextureKtx&) = delete; + TextureKtx& operator=(const TextureKtx&) = delete; public: - TextureKtxT(Vulkan& vulkan) noexcept; - ~TextureKtxT() noexcept; + TextureKtx(Vulkan& vulkan) noexcept; + ~TextureKtx() noexcept; /// @brief Initialize this loader class /// @return true on success @@ -47,13 +47,13 @@ class TextureKtxT : public TextureKtx /// @param textureFile ktx file data we want to load as a vulkan texture /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure - TextureVulkan LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, SamplerT sampler); + TextureVulkan LoadKtx(Vulkan& vulkan, const TextureKtxFileWrapper& textureFile, Sampler sampler); /// @brief Load a ktx file and do the necessary upload etc to go from a cpu texture representation to Vulkan format /// @param filename of ktx (or ktx2) format file we want to load as a vulkan texture /// @param sampler sampler that loaded texture will take OWNERSHIP of /// @returns a &TextureVulkan, will be empty on failure - TextureVulkan LoadKtx(Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, SamplerT sampler); + TextureVulkan LoadKtx(Vulkan& vulkan, AssetManager& assetManager, const char* const pFileName, Sampler sampler); /// @brief Run the Ktx2 transcoding step (if needed) /// Will do nothing for textures that do not need transcoding. diff --git a/framework/code/texture/vulkan/sampler.cpp b/framework/code/texture/vulkan/sampler.cpp new file mode 100644 index 0000000..e77b221 --- /dev/null +++ b/framework/code/texture/vulkan/sampler.cpp @@ -0,0 +1,109 @@ +//============================================================================= +// +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "sampler.hpp" +#include "vulkan/vulkan.hpp" + +VkFilter EnumToVk(SamplerFilter s) { assert(s != SamplerFilter::Undefined && s <= SamplerFilter::Linear ); return VkFilter(int( s ) - 1); } +static_assert(VK_FILTER_NEAREST == int(SamplerFilter::Nearest) - 1); +static_assert(VK_FILTER_LINEAR == int(SamplerFilter::Linear) - 1); + +VkSamplerMipmapMode EnumToVkSamplerMipmapMode(SamplerFilter s) { assert(s != SamplerFilter::Undefined); return VkSamplerMipmapMode(int(s) - 1); } +static_assert(VK_SAMPLER_MIPMAP_MODE_NEAREST == int(SamplerFilter::Nearest) - 1); +static_assert(VK_SAMPLER_MIPMAP_MODE_LINEAR == int(SamplerFilter::Linear) - 1); + +constexpr VkSamplerAddressMode EnumToVk(SamplerAddressMode s) { assert(s != SamplerAddressMode::Undefined); return VkSamplerAddressMode(int(s) - 1); } +static_assert(VK_SAMPLER_ADDRESS_MODE_REPEAT == int(SamplerAddressMode::Repeat) -1); +static_assert(VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT == int(SamplerAddressMode::MirroredRepeat) - 1); +static_assert(VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE == int(SamplerAddressMode::ClampEdge) - 1); +static_assert(VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER == int(SamplerAddressMode::ClampBorder) - 1); +static_assert(VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE == int(SamplerAddressMode::MirroredClampEdge) - 1); + +constexpr VkBorderColor EnumToVk(SamplerBorderColor s) { return VkBorderColor(int(s)); } +static_assert(VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK == int(SamplerBorderColor::TransparentBlackFloat)); +static_assert(VK_BORDER_COLOR_INT_TRANSPARENT_BLACK == int(SamplerBorderColor::TransparentBlackInt)); +static_assert(VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK == int(SamplerBorderColor::OpaqueBlackFloat)); +static_assert(VK_BORDER_COLOR_INT_OPAQUE_BLACK == int(SamplerBorderColor::OpaqueBlackInt)); +static_assert(VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE == int(SamplerBorderColor::OpaqueWhiteFloat)); +static_assert(VK_BORDER_COLOR_INT_OPAQUE_WHITE == int(SamplerBorderColor::OpaqueWhiteInt)); + + +static_assert(int(SamplerAddressMode::Repeat) == VK_SAMPLER_ADDRESS_MODE_REPEAT + 1); +static_assert(int(SamplerAddressMode::MirroredRepeat) == VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT + 1); +static_assert(int(SamplerAddressMode::ClampEdge) == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE + 1); +static_assert(int(SamplerAddressMode::ClampBorder) == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER + 1); +static_assert(int(SamplerAddressMode::MirroredClampEdge) == VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE + 1); + +static_assert(int(SamplerFilter::Nearest) == VK_FILTER_NEAREST + 1); +static_assert(int(SamplerFilter::Linear) == VK_FILTER_LINEAR + 1); + +static_assert(int(SamplerBorderColor::TransparentBlackFloat) == VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK); +static_assert(int(SamplerBorderColor::TransparentBlackInt) == VK_BORDER_COLOR_INT_TRANSPARENT_BLACK); +static_assert(int(SamplerBorderColor::OpaqueBlackFloat) == VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK); +static_assert(int(SamplerBorderColor::OpaqueBlackInt) == VK_BORDER_COLOR_INT_OPAQUE_BLACK); +static_assert(int(SamplerBorderColor::OpaqueWhiteFloat) == VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE); +static_assert(int(SamplerBorderColor::OpaqueWhiteInt) == VK_BORDER_COLOR_INT_OPAQUE_WHITE); + +// +// Constructors/move-operators for Sampler. +// +Sampler::Sampler() noexcept + : m_Sampler( VK_NULL_HANDLE, VK_NULL_HANDLE ) +{} +Sampler::~Sampler() noexcept +{ +} +Sampler::Sampler( VkDevice device, VkSampler sampler ) noexcept + : m_Sampler( device, sampler ) +{} +Sampler::Sampler(Sampler&& src) noexcept + : m_Sampler( std::move( src.m_Sampler ) ) +{ +} +Sampler& Sampler::operator=(Sampler&& src ) noexcept +{ + if (this != &src) + { + m_Sampler = src.m_Sampler; + src.m_Sampler = {}; + } + return *this; +} + + +//----------------------------------------------------------------------------- +template<> +Sampler CreateSampler(Vulkan& vulkan, const CreateSamplerObjectInfo& createInfo) +//----------------------------------------------------------------------------- +{ + const bool anisotropyEnable = createInfo.Anisotropy > 1.0f && createInfo.Filter == SamplerFilter::Linear; + const VkSamplerCreateInfo SamplerInfo{ + .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, + .flags = 0, + .magFilter = EnumToVk(createInfo.Filter), + .minFilter = EnumToVk(createInfo.Filter), + .mipmapMode = EnumToVkSamplerMipmapMode(createInfo.MipFilter), + .addressModeU = EnumToVk(createInfo.Mode), + .addressModeV = EnumToVk(createInfo.Mode), + .addressModeW = EnumToVk(createInfo.Mode), + .mipLodBias = createInfo.MipBias, + .anisotropyEnable = anisotropyEnable ? VK_TRUE : VK_FALSE, + .maxAnisotropy = anisotropyEnable == VK_TRUE ? createInfo.Anisotropy : 1.0f, + .compareEnable = VK_FALSE, + .compareOp = VK_COMPARE_OP_NEVER, + .minLod = createInfo.MinLod, + .maxLod = createInfo.MaxLod, + .borderColor = EnumToVk(createInfo.BorderColor), + .unnormalizedCoordinates = createInfo.UnnormalizedCoordinates ? VK_TRUE : VK_FALSE }; + + VkSampler vkSampler; + VkResult retVal = vkCreateSampler(vulkan.m_VulkanDevice, &SamplerInfo, NULL, &vkSampler); + if (!CheckVkError("vkCreateSampler()", retVal)) + return {}; + return {vulkan.m_VulkanDevice, vkSampler}; +} + diff --git a/framework/code/texture/vulkan/sampler.hpp b/framework/code/texture/vulkan/sampler.hpp new file mode 100644 index 0000000..542207d --- /dev/null +++ b/framework/code/texture/vulkan/sampler.hpp @@ -0,0 +1,37 @@ +//============================================================================= +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "../sampler.hpp" +#include "vulkan/refHandle.hpp" +#include +#include + +class Vulkan; + +/// @brief Template specialization of sampler container for Vulkan graphics api. +template<> +class Sampler final : public SamplerBase +{ +public: + Sampler() noexcept; + ~Sampler() noexcept; + Sampler(VkDevice, VkSampler) noexcept; + Sampler(Sampler&& src) noexcept; + Sampler& operator=(Sampler&& src) noexcept; + Sampler Copy() const { return Sampler{*this}; } + + VkSampler GetVkSampler() const { return m_Sampler; } + bool IsEmpty() const { return m_Sampler == VK_NULL_HANDLE; } + +private: + Sampler( const Sampler& src ) noexcept { + m_Sampler = src.m_Sampler; + } + + RefHandle m_Sampler; +}; diff --git a/framework/code/texture/vulkan/texture.cpp b/framework/code/texture/vulkan/texture.cpp index 5a593f9..9f9ae88 100644 --- a/framework/code/texture/vulkan/texture.cpp +++ b/framework/code/texture/vulkan/texture.cpp @@ -1,44 +1,20 @@ //============================================================================= // -// Copyright (c) 2023 QUALCOMM Technologies Inc. +// Copyright (c) 2022 QUALCOMM Technologies Inc. // All Rights Reserved. // //============================================================================== #include "memory/vulkan/memoryMapped.hpp" #include "texture.hpp" -#include "imageWrapper.hpp" #include "vulkan/vulkan.hpp" +#include -VkFilter EnumToVk(SamplerFilter s) { assert(s != SamplerFilter::Undefined); return VkFilter(int( s ) - 1); } -static_assert(VK_FILTER_NEAREST == int(SamplerFilter::Nearest) - 1); -static_assert(VK_FILTER_LINEAR == int(SamplerFilter::Linear) - 1); - -VkSamplerMipmapMode EnumToVkSamplerMipmapMode(SamplerFilter s) { assert(s != SamplerFilter::Undefined); return VkSamplerMipmapMode(int(s) - 1); } -static_assert(VK_SAMPLER_MIPMAP_MODE_NEAREST == int(SamplerFilter::Nearest) - 1); -static_assert(VK_SAMPLER_MIPMAP_MODE_LINEAR == int(SamplerFilter::Linear) - 1); - -constexpr VkSamplerAddressMode EnumToVk(SamplerAddressMode s) { assert(s != SamplerAddressMode::Undefined); return VkSamplerAddressMode(int(s) - 1); } -static_assert(VK_SAMPLER_ADDRESS_MODE_REPEAT == int(SamplerAddressMode::Repeat) -1); -static_assert(VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT == int(SamplerAddressMode::MirroredRepeat) - 1); -static_assert(VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE == int(SamplerAddressMode::ClampEdge) - 1); -static_assert(VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER == int(SamplerAddressMode::ClampBorder) - 1); -static_assert(VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE == int(SamplerAddressMode::MirroredClampEdge) - 1); - -constexpr VkBorderColor EnumToVk(SamplerBorderColor s) { return VkBorderColor(int(s)); } -static_assert(VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK == int(SamplerBorderColor::TransparentBlackFloat)); -static_assert(VK_BORDER_COLOR_INT_TRANSPARENT_BLACK == int(SamplerBorderColor::TransparentBlackInt)); -static_assert(VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK == int(SamplerBorderColor::OpaqueBlackFloat)); -static_assert(VK_BORDER_COLOR_INT_OPAQUE_BLACK == int(SamplerBorderColor::OpaqueBlackInt)); -static_assert(VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE == int(SamplerBorderColor::OpaqueWhiteFloat)); -static_assert(VK_BORDER_COLOR_INT_OPAQUE_WHITE == int(SamplerBorderColor::OpaqueWhiteInt)); - - -TextureT::TextureT() noexcept +Texture::Texture() noexcept {} -TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, ImageT image, SamplerT sampler, ImageViewT imageView) noexcept - : Texture() +Texture::Texture(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkClearValue clearValue, ::Image image, ::Sampler sampler, ::ImageView imageView) noexcept + : TextureBase() , Width(width) , Height(height) , Depth(depth) @@ -46,18 +22,19 @@ TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint , Faces(faces) , Format(format) , ImageLayout(imageLayout) + , ClearValue(clearValue) , Image(std::move(image)) , Sampler(std::move(sampler)) , ImageView(std::move(imageView)) { } -/// @brief Construct TextureT from a pre-existing Vulkan image/memory handles. -/// @param image - ownership NOT passed in to this TextureT, beware of lifetime issues. -/// @param sampler - ownership passed to this TextureT. -/// @param imageView - ownership passed to this TextureT. -TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, SamplerT sampler, ImageViewT imageView) noexcept - : Texture() +/// @brief Construct Texture from a pre-existing Vulkan image/memory handles. +/// @param image - ownership NOT passed in to this Texture, beware of lifetime issues. +/// @param sampler - ownership passed to this Texture. +/// @param imageView - ownership passed to this Texture. +Texture::Texture(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkClearValue clearValue, VkImage image, VkDeviceMemory memory, ::Sampler sampler, ::ImageView imageView) noexcept + : TextureBase() , Width(width) , Height(height) , Depth(depth) @@ -67,6 +44,7 @@ TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint , FirstFace( firstFace ) , Format(format) , ImageLayout(imageLayout) + , ClearValue(clearValue) , Sampler(std::move(sampler)) , ImageView(std::move(imageView)) , Image({image, memory}) @@ -74,14 +52,14 @@ TextureT::TextureT(uint32_t width, uint32_t height, uint32_t depth, uint } // -// Constructors/move-operators for TextureT. +// Constructors/move-operators for Texture. // Ensures we are not leaking owned members. // -TextureT::TextureT(TextureT&& other) noexcept +Texture::Texture(Texture&& other) noexcept { *this = std::move(other); } -TextureT& TextureT::operator=(TextureT&& other) noexcept +Texture& Texture::operator=(Texture&& other) noexcept { if (this != &other) { @@ -95,6 +73,7 @@ TextureT& TextureT::operator=(TextureT&& other) noexcept FirstFace = other.FirstFace; Format = other.Format; ImageLayout = other.ImageLayout; + ClearValue = other.ClearValue; // Actually transfer ownership from 'other' Image = std::move(other.Image); Sampler = std::move(other.Sampler); @@ -103,15 +82,15 @@ TextureT& TextureT::operator=(TextureT&& other) noexcept return *this; } -TextureT::~TextureT() noexcept +Texture::~Texture() noexcept { - // Asserts to ensure we called ReleaseTexture on this already. + // Asserts to ensure we called Release on this already. assert(Image.IsEmpty()); assert(ImageView.IsEmpty()); assert(Sampler.IsEmpty()); } -void TextureT::Release(GraphicsApiBase* pGraphicsApi) +void Texture::Release(GraphicsApiBase* pGraphicsApi) { auto* pVulkan = static_cast(pGraphicsApi); @@ -441,24 +420,31 @@ TextureFormat VkToTextureFormat(VkFormat f) return TextureFormat::UNDEFINED; } +//----------------------------------------------------------------------------- +VkSampleCountFlagBits EnumToVk(Msaa msaa) +//----------------------------------------------------------------------------- +{ + return (VkSampleCountFlagBits) msaa; +} //----------------------------------------------------------------------------- template<> -TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObjectInfo& texInfo) +Texture CreateTextureObject(Vulkan& vulkan, const CreateTexObjectInfo& texInfo, MemoryPool* pPool) //----------------------------------------------------------------------------- { - VkResult RetVal; + VkResult retVal; if (texInfo.pName == nullptr) LOGI("CreateTextureObject (%dx%d): ", texInfo.uiWidth, texInfo.uiHeight); else LOGI("CreateTextureObject (%dx%d): %s", texInfo.uiWidth, texInfo.uiHeight, texInfo.pName); - VkImageView RetImageView = VK_NULL_HANDLE; - VkImageLayout RetImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; + VkImageView retImageView = VK_NULL_HANDLE; + VkImageLayout retImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; + VkClearValue retClearValue{}; // How this texture object will be used. - MemoryUsage MemoryUsage = MemoryUsage::GpuExclusive; + MemoryUsage memoryUsage = MemoryUsage::GpuExclusive; VkFormat vkFormat = TextureFormatToVk(texInfo.Format); @@ -473,7 +459,7 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje ImageInfo.extent.depth = texInfo.uiDepth; ImageInfo.mipLevels = texInfo.uiMips; ImageInfo.arrayLayers = texInfo.uiFaces; - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; + ImageInfo.samples = EnumToVk(texInfo.Msaa); ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; ImageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT; ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; @@ -498,13 +484,13 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje // If using VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT then tiling MUST be VK_IMAGE_TILING_OPTIMAL ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; ImageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; // DO NOT enable Storage_Bit (potential performance impact) - ImageInfo.samples = (VkSampleCountFlagBits)texInfo.Msaa; + ImageInfo.samples = EnumToVk(texInfo.Msaa); break; case TT_RENDER_TARGET_WITH_STORAGE: // If using VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT then tiling MUST be VK_IMAGE_TILING_OPTIMAL // Also enabling Storage may disable some hardware render buffer optimizations ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - assert(texInfo.Msaa == 1 && texInfo.Format != TextureFormat::R8G8B8A8_SRGB); //TODO: use Vulkan to determine if this texture buffer can have storeage set, for now assert on formats known to be problematic (msaa or srgb) + assert(texInfo.Msaa == Msaa::Samples1 && texInfo.Format != TextureFormat::R8G8B8A8_SRGB); //TODO: use Vulkan to determine if this texture buffer can have storeage set, for now assert on formats known to be problematic (msaa or srgb) ImageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT; ImageInfo.samples = (VkSampleCountFlagBits)texInfo.Msaa; break; @@ -514,11 +500,14 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje ImageInfo.samples = (VkSampleCountFlagBits)texInfo.Msaa; break; case TT_RENDER_TARGET_SUBPASS: + case TT_RENDER_TARGET_LOCAL_READ_TRANSIENT: + // Subpass render targets dont need to be backed by memory! + memoryUsage = MemoryUsage::GpuLazilyAllocated; + [[fallthrough]]; + case TT_RENDER_TARGET_LOCAL_READ: ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; ImageInfo.usage = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; ImageInfo.samples = (VkSampleCountFlagBits)texInfo.Msaa; - // Subpass render targets dont need to be backed by memory! - MemoryUsage = MemoryUsage::GpuLazilyAllocated; break; case TT_COMPUTE_TARGET: ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; @@ -535,10 +524,19 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje ImageInfo.samples = (VkSampleCountFlagBits)texInfo.Msaa; ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; ImageInfo.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT /*| VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT*/; - if (texInfo.Msaa != VK_SAMPLE_COUNT_1_BIT) + if (texInfo.Msaa != Msaa::Samples1) + ImageInfo.flags |= VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT; + break; + case TT_DEPTH_TARGET_LOCAL_READ: + // If using VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT then tiling MUST be VK_IMAGE_TILING_OPTIMAL + ImageInfo.mipLevels = 1; + ImageInfo.arrayLayers = 1; + ImageInfo.samples = (VkSampleCountFlagBits)texInfo.Msaa; + ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; + ImageInfo.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT /* | VK_IMAGE_USAGE_STORAGE_BIT*/ | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; + if (texInfo.Msaa != Msaa::Samples1) ImageInfo.flags |= VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT; break; - default: assert(0); break; @@ -551,16 +549,22 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje // Create the Image auto& memoryManager = vulkan.GetMemoryManager(); - auto VmaImage = memoryManager.CreateImage( ImageInfo, MemoryUsage ); + auto createImage = [&]() { + if (pPool && *pPool) + return memoryManager.CreateImage( *pPool, ImageInfo ); + else + return memoryManager.CreateImage( ImageInfo, memoryUsage ); + }; + auto vmaImage = createImage(); - if (!VmaImage && MemoryUsage == MemoryUsage::GpuLazilyAllocated) + if (!vmaImage && memoryUsage == MemoryUsage::GpuLazilyAllocated) { LOGI("Unable to initialize GpuLazilyAllocated image (probably not supported by GPU hardware). Falling back to GpuExclusive"); - MemoryUsage = MemoryUsage::GpuExclusive; + memoryUsage = MemoryUsage::GpuExclusive; ImageInfo.usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - VmaImage = memoryManager.CreateImage( ImageInfo, MemoryUsage ); + vmaImage = memoryManager.CreateImage( ImageInfo, memoryUsage ); } - if (!VmaImage) + if (!vmaImage) { LOGE("Unable to initialize image (Not from file)"); return {}; @@ -570,50 +574,61 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje switch (texInfo.TexType) { case TT_SHADING_RATE_IMAGE: - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_GENERAL; + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + retImageLayout = VK_IMAGE_LAYOUT_GENERAL; break; case TT_CPU_UPDATE: - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + retImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; break; case TT_NORMAL: - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + retImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; break; case TT_RENDER_TARGET: case TT_RENDER_TARGET_WITH_STORAGE: - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); - RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + retImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; break; case TT_RENDER_TARGET_TRANSFERSRC: - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); - RetImageLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + retImageLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + break; + case TT_RENDER_TARGET_LOCAL_READ: + case TT_RENDER_TARGET_LOCAL_READ_TRANSIENT: + retImageLayout = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR; break; case TT_RENDER_TARGET_SUBPASS: - RetImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + retImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; break; case TT_COMPUTE_TARGET: case TT_COMPUTE_STORAGE: - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_GENERAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_GENERAL; + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_GENERAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); + retImageLayout = VK_IMAGE_LAYOUT_GENERAL; break; + case TT_DEPTH_TARGET_LOCAL_READ: + retImageLayout = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR; + memoryUsage = MemoryUsage::GpuLazilyAllocated; + [[fallthrough]]; case TT_DEPTH_TARGET: if (FormatHasStencil( texInfo.Format)) { // Can have depth and stencil flag - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + retClearValue.depthStencil.depth = 1.0f; } else if (FormatHasDepth(texInfo.Format)) { // Only has the depth flag set - vulkan.SetImageLayout(VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + vulkan.SetImageLayout(vmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); + retClearValue.depthStencil.depth = 1.0f; } else { LOGE("Unhandled depth format!!!"); } - RetImageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; + if(retImageLayout != VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR) + retImageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; break; default: assert(0); @@ -623,7 +638,7 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje vulkan.FinishSetupCommandBuffer(SetupCmdBuffer); // Create the Image wrapper (containing the vmaimage) - ImageT Image{ std::move( VmaImage ) }; + Image Image{ std::move( vmaImage ) }; vulkan.SetDebugObjectName( Image.GetVkImage(), texInfo.pName ); // ... and an ImageView @@ -660,7 +675,12 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje case TT_COMPUTE_STORAGE: ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; break; + case TT_RENDER_TARGET_LOCAL_READ: + case TT_RENDER_TARGET_LOCAL_READ_TRANSIENT: + ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT; + break; case TT_DEPTH_TARGET: + case TT_DEPTH_TARGET_LOCAL_READ: ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; SamplerMode = (SamplerMode == SamplerAddressMode::Undefined) ? SamplerAddressMode::ClampBorder : SamplerMode; // default to ClampBorder BorderColor = SamplerBorderColor::OpaqueWhiteFloat; @@ -671,14 +691,14 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje } SamplerMode = (SamplerMode == SamplerAddressMode::Undefined) ? SamplerAddressMode::ClampEdge : SamplerMode; // default to ClampEdge - RetVal = vkCreateImageView(vulkan.m_VulkanDevice, &ImageViewInfo, NULL, &RetImageView); - if (!CheckVkError("vkCreateImageView()", RetVal)) + retVal = vkCreateImageView(vulkan.m_VulkanDevice, &ImageViewInfo, NULL, &retImageView); + if (!CheckVkError("vkCreateImageView()", retVal)) { return {}; } - ImageViewT ImageView{RetImageView, ImageViewInfo.viewType}; + ImageView ImageView{retImageView, ImageViewInfo.viewType}; - // LOGI("vkCreateImageView: %s -> %p", pName, RetImageView); + // LOGI("vkCreateImageView: %s -> %p", pName, retImageView); // Need a sampler... SamplerFilter FilterMode = texInfo.FilterMode; @@ -691,18 +711,19 @@ TextureT CreateTextureObject(Vulkan& vulkan, const CreateTexObje else FilterMode = SamplerFilter::Nearest; } - SamplerT Sampler = CreateSampler(vulkan, SamplerMode, FilterMode, BorderColor, 0.0f); + SamplerVulkan Sampler = CreateSampler(vulkan, SamplerMode, FilterMode, BorderColor, 0.0f); if (Sampler.IsEmpty()) { return {}; } - return{ texInfo.uiWidth, texInfo.uiHeight, texInfo.uiDepth, texInfo.uiMips, 0/*first mip*/, texInfo.uiFaces, 0/*first face*/, texInfo.Format, RetImageLayout, std::move(Image), std::move(Sampler), std::move(ImageView)}; + return{ texInfo.uiWidth, texInfo.uiHeight, texInfo.uiDepth, texInfo.uiMips, 0/*first mip*/, texInfo.uiFaces, 0/*first face*/, texInfo.Format, retImageLayout, retClearValue, std::move(Image), std::move(Sampler), std::move(ImageView)}; } //----------------------------------------------------------------------------- -TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT& original, TextureFormat viewFormat ) +template<> +Texture CreateTextureObjectView( Vulkan& vulkan, const Texture& original, TextureFormat viewFormat ) //----------------------------------------------------------------------------- { auto imageView = CreateImageView( vulkan, original.Image, viewFormat, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.ImageView.GetImageViewType() ); @@ -717,12 +738,12 @@ TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT return {}; } - return { original.Width, original.Height, original.Depth, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.Format, original.GetVkImageLayout(), original.GetVkImage(), VK_NULL_HANDLE, std::move(sampler), std::move(imageView) }; + return { original.Width, original.Height, original.Depth, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.Format, original.GetVkImageLayout(), original.GetVkClearValue(), original.GetVkImage(), VK_NULL_HANDLE, std::move(sampler), std::move(imageView) }; } //----------------------------------------------------------------------------- -TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT& original, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace ) +Texture CreateTextureObjectView( Vulkan& vulkan, const Texture& original, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace ) //----------------------------------------------------------------------------- { ImageViewVulkan imageView = CreateImageView( vulkan, original.Image, original.Format, mipLevels, firstMip, faces, firstFace, original.ImageView.GetImageViewType() ); @@ -735,13 +756,13 @@ TextureT CreateTextureObjectView( Vulkan& vulkan, const TextureT { return {}; } - return {original.Width, original.Height, original.Depth, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.Format, original.GetVkImageLayout(), original.GetVkImage(), VK_NULL_HANDLE, std::move( sampler ), std::move( imageView )}; + return {original.Width, original.Height, original.Depth, original.MipLevels, original.FirstMip, original.Faces, original.FirstFace, original.Format, original.GetVkImageLayout(), original.GetVkClearValue(), original.GetVkImage(), VK_NULL_HANDLE, std::move( sampler ), std::move( imageView )}; } //----------------------------------------------------------------------------- template<> -TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) +Texture CreateTextureFromBuffer( Vulkan& vulkan, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) //----------------------------------------------------------------------------- { if (pName == nullptr) @@ -749,7 +770,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD else LOGI( "CreateTextureFromBuffer (%dx%d): %s", Width, Height, pName ); - auto& memorymanager = vulkan.GetMemoryManager(); + auto& memoryManager = vulkan.GetMemoryManager(); uint32_t Faces = 1; uint32_t MipLevels = 1; @@ -777,10 +798,19 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD struct CubeFace { - CubeFace( uint32_t depthSlices, uint32_t mips ) : mipsPerDepthSlice( mips ), images( depthSlices* mips ) + CubeFace( MemoryManager& _memoryManager, uint32_t depthSlices, uint32_t mips ) : memoryManager(_memoryManager), mipsPerDepthSlice( mips ), images( depthSlices* mips ) {} + ~CubeFace() { for (auto& image : images) memoryManager.Destroy( std::move( image ) ); } + CubeFace& operator=( CubeFace&& ) noexcept { assert( 0 ); return *this; } //define but expect to never be called + CubeFace(CubeFace&&other) noexcept : memoryManager(other.memoryManager), mipsPerDepthSlice(other.mipsPerDepthSlice), images(std::move(other.images)){} const auto& GetImage( uint32_t depth, uint32_t mip ) const { return images[depth * mipsPerDepthSlice]; } auto& GetImage( uint32_t depth, uint32_t mip ) { return images[depth * mipsPerDepthSlice + mip]; } + auto& CreateImage( uint32_t depth, uint32_t mip, const VkImageCreateInfo& imageInfo, MemoryUsage usage ) { + auto& image = GetImage( depth, mip ); + image.operator=( std::move( memoryManager.CreateImage( imageInfo, usage ) ) ); + return image; + } + MemoryManager& memoryManager; const uint32_t mipsPerDepthSlice; std::vector> images; }; @@ -790,7 +820,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD cubeFaces.reserve( Faces ); for (uint32_t WhichFace = 0; WhichFace < Faces; ++WhichFace) { - cubeFaces.emplace_back( Depth, MipLevels ); + cubeFaces.emplace_back( memoryManager, Depth, MipLevels ); } // Create and copy mip levels @@ -822,8 +852,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD ImageInfo.extent.height = Height; ImageInfo.extent.depth = 1; - MemoryAllocatedBuffer& faceImage = cubeFaces[WhichFace].GetImage( WhichDepth, WhichMip ); - faceImage.operator=( std::move( memorymanager.CreateImage( ImageInfo, MemoryUsage::CpuToGpu ) ) ); + MemoryAllocatedBuffer& faceImage = cubeFaces[WhichFace].CreateImage( WhichDepth, WhichMip, ImageInfo, MemoryUsage::CpuToGpu ); if (!faceImage) { LOGE( "CreateTextureFromBuffer: Unable to initialize mip %d of face %d", WhichMip + 1, WhichFace + 1 ); @@ -840,7 +869,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD vkGetImageSubresourceLayout( vulkan.m_VulkanDevice, faceImage.GetVkBuffer(), &SubresInfo, &SubResLayout ); { - auto mappedMemory = memorymanager.Map( faceImage ); + auto mappedMemory = memoryManager.Map( faceImage ); if (SubResLayout.rowPitch == Width * formatBytesPerPixel) { memcpy( mappedMemory.data(), pData8, SubResLayout.size ); @@ -856,7 +885,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD pData8 += Width * formatBytesPerPixel; } } - memorymanager.Unmap( faceImage, std::move( mappedMemory ) ); + memoryManager.Unmap( faceImage, std::move( mappedMemory ) ); } // Image barrier for linear image (base) @@ -899,8 +928,11 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD ImageInfo.arrayLayers = Faces; + // Clear value (probably unused) + VkClearValue ClearValue{}; + // Create the 'final' image - auto FinalVmaImage = memorymanager.CreateImage( ImageInfo, MemoryUsage::GpuExclusive ); + auto FinalVmaImage = memoryManager.CreateImage( ImageInfo, MemoryUsage::GpuExclusive ); if (!FinalVmaImage) { LOGE( "CreateTextureFromBuffer: Unable to initialize texture image" ); @@ -993,7 +1025,7 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD vulkan.FinishSetupCommandBuffer( SetupCmdBuffer ); // Create the Image wrapper (takes ownership of FinalVmaImage) - ImageT Image{ std::move(FinalVmaImage) }; + Image Image{ std::move(FinalVmaImage) }; // Need a sampler... SamplerVulkan sampler = CreateSampler( vulkan, SamplerMode, Filter, SamplerBorderColor::TransparentBlackFloat, 0.0f ); @@ -1016,67 +1048,64 @@ TextureT CreateTextureFromBuffer( Vulkan& vulkan, const void* pD return {}; } - // Cleanup - cubeFaces.clear(); - // Set the return values - return { Width, Height, Depth, MipLevels, 0/*firstmip*/, Faces, 0/*firstface*/, Format, FinalLayout, std::move(Image), std::move(sampler), std::move(imageView)}; + return { Width, Height, Depth, MipLevels, 0/*firstmip*/, Faces, 0/*firstface*/, Format, FinalLayout, ClearValue, std::move(Image), std::move(sampler), std::move(imageView)}; } //----------------------------------------------------------------------------- template<> -void ReleaseTexture( Vulkan& vulkan, TextureT* pTexture ) +void ReleaseTexture( Vulkan& vulkan, Texture* pTexture ) //----------------------------------------------------------------------------- { if (!pTexture) return; pTexture->Release( &vulkan ); - *pTexture = TextureT{}; // destroy and clear + *pTexture = Texture{}; // destroy and clear } //----------------------------------------------------------------------------- -ImageT::ImageT( MemoryAllocatedBuffer vmaImage ) noexcept : VmaImage( std::move(vmaImage) ) +Image::Image( MemoryAllocatedBuffer vmaImage ) noexcept : m_VmaImage( std::move(vmaImage) ) //----------------------------------------------------------------------------- {} //----------------------------------------------------------------------------- -ImageT::ImageT( VkImage image, VkDeviceMemory memory ) noexcept : VmaImage(), Image(image)/*no change of ownership*/, Memory(memory)/*no change of ownership*/ +Image::Image( VkImage image, VkDeviceMemory memory ) noexcept : m_VmaImage(), m_Image(image)/*no change of ownership*/, m_Memory(memory)/*no change of ownership*/ //----------------------------------------------------------------------------- {} //----------------------------------------------------------------------------- -ImageT::~ImageT() +Image::~Image() //----------------------------------------------------------------------------- { - assert( !VmaImage ); // expecting ReleaseImage to have been called already (and so this is empty) - Image = VK_NULL_HANDLE; - Memory = VK_NULL_HANDLE; + assert( !m_VmaImage ); // expecting ReleaseImage to have been called already (and so this is empty) + m_Image = VK_NULL_HANDLE; + m_Memory = VK_NULL_HANDLE; } //----------------------------------------------------------------------------- template<> -void ReleaseImage( Vulkan& vulkan, ImageT* pImage ) +void ReleaseImage( Vulkan& vulkan, Image* pImage ) //----------------------------------------------------------------------------- { - if (pImage->VmaImage) - vulkan.GetMemoryManager().Destroy( std::move( pImage->VmaImage ) ); + if (pImage->m_VmaImage) + vulkan.GetMemoryManager().Destroy( std::move( pImage->m_VmaImage ) ); // We dont own Image or Memory, so just clear them! - pImage->Image = VK_NULL_HANDLE; - pImage->Memory = VK_NULL_HANDLE; + pImage->m_Image = VK_NULL_HANDLE; + pImage->m_Memory = VK_NULL_HANDLE; - *pImage = ImageT{}; // destroy and clear + *pImage = Image{}; // destroy and clear } //----------------------------------------------------------------------------- -ImageViewT::ImageViewT( VkImageView imageView, VkImageViewType viewType ) noexcept : m_ImageView( imageView ), m_ImageViewType( VkToEnum(viewType) ) +ImageView::ImageView( VkImageView imageView, VkImageViewType viewType ) noexcept : m_ImageView( imageView ), m_ImageViewType( VkToEnum(viewType) ) //----------------------------------------------------------------------------- {} //----------------------------------------------------------------------------- -ImageViewT::~ImageViewT() +ImageView::~ImageView() //----------------------------------------------------------------------------- { assert( m_ImageView == VK_NULL_HANDLE ); @@ -1085,9 +1114,11 @@ ImageViewT::~ImageViewT() //----------------------------------------------------------------------------- /// Create a vulkan image view object template<> -ImageViewT CreateImageView(Vulkan& vulkan, const ImageT& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t baseFace, ImageViewType viewType ) +ImageView CreateImageView(Vulkan& vulkan, const Image& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t baseFace, ImageViewType viewType ) //----------------------------------------------------------------------------- { + const bool hasDepth = FormatHasDepth( format ); + const bool hasStencil = FormatHasStencil( format ); VkImageViewCreateInfo ImageViewInfo{ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; ImageViewInfo.flags = 0; ImageViewInfo.image = image.GetVkImage(); @@ -1098,15 +1129,20 @@ ImageViewT CreateImageView(Vulkan& vulkan, const ImageT& ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + if (hasDepth) + ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; + else if (hasStencil)//only depth OR stencil OR color should be set! + ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_STENCIL_BIT; + else + ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; ImageViewInfo.subresourceRange.baseMipLevel = baseMipLevel; ImageViewInfo.subresourceRange.levelCount = numMipLevels; ImageViewInfo.subresourceRange.baseArrayLayer = baseFace; ImageViewInfo.subresourceRange.layerCount = numFaces; VkImageView imageView; - auto RetVal = vkCreateImageView(vulkan.m_VulkanDevice, &ImageViewInfo, NULL, &imageView); - if (!CheckVkError("vkCreateImageView()", RetVal)) + auto retVal = vkCreateImageView(vulkan.m_VulkanDevice, &ImageViewInfo, NULL, &imageView); + if (!CheckVkError("vkCreateImageView()", retVal)) { return {}; } @@ -1115,7 +1151,7 @@ ImageViewT CreateImageView(Vulkan& vulkan, const ImageT& //----------------------------------------------------------------------------- template<> -void ReleaseImageView( Vulkan& vulkan, ImageViewT* pImageView ) +void ReleaseImageView( Vulkan& vulkan, ImageView* pImageView ) //----------------------------------------------------------------------------- { if (!pImageView || pImageView->IsEmpty()) @@ -1125,77 +1161,8 @@ void ReleaseImageView( Vulkan& vulkan, ImageViewT* pImageView ) pImageView->m_ImageViewType = ImageViewType::View1D; } -// -// Constructors/move-operators for SamplerT. -// -SamplerT::SamplerT() noexcept : m_Sampler( VK_NULL_HANDLE ) -{} -SamplerT::~SamplerT() noexcept -{ -} -SamplerT::SamplerT(VkSampler sampler) noexcept : m_Sampler( sampler ) -{} -SamplerT::SamplerT(SamplerT&& src) noexcept -{ - *this = std::move( src ); -} -SamplerT& SamplerT::operator=(SamplerT&& src ) noexcept -{ - if (this != &src) - { - m_Sampler = src.m_Sampler; - src.m_Sampler = VK_NULL_HANDLE; - } - return *this; -} - - -//----------------------------------------------------------------------------- -template<> -SamplerT CreateSampler(Vulkan& vulkan, const CreateSamplerObjectInfo& createInfo) -//----------------------------------------------------------------------------- -{ - const bool anisotropyEnable = createInfo.Anisotropy > 1.0f && createInfo.Filter == SamplerFilter::Linear; - const VkSamplerCreateInfo SamplerInfo{ - .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, - .flags = 0, - .magFilter = EnumToVk(createInfo.Filter), - .minFilter = EnumToVk(createInfo.Filter), - .mipmapMode = EnumToVkSamplerMipmapMode(createInfo.MipFilter), - .addressModeU = EnumToVk(createInfo.Mode), - .addressModeV = EnumToVk(createInfo.Mode), - .addressModeW = EnumToVk(createInfo.Mode), - .mipLodBias = createInfo.MipBias, - .anisotropyEnable = anisotropyEnable ? VK_TRUE : VK_FALSE, - .maxAnisotropy = anisotropyEnable == VK_TRUE ? createInfo.Anisotropy : 1.0f, - .compareEnable = VK_FALSE, - .compareOp = VK_COMPARE_OP_NEVER, - .minLod = createInfo.MinLod, - .maxLod = createInfo.MaxLod, - .borderColor = EnumToVk(createInfo.BorderColor), - .unnormalizedCoordinates = createInfo.UnnormalizedCoordinates ? VK_TRUE : VK_FALSE }; - - VkSampler vkSampler; - VkResult RetVal = vkCreateSampler(vulkan.m_VulkanDevice, &SamplerInfo, NULL, &vkSampler); - if (!CheckVkError("vkCreateSampler()", RetVal)) - return {}; - return { vkSampler }; -} - -//----------------------------------------------------------------------------- -// Implementation of template function specialization -template<> -void ReleaseSampler( Vulkan& vulkan, SamplerT* pSampler) -//----------------------------------------------------------------------------- -{ - if (!pSampler) - return; - vkDestroySampler(vulkan.m_VulkanDevice, pSampler->m_Sampler, nullptr); - *pSampler = SamplerT{}; // destroy and clear -} - //----------------------------------------------------------------------------- -std::vector> MakeTextureMipViews( Vulkan& vulkan, const TextureT& source, uint32_t maxMips ) +std::vector> MakeTextureMipViews( Vulkan& vulkan, const Texture& source, uint32_t maxMips ) //----------------------------------------------------------------------------- { TextureVulkan m_ReducedZBuffer; ///< half sized 'depth' buffer (half in each dimension of original ZBuffer size) with mips. Populated by the reduce. @@ -1215,8 +1182,8 @@ std::vector> MakeTextureMipViews( Vulkan& vulkan, const Texture samplerCreateInfo.MaxLod = float( mipLevel ); auto imageView = CreateImageView( vulkan, source.Image, source.Format, 1, mipLevel, source.Faces, 0, source.ImageView.GetImageViewType() ); - SamplerT sampler = CreateSampler( vulkan, samplerCreateInfo ); - mips.emplace_back( source.Width, source.Height, source.Depth, 1, mipLevel, 1, 0, source.Format, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, source.GetVkImage(), (VkDeviceMemory)VK_NULL_HANDLE, std::move( sampler ), std::move( imageView ) ); + Sampler sampler = CreateSampler( vulkan, samplerCreateInfo ); + mips.emplace_back( source.Width, source.Height, source.Depth, 1, mipLevel, 1, 0, source.Format, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, source.GetVkClearValue(), source.GetVkImage(), (VkDeviceMemory)VK_NULL_HANDLE, std::move(sampler), std::move(imageView)); } return mips; } diff --git a/framework/code/texture/vulkan/texture.hpp b/framework/code/texture/vulkan/texture.hpp index e155380..6813b14 100644 --- a/framework/code/texture/vulkan/texture.hpp +++ b/framework/code/texture/vulkan/texture.hpp @@ -1,79 +1,59 @@ -//============================================================================================================ +//============================================================================= // +// Copyright (c) 2022 QUALCOMM Technologies Inc. +// All Rights Reserved. // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ +//============================================================================== #pragma once #include "../texture.hpp" +#include "sampler.hpp" #include "memory/vulkan/memoryMapped.hpp" -#include +#include "vulkan/refHandle.hpp" +#include #include // Forward declarations class Vulkan; template class MemoryAllocatedBuffer; -using TextureVulkan = TextureT; -using ImageVulkan = ImageT; -using ImageViewVulkan = ImageViewT; -using SamplerVulkan = SamplerT; +template class MemoryPool; +using TextureVulkan = Texture; +using ImageVulkan = Image; +using ImageViewVulkan = ImageView; +using SamplerVulkan = Sampler; /// @brief Convert from our TextureFormat to Vulkan's VkFormat extern VkFormat TextureFormatToVk(TextureFormat); -/// @brief Convert from our Vulkan's VkFormat to our TextureFormat. +/// @brief Convert from Vulkan's VkFormat to our TextureFormat. extern TextureFormat VkToTextureFormat(VkFormat); +/// @brief Convert from our MSaa enum to Vulkan's VkSampleCountFlagBits +extern VkSampleCountFlagBits EnumToVk(Msaa msaa); -/// @brief Template specialization of sampler container for Vulkan graphics api. -template<> -class SamplerT final : public Sampler -{ -public: - SamplerT() noexcept; - ~SamplerT() noexcept; - SamplerT(VkSampler sampler) noexcept; - SamplerT(SamplerT&& src) noexcept; - SamplerT& operator=(SamplerT&& src) noexcept; - SamplerT Copy() const noexcept - { - return {m_Sampler}; - } - - auto GetVkSampler() const { return m_Sampler; } - bool IsEmpty() const { return m_Sampler == VK_NULL_HANDLE; } - -private: - friend void ReleaseSampler( Vulkan& vulkan, SamplerT* pSampler ); - VkSampler m_Sampler; -}; - - -/// @brief Template specialization of sampler container for Vulkan graphics api. +/// @brief Template specialization of imageview container for Vulkan graphics api. template<> -class ImageViewT final : public ImageView +class ImageView final : public ImageViewBase { public: - ImageViewT() noexcept : m_ImageView( VK_NULL_HANDLE ), m_ImageViewType( ImageViewType::View1D ) {}; - ImageViewT( VkImageView imageView, VkImageViewType viewType ) noexcept; - ImageViewT( ImageViewT&& src ) noexcept { + ImageView() noexcept : m_ImageView( VK_NULL_HANDLE ), m_ImageViewType( ImageViewType::View1D ) {}; + ImageView( VkImageView imageView, VkImageViewType viewType ) noexcept; + ImageView( ImageView&& src ) noexcept { *this = std::move( src ); } - ImageViewT& operator=( ImageViewT&& src ) noexcept { + ImageView& operator=( ImageView&& src ) noexcept { m_ImageView = src.m_ImageView; src.m_ImageView = VK_NULL_HANDLE; m_ImageViewType = src.m_ImageViewType; src.m_ImageViewType = ImageViewType::View1D; return *this; } - ~ImageViewT(); + ~ImageView(); auto GetImageViewType() const { return m_ImageViewType; } auto GetVkImageView() const { return m_ImageView; } bool IsEmpty() const { return m_ImageView == VK_NULL_HANDLE; } private: - friend void ReleaseImageView( Vulkan& vulkan, ImageViewT* pImageView ); + friend void ReleaseImageView( Vulkan& vulkan, ImageView* pImageView ); VkImageView m_ImageView; ImageViewType m_ImageViewType; }; @@ -81,71 +61,76 @@ class ImageViewT final : public ImageView /// @brief Template specialization of image container for Vulkan graphics api. template<> -class ImageT final : public Image +class Image final : public ImageBase { public: - ImageT() noexcept {}; + Image() noexcept {}; - /// @brief Construct ImageT from a pre-existing vmaImage. - /// @param vmaImage - ownership passed to this ImageT. - ImageT( MemoryAllocatedBuffer vmaImage ) noexcept; + /// @brief Construct Image from a pre-existing vmaImage. + /// @param vmaImage - ownership passed to this Image. + Image( MemoryAllocatedBuffer vmaImage ) noexcept; - /// @brief Construct ImageT from a pre-existing Vulkan image/memory handles. - /// @param image - ownership NOT passed in to this ImageT, beware of lifetime issues. - /// @param memory - ownership NOT passed to this ImageT, beware of lifetime issues. - ImageT( VkImage image, VkDeviceMemory memory ) noexcept; + /// @brief Construct Image from a pre-existing Vulkan image/memory handles. + /// @param image - ownership NOT passed in to this Image, beware of lifetime issues. + /// @param memory - ownership NOT passed to this Image, beware of lifetime issues. + Image( VkImage image, VkDeviceMemory memory ) noexcept; - ImageT( ImageT&& src ) noexcept { + Image( Image&& src ) noexcept { *this = std::move( src ); } - ImageT& operator=( ImageT&& src ) noexcept + Image& operator=( Image&& src ) noexcept { - VmaImage = std::move(src.VmaImage); - Image = src.Image; - src.Image = VK_NULL_HANDLE; - Memory = src.Memory; - src.Memory = VK_NULL_HANDLE; + m_VmaImage = std::move(src.m_VmaImage ); + m_Image = src.m_Image; + src.m_Image = VK_NULL_HANDLE; + m_Memory = src.m_Memory; + src.m_Memory = VK_NULL_HANDLE; return *this; } - ~ImageT(); - VkImage GetVkImage() const { return VmaImage ? VmaImage.GetVkBuffer() : Image; } - bool IsEmpty() const { return !VmaImage && Image == VK_NULL_HANDLE; } + ~Image(); + VkImage GetVkImage() const { return m_VmaImage ? m_VmaImage.GetVkBuffer() : m_Image; } + const auto& GetMemoryAllocation() const { return m_VmaImage.GetMemoryAllocation(); } + bool IsEmpty() const { return !m_VmaImage && m_Image == VK_NULL_HANDLE; } + + //Image Copy(); private: - friend void ReleaseImage( Vulkan& vulkan, ImageT* pImage ); + friend void ReleaseImage( Vulkan& vulkan, Image* pImage ); // Managed memory buffer allocation and VkImage - MemoryAllocatedBuffer VmaImage; + MemoryAllocatedBuffer m_VmaImage; // Needed for functions handling own memory (i.e. AndroidHardwareBuffers) - VkImage Image = VK_NULL_HANDLE; - VkDeviceMemory Memory = VK_NULL_HANDLE; + VkImage m_Image = VK_NULL_HANDLE; + VkDeviceMemory m_Memory = VK_NULL_HANDLE; }; /// @brief Template specialization of texture container for Vulkan graphics api. template<> -class TextureT final : public Texture +class Texture final : public TextureBase { public: - TextureT() noexcept; - TextureT(const TextureT&) = delete; - TextureT& operator=(const TextureT&) = delete; - TextureT(TextureT&&) noexcept; - TextureT& operator=(TextureT&&) noexcept; - ~TextureT() noexcept; - - /// @brief Construct TextureT from a pre-existing vmaImage. - /// @param vmaImage - ownership passed to this TextureT. - /// @param sampler - ownership passed to this TextureT. - /// @param imageView - ownership passed to this TextureT. - TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat, VkImageLayout imageLayout, ImageT image, SamplerT sampler, ImageViewT imageView) noexcept; - - /// @brief Construct TextureT from a pre-existing Vulkan image/memory handles. - /// @param image - ownership NOT passed in to this TextureT, beware of lifetime issues. - /// @param sampler - ownership passed to this TextureT. - /// @param imageView - ownership passed to this TextureT. - TextureT(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, SamplerT sampler, ImageViewT imageView) noexcept; + Texture() noexcept; + Texture(const Texture&) = delete; + Texture& operator=(const Texture&) = delete; + Texture(Texture&&) noexcept; + Texture& operator=(Texture&&) noexcept; + ~Texture() noexcept; + + operator bool() const { return !IsEmpty(); } + + /// @brief Construct Texture from a pre-existing vmaImage. + /// @param vmaImage - ownership passed to this Texture. + /// @param sampler - ownership passed to this Texture. + /// @param imageView - ownership passed to this Texture. + Texture(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat, VkImageLayout imageLayout, VkClearValue clearValue, ::Image image, ::Sampler sampler, ::ImageView imageView) noexcept; + + /// @brief Construct Texture from a pre-existing Vulkan image/memory handles. + /// @param image - ownership NOT passed in to this Texture, beware of lifetime issues. + /// @param sampler - ownership passed to this Texture. + /// @param imageView - ownership passed to this Texture. + Texture(uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, uint32_t firstMip, uint32_t faces, uint32_t firstFace, TextureFormat format, VkImageLayout imageLayout, VkClearValue clearValue, VkImage image, VkDeviceMemory memory, Sampler sampler, ::ImageView imageView) noexcept; void Release(GraphicsApiBase* pGraphicsApi) override; @@ -154,6 +139,7 @@ class TextureT final : public Texture VkImageLayout GetVkImageLayout() const { return ImageLayout; } VkSampler GetVkSampler() const { return Sampler.GetVkSampler(); } VkImageView GetVkImageView() const { return ImageView.GetVkImageView(); } + VkClearValue GetVkClearValue() const { return ClearValue; } bool IsEmpty() const { return Image.IsEmpty() || Sampler.IsEmpty(); } uint32_t Width = 0; @@ -165,49 +151,47 @@ class TextureT final : public Texture uint32_t FirstFace = 0; TextureFormat Format = TextureFormat::UNDEFINED; VkImageLayout ImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; + VkClearValue ClearValue {}; public: - ImageT Image; - SamplerT Sampler; - ImageViewT ImageView; + Image Image; + Sampler Sampler; + ImageView ImageView; }; /// Template specialization for Vulkan CreateTextureObject template<> -TextureT CreateTextureObject( Vulkan&, const CreateTexObjectInfo& texInfo ); +Texture CreateTextureObject( Vulkan&, const CreateTexObjectInfo& texInfo, MemoryPool* pPool); /// Template specialization for Vulkan CreateTextureFromBuffer template<> -TextureT CreateTextureFromBuffer( Vulkan&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ); +Texture CreateTextureFromBuffer( Vulkan&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ); /// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) -TextureT CreateTextureObjectView( Vulkan&, const TextureT& original, TextureFormat viewFormat ); +template<> +Texture CreateTextureObjectView( Vulkan&, const Texture& original, TextureFormat viewFormat ); /// Template specialization for Vulkan ReleaseTexture template<> -void ReleaseTexture( Vulkan& vulkan, TextureT* ); +void ReleaseTexture( Vulkan& vulkan, Texture* ); /// Template specialization for Vulkan ReleaseImage template<> -void ReleaseImage( Vulkan& vulkan, ImageT* ); +void ReleaseImage( Vulkan& vulkan, Image* ); /// Template specialization for Vulkan CreateImageView template<> -ImageViewT CreateImageView( Vulkan&, const ImageT& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t firstFace, ImageViewType viewType ); +ImageView CreateImageView( Vulkan&, const Image& image, TextureFormat format, uint32_t numMipLevels, uint32_t baseMipLevel, uint32_t numFaces, uint32_t firstFace, ImageViewType viewType ); /// Template specialization for Vulkan ReleaseImageView template<> -void ReleaseImageView( Vulkan& vulkan, ImageViewT* ); +void ReleaseImageView( Vulkan& vulkan, ImageView* ); /// Template specialization for Vulkan CreateSampler template<> -SamplerT CreateSampler( Vulkan&, const CreateSamplerObjectInfo& ); - -/// Template specialization for Vulkan ReleaseSampler -template<> -void ReleaseSampler( Vulkan& vulkan, SamplerT* ); +Sampler CreateSampler( Vulkan&, const CreateSamplerObjectInfo& ); /// Helper to take a sorce texture and make an array of textures where each one points to a single mip in the source -std::vector> MakeTextureMipViews( Vulkan& vulkan, const TextureT& source, uint32_t maxMips ); +std::vector> MakeTextureMipViews( Vulkan& vulkan, const Texture& source, uint32_t maxMips ); diff --git a/framework/code/texture/vulkan/textureManager.cpp b/framework/code/texture/vulkan/textureManager.cpp index 0c98f3b..f8618c2 100644 --- a/framework/code/texture/vulkan/textureManager.cpp +++ b/framework/code/texture/vulkan/textureManager.cpp @@ -1,12 +1,11 @@ //============================================================================= // -// Copyright (c) 2023 QUALCOMM Technologies Inc. +// Copyright (c) 2022 QUALCOMM Technologies Inc. // All Rights Reserved. // //============================================================================== #include "textureManager.hpp" #include "texture.hpp" -#include "imageWrapper.hpp" #include "loaderKtx.hpp" #include "../loaderPpm.hpp" #include "vulkan/vulkan.hpp" @@ -14,23 +13,25 @@ //----------------------------------------------------------------------------- -TextureManagerT::TextureManagerT( tGfxApi& rGfxApi ) noexcept : TextureManager(), m_GfxApi( rGfxApi ) +TextureManager::TextureManager( Vulkan& rGfxApi, AssetManager& rAssetManager ) noexcept + : TextureManagerBase(rAssetManager) + , m_GfxApi( rGfxApi ) //----------------------------------------------------------------------------- { } //----------------------------------------------------------------------------- -TextureManagerT::~TextureManagerT() +TextureManager::~TextureManager() //----------------------------------------------------------------------------- { Release(); } //----------------------------------------------------------------------------- -bool TextureManagerT::Initialize() +bool TextureManager::Initialize() //----------------------------------------------------------------------------- { - m_Loader = std::make_unique>( static_cast(m_GfxApi) ); + m_Loader = std::make_unique>( static_cast(m_GfxApi) ); m_DefaultSamplers.reserve( size_t(SamplerAddressMode::End) ); for (size_t i = (size_t)SamplerAddressMode::Repeat; i < (size_t)SamplerAddressMode::End; ++i) @@ -42,11 +43,11 @@ bool TextureManagerT::Initialize() m_DefaultSamplers.push_back( {} ); } - return TextureManager::Initialize(); + return TextureManagerBase::Initialize(0/*as many threads as cores*/); } //----------------------------------------------------------------------------- -void TextureManagerT::Release() +void TextureManager::Release() //----------------------------------------------------------------------------- { for (auto& [key, texture] : m_LoadedTextures) @@ -55,11 +56,11 @@ void TextureManagerT::Release() } m_LoadedTextures.clear(); m_Loader->Release(); - TextureManager::Release(); + TextureManagerBase::Release(); } //----------------------------------------------------------------------------- -const Texture* TextureManagerT::GetTexture(const std::string& textureSlotName) const +const TextureBase* TextureManager::GetTexture(const std::string& textureSlotName) const //----------------------------------------------------------------------------- { auto iter = m_LoadedTextures.find(textureSlotName); @@ -69,21 +70,21 @@ const Texture* TextureManagerT::GetTexture(const std::string& textureSlo } //----------------------------------------------------------------------------- -const Sampler* const TextureManagerT::GetSampler( SamplerAddressMode sam ) const +const SamplerBase* const TextureManager::GetSampler( SamplerAddressMode sam ) const //----------------------------------------------------------------------------- { return &m_DefaultSamplers[size_t(sam)]; } //----------------------------------------------------------------------------- -const Texture* TextureManagerT::GetOrLoadTexture_(const std::string& textureSlotName, AssetManager& rAssetManager, const std::string& filename, const Sampler& sampler) +const TextureBase* TextureManager::GetOrLoadTexture_(const std::string& textureSlotName, const std::string& filename, const SamplerBase& sampler) //----------------------------------------------------------------------------- { - const Texture* pTexture = GetTexture(textureSlotName); + const TextureBase* pTexture = GetTexture(textureSlotName); if (!pTexture) { const SamplerVulkan& samplerVulkan = static_cast(sampler); - auto loadedTexture = GetLoader()->LoadKtx(m_GfxApi, rAssetManager, filename.c_str(), std::move(samplerVulkan.Copy())); + auto loadedTexture = GetLoader()->LoadKtx(m_GfxApi, m_AssetManager, filename.c_str(), std::move(samplerVulkan.Copy())); if (!loadedTexture.IsEmpty()) { auto insertedIt = m_LoadedTextures.insert({ textureSlotName, std::move(loadedTexture) }); @@ -105,7 +106,7 @@ struct BatchLoadThreadParams { }; //----------------------------------------------------------------------------- -void TextureManagerT::BatchLoad(AssetManager& rAssetManager, const std::span> slotAndFileNames, const Sampler& defaultSampler) +void TextureManager::BatchLoad(const std::span> slotAndFileNames, const SamplerBase& defaultSampler) //----------------------------------------------------------------------------- { std::mutex loadedFileQueueMutex; @@ -114,7 +115,7 @@ void TextureManagerT::BatchLoad(AssetManager& rAssetManager, const std:: Semaphore finishedSema{ 0 }; // Setup the output textures - std::vector> vulkanTextures; + std::vector vulkanTextures; vulkanTextures.resize(slotAndFileNames.size()); // We have one worker job just grabbing loaded textures and transfering them to vulkan (gpu memory). @@ -124,7 +125,7 @@ void TextureManagerT::BatchLoad(AssetManager& rAssetManager, const std:: Semaphore& dataReadySema; Semaphore& finishedSema; const SamplerVulkan& defaultSampler; - std::vector>& vulkanTextures; + std::vector& vulkanTextures; } transferWorkerParams{ loadedFileQueueMutex, loadedFileQueue, dataReadySema, finishedSema, apiCast(defaultSampler), vulkanTextures }; m_LoadingThreadWorker.DoWork2([](TextureManagerVulkan* pThis, TransferWorkerParams params) @@ -156,12 +157,12 @@ void TextureManagerT::BatchLoad(AssetManager& rAssetManager, const std:: auto iter = m_LoadedTextures.find(textureSlotName); if (iter == m_LoadedTextures.end()) { - BatchLoadThreadParams params{ rAssetManager, loadedFileQueueMutex, loadedFileQueue, dataReadySema, filename, currentSlotIndex }; + BatchLoadThreadParams params{ m_AssetManager, loadedFileQueueMutex, loadedFileQueue, dataReadySema, filename, currentSlotIndex }; m_LoadingThreadWorker.DoWork2([](TextureManagerVulkan* pThis, BatchLoadThreadParams params) { auto ktxData = pThis->m_Loader->LoadFile(params.assetManager, params.filename.c_str()); - auto* pKtxLoader = static_cast*>(pThis->GetLoader()); + auto* pKtxLoader = static_cast*>(pThis->GetLoader()); ktxData = pKtxLoader->Transcode(std::move(ktxData)); { std::lock_guard lock(params.loadedFileQueueMutex); @@ -186,34 +187,58 @@ void TextureManagerT::BatchLoad(AssetManager& rAssetManager, const std:: { if (!vulkanTextures[i].IsEmpty()) { - m_LoadedTextures.emplace(std::pair>{ slotAndFileNames[i].first/*slot*/, std::move(vulkanTextures[i])}); + m_LoadedTextures.emplace(std::pair{ slotAndFileNames[i].first/*slot*/, std::move(vulkanTextures[i])}); } } } //----------------------------------------------------------------------------- -std::unique_ptr TextureManagerT::CreateTextureObject(GraphicsApiBase& gfxApi, const CreateTexObjectInfo& texInfo) /*override*/ +const TextureBase* TextureManager::CreateTextureObject( const CreateTexObjectInfo& texInfo) /*override*/ //----------------------------------------------------------------------------- { - auto pTexture = std::make_unique>(); - *pTexture = ::CreateTextureObject(static_cast(gfxApi), texInfo); - return pTexture; + auto texture = ::CreateTextureObject( m_GfxApi, texInfo); + + assert( texInfo.pName!=nullptr && texInfo.pName[0] != '\0' ); // must have a valid name + auto it = m_LoadedTextures.try_emplace( texInfo.pName, std::move( texture ) ); + if (!it.second) + { + assert( 0 && "CreateTextureObjectView duplicate texture name, must be unique (or use ::CreateTextureObject)" ); + return nullptr; + } + else + return &it.first->second; } //----------------------------------------------------------------------------- -std::unique_ptr TextureManagerT::CreateTextureFromBuffer( GraphicsApiBase& gfxApi, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) +const TextureBase* TextureManager::CreateTextureFromBuffer( const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, std::string name ) //----------------------------------------------------------------------------- { - auto pTexture = std::make_unique>(); - *pTexture = ::CreateTextureFromBuffer( static_cast( gfxApi ), pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, pName ); - return pTexture; + auto texture = ::CreateTextureFromBuffer( m_GfxApi, pData, DataSize, Width, Height, Depth, Format, SamplerMode, Filter, name.c_str() ); + + assert( name.empty() ); // must have a valid name + auto it = m_LoadedTextures.try_emplace( name, std::move(texture) ); + if (!it.second) + { + assert( 0 && "CreateTextureFromBuffer duplicate texture name, must be unique (or use ::CreateTextureFromBuffer)" ); + return nullptr; + } + else + return &it.first->second; } //----------------------------------------------------------------------------- -std::unique_ptr TextureManagerT::CreateTextureObjectView( GraphicsApiBase& gfxApi, const Texture& original, TextureFormat viewFormat ) +const TextureBase* TextureManager::CreateTextureObjectView( const TextureBase& original, TextureFormat viewFormat, std::string name ) //----------------------------------------------------------------------------- { - auto pTexture = std::make_unique>(); - *pTexture = ::CreateTextureObjectView( static_cast( gfxApi ), apiCast(original), viewFormat ); - return pTexture; + auto texture = ::CreateTextureObjectView( m_GfxApi, apiCast(original), viewFormat ); + + assert( name.empty() ); // must have a valid name + auto it = m_LoadedTextures.try_emplace( name, std::move( texture ) ); + if (!it.second) + { + assert( 0 && "CreateTextureObjectView duplicate texture name, must be unique (or use ::CreateTextureObjectView)" ); + return nullptr; + } + else + return &it.first->second; } diff --git a/framework/code/texture/vulkan/textureManager.hpp b/framework/code/texture/vulkan/textureManager.hpp index 9050894..62b2ba6 100644 --- a/framework/code/texture/vulkan/textureManager.hpp +++ b/framework/code/texture/vulkan/textureManager.hpp @@ -1,6 +1,6 @@ //============================================================================= // -// Copyright (c) 2023 QUALCOMM Technologies Inc. +// Copyright (c) 2022 QUALCOMM Technologies Inc. // All Rights Reserved. // //============================================================================== @@ -13,60 +13,59 @@ class Vulkan; template class LoaderKtxT; -template class TextureT; -class TextureKtx; -template class TextureKtxT; -template class TexturePpmT; -template class TextureManagerT; -template class SamplerT; -using TextureManagerVulkan = TextureManagerT; +template class Sampler; +template class Texture; +class TextureKtxBase; +template class TextureManager; +template class TexturePpm; +using TextureManagerVulkan = TextureManager; /// @brief Templated implementation of TextureManager that handles ktx file loading for Vulkan graphics api. /// @tparam T_GFXAPI template<> -class TextureManagerT final : public TextureManager +class TextureManager final : public TextureManagerBase { public: using tGfxApi = Vulkan; + using Texture = Texture; + using Sampler = Sampler; - TextureManagerT(tGfxApi& rGfxApi) noexcept; - virtual ~TextureManagerT() override; - TextureManagerT& operator=(const TextureManagerT&) = delete; - TextureManagerT(const TextureManagerT&) = delete; + TextureManager(tGfxApi& rGfxApi, AssetManager&) noexcept; + virtual ~TextureManager() override; + TextureManager& operator=(const TextureManager&) = delete; + TextureManager(const TextureManager&) = delete; bool Initialize(); void Release() override; - /// @brief Helper to return the ktx file loader directly. If this throws a compile error then .cpp that includes this file is missing #include "texture/[gfxapi]/loaderKtx.hpp" - TextureKtx* GetLoader() const { return m_Loader.get(); } - TexturePpm* GetLoaderPpm() const { return m_LoaderPpm.get(); } - - const Texture* GetTexture(const std::string& textureSlotName) const override; + /// @brief Find a texture (by slot name) that may be already loaded + /// @param textureSlotName name to look for + /// @return pointer to already loaded texture, or null + const TextureBase* GetTexture(const std::string& textureSlotName) const override; /// Create texture (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. /// Implements the base class virtual function. - std::unique_ptr CreateTextureObject(GraphicsApiBase& gfxApi, const CreateTexObjectInfo& texInfo) override; + const TextureBase* CreateTextureObject( const CreateTexObjectInfo& texInfo) override; /// Create texture from a block of texture data in memory (with correct format, span etc). /// Implements the base class virtual function. - std::unique_ptr CreateTextureFromBuffer( GraphicsApiBase&, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, const char* pName ) override; + const TextureBase* CreateTextureFromBuffer( const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, TextureFormat Format, SamplerAddressMode SamplerMode, SamplerFilter Filter, std::string name ) override; /// Create a texture that views (aliases) another texture but using a different texture format (must be 'related' formats, which formats are related is dependant on graphics api) /// Implements the base class virtual function. - std::unique_ptr CreateTextureObjectView( GraphicsApiBase& gfxApi, const Texture& original, TextureFormat viewFormat ) override; + const TextureBase* CreateTextureObjectView( const TextureBase& original, TextureFormat viewFormat, std::string name ) override; /// Get a 'default' sampler for the given address mode (all other sampler settings assumed to be 'normal' ie linearly sampled etc) - const Sampler* const GetSampler( SamplerAddressMode ) const override; + const SamplerBase* const GetSampler( SamplerAddressMode ) const override; protected: - const Texture* GetOrLoadTexture_(const std::string& textureSlotName, AssetManager& rAssetManager, const std::string& filename, const Sampler& sampler) override; - void BatchLoad(AssetManager& rAssetManager, const std::span>, const Sampler& defaultSampler) override; + const TextureBase* GetOrLoadTexture_(const std::string& textureSlotName, const std::string& filename, const SamplerBase& sampler) override; + void BatchLoad(const std::span>, const SamplerBase& defaultSampler) override; private: - std::vector< TextureT> arses; - std::map> m_LoadedTextures; - std::vector< SamplerT> m_DefaultSamplers; - const bool m_MirrorClampToEdgeSupported = false; // currently this is never set, if we add VK_KHR_sampler_mirror_clamp_to_edge extension support or samplerMirrorClampToEdge feature flag then we can change this to non const and set/reset - tGfxApi& m_GfxApi; + std::map m_LoadedTextures; + std::vector m_DefaultSamplers; + const bool m_MirrorClampToEdgeSupported = false; // currently this is never set, if we add VK_KHR_sampler_mirror_clamp_to_edge extension support or samplerMirrorClampToEdge feature flag then we can change this to non const and set/reset + tGfxApi& m_GfxApi; }; diff --git a/framework/code/vulkan/MeshObject.cpp b/framework/code/vulkan/MeshObject.cpp index a5c8269..09906be 100644 --- a/framework/code/vulkan/MeshObject.cpp +++ b/framework/code/vulkan/MeshObject.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/vulkan/MeshObject.h b/framework/code/vulkan/MeshObject.h index 3422803..38b3f2d 100644 --- a/framework/code/vulkan/MeshObject.h +++ b/framework/code/vulkan/MeshObject.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/vulkan/TextureFuncts.cpp b/framework/code/vulkan/TextureFuncts.cpp index 32da45d..b957c91 100644 --- a/framework/code/vulkan/TextureFuncts.cpp +++ b/framework/code/vulkan/TextureFuncts.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,812 +9,14 @@ // TextureFuncts.cpp // Vulkan texture handling support -#include "system/os_common.h" -#include "system/assetManager.hpp" -#include "memory/memoryManager.hpp" -#include "vulkan_support.hpp" -#include "TextureFuncts.h" +#include "texture/textureFormat.hpp" #include "texture/vulkan/texture.hpp" -#include -#include +#include "vulkan/vulkan.hpp" #include #define STB_IMAGE_IMPLEMENTATION #include "tinygltf/stb_image.h" #include "tinygltf/stb_image_write.h" -#if 0 - -// http://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/ -constexpr std::array KTX_IDENTIFIER_REF = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A }; -constexpr uint32_t KTX_ENDIAN_REF = 0x04030201; // Big Endian -constexpr uint32_t KTX_ENDIAN_REF_REV = 0x01020304; // Little Endian -constexpr uint32_t KTX_HEADER_SIZE = 64; - -// https://github.khronos.org/KTX-Specification/ -// https://github.com/KhronosGroup/KTX-Software/blob/master/lib/ktxint.h -constexpr std::array KTX2_IDENTIFIER_REF{ 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x32, 0x30, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A }; -#define KTX2_HEADER_SIZE (80) - -#if !defined(FLT_MAX) -#define FLT_MAX 3.402823466e+38f -#endif // !defined(FLT_MAX) - - -//----------------------------------------------------------------------------- -// Implementation data structures -//----------------------------------------------------------------------------- - -typedef struct _KTXHeader -{ - uint8_t identifier[12]; - uint32_t endianness; - uint32_t glType; - uint32_t glTypeSize; - uint32_t glFormat; - uint32_t glInternalFormat; - uint32_t glBaseInternalFormat; - uint32_t pixelWidth; - uint32_t pixelHeight; - uint32_t pixelDepth; - uint32_t numberOfArrayElements; - uint32_t numberOfFaces; - uint32_t numberOfMipmapLevels; - uint32_t bytesOfKeyValueData; -} KTXHeader; - -// https://github.khronos.org/KTX-Specification/ -// https://github.com/KhronosGroup/KTX-Software/blob/master/lib/ktxint.h -typedef struct ktxIndexEntry32 { - uint32_t byteOffset; /*!< Offset of item from start of file. */ - uint32_t byteLength; /*!< Number of bytes of data in the item. */ -} ktxIndexEntry32; -/** - * @internal - * @~English - * @brief 64-bit KTX 2 index entry. - */ -typedef struct ktxIndexEntry64 { - uint64_t byteOffset; /*!< Offset of item from start of file. */ - uint64_t byteLength; /*!< Number of bytes of data in the item. */ -} ktxIndexEntry64; - -typedef struct KTX_header2 { - uint8_t identifier[12]; - uint32_t vkFormat; - uint32_t typeSize; - uint32_t pixelWidth; - uint32_t pixelHeight; - uint32_t pixelDepth; - uint32_t layerCount; - uint32_t faceCount; - uint32_t levelCount; - uint32_t supercompressionScheme; - ktxIndexEntry32 dataFormatDescriptor; - ktxIndexEntry32 keyValueData; - ktxIndexEntry64 supercompressionGlobalData; -} KTX_header2; - -typedef struct ktxLevelIndexEntry { - uint64_t byteOffset; /*!< Offset of level from start of file. */ - uint64_t byteLength; - /*!< Number of bytes of compressed image data in the level. */ - uint64_t uncompressedByteLength; - /*!< Number of bytes of uncompressed image data in the level. */ -} ktxLevelIndexEntry; - - -// This is not a class. It is up to caller to release any objects in this structure -typedef struct _MipTexData -{ - uint32_t Width; - uint32_t Height; - uint32_t Size; - void* pData; -} MipTexData; - -typedef struct _LayerTexData -{ - uint32_t NumMipLevels; - MipTexData* pMipData; -} LayerTexData; - -typedef struct _FaceTexData -{ - uint32_t NumLayers; - LayerTexData* pLayerData; -} FaceTexData; - -typedef struct _VulkanTexData -{ - uint32_t glType; - uint32_t glFormat; - uint32_t glInternalFormat; - VkFormat VulkanFormat; - - uint32_t NumFaces; - FaceTexData* pFaceData; -} VulkanTexData; - - -//----------------------------------------------------------------------------- -static void L_FreeTexData(VulkanTexData* pTexData) -//----------------------------------------------------------------------------- -{ - if (pTexData == NULL) - return; - - if (pTexData->NumFaces == 0 && pTexData->pFaceData == NULL) - { - // The data structure is already reset - return; - } - - // If any of these next conditions are true the structure is in a horked state! - if (pTexData->NumFaces == 0 || pTexData->pFaceData == NULL) - { - LOGE("Texture data is horked: NumFaces is 0 or FaceData is NULL!"); - return; - } - - if (pTexData->pFaceData->NumLayers == 0 || pTexData->pFaceData->pLayerData == NULL) - { - LOGE("Texture data is horked: NumLayers is 0 or LayerData is NULL!"); - return; - } - - if (pTexData->pFaceData->pLayerData->NumMipLevels == 0 || pTexData->pFaceData->pLayerData->pMipData == NULL) - { - LOGE("Texture data is horked: NumMipLevels is 0 or MipData is NULL!"); - return; - } - - // Each texture has faces... - for (uint32_t WhichFace = 0; WhichFace < pTexData->NumFaces; WhichFace++) - { - // ...each face has layers... - for (uint32_t WhichLayer = 0; WhichLayer < pTexData->pFaceData[WhichFace].NumLayers; WhichLayer++) - { - // ...each layer has mip levels - for (uint32_t WhichMipLevel = 0; WhichMipLevel < pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].NumMipLevels; WhichMipLevel++) - { - free(pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].pData); - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].pData = NULL; - } // Which MipLevel - - free(pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData); - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].NumMipLevels = 0; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData = NULL; - } // Which Layer - - free(pTexData->pFaceData[WhichFace].pLayerData); - pTexData->pFaceData[WhichFace].NumLayers = 0;; - pTexData->pFaceData[WhichFace].pLayerData = NULL; - } // Which Face - - free(pTexData->pFaceData); - pTexData->NumFaces = 0; - pTexData->pFaceData = NULL; -} - -static const std::map CompressedGlFormatToVkFormat = { - {0x83F0/*GL_COMPRESSED_RGB_S3TC_DXT1_EXT*/, VK_FORMAT_BC1_RGB_UNORM_BLOCK}, - {0x83F1/*GL_COMPRESSED_RGBA_S3TC_DXT1_EXT*/, VK_FORMAT_BC1_RGBA_UNORM_BLOCK}, - {0x83F2/*GL_COMPRESSED_RGBA_S3TC_DXT3_EXT*/, VK_FORMAT_BC2_UNORM_BLOCK}, - {0x83F3/*GL_COMPRESSED_RGBA_S3TC_DXT5_EXT*/, VK_FORMAT_BC3_UNORM_BLOCK}, - {0x8C4C/*GL_COMPRESSED_SRGB_S3TC_DXT1_EXT*/, VK_FORMAT_BC1_RGB_SRGB_BLOCK }, - {0x8C4D/*GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT*/, VK_FORMAT_BC1_RGBA_SRGB_BLOCK }, - {0x8C4E/*GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT*/, VK_FORMAT_BC2_SRGB_BLOCK}, - {0x8C4F/*GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT*/, VK_FORMAT_BC3_SRGB_BLOCK}, - - {0x9274/*GL_COMPRESSED_RGB8_ETC2*/, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK}, - {0x9275/*GL_COMPRESSED_SRGB8_ETC2*/, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK}, - {0x9276/*GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2*/, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK }, - {0x9277/*GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2*/, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK }, - {0x9278/*GL_COMPRESSED_RGBA8_ETC2_EAC*/, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK}, - {0x9279/*GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC*/, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK}, - - {0x93B0/*GL_COMPRESSED_RGBA_ASTC_4x4_KHR*/, VK_FORMAT_ASTC_4x4_UNORM_BLOCK}, - {0x93B1/*GL_COMPRESSED_RGBA_ASTC_5x4_KHR*/, VK_FORMAT_ASTC_5x4_UNORM_BLOCK}, - {0x93B2/*GL_COMPRESSED_RGBA_ASTC_5x5_KHR*/, VK_FORMAT_ASTC_5x5_UNORM_BLOCK}, - {0x93B3/*GL_COMPRESSED_RGBA_ASTC_6x5_KHR*/, VK_FORMAT_ASTC_6x5_UNORM_BLOCK}, - {0x93B4/*GL_COMPRESSED_RGBA_ASTC_6x6_KHR*/, VK_FORMAT_ASTC_6x6_UNORM_BLOCK}, - {0x93B5/*GL_COMPRESSED_RGBA_ASTC_8x5_KHR*/, VK_FORMAT_ASTC_8x5_UNORM_BLOCK}, - {0x93B6/*GL_COMPRESSED_RGBA_ASTC_8x6_KHR*/, VK_FORMAT_ASTC_8x6_UNORM_BLOCK}, - {0x93B7/*GL_COMPRESSED_RGBA_ASTC_8x8_KHR*/, VK_FORMAT_ASTC_8x8_UNORM_BLOCK}, - {0x93B8/*GL_COMPRESSED_RGBA_ASTC_10x5_KHR*/, VK_FORMAT_ASTC_10x5_UNORM_BLOCK}, - {0x93B9/*GL_COMPRESSED_RGBA_ASTC_10x6_KHR*/, VK_FORMAT_ASTC_10x6_UNORM_BLOCK}, - {0x93BA/*GL_COMPRESSED_RGBA_ASTC_10x8_KHR*/, VK_FORMAT_ASTC_10x8_UNORM_BLOCK}, - {0x93BB/*GL_COMPRESSED_RGBA_ASTC_10x10_KHR*/, VK_FORMAT_ASTC_10x10_UNORM_BLOCK}, - {0x93BC/*GL_COMPRESSED_RGBA_ASTC_12x10_KHR*/, VK_FORMAT_ASTC_12x10_UNORM_BLOCK}, - {0x93BD/*GL_COMPRESSED_RGBA_ASTC_12x12_KHR*/, VK_FORMAT_ASTC_12x12_UNORM_BLOCK}, - - {0x93D0/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR*/, VK_FORMAT_ASTC_4x4_SRGB_BLOCK}, - {0x93D1/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR*/, VK_FORMAT_ASTC_5x4_SRGB_BLOCK}, - {0x93D2/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR*/, VK_FORMAT_ASTC_5x5_SRGB_BLOCK}, - {0x93D3/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR*/, VK_FORMAT_ASTC_6x5_SRGB_BLOCK}, - {0x93D4/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR*/, VK_FORMAT_ASTC_6x6_SRGB_BLOCK}, - {0x93D5/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR*/, VK_FORMAT_ASTC_8x5_SRGB_BLOCK}, - {0x93D6/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR*/, VK_FORMAT_ASTC_8x6_SRGB_BLOCK}, - {0x93D7/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR*/, VK_FORMAT_ASTC_8x8_SRGB_BLOCK}, - {0x93D8/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR*/, VK_FORMAT_ASTC_10x5_SRGB_BLOCK}, - {0x93D9/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR*/, VK_FORMAT_ASTC_10x6_SRGB_BLOCK}, - {0x93DA/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR*/, VK_FORMAT_ASTC_10x8_SRGB_BLOCK}, - {0x93DB/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR*/, VK_FORMAT_ASTC_10x10_SRGB_BLOCK}, - {0x93DC/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR*/, VK_FORMAT_ASTC_12x10_SRGB_BLOCK}, - {0x93DD/*GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR*/, VK_FORMAT_ASTC_12x12_SRGB_BLOCK} -}; - -//----------------------------------------------------------------------------- -static VkFormat L_ReturnVulkanFormat(uint32_t glType, uint32_t glFormat, uint32_t glInternalFormat) -//----------------------------------------------------------------------------- -{ - // Really need GL versions of these numbers - const uint32_t glType_GL_UNSIGNED_BYTE = 0x1401; - const uint32_t glType_GL_HALF_FLOAT = 0x140B; - const uint32_t glType_GL_FLOAT = 0x1406; - - const uint32_t glFormat_GL_RGB = 0x1907; - const uint32_t glFormat_GL_RGBA = 0x1908; - - const uint32_t glFormat_GL_RGB8 = 0x8051; - const uint32_t glFormat_GL_RGBA8 = 0x8058; - - const uint32_t glFormat_GL_SRGB8_EXT = 0x8C41; - const uint32_t glFormat_GL_SRGB8_ALPHA8_EXT = 0x8C43; - - const uint32_t glFormat_GL_RGBA16F = 0x881A; - const uint32_t glFormat_GL_RGBA32F = 0x8814; - - const uint32_t glFormat_GL_RED = 0x1903; - const uint32_t glFormat_GL_R8 = 0x8229; - - VkFormat RetVal = VK_FORMAT_UNDEFINED; - - // Unsigned Byte Formats (SimpleTextureConverted uses either GL_RGB or GL_RGB8) - if (glType == glType_GL_UNSIGNED_BYTE && (glFormat == glFormat_GL_RGB || glFormat == glFormat_GL_RGB8)) - { - LOGE("VK_FORMAT_R8G8B8_UNORM / VK_FORMAT_R8G8B8_SRGB Texture format NOT tested!"); - if (glInternalFormat == glFormat_GL_SRGB8_EXT) - { - RetVal = VK_FORMAT_R8G8B8_SRGB; - } - else - { - RetVal = VK_FORMAT_R8G8B8_UNORM; - } - } - - else if (glType == glType_GL_UNSIGNED_BYTE && (glFormat == glFormat_GL_RED || glFormat == glFormat_GL_R8)) - { - if (glInternalFormat == glFormat_GL_R8) - { - RetVal = VK_FORMAT_R8_UNORM; - } - } - - else if (glType == glType_GL_UNSIGNED_BYTE && (glFormat == glFormat_GL_RGBA || glFormat == glFormat_GL_RGBA8)) - { - if (glInternalFormat == glFormat_GL_SRGB8_ALPHA8_EXT) - { - RetVal = VK_FORMAT_R8G8B8A8_SRGB; - } - else - { - RetVal = VK_FORMAT_R8G8B8A8_UNORM; - } - } - - // Float Formats - else if (glType == glType_GL_HALF_FLOAT && glInternalFormat == glFormat_GL_RGBA16F) - { - RetVal = VK_FORMAT_R16G16B16A16_SFLOAT; - } - - else if (glType == glType_GL_FLOAT && glInternalFormat == glFormat_GL_RGBA32F) - { - LOGE("VK_FORMAT_R32G32B32A32_SFLOAT Texture format NOT tested!"); - RetVal = VK_FORMAT_R32G32B32A32_SFLOAT; - } - - // Compressed Formats - else - { - const auto it = CompressedGlFormatToVkFormat.find( glInternalFormat ); - if( it != CompressedGlFormatToVkFormat.end() ) - { - RetVal = it->second; - } - } - - // Make sure we found something - if (RetVal == VK_FORMAT_UNDEFINED) - { - LOGE("KTX texture formats could not be converted to Vulkan! Type = 0x%x; Format = 0x%x", glType, glFormat); - } - - return RetVal; -} - -//----------------------------------------------------------------------------- -static bool L_ParseKTXBuffer(const char* pFileName, void* pKTXBuffer, uint32_t BufferLength, VulkanTexData* pTexData) -//----------------------------------------------------------------------------- -{ - if (pTexData == NULL) - return false; - - // Make sure starting from a clean place - L_FreeTexData(pTexData); - - // Set up the walker - void* pWalker = pKTXBuffer; - uint32_t uiWalkerDist = 0; - - // Read and verify the KTX Header - KTXHeader* pHeader = (KTXHeader*)pWalker; - - if (memcmp(pHeader->identifier, KTX_IDENTIFIER_REF.data(), KTX_IDENTIFIER_REF.size()) != 0) - { - LOGE("KTX file has invalid header: %s", pFileName); - return false; - } - - if( pHeader->endianness != KTX_ENDIAN_REF ) - { - LOGE("KTX file has invalid endianness (loader does not currently support little endian): %s", pFileName); - return false; - } - - // Skip over the header - uiWalkerDist += sizeof(KTXHeader); - pWalker = (char*)pKTXBuffer + uiWalkerDist; - - // Skip over key value data - uiWalkerDist += pHeader->bytesOfKeyValueData; - pWalker = (char*)pKTXBuffer + uiWalkerDist; - - // LOGI("Texture Header Info (%s)", pFileName); - // LOGI(" glType: 0x%x", pHeader->glType); - // LOGI(" glTypeSize: %d", pHeader->glTypeSize); - // LOGI(" glFormat: 0x%x", pHeader->glFormat); - // LOGI(" glInternalFormat: 0x%x", pHeader->glInternalFormat); - // LOGI(" glBaseInternalFormat: 0x%x", pHeader->glBaseInternalFormat); - // LOGI(" pixelWidth: %d", pHeader->pixelWidth); - // LOGI(" pixelHeight: %d", pHeader->pixelHeight); - // LOGI(" pixelDepth: %d", pHeader->pixelDepth); - // LOGI(" numberOfArrayElements: %d", pHeader->numberOfArrayElements); - // LOGI(" numberOfFaces: %d", pHeader->numberOfFaces); - // LOGI(" numberOfMipmapLevels: %d", pHeader->numberOfMipmapLevels); - - // ******************************** - // Memory Allocation - // ******************************** - // Each texture has faces... - pTexData->pFaceData = (FaceTexData*)malloc(pHeader->numberOfFaces * sizeof(FaceTexData)); - if (pTexData->pFaceData == NULL) - { - LOGE("Unable to allocate memory for %d faces: %s", pHeader->numberOfFaces, pFileName); - return false; - } - - // Pull off the info we care about - pTexData->glType = pHeader->glType; - pTexData->glFormat = pHeader->glFormat; - pTexData->glInternalFormat = pHeader->glInternalFormat; - pTexData->VulkanFormat = L_ReturnVulkanFormat(pHeader->glType, pHeader->glFormat, pHeader->glInternalFormat); - pTexData->NumFaces = pHeader->numberOfFaces; - - for (uint32_t WhichFace = 0; WhichFace < pTexData->NumFaces; WhichFace++) - { - // ...each face has layers... - - // For loop, we need at least one - if (pHeader->numberOfArrayElements == 0) - pHeader->numberOfArrayElements = 1; - - pTexData->pFaceData[WhichFace].pLayerData = (LayerTexData*)malloc(pHeader->numberOfArrayElements * sizeof(LayerTexData)); - if (pTexData->pFaceData[WhichFace].pLayerData == NULL) - { - LOGE("Unable to allocate memory for %d layers: %s", pHeader->numberOfArrayElements, pFileName); - return false; - } - pTexData->pFaceData[WhichFace].NumLayers = pHeader->numberOfArrayElements; - - for (uint32_t WhichLayer = 0; WhichLayer < pTexData->pFaceData[WhichFace].NumLayers; WhichLayer++) - { - // ...each layer has mip levels - - // For loop, we need at least one - if (pHeader->numberOfMipmapLevels == 0) - pHeader->numberOfMipmapLevels = 1; - - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData = (MipTexData*)malloc(pHeader->numberOfMipmapLevels * sizeof(MipTexData)); - if (pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData == NULL) - { - LOGE("Unable to allocate memory for %d mip levels: %s", pHeader->numberOfMipmapLevels, pFileName); - return false; - } - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].NumMipLevels = pHeader->numberOfMipmapLevels; - - for (uint32_t WhichMipLevel = 0; WhichMipLevel < pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].NumMipLevels; WhichMipLevel++) - { - // These will be allocated and filled in later. Set to NULL for error checking - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].pData = NULL; - } // Which MipLevel - - } // Which Layer - - } // Which Face - - // ******************************** - // Allocate and fill mip levels - // ******************************** - uint32_t uiMipWidth = pHeader->pixelWidth; - uint32_t uiMipHeight = pHeader->pixelHeight; - uint32_t uiMipSize = 0; - for (uint32_t WhichMipLevel = 0; WhichMipLevel < pHeader->numberOfMipmapLevels; WhichMipLevel++) - { - // What is the data size of this mip level - uiMipSize = *((uint32_t*)pWalker); - uiWalkerDist += sizeof(uint32_t); - pWalker = (char*)pKTXBuffer + uiWalkerDist; - - // LOGI("Mip %d: %dx%d => %d bytes", WhichMipLevel, uiMipWidth, uiMipHeight, uiMipSize); - - for (uint32_t WhichLayer = 0; WhichLayer < pHeader->numberOfArrayElements; WhichLayer++) - { - for (uint32_t WhichFace = 0; WhichFace < pHeader->numberOfFaces; WhichFace++) - { - // TODO: for (uint32_t WhichSlice = 0; WhichSlice < pHeader->pixelDepth; WhichSlice++) - - // Allocate this mip level... - void* pTempData = malloc(uiMipSize); - if (pTempData == NULL) - { - LOGE("Unable to allocate %d bytes of memory for mip level: %s", uiMipSize, pFileName); - return false; - } - - // ...copy the data over... - memcpy(pTempData, pWalker, uiMipSize); - - // ... and set the data in the structure - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].Width = uiMipWidth; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].Height = uiMipHeight; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].Size = uiMipSize; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].pData = pTempData; - - - // Step forward but make sure on the correct boundary - uiWalkerDist += uiMipSize; - pWalker = (char*)pKTXBuffer + uiWalkerDist; - - // Possible to have face padding here - // (https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/) - // cubePadding: "For non-array cubemap textures (any texture where numberOfFaces is 6 and - // numberOfArrayElements is 0) cubePadding contains between 0 and 3 bytes to ensure that the - // data in each face begins at a file offset that is a multiple of 4. In all other cases - // cubePadding is empty (0 bytes long)." - uint32_t CubePadding = (uiWalkerDist % 4); - if (CubePadding != 0) - { - uiWalkerDist += CubePadding; - pWalker = (char*)pKTXBuffer + uiWalkerDist; - } - - } // Which Face - } // Which Layer - - // Divide the mip size to go to next one - uiMipWidth /= 2; - uiMipHeight /= 2; - - // Make sure we don't have a size of zero - if (uiMipWidth == 0) - uiMipWidth = 1; - if (uiMipHeight == 0) - uiMipHeight = 1; - - // May need to adjust pointer due to padding (https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/) - uint32_t BytePadding = 3 - ((uiMipSize + 3) % 4); - if (BytePadding != 0) - { - uiWalkerDist += BytePadding; - pWalker = (char*)pKTXBuffer + uiWalkerDist; - } - } // Which MipLevel - - // Everything worked out - return true; -} -//----------------------------------------------------------------------------- -static bool L_ParseKTX2Buffer(const char* pFileName, void* pKTXBuffer, uint32_t BufferLength, VulkanTexData* pTexData) -//----------------------------------------------------------------------------- -{ - if (pTexData == NULL) - return false; - - // Make sure starting from a clean place - L_FreeTexData(pTexData); - - // Set up the walker - void* pWalker = pKTXBuffer; - uint32_t uiWalkerDist = 0; - - // Read and verify the KTX Header - KTX_header2* pHeader = (KTX_header2*)pWalker; - - if (memcmp(pHeader->identifier, KTX2_IDENTIFIER_REF.data(), KTX2_IDENTIFIER_REF.size()) != 0) - { - LOGE("KTX file has invalid header: %s", pFileName); - return false; - } - - LOGI("Texture Header Info (%s)", pFileName); - LOGI(" vkFormat: 0x%x", pHeader->vkFormat); - LOGI(" typeSize: %d", pHeader->typeSize); - LOGI(" pixelWidth: %d", pHeader->pixelWidth); - LOGI(" pixelHeight: %d", pHeader->pixelHeight); - LOGI(" pixelDepth: %d", pHeader->pixelDepth); - LOGI(" layerCount: %d", pHeader->layerCount); - LOGI(" faceCount: %d", pHeader->faceCount); - LOGI(" levelCount: %d", pHeader->levelCount); - - // Cubemaps => NOT SUPPORTED - if (pHeader->faceCount != 1) - { - LOGE(" CubeMaps in KTX2 NOT SUPPORTED!"); - return false; - } - - // Array textures => NOT SUPPORTED - if (pHeader->layerCount != 0) - { - LOGE(" Array Textures in KTX2 NOT SUPPORTED!"); - return false; - } - - // Single Mip => NOT SUPPORTED - if (pHeader->levelCount == 0) - { - LOGE(" Single mip in KTX2 NOT SUPPORTED!"); - return false; - } - - if (pHeader->vkFormat == VK_FORMAT_R16G16B16A16_SFLOAT) - { - LOGI(" Floating point format: VK_FORMAT_R16G16B16A16_SFLOAT"); - } - - // if (pHeader->vkFormat == VK_FORMAT_B8G8R8_SRGB) - // { - // LOGE(" SRGB KTX2 NOT SUPPORTED! Changing VK_FORMAT_B8G8R8_SRGB to VK_FORMAT_R8G8B8_UNORM"); - // pHeader->vkFormat = VK_FORMAT_R8G8B8_UNORM; - // } - // - // if (pHeader->vkFormat == VK_FORMAT_B8G8R8A8_SRGB) - // { - // LOGE(" SRGB KTX2 NOT SUPPORTED! Changing VK_FORMAT_B8G8R8A8_SRGB to VK_FORMAT_R8G8B8A8_UNORM"); - // pHeader->vkFormat = VK_FORMAT_R8G8B8A8_UNORM; - // } - - // Skip over the header - uiWalkerDist += sizeof(KTX_header2); - pWalker = (char*)pKTXBuffer + uiWalkerDist; - // LOGI("Walker is now %d bytes from start of file", uiWalkerDist); - - // DataFormatDescriptor - // LOGI(" DataFormatDescriptor: %d bytes starting at %d", pHeader->dataFormatDescriptor.byteLength, pHeader->dataFormatDescriptor.byteOffset); - // uiWalkerDist = pHeader->dataFormatDescriptor.byteOffset + pHeader->dataFormatDescriptor.byteLength; - // pWalker = (char*)pKTXBuffer + uiWalkerDist; - // LOGI("Walker is now %d bytes from start of file", uiWalkerDist); - - - // KeyValueData - // LOGI(" KeyValueData: %d bytes starting at %d", pHeader->keyValueData.byteLength, pHeader->keyValueData.byteOffset); - // uiWalkerDist = pHeader->keyValueData.byteOffset + pHeader->keyValueData.byteLength; - // pWalker = (char*)pKTXBuffer + uiWalkerDist; - // LOGI("Walker is now %d bytes from start of file", uiWalkerDist); - - // SupercompressionGlobalData => NOT SUPPORTED - if (pHeader->supercompressionGlobalData.byteOffset != 0 || pHeader->supercompressionGlobalData.byteLength != 0) - { - LOGE(" SupercompressionGlobalData is NOT SUPPORTED!"); - return false; - } - - // Now come the levels: One entry for each mip - uint32_t MipWidth = pHeader->pixelWidth; - uint32_t MipHeight = pHeader->pixelHeight; - ktxLevelIndexEntry* pLevelEntry = (ktxLevelIndexEntry*)pWalker; - for (uint32_t WhichLevel = 0; WhichLevel < pHeader->levelCount; WhichLevel++) - { - // LOGI(" Level %02d (%d x %d): %lld bytes starting at %lld", WhichLevel, MipWidth, MipHeight, pLevelEntry[WhichLevel].byteLength, pLevelEntry[WhichLevel].byteOffset); - - MipWidth /= 2; - MipHeight /= 2; - - uiWalkerDist += sizeof(ktxLevelIndexEntry); - pWalker = (char*)pKTXBuffer + uiWalkerDist; - } - // LOGI("Walker is now %d bytes from start of file", uiWalkerDist); - - // Sanity check that I am the start of DataFormatDescriptor - if (uiWalkerDist != pHeader->dataFormatDescriptor.byteOffset) - { - LOGE("KTX file has invalid header: %s", pFileName); - LOGE(" Accounted for %d bytes but should be at %d offset", uiWalkerDist, pHeader->dataFormatDescriptor.byteOffset); - return false; - } - - // ******************************** - // Memory Allocation - // ******************************** - // Each texture has faces... - pTexData->pFaceData = (FaceTexData*)malloc(pHeader->faceCount * sizeof(FaceTexData)); - if (pTexData->pFaceData == NULL) - { - LOGE("Unable to allocate memory for %d faces: %s", pHeader->faceCount, pFileName); - return false; - } - - // Pull off the info we care about - pTexData->glType = pHeader->vkFormat; - pTexData->glFormat = pHeader->vkFormat; - pTexData->glInternalFormat = pHeader->vkFormat; - pTexData->VulkanFormat = (VkFormat)pHeader->vkFormat; - pTexData->NumFaces = pHeader->faceCount; - - for (uint32_t WhichFace = 0; WhichFace < pTexData->NumFaces; WhichFace++) - { - pTexData->pFaceData[WhichFace].pLayerData = (LayerTexData*)malloc(sizeof(LayerTexData)); - if (pTexData->pFaceData[WhichFace].pLayerData == NULL) - { - LOGE("Unable to allocate memory for layer: %s", pFileName); - return false; - } - pTexData->pFaceData[WhichFace].NumLayers = 1; - - for (uint32_t WhichLayer = 0; WhichLayer < pTexData->pFaceData[WhichFace].NumLayers; WhichLayer++) - { - // ...each layer has mip levels - - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData = (MipTexData*)malloc(pHeader->levelCount * sizeof(MipTexData)); - if (pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData == NULL) - { - LOGE("Unable to allocate memory for %d mip levels: %s", pHeader->levelCount, pFileName); - return false; - } - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].NumMipLevels = pHeader->levelCount; - - for (uint32_t WhichMipLevel = 0; WhichMipLevel < pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].NumMipLevels; WhichMipLevel++) - { - // These will be allocated and filled in later. Set to NULL for error checking - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].pData = nullptr; - } // Which MipLevel - - } // Which Layer - - } // Which Face - - // ******************************** - // Allocate and fill mip levels - // ******************************** - uint32_t uiMipWidth = pHeader->pixelWidth; - uint32_t uiMipHeight = pHeader->pixelHeight; - uint32_t uiMipSize = 0; - for (uint32_t WhichMipLevel = 0; WhichMipLevel < pHeader->levelCount; WhichMipLevel++) - { - // What is the data size of this mip level - uiMipSize = (uint32_t)pLevelEntry[WhichMipLevel].byteLength; - - // LOGI("Mip %d: %dx%d => %d bytes", WhichMipLevel, uiMipWidth, uiMipHeight, uiMipSize); - - for (uint32_t WhichLayer = 0; WhichLayer < 1; WhichLayer++) - { - for (uint32_t WhichFace = 0; WhichFace < pHeader->faceCount; WhichFace++) - { - // TODO: for (uint32_t WhichSlice = 0; WhichSlice < pHeader->pixelDepth; WhichSlice++) - - // Allocate this mip level... - void* pTempData = malloc(uiMipSize); - if (pTempData == NULL) - { - LOGE("Unable to allocate %d bytes of memory for mip level: %s", uiMipSize, pFileName); - return false; - } - - // ...copy the data over... - void* pMipSource = (char*)pKTXBuffer + (uint32_t)pLevelEntry[WhichMipLevel].byteOffset; - memcpy(pTempData, pMipSource, uiMipSize); - - // ... and set the data in the structure - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].Width = uiMipWidth; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].Height = uiMipHeight; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].Size = uiMipSize; - pTexData->pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMipLevel].pData = pTempData; - - } // Which Face - } // Which Layer - - // Divide the mip size to go to next one - uiMipWidth /= 2; - uiMipHeight /= 2; - - // Make sure we don't have a size of zero - if (uiMipWidth == 0) - uiMipWidth = 1; - if (uiMipHeight == 0) - uiMipHeight = 1; - } // Which MipLevel - - // Everything worked out - return true; -} - -//----------------------------------------------------------------------------- -static bool L_ParsePNGBuffer( const char* pFileName, void* pPNGBuffer, uint32_t BufferLength, VulkanTexData* pTexData ) -//----------------------------------------------------------------------------- -{ - if (pTexData == NULL) - return false; - - // Make sure starting from a clean place - L_FreeTexData( pTexData ); - int width = 0, height = 0, componentsPerPixel = 0; - unsigned char* data = stbi_load_from_memory( static_cast(pPNGBuffer), BufferLength, &width, &height, &componentsPerPixel, 0/*forced components per pixel*/); - uint32_t dataSize = width * height * componentsPerPixel; - if (dataSize <= 0) - return false; - if (componentsPerPixel == 3) - { - // RGB formats not supported, shuffle to RGBA. - uint8_t* dataRGBA = new uint8_t[width*height*4]; - uint8_t* pOutRGBA = dataRGBA; - const uint8_t* pInRGB = (const uint8_t*)data; - for (int i = 0; i < width * height; ++i) - { - *pOutRGBA++ = *pInRGB++; - *pOutRGBA++ = *pInRGB++; - *pOutRGBA++ = *pInRGB++; - *pOutRGBA++ = 255; - } - STBI_FREE( data ); - data = dataRGBA; - componentsPerPixel = 4; - } - - pTexData->NumFaces = 1; - pTexData->pFaceData = (FaceTexData*) malloc( pTexData->NumFaces * sizeof( FaceTexData ) ); - pTexData->pFaceData->NumLayers = 1; - pTexData->pFaceData->pLayerData = (LayerTexData*) malloc( pTexData->pFaceData->NumLayers * sizeof( LayerTexData ) ); - pTexData->pFaceData->pLayerData->NumMipLevels = 1; - pTexData->pFaceData->pLayerData->pMipData = (MipTexData*) malloc( pTexData->pFaceData->pLayerData->NumMipLevels * sizeof( MipTexData ) ); - pTexData->pFaceData->pLayerData->pMipData->Height = height; - pTexData->pFaceData->pLayerData->pMipData->Width = width; - pTexData->pFaceData->pLayerData->pMipData->Size = dataSize; - pTexData->pFaceData->pLayerData->pMipData->pData = data; - - switch (componentsPerPixel) { - default: - break; - case 1: - pTexData->VulkanFormat = VK_FORMAT_R8_UNORM; - break; - case 2: - pTexData->VulkanFormat = VK_FORMAT_R8G8_UNORM; - break; - case 3: - pTexData->VulkanFormat = VK_FORMAT_R8G8B8_UNORM; - break; - case 4: - pTexData->VulkanFormat = VK_FORMAT_R8G8B8A8_SRGB; - break; - } - return true; -} - -#endif // 0 - //----------------------------------------------------------------------------- bool SaveTextureData( const char* pFileName, TextureFormat format, int width, int height, const void* data ) //----------------------------------------------------------------------------- @@ -847,1245 +49,3 @@ bool SaveTextureData( const char* pFileName, TextureFormat format, int width, in return (error != 0); } } - -#if 0 - -//----------------------------------------------------------------------------- -bool CreateSampler(Vulkan* pVulkan, VkSamplerAddressMode SamplerMode, VkFilter FilterMode, VkBorderColor BorderColor, bool UnnormalizedCoordinates, float mipBias, VkSampler* pRetSampler) -//----------------------------------------------------------------------------- -{ - assert(pRetSampler); - VkSamplerCreateInfo SamplerInfo{ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; - SamplerInfo.flags = 0; - SamplerInfo.magFilter = FilterMode; - SamplerInfo.minFilter = FilterMode; - SamplerInfo.mipmapMode = FilterMode == SamplerFilter::Linear ? VK_SAMPLER_MIPMAP_MODE_LINEAR : VK_SAMPLER_MIPMAP_MODE_NEAREST; - SamplerInfo.addressModeU = SamplerMode; - SamplerInfo.addressModeV = SamplerMode; - SamplerInfo.addressModeW = SamplerMode; - SamplerInfo.mipLodBias = mipBias; - SamplerInfo.anisotropyEnable = FilterMode == SamplerFilter::Linear ? VK_TRUE : VK_FALSE; - SamplerInfo.maxAnisotropy = SamplerInfo.anisotropyEnable==VK_TRUE ? 4.0f : 1.0f; - SamplerInfo.compareEnable = VK_FALSE; - SamplerInfo.compareOp = VK_COMPARE_OP_NEVER; - SamplerInfo.minLod = 0.0f; - SamplerInfo.maxLod = FLT_MAX; - SamplerInfo.borderColor = BorderColor; // VkBorderColor - SamplerInfo.unnormalizedCoordinates = UnnormalizedCoordinates ? VK_TRUE : VK_FALSE; - - VkResult RetVal = vkCreateSampler(pVulkan->m_VulkanDevice, &SamplerInfo, NULL, pRetSampler); - if (!CheckVkError("vkCreateSampler()", RetVal)) - return false; - return true; -} - -//----------------------------------------------------------------------------- -bool CreateImageView(Vulkan* pVulkan, VkImage image, VkFormat format, uint32_t baseMipLevel, uint32_t numMipLevels, uint32_t numFaces, VkImageViewType viewType, VkImageView* pRetImageView) -//----------------------------------------------------------------------------- -{ - assert(pRetImageView); - VkImageViewCreateInfo ImageViewInfo { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; - ImageViewInfo.flags = 0; - ImageViewInfo.image = image; - ImageViewInfo.viewType = viewType; - - ImageViewInfo.format = format; - ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_R; - ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_G; - ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_B; - ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_A; - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - ImageViewInfo.subresourceRange.baseMipLevel = baseMipLevel; - ImageViewInfo.subresourceRange.levelCount = numMipLevels; - ImageViewInfo.subresourceRange.baseArrayLayer = 0; - ImageViewInfo.subresourceRange.layerCount = 1; - if (numFaces == 6) - ImageViewInfo.subresourceRange.layerCount = 6; - else - ImageViewInfo.subresourceRange.layerCount = 1; - - VkImageView RetImageView; - auto RetVal = vkCreateImageView(pVulkan->m_VulkanDevice, &ImageViewInfo, NULL, pRetImageView); - if (!CheckVkError("vkCreateImageView()", RetVal)) - { - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -TextureVulkan LoadKTXTexture(Vulkan* pVulkan, AssetManager& assetManager, const char* pFileName, VkSamplerAddressMode SamplerMode, int32_t NumMipsToLoad, float mipBias) -//----------------------------------------------------------------------------- -{ - // Texture Convert Command Line: simpletextureconverter hud.tga hud.ktx -format R8G8B8A8Unorm -flipY - - VkResult RetVal; - - uint32_t uiWidth = 0; - uint32_t uiHeight = 0; - uint32_t uiFaces = 0; - uint32_t uiMipLevels = 0; - uint32_t uiMipOffset = 0; - VkFormat VulkanFormat = VK_FORMAT_UNDEFINED; - bool forceLinearTiling = false; - - VulkanTexData TexData = {}; - - LOGI("Loading KTX texture: %s", pFileName); - - { - std::vector fileData; - if (!assetManager.LoadFileIntoMemory(pFileName, fileData)) - { - LOGE("Error reading texture file: %s", pFileName); - return {}; - } - - size_t filenameLength = strlen( pFileName ); - if (filenameLength > 4 && strcmp( pFileName + filenameLength - 4, ".ktx" ) == 0) - { - if (!L_ParseKTXBuffer(pFileName, fileData.data(), (uint32_t)fileData.size(), &TexData)) - { - LOGE("Error parsing texture file: %s", pFileName); - return {}; - } - } - else if (filenameLength > 5 && strcmp(pFileName + filenameLength - 5, ".ktx2") == 0) - { - if (!L_ParseKTX2Buffer(pFileName, fileData.data(), (uint32_t)fileData.size(), &TexData)) - { - LOGE("Error parsing texture file: %s", pFileName); - return {}; - } - } - else - { - if (!L_ParsePNGBuffer( pFileName, fileData.data(), (uint32_t) fileData.size(), &TexData )) - { - LOGE( "Error parsing texture file: %s", pFileName ); - return {}; - } - } - } - - - uiWidth = TexData.pFaceData[0].pLayerData[0].pMipData[0].Width; - uiHeight = TexData.pFaceData[0].pLayerData[0].pMipData[0].Height; - uiFaces = TexData.NumFaces; - uiMipLevels = TexData.pFaceData[0].pLayerData[0].NumMipLevels; - VulkanFormat = TexData.VulkanFormat; - - if (NumMipsToLoad < (int32_t)uiMipLevels) - { - // Reset the "starting" mip so allocated texture memory is correct. - uiMipOffset = uiMipLevels - (uint32_t)NumMipsToLoad; - - uiWidth = TexData.pFaceData[0].pLayerData[0].pMipData[uiMipOffset].Width; - uiHeight = TexData.pFaceData[0].pLayerData[0].pMipData[uiMipOffset].Height; - uiMipLevels = NumMipsToLoad; - } - - // Check that the device supports this format - if (!pVulkan->IsTextureFormatSupported(VulkanFormat)) - { - // Potentially fallback to loading a .win.ktx file - size_t filenameLength = strlen(pFileName); - if ((filenameLength < 8 || strcmp(pFileName + filenameLength - 8, ".win.ktx") != 0) && (filenameLength>4 && strcmp(pFileName + filenameLength - 4, ".ktx") == 0)) - { - std::string fallbackFilename(pFileName, filenameLength - 4); - fallbackFilename.append(".win.ktx"); - auto fallback = LoadKTXTexture(pVulkan, assetManager, fallbackFilename.c_str(), SamplerMode); - if (!fallback.IsEmpty()) - return fallback; - } - - LOGE("Error, texture format (%d) not supported by device: %s", int(VulkanFormat), pFileName); - return {}; - } - - // Get device properites for the requested texture format - const auto& formatProperties = pVulkan->GetFormatProperties(VulkanFormat); - bool useStaging = !(formatProperties.linearTilingFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT); - - // Image creation info. Will change below based on need - VkImageCreateInfo ImageInfo {VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; - ImageInfo.flags = 0; - ImageInfo.imageType = VK_IMAGE_TYPE_2D; - ImageInfo.format = VulkanFormat; - ImageInfo.extent.width = uiWidth; - ImageInfo.extent.height = uiHeight; - ImageInfo.extent.depth = 1; // Spec says for VK_IMAGE_TYPE_2D depth must be 1 - ImageInfo.mipLevels = 1; // Set to 1 since making each level. Later will be set to MipLevels; - ImageInfo.arrayLayers = 1; // Set to 6 for cube maps. - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; - ImageInfo.tiling = VK_IMAGE_TILING_LINEAR; - ImageInfo.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - ImageInfo.queueFamilyIndexCount = 0; - ImageInfo.pQueueFamilyIndices = NULL; - ImageInfo.initialLayout = VK_IMAGE_LAYOUT_PREINITIALIZED; // VK_IMAGE_LAYOUT_UNDEFINED says data not guaranteed to be preserved when changing state - - struct CubeFace - { - CubeFace(uint32_t uiFaces) : mipImages(uiFaces) {} - std::vector mipImages; - }; - - // Allocate the cube face and mips for each face - std::vector cubeFaces; - cubeFaces.reserve(uiFaces); - - for (uint32_t WhichFace = 0; WhichFace < uiFaces; WhichFace++) - { - cubeFaces.emplace_back(uiMipLevels); - } - - - // Create and copy mip levels - - // Need the setup command buffer for loading images - VkCommandBuffer SetupCmdBuffer = pVulkan->StartSetupCommandBuffer(); - - // Load separate cube map faces into linear tiled textures - for (uint32_t WhichFace = 0; WhichFace < uiFaces; WhichFace++) - { - for (uint32_t WhichMip = 0; WhichMip < uiMipLevels; WhichMip++) - { - // TODO: Layers are not supported - uint32_t WhichLayer = 0; - - uint32_t TexDataMip = WhichMip + uiMipOffset; - - ImageInfo.extent.width = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Width; - ImageInfo.extent.height = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Height; - - char szName[256]; - memset(szName, 0, sizeof(szName)); - sprintf(szName, "%s: Face %d; Mip %d", pFileName, WhichFace, WhichMip); - if (!cubeFaces[WhichFace].mipImages[WhichMip].Initialize(pVulkan, ImageInfo, MemoryUsage::CpuToGpu)) - { - LOGE("Unable to initialize mip %d of face %d (%s)", WhichMip + 1, WhichFace + 1, pFileName); - return {}; - } - - // ... copy texture data into the image - VkImageSubresource SubresInfo {}; - SubresInfo.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - SubresInfo.mipLevel = 0; // This is always 0 since dealing with temporary images - SubresInfo.arrayLayer = 0; // TODO: Adjust this as we support 3D/array textures - - VkSubresourceLayout SubResLayout {}; - auto& faceImage = cubeFaces[WhichFace].mipImages[WhichMip].m_VmaImage; - vkGetImageSubresourceLayout(pVulkan->m_VulkanDevice, faceImage.GetVkBuffer(), &SubresInfo, &SubResLayout); - - { - // account for SubResLayout.offset too? - auto& memorymanager = pVulkan->GetMemoryManager(); - auto mappedMemory = memorymanager.Map(faceImage); - uint8_t* pDst = (uint8_t*)mappedMemory.data(); - uint8_t* pSrc = (uint8_t*)TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].pData; - if (FormatIsCompressed(VulkanFormat) || SubResLayout.rowPitch * ImageInfo.extent.height == TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Size) - { - // Block sizes match, copy entire mip level. - memcpy(pDst, pSrc, TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Size); - } - else - { - // Pitch is such that we need to copy line by line - can happen on non power-2 textures and when texture size gets very small (depending on GPU memory alignment requirements) - size_t srcRowPitch = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Size / ImageInfo.extent.height; - for (uint32_t y = 0; y < ImageInfo.extent.height; ++y) - { - memcpy(pDst, pSrc, srcRowPitch); - pDst += SubResLayout.rowPitch; - pSrc += srcRowPitch; - } - } - memorymanager.Unmap(faceImage, std::move(mappedMemory)); - } - - // Image barrier for linear image (base) - // Linear image will be used as a source for the copy - VkPipelineStageFlags srcMask = 0; - VkPipelineStageFlags dstMask = 1; - uint32_t baseMipLevel = 0; - uint32_t mipLevelCount = 1; - - pVulkan->SetImageLayout(cubeFaces[WhichFace].mipImages[WhichMip].m_VmaImage.GetVkBuffer(), - SetupCmdBuffer, - VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - srcMask, - dstMask, - baseMipLevel, - mipLevelCount); - } // Each mipmap in each face - } // Each Face - - // Transfer cube map faces to optimal tiling - - // Now that creating the whole thing we need the correct size - ImageInfo.extent.width = uiWidth; - ImageInfo.extent.height = uiHeight; - - // Now that we are done creating single images, need to create all mip levels - ImageInfo.mipLevels = uiMipLevels; - - // Setup texture as blit target with optimal tiling - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; - - if (uiFaces == 6) - ImageInfo.flags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT; - - ImageInfo.arrayLayers = uiFaces; - - // Need the return image - Wrap_VkImage RetImage; - if(!RetImage.Initialize(pVulkan, ImageInfo, MemoryUsage::GpuExclusive, pFileName)) - { - LOGE("Unable to initialize texture image (%s)", pFileName); - return {}; - } - - // Image barrier for optimal image (target) - // Optimal image will be used as destination for the copy - VkPipelineStageFlags srcMask = 0; - VkPipelineStageFlags dstMask = 1; - uint32_t baseMipLevel = 0; - uint32_t mipLevelCount = uiMipLevels; - uint32_t baseLayer = 0; - uint32_t layerCount = uiFaces; - - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), - SetupCmdBuffer, - VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - srcMask, - dstMask, - baseMipLevel, - mipLevelCount, - baseLayer, - layerCount); - - // Copy cube map faces one by one - // Vulkan spec says the order is +X, -X, +Y, -Y, +Z, -Z - for (uint32_t WhichFace = 0; WhichFace < uiFaces; WhichFace++) - { - for (uint32_t WhichMip = 0; WhichMip < uiMipLevels; WhichMip++) - { - // TODO: Layers are not supported - uint32_t WhichLayer = 0; - - uint32_t TexDataMip = WhichMip + uiMipOffset; - - // Copy region for image blit - VkImageCopy copyRegion = {}; - - // Source is always base level because we have an image for each face and each mip - copyRegion.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - copyRegion.srcSubresource.baseArrayLayer = 0; - copyRegion.srcSubresource.mipLevel = 0; - copyRegion.srcSubresource.layerCount = 1; - copyRegion.srcOffset.x = 0; - copyRegion.srcOffset.y = 0; - copyRegion.srcOffset.z = 0; - - // Source is the section of the main image - copyRegion.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - copyRegion.dstSubresource.baseArrayLayer = WhichFace; - copyRegion.dstSubresource.mipLevel = WhichMip; - copyRegion.dstSubresource.layerCount = 1; - copyRegion.dstOffset.x = 0; - copyRegion.dstOffset.y = 0; - copyRegion.dstOffset.z = 0; - - // Size is the size of this mip - copyRegion.extent.width = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Width; - copyRegion.extent.height = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[TexDataMip].Height; - - copyRegion.extent.depth = 1; - - // Put image copy into command buffer - vkCmdCopyImage( - SetupCmdBuffer, - cubeFaces[WhichFace].mipImages[WhichMip].m_VmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - RetImage.m_VmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, ©Region); - } // Each mipmap in each face - } // Each Face - - // No longer need the texture data - L_FreeTexData(&TexData); - - // Change texture image layout to shader read after the copy - VkImageLayout RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - - srcMask = 0; - dstMask = 1; - baseMipLevel = 0; - mipLevelCount = uiMipLevels; - baseLayer = 0; - layerCount = uiFaces; - - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, RetImageLayout, - srcMask, - dstMask, - baseMipLevel, - mipLevelCount, - baseLayer, - layerCount); - - // Submit the command buffer we have been working on - pVulkan->FinishSetupCommandBuffer(SetupCmdBuffer); - - // Need a sampler... - VkSampler RetSampler; - if (!CreateSampler(pVulkan, SamplerMode, SamplerFilter::Linear, VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, false, mipBias, &RetSampler)) - { - return {}; - } - - // ... and an ImageView - VkImageViewType viewType; - if (layerCount == 6) - viewType = VK_IMAGE_VIEW_TYPE_CUBE; - else - viewType = VK_IMAGE_VIEW_TYPE_2D; - assert(layerCount == 1 || layerCount == 6); - VkImageView RetImageView; - if (!CreateImageView(pVulkan, RetImage.m_VmaImage.GetVkBuffer(), ImageInfo.format, baseMipLevel, mipLevelCount, layerCount, viewType, &RetImageView)) - { - vkDestroySampler(pVulkan->m_VulkanDevice, RetSampler, nullptr); - return {}; - } - - // LOGI("vkCreateImageView: %s -> %p", pFileName, RetImageView); - - - // Cleanup - cubeFaces.clear(); - - - // **************************************************** - // **************************************************** - - // Set the return values - return TextureVulkan{ uiWidth, uiHeight, 1, uiMipLevels, ImageInfo.format, RetImageLayout, std::move(RetImage.m_VmaImage), RetSampler, RetImageView }; -} - -//----------------------------------------------------------------------------- -void DumpKTXMipFiles(AssetManager& assetManager, std::string SourceFile, std::string OutBaseFile) -//----------------------------------------------------------------------------- -{ - // This is basically this function: TextureFuncts.cpp ==> LoadKTXTexture() - - LOGI("Dumping KTX texture mipmaps: %s -> %s", SourceFile.c_str(), OutBaseFile.c_str()); -#if !defined(OS_WINDOWS) - if(true) - { - LOGI(" DumpKTXMipFiles() only supported on Windows! Sorry."); - return; - } -#endif // !defined(OS_WINDOWS) - - uint32_t uiWidth = 0; - uint32_t uiHeight = 0; - uint32_t uiFaces = 0; - uint32_t uiMipLevels = 0; - VkFormat VulkanFormat = VK_FORMAT_UNDEFINED; - - VulkanTexData TexData = {}; - { - std::vector fileData; - if (!assetManager.LoadFileIntoMemory(SourceFile.c_str(), fileData)) - { - LOGE("Error reading texture file: %s", SourceFile.c_str()); - return; - } - - if (!L_ParseKTXBuffer(SourceFile.c_str(), fileData.data(), (uint32_t)fileData.size(), &TexData)) - { - LOGE("Error parsing texture file: %s", SourceFile.c_str()); - return; - } - } - - uiWidth = TexData.pFaceData[0].pLayerData[0].pMipData[0].Width; - uiHeight = TexData.pFaceData[0].pLayerData[0].pMipData[0].Height; - uiFaces = TexData.NumFaces; - uiMipLevels = TexData.pFaceData[0].pLayerData[0].NumMipLevels; - VulkanFormat = TexData.VulkanFormat; - - if (uiFaces != 1) - { - LOGE("DumpKTXMipFiles Error: Source has %d faces and only 1 face is supported!", uiFaces); - return; - } - - // Copy each mip level to a file (Faces and Layers not supported) - uint32_t WhichFace = 0; - uint32_t WhichLayer = 0; - - for (uint32_t WhichMip = 0; WhichMip < uiMipLevels; WhichMip++) - { - uint32_t MipWidth = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMip].Width; - uint32_t MipHeight = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMip].Height; - - uint8_t* pSrc = (uint8_t*)TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMip].pData; - uint32_t MipSize = TexData.pFaceData[WhichFace].pLayerData[WhichLayer].pMipData[WhichMip].Size; - - char szName[512]; - memset(szName, 0, sizeof(szName)); - sprintf(szName, "%s_Mip%02d_%dx%d.data", OutBaseFile.c_str(), WhichMip, MipWidth, MipHeight); - LOGI(" %s (%d bytes)...", szName, MipSize); - - FILE* OutStream = fopen(szName, "wb"); - if (OutStream == nullptr) - { - // Not really sure what to do with this error. Try to keep going I guess - LOGE(" Unable to create %s", szName); - continue; - } - - size_t NumWritten = fwrite(pSrc, sizeof(uint8_t), MipSize, OutStream); - if ((uint32_t)NumWritten != MipSize) - { - int WriteError = ferror(OutStream); - LOGE(" Wrote %d bytes. Should have written %d (ferror = %d)", (uint32_t)NumWritten, MipSize, WriteError); - } - - fclose(OutStream); - } // Which mipmap - - // No longer need the texture data - L_FreeTexData(&TexData); - -} - -//----------------------------------------------------------------------------- -TextureVulkan LoadPPMTexture(Vulkan* pVulkan, AssetManager& assetManager, const char* pFileName, SamplerAddressMode SamplerMode) -//----------------------------------------------------------------------------- -{ - LOGI("Loading PPM texture: %s", pFileName); - - std::vector fileData; - if (!assetManager.LoadFileIntoMemory(pFileName, fileData)) - { - LOGE("Error reading texture file: %s", pFileName); - return {}; - } - - if (fileData.size() < 20) - return {}; - auto fileDataIt = fileData.begin(); - if (*fileDataIt++ != 'P' || *fileDataIt++ != '6' || !isspace(*fileDataIt++)) - return {}; - while (isspace(*fileDataIt)) - ++fileDataIt; - uint32_t width = 0, height = 0, maxColor = 0; - while (isdigit(*fileDataIt)) - width = width * 10 + uint32_t(*fileDataIt++ - '0'); - while (isspace(*fileDataIt)) - ++fileDataIt; - while (isdigit(*fileDataIt)) - height = height * 10 + uint32_t(*fileDataIt++ - '0'); - while (isspace(*fileDataIt)) - ++fileDataIt; - while (isdigit(*fileDataIt)) - maxColor = maxColor * 10 + uint32_t(*fileDataIt++ - '0'); - uint32_t bytesPerPPMPixel = maxColor < 256 ? 1 : 2; - if (!isspace(*fileDataIt++)) - return {}; - // Images follow. - size_t singleImageBytes = width * height * 3 * bytesPerPPMPixel; - // If there are multiple images treat this as a 3d texture. - size_t dataOffset = fileDataIt - fileData.begin(); - size_t dataBytes = fileData.size() - dataOffset; - uint32_t depth = (uint32_t)(dataBytes / singleImageBytes); - - // Copy image data in to correct format for copying in to vulkan texture. - - //VkFormat format = VK_FORMAT_R8_UNORM; - VkFormat format = VK_FORMAT_R8G8_UNORM; - size_t bytesPerPixel = 2; - std::vector targetData; - targetData.resize(width * height * depth * bytesPerPixel); - if (bytesPerPixel == 1) - { - for (auto& target : targetData) - { - target = *fileDataIt; - fileDataIt += 3; - } - } - else - { - auto targetIt = targetData.begin(); - for (size_t i = 0; i < width * height * depth; ++i) - { - *targetIt = *fileDataIt; - ++targetIt; - ++fileDataIt; - *targetIt = *fileDataIt; - ++targetIt; - ++fileDataIt; - if (bytesPerPixel > 2) - { - *targetIt = *fileDataIt; - ++targetIt; - } - if (bytesPerPixel > 3) - { - *targetIt = 255; // no alpha in ppm - ++targetIt; - } - ++fileDataIt; - } - } - return CreateTextureFromBuffer(pVulkan, targetData.data(), targetData.size(), width, height, depth, format, SamplerMode); -} - -//----------------------------------------------------------------------------- -TextureVulkan CreateTextureFromBuffer(Vulkan* pVulkan, const void* pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, VkFormat Format, VkSamplerAddressMode SamplerMode, VkFilter Filter, VkImageUsageFlags FinalUsage, VkImageLayout FinalLayout) -//----------------------------------------------------------------------------- -{ - VkResult RetVal; - - uint32_t Faces = 1; - uint32_t MipLevels = 1; - VkFormat VulkanFormat = Format; - - // Image creation info. Will change below based on need - VkImageCreateInfo ImageInfo {VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; - ImageInfo.flags = 0; - ImageInfo.imageType = VK_IMAGE_TYPE_2D; - ImageInfo.format = VulkanFormat; - ImageInfo.extent.width = Width; - ImageInfo.extent.height = Height; - ImageInfo.extent.depth = Depth; - ImageInfo.mipLevels = 1; // Set to 1 since making each level. Later will be set to MipLevels; - ImageInfo.arrayLayers = 1; // Set to 6 for cube maps - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; - ImageInfo.tiling = VK_IMAGE_TILING_LINEAR; - ImageInfo.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - ImageInfo.queueFamilyIndexCount = 0; - ImageInfo.pQueueFamilyIndices = NULL; - ImageInfo.initialLayout = VK_IMAGE_LAYOUT_PREINITIALIZED; // VK_IMAGE_LAYOUT_UNDEFINED says data not guaranteed to be preserved when changing state - - struct CubeFace - { - CubeFace(uint32_t depthSlices, uint32_t mips) : mipsPerDepthSlice(mips), images(depthSlices*mips) - {} - const auto& GetImage(uint32_t depth, uint32_t mip) const { return images[depth * mipsPerDepthSlice]; } - auto& GetImage(uint32_t depth, uint32_t mip) { return images[depth * mipsPerDepthSlice + mip]; } - const uint32_t mipsPerDepthSlice; - std::vector images; - }; - - // Allocate the depth slices (and contained mips) for each face - std::vector cubeFaces; - cubeFaces.reserve(Faces); - for (uint32_t WhichFace = 0; WhichFace < Faces; ++WhichFace) - { - cubeFaces.emplace_back(Depth, MipLevels); - } - - // Create and copy mip levels - - // Need the setup command buffer for loading images - VkCommandBuffer SetupCmdBuffer = pVulkan->StartSetupCommandBuffer(); - - uint32_t FormatBytesPerPixel = 4; - if (VulkanFormat == VK_FORMAT_R32G32B32A32_SFLOAT) - FormatBytesPerPixel = 16; - else if (VulkanFormat >= VK_FORMAT_R8_UNORM && VulkanFormat <= VK_FORMAT_R8_SRGB) - FormatBytesPerPixel = 1; - else if (VulkanFormat >= VK_FORMAT_R8G8_UNORM && VulkanFormat <= VK_FORMAT_R8G8_SRGB) - FormatBytesPerPixel = 2; - else if (VulkanFormat >= VK_FORMAT_R16_UNORM && VulkanFormat <= VK_FORMAT_R16_SFLOAT) - FormatBytesPerPixel = 2; - - const uint8_t* pData8 = static_cast(pData); - - // Load separate cube map faces into linear tiled textures (for copying only). - // Split into faces and 2d depth slices because linear textures have extremely limited format/size restrictions. - for (uint32_t WhichFace = 0; WhichFace < Faces; WhichFace++) - { - for (uint32_t WhichDepth = 0; WhichDepth < Depth; WhichDepth++) - { - for (uint32_t WhichMip = 0; WhichMip < MipLevels; WhichMip++) - { - ImageInfo.extent.width = Width; - ImageInfo.extent.height = Height; - ImageInfo.extent.depth = 1; - - Wrap_VkImage& faceImage = cubeFaces[WhichFace].GetImage(WhichDepth, WhichMip); - if (!faceImage.Initialize(pVulkan, ImageInfo, MemoryUsage::CpuToGpu)) - { - LOGE("CreateTextureFromBuffer: Unable to initialize mip %d of face %d", WhichMip + 1, WhichFace + 1); - return {}; - } - - // ... copy texture data into the image - VkImageSubresource SubresInfo = {}; - SubresInfo.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - SubresInfo.mipLevel = 0; - SubresInfo.arrayLayer = 0; - - VkSubresourceLayout SubResLayout = {}; - auto& faceImageMem = faceImage.m_VmaImage; - vkGetImageSubresourceLayout(pVulkan->m_VulkanDevice, faceImageMem.GetVkBuffer(), &SubresInfo, &SubResLayout); - - { - auto& memorymanager = pVulkan->GetMemoryManager(); - auto mappedMemory = memorymanager.Map(faceImageMem); - if (SubResLayout.rowPitch == Width * FormatBytesPerPixel) - { - memcpy(mappedMemory.data(), pData8, SubResLayout.size); - pData8 += Width * Height * FormatBytesPerPixel; - } - else - { - uint8_t* pDest = mappedMemory.data(); - for (uint32_t h = 0; h < Height; ++h) - { - memcpy(pDest, pData8, Width * FormatBytesPerPixel); - pDest += SubResLayout.rowPitch; - pData8 += Width * FormatBytesPerPixel; - } - } - memorymanager.Unmap(faceImageMem, std::move(mappedMemory)); - } - - // Image barrier for linear image (base) - // Linear image will be used as a source for the copy - VkPipelineStageFlags srcMask = 0; - VkPipelineStageFlags dstMask = 1; - uint32_t baseMipLevel = 0; - uint32_t mipLevelCount = 1; - - pVulkan->SetImageLayout(faceImageMem.GetVkBuffer(), - SetupCmdBuffer, - VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - srcMask, - dstMask, - baseMipLevel, - mipLevelCount); - } // Each mipmap in each depth slice - } // Each depth slice in each face - } // Each Face - - // Transfer cube map faces to optimal tiling - - // Now that creating the whole thing we need the correct size and type - ImageInfo.extent.width = Width; - ImageInfo.extent.height = Height; - ImageInfo.extent.depth = Depth; - ImageInfo.imageType = Depth == 1 ? VK_IMAGE_TYPE_2D : VK_IMAGE_TYPE_3D; - - // Now that we are done creating single images, need to create all mip levels - ImageInfo.mipLevels = MipLevels; - - // Setup texture as blit target with optimal tiling - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = FinalUsage; - - if (Faces == 6) - ImageInfo.flags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT; - - ImageInfo.arrayLayers = Faces; - - // Need the return image - Wrap_VkImage RetImage; - if (!RetImage.Initialize(pVulkan, ImageInfo, MemoryUsage::GpuExclusive)) - { - LOGE("CreateTextureFromBuffer: Unable to initialize texture image"); - return {}; - } - - // Image barrier for optimal image (target) - // Optimal image will be used as destination for the copy - VkPipelineStageFlags srcMask = 0; - VkPipelineStageFlags dstMask = 1; - uint32_t baseMipLevel = 0; - uint32_t mipLevelCount = MipLevels; - uint32_t baseLayer = 0; - uint32_t layerCount = Faces; - - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), - SetupCmdBuffer, - VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - srcMask, - dstMask, - baseMipLevel, - mipLevelCount, - baseLayer, - layerCount); - - // Copy cube map faces one by one - // Vulkan spec says the order is +X, -X, +Y, -Y, +Z, -Z - for (uint32_t WhichFace = 0; WhichFace < Faces; WhichFace++) - { - // Copy depth slices one at a time - for (uint32_t WhichDepth = 0; WhichDepth < Depth; WhichDepth++) - { - for (uint32_t WhichMip = 0; WhichMip < MipLevels; WhichMip++) - { - // Copy region for image blit - VkImageCopy copyRegion = {}; - - // Source is always base level because we have an image for each face and each mip - copyRegion.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - copyRegion.srcSubresource.baseArrayLayer = 0; - copyRegion.srcSubresource.mipLevel = 0; - copyRegion.srcSubresource.layerCount = 1; - copyRegion.srcOffset.x = 0; - copyRegion.srcOffset.y = 0; - copyRegion.srcOffset.z = 0; - - // Source is the section of the main image - copyRegion.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - copyRegion.dstSubresource.baseArrayLayer = WhichFace; - copyRegion.dstSubresource.mipLevel = WhichMip; - copyRegion.dstSubresource.layerCount = 1; - copyRegion.dstOffset.x = 0; - copyRegion.dstOffset.y = 0; - copyRegion.dstOffset.z = WhichDepth; - - // Size is the size of this mip - copyRegion.extent.width = Width; - copyRegion.extent.height = Height; - copyRegion.extent.depth = 1; - - // Put image copy into command buffer - vkCmdCopyImage( - SetupCmdBuffer, - cubeFaces[WhichFace].GetImage(WhichDepth, WhichMip).m_VmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - RetImage.m_VmaImage.GetVkBuffer(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, ©Region); - } // Each mipmap in each depth slice - } // Each depth slice in each face - } // Each Face - - // Change texture image layout to the 'final' settings now we are done transferring - srcMask = 0; - dstMask = 1; - baseMipLevel = 0; - mipLevelCount = MipLevels; - baseLayer = 0; - layerCount = Faces; - - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, FinalLayout, - srcMask, - dstMask, - baseMipLevel, - mipLevelCount, - baseLayer, - layerCount); - - // Submit the command buffer we have been working on - pVulkan->FinishSetupCommandBuffer(SetupCmdBuffer); - - // Need a sampler... - VkSampler RetSampler; - if (!CreateSampler(pVulkan, SamplerMode, Filter, VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, false, 0.0f, &RetSampler)) - { - return {}; - } - - VkImageViewType viewType; - if (Depth > 1) - viewType = VK_IMAGE_VIEW_TYPE_3D; - else if (Faces == 6) - viewType = VK_IMAGE_VIEW_TYPE_CUBE; - else - viewType = VK_IMAGE_VIEW_TYPE_2D; - VkImageView RetImageView; - if (!CreateImageView(pVulkan, RetImage.m_VmaImage.GetVkBuffer(), Format, baseMipLevel, MipLevels, Faces, viewType, &RetImageView)) - { - vkDestroySampler(pVulkan->m_VulkanDevice, RetSampler, nullptr); - return {}; - } - - // Cleanup - cubeFaces.clear(); - - // Set the return values - TextureVulkan RetTex{ Width, Height, Depth, MipLevels, ImageInfo.format, FinalLayout, std::move( RetImage.m_VmaImage ), RetSampler, RetImageView }; - return RetTex; -} - - -////----------------------------------------------------------------------------- -//void ReleaseTexture(Vulkan* pVulkan, TextureVulkan* pTexInfo) -////----------------------------------------------------------------------------- -//{ -// pTexInfo->Release(pVulkan); -// -// *pTexInfo = TextureVulkan{}; // destroy and clear -//} - -#if 0 -// -// Constructors/move-operators for TextureVulkan. -// Ensures we are not leaking Samplers, ImageViews or memory. -// -TextureVulkan::TextureVulkan(TextureVulkan&& other) noexcept -{ - *this = std::move(other); -} -TextureVulkan& TextureVulkan::operator=(TextureVulkan&& other) noexcept -{ - if (this != &other) - { - // Some of the data can be copied and is ok to leave 'other' alone (move operator just has to ensure the 'other' is in a valid state and can be safely deleted) - Width = other.Width; - Height = other.Height; - Depth = other.Depth; - MipLevels = other.MipLevels; - FirstMip = other.FirstMip; - Format = other.Format; - ImageLayout = other.ImageLayout; - // Actually transfer ownership from 'other' - VmaImage = std::move(other.VmaImage); - Sampler = other.Sampler; - other.Sampler = VK_NULL_HANDLE; - ImageView = other.ImageView; - other.ImageView = VK_NULL_HANDLE; - Image = other.Image; - other.Image = VK_NULL_HANDLE; - Memory = other.Memory; - other.Memory = VK_NULL_HANDLE; - } - return *this; -} -TextureVulkan::~TextureVulkan() -{ - // Asserts to ensure we called ReleaseTexture on this already. - assert(!VmaImage); - assert(Sampler == VK_NULL_HANDLE); - assert(ImageView == VK_NULL_HANDLE); -} - - -void TextureVulkan::Release( Vulkan* pVulkan ) -{ - if( ImageView != VK_NULL_HANDLE ) - vkDestroyImageView( pVulkan->m_VulkanDevice, ImageView, NULL ); - ImageView = VK_NULL_HANDLE; - - if( Sampler != VK_NULL_HANDLE ) - vkDestroySampler( pVulkan->m_VulkanDevice, Sampler, NULL ); - Sampler = VK_NULL_HANDLE; - - if( VmaImage ) - pVulkan->GetMemoryManager().Destroy( std::move( VmaImage ) ); - - Image = VK_NULL_HANDLE; - Memory = VK_NULL_HANDLE; -} -#endif - -//----------------------------------------------------------------------------- -TextureVulkan CreateTextureObject(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, VkFormat Format, TEXTURE_TYPE TexType, const char* pName, VkSampleCountFlagBits Msaa, TEXTURE_FLAGS Flags) -//----------------------------------------------------------------------------- -{ - CreateTexObjectInfo createInfo{}; - createInfo.uiWidth = uiWidth; - createInfo.uiHeight = uiHeight; - createInfo.Format = Format; - createInfo.TexType = TexType; - createInfo.Flags = Flags; - createInfo.pName = pName; - createInfo.Msaa = Msaa; - return CreateTextureObject(pVulkan, createInfo); -} - -//----------------------------------------------------------------------------- -TextureVulkan CreateTextureObject(Vulkan* pVulkan, const CreateTexObjectInfo& texInfo) -//----------------------------------------------------------------------------- -{ - VkResult RetVal; - - if(texInfo.pName == nullptr) - LOGI("CreateTextureObject (%dx%d): ", texInfo.uiWidth, texInfo.uiHeight); - else - LOGI("CreateTextureObject (%dx%d): %s", texInfo.uiWidth, texInfo.uiHeight, texInfo.pName); - - VkSampler RetSampler = VK_NULL_HANDLE; - VkImageView RetImageView = VK_NULL_HANDLE; - VkImageLayout RetImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - - // How this texture object will be used. - MemoryUsage MemoryUsage = MemoryUsage::GpuExclusive; - - // Create the image... - VkImageCreateInfo ImageInfo{ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO }; - ImageInfo.flags = 0; - assert(texInfo.uiDepth != 0); - ImageInfo.imageType = (texInfo.uiDepth == 1) ? VK_IMAGE_TYPE_2D : VK_IMAGE_TYPE_3D; - ImageInfo.format = texInfo.Format; - ImageInfo.extent.width = texInfo.uiWidth; - ImageInfo.extent.height = texInfo.uiHeight; - ImageInfo.extent.depth = texInfo.uiDepth; - ImageInfo.mipLevels = texInfo.uiMips; - ImageInfo.arrayLayers = texInfo.uiFaces; - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT; - ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - ImageInfo.queueFamilyIndexCount = 0; - ImageInfo.pQueueFamilyIndices = NULL; - ImageInfo.initialLayout = VK_IMAGE_LAYOUT_PREINITIALIZED; - - switch (texInfo.TexType) - { - case TT_SHADING_RATE_IMAGE: - ImageInfo.usage = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - break; - case TT_CPU_UPDATE: - ImageInfo.tiling = VK_IMAGE_TILING_LINEAR; - ImageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - break; - case TT_NORMAL: - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL;// VK_IMAGE_TILING_LINEAR; // VK_IMAGE_TILING_OPTIMAL - ImageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT; - break; - case TT_RENDER_TARGET: - // If using VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT then tiling MUST be VK_IMAGE_TILING_OPTIMAL - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; // DO NOT enable Storage_Bit (potential performance impact) - ImageInfo.samples = texInfo.Msaa; - break; - case TT_RENDER_TARGET_WITH_STORAGE: - // If using VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT then tiling MUST be VK_IMAGE_TILING_OPTIMAL - // Also enabling Storage may disable some hardware render buffer optimizations - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - assert(texInfo.Msaa == VK_SAMPLE_COUNT_1_BIT && texInfo.Format != VK_FORMAT_R8G8B8A8_SRGB); //TODO: use Vulkan to determine if this texture buffer can have storeage set, for now assert on formats known to be problematic (msaa or srgb) - ImageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT; - ImageInfo.samples = texInfo.Msaa; - break; - case TT_RENDER_TARGET_TRANSFERSRC: - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - ImageInfo.samples = texInfo.Msaa; - break; - case TT_RENDER_TARGET_SUBPASS: - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - ImageInfo.samples = texInfo.Msaa; - // Subpass render targets dont need to be backed by memory! - MemoryUsage = MemoryUsage::GpuLazilyAllocated; - break; - case TT_COMPUTE_TARGET: - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT;// | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - break; - case TT_DEPTH_TARGET: - // If using VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT then tiling MUST be VK_IMAGE_TILING_OPTIMAL - ImageInfo.mipLevels = 1; - ImageInfo.arrayLayers = 1; - ImageInfo.samples = texInfo.Msaa; - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT /*| VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT*/; - if(texInfo.Msaa != VK_SAMPLE_COUNT_1_BIT ) - ImageInfo.flags |= VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT; - break; - - default: - assert(0); - break; - } - - if ((texInfo.Flags & TEXTURE_FLAGS::MutableFormat) != 0) - ImageInfo.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; - if ((texInfo.Flags & TEXTURE_FLAGS::ForceLinearTiling) != 0) - ImageInfo.tiling = VK_IMAGE_TILING_LINEAR; - - // Need the return image - Wrap_VkImage RetImage; - bool ImageInitialized = RetImage.Initialize( pVulkan, ImageInfo, MemoryUsage, texInfo.pName ); - if( !ImageInitialized && MemoryUsage == MemoryUsage::GpuLazilyAllocated ) - { - LOGI( "Unable to initialize GpuLazilyAllocated image (probably not supported by GPU hardware). Falling back to GpuExclusive" ); - MemoryUsage = MemoryUsage::GpuExclusive; - ImageInfo.usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - ImageInitialized = RetImage.Initialize( pVulkan, ImageInfo, MemoryUsage, texInfo.pName ); - } - if (!ImageInitialized) - { - LOGE("Unable to initialize image (Not from file)"); - return {}; - } - - VkCommandBuffer SetupCmdBuffer = pVulkan->StartSetupCommandBuffer(); - switch (texInfo.TexType) - { - case TT_SHADING_RATE_IMAGE: - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_GENERAL; - break; - case TT_CPU_UPDATE: - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - break; - case TT_NORMAL: - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - break; - case TT_RENDER_TARGET: - case TT_RENDER_TARGET_WITH_STORAGE: - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); - RetImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - break; - case TT_RENDER_TARGET_TRANSFERSRC: - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, 1, 0, 1); - RetImageLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - break; - case TT_RENDER_TARGET_SUBPASS: - RetImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - break; - case TT_COMPUTE_TARGET: - pVulkan->SetImageLayout(RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_COLOR_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_GENERAL, (VkPipelineStageFlags)0/*unused param*/, (VkPipelineStageFlags)0/*unused param*/, 0, ImageInfo.mipLevels, 0, ImageInfo.arrayLayers); - RetImageLayout = VK_IMAGE_LAYOUT_GENERAL; - break; - case TT_DEPTH_TARGET: - if( Vulkan::FormatHasStencil(texInfo.Format ) ) - { - // Can have depth and stencil flag - pVulkan->SetImageLayout( RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags) 0/*unused param*/, (VkPipelineStageFlags) 0/*unused param*/, 0, 1, 0, 1 ); - } - else if ( Vulkan::FormatHasDepth(texInfo.Format ) ) - { - // Only has the depth flag set - pVulkan->SetImageLayout( RetImage.m_VmaImage.GetVkBuffer(), SetupCmdBuffer, VK_IMAGE_ASPECT_DEPTH_BIT, ImageInfo.initialLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, (VkPipelineStageFlags) 0/*unused param*/, (VkPipelineStageFlags) 0/*unused param*/, 0, 1, 0, 1 ); - } - else - { - LOGE("Unhandled depth format!!!"); - } - RetImageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; - break; - default: - assert(0); - break; - } - - pVulkan->FinishSetupCommandBuffer(SetupCmdBuffer); - - // ... and an ImageView - VkImageViewCreateInfo ImageViewInfo{ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; - ImageViewInfo.flags = 0; - ImageViewInfo.image = RetImage.m_VmaImage.GetVkBuffer(); - ImageViewInfo.viewType = (texInfo.uiDepth == 1) ? VK_IMAGE_VIEW_TYPE_2D : VK_IMAGE_VIEW_TYPE_3D; // <== No support for VK_IMAGE_VIEW_TYPE_CUBE - ImageViewInfo.format = ImageInfo.format; - ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; // VK_COMPONENT_SWIZZLE_R; - ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; // VK_COMPONENT_SWIZZLE_G; - ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; // VK_COMPONENT_SWIZZLE_B; - ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; // VK_COMPONENT_SWIZZLE_A; - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - ImageViewInfo.subresourceRange.baseMipLevel = 0; - ImageViewInfo.subresourceRange.levelCount = ImageInfo.mipLevels; - ImageViewInfo.subresourceRange.baseArrayLayer = 0; - ImageViewInfo.subresourceRange.layerCount = 1; - - VkSamplerAddressMode SamplerMode = texInfo.SamplerMode; - - VkBorderColor BorderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; - - switch (texInfo.TexType) - { - case TT_SHADING_RATE_IMAGE: - case TT_CPU_UPDATE: - case TT_NORMAL: - case TT_RENDER_TARGET: - case TT_RENDER_TARGET_WITH_STORAGE: - case TT_RENDER_TARGET_TRANSFERSRC: - case TT_RENDER_TARGET_SUBPASS: - case TT_COMPUTE_TARGET: - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - break; - case TT_DEPTH_TARGET: - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; - SamplerMode = (SamplerMode == VK_SAMPLER_ADDRESS_MODE_MAX_ENUM) ? VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER : SamplerMode; // default to VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - BorderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; - break; - default: - assert(0); - break; - } - SamplerMode = (SamplerMode == VK_SAMPLER_ADDRESS_MODE_MAX_ENUM) ? VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE : SamplerMode; // default to VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - - RetVal = vkCreateImageView(pVulkan->m_VulkanDevice, &ImageViewInfo, NULL, &RetImageView); - if (!CheckVkError("vkCreateImageView()", RetVal)) - { - return {}; - } - - // LOGI("vkCreateImageView: %s -> %p", pName, RetImageView); - - // Need a sampler... - VkFilter FilterMode = texInfo.FilterMode; - if (FilterMode == VK_FILTER_MAX_ENUM) - { - const auto& FormatProperties = pVulkan->GetFormatProperties(texInfo.Format); - auto TilingFeatures = (ImageInfo.tiling == VK_IMAGE_TILING_LINEAR) ? FormatProperties.linearTilingFeatures : FormatProperties.optimalTilingFeatures; - if ((TilingFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT) != 0) - FilterMode = VK_FILTER_LINEAR; - else - FilterMode = VK_FILTER_NEAREST; - } - if (!CreateSampler(pVulkan, SamplerMode, FilterMode, BorderColor, texInfo.UnNormalizedCoordinates, 0.0f, &RetSampler)) - { - return {}; - } - - TextureVulkan RetTex{ texInfo.uiWidth, texInfo.uiHeight, texInfo.uiDepth, texInfo.uiMips, texInfo.Format, RetImageLayout, std::move( RetImage.m_VmaImage ), RetSampler, RetImageView }; - return RetTex; -} - -//----------------------------------------------------------------------------- -TextureVulkan CreateTextureObjectView( Vulkan* pVulkan, const TextureVulkan& original, VkFormat viewFormat ) -//----------------------------------------------------------------------------- -{ - VkSampler sampler = VK_NULL_HANDLE; - VkImageView imageView = VK_NULL_HANDLE; - - VkImageViewCreateInfo imageViewCreateInfo { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO }; - imageViewCreateInfo.image = original.GetVkImage(); - imageViewCreateInfo.viewType = (original.Depth == 1) ? VK_IMAGE_VIEW_TYPE_2D : VK_IMAGE_VIEW_TYPE_3D; // <== No support for VK_IMAGE_VIEW_TYPE_CUBE - imageViewCreateInfo.format = viewFormat; - imageViewCreateInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; - imageViewCreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - imageViewCreateInfo.subresourceRange.baseMipLevel = 0; - imageViewCreateInfo.subresourceRange.levelCount = original.MipLevels; - imageViewCreateInfo.subresourceRange.baseArrayLayer = 0; - imageViewCreateInfo.subresourceRange.layerCount = 1; - - auto RetVal = vkCreateImageView( pVulkan->m_VulkanDevice, &imageViewCreateInfo, NULL, &imageView ); - if (!CheckVkError( "vkCreateImageView()", RetVal )) - { - return {}; - } - - if (!CreateSampler( pVulkan, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, SamplerFilter::Linear, {}, false, 0.0f, &sampler )) - { - return {}; - } - - // TextureVulkan( uint32_t width, uint32_t height, uint32_t mipLevels, VkFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, VkSampler sampler, VkImageView imageView ) - TextureVulkan RetTex { original.Width, original.Height, original.Depth, original.MipLevels, original.Format, original.GetVkImageLayout(), original.GetVkImage(), VK_NULL_HANDLE, sampler, imageView }; - return RetTex; -} - -#endif diff --git a/framework/code/vulkan/TextureFuncts.h b/framework/code/vulkan/TextureFuncts.h index 4cb011c..a3323d8 100644 --- a/framework/code/vulkan/TextureFuncts.h +++ b/framework/code/vulkan/TextureFuncts.h @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -10,127 +10,8 @@ // TextureFuncts.h // Vulkan texture handling support -//#include "vulkan/vulkan.hpp" #include "texture/texture.hpp" -#if 0 -// Forward declarations -class AssetManager; -class Vulkan; -template class TextureT; -using TextureVulkan = TextureT; - -/// @brief A Vulkan texture -/// Owns memory and sampler etc associated with a single texture. -class TextureVulkan -{ -public: - TextureVulkan() : VmaImage() {} - TextureVulkan(const TextureVulkan&) = delete; - TextureVulkan& operator=(const TextureVulkan&) = delete; - TextureVulkan(TextureVulkan&&) noexcept; - TextureVulkan& operator=(TextureVulkan&&) noexcept; - ~TextureVulkan(); - - /// @brief Construct TextureVulkan from a pre-existing vmaImage. - /// @param vmaImage - ownership passed to this TextureVulkan. - /// @param sampler - ownership passed to this TextureVulkan. - /// @param imageView - ownership passed to this TextureVulkan. - TextureVulkan( uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, VkFormat format, VkImageLayout imageLayout, MemoryAllocatedBuffer vmaImage, VkSampler sampler, VkImageView imageView ) - : Width(width) - , Height(height) - , Depth(depth) - , MipLevels(mipLevels) - , Format(format) - , ImageLayout(imageLayout) - , VmaImage(std::move(vmaImage)) - , Sampler(sampler) - , ImageView(imageView) - { - } - - /// @brief Construct TextureVulkan from a pre-existing Vulkan image/memory handles. - /// @param image - ownership NOT passed in to this TextureVulkan, beware of lifetime issues. - /// @param sampler - ownership passed to this TextureVulkan. - /// @param imageView - ownership passed to this TextureVulkan. - TextureVulkan( uint32_t width, uint32_t height, uint32_t mipLevels, uint32_t firstMip, VkFormat format, VkImageLayout imageLayout, VkImage image, VkDeviceMemory memory, VkSampler sampler, VkImageView imageView ) - : Width(width) - , Height(height) - , Depth(1) - , MipLevels( mipLevels ) - , FirstMip( firstMip ) - , Format(format) - , ImageLayout(imageLayout) - , Image(image) - , Memory(memory) - , Sampler(sampler) - , ImageView(imageView) - { - } - - void Release(Vulkan* pVulkan); - - VkImage GetVkImage() const { return VmaImage ? VmaImage.GetVkBuffer() : Image; } - VkDescriptorImageInfo GetVkDescriptorImageInfo() const { return { Sampler, ImageView, ImageLayout }; } - VkImageLayout GetVkImageLayout() const { return ImageLayout; } - VkSampler GetVkSampler() const { return Sampler; } - VkImageView GetVkImageView() const { return ImageView; } - bool IsEmpty() const { return !VmaImage; } - - uint32_t Width = 0; - uint32_t Height = 0; - uint32_t Depth = 0; - uint32_t MipLevels = 0; - uint32_t FirstMip = 0; - VkFormat Format = VK_FORMAT_UNDEFINED; - VkImageLayout ImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - -public: - - MemoryAllocatedBuffer VmaImage; - - VkSampler Sampler = VK_NULL_HANDLE; - VkImageView ImageView = VK_NULL_HANDLE; - - // Needed for functions handling own memory (i.e. AndroidHardwareBuffers) - VkImage Image = VK_NULL_HANDLE; - VkDeviceMemory Memory = VK_NULL_HANDLE; -}; -#endif // 0 - -// Actual support functions - -#if 0 - -/// Load/create texture from .ktx file (Mips to load are lowest resolution, NOT 0,1,2...) -TextureVulkan LoadKTXTexture(Vulkan *pVulkan, AssetManager&, const char* pFileName, VkSamplerAddressMode SamplerMode = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, int32_t NumMipsToLoad = 0x7fffffff, float mipBias = 0.0f); -/// Parse a KTX texture and dump each mip to individual file (restrictions on faces, formats, output, etc.) -void DumpKTXMipFiles(AssetManager& assetManager, std::string SourceFile, std::string OutBaseFile); -/// Load/create texture from .ppm file -TextureVulkan LoadPPMTexture(Vulkan* pVulkan, AssetManager&, const char* pFileName, VkSamplerAddressMode SamplerMode = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE); -/// Create texture from an existing memory buffer -TextureVulkan CreateTextureFromBuffer(Vulkan* pVulkan, const void *pData, size_t DataSize, uint32_t Width, uint32_t Height, uint32_t Depth, VkFormat Format, VkSamplerAddressMode SamplerMode = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, SamplerFilter Filter = SamplerFilter::Linear, VkImageUsageFlags FinalUsage = (VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), VkImageLayout FinalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); - -#endif // 0 - /// Save texture data to 'filename' /// @returns true on success bool SaveTextureData(const char* pFileName, TextureFormat format, int width, int height, const void* data); - -#if 0 - -/// Create texture (generally for render target usage) -TextureVulkan CreateTextureObject(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, VkFormat Format, TEXTURE_TYPE TexType, const char* pName, VkSampleCountFlagBits Msaa = VK_SAMPLE_COUNT_1_BIT, TEXTURE_FLAGS Flags = TEXTURE_FLAGS::None); -/// Create texture (generally for render target usage). Uses CreateTexObjectInfo structure to define texture creation parameters. -TextureVulkan CreateTextureObject(Vulkan* pVulkan, const CreateTexObjectInfo& texInfo); -/// Create texture that is an imageview referencing an existing TextureVulkan. -/// Required that the referenced originalTexInfo does not go out of scope (be destroyed) before the referencing texture. -TextureVulkan CreateTextureObjectView( Vulkan* pVulkan, const TextureVulkan& original, VkFormat viewFormat ); -///// Release memory associated with the given texture and reset to 'empty' state -//void ReleaseTexture(Vulkan* pVulkan, TextureVulkan *pTexInfo); -/// Create a vulkan image view object -bool CreateImageView(Vulkan* pVulkan, VkImage image, VkFormat format, uint32_t baseMipLevel, uint32_t numMipLevels, uint32_t numFaces, VkImageViewType viewType, VkImageView* pRetImageView); -/// Create a vulkan texture sampler -bool CreateSampler(Vulkan* pVulkan, VkSamplerAddressMode SamplerMode, VkFilter FilterMode, VkBorderColor BorderColor, bool UnnormalizedCoordinates, float mipBias, VkSampler* pRetSampler); - -#endif diff --git a/framework/code/vulkan/commandBuffer.cpp b/framework/code/vulkan/commandBuffer.cpp index 54a7669..f162436 100644 --- a/framework/code/vulkan/commandBuffer.cpp +++ b/framework/code/vulkan/commandBuffer.cpp @@ -1,47 +1,50 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "commandBuffer.hpp" +#include "framebuffer.hpp" +#include "renderContext.hpp" #include "renderTarget.hpp" #include "timerPool.hpp" +#include "vulkan/extensionLib.hpp" #include "vulkan_support.hpp" //----------------------------------------------------------------------------- -CommandListT::CommandListT() noexcept +CommandList::CommandList() noexcept //----------------------------------------------------------------------------- { } //----------------------------------------------------------------------------- -CommandListT::~CommandListT() +CommandList::~CommandList() //----------------------------------------------------------------------------- { Release(); } //----------------------------------------------------------------------------- -CommandListT::CommandListT(CommandListT&& other) noexcept +CommandList::CommandList(CommandList&& other) noexcept //--------------------------------------------------------------------------- { - assert(0); // Currently move is not implemented for this class, but std::vector will not compile if a move (or copy) is not provided, we currently expect that the move will not get called (ie vector of CommandListT will not resize) + assert(0); // Currently move is not implemented for this class, but std::vector will not compile if a move (or copy) is not provided, we currently expect that the move will not get called (ie vector of CommandList will not resize) } //----------------------------------------------------------------------------- -CommandListT& CommandListT::operator=(CommandListT && other) noexcept +CommandList& CommandList::operator=(CommandList && other) noexcept //----------------------------------------------------------------------------- { - assert(0); // Currently move is not implemented for this class, but std::vector will not compile if a move (or copy) is not provided, we currently expect that the move will not get called (ie vector of CommandListT will not resize) + assert(0); // Currently move is not implemented for this class, but std::vector will not compile if a move (or copy) is not provided, we currently expect that the move will not get called (ie vector of CommandList will not resize) return *this; } //----------------------------------------------------------------------------- -bool CommandListT::Initialize(Vulkan* pVulkan, const std::string& Name, VkCommandBufferLevel CmdBuffLevel, uint32_t QueueIndex, TimerPoolBase* pGpuTimerPool) +bool CommandList::Initialize(Vulkan* pVulkan, const std::string& Name, CommandListBase::Type CmdBuffType, uint32_t QueueIndex, TimerPoolBase* pGpuTimerPool) //----------------------------------------------------------------------------- { m_Name = Name; @@ -58,17 +61,18 @@ bool CommandListT::Initialize(Vulkan* pVulkan, const std::string& Name, assert(m_GpuTimerQueries.empty()); // What type of command buffer are we dealing with - if (CmdBuffLevel == VK_COMMAND_BUFFER_LEVEL_PRIMARY) - { - m_IsPrimary = true; - } - else if (CmdBuffLevel == VK_COMMAND_BUFFER_LEVEL_SECONDARY) - { - m_IsPrimary = false; - } - else - { - LOGE("Command Buffer initialization with unknown level! (%d)", CmdBuffLevel); + VkCommandBufferLevel CmdBuffLevel = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + m_Type = Type::Primary; + switch (CmdBuffType) { + case Type::Primary: + break; + case Type::Secondary: + m_Type = Type::Secondary; + CmdBuffLevel = VK_COMMAND_BUFFER_LEVEL_SECONDARY; + break; + default: + LOGE( "Command Buffer initialization with unsupported type! (%d)", CmdBuffType ); + break; } // Store which queue this command list is using (index in to Vulkan::m_VulkanQueues) so we can submit to the associated device queue. @@ -80,7 +84,7 @@ bool CommandListT::Initialize(Vulkan* pVulkan, const std::string& Name, } //----------------------------------------------------------------------------- -bool CommandListT::Reset() +bool CommandList::Reset() //----------------------------------------------------------------------------- { VkResult RetVal; @@ -112,66 +116,80 @@ bool CommandListT::Reset() } //----------------------------------------------------------------------------- -bool CommandListT::Begin(VkCommandBufferUsageFlags CmdBuffUsage) +bool CommandList::Begin( VkCommandBufferUsageFlags CmdBuffUsage ) //----------------------------------------------------------------------------- { - assert(m_IsPrimary); - if (!m_IsPrimary) + assert(m_Type == Type::Primary); + if (m_Type != Type::Primary) { LOGE("Error! Trying to begin secondary command buffer without Framebuffer or RenderPass: %s", m_Name.c_str()); return false; } - return Begin(VK_NULL_HANDLE, VK_NULL_HANDLE, false, 0, CmdBuffUsage); + const VkCommandBufferBeginInfo CmdBeginInfo{ + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .flags = CmdBuffUsage, + }; + return Begin( CmdBeginInfo ); } //----------------------------------------------------------------------------- -bool CommandListT::Begin( VkFramebuffer FrameBuffer, VkRenderPass RenderPass, bool IsSwapChainRenderPass, uint32_t SubPass, VkCommandBufferUsageFlags CmdBuffUsage) +bool CommandList::Begin( VkFramebuffer FrameBuffer, VkRenderPass RenderPass, bool IsSwapChainRenderPass, uint32_t SubPass, VkCommandBufferUsageFlags CmdBuffUsage ) //----------------------------------------------------------------------------- { - VkResult RetVal; - if (m_VkCommandBuffer == VK_NULL_HANDLE) { - LOGE("Error! Trying to begin command buffer before it has been initialized: %s", m_Name.c_str()); + LOGE( "Error! Trying to begin command buffer before it has been initialized: %s", m_Name.c_str() ); + return false; + } + + assert( m_Type == Type::Secondary ); + if (m_Type != Type::Secondary) + { + LOGE( "Error! Trying to begin primary command buffer with inheritance info (%s)", m_Name.c_str() ); return false; } - VkCommandBufferBeginInfo CmdBeginInfo = {VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO}; - CmdBeginInfo.flags = CmdBuffUsage; + VkCommandBufferInheritanceInfo InheritanceInfo{ + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + .framebuffer = FrameBuffer, + .occlusionQueryEnable = VK_FALSE, + .queryFlags = 0, + .pipelineStatistics = 0, + }; + VkCommandBufferBeginInfo CmdBeginInfo{ + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .flags = CmdBuffUsage, + .pInheritanceInfo = &InheritanceInfo, + }; - VkCommandBufferInheritanceInfo InheritanceInfo {VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO}; VkCommandBufferInheritanceRenderPassTransformInfoQCOM InheritanceInfoRenderPassTransform = {}; - // If this is a secondary command buffer it has inheritance information. - // If primary, the inheritance stuff is ignored. - if (!m_IsPrimary) + // Secondary command buffer MAY BE inside another render pass (compute can be in a secondary buffer and not have/inherit a renderder pass) + if (RenderPass != VK_NULL_HANDLE) { - InheritanceInfo.framebuffer = FrameBuffer; - InheritanceInfo.occlusionQueryEnable = VK_FALSE; - InheritanceInfo.queryFlags = 0; - InheritanceInfo.pipelineStatistics = 0; - - // If this is a secondary command buffer it MAY BE inside another render pass (compute can be in a secondary buffer and not have/inherit a renderder pass) - if (RenderPass != VK_NULL_HANDLE) - { - CmdBeginInfo.flags |= VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT; + CmdBeginInfo.flags |= VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT; - InheritanceInfo.renderPass = RenderPass; - InheritanceInfo.subpass = SubPass; + InheritanceInfo.renderPass = RenderPass; + InheritanceInfo.subpass = SubPass; - // We may also have to pass the inherited render pass transform down to the secondary buffer - if (IsSwapChainRenderPass && m_pVulkan->FillCommandBufferInheritanceRenderPassTransformInfoQCOM(InheritanceInfoRenderPassTransform)) - { - LOGI("VkCommandBufferInheritanceRenderPassTransformInfoQCOM (%s): Extents = (%d x %d)", m_Name.c_str(), InheritanceInfoRenderPassTransform.renderArea.extent.width, InheritanceInfoRenderPassTransform.renderArea.extent.height); - InheritanceInfo.pNext = &InheritanceInfoRenderPassTransform; - } + // We may also have to pass the inherited render pass transform down to the secondary buffer + if (IsSwapChainRenderPass && m_pVulkan->FillCommandBufferInheritanceRenderPassTransformInfoQCOM( InheritanceInfoRenderPassTransform )) + { + LOGI( "VkCommandBufferInheritanceRenderPassTransformInfoQCOM (%s): Extents = (%d x %d)", m_Name.c_str(), InheritanceInfoRenderPassTransform.renderArea.extent.width, InheritanceInfoRenderPassTransform.renderArea.extent.height ); + InheritanceInfo.pNext = &InheritanceInfoRenderPassTransform; } - CmdBeginInfo.pInheritanceInfo = &InheritanceInfo; } + return Begin( CmdBeginInfo ); +} + +//----------------------------------------------------------------------------- +bool CommandList::Begin( const VkCommandBufferBeginInfo& CmdBeginInfo ) +//----------------------------------------------------------------------------- +{ // By calling vkBeginCommandBuffer, cmdBuffer is put into the recording state. - RetVal = vkBeginCommandBuffer(m_VkCommandBuffer, &CmdBeginInfo); + VkResult RetVal = vkBeginCommandBuffer(m_VkCommandBuffer, &CmdBeginInfo ); if (!CheckVkError("vkBeginCommandBuffer()", RetVal)) { LOGE("Unable to begin command buffer: %s", m_Name.c_str()); @@ -190,27 +208,101 @@ bool CommandListT::Begin( VkFramebuffer FrameBuffer, VkRenderPass Render } //----------------------------------------------------------------------------- -bool CommandListT::BeginRenderPass(VkRect2D RenderExtent, float MinDepth, float MaxDepth, const std::span ClearColors, uint32_t NumColorBuffers, bool HasDepth, VkRenderPass RenderPass, bool IsSwapChainRenderPass, VkFramebuffer FrameBuffer, VkSubpassContents SubContents) +bool CommandList::Begin( VkFramebuffer FrameBuffer, const RenderPass& RenderPass, bool IsSwapChainRenderPass, uint32_t SubPass, VkCommandBufferUsageFlags CmdBuffUsage ) +//----------------------------------------------------------------------------- +{ + return Begin( FrameBuffer, RenderPass.mRenderPass, IsSwapChainRenderPass, SubPass, CmdBuffUsage ); +} + +//----------------------------------------------------------------------------- +bool CommandList::Begin( const Framebuffer& FrameBuffer, const RenderPass& RenderPass, bool IsSwapChainRenderPass, uint32_t SubPass, VkCommandBufferUsageFlags CmdBuffUsage ) +//----------------------------------------------------------------------------- +{ + return Begin( FrameBuffer.m_FrameBuffer, RenderPass.mRenderPass, IsSwapChainRenderPass, SubPass, CmdBuffUsage ); +} + +//----------------------------------------------------------------------------- +bool CommandList::Begin(const VkCommandBufferInheritanceRenderingInfo& DynamicRenderingInheritanceInfo, VkCommandBufferUsageFlags CmdBuffUsage) +//----------------------------------------------------------------------------- +{ + assert(m_Type == Type::Secondary); + if (m_Type != Type::Secondary) + { + LOGE("Error! Trying to begin primary command buffer with inheritance info (%s)", m_Name.c_str()); + return false; + } + + VkCommandBufferInheritanceInfo InheritanceInfo{ + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + .pNext = &DynamicRenderingInheritanceInfo + }; + VkCommandBufferInheritanceRenderPassTransformInfoQCOM InheritanceInfoRenderPassTransform = {}; + + VkCommandBufferBeginInfo CmdBeginInfo{ + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .flags = CmdBuffUsage, + .pInheritanceInfo = &InheritanceInfo, + }; + + return Begin(CmdBeginInfo); +} + + +//----------------------------------------------------------------------------- +bool CommandList::Begin(const RenderContext& renderContext, VkCommandBufferUsageFlags cmdBuffUsage) +//----------------------------------------------------------------------------- +{ + assert( m_Type == Type::Secondary ); + if (m_Type != Type::Secondary) + { + LOGE( "Error! Trying to begin primary command buffer with inheritance info (%s)", m_Name.c_str() ); + return false; + } + + if (renderContext.IsDynamic()) + { + // dynamic rendering + const auto& dynamicRenderContext = std::get::DynamicRenderContextData>( renderContext.v ); + VkCommandBufferInheritanceRenderingInfo dynamicRenderingInheritanceInfo{ + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + .flags = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + .colorAttachmentCount = (uint32_t)dynamicRenderContext.colorAttachmentFormats.size(), + .pColorAttachmentFormats = dynamicRenderContext.colorAttachmentFormats.data(), + .depthAttachmentFormat = dynamicRenderContext.depthAttachmentFormat, + .stencilAttachmentFormat = dynamicRenderContext.stencilAttachmentFormat, + .rasterizationSamples = EnumToVk( renderContext.msaa ) + }; + return Begin( dynamicRenderingInheritanceInfo, cmdBuffUsage ); + } + else + { + const auto& renderPassContext = std::get::RenderPassContextData>(renderContext.v); + + return Begin( renderPassContext.framebuffer, renderPassContext.renderPass, false, renderContext.subPass, cmdBuffUsage ); + } +} + +//----------------------------------------------------------------------------- +bool CommandList::BeginRenderPass(VkRect2D RenderExtent, float MinDepth, float MaxDepth, const std::span ClearColors, uint32_t NumColorBuffers, bool HasDepth, VkRenderPass RenderPass, bool IsSwapChainRenderPass, VkFramebuffer FrameBuffer, VkSubpassContents SubContents) //----------------------------------------------------------------------------- { VkResult RetVal = VK_SUCCESS; // ... set Viewport and Scissor for this pass ... - VkViewport Viewport = {}; - Viewport.x = (float)RenderExtent.offset.x; - Viewport.y = (float)RenderExtent.offset.y; - Viewport.width = (float)RenderExtent.extent.width; - Viewport.height = (float)RenderExtent.extent.height; - Viewport.minDepth = MinDepth; - Viewport.maxDepth = MaxDepth; - + const VkViewport Viewport{ + .width = (float)RenderExtent.extent.width, + .height = (float)RenderExtent.extent.height, + .minDepth = MinDepth, + .maxDepth = MaxDepth + }; vkCmdSetViewport(m_VkCommandBuffer, 0, 1, &Viewport); - vkCmdSetScissor(m_VkCommandBuffer, 0, 1, &RenderExtent); + vkCmdSetScissor (m_VkCommandBuffer, 0, 1, &RenderExtent); // ... set clear values ... std::array ClearValues; uint32_t ClearValuesCount = 0; + assert(NumColorBuffers <= (ClearValues.size() - (HasDepth?1:0))); for (uint32_t i=0; i< NumColorBuffers; ++i) { ClearValues[ClearValuesCount].color = ClearColors[ClearColors.size() > NumColorBuffers ? ClearValuesCount : 0]; @@ -224,42 +316,170 @@ bool CommandListT::BeginRenderPass(VkRect2D RenderExtent, float MinDepth } // ... begin render pass ... - VkRenderPassBeginInfo RPBeginInfo = {VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO}; - RPBeginInfo.renderPass = RenderPass; - RPBeginInfo.renderArea = RenderExtent; - RPBeginInfo.clearValueCount = ClearValuesCount; - RPBeginInfo.pClearValues = ClearValues.data(); - VkRenderPassTransformBeginInfoQCOM RPTransformBeginInfoQCOM = {}; - - RPBeginInfo.framebuffer = FrameBuffer; - - if (IsSwapChainRenderPass && m_pVulkan->FillRenderPassTransformBeginInfoQCOM(RPTransformBeginInfoQCOM)) + fvk::VkRenderPassBeginInfo RPBeginInfo{{ + .renderPass = RenderPass, + .framebuffer = FrameBuffer, + .renderArea = RenderExtent, + .clearValueCount = ClearValuesCount, + .pClearValues = ClearValues.data() + }}; + + fvk::VkRenderPassTransformBeginInfoQCOM RPTransformBeginInfoQCOM = {}; + if (IsSwapChainRenderPass && m_pVulkan->FillRenderPassTransformBeginInfoQCOM(*RPTransformBeginInfoQCOM)) { //LOGI("RPTransformBeginInfoQCOM(%s): Pre swap Extents = (%d x %d) transform = %d", m_Name.c_str(), RPBeginInfo.renderArea.extent.width, RPBeginInfo.renderArea.extent.height, RPTransformBeginInfoQCOM.transform); - RPBeginInfo.pNext = &RPTransformBeginInfoQCOM; + RPBeginInfo.Add( RPTransformBeginInfoQCOM ); } //LOGI("BeginRenderPass(%s): Extents = (%d x %d) %s", m_Name.c_str(), RPBeginInfo.renderArea.extent.width, RPBeginInfo.renderArea.extent.height, (RPBeginInfo.pNext == &RPTransformBeginInfoQCOM) ? " (transformed)" : ""); - vkCmdBeginRenderPass(m_VkCommandBuffer, &RPBeginInfo, SubContents); - return true; + return BeginRenderPass(*RPBeginInfo, SubContents); +} + + +//----------------------------------------------------------------------------- +bool CommandList::BeginRenderPass(VkRect2D RenderExtent, float MinDepth, float MaxDepth, const std::span ClearColors, uint32_t NumColorBuffers, bool HasDepth, const RenderPass& RenderPass, bool IsSwapChainRenderPass, VkFramebuffer FrameBuffer, VkSubpassContents SubContents) +//----------------------------------------------------------------------------- +{ + return BeginRenderPass( RenderExtent, MinDepth, MaxDepth, ClearColors, NumColorBuffers, HasDepth, RenderPass.mRenderPass, IsSwapChainRenderPass, FrameBuffer, SubContents ); } //----------------------------------------------------------------------------- -bool CommandListT::BeginRenderPass(const CRenderTarget& renderTarget, VkRenderPass RenderPass, VkSubpassContents SubContents) +bool CommandList::BeginRenderPass(const RenderTarget& RenderTarget, VkRenderPass RenderPass, VkSubpassContents SubContents) //----------------------------------------------------------------------------- { VkRect2D Scissor = {}; Scissor.offset.x = 0; Scissor.offset.y = 0; - Scissor.extent.width = renderTarget.m_Width; - Scissor.extent.height = renderTarget.m_Height; + Scissor.extent.width = RenderTarget.m_Width; + Scissor.extent.height = RenderTarget.m_Height; - return BeginRenderPass(Scissor, 0.0f, 1.0f, { renderTarget.m_ClearColorValues.data(), renderTarget.m_ClearColorValues.size() }, renderTarget.GetNumColorLayers(), renderTarget.m_DepthFormat != TextureFormat::UNDEFINED, RenderPass, false, renderTarget.m_FrameBuffer, SubContents); + return BeginRenderPass(Scissor, 0.0f, 1.0f, { RenderTarget.m_ClearColorValues.data(), RenderTarget.m_ClearColorValues.size() }, RenderTarget.GetNumColorLayers(), RenderTarget.m_DepthFormat != TextureFormat::UNDEFINED, RenderPass, false, RenderTarget.m_FrameBuffer, SubContents); } //----------------------------------------------------------------------------- -bool CommandListT::NextSubpass( VkSubpassContents SubContents ) +bool CommandList::BeginRenderPass( const RenderTarget& RenderTarget, const RenderPass& RenderPass, VkSubpassContents SubContents ) +//----------------------------------------------------------------------------- +{ + return BeginRenderPass(RenderTarget, RenderPass.mRenderPass, SubContents); +} + +//----------------------------------------------------------------------------- +bool CommandList::BeginRenderPass( const Framebuffer& Framebuffer, const RenderPass& RenderPass, const RenderPassClearData& RenderPassClearData, VkSubpassContents SubContents ) +//----------------------------------------------------------------------------- +{ + VkResult RetVal = VK_SUCCESS; + + vkCmdSetViewport( m_VkCommandBuffer, 0, 1, &RenderPassClearData.viewport ); + vkCmdSetScissor( m_VkCommandBuffer, 0, 1, &RenderPassClearData.scissor); + + // ... begin render pass ... + fvk::VkRenderPassBeginInfo RPBeginInfo{{ + .renderPass = RenderPass.mRenderPass, + .framebuffer = Framebuffer.m_FrameBuffer, + .renderArea = RenderPassClearData.scissor, + .clearValueCount = (uint32_t)RenderPassClearData.clearValues.size(), + .pClearValues = RenderPassClearData.clearValues.data() + }}; + + //fvk::VkRenderPassTransformBeginInfoQCOM RPTransformBeginInfoQCOM = {}; + //if (IsSwapChainRenderPass && m_pVulkan->FillRenderPassTransformBeginInfoQCOM( *RPTransformBeginInfoQCOM )) + //{ + // //LOGI("RPTransformBeginInfoQCOM(%s): Pre swap Extents = (%d x %d) transform = %d", m_Name.c_str(), RPBeginInfo.renderArea.extent.width, RPBeginInfo.renderArea.extent.height, RPTransformBeginInfoQCOM.transform); + // RPBeginInfo.Add( RPTransformBeginInfoQCOM ); + //} + + //LOGI("BeginRenderPass(%s): Extents = (%d x %d) %s", m_Name.c_str(), RPBeginInfo.renderArea.extent.width, RPBeginInfo.renderArea.extent.height, (RPBeginInfo.pNext == &RPTransformBeginInfoQCOM) ? " (transformed)" : ""); + + return BeginRenderPass( *RPBeginInfo, SubContents ); +} + +//----------------------------------------------------------------------------- +bool CommandList::BeginSwapchainRenderPass( uint32_t SwapchainImageIndex, const RenderPass& RenderPass, const RenderPassClearData& RenderPassClearData, VkSubpassContents SubContents ) +//----------------------------------------------------------------------------- +{ + VkResult RetVal = VK_SUCCESS; + + vkCmdSetViewport( m_VkCommandBuffer, 0, 1, &RenderPassClearData.viewport ); + vkCmdSetScissor( m_VkCommandBuffer, 0, 1, &RenderPassClearData.scissor ); + + // ... begin render pass ... + fvk::VkRenderPassBeginInfo RPBeginInfo{{ + .renderPass = RenderPass.mRenderPass, + .framebuffer = m_pVulkan->m_SwapchainBuffers[SwapchainImageIndex].framebuffer.m_FrameBuffer, + .renderArea = RenderPassClearData.scissor, + .clearValueCount = (uint32_t)RenderPassClearData.clearValues.size(), + .pClearValues = RenderPassClearData.clearValues.data() + }}; + + fvk::VkRenderPassTransformBeginInfoQCOM RPTransformBeginInfoQCOM = {}; + if (m_pVulkan->FillRenderPassTransformBeginInfoQCOM( *RPTransformBeginInfoQCOM )) + { + //LOGI("RPTransformBeginInfoQCOM(%s): Pre swap Extents = (%d x %d) transform = %d", m_Name.c_str(), RPBeginInfo.renderArea.extent.width, RPBeginInfo.renderArea.extent.height, RPTransformBeginInfoQCOM.transform); + RPBeginInfo.Add( RPTransformBeginInfoQCOM ); + } + + //LOGI("BeginSwapchainRenderPass(%s): Extents = (%d x %d) %s", m_Name.c_str(), RPBeginInfo.renderArea.extent.width, RPBeginInfo.renderArea.extent.height, (RPBeginInfo.pNext == &RPTransformBeginInfoQCOM) ? " (transformed)" : ""); + + return BeginRenderPass( *RPBeginInfo, SubContents ); +} + +//----------------------------------------------------------------------------- +bool CommandList::BeginRenderPass( const RenderContext& renderContext, VkSubpassContents SubContents ) +//----------------------------------------------------------------------------- +{ + // ... begin render pass ... + fvk::VkRenderPassBeginInfo RPBeginInfo{ renderContext.GetRenderPassBeginInfo() }; + return BeginRenderPass( *RPBeginInfo, SubContents ); +} + +//----------------------------------------------------------------------------- +bool CommandList::BeginRenderPass( const VkRenderPassBeginInfo& RPBeginInfo, VkSubpassContents SubContents ) +//----------------------------------------------------------------------------- +{ + vkCmdBeginRenderPass(m_VkCommandBuffer, &RPBeginInfo, SubContents); + return true; +} + +//----------------------------------------------------------------------------- +void CommandList::BeginRenderPass( const VkRenderingInfo& renderingInfo ) +//----------------------------------------------------------------------------- +{ + /* + const RenderTarget& renderTarget; + std::array colorAttachments; + VkRenderingAttachmentInfo depthAttachment; + + for (auto i = 0; i < renderTarget.GetNumColorLayers(); ++i) + { + auto& image = renderTarget.m_ColorAttachments[i]; + colorAttachments[i] = { + .imageView = image.GetVkImageView(), + .imageLayout = image.GetVkImageLayout(), + .resolveMode = VK_RESOLVE_MODE_NONE, + .loadOp = + .clearValue = renderTarget.m_ClearColorValues[i], + } + } + + VkRenderingInfo renderingInfo{ + .sType = VK_STRUCTURE_TYPE_RENDERING_INFO_KHR, + .renderArea = {0, 0, renderTarget.m_Width, renderTarget.m_Height}, + .layerCount = 1, + .colorAttachmentCount = 1, + .pColorAttachments = colorAttachments.data(), + .pDepthAttachment = renderTarget.m_DepthAttachment ? &depthAttachment : nullptr, + .pStencilAttachment = VK_NULL_HANDLE, + }; + */ + + + auto* dynamicRenderingExt = m_pVulkan->GetExtension(); + dynamicRenderingExt->m_vkCmdBeginRenderingKHR( m_VkCommandBuffer, &renderingInfo ); +} + +//----------------------------------------------------------------------------- +bool CommandList::NextSubpass( VkSubpassContents SubContents ) //----------------------------------------------------------------------------- { vkCmdNextSubpass(m_VkCommandBuffer, SubContents); @@ -267,7 +487,7 @@ bool CommandListT::NextSubpass( VkSubpassContents SubContents ) } //----------------------------------------------------------------------------- -bool CommandListT::EndRenderPass() +bool CommandList::EndRenderPass() //----------------------------------------------------------------------------- { vkCmdEndRenderPass(m_VkCommandBuffer); @@ -275,7 +495,7 @@ bool CommandListT::EndRenderPass() } //----------------------------------------------------------------------------- -int CommandListT::StartGpuTimer(const std::string_view& timerName) +int CommandList::StartGpuTimer(const std::string_view& timerName) //----------------------------------------------------------------------------- { if (!m_GpuTimerPool) @@ -289,7 +509,7 @@ int CommandListT::StartGpuTimer(const std::string_view& timerName) } //----------------------------------------------------------------------------- -void CommandListT::StopGpuTimer(int timerId) +void CommandList::StopGpuTimer(int timerId) //----------------------------------------------------------------------------- { if (timerId < 0) @@ -300,7 +520,21 @@ void CommandListT::StopGpuTimer(int timerId) } //----------------------------------------------------------------------------- -bool CommandListT::End() +void CommandList::ExecuteCommands( const CommandList& secondaryCommands ) +//----------------------------------------------------------------------------- +{ + vkCmdExecuteCommands( m_VkCommandBuffer, 1, &secondaryCommands.m_VkCommandBuffer ); +} + +//----------------------------------------------------------------------------- +void CommandList::ExecuteCommands( VkCommandBuffer vkCommandBuffer ) +//----------------------------------------------------------------------------- +{ + vkCmdExecuteCommands( m_VkCommandBuffer, 1, &vkCommandBuffer ); +} + +//----------------------------------------------------------------------------- +bool CommandList::End() //----------------------------------------------------------------------------- { VkResult RetVal; @@ -323,7 +557,7 @@ bool CommandListT::End() } //----------------------------------------------------------------------------- -void CommandListT::QueueSubmit( const std::span WaitSemaphores, const std::span WaitDstStageMasks, const std::span SignalSemaphores, VkFence CompletionFence ) const +void CommandList::QueueSubmit( const std::span WaitSemaphores, const std::span WaitDstStageMasks, const std::span SignalSemaphores, VkFence CompletionFence ) const //----------------------------------------------------------------------------- { assert( m_VkCommandBuffer != VK_NULL_HANDLE ); @@ -331,7 +565,7 @@ void CommandListT::QueueSubmit( const std::span WaitS } //----------------------------------------------------------------------------- -void CommandListT::QueueSubmit(const std::span WaitSemaphores, const std::span SignalSemaphores, VkFence CompletionFence) const +void CommandList::QueueSubmit(const std::span WaitSemaphores, const std::span SignalSemaphores, VkFence CompletionFence) const //----------------------------------------------------------------------------- { constexpr uint32_t cMaxSemaphores = 8; @@ -373,7 +607,7 @@ void CommandListT::QueueSubmit(const std::span Wait } //----------------------------------------------------------------------------- -void CommandListT::QueueSubmit( const Vulkan::BufferIndexAndFence& CurrentVulkanBuffer, VkSemaphore renderCompleteSemaphore ) const +void CommandList::QueueSubmit( const Vulkan::BufferIndexAndFence& CurrentVulkanBuffer, VkSemaphore renderCompleteSemaphore ) const //----------------------------------------------------------------------------- { assert( m_VkCommandBuffer != VK_NULL_HANDLE ); @@ -382,9 +616,11 @@ void CommandListT::QueueSubmit( const Vulkan::BufferIndexAndFence& Curre //----------------------------------------------------------------------------- -void CommandListT::Release() +void CommandList::Release() //----------------------------------------------------------------------------- { + CommandListBase::Release(); + if (m_VkCommandBuffer != VK_NULL_HANDLE) { // Do not need to worry about the device or pool being NULL since we could @@ -393,10 +629,6 @@ void CommandListT::Release() m_VkCommandBuffer = nullptr; } - m_Name.clear(); - m_NumDrawCalls = 0; - m_NumTriangles = 0; - m_IsPrimary = true; m_QueueIndex = 0; m_GpuTimerPool = nullptr; m_GpuTimerQueries.clear(); diff --git a/framework/code/vulkan/commandBuffer.hpp b/framework/code/vulkan/commandBuffer.hpp index 731e1c8..75dcdbb 100644 --- a/framework/code/vulkan/commandBuffer.hpp +++ b/framework/code/vulkan/commandBuffer.hpp @@ -1,81 +1,94 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include -//#include -//#include -//#include -//#include -//#include -//#include "vulkan/vulkan.hpp" -//#include "vulkan/TextureFuncts.h" -//#include "texture/vulkan/texture.hpp" -//#include "material/vulkan/shaderModule.hpp" -// -//#include "system/os_common.h" -// // Need the vulkan wrapper #include "vulkan.hpp" #include "graphicsApi/commandList.hpp" -//class TimerPoolBase; -//typedef uint64_t VkFlags64; -//typedef VkFlags64 VkPipelineStageFlags2; -//typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; - // Forward declarations -class CRenderTarget; class Vulkan; +class RenderPassClearData; class TimerPoolBase; class SemaphoreWait; class SemaphoreSignal; -template class CommandListT; -using CommandListVulkan = CommandListT; -using Wrap_VkCommandBuffer = CommandListT; // legacy name +template class CommandList; +using CommandListVulkan = CommandList; +template class Framebuffer; +template class RenderTarget; +template class RenderContext; + /// /// Wrapper around VkCommandBuffer. /// Simplifies creation, use and destruction of VkCommandBuffer. /// template<> -class CommandListT : public CommandList +class CommandList final : public CommandListBase { - CommandListT(const CommandListT&) = delete; - CommandListT& operator=(const CommandListT&) = delete; + CommandList(const CommandList&) = delete; + CommandList& operator=(const CommandList&) = delete; // Functions public: - CommandListT() noexcept; - ~CommandListT(); - CommandListT(CommandListT&&) noexcept; - CommandListT& operator=(CommandListT&&) noexcept; - - bool Initialize(Vulkan* pVulkan, const std::string& Name = {}, VkCommandBufferLevel CmdBuffLevel = VK_COMMAND_BUFFER_LEVEL_PRIMARY, uint32_t QueueIndex = Vulkan::eGraphicsQueue, TimerPoolBase* pTimerPool = nullptr); + CommandList() noexcept; + ~CommandList(); + CommandList(CommandList&&) noexcept; + CommandList& operator=(CommandList&&) noexcept; + + // Curtesty + operator VkCommandBuffer() const { return m_VkCommandBuffer; } + + bool Initialize(Vulkan* pVulkan, const std::string& Name = {}, CommandListBase::Type CmdBuffType = Type::Primary, uint32_t QueueIndex = Vulkan::eGraphicsQueue, TimerPoolBase* pTimerPool = nullptr); //bool Initialize(Vulkan* pVulkan, const std::string& Name, VkCommandBufferLevel CmdBuffLevel, std::same_as auto QueueIndex, TimerPoolBase* pTimerPool = nullptr) = delete; - bool Reset(); // Begin primary command buffer bool Begin(VkCommandBufferUsageFlags CmdBuffUsage = 0); - // Begin secondary command buffer (with inheritance) + // Begin command buffer + bool Begin(const VkCommandBufferBeginInfo& CmdBeginInfo); + + // Begin secondary command buffer with inheritance bool Begin(VkFramebuffer FrameBuffer, VkRenderPass RenderPass, bool IsSwapChainRenderPass = false, uint32_t SubPass = 0, VkCommandBufferUsageFlags CmdBuffUsage = 0); + // Begin secondary command buffer with inheritance + bool Begin(VkFramebuffer FrameBuffer, const RenderPass& RenderPass, bool IsSwapChainRenderPass = false, uint32_t SubPass = 0, VkCommandBufferUsageFlags CmdBuffUsage = 0); + // Begin secondary command buffer with inheritance + bool Begin(const Framebuffer& FrameBuffer, const RenderPass& RenderPass, bool IsSwapChainRenderPass = false, uint32_t SubPass = 0, VkCommandBufferUsageFlags CmdBuffUsage = 0); + // Begin secondary command buffer (dynamic rendering) + bool Begin(const VkCommandBufferInheritanceRenderingInfo& DynamicRenderingInheritanceInfo, VkCommandBufferUsageFlags CmdBuffUsage); + // Begin secondary command buffer with inheritance + bool Begin(const RenderContext& RenderContext, VkCommandBufferUsageFlags CmdBuffUsage = 0 ); bool BeginRenderPass(VkRect2D RenderExtent, float MinDepth, float MaxDepth, const std::span ClearColors, uint32_t NumColorBuffers, bool HasDepth, VkRenderPass RenderPass, bool IsSwapChainRenderPass, VkFramebuffer FrameBuffer, VkSubpassContents SubContents = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); - bool BeginRenderPass(const CRenderTarget& renderTarget, VkRenderPass RenderPass, VkSubpassContents SubContents); - bool NextSubpass( VkSubpassContents SubContents = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS ); + bool BeginRenderPass(VkRect2D RenderExtent, float MinDepth, float MaxDepth, const std::span ClearColors, uint32_t NumColorBuffers, bool HasDepth, const RenderPass& RenderPass, bool IsSwapChainRenderPass, VkFramebuffer FrameBuffer, VkSubpassContents SubContents = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); + bool BeginRenderPass(const RenderTarget& renderTarget, VkRenderPass RenderPass, VkSubpassContents SubContents); + bool BeginRenderPass(const RenderTarget& renderTarget, const RenderPass& RenderPass, VkSubpassContents SubContents); + bool BeginRenderPass(const Framebuffer& Framebuffer, const RenderPass& RenderPass, const RenderPassClearData& RenderPassClearData, VkSubpassContents SubContents); + bool BeginRenderPass(const VkRenderPassBeginInfo&, VkSubpassContents SubContents); + bool BeginSwapchainRenderPass(uint32_t SwapchainImageIndex, const RenderPass& RenderPass, const RenderPassClearData& RenderPassClearData, VkSubpassContents SubContents); + bool BeginRenderPass(const RenderContext& renderContext, VkSubpassContents SubContents = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); + void BeginRenderPass(const VkRenderingInfo& renderingInfo); // dynamic rendering + bool NextSubpass(VkSubpassContents SubContents = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); bool EndRenderPass(); int StartGpuTimer(const std::string_view& timerName); void StopGpuTimer(int timerId); + /// Execute contents of the supplied command buffer (must be a secondary command buffer) + void ExecuteCommands( const CommandList& secondaryCommands ); + void ExecuteCommands( VkCommandBuffer ); + bool End(); + /// @brief Get command list ready for re-recording + bool Reset(); + /// @brief Call vkQueueSubmit for this command buffer. /// Will submit to the compute or graphics queue (depending on m_QueueIndex). /// @param WaitSemaphores semaphores to wait upon before the gpu can execute this command buffer @@ -110,18 +123,12 @@ class CommandListT : public CommandList void QueueSubmit( const Vulkan::BufferIndexAndFence& CurrentVulkanBuffer, VkSemaphore renderCompleteSemaphore ) const; /// @brief Release the Vulkan resources used by this wrapper and cleanup. - void Release(); + void Release() override; private: // Attributes public: - std::string m_Name; - - uint32_t m_NumDrawCalls = 0; - uint32_t m_NumTriangles = 0; - - bool m_IsPrimary = true; uint32_t m_QueueIndex = 0; VkCommandBuffer m_VkCommandBuffer = VK_NULL_HANDLE; TimerPoolBase* m_GpuTimerPool = nullptr; diff --git a/framework/code/vulkan/extension.cpp b/framework/code/vulkan/extension.cpp index 6d47d0f..6a09033 100644 --- a/framework/code/vulkan/extension.cpp +++ b/framework/code/vulkan/extension.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,4 +9,3 @@ #include "extension.hpp" #include "system/os_common.h" #include - diff --git a/framework/code/vulkan/extension.hpp b/framework/code/vulkan/extension.hpp index 3893058..fcc2a98 100644 --- a/framework/code/vulkan/extension.hpp +++ b/framework/code/vulkan/extension.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -138,11 +138,17 @@ class ExtensionChain /// @brief Enumeration of the Vulkan extension type (eg Device extension or Instance extansion). -enum class VulkanExtensionType { eDevice, eInstance }; +enum class VulkanExtensionType { eDevice, eInstance, eLayer }; -/// @brief Enumeration of the Vulkan extension status (eg loading state of an extenstion). +/// @brief Enumeration of the Vulkan extension status (eg loading state of an extension). enum class VulkanExtensionStatus { eUninitialized, eOptional, eRequired, eLoaded }; +/// @brief Enumeration for how extension is to be loaded. +/// eDefault - request extension from vulkan normally (to spec). THIS IS THE OPTION TO USE ALMOST ALWAYS! +/// eForceLoad - ignore list of extensions reported by vulkan driver and request this extension anyways. This is for developement/private driver extensions use at your own risk. +/// eSkipRequest - if not in the list of extensions reported by vulkan dont request this extension, but act as if it is enabled (do initialization and mark extension as loaded). This is for developement/private driver extensions use at your own risk. +enum class VulkanExtensionLoadMode { eDefault, eForceLoad, eSkipRequest }; + /// @brief Class describing a Vulkan extension base for defining extension behaviour and hooks into Vulkan calls class VulkanExtensionBase { @@ -156,6 +162,7 @@ class VulkanExtensionBase const std::string Name; VulkanExtensionStatus Status = VulkanExtensionStatus::eUninitialized; + VulkanExtensionLoadMode LoadMode = VulkanExtensionLoadMode::eDefault; uint32_t Version = 0; ///< Extension version (from Driver) /// Register this extension with Vulkan. Typically will call Vulkan::AddExtensionHooks if the extension needs to hook in to any functionality. @@ -175,4 +182,6 @@ class VulkanExtension : public VulkanExtensionBase VulkanExtension( std::string name, VulkanExtensionStatus status = VulkanExtensionStatus::eUninitialized, uint32_t version = 0 ) noexcept : VulkanExtensionBase(name, status, version ) {} virtual ~VulkanExtension() = default; + + virtual void PostLoad() {} //< Function called after extension is loaded (eg after VkCreateDevice). Can be overridden. }; diff --git a/framework/code/vulkan/extensionHelpers.cpp b/framework/code/vulkan/extensionHelpers.cpp index 8693f1c..e30b9d9 100644 --- a/framework/code/vulkan/extensionHelpers.cpp +++ b/framework/code/vulkan/extensionHelpers.cpp @@ -1,12 +1,12 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "vulkan.hpp" -#include "extensionHelpers.hpp" +#include "extensionLib.hpp" #include "system/os_common.h" #include #include @@ -14,8 +14,8 @@ template<> void VulkanFunctionPointerExtensionHelper::Register(Vulkan& vulkan) { - vulkan.AddExtensionHooks( &m_InstanceFunctionPointerHook ); - vulkan.AddExtensionHooks( &m_DeviceFunctionPointerHook ); + vulkan.AddExtensionHooks(&m_InstanceFunctionPointerHook); + vulkan.AddExtensionHooks(&m_DeviceFunctionPointerHook); } template<> @@ -23,467 +23,3 @@ void VulkanFunctionPointerExtensionHelper::Regis { vulkan.AddExtensionHooks(&m_InstanceFunctionPointerHook); } - - -namespace ExtensionHelper { - -#if VK_EXT_mesh_shader - void Ext_VK_KHR_mesh_shader::LookupFunctionPointers(VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr) - { - m_vkCmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)deviceProcAddr(vkDevice, "vkCmdDrawMeshTasksEXT"); - m_vkCmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)deviceProcAddr(vkDevice, "vkCmdDrawMeshTasksIndirectEXT"); - m_vkCmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)deviceProcAddr(vkDevice, "vkCmdDrawMeshTasksIndirectCountEXT"); - } - void Ext_VK_KHR_mesh_shader::PrintFeatures() const - { - LOGI("FeaturesMeshShader: "); - LOGI(" taskShader: %s", this->AvailableFeatures.taskShader ? "True" : "False"); - LOGI(" meshShader: %s", this->AvailableFeatures.meshShader ? "True" : "False"); - LOGI(" multiviewMeshShader: %s", this->AvailableFeatures.multiviewMeshShader ? "True" : "False"); - LOGI(" primitiveFragmentShadingRateMeshShader: %s", this->AvailableFeatures.primitiveFragmentShadingRateMeshShader ? "True" : "False"); - LOGI(" meshShaderQueries: %s", this->AvailableFeatures.meshShaderQueries ? "True" : "False"); - } - void Ext_VK_KHR_mesh_shader::PrintProperties() const - { - LOGI("VK_EXT_descriptor_indexing (VkPhysicalDeviceDescriptorIndexingProperties): "); - LOGI(" maxTaskWorkGroupTotalCount: %u", Properties.maxTaskWorkGroupTotalCount); - LOGI(" maxTaskWorkGroupCount: %u %u %u", Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0]); - LOGI(" maxTaskWorkGroupTotalCount: %u", Properties.maxTaskWorkGroupTotalCount); - LOGI(" maxTaskWorkGroupCount: %u %u %u", Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0]); - LOGI(" maxTaskWorkGroupInvocations: %u", Properties.maxTaskWorkGroupInvocations); - LOGI(" maxTaskWorkGroupSize: %u %u %u", Properties.maxTaskWorkGroupSize[0], Properties.maxTaskWorkGroupSize[0], Properties.maxTaskWorkGroupSize[0]); - LOGI(" maxTaskPayloadSize: %u", Properties.maxTaskPayloadSize); - LOGI(" maxTaskSharedMemorySize: %u", Properties.maxTaskSharedMemorySize); - LOGI(" maxTaskPayloadAndSharedMemorySize: %u", Properties.maxTaskPayloadAndSharedMemorySize); - LOGI(" maxMeshWorkGroupTotalCount: %u", Properties.maxMeshWorkGroupTotalCount); - LOGI(" maxMeshWorkGroupCount: %u %u %u", Properties.maxMeshWorkGroupCount[0], Properties.maxMeshWorkGroupCount[0], Properties.maxMeshWorkGroupCount[0]); - LOGI(" maxMeshWorkGroupInvocations: %u", Properties.maxMeshWorkGroupInvocations); - LOGI(" maxMeshWorkGroupSize: %u %u %u", Properties.maxMeshWorkGroupSize[0], Properties.maxMeshWorkGroupSize[0], Properties.maxMeshWorkGroupSize[0]); - LOGI(" maxMeshSharedMemorySize: %u", Properties.maxMeshSharedMemorySize); - LOGI(" maxMeshPayloadAndSharedMemorySize: %u", Properties.maxMeshPayloadAndSharedMemorySize); - LOGI(" maxMeshOutputMemorySize: %u", Properties.maxMeshOutputMemorySize); - LOGI(" maxMeshPayloadAndOutputMemorySize: %u", Properties.maxMeshPayloadAndOutputMemorySize); - LOGI(" maxMeshOutputComponents: %u", Properties.maxMeshOutputComponents); - LOGI(" maxMeshOutputVertices: %u", Properties.maxMeshOutputVertices); - LOGI(" maxMeshOutputPrimitives: %u", Properties.maxMeshOutputPrimitives); - LOGI(" maxMeshOutputLayers: %u", Properties.maxMeshOutputLayers); - LOGI(" maxMeshMultiviewViewCount: %u", Properties.maxMeshMultiviewViewCount); - LOGI(" meshOutputPerVertexGranularity: %u", Properties.meshOutputPerVertexGranularity); - LOGI(" meshOutputPerPrimitiveGranularity: %u", Properties.meshOutputPerPrimitiveGranularity); - LOGI(" maxPreferredTaskWorkGroupInvocations: %u", Properties.maxPreferredTaskWorkGroupInvocations); - LOGI(" maxPreferredMeshWorkGroupInvocations: %u", Properties.maxPreferredMeshWorkGroupInvocations); - LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersLocalInvocationVertexOutput ? "True" : "False"); - LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersLocalInvocationPrimitiveOutput ? "True" : "False"); - LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersCompactVertexOutput ? "True" : "False"); - LOGI(" prefersLocalInvocationVertexOutput: %s", Properties.prefersCompactPrimitiveOutput ? "True" : "False"); - } -#endif - - -#if VK_KHR_shader_float16_int8 - void Ext_VK_KHR_shader_float16_int8::PrintFeatures() const - { - LOGI( "FeaturesShaderFloat16Int8: " ); - LOGI( " shaderFloat16: %s", this->AvailableFeatures.shaderFloat16 ? "True" : "False" ); - LOGI( " shaderInt8: %s", this->AvailableFeatures.shaderInt8 ? "True" : "False" ); - } -#endif // VK_KHR_shader_float16_int8 - -#if VK_EXT_shader_image_atomic_int64 - void Ext_VK_EXT_shader_image_atomic_int64::PrintFeatures() const - { - LOGI( "FeaturesShaderImageAtomicInt64: " ); - LOGI( " shaderImageInt64Atomics: %s", this->AvailableFeatures.shaderImageInt64Atomics ? "True" : "False" ); - LOGI( " sparseImageInt64Atomics: %s", this->AvailableFeatures.sparseImageInt64Atomics ? "True" : "False" ); - } -#endif // VK_EXT_shader_image_atomic_int64 - -#if VK_EXT_index_type_uint8 - void Ext_VK_EXT_index_type_uint8::PrintFeatures() const - { - LOGI( "VK_EXT_index_type_uint8 (VkPhysicalDeviceIndexTypeUint8FeaturesEXT): " ); - LOGI( " indexTypeUint8: %s", this->AvailableFeatures.indexTypeUint8 ? "True" : "False" ); - } -#endif // VK_EXT_index_type_uint8 - -#if VK_KHR_shader_subgroup_extended_types - void Ext_VK_KHR_shader_subgroup_extended_types::PrintFeatures() const - { - LOGI( "FeaturesShaderSubgroupExtendedTypes: " ); - LOGI( " shaderSubgroupExtendedTypes: %s", this->AvailableFeatures.shaderSubgroupExtendedTypes ? "True" : "False" ); - } -#endif // VK_KHR_shader_subgroup_extended_types - -#if VK_EXT_descriptor_indexing - void Ext_VK_EXT_descriptor_indexing::PrintFeatures() const - { - LOGI( "VK_EXT_descriptor_indexing (VkPhysicalDeviceDescriptorIndexingFeatures): " ); - LOGI( " shaderInputAttachmentArrayDynamicIndexing: %s", this->AvailableFeatures.shaderInputAttachmentArrayDynamicIndexing ? "True" : "False" ); - LOGI( " shaderUniformTexelBufferArrayDynamicIndexing: %s", this->AvailableFeatures.shaderUniformTexelBufferArrayDynamicIndexing ? "True" : "False" ); - LOGI( " shaderStorageTexelBufferArrayDynamicIndexing: %s", this->AvailableFeatures.shaderStorageTexelBufferArrayDynamicIndexing ? "True" : "False" ); - LOGI( " shaderUniformBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderUniformBufferArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " shaderSampledImageArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderSampledImageArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " shaderStorageBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageBufferArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " shaderStorageImageArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageImageArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " shaderInputAttachmentArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderInputAttachmentArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " shaderUniformTexelBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderUniformTexelBufferArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " shaderStorageTexelBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageTexelBufferArrayNonUniformIndexing ? "True" : "False" ); - LOGI( " descriptorBindingUniformBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingUniformBufferUpdateAfterBind ? "True" : "False" ); - LOGI( " descriptorBindingSampledImageUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingSampledImageUpdateAfterBind ? "True" : "False" ); - LOGI( " descriptorBindingStorageImageUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageImageUpdateAfterBind ? "True" : "False" ); - LOGI( " descriptorBindingStorageBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageBufferUpdateAfterBind ? "True" : "False" ); - LOGI( " descriptorBindingUniformTexelBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind ? "True" : "False" ); - LOGI( " descriptorBindingStorageTexelBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind ? "True" : "False" ); - LOGI( " descriptorBindingUpdateUnusedWhilePending: %s", this->AvailableFeatures.descriptorBindingUpdateUnusedWhilePending ? "True" : "False" ); - LOGI( " descriptorBindingPartiallyBound: %s", this->AvailableFeatures.descriptorBindingPartiallyBound ? "True" : "False" ); - LOGI( " descriptorBindingVariableDescriptorCount: %s", this->AvailableFeatures.descriptorBindingVariableDescriptorCount ? "True" : "False" ); - LOGI( " runtimeDescriptorArray: %s", this->AvailableFeatures.runtimeDescriptorArray ? "True" : "False" ); - } - - void Ext_VK_EXT_descriptor_indexing::PrintProperties() const - { - LOGI( "VK_EXT_descriptor_indexing (VkPhysicalDeviceDescriptorIndexingProperties): " ); - LOGI( " maxUpdateAfterBindDescriptorsInAllPools: %u", Properties.maxUpdateAfterBindDescriptorsInAllPools ); - LOGI( " shaderUniformBufferArrayNonUniformIndexingNative: %s", Properties.shaderUniformBufferArrayNonUniformIndexingNative ? "True" : "False" ); - LOGI( " shaderSampledImageArrayNonUniformIndexingNative: %s", Properties.shaderSampledImageArrayNonUniformIndexingNative ? "True" : "False" ); - LOGI( " shaderStorageBufferArrayNonUniformIndexingNative: %s", Properties.shaderStorageBufferArrayNonUniformIndexingNative ? "True" : "False" ); - LOGI( " shaderStorageImageArrayNonUniformIndexingNative: %s", Properties.shaderStorageImageArrayNonUniformIndexingNative ? "True" : "False" ); - LOGI( " shaderInputAttachmentArrayNonUniformIndexingNative: %s", Properties.shaderInputAttachmentArrayNonUniformIndexingNative ? "True" : "False" ); - LOGI( " robustBufferAccessUpdateAfterBind: %s", Properties.robustBufferAccessUpdateAfterBind ? "True" : "False" ); - LOGI( " quadDivergentImplicitLod: %s", Properties.quadDivergentImplicitLod ? "True" : "False" ); - LOGI( " maxPerStageDescriptorUpdateAfterBindSamplers: %u", Properties.maxPerStageDescriptorUpdateAfterBindSamplers ); - LOGI( " maxPerStageDescriptorUpdateAfterBindUniformBuffers: %u", Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ); - LOGI( " maxPerStageDescriptorUpdateAfterBindStorageBuffers: %u", Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ); - LOGI( " maxPerStageDescriptorUpdateAfterBindSampledImages: %u", Properties.maxPerStageDescriptorUpdateAfterBindSampledImages ); - LOGI( " maxPerStageDescriptorUpdateAfterBindStorageImages: %u", Properties.maxPerStageDescriptorUpdateAfterBindStorageImages ); - LOGI( " maxPerStageDescriptorUpdateAfterBindInputAttachments: %u", Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments ); - LOGI( " maxPerStageUpdateAfterBindResources: %u", Properties.maxPerStageUpdateAfterBindResources ); - LOGI( " maxDescriptorSetUpdateAfterBindSamplers: %u", Properties.maxDescriptorSetUpdateAfterBindSamplers ); - LOGI( " maxDescriptorSetUpdateAfterBindUniformBuffers: %u", Properties.maxDescriptorSetUpdateAfterBindUniformBuffers ); - LOGI( " maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: %u", Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ); - LOGI( " maxDescriptorSetUpdateAfterBindStorageBuffers: %u", Properties.maxDescriptorSetUpdateAfterBindStorageBuffers ); - LOGI( " maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: %u", Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ); - LOGI( " maxDescriptorSetUpdateAfterBindSampledImages: %u", Properties.maxDescriptorSetUpdateAfterBindSampledImages ); - LOGI( " maxDescriptorSetUpdateAfterBindStorageImages: %u", Properties.maxDescriptorSetUpdateAfterBindStorageImages ); - LOGI( " maxDescriptorSetUpdateAfterBindInputAttachments: %u", Properties.maxDescriptorSetUpdateAfterBindInputAttachments ); - } -#endif // VK_EXT_descriptor_indexing - -#if VK_KHR_8bit_storage - void Ext_VK_KHR_8bit_storage::PrintFeatures() const - { - LOGI( "VK_KHR_8bit_storage (VkPhysicalDevice8BitStorageFeaturesKHR): " ); - LOGI( " storageBuffer8BitAccess: %s", this->AvailableFeatures.storageBuffer8BitAccess ? "True" : "False" ); - LOGI( " uniformAndStorageBuffer8BitAccess: %s", this->AvailableFeatures.uniformAndStorageBuffer8BitAccess ? "True" : "False" ); - LOGI( " storagePushConstant8: %s", this->AvailableFeatures.storagePushConstant8 ? "True" : "False" ); - } -#endif // VK_KHR_8bit_storage - -#if VK_KHR_portability_subset - void Ext_VK_KHR_portability_subset::PrintFeatures() const - { - LOGI( "VK_KHR_portability_subset (VkPhysicalDevicePortabilitySubsetFeaturesKHR): " ); - LOGI( " constantAlphaColorBlendFactors: %s", this->AvailableFeatures.constantAlphaColorBlendFactors ? "True" : "False" ); - LOGI( " events: %s", this->AvailableFeatures.events ? "True" : "False" ); - LOGI( " imageViewFormatReinterpretation: %s", this->AvailableFeatures.imageViewFormatReinterpretation ? "True" : "False" ); - LOGI( " imageViewFormatSwizzle: %s", this->AvailableFeatures.imageViewFormatSwizzle ? "True" : "False" ); - LOGI( " imageView2DOn3DImage: %s", this->AvailableFeatures.imageView2DOn3DImage ? "True" : "False" ); - LOGI( " multisampleArrayImage: %s", this->AvailableFeatures.multisampleArrayImage ? "True" : "False" ); - LOGI( " mutableComparisonSamplers: %s", this->AvailableFeatures.mutableComparisonSamplers ? "True" : "False" ); - LOGI( " pointPolygons: %s", this->AvailableFeatures.pointPolygons ? "True" : "False" ); - LOGI( " samplerMipLodBias: %s", this->AvailableFeatures.samplerMipLodBias ? "True" : "False" ); - LOGI( " separateStencilMaskRef: %s", this->AvailableFeatures.separateStencilMaskRef ? "True" : "False" ); - LOGI( " shaderSampleRateInterpolationFunctions: %s", this->AvailableFeatures.shaderSampleRateInterpolationFunctions ? "True" : "False" ); - LOGI( " tessellationIsolines: %s", this->AvailableFeatures.tessellationIsolines ? "True" : "False" ); - LOGI( " tessellationPointMode: %s", this->AvailableFeatures.tessellationPointMode ? "True" : "False" ); - LOGI( " triangleFans: %s", this->AvailableFeatures.triangleFans ? "True" : "False" ); - LOGI( " vertexAttributeAccessBeyondStride: %s", this->AvailableFeatures.vertexAttributeAccessBeyondStride ? "True" : "False" ); - } - void Ext_VK_KHR_portability_subset::PrintProperties() const - { - LOGI( "VK_KHR_portability_subset (VkPhysicalDevicePortabilitySubsetPropertiesKHR): " ); - LOGI( " minVertexInputBindingStrideAlignment: %u", this->Properties.minVertexInputBindingStrideAlignment ); - } -#endif // VK_KHR_portability_subset - -#if VK_KHR_fragment_shading_rate - void Ext_VK_KHR_fragment_shading_rate::PrintFeatures() const - { - LOGI( "VK_KHR_fragment_shading_rate (VkPhysicalDeviceFragmentShadingRateFeaturesKHR): " ); - LOGI( " pipelineFragmentShadingRate: %s", this->AvailableFeatures.pipelineFragmentShadingRate ? "True" : "False" ); - LOGI( " primitiveFragmentShadingRate: %s", this->AvailableFeatures.primitiveFragmentShadingRate ? "True" : "False" ); - LOGI( " attachmentFragmentShadingRate: %s", this->AvailableFeatures.attachmentFragmentShadingRate ? "True" : "False" ); - } - void Ext_VK_KHR_fragment_shading_rate::PrintProperties() const - { - LOGI( "VK_KHR_fragment_shading_rate (VkPhysicalDeviceFragmentShadingRatePropertiesKHR): " ); - LOGI( " minFragmentDensityTexelSize: %ux%u", this->Properties.minFragmentShadingRateAttachmentTexelSize.width, this->Properties.minFragmentShadingRateAttachmentTexelSize.height ); - LOGI( " maxFragmentDensityTexelSize: %ux%u", this->Properties.maxFragmentShadingRateAttachmentTexelSize.width, this->Properties.maxFragmentShadingRateAttachmentTexelSize.height ); - LOGI( " maxFragmentShadingRateAttachmentTexelSizeAspectRatio: %u", this->Properties.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ); - LOGI( " primitiveFragmentShadingRateWithMultipleViewports: %s", this->Properties.primitiveFragmentShadingRateWithMultipleViewports ? "True" : "False" ); - LOGI( " layeredShadingRateAttachments: %s", this->Properties.layeredShadingRateAttachments ? "True" : "False" ); - LOGI( " fragmentShadingRateNonTrivialCombinerOps: %s", this->Properties.fragmentShadingRateNonTrivialCombinerOps ? "True" : "False" ); - LOGI( " maxFragmentSize: %ux%u", this->Properties.maxFragmentSize.width, this->Properties.maxFragmentSize.height ); - LOGI( " maxFragmentSizeAspectRatio: %u", this->Properties.maxFragmentSizeAspectRatio ); - LOGI( " maxFragmentShadingRateCoverageSamples: %u", this->Properties.maxFragmentShadingRateCoverageSamples ); - LOGI( " maxFragmentShadingRateRasterizationSamples: 0x%02x", this->Properties.maxFragmentShadingRateRasterizationSamples ); - LOGI( " fragmentShadingRateWithShaderDepthStencilWrites: %s", this->Properties.fragmentShadingRateWithShaderDepthStencilWrites ? "True" : "False" ); - LOGI( " fragmentShadingRateWithSampleMask: %s", this->Properties.fragmentShadingRateWithSampleMask ? "True" : "False" ); - LOGI( " fragmentShadingRateWithShaderSampleMask: %s", this->Properties.fragmentShadingRateWithShaderSampleMask ? "True" : "False" ); - LOGI( " fragmentShadingRateWithConservativeRasterization: %s", this->Properties.fragmentShadingRateWithConservativeRasterization ? "True" : "False" ); - LOGI( " fragmentShadingRateWithFragmentShaderInterlock: %s", this->Properties.fragmentShadingRateWithFragmentShaderInterlock ? "True" : "False" ); - LOGI( " fragmentShadingRateWithCustomSampleLocations: %s", this->Properties.fragmentShadingRateWithCustomSampleLocations ? "True" : "False" ); - LOGI( " fragmentShadingRateStrictMultiplyCombiner: %s", this->Properties.fragmentShadingRateStrictMultiplyCombiner ? "True" : "False" ); - } -#endif // VK_KHR_fragment_shading_rate - -#if VK_KHR_create_renderpass2 - void Ext_VK_KHR_create_renderpass2::LookupFunctionPointers( VkInstance vkInstance ) - { - m_vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCreateRenderPass2KHR" ); - m_vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdBeginRenderPass2KHR" ); - m_vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdNextSubpass2KHR" ); - m_vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdEndRenderPass2KHR" ); - } -#endif // VK_KHR_create_renderpass2 - -#if VK_KHR_draw_indirect_count - void Ext_VK_KHR_draw_indirect_count::LookupFunctionPointers( VkInstance vkInstance ) - { - m_vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndirectCountKHR" ); - m_vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndexedIndirectCountKHR" ); - } -#endif // VK_KHR_draw_indirect_count - -#if VK_EXT_debug_utils - bool Ext_VK_EXT_debug_utils::SetDebugUtilsObjectName( VkDevice vkDevice, uint64_t object, VkObjectType objectType, const char* name ) const - { - if (m_vkSetDebugUtilsObjectNameEXT == nullptr) - return false; - VkDebugUtilsObjectNameInfoEXT nameInfo { VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT }; - nameInfo.objectType = objectType; - nameInfo.objectHandle = object; - nameInfo.pObjectName = name; - return m_vkSetDebugUtilsObjectNameEXT( vkDevice, &nameInfo ) == VK_SUCCESS; - } -#endif // VK_EXT_debug_utils - -#if VK_EXT_debug_marker - bool Ext_VK_EXT_debug_marker::DebugMarkerSetObjectName( VkDevice vkDevice, uint64_t object, VkDebugReportObjectTypeEXT objectType, const char* name ) const - { - if (m_vkDebugMarkerSetObjectNameEXT == nullptr) - return false; - VkDebugMarkerObjectNameInfoEXT markerInfo { VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT }; - markerInfo.objectType = objectType; - markerInfo.object = object; - markerInfo.pObjectName = name; - return m_vkDebugMarkerSetObjectNameEXT( vkDevice, &markerInfo ) == VK_SUCCESS; - } -#endif // VK_EXT_debug_marker - - static std::string GetSubgroupStagesString( VkShaderStageFlags Stages ) - { - std::string StagesString; - static const char* SubgroupStages[] = { "Vertex", "Tessellation Control", "Tessellation Evaluation", "Geometry", "Fragment", "Compute" }; - int i = 0; - for (; i < sizeof( SubgroupStages ) / sizeof( *SubgroupStages ); ++i) - { - if ((Stages & (1 << i)) != 0) - { - StagesString.append( SubgroupStages[i] ); - StagesString.append( ", " ); - } - } - // remainder - if ((Stages & ~((1 << i) - 1)) != 0) - { - StagesString.append( std::to_string( Stages & ~((1 << i) - 1) ) ); - } - return StagesString; - } - - -#if VK_EXT_subgroup_size_control - void Ext_VK_EXT_subgroup_size_control::PrintFeatures() const - { - LOGI( "VK_EXT_subgroup_size_control (VkPhysicalDeviceSubgroupSizeControlFeaturesEXT): " ); - LOGI( " subgroupSizeControl: %s", this->AvailableFeatures.subgroupSizeControl ? "True" : "False" ); - LOGI( " computeFullSubgroups: %s", this->AvailableFeatures.computeFullSubgroups ? "True" : "False" ); - } - - void Ext_VK_EXT_subgroup_size_control::PrintProperties() const - { - LOGI( "VK_EXT_subgroup_size_control (VkPhysicalDeviceSubgroupSizeControlPropertiesEXT): " ); - LOGI( " minSubgroupSize: %u", this->Properties.minSubgroupSize ); - LOGI( " maxSubgroupSize: %u", this->Properties.maxSubgroupSize ); - LOGI( " maxComputeWorkgroupSubgroups: %u", this->Properties.maxComputeWorkgroupSubgroups ); - auto SupportedStages = GetSubgroupStagesString( this->Properties.requiredSubgroupSizeStages ); - LOGI( " requiredSubgroupSizeStages: %s", SupportedStages.c_str() ); - } -#endif // VK_EXT_subgroup_size_control - -#if VK_EXT_host_query_reset - void Ext_VK_EXT_host_query_reset::PrintFeatures() const - { - LOGI( "VK_EXT_host_query_reset (VkPhysicalDeviceHostQueryResetFeaturesEXT): " ); - LOGI( " hostQueryReset: %s", this->AvailableFeatures.hostQueryReset ? "True" : "False" ); - } -#endif // VK_EXT_host_query_reset - -#if VK_ARM_tensors - void Ext_VK_ARM_tensors::PrintFeatures() const - { - LOGI("VK_ARM_tensors (VkPhysicalDeviceTensorFeaturesARM):"); - LOGI(" tensorNonPacked: %s", this->AvailableFeatures.tensorNonPacked ? "True" : "False"); - LOGI(" shaderTensorAccess: %s", this->AvailableFeatures.shaderTensorAccess ? "True" : "False"); - LOGI(" shaderStorageTensorArrayDynamicIndexing: %s", this->AvailableFeatures.shaderStorageTensorArrayDynamicIndexing ? "True" : "False"); - LOGI(" shaderStorageTensorArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageTensorArrayNonUniformIndexing ? "True" : "False"); - LOGI(" descriptorBindingStorageTensorUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageTensorUpdateAfterBind ? "True" : "False"); - LOGI(" tensors: %s", this->AvailableFeatures.tensors ? "True" : "False"); - } - - void Ext_VK_ARM_tensors::PrintProperties() const - { - LOGI("VK_ARM_tensors (VkPhysicalDeviceTensorPropertiesARM):"); - LOGI(" maxTensorDimensionCount: %u", this->Properties.maxTensorDimensionCount); - LOGI(" maxTensorElements: %" PRIu64, this->Properties.maxTensorElements); - LOGI(" maxPerDimensionTensorElements: %" PRIu64, this->Properties.maxPerDimensionTensorElements); - LOGI(" maxTensorStride: %" PRId64, this->Properties.maxTensorStride); - LOGI(" maxTensorSize: %" PRIu64, this->Properties.maxTensorSize); - LOGI(" maxTensorShaderAccessArrayLength: %u", this->Properties.maxTensorShaderAccessArrayLength); - LOGI(" maxTensorShaderAccessSize: %u", this->Properties.maxTensorShaderAccessSize); - LOGI(" maxDescriptorSetStorageTensors: %u", this->Properties.maxDescriptorSetStorageTensors); - LOGI(" maxPerStageDescriptorSetStorageTensors: %u", this->Properties.maxPerStageDescriptorSetStorageTensors); - LOGI(" maxDescriptorSetUpdateAfterBindStorageTensors: %u", this->Properties.maxDescriptorSetUpdateAfterBindStorageTensors); - LOGI(" maxPerStageDescriptorUpdateAfterBindStorageTensors: %u", this->Properties.maxPerStageDescriptorUpdateAfterBindStorageTensors); - LOGI(" shaderStorageTensorArrayNonUniformIndexingNative: %s", this->Properties.shaderStorageTensorArrayNonUniformIndexingNative ? "True" : "False"); - LOGI(" shaderTensorSupportedStages: 0x%08X", this->Properties.shaderTensorSupportedStages); - } -#endif // VK_ARM_tensors - -#if VK_ARM_data_graph - void Ext_VK_ARM_data_graph::PrintFeatures() const - { - LOGI("VK_ARM_data_graph (VkPhysicalDeviceDataGraphFeaturesARM):"); - LOGI(" dataGraph: %s", this->AvailableFeatures.dataGraph ? "True" : "False"); - LOGI(" dataGraphUpdateAfterBind: %s", this->AvailableFeatures.dataGraphUpdateAfterBind ? "True" : "False"); - LOGI(" dataGraphSpecializationConstants: %s", this->AvailableFeatures.dataGraphSpecializationConstants ? "True" : "False"); - LOGI(" dataGraphDescriptorBuffer: %s", this->AvailableFeatures.dataGraphDescriptorBuffer ? "True" : "False"); - LOGI(" dataGraphShaderModule: %s", this->AvailableFeatures.dataGraphShaderModule ? "True" : "False"); - } -#endif // VK_ARM_data_graph -#if VK_KHR_timeline_semaphore - void Ext_VK_KHR_timeline_semaphore::PrintFeatures() const - { - LOGI("VK_KHR_timeline_semaphore (VkPhysicalDeviceTimelineSemaphoreFeaturesKHR): "); - LOGI(" timelineSemaphore: %s", this->AvailableFeatures.timelineSemaphore ? "True" : "False"); - } - void Ext_VK_KHR_timeline_semaphore::PrintProperties() const - { - LOGI("VK_KHR_timeline_semaphore (VkPhysicalDeviceTimelineSemaphorePropertiesKHR): "); - LOGI(" maxTimelineSemaphoreValueDifference: %" PRIu64, this->Properties.maxTimelineSemaphoreValueDifference); - } -#endif // VK_KHR_timeline_semaphore - -#if VK_KHR_synchronization2 - void Ext_VK_KHR_synchronization2::PrintFeatures() const - { - LOGI("Ext_VK_KHR_synchronization2 (VkPhysicalDeviceSynchronization2FeaturesKHR): "); - LOGI(" synchronization2: %s", this->AvailableFeatures.synchronization2 ? "True" : "False"); - } - void Ext_VK_KHR_synchronization2::LookupFunctionPointers(VkInstance vkInstance) - { - m_vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)vkGetInstanceProcAddr(vkInstance, "vkQueueSubmit2KHR"); - m_vkCmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdSetEvent2KHR"); - m_vkCmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdResetEvent2KHR"); - m_vkCmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdWaitEvents2KHR"); - m_vkCmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdPipelineBarrier2KHR"); - m_vkCmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)vkGetInstanceProcAddr(vkInstance, "vkCmdWriteTimestamp2KHR"); - } -#endif // VK_KHR_synchronization2 - -#if VK_KHR_get_physical_device_properties2 - - void Ext_VK_KHR_get_physical_device_properties2::LookupFunctionPointers(VkInstance vkInstance) - { - m_vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceFeatures2KHR"); - m_vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceFormatProperties2KHR" ); - m_vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ); - m_vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceMemoryProperties2KHR" ); - m_vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceProperties2KHR" ); - } - -#endif // VK_KHR_get_physical_device_properties2 - -#if VK_KHR_surface - - void Ext_VK_KHR_surface::LookupFunctionPointers( VkInstance vkInstance ) - { - m_vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)vkGetInstanceProcAddr( vkInstance, "vkDestroySurfaceKHR" ); - m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ); - m_vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ); - m_vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ); - m_vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceSupportKHR" ); - } - -#endif // VK_KHR_surface - -#if VK_KHR_get_surface_capabilities2 - - void Ext_VK_KHR_get_surface_capabilities2::LookupFunctionPointers( VkInstance vkInstance ) - { - m_vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); - m_vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceSurfaceFormats2KHR"); - } - -#endif // VK_KHR_get_surface_capabilities2 - -#if VK_QCOM_tile_properties - - void Ext_VK_QCOM_tile_properties::LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr ) - { - m_vkGetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)deviceProcAddr( vkDevice, "vkGetDynamicRenderingTilePropertiesQCOM" ); - m_vkGetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)deviceProcAddr( vkDevice, "vkGetFramebufferTilePropertiesQCOM" ); - } - - void Ext_VK_QCOM_tile_properties::PrintFeatures() const - { - LOGI( "TileProperties: " ); - } - -#endif // VK_QCOM_tile_properties - - void Vulkan_SubgroupPropertiesHook::PrintProperties() const - { - LOGI( "VkPhysicalDeviceSubgroupProperties: " ); - LOGI( " subgroupSize: %d", Properties.subgroupSize ); - auto SupportedStages = GetSubgroupStagesString( Properties.supportedStages ); - LOGI( " supportedStages: %s", SupportedStages.c_str() ); - - std::string SupportedOperations; - static const char* SubgroupOperations[] = { "Basic", "Vote", "Arithmetic", "Ballot", "Shuffle", "Shuffle Relative", "Clustered", "Quad" }; - for (int i = 0; i < sizeof( SubgroupOperations ) / sizeof( *SubgroupOperations ); ++i) - { - if ((Properties.supportedOperations & (1 << i)) != 0) - { - SupportedOperations.append( SubgroupOperations[i] ); - SupportedOperations.append( ", " ); - } - } - LOGI( " supportedOperations: %s", SupportedOperations.c_str() ); - - LOGI( " quadOperationsInAllStages: %s", Properties.quadOperationsInAllStages ? "True" : "False" ); - } - - - void Vulkan_StorageFeaturesHook::PrintFeatures() const - { - LOGI( "FeaturesStorage16Bit: " ); - LOGI( " storageBuffer16BitAccess: %s", this->AvailableFeatures.storageBuffer16BitAccess ? "True" : "False" ); - LOGI( " uniformAndStorageBuffer16BitAccess: %s", this->AvailableFeatures.uniformAndStorageBuffer16BitAccess ? "True" : "False" ); - LOGI( " storagePushConstant16: %s", this->AvailableFeatures.storagePushConstant16 ? "True" : "False" ); - LOGI( " storageInputOutput16: %s", this->AvailableFeatures.storageInputOutput16 ? "True" : "False" ); - } - - -}; //namespace diff --git a/framework/code/vulkan/extensionHelpers.hpp b/framework/code/vulkan/extensionHelpers.hpp index c424e33..697928c 100644 --- a/framework/code/vulkan/extensionHelpers.hpp +++ b/framework/code/vulkan/extensionHelpers.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -30,6 +30,7 @@ struct VulkanDeviceFunctionPointerLookup const PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr; }; + template class DeviceCreateInfoHook final : public ExtensionHook { @@ -37,13 +38,19 @@ class DeviceCreateInfoHook final : public ExtensionHook explicit DeviceCreateInfoHook( T* _Parent ) : ExtensionHook(), Parent( _Parent ) {} VkStructureType StructureType() const override { return T_FEATURESSTRUCTURE_TYPE; }; VkBaseOutStructure* Obtain( tBase* ) override { - Parent->PopulateRequestedFeatures(); - Parent->RequestedFeatures.pNext = nullptr; - return (VkBaseOutStructure*) &Parent->RequestedFeatures; + if (Parent->Status == VulkanExtensionStatus::eLoaded) + { + Parent->PopulateRequestedFeatures(); + Parent->RequestedFeatures.pNext = nullptr; + return (VkBaseOutStructure*)&Parent->RequestedFeatures; + } + else + return nullptr; }; T* Parent; }; + template class GetPhysicalDeviceFeaturesHook final : public ExtensionHook { @@ -54,6 +61,7 @@ class GetPhysicalDeviceFeaturesHook final : public ExtensionHook class VulkanDeviceFeaturePrintHook final : public ExtensionHook { @@ -64,6 +72,7 @@ class VulkanDeviceFeaturePrintHook final : public ExtensionHook class GetPhysicalDevicePropertiesHook final : public ExtensionHook { @@ -74,6 +83,7 @@ class GetPhysicalDevicePropertiesHook final : public ExtensionHook class VulkanDevicePropertiesPrintHook final : public ExtensionHook { @@ -84,6 +94,7 @@ class VulkanDevicePropertiesPrintHook final : public ExtensionHook m_VulkanDeviceFeaturePrintHook; }; + +/// @brief Helper template for extensions that are initialized through the vkCreateDevice and queried through vkGetPhysicalDeviceProperties2 +/// Default behaviour assumes that the application will do a query before the vkCreateDevice and the properties populated in that call are then required/desired by the vkCreateDevice. +/// Overriding 'PopulateRequestedProperties' allows for changes to this behaviour (called when the properties 'chain' for vkCreateDevice is being constructed). +template +class VulkanDevicePropertiesExtensionHelper : public VulkanExtension +{ +public: + using tBase = VulkanExtension; + VulkanDevicePropertiesExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : tBase( extensionName, status ), m_GetPhysicalDevicePropertiesHook( this ), m_VulkanDevicePropertiesPrintHook( this ) + {} + + void Register( Vulkan& vulkan ) override + { + vulkan.AddExtensionHooks( &m_GetPhysicalDevicePropertiesHook, &m_VulkanDevicePropertiesPrintHook ); + } + virtual void PrintProperties() const = 0; + + T_PROPERTIESSTRUCTURE Properties {T_PROPERTIESSTRUSTURE_TYPE}; +private: + GetPhysicalDevicePropertiesHook m_GetPhysicalDevicePropertiesHook; + VulkanDevicePropertiesPrintHook m_VulkanDevicePropertiesPrintHook; +}; + + /// @brief Helper template for extensions that are initialized through the vkCreateDevice and queried through vkGetPhysicalDeviceFeatures2 /// AND have properties queried through VkPhysicalDeviceProperties2. /// Default behaviour assumes that the application will do a query before the vkCreateDevice and the features populated in that call are then required/desired by the vkCreateDevice. @@ -157,6 +193,7 @@ class InstanceFunctionPointerHook final : public ExtensionHook class DeviceFunctionPointerHook final : public ExtensionHook { @@ -222,6 +259,36 @@ class VulkanFeaturesAndFunctionPointerExtensionHelper : public VulkanDeviceFeatu }; +/// @brief Helper template for device extensions that have properties queried through +/// VkPhysicalDeviceProperties2 AND want function pointer lookup. +/// These extensions do not pass a structure in to VkCreateDevice. +template +class VulkanPropertiesAndFunctionPointerExtensionHelper : public VulkanDevicePropertiesExtensionHelper +{ + using tBase = VulkanDevicePropertiesExtensionHelper; +public: + explicit VulkanPropertiesAndFunctionPointerExtensionHelper( std::string extensionName, VulkanExtensionStatus status ) : tBase( extensionName, status ), m_InstanceFunctionPointerHook( this ), m_DeviceFunctionPointerHook( this ) + {} + + void Register( Vulkan& vulkan ) override + { + tBase::Register( vulkan ); + vulkan.AddExtensionHooks( &m_InstanceFunctionPointerHook ); + vulkan.AddExtensionHooks( &m_DeviceFunctionPointerHook ); + } + +protected: + friend class InstanceFunctionPointerHook< VulkanPropertiesAndFunctionPointerExtensionHelper>; + friend class DeviceFunctionPointerHook< VulkanPropertiesAndFunctionPointerExtensionHelper>; + virtual void LookupFunctionPointers( VkInstance ) = 0; + virtual void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) = 0; + +private: + InstanceFunctionPointerHook m_InstanceFunctionPointerHook; + DeviceFunctionPointerHook m_DeviceFunctionPointerHook; +}; + + /// @brief Helper template for extensions that are initialized through the vkCreateDevice and queried through vkGetPhysicalDeviceFeatures2 /// AND have properties queried through VkPhysicalDeviceProperties2. /// AND want function pointer lookup @@ -250,652 +317,3 @@ class VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper : public VulkanD InstanceFunctionPointerHook m_InstanceFunctionPointerHook; DeviceFunctionPointerHook m_DeviceFunctionPointerHook; }; - - -/// -/// Library of Vulkan extension helpers -/// - -namespace ExtensionHelper -{ - -#if VK_EXT_mesh_shader - - struct Ext_VK_KHR_mesh_shader : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceMeshShaderFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT, - VkPhysicalDeviceMeshShaderPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT> - { - static constexpr auto Name = VK_EXT_MESH_SHADER_EXTENSION_NAME; - explicit Ext_VK_KHR_mesh_shader(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper(Name, status) - {} - - void PopulateRequestedFeatures() override - { - RequestedFeatures = AvailableFeatures; - RequestedFeatures.multiviewMeshShader = VK_FALSE; //if we need multiview then device needs setting up for multiview also - RequestedFeatures.primitiveFragmentShadingRateMeshShader = VK_FALSE;//if we need fragment shading rate then device needs setting up for it (and we need to revisit this flag!) - } - void LookupFunctionPointers(VkInstance) override {} - void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override; - void PrintFeatures() const override; - void PrintProperties() const override; - PFN_vkCmdDrawMeshTasksEXT m_vkCmdDrawMeshTasksEXT = nullptr; - PFN_vkCmdDrawMeshTasksIndirectEXT m_vkCmdDrawMeshTasksIndirectEXT = nullptr; - PFN_vkCmdDrawMeshTasksIndirectCountEXT m_vkCmdDrawMeshTasksIndirectCountEXT = nullptr; - }; - -#endif // VK_EXT_mesh_shader - -#if VK_KHR_shader_float16_int8 - - struct Ext_VK_KHR_shader_float16_int8 : public VulkanDeviceFeaturesExtensionHelper - { - static constexpr auto Name = VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME; - explicit Ext_VK_KHR_shader_float16_int8( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper(Name, status) - {} - void PrintFeatures() const override; - }; - -#endif // VK_KHR_shader_float16_int8 - -#if VK_EXT_shader_image_atomic_int64 - - struct Ext_VK_EXT_shader_image_atomic_int64 : public VulkanDeviceFeaturesExtensionHelper - { - static constexpr auto Name = VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME; - explicit Ext_VK_EXT_shader_image_atomic_int64( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper( Name, status ) - {} - void PrintFeatures() const override; - }; - -#endif // VK_EXT_shader_image_atomic_int64 - -#if VK_EXT_index_type_uint8 - - struct Ext_VK_EXT_index_type_uint8 : public VulkanDeviceFeaturesExtensionHelper - { - static constexpr auto Name = VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME; - explicit Ext_VK_EXT_index_type_uint8( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper(Name, status) - {} - void PrintFeatures() const override; - }; - -#endif // VK_EXT_index_type_uint8 - -#if VK_KHR_shader_subgroup_extended_types - - struct Ext_VK_KHR_shader_subgroup_extended_types : public VulkanDeviceFeaturesExtensionHelper - { - static constexpr auto Name = VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME; - explicit Ext_VK_KHR_shader_subgroup_extended_types( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper(Name, status) - {} - void PrintFeatures() const override; - }; - -#endif // VK_KHR_shader_subgroup_extended_types - -#if VK_EXT_descriptor_indexing - - struct Ext_VK_EXT_descriptor_indexing : public VulkanDeviceFeaturePropertiesExtensionHelper< - VkPhysicalDeviceDescriptorIndexingFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, - VkPhysicalDeviceDescriptorIndexingPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT> - { - static constexpr auto Name = VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME; - explicit Ext_VK_EXT_descriptor_indexing( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) - {} - void PrintFeatures() const override; - void PrintProperties() const override; - }; - -#endif // VK_EXT_descriptor_indexing - -#if VK_KHR_8bit_storage - - struct Ext_VK_KHR_8bit_storage : public VulkanDeviceFeaturesExtensionHelper< - VkPhysicalDevice8BitStorageFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR> - { - static constexpr auto Name = VK_KHR_8BIT_STORAGE_EXTENSION_NAME; - explicit Ext_VK_KHR_8bit_storage( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) - {} - void PrintFeatures() const override; - }; - -#endif // VK_KHR_8bit_storage - -#if VK_KHR_portability_subset - - struct Ext_VK_KHR_portability_subset : public VulkanDeviceFeaturePropertiesExtensionHelper< - VkPhysicalDevicePortabilitySubsetFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, - VkPhysicalDevicePortabilitySubsetPropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR> - { - static constexpr auto Name = VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME; - explicit Ext_VK_KHR_portability_subset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) - {} - void PrintFeatures() const override; - void PrintProperties() const override; - }; - -#else - - // 'dummy' implementation of Ext_VK_KHR_portability_subset for when vulkan headers do not contain 'VK_KHR_portability_subset' - struct Ext_VK_KHR_portability_subset : public VulkanExtension - { - static constexpr auto Name = "VK_KHR_portability_subset"; - Ext_VK_KHR_portability_subset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanExtension( Name, status ) {} - }; - -#endif // VK_KHR_portability_subset - -#if VK_KHR_fragment_shading_rate - - struct Ext_VK_KHR_fragment_shading_rate : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, - VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR> - { - static constexpr auto Name = VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME; - explicit Ext_VK_KHR_fragment_shading_rate( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( Name, status ) - {} - - void PopulateRequestedFeatures() override - { - RequestedFeatures.sType = AvailableFeatures.sType; - RequestedFeatures.attachmentFragmentShadingRate = AvailableFeatures.attachmentFragmentShadingRate; - } - void LookupFunctionPointers( VkInstance vkInstance ) override - { - m_vkCmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdSetFragmentShadingRateKHR" ); - } - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {} - void PrintFeatures() const override; - void PrintProperties() const override; - PFN_vkCmdSetFragmentShadingRateKHR m_vkCmdSetFragmentShadingRateKHR = nullptr; - }; - -#endif // VK_KHR_fragment_shading_rate - -#if VK_KHR_create_renderpass2 - - struct Ext_VK_KHR_create_renderpass2 : public VulkanFunctionPointerExtensionHelper - { - static constexpr auto Name = VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME; - explicit Ext_VK_KHR_create_renderpass2( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} - void LookupFunctionPointers(VkInstance vkInstance) override; - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } - PFN_vkCreateRenderPass2KHR m_vkCreateRenderPass2KHR = nullptr; - PFN_vkCmdBeginRenderPass2KHR m_vkCmdBeginRenderPass2KHR = nullptr; - PFN_vkCmdNextSubpass2KHR m_vkCmdNextSubpass2KHR = nullptr; - PFN_vkCmdEndRenderPass2KHR m_vkCmdEndRenderPass2KHR = nullptr; - }; - -#endif // VK_KHR_create_renderpass2 - -#if VK_KHR_draw_indirect_count - - struct Ext_VK_KHR_draw_indirect_count : public VulkanFunctionPointerExtensionHelper - { - static constexpr auto Name = VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME; - explicit Ext_VK_KHR_draw_indirect_count( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} - void LookupFunctionPointers(VkInstance vkInstance) override; - void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/} - PFN_vkCmdDrawIndirectCountKHR m_vkCmdDrawIndirectCountKHR = nullptr; - PFN_vkCmdDrawIndexedIndirectCountKHR m_vkCmdDrawIndexedIndirectCountKHR = nullptr; - }; - -#endif // VK_KHR_draw_indirect_count - -#if VK_EXT_hdr_metadata - - struct Ext_VK_EXT_hdr_metadata : public VulkanFunctionPointerExtensionHelper - { - static constexpr auto Name = VK_EXT_HDR_METADATA_EXTENSION_NAME; - explicit Ext_VK_EXT_hdr_metadata(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFunctionPointerExtensionHelper(Name, status) {} - void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/} - void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override - { - m_vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT) fpGetDeviceProcAddr( vkDevice, "vkSetHdrMetadataEXT" ); - } - PFN_vkSetHdrMetadataEXT m_vkSetHdrMetadataEXT = nullptr; - }; - -#endif // VK_EXT_hdr_metadata - -#if VK_EXT_debug_utils - - struct Ext_VK_EXT_debug_utils : public VulkanFunctionPointerExtensionHelper - { - static constexpr auto Name = VK_EXT_DEBUG_UTILS_EXTENSION_NAME; - explicit Ext_VK_EXT_debug_utils( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} - void LookupFunctionPointers( VkInstance vkInstance ) override - { - m_vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr( vkInstance, "vkSetDebugUtilsObjectNameEXT" ); - } - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } - bool SetDebugUtilsObjectName( VkDevice vkDevice, uint64_t object, VkObjectType objectType, const char* name ) const; - - PFN_vkSetDebugUtilsObjectNameEXT m_vkSetDebugUtilsObjectNameEXT = nullptr; - }; - -#endif // VK_EXT_debug_utils - -#if VK_EXT_debug_marker - - struct Ext_VK_EXT_debug_marker : public VulkanFunctionPointerExtensionHelper - { - static constexpr auto Name = VK_EXT_DEBUG_MARKER_EXTENSION_NAME; - explicit Ext_VK_EXT_debug_marker( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} - void LookupFunctionPointers( VkInstance ) override {/*no instance functions*/ } - void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override - { - m_vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT) fpGetDeviceProcAddr( vkDevice, "vkDebugMarkerSetObjectNameEXT" ); - } - bool DebugMarkerSetObjectName( VkDevice vkDevice, uint64_t object, VkDebugReportObjectTypeEXT objectType, const char* name ) const; - - PFN_vkDebugMarkerSetObjectNameEXT m_vkDebugMarkerSetObjectNameEXT = nullptr; - }; - -#endif // Ext_VK_EXT_debug_marker - -#if VK_EXT_subgroup_size_control - - struct Ext_VK_EXT_subgroup_size_control : public VulkanDeviceFeaturePropertiesExtensionHelper< - VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, - VkPhysicalDeviceSubgroupSizeControlPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT > - { - using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; - static constexpr auto Name = VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME; - explicit Ext_VK_EXT_subgroup_size_control( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper( Name, status ), m_ShaderCreateHook(this) - {} - void PrintFeatures() const override; - void PrintProperties() const override; - - VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT SubGroupSizeControl { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT }; - - private: - class ShaderCreateStageHook final : public ExtensionHook - { - friend struct Ext_VK_EXT_subgroup_size_control; - explicit ShaderCreateStageHook( Ext_VK_EXT_subgroup_size_control* _Parent ) : ExtensionHook(), Parent( _Parent ) {} - VkStructureType StructureType() const override { return (VkStructureType) 0; }; - VkBaseOutStructure* Obtain( tBase* pBase ) override { - if ((pBase->stage & Parent->Properties.requiredSubgroupSizeStages)!=0 - && Parent->RequestedFeatures.subgroupSizeControl - && Parent->SubGroupSizeControl.requiredSubgroupSize != 0) - { - Parent->SubGroupSizeControl.pNext = nullptr; - pBase->flags |= VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT; - return (VkBaseOutStructure*) &Parent->SubGroupSizeControl; - } - return nullptr; - } - void Release( VkBaseOutStructure* pBase ) override { - assert( pBase == (VkBaseOutStructure *) &Parent->SubGroupSizeControl ); - } - Ext_VK_EXT_subgroup_size_control* Parent; - } m_ShaderCreateHook; - - void Register( Vulkan& vulkan ) override - { - tBase::Register( vulkan ); - vulkan.AddExtensionHooks( &m_ShaderCreateHook ); - } - }; - -#endif // VK_EXT_subgroup_size_control - -#if VK_EXT_host_query_reset - - struct Ext_VK_EXT_host_query_reset : public VulkanFeaturesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceHostQueryResetFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT > - { - using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; - static constexpr auto Name = VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME; - explicit Ext_VK_EXT_host_query_reset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) - {} - void PrintFeatures() const override; - void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ } - void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override - { - if (RequestedFeatures.hostQueryReset == VK_TRUE) - m_vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT) fpGetDeviceProcAddr( vkDevice, "vkResetQueryPoolEXT" ); - } - PFN_vkResetQueryPoolEXT m_vkResetQueryPoolEXT = nullptr; - }; - -#endif // VK_EXT_host_query_reset - -#if VK_ARM_tensors - - struct Ext_VK_ARM_tensors : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceTensorFeaturesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM, - VkPhysicalDeviceTensorPropertiesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM> - { - static constexpr auto Name = VK_ARM_TENSORS_EXTENSION_NAME; - - explicit Ext_VK_ARM_tensors(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) - : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper(Name, status) - { - } - - void PopulateRequestedFeatures() override - { - RequestedFeatures.sType = AvailableFeatures.sType; - RequestedFeatures.tensorNonPacked = AvailableFeatures.tensorNonPacked; - RequestedFeatures.shaderTensorAccess = AvailableFeatures.shaderTensorAccess; - RequestedFeatures.shaderStorageTensorArrayDynamicIndexing = AvailableFeatures.shaderStorageTensorArrayDynamicIndexing; - RequestedFeatures.shaderStorageTensorArrayNonUniformIndexing = AvailableFeatures.shaderStorageTensorArrayNonUniformIndexing; - RequestedFeatures.descriptorBindingStorageTensorUpdateAfterBind = AvailableFeatures.descriptorBindingStorageTensorUpdateAfterBind; - RequestedFeatures.tensors = AvailableFeatures.tensors; - - // Forcing a few features while the extension is private: - RequestedFeatures.shaderTensorAccess = true; - RequestedFeatures.tensors = true; - } - - void LookupFunctionPointers(VkInstance) override {} - - void LookupFunctionPointers(VkDevice device, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr) override - { - m_vkCreateTensorARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkCreateTensorARM")); - m_vkDestroyTensorARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkDestroyTensorARM")); - m_vkCreateTensorViewARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkCreateTensorViewARM")); - m_vkDestroyTensorViewARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkDestroyTensorViewARM")); - m_vkGetTensorMemoryRequirementsARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetTensorMemoryRequirementsARM")); - m_vkBindTensorMemoryARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkBindTensorMemoryARM")); - m_vkGetDeviceTensorMemoryRequirementsARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetDeviceTensorMemoryRequirementsARM")); - m_vkCmdCopyTensorARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkCmdCopyTensorARM")); - m_vkGetTensorOpaqueCaptureDescriptorDataARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetTensorOpaqueCaptureDescriptorDataARM")); - m_vkGetTensorViewOpaqueCaptureDescriptorDataARM = reinterpret_cast(fpGetDeviceProcAddr(device, "vkGetTensorViewOpaqueCaptureDescriptorDataARM")); - } - - void PrintFeatures() const override; - void PrintProperties() const override; - - PFN_vkCreateTensorARM m_vkCreateTensorARM = nullptr; - PFN_vkDestroyTensorARM m_vkDestroyTensorARM = nullptr; - PFN_vkCreateTensorViewARM m_vkCreateTensorViewARM = nullptr; - PFN_vkDestroyTensorViewARM m_vkDestroyTensorViewARM = nullptr; - PFN_vkGetTensorMemoryRequirementsARM m_vkGetTensorMemoryRequirementsARM = nullptr; - PFN_vkBindTensorMemoryARM m_vkBindTensorMemoryARM = nullptr; - PFN_vkGetDeviceTensorMemoryRequirementsARM m_vkGetDeviceTensorMemoryRequirementsARM = nullptr; - PFN_vkCmdCopyTensorARM m_vkCmdCopyTensorARM = nullptr; - PFN_vkGetTensorOpaqueCaptureDescriptorDataARM m_vkGetTensorOpaqueCaptureDescriptorDataARM = nullptr; - PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM m_vkGetTensorViewOpaqueCaptureDescriptorDataARM = nullptr; - }; - -#endif // VK_ARM_tensors - -#if VK_ARM_data_graph - - struct Ext_VK_ARM_data_graph : public VulkanFeaturesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceDataGraphFeaturesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM> - { - using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; - static constexpr auto Name = VK_ARM_DATA_GRAPH_EXTENSION_NAME; - - explicit Ext_VK_ARM_data_graph(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) - : tBase(Name, status) - { - } - - void PopulateRequestedFeatures() override - { - RequestedFeatures.sType = AvailableFeatures.sType; - RequestedFeatures.dataGraph = AvailableFeatures.dataGraph; - RequestedFeatures.dataGraphUpdateAfterBind = AvailableFeatures.dataGraphUpdateAfterBind; - RequestedFeatures.dataGraphSpecializationConstants = AvailableFeatures.dataGraphSpecializationConstants; - RequestedFeatures.dataGraphDescriptorBuffer = AvailableFeatures.dataGraphDescriptorBuffer; - RequestedFeatures.dataGraphShaderModule = AvailableFeatures.dataGraphShaderModule; - - // Forcing a few features while the extension is private: - RequestedFeatures.dataGraph = true; - } - - void PrintFeatures() const override; - void LookupFunctionPointers(VkInstance vkInstance) override - { - m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = reinterpret_cast( - vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM")); - m_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = reinterpret_cast( - vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM")); - } - - void LookupFunctionPointers(VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr) override - { - m_vkCreateDataGraphPipelinesARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkCreateDataGraphPipelinesARM")); - m_vkCreateDataGraphPipelineSessionARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkCreateDataGraphPipelineSessionARM")); - m_vkGetDataGraphPipelineSessionBindPointRequirementsARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelineSessionBindPointRequirementsARM")); - m_vkGetDataGraphPipelineSessionMemoryRequirementsARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelineSessionMemoryRequirementsARM")); - m_vkBindDataGraphPipelineSessionMemoryARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkBindDataGraphPipelineSessionMemoryARM")); - m_vkDestroyDataGraphPipelineSessionARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkDestroyDataGraphPipelineSessionARM")); - m_vkCmdDispatchDataGraphARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkCmdDispatchDataGraphARM")); - m_vkGetDataGraphPipelineAvailablePropertiesARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelineAvailablePropertiesARM")); - m_vkGetDataGraphPipelinePropertiesARM = reinterpret_cast( - fpGetDeviceProcAddr(vkDevice, "vkGetDataGraphPipelinePropertiesARM")); - } - - // Function pointers - PFN_vkCreateDataGraphPipelinesARM m_vkCreateDataGraphPipelinesARM = nullptr; - PFN_vkCreateDataGraphPipelineSessionARM m_vkCreateDataGraphPipelineSessionARM = nullptr; - PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM m_vkGetDataGraphPipelineSessionBindPointRequirementsARM = nullptr; - PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM m_vkGetDataGraphPipelineSessionMemoryRequirementsARM = nullptr; - PFN_vkBindDataGraphPipelineSessionMemoryARM m_vkBindDataGraphPipelineSessionMemoryARM = nullptr; - PFN_vkDestroyDataGraphPipelineSessionARM m_vkDestroyDataGraphPipelineSessionARM = nullptr; - PFN_vkCmdDispatchDataGraphARM m_vkCmdDispatchDataGraphARM = nullptr; - PFN_vkGetDataGraphPipelineAvailablePropertiesARM m_vkGetDataGraphPipelineAvailablePropertiesARM = nullptr; - PFN_vkGetDataGraphPipelinePropertiesARM m_vkGetDataGraphPipelinePropertiesARM = nullptr; - PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = nullptr; - PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM m_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = nullptr; - }; - -#endif // VK_ARM_data_graph -#if VK_KHR_timeline_semaphore - - struct Ext_VK_KHR_timeline_semaphore : public VulkanDeviceFeaturePropertiesExtensionHelper< - VkPhysicalDeviceTimelineSemaphoreFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, - VkPhysicalDeviceTimelineSemaphorePropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR > - { - using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; - static constexpr auto Name = VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME; - explicit Ext_VK_KHR_timeline_semaphore( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) - {} - void PrintFeatures() const override; - void PrintProperties() const override; - }; - -#endif // VK_KHR_timeline_semaphore - -#if VK_KHR_synchronization2 - - struct Ext_VK_KHR_synchronization2 : public VulkanFeaturesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceSynchronization2FeaturesKHR, (VkStructureType) VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR > - { - using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; - static constexpr auto Name = VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME; - explicit Ext_VK_KHR_synchronization2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : tBase(Name, status) - {} - void PrintFeatures() const override; - void LookupFunctionPointers(VkInstance vkInstance) override; - void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override {/*no device functions*/ } - - PFN_vkCmdSetEvent2KHR m_vkCmdSetEvent2KHR = nullptr; - PFN_vkCmdResetEvent2KHR m_vkCmdResetEvent2KHR = nullptr; - PFN_vkCmdWaitEvents2KHR m_vkCmdWaitEvents2KHR = nullptr; - PFN_vkCmdPipelineBarrier2KHR m_vkCmdPipelineBarrier2KHR = nullptr; - PFN_vkQueueSubmit2KHR m_vkQueueSubmit2KHR = nullptr; - PFN_vkCmdWriteTimestamp2KHR m_vkCmdWriteTimestamp2KHR = nullptr; - }; - -#endif // VK_KHR_synchronization2 - -#if VK_QCOM_tile_properties - - struct Ext_VK_QCOM_tile_properties : public VulkanFeaturesAndFunctionPointerExtensionHelper< - VkPhysicalDeviceTilePropertiesFeaturesQCOM, (VkStructureType)VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM> - { - using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; - static constexpr auto Name = VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME; - explicit Ext_VK_QCOM_tile_properties( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) - {} - void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ }; - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override; - void PrintFeatures() const override; - PFN_vkGetDynamicRenderingTilePropertiesQCOM m_vkGetDynamicRenderingTilePropertiesQCOM = nullptr; - PFN_vkGetFramebufferTilePropertiesQCOM m_vkGetFramebufferTilePropertiesQCOM = nullptr; - }; - -#endif // VK_QCOM_tile_properties - -#if VK_KHR_ray_tracing_position_fetch - - struct Ext_VK_KHR_ray_tracing_position_fetch : public VulkanDeviceFeaturesExtensionHelper< - VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR> - { - static constexpr auto Name = VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME; - explicit Ext_VK_KHR_ray_tracing_position_fetch( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper( Name, status ) - {} - void PrintFeatures() const override; - }; - -#endif // VK_KHR_ray_tracing_position_fetch - -#if VK_EXT_scalar_block_layout - - struct Ext_VK_EXT_scalar_block_layout : public VulkanDeviceFeaturesExtensionHelper< - VkPhysicalDeviceScalarBlockLayoutFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT> - { - static constexpr auto Name = VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME; - explicit Ext_VK_EXT_scalar_block_layout( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper( Name, status ) - {} - void PrintFeatures() const override; - }; - -#endif // VK_EXT_scalar_block_layout - -#if VK_KHR_get_physical_device_properties2 - - // Instance extension - struct Ext_VK_KHR_get_physical_device_properties2 : public VulkanFunctionPointerExtensionHelper - { - using tBase = VulkanFunctionPointerExtensionHelper; - static constexpr auto Name = VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME; - explicit Ext_VK_KHR_get_physical_device_properties2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : tBase(Name, status) - {} - void LookupFunctionPointers(VkInstance vkInstance) override; - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } - PFN_vkGetPhysicalDeviceFeatures2KHR m_vkGetPhysicalDeviceFeatures2KHR = nullptr; - PFN_vkGetPhysicalDeviceFormatProperties2KHR m_vkGetPhysicalDeviceFormatProperties2KHR = nullptr; - PFN_vkGetPhysicalDeviceImageFormatProperties2KHR m_vkGetPhysicalDeviceImageFormatProperties2KHR = nullptr; - PFN_vkGetPhysicalDeviceMemoryProperties2KHR m_vkGetPhysicalDeviceMemoryProperties2KHR = nullptr; - PFN_vkGetPhysicalDeviceProperties2KHR m_vkGetPhysicalDeviceProperties2KHR = nullptr; - }; - -#endif // VK_KHR_get_physical_device_properties2 - -#if VK_KHR_surface - - // Instance extension - struct Ext_VK_KHR_surface : public VulkanFunctionPointerExtensionHelper - { - using tBase = VulkanFunctionPointerExtensionHelper; - static constexpr auto Name = VK_KHR_SURFACE_EXTENSION_NAME; - explicit Ext_VK_KHR_surface( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) - {} - void LookupFunctionPointers( VkInstance vkInstance ) override; - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } - PFN_vkDestroySurfaceKHR m_vkDestroySurfaceKHR = nullptr; - PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = nullptr; - PFN_vkGetPhysicalDeviceSurfaceFormatsKHR m_vkGetPhysicalDeviceSurfaceFormatsKHR = nullptr; - PFN_vkGetPhysicalDeviceSurfacePresentModesKHR m_vkGetPhysicalDeviceSurfacePresentModesKHR = nullptr; - PFN_vkGetPhysicalDeviceSurfaceSupportKHR m_vkGetPhysicalDeviceSurfaceSupportKHR = nullptr; - }; - -#endif // VK_KHR_surface - -#if VK_KHR_get_surface_capabilities2 - - // Instance extension - struct Ext_VK_KHR_get_surface_capabilities2 : public VulkanFunctionPointerExtensionHelper - { - using tBase = VulkanFunctionPointerExtensionHelper; - static constexpr auto Name = VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME; - explicit Ext_VK_KHR_get_surface_capabilities2( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) - {} - void LookupFunctionPointers( VkInstance vkInstance ) override; - void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } - PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR m_vkGetPhysicalDeviceSurfaceCapabilities2KHR = nullptr; - PFN_vkGetPhysicalDeviceSurfaceFormats2KHR m_vkGetPhysicalDeviceSurfaceFormats2KHR = nullptr; - }; - -#endif // VK_KHR_get_surface_capabilities2 - - // - // Vulkan 1.1 (VK_VERSION_1_1) provided features/properties. - // Same interface as other extensions but do not need to be added to the list of extension names on vkCreateDevice. - // - - struct Vulkan_SubgroupPropertiesHook : public VulkanExtension - { - static constexpr auto Name = "SubgroupProperties"; - using tBase = VulkanExtension; - Vulkan_SubgroupPropertiesHook& operator=( const Vulkan_SubgroupPropertiesHook& ) = delete; - Vulkan_SubgroupPropertiesHook( const Vulkan_SubgroupPropertiesHook& ) = delete; - explicit Vulkan_SubgroupPropertiesHook( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ), m_GetPhysicalDevicePropertiesHook( this ), m_VulkanDevicePropertiesPrintHook( this ) - {} - VkPhysicalDeviceSubgroupProperties Properties { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES }; - - private: - void Register( Vulkan& vulkan ) override - { - vulkan.AddExtensionHooks( &m_GetPhysicalDevicePropertiesHook, &m_VulkanDevicePropertiesPrintHook ); - } - - friend class GetPhysicalDevicePropertiesHook; - friend class VulkanDevicePropertiesPrintHook; - GetPhysicalDevicePropertiesHook m_GetPhysicalDevicePropertiesHook; - VulkanDevicePropertiesPrintHook m_VulkanDevicePropertiesPrintHook; - - void PrintProperties() const; - }; - - struct Vulkan_StorageFeaturesHook : public VulkanExtension - { - static constexpr auto Name = "StorageFeatures"; - using tBase = VulkanExtension; - Vulkan_StorageFeaturesHook& operator=( const Vulkan_StorageFeaturesHook& ) = delete; - Vulkan_StorageFeaturesHook( const Vulkan_StorageFeaturesHook& ) = delete; - explicit Vulkan_StorageFeaturesHook( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( std::string(), status ), m_DeviceCreateInfoHook(this), m_GetPhysicalDeviceFeaturesHook(this), m_VulkanDeviceFeaturePrintHook(this) - {} - VkPhysicalDevice16BitStorageFeatures AvailableFeatures { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR }; - - private: - friend class DeviceCreateInfoHook< Vulkan_StorageFeaturesHook, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR>; - friend class GetPhysicalDeviceFeaturesHook< Vulkan_StorageFeaturesHook, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR>; - friend class VulkanDeviceFeaturePrintHook< Vulkan_StorageFeaturesHook, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR>; - DeviceCreateInfoHook m_DeviceCreateInfoHook; - GetPhysicalDeviceFeaturesHook m_GetPhysicalDeviceFeaturesHook; - VulkanDeviceFeaturePrintHook m_VulkanDeviceFeaturePrintHook; - - void Register( Vulkan& vulkan ) override - { - vulkan.AddExtensionHooks( &m_DeviceCreateInfoHook, &m_GetPhysicalDeviceFeaturesHook, &m_VulkanDeviceFeaturePrintHook ); - } - virtual void PrintFeatures() const; - virtual void PopulateRequestedFeatures() { RequestedFeatures = AvailableFeatures; } - VkPhysicalDevice16BitStorageFeatures RequestedFeatures { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR }; - }; - -}; // namespace diff --git a/framework/code/vulkan/extensionLib.cpp b/framework/code/vulkan/extensionLib.cpp new file mode 100644 index 0000000..eeb93aa --- /dev/null +++ b/framework/code/vulkan/extensionLib.cpp @@ -0,0 +1,609 @@ +//============================================================================================================ +// +// +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#include "vulkan.hpp" +#include "extensionLib.hpp" +#include + +namespace ExtensionLib +{ + +#if VK_EXT_mesh_shader + void Ext_VK_KHR_mesh_shader::LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr ) + { + m_vkCmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)deviceProcAddr( vkDevice, "vkCmdDrawMeshTasksEXT" ); + m_vkCmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)deviceProcAddr( vkDevice, "vkCmdDrawMeshTasksIndirectEXT" ); + m_vkCmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)deviceProcAddr( vkDevice, "vkCmdDrawMeshTasksIndirectCountEXT" ); + } + void Ext_VK_KHR_mesh_shader::PrintFeatures() const + { + LOGI( "FeaturesMeshShader: " ); + LOGI( " taskShader: %s", this->AvailableFeatures.taskShader ? "True" : "False" ); + LOGI( " meshShader: %s", this->AvailableFeatures.meshShader ? "True" : "False" ); + LOGI( " multiviewMeshShader: %s", this->AvailableFeatures.multiviewMeshShader ? "True" : "False" ); + LOGI( " primitiveFragmentShadingRateMeshShader: %s", this->AvailableFeatures.primitiveFragmentShadingRateMeshShader ? "True" : "False" ); + LOGI( " meshShaderQueries: %s", this->AvailableFeatures.meshShaderQueries ? "True" : "False" ); + } + void Ext_VK_KHR_mesh_shader::PrintProperties() const + { + LOGI( "VK_KHR_mesh_shader (VkPhysicalDeviceMeshShaderPropertiesEXT): " ); + LOGI( " maxTaskWorkGroupTotalCount: %u", Properties.maxTaskWorkGroupTotalCount ); + LOGI( " maxTaskWorkGroupCount: %u %u %u", Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0] ); + LOGI( " maxTaskWorkGroupTotalCount: %u", Properties.maxTaskWorkGroupTotalCount ); + LOGI( " maxTaskWorkGroupCount: %u %u %u", Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0], Properties.maxTaskWorkGroupCount[0] ); + LOGI( " maxTaskWorkGroupInvocations: %u", Properties.maxTaskWorkGroupInvocations ); + LOGI( " maxTaskWorkGroupSize: %u %u %u", Properties.maxTaskWorkGroupSize[0], Properties.maxTaskWorkGroupSize[0], Properties.maxTaskWorkGroupSize[0] ); + LOGI( " maxTaskPayloadSize: %u", Properties.maxTaskPayloadSize ); + LOGI( " maxTaskSharedMemorySize: %u", Properties.maxTaskSharedMemorySize ); + LOGI( " maxTaskPayloadAndSharedMemorySize: %u", Properties.maxTaskPayloadAndSharedMemorySize ); + LOGI( " maxMeshWorkGroupTotalCount: %u", Properties.maxMeshWorkGroupTotalCount ); + LOGI( " maxMeshWorkGroupCount: %u %u %u", Properties.maxMeshWorkGroupCount[0], Properties.maxMeshWorkGroupCount[0], Properties.maxMeshWorkGroupCount[0] ); + LOGI( " maxMeshWorkGroupInvocations: %u", Properties.maxMeshWorkGroupInvocations ); + LOGI( " maxMeshWorkGroupSize: %u %u %u", Properties.maxMeshWorkGroupSize[0], Properties.maxMeshWorkGroupSize[0], Properties.maxMeshWorkGroupSize[0] ); + LOGI( " maxMeshSharedMemorySize: %u", Properties.maxMeshSharedMemorySize ); + LOGI( " maxMeshPayloadAndSharedMemorySize: %u", Properties.maxMeshPayloadAndSharedMemorySize ); + LOGI( " maxMeshOutputMemorySize: %u", Properties.maxMeshOutputMemorySize ); + LOGI( " maxMeshPayloadAndOutputMemorySize: %u", Properties.maxMeshPayloadAndOutputMemorySize ); + LOGI( " maxMeshOutputComponents: %u", Properties.maxMeshOutputComponents ); + LOGI( " maxMeshOutputVertices: %u", Properties.maxMeshOutputVertices ); + LOGI( " maxMeshOutputPrimitives: %u", Properties.maxMeshOutputPrimitives ); + LOGI( " maxMeshOutputLayers: %u", Properties.maxMeshOutputLayers ); + LOGI( " maxMeshMultiviewViewCount: %u", Properties.maxMeshMultiviewViewCount ); + LOGI( " meshOutputPerVertexGranularity: %u", Properties.meshOutputPerVertexGranularity ); + LOGI( " meshOutputPerPrimitiveGranularity: %u", Properties.meshOutputPerPrimitiveGranularity ); + LOGI( " maxPreferredTaskWorkGroupInvocations: %u", Properties.maxPreferredTaskWorkGroupInvocations ); + LOGI( " maxPreferredMeshWorkGroupInvocations: %u", Properties.maxPreferredMeshWorkGroupInvocations ); + LOGI( " prefersLocalInvocationVertexOutput: %s", Properties.prefersLocalInvocationVertexOutput ? "True" : "False" ); + LOGI( " prefersLocalInvocationVertexOutput: %s", Properties.prefersLocalInvocationPrimitiveOutput ? "True" : "False" ); + LOGI( " prefersLocalInvocationVertexOutput: %s", Properties.prefersCompactVertexOutput ? "True" : "False" ); + LOGI( " prefersLocalInvocationVertexOutput: %s", Properties.prefersCompactPrimitiveOutput ? "True" : "False" ); + } +#endif + +#if VK_KHR_swapchain + + void Ext_VK_KHR_swapchain::LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr ) + { + m_vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)deviceProcAddr( vkDevice, "vkCreateSwapchainKHR" ); + m_vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)deviceProcAddr( vkDevice, "vkDestroySwapchainKHR" ); + m_vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)deviceProcAddr( vkDevice, "vkGetSwapchainImagesKHR" ); + m_vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)deviceProcAddr( vkDevice, "vkAcquireNextImageKHR" ); + m_vkQueuePresentKHR = (PFN_vkQueuePresentKHR)deviceProcAddr( vkDevice, "vkQueuePresentKHR" ); + m_vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)deviceProcAddr( vkDevice, "vkGetDeviceGroupPresentCapabilitiesKHR" ); + m_vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)deviceProcAddr( vkDevice, "vkGetDeviceGroupSurfacePresentModesKHR" ); + m_vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)deviceProcAddr( vkDevice, "vkAcquireNextImage2KHR" ); + } + void Ext_VK_KHR_swapchain::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDevicePresentRectanglesKHR" ); + } + +#endif // VK_KHR_swapchain + + +#if VK_KHR_shader_float16_int8 + void Ext_VK_KHR_shader_float16_int8::PrintFeatures() const + { + LOGI( "FeaturesShaderFloat16Int8: " ); + LOGI( " shaderFloat16: %s", this->AvailableFeatures.shaderFloat16 ? "True" : "False" ); + LOGI( " shaderInt8: %s", this->AvailableFeatures.shaderInt8 ? "True" : "False" ); + } +#endif // VK_KHR_shader_float16_int8 + +#if VK_EXT_shader_image_atomic_int64 + void Ext_VK_EXT_shader_image_atomic_int64::PrintFeatures() const + { + LOGI( "FeaturesShaderImageAtomicInt64: " ); + LOGI( " shaderImageInt64Atomics: %s", this->AvailableFeatures.shaderImageInt64Atomics ? "True" : "False" ); + LOGI( " sparseImageInt64Atomics: %s", this->AvailableFeatures.sparseImageInt64Atomics ? "True" : "False" ); + } +#endif // VK_EXT_shader_image_atomic_int64 + +#if VK_KHR_ray_tracing_position_fetch + void Ext_VK_KHR_ray_tracing_position_fetch::PrintFeatures() const + { + LOGI( "FeaturesRayTracingPositionFetch: " ); + LOGI( " rayTracingPositionFetch: %s", this->AvailableFeatures.rayTracingPositionFetch ? "True" : "False" ); + } +#endif // VK_EXT_shader_image_atomic_int64 + +#if VK_EXT_scalar_block_layout + + void Ext_VK_EXT_scalar_block_layout::PrintFeatures() const + { + LOGI( "FeaturesScalarBlockLayout: " ); + LOGI( " scalarBlockLayout: %s", this->AvailableFeatures.scalarBlockLayout ? "True" : "False" ); + } + +#endif // VK_EXT_scalar_block_layout + + +#if VK_EXT_index_type_uint8 + void Ext_VK_EXT_index_type_uint8::PrintFeatures() const + { + LOGI( "VK_EXT_index_type_uint8 (VkPhysicalDeviceIndexTypeUint8FeaturesEXT): " ); + LOGI( " indexTypeUint8: %s", this->AvailableFeatures.indexTypeUint8 ? "True" : "False" ); + } +#endif // VK_EXT_index_type_uint8 + +#if VK_KHR_shader_subgroup_extended_types + void Ext_VK_KHR_shader_subgroup_extended_types::PrintFeatures() const + { + LOGI( "FeaturesShaderSubgroupExtendedTypes: " ); + LOGI( " shaderSubgroupExtendedTypes: %s", this->AvailableFeatures.shaderSubgroupExtendedTypes ? "True" : "False" ); + } +#endif // VK_KHR_shader_subgroup_extended_types + +#if VK_EXT_descriptor_indexing + void Ext_VK_EXT_descriptor_indexing::PrintFeatures() const + { + LOGI( "VK_EXT_descriptor_indexing (VkPhysicalDeviceDescriptorIndexingFeatures): " ); + LOGI( " shaderInputAttachmentArrayDynamicIndexing: %s", this->AvailableFeatures.shaderInputAttachmentArrayDynamicIndexing ? "True" : "False" ); + LOGI( " shaderUniformTexelBufferArrayDynamicIndexing: %s", this->AvailableFeatures.shaderUniformTexelBufferArrayDynamicIndexing ? "True" : "False" ); + LOGI( " shaderStorageTexelBufferArrayDynamicIndexing: %s", this->AvailableFeatures.shaderStorageTexelBufferArrayDynamicIndexing ? "True" : "False" ); + LOGI( " shaderUniformBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderUniformBufferArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " shaderSampledImageArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderSampledImageArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " shaderStorageBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageBufferArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " shaderStorageImageArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageImageArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " shaderInputAttachmentArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderInputAttachmentArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " shaderUniformTexelBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderUniformTexelBufferArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " shaderStorageTexelBufferArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageTexelBufferArrayNonUniformIndexing ? "True" : "False" ); + LOGI( " descriptorBindingUniformBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingUniformBufferUpdateAfterBind ? "True" : "False" ); + LOGI( " descriptorBindingSampledImageUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingSampledImageUpdateAfterBind ? "True" : "False" ); + LOGI( " descriptorBindingStorageImageUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageImageUpdateAfterBind ? "True" : "False" ); + LOGI( " descriptorBindingStorageBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageBufferUpdateAfterBind ? "True" : "False" ); + LOGI( " descriptorBindingUniformTexelBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind ? "True" : "False" ); + LOGI( " descriptorBindingStorageTexelBufferUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind ? "True" : "False" ); + LOGI( " descriptorBindingUpdateUnusedWhilePending: %s", this->AvailableFeatures.descriptorBindingUpdateUnusedWhilePending ? "True" : "False" ); + LOGI( " descriptorBindingPartiallyBound: %s", this->AvailableFeatures.descriptorBindingPartiallyBound ? "True" : "False" ); + LOGI( " descriptorBindingVariableDescriptorCount: %s", this->AvailableFeatures.descriptorBindingVariableDescriptorCount ? "True" : "False" ); + LOGI( " runtimeDescriptorArray: %s", this->AvailableFeatures.runtimeDescriptorArray ? "True" : "False" ); + } + + void Ext_VK_EXT_descriptor_indexing::PrintProperties() const + { + LOGI( "VK_EXT_descriptor_indexing (VkPhysicalDeviceDescriptorIndexingProperties): " ); + LOGI( " maxUpdateAfterBindDescriptorsInAllPools: %u", Properties.maxUpdateAfterBindDescriptorsInAllPools ); + LOGI( " shaderUniformBufferArrayNonUniformIndexingNative: %s", Properties.shaderUniformBufferArrayNonUniformIndexingNative ? "True" : "False" ); + LOGI( " shaderSampledImageArrayNonUniformIndexingNative: %s", Properties.shaderSampledImageArrayNonUniformIndexingNative ? "True" : "False" ); + LOGI( " shaderStorageBufferArrayNonUniformIndexingNative: %s", Properties.shaderStorageBufferArrayNonUniformIndexingNative ? "True" : "False" ); + LOGI( " shaderStorageImageArrayNonUniformIndexingNative: %s", Properties.shaderStorageImageArrayNonUniformIndexingNative ? "True" : "False" ); + LOGI( " shaderInputAttachmentArrayNonUniformIndexingNative: %s", Properties.shaderInputAttachmentArrayNonUniformIndexingNative ? "True" : "False" ); + LOGI( " robustBufferAccessUpdateAfterBind: %s", Properties.robustBufferAccessUpdateAfterBind ? "True" : "False" ); + LOGI( " quadDivergentImplicitLod: %s", Properties.quadDivergentImplicitLod ? "True" : "False" ); + LOGI( " maxPerStageDescriptorUpdateAfterBindSamplers: %u", Properties.maxPerStageDescriptorUpdateAfterBindSamplers ); + LOGI( " maxPerStageDescriptorUpdateAfterBindUniformBuffers: %u", Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ); + LOGI( " maxPerStageDescriptorUpdateAfterBindStorageBuffers: %u", Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ); + LOGI( " maxPerStageDescriptorUpdateAfterBindSampledImages: %u", Properties.maxPerStageDescriptorUpdateAfterBindSampledImages ); + LOGI( " maxPerStageDescriptorUpdateAfterBindStorageImages: %u", Properties.maxPerStageDescriptorUpdateAfterBindStorageImages ); + LOGI( " maxPerStageDescriptorUpdateAfterBindInputAttachments: %u", Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments ); + LOGI( " maxPerStageUpdateAfterBindResources: %u", Properties.maxPerStageUpdateAfterBindResources ); + LOGI( " maxDescriptorSetUpdateAfterBindSamplers: %u", Properties.maxDescriptorSetUpdateAfterBindSamplers ); + LOGI( " maxDescriptorSetUpdateAfterBindUniformBuffers: %u", Properties.maxDescriptorSetUpdateAfterBindUniformBuffers ); + LOGI( " maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: %u", Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ); + LOGI( " maxDescriptorSetUpdateAfterBindStorageBuffers: %u", Properties.maxDescriptorSetUpdateAfterBindStorageBuffers ); + LOGI( " maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: %u", Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ); + LOGI( " maxDescriptorSetUpdateAfterBindSampledImages: %u", Properties.maxDescriptorSetUpdateAfterBindSampledImages ); + LOGI( " maxDescriptorSetUpdateAfterBindStorageImages: %u", Properties.maxDescriptorSetUpdateAfterBindStorageImages ); + LOGI( " maxDescriptorSetUpdateAfterBindInputAttachments: %u", Properties.maxDescriptorSetUpdateAfterBindInputAttachments ); + } +#endif // VK_EXT_descriptor_indexing + +#if VK_KHR_8bit_storage + void Ext_VK_KHR_8bit_storage::PrintFeatures() const + { + LOGI( "VK_KHR_8bit_storage (VkPhysicalDevice8BitStorageFeaturesKHR): " ); + LOGI( " storageBuffer8BitAccess: %s", this->AvailableFeatures.storageBuffer8BitAccess ? "True" : "False" ); + LOGI( " uniformAndStorageBuffer8BitAccess: %s", this->AvailableFeatures.uniformAndStorageBuffer8BitAccess ? "True" : "False" ); + LOGI( " storagePushConstant8: %s", this->AvailableFeatures.storagePushConstant8 ? "True" : "False" ); + } +#endif // VK_KHR_8bit_storage + +#if VK_KHR_portability_subset + void Ext_VK_KHR_portability_subset::PrintFeatures() const + { + LOGI( "VK_KHR_portability_subset (VkPhysicalDevicePortabilitySubsetFeaturesKHR): " ); + LOGI( " constantAlphaColorBlendFactors: %s", this->AvailableFeatures.constantAlphaColorBlendFactors ? "True" : "False" ); + LOGI( " events: %s", this->AvailableFeatures.events ? "True" : "False" ); + LOGI( " imageViewFormatReinterpretation: %s", this->AvailableFeatures.imageViewFormatReinterpretation ? "True" : "False" ); + LOGI( " imageViewFormatSwizzle: %s", this->AvailableFeatures.imageViewFormatSwizzle ? "True" : "False" ); + LOGI( " imageView2DOn3DImage: %s", this->AvailableFeatures.imageView2DOn3DImage ? "True" : "False" ); + LOGI( " multisampleArrayImage: %s", this->AvailableFeatures.multisampleArrayImage ? "True" : "False" ); + LOGI( " mutableComparisonSamplers: %s", this->AvailableFeatures.mutableComparisonSamplers ? "True" : "False" ); + LOGI( " pointPolygons: %s", this->AvailableFeatures.pointPolygons ? "True" : "False" ); + LOGI( " samplerMipLodBias: %s", this->AvailableFeatures.samplerMipLodBias ? "True" : "False" ); + LOGI( " separateStencilMaskRef: %s", this->AvailableFeatures.separateStencilMaskRef ? "True" : "False" ); + LOGI( " shaderSampleRateInterpolationFunctions: %s", this->AvailableFeatures.shaderSampleRateInterpolationFunctions ? "True" : "False" ); + LOGI( " tessellationIsolines: %s", this->AvailableFeatures.tessellationIsolines ? "True" : "False" ); + LOGI( " tessellationPointMode: %s", this->AvailableFeatures.tessellationPointMode ? "True" : "False" ); + LOGI( " triangleFans: %s", this->AvailableFeatures.triangleFans ? "True" : "False" ); + LOGI( " vertexAttributeAccessBeyondStride: %s", this->AvailableFeatures.vertexAttributeAccessBeyondStride ? "True" : "False" ); + } + void Ext_VK_KHR_portability_subset::PrintProperties() const + { + LOGI( "VK_KHR_portability_subset (VkPhysicalDevicePortabilitySubsetPropertiesKHR): " ); + LOGI( " minVertexInputBindingStrideAlignment: %u", this->Properties.minVertexInputBindingStrideAlignment ); + } +#endif // VK_KHR_portability_subset + +#if VK_KHR_fragment_shading_rate + void Ext_VK_KHR_fragment_shading_rate::PrintFeatures() const + { + LOGI( "VK_KHR_fragment_shading_rate (VkPhysicalDeviceFragmentShadingRateFeaturesKHR): " ); + LOGI( " pipelineFragmentShadingRate: %s", this->AvailableFeatures.pipelineFragmentShadingRate ? "True" : "False" ); + LOGI( " primitiveFragmentShadingRate: %s", this->AvailableFeatures.primitiveFragmentShadingRate ? "True" : "False" ); + LOGI( " attachmentFragmentShadingRate: %s", this->AvailableFeatures.attachmentFragmentShadingRate ? "True" : "False" ); + } + void Ext_VK_KHR_fragment_shading_rate::PrintProperties() const + { + LOGI( "VK_KHR_fragment_shading_rate (VkPhysicalDeviceFragmentShadingRatePropertiesKHR): " ); + LOGI( " minFragmentDensityTexelSize: %ux%u", this->Properties.minFragmentShadingRateAttachmentTexelSize.width, this->Properties.minFragmentShadingRateAttachmentTexelSize.height ); + LOGI( " maxFragmentDensityTexelSize: %ux%u", this->Properties.maxFragmentShadingRateAttachmentTexelSize.width, this->Properties.maxFragmentShadingRateAttachmentTexelSize.height ); + LOGI( " maxFragmentShadingRateAttachmentTexelSizeAspectRatio: %u", this->Properties.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ); + LOGI( " primitiveFragmentShadingRateWithMultipleViewports: %s", this->Properties.primitiveFragmentShadingRateWithMultipleViewports ? "True" : "False" ); + LOGI( " layeredShadingRateAttachments: %s", this->Properties.layeredShadingRateAttachments ? "True" : "False" ); + LOGI( " fragmentShadingRateNonTrivialCombinerOps: %s", this->Properties.fragmentShadingRateNonTrivialCombinerOps ? "True" : "False" ); + LOGI( " maxFragmentSize: %ux%u", this->Properties.maxFragmentSize.width, this->Properties.maxFragmentSize.height ); + LOGI( " maxFragmentSizeAspectRatio: %u", this->Properties.maxFragmentSizeAspectRatio ); + LOGI( " maxFragmentShadingRateCoverageSamples: %u", this->Properties.maxFragmentShadingRateCoverageSamples ); + LOGI( " maxFragmentShadingRateRasterizationSamples: 0x%02x", this->Properties.maxFragmentShadingRateRasterizationSamples ); + LOGI( " fragmentShadingRateWithShaderDepthStencilWrites: %s", this->Properties.fragmentShadingRateWithShaderDepthStencilWrites ? "True" : "False" ); + LOGI( " fragmentShadingRateWithSampleMask: %s", this->Properties.fragmentShadingRateWithSampleMask ? "True" : "False" ); + LOGI( " fragmentShadingRateWithShaderSampleMask: %s", this->Properties.fragmentShadingRateWithShaderSampleMask ? "True" : "False" ); + LOGI( " fragmentShadingRateWithConservativeRasterization: %s", this->Properties.fragmentShadingRateWithConservativeRasterization ? "True" : "False" ); + LOGI( " fragmentShadingRateWithFragmentShaderInterlock: %s", this->Properties.fragmentShadingRateWithFragmentShaderInterlock ? "True" : "False" ); + LOGI( " fragmentShadingRateWithCustomSampleLocations: %s", this->Properties.fragmentShadingRateWithCustomSampleLocations ? "True" : "False" ); + LOGI( " fragmentShadingRateStrictMultiplyCombiner: %s", this->Properties.fragmentShadingRateStrictMultiplyCombiner ? "True" : "False" ); + } +#endif // VK_KHR_fragment_shading_rate + +#if VK_KHR_create_renderpass2 + void Ext_VK_KHR_create_renderpass2::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCreateRenderPass2KHR" ); + m_vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdBeginRenderPass2KHR" ); + m_vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdNextSubpass2KHR" ); + m_vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)vkGetInstanceProcAddr( vkInstance, "vkCmdEndRenderPass2KHR" ); + } +#endif // VK_KHR_create_renderpass2 + +#if VK_KHR_draw_indirect_count + void Ext_VK_KHR_draw_indirect_count::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndirectCountKHR" ); + m_vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)vkGetInstanceProcAddr( vkInstance, "vkCmdDrawIndexedIndirectCountKHR" ); + } +#endif // VK_KHR_draw_indirect_count + +#if VK_KHR_dynamic_rendering + void Ext_VK_KHR_dynamic_rendering::PrintFeatures() const + { + LOGI( "VK_KHR_dynamic_rendering (VkPhysicalDeviceDynamicRenderingFeaturesKHR): " ); + LOGI( " dynamicRendering: %s", this->AvailableFeatures.dynamicRendering ? "True" : "False" ); + } +#endif // VK_KHR_dynamic_rendering + +#if VK_KHR_dynamic_rendering_local_read + void Ext_VK_KHR_dynamic_rendering_local_read::PrintFeatures() const + { + LOGI( "VK_KHR_dynamic_rendering_local_read (VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR): " ); + LOGI( " dynamicRenderingLocalRead: %s", this->AvailableFeatures.dynamicRenderingLocalRead ? "True" : "False" ); + } +#endif // VK_KHR_dynamic_rendering_local_read + +#if VK_EXT_debug_utils + bool Ext_VK_EXT_debug_utils::SetDebugUtilsObjectName( VkDevice vkDevice, uint64_t object, VkObjectType objectType, const char* name ) const + { + if (m_vkSetDebugUtilsObjectNameEXT == nullptr) + return false; + VkDebugUtilsObjectNameInfoEXT nameInfo { VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT }; + nameInfo.objectType = objectType; + nameInfo.objectHandle = object; + nameInfo.pObjectName = name; + return m_vkSetDebugUtilsObjectNameEXT( vkDevice, &nameInfo ) == VK_SUCCESS; + } +#endif // VK_EXT_debug_utils + +#if VK_EXT_debug_marker + bool Ext_VK_EXT_debug_marker::DebugMarkerSetObjectName( VkDevice vkDevice, uint64_t object, VkDebugReportObjectTypeEXT objectType, const char* name ) const + { + if (m_vkDebugMarkerSetObjectNameEXT == nullptr) + return false; + VkDebugMarkerObjectNameInfoEXT markerInfo { VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT }; + markerInfo.objectType = objectType; + markerInfo.object = object; + markerInfo.pObjectName = name; + return m_vkDebugMarkerSetObjectNameEXT( vkDevice, &markerInfo ) == VK_SUCCESS; + } +#endif // VK_EXT_debug_marker + + static std::string GetSubgroupStagesString( VkShaderStageFlags Stages ) + { + std::string StagesString; + static const char* SubgroupStages[] = { "Vertex", "Tessellation Control", "Tessellation Evaluation", "Geometry", "Fragment", "Compute" }; + int i = 0; + for (; i < sizeof( SubgroupStages ) / sizeof( *SubgroupStages ); ++i) + { + if ((Stages & (1 << i)) != 0) + { + StagesString.append( SubgroupStages[i] ); + StagesString.append( ", " ); + } + } + // remainder + if ((Stages & ~((1 << i) - 1)) != 0) + { + StagesString.append( std::to_string( Stages & ~((1 << i) - 1) ) ); + } + return StagesString; + } + + +#if VK_EXT_subgroup_size_control + void Ext_VK_EXT_subgroup_size_control::PrintFeatures() const + { + LOGI( "VK_EXT_subgroup_size_control (VkPhysicalDeviceSubgroupSizeControlFeaturesEXT): " ); + LOGI( " subgroupSizeControl: %s", this->AvailableFeatures.subgroupSizeControl ? "True" : "False" ); + LOGI( " computeFullSubgroups: %s", this->AvailableFeatures.computeFullSubgroups ? "True" : "False" ); + } + + void Ext_VK_EXT_subgroup_size_control::PrintProperties() const + { + LOGI( "VK_EXT_subgroup_size_control (VkPhysicalDeviceSubgroupSizeControlPropertiesEXT): " ); + LOGI( " minSubgroupSize: %u", this->Properties.minSubgroupSize ); + LOGI( " maxSubgroupSize: %u", this->Properties.maxSubgroupSize ); + LOGI( " maxComputeWorkgroupSubgroups: %u", this->Properties.maxComputeWorkgroupSubgroups ); + auto SupportedStages = GetSubgroupStagesString( this->Properties.requiredSubgroupSizeStages ); + LOGI( " requiredSubgroupSizeStages: %s", SupportedStages.c_str() ); + } +#endif // VK_EXT_subgroup_size_control + +#if VK_EXT_host_query_reset + void Ext_VK_EXT_host_query_reset::PrintFeatures() const + { + LOGI( "VK_EXT_host_query_reset (VkPhysicalDeviceHostQueryResetFeaturesEXT): " ); + LOGI( " hostQueryReset: %s", this->AvailableFeatures.hostQueryReset ? "True" : "False" ); + } +#endif // VK_EXT_host_query_reset + +#if VK_KHR_timeline_semaphore + void Ext_VK_KHR_timeline_semaphore::PrintFeatures() const + { + LOGI("VK_KHR_timeline_semaphore (VkPhysicalDeviceTimelineSemaphoreFeaturesKHR): "); + LOGI(" timelineSemaphore: %s", this->AvailableFeatures.timelineSemaphore ? "True" : "False"); + } + void Ext_VK_KHR_timeline_semaphore::PrintProperties() const + { + LOGI("VK_KHR_timeline_semaphore (VkPhysicalDeviceTimelineSemaphorePropertiesKHR): "); + LOGI(" maxTimelineSemaphoreValueDifference: %" PRIu64, this->Properties.maxTimelineSemaphoreValueDifference); + } +#endif // VK_KHR_timeline_semaphore + +#if VK_KHR_synchronization2 + void Ext_VK_KHR_synchronization2::PrintFeatures() const + { + LOGI("VK_KHR_synchronization2 (VkPhysicalDeviceSynchronization2FeaturesKHR): "); + LOGI(" synchronization2: %s", this->AvailableFeatures.synchronization2 ? "True" : "False"); + } + void Ext_VK_KHR_synchronization2::LookupFunctionPointers(VkInstance vkInstance) + { + m_vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)vkGetInstanceProcAddr(vkInstance, "vkQueueSubmit2KHR"); + } +#endif // VK_KHR_synchronization2 + +#if VK_ARM_tensors + void Ext_VK_ARM_tensors::PrintFeatures() const + { + LOGI("VK_ARM_tensors (VkPhysicalDeviceTensorFeaturesARM):"); + LOGI(" tensorNonPacked: %s", this->AvailableFeatures.tensorNonPacked ? "True" : "False"); + LOGI(" shaderTensorAccess: %s", this->AvailableFeatures.shaderTensorAccess ? "True" : "False"); + LOGI(" shaderStorageTensorArrayDynamicIndexing: %s", this->AvailableFeatures.shaderStorageTensorArrayDynamicIndexing ? "True" : "False"); + LOGI(" shaderStorageTensorArrayNonUniformIndexing: %s", this->AvailableFeatures.shaderStorageTensorArrayNonUniformIndexing ? "True" : "False"); + LOGI(" descriptorBindingStorageTensorUpdateAfterBind: %s", this->AvailableFeatures.descriptorBindingStorageTensorUpdateAfterBind ? "True" : "False"); + LOGI(" tensors: %s", this->AvailableFeatures.tensors ? "True" : "False"); + } + + void Ext_VK_ARM_tensors::PrintProperties() const + { + LOGI("VK_ARM_tensors (VkPhysicalDeviceTensorPropertiesARM):"); + LOGI(" maxTensorDimensionCount: %u", this->Properties.maxTensorDimensionCount); + LOGI(" maxTensorElements: %" PRIu64, this->Properties.maxTensorElements); + LOGI(" maxPerDimensionTensorElements: %" PRIu64, this->Properties.maxPerDimensionTensorElements); + LOGI(" maxTensorStride: %" PRId64, this->Properties.maxTensorStride); + LOGI(" maxTensorSize: %" PRIu64, this->Properties.maxTensorSize); + LOGI(" maxTensorShaderAccessArrayLength: %u", this->Properties.maxTensorShaderAccessArrayLength); + LOGI(" maxTensorShaderAccessSize: %u", this->Properties.maxTensorShaderAccessSize); + LOGI(" maxDescriptorSetStorageTensors: %u", this->Properties.maxDescriptorSetStorageTensors); + LOGI(" maxPerStageDescriptorSetStorageTensors: %u", this->Properties.maxPerStageDescriptorSetStorageTensors); + LOGI(" maxDescriptorSetUpdateAfterBindStorageTensors: %u", this->Properties.maxDescriptorSetUpdateAfterBindStorageTensors); + LOGI(" maxPerStageDescriptorUpdateAfterBindStorageTensors: %u", this->Properties.maxPerStageDescriptorUpdateAfterBindStorageTensors); + LOGI(" shaderStorageTensorArrayNonUniformIndexingNative: %s", this->Properties.shaderStorageTensorArrayNonUniformIndexingNative ? "True" : "False"); + LOGI(" shaderTensorSupportedStages: 0x%08X", this->Properties.shaderTensorSupportedStages); + } +#endif // VK_ARM_tensors + +#if VK_ARM_data_graph + void Ext_VK_ARM_data_graph::PrintFeatures() const + { + LOGI("VK_ARM_data_graph (VkPhysicalDeviceDataGraphFeaturesARM):"); + LOGI(" dataGraph: %s", this->AvailableFeatures.dataGraph ? "True" : "False"); + LOGI(" dataGraphUpdateAfterBind: %s", this->AvailableFeatures.dataGraphUpdateAfterBind ? "True" : "False"); + LOGI(" dataGraphSpecializationConstants: %s", this->AvailableFeatures.dataGraphSpecializationConstants ? "True" : "False"); + LOGI(" dataGraphDescriptorBuffer: %s", this->AvailableFeatures.dataGraphDescriptorBuffer ? "True" : "False"); + LOGI(" dataGraphShaderModule: %s", this->AvailableFeatures.dataGraphShaderModule ? "True" : "False"); + } +#endif // VK_ARM_data_graph + +#if VK_KHR_get_physical_device_properties2 + + void Ext_VK_KHR_get_physical_device_properties2::LookupFunctionPointers(VkInstance vkInstance) + { + m_vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceFeatures2KHR"); + m_vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceFormatProperties2KHR" ); + m_vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ); + m_vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceMemoryProperties2KHR" ); + m_vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceProperties2KHR" ); + } + +#endif // VK_KHR_get_physical_device_properties2 + +#if VK_KHR_surface + + void Ext_VK_KHR_surface::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)vkGetInstanceProcAddr( vkInstance, "vkDestroySurfaceKHR" ); + m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ); + m_vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ); + m_vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ); + m_vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vkGetInstanceProcAddr( vkInstance, "vkGetPhysicalDeviceSurfaceSupportKHR" ); + } + +#endif // VK_KHR_surface + +#if VK_KHR_get_surface_capabilities2 + + void Ext_VK_KHR_get_surface_capabilities2::LookupFunctionPointers( VkInstance vkInstance ) + { + m_vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); + m_vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)vkGetInstanceProcAddr(vkInstance, "vkGetPhysicalDeviceSurfaceFormats2KHR"); + } + +#endif // VK_KHR_get_surface_capabilities2 + +#if VK_QCOM_tile_properties + + void Ext_VK_QCOM_tile_properties::LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr ) + { + m_vkGetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)deviceProcAddr( vkDevice, "vkGetDynamicRenderingTilePropertiesQCOM" ); + m_vkGetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)deviceProcAddr( vkDevice, "vkGetFramebufferTilePropertiesQCOM" ); + } + + void Ext_VK_QCOM_tile_properties::PrintFeatures() const + { + LOGI( "VK_QCOM_tile_properties (VkPhysicalDeviceTilePropertiesFeaturesQCOM): " ); + LOGI( " tileProperties: %s", this->AvailableFeatures.tileProperties ? "True" : "False" ); + } + +#endif // VK_QCOM_tile_properties + +#if VK_QCOM_tile_memory_heap + void Ext_VK_QCOM_tile_memory_heap::PrintFeatures() const + { + LOGI("VK_QCOM_tile_memory_heap (VkPhysicalDeviceTileMemoryHeapFeaturesQCOM): "); + LOGI(" tileMemoryHeap: %s", this->AvailableFeatures.tileMemoryHeap ? "True" : "False"); + } + + void Ext_VK_QCOM_tile_memory_heap::PrintProperties() const + { + LOGI("VK_QCOM_tile_memory_heap (VkPhysicalDeviceTileMemoryHeapPropertiesQCOM): "); + LOGI(" queueSubmitBoundary: %s", this->Properties.queueSubmitBoundary ? "True" : "False"); + LOGI(" tileBufferTransfers: %s", this->Properties.tileBufferTransfers ? "True" : "False"); + } +#endif // VK_KHR_fragment_shading_rate + +#if VK_QCOM_tile_shading + + void Ext_VK_QCOM_tile_shading::PopulateRequestedFeatures() + { + tBase::PopulateRequestedFeatures(); + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.tileShading = AvailableFeatures.tileShading; + RequestedFeatures.tileShadingPerTileDispatch = AvailableFeatures.tileShadingPerTileDispatch; + RequestedFeatures.tileShadingColorAttachments = AvailableFeatures.tileShadingColorAttachments; + RequestedFeatures.tileShadingAtomicOps = AvailableFeatures.tileShadingAtomicOps; + RequestedFeatures.tileShadingFragmentStage = AvailableFeatures.tileShadingFragmentStage; + RequestedFeatures.tileShadingPerTileDraw = AvailableFeatures.tileShadingPerTileDraw; + RequestedFeatures.tileShadingApron = AvailableFeatures.tileShadingApron; + RequestedFeatures.tileShadingDepthAttachments = AvailableFeatures.tileShadingDepthAttachments; + RequestedFeatures.tileShadingStencilAttachments = AvailableFeatures.tileShadingStencilAttachments; + RequestedFeatures.tileShadingInputAttachments = AvailableFeatures.tileShadingInputAttachments; + RequestedFeatures.tileShadingSampledAttachments = AvailableFeatures.tileShadingSampledAttachments; + RequestedFeatures.tileShadingAnisotropicApron = AvailableFeatures.tileShadingAnisotropicApron; + RequestedFeatures.tileShadingDispatchTile = AvailableFeatures.tileShadingDispatchTile; + RequestedFeatures.tileShadingImageProcessing = AvailableFeatures.tileShadingImageProcessing; + } + + void Ext_VK_QCOM_tile_shading::LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr deviceProcAddr ) + { + m_vkCmdDispatchTileQCOM = (PFN_vkCmdDispatchTileQCOM)deviceProcAddr( vkDevice, "vkCmdDispatchTileQCOM" ); + if (m_vkCmdDispatchTileQCOM == nullptr) + { + LOGE("Driver does not expose \"vkCmdDispatchTileQCOM\" function, trying \"vkCmdTileDispatchQCOM\""); + m_vkCmdDispatchTileQCOM = (PFN_vkCmdDispatchTileQCOM)deviceProcAddr( vkDevice, "vkCmdTileDispatchQCOM" ); + } + m_vkCmdBeginPerTileExecutionQCOM = (PFN_vkCmdBeginPerTileExecutionQCOM)deviceProcAddr( vkDevice, "vkCmdBeginPerTileExecutionQCOM" ); + m_vkCmdEndPerTileExecutionQCOM = (PFN_vkCmdEndPerTileExecutionQCOM)deviceProcAddr( vkDevice, "vkCmdEndPerTileExecutionQCOM" ); + + LOGI( "Ext_VK_QCOM_tile_shading function pointers: %p %p %p", m_vkCmdDispatchTileQCOM, m_vkCmdBeginPerTileExecutionQCOM, m_vkCmdEndPerTileExecutionQCOM ); + } + + void Ext_VK_QCOM_tile_shading::PrintFeatures() const + { + LOGI( "VK_QCOM_tile_shading (VkPhysicalDeviceTileShadingFeaturesQCOM): " ); + + + LOGI( " tileShading: %s", this->AvailableFeatures.tileShading ? "True" : "False" ); + LOGI( " tileShadingFragmentStage: %s", this->AvailableFeatures.tileShadingFragmentStage ? "True" : "False" ); + LOGI( " tileShadingColorAttachments: %s", this->AvailableFeatures.tileShadingColorAttachments ? "True" : "False" ); + LOGI( " tileShadingDepthAttachments: %s", this->AvailableFeatures.tileShadingDepthAttachments ? "True" : "False" ); + LOGI( " tileShadingStencilAttachments: %s", this->AvailableFeatures.tileShadingStencilAttachments ? "True" : "False" ); + LOGI( " tileShadingInputAttachments: %s", this->AvailableFeatures.tileShadingInputAttachments ? "True" : "False" ); + LOGI( " tileShadingSampledAttachments: %s", this->AvailableFeatures.tileShadingSampledAttachments ? "True" : "False" ); + LOGI( " tileShadingPerTileDraw: %s", this->AvailableFeatures.tileShadingPerTileDraw ? "True" : "False" ); + LOGI( " tileShadingPerTileDispatch: %s", this->AvailableFeatures.tileShadingPerTileDispatch ? "True" : "False" ); + LOGI( " tileShadingApron: %s", this->AvailableFeatures.tileShadingApron ? "True" : "False" ); + LOGI( " tileShadingAnisotropicApron: %s", this->AvailableFeatures.tileShadingAnisotropicApron ? "True" : "False" ); + LOGI( " tileShadingAtomicOps: %s", this->AvailableFeatures.tileShadingAtomicOps ? "True" : "False" ); + LOGI( " tileShadingDispatchTile: %s", this->AvailableFeatures.tileShadingDispatchTile ? "True" : "False" ); + LOGI( " tileShadingImageProcessing: %s", this->AvailableFeatures.tileShadingImageProcessing ? "True" : "False" ); + } + + void Ext_VK_QCOM_tile_shading::PrintProperties() const + { + LOGI( "VK_QCOM_tile_shading (VkPhysicalDeviceTileShadingPropertiesQCOM): " ); + LOGI( " maxApronSize: %d", this->Properties.maxApronSize ); + LOGI( " preferNonCoherent: %s", this->Properties.preferNonCoherent ? "True" : "False" ); + LOGI( " tileGranularity: [%d, %d]", this->Properties.tileGranularity.width, this->Properties.tileGranularity.height ); + LOGI( " maxTileShadingRate: [%d, %d]", this->Properties.maxTileShadingRate.width, this->Properties.maxTileShadingRate.height ); + } + +#endif // VK_QCOM_tile_shading + + void Vulkan_SubgroupPropertiesHook::PrintProperties() const + { + LOGI( "VkPhysicalDeviceSubgroupProperties: " ); + LOGI( " subgroupSize: %d", Properties.subgroupSize ); + auto SupportedStages = GetSubgroupStagesString( Properties.supportedStages ); + LOGI( " supportedStages: %s", SupportedStages.c_str() ); + + std::string SupportedOperations; + static const char* SubgroupOperations[] = { "Basic", "Vote", "Arithmetic", "Ballot", "Shuffle", "Shuffle Relative", "Clustered", "Quad" }; + for (int i = 0; i < sizeof( SubgroupOperations ) / sizeof( *SubgroupOperations ); ++i) + { + if ((Properties.supportedOperations & (1 << i)) != 0) + { + SupportedOperations.append( SubgroupOperations[i] ); + SupportedOperations.append( ", " ); + } + } + LOGI( " supportedOperations: %s", SupportedOperations.c_str() ); + + LOGI( " quadOperationsInAllStages: %s", Properties.quadOperationsInAllStages ? "True" : "False" ); + } + + + void Vulkan_StorageFeaturesHook::PrintFeatures() const + { + LOGI( "FeaturesStorage16Bit: " ); + LOGI( " storageBuffer16BitAccess: %s", this->AvailableFeatures.storageBuffer16BitAccess ? "True" : "False" ); + LOGI( " uniformAndStorageBuffer16BitAccess: %s", this->AvailableFeatures.uniformAndStorageBuffer16BitAccess ? "True" : "False" ); + LOGI( " storagePushConstant16: %s", this->AvailableFeatures.storagePushConstant16 ? "True" : "False" ); + LOGI( " storageInputOutput16: %s", this->AvailableFeatures.storageInputOutput16 ? "True" : "False" ); + } + + +}; //namespace diff --git a/framework/code/vulkan/extensionLib.hpp b/framework/code/vulkan/extensionLib.hpp new file mode 100644 index 0000000..beda17d --- /dev/null +++ b/framework/code/vulkan/extensionLib.hpp @@ -0,0 +1,770 @@ +//============================================================================================================ +// +// +// Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once +#include "extensionHelpers.hpp" +#include + +class Vulkan; + +/// +/// Library of Vulkan extensions +/// + +namespace ExtensionLib +{ +#if VK_KHR_buffer_device_address + + struct Ext_VK_KHR_buffer_device_address : public VulkanDeviceFeaturesExtensionHelper + { + static constexpr auto Name = VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME; + Ext_VK_KHR_buffer_device_address(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) + : VulkanDeviceFeaturesExtensionHelper(Name, status) + {} + void PrintFeatures() const override + { + LOGI("FeaturesBufferDeviceAddress: "); + LOGI(" bufferDeviceAddress: %s", this->AvailableFeatures.bufferDeviceAddress ? "True" : "False"); + LOGI(" bufferDeviceAddressCaptureReplay: %s", this->AvailableFeatures.bufferDeviceAddressCaptureReplay ? "True" : "False"); + LOGI(" bufferDeviceAddressMultiDevice: %s", this->AvailableFeatures.bufferDeviceAddressMultiDevice ? "True" : "False"); + } + void PopulateRequestedFeatures() override + { + // Enable just the 'bufferDeviceAddress' feature + RequestedFeatures.bufferDeviceAddress = AvailableFeatures.bufferDeviceAddress; + } + }; + +#endif // VK_KHR_buffer_device_address + + +#if VK_EXT_mesh_shader + + struct Ext_VK_KHR_mesh_shader : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceMeshShaderFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT, + VkPhysicalDeviceMeshShaderPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT> + { + static constexpr auto Name = VK_EXT_MESH_SHADER_EXTENSION_NAME; + explicit Ext_VK_KHR_mesh_shader( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( Name, status ) + {} + + void PopulateRequestedFeatures() override + { + RequestedFeatures = AvailableFeatures; + RequestedFeatures.multiviewMeshShader = VK_FALSE; //if we need multiview then device needs setting up for multiview also + RequestedFeatures.primitiveFragmentShadingRateMeshShader = VK_FALSE;//if we need fragment shading rate then device needs setting up for it (and we need to revisit this flag!) + } + void LookupFunctionPointers( VkInstance ) override {} + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override; + void PrintFeatures() const override; + void PrintProperties() const override; + PFN_vkCmdDrawMeshTasksEXT m_vkCmdDrawMeshTasksEXT = nullptr; + PFN_vkCmdDrawMeshTasksIndirectEXT m_vkCmdDrawMeshTasksIndirectEXT = nullptr; + PFN_vkCmdDrawMeshTasksIndirectCountEXT m_vkCmdDrawMeshTasksIndirectCountEXT = nullptr; + }; + +#endif // VK_EXT_mesh_shader + +#if VK_KHR_swapchain + + struct Ext_VK_KHR_swapchain : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_KHR_SWAPCHAIN_EXTENSION_NAME; + explicit Ext_VK_KHR_swapchain( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers( VkInstance ) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override; + + PFN_vkCreateSwapchainKHR m_vkCreateSwapchainKHR = nullptr; + PFN_vkDestroySwapchainKHR m_vkDestroySwapchainKHR = nullptr; + PFN_vkGetSwapchainImagesKHR m_vkGetSwapchainImagesKHR = nullptr; + PFN_vkAcquireNextImageKHR m_vkAcquireNextImageKHR = nullptr; + PFN_vkQueuePresentKHR m_vkQueuePresentKHR = nullptr; + PFN_vkGetDeviceGroupPresentCapabilitiesKHR m_vkGetDeviceGroupPresentCapabilitiesKHR = nullptr; + PFN_vkGetDeviceGroupSurfacePresentModesKHR m_vkGetDeviceGroupSurfacePresentModesKHR = nullptr; + PFN_vkGetPhysicalDevicePresentRectanglesKHR m_vkGetPhysicalDevicePresentRectanglesKHR = nullptr; + PFN_vkAcquireNextImage2KHR m_vkAcquireNextImage2KHR = nullptr; + }; + +#endif // VK_KHR_swapchain + + +#if VK_KHR_shader_float16_int8 + + struct Ext_VK_KHR_shader_float16_int8 : public VulkanDeviceFeaturesExtensionHelper + { + static constexpr auto Name = VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME; + explicit Ext_VK_KHR_shader_float16_int8( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper(Name, status) + {} + void PrintFeatures() const override; + }; + +#endif // VK_KHR_shader_float16_int8 + +#if VK_EXT_shader_image_atomic_int64 + + struct Ext_VK_EXT_shader_image_atomic_int64 : public VulkanDeviceFeaturesExtensionHelper + { + static constexpr auto Name = VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME; + explicit Ext_VK_EXT_shader_image_atomic_int64( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper( Name, status ) + {} + void PrintFeatures() const override; + }; + +#endif // VK_EXT_shader_image_atomic_int64 + +#if VK_EXT_index_type_uint8 + + struct Ext_VK_EXT_index_type_uint8 : public VulkanDeviceFeaturesExtensionHelper + { + static constexpr auto Name = VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME; + explicit Ext_VK_EXT_index_type_uint8( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper(Name, status) + {} + void PrintFeatures() const override; + }; + +#endif // VK_EXT_index_type_uint8 + +#if VK_KHR_shader_subgroup_extended_types + + struct Ext_VK_KHR_shader_subgroup_extended_types : public VulkanDeviceFeaturesExtensionHelper + { + static constexpr auto Name = VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME; + explicit Ext_VK_KHR_shader_subgroup_extended_types( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper(Name, status) + {} + void PrintFeatures() const override; + }; + +#endif // VK_KHR_shader_subgroup_extended_types + +#if VK_EXT_descriptor_indexing + + struct Ext_VK_EXT_descriptor_indexing : public VulkanDeviceFeaturePropertiesExtensionHelper< + VkPhysicalDeviceDescriptorIndexingFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, + VkPhysicalDeviceDescriptorIndexingPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT> + { + static constexpr auto Name = VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME; + explicit Ext_VK_EXT_descriptor_indexing( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) + {} + void PrintFeatures() const override; + void PrintProperties() const override; + }; + +#endif // VK_EXT_descriptor_indexing + +#if VK_KHR_8bit_storage + + struct Ext_VK_KHR_8bit_storage : public VulkanDeviceFeaturesExtensionHelper< + VkPhysicalDevice8BitStorageFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR> + { + static constexpr auto Name = VK_KHR_8BIT_STORAGE_EXTENSION_NAME; + explicit Ext_VK_KHR_8bit_storage( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturesExtensionHelper(Name, status) + {} + void PrintFeatures() const override; + }; + +#endif // VK_KHR_8bit_storage + +#if VK_KHR_portability_subset + + struct Ext_VK_KHR_portability_subset : public VulkanDeviceFeaturePropertiesExtensionHelper< + VkPhysicalDevicePortabilitySubsetFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, + VkPhysicalDevicePortabilitySubsetPropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR> + { + static constexpr auto Name = VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME; + explicit Ext_VK_KHR_portability_subset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) + {} + void PrintFeatures() const override; + void PrintProperties() const override; + }; + +#else + + // 'dummy' implementation of Ext_VK_KHR_portability_subset for when vulkan headers do not contain 'VK_KHR_portability_subset' + struct Ext_VK_KHR_portability_subset : public VulkanExtension + { + static constexpr auto Name = "VK_KHR_portability_subset"; + Ext_VK_KHR_portability_subset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanExtension( Name, status ) {} + }; + +#endif // VK_KHR_portability_subset + +#if VK_KHR_fragment_shading_rate + + struct Ext_VK_KHR_fragment_shading_rate : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, + VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR> + { + static constexpr auto Name = VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME; + explicit Ext_VK_KHR_fragment_shading_rate( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper( Name, status ) + {} + + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.attachmentFragmentShadingRate = AvailableFeatures.attachmentFragmentShadingRate; + } + void LookupFunctionPointers( VkInstance vkInstance ) override + { + m_vkCmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdSetFragmentShadingRateKHR" ); + } + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {} + void PrintFeatures() const override; + void PrintProperties() const override; + PFN_vkCmdSetFragmentShadingRateKHR m_vkCmdSetFragmentShadingRateKHR = nullptr; + }; + +#endif // VK_KHR_fragment_shading_rate + +#if VK_KHR_create_renderpass2 + + struct Ext_VK_KHR_create_renderpass2 : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME; + explicit Ext_VK_KHR_create_renderpass2( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers(VkInstance vkInstance) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkCreateRenderPass2KHR m_vkCreateRenderPass2KHR = nullptr; + PFN_vkCmdBeginRenderPass2KHR m_vkCmdBeginRenderPass2KHR = nullptr; + PFN_vkCmdNextSubpass2KHR m_vkCmdNextSubpass2KHR = nullptr; + PFN_vkCmdEndRenderPass2KHR m_vkCmdEndRenderPass2KHR = nullptr; + }; + +#endif // VK_KHR_create_renderpass2 + +#if VK_KHR_draw_indirect_count + + struct Ext_VK_KHR_draw_indirect_count : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME; + explicit Ext_VK_KHR_draw_indirect_count( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers( VkInstance vkInstance ) override; + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/} + PFN_vkCmdDrawIndirectCountKHR m_vkCmdDrawIndirectCountKHR = nullptr; + PFN_vkCmdDrawIndexedIndirectCountKHR m_vkCmdDrawIndexedIndirectCountKHR = nullptr; + }; + +#endif // VK_KHR_draw_indirect_count + +#if VK_KHR_depth_stencil_resolve + + struct Ext_VK_KHR_depth_stencil_resolve : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME; + explicit Ext_VK_KHR_depth_stencil_resolve( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers( VkInstance vkInstance ) override + {/*no instance functions*/} + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/} + }; + +#endif // VK_KHR_depth_stencil_resolve + +#if VK_KHR_dynamic_rendering + + struct Ext_VK_KHR_dynamic_rendering : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceDynamicRenderingFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES > + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME; + explicit Ext_VK_KHR_dynamic_rendering( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) {} + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.dynamicRendering = AvailableFeatures.dynamicRendering; + } + void LookupFunctionPointers( VkInstance vkInstance ) override + { + m_vkCmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdBeginRenderingKHR" ); + m_vkCmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdEndRenderingKHR" ); + } + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/} + void PrintFeatures() const override; + PFN_vkCmdBeginRenderingKHR m_vkCmdBeginRenderingKHR = nullptr; + PFN_vkCmdEndRenderingKHR m_vkCmdEndRenderingKHR = nullptr; + }; + +#endif // VK_KHR_dynamic_rendering + +#if VK_KHR_dynamic_rendering_local_read + + struct Ext_VK_KHR_dynamic_rendering_local_read : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR > + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME; + explicit Ext_VK_KHR_dynamic_rendering_local_read( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) {} + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.dynamicRenderingLocalRead = AvailableFeatures.dynamicRenderingLocalRead; + } + void LookupFunctionPointers( VkInstance vkInstance ) override + { + m_vkCmdSetRenderingAttachmentLocationsKHR = (PFN_vkCmdSetRenderingAttachmentLocationsKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdSetRenderingAttachmentLocationsKHR" ); + m_vkCmdSetRenderingInputAttachmentIndicesKHR = (PFN_vkCmdSetRenderingInputAttachmentIndicesKHR) vkGetInstanceProcAddr( vkInstance, "vkCmdSetRenderingInputAttachmentIndicesKHR" ); + } + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/} + void PrintFeatures() const override; + PFN_vkCmdSetRenderingAttachmentLocationsKHR m_vkCmdSetRenderingAttachmentLocationsKHR = nullptr; + PFN_vkCmdSetRenderingInputAttachmentIndicesKHR m_vkCmdSetRenderingInputAttachmentIndicesKHR = nullptr; + }; + +#endif // VK_KHR_dynamic_rendering_local_read + +#if VK_EXT_hdr_metadata + + struct Ext_VK_EXT_hdr_metadata : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_EXT_HDR_METADATA_EXTENSION_NAME; + explicit Ext_VK_EXT_hdr_metadata(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFunctionPointerExtensionHelper(Name, status) {} + void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/} + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override + { + m_vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT) fpGetDeviceProcAddr( vkDevice, "vkSetHdrMetadataEXT" ); + } + PFN_vkSetHdrMetadataEXT m_vkSetHdrMetadataEXT = nullptr; + }; + +#endif // VK_EXT_hdr_metadata + +#if VK_EXT_debug_utils + + struct Ext_VK_EXT_debug_utils : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_EXT_DEBUG_UTILS_EXTENSION_NAME; + explicit Ext_VK_EXT_debug_utils( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers( VkInstance vkInstance ) override + { + m_vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) vkGetInstanceProcAddr( vkInstance, "vkSetDebugUtilsObjectNameEXT" ); + } + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + bool SetDebugUtilsObjectName( VkDevice vkDevice, uint64_t object, VkObjectType objectType, const char* name ) const; + + PFN_vkSetDebugUtilsObjectNameEXT m_vkSetDebugUtilsObjectNameEXT = nullptr; + }; + +#endif // VK_EXT_debug_utils + +#if VK_EXT_debug_marker + + struct Ext_VK_EXT_debug_marker : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_EXT_DEBUG_MARKER_EXTENSION_NAME; + explicit Ext_VK_EXT_debug_marker( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanFunctionPointerExtensionHelper( Name, status ) {} + void LookupFunctionPointers( VkInstance ) override {/*no instance functions*/ } + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override + { + m_vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT) fpGetDeviceProcAddr( vkDevice, "vkDebugMarkerSetObjectNameEXT" ); + } + bool DebugMarkerSetObjectName( VkDevice vkDevice, uint64_t object, VkDebugReportObjectTypeEXT objectType, const char* name ) const; + + PFN_vkDebugMarkerSetObjectNameEXT m_vkDebugMarkerSetObjectNameEXT = nullptr; + }; + +#endif // Ext_VK_EXT_debug_marker + +#if VK_EXT_subgroup_size_control + + struct Ext_VK_EXT_subgroup_size_control : public VulkanDeviceFeaturePropertiesExtensionHelper< + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, + VkPhysicalDeviceSubgroupSizeControlPropertiesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT > + { + using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; + static constexpr auto Name = VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME; + explicit Ext_VK_EXT_subgroup_size_control( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : VulkanDeviceFeaturePropertiesExtensionHelper( Name, status ), m_ShaderCreateHook(this) + {} + void PrintFeatures() const override; + void PrintProperties() const override; + + VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT SubGroupSizeControl { VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT }; + + private: + class ShaderCreateStageHook final : public ExtensionHook + { + friend struct Ext_VK_EXT_subgroup_size_control; + explicit ShaderCreateStageHook( Ext_VK_EXT_subgroup_size_control* _Parent ) : ExtensionHook(), Parent( _Parent ) {} + VkStructureType StructureType() const override { return (VkStructureType) 0; }; + VkBaseOutStructure* Obtain( tBase* pBase ) override { + if ((pBase->stage & Parent->Properties.requiredSubgroupSizeStages)!=0 + && Parent->RequestedFeatures.subgroupSizeControl + && Parent->SubGroupSizeControl.requiredSubgroupSize != 0) + { + Parent->SubGroupSizeControl.pNext = nullptr; + pBase->flags |= VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT; + return (VkBaseOutStructure*) &Parent->SubGroupSizeControl; + } + return nullptr; + } + void Release( VkBaseOutStructure* pBase ) override { + assert( pBase == (VkBaseOutStructure *) &Parent->SubGroupSizeControl ); + } + Ext_VK_EXT_subgroup_size_control* Parent; + } m_ShaderCreateHook; + + void Register( Vulkan& vulkan ) override + { + tBase::Register( vulkan ); + vulkan.AddExtensionHooks( &m_ShaderCreateHook ); + } + }; + +#endif // VK_EXT_subgroup_size_control + +#if VK_EXT_host_query_reset + + struct Ext_VK_EXT_host_query_reset : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceHostQueryResetFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT > + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME; + explicit Ext_VK_EXT_host_query_reset( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void PrintFeatures() const override; + void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ } + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr ) override + { + if (RequestedFeatures.hostQueryReset == VK_TRUE) + m_vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT) fpGetDeviceProcAddr( vkDevice, "vkResetQueryPoolEXT" ); + } + PFN_vkResetQueryPoolEXT m_vkResetQueryPoolEXT = nullptr; + }; + +#endif // VK_EXT_host_query_reset + +#if VK_KHR_timeline_semaphore + + struct Ext_VK_KHR_timeline_semaphore : public VulkanDeviceFeaturePropertiesExtensionHelper< + VkPhysicalDeviceTimelineSemaphoreFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, + VkPhysicalDeviceTimelineSemaphorePropertiesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR > + { + using tBase = VulkanDeviceFeaturePropertiesExtensionHelper; + static constexpr auto Name = VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME; + explicit Ext_VK_KHR_timeline_semaphore( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void PrintFeatures() const override; + void PrintProperties() const override; + }; + +#endif // VK_KHR_timeline_semaphore + +#if VK_KHR_synchronization2 + + struct Ext_VK_KHR_synchronization2 : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceSynchronization2FeaturesKHR, (VkStructureType) VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR > + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME; + explicit Ext_VK_KHR_synchronization2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : tBase(Name, status) + {} + void PrintFeatures() const override; + void LookupFunctionPointers(VkInstance vkInstance) override; + void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override {/*no device functions*/ } + PFN_vkQueueSubmit2KHR m_vkQueueSubmit2KHR = nullptr; + }; + +#endif // VK_KHR_synchronization2 + +#if VK_ARM_tensors + + struct Ext_VK_ARM_tensors : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceTensorFeaturesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM, + VkPhysicalDeviceTensorPropertiesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM> + { + static constexpr auto Name = VK_ARM_TENSORS_EXTENSION_NAME; + + explicit Ext_VK_ARM_tensors(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) + : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper(Name, status) + { + } + + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.tensorNonPacked = AvailableFeatures.tensorNonPacked; + RequestedFeatures.shaderTensorAccess = AvailableFeatures.shaderTensorAccess; + RequestedFeatures.shaderStorageTensorArrayDynamicIndexing = AvailableFeatures.shaderStorageTensorArrayDynamicIndexing; + RequestedFeatures.shaderStorageTensorArrayNonUniformIndexing = AvailableFeatures.shaderStorageTensorArrayNonUniformIndexing; + RequestedFeatures.descriptorBindingStorageTensorUpdateAfterBind = AvailableFeatures.descriptorBindingStorageTensorUpdateAfterBind; + RequestedFeatures.tensors = AvailableFeatures.tensors; + } + + void PrintFeatures() const override; + void PrintProperties() const override; + void LookupFunctionPointers(VkInstance vkInstance) override {} + void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override {} + }; + +#endif // VK_ARM_tensors + +#if VK_ARM_data_graph + + struct Ext_VK_ARM_data_graph : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceDataGraphFeaturesARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM> + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_ARM_DATA_GRAPH_EXTENSION_NAME; + + explicit Ext_VK_ARM_data_graph(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) + : tBase(Name, status) + { + } + + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.dataGraph = AvailableFeatures.dataGraph; + RequestedFeatures.dataGraphUpdateAfterBind = AvailableFeatures.dataGraphUpdateAfterBind; + RequestedFeatures.dataGraphSpecializationConstants = AvailableFeatures.dataGraphSpecializationConstants; + RequestedFeatures.dataGraphDescriptorBuffer = AvailableFeatures.dataGraphDescriptorBuffer; + RequestedFeatures.dataGraphShaderModule = AvailableFeatures.dataGraphShaderModule; + } + + void PrintFeatures() const override; + void LookupFunctionPointers(VkInstance vkInstance) override {} + void LookupFunctionPointers(VkDevice, PFN_vkGetDeviceProcAddr) override {} + }; + +#endif // VK_ARM_data_graph + +#if VK_QCOM_tile_properties + + struct Ext_VK_QCOM_tile_properties : public VulkanFeaturesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceTilePropertiesFeaturesQCOM, (VkStructureType)VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM> + { + using tBase = VulkanFeaturesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME; + explicit Ext_VK_QCOM_tile_properties( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ }; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override; + void PrintFeatures() const override; + PFN_vkGetDynamicRenderingTilePropertiesQCOM m_vkGetDynamicRenderingTilePropertiesQCOM = nullptr; + PFN_vkGetFramebufferTilePropertiesQCOM m_vkGetFramebufferTilePropertiesQCOM = nullptr; + }; + +#endif // VK_QCOM_tile_properties + +#if VK_QCOM_tile_shading + + struct Ext_VK_QCOM_tile_shading : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceTileShadingFeaturesQCOM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM, + VkPhysicalDeviceTileShadingPropertiesQCOM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM> + { + using tBase = VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper; + static constexpr auto Name = VK_QCOM_TILE_SHADING_EXTENSION_NAME; + explicit Ext_VK_QCOM_tile_shading( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void PopulateRequestedFeatures() override; + void LookupFunctionPointers( VkInstance vkInstance ) override {/*no instance functions*/ } + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override; + void PrintFeatures() const override; + void PrintProperties() const override; + + PFN_vkCmdDispatchTileQCOM m_vkCmdDispatchTileQCOM = nullptr; + PFN_vkCmdBeginPerTileExecutionQCOM m_vkCmdBeginPerTileExecutionQCOM = nullptr; + PFN_vkCmdEndPerTileExecutionQCOM m_vkCmdEndPerTileExecutionQCOM = nullptr; + }; + inline namespace fvk { + using VkPerTileBeginInfoQCOM = ::fvk::VkStructWrapper; + using VkPerTileEndInfoQCOM = ::fvk::VkStructWrapper; + using VkDispatchTileInfoQCOM = ::fvk::VkStructWrapper; + }; + +#endif // VK_QCOM_tile_shading + +#if VK_QCOM_tile_memory_heap + + struct Ext_VK_QCOM_tile_memory_heap : public VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper< + VkPhysicalDeviceTileMemoryHeapFeaturesQCOM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM, + VkPhysicalDeviceTileMemoryHeapPropertiesQCOM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM> + { + static constexpr auto Name = VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME; + explicit Ext_VK_QCOM_tile_memory_heap(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFeaturesPropertiesAndFunctionPointerExtensionHelper(Name, status) + {} + + void PopulateRequestedFeatures() override + { + RequestedFeatures.sType = AvailableFeatures.sType; + RequestedFeatures.tileMemoryHeap = true; /*AvailableFeatures.tileMemoryHeap;*/ + } + void LookupFunctionPointers( VkInstance ) override {/*no instance functions*/ } + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override + { + m_vkCmdBindTileMemoryQCOM = (PFN_vkCmdBindTileMemoryQCOM)vkGetDeviceProcAddr(vkDevice, "vkCmdBindTileMemoryQCOM"); + } + void PrintFeatures() const override; + void PrintProperties() const override; + PFN_vkCmdBindTileMemoryQCOM m_vkCmdBindTileMemoryQCOM = nullptr; + }; + +#endif // VK_QCOM_tile_memory_heap + +#if VK_KHR_get_memory_requirements2 + + struct Ext_VK_KHR_get_memory_requirements2 : public VulkanFunctionPointerExtensionHelper + { + static constexpr auto Name = VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME; + explicit Ext_VK_KHR_get_memory_requirements2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanFunctionPointerExtensionHelper(Name, status) {} + void LookupFunctionPointers( VkInstance ) override {/*no instance functions*/ } + void LookupFunctionPointers( VkDevice vkDevice, PFN_vkGetDeviceProcAddr ) override + { + m_vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)vkGetDeviceProcAddr(vkDevice, "vkGetBufferMemoryRequirements2KHR"); + m_vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)vkGetDeviceProcAddr(vkDevice, "vkGetImageMemoryRequirements2KHR"); + m_vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)vkGetDeviceProcAddr(vkDevice, "vkGetImageSparseMemoryRequirements2KHR"); + } + PFN_vkGetBufferMemoryRequirements2KHR m_vkGetBufferMemoryRequirements2KHR = nullptr; + PFN_vkGetImageMemoryRequirements2KHR m_vkGetImageMemoryRequirements2KHR = nullptr; + PFN_vkGetImageSparseMemoryRequirements2KHR m_vkGetImageSparseMemoryRequirements2KHR = nullptr; + }; + +#endif // VK_KHR_get_memory_requirements2 + +#if VK_KHR_ray_tracing_position_fetch + + struct Ext_VK_KHR_ray_tracing_position_fetch : public VulkanDeviceFeaturesExtensionHelper< + VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR> + { + static constexpr auto Name = VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME; + explicit Ext_VK_KHR_ray_tracing_position_fetch( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper( Name, status ) + {} + void PrintFeatures() const override; + }; + +#endif // VK_KHR_ray_tracing_position_fetch + +#if VK_EXT_scalar_block_layout + + struct Ext_VK_EXT_scalar_block_layout : public VulkanDeviceFeaturesExtensionHelper< + VkPhysicalDeviceScalarBlockLayoutFeaturesEXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT> + { + static constexpr auto Name = VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME; + explicit Ext_VK_EXT_scalar_block_layout( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) + : VulkanDeviceFeaturesExtensionHelper( Name, status ) + {} + void PrintFeatures() const override; + }; + +#endif // VK_EXT_scalar_block_layout + +#if VK_KHR_get_physical_device_properties2 + + // Instance extension + struct Ext_VK_KHR_get_physical_device_properties2 : public VulkanFunctionPointerExtensionHelper + { + using tBase = VulkanFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME; + explicit Ext_VK_KHR_get_physical_device_properties2(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : tBase(Name, status) + {} + void LookupFunctionPointers(VkInstance vkInstance) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkGetPhysicalDeviceFeatures2KHR m_vkGetPhysicalDeviceFeatures2KHR = nullptr; + PFN_vkGetPhysicalDeviceFormatProperties2KHR m_vkGetPhysicalDeviceFormatProperties2KHR = nullptr; + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR m_vkGetPhysicalDeviceImageFormatProperties2KHR = nullptr; + PFN_vkGetPhysicalDeviceMemoryProperties2KHR m_vkGetPhysicalDeviceMemoryProperties2KHR = nullptr; + PFN_vkGetPhysicalDeviceProperties2KHR m_vkGetPhysicalDeviceProperties2KHR = nullptr; + }; + +#endif // VK_KHR_get_physical_device_properties2 + +#if VK_KHR_surface + + // Instance extension + struct Ext_VK_KHR_surface : public VulkanFunctionPointerExtensionHelper + { + using tBase = VulkanFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_SURFACE_EXTENSION_NAME; + explicit Ext_VK_KHR_surface( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void LookupFunctionPointers( VkInstance vkInstance ) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkDestroySurfaceKHR m_vkDestroySurfaceKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR m_vkGetPhysicalDeviceSurfaceFormatsKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR m_vkGetPhysicalDeviceSurfacePresentModesKHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceSupportKHR m_vkGetPhysicalDeviceSurfaceSupportKHR = nullptr; + }; + +#endif // VK_KHR_surface + +#if VK_KHR_get_surface_capabilities2 + + // Instance extension + struct Ext_VK_KHR_get_surface_capabilities2 : public VulkanFunctionPointerExtensionHelper + { + using tBase = VulkanFunctionPointerExtensionHelper; + static constexpr auto Name = VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME; + explicit Ext_VK_KHR_get_surface_capabilities2( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ) + {} + void LookupFunctionPointers( VkInstance vkInstance ) override; + void LookupFunctionPointers( VkDevice, PFN_vkGetDeviceProcAddr ) override {/*no device functions*/ } + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR m_vkGetPhysicalDeviceSurfaceCapabilities2KHR = nullptr; + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR m_vkGetPhysicalDeviceSurfaceFormats2KHR = nullptr; + }; + +#endif // VK_KHR_get_surface_capabilities2 + + // + // Vulkan 1.1 (VK_VERSION_1_1) provided features/properties. + // Same interface as other extensions but do not need to be added to the list of extension names on vkCreateDevice. + // + + struct Vulkan_SubgroupPropertiesHook : public VulkanExtension + { + static constexpr auto Name = "SubgroupProperties"; + using tBase = VulkanExtension; + Vulkan_SubgroupPropertiesHook& operator=( const Vulkan_SubgroupPropertiesHook& ) = delete; + Vulkan_SubgroupPropertiesHook( const Vulkan_SubgroupPropertiesHook& ) = delete; + explicit Vulkan_SubgroupPropertiesHook( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( Name, status ), m_GetPhysicalDevicePropertiesHook( this ), m_VulkanDevicePropertiesPrintHook( this ) + {} + VkPhysicalDeviceSubgroupProperties Properties { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES }; + + private: + void Register( Vulkan& vulkan ) override + { + vulkan.AddExtensionHooks( &m_GetPhysicalDevicePropertiesHook, &m_VulkanDevicePropertiesPrintHook ); + } + + friend class GetPhysicalDevicePropertiesHook; + friend class VulkanDevicePropertiesPrintHook; + GetPhysicalDevicePropertiesHook m_GetPhysicalDevicePropertiesHook; + VulkanDevicePropertiesPrintHook m_VulkanDevicePropertiesPrintHook; + + void PrintProperties() const; + }; + + struct Vulkan_StorageFeaturesHook : public VulkanExtension + { + static constexpr auto Name = "StorageFeatures"; + using tBase = VulkanExtension; + Vulkan_StorageFeaturesHook& operator=( const Vulkan_StorageFeaturesHook& ) = delete; + Vulkan_StorageFeaturesHook( const Vulkan_StorageFeaturesHook& ) = delete; + explicit Vulkan_StorageFeaturesHook( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) : tBase( std::string(), status ), m_DeviceCreateInfoHook(this), m_GetPhysicalDeviceFeaturesHook(this), m_VulkanDeviceFeaturePrintHook(this) + {} + VkPhysicalDevice16BitStorageFeatures AvailableFeatures { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR }; + + private: + friend class DeviceCreateInfoHook< Vulkan_StorageFeaturesHook, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR>; + friend class GetPhysicalDeviceFeaturesHook< Vulkan_StorageFeaturesHook, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR>; + friend class VulkanDeviceFeaturePrintHook< Vulkan_StorageFeaturesHook, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR>; + DeviceCreateInfoHook m_DeviceCreateInfoHook; + GetPhysicalDeviceFeaturesHook m_GetPhysicalDeviceFeaturesHook; + VulkanDeviceFeaturePrintHook m_VulkanDeviceFeaturePrintHook; + + void Register( Vulkan& vulkan ) override + { + vulkan.AddExtensionHooks( &m_DeviceCreateInfoHook, &m_GetPhysicalDeviceFeaturesHook, &m_VulkanDeviceFeaturePrintHook ); + } + virtual void PrintFeatures() const; + virtual void PopulateRequestedFeatures() { RequestedFeatures = AvailableFeatures; } + VkPhysicalDevice16BitStorageFeatures RequestedFeatures { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR }; + }; + +}; // namespace diff --git a/framework/code/vulkan/framebuffer.cpp b/framework/code/vulkan/framebuffer.cpp new file mode 100644 index 0000000..da539db --- /dev/null +++ b/framework/code/vulkan/framebuffer.cpp @@ -0,0 +1,185 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ + +#include "framebuffer.hpp" +#include "vulkan.hpp" +#include "system/os_common.h" +#include "texture/vulkan/texture.hpp" + + +//----------------------------------------------------------------------------- +Framebuffer::Framebuffer() +//----------------------------------------------------------------------------- +{ + // class is fully initialized by member constructors and member value initilization in the class definition +} + +//----------------------------------------------------------------------------- +Framebuffer& Framebuffer::operator=( const Framebuffer& other ) +//----------------------------------------------------------------------------- +{ + if (&other != this) + { + this->m_FrameBuffer = other.m_FrameBuffer; + this->m_Name = other.m_Name; + this->m_RenderPassClearData = other.m_RenderPassClearData.Copy(); + } + return *this; +} + +//----------------------------------------------------------------------------- +Framebuffer::Framebuffer( const Framebuffer& other) +//----------------------------------------------------------------------------- +{ + *this = other; +} + +//----------------------------------------------------------------------------- +bool Framebuffer::Initialize( Vulkan& vulkan, const RenderPass& renderPass, const std::span ColorAttachments, const Texture* pDepthAttachment, std::string name, const std::span ResolveAttachments, const Texture* pVRSAttachment ) +//----------------------------------------------------------------------------- +{ + VkResult RetVal; + + if (ColorAttachments.empty() && !pDepthAttachment) + { + assert( 0 && "Expect to have at least one color and/or a depth in a framebuffer" ); + return false; + } + + // check/get dimensions from color and/or depth (we assume/require they all match; change code if we need this to not be the case) + uint32_t width = ColorAttachments.empty() ? pDepthAttachment->Width : ColorAttachments.front().Width; + uint32_t height = ColorAttachments.empty() ? pDepthAttachment->Height : ColorAttachments.front().Height; + for (const auto& a: ColorAttachments) + { + if (a.Width != width || a.Height != height) + { + assert( 0 && "all color and depth buffers in a framebuffer should be same dimensions" ); + return false; + } + } + if (!m_RenderPassClearData.Initialize( ColorAttachments, pDepthAttachment )) + { + return false; + } + + std::vector attachments; + attachments.reserve( ColorAttachments.size() + 1/*depth*/ ); + + for (const auto& ColorAttachement: ColorAttachments) + { + attachments.push_back(ColorAttachement.GetVkImageView()); + } + if (pDepthAttachment && pDepthAttachment->Format != TextureFormat::UNDEFINED) + { + if (pDepthAttachment->Width != width || pDepthAttachment->Height != height) + { + assert( 0 && "all color and depth buffers in a framebuffer should be same dimensions" ); + return false; + } + attachments.push_back(pDepthAttachment->GetVkImageView()); + } + if (attachments.empty()) + { + assert( 0 && "Framebuffer must have color and/or depth buffer(s)" ); + return false; + } + for (const auto& ResolveAttachment : ResolveAttachments) + { + attachments.push_back( ResolveAttachment.GetVkImageView() ); + } + if (pVRSAttachment) + { + attachments.push_back( pVRSAttachment->GetVkImageView() ); + } + + fvk::VkFramebufferCreateInfo BufferInfo{{ + .flags = 0, + .renderPass = renderPass.mRenderPass, + .attachmentCount = (uint32_t)attachments.size(), + .pAttachments = attachments.data(), + .width = width, + .height = height, + .layers = 1 + }}; + + VkFramebuffer vkFramebuffer = VK_NULL_HANDLE; + RetVal = vkCreateFramebuffer(vulkan.m_VulkanDevice, &BufferInfo, NULL, &vkFramebuffer); + if (!CheckVkError("vkCreateFramebuffer()", RetVal)) + { + return false; + } + m_Name = std::move(name); + vulkan.SetDebugObjectName( vkFramebuffer, m_Name.c_str() ); + m_FrameBuffer = {vulkan.m_VulkanDevice, vkFramebuffer}; + + return true; +} + +//----------------------------------------------------------------------------- +void Framebuffer::Release() +//----------------------------------------------------------------------------- +{ + m_FrameBuffer = {}; +} + +//----------------------------------------------------------------------------- +bool RenderPassClearData::Initialize( const std::span ColorAttachments, + const Texture* pDepthAttachment ) +//----------------------------------------------------------------------------- +{ + if (ColorAttachments.empty() && !pDepthAttachment) + { + assert( 0 && "Expect to have at least one color and/or a depth in a framebuffer" ); + return false; + } + // check/get dimensions from color and/or depth (we assume/require they all match; change code if we need this to not be the case) + uint32_t width = ColorAttachments.empty() ? pDepthAttachment->Width : ColorAttachments.front().Width; + uint32_t height = ColorAttachments.empty() ? pDepthAttachment->Height : ColorAttachments.front().Height; + for (const auto& a : ColorAttachments) + { + if (a.Width != width || a.Height != height) + { + assert( 0 && "all color and depth buffers in a renderpass should be same dimensions" ); + return false; + } + } + + std::vector clearValues; + clearValues.reserve( ColorAttachments.size() + 1/*potentially depth*/ ); + + for (const auto& ColorAttachement : ColorAttachments) + { + clearValues.push_back( {ColorAttachement.GetVkClearValue()}); + } + if (pDepthAttachment && pDepthAttachment->Format != TextureFormat::UNDEFINED) + { + if (pDepthAttachment->Width != width || pDepthAttachment->Height != height) + { + assert( 0 && "all color and depth buffers in a renderpass should be same dimensions" ); + return false; + } + clearValues.push_back( pDepthAttachment->GetVkClearValue() ); + } + if (clearValues.empty()) + { + assert( 0 && "RenderpassClearData must have color and/or depth buffer(s)" ); + return false; + } + this->clearValues = std::move( clearValues ); + + // Viewport/scissor is set to defaults (up to end user to change if needed) + this->scissor = {.extent {.width = width, .height = height}}; + this->viewport = { + .width = (float)width, + .height = (float)height, + .minDepth = 0.0f, // sensible defaults but application may wish to override + .maxDepth = 1.0f // sensible defaults but application may wish to override + }; + + return true; +} diff --git a/framework/code/vulkan/framebuffer.hpp b/framework/code/vulkan/framebuffer.hpp new file mode 100644 index 0000000..ea4461d --- /dev/null +++ b/framework/code/vulkan/framebuffer.hpp @@ -0,0 +1,122 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include +#include "refHandle.hpp" + +// Forward declarations +template class RenderPass; +template class Texture; +class Vulkan; + + +/// Simple wrapper around VkFramebuffer (no DirectX equivalent). +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// This template class expected to be specialized (if this template throws compiler errors then the code is not using the specialization classes which is an issue!) +/// @ingroup Material +template +class Framebuffer +{ + Framebuffer& operator=( const Framebuffer& ) = delete; + Framebuffer( const Framebuffer& ) = delete; +public: + Framebuffer() noexcept = delete; + Framebuffer( Framebuffer&& ) noexcept = delete; + ~Framebuffer() = delete; + + static_assert(sizeof( Framebuffer ) >= 1); // Ensure this class template is specialized (and not used as-is) +}; + + +//============================================================================= +// RenderpassClearData +//============================================================================= +class RenderPassClearData +{ + RenderPassClearData( const RenderPassClearData& ) = default; // private but usable from Copy() + RenderPassClearData& operator=( const RenderPassClearData& ) = default; +public: + using Texture = Texture; + RenderPassClearData() noexcept = default; + RenderPassClearData( VkRect2D _scissor, VkViewport _viewport, std::vector _clearValues ) + : scissor{_scissor} + , viewport{_viewport} + , clearValues{std::move( _clearValues )} + { + } + + RenderPassClearData( RenderPassClearData&& ) noexcept = default; + RenderPassClearData& operator=( RenderPassClearData&& ) = default; + + bool Initialize( const std::span ColorAttachments, + const Texture* pDepthAttachment ); + + RenderPassClearData Copy() const { + return *this; // use the 'private' copy operator + } + + VkRect2D scissor {}; + VkViewport viewport {}; + std::vector clearValues; +}; + + +//============================================================================= +// Framebuffer +//============================================================================= + +/// Container for a framebuffer. +template<> +class Framebuffer final +{ +public: + using Texture = Texture; + using RenderPass = RenderPass; + using RefVkFramebuffer = RefHandle; + Framebuffer(); + ~Framebuffer() = default; + Framebuffer( const Framebuffer& ); + Framebuffer& operator=( const Framebuffer& ); + Framebuffer( Framebuffer&& ) noexcept = default; + Framebuffer& operator=( Framebuffer&& ) noexcept = default; + Framebuffer(RefVkFramebuffer framebuffer, VkRect2D renderArea, VkViewport viewport, std::vector clearValues, std::string name) noexcept + : m_FrameBuffer( std::move(framebuffer)) + , m_Name(std::move(name)) + , m_RenderPassClearData{renderArea, viewport, std::move(clearValues)} + {} + Framebuffer( RefVkFramebuffer framebuffer, RenderPassClearData clearData, std::string name ) noexcept + : m_FrameBuffer( std::move( framebuffer ) ) + , m_Name( std::move( name ) ) + , m_RenderPassClearData{std::move( clearData )} + {} + operator bool() const { return !!m_FrameBuffer; } + + /// @brief Initialize the framebuffer with (potentially) multiple color buffers (including depth and resolve buffers where applicable +// bool Initialize( Vulkan* pVulkan, const RenderTargetInitializeInfo& info, const char* pName ); + bool Initialize( Vulkan& vulkan, + const RenderPass& renderPass, + const std::span ColorAttachments, + const Texture* pDepthAttachment, + std::string name, + const std::span ResolveAttachments = {}, + const Texture* pVRSAttachment = nullptr); + void Release(); + operator VkFramebuffer() const { return m_FrameBuffer; } + const auto& GetRenderPassClearData() const { return m_RenderPassClearData; } ///< default clear data and framebuffer extents + + // Attributes +public: + RefVkFramebuffer m_FrameBuffer{}; +protected: + std::string m_Name; + RenderPassClearData m_RenderPassClearData; +}; diff --git a/framework/code/vulkan/refHandle.hpp b/framework/code/vulkan/refHandle.hpp new file mode 100644 index 0000000..ac22392 --- /dev/null +++ b/framework/code/vulkan/refHandle.hpp @@ -0,0 +1,125 @@ +//============================================================================================================ +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================================================ +#pragma once + +#include +#include +#include +#include "refHandleDestroyFuncs.hpp" + +/// +/// Reference counted handle to Vulkan object. +/// Use for sharing VkHandle across objects (and allowing this container to do destruction). +/// There is no DX12 equivalent because their objects are already ref counted with ComPtr. +/// +/// CANNOT be used by multiple threads +/// + +template +class RefHandle +{ +public: + RefHandle() noexcept + {} + + RefHandle(VkDevice _device, T _handle) noexcept + : handle(_handle) + , device(_device) + { + if (handle) + m_shared_ref_count = new std::atomic(1); + } + + RefHandle(const RefHandle& other) noexcept + : handle(other.handle) + , device(other.device) + , m_shared_ref_count(other.m_shared_ref_count) + { + if (m_shared_ref_count) + { + auto old_ref_count = m_shared_ref_count->fetch_add(1); + assert(old_ref_count > 0); + } + } + + RefHandle& operator=(const RefHandle& other) noexcept + { + if (this != &other) + { + free(); + if (other.m_shared_ref_count) + { + auto old_ref_count = other.m_shared_ref_count->fetch_add(1); + if (old_ref_count > 0) + { + handle = other.handle; + device = other.device; + m_shared_ref_count = other.m_shared_ref_count; + } + } + } + return *this; + } + + ~RefHandle() noexcept + { + free(); + } + + RefHandle(RefHandle&& other) noexcept + : handle(other.handle) + , device(other.device) + , m_shared_ref_count(other.m_shared_ref_count) + { + other.handle = VK_NULL_HANDLE; + other.device = VK_NULL_HANDLE; + other.m_shared_ref_count = nullptr; + } + + RefHandle& operator=(RefHandle&& other) noexcept + { + if (&other != this) + { + free(); + std::swap(handle, other.handle); + std::swap(device, other.device); + std::swap(m_shared_ref_count, other.m_shared_ref_count); + } + return *this; + } + + operator T() const { return get(); } + T get() const { return handle; } + VkDevice getDevice() const { return device; } + + T handle = {}; + +private: + VkDevice device = VK_NULL_HANDLE; + + void free() + { + if (m_shared_ref_count) + { + auto old_count = m_shared_ref_count->fetch_add(-1); + m_shared_ref_count = nullptr; + if (old_count == 1) + { + VulkanTraits::DestroyFn::Call(device, handle, nullptr); + } + handle = VK_NULL_HANDLE; + device = VK_NULL_HANDLE; + } + else + { + assert(handle == VK_NULL_HANDLE); + } + } + + std::atomic* m_shared_ref_count = nullptr; + +}; diff --git a/framework/code/vulkan/refHandleDestroyFuncs.hpp b/framework/code/vulkan/refHandleDestroyFuncs.hpp new file mode 100644 index 0000000..0e97721 --- /dev/null +++ b/framework/code/vulkan/refHandleDestroyFuncs.hpp @@ -0,0 +1,164 @@ +//============================================================================================================ +// +// +// Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + + +#include +#include +#include + +namespace VulkanTraits +{ + template + struct DestroyFn; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) + { + vkDestroyFramebuffer(device, framebuffer, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) + { + vkDestroyImageView(device, imageView, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) + { + vkDestroyImage(device, image, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) + { + vkDestroyBuffer(device, buffer, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) + { + vkDestroyShaderModule(device, shaderModule, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) + { + vkDestroyPipeline(device, pipeline, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkPipelineLayout layout, const VkAllocationCallbacks* pAllocator) + { + vkDestroyPipelineLayout(device, layout, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) + { + vkDestroyRenderPass(device, renderPass, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkDescriptorSetLayout layout, const VkAllocationCallbacks* pAllocator) + { + vkDestroyDescriptorSetLayout(device, layout, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkDescriptorPool pool, const VkAllocationCallbacks* pAllocator) + { + vkDestroyDescriptorPool(device, pool, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) + { + vkDestroySampler(device, sampler, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) + { + vkFreeMemory(device, memory, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) + { + vkDestroyFence(device, fence, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) + { + vkDestroySemaphore(device, semaphore, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) + { + vkDestroyCommandPool(device, commandPool, pAllocator); + } + }; + + template<> + struct DestroyFn + { + static void Call(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) + { + vkDestroySwapchainKHR(device, swapchain, pAllocator); + } + }; + +} // VulkanTraits \ No newline at end of file diff --git a/framework/code/vulkan/renderContext.cpp b/framework/code/vulkan/renderContext.cpp new file mode 100644 index 0000000..f3c0668 --- /dev/null +++ b/framework/code/vulkan/renderContext.cpp @@ -0,0 +1,355 @@ +#include "renderContext.hpp" +#include "allocator/threadBufferResource.hpp" + +namespace +{ + // TODO: Make the same function from vulkan.cpp public accessible and replace this with it + static constexpr VkAttachmentLoadOp InputUsageToVkAttachmentLoadOp(const RenderPassInputUsage t) + { + constexpr VkAttachmentLoadOp cRenderPassInputUsageToVk[]{ + VK_ATTACHMENT_LOAD_OP_CLEAR, + VK_ATTACHMENT_LOAD_OP_LOAD, + VK_ATTACHMENT_LOAD_OP_DONT_CARE + }; + return cRenderPassInputUsageToVk[(int)t]; + } +} + +//----------------------------------------------------------------------------- +VkRenderingAttachmentInfo RenderingAttachmentInfo::ToVkAttachmentInfo() const +//----------------------------------------------------------------------------- +{ + VkRenderingAttachmentInfo attachmentInfo = renderingAttachmentInfo; + attachmentInfo.resolveMode = VK_RESOLVE_MODE_NONE; + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + + // Color attachment + if (std::holds_alternative(v)) + { + const auto& info = std::get(v); + attachmentInfo.loadOp = InputUsageToVkAttachmentLoadOp(info.colorInputUsage); + attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + switch (info.colorOutputUsage) { + case RenderPassOutputUsage::Discard: + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + break; + case RenderPassOutputUsage::Store: + case RenderPassOutputUsage::StoreReadOnly: + case RenderPassOutputUsage::StoreTransferSrc: + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + break; + case RenderPassOutputUsage::Clear: + assert(0); // currently unsupported + break; + case RenderPassOutputUsage::Present: + break; + } + } + // Depth attachment + else if (std::holds_alternative(v)) + { + const auto& info = std::get(v); + attachmentInfo.loadOp = InputUsageToVkAttachmentLoadOp(info.clearDepth ? RenderPassInputUsage::Clear : RenderPassInputUsage::Load); + attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + switch (info.depthOutputUsage) { + case RenderPassOutputUsage::Discard: + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + break; + case RenderPassOutputUsage::Store: + case RenderPassOutputUsage::StoreReadOnly: + case RenderPassOutputUsage::StoreTransferSrc: + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + break; + case RenderPassOutputUsage::Clear: + assert(0); // currently unsupported + break; + case RenderPassOutputUsage::Present: + break; + } + } + // Not-specified, go with default values (might be expensive and not work well with local load/read) + else + { + attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + + if (renderingAttachmentInfo.imageLayout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) + { + attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + } + else if (renderingAttachmentInfo.imageLayout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL + || renderingAttachmentInfo.imageLayout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL) + { + attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + } + else + { + // Cannot decide if color or depth + assert(false); + } + } + + // Rendering local read override (check for original layout) + // Note: From the spec, VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR can be used as color/depth + // attachment, storage and input operations (barriers are need to ensure memory visibility) + if (renderingAttachmentInfo.imageLayout == VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR) + { + attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR; + } + + attachmentInfo.clearValue = clearValue.value_or(attachmentInfo.clearValue); + + return attachmentInfo; +} + +//----------------------------------------------------------------------------- +std::tuple, std::optional> RenderingAttachmentInfoGroup::ToVkAttachmentInfos() const +//----------------------------------------------------------------------------- +{ + core::ThreadAutomaticMonotonicMemoryResource threadMemoryResource; + std::pmr::vector colorInfos(threadMemoryResource); + colorInfos.reserve(colorCount); + + for (uint32_t i = 0; i < colorCount; ++i) + { + colorInfos.push_back(colorAttachments[i].ToVkAttachmentInfo()); + } + + std::optional depth_info; + if (depthAttachment.has_value()) + { + depth_info = depthAttachment->ToVkAttachmentInfo(); + } + + return { std::move(colorInfos), depth_info }; +} + +//----------------------------------------------------------------------------- +VkRect2D RenderingAttachmentInfoGroup::GetRenderArea() const +//----------------------------------------------------------------------------- +{ + VkRect2D renderArea = VkRect2D{ {0, 0}, {0, 0} }; + + for (int i = 0; i < colorCount; i++) + { + renderArea.extent.width = std::max(renderArea.extent.width, colorAttachments[i].renderArea.width); + renderArea.extent.height = std::max(renderArea.extent.height, colorAttachments[i].renderArea.height); + } + + if (depthAttachment) + { + renderArea.extent.width = std::max(renderArea.extent.width, depthAttachment->renderArea.width); + renderArea.extent.height = std::max(renderArea.extent.height, depthAttachment->renderArea.height); + } + + return renderArea; +} + +//----------------------------------------------------------------------------- +RenderContext::RenderContext( RenderContext&& other ) noexcept = default; +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +RenderContext& RenderContext::operator=( RenderContext&& other ) noexcept +//----------------------------------------------------------------------------- +{ + if (this != &other) + { + v = std::move( other.v ); + + viewMask = other.viewMask; + other.viewMask = {}; + subPass = other.subPass; + other.subPass = 0; + msaa = other.msaa; + other.msaa = Msaa::Samples1; + name = std::move( other.name ); + } + + return *this; +} + +//----------------------------------------------------------------------------- +RenderContext::RenderPassContextData& RenderContext::RenderPassContextData::operator=( RenderContext::RenderPassContextData&& other ) noexcept +//----------------------------------------------------------------------------- +{ + if (this != &other) + { + renderPass = std::move( other.renderPass ); + overridePipeline = std::move( other.overridePipeline); + framebuffer = std::move( other.framebuffer ); + renderPassClearData = std::move( other.renderPassClearData); + } + return *this; +} + +//----------------------------------------------------------------------------- +RenderContext::RenderContext( RenderPass _renderPass, Pipeline _pipeline, Framebuffer _framebuffer, std::string _name ) noexcept +//----------------------------------------------------------------------------- + : v{std::move( RenderPassContextData { + std::move( _renderPass ), std::move( _pipeline ), std::move( _framebuffer ), _framebuffer.GetRenderPassClearData().Copy() + } )} + , name{std::move( _name )} +{ +} + +//----------------------------------------------------------------------------- +RenderContext::RenderContext( RenderPass _renderPass, Framebuffer _framebuffer, std::string _name ) noexcept +//----------------------------------------------------------------------------- + : v{std::move( RenderPassContextData { + std::move( _renderPass ), Pipeline(), std::move(_framebuffer), _framebuffer.GetRenderPassClearData().Copy() + } )} + , name{std::move( _name )} +{ +} + +//----------------------------------------------------------------------------- +RenderContext::RenderContext(std::span _colorAttachmentFormats, TextureFormat _depthAttachmentFormat, TextureFormat _stencilAttachmentFormat, std::string _name ) noexcept +//----------------------------------------------------------------------------- + : v{std::move(DynamicRenderContextData { + [] (std::span formats) -> std::vector { + std::vector vkFormats; + vkFormats.reserve(formats.size()); + for (const auto& format : formats) + { + vkFormats.push_back(TextureFormatToVk(format)); + } + return vkFormats; + }(_colorAttachmentFormats), + TextureFormatToVk(_depthAttachmentFormat), + TextureFormatToVk(_stencilAttachmentFormat) + } )} + , name{std::move(_name)} +{ +} + + +//----------------------------------------------------------------------------- +RenderContext::RenderPassContextData::RenderPassContextData( RenderPass _renderPass, Pipeline _pipeline, Framebuffer _framebuffer, RenderPassClearData _renderPassClearData) noexcept + : renderPass{std::move( _renderPass )} + , overridePipeline{std::move( _pipeline )} + , framebuffer{std::move( _framebuffer )} + , renderPassClearData{std::move(_renderPassClearData)} +//----------------------------------------------------------------------------- +{ +} + +//----------------------------------------------------------------------------- +fvk::VkRenderPassBeginInfo RenderContext::GetRenderPassBeginInfo() const +//----------------------------------------------------------------------------- +{ + const RenderPassContextData& context = std::get( v ); + fvk::VkRenderPassBeginInfo renderPassBeginInfo{VkRenderPassBeginInfo{ + .renderPass = context.renderPass.mRenderPass, + .framebuffer = context.framebuffer, + .renderArea = context.renderPassClearData.scissor, + }}; + auto infoClearValues = renderPassBeginInfo.AddMemberArray(context.renderPassClearData.clearValues.size()); + std::copy( context.renderPassClearData.clearValues.begin(), context.renderPassClearData.clearValues.end(), infoClearValues.begin() ); + + return renderPassBeginInfo; +} + +//----------------------------------------------------------------------------- +fvk::VkRenderingInfo RenderContext::GetRenderingInfo(const RenderingAttachmentInfoGroup& renderingAttachmentInfoGroup, std::optional< VkRect2D> renderArea) const +//----------------------------------------------------------------------------- +{ + auto [colorAttachmentInfo, depthAttachmentInfo] = renderingAttachmentInfoGroup.ToVkAttachmentInfos(); + + const DynamicRenderContextData& context = std::get( v ); + fvk::VkRenderingInfo renderingInfo{VkRenderingInfo{ + .renderArea = renderArea ? renderArea.value() : renderingAttachmentInfoGroup.GetRenderArea(), + .layerCount = 1, + .pStencilAttachment = VK_NULL_HANDLE, + }}; + + auto colorAttachmentValues = renderingInfo.AddMemberArray(colorAttachmentInfo.size()); + std::copy(colorAttachmentInfo.begin(), colorAttachmentInfo.end(), colorAttachmentValues.begin()); + + if (depthAttachmentInfo) + { + auto depthAttachmentValue = renderingInfo.AddMemberArray(1); + depthAttachmentValue[0] = depthAttachmentInfo.value(); + } + + return renderingInfo; +} + +//----------------------------------------------------------------------------- +Pipeline RenderContext::GetOverridePipeline() const +//----------------------------------------------------------------------------- +{ + if (!IsDynamic()) + { + return std::get( v ).overridePipeline.Copy(); + } + else + return {}; +} + +//----------------------------------------------------------------------------- +RenderPassClearData RenderContext::GetRenderPassClearData() const +//----------------------------------------------------------------------------- +{ + if (!IsDynamic()) + { + return std::get( v ).renderPassClearData.Copy(); + } + else + return {}; +} + +//----------------------------------------------------------------------------- +RenderPass RenderContext::GetRenderPass() const +//----------------------------------------------------------------------------- +{ + if (!IsDynamic()) + { + return std::get( v ).renderPass.Copy(); + } + else + return {}; +} + +//----------------------------------------------------------------------------- +const Framebuffer* RenderContext::GetFramebuffer() const +//----------------------------------------------------------------------------- +{ + if (!IsDynamic()) + { + return &std::get( v ).framebuffer; + } + else + return nullptr; +} + +//----------------------------------------------------------------------------- +size_t RenderContext::GetNumColorAttachmentFormats() const +//----------------------------------------------------------------------------- +{ + if (IsDynamic()) + { + return std::get(v).colorAttachmentFormats.size(); + } + else + return 0; +} + +//----------------------------------------------------------------------------- +fvk::VkPipelineRenderingCreateInfo RenderContext::GetPipelineRenderingCreateInfo() const +//----------------------------------------------------------------------------- +{ + const DynamicRenderContextData& context = std::get( v ); + fvk::VkPipelineRenderingCreateInfo info{VkPipelineRenderingCreateInfo{ + .viewMask = viewMask, + .depthAttachmentFormat = context.depthAttachmentFormat, + .stencilAttachmentFormat = context.stencilAttachmentFormat + }}; + auto infoColorAttachments = info.AddMemberArray( context.colorAttachmentFormats.size() ); + std::copy( context.colorAttachmentFormats.begin(), context.colorAttachmentFormats.end(), infoColorAttachments.begin() ); + + return info; +} + diff --git a/framework/code/vulkan/renderContext.hpp b/framework/code/vulkan/renderContext.hpp new file mode 100644 index 0000000..2c29b79 --- /dev/null +++ b/framework/code/vulkan/renderContext.hpp @@ -0,0 +1,348 @@ +//============================================================================================================ +// +// +// Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause +// +//============================================================================================================ +#pragma once + +#include +#include +#include "graphicsApi/renderContext.hpp" +#include "material/vulkan/pipeline.hpp" //TODO: move or refactor +#include "vulkan.hpp" +#include "framebuffer.hpp" +#include "renderPass.hpp" +#include "vulkan/renderTarget.hpp" +#include "texture/texture.hpp" +#include "texture/textureFormat.hpp" // for msaa +#include "texture/vulkan/texture.hpp" + +// Forward declarations +class Vulkan; + +struct RenderingAttachmentInfo +{ + VkRenderingAttachmentInfo renderingAttachmentInfo{ VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO }; + std::optional clearValue; + VkExtent2D renderArea = {0, 0}; + + // this + struct ColorInfo + { + RenderPassInputUsage colorInputUsage = RenderPassInputUsage::Load; + RenderPassOutputUsage colorOutputUsage = RenderPassOutputUsage::Store; + }; + + // or this + struct DepthInfo + { + bool clearDepth = false; + RenderPassOutputUsage depthOutputUsage = RenderPassOutputUsage::Store; + }; + + std::variant v; + + RenderingAttachmentInfo() = default; + inline RenderingAttachmentInfo( + const Texture& _texture, + std::optional _clear = std::nullopt) + : clearValue(_clear) + , renderArea({ _texture.Width , _texture.Height }) + { + renderingAttachmentInfo.imageView = _texture.GetVkImageView(); + renderingAttachmentInfo.imageLayout = _texture.GetVkImageLayout(); + renderingAttachmentInfo.clearValue = clearValue.value_or(_texture.GetVkClearValue()); + } + + static RenderingAttachmentInfo Color( + const Texture& _texture, + RenderPassInputUsage _inputUsage, + RenderPassOutputUsage _outputUsage, + std::optional _clear = std::nullopt) + { + RenderingAttachmentInfo renderingAttachmentInfo(_texture, _clear); + renderingAttachmentInfo.v = ColorInfo{ _inputUsage , _outputUsage }; + return renderingAttachmentInfo; + } + + static RenderingAttachmentInfo Depth( + const Texture& _texture, + bool _clearDepth, + RenderPassOutputUsage _outputUsage, + std::optional _clear = std::nullopt) + { + RenderingAttachmentInfo renderingAttachmentInfo(_texture, _clear); + renderingAttachmentInfo.v = DepthInfo{ _clearDepth , _outputUsage }; + return renderingAttachmentInfo; + } + + /* + * Converts this struct into a Vulkan VkRenderingAttachmentInfo. + */ + VkRenderingAttachmentInfo ToVkAttachmentInfo() const; +}; + +struct RenderingAttachmentInfoGroup +{ + std::array colorAttachments; + uint32_t colorCount = 0; + std::optional depthAttachment; + + /* + * Constructs a RenderingAttachmentInfoGroup from a list of color attachments, an optional depth attachment, and an optional clear value override. + */ + inline RenderingAttachmentInfoGroup( + std::initializer_list colors, + std::optional depth = std::nullopt, + std::optional colorInputUsage = std::nullopt, + std::optional colorOutputUsage = std::nullopt, + std::optional clearDepth = std::nullopt, + std::optional depthOutputUsage = std::nullopt, + std::optional clearOverride = std::nullopt) + : colorCount(static_cast(colors.size())) + , depthAttachment(depth) + { + assert(colorCount <= colorAttachments.size()); + + std::copy(colors.begin(), colors.end(), colorAttachments.begin()); + + if (clearOverride.has_value()) ApplyClearValueToAll(clearOverride.value()); + + if (colorInputUsage || colorOutputUsage) + { + for (int i = 0; i < colorCount; i++) + { + colorAttachments[i].v = RenderingAttachmentInfo::ColorInfo(); + + if(colorInputUsage) std::get(colorAttachments[i].v).colorInputUsage = colorInputUsage.value(); + if(colorOutputUsage) std::get(colorAttachments[i].v).colorOutputUsage = colorOutputUsage.value(); + } + } + + if (depth && (clearDepth || depthOutputUsage)) + { + depthAttachment = RenderingAttachmentInfo(*depth); + depthAttachment->v = RenderingAttachmentInfo::DepthInfo(); + if (clearDepth && depthAttachment) std::get(depthAttachment->v).clearDepth = clearDepth.value(); + if (depthOutputUsage && depthAttachment) std::get(depthAttachment->v).depthOutputUsage = depthOutputUsage.value(); + } + } + + /* + * Constructs a RenderingAttachmentInfoGroup directly from Texture objects. + */ + inline RenderingAttachmentInfoGroup( + std::initializer_list> textures, + Texture* depth = nullptr, + std::optional colorInputUsage = std::nullopt, + std::optional colorOutputUsage = std::nullopt, + std::optional clearDepth = std::nullopt, + std::optional depthOutputUsage = std::nullopt, + std::optional clearOverride = std::nullopt) + { + assert(textures.size() <= colorAttachments.size()); + + for (const auto& tex : textures) colorAttachments[colorCount++] = RenderingAttachmentInfo(tex); + + if (clearOverride.has_value()) ApplyClearValueToAll(clearOverride.value()); + + if (colorInputUsage || colorOutputUsage) + { + for (int i = 0; i < colorCount; i++) + { + colorAttachments[i].v = RenderingAttachmentInfo::ColorInfo(); + + if(colorInputUsage) std::get(colorAttachments[i].v).colorInputUsage = colorInputUsage.value(); + if(colorOutputUsage) std::get(colorAttachments[i].v).colorOutputUsage = colorOutputUsage.value(); + } + } + + if (depth && (clearDepth || depthOutputUsage)) + { + depthAttachment = RenderingAttachmentInfo(*depth); + depthAttachment->v = RenderingAttachmentInfo::DepthInfo(); + if (clearDepth && depthAttachment) std::get(depthAttachment->v).clearDepth = clearDepth.value(); + if (depthOutputUsage && depthAttachment) std::get(depthAttachment->v).depthOutputUsage = depthOutputUsage.value(); + } + } + + /* + * Constructs a RenderingAttachmentInfoGroup directly from a span of Texture objects. + */ + inline RenderingAttachmentInfoGroup( + std::span> textures, + Texture* depth = nullptr, + std::optional colorInputUsage = std::nullopt, + std::optional colorOutputUsage = std::nullopt, + std::optional clearDepth = std::nullopt, + std::optional depthOutputUsage = std::nullopt, + std::optional clearOverride = std::nullopt) + { + assert(textures.size() <= colorAttachments.size()); + + for (const auto& tex : textures) {RenderingAttachmentInfo info(tex); colorAttachments[colorCount++] = info;} + + if (clearOverride.has_value()) ApplyClearValueToAll(clearOverride.value()); + + if (colorInputUsage || colorOutputUsage) + { + for (int i = 0; i < colorCount; i++) + { + colorAttachments[i].v = RenderingAttachmentInfo::ColorInfo(); + + if(colorInputUsage) std::get(colorAttachments[i].v).colorInputUsage = colorInputUsage.value(); + if(colorOutputUsage) std::get(colorAttachments[i].v).colorOutputUsage = colorOutputUsage.value(); + } + } + + if (depth && (clearDepth || depthOutputUsage)) + { + depthAttachment = RenderingAttachmentInfo(*depth); + depthAttachment->v = RenderingAttachmentInfo::DepthInfo(); + if (clearDepth && depthAttachment) std::get(depthAttachment->v).clearDepth = clearDepth.value(); + if (depthOutputUsage && depthAttachment) std::get(depthAttachment->v).depthOutputUsage = depthOutputUsage.value(); + } + } + + /* + * Constructs a RenderingAttachmentInfoGroup directly from a vulkan render target. + */ + inline RenderingAttachmentInfoGroup( + const RenderTarget& renderTarget, + std::optional colorInputUsage = std::nullopt, + std::optional colorOutputUsage = std::nullopt, + std::optional clearDepth = std::nullopt, + std::optional depthOutputUsage = std::nullopt, + std::optional clearOverride = std::nullopt) + { + assert(renderTarget.GetColorAttachments().size() <= colorAttachments.size()); + + for (const auto& attachment : renderTarget.GetColorAttachments()) {colorAttachments[colorCount++] = RenderingAttachmentInfo(attachment);} + + if (clearOverride.has_value()) ApplyClearValueToAll(clearOverride.value()); + + if (colorInputUsage || colorOutputUsage) + { + for (int i = 0; i < colorCount; i++) + { + colorAttachments[i].v = RenderingAttachmentInfo::ColorInfo(); + + if(colorInputUsage) std::get(colorAttachments[i].v).colorInputUsage = colorInputUsage.value(); + if(colorOutputUsage) std::get(colorAttachments[i].v).colorOutputUsage = colorOutputUsage.value(); + } + } + + if (!renderTarget.GetDepthAttachment().IsEmpty() && (clearDepth || depthOutputUsage)) + { + depthAttachment = RenderingAttachmentInfo(renderTarget.GetDepthAttachment()); + depthAttachment->v = RenderingAttachmentInfo::DepthInfo(); + if (clearDepth && depthAttachment) std::get(depthAttachment->v).clearDepth = clearDepth.value(); + if (depthOutputUsage && depthAttachment) std::get(depthAttachment->v).depthOutputUsage = depthOutputUsage.value(); + } + } + + inline bool AddColorAttachment(const RenderingAttachmentInfo& attachment) + { + if (colorCount >= colorAttachments.size()) + { + return false; + } + colorAttachments[colorCount++] = attachment; + return true; + } + + inline void SetDepthAttachment(const RenderingAttachmentInfo& attachment) + { + depthAttachment = attachment; + } + + inline void ApplyClearValueToAll(const VkClearValue& clear_value) + { + for (uint32_t i = 0; i < colorCount; ++i) + { + colorAttachments[i].clearValue = clear_value; + } + + if (depthAttachment.has_value()) + { + depthAttachment->clearValue = clear_value; + } + } + + std::tuple, std::optional> ToVkAttachmentInfos() const; + + VkRect2D GetRenderArea() const; +}; + +/// Context for a single dynamic rendering context +template<> +class RenderContext final +{ + using Texture = Texture; + + RenderContext( const RenderContext& ) noexcept = delete; + RenderContext& operator=( const RenderContext& ) noexcept = delete; +public: + RenderContext(RenderContext&&) noexcept; + RenderContext& operator=(RenderContext&&) noexcept; + + RenderContext() noexcept = default; + RenderContext(RenderPass, Pipeline, Framebuffer, std::string name) noexcept; + RenderContext(RenderPass, Framebuffer, std::string name) noexcept; + RenderContext(std::span, TextureFormat, TextureFormat, std::string name) noexcept; + + // this + struct RenderPassContextData { + RenderPassContextData( RenderPass, Pipeline, Framebuffer, RenderPassClearData) noexcept; + RenderPassContextData& operator=( RenderPassContextData&& other ) noexcept; + RenderPassContextData( RenderPassContextData&& other ) noexcept = default; + + RenderPass renderPass{}; + Pipeline overridePipeline{}; + Framebuffer framebuffer{}; + RenderPassClearData renderPassClearData{}; + }; + + uint32_t viewMask = 0; + uint32_t subPass = 0; + Msaa msaa = Msaa::Samples1; + + // or this + struct DynamicRenderContextData { + std::vector colorAttachmentFormats; + VkFormat depthAttachmentFormat = VK_FORMAT_UNDEFINED; + VkFormat stencilAttachmentFormat = VK_FORMAT_UNDEFINED; + }; + + std::variant v; + + bool IsDynamic() const { return std::holds_alternative(v); } + fvk::VkRenderPassBeginInfo GetRenderPassBeginInfo() const; // render pass rendering + fvk::VkRenderingInfo GetRenderingInfo(const RenderingAttachmentInfoGroup&, std::optional< VkRect2D> = std::nullopt) const; // dynamic rendering + + Pipeline GetOverridePipeline() const; + RenderPass GetRenderPass() const; + const Framebuffer* GetFramebuffer() const; + size_t GetNumColorAttachmentFormats() const; + fvk::VkPipelineRenderingCreateInfo GetPipelineRenderingCreateInfo() const; + RenderPassClearData GetRenderPassClearData() const; + + std::string name {}; +}; + + +// /// Dynamic Rendering Context +// struct RenderingContext +// { +// RenderingContext() = default; +// RenderingContext(const RenderingPassContext& passContext) +// : passContexts({ passContext }) +// { +// } + +// std::vector< VkSampleCountFlagBits> passMultisample; +// std::vector< RenderingPassContext> passContexts; +// }; + diff --git a/framework/code/vulkan/renderPass.cpp b/framework/code/vulkan/renderPass.cpp new file mode 100644 index 0000000..620d1fb --- /dev/null +++ b/framework/code/vulkan/renderPass.cpp @@ -0,0 +1,38 @@ +//============================================================================= +// +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "renderPass.hpp" +#include "texture/textureFormat.hpp" +#include "vulkan/vulkan.hpp" + +// Forward declarations +class Vulkan; + + +RenderPass::RenderPass() noexcept +{ +} + +RenderPass::~RenderPass() +{ +} + +RenderPass::RenderPass(VkDevice device, VkRenderPass renderPass) noexcept + : mRenderPass(device, renderPass) +{ +} + +RenderPass CreateRenderPass( Vulkan& vulkan, std::span ColorFormats, TextureFormat DepthFormat, Msaa Msaa, RenderPassInputUsage ColorInputUsage, RenderPassOutputUsage ColorOutputUsage, bool ShouldClearDepth, RenderPassOutputUsage DepthOutputUsage, std::span < const TextureFormat > ResolveFormats ) +{ + RenderPass renderPass{}; + if (!vulkan.CreateRenderPass(ColorFormats, DepthFormat, Msaa, ColorInputUsage, ColorOutputUsage, ShouldClearDepth, DepthOutputUsage, renderPass, ResolveFormats)) + { + return RenderPass{}; + } + return renderPass; +} diff --git a/framework/code/vulkan/renderPass.hpp b/framework/code/vulkan/renderPass.hpp new file mode 100644 index 0000000..f112183 --- /dev/null +++ b/framework/code/vulkan/renderPass.hpp @@ -0,0 +1,67 @@ +//============================================================================= +// +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include +#include +#include "graphicsApi/graphicsApiBase.hpp" +#include "vulkan/refHandle.hpp" +#include "graphicsApi/renderPass.hpp" +#include + +// Forward declarations +class Vulkan; +enum class Msaa; +enum class TextureFormat; + + +/// Simple wrapper around VkRenderPass. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// Specialization of RenderPass +/// @ingroup Vulkan +template<> +class RenderPass +{ + RenderPass& operator=(const RenderPass&) = delete; +public: + RenderPass() noexcept; + RenderPass( RenderPass&& other ) noexcept = default; + RenderPass& operator=( RenderPass&& other ) noexcept = default; + + RenderPass(VkDevice device, VkRenderPass renderPass) noexcept; + //RenderPass& operator=( VkRenderPass renderPass ) noexcept { + // assert( mRenderPass == VK_NULL_HANDLE ); + // mRenderPass = renderPass; + // return *this; + //} + ~RenderPass(); + operator bool() const { return mRenderPass != VK_NULL_HANDLE; } + + RenderPass Copy() const { return RenderPass{*this}; } + + RefHandle mRenderPass; + +private: + RenderPass( const RenderPass& src ) noexcept { + mRenderPass = src.mRenderPass; + } +}; + + +RenderPass CreateRenderPass( Vulkan& vulkan, + std::span < const TextureFormat > ColorFormats, + TextureFormat DepthFormat, + Msaa Msaa, + RenderPassInputUsage ColorInputUsage, + RenderPassOutputUsage ColorOutputUsage, + bool ShouldClearDepth, + RenderPassOutputUsage DepthOutputUsage, + std::span < const TextureFormat > ResolveFormats); + +//RenderPass CreateRenderPass( Vulkan& vulkan, +// const VkRenderPassCreateInfo& ); diff --git a/framework/code/vulkan/renderTarget.cpp b/framework/code/vulkan/renderTarget.cpp index 1760afe..89a7c75 100644 --- a/framework/code/vulkan/renderTarget.cpp +++ b/framework/code/vulkan/renderTarget.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,37 +9,36 @@ #include "renderTarget.hpp" #include "system/os_common.h" -//============================================================================= -// CRenderTarget -//============================================================================= //----------------------------------------------------------------------------- -CRenderTarget::CRenderTarget() +RenderTarget::RenderTarget() //----------------------------------------------------------------------------- { // class is fully initialized by member constructors and member value initilization in the class definition } //----------------------------------------------------------------------------- -CRenderTarget::~CRenderTarget() +RenderTarget::~RenderTarget() //----------------------------------------------------------------------------- { - Release(true/*assume we own the framebuffers*/); + Release(); } //----------------------------------------------------------------------------- -CRenderTarget::CRenderTarget( CRenderTarget&& src ) noexcept +RenderTarget::RenderTarget( RenderTarget&& src ) noexcept +//----------------------------------------------------------------------------- { *this = std::move( src ); } -//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -CRenderTarget& CRenderTarget::operator=( CRenderTarget&& src) noexcept +RenderTarget& RenderTarget::operator=( RenderTarget&& src) noexcept //----------------------------------------------------------------------------- { if (this != &src) { + Release(); // Release first so textures get freed! + m_Name = std::move(src.m_Name); m_Width = src.m_Width; src.m_Width = 0; @@ -54,10 +53,8 @@ CRenderTarget& CRenderTarget::operator=( CRenderTarget&& src) noexcept m_ClearColorValues = std::move( src.m_ClearColorValues ); m_ResolveAttachments = std::move( src.m_ResolveAttachments ); m_DepthAttachment = std::move( src.m_DepthAttachment ); - m_FrameBuffer = src.m_FrameBuffer; - src.m_FrameBuffer = VK_NULL_HANDLE; - m_FrameBufferDepthOnly = src.m_FrameBufferDepthOnly; - src.m_FrameBufferDepthOnly = VK_NULL_HANDLE; + m_FrameBuffer = std::move( src.m_FrameBuffer ); + m_FrameBufferDepthOnly = std::move( src.m_FrameBufferDepthOnly ); m_pVulkan = src.m_pVulkan; src.m_pVulkan = nullptr; @@ -66,18 +63,37 @@ CRenderTarget& CRenderTarget::operator=( CRenderTarget&& src) noexcept return *this; } + //----------------------------------------------------------------------------- -bool CRenderTarget::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, std::span Msaa, const char* pName) +bool RenderTarget::Initialize( Vulkan* pVulkan, const RenderTargetInitializeInfo& info, const char* pName, const RenderPass* renderPass, const RenderPass* renderPassDepthOnly ) //----------------------------------------------------------------------------- { + const size_t numColorAttachments = info.LayerFormats.size(); + m_pVulkan = pVulkan; - m_DepthFormat = DepthFormat; - m_Msaa.assign(Msaa.begin(), Msaa.end()); - m_Msaa.resize( pLayerFormats.size(), VK_SAMPLE_COUNT_1_BIT ); - m_FilterMode.resize(pLayerFormats.size(), SamplerFilter::Linear); + m_DepthFormat = info.DepthFormat; + m_Msaa.assign( info.Msaa.begin(), info.Msaa.end() ); + if (info.Msaa.empty()) + m_Msaa.resize( numColorAttachments, Msaa::Samples1 ); + else + m_Msaa.resize( numColorAttachments, m_Msaa.back() ); + + m_FilterMode.assign( info.FilterModes.begin(), info.FilterModes.end() ); + if (info.FilterModes.empty()) + m_FilterMode.resize( numColorAttachments, SamplerFilter::Linear ); + else + m_FilterMode.resize( numColorAttachments, info.FilterModes.back() ); + + std::vector colorTextureTypes {info.TextureTypes.begin(), info.TextureTypes.end()}; + if (info.TextureTypes.empty()) + colorTextureTypes.resize( numColorAttachments, TT_RENDER_TARGET ); + else + colorTextureTypes.resize( numColorAttachments, info.TextureTypes.back() ); + + std::optional depthTextureType = info.DepthTextureType; - m_Width = uiWidth; - m_Height = uiHeight; + m_Width = info.Width; + m_Height = info.Height; // If we have a name, save it if (pName != NULL) @@ -86,23 +102,79 @@ bool CRenderTarget::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHei } m_ColorAttachments.clear(); - m_ClearColorValues.resize(pLayerFormats.size(), {{ 0.0f, 0.0f, 0.0f, 0.0f }}); + m_ClearColorValues.resize( numColorAttachments, {{ 0.0f, 0.0f, 0.0f, 0.0f }} ); m_ResolveAttachments.clear(); - m_pLayerFormats.assign( pLayerFormats.begin(), pLayerFormats.end() ); + m_pLayerFormats.assign( info.LayerFormats.begin(), info.LayerFormats.end() ); + + if (!InitializeDepth(depthTextureType)) + return false; + if (!InitializeColor(colorTextureTypes)) + return false; + if (!InitializeResolve( info.ResolveTextureFormats )) + return false; + if (renderPass && *renderPass && !CreateFrameBuffer( *renderPass, m_ColorAttachments, &m_DepthAttachment, m_ResolveAttachments, nullptr/*pVRSAttachment*/, &m_FrameBuffer )) + return false; + if (renderPassDepthOnly && *renderPassDepthOnly && m_DepthAttachment && !CreateFrameBuffer( *renderPassDepthOnly, {}, &m_DepthAttachment, m_ResolveAttachments, nullptr/*pVRSAttachment*/, &m_FrameBufferDepthOnly )) + return false; return true; } + //----------------------------------------------------------------------------- -bool CRenderTarget::InitializeDepth() +bool RenderTarget::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, const char* pName, const std::span TextureTypes, std::span Multisample, const std::span ResolveTextureFormats, const std::span FilterModes) +//----------------------------------------------------------------------------- +{ + const RenderTargetInitializeInfo info{ + .Width = uiWidth, + .Height = uiHeight, + .LayerFormats = pLayerFormats, + .DepthFormat = DepthFormat, + .TextureTypes = TextureTypes, + .Msaa = Multisample, + .ResolveTextureFormats = ResolveTextureFormats, + .FilterModes = FilterModes + }; + return Initialize( pVulkan, info, pName, nullptr, nullptr ); +} + +////----------------------------------------------------------------------------- +//bool RenderTarget::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureVulkan* inheritDepth, Msaa msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) +////----------------------------------------------------------------------------- +//{ +// if (!Initialize( pVulkan, uiWidth, uiHeight, pLayerFormats, TextureFormat::UNDEFINED/*depth*/, msaa, pName )) +// return false; +// if (inheritDepth) +// m_DepthAttachment = std::move( TextureVulkan( inheritDepth->Width, inheritDepth->Height, inheritDepth->Depth, inheritDepth->MipLevels, inheritDepth->FirstMip, inheritDepth->Faces, inheritDepth->FirstFace, inheritDepth->Format, inheritDepth->ImageLayout, inheritDepth->ClearValue, inheritDepth->Image, inheritDepth->Sampler, inheritDepth->ImageView ) ); +//} + + +//----------------------------------------------------------------------------- +bool RenderTarget::InitializeFrameBuffer( Vulkan* pVulkan, const RenderPass& renderPass ) +//----------------------------------------------------------------------------- +{ + bool success = CreateFrameBuffer( renderPass, m_ColorAttachments, &m_DepthAttachment, m_ResolveAttachments, nullptr, &m_FrameBuffer ); + return success; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::InitializeFrameBufferDepthOnly( Vulkan* pVulkan, const RenderPass& renderPassDepthOnly ) +//----------------------------------------------------------------------------- +{ + bool success = CreateFrameBuffer( renderPassDepthOnly, {}, &m_DepthAttachment, {}, nullptr, &m_FrameBufferDepthOnly ); + return success; +} + +//----------------------------------------------------------------------------- +bool RenderTarget::InitializeDepth(std::optional textureType) //----------------------------------------------------------------------------- { if (m_DepthFormat != TextureFormat::UNDEFINED) { char szName[256]; sprintf(szName, "%s: Depth", m_Name.c_str()); - m_DepthAttachment = CreateTextureObject(*m_pVulkan, m_Width, m_Height, m_DepthFormat, TT_DEPTH_TARGET, m_Name.c_str(), m_Msaa.empty() ? VK_SAMPLE_COUNT_1_BIT : m_Msaa[0]); + m_DepthAttachment = CreateTextureObject(*m_pVulkan, m_Width, m_Height, m_DepthFormat, TT_DEPTH_TARGET, m_Name.c_str(), m_Msaa.empty() ? Msaa::Samples1 : m_Msaa[0]); } else { @@ -112,7 +184,7 @@ bool CRenderTarget::InitializeDepth() } //----------------------------------------------------------------------------- -bool CRenderTarget::InitializeColor(const std::span TextureTypes) +bool RenderTarget::InitializeColor(const std::span TextureTypes) //----------------------------------------------------------------------------- { const auto NumColorLayers = GetNumColorLayers(); @@ -147,7 +219,7 @@ bool CRenderTarget::InitializeColor(const std::span TextureT } //----------------------------------------------------------------------------- -bool CRenderTarget::InitializeResolve(const std::span ResolveTextureFormats) +bool RenderTarget::InitializeResolve(const std::span ResolveTextureFormats) //----------------------------------------------------------------------------- { m_ResolveAttachments.clear(); @@ -163,7 +235,7 @@ bool CRenderTarget::InitializeResolve(const std::span Resol char szName[256]; for (size_t WhichLayer = 0; WhichLayer < NumColorLayers; WhichLayer++) { - if (m_Msaa[WhichLayer] != VK_SAMPLE_COUNT_1_BIT && WhichLayer < ResolveTextureFormats.size() && ResolveTextureFormats[WhichLayer] != TextureFormat::UNDEFINED) + if (m_Msaa[WhichLayer] != Msaa::Samples1 && WhichLayer < ResolveTextureFormats.size() && ResolveTextureFormats[WhichLayer] != TextureFormat::UNDEFINED) { sprintf(szName, "%s: Color Resolve", m_Name.c_str()); @@ -176,10 +248,11 @@ bool CRenderTarget::InitializeResolve(const std::span Resol } //----------------------------------------------------------------------------- -bool CRenderTarget::InitializeFrameBuffer(VkRenderPass renderPass, const std::span ColorAttachments, const TextureVulkan* pDepthAttachment, const std::span ResolveAttachments, const TextureVulkan* pVRSAttachment, VkFramebuffer* pFramebuffer ) +bool RenderTarget::CreateFrameBuffer(const RenderPass& renderPass, const std::span ColorAttachments, const TextureVulkan* pDepthAttachment, const std::span ResolveAttachments, const TextureVulkan* pVRSAttachment, Framebuffer* pFramebuffer ) //----------------------------------------------------------------------------- { VkResult RetVal; + assert( pFramebuffer ); // ... then attach them to the render target std::vector attachments; @@ -202,26 +275,21 @@ bool CRenderTarget::InitializeFrameBuffer(VkRenderPass renderPass, const std::sp attachments.push_back( pVRSAttachment->GetVkImageView() ); } - VkFramebufferCreateInfo BufferInfo{VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO}; - BufferInfo.flags = 0; - BufferInfo.renderPass = renderPass; - BufferInfo.attachmentCount = (uint32_t)attachments.size(); - BufferInfo.pAttachments = attachments.data(); - BufferInfo.width = m_Width; - BufferInfo.height = m_Height; - BufferInfo.layers = 1; - - RetVal = vkCreateFramebuffer(m_pVulkan->m_VulkanDevice, &BufferInfo, NULL, pFramebuffer); - if (!CheckVkError("vkCreateFramebuffer()", RetVal)) - { - return false; - } - - return true; + fvk::VkFramebufferCreateInfo BufferInfo{{ + .flags = 0, + .renderPass = renderPass.mRenderPass, + .attachmentCount = (uint32_t)attachments.size(), + .pAttachments = attachments.data(), + .width = m_Width, + .height = m_Height, + .layers = 1 + }}; + + return pFramebuffer->Initialize( *m_pVulkan, renderPass, ColorAttachments, pDepthAttachment, m_Name, ResolveAttachments, pVRSAttachment ); } //----------------------------------------------------------------------------- -void CRenderTarget::SetClearColors(const std::span clearColors) +void RenderTarget::SetClearColors(const std::span clearColors) //----------------------------------------------------------------------------- { assert(clearColors.size() == m_ColorAttachments.size()); @@ -229,7 +297,7 @@ void CRenderTarget::SetClearColors(const std::span clea } //----------------------------------------------------------------------------- -void CRenderTarget::Release(bool bReleaseFramebuffers) +void RenderTarget::Release() //----------------------------------------------------------------------------- { if (m_pVulkan == nullptr) @@ -255,13 +323,8 @@ void CRenderTarget::Release(bool bReleaseFramebuffers) m_DepthAttachment.Release(m_pVulkan); m_DepthFormat = TextureFormat::UNDEFINED; - if (m_FrameBufferDepthOnly != VK_NULL_HANDLE && bReleaseFramebuffers) - vkDestroyFramebuffer(m_pVulkan->m_VulkanDevice, m_FrameBufferDepthOnly, NULL); - m_FrameBufferDepthOnly = VK_NULL_HANDLE; - - if (m_FrameBuffer != VK_NULL_HANDLE && bReleaseFramebuffers) - vkDestroyFramebuffer(m_pVulkan->m_VulkanDevice, m_FrameBuffer, NULL); - m_FrameBuffer = VK_NULL_HANDLE; + m_FrameBufferDepthOnly = {}; + m_FrameBuffer = {}; m_Height = 0; m_Width = 0; diff --git a/framework/code/vulkan/renderTarget.hpp b/framework/code/vulkan/renderTarget.hpp index fc825a5..7ea397f 100644 --- a/framework/code/vulkan/renderTarget.hpp +++ b/framework/code/vulkan/renderTarget.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,108 +11,255 @@ #include #include #include +#include "graphicsApi/renderTarget.hpp" +#include "vulkan/renderPass.hpp" #include "texture/vulkan/texture.hpp" #include "vulkan.hpp" //#include "TextureFuncts.h" #include "system/os_common.h" //============================================================================= -// CRenderTarget +// RenderTarget //============================================================================= /// Container for a single frame render target. /// Contains multiple color buffers, multiple resolve buffers, and an optional depth buffer. -class CRenderTarget +/// A Framebuffer object is created given a valid render pass is passed on initialization. +template<> +class RenderTarget final : public RenderTargetBase { // Functions - CRenderTarget(const CRenderTarget&) = delete; - CRenderTarget& operator=(const CRenderTarget&) = delete; + RenderTarget(const RenderTarget&) = delete; + RenderTarget& operator=(const RenderTarget&) = delete; public: - CRenderTarget(); - ~CRenderTarget(); - CRenderTarget( CRenderTarget&& ) noexcept; - CRenderTarget& operator=( CRenderTarget&& ) noexcept; + RenderTarget(); + ~RenderTarget(); + RenderTarget( RenderTarget&& ) noexcept; + RenderTarget& operator=( RenderTarget&& ) noexcept; + + /// @brief Initialize the render target with (potentially) multiple color buffers (including depth and resolve buffers where applicable + bool Initialize( Vulkan* pVulkan, const RenderTargetInitializeInfo& info, const char* pName, const RenderPass* renderPass = nullptr, const RenderPass* renderPassDepthOnly = nullptr ); + + /// @brief Initialize the render target with (potentially) multiple color buffers (including depth and resolve buffers where applicable + /// @param uiWidth + /// @param uiHeight + /// @param pLayerFormats color buffer formats + /// @param DepthFormat depth buffer format (optional) + /// @param pName + /// @param TextureTypes initial usage/type of render target (defualts to TT_RENDER_TARGET if empty span) + /// @param msaa multisampling setting of color buffer (can be one setting, which is copied to all buffers). Default Sample1 if empty span + /// @param ResolveTextureFormats resolve buffer formats (if msaa used) + /// @return true on success + bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, const char* pName = NULL, const std::span TextureTypes = {}, std::span msaa = {}, const std::span ResolveTextureFormats = {}, const std::span FilterModes = {}); + bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, Msaa msaa = Msaa::Samples1, const char* pName = NULL) + { + return Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, DepthFormat, pName, {/* texture type*/}, {&msaa,1}); + } + + /* + * Helper functions to manually initialize the framebuffers. + * These functions are intended to be used when the main Initialize() function is called without a render pass. + * In such cases, the user must explicitly call these functions with a valid render pass to complete framebuffer setup. + * @param pVulkan : Pointer to the Vulkan context + * @param renderPass / renderPassDepthOnly : Valid render pass used to create the framebuffer(s) + * @return true on successful framebuffer creation + * @note These functions provide manual control over framebuffer creation, useful for advanced or staged initialization flows. + */ + bool InitializeFrameBuffer(Vulkan* pVulkan, const RenderPass& renderPass); + bool InitializeFrameBufferDepthOnly(Vulkan* pVulkan, const RenderPass& renderPassDepthOnly); + + void Release(); + + inline uint32_t GetNumColorLayers() const + { + return static_cast(m_pLayerFormats.size()); + } + + /* + * Get the name of the render target + * @return std::string reference to the name + */ + inline const std::string& GetName() const + { + return m_Name; + } - uint32_t GetNumColorLayers() const { return (uint32_t)m_pLayerFormats.size(); } + /* + * Get the width of the render target + * @return uint32_t width + */ + inline uint32_t GetWidth() const + { + return m_Width; + } + + /* + * Get the height of the render target + * @return uint32_t height + */ + inline uint32_t GetHeight() const + { + return m_Height; + } + + /* + * Get the color layer formats + * @return const reference to vector of TextureFormat + */ + inline const std::vector& GetLayerFormats() const + { + return m_pLayerFormats; + } - bool Initialize( Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, std::span Msaa = {}, const char* pName = NULL); - bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, VkSampleCountFlagBits Msaa = VK_SAMPLE_COUNT_1_BIT, const char* pName = NULL) + /* + * Get the MSAA settings + * @return const reference to vector of Msaa + */ + inline const std::vector& GetMsaa() const { - return Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, DepthFormat, { &Msaa,1 }, pName); + return m_Msaa; } + + /* + * Get the filter modes + * @return const reference to vector of SamplerFilter + */ + inline const std::vector& GetFilterModes() const + { + return m_FilterMode; + } + + /* + * Get the depth format + * @return TextureFormat depth format + */ + inline TextureFormat GetDepthFormat() const + { + return m_DepthFormat; + } + + /* + * Get the color attachments + * @return const reference to vector of TextureVulkan + */ + inline const std::vector& GetColorAttachments() const + { + return m_ColorAttachments; + } + + /* + * Get the clear color values + * @return const reference to vector of VkClearColorValue + */ + inline const std::vector& GetClearColorValues() const + { + return m_ClearColorValues; + } + + /* + * Get the resolve attachments + * @return const reference to vector of TextureVulkan + */ + inline const std::vector& GetResolveAttachments() const + { + return m_ResolveAttachments; + } + + /* + * Get the depth attachment + * @return const reference to TextureVulkan + */ + inline const TextureVulkan& GetDepthAttachment() const + { + return m_DepthAttachment; + } + + /* + * Get the framebuffer + * @return const reference to Framebuffer + */ + inline const Framebuffer& GetFrameBuffer() const + { + return m_FrameBuffer; + } + + /* + * Get the depth-only framebuffer + * @return const reference to Framebuffer + */ + inline const Framebuffer& GetFrameBufferDepthOnly() const + { + return m_FrameBufferDepthOnly; + } + private: - template friend class CRenderTargetArray; - bool InitializeDepth(); + template friend class RenderTargetArray; + bool InitializeDepth(std::optional textureType); bool InitializeColor(const std::span TextureTypes); bool InitializeResolve(const std::span ResolveTextureFormats); - // Allow buffers to be initialized from the swapchain (for render target that writes to the swapchain) - bool InitializeColor(const SwapchainBuffers& SwapchainBuffer); - bool InitializeResolve(const SwapchainBuffers& SwapchainBuffer); - - bool InitializeFrameBuffer(VkRenderPass renderPass, const std::span ColorAttachments, const TextureVulkan* pDepthAttachment, const std::span ResolveAttachments, const TextureVulkan* pVRSAttachment, VkFramebuffer* pFramebuffer); + bool CreateFrameBuffer(const RenderPass& renderPass, const std::span ColorAttachments, const TextureVulkan* pDepthAttachment, const std::span ResolveAttachments, const TextureVulkan* pVRSAttachment, Framebuffer* pFrameBuffer); void SetClearColors(const std::span clearColors); - void Release(bool bReleaseFramebuffers /*set true if we are the owner of the framebuffers (and so want to clean them up)*/); - // Attributes public: - std::string m_Name; + std::string m_Name; - uint32_t m_Width = 0; - uint32_t m_Height = 0; + uint32_t m_Width = 0; + uint32_t m_Height = 0; - std::vector m_pLayerFormats; - std::vector m_Msaa; - std::vector m_FilterMode; - TextureFormat m_DepthFormat = TextureFormat::UNDEFINED; + std::vector m_pLayerFormats; + std::vector m_Msaa; + std::vector m_FilterMode; + TextureFormat m_DepthFormat = TextureFormat::UNDEFINED; // The Color Attachments - std::vector m_ColorAttachments; + std::vector m_ColorAttachments; std::vector m_ClearColorValues; // The Resolve Attachments - std::vector m_ResolveAttachments; + std::vector m_ResolveAttachments; // The Depth Attachment - TextureVulkan m_DepthAttachment; + TextureVulkan m_DepthAttachment; // The Frame Buffer - VkFramebuffer m_FrameBuffer = VK_NULL_HANDLE; + Framebuffer m_FrameBuffer; // The Frame Buffer (depth only) - VkFramebuffer m_FrameBufferDepthOnly = VK_NULL_HANDLE; + Framebuffer m_FrameBufferDepthOnly; private: - Vulkan* m_pVulkan = nullptr; + Vulkan* m_pVulkan = nullptr; }; +#if 0 /// Fixed size array of CRenderTargets (eg one per 'frame') that share RenderPass objects template -class CRenderTargetArray +class RenderTargetArray { - CRenderTargetArray(const CRenderTargetArray&) = delete; - CRenderTargetArray& operator=(const CRenderTargetArray&) = delete; + RenderTargetArray(const RenderTargetArray&) = delete; + RenderTargetArray& operator=(const RenderTargetArray&) = delete; public: - CRenderTargetArray() = default; - ~CRenderTargetArray(); - CRenderTargetArray( CRenderTargetArray&& src ) noexcept; - CRenderTargetArray& operator=(CRenderTargetArray &&) noexcept; + RenderTargetArray() = default; + ~RenderTargetArray(); + RenderTargetArray( RenderTargetArray&& src ) noexcept; + RenderTargetArray& operator=(RenderTargetArray &&) noexcept; /// @brief initialize the render target array (including depth) with the given dimensions and buffer formats. /// Creates VkRenderPasses for color and depth only passes (for the purpose of creating the pipeline). Creates the pipeline referencing these buffers (and one for depth only rendering). /// @return true if successful - bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, VkSampleCountFlagBits Msaa = VK_SAMPLE_COUNT_1_BIT, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE, std::span ResolveFormats = {}/*default no resolve*/); + bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat = TextureFormat::D24_UNORM_S8_UINT, Msaa msaa = Msaa::Samples1, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE, std::span ResolveFormats = {}/*default no resolve*/); /// @brief initialize the render target array with the given dimensions and buffer formats. Creates render passes for the purpose of creating the pipeline. Pipeline is initialized with the depth buffer passed in inheritDepth parameter. If Present is true will write output to the backbuffer (with resolve as appropriate) /// Creates VkRenderPasses for color and depth only passes. /// @return true if successful - bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const CRenderTargetArray& inheritDepth, VkSampleCountFlagBits Msaa = VK_SAMPLE_COUNT_1_BIT, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE); - bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const std::array& inheritDepth, VkSampleCountFlagBits Msaa = VK_SAMPLE_COUNT_1_BIT, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE); + bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const RenderTargetArray& inheritDepth, Msaa msaa = Msaa::Samples1, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE); + bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const std::array& inheritDepth, Msaa msaa = Msaa::Samples1, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE); /// @brief initialize the render target array with the given dimensions and buffer formats. DOES take ownership of the passed in render passes. Because render passes could have a mix of msaa settings take a span for each color buffer. - bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, VkRenderPass RenderPass, VkRenderPass RenderPassDepthOnly, std::span Msaa = {}, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE); + bool Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, RenderPass renderPass, RenderPass renderPassDepthOnly, std::span msaa = {}, const char* pName = NULL, const std::span ColorTypes = {}, const std::span FilterModes = {}, const TextureVulkan* pVRSMap = VK_NULL_HANDLE); /// @brief initialize the render target array using the vulkan swapchain pipeline and swapchain resolution/format. Use as a helper to render to the swapchain bool InitializeFromSwapchain( Vulkan* pVulkan ); @@ -120,38 +267,32 @@ class CRenderTargetArray void SetClearColors(const std::span clearColors); void Release(); - const CRenderTarget& operator[](size_t idx) const { return m_RenderTargets[idx]; } - CRenderTarget& operator[](size_t idx) { return m_RenderTargets[idx]; } + const RenderTarget& operator[](size_t idx) const { return m_RenderTargets[idx]; } + RenderTarget& operator[](size_t idx) { return m_RenderTargets[idx]; } /// The Render Pass (shared between buffers). - VkRenderPass m_RenderPass = VK_NULL_HANDLE; + RenderPass m_RenderPass; /// Depth only Render Pass (shared between buffers) - VkRenderPass m_RenderPassDepthOnly = VK_NULL_HANDLE; + RenderPass m_RenderPassDepthOnly; /// The render target buffers - std::array m_RenderTargets; - /// Set if the framebuffers in m_RenderTargets are owned (created) by CRenderTargetArray or are owned externally (eg by @Vulkan in the case of @InitializeFromSwapchain) - bool m_FramebufferOwner = false; + std::array, T_NUM_BUFFERS> m_RenderTargets; private: Vulkan* m_pVulkan = nullptr; }; //============================================================================= -// CRenderTargetArray template implementation +// RenderTargetArray template implementation //============================================================================= template -CRenderTargetArray& CRenderTargetArray::operator=( CRenderTargetArray&& src ) noexcept +RenderTargetArray& RenderTargetArray::operator=( RenderTargetArray&& src ) noexcept { if (this != &src) { - m_RenderPass = src.m_RenderPass; - src.m_RenderPass = VK_NULL_HANDLE; - m_RenderPassDepthOnly = src.m_RenderPassDepthOnly; - src.m_RenderPassDepthOnly = VK_NULL_HANDLE; + m_RenderPass = std::move(src.m_RenderPass); + m_RenderPassDepthOnly = std::move(src.m_RenderPassDepthOnly); m_RenderTargets = std::move( src.m_RenderTargets ); - m_FramebufferOwner = src.m_FramebufferOwner; - src.m_FramebufferOwner = false; m_pVulkan = src.m_pVulkan; src.m_pVulkan = nullptr; } @@ -159,46 +300,46 @@ CRenderTargetArray& CRenderTargetArray::operator=( } template -CRenderTargetArray::CRenderTargetArray( CRenderTargetArray&& src ) noexcept +RenderTargetArray::RenderTargetArray( RenderTargetArray&& src ) noexcept { *this = std::move(src); } template -CRenderTargetArray::~CRenderTargetArray() +RenderTargetArray::~RenderTargetArray() { Release(); } template -void CRenderTargetArray::Release() +void RenderTargetArray::Release() { for (int WhichBuffer = T_NUM_BUFFERS - 1; WhichBuffer >= 0; --WhichBuffer) - m_RenderTargets[WhichBuffer].Release(m_FramebufferOwner); - if (m_RenderPassDepthOnly != VK_NULL_HANDLE) - vkDestroyRenderPass(m_pVulkan->m_VulkanDevice, m_RenderPassDepthOnly, NULL); - m_RenderPassDepthOnly = VK_NULL_HANDLE; - if (m_RenderPass != VK_NULL_HANDLE) - vkDestroyRenderPass(m_pVulkan->m_VulkanDevice, m_RenderPass, NULL); - m_RenderPass = VK_NULL_HANDLE; + m_RenderTargets[WhichBuffer].Release(); + m_RenderPassDepthOnly = {}; + m_RenderPass = {}; } template -bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, VkSampleCountFlagBits Msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap, std::span ResolveFormats) +bool RenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, Msaa msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap, std::span ResolveFormats) { m_pVulkan = pVulkan; + // Allow 0 Msaa (same as 1 bit) + if (msaa < Msaa::Samples1) + msaa = Msaa::Samples1; + if (pVRSMap) { // ... create the render pass... - if (!pVulkan->CreateRenderPassVRS( pLayerFormats, DepthFormat, Msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, &m_RenderPass, ResolveFormats )) + if (!pVulkan->CreateRenderPassVRS( pLayerFormats, DepthFormat, msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, m_RenderPass, ResolveFormats )) { LOGE( "Unable to create render pass: %s", pName ); return false; } // ... create the depth only render pass... - if (!pVulkan->CreateRenderPassVRS( {}, DepthFormat, Msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, &m_RenderPassDepthOnly )) + if (!pVulkan->CreateRenderPassVRS( {}, DepthFormat, msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, m_RenderPassDepthOnly )) { LOGE( "Unable to create render pass: %s", pName ); return false; @@ -208,13 +349,13 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW else { // ... create the render pass... - if (!pVulkan->CreateRenderPass(pLayerFormats, DepthFormat, Msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, &m_RenderPass, ResolveFormats)) + if (!pVulkan->CreateRenderPass(pLayerFormats, DepthFormat, msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, m_RenderPass, ResolveFormats)) { LOGE("Unable to create render pass: %s", pName); return false; } // ... create the depth only render pass... - if (!pVulkan->CreateRenderPass({}, DepthFormat, Msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, &m_RenderPassDepthOnly)) + if (!pVulkan->CreateRenderPass({}, DepthFormat, msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, m_RenderPassDepthOnly)) { LOGE("Unable to create render pass: %s", pName); return false; @@ -222,26 +363,28 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW } // ... create the render targets and framebuffers - m_FramebufferOwner = true; char szName[128]; uint32_t WhichBuffer = 0; + + RenderTargetInitializeInfo renderTargetInitInfo{ + .Width = uiWidth, + .Height = uiHeight, + .LayerFormats = pLayerFormats, + .DepthFormat = DepthFormat, + .TextureTypes = ColorTypes, + .Msaa = {&msaa, 1}, + .ResolveTextureFormats = ResolveFormats, + .FilterModes = FilterModes + }; for (auto& RenderTarget : m_RenderTargets) { - snprintf(szName, sizeof(szName), "%s (Buffer %d of %d)", pName, WhichBuffer + 1, T_NUM_BUFFERS); szName[sizeof(szName) - 1] = 0; - if (!RenderTarget.Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, DepthFormat, Msaa, szName)) + snprintf(szName, sizeof(szName), "%s (Buffer %d of %d)", pName, WhichBuffer + 1, (int)m_RenderTargets.size() ); szName[sizeof(szName) - 1] = 0; + if (!RenderTarget.Initialize(pVulkan, renderTargetInitInfo, szName, &m_RenderPass, &m_RenderPassDepthOnly)) { return false; } - if (FilterModes.empty()) - std::fill(RenderTarget.m_FilterMode.begin(), RenderTarget.m_FilterMode.end(), SamplerFilter::Linear); - else - RenderTarget.m_FilterMode.assign(std::begin(FilterModes), std::end(FilterModes)); - RenderTarget.InitializeDepth(); - RenderTarget.InitializeColor(ColorTypes); - if (!ResolveFormats.empty()) - RenderTarget.InitializeResolve(ResolveFormats); - RenderTarget.InitializeFrameBuffer(m_RenderPass, RenderTarget.m_ColorAttachments, &RenderTarget.m_DepthAttachment, RenderTarget.m_ResolveAttachments, pVRSMap, &RenderTarget.m_FrameBuffer); - RenderTarget.InitializeFrameBuffer(m_RenderPassDepthOnly, {}, &RenderTarget.m_DepthAttachment, {}, pVRSMap, &RenderTarget.m_FrameBufferDepthOnly); + //RenderTarget.CreateFrameBuffer(m_RenderPass, RenderTarget.m_ColorAttachments, &RenderTarget.m_DepthAttachment, RenderTarget.m_ResolveAttachments, pVRSMap, &RenderTarget.m_FrameBuffer); + //RenderTarget.CreateFrameBuffer(m_RenderPassDepthOnly, {}, &RenderTarget.m_DepthAttachment, {}, pVRSMap, &RenderTarget.m_FrameBufferDepthOnly); pVulkan->SetDebugObjectName(RenderTarget.m_FrameBuffer, szName); ++WhichBuffer; } @@ -249,59 +392,54 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW } template -bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, VkRenderPass RenderPass, VkRenderPass RenderPassDepthOnly, std::span Msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) +bool RenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, TextureFormat DepthFormat, RenderPass renderPass, RenderPass RenderPassDepthOnly, std::span msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) { m_pVulkan = pVulkan; - m_RenderPass = RenderPass; - m_RenderPassDepthOnly = RenderPassDepthOnly; + m_RenderPass = std::move(renderPass); + m_RenderPassDepthOnly = std::move(RenderPassDepthOnly); // ... create the render targets and framebuffers - m_FramebufferOwner = true; char szName[128]; uint32_t WhichBuffer = 0; + + const RenderTargetInitializeInfo renderTargetInitInfo { + .Width = uiWidth, + .Height = uiHeight, + .LayerFormats = pLayerFormats, + .DepthFormat = DepthFormat, + .Msaa = msaa, + .FilterModes = FilterModes + }; + for (auto& RenderTarget : m_RenderTargets) { snprintf(szName, sizeof(szName), "%s (Buffer %d of %d)", pName, WhichBuffer + 1, T_NUM_BUFFERS); szName[sizeof(szName) - 1] = 0; - if (!RenderTarget.Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, DepthFormat, Msaa, szName)) + if (!RenderTarget.Initialize(pVulkan, renderTargetInitInfo, szName, &m_RenderPass, &m_RenderPassDepthOnly)) { return false; } - if (FilterModes.empty()) - std::fill(RenderTarget.m_FilterMode.begin(), RenderTarget.m_FilterMode.end(), SamplerFilter::Linear); - else - RenderTarget.m_FilterMode.assign(std::begin(FilterModes), std::end(FilterModes)); - RenderTarget.InitializeDepth(); - RenderTarget.InitializeColor(ColorTypes); - if( RenderPass != VK_NULL_HANDLE ) - { - RenderTarget.InitializeFrameBuffer( RenderPass, RenderTarget.m_ColorAttachments, &RenderTarget.m_DepthAttachment, RenderTarget.m_ResolveAttachments, pVRSMap, &RenderTarget.m_FrameBuffer ); - } - if( RenderPassDepthOnly != VK_NULL_HANDLE ) - { - RenderTarget.InitializeFrameBuffer(RenderPassDepthOnly, {}, &RenderTarget.m_DepthAttachment, {}, pVRSMap, &RenderTarget.m_FrameBufferDepthOnly); - } ++WhichBuffer; } return true; } template -bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const CRenderTargetArray& inheritDepth, VkSampleCountFlagBits Msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) +bool RenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const RenderTargetArray& inheritDepth, Msaa msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) { std::array pReferencedDepthTextures; - std::transform(std::begin(inheritDepth.m_RenderTargets), std::end(inheritDepth.m_RenderTargets), std::begin(pReferencedDepthTextures), [](const CRenderTarget& rt) { return &rt.m_DepthAttachment; }); - return Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, pReferencedDepthTextures, Msaa, pName, ColorTypes, FilterModes, pVRSMap); + std::transform(std::begin(inheritDepth.m_RenderTargets), std::end(inheritDepth.m_RenderTargets), std::begin(pReferencedDepthTextures), [](const RenderTarget& rt) { return &rt.m_DepthAttachment; }); + return Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, pReferencedDepthTextures, msaa, pName, ColorTypes, FilterModes, pVRSMap); } template -bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const std::array& inheritDepth, VkSampleCountFlagBits Msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) +bool RenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiWidth, uint32_t uiHeight, const std::span pLayerFormats, const std::array& inheritDepth, Msaa msaa, const char* pName, const std::span ColorTypes, const std::span FilterModes, const TextureVulkan* pVRSMap) { m_pVulkan = pVulkan; if (pVRSMap) { // ... create the render pass (color only)... - if (!pVulkan->CreateRenderPassVRS( pLayerFormats, inheritDepth[0]->Format, Msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, &m_RenderPass )) + if (!pVulkan->CreateRenderPassVRS( pLayerFormats, inheritDepth[0]->Format, msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, m_RenderPass )) { LOGE( "Unable to create render pass: %s", pName ); return false; @@ -310,7 +448,7 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW else { // ... create the render pass (color only)... - if (!pVulkan->CreateRenderPass(pLayerFormats, inheritDepth[0]->Format, Msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, &m_RenderPass)) + if (!pVulkan->CreateRenderPass(pLayerFormats, inheritDepth[0]->Format, msaa, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, m_RenderPass)) { LOGE("Unable to create render pass: %s", pName); return false; @@ -318,13 +456,12 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW } // Create the render target and framebuffers - m_FramebufferOwner = true; char szName[128]; uint32_t WhichBuffer = 0; for (auto& RenderTarget : m_RenderTargets) { snprintf(szName, sizeof(szName), "%s (Buffer %d of %d)", pName, WhichBuffer + 1, T_NUM_BUFFERS); szName[sizeof(szName) - 1] = 0; - if (!RenderTarget.Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, inheritDepth[WhichBuffer]->Format, Msaa, szName)) + if (!RenderTarget.Initialize(pVulkan, uiWidth, uiHeight, pLayerFormats, inheritDepth[WhichBuffer]->Format, msaa, szName)) { return false; } @@ -332,11 +469,7 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW std::fill(RenderTarget.m_FilterMode.begin(), RenderTarget.m_FilterMode.end(), SamplerFilter::Linear); else RenderTarget.m_FilterMode.assign(std::begin(FilterModes), std::end(FilterModes)); - if (!RenderTarget.InitializeColor(ColorTypes)) - { - return false; - } - if (!RenderTarget.InitializeFrameBuffer(m_RenderPass, RenderTarget.m_ColorAttachments, inheritDepth[WhichBuffer], RenderTarget.m_ResolveAttachments, pVRSMap, &RenderTarget.m_FrameBuffer)) + if (!RenderTarget.CreateFrameBuffer(m_RenderPass, RenderTarget.m_ColorAttachments, inheritDepth[WhichBuffer], RenderTarget.m_ResolveAttachments, pVRSMap, &RenderTarget.m_FrameBuffer)) { return false; } @@ -346,31 +479,27 @@ bool CRenderTargetArray::Initialize(Vulkan* pVulkan, uint32_t uiW } template -bool CRenderTargetArray::InitializeFromSwapchain(Vulkan* pVulkan) +bool RenderTargetArray::InitializeFromSwapchain(Vulkan* pVulkan) { m_pVulkan = pVulkan; - m_FramebufferOwner = false; const TextureFormat surfaceFormat = pVulkan->m_SurfaceFormat; const TextureFormat depthFormat = pVulkan->m_SwapchainDepth.format; - size_t WhichFrame = 0; - for (auto& RenderTarget : m_RenderTargets) + for(size_t whichFrame = 0; whichFrame< pVulkan->m_SwapchainBuffers.size() && whichFrame < T_NUM_BUFFERS; ++whichFrame) { - if (!RenderTarget.Initialize(pVulkan, pVulkan->m_SurfaceWidth, pVulkan->m_SurfaceHeight, { &surfaceFormat, 1 }, depthFormat, VK_SAMPLE_COUNT_1_BIT, "Swapchain")) + RenderTarget& renderTarget = m_RenderTargets[whichFrame]; + if (!renderTarget.Initialize( pVulkan, pVulkan->m_SurfaceWidth, pVulkan->m_SurfaceHeight, {&surfaceFormat, 1}, depthFormat, Msaa::Samples1, "Swapchain" )) return false; - if (WhichFrame < pVulkan->m_SwapchainBuffers.size()) - RenderTarget.m_FrameBuffer = pVulkan->m_SwapchainBuffers[WhichFrame].framebuffer; - else - RenderTarget.m_FrameBuffer = VK_NULL_HANDLE; - ++WhichFrame; + renderTarget.m_FrameBuffer = pVulkan->m_SwapchainBuffers[whichFrame].framebuffer; } return true; } template -void CRenderTargetArray::SetClearColors(const std::span clearColors) +void RenderTargetArray::SetClearColors(const std::span clearColors) { - for (auto& RenderTarget : m_RenderTargets) - RenderTarget.SetClearColors(clearColors); + for (auto& renderTarget : m_RenderTargets) + renderTarget.SetClearColors(clearColors); } +#endif //0 diff --git a/framework/code/vulkan/semaphore.cpp b/framework/code/vulkan/semaphore.cpp new file mode 100644 index 0000000..c21716f --- /dev/null +++ b/framework/code/vulkan/semaphore.cpp @@ -0,0 +1,33 @@ +//============================================================================= +// +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== + +#include "semaphore.hpp" + +// +// Constructors/move-operators for SemaphoreVulkan (wrapper around vkSemaphore to handle destroy and ref counting). +// +SemaphoreVulkan::SemaphoreVulkan() noexcept + : m_Semaphore( VK_NULL_HANDLE, VK_NULL_HANDLE ) +{} +SemaphoreVulkan::~SemaphoreVulkan() noexcept +{} +SemaphoreVulkan::SemaphoreVulkan( VkDevice device, VkSemaphore semaphore ) noexcept + : m_Semaphore( device, semaphore ) +{} +SemaphoreVulkan::SemaphoreVulkan( SemaphoreVulkan&& src ) noexcept + : m_Semaphore( std::move( src.m_Semaphore ) ) +{} +SemaphoreVulkan& SemaphoreVulkan::operator=( SemaphoreVulkan&& src ) noexcept +{ + if (this != &src) + { + m_Semaphore = src.m_Semaphore; + src.m_Semaphore = {}; + } + return *this; +} diff --git a/framework/code/vulkan/semaphore.hpp b/framework/code/vulkan/semaphore.hpp new file mode 100644 index 0000000..99fb7e8 --- /dev/null +++ b/framework/code/vulkan/semaphore.hpp @@ -0,0 +1,38 @@ +//============================================================================= +// +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== +#pragma once + +#include "graphicsApi/graphicsApiBase.hpp" +#include "vulkan/refHandle.hpp" + +// Forward declarations + + +/// Simple wrapper around VkSemaphore. +/// Simplifies creation (and checks for leaks on destruction - is up to the owner to call Destroy) +/// @ingroup Vulkan +class SemaphoreVulkan final +{ +public: + SemaphoreVulkan() noexcept; + ~SemaphoreVulkan() noexcept; + SemaphoreVulkan( VkDevice, VkSemaphore ) noexcept; + SemaphoreVulkan( SemaphoreVulkan&& src ) noexcept; + SemaphoreVulkan& operator=( SemaphoreVulkan&& src ) noexcept; + SemaphoreVulkan Copy() const { return SemaphoreVulkan{*this}; } + + VkSemaphore GetVkSemaphore() const { return m_Semaphore; } + bool IsEmpty() const { return m_Semaphore == VK_NULL_HANDLE; } + +private: + SemaphoreVulkan( const SemaphoreVulkan& src ) noexcept { + m_Semaphore = src.m_Semaphore; + } + + RefHandle m_Semaphore; +}; diff --git a/framework/code/vulkan/timerPool.cpp b/framework/code/vulkan/timerPool.cpp index 82a70ad..fa88671 100644 --- a/framework/code/vulkan/timerPool.cpp +++ b/framework/code/vulkan/timerPool.cpp @@ -1,13 +1,13 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "timerPool.hpp" -#include "extensionHelpers.hpp" +#include "extensionLib.hpp" #include #include @@ -19,7 +19,7 @@ TimerPoolBase::TimerPoolBase( Vulkan& vulkan ) noexcept : m_Vulkan( vulkan ) TimerPoolBase::~TimerPoolBase() { - assert(m_VulkanQueryPool == VK_NULL_HANDLE); + Destroy(); } @@ -39,10 +39,10 @@ bool TimerPoolBase::Initialize( uint32_t maxTimers ) QueryInfo.queryCount = timerCount * 2/*one for start time, one for stop time*/; // size based on number of frames, may fall-down if we want/support timers that run across frame boundaries. QueryInfo.pipelineStatistics = 0; - const auto* hostQueryResetExt = m_Vulkan.GetExtension(); + const auto* hostQueryResetExt = m_Vulkan.GetExtension(); if (!hostQueryResetExt || hostQueryResetExt->Status != VulkanExtensionStatus::eLoaded) { - LOGE("TimerPoolBase functionality requires VK_EXT_host_query_reset extension"); // Likely missing appConfig.RequiredExtension() (or hardware does not support VK_EXT_host_query_reset) + LOGE("TimerPoolBase functionality requires VK_EXT_host_query_reset extension"); // Likely missing appConfig.RequiredExtension() (or hardware does not support VK_EXT_host_query_reset) // If we move to requiring Vulkan 1.2 then we can remove this check and use vkResetQueryPool (no extension needed in 1.2) // Alternately we could do the resets on the GPU (which is supported in 1.1) and modify tracking of valid timers accordingly return false; @@ -70,7 +70,7 @@ bool TimerPoolBase::Initialize( uint32_t maxTimers ) ResetQueryPool( 0, QueryInfo.queryCount ); // Queues can have different timer 'valid bits', grab the values for each queue. - std::transform( m_Vulkan.m_pVulkanQueueProps.begin(), m_Vulkan.m_pVulkanQueueProps.end(), std::back_insert_iterator(m_DeviceQueueValidTimerBitMask), []( const auto& a ) -> uint64_t { + std::transform( m_Vulkan.m_pVulkanQueueProps.begin(), m_Vulkan.m_pVulkanQueueProps.end(), std::back_inserter(m_DeviceQueueValidTimerBitMask), []( const auto& a ) -> uint64_t { uint64_t v = a.timestampValidBits < 64 ? (uint64_t(1) << uint64_t(a.timestampValidBits)) : 0; return v - uint64_t(1); }); @@ -149,7 +149,7 @@ void TimerPoolBase::ReadResults(VkCommandBuffer commandBuffer, uint32_t whichFra vkCmdPipelineBarrier(commandBuffer, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT/*src stage*/, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT/* dest stage bit*/, 0, 0, nullptr, 0, nullptr, 0, nullptr); // Copy the timing queries that may have been written this frame to a buffer (ready for mapping back to the cpu). - vkCmdCopyQueryPoolResults(commandBuffer, m_VulkanQueryPool, 0, maxUsedQueries, m_VulkanQueryResults.vkBuffers[whichFrame], 0, sizeof(VulkanQueryResult), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT); + vkCmdCopyQueryPoolResults(commandBuffer, m_VulkanQueryPool, 0, maxUsedQueries, m_VulkanQueryResults.bufferHandles[whichFrame], 0, sizeof(VulkanQueryResult), VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT); // Reset the timing queries that may have been written this frame. vkCmdResetQueryPool(commandBuffer, m_VulkanQueryPool, 0, maxUsedQueries); } diff --git a/framework/code/vulkan/timerPool.hpp b/framework/code/vulkan/timerPool.hpp index d67c135..72a7ce0 100644 --- a/framework/code/vulkan/timerPool.hpp +++ b/framework/code/vulkan/timerPool.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/vulkan/timerSimple.cpp b/framework/code/vulkan/timerSimple.cpp index 646b4d3..f14f706 100644 --- a/framework/code/vulkan/timerSimple.cpp +++ b/framework/code/vulkan/timerSimple.cpp @@ -1,13 +1,14 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "timerSimple.hpp" #include +#include void TimerSimple::Update(uint32_t whichFrame, uint64_t startTick, uint64_t stopTick) @@ -62,7 +63,7 @@ void TimerPoolSimple::Log( const TimerPoolSimple::tTimers& timers ) const for (const auto& timer : timers) { if (timer.TotalCompletedTicks > 0) - LOGI( "Timer %s :\t%.3fms\t(avg %.3fms)", timer.Name.c_str(), GetTimeInMs(timer), GetAverageTimeInMs(timer) ); + LOGI( "Timer %s : %.3fms (avg)", timer.Name.c_str(), GetAverageTimeInMs(timer) ); } } @@ -85,7 +86,7 @@ void TimerPoolSimple::Log2( const TimerPoolSimple::tTimers& timers ) const std::sort( std::begin( timersInEventOrder ), std::end( timersInEventOrder ), []( auto a, auto b ) -> bool { return (a.isStop ? a.pTimer->LastStopTick : a.pTimer->LastStartTick) < (b.isStop ? b.pTimer->LastStopTick : b.pTimer->LastStartTick); } ); constexpr uint32_t cMaxTimerOverlaps = 4; - constexpr uint32_t cMaxNameLength = 20; + constexpr uint32_t cMaxNameLength = 40; constexpr uint32_t cQueueFamilyWidth = cMaxTimerOverlaps * 2 + cMaxNameLength; constexpr uint32_t cMaxQueueFamilies = 3; struct @@ -150,3 +151,10 @@ void TimerPoolSimple::Log2( const TimerPoolSimple::tTimers& timers ) const } } } + +TimerPoolSimple::tTimers TimerPoolSimple::SnapshotAndReset() +{ + auto snapshotData = m_Timers; + ResetTimers( -1 ); + return snapshotData; +} diff --git a/framework/code/vulkan/timerSimple.hpp b/framework/code/vulkan/timerSimple.hpp index 935d8b0..c56d45c 100644 --- a/framework/code/vulkan/timerSimple.hpp +++ b/framework/code/vulkan/timerSimple.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -66,4 +66,6 @@ class TimerPoolSimple : public TTimerPool /// Log the results from a collection of timers (logs using LOGI) void Log(const tTimers& timers) const; void Log2( const TimerPoolSimple::tTimers& timers ) const; + /// Take a snapshot of the current timer pool and reset the cumulative counters + TimerPoolSimple::tTimers SnapshotAndReset(); }; diff --git a/framework/code/vulkan/vulkan.cpp b/framework/code/vulkan/vulkan.cpp index e88682f..260b1ef 100644 --- a/framework/code/vulkan/vulkan.cpp +++ b/framework/code/vulkan/vulkan.cpp @@ -1,38 +1,31 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "vulkanDebugCallback.hpp" #include "vulkan.hpp" -#include "extension.hpp" -#include "extensionHelpers.hpp" +#include "extensionLib.hpp" #include "system/os_common.h" #include "system/config.h" #include "texture/vulkan/texture.hpp" +#include "vulkan/renderContext.hpp" +#include "vulkan/renderPass.hpp" + #include #include +#include #include #include +#if defined(OS_LINUX) +#include +#endif // OS_LINUX -// Functions whose pointers are in the instance -PFN_vkGetPhysicalDeviceSurfaceSupportKHR fpGetPhysicalDeviceSurfaceSupportKHR = nullptr; -PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR fpGetPhysicalDeviceSurfaceCapabilitiesKHR = nullptr; -PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR fpGetPhysicalDeviceSurfaceCapabilities2KHR = nullptr; -PFN_vkGetPhysicalDeviceSurfaceFormatsKHR fpGetPhysicalDeviceSurfaceFormatsKHR = nullptr; -PFN_vkGetPhysicalDeviceSurfacePresentModesKHR fpGetPhysicalDeviceSurfacePresentModesKHR = nullptr; -PFN_vkGetPhysicalDeviceProperties2 fpGetPhysicalDeviceProperties2 = nullptr; -PFN_vkGetPhysicalDeviceFeatures2 fpGetPhysicalDeviceFeatures2 = nullptr; -PFN_vkGetPhysicalDeviceMemoryProperties2 fpGetPhysicalDeviceMemoryProperties2 = nullptr; - -// Functions whose pointers are in the device -PFN_vkCreateSwapchainKHR fpCreateSwapchainKHR = nullptr; -PFN_vkDestroySwapchainKHR fpDestroySwapchainKHR = nullptr; -PFN_vkGetSwapchainImagesKHR fpGetSwapchainImagesKHR = nullptr; -//PFN_vkAcquireNextImageKHR fpAcquireNextImageKHR = nullptr; +#define VOLK_IMPLEMENTATION +#include #if defined(OS_ANDROID) #if __ANDROID_API__ < 29 @@ -124,16 +117,12 @@ Vulkan::Vulkan() m_LayerKhronosValidationAvailable = false; m_ExtGlobalPriorityAvailable = false; - m_ExtSwapchainColorspaceAvailable = false; - m_ExtSurfaceCapabilities2Available = false; m_ExtRenderPassTransformAvailable = false; m_ExtRenderPassShaderResolveAvailable = false; m_ExtRenderPassTransformLegacy = false; m_ExtRenderPassTransformEnabled = false; - m_ExtValidationFeaturesVersion = 0; m_ExtPortability = false; #if defined (OS_ANDROID) - m_ExtExternMemoryCapsAvailable = false; m_ExtAndroidExternalMemoryAvailable = false; #endif // defined (OS_ANDROID) @@ -190,9 +179,7 @@ Vulkan::~Vulkan() m_VulkanGpuCount = 0; m_VulkanGpuIdx = 0; - // Debug/Validation Layers - m_InstanceLayerProps.clear(); - m_InstanceLayerNames.clear(); + volkFinalize(); } @@ -200,11 +187,18 @@ Vulkan::~Vulkan() bool Vulkan::Init(uintptr_t windowHandle, uintptr_t hInst, const Vulkan::tSelectSurfaceFormatFn& SelectSurfaceFormatFn, const Vulkan::tConfigurationFn& CustomConfigurationFn) //----------------------------------------------------------------------------- { + if (volkInitialize() != VK_SUCCESS) + { + return false; + } + #if defined (OS_WINDOWS) m_hWnd = (HWND)windowHandle; m_hInstance = (HINSTANCE)hInst; #elif defined (OS_ANDROID) m_pAndroidWindow = (ANativeWindow*)windowHandle; +#elif defined (OS_LINUX) + m_pGlfwWindow = (GLFWwindow*)windowHandle; #endif // defined (OS_WINDOWS|OS_ANDROID) if (CustomConfigurationFn) @@ -303,10 +297,19 @@ bool Vulkan::ReInit(uintptr_t windowHandle) #elif defined (OS_ANDROID) if (m_pAndroidWindow != (ANativeWindow*)windowHandle) { - return false; + m_pAndroidWindow = (ANativeWindow*)windowHandle; + + vkDestroySurfaceKHR( m_VulkanInstance, m_VulkanSurface, nullptr ); + m_VulkanSurface = nullptr; + + InitSurface(); + + return true; } return true; // Success -#endif // defined (OS_WINDOWS|OS_ANDROID) +#elif defined (OS_LINUX) + return false; ///TODO: implement ReInit on Linux +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) } //----------------------------------------------------------------------------- @@ -529,9 +532,8 @@ void Vulkan::SetImageLayout(VkImage image, break; case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: - LOGE("Don't know how to set image layout if starting with depth/stencil read only!"); - assert(0); - return; + imageMemoryBarrier.srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + srcStageFlags = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; break; case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: @@ -681,16 +683,37 @@ bool Vulkan::RegisterKnownExtensions() assert(insertIt.second); // check we didnt add a duplicate! } - for ( auto& appExtension : m_ConfigOverride.AdditionalVulkanDeviceExtensions ) + for (auto& appExtension : m_ConfigOverride.AdditionalVulkanDeviceExtensions) { auto insertIt = m_DeviceExtensions.m_Extensions.insert( std::move( appExtension ) ); assert( insertIt.second ); // check we didnt add a duplicate! } + for (auto& appExtension : m_ConfigOverride.AdditionalVulkanInstanceLayers) + { + auto insertIt = m_InstanceLayers.m_Extensions.insert( std::move( appExtension ) ); + assert( insertIt.second ); // check we didnt add a duplicate! + } + +#if defined(USES_VULKAN_DEBUG_LAYERS) + // + // Add validation layer and layer extensions + // + // If this is NOT set, we cannot use the debug extensions! (Find vkCreateDebugReportCallback) + if (gEnableValidation) + { + m_InstanceLayers.AddExtension( "VK_LAYER_KHRONOS_validation", VulkanExtensionStatus::eOptional ); + m_InstanceExtensions.AddExtension( VK_EXT_DEBUG_REPORT_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + m_InstanceExtensions.AddExtension( VK_EXT_DEBUG_UTILS_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + // This extension allows us to use VkValidationFeaturesEXT (>0 if available) + m_ExtValidationFeatures = m_InstanceExtensions.AddExtension( VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); + } +#endif // USES_VULKAN_DEBUG_LAYERS + // // Add the Instance extensions we need // - m_ExtKhrSurface = m_InstanceExtensions.AddExtension(); + m_ExtKhrSurface = m_InstanceExtensions.AddExtension(); #if defined(VK_USE_PLATFORM_WIN32_KHR) m_InstanceExtensions.AddExtension( VK_KHR_WIN32_SURFACE_EXTENSION_NAME, VulkanExtensionStatus::eRequired ); @@ -700,78 +723,79 @@ bool Vulkan::RegisterKnownExtensions() m_InstanceExtensions.AddExtension( VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, VulkanExtensionStatus::eRequired ); #endif // VK_USE_PLATFORM_ANDROID_KHR -#if defined(USES_VULKAN_DEBUG_LAYERS) - // If this is NOT set, we cannot use the debug extensions! (Find vkCreateDebugReportCallback) - if (gEnableValidation) - { - m_InstanceExtensions.AddExtension( VK_EXT_DEBUG_REPORT_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); - m_InstanceExtensions.AddExtension( VK_EXT_DEBUG_UTILS_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); - } -#endif // USES_VULKAN_DEBUG_LAYERS +#if defined(OS_LINUX) + uint32_t glfwExtensionCount = 0; + const char** glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount); + for(int i=0;i(); + m_ExtKhrGetPhysicalDeviceProperties2 = m_InstanceExtensions.GetExtension(); if (!m_ExtKhrGetPhysicalDeviceProperties2) - m_ExtKhrGetPhysicalDeviceProperties2 = m_InstanceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_ExtKhrGetPhysicalDeviceProperties2 = m_InstanceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); // This extension allows us to call VkPhysicalDeviceSurfaceInfo2KHR (enable if available) - m_ExtSurfaceCapabilities2 = m_InstanceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); - - // This extension allows us to use VkValidationFeaturesEXT (>0 if available) -#if defined(USES_VULKAN_DEBUG_LAYERS) - if (gEnableValidation) - { - m_ExtValidationFeatures = m_InstanceExtensions.AddExtension( VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); - } -#endif // defined(USES_VULKAN_DEBUG_LAYERS) + m_ExtSurfaceCapabilities2 = m_InstanceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); #if defined (OS_ANDROID) // This extension allow us to use Android Hardware Buffers m_InstanceExtensions.AddExtension( "VK_KHR_external_memory_capabilities", VulkanExtensionStatus::eOptional ); #endif // defined (OS_ANDROID) +#if defined (OS_LINUX) + // May want portability + m_InstanceExtensions.AddExtension( "VK_KHR_portability_enumeration", VulkanExtensionStatus::eOptional ); +#endif // defined (OS_LINUX) + // This extension says the device must be able to present images directly to the screen. - m_DeviceExtensions.AddExtension( VK_KHR_SWAPCHAIN_EXTENSION_NAME, VulkanExtensionStatus::eRequired ); + m_ExtSwapchain = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eRequired ); // // Add extensions we would always LIKE to initialize (if they exist). // - m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); #if defined(USES_VULKAN_DEBUG_LAYERS) - m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); - m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); #else - m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eUninitialized ); - m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eUninitialized ); + m_ExtDebugUtils = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eUninitialized ); + m_ExtDebugMarker = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eUninitialized ); #endif m_DeviceExtensions.AddExtension( VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); - m_ExtHdrMetadata = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_ExtHdrMetadata = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); m_DeviceExtensions.AddExtension( VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); m_DeviceExtensions.AddExtension( "VK_QCOM_render_pass_transform", VulkanExtensionStatus::eOptional); // This extension allows us to set VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM (enable if available) m_DeviceExtensions.AddExtension( "VK_QCOM_render_pass_shader_resolve", VulkanExtensionStatus::eOptional); - m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); - m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + m_DeviceExtensions.AddExtension( VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); - m_SubgroupProperties = m_Vulkan11ProvidedExtensions.AddExtension( VulkanExtensionStatus::eRequired ); - m_StorageFeatures = m_Vulkan11ProvidedExtensions.AddExtension( VulkanExtensionStatus::eRequired ); + m_ExtQcomTileProperties = m_DeviceExtensions.AddExtension( VulkanExtensionStatus::eOptional ); + + m_SubgroupProperties = m_Vulkan11ProvidedExtensions.AddExtension(); + m_StorageFeatures = m_Vulkan11ProvidedExtensions.AddExtension(); #if defined (OS_ANDROID) m_DeviceExtensions.AddExtension( VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME, VulkanExtensionStatus::eOptional ); #endif - m_ExtKhrSynchronization2 = m_DeviceExtensions.GetExtension(); - m_ExtKhrDrawIndirectCount = m_DeviceExtensions.GetExtension(); - m_ExtRenderPass2 = m_DeviceExtensions.GetExtension(); - m_ExtArmTensors = m_DeviceExtensions.GetExtension(); - m_ExtArmDataGraph = m_DeviceExtensions.GetExtension(); - m_ExtFragmentShadingRate = m_DeviceExtensions.GetExtension(); - m_ExtMeshShader = m_DeviceExtensions.GetExtension(); + m_ExtKhrSynchronization2 = m_DeviceExtensions.GetExtension(); + m_ExtKhrDrawIndirectCount = m_DeviceExtensions.GetExtension(); + m_ExtRenderPass2 = m_DeviceExtensions.GetExtension(); + m_ExtFragmentShadingRate = m_DeviceExtensions.GetExtension(); + m_ExtMeshShader = m_DeviceExtensions.GetExtension(); + m_ExtDynamicRendering = m_DeviceExtensions.GetExtension(); + m_ExtQcomTileShading = m_DeviceExtensions.GetExtension(); + m_ExtQcomTileMemoryHeap = m_DeviceExtensions.GetExtension(); + m_ExtKhrGetMemoryRequirements = m_DeviceExtensions.GetExtension(); // Now we have a list of all the extensions we know about we can ask them to Register themselves with whatever 'hooks' they require. + m_InstanceLayers.RegisterAll(*this); m_InstanceExtensions.RegisterAll(*this); m_DeviceExtensions.RegisterAll( *this ); m_Vulkan11ProvidedExtensions.RegisterAll( *this ); @@ -783,7 +807,7 @@ bool Vulkan::RegisterKnownExtensions() bool Vulkan::CreateInstance() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // ******************************** // Debug/Validation/Whatever Layers @@ -806,31 +830,40 @@ bool Vulkan::CreateInstance() AppInfoStruct.applicationVersion = 0; AppInfoStruct.pEngineName = "VkFrameworkEngine"; AppInfoStruct.engineVersion = 0; - AppInfoStruct.apiVersion = m_ConfigOverride.ApiVerson.value_or( VK_MAKE_VERSION( 1, 1, 0 ) ); + AppInfoStruct.apiVersion = m_ConfigOverride.ApiVerson.value_or( VK_MAKE_VERSION( 1, 2, 0 ) ); - // Creation information for the instance points to details about - // the application, and also the list of extensions to enable. + // Create the list of layers to enable. + std::vector InstanceLayerNames; + InstanceLayerNames.reserve( m_InstanceLayers.m_Extensions.size() ); + for (const auto& e : m_InstanceLayers.m_Extensions) + if (e.second->Status == VulkanExtensionStatus::eLoaded && e.second->LoadMode != VulkanExtensionLoadMode::eSkipRequest) + InstanceLayerNames.push_back( e.first.c_str() ); + + // Create the list of instance extensions to enable std::vector InstanceExtensionNames; InstanceExtensionNames.reserve(m_InstanceExtensions.m_Extensions.size()); for (const auto& e : m_InstanceExtensions.m_Extensions) - if (e.second->Status == VulkanExtensionStatus::eLoaded) + if (e.second->Status == VulkanExtensionStatus::eLoaded && e.second->LoadMode != VulkanExtensionLoadMode::eSkipRequest) InstanceExtensionNames.push_back(e.first.c_str()); - VkInstanceCreateInfo InstanceInfoStruct {VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO}; - InstanceInfoStruct.flags = 0; - InstanceInfoStruct.pApplicationInfo = &AppInfoStruct; - InstanceInfoStruct.enabledLayerCount = (uint32_t) m_InstanceLayerNames.size(); - InstanceInfoStruct.ppEnabledLayerNames = m_InstanceLayerNames.data(); - InstanceInfoStruct.enabledExtensionCount = (uint32_t) InstanceExtensionNames.size(); - InstanceInfoStruct.ppEnabledExtensionNames = InstanceExtensionNames.data(); + fvk::VkStructWrapper InstanceInfoStruct{{ + .flags = 0, + .pApplicationInfo = &AppInfoStruct, + .enabledLayerCount = (uint32_t)InstanceLayerNames.size(), + .ppEnabledLayerNames = InstanceLayerNames.data(), + .enabledExtensionCount = (uint32_t)InstanceExtensionNames.size(), + .ppEnabledExtensionNames = InstanceExtensionNames.data() + }}; + InstanceInfoStruct->flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; - // + // ******************************** // Potentially add Validation layer feature settings. - // - VkValidationFeaturesEXT ValidationFeaturesStruct { VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT }; + // ******************************** std::vector ValidationFeaturesEnables; if (m_ExtValidationFeatures && m_ExtValidationFeatures->Version >= 2) // spec version 1 does not support 'best practices' { + auto& ValidationFeaturesStruct = InstanceInfoStruct.Add(); + #if (VK_EXT_VALIDATION_FEATURES_SPEC_VERSION < 4) // if our header does not define the spec version 4 then add the 'missing' enable #define VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT (4) #endif @@ -866,10 +899,9 @@ bool Vulkan::CreateInstance() if (!ValidationFeaturesEnables.empty()) { - ValidationFeaturesStruct.enabledValidationFeatureCount = (uint32_t) ValidationFeaturesEnables.size(); - ValidationFeaturesStruct.pEnabledValidationFeatures = ValidationFeaturesEnables.data(); + ValidationFeaturesStruct->enabledValidationFeatureCount = (uint32_t) ValidationFeaturesEnables.size(); + ValidationFeaturesStruct->pEnabledValidationFeatures = ValidationFeaturesEnables.data(); } - InstanceInfoStruct.pNext = &ValidationFeaturesStruct; } uint32_t MajorVersion = VK_VERSION_MAJOR(AppInfoStruct.apiVersion); @@ -878,7 +910,7 @@ bool Vulkan::CreateInstance() LOGI("Requesting Vulkan version %d.%d.%d", MajorVersion, MinorVersion, PatchVersion); LOGI("Requesting Layers:"); - for (const auto& LayerName : m_InstanceLayerNames) + for (const auto& LayerName : InstanceLayerNames) { LOGI(" %s", LayerName); } @@ -891,42 +923,56 @@ bool Vulkan::CreateInstance() LOGI("Creating Vulkan Instance..."); - LOGI(" InstanceInfo.enabledLayerCount: %d", InstanceInfoStruct.enabledLayerCount); - for (uint32_t Which = 0; Which < InstanceInfoStruct.enabledLayerCount; Which++) + LOGI(" InstanceInfo.enabledLayerCount: %d", InstanceInfoStruct->enabledLayerCount); + for (uint32_t Which = 0; Which < InstanceInfoStruct->enabledLayerCount; Which++) { - LOGI(" %d: %s", Which, InstanceInfoStruct.ppEnabledLayerNames[Which]); + LOGI(" %d: %s", Which, InstanceInfoStruct->ppEnabledLayerNames[Which]); } - LOGI(" InstanceInfo.enabledExtensionCount: %d", InstanceInfoStruct.enabledExtensionCount); - for (uint32_t Which = 0; Which < InstanceInfoStruct.enabledExtensionCount; Which++) + LOGI(" InstanceInfo.enabledExtensionCount: %d", InstanceInfoStruct->enabledExtensionCount); + for (uint32_t Which = 0; Which < InstanceInfoStruct->enabledExtensionCount; Which++) { - LOGI(" %d: %s", Which, InstanceInfoStruct.ppEnabledExtensionNames[Which]); + LOGI(" %d: %s", Which, InstanceInfoStruct->ppEnabledExtensionNames[Which]); } // The main Vulkan instance is created with the creation infos above. // We do not specify a custom memory allocator for instance creation. - RetVal = vkCreateInstance(&InstanceInfoStruct, nullptr, &m_VulkanInstance); + retVal = vkCreateInstance(&InstanceInfoStruct, nullptr, &m_VulkanInstance); + // ******************************** + // Handle any errors from create instance + // ******************************** // Vulkan API return values can expose further information on a failure. // For instance, INCOMPATIBLE_DRIVER may be returned if the API level // an application is built with, exposed through VkApplicationInfo, is // newer than the driver present on a device. - if (RetVal == VK_ERROR_INCOMPATIBLE_DRIVER) + if (retVal == VK_ERROR_INCOMPATIBLE_DRIVER) { LOGE("Cannot find a compatible Vulkan installable client driver: vkCreateInstance Failure"); return false; } - else if (RetVal == VK_ERROR_EXTENSION_NOT_PRESENT) + else if (retVal == VK_ERROR_EXTENSION_NOT_PRESENT) { LOGE("Cannot find a specified extension library: vkCreateInstance Failure"); return false; } - else if (!CheckVkError("vkCreateInstance()", RetVal)) + else if (!CheckVkError("vkCreateInstance()", retVal)) { return false; } + volkLoadInstance(m_VulkanInstance); + m_VulkanApiVersion = AppInfoStruct.apiVersion; + // ******************************** + // Call the PostLoad for all instance extensions + // ******************************** + for (auto& extension : m_InstanceExtensions.m_Extensions) + { + if (extension.second->Status == VulkanExtensionStatus::eLoaded) + extension.second->PostLoad(); + } + return true; } @@ -941,7 +987,7 @@ static bool ParseExtensionProperties( const std::vector& bool success = true; for (uint32_t uiIndx = 0; uiIndx < (uint32_t)ExtensionProps.size(); uiIndx++) { - const VkExtensionProperties* const pOneItem = &ExtensionProps[uiIndx]; + const auto* const pOneItem = &ExtensionProps[uiIndx]; LOGI( " %d: %s", uiIndx, pOneItem->extensionName ); // Need to check if we found specific device extensions @@ -976,8 +1022,16 @@ static bool ParseExtensionProperties( const std::vector& { if (extension.second->Status == VulkanExtensionStatus::eRequired) { - LOGE( "Required Vulkan extension \"%s\" was not found", extension.first.c_str() ); - success = false; + if (extension.second->LoadMode == VulkanExtensionLoadMode::eDefault) + { + LOGE( "Required Vulkan extension \"%s\" was not found.", extension.first.c_str() ); + success = false; + } + else + { + LOGW( "Required Vulkan extension \"%s\" not found but VulkanExtensionLoadMode requesting we continue.", extension.first.c_str() ); + extension.second->Status = VulkanExtensionStatus::eLoaded; + } } else if (extension.second->Status == VulkanExtensionStatus::eOptional) { @@ -988,19 +1042,85 @@ static bool ParseExtensionProperties( const std::vector& return success; } +//----------------------------------------------------------------------------- +// Parse LayerProps for layers in RegisteredLayers. +// If found set the registered layer's version and change Status to eLoaded if requested to load (status eOptional or eRequired). +// If not found add to the list of RegisteredLayers (with a eUninitialized status) +static bool ParseLayerProperties( const std::vector& LayerProps, Vulkan::RegisteredExtensions& RegisteredLayers ) +//----------------------------------------------------------------------------- +{ + bool success = true; + for (uint32_t uiIndx = 0; uiIndx < (uint32_t)LayerProps.size(); uiIndx++) + { + const auto* const pOneItem = &LayerProps[uiIndx]; + LOGI( " %d: %s", uiIndx, pOneItem->layerName ); + + // Need to check if we found specific device extensions + { + std::string name = pOneItem->layerName; + auto* pLayer = RegisteredLayers.GetExtension( name ); + if (pLayer) + { + // Found an already known extension, see if we want to do anything with it. + switch (pLayer->Status) + { + case VulkanExtensionStatus::eOptional: + case VulkanExtensionStatus::eRequired: + pLayer->Status = VulkanExtensionStatus::eLoaded; // strictly not 'yet' loaded but will be shortly + break; + case VulkanExtensionStatus::eLoaded: + case VulkanExtensionStatus::eUninitialized: + break; + } + pLayer->Version = pOneItem->specVersion; + } + else + { + // Add to the list of known extensions (assume we dont want to load it) + RegisteredLayers.AddExtension( name, VulkanExtensionStatus::eUninitialized, pOneItem->specVersion ); + } + } + } + + // Do a final check of extensions we requested (as required or optional) that are not present in the list of available extensions. + for (auto& extension : RegisteredLayers.m_Extensions) + { + if (extension.second->Status == VulkanExtensionStatus::eRequired) + { + if (extension.second->LoadMode == VulkanExtensionLoadMode::eDefault) + { + LOGE( "Required Vulkan extension \"%s\" was not found.", extension.first.c_str() ); + success = false; + } + else + { + LOGW( "Required Vulkan extension \"%s\" not found but VulkanExtensionLoadMode requesting we continue.", extension.first.c_str() ); + extension.second->Status = VulkanExtensionStatus::eLoaded; + } + } + else if (extension.second->Status == VulkanExtensionStatus::eOptional) + { + // If requested as optional but not available then set to be uninitialized. + extension.second->Status = VulkanExtensionStatus::eUninitialized; + } + } + return success; +} + + //----------------------------------------------------------------------------- bool Vulkan::InitInstanceExtensions() //----------------------------------------------------------------------------- { - VkResult RetVal; + VkResult retVal; // ******************************** - // Look for Instance Validation Layers + // Look for Instance Layers (eg Validation) // ******************************** { uint32_t NumInstanceLayerProps = 0; - RetVal = vkEnumerateInstanceLayerProperties(&NumInstanceLayerProps, nullptr); - if (!CheckVkError("vkEnumerateInstanceLayerProperties(nullptr)", RetVal)) + retVal = vkEnumerateInstanceLayerProperties(&NumInstanceLayerProps, nullptr); + if (!CheckVkError("vkEnumerateInstanceLayerProperties(nullptr)", retVal)) { return false; } @@ -1009,25 +1129,26 @@ bool Vulkan::InitInstanceExtensions() if (NumInstanceLayerProps > 0) { // Allocate memory for the structures... - m_InstanceLayerProps.resize(NumInstanceLayerProps); + std::vector InstanceLayerProps; + InstanceLayerProps.resize(NumInstanceLayerProps); // ... then read the structures from the driver - RetVal = vkEnumerateInstanceLayerProperties(&NumInstanceLayerProps, m_InstanceLayerProps.data()); - if (!CheckVkError("vkEnumerateInstanceLayerProperties()", RetVal)) + retVal = vkEnumerateInstanceLayerProperties(&NumInstanceLayerProps, InstanceLayerProps.data()); + if (!CheckVkError("vkEnumerateInstanceLayerProperties()", retVal)) { return false; } - for (uint32_t uiIndx = 0; uiIndx < NumInstanceLayerProps; uiIndx++) + if (!ParseLayerProperties( InstanceLayerProps, m_InstanceLayers )) { - const VkLayerProperties& rOneItem = m_InstanceLayerProps[uiIndx]; - LOGI(" %d: %s => %s", uiIndx, rOneItem.layerName, rOneItem.description); + LOGE( "Required Vulkan Instance Layer(s) missing." ); + return false; + } - // Need to check that we found specific extensions - if(!strcmp("VK_LAYER_KHRONOS_validation", rOneItem.layerName)) - { - m_LayerKhronosValidationAvailable = true; - } + auto* validationLayer = m_InstanceLayers.GetExtension( "VK_LAYER_KHRONOS_validation" ); + if (validationLayer && validationLayer->Status == VulkanExtensionStatus::eLoaded) + { + m_LayerKhronosValidationAvailable = true; } } } @@ -1037,8 +1158,8 @@ bool Vulkan::InitInstanceExtensions() // ******************************** { uint32_t NumInstanceExtensionProps = 0; - RetVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, nullptr); - if (!CheckVkError("vkEnumerateInstanceExtensionProperties(nullptr)", RetVal)) + retVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, nullptr); + if (!CheckVkError("vkEnumerateInstanceExtensionProperties(nullptr)", retVal)) { return false; } @@ -1052,38 +1173,42 @@ bool Vulkan::InitInstanceExtensions() InstanceExtensionProps.resize(NumInstanceExtensionProps); // ... then read the structures from the driver - RetVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, InstanceExtensionProps.data()); - if (!CheckVkError("vkEnumerateInstanceExtensionProperties()", RetVal)) + retVal = vkEnumerateInstanceExtensionProperties(nullptr, &NumInstanceExtensionProps, InstanceExtensionProps.data()); + if (!CheckVkError("vkEnumerateInstanceExtensionProperties()", retVal)) { return false; } } // Now add in any instance extensions exposed by layers (that we care about) - if (m_LayerKhronosValidationAvailable) + for (auto& layer : m_InstanceLayers.m_Extensions) { - uint32_t NumValidationLayerInstanceExtensionProps = 0; - - RetVal = vkEnumerateInstanceExtensionProperties("VK_LAYER_KHRONOS_validation", &NumValidationLayerInstanceExtensionProps, nullptr); - if (!CheckVkError("vkEnumerateInstanceExtensionProperties(VK_LAYER_KHRONOS_validation)", RetVal)) - { - return false; - } - - LOGI("Found %d Vulkan VK_LAYER_KHRONOS_validation Instance Extension Properties", NumValidationLayerInstanceExtensionProps); - if (NumValidationLayerInstanceExtensionProps > 0) + if (layer.second->Status == VulkanExtensionStatus::eLoaded) { - // Allocate memory for the structures... - InstanceExtensionProps.resize(NumInstanceExtensionProps + NumValidationLayerInstanceExtensionProps); + uint32_t NumLayerInstanceExtensionProps = 0; + const char* const pLayerName = layer.first.c_str(); - // ... then read the structures from the driver - RetVal = vkEnumerateInstanceExtensionProperties("VK_LAYER_KHRONOS_validation", &NumValidationLayerInstanceExtensionProps, &InstanceExtensionProps[NumInstanceExtensionProps]); - if (!CheckVkError("vkEnumerateInstanceExtensionProperties(VK_LAYER_KHRONOS_validation)", RetVal)) + retVal = vkEnumerateInstanceExtensionProperties( pLayerName, &NumLayerInstanceExtensionProps, nullptr ); + if (!CheckVkError( "vkEnumerateInstanceExtensionProperties(VK_LAYER_KHRONOS_validation)", retVal )) { return false; } + + LOGI( "Found %d Vulkan %s Instance Extension Properties", NumLayerInstanceExtensionProps, pLayerName ); + if (NumLayerInstanceExtensionProps > 0) + { + // Allocate memory for the structures... + InstanceExtensionProps.resize( NumInstanceExtensionProps + NumLayerInstanceExtensionProps ); + + // ... then read the structures from the driver + retVal = vkEnumerateInstanceExtensionProperties( pLayerName, &NumLayerInstanceExtensionProps, &InstanceExtensionProps[NumInstanceExtensionProps] ); + if (!CheckVkError( "vkEnumerateInstanceExtensionProperties(VK_LAYER_KHRONOS_validation)", retVal )) + { + return false; + } + } + NumInstanceExtensionProps += NumLayerInstanceExtensionProps; } - NumInstanceExtensionProps += NumValidationLayerInstanceExtensionProps; } if (!ParseExtensionProperties( InstanceExtensionProps, m_InstanceExtensions )) @@ -1093,126 +1218,6 @@ bool Vulkan::InitInstanceExtensions() } } - // Add layers we want for debugging -#if defined(USES_VULKAN_DEBUG_LAYERS) - if (gEnableValidation && m_LayerKhronosValidationAvailable) - { - m_InstanceLayerNames.push_back( "VK_LAYER_KHRONOS_validation" ); - } -#endif // USES_VULKAN_DEBUG_LAYERS - - { - // Sort alphabetically (can search using std::lower_bound) - std::sort(std::begin(m_InstanceLayerNames), std::end(m_InstanceLayerNames), [](auto a, auto b) { return strcmp(a, b) < 0; }); - size_t outIdx = 0; - for (size_t inIdx = 0; inIdx < m_InstanceLayerNames.size(); ++inIdx) - if (inIdx == 0 || strcmp(m_InstanceLayerNames[outIdx-1], m_InstanceLayerNames[inIdx]) != 0) - ++outIdx; - - // Remove duplicates - m_InstanceLayerNames.resize(outIdx); - } - return true; -} - -//----------------------------------------------------------------------------- -bool Vulkan::GetPhysicalDevices() -//----------------------------------------------------------------------------- -{ - VkResult RetVal = VK_SUCCESS; - - // Query number of physical devices available - RetVal = vkEnumeratePhysicalDevices(m_VulkanInstance, &m_VulkanGpuCount, nullptr); - if (!CheckVkError("vkEnumeratePhysicalDevices()", RetVal)) - { - return false; - } - - if (m_VulkanGpuCount == 0) - { - LOGE("Could not find a Vulkan GPU!!!!"); - return false; - } - - LOGI("Found %d Vulkan GPU[s]", m_VulkanGpuCount); - - // Allocate space the the correct number of devices, before requesting their data - std::vector pDevices; - pDevices.resize(m_VulkanGpuCount, VK_NULL_HANDLE); - - RetVal = vkEnumeratePhysicalDevices(m_VulkanInstance, &m_VulkanGpuCount, pDevices.data()); - if (!CheckVkError("vkEnumeratePhysicalDevices()", RetVal)) - { - return false; - } - - // Query and display the available GPU devices and determine the 'best' GPU to use. - { - std::vector DeviceFeatures; - std::vector DeviceProperties; - DeviceFeatures.reserve( pDevices.size() ); - DeviceProperties.reserve( pDevices.size() ); - - for (VkPhysicalDevice device : pDevices) - { - QueryPhysicalDeviceFeatures( device, DeviceFeatures.emplace_back() ); - QueryPhysicalDeviceProperties( device, DeviceFeatures.back(), DeviceProperties.emplace_back() ); - } - - DumpDeviceInfo( DeviceFeatures, DeviceProperties ); - - if (gPhysicalDevice >= 0) - { - LOGI( "Forcing physical device: (config gPhysicalDevice=%d).\n", gPhysicalDevice ); - - if (gPhysicalDevice >= DeviceProperties.size()) - { - LOGE( "Forced physical device out of range. Reverting to automatic selection.\n" ); - m_VulkanGpuIdx = (uint32_t)GetBestVulkanPhysicalDeviceId( DeviceProperties ); - } - else - { - m_VulkanGpuIdx = gPhysicalDevice; - } - } - - m_VulkanGpuIdx = (uint32_t) GetBestVulkanPhysicalDeviceId( DeviceProperties ); - - LOGI("Using Vulkan Device (GPU): %d \"%s\"", m_VulkanGpuIdx, DeviceProperties[m_VulkanGpuIdx].Base.properties.deviceName); - } - - m_VulkanGpu = pDevices[m_VulkanGpuIdx]; - - // ******************************** - // Debug/Validation/Whatever Layers and extensions - // ******************************** - if (!InitDeviceExtensions()) - { - return false; - } - - // Query the available features and properties for this device. - PhysicalDeviceFeatures AvailableFeatures{}; - QueryPhysicalDeviceFeatures( m_VulkanGpu, AvailableFeatures ); - QueryPhysicalDeviceProperties( m_VulkanGpu, AvailableFeatures, m_VulkanGpuProperties ); - - // Get Memory information and properties - this is required later, when we begin - // allocating buffers to store data. - if (m_ExtKhrGetPhysicalDeviceProperties2->Status == VulkanExtensionStatus::eLoaded) - m_ExtKhrGetPhysicalDeviceProperties2->m_vkGetPhysicalDeviceMemoryProperties2KHR(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties); - else - vkGetPhysicalDeviceMemoryProperties(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties.memoryProperties); - - // VK_QCOM_render_pass_transform had 2 versions, switch to 'legacy' if on an older driver verson. - m_ExtRenderPassTransformLegacy = (m_ExtRenderPassTransformAvailable && (m_VulkanGpuProperties.Base.properties.driverVersion < VK_MAKE_VERSION(512, 467, 0))); - // Internal builds have version 366 hardcoded, use the supported Vulkan version instead (the switch to legacy before 1.1.126.0 may be incorrect, 1.1.124.0 cartainly was legacy though and 1.1.128 is not!) - m_ExtRenderPassTransformLegacy = m_ExtRenderPassTransformLegacy && ((m_VulkanGpuProperties.Base.properties.driverVersion != VK_MAKE_VERSION(512, 366, 0) || m_VulkanGpuProperties.Base.properties.apiVersion < VK_MAKE_VERSION(1, 1, 126))); - - if( m_ExtRenderPassTransformLegacy ) - { - LOGI( "VK_QCOM_render_pass_transform legacy values" ); - } - return true; } @@ -1225,11 +1230,12 @@ bool Vulkan::GetDataGraphProcessingEngine() return true; } - // Force-enable the extension until it's turned into public (we check "Ext_VK_ARM_data_graph->AvailableFeatures.dataGraph" for HW support). + // If Ext_VK_ARM_data_graph->AvailableFeatures.dataGraph is supported, force graph pipeline support here while that + // isn't fully supported publicly by the driver #if defined(OS_ANDROID) { - auto* Ext_VK_ARM_tensors = static_cast(m_DeviceExtensions.GetExtension(VK_ARM_TENSORS_EXTENSION_NAME)); - auto* Ext_VK_ARM_data_graph = static_cast(m_DeviceExtensions.GetExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME)); + auto* Ext_VK_ARM_tensors = static_cast(m_DeviceExtensions.GetExtension(VK_ARM_TENSORS_EXTENSION_NAME)); + auto* Ext_VK_ARM_data_graph = static_cast(m_DeviceExtensions.GetExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME)); auto fpGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(GetVulkanInstance(), "vkGetDeviceProcAddr"); if (Ext_VK_ARM_tensors && Ext_VK_ARM_data_graph @@ -1253,20 +1259,14 @@ bool Vulkan::GetDataGraphProcessingEngine() LOGI("*** DATA GRAPH PROCESSING ENGINE ***"); LOGI("************************************"); - const auto& data_graph_extension = GetExtension(); - if (!data_graph_extension) - { - return false; - } - uint32_t propCount = 0; - data_graph_extension->m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( m_VulkanGpu, m_VulkanQueues[Vulkan::eDataGraphQueue].QueueFamilyIndex, &propCount, nullptr); std::vector dataGraphProps = std::vector(propCount); - data_graph_extension->m_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( m_VulkanGpu, m_VulkanQueues[Vulkan::eDataGraphQueue].QueueFamilyIndex, &propCount, @@ -1301,8 +1301,7 @@ bool Vulkan::GetDataGraphProcessingEngine() LOGI("Checking for Tensor Storage Format Support"); { - if(const auto& physical_device_properties2 = GetExtension(); - physical_device_properties2 && physical_device_properties2->m_vkGetPhysicalDeviceFormatProperties2KHR) + if(HasLoadedVulkanDeviceExtension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) { VkTensorFormatPropertiesARM tensorFmtProps = {}; VkFormatProperties2 f32Props = {}; @@ -1311,7 +1310,7 @@ bool Vulkan::GetDataGraphProcessingEngine() f32Props.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; f32Props.pNext = &tensorFmtProps; - physical_device_properties2->m_vkGetPhysicalDeviceFormatProperties2KHR(m_VulkanGpu, VK_FORMAT_R32_SFLOAT, &f32Props); + vkGetPhysicalDeviceFormatProperties2KHR(m_VulkanGpu, VK_FORMAT_R32_SFLOAT, &f32Props); LOGI("*** \t\t\ttensorFmtProps.linearTilingTensorFeatures: %d", static_cast(tensorFmtProps.linearTilingTensorFeatures)); LOGI("*** \t\t\ttensorFmtProps.optimalTilingTensorFeatures: %d", static_cast(tensorFmtProps.optimalTilingTensorFeatures)); @@ -1321,7 +1320,7 @@ bool Vulkan::GetDataGraphProcessingEngine() } } } - + LOGI("Ensuring Engine Synchronization Support"); { VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM info = {}; @@ -1331,7 +1330,7 @@ bool Vulkan::GetDataGraphProcessingEngine() VkQueueFamilyDataGraphProcessingEnginePropertiesARM engineProps = {}; engineProps.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM; - data_graph_extension->m_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(m_VulkanGpu, &info, &engineProps); + vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(m_VulkanGpu, &info, &engineProps); // NOTE: These are only needed if you are using external objects (memory, synchronization, etc.). For this sample we only // care about Vulkan primitives, but if you are using e.g. Android buffers, you should ensure they are supported first. @@ -1354,19 +1353,133 @@ bool Vulkan::GetDataGraphProcessingEngine() return true; } +//----------------------------------------------------------------------------- +bool Vulkan::GetPhysicalDevices() +//----------------------------------------------------------------------------- +{ + VkResult retVal = VK_SUCCESS; + + // Query number of physical devices available + retVal = vkEnumeratePhysicalDevices(m_VulkanInstance, &m_VulkanGpuCount, nullptr); + if (!CheckVkError("vkEnumeratePhysicalDevices()", retVal)) + { + return false; + } + + if (m_VulkanGpuCount == 0) + { + LOGE("Could not find a Vulkan GPU!!!!"); + return false; + } + + LOGI("Found %d Vulkan GPU[s]", m_VulkanGpuCount); + + // Allocate space the the correct number of devices, before requesting their data + std::vector pDevices; + pDevices.resize(m_VulkanGpuCount, VK_NULL_HANDLE); + + retVal = vkEnumeratePhysicalDevices(m_VulkanInstance, &m_VulkanGpuCount, pDevices.data()); + if (!CheckVkError("vkEnumeratePhysicalDevices()", retVal)) + { + return false; + } + + // Query and display the available GPU devices and determine the 'best' GPU to use. + { + std::vector DeviceFeatures; + std::vector DeviceProperties; + DeviceFeatures.reserve( pDevices.size() ); + DeviceProperties.reserve( pDevices.size() ); + + for (VkPhysicalDevice device : pDevices) + { + QueryPhysicalDeviceFeatures( device, DeviceFeatures.emplace_back() ); + QueryPhysicalDeviceProperties( device, DeviceFeatures.back(), DeviceProperties.emplace_back() ); + } + + DumpDeviceInfo( DeviceFeatures, DeviceProperties ); + + if (gPhysicalDevice >= 0) + { + LOGI( "Forcing physical device: (config gPhysicalDevice=%d).\n", gPhysicalDevice ); + + if (gPhysicalDevice >= DeviceProperties.size()) + { + LOGE( "Forced physical device out of range. Reverting to automatic selection.\n" ); + m_VulkanGpuIdx = (uint32_t)GetBestVulkanPhysicalDeviceId( DeviceProperties ); + } + else + { + m_VulkanGpuIdx = gPhysicalDevice; + } + } + + m_VulkanGpuIdx = (uint32_t) GetBestVulkanPhysicalDeviceId( DeviceProperties ); + + LOGI("Using Vulkan Device (GPU): %d \"%s\"", m_VulkanGpuIdx, DeviceProperties[m_VulkanGpuIdx].Base.properties.deviceName); + } + + m_VulkanGpu = pDevices[m_VulkanGpuIdx]; + + // ******************************** + // Debug/Validation/Whatever Layers and extensions + // ******************************** + if (!InitDeviceExtensions()) + { + return false; + } + + // Query the available features and properties for this device. + PhysicalDeviceFeatures AvailableFeatures{}; + QueryPhysicalDeviceFeatures( m_VulkanGpu, AvailableFeatures ); + QueryPhysicalDeviceProperties( m_VulkanGpu, AvailableFeatures, m_VulkanGpuProperties ); + + // Get Memory information and properties - this is required later, when we begin + // allocating buffers to store data. + if (m_ExtKhrGetPhysicalDeviceProperties2->Status == VulkanExtensionStatus::eLoaded) + m_ExtKhrGetPhysicalDeviceProperties2->m_vkGetPhysicalDeviceMemoryProperties2KHR(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties); + else + vkGetPhysicalDeviceMemoryProperties(m_VulkanGpu, &m_PhysicalDeviceMemoryProperties.memoryProperties); + + // Memory manager not available yet so can't use MemoryManager::GetHeapWithHeapFlags + // Go directly to Vulkan api for memry heap data + { + const auto& memoryProperties = m_PhysicalDeviceMemoryProperties.memoryProperties; + LOGI( "VkPhysicalDeviceMemoryProperties:" ); + LOGI( " VkMemoryType" ); + for (auto i = 0; i < memoryProperties.memoryTypeCount; ++i) + LOGI( " %d: propertyFlags 0x%x heapIndex %d", i, memoryProperties.memoryTypes[i].propertyFlags, memoryProperties.memoryTypes[i].heapIndex ); + LOGI( " VkMemoryHeap" ); + for (auto i = 0; i < memoryProperties.memoryHeapCount; ++i) + LOGI( " %d: size %zu VkMemoryHeapFlags 0x%x", i, (size_t)memoryProperties.memoryHeaps[i].size, memoryProperties.memoryHeaps[i].flags ); + } + + // VK_QCOM_render_pass_transform had 2 versions, switch to 'legacy' if on an older driver verson. + m_ExtRenderPassTransformLegacy = (m_ExtRenderPassTransformAvailable && (m_VulkanGpuProperties.Base.properties.driverVersion < VK_MAKE_VERSION(512, 467, 0))); + // Internal builds have version 366 hardcoded, use the supported Vulkan version instead (the switch to legacy before 1.1.126.0 may be incorrect, 1.1.124.0 cartainly was legacy though and 1.1.128 is not!) + m_ExtRenderPassTransformLegacy = m_ExtRenderPassTransformLegacy && ((m_VulkanGpuProperties.Base.properties.driverVersion != VK_MAKE_VERSION(512, 366, 0) || m_VulkanGpuProperties.Base.properties.apiVersion < VK_MAKE_VERSION(1, 1, 126))); + + if( m_ExtRenderPassTransformLegacy ) + { + LOGI( "VK_QCOM_render_pass_transform legacy values" ); + } + + return true; +} + //----------------------------------------------------------------------------- bool Vulkan::InitDeviceExtensions() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // ******************************** // Look for Device Validation Layers // ******************************** { uint32_t NumDeviceLayerProps = 0; - RetVal = vkEnumerateDeviceLayerProperties(m_VulkanGpu, &NumDeviceLayerProps, nullptr); - if (!CheckVkError("vkEnumerateDeviceLayerProperties(nullptr)", RetVal)) + retVal = vkEnumerateDeviceLayerProperties(m_VulkanGpu, &NumDeviceLayerProps, nullptr); + if (!CheckVkError("vkEnumerateDeviceLayerProperties(nullptr)", retVal)) { return false; } @@ -1379,8 +1492,8 @@ bool Vulkan::InitDeviceExtensions() DeviceLayerProps.resize(NumDeviceLayerProps, {}); // ... then read the structures from the driver - RetVal = vkEnumerateDeviceLayerProperties(m_VulkanGpu, &NumDeviceLayerProps, DeviceLayerProps.data()); - if (!CheckVkError("vkEnumerateDeviceLayerProperties()", RetVal)) + retVal = vkEnumerateDeviceLayerProperties(m_VulkanGpu, &NumDeviceLayerProps, DeviceLayerProps.data()); + if (!CheckVkError("vkEnumerateDeviceLayerProperties()", retVal)) { return false; } @@ -1398,8 +1511,8 @@ bool Vulkan::InitDeviceExtensions() // ******************************** { uint32_t NumDeviceExtensionProps = 0; - RetVal = vkEnumerateDeviceExtensionProperties(m_VulkanGpu, nullptr, &NumDeviceExtensionProps, nullptr); - if (!CheckVkError("vkEnumerateDeviceExtensionProperties(nullptr)", RetVal)) + retVal = vkEnumerateDeviceExtensionProperties(m_VulkanGpu, nullptr, &NumDeviceExtensionProps, nullptr); + if (!CheckVkError("vkEnumerateDeviceExtensionProperties(nullptr)", retVal)) { return false; } @@ -1413,8 +1526,8 @@ bool Vulkan::InitDeviceExtensions() DeviceExtensionProps.resize( NumDeviceExtensionProps ); // ... then read the structures from the driver - RetVal = vkEnumerateDeviceExtensionProperties(m_VulkanGpu, nullptr, &NumDeviceExtensionProps, DeviceExtensionProps.data()); - if (!CheckVkError("vkEnumerateDeviceExtensionProperties()", RetVal)) + retVal = vkEnumerateDeviceExtensionProperties(m_VulkanGpu, nullptr, &NumDeviceExtensionProps, DeviceExtensionProps.data()); + if (!CheckVkError("vkEnumerateDeviceExtensionProperties()", retVal)) { return false; } @@ -1468,26 +1581,6 @@ bool Vulkan::InitDeviceExtensions() #endif // defined (ANDROID_HARDWARE_BUFFER_SUPPORT) #endif // defined (OS_ANDROID) - - // Create a vector of all the extensions (names) we are going to load as part of InitDevice() - std::vector DeviceExtensionNames; - for (const auto& e : m_DeviceExtensions.m_Extensions) - { - if (e.second->Status == VulkanExtensionStatus::eLoaded) - DeviceExtensionNames.push_back(e.first.c_str()); - } - - // Sort alphabetically (so we can search using std::lower_bound). Also remove duplicates. - { - std::sort(std::begin(DeviceExtensionNames), std::end(DeviceExtensionNames), [](auto a, auto b) { return strcmp(a, b) < 0; }); - // Remove duplicates - auto endIt = std::unique(std::begin(DeviceExtensionNames), std::end(DeviceExtensionNames), [](auto a, auto b) { return strcmp(a, b) == 0; }); - DeviceExtensionNames.resize(endIt - std::begin(DeviceExtensionNames)); - } - - for(const auto& n: DeviceExtensionNames) - m_DeviceExtensions.m_Extensions[n]->Status = VulkanExtensionStatus::eLoaded; - return true; } @@ -1495,7 +1588,7 @@ bool Vulkan::InitDeviceExtensions() bool Vulkan::InitQueue() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // Before we create our main Vulkan device, we must ensure our physical device // has queue families which can perform the actions we require. For this, we request @@ -1546,7 +1639,7 @@ bool Vulkan::InitQueue() { LOGI(" %d: Does NOT Support TRANSFER", uiIndx); } - + if (pOneItem->queueFlags & VK_QUEUE_DATA_GRAPH_BIT_ARM) { LOGI(" %d: Supports DATA GRAPH", uiIndx); @@ -1566,6 +1659,7 @@ bool Vulkan::InitQueue() } } + return true; } @@ -1573,56 +1667,7 @@ bool Vulkan::InitQueue() bool Vulkan::InitInstanceFunctions() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; - -#if defined (OS_WINDOWS) - // TODO: How do we define functions we want? - - // These functions are part of the instance so we must query for them using - // "vkGetInstanceProcAddr" once the instance has been created - fpGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceSurfaceSupportKHR"); - if (fpGetPhysicalDeviceSurfaceSupportKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceSurfaceSupportKHR"); - } - - fpGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); - if (fpGetPhysicalDeviceSurfaceCapabilitiesKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); - } - - fpGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); - if (fpGetPhysicalDeviceSurfaceCapabilities2KHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceSurfaceCapabilities2KHR"); - } - - fpGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); - if (fpGetPhysicalDeviceSurfaceFormatsKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceSurfaceFormatsKHR"); - } - - fpGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); - if (fpGetPhysicalDeviceSurfacePresentModesKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceSurfacePresentModesKHR"); - } - - fpGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetSwapchainImagesKHR"); - if (fpGetSwapchainImagesKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetSwapchainImagesKHR"); - } -#endif // defined (OS_WINDOWS) - - fpGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) vkGetInstanceProcAddr( m_VulkanInstance, "vkGetPhysicalDeviceMemoryProperties2" ); - if (fpGetPhysicalDeviceMemoryProperties2 == nullptr) - { - LOGE( "Unable to get function pointer from instance: vkGetPhysicalDeviceMemoryProperties2" ); - } - LOGI( "Initialized function pointer from instance: vkGetPhysicalDeviceMemoryProperties2" ); + VkResult retVal = VK_SUCCESS; #if defined (OS_ANDROID) #if __ANDROID_API__ < 29 @@ -1643,24 +1688,6 @@ bool Vulkan::InitInstanceFunctions() #endif // defined (OS_ANDROID) - fpGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); - if (fpGetPhysicalDeviceSurfaceCapabilities2KHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceSurfaceCapabilities2KHR"); - } - - fpGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceProperties2"); - if (fpGetPhysicalDeviceProperties2 == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceProperties2"); - } - - fpGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)vkGetInstanceProcAddr(m_VulkanInstance, "vkGetPhysicalDeviceFeatures2"); - if (fpGetPhysicalDeviceFeatures2 == nullptr) - { - LOGE("Unable to get function pointer from instance: vkGetPhysicalDeviceProperties2"); - } - // Call any registered extensions for instance funtion pointer lookups. { VulkanInstanceFunctionPointerLookup fn { m_VulkanInstance }; @@ -1694,7 +1721,7 @@ void Vulkan::DestroyDebugCallback() bool Vulkan::InitSurface() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // ******************************** // Create surface @@ -1707,18 +1734,22 @@ bool Vulkan::InitSurface() SurfaceInfoStruct.flags = 0; SurfaceInfoStruct.hinstance = m_hInstance; SurfaceInfoStruct.hwnd = m_hWnd; - RetVal = vkCreateWin32SurfaceKHR(m_VulkanInstance, &SurfaceInfoStruct, nullptr, &m_VulkanSurface); + retVal = vkCreateWin32SurfaceKHR(m_VulkanInstance, &SurfaceInfoStruct, nullptr, &m_VulkanSurface); #elif defined (OS_ANDROID) VkAndroidSurfaceCreateInfoKHR SurfaceInfoStruct {VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR}; SurfaceInfoStruct.flags = 0; SurfaceInfoStruct.window = m_pAndroidWindow; - RetVal = vkCreateAndroidSurfaceKHR(m_VulkanInstance, &SurfaceInfoStruct, nullptr, &m_VulkanSurface); + retVal = vkCreateAndroidSurfaceKHR(m_VulkanInstance, &SurfaceInfoStruct, nullptr, &m_VulkanSurface); -#endif // defined (OS_WINDOWS|OS_ANDROID) +#elif defined (OS_LINUX) + + retVal = glfwCreateWindowSurface(m_VulkanInstance, m_pGlfwWindow, nullptr, &m_VulkanSurface); - if (!CheckVkError("vkCreateXXXXSurfaceKHR()", RetVal)) +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) + + if (!CheckVkError("vkCreateXXXXSurfaceKHR()", retVal)) { return false; } @@ -1796,23 +1827,18 @@ bool Vulkan::InitSurface() } //----------------------------------------------------------------------------- -bool Vulkan::InitCompute() +bool Vulkan::InitDataGraph() //----------------------------------------------------------------------------- { VkResult RetVal = VK_SUCCESS; - // See if the present queue supports compute. - if (m_pVulkanQueueProps[m_VulkanQueues[eGraphicsQueue].QueueFamilyIndex].queueFlags & VK_QUEUE_COMPUTE_BIT) - { - m_VulkanGraphicsQueueSupportsCompute = true; - } - - // Look for a queue that supports Compute (but not graphics) + // Look for a queue that supports data graph (note that this queue, if present, can ONLY support data graph operations) for (int i = 0; i < m_pVulkanQueueProps.size(); ++i) { - if ((m_pVulkanQueueProps[i].queueFlags & (VK_QUEUE_COMPUTE_BIT | VK_QUEUE_GRAPHICS_BIT)) == VK_QUEUE_COMPUTE_BIT) + if ((m_pVulkanQueueProps[i].queueFlags & VK_QUEUE_DATA_GRAPH_BIT_ARM) == VK_QUEUE_DATA_GRAPH_BIT_ARM) { - m_VulkanQueues[eComputeQueue].QueueFamilyIndex = i; + m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex = i; + m_VulkanGraphicsQueueSupportsDataGraph = true; break; } } @@ -1821,18 +1847,23 @@ bool Vulkan::InitCompute() } //----------------------------------------------------------------------------- -bool Vulkan::InitDataGraph() +bool Vulkan::InitCompute() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; - // Look for a queue that supports data graph (note that this queue, if present, can ONLY support data graph operations) + // See if the present queue supports compute. + if (m_pVulkanQueueProps[m_VulkanQueues[eGraphicsQueue].QueueFamilyIndex].queueFlags & VK_QUEUE_COMPUTE_BIT) + { + m_VulkanGraphicsQueueSupportsCompute = true; + } + + // Look for a queue that supports Compute (but not graphics) for (int i = 0; i < m_pVulkanQueueProps.size(); ++i) { - if ((m_pVulkanQueueProps[i].queueFlags & VK_QUEUE_DATA_GRAPH_BIT_ARM) == VK_QUEUE_DATA_GRAPH_BIT_ARM) + if ((m_pVulkanQueueProps[i].queueFlags & (VK_QUEUE_COMPUTE_BIT | VK_QUEUE_GRAPHICS_BIT)) == VK_QUEUE_COMPUTE_BIT) { - m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex = i; - m_VulkanGraphicsQueueSupportsDataGraph = true; + m_VulkanQueues[eComputeQueue].QueueFamilyIndex = i; break; } } @@ -1844,7 +1875,7 @@ bool Vulkan::InitDataGraph() bool Vulkan::InitDevice() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // ******************************** // Query the available device features @@ -1929,7 +1960,7 @@ bool Vulkan::InitDevice() std::vector DeviceExtensionNames; DeviceExtensionNames.reserve(m_DeviceExtensions.m_Extensions.size()); for (const auto& e : m_DeviceExtensions.m_Extensions) - if (e.second->Status == VulkanExtensionStatus::eLoaded) + if (e.second->Status == VulkanExtensionStatus::eLoaded && e.second->LoadMode != VulkanExtensionLoadMode::eSkipRequest) DeviceExtensionNames.push_back(e.first.c_str()); if (m_VulkanApiVersion >= VK_MAKE_VERSION( 1, 1, 0 )) @@ -1977,13 +2008,13 @@ bool Vulkan::InitDevice() LOGI(" %d: %s", Which, DeviceInfoStruct.ppEnabledExtensionNames[Which]); } - RetVal = vkCreateDevice(m_VulkanGpu, &DeviceInfoStruct, nullptr, &m_VulkanDevice); - if (!CheckVkError("vkCreateDevice()", RetVal)) + retVal = vkCreateDevice(m_VulkanGpu, &DeviceInfoStruct, nullptr, &m_VulkanDevice); + if (!CheckVkError("vkCreateDevice()", retVal)) { return false; } - LOGI("Vulkan Device Created!"); + volkLoadDevice(m_VulkanDevice); // Pop the extensions back off the VkPhysicalDeviceFeatures2 chain (most registered extensions will do nothing here) m_DeviceCreateInfoExtensions.PopExtensions(&DeviceInfoStruct); @@ -2009,27 +2040,15 @@ bool Vulkan::InitDevice() m_VulkanDeviceFunctionPointerLookupExtensions.PushExtensions( &fn ); } - - // VK_KHR_swapchain functions -#if defined (OS_WINDOWS) - fpCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)fpGetDeviceProcAddr(m_VulkanDevice, "vkCreateSwapchainKHR"); - if (fpCreateSwapchainKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkCreateSwapchainKHR"); - } - - fpDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)fpGetDeviceProcAddr(m_VulkanDevice, "vkDestroySwapchainKHR"); - if (fpDestroySwapchainKHR == nullptr) - { - LOGE("Unable to get function pointer from instance: vkDestroySwapchainKHR"); - } - - fpGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)fpGetDeviceProcAddr(m_VulkanDevice, "vkGetSwapchainImagesKHR"); - if (fpGetSwapchainImagesKHR == nullptr) + // ******************************** + // Call the PostLoad for all device extensions. + // This is done after the LookupFunctionPointers calls (where applicable) but maybe should go before? + // ******************************** + for (auto& extension : m_DeviceExtensions.m_Extensions) { - LOGE("Unable to get function pointer from instance: vkGetSwapchainImagesKHR"); + if (extension.second->Status == VulkanExtensionStatus::eLoaded) + extension.second->PostLoad(); } -#endif // defined (OS_WINDOWS) // ******************************** // Create the Device Queue @@ -2043,7 +2062,7 @@ bool Vulkan::InitDevice() { vkGetDeviceQueue(m_VulkanDevice, m_VulkanQueues[eComputeQueue].QueueFamilyIndex, 0, &m_VulkanQueues[eComputeQueue].Queue); } - + // ******************************** // Create the Data Graph Device Queue // ******************************** @@ -2056,8 +2075,8 @@ bool Vulkan::InitDevice() // Get Supported Formats // ******************************** uint32_t NumFormats; - RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, nullptr); - if (!CheckVkError("vkGetPhysicalDeviceSurfaceFormatsKHR()", RetVal)) + retVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, nullptr); + if (!CheckVkError("vkGetPhysicalDeviceSurfaceFormatsKHR()", retVal)) { return false; } @@ -2073,8 +2092,8 @@ bool Vulkan::InitDevice() vkSurfaceFormats.resize( NumFormats ); // ... then read the structures from the driver - RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, vkSurfaceFormats.data()); - if (!CheckVkError("vkGetPhysicalDeviceSurfaceFormatsKHR()", RetVal)) + retVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceFormatsKHR(m_VulkanGpu, m_VulkanSurface, &NumFormats, vkSurfaceFormats.data()); + if (!CheckVkError("vkGetPhysicalDeviceSurfaceFormatsKHR()", retVal)) { return false; } @@ -2104,6 +2123,16 @@ bool Vulkan::InitDevice() { // Just take the first one by default m_SurfaceFormat = m_SurfaceFormats[0].format; + + // See if we have a srgb format (and use it if we do) + for(const auto& f: m_SurfaceFormats) + { + if (FormatIsSrgb(f.format)) + { + m_SurfaceFormat = f.format; + break; + } + } } // Taking the first colorspace @@ -2117,15 +2146,15 @@ bool Vulkan::InitDevice() bool Vulkan::InitSyncElements() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // We have semaphores for rendering and backbuffer signalling. VkSemaphoreCreateInfo semCreateInfo {VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO}; semCreateInfo.flags = 0; m_RenderCompleteSemaphore = VK_NULL_HANDLE; - RetVal = vkCreateSemaphore(m_VulkanDevice, &semCreateInfo, nullptr, &m_RenderCompleteSemaphore); - if (!CheckVkError("vkCreateSemaphore()", RetVal)) + retVal = vkCreateSemaphore(m_VulkanDevice, &semCreateInfo, nullptr, &m_RenderCompleteSemaphore); + if (!CheckVkError("vkCreateSemaphore()", retVal)) { return false; } @@ -2137,19 +2166,21 @@ bool Vulkan::InitSyncElements() bool Vulkan::InitCommandPools() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // ******************************** // Create the command pool // ******************************** LOGI("Creating Vulkan Command Pool..."); - VkCommandPoolCreateInfo CmdPoolInfoStruct {VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO}; - CmdPoolInfoStruct.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - CmdPoolInfoStruct.queueFamilyIndex = m_VulkanQueues[eGraphicsQueue].QueueFamilyIndex; + const VkCommandPoolCreateInfo CmdPoolInfoStruct{ + .sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, + .flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, + .queueFamilyIndex = (uint32_t)m_VulkanQueues[eGraphicsQueue].QueueFamilyIndex + }; - RetVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eGraphicsQueue].CommandPool); - if (!CheckVkError("vkCreateCommandPool()", RetVal)) + retVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eGraphicsQueue].CommandPool); + if (!CheckVkError("vkCreateCommandPool()", retVal)) { return false; } @@ -2157,12 +2188,14 @@ bool Vulkan::InitCommandPools() // Allocate a command pool for (async) Compute. if (m_VulkanQueues[eComputeQueue].Queue) { - VkCommandPoolCreateInfo CmdPoolInfoStruct {VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO}; - CmdPoolInfoStruct.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - CmdPoolInfoStruct.queueFamilyIndex = m_VulkanQueues[eComputeQueue].QueueFamilyIndex; + const VkCommandPoolCreateInfo CmdPoolInfoStruct{ + .sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, + .flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, + .queueFamilyIndex = (uint32_t)m_VulkanQueues[eComputeQueue].QueueFamilyIndex + }; - RetVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eComputeQueue].CommandPool); - if (!CheckVkError("vkCreateCommandPool()", RetVal)) + retVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eComputeQueue].CommandPool); + if (!CheckVkError("vkCreateCommandPool()", retVal)) { return false; } @@ -2177,13 +2210,13 @@ bool Vulkan::InitCommandPools() engineInfo.processingEngineCount = 1; engineInfo.pProcessingEngines = &m_VulkanDataGraphProcessingEngine; - VkCommandPoolCreateInfo CmdPoolInfoStruct {VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO}; + VkCommandPoolCreateInfo CmdPoolInfoStruct{ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO }; CmdPoolInfoStruct.pNext = &engineInfo; CmdPoolInfoStruct.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; CmdPoolInfoStruct.queueFamilyIndex = m_VulkanQueues[eDataGraphQueue].QueueFamilyIndex; - RetVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eDataGraphQueue].CommandPool); - if (!CheckVkError("vkCreateCommandPool()", RetVal)) + retVal = vkCreateCommandPool(m_VulkanDevice, &CmdPoolInfoStruct, nullptr, &m_VulkanQueues[eDataGraphQueue].CommandPool); + if (!CheckVkError("vkCreateCommandPool()", retVal)) { return false; } @@ -2205,8 +2238,8 @@ bool Vulkan::InitPipelineCache() { assert(m_PipelineCache == VK_NULL_HANDLE); VkPipelineCacheCreateInfo CreateInfo = { VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO }; - auto RetVal = vkCreatePipelineCache( m_VulkanDevice, &CreateInfo, nullptr, &m_PipelineCache ); - if (!CheckVkError( "vkCreatePipelineCache()", RetVal )) + auto retVal = vkCreatePipelineCache( m_VulkanDevice, &CreateInfo, nullptr, &m_PipelineCache ); + if (!CheckVkError( "vkCreatePipelineCache()", retVal )) { return false; } @@ -2218,19 +2251,21 @@ bool Vulkan::InitPipelineCache() bool Vulkan::QuerySurfaceCapabilities(VkSurfaceCapabilitiesKHR& outVulkanSurfaceCaps) //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; if (m_ExtSurfaceCapabilities2 && m_ExtSurfaceCapabilities2->Status == VulkanExtensionStatus::eLoaded) { // Have the extension for vkGetPhysicalDeviceSurfaceCapabilities2KHR. // Ideally we could query the VkHdrMetadataEXT for this surface and use that as part of colormapping/output. // Doesnt seem to be supported for Qualcomm or Nvidia drivers ('undocumented' feature on AMD) - VkPhysicalDeviceSurfaceInfo2KHR SurfaceInfo = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR }; - SurfaceInfo.surface = m_VulkanSurface; - VkSurfaceCapabilities2KHR SurfaceCapabilities = { VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR }; + const VkPhysicalDeviceSurfaceInfo2KHR SurfaceInfo { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, + .surface = m_VulkanSurface + }; + VkSurfaceCapabilities2KHR SurfaceCapabilities { VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR }; - RetVal = m_ExtSurfaceCapabilities2->m_vkGetPhysicalDeviceSurfaceCapabilities2KHR(m_VulkanGpu, &SurfaceInfo, &SurfaceCapabilities); - if (!CheckVkError("vkGetPhysicalDeviceSurfaceCapabilities2KHR()", RetVal)) + retVal = m_ExtSurfaceCapabilities2->m_vkGetPhysicalDeviceSurfaceCapabilities2KHR(m_VulkanGpu, &SurfaceInfo, &SurfaceCapabilities); + if (!CheckVkError("vkGetPhysicalDeviceSurfaceCapabilities2KHR()", retVal)) { return false; } @@ -2239,8 +2274,8 @@ bool Vulkan::QuerySurfaceCapabilities(VkSurfaceCapabilitiesKHR& outVulkanSurface } else { - RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(m_VulkanGpu, m_VulkanSurface, &outVulkanSurfaceCaps); - if (!CheckVkError("vkGetPhysicalDeviceSurfaceCapabilitiesKHR()", RetVal)) + retVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(m_VulkanGpu, m_VulkanSurface, &outVulkanSurfaceCaps); + if (!CheckVkError("vkGetPhysicalDeviceSurfaceCapabilitiesKHR()", retVal)) { return false; } @@ -2293,47 +2328,53 @@ bool Vulkan::QuerySurfaceCapabilities() bool Vulkan::InitSwapChain() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // ******************************** // Presentation Modes // ******************************** - uint32_t NumPresentModes; + uint32_t numPresentModes; - RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, nullptr); - if (!CheckVkError("vkGetPhysicalDeviceSurfacePresentModesKHR()", RetVal)) + retVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfacePresentModesKHR( m_VulkanGpu, m_VulkanSurface, &numPresentModes, nullptr ); + if (!CheckVkError( "vkGetPhysicalDeviceSurfacePresentModesKHR()", retVal )) { return false; } - std::vector PresentModes; - PresentModes.resize(NumPresentModes); + std::vector presentModes; + presentModes.resize( numPresentModes ); - RetVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfacePresentModesKHR(m_VulkanGpu, m_VulkanSurface, &NumPresentModes, PresentModes.data()); - if (!CheckVkError("vkGetPhysicalDeviceSurfacePresentModesKHR()", RetVal)) + retVal = m_ExtKhrSurface->m_vkGetPhysicalDeviceSurfacePresentModesKHR( m_VulkanGpu, m_VulkanSurface, &numPresentModes, presentModes.data() ); + if (!CheckVkError( "vkGetPhysicalDeviceSurfacePresentModesKHR()", retVal )) { return false; } - LOGI("Supported Present Modes:"); - for (uint32_t WhichMode = 0; WhichMode < NumPresentModes; WhichMode++) + LOGI( "Supported Present Modes:" ); + for (uint32_t whichMode = 0; whichMode < numPresentModes; whichMode++) { - switch (PresentModes[WhichMode]) + switch (presentModes[whichMode]) { case VK_PRESENT_MODE_IMMEDIATE_KHR: - LOGI(" VK_PRESENT_MODE_IMMEDIATE_KHR"); + LOGI( " VK_PRESENT_MODE_IMMEDIATE_KHR" ); break; case VK_PRESENT_MODE_MAILBOX_KHR: - LOGI(" VK_PRESENT_MODE_MAILBOX_KHR"); + LOGI( " VK_PRESENT_MODE_MAILBOX_KHR" ); break; case VK_PRESENT_MODE_FIFO_KHR: - LOGI(" VK_PRESENT_MODE_FIFO_KHR"); + LOGI( " VK_PRESENT_MODE_FIFO_KHR" ); break; case VK_PRESENT_MODE_FIFO_RELAXED_KHR: - LOGI(" VK_PRESENT_MODE_FIFO_RELAXED_KHR"); + LOGI( " VK_PRESENT_MODE_FIFO_RELAXED_KHR" ); + break; + case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR: + LOGI( " VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR" ); + break; + case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR: + LOGI( " VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR" ); break; default: - LOGI(" Unknown! (%d)", PresentModes[WhichMode]); + LOGI( " Unknown! (%d)", presentModes[whichMode] ); break; } } @@ -2345,41 +2386,41 @@ bool Vulkan::InitSwapChain() // sequential if there are more than two images // Immediate: Requests are applied immediately and tearing may occur. // Unless there is a vsync, the GPU is rendering frames that are not displayed. - VkPresentModeKHR SwapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR; // FIFO should always be available as a fall-back + VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR; // FIFO should always be available as a fall-back - for (uint32_t uiIndx = 0; uiIndx < NumPresentModes; uiIndx++) + for (uint32_t uiIndx = 0; uiIndx < numPresentModes; uiIndx++) { - if (m_ConfigOverride.PresentMode.has_value() && m_ConfigOverride.PresentMode.value() == PresentModes[uiIndx]) + if (m_ConfigOverride.PresentMode.has_value() && m_ConfigOverride.PresentMode.value() == presentModes[uiIndx]) { // Found the app selected presentation mode! - SwapchainPresentMode = m_ConfigOverride.PresentMode.value(); + swapchainPresentMode = m_ConfigOverride.PresentMode.value(); break; } - else if (PresentModes[uiIndx] == VK_PRESENT_MODE_MAILBOX_KHR) + else if (presentModes[uiIndx] == VK_PRESENT_MODE_MAILBOX_KHR) { // Mailbox is our 1st choice if we dont have (or can't find) an app selected override. - SwapchainPresentMode = VK_PRESENT_MODE_MAILBOX_KHR; + swapchainPresentMode = VK_PRESENT_MODE_MAILBOX_KHR; } - else if ((SwapchainPresentMode != VK_PRESENT_MODE_MAILBOX_KHR) && (PresentModes[uiIndx] == VK_PRESENT_MODE_IMMEDIATE_KHR)) + else if ((swapchainPresentMode != VK_PRESENT_MODE_MAILBOX_KHR) && (presentModes[uiIndx] == VK_PRESENT_MODE_IMMEDIATE_KHR)) { // Immediate is our 2nd choice if we dont have (or can't find) an app selected override. - SwapchainPresentMode = VK_PRESENT_MODE_IMMEDIATE_KHR; + swapchainPresentMode = VK_PRESENT_MODE_IMMEDIATE_KHR; } } - switch (SwapchainPresentMode) + switch (swapchainPresentMode) { case VK_PRESENT_MODE_IMMEDIATE_KHR: - LOGI("Setting SwapChain Present Mode: VK_PRESENT_MODE_IMMEDIATE_KHR"); + LOGI( "Setting SwapChain Present Mode: VK_PRESENT_MODE_IMMEDIATE_KHR" ); break; case VK_PRESENT_MODE_MAILBOX_KHR: - LOGI("Setting SwapChain Present Mode: VK_PRESENT_MODE_MAILBOX_KHR"); + LOGI( "Setting SwapChain Present Mode: VK_PRESENT_MODE_MAILBOX_KHR" ); break; case VK_PRESENT_MODE_FIFO_KHR: - LOGI("Setting SwapChain Present Mode: VK_PRESENT_MODE_FIFO_KHR"); + LOGI( "Setting SwapChain Present Mode: VK_PRESENT_MODE_FIFO_KHR" ); break; case VK_PRESENT_MODE_FIFO_RELAXED_KHR: - LOGI("Setting SwapChain Present Mode: VK_PRESENT_MODE_FIFO_RELAXED_KHR"); + LOGI( "Setting SwapChain Present Mode: VK_PRESENT_MODE_FIFO_RELAXED_KHR" ); break; case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR: LOGI( "Setting SwapChain Present Mode: VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR" ); @@ -2388,117 +2429,125 @@ bool Vulkan::InitSwapChain() LOGI( "Setting SwapChain Present Mode: VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR" ); break; default: - LOGI("Setting SwapChain Present Mode: Unknown! (%d)", SwapchainPresentMode); + LOGI( "Setting SwapChain Present Mode: Unknown! (%d)", swapchainPresentMode ); break; } // // Swapchain Extent (grab this again as the swapchain rotate may have swapped the dimensions) // - VkExtent2D SwapchainExtent; + VkExtent2D swapchainExtent; // If the surface capabilities comes back with current extent set to -1 it means // the size is undefined and we can set to what we want. // If it comes back as something it had better match what we set it to. if (m_VulkanSurfaceCaps.currentExtent.width == (uint32_t)-1 || m_VulkanSurfaceCaps.currentExtent.height == (uint32_t)-1 || - m_VulkanSurfaceCaps.currentExtent.width == 0 || m_VulkanSurfaceCaps.currentExtent.height == 0) + m_VulkanSurfaceCaps.currentExtent.width == 0 || m_VulkanSurfaceCaps.currentExtent.height == 0) { - SwapchainExtent.width = m_SurfaceWidth; - SwapchainExtent.height = m_SurfaceHeight; - LOGI("Surface Caps returned an extent with at least one dimension invalid! Setting to %dx%d", SwapchainExtent.width, SwapchainExtent.height); + swapchainExtent.width = m_SurfaceWidth; + swapchainExtent.height = m_SurfaceHeight; + LOGI( "Surface Caps returned an extent with at least one dimension invalid! Setting to %dx%d", swapchainExtent.width, swapchainExtent.height ); } else { - SwapchainExtent = m_VulkanSurfaceCaps.currentExtent; + swapchainExtent = m_VulkanSurfaceCaps.currentExtent; } // Take the surface width from the Vulkan surface - m_SurfaceWidth = SwapchainExtent.width; - m_SurfaceHeight = SwapchainExtent.height; + m_SurfaceWidth = swapchainExtent.width; + m_SurfaceHeight = swapchainExtent.height; - LOGI("Vulkan surface size: %dx%d", m_SurfaceWidth, m_SurfaceHeight); + LOGI( "Vulkan surface size: %dx%d", m_SurfaceWidth, m_SurfaceHeight ); - uint32_t DesiredSwapchainImages = NUM_VULKAN_BUFFERS; - if (SwapchainPresentMode == VK_PRESENT_MODE_MAILBOX_KHR) + uint32_t desiredSwapchainImages = NUM_VULKAN_BUFFERS; + if (swapchainPresentMode == VK_PRESENT_MODE_MAILBOX_KHR) { // In mailbox mode we request the number of buffers the application needs and Vulkan will want one or two more! https://github.com/KhronosGroup/Vulkan-Docs/issues/909 - DesiredSwapchainImages = std::max((uint32_t)3, m_VulkanSurfaceCaps.minImageCount + 1/*when running multithreaded and mailbox present we need even more swapchains on Android! However many Android needs (which includes one we can be preparing on the CPU) plus one if we have a thread simultaneously submitting the last frames commands*/); + desiredSwapchainImages = std::max( (uint32_t)3, m_VulkanSurfaceCaps.minImageCount + 1/*when running multithreaded and mailbox present we need even more swapchains on Android! However many Android needs (which includes one we can be preparing on the CPU) plus one if we have a thread simultaneously submitting the last frames commands*/ ); } - if (m_VulkanSurfaceCaps.minImageCount > DesiredSwapchainImages) + if (m_VulkanSurfaceCaps.minImageCount > desiredSwapchainImages) { - LOGE("****************************************"); - LOGE("Minimum image count (%d) is greater than NUM_VULKAN_BUFFERS (%d)!", m_VulkanSurfaceCaps.minImageCount, NUM_VULKAN_BUFFERS); - LOGE("You will have all sorts of problems!"); - LOGE("****************************************"); - assert(0); + LOGE( "****************************************" ); + LOGE( "Minimum image count (%d) is greater than NUM_VULKAN_BUFFERS (%d)!", m_VulkanSurfaceCaps.minImageCount, NUM_VULKAN_BUFFERS ); + LOGE( "You will have all sorts of problems!" ); + LOGE( "****************************************" ); + assert( 0 ); } - if ((m_VulkanSurfaceCaps.maxImageCount > 0) && (DesiredSwapchainImages > m_VulkanSurfaceCaps.maxImageCount)) + if ((m_VulkanSurfaceCaps.maxImageCount > 0) && (desiredSwapchainImages > m_VulkanSurfaceCaps.maxImageCount)) { - LOGE("****************************************"); - LOGE("We desired %d swapchain images but surface limits us to %d!", DesiredSwapchainImages, m_VulkanSurfaceCaps.maxImageCount); - LOGE("You will have all sorts of problems!"); - LOGE("****************************************"); - DesiredSwapchainImages = m_VulkanSurfaceCaps.maxImageCount; + LOGE( "****************************************" ); + LOGE( "We desired %d swapchain images but surface limits us to %d!", desiredSwapchainImages, m_VulkanSurfaceCaps.maxImageCount ); + LOGE( "You will have all sorts of problems!" ); + LOGE( "****************************************" ); + desiredSwapchainImages = m_VulkanSurfaceCaps.maxImageCount; } // If we have the render pass transform extension (and want to use it), then make the pre-transform match the current transform and enable flag to setup renderpasses/commandbuffers appropriately. // Otherwise we want to leave the pretransform alone and let the hardware do the rotation, if supported. { - if( m_ExtRenderPassTransformAvailable && m_LayerKhronosValidationAvailable ) + if (m_ExtRenderPassTransformAvailable && m_LayerKhronosValidationAvailable) { LOGE( "Disabling QCOM_Render_Pass_Transform as it is not supported while Validation layers are enabled" ); m_ExtRenderPassTransformAvailable = false; } - VkSurfaceTransformFlagsKHR DesiredPreTransform; + VkSurfaceTransformFlagsKHR desiredPreTransform; LOGI( "QCOM_Render_Pass_Transform - ExtRenderPassTransformAvailable=%s UseRenderPassTransform=%s", m_ExtRenderPassTransformAvailable ? "True" : "False", m_UseRenderPassTransform ? "True" : "False" ); if (m_UseRenderPassTransform && m_ExtRenderPassTransformAvailable) { - DesiredPreTransform = m_VulkanSurfaceCaps.currentTransform; + desiredPreTransform = m_VulkanSurfaceCaps.currentTransform; m_ExtRenderPassTransformEnabled = (m_VulkanSurfaceCaps.currentTransform == VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR) || (m_VulkanSurfaceCaps.currentTransform == VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR); } else if (m_UsePreTransform) { - DesiredPreTransform = m_VulkanSurfaceCaps.currentTransform; + desiredPreTransform = m_VulkanSurfaceCaps.currentTransform; } else { m_ExtRenderPassTransformEnabled = false; if (m_VulkanSurfaceCaps.supportedTransforms & VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR) { - DesiredPreTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR; + desiredPreTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR; } else { - DesiredPreTransform = m_VulkanSurfaceCaps.currentTransform; + desiredPreTransform = m_VulkanSurfaceCaps.currentTransform; } } - if ((DesiredPreTransform & VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR) - || (DesiredPreTransform & VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)) + if ((desiredPreTransform & VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR) + || (desiredPreTransform & VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)) { - LOGI("Vulkan surface extents swapped (width <-> height)"); - std::swap(SwapchainExtent.width, SwapchainExtent.height); + LOGI( "Vulkan surface extents swapped (width <-> height)" ); + std::swap( swapchainExtent.width, swapchainExtent.height ); } - m_SwapchainPreTransform = (VkSurfaceTransformFlagBitsKHR)DesiredPreTransform; + m_SwapchainPreTransform = (VkSurfaceTransformFlagBitsKHR)desiredPreTransform; } // ******************************** // Swapchain // ******************************** - VkSwapchainCreateInfoKHR SwapchainInfo {VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR}; - SwapchainInfo.flags = 0; - SwapchainInfo.surface = m_VulkanSurface; - SwapchainInfo.minImageCount = DesiredSwapchainImages; - SwapchainInfo.imageFormat = TextureFormatToVk( m_SurfaceFormat ); - SwapchainInfo.imageColorSpace = m_SurfaceColorSpace; - SwapchainInfo.imageExtent = SwapchainExtent; - SwapchainInfo.imageArrayLayers = 1; - - // Image usage changes if we can blit it - SwapchainInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + VkSwapchainCreateInfoKHR SwapchainInfo{ + .sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, + .flags = 0, + .surface = m_VulkanSurface, + .minImageCount = desiredSwapchainImages, + .imageFormat = TextureFormatToVk( m_SurfaceFormat ), + .imageColorSpace = m_SurfaceColorSpace, + .imageExtent = swapchainExtent, + .imageArrayLayers = 1, + .imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, // Image usage changes if we can blit it + .imageSharingMode = VK_SHARING_MODE_EXCLUSIVE, + .queueFamilyIndexCount = 0, + .pQueueFamilyIndices = nullptr, + .preTransform = m_SwapchainPreTransform, + .compositeAlpha = GetBestVulkanCompositeAlpha(), // Get the supported composite alpha flag + .presentMode = swapchainPresentMode, + .clipped = true, + .oldSwapchain = m_VulkanSwapchain, + }; const VkFormatProperties& FormatProps = GetFormatProperties(TextureFormatToVk(m_SurfaceFormat)); if ((FormatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_BLIT_DST_BIT)) { @@ -2509,38 +2558,26 @@ bool Vulkan::InitSwapChain() SwapchainInfo.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; // screenshottable } - SwapchainInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE; - SwapchainInfo.queueFamilyIndexCount = 0; - SwapchainInfo.pQueueFamilyIndices = nullptr; - SwapchainInfo.preTransform = m_SwapchainPreTransform; - - // Get the supported composite alpha flag - SwapchainInfo.compositeAlpha = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR; - SwapchainInfo.compositeAlpha = GetBestVulkanCompositeAlpha(); - - SwapchainInfo.presentMode = SwapchainPresentMode; - SwapchainInfo.clipped = true; - SwapchainInfo.oldSwapchain = m_VulkanSwapchain; - - LOGI("Trying to get %d swapchain images...", DesiredSwapchainImages); -#if defined (OS_WINDOWS) - RetVal = fpCreateSwapchainKHR(m_VulkanDevice, &SwapchainInfo, nullptr, &m_VulkanSwapchain); + LOGI("Trying to get %d swapchain images...", desiredSwapchainImages); +#if defined (OS_WINDOWS) || defined (OS_LINUX) + retVal = m_ExtSwapchain->m_vkCreateSwapchainKHR(m_VulkanDevice, &SwapchainInfo, nullptr, &m_VulkanSwapchain); #elif defined (OS_ANDROID) - RetVal = vkCreateSwapchainKHR(m_VulkanDevice, &SwapchainInfo, nullptr, &m_VulkanSwapchain); -#endif // defined (OS_WINDOWS|OS_ANDROID) - if (!CheckVkError("vkCreateSwapchainKHR()", RetVal)) + retVal = vkCreateSwapchainKHR(m_VulkanDevice, &SwapchainInfo, nullptr, &m_VulkanSwapchain); +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) + if (!CheckVkError("vkCreateSwapchainKHR()", retVal)) { return false; } -#if defined (OS_WINDOWS) - RetVal = fpGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, nullptr); +#if defined (OS_WINDOWS) || defined (OS_LINUX) + retVal = m_ExtSwapchain->m_vkGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, nullptr); #elif defined (OS_ANDROID) - RetVal = vkGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, nullptr); -#endif // defined (OS_WINDOWS|OS_ANDROID) - if (!CheckVkError("vkGetSwapchainImagesKHR(nullptr)", RetVal)) - { - return false; + retVal = vkGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, nullptr); +#else +#error "Unsupported platform" +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) + if (!CheckVkError("vkGetSwapchainImagesKHR(nullptr)", retVal)) + { return false; } LOGI("SwapChain has %d images", m_SwapchainImageCount); @@ -2554,7 +2591,7 @@ bool Vulkan::InitSwapChain() if ((m_VulkanSurfaceCaps.maxImageCount > 0) && (m_SwapchainImageCount > m_VulkanSurfaceCaps.maxImageCount)) { LOGE("****************************************"); - LOGE("We asked for %d swapchain images but got back %d!", DesiredSwapchainImages, m_SwapchainImageCount); + LOGE("We asked for %d swapchain images but got back %d!", desiredSwapchainImages, m_SwapchainImageCount); LOGE("****************************************"); } @@ -2572,127 +2609,138 @@ bool Vulkan::InitSwapChain() std::vector swapchainImages; swapchainImages.resize(m_SwapchainImageCount); -#if defined (OS_WINDOWS) - RetVal = fpGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, swapchainImages.data()); +#if defined (OS_WINDOWS) || defined (OS_LINUX) + retVal = m_ExtSwapchain->m_vkGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, swapchainImages.data()); #elif defined (OS_ANDROID) - RetVal = vkGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, swapchainImages.data()); -#endif // defined (OS_WINDOWS|OS_ANDROID) - if (!CheckVkError("vkGetSwapchainImagesKHR()", RetVal)) + retVal = vkGetSwapchainImagesKHR(m_VulkanDevice, m_VulkanSwapchain, &m_SwapchainImageCount, swapchainImages.data()); +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) + if (!CheckVkError("vkGetSwapchainImagesKHR()", retVal)) + { + return false; + } + + // ******************************** + // Setup Depth + // ******************************** + m_SwapchainDepth.format = m_ConfigOverride.SwapchainDepthFormat.value_or( GetBestSurfaceDepthFormat() ); + + if (m_SwapchainDepth.format != TextureFormat::UNDEFINED) { - return false; + const VkFormat vkSwapchainDepthFormat = TextureFormatToVk( m_SwapchainDepth.format ); + const VkImageCreateInfo imageInfo{ + .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + .flags = 0, + .imageType = VK_IMAGE_TYPE_2D, + .format = vkSwapchainDepthFormat, + .extent { + .width = swapchainExtent.width, + .height = swapchainExtent.height, + .depth = 1 }, // Spec says for VK_IMAGE_TYPE_2D depth must be 1 + .mipLevels = 1, + .arrayLayers = 1, + .samples = VK_SAMPLE_COUNT_1_BIT, + .tiling = VK_IMAGE_TILING_OPTIMAL, + .usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, + .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED + }; + + m_SwapchainDepth.image = m_MemoryManager.CreateImage( imageInfo, MemoryUsage::GpuExclusive ); + if (!m_SwapchainDepth.image) + { + LOGE( "Error creating swapchain back buffer depth image" ); + return false; + } + + // Create the view for this image + const VkImageViewCreateInfo ImageViewInfo{ + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .flags = 0, + .image = m_SwapchainDepth.image.GetVkBuffer(), + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = vkSwapchainDepthFormat, + .components { + .r = VK_COMPONENT_SWIZZLE_R, + .g = VK_COMPONENT_SWIZZLE_G, + .b = VK_COMPONENT_SWIZZLE_B, + .a = VK_COMPONENT_SWIZZLE_A + }, + .subresourceRange { + .aspectMask = (VkImageAspectFlags)(FormatHasStencil( m_SwapchainDepth.format ) ? (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT) : VK_IMAGE_ASPECT_DEPTH_BIT), + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1 + }, + }; + retVal = vkCreateImageView( m_VulkanDevice, &ImageViewInfo, nullptr, &m_SwapchainDepth.view ); + if (!CheckVkError( "vkCreateImageView()", retVal )) + { + return false; + } } assert(m_SwapchainBuffers.empty()); - m_SwapchainBuffers.resize(m_SwapchainImageCount, {}); + m_SwapchainBuffers.reserve(m_SwapchainImageCount); for (uint32_t uiIndx = 0; uiIndx < m_SwapchainImageCount; uiIndx++) { - m_SwapchainBuffers[uiIndx].image = swapchainImages[uiIndx]; + auto& swapchainBuffer = m_SwapchainBuffers.emplace_back( SwapchainBuffers{}); + swapchainBuffer.image = swapchainImages[uiIndx]; // Render loop will expect image to have been used before and in // VK_IMAGE_LAYOUT_PRESENT_SRC_KHR // layout and will change to COLOR_ATTACHMENT_OPTIMAL, so init the image // to that state - VkImageViewCreateInfo ImageViewInfo {VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO}; - ImageViewInfo.flags = 0; - ImageViewInfo.image = m_SwapchainBuffers[uiIndx].image; - ImageViewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - ImageViewInfo.format = TextureFormatToVk( m_SurfaceFormat ); - ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_R; - ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_G; - ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_B; - ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_A; - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - ImageViewInfo.subresourceRange.baseMipLevel = 0; - ImageViewInfo.subresourceRange.levelCount = 1; - ImageViewInfo.subresourceRange.baseArrayLayer = 0; - ImageViewInfo.subresourceRange.layerCount = 1; - - RetVal = vkCreateImageView(m_VulkanDevice, &ImageViewInfo, nullptr, &m_SwapchainBuffers[uiIndx].view); - if (!CheckVkError("vkCreateImageView()", RetVal)) + const VkImageViewCreateInfo ImageViewInfo{ + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .flags = 0, + .image = swapchainBuffer.image, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = TextureFormatToVk( m_SurfaceFormat ), + .components { + .r = VK_COMPONENT_SWIZZLE_R, + .g = VK_COMPONENT_SWIZZLE_G, + .b = VK_COMPONENT_SWIZZLE_B, + .a = VK_COMPONENT_SWIZZLE_A }, + .subresourceRange { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1 + } + }; + retVal = vkCreateImageView( m_VulkanDevice, &ImageViewInfo, nullptr, &swapchainBuffer.view ); + if (!CheckVkError( "vkCreateImageView()", retVal )) { return false; } // Create the wait fences, one per swapchain image - VkFenceCreateInfo FenceInfo {VK_STRUCTURE_TYPE_FENCE_CREATE_INFO}; - FenceInfo.flags = VK_FENCE_CREATE_SIGNALED_BIT; - - RetVal = vkCreateFence(m_VulkanDevice, &FenceInfo, nullptr, &m_SwapchainBuffers[uiIndx].fence); - if (!CheckVkError("vkCreateFence()", RetVal)) + const VkFenceCreateInfo fenceInfo{ + .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, + .flags = VK_FENCE_CREATE_SIGNALED_BIT + }; + retVal = vkCreateFence( m_VulkanDevice, &fenceInfo, nullptr, &swapchainBuffer.fence ); + if (!CheckVkError( "vkCreateFence()", retVal )) { return false; } // Create semaphores for backbuffer signalling, one per swapchain. - VkSemaphoreCreateInfo semCreateInfo {VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO}; - semCreateInfo.flags = 0; - - RetVal = vkCreateSemaphore(m_VulkanDevice, &semCreateInfo, nullptr, &m_SwapchainBuffers[uiIndx].semaphore); - if (!CheckVkError("vkCreateSemaphore()", RetVal)) + const VkSemaphoreCreateInfo semCreateInfo{ + .sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, + .flags = 0 + }; + retVal = vkCreateSemaphore(m_VulkanDevice, &semCreateInfo, nullptr, &swapchainBuffer.semaphore); + if (!CheckVkError("vkCreateSemaphore()", retVal)) { return false; } } // Each swapchain image - - // ******************************** - // Setup Depth - // ******************************** - m_SwapchainDepth.format = m_ConfigOverride.SwapchainDepthFormat.value_or( GetBestSurfaceDepthFormat() ); - - if (m_SwapchainDepth.format != TextureFormat::UNDEFINED) - { - const VkFormat vkSwapchainDepthFormat = TextureFormatToVk(m_SwapchainDepth.format); - VkImageCreateInfo ImageInfo {VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; - ImageInfo.flags = 0; - ImageInfo.imageType = VK_IMAGE_TYPE_2D; - ImageInfo.format = vkSwapchainDepthFormat; - ImageInfo.extent.width = SwapchainExtent.width; - ImageInfo.extent.height = SwapchainExtent.height; - ImageInfo.extent.depth = 1; // Spec says for VK_IMAGE_TYPE_2D depth must be 1 - ImageInfo.mipLevels = 1; - ImageInfo.arrayLayers = 1; - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; - ImageInfo.tiling = VK_IMAGE_TILING_OPTIMAL; - ImageInfo.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - - m_SwapchainDepth.image = m_MemoryManager.CreateImage( ImageInfo, MemoryUsage::GpuExclusive ); - if( !m_SwapchainDepth.image ) - { - LOGE( "Error creating swapchain back buffer depth image" ); - return false; - } - - // Create the view for this image - VkImageViewCreateInfo ImageViewInfo {VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO}; - ImageViewInfo.flags = 0; - ImageViewInfo.format = vkSwapchainDepthFormat; - ImageViewInfo.components.r = VK_COMPONENT_SWIZZLE_R; - ImageViewInfo.components.g = VK_COMPONENT_SWIZZLE_G; - ImageViewInfo.components.b = VK_COMPONENT_SWIZZLE_B; - ImageViewInfo.components.a = VK_COMPONENT_SWIZZLE_A; - if (FormatHasStencil( m_SwapchainDepth.format )) - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; - else - ImageViewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; - ImageViewInfo.subresourceRange.baseMipLevel = 0; - ImageViewInfo.subresourceRange.levelCount = 1; - ImageViewInfo.subresourceRange.baseArrayLayer = 0; - ImageViewInfo.subresourceRange.layerCount = 1; - ImageViewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - ImageViewInfo.image = m_SwapchainDepth.image.GetVkBuffer(); - - RetVal = vkCreateImageView(m_VulkanDevice, &ImageViewInfo, nullptr, &m_SwapchainDepth.view); - if (!CheckVkError("vkCreateImageView()", RetVal)) - { - return false; - } - } - return true; } @@ -2700,7 +2748,7 @@ bool Vulkan::InitSwapChain() bool Vulkan::InitSwapchainRenderPass() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // The renderpass defines the attachments to the framebuffer object that gets // used in the pipelines. We have two attachments, the colour buffer, and the @@ -2724,40 +2772,42 @@ bool Vulkan::InitSwapchainRenderPass() if( HasDepth ) { - attachmentDescriptions[1].flags = 0; - attachmentDescriptions[1].format = TextureFormatToVk( m_SwapchainDepth.format ); - attachmentDescriptions[1].samples = VK_SAMPLE_COUNT_1_BIT; - attachmentDescriptions[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - attachmentDescriptions[1].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachmentDescriptions[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachmentDescriptions[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachmentDescriptions[1].initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - attachmentDescriptions[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + attachmentDescriptions[1].flags = 0; + attachmentDescriptions[1].format = TextureFormatToVk( m_SwapchainDepth.format ); + attachmentDescriptions[1].samples = VK_SAMPLE_COUNT_1_BIT; + attachmentDescriptions[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachmentDescriptions[1].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachmentDescriptions[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachmentDescriptions[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachmentDescriptions[1].initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + attachmentDescriptions[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; ++numAttachmentDescriptions; } // We have references to the attachment offsets, stating the layout type. - VkAttachmentReference colorReference = {}; - colorReference.attachment = 0; - colorReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - - VkAttachmentReference depthReference = {}; - depthReference.attachment = 1; - depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + const VkAttachmentReference colorReference { + .attachment = 0, + .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL + }; + const VkAttachmentReference depthReference{ + .attachment = 1, + .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL + }; // There can be multiple subpasses in a renderpass, but this example has only one. // We set the color and depth references at the grahics bind point in the pipeline. - VkSubpassDescription subpassDescription = {}; - subpassDescription.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; - subpassDescription.flags = 0; - subpassDescription.inputAttachmentCount = 0; - subpassDescription.pInputAttachments = nullptr; - subpassDescription.colorAttachmentCount = 1; - subpassDescription.pColorAttachments = &colorReference; - subpassDescription.pResolveAttachments = nullptr; - subpassDescription.pDepthStencilAttachment = HasDepth ? &depthReference : nullptr; - subpassDescription.preserveAttachmentCount = 0; - subpassDescription.pPreserveAttachments = nullptr; + const VkSubpassDescription subpassDescription { + .flags = 0, + .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS, + .inputAttachmentCount = 0, + .pInputAttachments = nullptr, + .colorAttachmentCount = 1, + .pColorAttachments = &colorReference, + .pResolveAttachments = nullptr, + .pDepthStencilAttachment = HasDepth ? &depthReference : nullptr, + .preserveAttachmentCount = 0, + .pPreserveAttachments = nullptr + }; // Dependencies m_SwapchainRenderPassDependencies.fill( {} ); @@ -2789,52 +2839,47 @@ bool Vulkan::InitSwapchainRenderPass() // The renderpass itself is created with the number of subpasses, and the // list of attachments which those subpasses can reference. - VkRenderPassCreateInfo renderPassCreateInfo {VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO}; - renderPassCreateInfo.attachmentCount = numAttachmentDescriptions; - renderPassCreateInfo.pAttachments = attachmentDescriptions.data(); - renderPassCreateInfo.subpassCount = 1; - renderPassCreateInfo.pSubpasses = &subpassDescription; - renderPassCreateInfo.dependencyCount = (uint32_t) m_SwapchainRenderPassDependencies.size(); - renderPassCreateInfo.pDependencies = m_SwapchainRenderPassDependencies.data(); - renderPassCreateInfo.flags = (m_ExtRenderPassTransformEnabled) ? VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM : 0; - - RetVal = vkCreateRenderPass(m_VulkanDevice, &renderPassCreateInfo, nullptr, &m_SwapchainRenderPass); - if (!CheckVkError("vkCreateRenderPass()", RetVal)) - { - return false; - } - - - return true; + fvk::VkRenderPassCreateInfo renderPassCreateInfo{{ + .flags = (m_ExtRenderPassTransformEnabled) ? VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM : (VkRenderPassCreateFlags)0, + .attachmentCount = numAttachmentDescriptions, + .pAttachments = attachmentDescriptions.data(), + .subpassCount = 1, + .pSubpasses = &subpassDescription, + .dependencyCount = (uint32_t)m_SwapchainRenderPassDependencies.size(), + .pDependencies = m_SwapchainRenderPassDependencies.data(), + }}; + + // Create renderpass + return CreateRenderPass( *renderPassCreateInfo, m_SwapchainRenderPass ); } //----------------------------------------------------------------------------- -bool Vulkan::Create2SubpassRenderPass(const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, const std::span InternalMsaa/*two passes*/, VkSampleCountFlagBits OutputMsaa, VkRenderPass* pRenderPass/*out*/) +bool Vulkan::Create2SubpassRenderPass(const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, const std::span InternalMsaa/*two passes*/, Msaa OutputMsaa, RenderPass& rRenderPass/*out*/) //----------------------------------------------------------------------------- { - assert(pRenderPass && *pRenderPass == VK_NULL_HANDLE); // check not already allocated and that we have a location to place the renderpass handle - assert(!InternalColorFormats.empty()); // not supporting a depth only pass + assert(!rRenderPass); // check not already allocated + assert(!InternalColorFormats.empty()); // not supporting a depth only pass assert(!OutputColorFormats.empty()); assert( InternalMsaa.size() == 2 ); //const bool NeedsResolve = InternalMsaa != OutputMsaa; // Color attachments and Depth attachment - std::vector PassAttachDescs; + std::vector PassAttachDescs; PassAttachDescs.reserve(InternalColorFormats.size() + OutputColorFormats.size() + 2); // Each subpass needs a reference to its attachments - std::array SubpassDesc{ - VkSubpassDescription {0/*flags*/, VK_PIPELINE_BIND_POINT_GRAPHICS}, - VkSubpassDescription {0/*flags*/, VK_PIPELINE_BIND_POINT_GRAPHICS} }; - std::vector ColorReferencesPass0; - std::vector ResolveReferencesPass0; + std::array SubpassDesc{ + VkSubpassDescription2 {.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS}, + VkSubpassDescription2 {.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS} }; + std::vector ColorReferencesPass0; + std::vector ResolveReferencesPass0; ColorReferencesPass0.reserve(InternalColorFormats.size()); ResolveReferencesPass0.reserve(InternalColorFormats.size()); - std::vector InputReferencesPass1; - std::vector ColorReferencesPass1; - std::vector ResolveReferencesPass1; + std::vector InputReferencesPass1; + std::vector ColorReferencesPass1; + std::vector ResolveReferencesPass1; InputReferencesPass1.reserve(InternalColorFormats.size()); ColorReferencesPass1.reserve(OutputColorFormats.size()); ResolveReferencesPass1.reserve(OutputColorFormats.size()); @@ -2850,9 +2895,12 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter for (const auto& ColorFormat : InternalColorFormats) { // Pass0 color and depth buffers setup to clear on load, discard on end (of entire pass). - VkAttachmentDescription AttachmentDescPass0 = { 0/*flags*/, + const VkAttachmentDescription2 AttachmentDescPass0 = { + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + nullptr, /*pNext*/ + 0/*flags*/, TextureFormatToVk(ColorFormat)/*format*/, - InternalMsaa[0]/*samples*/, + EnumToVk(InternalMsaa[0])/*samples*/, VK_ATTACHMENT_LOAD_OP_CLEAR/*loadOp*/, VK_ATTACHMENT_STORE_OP_DONT_CARE/*storeOp*/, VK_ATTACHMENT_LOAD_OP_DONT_CARE/*stencilLoadOp*/, @@ -2861,8 +2909,8 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL/*finalLayout*/ }; PassAttachDescs.push_back(AttachmentDescPass0); - ColorReferencesPass0.push_back({ (uint32_t)PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL/*output of first pass*/ }); - InputReferencesPass1.push_back({ (uint32_t)PassAttachDescs.size() - 1, Pass0NeedsResolve ? VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL : VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*input of second pass*/ }); + ColorReferencesPass0.push_back({ .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, .attachment = (uint32_t)PassAttachDescs.size() - 1, .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL/*output of first pass*/ }); + InputReferencesPass1.push_back({ .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, .attachment = (uint32_t)PassAttachDescs.size() - 1, .layout = Pass0NeedsResolve ? VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL : VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*input of second pass*/ }); } if (Pass0NeedsResolve) @@ -2872,17 +2920,19 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter for (const auto& ColorFormat : InternalColorFormats) { // Pass1 color buffers to resolve to at end of pass. - VkAttachmentDescription AttachmentDescResolvePass0 = { 0, TextureFormatToVk(ColorFormat)/*format*/, - OutputMsaa/*samples*/, - VK_ATTACHMENT_LOAD_OP_DONT_CARE/*loadOp*/, - VK_ATTACHMENT_STORE_OP_DONT_CARE/*storeOp*/, - VK_ATTACHMENT_LOAD_OP_DONT_CARE/*stencilLoadOp*/, - VK_ATTACHMENT_STORE_OP_DONT_CARE/*stencilStoreOp*/, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*initialLayout*/, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*finalLayout*/ }; + VkAttachmentDescription2 AttachmentDescResolvePass0 = { + .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + .format = TextureFormatToVk(ColorFormat), + .samples = EnumToVk(OutputMsaa), + .loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + .storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, + .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, + .initialLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + .finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL }; PassAttachDescs.push_back( AttachmentDescResolvePass0 ); - ResolveReferencesPass0.push_back( { (uint32_t) PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} ); + ResolveReferencesPass0.push_back( {.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, .attachment = (uint32_t) PassAttachDescs.size() - 1, .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} ); } // // Setup the resolve (first subpass) @@ -2894,17 +2944,19 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter for (const auto& ColorFormat : OutputColorFormats) { // Pass1 color buffers setup to, store on end (of entire pass). - VkAttachmentDescription AttachmentDescPass1 = { 0, TextureFormatToVk(ColorFormat)/*format*/, - (!Pass1NeedsResolve) ? OutputMsaa : InternalMsaa[1]/*samples*/, - VK_ATTACHMENT_LOAD_OP_DONT_CARE/*loadOp*/, - (!Pass1NeedsResolve) ? VK_ATTACHMENT_STORE_OP_STORE : VK_ATTACHMENT_STORE_OP_DONT_CARE/*storeOp*/, - VK_ATTACHMENT_LOAD_OP_DONT_CARE/*stencilLoadOp*/, - VK_ATTACHMENT_STORE_OP_DONT_CARE/*stencilStoreOp*/, - VK_IMAGE_LAYOUT_UNDEFINED/*initialLayout*/, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*finalLayout*/ }; + VkAttachmentDescription2 AttachmentDescPass1 = { + .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + .format = TextureFormatToVk(ColorFormat), + .samples = EnumToVk((!Pass1NeedsResolve) ? OutputMsaa : InternalMsaa[1]), + .loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + .storeOp = (!Pass1NeedsResolve) ? VK_ATTACHMENT_STORE_OP_STORE : VK_ATTACHMENT_STORE_OP_DONT_CARE, + .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, + .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED, + .finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL }; PassAttachDescs.push_back(AttachmentDescPass1); - ColorReferencesPass1.push_back({ (uint32_t)PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }); + ColorReferencesPass1.push_back({.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, .attachment = (uint32_t)PassAttachDescs.size() - 1, .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }); } if (Pass1NeedsResolve) @@ -2914,8 +2966,11 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter for (const auto& ColorFormat : OutputColorFormats) { // Pass1 color buffers to resolve to at end of pass. - VkAttachmentDescription AttachmentDescResolvePass1 = { 0, TextureFormatToVk(ColorFormat)/*format*/, - OutputMsaa/*samples*/, + VkAttachmentDescription2 AttachmentDescResolvePass1 = { + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + nullptr, // pNext + 0, TextureFormatToVk(ColorFormat)/*format*/, + EnumToVk(OutputMsaa)/*samples*/, VK_ATTACHMENT_LOAD_OP_DONT_CARE/*loadOp*/, VK_ATTACHMENT_STORE_OP_STORE/*storeOp*/, VK_ATTACHMENT_LOAD_OP_DONT_CARE/*stencilLoadOp*/, @@ -2924,23 +2979,24 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL/*finalLayout*/ }; PassAttachDescs.push_back( AttachmentDescResolvePass1 ); - ResolveReferencesPass1.push_back( { (uint32_t) PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} ); + ResolveReferencesPass1.push_back( {.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, .attachment = (uint32_t) PassAttachDescs.size() - 1, .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} ); } // // Setup the resolve (second subpass) SubpassDesc[1].pResolveAttachments = ResolveReferencesPass1.data(); } - // // Depth Attachment (cleared at start of pass, written by first subpass, discarded after pass) - VkAttachmentReference DepthReference = {}; - VkAttachmentReference DepthReferencePass1 = {}; + VkAttachmentReference2 DepthReference = {VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2}; if (HasDepth) { - VkAttachmentDescription AttachmentDescDepthPass0 = { 0/*flags*/, + VkAttachmentDescription2 AttachmentDescDepthPass0 = { + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + nullptr,/*pNext*/ + 0/*flags*/, TextureFormatToVk(InternalDepthFormat)/*format*/, - InternalMsaa[0]/*samples*/, + EnumToVk(InternalMsaa[0])/*samples*/, VK_ATTACHMENT_LOAD_OP_CLEAR/*loadOp*/, VK_ATTACHMENT_STORE_OP_DONT_CARE/*storeOp*/, VK_ATTACHMENT_LOAD_OP_DONT_CARE/*stencilLoadOp*/, @@ -2949,12 +3005,12 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL/*finalLayout*/ }; PassAttachDescs.push_back(AttachmentDescDepthPass0); - DepthReference = { (uint32_t)PassAttachDescs.size() - 1, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL }; + DepthReference = {.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, .attachment = (uint32_t)PassAttachDescs.size() - 1, .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL }; } // // Subpass dependencies - std::array PassDependencies = {}; + std::array PassDependencies {{{.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2}}}; if (ColorReferencesPass0.size() > 0) { SubpassDesc[0].colorAttachmentCount = (uint32_t)ColorReferencesPass0.size(); @@ -2984,21 +3040,54 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter PassDependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; // Now ready to actually create the render pass - VkRenderPassCreateInfo RenderPassInfo{ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO }; - RenderPassInfo.flags = 0; - RenderPassInfo.attachmentCount = (uint32_t)PassAttachDescs.size(); - RenderPassInfo.pAttachments = PassAttachDescs.data(); - RenderPassInfo.subpassCount = (uint32_t)SubpassDesc.size(); - RenderPassInfo.pSubpasses = SubpassDesc.data(); - RenderPassInfo.dependencyCount = (uint32_t)PassDependencies.size(); - RenderPassInfo.pDependencies = PassDependencies.data(); + fvk::VkRenderPassCreateInfo2 RenderPassInfo{{ + .flags = 0, + .attachmentCount = (uint32_t)PassAttachDescs.size(), + .pAttachments = PassAttachDescs.data(), + .subpassCount = (uint32_t)SubpassDesc.size(), + .pSubpasses = SubpassDesc.data(), + .dependencyCount = (uint32_t)PassDependencies.size(), + .pDependencies = PassDependencies.data() + }}; + + return CreateRenderPass( *RenderPassInfo, rRenderPass ); +} + +//----------------------------------------------------------------------------- +bool Vulkan::CreateRenderPass( const VkRenderPassCreateInfo& createInfo, RenderPass& rRenderPass/*out*/ ) +//----------------------------------------------------------------------------- +{ + VkRenderPass handle = VK_NULL_HANDLE; + VkResult retVal = vkCreateRenderPass( m_VulkanDevice, &createInfo, NULL, &handle ); + if (!CheckVkError( "vkCreateRenderPass()", retVal )) + { + rRenderPass = {}; + return false; + } + rRenderPass = {m_VulkanDevice, handle}; + return true; +} + +//----------------------------------------------------------------------------- +bool Vulkan::CreateRenderPass( const VkRenderPassCreateInfo2KHR& createInfo, RenderPass& rRenderPass/*out*/ ) +//----------------------------------------------------------------------------- +{ + assert( m_ExtRenderPass2 ); + if (!m_ExtRenderPass2) + { + rRenderPass = {}; + return false; + } - VkResult RetVal = vkCreateRenderPass(m_VulkanDevice, &RenderPassInfo, NULL, pRenderPass); - if (!CheckVkError("vkCreateRenderPass()", RetVal)) + VkRenderPass handle = VK_NULL_HANDLE; + VkResult retVal = m_ExtRenderPass2->m_vkCreateRenderPass2KHR( m_VulkanDevice, &createInfo, nullptr, &rRenderPass.mRenderPass.handle ); + if (!CheckVkError( "vkCreateRenderPass2KHR()", retVal )) { + rRenderPass = {}; return false; } + rRenderPass = {m_VulkanDevice, handle}; return true; } @@ -3006,21 +3095,26 @@ bool Vulkan::Create2SubpassRenderPass(const std::span Inter bool Vulkan::Create2SubpassRenderPass( const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, - VkSampleCountFlagBits InternalPassMsaa, /* same for both passes*/ - VkSampleCountFlagBits OutputMsaa, - VkRenderPass* pRenderPass/*out*/ ) + Msaa InternalPassMsaa, /* same for both passes*/ + Msaa OutputMsaa, + RenderPass& rRenderPass/*out*/ ) //----------------------------------------------------------------------------- { - const VkSampleCountFlagBits InternalPassMsaa2[2] = { InternalPassMsaa, InternalPassMsaa }; - return Create2SubpassRenderPass( InternalColorFormats , OutputColorFormats , InternalDepthFormat, InternalPassMsaa2, OutputMsaa, pRenderPass ); + const Msaa InternalPassMsaa2[2] = { InternalPassMsaa, InternalPassMsaa }; + return Create2SubpassRenderPass( InternalColorFormats , OutputColorFormats , InternalDepthFormat, InternalPassMsaa2, OutputMsaa, rRenderPass ); } //----------------------------------------------------------------------------- -bool Vulkan::CreateSubpassShaderResolveRenderPass( const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, VkSampleCountFlagBits InternalMsaa, VkSampleCountFlagBits OutputMsaa, VkRenderPass* pRenderPass/*out*/ ) +bool Vulkan::CreateSubpassShaderResolveRenderPass( const std::span InternalColorFormats, + const std::span OutputColorFormats, + TextureFormat InternalDepthFormat, + Msaa InternalMsaa, + Msaa OutputMsaa, + RenderPass& rRenderPass/*out*/ ) //----------------------------------------------------------------------------- { - assert( pRenderPass && *pRenderPass == VK_NULL_HANDLE ); // check not already allocated and that we have a location to place the renderpass handle - assert( !InternalColorFormats.empty() ); // not supporting a depth only pass + assert( !rRenderPass); // check not already allocated and that we have a location to place the renderpass handle + assert( !InternalColorFormats.empty() ); // not supporting a depth only pass assert( !OutputColorFormats.empty() ); if (InternalMsaa == OutputMsaa) @@ -3057,7 +3151,7 @@ bool Vulkan::CreateSubpassShaderResolveRenderPass( const std::spanrenderPass = m_SwapchainRenderPass.mRenderPass; + framebufferCreateInfo->attachmentCount = numAttachments; + framebufferCreateInfo->pAttachments = attachments.data(); + framebufferCreateInfo->width = m_SurfaceWidth; + framebufferCreateInfo->height = m_SurfaceHeight; if ((m_SwapchainPreTransform & VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR) || (m_SwapchainPreTransform & VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)) { - std::swap(framebufferCreateInfo.width, framebufferCreateInfo.height); + std::swap(framebufferCreateInfo->width, framebufferCreateInfo->height); } - framebufferCreateInfo.layers = 1; + framebufferCreateInfo->layers = 1; - LOGI("Creating %d frame buffers... (%d x %d)", m_SwapchainImageCount, framebufferCreateInfo.width, framebufferCreateInfo.height); + LOGI("Creating %d frame buffers... (%d x %d)", m_SwapchainImageCount, framebufferCreateInfo->width, framebufferCreateInfo->height); assert(!m_SwapchainBuffers.empty()); @@ -3203,16 +3290,34 @@ bool Vulkan::InitFrameBuffers() // only the attachment to the relevent image view changes each time. for (auto& buffer: m_SwapchainBuffers) { + assert( !buffer.framebuffer ); attachments[0] = buffer.view; - assert(buffer.framebuffer == VK_NULL_HANDLE); - - RetVal = vkCreateFramebuffer(m_VulkanDevice, &framebufferCreateInfo, nullptr, &buffer.framebuffer); - if (!CheckVkError("vkCreateFramebuffer()", RetVal)) + VkRect2D renderArea{ + .extent { + .width = framebufferCreateInfo->width, + .height = framebufferCreateInfo->height + }}; + VkViewport renderViewport{ + .width = float( renderArea.extent.width ), + .height = float( renderArea.extent.height ), + .minDepth = 0.0f, + .maxDepth = 1.0f + }; + std::vector clearValues; + clearValues.resize( numAttachments ); // use 0 filled struct as default. + RenderPassClearData clearData {renderArea, renderViewport, std::move(clearValues)}; + + VkFramebuffer framebuffer{}; + retVal = vkCreateFramebuffer(m_VulkanDevice, &framebufferCreateInfo, nullptr, &framebuffer); + buffer.framebuffer = {{m_VulkanDevice, framebuffer}, std::move(clearData), "Swapchain Framebuffer"}; + if (!CheckVkError("vkCreateFramebuffer()", retVal)) { return false; } } + ReportFramebufferProperties( m_SwapchainBuffers.front().framebuffer.m_FrameBuffer ); + return true; } @@ -3233,16 +3338,16 @@ void Vulkan::DestroySwapChain() vkDestroySemaphore(m_VulkanDevice, swapchainBuffer.semaphore, nullptr); vkDestroyFence(m_VulkanDevice, swapchainBuffer.fence, nullptr); vkDestroyImageView(m_VulkanDevice, swapchainBuffer.view, nullptr); - assert(swapchainBuffer.framebuffer == VK_NULL_HANDLE); // framebuffers destroyed by DestroyFramebuffers + assert(!swapchainBuffer.framebuffer); // framebuffers destroyed by DestroyFramebuffers swapchainBuffer.image = VK_NULL_HANDLE; // images are owned by the m_VulkanSwapchain } m_SwapchainBuffers.clear(); -#if defined (OS_WINDOWS) - fpDestroySwapchainKHR(m_VulkanDevice, m_VulkanSwapchain, nullptr); +#if defined (OS_WINDOWS) || defined (OS_LINUX) + m_ExtSwapchain->m_vkDestroySwapchainKHR(m_VulkanDevice, m_VulkanSwapchain, nullptr); #elif defined (OS_ANDROID) vkDestroySwapchainKHR(m_VulkanDevice, m_VulkanSwapchain, nullptr); -#endif // defined (OS_WINDOWS|OS_ANDROID) +#endif // defined (OS_WINDOWS|OS_ANDROID|OS_LINUX) m_VulkanSwapchain = VK_NULL_HANDLE; } @@ -3250,22 +3355,14 @@ void Vulkan::DestroySwapChain() void Vulkan::DestroySwapchainRenderPass() //----------------------------------------------------------------------------- { - if (m_SwapchainRenderPass != VK_NULL_HANDLE) - { - vkDestroyRenderPass(m_VulkanDevice, m_SwapchainRenderPass, nullptr); - m_SwapchainRenderPass = VK_NULL_HANDLE; - } + m_SwapchainRenderPass = {}; } //----------------------------------------------------------------------------- void Vulkan::DestroyFrameBuffers() //----------------------------------------------------------------------------- { - for (auto& buffer : m_SwapchainBuffers) - { - vkDestroyFramebuffer(m_VulkanDevice, buffer.framebuffer, nullptr); - buffer.framebuffer = VK_NULL_HANDLE; - } + m_SwapchainBuffers.clear(); } //----------------------------------------------------------------------------- @@ -3280,8 +3377,8 @@ bool Vulkan::AllocateCommandBuffer(VkCommandBufferLevel CmdBuffLevel, uint32_t Q AllocInfo.level = CmdBuffLevel; AllocInfo.commandBufferCount = 1; - VkResult RetVal = vkAllocateCommandBuffers(m_VulkanDevice, &AllocInfo, pCmdBuffer); - return CheckVkError("vkAllocateCommandBuffers()", RetVal); + VkResult retVal = vkAllocateCommandBuffers(m_VulkanDevice, &AllocInfo, pCmdBuffer); + return CheckVkError("vkAllocateCommandBuffers()", retVal); } //----------------------------------------------------------------------------- @@ -3293,30 +3390,65 @@ void Vulkan::FreeCommandBuffer(uint32_t QueueIndex, VkCommandBuffer CmdBuffer) c } //----------------------------------------------------------------------------- -bool Vulkan::CreateRenderPass(std::span ColorFormats, TextureFormat DepthFormat, VkSampleCountFlagBits Msaa, RenderPassInputUsage ColorInputUsage, RenderPassOutputUsage ColorOutputUsage, bool ShouldClearDepth, RenderPassOutputUsage DepthOutputUsage, VkRenderPass* pRenderPass/*out*/, std::span ResolveFormats) +bool Vulkan::CreateRenderPass(std::span ColorFormats, TextureFormat DepthFormat, Msaa Msaa, RenderPassInputUsage ColorInputUsage, RenderPassOutputUsage ColorOutputUsage, bool ShouldClearDepth, RenderPassOutputUsage DepthOutputUsage, RenderPass& rRenderPass/*out*/, std::span ResolveFormats) //----------------------------------------------------------------------------- { - assert(pRenderPass && *pRenderPass == VK_NULL_HANDLE); // check not already allocated and that we have a location to place the renderpass handle - VkResult RetVal = VK_SUCCESS; + std::vector colorInputUsagePerColor; + std::fill_n( std::back_inserter( colorInputUsagePerColor ), ColorFormats.size(), ColorInputUsage ); + std::vector colorOutputUsagePerColor; + std::fill_n( std::back_inserter( colorOutputUsagePerColor ), ColorFormats.size(), ColorOutputUsage ); + + const RenderPassCreateData createData{ + .ColorFormats = ColorFormats, + .DepthFormat = DepthFormat, + .Msaa = Msaa, + .ColorInputUsage = colorInputUsagePerColor, + .ColorOutputUsage = colorOutputUsagePerColor, + .DepthInputUsage = ShouldClearDepth ? RenderPassInputUsage::Clear : RenderPassInputUsage::Load, + .DepthOutputUsage = DepthOutputUsage, + .ResolveFormats = ResolveFormats, + }; + + auto renderPass = CreateRenderPass( createData ); + rRenderPass = std::move(renderPass); + return !!rRenderPass; +} + +static constexpr VkAttachmentLoadOp InputUsageToVkAttachmentLoadOp( const RenderPassInputUsage t ) { + constexpr VkAttachmentLoadOp cRenderPassInputUsageToVk[]{ + VK_ATTACHMENT_LOAD_OP_CLEAR, + VK_ATTACHMENT_LOAD_OP_LOAD, + VK_ATTACHMENT_LOAD_OP_DONT_CARE + }; + return cRenderPassInputUsageToVk[(int)t]; +} + +//----------------------------------------------------------------------------- +RenderPass Vulkan::CreateRenderPass( const RenderPassCreateData& createData ) +//----------------------------------------------------------------------------- +{ + VkResult retVal = VK_SUCCESS; // Color attachments and Depth attachment std::vector PassAttachDescs; - PassAttachDescs.reserve(ColorFormats.size()+1); + PassAttachDescs.reserve(createData.ColorFormats.size()+1); bool bPresentPass = false; - bool bHasDepth = DepthFormat != TextureFormat::UNDEFINED; + bool bHasDepth = createData.DepthFormat != TextureFormat::UNDEFINED; + auto vkMsaa = EnumToVk(createData.Msaa); // Color Attachment - for(const auto ColorFormat: ColorFormats) + for(auto i = 0;i ColorFormats, Textu }); auto& PassAttachDesc = PassAttachDescs.back(); - switch( ColorInputUsage ) { + switch(createData.ColorInputUsage[i]) { case RenderPassInputUsage::Clear: - PassAttachDesc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; PassAttachDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; break; case RenderPassInputUsage::Load: - PassAttachDesc.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; PassAttachDesc.initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; break; case RenderPassInputUsage::DontCare: - PassAttachDesc.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; PassAttachDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; break; }; - switch (ColorOutputUsage) { + switch (createData.ColorOutputUsage[i]) { case RenderPassOutputUsage::Discard: PassAttachDesc.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; PassAttachDesc.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; // not sure why Vulkan spec says this can't be VK_IMAGE_LAYOUT_UNDEFINED - we aren't storing it afterall! @@ -3361,7 +3490,7 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu assert(0); // currently unsupported break; case RenderPassOutputUsage::Present: - if (ResolveFormats.empty()) + if (createData.ResolveFormats.empty()) { // Nothing to resolve - this is the output to present PassAttachDesc.finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; @@ -3382,17 +3511,17 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu { PassAttachDescs.push_back({ /*flags*/ 0, - /*format*/ TextureFormatToVk(DepthFormat), - /*samples*/ Msaa, - /*loadOp*/ ShouldClearDepth ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD, + /*format*/ TextureFormatToVk( createData.DepthFormat), + /*samples*/ vkMsaa, + /*loadOp*/ InputUsageToVkAttachmentLoadOp(createData.DepthInputUsage), /*storeOp*/ VK_ATTACHMENT_STORE_OP_STORE, /*stencilLoadOp*/ VK_ATTACHMENT_LOAD_OP_DONT_CARE, /*stencilStoreOp*/ VK_ATTACHMENT_STORE_OP_DONT_CARE, - /*initialLayout*/ ShouldClearDepth ? VK_IMAGE_LAYOUT_UNDEFINED : VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + /*initialLayout*/ createData.DepthInputUsage == RenderPassInputUsage::Clear ? VK_IMAGE_LAYOUT_UNDEFINED : VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, /*finalLayout*/ VK_IMAGE_LAYOUT_UNDEFINED }); auto& PassAttachDesc = PassAttachDescs.back(); - switch (DepthOutputUsage) { + switch (createData.DepthOutputUsage) { case RenderPassOutputUsage::Discard: PassAttachDesc.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; PassAttachDesc.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; // not sure why Vulkan spec says this can't be VK_IMAGE_LAYOUT_UNDEFINED - we aren't storing it afterall! @@ -3417,9 +3546,9 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu // We need a reference to the attachments std::vector ColorReferences; - ColorReferences.reserve(ColorFormats.size()); + ColorReferences.reserve(createData.ColorFormats.size()); uint32_t AttachmentIndex = 0; - for(; AttachmentIndex < ColorFormats.size(); ++AttachmentIndex) + for(; AttachmentIndex < createData.ColorFormats.size(); ++AttachmentIndex) { ColorReferences.push_back({ AttachmentIndex, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL }); } @@ -3440,11 +3569,11 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu // When we have ResolveFormats we resolve each member of ColorFormats out to a matching ResolveFormats buffer std::vector ResolveReferences; - if( Msaa != VK_SAMPLE_COUNT_1_BIT && !ResolveFormats.empty() ) + if( createData.Msaa != Msaa::Samples1 && !createData.ResolveFormats.empty() ) { - ResolveReferences.resize( ColorFormats.size(), {VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_UNDEFINED} ); // must match the number of Color buffers (even if they are not resolving) + ResolveReferences.resize( createData.ColorFormats.size(), {VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_UNDEFINED} ); // must match the number of Color buffers (even if they are not resolving) uint32_t ColorIdx = 0; - for( const TextureFormat ResolveFormat : ResolveFormats ) + for( const TextureFormat ResolveFormat : createData.ResolveFormats ) { VkFormat vkResolveFormat = TextureFormatToVk(ResolveFormat); if( vkResolveFormat != VK_FORMAT_UNDEFINED) @@ -3481,7 +3610,7 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu // Use the same dependencies as the swapchain was created with PassDependencies = m_SwapchainRenderPassDependencies; } - else if (ColorFormats.empty()) + else if (createData.ColorFormats.empty()) { // Depth only pass PassDependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; @@ -3520,66 +3649,52 @@ bool Vulkan::CreateRenderPass(std::span ColorFormats, Textu PassDependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; } - - // We use subpass dependencies to define the color image layout transitions rather than -// explicitly do them in the command buffer, as it is more efficient to do it this way. -#if 0 -// Before we can use the back buffer from the swapchain, we must change the -// image layout from the PRESENT mode to the COLOR_ATTACHMENT mode. - PassDependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; - PassDependencies[0].dstSubpass = 0; - PassDependencies[0].srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; - PassDependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - PassDependencies[0].srcAccessMask = 0; - PassDependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - PassDependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; - - // After writing to the back buffer of the swapchain, we need to change the - // image layout from the COLOR_ATTACHMENT mode to the PRESENT mode which - // is optimal for sending to the screen for users to see the completed rendering. - PassDependencies[1].srcSubpass = 0; - PassDependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; - PassDependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - PassDependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; - PassDependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - PassDependencies[1].dstAccessMask = 0; - PassDependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; -#endif - // Now ready to actually create the render pass - VkRenderPassCreateInfo RenderPassInfo {VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO}; - RenderPassInfo.flags = (bPresentPass && m_ExtRenderPassTransformEnabled) ? VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM : 0; - RenderPassInfo.attachmentCount = (uint32_t) PassAttachDescs.size(); - RenderPassInfo.pAttachments = PassAttachDescs.data(); - RenderPassInfo.subpassCount = 1; - RenderPassInfo.pSubpasses = &SubpassDesc; - RenderPassInfo.dependencyCount = (uint32_t) PassDependencies.size(); - RenderPassInfo.pDependencies = PassDependencies.data(); - - RetVal = vkCreateRenderPass(m_VulkanDevice, &RenderPassInfo, nullptr, pRenderPass); - if (!CheckVkError("vkCreateRenderPass()", RetVal)) - { - return false; - } - - return true; + fvk::VkRenderPassCreateInfo RenderPassCreateInfo {{ + .flags = (VkRenderPassCreateFlags) ((bPresentPass && m_ExtRenderPassTransformEnabled) ? VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM : 0), + .attachmentCount = (uint32_t)PassAttachDescs.size(), + .pAttachments = PassAttachDescs.data(), + .subpassCount = 1, + .pSubpasses = &SubpassDesc, + .dependencyCount = (uint32_t)PassDependencies.size(), + .pDependencies = PassDependencies.data() + }}; + + if (createData.TileShading != RenderPassTileShadingMode::Disabled) + { + VkTileShadingRenderPassFlagsQCOM tileShadingFlags = VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM; + if (createData.TileShading == RenderPassTileShadingMode::PerTileShading) + tileShadingFlags |= VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM; + + RenderPassCreateInfo.Add( { + .flags = tileShadingFlags,// + .tileApronSize = {createData.TileApron[0], createData.TileApron[1]} + } ); + if (createData.TileApron[0]>0 || createData.TileApron[1] > 0) + SubpassDesc.flags |= VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM; + } + + RenderPass renderPass; + if (CreateRenderPass( *RenderPassCreateInfo, renderPass )) + return renderPass; + return {}; } //----------------------------------------------------------------------------- -bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, TextureFormat DepthFormat, VkSampleCountFlagBits Msaa, +bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, TextureFormat DepthFormat, Msaa Msaa, RenderPassInputUsage ColorInputUsage, RenderPassOutputUsage ColorOutputUsage, bool ShouldClearDepth, - RenderPassOutputUsage DepthOutputUsage, VkRenderPass* pRenderPass/*out*/, std::span ResolveFormats, bool HasDensityMap) + RenderPassOutputUsage DepthOutputUsage, RenderPass& rRenderPass/*out*/, std::span ResolveFormats, bool HasDensityMap) //----------------------------------------------------------------------------- { - assert(pRenderPass && *pRenderPass == VK_NULL_HANDLE); // check not already allocated and that we have a location to place the renderpass handle - VkResult RetVal = VK_SUCCESS; + assert( !rRenderPass ); // check not already allocated - std::vector PassAttachDescs; + std::vector PassAttachDescs; PassAttachDescs.reserve(ColorFormats.size()); bool bPresentPass = false; bool bHasDepth = DepthFormat != TextureFormat::UNDEFINED; + auto vkMsaa = EnumToVk( Msaa ); // Color Attachment for (const auto ColorFormat : ColorFormats) @@ -3592,8 +3707,8 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te /*pNext*/ nullptr, /*flags*/ 0, /*format*/ vkColorFormat, - /*samples*/ Msaa, - /*loadOp*/ VK_ATTACHMENT_LOAD_OP_DONT_CARE, + /*samples*/ vkMsaa, + /*loadOp*/ InputUsageToVkAttachmentLoadOp(ColorInputUsage), /*storeOp*/ VK_ATTACHMENT_STORE_OP_STORE, /*stencilLoadOp*/ VK_ATTACHMENT_LOAD_OP_DONT_CARE, /*stencilStoreOp*/ VK_ATTACHMENT_STORE_OP_DONT_CARE, @@ -3604,15 +3719,12 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te switch (ColorInputUsage) { case RenderPassInputUsage::Clear: - PassAttachDesc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; PassAttachDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; break; case RenderPassInputUsage::Load: - PassAttachDesc.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; PassAttachDesc.initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; break; case RenderPassInputUsage::DontCare: - PassAttachDesc.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; PassAttachDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; break; }; @@ -3662,7 +3774,7 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te /*pNext*/ nullptr, /*flags*/ 0, /*format*/ TextureFormatToVk(DepthFormat), - /*samples*/ Msaa, + /*samples*/ vkMsaa, /*loadOp*/ ShouldClearDepth ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD, /*storeOp*/ VK_ATTACHMENT_STORE_OP_STORE, /*stencilLoadOp*/ VK_ATTACHMENT_LOAD_OP_DONT_CARE, @@ -3751,7 +3863,7 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te ResolveReferences[ColorIdx] = { VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, nullptr, (uint32_t)PassAttachDescs.size(), VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL }; // Pass1 color buffers to resolve to at end of pass. - VkAttachmentDescription2KHR AttachmentDescResolvePass1 = { + VkAttachmentDescription2 AttachmentDescResolvePass1 = { VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, /*sType*/ nullptr, /*pNext*/ 0, vkResolveFormat/*format*/, @@ -3875,12 +3987,7 @@ bool Vulkan::CreateRenderPassVRS(std::span ColorFormats, Te RenderPassInfo.dependencyCount = (uint32_t)PassDependencies.size(); RenderPassInfo.pDependencies = PassDependencies.data(); - RetVal = m_ExtRenderPass2->m_vkCreateRenderPass2KHR(m_VulkanDevice, &RenderPassInfo, nullptr, pRenderPass); - if (!CheckVkError("vkCreateRenderPass2KHR()", RetVal)) - { - return false; - } - return true; + return CreateRenderPass( RenderPassInfo, rRenderPass ); } //----------------------------------------------------------------------------- @@ -3888,15 +3995,17 @@ bool Vulkan::CreatePipeline( VkPipelineCache pipelineCache, const VkPipelineVertexInputStateCreateInfo* visci, VkPipelineLayout pipelineLayout, - VkRenderPass renderPass, - uint32_t subpass, + const RenderContext& renderingPassContext, const VkPipelineRasterizationStateCreateInfo* providedRS, const VkPipelineDepthStencilStateCreateInfo* providedDSS, const VkPipelineColorBlendStateCreateInfo* providedCBS, const VkPipelineMultisampleStateCreateInfo* providedMS, + const VkPipelineInputAssemblyStateCreateInfo* providedIA, std::span dynamicStates, const VkViewport* viewport, const VkRect2D* scissor, + VkShaderModule taskShaderModule, + VkShaderModule meshShaderModule, VkShaderModule vertShaderModule, VkShaderModule fragShaderModule, const VkSpecializationInfo* specializationInfo, @@ -3905,133 +4014,77 @@ bool Vulkan::CreatePipeline( VkPipeline* pipeline) //----------------------------------------------------------------------------- { - // Original version that only supports triangle lists - - // Create a basic pipeline structure with one or two shader stages, using the supplied cache. - - // Our vertex buffer describes a triangle list. - VkPipelineInputAssemblyStateCreateInfo ia_custom = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; - ia_custom.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - - // State for rasterization, such as polygon fill mode is defined. - // VkPipelineRasterizationStateCreateInfo rs_custom = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; - // rs_custom.polygonMode = VK_POLYGON_MODE_FILL; - // rs_custom.cullMode = VK_CULL_MODE_NONE; - // rs_custom.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - // rs_custom.depthClampEnable = VK_FALSE; - // rs_custom.rasterizerDiscardEnable = VK_FALSE; - // rs_custom.depthBiasEnable = VK_FALSE; - // rs_custom.lineWidth = 1.0f; - - // Call the custom topology version - return Vulkan::CreatePipeline( - pipelineCache, - visci, - pipelineLayout, - renderPass, - subpass, - providedRS, - providedDSS, - providedCBS, - providedMS, - dynamicStates, - viewport, - scissor, - VK_NULL_HANDLE, - VK_NULL_HANDLE, - vertShaderModule, - fragShaderModule, - specializationInfo, - bAllowDerivation, - deriveFromPipeline, - pipeline, - ia_custom); -} - -//----------------------------------------------------------------------------- -bool Vulkan::CreatePipeline( - VkPipelineCache pipelineCache, - const VkPipelineVertexInputStateCreateInfo* visci, - VkPipelineLayout pipelineLayout, - VkRenderPass renderPass, - uint32_t subpass, - const VkPipelineRasterizationStateCreateInfo* providedRS, - const VkPipelineDepthStencilStateCreateInfo* providedDSS, - const VkPipelineColorBlendStateCreateInfo* providedCBS, - const VkPipelineMultisampleStateCreateInfo* providedMS, - std::span dynamicStates, - const VkViewport* viewport, - const VkRect2D* scissor, - VkShaderModule taskShaderModule, - VkShaderModule meshShaderModule, - VkShaderModule vertShaderModule, - VkShaderModule fragShaderModule, - const VkSpecializationInfo* specializationInfo, - bool bAllowDerivation, - VkPipeline deriveFromPipeline, - VkPipeline* pipeline, - VkPipelineInputAssemblyStateCreateInfo ia_custom) - //----------------------------------------------------------------------------- -{ - // Create a basic pipeline structure with one or two shader stages, using the supplied cache. + // We support both dynamic rendering (no render pass) and old-style vkrenderpass pipelines + const bool dynamicRendering = renderingPassContext.IsDynamic(); // Our vertex buffer describes a triangle list. - VkPipelineInputAssemblyStateCreateInfo ia = ia_custom; + VkPipelineInputAssemblyStateCreateInfo ia{ + .sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, + .topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST + }; // State for rasterization, such as polygon fill mode is defined. - VkPipelineRasterizationStateCreateInfo rs = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; - rs.polygonMode = VK_POLYGON_MODE_FILL; - rs.cullMode = VK_CULL_MODE_NONE; - rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - rs.depthClampEnable = VK_FALSE; - rs.rasterizerDiscardEnable = VK_FALSE; - rs.depthBiasEnable = VK_FALSE; - rs.lineWidth = 1.0f; + VkPipelineRasterizationStateCreateInfo rs { + .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, + .depthClampEnable = VK_FALSE, + .rasterizerDiscardEnable = VK_FALSE, + .polygonMode = VK_POLYGON_MODE_FILL, + .cullMode = VK_CULL_MODE_NONE, + .frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE, + .depthBiasEnable = VK_FALSE, + .lineWidth = 1.0f + }; // Setup default blending state (disabled). Will be ignored if providedCBS is set. - VkPipelineColorBlendAttachmentState att_state[1] = {}; - att_state[0].colorWriteMask = 0xf; - att_state[0].blendEnable = VK_FALSE; - - VkPipelineColorBlendStateCreateInfo cb = {VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO}; - cb.attachmentCount = 1; - cb.pAttachments = &att_state[0]; + std::array< VkPipelineColorBlendAttachmentState, 10> att_state; + att_state.fill({ .blendEnable = VK_FALSE, .colorWriteMask = 0xf }); + assert(att_state.size() >= renderingPassContext.GetNumColorAttachmentFormats()); + + VkPipelineColorBlendStateCreateInfo cb { + .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, + .attachmentCount = std::max(uint32_t(1), uint32_t(renderingPassContext.GetNumColorAttachmentFormats())), + .pAttachments = att_state.data() + }; // Standard depth and stencil state is defined - VkPipelineDepthStencilStateCreateInfo ds = {VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO}; - ds.depthTestEnable = VK_TRUE; - ds.depthWriteEnable = VK_TRUE; - ds.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; - ds.depthBoundsTestEnable = VK_FALSE; - ds.back.failOp = VK_STENCIL_OP_KEEP; - ds.back.passOp = VK_STENCIL_OP_KEEP; - ds.back.compareOp = VK_COMPARE_OP_ALWAYS; - ds.stencilTestEnable = VK_FALSE; + VkPipelineDepthStencilStateCreateInfo ds { + .sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, + .depthTestEnable = VK_TRUE, + .depthWriteEnable = VK_TRUE, + .depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL, + .depthBoundsTestEnable = VK_FALSE, + .stencilTestEnable = VK_FALSE, + .back = {.failOp = VK_STENCIL_OP_KEEP, + .passOp = VK_STENCIL_OP_KEEP, + .compareOp = VK_COMPARE_OP_ALWAYS}, + .minDepthBounds = 0.0f, + .maxDepthBounds = 1.0f, + }; ds.front = ds.back; - ds.minDepthBounds = 0.0f; - ds.maxDepthBounds = 1.0f; // Default to no msaa - VkPipelineMultisampleStateCreateInfo ms = { VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO }; - ms.pSampleMask = nullptr; - ms.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; + VkPipelineMultisampleStateCreateInfo ms { + .sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, + .rasterizationSamples = VK_SAMPLE_COUNT_1_BIT, + .pSampleMask = nullptr, + }; - // We define two shader stages: our vertex and fragment shader. + // We define four shader stages: vertex, fragment, task and mesh shaders. uint32_t stageCount = 1; - VkPipelineShaderStageCreateInfo shaderStages[3] = {}; + std::array shaderStages {}; uint32_t EVertBit = 0; uint32_t EFragBit = 1; uint32_t EMeshBit = 2; uint32_t ETaskBit = 3; - uint32_t EVertMask = 1 << EVertBit; - uint32_t EFragMask = 1 << EFragBit; - uint32_t EMeshMask = 1 << EMeshBit; - uint32_t ETaskMask = 1 << ETaskBit; - uint32_t EVertFragMask = EFragMask | EVertMask; - uint32_t EMeshFragMask = EFragMask | EMeshMask; - uint32_t ETaskMeshFragMask = ETaskMask | EMeshFragMask; + const uint32_t EVertMask = 1 << EVertBit; + const uint32_t EFragMask = 1 << EFragBit; + const uint32_t EMeshMask = 1 << EMeshBit; + const uint32_t ETaskMask = 1 << ETaskBit; + const uint32_t EVertFragMask = EFragMask | EVertMask; + const uint32_t EMeshFragMask = EFragMask | EMeshMask; + const uint32_t ETaskMeshFragMask = ETaskMask | EMeshFragMask; uint32_t drawbleType = 0; drawbleType |= (fragShaderModule != VK_NULL_HANDLE) << EFragBit; @@ -4099,6 +4152,10 @@ bool Vulkan::CreatePipeline( shaderStages[0].pName = "main"; shaderStages[0].pSpecializationInfo = specializationInfo; } + else + { + assert( 0 && "Unsupported combination of shader modules" ); + } // Set up the flags VkPipelineCreateFlags flags = 0; @@ -4181,6 +4238,9 @@ bool Vulkan::CreatePipeline( VkGraphicsPipelineCreateInfo pipelineCreateInfo{ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO }; pipelineCreateInfo.flags = flags; pipelineCreateInfo.layout = pipelineLayout; + pipelineCreateInfo.pVertexInputState = visci; + pipelineCreateInfo.pInputAssemblyState = (providedIA != nullptr) ? providedIA : &ia; + if (drawbleType == EMeshFragMask || drawbleType == ETaskMeshFragMask) { pipelineCreateInfo.pVertexInputState = nullptr; pipelineCreateInfo.pInputAssemblyState = nullptr; @@ -4189,94 +4249,38 @@ bool Vulkan::CreatePipeline( pipelineCreateInfo.pVertexInputState = visci; pipelineCreateInfo.pInputAssemblyState = &ia; } + pipelineCreateInfo.pRasterizationState = (providedRS != nullptr) ? providedRS : &rs; pipelineCreateInfo.pColorBlendState = (providedCBS != nullptr) ? providedCBS : &cb; pipelineCreateInfo.pMultisampleState = (providedMS != nullptr) ? providedMS : &ms; pipelineCreateInfo.pViewportState = &ViewportInfo; pipelineCreateInfo.pDepthStencilState = (providedDSS != nullptr) ? providedDSS : &ds; pipelineCreateInfo.pStages = &shaderStages[0]; - pipelineCreateInfo.renderPass = renderPass; pipelineCreateInfo.pDynamicState = &dynamicStateCreateInfo;// dynamicStateCreateInfo.dynamicStateCount > 0 ? : nullptr; pipelineCreateInfo.stageCount = stageCount; pipelineCreateInfo.basePipelineHandle = (deriveFromPipeline != VK_NULL_HANDLE) ? deriveFromPipeline : VK_NULL_HANDLE; pipelineCreateInfo.basePipelineIndex = -1; // indicates this field isn't used - pipelineCreateInfo.subpass = subpass; + pipelineCreateInfo.subpass = renderingPassContext.subPass; - VkResult RetVal = VK_SUCCESS; - RetVal = vkCreateGraphicsPipelines(m_VulkanDevice, pipelineCache, 1, &pipelineCreateInfo, nullptr, pipeline); - if (!CheckVkError("vkCreateGraphicsPipelines()", RetVal)) + fvk::VkPipelineRenderingCreateInfo pipelineRenderingCreateInfo; + if (dynamicRendering) // don't move the pipelineRenderingCreateInfo local variable inside this if block; want to keep it in scope for vkCreateGraphicsPipelines + { + pipelineRenderingCreateInfo = std::move( renderingPassContext.GetPipelineRenderingCreateInfo() ); + pipelineCreateInfo.pNext = &pipelineRenderingCreateInfo; + } + else + { + pipelineCreateInfo.renderPass = renderingPassContext.GetRenderPass().mRenderPass; + } + + VkResult retVal = vkCreateGraphicsPipelines(m_VulkanDevice, pipelineCache, 1, &pipelineCreateInfo, nullptr, pipeline); + if (!CheckVkError("vkCreateGraphicsPipelines()", retVal)) { return false; } return true; -} - -//----------------------------------------------------------------------------- -bool Vulkan::CreatePipeline( - VkPipelineCache pipelineCache, - const VkPipelineVertexInputStateCreateInfo* visci, - VkPipelineLayout pipelineLayout, - VkRenderPass renderPass, - uint32_t subpass, - const VkPipelineRasterizationStateCreateInfo* providedRS, - const VkPipelineDepthStencilStateCreateInfo* providedDSS, - const VkPipelineColorBlendStateCreateInfo* providedCBS, - const VkPipelineMultisampleStateCreateInfo* providedMS, - std::span dynamicStates, - const VkViewport* viewport, - const VkRect2D* scissor, - VkShaderModule taskShaderModule, - VkShaderModule meshShaderModule, - VkShaderModule vertShaderModule, - VkShaderModule fragShaderModule, - const VkSpecializationInfo* specializationInfo, - bool bAllowDerivation, - VkPipeline deriveFromPipeline, - VkPipeline* pipeline) - //----------------------------------------------------------------------------- -{ - // Original version that only supports triangle lists - - // Create a basic pipeline structure with one or two shader stages, using the supplied cache. - - // Our vertex buffer describes a triangle list. - VkPipelineInputAssemblyStateCreateInfo ia_custom = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; - ia_custom.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - // State for rasterization, such as polygon fill mode is defined. - // VkPipelineRasterizationStateCreateInfo rs_custom = { VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO }; - // rs_custom.polygonMode = VK_POLYGON_MODE_FILL; - // rs_custom.cullMode = VK_CULL_MODE_NONE; - // rs_custom.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - // rs_custom.depthClampEnable = VK_FALSE; - // rs_custom.rasterizerDiscardEnable = VK_FALSE; - // rs_custom.depthBiasEnable = VK_FALSE; - // rs_custom.lineWidth = 1.0f; - - // Call the custom topology version - return Vulkan::CreatePipeline( - pipelineCache, - visci, - pipelineLayout, - renderPass, - subpass, - providedRS, - providedDSS, - providedCBS, - providedMS, - dynamicStates, - viewport, - scissor, - taskShaderModule, - meshShaderModule, - vertShaderModule, - fragShaderModule, - specializationInfo, - bAllowDerivation, - deriveFromPipeline, - pipeline, - ia_custom); } //----------------------------------------------------------------------------- @@ -4298,9 +4302,9 @@ bool Vulkan::CreateComputePipeline( info.stage.pSpecializationInfo = specializationInfo; m_VulkanPipelineShaderStageCreateInfoExtensions.PushExtensions( &info.stage ); - VkResult RetVal = vkCreateComputePipelines(m_VulkanDevice, pipelineCache, 1, &info, nullptr, pipeline); + VkResult retVal = vkCreateComputePipelines(m_VulkanDevice, pipelineCache, 1, &info, nullptr, pipeline); m_VulkanPipelineShaderStageCreateInfoExtensions.PopExtensions( &info.stage ); - if (!CheckVkError("vkCreateComputePipelines()", RetVal)) + if (!CheckVkError("vkCreateComputePipelines()", retVal)) { return false; } @@ -4372,30 +4376,30 @@ bool Vulkan::RecreateSwapChain() Vulkan::BufferIndexAndFence Vulkan::SetNextBackBuffer() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; VkFence Fence = m_SwapchainBuffers[m_SwapchainCurrentIndx].fence; VkSemaphore BackBufferSemaphore = m_SwapchainBuffers[m_SwapchainCurrentIndx].semaphore; // Ensure the command buffer we will use to render the 'next image' is done rendering. - RetVal = vkWaitForFences(m_VulkanDevice, 1, &Fence, VK_TRUE, UINT64_MAX); - CheckVkError( "vkWaitForFences()", RetVal ); + retVal = vkWaitForFences(m_VulkanDevice, 1, &Fence, VK_TRUE, UINT64_MAX); + CheckVkError( "vkWaitForFences()", retVal ); // Reset Fence, ready to be set by the GPU when the command buffer has been submitted and completed. vkResetFences(m_VulkanDevice, 1, &Fence); // Get the next image to render to, then queue a wait until the image is ready uint32_t SwapchainPresentIndx = 0; - RetVal = vkAcquireNextImageKHR(m_VulkanDevice, m_VulkanSwapchain, UINT64_MAX, BackBufferSemaphore, VK_NULL_HANDLE, &SwapchainPresentIndx); - if (RetVal == VK_ERROR_OUT_OF_DATE_KHR) + retVal = vkAcquireNextImageKHR(m_VulkanDevice, m_VulkanSwapchain, UINT64_MAX, BackBufferSemaphore, VK_NULL_HANDLE, &SwapchainPresentIndx); + if (retVal == VK_ERROR_OUT_OF_DATE_KHR) { LOGI("VK_ERROR_OUT_OF_DATE_KHR not handled in sample"); } - else if (RetVal == VK_SUBOPTIMAL_KHR) + else if (retVal == VK_SUBOPTIMAL_KHR) { LOGI("VK_SUBOPTIMAL_KHR not handled in sample"); } - else if (!CheckVkError("vkAcquireNextImageKHR()", RetVal)) + else if (!CheckVkError("vkAcquireNextImageKHR()", retVal)) { } @@ -4441,8 +4445,8 @@ bool Vulkan::QueueSubmit(const std::span SubmitInfo, uint32_ { VkQueue Queue = m_VulkanQueues[QueueIndex].Queue; assert(Queue != VK_NULL_HANDLE); - VkResult RetVal = vkQueueSubmit(Queue, (uint32_t)SubmitInfo.size(), SubmitInfo.data(), CompletedFence); - if (!CheckVkError("vkQueueSubmit()", RetVal)) + VkResult retVal = vkQueueSubmit(Queue, (uint32_t)SubmitInfo.size(), SubmitInfo.data(), CompletedFence); + if (!CheckVkError("vkQueueSubmit()", retVal)) { return false; } @@ -4456,8 +4460,8 @@ bool Vulkan::QueueSubmit(const std::span SubmitInfo, uin VkQueue Queue = m_VulkanQueues[QueueIndex].Queue; assert(Queue != VK_NULL_HANDLE); assert( m_ExtKhrSynchronization2 && m_ExtKhrSynchronization2->Status == VulkanExtensionStatus::eLoaded ); - VkResult RetVal = m_ExtKhrSynchronization2->m_vkQueueSubmit2KHR(Queue, (uint32_t)SubmitInfo.size(), SubmitInfo.data(), CompletedFence); - if (!CheckVkError("vkQueueSubmit2KHR()", RetVal)) + VkResult retVal = m_ExtKhrSynchronization2->m_vkQueueSubmit2KHR(Queue, (uint32_t)SubmitInfo.size(), SubmitInfo.data(), CompletedFence); + if (!CheckVkError("vkQueueSubmit2KHR()", retVal)) { return false; } @@ -4468,7 +4472,7 @@ bool Vulkan::QueueSubmit(const std::span SubmitInfo, uin bool Vulkan::PresentQueue(const std::span pWaitSemaphores, uint32_t SwapchainPresentIndx) //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // Build up the present info and present the queue VkPresentInfoKHR PresentInfo {VK_STRUCTURE_TYPE_PRESENT_INFO_KHR}; @@ -4486,15 +4490,15 @@ bool Vulkan::PresentQueue(const std::span pWaitSemaphores, ui PresentInfo.pWaitSemaphores = pWaitSemaphores.data(); } - RetVal = vkQueuePresentKHR(m_VulkanQueues[eGraphicsQueue].Queue, &PresentInfo); - if (RetVal == VK_ERROR_OUT_OF_DATE_KHR) + retVal = vkQueuePresentKHR(m_VulkanQueues[eGraphicsQueue].Queue, &PresentInfo); + if (retVal == VK_ERROR_OUT_OF_DATE_KHR) { // Swapchain is out of data. This can happen if the window was // resized after it was created (which is NOT supported here) LOGE("Swapchain is out of date! Unable to get next image!"); return false; } - else if (RetVal == VK_SUBOPTIMAL_KHR) + else if (retVal == VK_SUBOPTIMAL_KHR) { // This should not be spammed, print it 5 times and then be done! static int spamCount = 0; @@ -4510,7 +4514,7 @@ bool Vulkan::PresentQueue(const std::span pWaitSemaphores, ui } else { - if (!CheckVkError("vkQueuePresentKHR()", RetVal)) + if (!CheckVkError("vkQueuePresentKHR()", retVal)) { return false; } @@ -4531,23 +4535,23 @@ bool Vulkan::QueueWaitIdle(uint32_t QueueIndex) const //----------------------------------------------------------------------------- { assert(m_VulkanQueues[QueueIndex].Queue != VK_NULL_HANDLE); - VkResult RetVal = vkQueueWaitIdle(m_VulkanQueues[QueueIndex].Queue); - return CheckVkError("vkQueueWaitIdle()", RetVal); + VkResult retVal = vkQueueWaitIdle(m_VulkanQueues[QueueIndex].Queue); + return CheckVkError("vkQueueWaitIdle()", retVal); } //----------------------------------------------------------------------------- bool Vulkan::WaitUntilIdle() const //----------------------------------------------------------------------------- { - VkResult RetVal = vkDeviceWaitIdle(m_VulkanDevice); - return CheckVkError("vkDeviceWaitIdle()", RetVal); + VkResult retVal = vkDeviceWaitIdle(m_VulkanDevice); + return CheckVkError("vkDeviceWaitIdle()", retVal); } //----------------------------------------------------------------------------- VkCommandBuffer Vulkan::StartSetupCommandBuffer() //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // Make sure we are not leaking by starting without releasing! if (m_SetupCmdBuffer != VK_NULL_HANDLE) @@ -4569,8 +4573,8 @@ VkCommandBuffer Vulkan::StartSetupCommandBuffer() BeginInfo.flags = 0; BeginInfo.pInheritanceInfo = nullptr; - RetVal = vkBeginCommandBuffer(m_SetupCmdBuffer, &BeginInfo); - if (!CheckVkError("vkBeginCommandBuffer()", RetVal)) + retVal = vkBeginCommandBuffer(m_SetupCmdBuffer, &BeginInfo); + if (!CheckVkError("vkBeginCommandBuffer()", retVal)) { return VK_NULL_HANDLE; } @@ -4581,7 +4585,7 @@ VkCommandBuffer Vulkan::StartSetupCommandBuffer() void Vulkan::FinishSetupCommandBuffer(VkCommandBuffer setupCmdBuffer) //----------------------------------------------------------------------------- { - VkResult RetVal = VK_SUCCESS; + VkResult retVal = VK_SUCCESS; // Make sure we are not out of state! if (m_SetupCmdBuffer == VK_NULL_HANDLE) @@ -4595,8 +4599,8 @@ void Vulkan::FinishSetupCommandBuffer(VkCommandBuffer setupCmdBuffer) } // Stop recording the command buffer... - RetVal = vkEndCommandBuffer(m_SetupCmdBuffer); - if (!CheckVkError("vkEndCommandBuffer()", RetVal)) + retVal = vkEndCommandBuffer(m_SetupCmdBuffer); + if (!CheckVkError("vkEndCommandBuffer()", retVal)) { return; } @@ -5311,5 +5315,26 @@ void Vulkan::DumpDeviceInfo( const std::span DeviceFeatu m_VulkanDevicePropertiesPrintExtensions.PushExtensions( nullptr ); } } +} +//----------------------------------------------------------------------------- +void Vulkan::ReportFramebufferProperties( VkFramebuffer vkFrameBuffer ) const +//----------------------------------------------------------------------------- +{ + if (m_ExtQcomTileProperties && m_ExtQcomTileProperties->Status == VulkanExtensionStatus::eLoaded) + { + uint32_t propertiesCount = 0; + m_ExtQcomTileProperties->m_vkGetFramebufferTilePropertiesQCOM( m_VulkanDevice, vkFrameBuffer, &propertiesCount, nullptr ); + if (propertiesCount > 0) + { + std::vector< VkTilePropertiesQCOM> properties; + properties.resize(propertiesCount, {VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM}); + m_ExtQcomTileProperties->m_vkGetFramebufferTilePropertiesQCOM( m_VulkanDevice, vkFrameBuffer, &propertiesCount, properties.data() ); + for (const auto& prop : properties) + { + LOGI("Framebuffer properties: %ux%ux%u (origin %ux%u; apron %ux%u)", prop.tileSize.width, prop.tileSize.height, prop.tileSize.depth, prop.origin.x, prop.origin.y, prop.apronSize.width, prop.apronSize.height); + } + } + } } + diff --git a/framework/code/vulkan/vulkan.hpp b/framework/code/vulkan/vulkan.hpp index 22682c6..b463a87 100644 --- a/framework/code/vulkan/vulkan.hpp +++ b/framework/code/vulkan/vulkan.hpp @@ -12,44 +12,29 @@ #ifdef OS_WINDOWS #define NOMINMAX #include -#define VK_USE_PLATFORM_WIN32_KHR #elif OS_ANDROID -#define VK_USE_PLATFORM_ANDROID_KHR #endif // OS_WINDOWS | OS_WINDOWS -// This definition allows prototypes of Vulkan API functions, -// rather than dynamically loading entrypoints to the API manually. -#define VK_PROTOTYPES - -#if defined(OS_WINDOWS) && !defined(VK_ENABLE_BETA_EXTENSIONS) -#define VK_ENABLE_BETA_EXTENSIONS -#endif -#include -#ifdef OS_ANDROID -//#include "VK_QCOM_render_pass_transform.h" -//#include "VK_KHR_fragment_shading_rate.h" -#endif // OS_ANDROID - +#include #include #include #include #include #include +#include #include #include #include -#include +#include #include "extension.hpp" #include "memory/vulkan/memoryManager.hpp" +#include "texture/textureFormat.hpp" +#include "framebuffer.hpp" +#include "../material/pipeline.hpp"///TODO: move pipeline.[ch]pp +#include "renderPass.hpp" // This should actually be defined in the makefile! #define USES_VULKAN_DEBUG_LAYERS -// Enable the Vulkan validation layer to also flag 'best practices' (if the debug/validation layers are in use) -//#define VULKAN_VALIDATION_ENABLE_BEST_PRACTICES -// Enable the Vulkan validation layer to also flag 'syncronization' issues (if the debug/validation layers are in use) -//#define VULKAN_VALIDATION_ENABLE_SYNCHRONIZATION -// Enable the Vulkan validation layer to output debugPrintf (if the debug/validation layers are in use) -//#define VULKAN_VALIDATION_ENABLE_PRINTF #define NUM_VULKAN_BUFFERS 8 // Kept track of with mSwapchainCurrentIdx @@ -59,33 +44,45 @@ // Forward declarations #if OS_ANDROID struct ANativeWindow; +#elif defined(OS_LINUX) +struct GLFWwindow; #endif // OS_ANDROID template class IndexBuffer; template class VertexBuffer; +template class RenderContext; +template class RenderPass; +class RenderPassClearData; struct VulkanDeviceFeaturePrint; struct VulkanDevicePropertiesPrint; struct VulkanInstanceFunctionPointerLookup; struct VulkanDeviceFunctionPointerLookup; -namespace ExtensionHelper { +namespace ExtensionLib { struct Ext_VK_KHR_surface; struct Ext_VK_KHR_get_physical_device_properties2; struct Ext_VK_KHR_get_surface_capabilities2; struct Ext_VK_KHR_draw_indirect_count; + struct Ext_VK_KHR_swapchain; struct Ext_VK_EXT_debug_utils; struct Ext_VK_EXT_debug_marker; struct Ext_VK_EXT_hdr_metadata; struct Ext_VK_KHR_fragment_shading_rate; struct Ext_VK_KHR_create_renderpass2; - struct Ext_VK_ARM_tensors; - struct Ext_VK_ARM_data_graph; struct Ext_VK_KHR_synchronization2; struct Ext_VK_QCOM_tile_properties; + struct Ext_VK_QCOM_tile_shading; + struct Ext_VK_QCOM_tile_memory_heap; + struct Ext_VK_KHR_get_memory_requirements2; + struct Ext_VK_ARM_tensors; + struct Ext_VK_ARM_data_graph; struct Vulkan_SubgroupPropertiesHook; struct Vulkan_StorageFeaturesHook; struct Ext_VK_KHR_mesh_shader; + struct Ext_VK_KHR_dynamic_rendering; }; +namespace vk {}; class VulkanDebugCallback; enum class TextureFormat; +enum class Msaa; bool CheckVkError(const char* pPrefix, VkResult CheckVal); @@ -94,32 +91,274 @@ bool CheckVkError(const char* pPrefix, VkResult CheckVal); //============================================================================= /// Single Swapchain image -typedef struct _SwapchainBuffers +struct SwapchainBuffers { - VkFramebuffer framebuffer; - VkImage image; - VkImageView view; - VkFence fence; - VkSemaphore semaphore; -} SwapchainBuffers; + SwapchainBuffers() noexcept = default; + SwapchainBuffers( SwapchainBuffers&& ) noexcept = default; + Framebuffer framebuffer; + VkImage image = VK_NULL_HANDLE; + VkImageView view = VK_NULL_HANDLE; + VkFence fence = VK_NULL_HANDLE; + VkSemaphore semaphore = VK_NULL_HANDLE; +}; /// DepthBuffer memory, image and view typedef struct _DepthInfo { - TextureFormat format; - VkImageView view; - MemoryAllocatedBuffer image; + TextureFormat format; + VkImageView view; + MemoryAllocatedBuffer image; } DepthInfo; typedef struct _SurfaceFormat { - TextureFormat format; - VkColorSpaceKHR colorSpace; + TextureFormat format; + VkColorSpaceKHR colorSpace; } SurfaceFormat; + +// +// Wrapper template helpers for VkStructs +// in namespace fvk (framework vk). +// +namespace fvk +{ + template struct VkStructWrapperNext; // forward declaration + template struct VkStructWrapperMemberPtr; // forward declaration + template struct VkStructWrapperMemberArrayPtr;// forward declaration + //#define offsetof(s,m) ((::size_t)&reinterpret_cast((((s*)0)->m))) + //#define OwnedPointer(s,m) const_cast((((s*)0)->m)) + + /// @brief Helper for creating Vulkan api structures (eg for create parameters) with chaining via pNext. + /// @tparam VK_STRUCTURE Type of structure to create + /// @tparam T_STRUCTURE_TYPE Enum matching the structure (from VkStructureType) + + template + struct VkStructWrapperBase { + VkStructWrapperBase( const VkStructWrapperBase& ) = delete; + VkStructWrapperBase& operator=( const VkStructWrapperBase& ) noexcept = delete; + VkStructWrapperBase( VkStructWrapperBase&& other ) noexcept + { + *this = std::move( other ); + } + VkStructWrapperBase& operator=( VkStructWrapperBase&& other ) noexcept + { + if (this != std::addressof(other)) + { + // ugh! We can rely on these being C (vulkan) structures so no constructors, destructors + memcpy( this, &other, sizeof( *this ) ); + memset( &other, 0, sizeof( *this ) ); + other.s.sType = T_STRUCTURE_TYPE; + } + return *this; + } + + VkStructWrapperBase( VK_STRUCTURE&& contents = {} ) noexcept : s( std::forward( contents ) ) + { + static_assert(sizeof( *this ) == sizeof( VK_STRUCTURE )); + assert( contents.pNext == nullptr ); + //allow us to pass contents where sType is not set, compiler will have checked it is correct structure type so assume the data is good. + //this is nice because we can then use designated initializers to make things look nice + //assert( contents.sType == T_STRUCTURE_TYPE ); + s.sType = T_STRUCTURE_TYPE; + } + VkStructWrapperBase & operator=( VK_STRUCTURE&& other ) noexcept { + if (&other != this) { + assert( other.sType == T_STRUCTURE_TYPE ); + s = std::forward( other ); + // ugh! We can rely on these being (vulkan) structures so no constructors, destructors + memset( &other, 0, sizeof( *this ) ); + } + return *this; + }; + VK_STRUCTURE* operator&() { return &(this->s); } // This is 'unconventional'; if we start needing to use std::addressof then consider removing this and replacing with .get(). Saving grace may be that this is a non virtual class and only contains 's' + const VK_STRUCTURE* operator&() const { return &(this->s); } // This is 'unconventional'; if we start needing to use std::addressof then consider removing this and replacing with .get(). Saving grace may be that this is a non virtual class and only contains 's' + + using tStruct = VK_STRUCTURE; + static constexpr VkStructureType tStructType = T_STRUCTURE_TYPE; + VK_STRUCTURE s{.sType = T_STRUCTURE_TYPE}; + }; + + template... T_MEMBER_PTRS> + struct VkStructWrapperWithMembers : public VkStructWrapperBase + { + using tBase = VkStructWrapperBase; + VkStructWrapperWithMembers( const VkStructWrapperWithMembers& ) = delete; + VkStructWrapperWithMembers& operator=( const VkStructWrapperWithMembers& ) = delete; + VkStructWrapperWithMembers( VK_STRUCTURE&& contents ) noexcept : tBase( std::move( contents ) ) {} + VkStructWrapperWithMembers( VkStructWrapperWithMembers&& other ) noexcept + { + *this = std::move(other); + } + VkStructWrapperWithMembers& operator=( VkStructWrapperWithMembers&& other ) noexcept + { + if (this != std::addressof(other)) + { + tBase::operator=( std::move( static_cast(other) ) ); + mMemberPointers = std::move( other.mMemberPointers ); + std::fill( std::begin( other.mMemberPointers ), std::end( other.mMemberPointers ), nullptr ); + } + return *this; + } + ~VkStructWrapperWithMembers() + { + freemembers(); + } + template + auto AddMember() + { + return AddMemberArray(1).data(); + } + template + auto AddMemberArray( uint32_t arrayCount ) + { + auto member = findmember(); + void** pMember = reinterpret_cast(reinterpret_cast(&(this->s)) + member.offset); + T_MEMBER* p = (T_MEMBER*)calloc(sizeof(T_MEMBER), arrayCount); //yes, calloc not new[] because we dont have T_MEMEBER when freeing (freemembers()) so cant do delete[]. + static_assert(std::is_trivially_default_constructible_v< T_MEMBER>); // check that T_MEMBER is constructable with calloc (the Vulkan structs should all pass this check). If you hit this at compile time then you are trying to add a member that is not compatible with AddMemberArray/AddMember) + *pMember = p; + mMemberPointers[member.pointerIndex] = p; + if (member.countOffset > 0/*0 would be the offset of sType, so ok to use to indicate 'no count' */) + { + uint32_t* pCountMember = reinterpret_cast(reinterpret_cast(&(this->s)) + member.countOffset); + *pCountMember = arrayCount; + } + else + { + assert(arrayCount == 1); // if there is no count member of the structure then we expect the pointer to just be to a single value. + } + return std::span( p, arrayCount ); + } + protected: + std::array mMemberPointers{}; // pointers to data created by AddMember (duplicate of that pointer). Will be nullptr in the case where the member pointer was set but wasnt set via AddMember (and so we dont have ownership of the memory) + + struct Member { + size_t offset; //byte offset of pointer in VK_STRUCTURE + size_t countOffset; //byte offset of associated count(er) in VK_STRUCTURE + size_t pointerIndex; //index into mMemberPointers + }; + template TT_MEMBER_PTR, std::pair... TT_MEMBER_PTRS> + static consteval auto findmember( size_t memberIdx = 0 ) + { + if constexpr (TT_POINTEROFFSET == TT_MEMBER_PTR.first) + return Member{TT_MEMBER_PTR.first, TT_MEMBER_PTR.second, memberIdx}; + else if constexpr (sizeof...(TT_MEMBER_PTRS) != 0) + return findmember( memberIdx + 1 ); + else + { + static_assert((sizeof...(TT_MEMBER_PTRS) != 0) && "Cannot find pointer member in structure"); + } + return Member{}; + } + + template TT_MEMBER_PTR, std::pair... TT_MEMBER_PTRS> + void freemembers( size_t memberIdx = 0 ) + { + if constexpr (sizeof...(TT_MEMBER_PTRS) != 0) + { + freemembers( memberIdx + 1 ); + } + else + { + void** p = reinterpret_cast(reinterpret_cast(&(this->s)) + TT_MEMBER_PTR.first); + if (*p && this->mMemberPointers[memberIdx]) + { + assert( *p == mMemberPointers[memberIdx] ); + free(*p); // was allocated using calloc! (and checked to be trivially constructable + } + } + }; + }; + + template... T_MEMBER_PTRS> + struct VkStructWrapper : public std::conditional_t, VkStructWrapperBase> + { + using tStruct = VK_STRUCTURE; + using tBase = std::conditional_t, VkStructWrapperBase>; + VkStructWrapper( VkStructWrapper&& other ) noexcept : tBase( std::move( other ) ) + {} + VkStructWrapper& operator=( VkStructWrapper&& other ) noexcept = default; + + VkStructWrapper( tStruct&& contents = {} ) noexcept : tBase( std::move( contents ) ) + { + } + VkStructWrapper& operator=( tStruct&& other ) noexcept { + tBase::operator=( std::move( other ) ); + return *this; + } + tStruct& operator*() { return get(); } + tStruct* operator->() { return &get(); } + const tStruct& get() const { return this->s; } + tStruct& get() { return this->s; } + const tStruct& operator*() const { return get(); } + const tStruct* operator->() const { return &get(); } + tStruct* operator&() { return tBase::operator&(); } // This is 'unconventional'; if we start needing to use std::addressof then consider removing this and replacing with .get(). Saving grace may be that this is a non virtual class and only contains 's' + const tStruct* operator&() const { return tBase::operator&(); } // This is 'unconventional'; if we start needing to use std::addressof then consider removing this and replacing with .get(). Saving grace may be that this is a non virtual class and only contains 's' + template + auto& Add() { + auto* p = new VkStructWrapperNext(); + p->s.pNext = this->s.pNext; + this->s.pNext = p; + return *p; + } + template + auto& Add( VK_STRUCTURE_NEXT&& contents ) { + auto* p = new VkStructWrapperNext( std::forward< VK_STRUCTURE_NEXT>( contents ) ); + p->s.pNext = this->s.pNext; + this->s.pNext = p; + return *p; + } + template + auto& Add( VK_STRUCTURE_WRAPPER_NEXT&& contents ) { + auto* p = new std::remove_reference_t( std::move( contents.s ) ); + p->s.pNext = (void*)this->s.pNext; + this->s.pNext = p; + return *p; + } + + ~VkStructWrapper() { + VkBaseOutStructure* pNext = (VkBaseOutStructure*)this->s.pNext; + while (pNext) + { + auto* pNextPrev = pNext; + pNext = pNext->pNext; + free( pNextPrev ); + } + this->s.pNext = nullptr; + } + template friend struct VkStructWrapperNext; + }; + // Template for the structs chained to VkStructWrapper by calling Add + + /// @brief Helper class for vulkan structures chained (via pNext) onto a base VkStructWrapper + template + struct VkStructWrapperNext final : public VkStructWrapper + { + VkStructWrapperNext() noexcept : VkStructWrapper() {} + VkStructWrapperNext( VK_STRUCTURE&& contents ) noexcept : VkStructWrapper( std::forward< VK_STRUCTURE>( contents ) ) + {} + private: + // Destructor is private because we shouldnt construct/destruct these classes outside of VkStructWrapper::Add (and then the ~VkStructWrapper will cleanup the VkStructWrapperChild classes) + ~VkStructWrapperNext() noexcept { this->s.pNext = nullptr;/*detach from list so the base class destructor doesnt delete the pNext*/ } + }; + + // + // Set of aliases for common VkStructs wrapped in our helper + // + using VkRenderPassCreateInfo = VkStructWrapper; + using VkRenderPassCreateInfo2 = VkStructWrapper; + using VkRenderPassBeginInfo = VkStructWrapper < VkRenderPassBeginInfo, VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, std::pair{offsetof(VkRenderPassBeginInfo, pClearValues), offsetof(VkRenderPassBeginInfo, clearValueCount)} > ; + using VkFramebufferCreateInfo = VkStructWrapper; + using VkRenderPassTransformBeginInfoQCOM = VkStructWrapper; + using VkRenderingInfo = VkStructWrapper < VkRenderingInfo, VK_STRUCTURE_TYPE_RENDERING_INFO, std::pair{offsetof( VkRenderingInfo, pColorAttachments ), offsetof( VkRenderingInfo, colorAttachmentCount )}, std::pair{offsetof(VkRenderingInfo, pDepthAttachment), 0}, std::pair{offsetof(VkRenderingInfo, pStencilAttachment),0} >; + using VkPipelineRenderingCreateInfo = VkStructWrapper < VkPipelineRenderingCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, std::pair{offsetof(VkPipelineRenderingCreateInfo, pColorAttachmentFormats), offsetof(VkPipelineRenderingCreateInfo, colorAttachmentCount)} > ; + +} // namespace fvk; + + /// Vulkan API implementation /// Contains Vulkan top level (driver etc) objects and provides a simple initialization interface. -class Vulkan : public GraphicsApiBase +class Vulkan : public ::GraphicsApiBase { Vulkan(const Vulkan&) = delete; Vulkan& operator=(const Vulkan&) = delete; @@ -128,6 +367,9 @@ class Vulkan : public GraphicsApiBase using ViewportClass = VkViewport; using Rect2DClass = VkRect2D; using MemoryManager = MemoryManager; + using RenderContext = RenderContext; + using RenderPass = RenderPass; + using BufferHandleType = VkBuffer; public: Vulkan(); @@ -147,52 +389,47 @@ class Vulkan : public GraphicsApiBase /// @brief Register the vulkan extension (templated) as required by this app /// @tparam T template class for the extension /// @return pointer to the registered extension (guaranteed to not go out of scope or move until Vulkan deleted) - template - const T* RequiredExtension() { return AddExtension( std::make_unique( VulkanExtensionStatus::eRequired ) ); } + template + const T* RequiredExtension(ARGS&& ...args) { return AddExtension( std::make_unique( VulkanExtensionStatus::eRequired, std::forward(args)... ) ); } const VulkanExtension* RequiredExtension( const std::string& extensionName ) { return AddExtension( std::make_unique>( extensionName, VulkanExtensionStatus::eRequired ) ); } /// @brief Register the vulkan extension (templated) as desired by this app (but optional) /// @tparam T template class for the extension /// @return pointer to the registered extension (guaranteed to not go out of scope or move until Vulkan deleted) - template - const T* OptionalExtension() { return AddExtension( std::make_unique( VulkanExtensionStatus::eOptional ) ); } + template + const T* OptionalExtension(ARGS&& ...args) { return AddExtension( std::make_unique( VulkanExtensionStatus::eOptional, std::forward(args)... ) ); } const VulkanExtension* OptionalExtension( const std::string& extensionName ) { return AddExtension( std::make_unique>( extensionName, VulkanExtensionStatus::eOptional ) ); } template const T* AddExtension(std::unique_ptr extension) { - if constexpr (T::Type == VulkanExtensionType::eInstance) - { - auto it = AdditionalVulkanInstanceExtensions.try_emplace(extension->Name, std::move(extension)); - if (!it.second) + auto it = [&]() { + if constexpr (T::Type == VulkanExtensionType::eInstance) + return AdditionalVulkanInstanceExtensions.try_emplace( extension->Name, std::move( extension ) ); + else if constexpr (T::Type == VulkanExtensionType::eDevice) + return AdditionalVulkanDeviceExtensions.try_emplace( extension->Name, std::move( extension ) ); + else if constexpr (T::Type == VulkanExtensionType::eLayer) + return AdditionalVulkanInstanceLayers.try_emplace( extension->Name, std::move( extension ) ); + else { - assert(0); // cannot add another extension with the same name but (potentially) a different implementation class - return nullptr; + // constexpr static_assert in a template is 'problematic' in C++17 (and seemingly clang C++20). At some point this can turn back into static_assert(0, "..."); + [] () { static_assert(flag, "Unsupported VulkanExtensionType"); }(); } - return static_cast(&(*it.first->second.get())); - } - else if constexpr (T::Type == VulkanExtensionType::eDevice) - { - auto it = AdditionalVulkanDeviceExtensions.try_emplace(extension->Name, std::move(extension)); - if (!it.second) - { - assert(0); // cannot add another extension with the same name but (potentially) a different implementation class - return nullptr; - } - return static_cast(&(*it.first->second.get())); - } - else + }(); + if (!it.second) { - // constexpr static_assert in a template is 'problematic' in C++17 (and seemingly clang C++20). At some point this can turn back into static_assert(0, "..."); - [] () { static_assert(flag, "Unsupported VulkanExtensionType"); }(); + assert(0 && "Double 'add' of vulkan extension not allowed"); // cannot add another extension with the same name but (potentially) a different implementation class + return nullptr; } + return static_cast(&(*it.first->second.get())); } - protected: friend class Vulkan; /// (optional) list of 'additional' instance extensions that this app requires or would like (optional). std::map>> AdditionalVulkanInstanceExtensions; /// (optional) list of 'additional' device extensions that this app requires or would like (optional). std::map>> AdditionalVulkanDeviceExtensions; + /// (optional) list of 'additional' device layers that this app requires or would like (optional). + std::map>> AdditionalVulkanInstanceLayers; }; typedef std::function)> tSelectSurfaceFormatFn; @@ -219,10 +456,14 @@ class Vulkan : public GraphicsApiBase uint32_t GetSurfaceWidth() const { return m_SurfaceWidth; } ///< Swapchain width uint32_t GetSurfaceHeight() const { return m_SurfaceHeight; } ///< Swapchain height - VkFramebuffer GetSwapchainFramebuffer(uint32_t index) const { return m_SwapchainBuffers[index].framebuffer; } + const Framebuffer& GetSwapchainFramebuffer(uint32_t index) const { return m_SwapchainBuffers[index].framebuffer; } VkImage GetSwapchainImage(uint32_t index) const { return m_SwapchainBuffers[index].image; } TextureFormat GetSurfaceFormat() const { return m_SurfaceFormat; } + TextureFormat GetSwapchainFormat() const { return m_SurfaceFormat; } + size_t GetSwapchainBufferCount() const { return m_SwapchainBuffers.size(); } + TextureFormat GetSwapchainDepthFormat() const { return m_SwapchainDepth.format; } + /// Current buffer index (that can be filled) and the fence that should be signalled when the GPU completes this buffer and the semaphore to wait on before starting rendering. struct BufferIndexAndFence { @@ -317,7 +558,33 @@ class Vulkan : public GraphicsApiBase /// @param QueueIndex queue that this this command buffer was assigned to when allocated void FreeCommandBuffer(uint32_t QueueIndex, VkCommandBuffer CmdBuffer) const; - /// @brief Create a VkRenderPass (single subpass) with the given parameters. + + enum class RenderPassTileShadingMode { + Disabled = 0, + Enabled, + _unused, + PerTileShading + }; + + /// @brief Parameters for creation of a render pass. + struct RenderPassCreateData + { + std::span ColorFormats = {}; + TextureFormat DepthFormat = TextureFormat::UNDEFINED; + Msaa Msaa = Msaa::Samples1; + std::span ColorInputUsage = {}; + std::span ColorOutputUsage = {}; + RenderPassInputUsage DepthInputUsage = RenderPassInputUsage::Clear; + RenderPassOutputUsage DepthOutputUsage = RenderPassOutputUsage::Discard; + std::span ResolveFormats = {}; + RenderPassTileShadingMode TileShading = RenderPassTileShadingMode::Disabled; + std::array TileApron; + }; + + /// @brief Create a RenderPass (wrapper around VkRenderPass) for a single subpass with the given parameters. + RenderPass CreateRenderPass( const RenderPassCreateData& createData ); + + /// @brief Create a RenderPass (wrapper around VkRenderPass) for a single subpass with the given parameters. /// When we have ResolveFormats we resolve each member of ColorFormats out to a matching ResolveFormats buffer (unless ResolveFormat is VK_FORMAT_UNDEFINED, render pass expects ColorPass + number of defined Resolve buffers - resolve buffers must be VK_SAMPLE_COUNT_1_BIT) /// @param ColorFormats Format and usage of all expected color buffers. /// @param DepthFormat Format and usage of the depth buffer. @@ -329,24 +596,23 @@ class Vulkan : public GraphicsApiBase bool CreateRenderPass( std::span ColorFormats, TextureFormat DepthFormat, - VkSampleCountFlagBits Msaa, + Msaa Msaa, RenderPassInputUsage ColorInputUsage, RenderPassOutputUsage ColorOutputUsage, bool ShouldClearDepth, RenderPassOutputUsage DepthOutputUsage, - VkRenderPass* pRenderPass/*out*/, + RenderPass& rRenderPass/*out*/, std::span ResolveFormats = {} ); - bool CreateRenderPassVRS( std::span ColorFormats, TextureFormat DepthFormat, - VkSampleCountFlagBits Msaa, + Msaa Msaa, RenderPassInputUsage ColorInputUsage, RenderPassOutputUsage ColorOutputUsage, bool ShouldClearDepth, RenderPassOutputUsage DepthOutputUsage, - VkRenderPass* pRenderPass/*out*/, + RenderPass& rRenderPass/*out*/, std::span ResolveFormats = {}, bool hasDensityMap = false); @@ -363,15 +629,15 @@ class Vulkan : public GraphicsApiBase bool Create2SubpassRenderPass( const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, - const std::span InternalPassMsaa, - VkSampleCountFlagBits OutputMsaa, - VkRenderPass* pRenderPass/*out*/ ); + const std::span InternalPassMsaa, + Msaa OutputMsaa, + RenderPass& rRenderPass/*out*/ ); bool Create2SubpassRenderPass( const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, - VkSampleCountFlagBits InternalPassMsaa, /* same for both passes*/ - VkSampleCountFlagBits OutputMsaa, - VkRenderPass* pRenderPass/*out*/ ); + Msaa InternalPassMsaa, /* same for both passes*/ + Msaa OutputMsaa, + RenderPass& rRenderPass/*out*/ ); /// @brief Create a VkRenderPass (two subpasses) with MSAA shader resolves (uses and requires shader resolve extension). /// First subpass writes to the buffers described by 'InternalColorFormats'. Those buffers are cleared before use and discarded at the end of the (entire) pass. @@ -386,15 +652,20 @@ class Vulkan : public GraphicsApiBase bool CreateSubpassShaderResolveRenderPass(const std::span InternalColorFormats, const std::span OutputColorFormats, TextureFormat InternalDepthFormat, - VkSampleCountFlagBits InternalMsaa, - VkSampleCountFlagBits OutputMsaa, - VkRenderPass* pRenderPass/*out*/ ); + Msaa InternalMsaa, + Msaa OutputMsaa, + RenderPass& rRenderPass/*out*/ ); + + /// @brief Create a render pass. + bool CreateRenderPass( const VkRenderPassCreateInfo& createInfo, RenderPass& rRenderPass/*out*/ ); + bool CreateRenderPass( const VkRenderPassCreateInfo2KHR& createInfo, RenderPass& rRenderPass/*out*/ ); - /// @brief Create a render pass pipeline. + /// @brief Create a render pass pipeline using a RenderContext that could contain renderpass/subpass + /// @brief or dynamic render pass data. /// @param pipelineCache (optional) vulkan pipeline cache /// @param visci (required) vertex input state /// @param pipelineLayout (required) Vulkan pipeline layout - /// @param renderPass (required) render pass to make this pipeline for + /// @param renderContext (required) context (with render pass) to make this pipeline for /// @param subpass (required) subpass number (0 if first subpass or not using subpasses) /// @param providedRS (optional) rasterization state /// @param providedDSS (optional) depth stencil state @@ -404,12 +675,12 @@ class Vulkan : public GraphicsApiBase VkPipelineCache pipelineCache, const VkPipelineVertexInputStateCreateInfo* visci, VkPipelineLayout pipelineLayout, - VkRenderPass renderPass, - uint32_t subpass, + const RenderContext& renderContext, const VkPipelineRasterizationStateCreateInfo* providedRS, const VkPipelineDepthStencilStateCreateInfo* providedDSS, const VkPipelineColorBlendStateCreateInfo* providedCBS, const VkPipelineMultisampleStateCreateInfo* providedMS, + const VkPipelineInputAssemblyStateCreateInfo* providedIA, std::span dynamicStates, const VkViewport* viewport, const VkRect2D* scissor, @@ -420,71 +691,8 @@ class Vulkan : public GraphicsApiBase const VkSpecializationInfo* specializationInfo, bool bAllowDerivation, VkPipeline deriveFromPipeline, - VkPipeline* pipeline, - VkPipelineInputAssemblyStateCreateInfo ia_custom); - - /// @brief Create a render pass pipeline. - /// @param pipelineCache (optional) vulkan pipeline cache - /// @param visci (required) vertex input state - /// @param pipelineLayout (required) Vulkan pipeline layout - /// @param renderPass (required) render pass to make this pipeline for - /// @param subpass (required) subpass number (0 if first subpass or not using subpasses) - /// @param providedRS (optional) rasterization state - /// @param providedDSS (optional) depth stencil state - /// @param specializationInfo (optional) specialization constants (shared between vert and frag shader) - /// @return true on success - bool CreatePipeline( - VkPipelineCache pipelineCache, - const VkPipelineVertexInputStateCreateInfo* visci, - VkPipelineLayout pipelineLayout, - VkRenderPass renderPass, - uint32_t subpass, - const VkPipelineRasterizationStateCreateInfo* providedRS, - const VkPipelineDepthStencilStateCreateInfo* providedDSS, - const VkPipelineColorBlendStateCreateInfo* providedCBS, - const VkPipelineMultisampleStateCreateInfo* providedMS, - std::span dynamicStates, - const VkViewport* viewport, - const VkRect2D* scissor, - VkShaderModule vertShaderModule, - VkShaderModule fragShaderModule, - const VkSpecializationInfo* specializationInfo, - bool bAllowDerivation, - VkPipeline deriveFromPipeline, VkPipeline* pipeline); - /// @brief Create a render pass pipeline. - /// @param pipelineCache (optional) vulkan pipeline cache - /// @param visci (required) vertex input state - /// @param pipelineLayout (required) Vulkan pipeline layout - /// @param renderPass (required) render pass to make this pipeline for - /// @param subpass (required) subpass number (0 if first subpass or not using subpasses) - /// @param providedRS (optional) rasterization state - /// @param providedDSS (optional) depth stencil state - /// @param specializationInfo (optional) specialization constants (shared between vert and frag shader) - /// @return true on success - bool CreatePipeline( - VkPipelineCache pipelineCache, - const VkPipelineVertexInputStateCreateInfo* visci, - VkPipelineLayout pipelineLayout, - VkRenderPass renderPass, - uint32_t subpass, - const VkPipelineRasterizationStateCreateInfo* providedRS, - const VkPipelineDepthStencilStateCreateInfo* providedDSS, - const VkPipelineColorBlendStateCreateInfo* providedCBS, - const VkPipelineMultisampleStateCreateInfo* providedMS, - std::span dynamicStates, - const VkViewport* viewport, - const VkRect2D* scissor, - VkShaderModule taskShaderModule, - VkShaderModule meshShaderModule, - VkShaderModule vertShaderModule, - VkShaderModule fragShaderModule, - const VkSpecializationInfo* specializationInfo, - bool bAllowDerivation, - VkPipeline deriveFromPipeline, - VkPipeline* pipeline); - /// @brief Create a compute shader pipeline /// @param pipelineCache (optional) vulkan pipeline cache /// @param pipelineLayout (required) vulkan pipeline layout @@ -552,6 +760,10 @@ class Vulkan : public GraphicsApiBase { return SetDebugObjectName( (uint64_t) shaderModule, VK_OBJECT_TYPE_SHADER_MODULE, name ); } + bool SetDebugObjectName( const RenderPass& renderPass, const char* name ) + { + return SetDebugObjectName( renderPass.mRenderPass, name ); + } // Static helpers static const char* VulkanFormatString(VkFormat WhichFormat); @@ -562,6 +774,8 @@ class Vulkan : public GraphicsApiBase return m_VulkanGpuProperties.Base.properties.limits.timestampPeriod; } + void ReportFramebufferProperties( VkFramebuffer vkFrameBuffer ) const; + inline bool IsComputeQueueSupported() const { return m_VulkanGraphicsQueueSupportsCompute; @@ -646,7 +860,7 @@ class Vulkan : public GraphicsApiBase std::vector m_SwapchainBuffers; DepthInfo m_SwapchainDepth; // ... but they all use the same depth std::array m_SwapchainRenderPassDependencies{}; // dependencies used when creating m_SwapchainRenderPass - VkRenderPass m_SwapchainRenderPass; + RenderPass m_SwapchainRenderPass; TextureFormat m_SurfaceFormat; // Current surface format VkColorSpaceKHR m_SurfaceColorSpace; // Current surface colorspace @@ -719,6 +933,7 @@ class Vulkan : public GraphicsApiBase RegisteredExtensions m_InstanceExtensions; ///< Instance extensions RegisteredExtensions m_DeviceExtensions; ///< Device extensions RegisteredExtensions m_Vulkan11ProvidedExtensions; ///< 'extensions' included in Vulkan 1.1 (implicitly loaded). + RegisteredExtensions m_InstanceLayers; ///< Instance layers // Generic extension query (will fail to compile if type T does not define static Name). template @@ -736,31 +951,35 @@ class Vulkan : public GraphicsApiBase } // Template specializations for stored extension pointers (compile time lookup). template<> - const ExtensionHelper::Ext_VK_KHR_surface* GetExtension() const { return m_ExtKhrSurface; }; + const ExtensionLib::Ext_VK_KHR_surface* GetExtension() const { return m_ExtKhrSurface; }; template<> - const ExtensionHelper::Ext_VK_KHR_get_physical_device_properties2* GetExtension() const { return m_ExtKhrGetPhysicalDeviceProperties2; }; + const ExtensionLib::Ext_VK_KHR_get_physical_device_properties2* GetExtension() const { return m_ExtKhrGetPhysicalDeviceProperties2; }; template<> - const ExtensionHelper::Ext_VK_KHR_get_surface_capabilities2* GetExtension() const { return m_ExtSurfaceCapabilities2; }; + const ExtensionLib::Ext_VK_KHR_get_surface_capabilities2* GetExtension() const { return m_ExtSurfaceCapabilities2; }; template<> - const ExtensionHelper::Ext_VK_KHR_draw_indirect_count* GetExtension() const { return m_ExtKhrDrawIndirectCount; }; + const ExtensionLib::Ext_VK_KHR_draw_indirect_count* GetExtension() const { return m_ExtKhrDrawIndirectCount; }; template<> - const ExtensionHelper::Ext_VK_EXT_debug_utils* GetExtension() const { return m_ExtDebugUtils; }; + const ExtensionLib::Ext_VK_EXT_debug_utils* GetExtension() const { return m_ExtDebugUtils; }; template<> - const ExtensionHelper::Ext_VK_EXT_debug_marker* GetExtension() const { return m_ExtDebugMarker; }; + const ExtensionLib::Ext_VK_EXT_debug_marker* GetExtension() const { return m_ExtDebugMarker; }; template<> - const ExtensionHelper::Ext_VK_EXT_hdr_metadata* GetExtension() const { return m_ExtHdrMetadata; }; + const ExtensionLib::Ext_VK_EXT_hdr_metadata* GetExtension() const { return m_ExtHdrMetadata; }; template<> - const ExtensionHelper::Ext_VK_ARM_tensors* GetExtension() const { return m_ExtArmTensors; }; + const ExtensionLib::Ext_VK_KHR_synchronization2* GetExtension() const { return m_ExtKhrSynchronization2; }; template<> - const ExtensionHelper::Ext_VK_ARM_data_graph* GetExtension() const { return m_ExtArmDataGraph; }; + const ExtensionLib::Ext_VK_QCOM_tile_properties* GetExtension() const { return m_ExtQcomTileProperties; }; template<> - const ExtensionHelper::Ext_VK_KHR_synchronization2* GetExtension() const { return m_ExtKhrSynchronization2; }; + const ExtensionLib::Ext_VK_QCOM_tile_shading* GetExtension() const { return m_ExtQcomTileShading; }; template<> - const ExtensionHelper::Ext_VK_QCOM_tile_properties* GetExtension() const { return m_ExtQcomTileProperties; }; + const ExtensionLib::Ext_VK_QCOM_tile_memory_heap* GetExtension() const { return m_ExtQcomTileMemoryHeap; }; template<> - const ExtensionHelper::Vulkan_SubgroupPropertiesHook* GetExtension() const { return m_SubgroupProperties; }; + const ExtensionLib::Ext_VK_KHR_get_memory_requirements2* GetExtension() const { return m_ExtKhrGetMemoryRequirements; }; template<> - const ExtensionHelper::Ext_VK_KHR_mesh_shader* GetExtension() const { return m_ExtMeshShader; }; + const ExtensionLib::Vulkan_SubgroupPropertiesHook* GetExtension() const { return m_SubgroupProperties; }; + template<> + const ExtensionLib::Ext_VK_KHR_mesh_shader* GetExtension() const { return m_ExtMeshShader; }; + template<> + const ExtensionLib::Ext_VK_KHR_dynamic_rendering* GetExtension() const { return m_ExtDynamicRendering; }; template void AddExtensionHooks( ExtensionHook* t, TT... tt ) { @@ -785,7 +1004,9 @@ class Vulkan : public GraphicsApiBase HINSTANCE m_hInstance; HWND m_hWnd; #elif defined(OS_ANDROID) - ANativeWindow* m_pAndroidWindow; + ANativeWindow* m_pAndroidWindow = nullptr; +#elif defined(OS_LINUX) + GLFWwindow* m_pGlfwWindow = nullptr; #endif // defined(OS_WINDOWS) /// App driven configuration overrides (setup by app before Vulkan is initialized in order to potentially override default Vulkan configuration settings) @@ -794,15 +1015,6 @@ class Vulkan : public GraphicsApiBase /// Current frame index (internal - always in order) uint32_t m_SwapchainCurrentIndx; - // Debug/Validation Layers - std::vector m_InstanceLayerProps; - //std::vector m_InstanceExtensionProps; - - /// Layers we want to use (sorted alphabetically) - std::vector m_InstanceLayerNames; - /// Extensions we want to use (sorted alphabetically) - //std::vector m_InstanceExtensionNames; - // Vulkan Objects VkInstance m_VulkanInstance; uint32_t m_VulkanApiVersion; @@ -847,34 +1059,33 @@ class Vulkan : public GraphicsApiBase bool m_LayerKhronosValidationAvailable; bool m_ExtGlobalPriorityAvailable; - bool m_ExtSwapchainColorspaceAvailable; - bool m_ExtSurfaceCapabilities2Available; bool m_ExtRenderPassTransformAvailable; bool m_ExtRenderPassTransformEnabled; ///< Set when the device is using the renderpasstransform extension (ie display pre-rotation is happening and m_ExtRenderPassTransformAvailable) bool m_ExtRenderPassTransformLegacy; ///< Use the 'legacy' interface to VK_QCOM_render_pass_transform (older drivers) bool m_ExtRenderPassShaderResolveAvailable; - bool m_ExtDebugUtilsAvailable; bool m_ExtPortability; ///< Vulkan Portability extension present (and so must be enabled). Limited subset of Vulkan functionality (for backwards compatibility with other graphics api) - uint32_t m_ExtValidationFeaturesVersion; ///< Version of the VK_EXT_validation_features extension (0 validation is disabled and/or extension not loaded) // Extensions loaded by this class const VulkanExtension* m_ExtValidationFeatures = nullptr; - const ExtensionHelper::Ext_VK_KHR_surface* m_ExtKhrSurface = nullptr; - const ExtensionHelper::Ext_VK_KHR_get_physical_device_properties2*m_ExtKhrGetPhysicalDeviceProperties2 = nullptr; - const ExtensionHelper::Ext_VK_KHR_get_surface_capabilities2*m_ExtSurfaceCapabilities2 = nullptr; - const ExtensionHelper::Ext_VK_KHR_draw_indirect_count* m_ExtKhrDrawIndirectCount = nullptr; - const ExtensionHelper::Ext_VK_EXT_debug_utils* m_ExtDebugUtils = nullptr; - const ExtensionHelper::Ext_VK_EXT_debug_marker* m_ExtDebugMarker = nullptr; - const ExtensionHelper::Ext_VK_EXT_hdr_metadata* m_ExtHdrMetadata = nullptr; - const ExtensionHelper::Ext_VK_KHR_fragment_shading_rate* m_ExtFragmentShadingRate = nullptr; - const ExtensionHelper::Ext_VK_KHR_create_renderpass2* m_ExtRenderPass2 = nullptr; - const ExtensionHelper::Ext_VK_ARM_tensors* m_ExtArmTensors = nullptr; - const ExtensionHelper::Ext_VK_ARM_data_graph* m_ExtArmDataGraph = nullptr; - const ExtensionHelper::Ext_VK_KHR_synchronization2* m_ExtKhrSynchronization2 = nullptr; - const ExtensionHelper::Ext_VK_QCOM_tile_properties* m_ExtQcomTileProperties = nullptr; - const ExtensionHelper::Ext_VK_KHR_mesh_shader* m_ExtMeshShader = nullptr; - const ExtensionHelper::Vulkan_SubgroupPropertiesHook* m_SubgroupProperties = nullptr; - const ExtensionHelper::Vulkan_StorageFeaturesHook* m_StorageFeatures = nullptr; + const ExtensionLib::Ext_VK_KHR_surface* m_ExtKhrSurface = nullptr; + const ExtensionLib::Ext_VK_KHR_get_physical_device_properties2*m_ExtKhrGetPhysicalDeviceProperties2 = nullptr; + const ExtensionLib::Ext_VK_KHR_get_surface_capabilities2*m_ExtSurfaceCapabilities2 = nullptr; + const ExtensionLib::Ext_VK_KHR_draw_indirect_count* m_ExtKhrDrawIndirectCount = nullptr; + const ExtensionLib::Ext_VK_KHR_swapchain* m_ExtSwapchain = nullptr; + const ExtensionLib::Ext_VK_EXT_debug_utils* m_ExtDebugUtils = nullptr; + const ExtensionLib::Ext_VK_EXT_debug_marker* m_ExtDebugMarker = nullptr; + const ExtensionLib::Ext_VK_EXT_hdr_metadata* m_ExtHdrMetadata = nullptr; + const ExtensionLib::Ext_VK_KHR_fragment_shading_rate* m_ExtFragmentShadingRate = nullptr; + const ExtensionLib::Ext_VK_KHR_create_renderpass2* m_ExtRenderPass2 = nullptr; + const ExtensionLib::Ext_VK_KHR_synchronization2* m_ExtKhrSynchronization2 = nullptr; + const ExtensionLib::Ext_VK_QCOM_tile_properties* m_ExtQcomTileProperties = nullptr; + const ExtensionLib::Ext_VK_QCOM_tile_shading* m_ExtQcomTileShading = nullptr; + const ExtensionLib::Ext_VK_QCOM_tile_memory_heap* m_ExtQcomTileMemoryHeap = nullptr; + const ExtensionLib::Ext_VK_KHR_get_memory_requirements2* m_ExtKhrGetMemoryRequirements = nullptr; + const ExtensionLib::Ext_VK_KHR_mesh_shader* m_ExtMeshShader = nullptr; + const ExtensionLib::Ext_VK_KHR_dynamic_rendering* m_ExtDynamicRendering = nullptr; + const ExtensionLib::Vulkan_SubgroupPropertiesHook* m_SubgroupProperties = nullptr; + const ExtensionLib::Vulkan_StorageFeaturesHook* m_StorageFeatures = nullptr; #if defined (OS_ANDROID) bool m_ExtExternMemoryCapsAvailable; diff --git a/framework/code/vulkan/vulkanDebugCallback.cpp b/framework/code/vulkan/vulkanDebugCallback.cpp index c6d3e36..152363c 100644 --- a/framework/code/vulkan/vulkanDebugCallback.cpp +++ b/framework/code/vulkan/vulkanDebugCallback.cpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #include "vulkanDebugCallback.hpp" #include "system/os_common.h" @@ -183,7 +183,7 @@ VkBool32 VulkanDebugCallback::DebugCallback(VkDebugReportFlagsEXT Flags, VkDebug { LOGI("%s", szBuffer); } - LOGE("********** Validation Message - End **********"); + LOGE("********** Validation Message - End **********"); // Return "True" to cause layer to bail out and command is NOT sent to Vulkan // Return "False" to send it to the Vulkan layer (behave like final product) diff --git a/framework/code/vulkan/vulkanDebugCallback.hpp b/framework/code/vulkan/vulkanDebugCallback.hpp index 9f99fa0..8f4c221 100644 --- a/framework/code/vulkan/vulkanDebugCallback.hpp +++ b/framework/code/vulkan/vulkanDebugCallback.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include "vulkan.hpp" diff --git a/framework/code/vulkan/vulkan_support.cpp b/framework/code/vulkan/vulkan_support.cpp index f619d72..a2662b6 100644 --- a/framework/code/vulkan/vulkan_support.cpp +++ b/framework/code/vulkan/vulkan_support.cpp @@ -435,65 +435,6 @@ bool DumpImagePixelData( #endif // OS_WINDOWS } -#if 0 -//============================================================================= -// Wrap_VkImage -//============================================================================= - -//----------------------------------------------------------------------------- -Wrap_VkImage::Wrap_VkImage() -//----------------------------------------------------------------------------- -{ -} - -//----------------------------------------------------------------------------- -Wrap_VkImage::~Wrap_VkImage() -//----------------------------------------------------------------------------- -{ - Release(); -} - -//----------------------------------------------------------------------------- -bool Wrap_VkImage::Initialize(Vulkan* pVulkan, const VkImageCreateInfo& ImageInfo, MemoryUsage Usage, const char* pName) -//----------------------------------------------------------------------------- -{ - // If we have a name, save it - if (pName != NULL) - { - m_Name = pName; - } - - // Need Vulkan objects to release ourselves - m_pVulkan = pVulkan; - m_ImageInfo = ImageInfo; - m_Usage = Usage; - - auto& memoryManager = pVulkan->GetMemoryManager(); - m_VmaImage = memoryManager.CreateImage(ImageInfo, Usage); - - if( m_VmaImage ) - { - pVulkan->SetDebugObjectName( m_VmaImage.GetVkBuffer(), pName ); - } - - return !!m_VmaImage; -} - -//----------------------------------------------------------------------------- -void Wrap_VkImage::Release() -//----------------------------------------------------------------------------- -{ - if (m_pVulkan) - { - auto& memoryManager = m_pVulkan->GetMemoryManager(); - memoryManager.Destroy(std::move(m_VmaImage)); - } - m_pVulkan = nullptr; - m_ImageInfo = {}; - m_Name.clear(); -} -#endif - //============================================================================= // Wrap_VkSemaphore diff --git a/framework/code/vulkan/vulkan_support.hpp b/framework/code/vulkan/vulkan_support.hpp index 93ff224..9fa46a8 100644 --- a/framework/code/vulkan/vulkan_support.hpp +++ b/framework/code/vulkan/vulkan_support.hpp @@ -24,7 +24,6 @@ // Forward declarations class TimerPoolBase; -class CRenderTarget; typedef uint64_t VkFlags64; typedef VkFlags64 VkPipelineStageFlags2; typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; @@ -35,8 +34,10 @@ typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; struct ShaderInfo { - ShaderModuleT VertShaderModule; - ShaderModuleT FragShaderModule; + ShaderModule VertShaderModule; + ShaderModule FragShaderModule; + ShaderModule TaskShaderModule; + ShaderModule MeshShaderModule; }; /// Helper enum for setting up a VkPipelineColorBlendAttachmentState @@ -73,36 +74,6 @@ bool DumpImagePixelData( uint32_t arrayLayer, const tDumpImageOutputFn& outputFunction); -#if 0 -//============================================================================= -// Wrap_VkImage -//============================================================================= -class Wrap_VkImage -{ - // Functions - Wrap_VkImage(const Wrap_VkImage&) = delete; - Wrap_VkImage& operator=(const Wrap_VkImage&) = delete; -public: - Wrap_VkImage(); - ~Wrap_VkImage(); - - bool Initialize(Vulkan* pVulkan, const VkImageCreateInfo& ImageInfo, MemoryUsage TypeFlag, const char* pName = nullptr); - void Release(); - - const auto& GetImageInfo() const { return m_ImageInfo; } - - // Attributes -public: - std::string m_Name; - MemoryAllocatedBuffer m_VmaImage; - -private: - Vulkan * m_pVulkan = nullptr; - MemoryUsage m_Usage { MemoryUsage::Unknown }; - VkImageCreateInfo m_ImageInfo{}; -}; -#endif - /// /// Wrapper around VkSemaphore. /// Simplifies creation, use and destruction of VkSemaphore. diff --git a/framework/code/vulkanRT/accelerationInstanceBufferObject.cpp b/framework/code/vulkanRT/accelerationInstanceBufferObject.cpp index 88bf02c..54891ce 100644 --- a/framework/code/vulkanRT/accelerationInstanceBufferObject.cpp +++ b/framework/code/vulkanRT/accelerationInstanceBufferObject.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -20,7 +20,7 @@ AccelerationInstanceBufferObject& AccelerationInstanceBufferObject::operator=(Ac { if (this != &other) { - BufferT::operator=(std::move(other)); + Buffer::operator=(std::move(other)); mNumInstances = other.mNumInstances; other.mNumInstances = 0; } @@ -33,7 +33,7 @@ bool AccelerationInstanceBufferObject::Initialize(MemoryManager* pManager, size_ { mNumInstances = numInstances; - return BufferT::Initialize(pManager, (VkDeviceSize)(sizeof(VkAccelerationStructureInstanceKHR) * numInstances), BufferUsageFlags::AccelerationStructureBuild | BufferUsageFlags::ShaderDeviceAddress, MemoryUsage::CpuToGpu); + return Buffer::Initialize(pManager, (VkDeviceSize)(sizeof(VkAccelerationStructureInstanceKHR) * numInstances), BufferUsageFlags::AccelerationStructureBuild | BufferUsageFlags::ShaderDeviceAddress, MemoryUsage::CpuToGpu); } /////////////////////////////////////////////////////////////////////////////// @@ -41,7 +41,7 @@ bool AccelerationInstanceBufferObject::Initialize(MemoryManager* pManager, size_ void AccelerationInstanceBufferObject::Destroy() { mNumInstances = 0; - BufferT::Destroy(); + Buffer::Destroy(); } /////////////////////////////////////////////////////////////////////////////// diff --git a/framework/code/vulkanRT/accelerationInstanceBufferObject.hpp b/framework/code/vulkanRT/accelerationInstanceBufferObject.hpp index 5e6d363..fe09743 100644 --- a/framework/code/vulkanRT/accelerationInstanceBufferObject.hpp +++ b/framework/code/vulkanRT/accelerationInstanceBufferObject.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -14,7 +14,7 @@ // forward declarations // Class -class AccelerationInstanceBufferObject : public BufferT +class AccelerationInstanceBufferObject : public Buffer { AccelerationInstanceBufferObject& operator=(const AccelerationInstanceBufferObject&) = delete; AccelerationInstanceBufferObject(const AccelerationInstanceBufferObject&) = delete; diff --git a/framework/code/vulkanRT/accelerationStructure.cpp b/framework/code/vulkanRT/accelerationStructure.cpp index c13a415..61344b0 100644 --- a/framework/code/vulkanRT/accelerationStructure.cpp +++ b/framework/code/vulkanRT/accelerationStructure.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -9,7 +9,7 @@ #include "vulkanRT.hpp" -bool AccelerationStructure::Create(Vulkan& vulkan, VulkanRT& vulkanRT, size_t accelerationStructureSize, VkAccelerationStructureTypeKHR type) +bool AccelerationStructure::Create(Vulkan& vulkan, VulkanRT& vulkanRT, size_t accelerationStructureSize, VkAccelerationStructureTypeKHR type) { auto& memoryManager = vulkan.GetMemoryManager(); @@ -37,7 +37,7 @@ bool AccelerationStructure::Create(Vulkan& vulkan, VulkanRT& vulkanRT, size_t ac return true; } -void AccelerationStructure::CloneCmd(VulkanRT& vulkanRT, VkCommandBuffer cmdBuffer, const AccelerationStructure& src) const +void AccelerationStructure::CloneCmd(VulkanRT& vulkanRT, VkCommandBuffer cmdBuffer, const AccelerationStructure& src) const { assert(src.m_accelerationStructure != VK_NULL_HANDLE); assert(m_accelerationStructure != VK_NULL_HANDLE); @@ -49,7 +49,7 @@ void AccelerationStructure::CloneCmd(VulkanRT& vulkanRT, VkCommandBuffer cmdBuff vulkanRT.vkCmdCopyAccelerationStructureKHR(cmdBuffer, ©Info); } -void AccelerationStructure::Destroy(Vulkan& vulkan, VulkanRT& vulkanRT) +void AccelerationStructure::Destroy(Vulkan& vulkan, VulkanRT& vulkanRT) { vulkanRT.vkDestroyAccelerationStructureKHR(m_accelerationStructure); m_accelerationStructure = VK_NULL_HANDLE; diff --git a/framework/code/vulkanRT/accelerationStructure.hpp b/framework/code/vulkanRT/accelerationStructure.hpp index 87a9c83..7965e96 100644 --- a/framework/code/vulkanRT/accelerationStructure.hpp +++ b/framework/code/vulkanRT/accelerationStructure.hpp @@ -1,26 +1,28 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #pragma once #include "vulkan/vulkan.hpp" #include "memory/memoryMapped.hpp" +#include "rayTracing/accelerationStructure.hpp" class VulkanRT; /// @brief Base class for anything using a Ray Tracing Acceleration structure. /// Contains the Acceleration structure and it's memory buffer -class AccelerationStructure +template<> +class AccelerationStructure final : public AccelerationStructureBase { - AccelerationStructure& operator=(const AccelerationStructure&) = delete; - AccelerationStructure(const AccelerationStructure&) = delete; + AccelerationStructure& operator=(const AccelerationStructure&) = delete; + AccelerationStructure(const AccelerationStructure&) = delete; public: AccelerationStructure() : m_accelerationStructure(VK_NULL_HANDLE) {} - AccelerationStructure(AccelerationStructure&& other) noexcept + AccelerationStructure( AccelerationStructure&& other) noexcept : m_accelerationStructureBuffer(std::move(other.m_accelerationStructureBuffer)) { m_accelerationStructure = other.m_accelerationStructure; @@ -38,15 +40,15 @@ class AccelerationStructure /// Add the GPU commands to clone the @src accleleration structure into this one. /// Requires/expects that the acceleration structure is Created and is sized appropriately. - void CloneCmd(VulkanRT& vulkanRT, VkCommandBuffer cmdBuffer, const AccelerationStructure& src) const; + void CloneCmd(VulkanRT& vulkanRT, VkCommandBuffer cmdBuffer, const AccelerationStructure& src) const; /// @return Vulkan Acceletation Structure owned by this class - VkAccelerationStructureKHR GetVkAccelerationStructure()const { return m_accelerationStructure; } + const VkAccelerationStructureKHR& GetVkAccelerationStructure()const { return m_accelerationStructure; } private: - VkAccelerationStructureKHR m_accelerationStructure; - MemoryAllocatedBuffer m_accelerationStructureBuffer; -}; + VkAccelerationStructureKHR m_accelerationStructure; + MemoryAllocatedBuffer m_accelerationStructureBuffer; +}; class AccelerationStructureScratch @@ -69,8 +71,8 @@ class AccelerationStructureScratch uint64_t GetDeviceAddress() const { return m_scratchBufferDeviceAddress; } private: - MemoryAllocatedBuffer m_scratchBuffer; - uint64_t m_scratchBufferDeviceAddress; + MemoryAllocatedBuffer m_scratchBuffer; + uint64_t m_scratchBufferDeviceAddress; }; @@ -117,7 +119,7 @@ class AccelerationStructureUpdateable virtual void Destroy(Vulkan& vulkan, VulkanRT& vulkanRT); /// @return Vulkan Acceleration Structure for Ray Querying/Tracing - VkAccelerationStructureKHR GetVkAccelerationStructure()const { return m_target.GetVkAccelerationStructure(); } + const AccelerationStructure& GetAccelerationStructure() const { return m_target; } VkDeviceSize GetBuildScratchSize() const { return m_buildScratchSize; } VkDeviceSize GetUpdateScratchSize() const { return m_updateScratchSize; } @@ -137,6 +139,6 @@ class AccelerationStructureUpdateable UpdateMode m_updateMode = UpdateMode::NotUpdatable; size_t m_buildScratchSize = 0; size_t m_updateScratchSize = 0; - AccelerationStructure m_source; - AccelerationStructure m_target; + AccelerationStructure m_source; + AccelerationStructure m_target; }; diff --git a/framework/code/vulkanRT/extensionHelpersRT.hpp b/framework/code/vulkanRT/extensionLibRT.hpp similarity index 82% rename from framework/code/vulkanRT/extensionHelpersRT.hpp rename to framework/code/vulkanRT/extensionLibRT.hpp index 0cdda35..d09a981 100644 --- a/framework/code/vulkanRT/extensionHelpersRT.hpp +++ b/framework/code/vulkanRT/extensionLibRT.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,11 +12,11 @@ class Vulkan; /// -/// Library of Vulkan extension helpers for Ray Tracing +/// Library of Vulkan extensions for Ray Tracing /// -namespace ExtensionHelperRT +namespace ExtensionLibRT { #if VK_KHR_acceleration_structure @@ -60,32 +60,6 @@ namespace ExtensionHelperRT #endif // VK_KHR_acceleration_structure -#if VK_KHR_buffer_device_address - - struct Ext_VK_KHR_buffer_device_address : public VulkanDeviceFeaturesExtensionHelper - { - static constexpr auto Name = VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME; - Ext_VK_KHR_buffer_device_address( VulkanExtensionStatus status = VulkanExtensionStatus::eRequired ) - : VulkanDeviceFeaturesExtensionHelper(Name, status) - {} - void PrintFeatures() const override - { - LOGI("FeaturesBufferDeviceAddress: "); - LOGI(" bufferDeviceAddress: %s", this->AvailableFeatures.bufferDeviceAddress ? "True" : "False"); - LOGI(" bufferDeviceAddressCaptureReplay: %s", this->AvailableFeatures.bufferDeviceAddressCaptureReplay ? "True" : "False"); - LOGI(" bufferDeviceAddressMultiDevice: %s", this->AvailableFeatures.bufferDeviceAddressMultiDevice ? "True" : "False"); - } - void PopulateRequestedFeatures() override - { - // Enable just the 'bufferDeviceAddress' feature - RequestedFeatures.bufferDeviceAddress = AvailableFeatures.bufferDeviceAddress; - } - }; - -#endif // VK_KHR_buffer_device_address - - - #if VK_KHR_ray_tracing_pipeline struct Ext_VK_KHR_ray_tracing_pipeline : public VulkanDeviceFeaturePropertiesExtensionHelper diff --git a/framework/code/vulkanRT/meshObjectRT.cpp b/framework/code/vulkanRT/meshObjectRT.cpp index 12cb9be..82e2338 100644 --- a/framework/code/vulkanRT/meshObjectRT.cpp +++ b/framework/code/vulkanRT/meshObjectRT.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -39,12 +39,12 @@ MeshObjectRT::~MeshObjectRT() {} -bool MeshObjectRT::Create( Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectIntermediate& meshObject, MeshObjectRT::UpdateMode updateMode ) +bool MeshObjectRT::Create( Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectIntermediate& meshObject, bool allowDataAccess, MeshObjectRT::UpdateMode updateMode) { auto& memoryManager = vulkan.GetMemoryManager(); // Convert the 'intermediate' mesh vertex data in to 'vertexFormat' and then copy in to a VertexBuffer (device memory) - BufferT deviceVertexBuffer = CreateRtVertexBuffer(memoryManager, meshObject); + auto deviceVertexBuffer = CreateRtVertexBuffer(memoryManager, meshObject); if (deviceVertexBuffer.GetVkBuffer() == VK_NULL_HANDLE) { return false; @@ -70,8 +70,8 @@ bool MeshObjectRT::Create( Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectI // // If meshObject has an index buffer then copy the data in to a Vulkan buffer // - std::optional deviceIndexBuffer; - if (!MeshHelper::CreateIndexBuffer(memoryManager, meshObject, deviceIndexBuffer, BufferUsageFlags::AccelerationStructureBuild|BufferUsageFlags::ShaderDeviceAddress)) + std::optional> deviceIndexBuffer; + if (!MeshHelper::CreateIndexBuffer(memoryManager, meshObject, deviceIndexBuffer, BufferUsageFlags::AccelerationStructureBuild|BufferUsageFlags::ShaderDeviceAddress)) { return false; } @@ -103,6 +103,9 @@ bool MeshObjectRT::Create( Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectI if (updateMode != UpdateMode::NotUpdatable) asFlags |= VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR; + if (allowDataAccess) + asFlags |= VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR ; + std::array asMaxPrimitiveCounts = { primitiveCount }; // Create the Acceleration structue and its backing buffer. Potentially creates a second AS too if the VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR flag is set and updateMode PingPong (two buffers needed for updates). @@ -139,7 +142,7 @@ bool MeshObjectRT::Create( Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectI // Acceleration structure is ready. Grab its device address (for the top level structure to reference) assert(!m_DeviceAddress); - m_DeviceAddress = vulkanRT.vkGetAccelerationStructureDeviceAddressKHR( GetVkAccelerationStructure() ); + m_DeviceAddress = vulkanRT.vkGetAccelerationStructureDeviceAddressKHR( GetAccelerationStructure().GetVkAccelerationStructure() ); // Cleanup asBuildScratch.Destroy(vulkan); @@ -155,11 +158,11 @@ void MeshObjectRT::Destroy(Vulkan& vulkan, VulkanRT& vulkanRT) } -BufferT MeshObjectRT::CreateRtVertexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, BufferUsageFlags usageFlags) +Buffer MeshObjectRT::CreateRtVertexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, BufferUsageFlags usageFlags) { - BufferT deviceVertexBuffer; + Buffer deviceVertexBuffer; { - const std::vector vertexData = MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(meshObject.m_VertexBuffer, accelerationStructureVertexFormat); + const std::vector vertexData = MeshObjectIntermediate::CopyFatVertexToFormattedBuffer(meshObject.m_VertexBuffer, {}, accelerationStructureVertexFormat); if (!deviceVertexBuffer.Initialize(&memoryManager, vertexData.size() * sizeof(uint32_t), usageFlags, vertexData.data())) { return {}; diff --git a/framework/code/vulkanRT/meshObjectRT.hpp b/framework/code/vulkanRT/meshObjectRT.hpp index 25c791a..3a89f8b 100644 --- a/framework/code/vulkanRT/meshObjectRT.hpp +++ b/framework/code/vulkanRT/meshObjectRT.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -27,13 +27,13 @@ class MeshObjectRT final : public AccelerationStructureUpdateable MeshObjectRT(MeshObjectRT&& other); ~MeshObjectRT(); - bool Create(Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectIntermediate& meshObject, UpdateMode updateMode = UpdateMode::NotUpdatable); + bool Create(Vulkan& vulkan, VulkanRT& vulkanRT, const MeshObjectIntermediate& meshObject, bool allowDataAccess = false, UpdateMode updateMode = UpdateMode::NotUpdatable); void Destroy(Vulkan& vulkan, VulkanRT& vulkanRT) override; uint64_t GetVkDeviceAddress() const { return m_DeviceAddress; } std::pair GetAABB() const { return { m_AABBMin, m_AABBMax }; }; - static BufferT CreateRtVertexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, BufferUsageFlags usageFlags = BufferUsageFlags::AccelerationStructureBuild|BufferUsageFlags::ShaderDeviceAddress); + static Buffer CreateRtVertexBuffer(MemoryManager& memoryManager, const MeshObjectIntermediate& meshObject, BufferUsageFlags usageFlags = BufferUsageFlags::AccelerationStructureBuild|BufferUsageFlags::ShaderDeviceAddress); static const VertexFormat accelerationStructureVertexFormat; static const VkFormat accelerationStructureVkVertexFormat; diff --git a/framework/code/vulkanRT/meshUpdateRT.cpp b/framework/code/vulkanRT/meshUpdateRT.cpp index 2aeecc9..6875884 100644 --- a/framework/code/vulkanRT/meshUpdateRT.cpp +++ b/framework/code/vulkanRT/meshUpdateRT.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/framework/code/vulkanRT/meshUpdateRT.hpp b/framework/code/vulkanRT/meshUpdateRT.hpp index 1508f4c..ee633e9 100644 --- a/framework/code/vulkanRT/meshUpdateRT.hpp +++ b/framework/code/vulkanRT/meshUpdateRT.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -47,11 +47,11 @@ class MeshUpdateRT protected: // Variables needed for Updates - BufferT m_VertexBuffer; - std::optional m_IndexBuffer; // optional, depending on meshObject having indices - AccelerationStructureScratch m_UpdateScratch; - VkDeviceAddress m_VertexBufferDeviceAddress = {}; - VkDeviceAddress m_IndexBufferDeviceAddress = {}; - uint32_t m_PrimitiveCount = 0; - uint32_t m_NumVertices = 0; + Buffer m_VertexBuffer; + std::optional> m_IndexBuffer; // optional, depending on meshObject having indices + AccelerationStructureScratch m_UpdateScratch; + VkDeviceAddress m_VertexBufferDeviceAddress = {}; + VkDeviceAddress m_IndexBufferDeviceAddress = {}; + uint32_t m_PrimitiveCount = 0; + uint32_t m_NumVertices = 0; }; diff --git a/framework/code/vulkanRT/sceneRT.cpp b/framework/code/vulkanRT/sceneRT.cpp index fc07b04..99f68f5 100644 --- a/framework/code/vulkanRT/sceneRT.cpp +++ b/framework/code/vulkanRT/sceneRT.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -11,6 +11,7 @@ #include #include #include +#include #include "system/os_common.h" SceneRTBase::SceneRTBase() @@ -73,7 +74,7 @@ void SceneRT::RemoveAllInstances() m_pendingInstancesUpdate = !m_instances.empty(); } -bool SceneRT::CreateAccelerationStructure( UpdateMode updateMode, size_t minSize ) +bool SceneRT::CreateAccelerationStructure( UpdateMode updateMode, size_t minSize) { auto& memoryManager = m_vulkan.GetMemoryManager(); @@ -92,8 +93,7 @@ bool SceneRT::CreateAccelerationStructure( UpdateMode updateMode, size_t minSize m_accelerationBuildFlags = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR; if (updateMode != UpdateMode::NotUpdatable) - m_accelerationBuildFlags |= VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR; - + m_accelerationBuildFlags |= VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR; { // Populate the instance buffer data diff --git a/framework/code/vulkanRT/sceneRT.hpp b/framework/code/vulkanRT/sceneRT.hpp index e519899..d5e0eee 100644 --- a/framework/code/vulkanRT/sceneRT.hpp +++ b/framework/code/vulkanRT/sceneRT.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -76,7 +76,7 @@ class SceneRT : public SceneRTBase, public AccelerationStructureUpdateable typedef std::unordered_map tMeshObjectUnorderedMap; // Build the initial acceleration (and scratch) buffer. - bool CreateAccelerationStructure( UpdateMode updateMode, size_t minSize ); + bool CreateAccelerationStructure( UpdateMode updateMode, size_t minSize); protected: Vulkan& m_vulkan; @@ -146,7 +146,7 @@ class SceneRTCulled : public SceneRT void Update(const SceneRTCullable& scene/*scene we will generate a RT Acceleration Structure from*/, const T_TEST& cullTest); // Build the initial acceleration (and scratch) buffer. (makes base class function public) - bool CreateAccelerationStructure(UpdateMode updateMode, size_t minSize) { return SceneRT::CreateAccelerationStructure( updateMode, minSize ); } + bool CreateAccelerationStructure(UpdateMode updateMode, size_t minSize) { return SceneRT::CreateAccelerationStructure( updateMode, minSize); } protected: void PostQueryUpdate(const SceneRTCullable& scene, bool regenerateInstances); diff --git a/framework/code/vulkanRT/traceable.cpp b/framework/code/vulkanRT/traceable.cpp index a73ecc9..cec55d7 100644 --- a/framework/code/vulkanRT/traceable.cpp +++ b/framework/code/vulkanRT/traceable.cpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -42,7 +42,7 @@ TraceablePass::~TraceablePass() assert(mPipeline == VK_NULL_HANDLE); } -Traceable::Traceable(VulkanRT& vulkanRt, Material&& material) +Traceable::Traceable(VulkanRT& vulkanRt, Material&& material) : mVulkanRt(vulkanRt) , mMaterial(std::move(material)) { @@ -137,7 +137,7 @@ bool Traceable::Init() for (uint32_t materialPassIdx = 0; materialPassIdx < (uint32_t) materialPasses.size(); ++materialPassIdx) { const auto& materialPass = materialPasses[materialPassIdx]; - const auto& shaderPass = materialPass.mShaderPass; + const auto& shaderPass = materialPass.GetShaderPass(); assert(std::holds_alternative>(shaderPass.m_shaders.m_modules)); // Usually pipeline layout will be stored with the shader but if the descriptor set layout is 'dynamic' (and stored in the materialPass) the pipeline layout will also be in the materialPass. @@ -246,8 +246,8 @@ bool Traceable::Init() VK_ACCESS_SHADER_READ_BIT, //dstAccessMask VK_QUEUE_FAMILY_IGNORED, //srcQueueFamilyIndex; VK_QUEUE_FAMILY_IGNORED, //dstQueueFamilyIndex; - buffer.buffer, //buffer; - buffer.offset, //offset + buffer.buffer(), //buffer; + buffer.offset(), //offset VK_WHOLE_SIZE //size }); }); @@ -382,7 +382,7 @@ void Traceable::SetRayThreadCount(uint32_t passIdx, const std::arraym_VkCommandBuffer, traceablePass, (whichBuffer + startDescriptorSetIdx) % (uint32_t)traceablePass.GetVkDescriptorSets().size()); + DispatchPass(*cmdBuffers, traceablePass, (whichBuffer + startDescriptorSetIdx) % (uint32_t)traceablePass.GetVkDescriptorSets().size()); } ++cmdBuffers; } diff --git a/framework/code/vulkanRT/traceable.hpp b/framework/code/vulkanRT/traceable.hpp index 4080fe3..77fa8c7 100644 --- a/framework/code/vulkanRT/traceable.hpp +++ b/framework/code/vulkanRT/traceable.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,15 +12,15 @@ #include #include #include -#include "vulkan/vulkan.h" +#include #include "memory/vulkan/bufferObject.hpp" #include "memory/vulkan/uniform.hpp" -#include "material/material.hpp" +#include "material/vulkan/material.hpp" // Forward Declarations class VulkanRT; -template class CommandListT; -using Wrap_VkCommandBuffer = CommandListT; +template class CommandList; +using CommandListVulkan = CommandList; /// Encapsulates a 'traceable' pass, contains the materialpass, pipeline, etc). @@ -31,7 +31,7 @@ class TraceablePass TraceablePass(const TraceablePass&) = delete; TraceablePass& operator=(const TraceablePass&) = delete; public: - TraceablePass(const MaterialPass& materialPass, VkPipeline pipeline, VkPipelineLayout pipelineLayout, Uniform shaderBindingTable, std::array shaderBindingTableAddresses + TraceablePass(const MaterialPass& materialPass, VkPipeline pipeline, VkPipelineLayout pipelineLayout, Uniform shaderBindingTable, std::array shaderBindingTableAddresses //, std::vector imageMemoryBarriers, std::vector bufferMemoryBarriers, bool needsExecutionBarrier ) : mMaterialPass(materialPass) @@ -55,12 +55,12 @@ class TraceablePass void SetRayThreadCount(std::array count) { mRayThreadCount = count; } const auto& GetRayThreadCount() const { return mRayThreadCount; } - const MaterialPass& mMaterialPass; + const MaterialPass& mMaterialPass; VkPipeline mPipeline = VK_NULL_HANDLE; // Owned by us - VkPipelineLayout mPipelineLayout; // Owned by ShaderPass or MaterialPass + VkPipelineLayout mPipelineLayout; // Owned by ShaderPass or MaterialPassBase - Uniform mShaderBindingTable; + UniformVulkan mShaderBindingTable; std::array< VkStridedDeviceAddressRegionKHR, 4> mShaderBindingTableAddresses{}; @@ -72,14 +72,14 @@ class TraceablePass }; -/// Encapsulates a 'traceable' object, contains the Material, traceable passes. +/// Encapsulates a 'traceable' object, contains the MaterialBase, traceable passes. /// Similar to a Drawable but for ray tracing class Traceable { Traceable(const Traceable&) = delete; Traceable& operator=(const Traceable&) = delete; public: - Traceable(VulkanRT& vulkanRt, Material&&); + Traceable(VulkanRT& vulkanRt, Material&&); ~Traceable(); bool Init(); @@ -99,8 +99,8 @@ class Traceable /// @param cmdBuffers pointer to array of commandbuffers we want to fill, assumed to be sized [numRenderPasses] /// @param numRenderPasses number of cmdBuffers to fill /// @param startDescriptorSetIdx index of the first descriptor set to add - void Dispatch(Wrap_VkCommandBuffer* cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx) const; - void Dispatch(Wrap_VkCommandBuffer& cmdBuffer) + void Dispatch(CommandListVulkan* cmdBuffers, uint32_t numCmdBuffers, uint32_t startDescriptorSetIdx) const; + void Dispatch(CommandListVulkan& cmdBuffer) { Dispatch(&cmdBuffer, 1, 0); } @@ -110,7 +110,7 @@ class Traceable void DispatchPass(VkCommandBuffer cmdBuffer, const TraceablePass& TraceablePass, uint32_t bufferIdx) const; protected: - Material mMaterial; + Material mMaterial; VulkanRT& mVulkanRt; std::vector mPasses; //std::vector mImageInputMemoryBarriers; // barriers for ENTRY to this computable. Could be stored in material if non compute shaders wanted this barrier information, non compute should use the pass depenancies tho diff --git a/framework/code/vulkanRT/vulkanRT.cpp b/framework/code/vulkanRT/vulkanRT.cpp index b2c9d9e..6d9165e 100644 --- a/framework/code/vulkanRT/vulkanRT.cpp +++ b/framework/code/vulkanRT/vulkanRT.cpp @@ -1,15 +1,16 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ #include "vulkanRT.hpp" -#include "extensionHelpersRT.hpp" +#include "extensionLibRT.hpp" #include #include -#include "vulkan/extensionHelpers.hpp" +#include +#include "vulkan/extensionLib.hpp" #include "memory/vulkan/uniform.hpp" #include "vulkan/vulkan_support.hpp" @@ -65,16 +66,21 @@ void VulkanRT::RegisterRequiredVulkanLayerExtensions( Vulkan::AppConfiguration& { assert( m_pExtKhrBufferDeviceAddress == nullptr ); assert( m_pExtKhrRayTracingPipeline == nullptr ); - m_pExtKhrBufferDeviceAddress = appConfig.RequiredExtension(); - appConfig.RequiredExtension(); - appConfig.RequiredExtension(); + m_pExtKhrBufferDeviceAddress = appConfig.RequiredExtension(); + appConfig.RequiredExtension(); + appConfig.RequiredExtension(); + appConfig.RequiredExtension(); appConfig.RequiredExtension( "VK_KHR_deferred_host_operations" ); appConfig.RequiredExtension( "VK_KHR_shader_float_controls" ); appConfig.RequiredExtension( "VK_KHR_spirv_1_4" ); - appConfig.RequiredExtension(); + appConfig.RequiredExtension(); if (!rayQueryOnly) { - m_pExtKhrRayTracingPipeline = appConfig.OptionalExtension(); +#if ANDROID + m_pExtKhrRayTracingPipeline = appConfig.OptionalExtension(); +#else // ANDROID + m_pExtKhrRayTracingPipeline = appConfig.RequiredExtension(); +#endif // ANDROID } } @@ -233,7 +239,7 @@ bool VulkanRT::CreateRTPipeline(VkPipelineCache pipelineCache, const size_t shaderGroupBaseAlignment = rayTracingPipelineProperties.shaderGroupBaseAlignment; { - // Initialize the shader binding table strides and sizes (without the device address) to help us calulate the GPU Shader Binding Table buffer size. + // Initialize the shader binding table strides and sizes (without the device address) to help us calulate the GPU ShaderBase Binding Table buffer size. // Ray generation shader binding assert(rayGenerationCount == 1); // must have one and only one raygen @@ -324,8 +330,8 @@ bool VulkanRTStub::Init() void VulkanRTStub::RegisterRequiredVulkanLayerExtensions( Vulkan::AppConfiguration& appConfig, bool rayQueryOnly ) { // Register a subset of what actual Ray Tracing or Ray Query needs. - appConfig.RequiredExtension(); - appConfig.RequiredExtension(); + appConfig.RequiredExtension(); + appConfig.RequiredExtension(); appConfig.RequiredExtension( "VK_KHR_shader_float_controls" ); appConfig.RequiredExtension( "VK_KHR_spirv_1_4" ); } diff --git a/framework/code/vulkanRT/vulkanRT.hpp b/framework/code/vulkanRT/vulkanRT.hpp index 4204839..b8f67a4 100644 --- a/framework/code/vulkanRT/vulkanRT.hpp +++ b/framework/code/vulkanRT/vulkanRT.hpp @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ @@ -12,9 +12,12 @@ // forward declarations class Vulkan; template struct Uniform; -namespace ExtensionHelperRT +namespace ExtensionLib { struct Ext_VK_KHR_buffer_device_address; +}; +namespace ExtensionLibRT +{ struct Ext_VK_KHR_ray_tracing_pipeline; }; @@ -76,8 +79,8 @@ class VulkanRT private: Vulkan& m_vulkan; - const ExtensionHelperRT::Ext_VK_KHR_buffer_device_address* m_pExtKhrBufferDeviceAddress = nullptr; ///< owned by Vulkan - const ExtensionHelperRT::Ext_VK_KHR_ray_tracing_pipeline* m_pExtKhrRayTracingPipeline = nullptr; ///< owned by Vulkan + const ExtensionLib::Ext_VK_KHR_buffer_device_address* m_pExtKhrBufferDeviceAddress = nullptr; ///< owned by Vulkan + const ExtensionLibRT::Ext_VK_KHR_ray_tracing_pipeline* m_pExtKhrRayTracingPipeline = nullptr; ///< owned by Vulkan PFN_vkGetAccelerationStructureBuildSizesKHR m_fpGetAccelerationStructureBuildSizesKHR = nullptr; PFN_vkCreateAccelerationStructureKHR m_fpCreateAccelerationStructureKHR = nullptr; diff --git a/framework/external/.gitignore b/framework/external/.gitignore new file mode 100644 index 0000000..1b65954 --- /dev/null +++ b/framework/external/.gitignore @@ -0,0 +1,10 @@ +#ignore exerything in external (expected to be populated by cmake fetchcontent) +* + +# Except build/housekeeping +!CMakeLists.txt +!.gitignore + +# and select externals checked into our repository +!blueNoisei/* + diff --git a/framework/external/KTX-Software b/framework/external/KTX-Software deleted file mode 160000 index 38f4858..0000000 --- a/framework/external/KTX-Software +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 38f485866a0bb6381d725dd69c8836e269917f84 diff --git a/framework/external/Vulkan-Headers b/framework/external/Vulkan-Headers deleted file mode 160000 index a4f8ada..0000000 --- a/framework/external/Vulkan-Headers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a4f8ada9f4f97c45b8c89c57997be9cebaae65d2 diff --git a/framework/external/VulkanMemoryAllocator b/framework/external/VulkanMemoryAllocator deleted file mode 160000 index db4c163..0000000 --- a/framework/external/VulkanMemoryAllocator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db4c1639bf30c51bbddcd813c6521b3473afa1a1 diff --git a/framework/external/eigen b/framework/external/eigen deleted file mode 160000 index 46f8a18..0000000 --- a/framework/external/eigen +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 46f8a18567731925e06a7389a6c611e1dc420ea8 diff --git a/framework/external/glm b/framework/external/glm deleted file mode 160000 index bf71a83..0000000 --- a/framework/external/glm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bf71a834948186f4097caa076cd2663c69a10e1e diff --git a/framework/external/imgui b/framework/external/imgui deleted file mode 160000 index 4f9ba19..0000000 --- a/framework/external/imgui +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4f9ba19e520bea478f5cb654d37ef45e6404bd52 diff --git a/framework/external/implot b/framework/external/implot deleted file mode 160000 index f156599..0000000 --- a/framework/external/implot +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f156599faefe316f7dd20fe6c783bf87c8bb6fd9 diff --git a/framework/external/json b/framework/external/json deleted file mode 160000 index db78ac1..0000000 --- a/framework/external/json +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db78ac1d7716f56fc9f1b030b715f872f93964e4 diff --git a/framework/external/portable-file-dialogs b/framework/external/portable-file-dialogs deleted file mode 160000 index 7f852d8..0000000 --- a/framework/external/portable-file-dialogs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7f852d88a480020d7f91957cbcefe514fc95000c diff --git a/framework/external/tinygltf b/framework/external/tinygltf deleted file mode 160000 index 925b836..0000000 --- a/framework/external/tinygltf +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 925b83627a136d24411067031893dc8ea661444d diff --git a/framework/external/tinyobjloader b/framework/external/tinyobjloader deleted file mode 160000 index e39c173..0000000 --- a/framework/external/tinyobjloader +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e39c1737bc61c8dce28be7932cfe839d408e7838 diff --git a/framework/schema/shaderAliasSchema.json b/framework/schema/shaderAliasSchema.json index bbedb7d..055922c 100644 --- a/framework/schema/shaderAliasSchema.json +++ b/framework/schema/shaderAliasSchema.json @@ -25,6 +25,12 @@ "examples": [ "vulkan1.1", "spirv1.4" ], "minLength": 1 }, + "Stage": { + "type": "string", + "description": "uses specified stage rather than parsing the file extension", + "examples": [ "frag", "vert", "tesc", "tese", "geom", "or", "comp" ], + "minLength": 1 + }, "$schema": { "type": "string" } diff --git a/framework/schema/shaderSchema.json b/framework/schema/shaderSchema.json index 04a71db..b91b400 100644 --- a/framework/schema/shaderSchema.json +++ b/framework/schema/shaderSchema.json @@ -45,6 +45,14 @@ "RayMiss": { "type": "string", "description": "filename of the spir-v ray miss shader" + }, + "Mesh": { + "type": "string", + "description": "filename of the spir-v mesh shader" + }, + "Task": { + "type": "string", + "description": "filename of the spir-v task shader" } }, "minProperties": 1, @@ -57,6 +65,9 @@ "type": "object", "description": "descriptor set", "properties": { + "Name": { + "type": "string" + }, "Buffers": { "type": "array", "items": { @@ -66,7 +77,7 @@ "Type": { "type": "string", "description": "Descriptor set(s) type", - "enum": [ "ImageSampler", "UniformBuffer", "Texture", "Sampler", "StorageBuffer", "ImageStorage", "InputAttachment", "AccelerationStructure" ] + "enum": [ "UniformBuffer", "ImageSampler", "ImageSampled", "Sampler", "StorageBuffer", "ImageStorage", "InputAttachment", "AccelerationStructure", "DescriptorTable", "Unused" ] }, "Stages": { "type": "array", @@ -74,7 +85,7 @@ "items": { "type": "string", "description": "Stage name", - "enum": [ "Vertex", "Fragment", "Compute", "RayGeneration", "RayClosestHit", "RayAnyHit", "RayMiss" ] + "enum": [ "Vertex", "Fragment", "Compute", "RayGeneration", "RayClosestHit", "RayAnyHit", "RayMiss", "Mesh", "Task" ] }, "uniqueItems": true, "minItems": 1, @@ -108,6 +119,43 @@ "minItems": 1 } }, + "RootSamplers": { + "type": "array", + "description": "Immutable Root signature Texture Samplers (DX12 only)", + "items": { + "type": "object", + "description": "root sampler", + "properties": { + "Mode": { + "type": "string", + "enum": [ "Undefined", "Repeat", "MirroredRepeat", "ClampEdge", "ClampBorder", "MirroredClampEdge" ] + }, + "Filter": { + "type": "string", + "enum": [ "Undefined", "Nearest", "Linear" ] + }, + "MipFilter": { + "type": "string", + "enum": [ "Undefined", "Nearest", "Linear" ] + }, + "MipBias": { + "type": "number" + }, + "Anisotropy": { + "type": "integer" + }, + "MinLod": { + "type": "number" + }, + "MaxLod": { + "type": "number" + } + }, + "additionalProperties": false + }, + "additionalProperties": false, + "minItems": 0 + }, "VertexBindings": { "type": "array", "description": "Vertex set binding(s)", @@ -190,38 +238,41 @@ "additionalProperties": false }, "Outputs": { - "type": "array", - "description": "Output(s) description (frag shader)", - "items": { - "type": "object", - "description": "fixedFunction settings", - "properties": { - "BlendEnable": { - "type": "boolean" - }, - "SrcColorBlendFactor": { - "type": "string", - "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] - }, - "DstColorBlendFactor": { - "type": "string", - "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] - }, - "SrcAlphaBlendFactor": { - "type": "string", - "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] - }, - "DstAlphaBlendFactor": { - "type": "string", - "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] - }, - "ColorWriteMask": { - "type": "integer", - "minimum": 0 - } - }, - "additionalProperties": false - } + "type": "array", + "description": "Output(s) description (frag shader)", + "items": { + "type": "object", + "description": "fixedFunction settings", + "properties": { + "BlendEnable": { + "type": "boolean" + }, + "SrcColorBlendFactor": { + "type": "string", + "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] + }, + "DstColorBlendFactor": { + "type": "string", + "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] + }, + "SrcAlphaBlendFactor": { + "type": "string", + "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] + }, + "DstAlphaBlendFactor": { + "type": "string", + "enum": [ "Zero", "One", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha" ] + }, + "ColorWriteMask": { + "type": "integer", + "minimum": 0 + }, + "Name": { + "type": "string" + } + }, + "additionalProperties": false + } }, "WorkGroup": { "type": "object", @@ -237,9 +288,16 @@ "default": 1 }, "description": "local workgroup size (x,y,z)" + }, + "PerTileDispatch": { + "type": "boolean", + "description": "Enable per tile dispatch mode (threads dispatched = Number of pixels in tile x rate setting in shader')" } }, - "required": [ "LocalSize" ], + "oneOf": [ + { "required": [ "LocalSize" ] }, + { "required": [ "PerTileDispatch" ] } + ], "additionalProperties": false }, "RayTracing": { @@ -298,7 +356,7 @@ }, "Type": { "type": "string", - "enum": [ "Int32", "Float", "Vec2", "Vec3", "Vec4", "Int16", "Float16", "F16Vec2", "F16Vec3", "F16Vec4" ], + "enum": [ "Int32", "Float", "Vec2", "Vec3", "Vec4", "Int16", "UInt16", "Float16", "F16Vec2", "F16Vec3", "F16Vec4", "I16Vec2", "I16Vec3", "I16Vec4", "U16Vec2", "U16Vec3", "U16Vec4", "IVec2", "IVec3", "IVec4", "UVec2", "UVec3", "UVec4" ], "description": "Element data type" } }, @@ -332,6 +390,9 @@ }, "minItems": 0, "additionalProperties": false + }, + "TileShader": { + }, "$schema": { "type": "string" diff --git a/project/android/build.bat b/project/android/build.bat index 7744b14..bdcba8a 100644 --- a/project/android/build.bat +++ b/project/android/build.bat @@ -1,4 +1,6 @@ @echo off +cd /D "%~dp0" + if "%1"=="" ( echo Building all projects [build.bat can be invoved with project name argument to build just one project, if desired] call gradlew build -Dorg.gradle.warning.mode=none --no-daemon -Dorg.gradle.jvmargs=-Xmx4096m --continue -x test diff --git a/project/android/build.gradle b/project/android/build.gradle index 88387e3..9e2c699 100644 --- a/project/android/build.gradle +++ b/project/android/build.gradle @@ -2,14 +2,14 @@ // Put configuration in here for all projects. buildscript { - repositories { mavenCentral() google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.8.1' + //classpath 'com.android.tools.build:gradle:7.2.0' + classpath 'com.android.tools.build:gradle:8.2.0' // No application dependencies here; they belong in the individual module build.gradle files } } @@ -22,13 +22,34 @@ allprojects { } // Default ndk version (should be picked up in app specific build.gradle files) -// project.ext.set("ndkVersionDefault", "25.0.8221429-beta2") // "24.0.8215888") - project.ext.set("ndkVersionDefault", "24.0.8215888") + project.ext.set("ndkVersionDefault", "26.0.10792818") // Put all build related files into a single top level build dir. buildDir = file("${rootDir.absolutePath}/../../build/android/${project.name}") + + dependencies { + } } task clean(type: Delete) { delete rootProject.buildDir } + +/* +task lintCheck() { + getAllTasks(true).each { + def lintTasks = it.value.findAll { it.name.contains("lint") } + lintTasks.each { + it.enabled = false + } + } +} + +afterEvaluate { + Set result = tasks.findAll { task -> task.name.contains(':lint') } + result.each { Task task -> + printLn("disabled task {task.name}") + task.enabled = false + } +} +*/ diff --git a/project/android/cmake/AddShadersDir.cmake b/project/android/cmake/AddShadersDir.cmake deleted file mode 100644 index 300439b..0000000 --- a/project/android/cmake/AddShadersDir.cmake +++ /dev/null @@ -1,170 +0,0 @@ -# -# Build shaders -# Add everything with .frag .vert .comp extension from the shaders/ directory and build using Vulkan shader compiler. -# - -# Make sure we have the Vulkan compiler -find_program( - GLSL_VALIDATOR - glslangValidator - DOC "Vulkan Shader Compiler (glslangValidator) (is Vulkan SDK installed?)" - REQUIRED -) - -# Make sure we have the DXC compiler. See if it is installed alngside Vulkan first. -if(DEFINED ENV{VULKAN_SDK}) - cmake_path(SET VULKAN_SDK_PATH NORMALIZE $ENV{VULKAN_SDK}) - find_program( - DXC_EXE - dxc - HINTS ${VULKAN_SDK_PATH} - PATH_SUFFIXES bin - NO_DEFAULT_PATH - DOC "Microsoft Shader compiler (dxc) (is Vulkan SDK installed?)" - OPTIONAL - ) -endif() - -# We couldnt find dxc installed with Vulkan, look for it on the path (should find the Windows SDK version) -find_program( - DXC_EXE - dxc - DOC "Microsoft Shader compiler (dxc) (is Vulkan SDK installed?)" - REQUIRED -) - -# Runs the command to get the pluginval version (more recent versions of dcx support --version, older ones dont and print the version inside -help) -if (NOT DEFINED ENV{DXC_VERSION}) - message("DCX compiler found at: ${DXC_EXE}") - execute_process(COMMAND ${DXC_EXE} --help - OUTPUT_VARIABLE DXC_VERSION_RAW - ERROR_VARIABLE DXC_VERSION_RAW) - string(REGEX MATCH "Version: ([^\r\n]+)[\r\n]" - DXC_VERSION ${DXC_VERSION_RAW}) - string(REGEX REPLACE "Version: (.*)" - "\\1" - DXC_VERSION ${DXC_VERSION}) - message( "DXC version: ${DXC_VERSION}" ) - set(ENV{DXC_VERSION} ${DXC_VERSION}) -endif() - - -# Custom shader include direcotry -if(DEFINED SHADER_INCLUDE) - list(TRANSFORM SHADER_INCLUDE PREPEND "-I") -endif() - -# Ensure we have a place to put the .d dependency files emitted by the compiler -set(DEPENDS_PATH ${CMAKE_CURRENT_BINARY_DIR}/Media/Shaders/) -file(MAKE_DIRECTORY ${DEPENDS_PATH}) - -# -# Scan through shaders directory looking for shader source files and generate build commands for them -# -file(GLOB files "shaders/*.vert" "shaders/*.frag" "shaders/*.comp") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${file} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMAND echo Compiling shader ... ${file} to ${OUTPUT_SHADER} - COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet --target-env vulkan1.1 ${file} -o ${OUTPUT_FILENAME}.spv --depfile ${OUTPUT_SHADER_DEP} - COMMAND ${CMAKE_COMMAND} -E rename ${OUTPUT_FILENAME}.spv ${OUTPUT_SHADER} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_SHADER) - unset(OUTPUT_FILENAME) -endforeach() - -# Ray Tracing shaders need to target Vulkan 1.2 -file(GLOB files "shaders/*.rgen" "shaders/*.rint" "shaders/*.rahit" "shaders/*.rchit" "shaders/*.rmiss" "shaders/*.rcall") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${file} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMAND echo Compiling shader ... ${file} to ${OUTPUT_SHADER} - COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet --target-env spirv1.4 ${file} -o ${OUTPUT_FILENAME}.spv --depfile ${OUTPUT_SHADER_DEP} - COMMAND ${CMAKE_COMMAND} -E rename ${OUTPUT_FILENAME}.spv ${OUTPUT_SHADER} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_SHADER) - unset(OUTPUT_FILENAME) -endforeach() - -# Hlsl files (compiled to SPIR-V). Entry point assumed to me "main". -file(GLOB files "shaders/*.comp.hlsl") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${file} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMAND echo Compiling shader ... ${file} to ${OUTPUT_SHADER} ${DXC_EXE} - COMMAND ${DXC_EXE} ${SHADER_INCLUDE} -I. -T cs_6_7 -spirv -fspv-target-env=vulkan1.1 -enable-16bit-types -E main -Fo ${OUTPUT_FILENAME}.spv ${file} - COMMAND ${CMAKE_COMMAND} -E rename ${OUTPUT_FILENAME}.spv ${OUTPUT_SHADER} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_SHADER) - unset(OUTPUT_FILENAME) -endforeach() - - -file(GLOB files "shaders/*.json") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_JSON ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}) - add_custom_command( - OUTPUT ${OUTPUT_JSON} - MAIN_DEPENDENCY ${file} - COMMAND ${CMAKE_COMMAND} -E copy ${file} ${OUTPUT_JSON} - COMMENT "Copying ... ${file}" to ${OUTPUT_JSON} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_JSON) -endforeach() - -# Aliased shaders compile copies of other shaders (but allow for #define setting) -file(GLOB_RECURSE files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "shaders/*.alias") -foreach(file ${files}) - set(INPUT_ALIAS ${CMAKE_CURRENT_SOURCE_DIR}/${file}) - get_filename_component(OUTPUT_FILENAME ${file} NAME_WLE) - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - cmake_path(NATIVE_PATH INPUT_ALIAS NORMALIZE INPUT_ALIAS_NATIVE) - cmake_path(NATIVE_PATH OUTPUT_SHADER NORMALIZE OUTPUT_SHADER_NATIVE) - cmake_path(NATIVE_PATH OUTPUT_SHADER_DEP NORMALIZE OUTPUT_SHADER_DEP_NATIVE) - - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${INPUT_ALIAS} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMENT "Aliasing ... ${INPUT_ALIAS}" to ${OUTPUT_SHADER} (dependency file ${OUTPUT_SHADER_DEP}) - COMMAND echo Aliasing ... ${INPUT_ALIAS} to ${OUTPUT_SHADER} (dependency file ${OUTPUT_SHADER_DEP}) - COMMAND ${CMAKE_COMMAND} -DINPUT_ALIAS=${INPUT_ALIAS} -DOUTPUT_SHADER=${OUTPUT_SHADER} -DOUTPUT_SHADER_DEP=${OUTPUT_SHADER_DEP} -DGLSL_VALIDATOR=${GLSL_VALIDATOR} -DSHADER_INCLUDE=${SHADER_INCLUDE} -P ${CMAKE_CURRENT_LIST_DIR}/CompileAlias.cmake - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_JSON) -endforeach() - -# -# Add shaders (sources) in to a 'Shaders' folder for Visual Studio -# -source_group( "Shader Files" FILES ${SHADERS_SRC} ) diff --git a/project/android/cmake/CompileAlias.cmake b/project/android/cmake/CompileAlias.cmake deleted file mode 100644 index d9eccc2..0000000 --- a/project/android/cmake/CompileAlias.cmake +++ /dev/null @@ -1,43 +0,0 @@ -# -# Parse and build shader alias -# -# Inputs: -# INPUT_ALIAS -# OUTPUT_SHADER -# OUTPUT_SHADER_DEP - -file(READ ${INPUT_ALIAS} ALIAS_JSON) - -string(JSON INPUT_SHADER GET ${ALIAS_JSON} Shader) -string(JSON INPUT_DEFINES GET ${ALIAS_JSON} Defines) -string(JSON TARGET_ENV ERROR_VARIABLE JSON_ERROR GET ${ALIAS_JSON} TargetEnv ${ALIAS_JSON}) -if(NOT ${JSON_ERROR} EQUAL "NOTFOUND") - set(TARGET_ENV "vulkan1.1") -endif() - -# expand out the "Defines: []" JSON array -set(DEFINES "") -string(JSON INPUT_DEFINES_COUNT LENGTH ${INPUT_DEFINES}) -if(INPUT_DEFINES_COUNT GREATER 0) - math(EXPR INPUT_DEFINES_COUNT "${INPUT_DEFINES_COUNT} - 1") - foreach(DEFINE_IDX RANGE ${INPUT_DEFINES_COUNT}) - string(JSON DEFINE GET ${INPUT_DEFINES} ${DEFINE_IDX}) - list(APPEND DEFINES "-D${DEFINE}") - endforeach() -endif() - -message("Defines ${DEFINES}") - -cmake_path(REMOVE_FILENAME INPUT_ALIAS OUTPUT_VARIABLE INPUT_ALIAS_PATH) -cmake_path(APPEND I ${INPUT_ALIAS_PATH} ${INPUT_SHADER}) -set(INPUT_SHADER ${I}) - -#message("Shader ${INPUT_SHADER}") -#message("Defines ${INPUT_DEFINES}") -#message("GLSL_VALIDATOR ${GLSL_VALIDATOR}") - -execute_process( - COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet --target-env ${TARGET_ENV} ${DEFINES} ${INPUT_SHADER} -o ${OUTPUT_SHADER} --depfile ${OUTPUT_SHADER_DEP} - #COMMAND_ECHO STDOUT - COMMAND_ERROR_IS_FATAL ANY -) diff --git a/project/android/cmake/FrameworkApplicationHelper.cmake b/project/android/cmake/FrameworkApplicationHelper.cmake index 97b74ed..c820f96 100644 --- a/project/android/cmake/FrameworkApplicationHelper.cmake +++ b/project/android/cmake/FrameworkApplicationHelper.cmake @@ -9,13 +9,22 @@ # PROJECT_NAME - name of the application being compiled (from the 'project(...)' command) # FRAMEWORK_LIB - name of the helper framework library (eg framework_vulkan or framework_dx12) +if(ANDROID) + # Android does not include the config file in it's top level build file (since that is gradle) so pull into each framework project seperately + include(../../../ConfigLocal) +endif() + +if(NOT DEFINED FRAMEWORK_LIB) + set(FRAMEWORK_LIB framework_vulkan) +endif() + +set(CMAKE_MODULE_PATH "${FRAMEWORK_DIR}/cmake" ${CMAKE_MODULE_PATH}) # Windows and Android differ in terms of output. # Windows generates an executable, Android generates a library (that the AndroidManifest references) if(WIN32) set( TARGET_NAME ${PROJECT_NAME} ) add_executable( ${TARGET_NAME} WIN32 ${CPP_SRC} ${SHADERS_SRC} ${NATVIS_SCHEMA}) - add_dependencies( ${TARGET_NAME} buildTimestamp ) target_compile_definitions( ${TARGET_NAME} PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS ) set_property(TARGET ${TARGET_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") elseif(ANDROID) @@ -23,39 +32,56 @@ elseif(ANDROID) add_library( ${TARGET_NAME} SHARED ${CPP_SRC} ${SHADERS_SRC} ) target_compile_definitions(${TARGET_NAME} PRIVATE OS_ANDROID) target_compile_options(${TARGET_NAME} PRIVATE -Wno-nullability-completeness;-Wno-deprecated-volatile;-Wno-deprecated-anon-enum-enum-conversion) - - # Generate build time stamp as 2 part process. CMake file that exe depends upon and the header file that cmake writes the header to be included by code. This way we only rebuild what is needed. - file (WRITE ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "string(TIMESTAMP TIMEZ UTC)\n") - file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(WRITE ../../buildtimestamp.h \"#ifndef _BUILDTIMESTAMP_H_\\n\")\n") - file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"#define _BUILDTIMESTAMP_H_\\n\\n\")\n") - file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"// Automatically built by build process. Do NOT check into version control.\\n\\n\")\n") - file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"#define BUILD_TIMESTAMP \\\"\${TIMEZ}\\\"\\n\\n\")\n") - file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"#endif // _BUILDTIMESTAMP_H_\\n\")\n") - add_custom_target ( - buildTimestamp - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/buildTimestamp.cmake - ADD_DEPENDENCIES ${CMAKE_BINARY_DIR}/buildTimestamp.cmake) - add_dependencies( ${TARGET_NAME} buildTimestamp ) + target_compile_options(${TARGET_NAME} PRIVATE "$<$:-O3>" "$<$:-O3>") # Android also needs app-glue generating (and linking before the framework) - add_library( app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c ) - target_link_libraries( ${TARGET_NAME} app-glue ) + add_library( app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c) + target_link_libraries( ${TARGET_NAME} app-glue) # Export ANativeActivity_onCreate(), see https://github.com/android-ndk/ndk/issues/381. set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") # FRAMEWORK_DIR is set by the calling gradle script (needed for Android) - add_subdirectory( ${FRAMEWORK_DIR} framework ) - +# add_subdirectory( ${FRAMEWORK_DIR} framework ) else() message(FATAL_ERROR "(currently) Unsupported platform") endif() -if(NOT DEFINED FRAMEWORK_LIB) - set(FRAMEWORK_LIB framework_vulkan) -endif() - # # Link the framework (to our application) # -target_link_libraries( ${TARGET_NAME} ${FRAMEWORK_LIB} ) +#target_link_libraries( ${TARGET_NAME} ${FRAMEWORK_LIB} ) +target_link_libraries( ${TARGET_NAME} ${CMAKE_CURRENT_BINARY_DIR}/../../../../../android/framework/${CMAKE_BUILD_TYPE}/lib${FRAMEWORK_LIB}.a ) +#if(FRAMEWORK_framework_external_KTX-Software) + target_link_libraries( ${TARGET_NAME} ${CMAKE_CURRENT_BINARY_DIR}/../../../../../android/framework/${CMAKE_BUILD_TYPE}/libktx_read.a ) +#endif() +target_link_libraries( ${TARGET_NAME} ${CMAKE_CURRENT_BINARY_DIR}/../../../../../android/framework/${CMAKE_BUILD_TYPE}/libframework.a ) +target_link_libraries( ${TARGET_NAME} ${CMAKE_CURRENT_BINARY_DIR}/../../../../../android/framework/${CMAKE_BUILD_TYPE}/libframework_base.a ) +target_include_directories(${TARGET_NAME} PUBLIC ../../framework/code) +target_include_directories(${TARGET_NAME} PUBLIC ../../framework/external) +target_include_directories(${TARGET_NAME} PUBLIC ../../framework/external/glm) # so code can do #include "glm/mat3x3.hpp" etc +target_include_directories(${TARGET_NAME} PUBLIC ../../framework/external/json/single_include) +target_include_directories(${TARGET_NAME} PUBLIC ../../framework/external/imgui) +find_package(Vulkan REQUIRED) +set_target_properties(Vulkan::Vulkan PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "") # remove the Vulkan incude paths from the local VulkanSDK +target_include_directories(${TARGET_NAME} PUBLIC ../../framework/external/Vulkan-Headers/include) # point the framework to the Vulkan includes that we have as a submodule +target_link_libraries(${TARGET_NAME} Vulkan::Vulkan) +target_link_libraries(${TARGET_NAME} android log) + +target_include_directories(${TARGET_NAME} PRIVATE .) + +set(DEFAULT_LOCAL_SHADER_DESTINATION "build/Media/Shaders" CACHE INTERNAL "Default local shader destionation") +set(DEFAULT_LOCAL_MESH_DESTINATION "build/Media/Meshes" CACHE INTERNAL "Default local mesh destionation") +set(DEFAULT_LOCAL_TEXTURE_DESTINATION "build/Media/Textures" CACHE INTERNAL "Default local texture destionation") +set(DEFAULT_LOCAL_MISC_DESTINATION "build/Media/Misc" CACHE INTERNAL "Default local misc destionation") + +macro(inject_root_asset_path) + if(${ARGC} GREATER 0) + set(GLOBAL_ASSET_BASE_PATH "${ARGV0}" CACHE INTERNAL "Global asset base path for asset packaging") + else() + set(GLOBAL_ASSET_BASE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../framework/external/GameSampleAssets" CACHE INTERNAL "Global asset base path for asset packaging") + endif() +endmacro() -include_directories(.) +macro(register_local_asset_path var_name relative_path) + set(${var_name} "${relative_path}" CACHE INTERNAL "Global asset local path for asset packaging") + add_compile_definitions(${var_name}_PATH="${relative_path}") +endmacro() \ No newline at end of file diff --git a/project/android/cmake/ModelPackager.cmake b/project/android/cmake/ModelPackager.cmake deleted file mode 100644 index d62477a..0000000 --- a/project/android/cmake/ModelPackager.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# -# Model Packager -# Copy model files from specified path to media path. -# - -function(add_gltf _path) - - if(NOT EXISTS "${_path}.gltf") - message(FATAL_ERROR "ModelPackager -> Couldn't find .gltf file on given path ${_path}") - return() - endif() - - file(COPY "${_path}.gltf" DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Media/Meshes/) - - if(EXISTS "${_path}.bin") - file(COPY "${_path}.bin" DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Media/Meshes/) - endif() - -endfunction() \ No newline at end of file diff --git a/project/android/cmake/TexturePackager.cmake b/project/android/cmake/TexturePackager.cmake deleted file mode 100644 index 2c77429..0000000 --- a/project/android/cmake/TexturePackager.cmake +++ /dev/null @@ -1,127 +0,0 @@ -# -# Texture Packager -# Convert PNG textures from the specified path into its media equivalent. -# - -function(add_textures_from_path _path) - - # Attempt to find the converter tool, else display warning message - SET(CONVERTER_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/../../project/tools/toktx.exe") - if(NOT EXISTS ${CONVERTER_TOOL}) - message(WARNING "TexturePackager -> Texture converter tool wasn't found, sample textures will not be generated (Run '03_BuildTools.bat' if that's desired) - ${CONVERTER_TOOL}") - return() - endif() - - # Ensure the texture path exist - SET(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Textures") - if(NOT EXISTS ${TEXTURE_PATH}) - file(MAKE_DIRECTORY ${TEXTURE_PATH}) - endif() - - MESSAGE("Converting textures from path: '${_path}'") - - # For each PNG file -> Convert using the tool - file(GLOB png_textures "${_path}/*.png") - foreach(file ${png_textures}) - - get_filename_component(OUTPUT_FILENAME ${file} NAME_WE) - - SET(OUTPUT_PATH "${TEXTURE_PATH}/${OUTPUT_FILENAME}.ktx") - - SET(PARAMS - "--genmipmap" - --scale 1.0 - "--verbose" - "${OUTPUT_PATH}" - "${file}" - ) - - if(EXISTS ${OUTPUT_PATH}) - # MESSAGE("Ignoring already converted texture: '${OUTPUT_FILENAME}'") - continue() - endif() - - # MESSAGE("Converting texture: '${OUTPUT_FILENAME}' to KTX") - - execute_process(COMMAND "${CONVERTER_TOOL}" ${PARAMS} ERROR_VARIABLE CONV_ERROR RESULT_VARIABLE CONV_RETVAL) - - if(CONV_ERROR) - message(WARNING "TexturePackager -> ${CONV_ERROR}") - endif() - - endforeach() - - # For each KTX file -> Copy - file(GLOB ktx_textures "${_path}/*.ktx") - foreach(file ${ktx_textures}) - - get_filename_component(OUTPUT_FILENAME ${file} NAME_WE) - SET(OUTPUT_PATH "${TEXTURE_PATH}/${OUTPUT_FILENAME}.ktx") - - if(EXISTS ${OUTPUT_PATH}) - # MESSAGE("Ignoring existing texture: '${OUTPUT_FILENAME}'") - continue() - endif() - - SET(OUTPUT_PATH "${TEXTURE_PATH}/") - - # MESSAGE("Copying KTX texture: '${OUTPUT_FILENAME}'") - file(COPY ${file} DESTINATION ${OUTPUT_PATH}) - - endforeach() - -endfunction() - -function(add_texture _texture_path) - - if(NOT EXISTS ${_texture_path}) - message(WARNING "TexturePackager -> Requested texture doesn't exist: ${_texture_path}") - return() - endif() - - # Ensure the texture path exist - SET(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Textures") - if(NOT EXISTS ${TEXTURE_PATH}) - file(MAKE_DIRECTORY ${TEXTURE_PATH}) - endif() - - get_filename_component(OUTPUT_FILENAME ${_texture_path} NAME_WE) - get_filename_component(OUTPUT_EXT ${_texture_path} EXT) - SET(COPY_OUTPUT_PATH "${TEXTURE_PATH}/") - SET(DST_OUTPUT_PATH "${TEXTURE_PATH}/${OUTPUT_FILENAME}.ktx") - - if(EXISTS ${DST_OUTPUT_PATH}) - # MESSAGE("Ignoring existing texture: '${OUTPUT_FILENAME}'") - return() - endif() - - if(OUTPUT_EXT STREQUAL ".ktx") - MESSAGE("Copying KTX texture: '${OUTPUT_FILENAME}'") - file(COPY ${_texture_path} DESTINATION ${COPY_OUTPUT_PATH}) - return() - endif() - - SET(CONVERTER_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/../../project/tools/toktx.exe") - - if(NOT EXISTS ${CONVERTER_TOOL}) - message(WARNING "TexturePackager -> Texture converter tool wasn't found, sample textures will not be generated (Run '03_BuildTools.bat' if that's desired) - ${CONVERTER_TOOL}") - return() - endif() - - MESSAGE("Converting texture: '${OUTPUT_FILENAME}' to KTX") - - SET(PARAMS - "--genmipmap" - --scale 1.0 - "--verbose" - "${DST_OUTPUT_PATH}" - "${_texture_path}" - ) - - execute_process(COMMAND "${CONVERTER_TOOL}" ${PARAMS} ERROR_VARIABLE CONV_ERROR RESULT_VARIABLE CONV_RETVAL) - - if(CONV_ERROR) - message(WARNING "TexturePackager -> ${CONV_ERROR}") - endif() - -endfunction() \ No newline at end of file diff --git a/project/android/gradle.properties b/project/android/gradle.properties index 0d12a9d..880319e 100644 --- a/project/android/gradle.properties +++ b/project/android/gradle.properties @@ -1 +1,2 @@ -org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 \ No newline at end of file +org.gradle.jvmargs=-Xmx2g + diff --git a/project/android/gradle/wrapper/gradle-wrapper.jar b/project/android/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 18435 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 B8dv}T delta 17845 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 X49Luk)baa85H9$5YCsTPT`SVRWMtMW diff --git a/project/android/gradle/wrapper/gradle-wrapper.properties b/project/android/gradle/wrapper/gradle-wrapper.properties index 669386b..a595206 100644 --- a/project/android/gradle/wrapper/gradle-wrapper.properties +++ b/project/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/project/android/gradlew b/project/android/gradlew index f5feea6..c53aefa 100644 --- a/project/android/gradlew +++ b/project/android/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,8 +15,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# SPDX-License-Identifier: Apache-2.0 -# ############################################################################## # @@ -34,10 +32,10 @@ # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». +# * expansions $var, ${var}, ${var:-default}, ${var+SET}, +# ${var#prefix}, ${var%suffix}, and $( cmd ); +# * compound commands having a testable exit status, especially case; +# * various built-in commands including command, set, and ulimit. # # Important for patching: # @@ -57,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -82,12 +80,13 @@ do esac done -# This is normally unused -# shellcheck disable=SC2034 +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -134,29 +133,22 @@ location of your Java installation." fi else JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." - fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -201,15 +193,11 @@ if "$cygwin" || "$msys" ; then done fi - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -217,12 +205,6 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/project/android/gradlew.bat b/project/android/gradlew.bat index 9d21a21..107acd3 100644 --- a/project/android/gradlew.bat +++ b/project/android/gradlew.bat @@ -13,10 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem -@if "%DEBUG%"=="" @echo off +@if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -27,8 +25,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused +if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -43,13 +40,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute +if "%ERRORLEVEL%" == "0" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail @@ -59,11 +56,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail @@ -78,15 +75,13 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd +if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/project/android/jniLibs/arm64-v8a/README.md b/project/android/jniLibs/arm64-v8a/README.md new file mode 100644 index 0000000..2b6f5c9 --- /dev/null +++ b/project/android/jniLibs/arm64-v8a/README.md @@ -0,0 +1,3 @@ +Place libVkLayer_khronos_validation.so in this folder to enable Vulkan Validation layers in Android samples (requires rebuild of sample .apks) + +Pre-built validation layer libraries are provided by Khronos at the [official Khronos validation layer release](https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases) page. diff --git a/project/android/settings.gradle b/project/android/settings.gradle index d9d9e04..425d47a 100644 --- a/project/android/settings.gradle +++ b/project/android/settings.gradle @@ -1,3 +1,75 @@ -include ':empty', ':hello-gltf', ':hdrSwapchain', ':meshShaderKHR', ':SubPass', ':shaderResolveTonemap', ':rotatedCopy', ':BloomImageProcessing', ':rayPipelineGI', ':rayPipelineShadows', ':rayQueryShadows',':rayReflections',':sgsr', ':sgsr2', ':graph_pipelines' +//============================================================================= +// +// Copyright (c) QUALCOMM Technologies Inc. +// All Rights Reserved. +// +//============================================================================== -project(':graph_pipelines').projectDir = new File('../../samples/graph_pipelines') +// Load local properties +ext { + frameworkProps = new Properties() +} +file("../../ConfigLocal.properties").withInputStream { ext.frameworkProps.load(it) } + +// Assume the framework is always enabled! +include ':framework' +project(':framework').projectDir = new File('../../framework') + +if(false) { + include ':samplesExternals' + project(':samplesExternals').projectDir = new File('../../samples/cmake') +} + +// Helper to add project for sample if it is enabled in settings +def add_sample_subdirectory(baseName, projectName, folder) { + + def value = ext.frameworkProps.getProperty("FRAMEWORK_" + baseName + "_" + projectName) ?: "true" + if (value == 'true') + { + logger.warn("Adding " + baseName + ": " + projectName) + def gradleProjectName = ':' + projectName + include gradleProjectName + project(gradleProjectName).projectDir = new File(folder + '/build') + } + else { + logger.warn("Skipping " + baseName + ": " + projectName) + } +} + +// Map of project-specific dependencies +// Add here any dependency that should match with the project name +def projectDependencies = [ + dsp_offload: [ + condition: { -> System.getenv('HEXAGON_SDK_ROOT') != null }, + message: "NOTE: dsp_offload sample requires Hexagon SDK to be installed (and HEXAGON_SDK_ROOT environment variable)." + ], + sdp_cli: [ + condition: { -> false }, + message: "NOTE: dsdp_cli cannot be built for Android, it's a Windows-only app." + ] +] + +// Dynamically scan samples and tests folders +['samples', 'tests'].each { base -> + def baseDir = new File(rootDir, "../../" + base) + if (baseDir.exists() && baseDir.isDirectory()) { + baseDir.eachDir { subDir -> + def buildGradle = new File(subDir, 'build/build.gradle') + if (buildGradle.exists()) { + def projectName = subDir.name + def folderPath = "../../" + base + "/" + projectName + + def depsInfo = projectDependencies[projectName] + if (depsInfo) { + if (!depsInfo.condition()) { + logger.warn("Skipping " + base + ": " + projectName + " — " + depsInfo.message) + return + } + add_sample_subdirectory(base, projectName, folderPath) + } else { + add_sample_subdirectory(base, projectName, folderPath) + } + } + } + } +} \ No newline at end of file diff --git a/project/linux/CMakeLists.txt b/project/linux/CMakeLists.txt new file mode 100644 index 0000000..87f2ad2 --- /dev/null +++ b/project/linux/CMakeLists.txt @@ -0,0 +1,59 @@ +cmake_minimum_required (VERSION 3.25) + +project (SampleFramework) + +# Include top level configuration +if(NOT EXISTS ${PROJECT_SOURCE_DIR}/../../ConfigLocal.cmake) + message(FATAL_ERROR "ConfigLocal.cmake does not exits - run \"python configure.py\" in the top level directory to generate this file.") +endif() +include(../../ConfigLocal.cmake) + + +# Turn exceptions off (msvc) +# Done in this top-level class as it needs to apply to libraries and applications globally. +# Even in 2020 exception support removes compiler/optimizer oppertunities to remove 'redundant' instructions (eg look at dissassembly for move constructors). +# Also output debug information on release (Windows) builds so the Release build is debuggable. +if(false) +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + string(REGEX REPLACE "/EH[a-z]+" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE} /ZI") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") + set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") + add_definitions(-D_HAS_EXCEPTIONS=0) +endif() +endif() + +# Determine which graphics API we can support and set appropriate defines +set(FRAMEWORK_ENABLE_VULKAN OFF) +set(FRAMEWORK_ENABLE_DX12 OFF) +set(FRAMEWORK_WINDOWS_ARM64 OFF) +if(ANDROID) + # Android target (Vulkan only) + set(FRAMEWORK_ENABLE_VULKAN ON) +elseif(WIN32) + # Windows target (Dx12 for sure, maybe Vulkan too) + set(FRAMEWORK_ENABLE_DX12 ON) + #if (NOT CMAKE_GENERATOR_PLATFORM MATCHES "ARM64") + set(FRAMEWORK_ENABLE_VULKAN ON) + #endif() + if (CMAKE_GENERATOR_PLATFORM MATCHES "ARM64") + set(FRAMEWORK_WINDOWS_ARM64 ON) + endif() +elseif(UNIX) + set(FRAMEWORK_ENABLE_VULKAN ON) +endif() + +message("FRAMEWORK_ENABLE_VULKAN - ${FRAMEWORK_ENABLE_VULKAN}") +message("FRAMEWORK_ENABLE_DX12 - ${FRAMEWORK_ENABLE_DX12}") + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +# Add in all the child subdirectories +set(FRAMEWORK_DIR ../../framework) +set(FRAMEWORK_DOWNLOAD_EXTERNALS On CACHE BOOL "Pull down the framework external dependencies" FORCE) +add_subdirectory( ${FRAMEWORK_DIR} framework ) +set(FRAMEWORK_DOWNLOAD_EXTERNALS Off CACHE BOOL "Pull down the framework external dependencies" FORCE) + +add_subdirectory( ../../samples samples) diff --git a/project/linux/build.sh b/project/linux/build.sh new file mode 100644 index 0000000..93919a4 --- /dev/null +++ b/project/linux/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +pushd . > '/dev/null'; +SCRIPT_PATH="${BASH_SOURCE[0]:-$0}"; +while [ -h "$SCRIPT_PATH" ]; +do + cd "$( dirname -- "$SCRIPT_PATH"; )"; + SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )"; +done + +cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null'; +SCRIPT_PATH="$( pwd; )"; + +mkdir solution +cd solution + +cmake -G "Unix Makefiles" .. +cmake --build . --config Debug +#cmake --build . --config Release +popd diff --git a/project/linux/cmake/FrameworkApplicationHelper.cmake b/project/linux/cmake/FrameworkApplicationHelper.cmake new file mode 100644 index 0000000..7d9cf58 --- /dev/null +++ b/project/linux/cmake/FrameworkApplicationHelper.cmake @@ -0,0 +1,48 @@ +# +# Build the application, linking against the framework. +# + +# Input: +# CPP_SRC - list of cpp/hpp files +# SHADERS_SRC - list of 'shader' (.vert, .frag, .comp) source files +# FRAMEWORK_LIB - name of the framework to link against (eg framework_vulkan) +# NATVIS_SCHEMA - list of application specific Visual Studio visualization schemas (for debuffer) +# PROJECT_NAME - name of the application being compiled (from the 'project(...)' command) + +# Windows and Android differ in terms of output. +# Windows generates an executable, Android generates a library (that the AndroidManifest references) +if(WIN32) + set( TARGET_NAME ${PROJECT_NAME} ) + add_executable( ${TARGET_NAME} WIN32 ${CPP_SRC} ${SHADERS_SRC} ${NATVIS_SCHEMA}) + target_compile_definitions( ${TARGET_NAME} PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS ) + set_property(TARGET ${TARGET_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") +elseif(ANDROID) + set( TARGET_NAME native-lib ) + add_library( ${TARGET_NAME} SHARED ${CPP_SRC} ${SHADERS_SRC} ) + target_compile_definitions(${TARGET_NAME} PRIVATE OS_ANDROID) + + # Android also needs app-glue generating (and linking before the framework) + add_library( app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c ) + target_link_libraries( ${TARGET_NAME} app-glue ) + # Export ANativeActivity_onCreate(), see https://github.com/android-ndk/ndk/issues/381. + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") + # FRAMEWORK_DIR is set by the calling gradle script (needed for Android) + add_subdirectory( ${FRAMEWORK_DIR} framework ) +elseif(UNIX) + set( TARGET_NAME ${PROJECT_NAME} ) + add_executable( ${TARGET_NAME} ${CPP_SRC} ${SHADERS_SRC} ${NATVIS_SCHEMA}) + target_compile_definitions( ${TARGET_NAME} PRIVATE OS_LINUX) +else() + message(FATAL_ERROR "(currently) Unsupported platform") +endif() + +if(NOT DEFINED FRAMEWORK_LIB) + set(FRAMEWORK_LIB framework_vulkan) +endif() + +# +# Link the framework (to our application) +# +target_link_libraries( ${TARGET_NAME} ${FRAMEWORK_LIB} ) + +include_directories(.) diff --git a/project/tools/.gitignore b/project/tools/.gitignore new file mode 100644 index 0000000..8036bcd --- /dev/null +++ b/project/tools/.gitignore @@ -0,0 +1,7 @@ +external + +# executables (linux) +ktxinfo +libktx.so.0.0.0 +toktx + diff --git a/project/tools/CMakeLists.txt b/project/tools/CMakeLists.txt index 8f8c496..d760e4f 100644 --- a/project/tools/CMakeLists.txt +++ b/project/tools/CMakeLists.txt @@ -1,6 +1,9 @@ -cmake_minimum_required (VERSION 3.21) +cmake_minimum_required (VERSION 3.25 FATAL_ERROR) # 3.7 added FindVulkan, 3.10 supported MSVC c++17 (without manually setting flags), 3.19 (maybe before) supported C++20 on Win/Android, 3.21 added Android NDK support with NDK r23 although we are not currently using it!, 3.25 for fetchontent features +cmake_policy(VERSION 3.7) -project(vkSampleFrameworkTools) +project(vkSampleFrameworkTools C CXX) + +set(CMAKE_CXX_STANDARD 20) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD OFF) @@ -13,7 +16,7 @@ function(add_subdirectory_with_folder _folder_name _folder) endfunction() # Framework -# set(FRAMEWORK_DIR ../../framework) +set(FRAMEWORK_DIR ../../framework) # add_subdirectory( ${FRAMEWORK_DIR} framework ) add_custom_target(ktxTools ALL) @@ -23,7 +26,7 @@ set(KTX_FEATURE_TESTS OFF) set(KTX_FEATURE_TOOLS ON) set(KTX_FEATURE_GL_UPLOAD OFF) set(KTX_FEATURE_VULKAN OFF) -add_subdirectory_with_folder("KTX-Software" ../../framework/external/KTX-Software KTX-Software EXCLUDE_FROM_ALL) +add_subdirectory_with_folder("KTX-Software" ${FRAMEWORK_DIR}/external/KTX-Software KTX-Software EXCLUDE_FROM_ALL) add_dependencies(ktxTools toktx ktxinfo) diff --git a/project/tools/build.bat b/project/tools/build.bat index 83eb1c6..2115100 100644 --- a/project/tools/build.bat +++ b/project/tools/build.bat @@ -1,10 +1,36 @@ -@pushd ..\.. -@cd framework\external\KTX-Software -@git fetch origin 'refs/tags/*:refs/tags/*' -@popd -@mkdir solution -@pushd solution +@echo off +cd /D "%~dp0" +mkdir solution +pushd ..\.. +cd framework\external\KTX-Software +git fetch origin 'refs/tags/*:refs/tags/*' +popd +mkdir solution +pushd solution + + +echo Looking for Visual Studio... +"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [17.0,18.0] -format value -property displayName |findstr 2022 +if %ERRORLEVEL%==0 goto :FOUND2022 +"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [16.0,17.0] -format value -property displayName |findstr 2019 +if %ERRORLEVEL%==0 goto :FOUND2019 +echo Not found VS2019 or VS2022 using 'vswhere'. Attempting to create VS2019 solution anyways. + +:FOUND2019 cmake.exe -G "Visual Studio 16 2019" .. -cmake.exe --build . --config Debug +if %ERRORLEVEL% ==0 goto :BUILD +popd +echo. +echo Could not build Visual Studio 2019 .sln files. Check above errors (Visual Studio Pro 2022 or 2019 supported) +goto :EOF + +:FOUND2022 +cmake.exe -G "Visual Studio 17 2022" .. +if %ERRORLEVEL% ==0 goto :BUILD +echo Could not build Visual Studio 2022 .sln files. Check above errors. +popd +goto :EOF + +:BUILD cmake.exe --build . --config Release @popd diff --git a/project/tools/build.sh b/project/tools/build.sh new file mode 100644 index 0000000..aeda57f --- /dev/null +++ b/project/tools/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +pushd . > '/dev/null'; +SCRIPT_PATH="${BASH_SOURCE[0]:-$0}"; +while [ -h "$SCRIPT_PATH" ]; +do + cd "$( dirname -- "$SCRIPT_PATH"; )"; + SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )"; +done + +cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null'; +SCRIPT_PATH="$( pwd; )"; + +mkdir solution +cd solution + + +cmake -G "Unix Makefiles" .. +cmake --build . --config Release + +popd diff --git a/project/tools/clean.bat b/project/tools/clean.bat new file mode 100644 index 0000000..f9c57c5 --- /dev/null +++ b/project/tools/clean.bat @@ -0,0 +1,2 @@ +@echo off +rmdir /s /q solution diff --git a/project/windows/CMakeLists.txt b/project/windows/CMakeLists.txt index ef1ce4c..fa6229e 100644 --- a/project/windows/CMakeLists.txt +++ b/project/windows/CMakeLists.txt @@ -1,6 +1,12 @@ -cmake_minimum_required (VERSION 3.21) +cmake_minimum_required (VERSION 3.25) -project (vkSampleFramework) +project (SampleFramework) + +# Include top level configuration +if(NOT EXISTS ${PROJECT_SOURCE_DIR}/../../ConfigLocal.cmake) + message(FATAL_ERROR "\nConfigLocal.cmake does not exits - run \"python Configure.py\" in the top level directory to generate this file.") +endif() +include(../../ConfigLocal.cmake) # Turn exceptions off (msvc) # Done in this top-level class as it needs to apply to libraries and applications globally. @@ -39,35 +45,15 @@ endif() message("FRAMEWORK_ENABLE_VULKAN - ${FRAMEWORK_ENABLE_VULKAN}") message("FRAMEWORK_ENABLE_DX12 - ${FRAMEWORK_ENABLE_DX12}") -# Generate build time stamp as 2 part process. CMake file that exe depends upon and the header file that cmake writes the header to be included by code. This way we only rebuild what is needed. -file (WRITE ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "string(TIMESTAMP TIMEZ UTC)\n") -file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(WRITE ../../buildtimestamp.h \"#ifndef _BUILDTIMESTAMP_H_\\n\")\n") -file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"#define _BUILDTIMESTAMP_H_\\n\\n\")\n") -file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"// Automatically built by build process. Do NOT check into version control.\\n\\n\")\n") -file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"#define BUILD_TIMESTAMP \\\"\${TIMEZ}\\\"\\n\\n\")\n") -file (APPEND ${CMAKE_BINARY_DIR}/buildTimestamp.cmake "file(APPEND ../../buildTimestamp.h \"#endif // _BUILDTIMESTAMP_H_\\n\")\n") -add_custom_target ( - buildTimestamp - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/buildTimestamp.cmake - ADD_DEPENDENCIES ${CMAKE_BINARY_DIR}/buildTimestamp.cmake) - set_property(GLOBAL PROPERTY USE_FOLDERS ON) -# Add in all the child subdirectories +# Add in all the framework subdirectory set(FRAMEWORK_DIR ../../framework) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${FRAMEWORK_DIR}/cmake") add_subdirectory( ${FRAMEWORK_DIR} framework ) -if(FRAMEWORK_ENABLE_VULKAN) - add_subdirectory(../../samples/empty/ samples/empty) - add_subdirectory(../../samples/hdrSwapchain/ samples/hdrSwapchain) - add_subdirectory(../../samples/rotatedCopy/ samples/rotatedCopy) - add_subdirectory(../../samples/shaderResolveTonemap/ samples/shaderResolveTonemap) - add_subdirectory(../../samples/hello-gltf/ samples/hello-gltf) - add_subdirectory(../../samples/SubPass/ samples/SubPass) - add_subdirectory(../../samples/BloomImageProcessing/ samples/BloomImageProcessing) - add_subdirectory(../../samples/rayQueryShadows/ samples/rayQueryShadows) - add_subdirectory(../../samples/rayReflections/ samples/rayReflections) - add_subdirectory(../../samples/sgsr/ samples/sgsr) - add_subdirectory(../../samples/sdp-cli/ samples/sdp-cli) - add_subdirectory(../../samples/sgsr2/ samples/sgsr2) - add_subdirectory(../../samples/graph_pipelines/ samples/graph_pipelines) -endif() + +# Add the tests +add_subdirectory( ../../tests tests) +# Add the samples +add_subdirectory( ../../samples samples) + diff --git a/project/windows/CmakePresets.json b/project/windows/CmakePresets.json new file mode 100644 index 0000000..7e5875e --- /dev/null +++ b/project/windows/CmakePresets.json @@ -0,0 +1,95 @@ +{ + "version": 2, + "configurePresets": [ + { + "name": "base", + "displayName": "Basic", + "description": "Build using Ninja generator", + "generator": "Ninja", + "hidden": true, + "binaryDir": "${sourceDir}/out/build/${presetName}", + "cacheVariables": { "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" } + }, + + { + "name": "x64", + "architecture": { + "value": "x64", + "strategy": "external" + }, + "cacheVariables": { }, + "hidden": true + }, + { + "name": "ARM64", + "architecture": { + "value": "arm64", + "strategy": "external" + }, + "cacheVariables": { }, + "hidden": true + }, + + { + "name": "Debug", + "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" }, + "hidden": true + }, + { + "name": "Release", + "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" }, + "hidden": true + }, + + { + "name": "MSVC", + "hidden": true, + "cacheVariables": { + "CMAKE_CXX_COMPILER": "cl.exe" + }, + "toolset": { + "value": "host=x64", + "strategy": "external" + } + }, + { + "name": "Clang", + "hidden": true, + "cacheVariables": { + "CMAKE_CXX_COMPILER": "clang-cl.exe" + }, + "toolset": { + "value": "host=x64", + "strategy": "external" + } + }, + + { + "name": "Win10", + "cacheVariables": { + }, + "hidden": true + }, + + { "name": "x64-Debug-Win10" , "description": "MSVC x64 (Debug) Windows", "inherits": [ "base", "x64", "Debug", "MSVC", "Win10" ] }, + { "name": "x64-Release-Win10" , "description": "MSVC x64 (Release) Windows", "inherits": [ "base", "x64", "Release", "MSVC", "Win10" ] }, + { "name": "arm64-Debug-Win10" , "description": "MSVC ARM64 (Debug) Windows", "inherits": [ "base", "ARM64", "Debug", "MSVC", "Win10" ] }, + { "name": "arm64-Release-Win10", "description": "MSVC ARM64 (Release) Windows", "inherits": [ "base", "ARM64", "Release", "MSVC", "Win10" ] }, + + { "name": "x64-Debug-Win10-Clang" , "description": "Clang x64 (Debug) Windows", "inherits": [ "base", "x64", "Debug", "Clang", "Win10" ] }, + { "name": "x64-Release-Win10-Clang" , "description": "Clang x64 (Release) Windows", "inherits": [ "base", "x64", "Release", "Clang", "Win10" ] }, + { "name": "arm64-Debug-Win10-Clang" , "description": "Clang ARM64 (Debug) Windows", "inherits": [ "base", "ARM64", "Debug", "Clang", "Win10" ], "environment": { "CXXFLAGS": "--target=arm64-pc-windows-msvc" } }, + { "name": "arm64-Release-Win10-Clang", "description": "Clang ARM64 (Release) Windows", "inherits": [ "base", "ARM64", "Release", "Clang", "Win10" ], "environment": { "CXXFLAGS": "--target=arm64-pc-windows-msvc" } } + ], + "testPresets": [ + { "name": "x64-Debug-Win10" , "configurePreset": "x64-Debug-Win10" }, + { "name": "x64-Release-Win10" , "configurePreset": "x64-Release-Win10" }, + { "name": "arm64-Debug-Win10" , "configurePreset": "arm64-Debug-Win10" }, + { "name": "arm64-Release-Win10", "configurePreset": "arm64-Release-Win10" }, + + { "name": "x64-Debug-Win10-Clang" , "configurePreset": "x64-Debug-Win10-Clang" }, + { "name": "x64-Release-Win10-Clang" , "configurePreset": "x64-Release-Win10-Clang" }, + { "name": "arm64-Debug-Win10-Clang" , "configurePreset": "arm64-Debug-Win10-Clang" }, + { "name": "arm64-Release-Win10-Clang", "configurePreset": "arm64-Release-Win10-Clang" } + ] +} diff --git a/project/windows/build.bat b/project/windows/build.bat index 8ea0072..a150cd1 100644 --- a/project/windows/build.bat +++ b/project/windows/build.bat @@ -1,9 +1,40 @@ -@mkdir solution -@pushd solution +@echo off +cd /D "%~dp0" +mkdir solution +pushd solution + +echo Looking for Visual Studio... +"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [17.0,18.0] -format value -property displayName |findstr 2022 +if %ERRORLEVEL%==0 goto :FOUND2022 +"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [16.0,17.0] -format value -property displayName |findstr 2019 +if %ERRORLEVEL%==0 goto :FOUND2019 +echo Not found VS2019 or VS2022 using 'vswhere'. Attempting to create VS2019 solution anyways. + +:FOUND2019 cmake.exe -G "Visual Studio 16 2019" .. -@echo Replacing build platform version with 10.0 so generated vcxproj files do not target a specific plaform version. -@rem there is literally no way to do this in CMake3.17, will always want to specify one of the versions on the machine generating the vcxproj files. -@powershell -Command "gci . *.vcxproj -recurse | Where-Object {$_.PSParentPath -notmatch \"CMakeFiles\"} | ForEach {(Get-Content $_.FullName | ForEach {$_ -replace \"WindowsTargetPlatformVersion.*^<\", \"WindowsTargetPlatformVersion^>10.0^<\"}) | Set-Content $_.Fullname"} +if %ERRORLEVEL% ==0 goto :BUILD +popd +echo. +echo Could not build Visual Studio .sln files. Check above errors (Visual Studio Pro 2022 or 2019 supported) +goto :EOF + +:FOUND2022 +cmake.exe -G "Visual Studio 17 2022" .. +if %ERRORLEVEL% ==0 goto :BUILD +popd +echo. +echo Could not build Visual Studio .sln files. Check above errors (Visual Studio Pro 2022 or 2019 supported) +goto :EOF + +:BUILD +echo Starting debug build. +echo . cmake.exe --build . --config Debug -cmake.exe --build . --config Release -@popd +rem echo Starting release build. +rem echo . +rem cmake.exe --build . --config Release +popd + +echo. +echo Visual Studio solution written to %CD%\solution\SampleFramework.sln +echo. diff --git a/project/windows/buildArm64.bat b/project/windows/buildArm64.bat index 152249d..84e8c0d 100644 --- a/project/windows/buildArm64.bat +++ b/project/windows/buildArm64.bat @@ -1,6 +1,46 @@ -@mkdir solutionArm64 -@pushd solutionArm64 +@echo off +cd /D "%~dp0" +mkdir solutionArm64 +pushd solutionArm64 +echo Looking for Visual Studio... +"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [17.0,18.0] -format value -property displayName |findstr 2022 +if %ERRORLEVEL%==0 goto :FOUND2022 +"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [16.0,17.0] -format value -property displayName |findstr 2019 +if %ERRORLEVEL%==0 goto :FOUND2019 +echo Not found VS2019 or VS2022 using 'vswhere'. Attempting to create VS2019 solution anyways. + +:FOUND2019 +echo Creating Visual Studio 2019, ARM64 solution +echo. +echo. cmake.exe -G "Visual Studio 16 2019" -A "ARM64" .. +if %ERRORLEVEL% ==0 goto :BUILD +popd +echo. +echo Could not build Visual Studio 2019 .sln files. Check above errors (Visual Studio Pro 2022 or 2019 supported) +goto :EOF + +:FOUND2022 +echo Creating Visual Studio 2022, ARM64 solution +echo. +echo. +cmake.exe -G "Visual Studio 17 2022" -A "ARM64" .. +if %ERRORLEVEL% ==0 goto :BUILD +echo Could not build Visual Studio 2022 .sln files. Check above errors. +popd +goto :EOF + +:BUILD +echo Visual Studio solution created in project\windows\solutionArm64\ +echo Starting debug build. +echo . cmake.exe --build . --config Debug +echo Starting release build. +echo . cmake.exe --build . --config Release -@popd +popd + +echo. +echo Visual Studio solution written to %CD%\solutionArm64\SampleFramework.sln +echo. + diff --git a/project/windows/clean.bat b/project/windows/clean.bat new file mode 100644 index 0000000..71deeda --- /dev/null +++ b/project/windows/clean.bat @@ -0,0 +1,7 @@ +pushd . +cd /D %~dp0 +rmdir /s /q solution +rmdir /s /q ..\..\samples\external\.fetchcontent +rmdir /s /q ..\..\samples\fidelityFx\external\FidelityFX-FSR2\build +popd + diff --git a/project/windows/cmake/AddShadersDir.cmake b/project/windows/cmake/AddShadersDir.cmake deleted file mode 100644 index 300439b..0000000 --- a/project/windows/cmake/AddShadersDir.cmake +++ /dev/null @@ -1,170 +0,0 @@ -# -# Build shaders -# Add everything with .frag .vert .comp extension from the shaders/ directory and build using Vulkan shader compiler. -# - -# Make sure we have the Vulkan compiler -find_program( - GLSL_VALIDATOR - glslangValidator - DOC "Vulkan Shader Compiler (glslangValidator) (is Vulkan SDK installed?)" - REQUIRED -) - -# Make sure we have the DXC compiler. See if it is installed alngside Vulkan first. -if(DEFINED ENV{VULKAN_SDK}) - cmake_path(SET VULKAN_SDK_PATH NORMALIZE $ENV{VULKAN_SDK}) - find_program( - DXC_EXE - dxc - HINTS ${VULKAN_SDK_PATH} - PATH_SUFFIXES bin - NO_DEFAULT_PATH - DOC "Microsoft Shader compiler (dxc) (is Vulkan SDK installed?)" - OPTIONAL - ) -endif() - -# We couldnt find dxc installed with Vulkan, look for it on the path (should find the Windows SDK version) -find_program( - DXC_EXE - dxc - DOC "Microsoft Shader compiler (dxc) (is Vulkan SDK installed?)" - REQUIRED -) - -# Runs the command to get the pluginval version (more recent versions of dcx support --version, older ones dont and print the version inside -help) -if (NOT DEFINED ENV{DXC_VERSION}) - message("DCX compiler found at: ${DXC_EXE}") - execute_process(COMMAND ${DXC_EXE} --help - OUTPUT_VARIABLE DXC_VERSION_RAW - ERROR_VARIABLE DXC_VERSION_RAW) - string(REGEX MATCH "Version: ([^\r\n]+)[\r\n]" - DXC_VERSION ${DXC_VERSION_RAW}) - string(REGEX REPLACE "Version: (.*)" - "\\1" - DXC_VERSION ${DXC_VERSION}) - message( "DXC version: ${DXC_VERSION}" ) - set(ENV{DXC_VERSION} ${DXC_VERSION}) -endif() - - -# Custom shader include direcotry -if(DEFINED SHADER_INCLUDE) - list(TRANSFORM SHADER_INCLUDE PREPEND "-I") -endif() - -# Ensure we have a place to put the .d dependency files emitted by the compiler -set(DEPENDS_PATH ${CMAKE_CURRENT_BINARY_DIR}/Media/Shaders/) -file(MAKE_DIRECTORY ${DEPENDS_PATH}) - -# -# Scan through shaders directory looking for shader source files and generate build commands for them -# -file(GLOB files "shaders/*.vert" "shaders/*.frag" "shaders/*.comp") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${file} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMAND echo Compiling shader ... ${file} to ${OUTPUT_SHADER} - COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet --target-env vulkan1.1 ${file} -o ${OUTPUT_FILENAME}.spv --depfile ${OUTPUT_SHADER_DEP} - COMMAND ${CMAKE_COMMAND} -E rename ${OUTPUT_FILENAME}.spv ${OUTPUT_SHADER} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_SHADER) - unset(OUTPUT_FILENAME) -endforeach() - -# Ray Tracing shaders need to target Vulkan 1.2 -file(GLOB files "shaders/*.rgen" "shaders/*.rint" "shaders/*.rahit" "shaders/*.rchit" "shaders/*.rmiss" "shaders/*.rcall") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${file} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMAND echo Compiling shader ... ${file} to ${OUTPUT_SHADER} - COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet --target-env spirv1.4 ${file} -o ${OUTPUT_FILENAME}.spv --depfile ${OUTPUT_SHADER_DEP} - COMMAND ${CMAKE_COMMAND} -E rename ${OUTPUT_FILENAME}.spv ${OUTPUT_SHADER} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_SHADER) - unset(OUTPUT_FILENAME) -endforeach() - -# Hlsl files (compiled to SPIR-V). Entry point assumed to me "main". -file(GLOB files "shaders/*.comp.hlsl") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${file} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMAND echo Compiling shader ... ${file} to ${OUTPUT_SHADER} ${DXC_EXE} - COMMAND ${DXC_EXE} ${SHADER_INCLUDE} -I. -T cs_6_7 -spirv -fspv-target-env=vulkan1.1 -enable-16bit-types -E main -Fo ${OUTPUT_FILENAME}.spv ${file} - COMMAND ${CMAKE_COMMAND} -E rename ${OUTPUT_FILENAME}.spv ${OUTPUT_SHADER} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_SHADER) - unset(OUTPUT_FILENAME) -endforeach() - - -file(GLOB files "shaders/*.json") -foreach(file ${files}) - get_filename_component(OUTPUT_FILENAME ${file} NAME) - - set(OUTPUT_JSON ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}) - add_custom_command( - OUTPUT ${OUTPUT_JSON} - MAIN_DEPENDENCY ${file} - COMMAND ${CMAKE_COMMAND} -E copy ${file} ${OUTPUT_JSON} - COMMENT "Copying ... ${file}" to ${OUTPUT_JSON} - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_JSON) -endforeach() - -# Aliased shaders compile copies of other shaders (but allow for #define setting) -file(GLOB_RECURSE files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "shaders/*.alias") -foreach(file ${files}) - set(INPUT_ALIAS ${CMAKE_CURRENT_SOURCE_DIR}/${file}) - get_filename_component(OUTPUT_FILENAME ${file} NAME_WLE) - set(OUTPUT_SHADER ${CMAKE_CURRENT_SOURCE_DIR}/Media/Shaders/${OUTPUT_FILENAME}.spv) - set(OUTPUT_SHADER_DEP ${DEPENDS_PATH}${OUTPUT_FILENAME}.spv.d) - cmake_path(NATIVE_PATH INPUT_ALIAS NORMALIZE INPUT_ALIAS_NATIVE) - cmake_path(NATIVE_PATH OUTPUT_SHADER NORMALIZE OUTPUT_SHADER_NATIVE) - cmake_path(NATIVE_PATH OUTPUT_SHADER_DEP NORMALIZE OUTPUT_SHADER_DEP_NATIVE) - - add_custom_command( - OUTPUT ${OUTPUT_SHADER} - MAIN_DEPENDENCY ${INPUT_ALIAS} - DEPFILE ${OUTPUT_SHADER_DEP} - COMMENT "Aliasing ... ${INPUT_ALIAS}" to ${OUTPUT_SHADER} (dependency file ${OUTPUT_SHADER_DEP}) - COMMAND echo Aliasing ... ${INPUT_ALIAS} to ${OUTPUT_SHADER} (dependency file ${OUTPUT_SHADER_DEP}) - COMMAND ${CMAKE_COMMAND} -DINPUT_ALIAS=${INPUT_ALIAS} -DOUTPUT_SHADER=${OUTPUT_SHADER} -DOUTPUT_SHADER_DEP=${OUTPUT_SHADER_DEP} -DGLSL_VALIDATOR=${GLSL_VALIDATOR} -DSHADER_INCLUDE=${SHADER_INCLUDE} -P ${CMAKE_CURRENT_LIST_DIR}/CompileAlias.cmake - ) - list(APPEND SHADERS_SRC ${file}) - - unset(OUTPUT_JSON) -endforeach() - -# -# Add shaders (sources) in to a 'Shaders' folder for Visual Studio -# -source_group( "Shader Files" FILES ${SHADERS_SRC} ) diff --git a/project/windows/cmake/CompileAlias.cmake b/project/windows/cmake/CompileAlias.cmake deleted file mode 100644 index d9eccc2..0000000 --- a/project/windows/cmake/CompileAlias.cmake +++ /dev/null @@ -1,43 +0,0 @@ -# -# Parse and build shader alias -# -# Inputs: -# INPUT_ALIAS -# OUTPUT_SHADER -# OUTPUT_SHADER_DEP - -file(READ ${INPUT_ALIAS} ALIAS_JSON) - -string(JSON INPUT_SHADER GET ${ALIAS_JSON} Shader) -string(JSON INPUT_DEFINES GET ${ALIAS_JSON} Defines) -string(JSON TARGET_ENV ERROR_VARIABLE JSON_ERROR GET ${ALIAS_JSON} TargetEnv ${ALIAS_JSON}) -if(NOT ${JSON_ERROR} EQUAL "NOTFOUND") - set(TARGET_ENV "vulkan1.1") -endif() - -# expand out the "Defines: []" JSON array -set(DEFINES "") -string(JSON INPUT_DEFINES_COUNT LENGTH ${INPUT_DEFINES}) -if(INPUT_DEFINES_COUNT GREATER 0) - math(EXPR INPUT_DEFINES_COUNT "${INPUT_DEFINES_COUNT} - 1") - foreach(DEFINE_IDX RANGE ${INPUT_DEFINES_COUNT}) - string(JSON DEFINE GET ${INPUT_DEFINES} ${DEFINE_IDX}) - list(APPEND DEFINES "-D${DEFINE}") - endforeach() -endif() - -message("Defines ${DEFINES}") - -cmake_path(REMOVE_FILENAME INPUT_ALIAS OUTPUT_VARIABLE INPUT_ALIAS_PATH) -cmake_path(APPEND I ${INPUT_ALIAS_PATH} ${INPUT_SHADER}) -set(INPUT_SHADER ${I}) - -#message("Shader ${INPUT_SHADER}") -#message("Defines ${INPUT_DEFINES}") -#message("GLSL_VALIDATOR ${GLSL_VALIDATOR}") - -execute_process( - COMMAND ${GLSL_VALIDATOR} ${SHADER_INCLUDE} -I. -V --quiet --target-env ${TARGET_ENV} ${DEFINES} ${INPUT_SHADER} -o ${OUTPUT_SHADER} --depfile ${OUTPUT_SHADER_DEP} - #COMMAND_ECHO STDOUT - COMMAND_ERROR_IS_FATAL ANY -) diff --git a/project/windows/cmake/FrameworkApplicationHelper.cmake b/project/windows/cmake/FrameworkApplicationHelper.cmake index 51efe48..d2271c8 100644 --- a/project/windows/cmake/FrameworkApplicationHelper.cmake +++ b/project/windows/cmake/FrameworkApplicationHelper.cmake @@ -7,14 +7,18 @@ # SHADERS_SRC - list of 'shader' (.vert, .frag, .comp) source files # FRAMEWORK_LIB - name of the framework to link against (eg framework_vulkan) # NATVIS_SCHEMA - list of application specific Visual Studio visualization schemas (for debuffer) +# FRAMEWORK_LIB - name of the helper framework library (eg framework_vulkan or framework_dx12) # PROJECT_NAME - name of the application being compiled (from the 'project(...)' command) +if(NOT DEFINED FRAMEWORK_LIB) + set(FRAMEWORK_LIB framework_vulkan) +endif() + # Windows and Android differ in terms of output. # Windows generates an executable, Android generates a library (that the AndroidManifest references) if(WIN32) set( TARGET_NAME ${PROJECT_NAME} ) add_executable( ${TARGET_NAME} WIN32 ${CPP_SRC} ${SHADERS_SRC} ${NATVIS_SCHEMA}) - add_dependencies( ${TARGET_NAME} buildTimestamp ) target_compile_definitions( ${TARGET_NAME} PRIVATE OS_WINDOWS;_CRT_SECURE_NO_WARNINGS ) set_property(TARGET ${TARGET_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") elseif(ANDROID) @@ -43,3 +47,21 @@ endif() target_link_libraries( ${TARGET_NAME} ${FRAMEWORK_LIB} ) include_directories(.) + +set(DEFAULT_LOCAL_SHADER_DESTINATION "build/Media/Shaders" CACHE INTERNAL "Default local shader destionation") +set(DEFAULT_LOCAL_MESH_DESTINATION "build/Media/Meshes" CACHE INTERNAL "Default local mesh destionation") +set(DEFAULT_LOCAL_TEXTURE_DESTINATION "build/Media/Textures" CACHE INTERNAL "Default local texture destionation") +set(DEFAULT_LOCAL_MISC_DESTINATION "build/Media/Misc" CACHE INTERNAL "Default local misc destionation") + +macro(inject_root_asset_path) + if(${ARGC} GREATER 0) + set(GLOBAL_ASSET_BASE_PATH "${ARGV0}" CACHE INTERNAL "Global asset base path for asset packaging") + else() + set(GLOBAL_ASSET_BASE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../framework/external/GameSampleAssets" CACHE INTERNAL "Global asset base path for asset packaging") + endif() +endmacro() + +macro(register_local_asset_path var_name relative_path) + set(${var_name} "${relative_path}" CACHE INTERNAL "Global asset local path for asset packaging") + add_compile_definitions(${var_name}_PATH="${relative_path}") +endmacro() \ No newline at end of file diff --git a/project/windows/cmake/ModelPackager.cmake b/project/windows/cmake/ModelPackager.cmake deleted file mode 100644 index d62477a..0000000 --- a/project/windows/cmake/ModelPackager.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# -# Model Packager -# Copy model files from specified path to media path. -# - -function(add_gltf _path) - - if(NOT EXISTS "${_path}.gltf") - message(FATAL_ERROR "ModelPackager -> Couldn't find .gltf file on given path ${_path}") - return() - endif() - - file(COPY "${_path}.gltf" DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Media/Meshes/) - - if(EXISTS "${_path}.bin") - file(COPY "${_path}.bin" DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Media/Meshes/) - endif() - -endfunction() \ No newline at end of file diff --git a/project/windows/cmake/TexturePackager.cmake b/project/windows/cmake/TexturePackager.cmake deleted file mode 100644 index 2c77429..0000000 --- a/project/windows/cmake/TexturePackager.cmake +++ /dev/null @@ -1,127 +0,0 @@ -# -# Texture Packager -# Convert PNG textures from the specified path into its media equivalent. -# - -function(add_textures_from_path _path) - - # Attempt to find the converter tool, else display warning message - SET(CONVERTER_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/../../project/tools/toktx.exe") - if(NOT EXISTS ${CONVERTER_TOOL}) - message(WARNING "TexturePackager -> Texture converter tool wasn't found, sample textures will not be generated (Run '03_BuildTools.bat' if that's desired) - ${CONVERTER_TOOL}") - return() - endif() - - # Ensure the texture path exist - SET(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Textures") - if(NOT EXISTS ${TEXTURE_PATH}) - file(MAKE_DIRECTORY ${TEXTURE_PATH}) - endif() - - MESSAGE("Converting textures from path: '${_path}'") - - # For each PNG file -> Convert using the tool - file(GLOB png_textures "${_path}/*.png") - foreach(file ${png_textures}) - - get_filename_component(OUTPUT_FILENAME ${file} NAME_WE) - - SET(OUTPUT_PATH "${TEXTURE_PATH}/${OUTPUT_FILENAME}.ktx") - - SET(PARAMS - "--genmipmap" - --scale 1.0 - "--verbose" - "${OUTPUT_PATH}" - "${file}" - ) - - if(EXISTS ${OUTPUT_PATH}) - # MESSAGE("Ignoring already converted texture: '${OUTPUT_FILENAME}'") - continue() - endif() - - # MESSAGE("Converting texture: '${OUTPUT_FILENAME}' to KTX") - - execute_process(COMMAND "${CONVERTER_TOOL}" ${PARAMS} ERROR_VARIABLE CONV_ERROR RESULT_VARIABLE CONV_RETVAL) - - if(CONV_ERROR) - message(WARNING "TexturePackager -> ${CONV_ERROR}") - endif() - - endforeach() - - # For each KTX file -> Copy - file(GLOB ktx_textures "${_path}/*.ktx") - foreach(file ${ktx_textures}) - - get_filename_component(OUTPUT_FILENAME ${file} NAME_WE) - SET(OUTPUT_PATH "${TEXTURE_PATH}/${OUTPUT_FILENAME}.ktx") - - if(EXISTS ${OUTPUT_PATH}) - # MESSAGE("Ignoring existing texture: '${OUTPUT_FILENAME}'") - continue() - endif() - - SET(OUTPUT_PATH "${TEXTURE_PATH}/") - - # MESSAGE("Copying KTX texture: '${OUTPUT_FILENAME}'") - file(COPY ${file} DESTINATION ${OUTPUT_PATH}) - - endforeach() - -endfunction() - -function(add_texture _texture_path) - - if(NOT EXISTS ${_texture_path}) - message(WARNING "TexturePackager -> Requested texture doesn't exist: ${_texture_path}") - return() - endif() - - # Ensure the texture path exist - SET(TEXTURE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Media/Textures") - if(NOT EXISTS ${TEXTURE_PATH}) - file(MAKE_DIRECTORY ${TEXTURE_PATH}) - endif() - - get_filename_component(OUTPUT_FILENAME ${_texture_path} NAME_WE) - get_filename_component(OUTPUT_EXT ${_texture_path} EXT) - SET(COPY_OUTPUT_PATH "${TEXTURE_PATH}/") - SET(DST_OUTPUT_PATH "${TEXTURE_PATH}/${OUTPUT_FILENAME}.ktx") - - if(EXISTS ${DST_OUTPUT_PATH}) - # MESSAGE("Ignoring existing texture: '${OUTPUT_FILENAME}'") - return() - endif() - - if(OUTPUT_EXT STREQUAL ".ktx") - MESSAGE("Copying KTX texture: '${OUTPUT_FILENAME}'") - file(COPY ${_texture_path} DESTINATION ${COPY_OUTPUT_PATH}) - return() - endif() - - SET(CONVERTER_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/../../project/tools/toktx.exe") - - if(NOT EXISTS ${CONVERTER_TOOL}) - message(WARNING "TexturePackager -> Texture converter tool wasn't found, sample textures will not be generated (Run '03_BuildTools.bat' if that's desired) - ${CONVERTER_TOOL}") - return() - endif() - - MESSAGE("Converting texture: '${OUTPUT_FILENAME}' to KTX") - - SET(PARAMS - "--genmipmap" - --scale 1.0 - "--verbose" - "${DST_OUTPUT_PATH}" - "${_texture_path}" - ) - - execute_process(COMMAND "${CONVERTER_TOOL}" ${PARAMS} ERROR_VARIABLE CONV_ERROR RESULT_VARIABLE CONV_RETVAL) - - if(CONV_ERROR) - message(WARNING "TexturePackager -> ${CONV_ERROR}") - endif() - -endfunction() \ No newline at end of file diff --git a/samples/BloomImageProcessing/01_Install_APK.bat b/samples/BloomImageProcessing/01_Install_APK.bat deleted file mode 100644 index efe3031..0000000 --- a/samples/BloomImageProcessing/01_Install_APK.bat +++ /dev/null @@ -1,18 +0,0 @@ -@echo off -pushd . -cd /D "%~dp0" - -adb uninstall com.quic.BloomImageProcessing - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\BloomImageProcessing\outputs\apk\debug\BloomImageProcessing-debug.apk -@echo **************************************** -adb install -r -g ..\..\build\android\BloomImageProcessing\outputs\apk\debug\BloomImageProcessing-debug.apk - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -popd -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/BloomImageProcessing/02_InstallConfig.bat b/samples/BloomImageProcessing/02_InstallConfig.bat deleted file mode 100644 index 6b98adf..0000000 --- a/samples/BloomImageProcessing/02_InstallConfig.bat +++ /dev/null @@ -1,5 +0,0 @@ -@echo off - -adb push %~dp0/app_config.txt /sdcard/Android/data/com.quic.BloomImageProcessing/files/app_config.txt - -pause diff --git a/samples/BloomImageProcessing/CMakeLists.txt b/samples/BloomImageProcessing/CMakeLists.txt deleted file mode 100644 index 8b183cb..0000000 --- a/samples/BloomImageProcessing/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -cmake_minimum_required (VERSION 3.21) - -project (BloomImageProcessing C CXX) -set(CMAKE_CXX_STANDARD 20) - -# -# Source files included in this application. -# - -set(CPP_SRC code/main/bloom-image-processing.cpp - code/main/bloom-image-processing.hpp -) - -# -# Setup the module path to include the 'project directory' (project/windows or project/android) -# -if(NOT DEFINED PROJECT_ROOT_DIR) - set(PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) # Windows can use CMAKE_SOURCE_DIR, Android needs build.gradle needs "-DPROJECT_ROOT_DIR=${project.rootDir}" in call to cmake set since there is not a 'top' cmakefile (gradle is top level) -endif() -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake) - -# -# Add in the contents of 'shaders' directory -# -include(AddShadersDir) - -# -# Do all the build steps for a Framework application. -# needs Framework_dir and project_name variables. -# -include(FrameworkApplicationHelper) - -# -# Convert and copy textures to local folders -# -include(TexturePackager) - -# Textures -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/textures) \ No newline at end of file diff --git a/samples/BloomImageProcessing/build.gradle b/samples/BloomImageProcessing/build.gradle deleted file mode 100644 index 74e107e..0000000 --- a/samples/BloomImageProcessing/build.gradle +++ /dev/null @@ -1,93 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - lintOptions { - abortOnError false - } - - String rootDir = "${project.rootDir}" - rootDir = rootDir.replace("\\", "/") - - defaultConfig { - applicationId "com.quic.BloomImageProcessing" - minSdkVersion 26 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${rootDir}", "-DFRAMEWORK_DIR=${rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - - // Uncomment this to enable validation -// jniLibs { -// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" -// } - } - main.assets { - srcDirs = ['assets'] - // Uncomment this to add Media folder to assets - srcDirs += ['assets_tmp'] - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.19.0+" - path 'CMakeLists.txt' - } - } - - task copyTmpAssets(type: Copy) { - from "Media" - into "assets_tmp/Media" - } - task removeTmpAssets(type: Delete) { - delete "assets_tmp" - } - - afterEvaluate { - packageRelease.finalizedBy(removeTmpAssets) - } - - preBuild.dependsOn(copyTmpAssets) -} diff --git a/samples/BloomImageProcessing/project/android/res/values/strings.xml b/samples/BloomImageProcessing/project/android/res/values/strings.xml deleted file mode 100644 index 074670f..0000000 --- a/samples/BloomImageProcessing/project/android/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Bloom Image Processing - diff --git a/samples/BloomImageProcessing/shaders/BlurBase.frag b/samples/BloomImageProcessing/shaders/BlurBase.frag deleted file mode 100644 index 879a6e9..0000000 --- a/samples/BloomImageProcessing/shaders/BlurBase.frag +++ /dev/null @@ -1,56 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#version 450 - -#if ENABLE_QCOM_IMAGE_PROCESSING -#extension GL_QCOM_image_processing : require -#endif // ENABLE_QCOM_IMAGE_PROCESSING - -precision mediump float; precision mediump int; - -layout(location = 0) noperspective in vec2 in_TEXCOORD0; - -layout(set = 0, binding = 0, std140) uniform WeightInfo -{ - vec4 weights[8]; -} _Globals; - - -layout(set = 0, binding = 1) uniform texture2D SourceTexture; -layout(set = 0, binding = 2) uniform sampler SourceSampler; - -#if ENABLE_QCOM_IMAGE_PROCESSING - layout(set = 0, binding = 3) uniform texture2DArray BloomWeightTexture; - layout(set = 0, binding = 4) uniform sampler BloomWeightSampler; -#endif // ENABLE_QCOM_IMAGE_PROCESSING - -layout(location = 0) out vec4 FragColor; - -void main() -{ -#if ENABLE_QCOM_IMAGE_PROCESSING - FragColor = textureWeightedQCOM(sampler2D(SourceTexture, SourceSampler), in_TEXCOORD0, sampler2DArray(BloomWeightTexture, BloomWeightSampler)); -#else -#if VERT_PASS - const float StepX = 0; - const float StepY = 1.0 / 1080.0; -#else - const float StepX = 1.0 / 1920.0; - const float StepY = 0; -#endif // VERT_PASS - int WeightSize = int(_Globals.weights[0][0]); - FragColor = vec4(0); - for (int ww = 0; ww < WeightSize; ++ww) - { - float coordIndex = float(ww - WeightSize / 2); - ivec2 weightIndex = ivec2((ww + 1) / 4, (ww + 1) % 4); - FragColor += texture(sampler2D(SourceTexture, SourceSampler), in_TEXCOORD0 + vec2(coordIndex * StepX, coordIndex * StepY)) * _Globals.weights[weightIndex.x][weightIndex.y]; - } -#endif // ENABLE_QCOM_IMAGE_PROCESSING -} diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt new file mode 100644 index 0000000..1a8d1e1 --- /dev/null +++ b/samples/CMakeLists.txt @@ -0,0 +1,29 @@ +project (samples C CXX) + +set(CMAKE_CXX_STANDARD 20) + +# From the list of sample projects determine which are enabled (by ConfigLocal.cmake - which sets a variable per sample) +# if a variable is not found for a sample it is assumed to be enabled. +function(add_sample_subdirectory _SAMPLE_FOLDER _SAMPLE_NAME) + if(FRAMEWORK_samples AND (NOT DEFINED FRAMEWORK_samples_${_SAMPLE_NAME} OR FRAMEWORK_samples_${_SAMPLE_NAME})) + if(NOT DEFINED FRAMEWORK_samples_${_SAMPLE_NAME}) + message(STATUS "Skipping sample: " ${_SAMPLE_NAME} " (config flag not found - please add to Config.txt and re-run configuration script)") + return() + else() + message(STATUS "Adding sample: " ${_SAMPLE_NAME}) + endif() + add_subdirectory(${_SAMPLE_FOLDER} ${_SAMPLE_NAME}) + else() + message(STATUS "Skipping sample: " ${_SAMPLE_NAME}) + endif() +endfunction() + +# Automatically discover sample projects +file(GLOB SAMPLE_DIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} */) + +foreach(SAMPLE_DIR ${SAMPLE_DIRS}) + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SAMPLE_DIR}/CMakeLists.txt" OR + EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SAMPLE_DIR}/cmakelists.txt") + add_sample_subdirectory(${SAMPLE_DIR} ${SAMPLE_DIR}) + endif() +endforeach() \ No newline at end of file diff --git a/samples/README.md b/samples/README.md index f863a38..17be11b 100644 --- a/samples/README.md +++ b/samples/README.md @@ -2,37 +2,99 @@ Unless noted all samples run on Windows and Android. -Each sample might have it's own assets dependencies or build instructions, you can find this information on the sample subfolder. - ## [empty](empty) -Empty app. Minimal app linked against Framework. + +Empty app. Minimal app linked against Framework. ## [hello-gltf](hello-gltf) + Scene (gltf) loading app. Implements a working scene with camera movement and minimal lightning. -This sample demonstrates the most basic usage of the Framework to produce a native Vulkan application and it is designed to be small and simple and meant as a starting point for developers to expand its functionality. -## [SubPass](SubPass) -SubPass sample demos the use of vulkan subpasses to perform a filmic tonemapping operator (on a simple forward rendered scene) and the impact on bandwidth and performance with subpass. +## [AODemo](AODemo) + +Vulkan implementation of Neural Network Ambient Occlusion. + +## [FrameworkTest](FrameworkTest) + +Simple test project that initializes the Vulkan Framework and displays a textured sphere. + +## [MLClothApp](MLClothApp) + +Sample project using machine learning to lower cloth simulation cost. + +## [deferredLpac](deferredLpac) + +App that renders a (reasonably) complex scene using forward rendering and compute shaders. + +Where LPAC (Low Priority Asyncronous Compute) is available the Compute jobs will be done on a low priority queue during shadow pass z-buffer write. -## [BloomImageProcessing](BloomImageProcessing) -This sample demonstrates how to use the VK_QCOM_Image_Processing extension in a simple bloom shader. -The extension provides support for high order filtering and general advanced image processing, features in high demand as screen sizes get larger and more and more post-processing techniques are developed. For more information, please visit https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_image_processing.html +## [DspOffload](dspOffload) + +App illustrating how the Hexagon DSP can be used to run graphics tasks and write results to GPU accessable Android Hardware Buffers. + +## [forward](forward) + +App illustrating a resonably complex forward rendered scene. ## [hdrSwapchain](hdrSwapchain) -HDRSwapchain demonstrates the use of different swapchain image formats and colorspaces. Has a gui dropdown that allows for switching buffer formats on the fly. -Also demonstrates Qualcomm Vulkan render-pass transform extension VK_QCOM_render_pass_transform. -## [RayQueryShadows](RayQueryShadows) -Uses the Vulkan Ray Tracing extensions to implement shadows from a point light source. -Requires drivers with the 'final' Vulkan Ray Tracing api (Dec 2020 onwards). +Demonstrates the use of different swapchain image formats and colorspaces. Has a gui dropdown that allows for switching buffer formats on the fly. + +Also demonstrates Qualcomm Vulkan render-pass transform extension [VK_QCOM_render_pass_transform](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_QCOM_render_pass_transform.html) + +## [rayQueryShadows](rayQueryShadows) -## [RayReflections](RayReflections) -Uses the Vulkan Ray Tracing extensions to implement reflections +Uses Vulkan Ray Tracing extension (VK_KHR_ray_tracing) to implement shadows using Ray Queries. + +Currently Windows only. ## [rotatedCopy](rotatedCopy) -Sample to initialize and use the 'VK_QCOM_rotated_copy_commands' Vulkan extension. -Extension may/will need enabling on older Qualcomm Vulkan drivers. Sample does nothing useful on non Qualcomm hardware. + +Uses VK_QCOM_rotated_copy_commands (and VK_KHR_copy_commands2) extension to blit from a (lower resolution) intermediate render target to the device framebuffer rotated to match the devices native orientation (and thus avoiding the Android SurfaceFlinger doing an additional rotation/composition step). + +## [shaderResolve](shaderResolve) + +Uses VK_QCOM_render_pass_shader_resolve extension to implement MSAA and order-independent transparency in a deferred renderer. ## [shaderResolveTonemap](shaderResolveTonemap) -ShaderResolveTonemap Uses VK_QCOM_render_pass_shader_resolve to perform a filmic tonemapping operator (on a simple forward rendered scene) as part of the MSAA resolve. -Optionally runs the tonemap/resolve as a subpass of the main scene pass. Has onscreen UI controls to modify MSAA sample counts and to enable/disable the shader resolve and use of subpasses (for measuring GPU subpass/shader-resolve efficiency). \ No newline at end of file + +Uses VK_QCOM_render_pass_shader_resolve to perform a filmic tonemapping operator (on a simple forward rendered scene) as part of the MSAA resolve. + +Optionally runs the tonemap/resolve as a subpass of the main scene pass. Has onscreen UI controls to modify MSAA sample counts and to enable/disable the shader resolve and use of subpasses (for measuring GPU subpass/shader-resolve efficiency). + +## [atmospherics](atmospherics) + +Atmospheric lighting. + +# Configuration + +Each sample can be configured by adding an 'app_config.txt' file in the root of the relevant sample (ie samples/forward/app_config.txt). + +On Android the app_config.txt needs to be pushed to device, into /sdcard/Android/data/ANDROID_APP_ID/files/. , many samples have a batch file to do this (eg 07_InstallConfig.bat). + +If this file is missing or empty the sample application should run with 'reasonable' defaults. + +Samples share a set of common settings and can define additional settings specific to the sample's functionality. + +## Common config settings + +gFramesToRender = x + +Render a specific number of frames before exiting the app. x should be in integer. 0 (default) will render 'forever'. + +# File handling + +## Windows + +Executables are compiled to project\windows\solution\samples\APPLICATION\Debug\APPLICATION.exe + +Executables should be run from the samples\APPLICATION folder and data files (textures, models, shaders) are loaded from the Media subfolder. The Visual Studio solution is pre-configured to run the exe from the correct folder. + +## Android + +Apk application bundles are complied to build\android\APPLICATION\outputs\apk\debug\APPLICATION-debug.apk + +So long as the sample's Media files were prepared (02_PrepareMedia.bat) before building the apk, the apk is stand-alone and contains the application executable and Media files. + +If desired any files in the Media folder can be 'overridden' by copying the relevant file to /sdcard/Android/data/ANDROID_APP_ID/files/. with the expected folder path. Eg you can copy a shader file from Media\Shaders\. to /sdcard/Android/data/ANDROID_APP_ID/files/Media/Shaders/. and see your new shader code when the application is re-launched. + diff --git a/samples/SubPass/01_CompileShaders.bat b/samples/SubPass/01_CompileShaders.bat deleted file mode 100644 index fcb833a..0000000 --- a/samples/SubPass/01_CompileShaders.bat +++ /dev/null @@ -1,39 +0,0 @@ -@echo off - -mkdir .\Media\Shaders - -@echo. -echo **************************************** -echo Compiling Shaders... -echo **************************************** -for %%i in (shaders\*.vert) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.frag) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.comp) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) - -@echo. -echo **************************************** -echo Copying .json -echo **************************************** -xcopy /y shaders\*.json .\Media\Shaders\. - -@echo. -echo **************************************** -echo Done -echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE -goto :EOF - -:COMPILE -glslangValidator.exe -V %1 -o .\Media\Shaders\%~nx1.spv -IF NOT ERRORLEVEL 1 echo. %1 -^> .\Media\Shaders\%~nx1.spv -goto :EOF - -:COMPILE_FAILED -echo COMPILE FAILED -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/SubPass/02_Install_APK.bat b/samples/SubPass/02_Install_APK.bat deleted file mode 100644 index 2f53c8f..0000000 --- a/samples/SubPass/02_Install_APK.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off -cd /D "%~dp0" - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\SubPass\outputs\apk\debug\SubPass-debug.apk -@echo **************************************** -call adb install -r -t ..\..\build\android\SubPass\outputs\apk\debug\SubPass-debug.apk -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/SubPass/CMakeLists.txt b/samples/SubPass/CMakeLists.txt deleted file mode 100644 index 6bc65a2..0000000 --- a/samples/SubPass/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -cmake_minimum_required (VERSION 3.21) - -project (SubPass C CXX) -set(CMAKE_CXX_STANDARD 20) - -# -# Source files included in this application. -# - -set(CPP_SRC code/main/SubPass.cpp - code/main/SubPass.hpp -) - -# -# Setup the module path to include the 'project directory' (project/windows or project/android) -# -if(NOT DEFINED PROJECT_ROOT_DIR) - set(PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) # Windows can use CMAKE_SOURCE_DIR, Android needs build.gradle needs "-DPROJECT_ROOT_DIR=${project.rootDir}" in call to cmake set since there is not a 'top' cmakefile (gradle is top level) -endif() -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake) - -# -# Add in the contents of 'shaders' directory -# -include(AddShadersDir) - -# -# Do all the build steps for a Framework application. -# needs Framework_dir and project_name variables. -# -include(FrameworkApplicationHelper) - -# -# Copy required models to local folders -# -include(ModelPackager) - -# Museum GLTF -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Museum) - -# -# Convert and copy textures to local folders -# -include(TexturePackager) - -# Textures -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Textures) -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/textures) \ No newline at end of file diff --git a/samples/SubPass/build.gradle b/samples/SubPass/build.gradle deleted file mode 100644 index a4d5e2d..0000000 --- a/samples/SubPass/build.gradle +++ /dev/null @@ -1,90 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - lintOptions { - abortOnError false - } - - defaultConfig { - applicationId "com.quic.subpass" - minSdkVersion 26 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${project.rootDir}", "-DFRAMEWORK_DIR=${project.rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - - // Uncomment this to enable validation -// jniLibs { -// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" -// } - } - main.assets { - srcDirs = ['assets'] - // Uncomment this to add Media folder to assets - srcDirs += ['assets_tmp'] - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.19.0+" - path 'CMakeLists.txt' - } - } - - task copyTmpAssets(type: Copy) { - from "Media" - into "assets_tmp/Media" - } - task removeTmpAssets(type: Delete) { - delete "assets_tmp" - } - - afterEvaluate { - packageRelease.finalizedBy(removeTmpAssets) - } - - preBuild.dependsOn(copyTmpAssets) -} diff --git a/samples/empty/build.gradle b/samples/empty/build.gradle deleted file mode 100644 index 8b85955..0000000 --- a/samples/empty/build.gradle +++ /dev/null @@ -1,73 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - lintOptions { - abortOnError false - } - - defaultConfig { - applicationId "com.quic.frameworkempty" - minSdkVersion 26 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${project.rootDir}", "-DFRAMEWORK_DIR=${project.rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - assets.srcDirs = ['assets'] - - // Uncomment this to enable validation - //jniLibs { - // srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" - //} - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.19.0+" - path 'CMakeLists.txt' - } - } - -} diff --git a/samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat b/samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat deleted file mode 100644 index 674f5fd..0000000 --- a/samples/graph_pipelines/Adb_Logcat_graph_pipelines.bat +++ /dev/null @@ -1,11 +0,0 @@ -@echo off - -@echo Logcat (grep "graph_pipelines")... -call adb logcat -c -call adb logcat | FIND /I "graph_pipelines" - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -pause diff --git a/samples/graph_pipelines/CMakeLists.txt b/samples/graph_pipelines/CMakeLists.txt index b8e7fac..e1e1eab 100644 --- a/samples/graph_pipelines/CMakeLists.txt +++ b/samples/graph_pipelines/CMakeLists.txt @@ -19,30 +19,49 @@ if(NOT DEFINED PROJECT_ROOT_DIR) endif() set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake) -# -# Add in the contents of 'shaders' directory -# -include(AddShadersDir) - # # Do all the build steps for a Framework application. # needs Framework_dir and project_name variables. # include(FrameworkApplicationHelper) +# +# Setup asset source and target folders +# + +# cmake will use our GameSampleAssets (default for no parameter) as root directory for any asset request (see FrameworkApplicationHelper.cmake for more info) +inject_root_asset_path() + +# Register local variables for asset request, while also defining them in the C++ code for easy access +# Here we use the default destionation paths, all defined at FrameworkApplicationHelper.cmake +register_local_asset_path(SHADER_DESTINATION "${DEFAULT_LOCAL_SHADER_DESTINATION}") +register_local_asset_path(MESH_DESTINATION "${DEFAULT_LOCAL_MESH_DESTINATION}") +register_local_asset_path(TEXTURE_DESTINATION "${DEFAULT_LOCAL_TEXTURE_DESTINATION}") +register_local_asset_path(MISC_DESTINATION "${DEFAULT_LOCAL_MISC_DESTINATION}") + +# +# Add in the contents of 'shaders' directory +# +include(AddShadersDir) + +# Search and include all project shaders +scan_for_shaders() + # # Copy required models to local folders # include(ModelPackager) -# Museum GLTF -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Museum) +# Scene GLTF +add_gltf(scenes/SteamPunkSauna/SteamPunkSauna.gltf) # # Convert and copy textures to local folders # include(TexturePackager) -# Textures -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Textures) -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/textures) \ No newline at end of file +# Scene Textures +add_textures_from_path(scenes/SteamPunkSauna UASTC) + +# Supporting Textures +add_textures_from_path(textures) \ No newline at end of file diff --git a/samples/graph_pipelines/CompileShaders.bat b/samples/graph_pipelines/CompileShaders.bat deleted file mode 100644 index fcb833a..0000000 --- a/samples/graph_pipelines/CompileShaders.bat +++ /dev/null @@ -1,39 +0,0 @@ -@echo off - -mkdir .\Media\Shaders - -@echo. -echo **************************************** -echo Compiling Shaders... -echo **************************************** -for %%i in (shaders\*.vert) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.frag) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.comp) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) - -@echo. -echo **************************************** -echo Copying .json -echo **************************************** -xcopy /y shaders\*.json .\Media\Shaders\. - -@echo. -echo **************************************** -echo Done -echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE -goto :EOF - -:COMPILE -glslangValidator.exe -V %1 -o .\Media\Shaders\%~nx1.spv -IF NOT ERRORLEVEL 1 echo. %1 -^> .\Media\Shaders\%~nx1.spv -goto :EOF - -:COMPILE_FAILED -echo COMPILE FAILED -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/graph_pipelines/Install_APK.bat b/samples/graph_pipelines/Install_APK.bat index c390062..62ab3c4 100644 --- a/samples/graph_pipelines/Install_APK.bat +++ b/samples/graph_pipelines/Install_APK.bat @@ -1,13 +1,21 @@ @echo off cd /D "%~dp0" +:: Get the name of the current folder (assumed to be the project name) +for %%I in ("%~dp0.") do set "project_name=%%~nxI" + @echo. @echo **************************************** -@echo Install ..\..\build\android\graph_pipelines\outputs\apk\debug\graph_pipelines-debug.apk +@echo Installing APK for project: %project_name% @echo **************************************** -call adb install -r -t ..\..\build\android\graph_pipelines\outputs\apk\debug\graph_pipelines-debug.apk + +set "apk_path=..\..\build\android\%project_name%\outputs\apk\debug\%project_name%-debug.apk" + +call adb install -r -t "%apk_path%" + @echo. @echo **************************************** @echo Done! @echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE + +IF "%~dpnx0"=="%0" PAUSE \ No newline at end of file diff --git a/samples/graph_pipelines/build.gradle b/samples/graph_pipelines/build.gradle deleted file mode 100644 index c85b9b7..0000000 --- a/samples/graph_pipelines/build.gradle +++ /dev/null @@ -1,91 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - namespace "com.qualcomm.sgs.graph_pipelines" - - String rootDir = "${project.rootDir}" - rootDir = rootDir.replace("\\", "/") - - defaultConfig { - applicationId "com.quic.graph_pipelines" - minSdkVersion 26 - targetSdkVersion 33 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${rootDir}", "-DFRAMEWORK_DIR=${rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - - // Uncomment this to enable validation -// jniLibs { -// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" -// } - } - main.assets { - srcDirs = ['assets'] - // Uncomment this to add Media folder to assets - srcDirs += ['assets_tmp'] - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.19.0+" - path 'CMakeLists.txt' - } - } - - task copyTmpAssets(type: Copy) { - from "Media" - into "assets_tmp/Media" - } - task removeTmpAssets(type: Delete) { - delete "assets_tmp" - } - - afterEvaluate { - packageRelease.finalizedBy(removeTmpAssets) - } - - preBuild.dependsOn(copyTmpAssets) -} diff --git a/samples/graph_pipelines/code/main/application.cpp b/samples/graph_pipelines/code/main/application.cpp index 207a518..ec0d80c 100644 --- a/samples/graph_pipelines/code/main/application.cpp +++ b/samples/graph_pipelines/code/main/application.cpp @@ -23,6 +23,9 @@ #include "mesh/meshLoader.hpp" #include "system/math_common.hpp" #include "texture/textureManager.hpp" +#include "vulkan/extensionLib.hpp" +#include "material/vulkan/computable.hpp" +#include "material/vulkan/drawable.hpp" #include "imgui.h" #include @@ -45,8 +48,8 @@ namespace { static constexpr std::array sRenderPassNames = { "RP_SCENE", "RP_HUD", "RP_BLIT" }; - glm::vec3 gCameraStartPos = glm::vec3(26.48f, 20.0f, -5.21f); - glm::vec3 gCameraStartRot = glm::vec3(0.0f, 110.0f, 0.0f); + glm::vec3 gCameraStartPos = glm::vec3(0.0f, 3.5f, 0.0f); + glm::vec3 gCameraStartRot = glm::vec3(0.0f, 0.0f, 0.0f); float gFOV = PI_DIV_4; float gNearPlane = 1.0f; @@ -54,9 +57,8 @@ namespace float gNormalAmount = 0.3f; float gNormalMirrorReflectAmount = 0.05f; - const char* gModelAssetPath = "Media\\Models\\PipelineCache.bin"; - const char* gMuseumAssetPath = "Media\\Meshes\\Museum.gltf"; - const char* gTextureFolder = "Media\\Textures\\"; + const char* gSceneAssetGraphModel = "PipelineCache.bin"; + const char* gSceneAssetModel = "SteamPunkSauna.gltf"; static uint32_t FindMemoryType(VkPhysicalDevice& physicalDevice, uint32_t type_bits, VkMemoryPropertyFlags properties) { @@ -96,12 +98,16 @@ void Application::PreInitializeSetVulkanConfiguration(Vulkan::AppConfiguration& //----------------------------------------------------------------------------- { ApplicationHelperBase::PreInitializeSetVulkanConfiguration(config); - config.RequiredExtension(); - config.RequiredExtension(); - config.RequiredExtension(); + config.RequiredExtension(); + config.RequiredExtension(); + config.RequiredExtension(); - config.OptionalExtension(); - config.OptionalExtension(); + // config.RequiredExtension(); + // config.RequiredExtension(); + // config.RequiredExtension(); + + config.OptionalExtension(); + config.OptionalExtension(); } //----------------------------------------------------------------------------- @@ -116,19 +122,26 @@ bool Application::Initialize(uintptr_t windowHandle, uintptr_t hInstance) m_IsGraphPipelinesSupported &= GetVulkan()->HasLoadedVulkanDeviceExtension(VK_ARM_TENSORS_EXTENSION_NAME) && GetVulkan()->HasLoadedVulkanDeviceExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME); - // TODO: Remove when supported by the driver + // If Ext_VK_ARM_data_graph->AvailableFeatures.dataGraph is supported, force graph pipeline support here while that + // isn't fully supported publicly by the driver #if defined(OS_ANDROID) { - auto* Ext_VK_ARM_tensors = static_cast(GetVulkan()->m_DeviceExtensions.GetExtension(VK_ARM_TENSORS_EXTENSION_NAME)); - auto* Ext_VK_ARM_data_graph = static_cast(GetVulkan()->m_DeviceExtensions.GetExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME)); - auto fpGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(GetVulkan()->GetVulkanInstance(), "vkGetDeviceProcAddr"); - if (Ext_VK_ARM_tensors && Ext_VK_ARM_data_graph && fpGetDeviceProcAddr) + auto* Ext_VK_ARM_tensors = static_cast(GetVulkan()->m_DeviceExtensions.GetExtension(VK_ARM_TENSORS_EXTENSION_NAME)); + auto* Ext_VK_ARM_data_graph = static_cast(GetVulkan()->m_DeviceExtensions.GetExtension(VK_ARM_DATA_GRAPH_EXTENSION_NAME)); + if (Ext_VK_ARM_tensors && Ext_VK_ARM_data_graph && Ext_VK_ARM_data_graph->AvailableFeatures.dataGraph) { m_IsGraphPipelinesSupported = true; } } #endif + // If for some reason we are able to enable the extension, but no graph queue was detected, disable + // graph pipelines here (this check probably isn't necessary) + if (!GetVulkan()->IsDataGraphQueueSupported()) + { + m_IsGraphPipelinesSupported = false; + } + // NOTE: You should configure these according to what the model expects. m_RenderResolution = glm::ivec2(960, 540); m_UpscaledResolution = glm::ivec2(1920, 1080); // It just happens that this aligns with the default values of gSurfaceWidth and gSurfaceHeight. @@ -198,11 +211,6 @@ bool Application::Initialize(uintptr_t windowHandle, uintptr_t hInstance) return false; } - if (!GetVulkan()->IsDataGraphQueueSupported()) - { - return false; - } - return true; } @@ -240,7 +248,7 @@ void Application::Destroy() // Render passes / Semaphores for (int whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) { - vkDestroyRenderPass(pVulkan->m_VulkanDevice, m_RenderPassData[whichPass].RenderPass, nullptr); + m_RenderPassData[whichPass].RenderContext.clear(); vkDestroySemaphore(pVulkan->m_VulkanDevice, m_RenderPassData[whichPass].PassCompleteSemaphore, nullptr); } @@ -322,8 +330,6 @@ bool Application::CreateTensors() } auto& vulkan = *GetVulkan(); - const auto& tensor_extension = vulkan.GetExtension(); - assert(tensor_extension != nullptr); LOGI("Creating Tensors..."); @@ -375,7 +381,7 @@ bool Application::CreateTensors() .pQueueFamilyIndices = nullptr }; - if (tensor_extension->m_vkCreateTensorARM(vulkan.m_VulkanDevice, &tensorInfo, nullptr, &targetTensor.tensor) != VK_SUCCESS) + if (vkCreateTensorARM(vulkan.m_VulkanDevice, &tensorInfo, nullptr, &targetTensor.tensor) != VK_SUCCESS) { return false; } @@ -400,7 +406,7 @@ bool Application::CreateTensors() }; VkMemoryRequirements2 memReq = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; - tensor_extension->m_vkGetTensorMemoryRequirementsARM(vulkan.m_VulkanDevice, &memReqInfo, &memReq); + vkGetTensorMemoryRequirementsARM(vulkan.m_VulkanDevice, &memReqInfo, &memReq); #else VkDeviceTensorMemoryRequirementsARM deviceMemReqInfo = @@ -410,7 +416,7 @@ bool Application::CreateTensors() .pCreateInfo = &tensorInfo }; VkMemoryRequirements2 memReq = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; - tensor_extension->m_vkGetDeviceTensorMemoryRequirementsARM(vulkan.m_VulkanDevice, &deviceMemReqInfo, &memReq); + vkGetDeviceTensorMemoryRequirementsARM(vulkan.m_VulkanDevice, &deviceMemReqInfo, &memReq); #endif // TENSOR ALIASED BUFFER // @@ -471,7 +477,7 @@ bool Application::CreateTensors() LOGI("Binding Tensor Memory"); - if(tensor_extension->m_vkBindTensorMemoryARM(vulkan.m_VulkanDevice, 1, &bindInfo) != VK_SUCCESS) + if(vkBindTensorMemoryARM(vulkan.m_VulkanDevice, 1, &bindInfo) != VK_SUCCESS) { return false; } @@ -496,7 +502,7 @@ bool Application::CreateTensors() .format = targetTensor.tensorDescription.format }; - if (tensor_extension->m_vkCreateTensorViewARM(vulkan.m_VulkanDevice, &viewInfo, nullptr, &targetTensor.tensorView) != VK_SUCCESS) + if (vkCreateTensorViewARM(vulkan.m_VulkanDevice, &viewInfo, nullptr, &targetTensor.tensorView) != VK_SUCCESS) { return false; } @@ -641,14 +647,13 @@ bool Application::CreateGraphPipeline() } auto& vulkan = *GetVulkan(); - const auto& data_graph_extension = vulkan.GetExtension(); - assert(data_graph_extension != nullptr); LOGI("Loading file model from disk..."); std::vector modelData; { - if (!m_AssetManager->LoadFileIntoMemory(gModelAssetPath, modelData)) + const auto sceneAssetGraphModel = std::filesystem::path(MISC_DESTINATION_PATH).append(gSceneAssetGraphModel).string(); + if (!m_AssetManager->LoadFileIntoMemory(sceneAssetGraphModel, modelData)) { LOGE("Failed to load Model file, disabling the Graph Pipelines extension"); m_IsGraphPipelinesSupported = false; @@ -739,7 +744,7 @@ bool Application::CreateGraphPipeline() .pResourceInfos = resourceInfos }; - if (data_graph_extension->m_vkCreateDataGraphPipelinesARM( + if (vkCreateDataGraphPipelinesARM( vulkan.m_VulkanDevice, VK_NULL_HANDLE, m_GraphPipelineInstance.pipelineCache, @@ -761,7 +766,7 @@ bool Application::CreateGraphPipeline() .dataGraphPipeline = m_GraphPipelineInstance.graphPipeline }; - if (data_graph_extension->m_vkCreateDataGraphPipelineSessionARM( + if (vkCreateDataGraphPipelineSessionARM( vulkan.m_VulkanDevice, &sessionInfo, nullptr, @@ -778,7 +783,7 @@ bool Application::CreateGraphPipeline() bindReqsInfo.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM; bindReqsInfo.session = m_GraphPipelineInstance.graphSession; - if (data_graph_extension->m_vkGetDataGraphPipelineSessionBindPointRequirementsARM(vulkan.m_VulkanDevice, &bindReqsInfo, &bindReqsCount, NULL) != VK_SUCCESS) + if (vkGetDataGraphPipelineSessionBindPointRequirementsARM(vulkan.m_VulkanDevice, &bindReqsInfo, &bindReqsCount, NULL) != VK_SUCCESS) { return false; } @@ -789,7 +794,7 @@ bool Application::CreateGraphPipeline() bindReqs[i].sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM; } - if (data_graph_extension->m_vkGetDataGraphPipelineSessionBindPointRequirementsARM(vulkan.m_VulkanDevice, &bindReqsInfo, &bindReqsCount, bindReqs.data()) != VK_SUCCESS) + if (vkGetDataGraphPipelineSessionBindPointRequirementsARM(vulkan.m_VulkanDevice, &bindReqsInfo, &bindReqsCount, bindReqs.data()) != VK_SUCCESS) { return false; } @@ -813,7 +818,7 @@ bool Application::CreateGraphPipeline() memReqsInfo.objectIndex = j; VkMemoryRequirements2 memReqs = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 }; - data_graph_extension->m_vkGetDataGraphPipelineSessionMemoryRequirementsARM(vulkan.m_VulkanDevice, &memReqsInfo, &memReqs); + vkGetDataGraphPipelineSessionMemoryRequirementsARM(vulkan.m_VulkanDevice, &memReqsInfo, &memReqs); VkMemoryAllocateInfo info = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; info.pNext = nullptr; @@ -838,7 +843,7 @@ bool Application::CreateGraphPipeline() bindMem.objectIndex = j; bindMem.memory = m_GraphPipelineInstance.sessionMemory[memCount]; - if (data_graph_extension->m_vkBindDataGraphPipelineSessionMemoryARM(vulkan.m_VulkanDevice, 1, &bindMem) != VK_SUCCESS) + if (vkBindDataGraphPipelineSessionMemoryARM(vulkan.m_VulkanDevice, 1, &bindMem) != VK_SUCCESS) { return false; } @@ -864,14 +869,11 @@ bool Application::CreateGraphPipeline() //----------------------------------------------------------------------------- void Application::CopyImageToTensor( CommandListVulkan& cmdList, - TextureVulkan& srcImage, + const TextureVulkan& srcImage, VkImageLayout currentLayout, const GraphPipelineTensor& tensorBinding) //----------------------------------------------------------------------------- { - const auto& synchronization2_extension = GetVulkan()->GetExtension(); - assert(synchronization2_extension != nullptr); - VkImageMemoryBarrier2 imageBarrierToTransfer = { .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, @@ -900,7 +902,7 @@ void Application::CopyImageToTensor( .pImageMemoryBarriers = &imageBarrierToTransfer }; - synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); + vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); VkBufferImageCopy copyRegion = { @@ -930,18 +932,18 @@ void Application::CopyImageToTensor( std::swap(imageBarrierToTransfer.srcAccessMask, imageBarrierToTransfer.dstAccessMask); std::swap(imageBarrierToTransfer.srcStageMask, imageBarrierToTransfer.dstStageMask); - synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); + vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); } //----------------------------------------------------------------------------- void Application::CopyTensorToImage( CommandListVulkan& cmdList, - TextureVulkan& dstImage, + const TextureVulkan& dstImage, VkImageLayout currentLayout, const GraphPipelineTensor& tensorBinding) //----------------------------------------------------------------------------- { - const auto& synchronization2_extension = GetVulkan()->GetExtension(); + const auto& synchronization2_extension = GetVulkan()->GetExtension(); assert(synchronization2_extension != nullptr); VkImageMemoryBarrier2 imageBarrierToTransfer = @@ -972,7 +974,7 @@ void Application::CopyTensorToImage( .pImageMemoryBarriers = &imageBarrierToTransfer }; - synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); + vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); VkBufferImageCopy copyRegion = { @@ -1001,20 +1003,19 @@ void Application::CopyTensorToImage( std::swap(imageBarrierToTransfer.srcAccessMask, imageBarrierToTransfer.dstAccessMask); std::swap(imageBarrierToTransfer.srcStageMask, imageBarrierToTransfer.dstStageMask); - synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); + vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfo); } - //----------------------------------------------------------------------------- void Application::CopyImageToImageBlit( - CommandListVulkan& cmdList, - TextureVulkan& srcImage, - VkImageLayout srcLayout, - TextureVulkan& dstImage, - VkImageLayout dstFinalLayout) + CommandListVulkan& cmdList, + const TextureVulkan& srcImage, + VkImageLayout srcLayout, + const TextureVulkan& dstImage, + VkImageLayout dstFinalLayout) //----------------------------------------------------------------------------- { - const auto& synchronization2_extension = GetVulkan()->GetExtension(); + const auto& synchronization2_extension = GetVulkan()->GetExtension(); assert(synchronization2_extension != nullptr); VkImageMemoryBarrier2 dstBarrier = @@ -1045,7 +1046,7 @@ void Application::CopyImageToImageBlit( .pImageMemoryBarriers = &dstBarrier }; - synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfoDst); + vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfoDst); // Blit image VkImageBlit blitRegion = {}; @@ -1082,7 +1083,7 @@ void Application::CopyImageToImageBlit( dstBarrier.srcStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT; dstBarrier.dstStageMask = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT; - synchronization2_extension->m_vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfoDst); + vkCmdPipelineBarrier2KHR(cmdList.m_VkCommandBuffer, &depInfoDst); } @@ -1090,10 +1091,10 @@ void Application::CopyImageToImageBlit( bool Application::LoadShaders() //----------------------------------------------------------------------------- { - m_ShaderManager = std::make_unique>(*GetVulkan()); + m_ShaderManager = std::make_unique(*GetVulkan()); m_ShaderManager->RegisterRenderPassNames(sRenderPassNames); - m_MaterialManager = std::make_unique>(); + m_MaterialManager = std::make_unique(*GetVulkan()); LOGI("******************************"); LOGI("Loading Shaders..."); @@ -1101,12 +1102,12 @@ bool Application::LoadShaders() typedef std::pair tIdAndFilename; for (const tIdAndFilename& i : - { tIdAndFilename { "Blit", "Media\\Shaders\\Blit.json" }, - tIdAndFilename { "SceneOpaque", "Media\\Shaders\\SceneOpaque.json" }, - tIdAndFilename { "SceneTransparent", "Media\\Shaders\\SceneTransparent.json" } + { tIdAndFilename { "Blit", "Blit.json" }, + tIdAndFilename { "SceneOpaque", "SceneOpaque.json" }, + tIdAndFilename { "SceneTransparent", "SceneTransparent.json" } }) { - if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second)) + if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second, SHADER_DESTINATION_PATH)) { LOGE("Error Loading shader %s from %s", i.first.c_str(), i.second.c_str()); LOGI("Please verify if you have all required assets on the sample media folder"); @@ -1131,10 +1132,14 @@ bool Application::CreateRenderTargets() TextureFormat vkDesiredDepthFormat = pVulkan->GetBestSurfaceDepthFormat(); TextureFormat desiredDepthFormat = vkDesiredDepthFormat; - const TextureFormat MainColorType[] = { TextureFormat::R8G8B8_UNORM }; + // Note: R8G8B8_UNORM is used here since that's what the upscaling model expects, if no upscaling will ever + // be performed, just default to the usual R8G8B8A8_SRGB format + // It's likely R8G8B8_UNORM isn't supported where graph pipelines aren't also supported + const TextureFormat MainColorType[] = { m_IsGraphPipelinesSupported ? TextureFormat::R8G8B8_UNORM : TextureFormat::R8G8B8A8_SRGB }; const TEXTURE_TYPE MainTextureType[] = { TEXTURE_TYPE::TT_RENDER_TARGET_TRANSFERSRC }; // Needed for tensor copy from operation. const TEXTURE_TYPE UpscaledTextureType = TEXTURE_TYPE::TT_CPU_UPDATE; // Needed for tensor copy to operation. const TextureFormat HudColorType[] = { TextureFormat::R8G8B8A8_SRGB }; + const Msaa MSAA[] = { Msaa::Samples1 }; if (!m_RenderPassData[RP_SCENE].RenderTarget.Initialize( pVulkan, @@ -1142,14 +1147,14 @@ bool Application::CreateRenderTargets() m_RenderResolution.y, MainColorType, desiredDepthFormat, - VK_SAMPLE_COUNT_1_BIT, "Scene RT", - MainTextureType)) + MainTextureType, + MSAA)) { LOGE("Unable to create scene render target"); return false; } - + { CreateTexObjectInfo createInfo{}; createInfo.uiWidth = m_UpscaledResolution.x; @@ -1158,14 +1163,20 @@ bool Application::CreateRenderTargets() createInfo.Format = MainColorType[0]; createInfo.TexType = UpscaledTextureType; createInfo.pName = "Upscaled RT"; - createInfo.Msaa = VK_SAMPLE_COUNT_1_BIT; + createInfo.Msaa = Msaa::Samples1; createInfo.FilterMode = SamplerFilter::Linear; m_UpscaledImageResult = CreateTextureObject(*GetVulkan(), createInfo); } // Notice no depth on the HUD RT - if (!m_RenderPassData[RP_HUD].RenderTarget.Initialize(pVulkan, gSurfaceWidth, gSurfaceHeight, HudColorType, TextureFormat::UNDEFINED, VK_SAMPLE_COUNT_1_BIT, "HUD RT")) + if (!m_RenderPassData[RP_HUD].RenderTarget.Initialize( + pVulkan, + gSurfaceWidth, + gSurfaceHeight, + HudColorType, + TextureFormat::UNDEFINED, + "HUD RT")) { LOGE("Unable to create hud render target"); return false; @@ -1201,43 +1212,53 @@ bool Application::InitUniforms() bool Application::InitAllRenderPasses() //----------------------------------------------------------------------------- { - Vulkan* const pVulkan = GetVulkan(); + Vulkan& vulkan = *GetVulkan(); // ColorInputUsage | ClearDepthRenderPass | ColorOutputUsage | DepthOutputUsage | ClearColor - m_RenderPassData[RP_SCENE].PassSetup = { RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, {}}; - m_RenderPassData[RP_HUD].PassSetup = { RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}}; - m_RenderPassData[RP_BLIT].PassSetup = { RenderPassInputUsage::DontCare, true, RenderPassOutputUsage::Present, RenderPassOutputUsage::Discard, {}}; + m_RenderPassData[RP_SCENE].RenderPassSetup = { RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, {}}; + m_RenderPassData[RP_HUD].RenderPassSetup = { RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}}; + m_RenderPassData[RP_BLIT].RenderPassSetup = { RenderPassInputUsage::DontCare, true, RenderPassOutputUsage::Present, RenderPassOutputUsage::Discard, {}}; - TextureFormat surfaceFormat = pVulkan->m_SurfaceFormat; - auto swapChainColorFormat = std::span({ &surfaceFormat, 1 }); - auto swapChainDepthFormat = pVulkan->m_SwapchainDepth.format; + TextureFormat surfaceFormat = vulkan.m_SurfaceFormat; + auto swapChainColorFormat = std::span({ &surfaceFormat, 1 }); + auto swapChainDepthFormat = vulkan.m_SwapchainDepth.format; LOGI("******************************"); LOGI("Initializing Render Passes... "); LOGI("******************************"); - for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) + for (uint32_t whichPass = 0; whichPass < RP_BLIT; whichPass++) { - bool isSwapChainRenderPass = whichPass == RP_BLIT; + std::span colorFormats = m_RenderPassData[whichPass].RenderTarget.m_pLayerFormats; + TextureFormat depthFormat = m_RenderPassData[whichPass].RenderTarget.m_DepthFormat; - std::span colorFormats = isSwapChainRenderPass ? swapChainColorFormat : m_RenderPassData[whichPass].RenderTarget[0].m_pLayerFormats; - TextureFormat depthFormat = isSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget[0].m_DepthFormat; - - const auto& passSetup = m_RenderPassData[whichPass].PassSetup; + const auto& passSetup = m_RenderPassData[whichPass].RenderPassSetup; + auto& passData = m_RenderPassData[whichPass]; - if (!pVulkan->CreateRenderPass( + RenderPass renderPass; + if (!vulkan.CreateRenderPass( { colorFormats }, depthFormat, - VK_SAMPLE_COUNT_1_BIT, + Msaa::Samples1, passSetup.ColorInputUsage, passSetup.ColorOutputUsage, passSetup.ClearDepthRenderPass, passSetup.DepthOutputUsage, - & m_RenderPassData[whichPass].RenderPass)) + renderPass)) { return false; } - + Framebuffer framebuffer; + framebuffer.Initialize( vulkan, + renderPass, + passData.RenderTarget.m_ColorAttachments, + &passData.RenderTarget.m_DepthAttachment, + sRenderPassNames[whichPass] ); + passData.RenderContext.push_back({std::move(renderPass), {}/*pipeline*/, std::move(framebuffer), sRenderPassNames[whichPass]}); + } + for (auto whichBuffer = 0; whichBuffer < vulkan.GetSwapchainBufferCount(); ++whichBuffer) + { + m_RenderPassData[RP_BLIT].RenderContext.push_back( {vulkan.m_SwapchainRenderPass.Copy(), {}, vulkan.GetSwapchainFramebuffer( whichBuffer ), "RP_BLIT"} ); } return true; @@ -1248,12 +1269,12 @@ bool Application::InitGui(uintptr_t windowHandle) //----------------------------------------------------------------------------- { const auto& hudRenderTarget = m_RenderPassData[RP_HUD].RenderTarget; - m_Gui = std::make_unique>(*GetVulkan(), m_RenderPassData[RP_HUD].RenderPass); - if (!m_Gui->Initialize(windowHandle, hudRenderTarget[0].m_Width, hudRenderTarget[0].m_Height)) + m_Gui = std::make_unique(*GetVulkan(), m_RenderPassData[RP_HUD].RenderContext[0].GetRenderPass().Copy()); + if (!m_Gui->Initialize(windowHandle, TextureFormat::R8G8B8A8_UNORM, hudRenderTarget.m_Width, hudRenderTarget.m_Height)) { return false; } - + return true; } @@ -1279,12 +1300,13 @@ bool Application::LoadMeshObjects() LOGI("Loading and preparing the museum..."); LOGI("***********************************"); - m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_PrefixDirectory{ "Media\\" }, PathManipulator_ChangeExtension{ ".ktx" }); - - auto* whiteTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\white_d.ktx", m_SamplerEdgeClamp); - auto* blackTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\black_d.ktx", m_SamplerEdgeClamp); - auto* normalDefaultTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\normal_default.ktx", m_SamplerEdgeClamp); + m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_PrefixDirectory(TEXTURE_DESTINATION_PATH)); + const PathManipulator_PrefixDirectory prefixTextureDir{ TEXTURE_DESTINATION_PATH }; + auto* whiteTexture = m_TextureManager->GetOrLoadTexture("white_d.ktx", m_SamplerRepeat, prefixTextureDir); + auto* blackTexture = m_TextureManager->GetOrLoadTexture("black_d.ktx", m_SamplerRepeat, prefixTextureDir); + auto* normalDefaultTexture = m_TextureManager->GetOrLoadTexture("normal_default.ktx", m_SamplerRepeat, prefixTextureDir); + if (!whiteTexture || !blackTexture || !normalDefaultTexture) { LOGE("Failed to load supporting textures"); @@ -1310,14 +1332,17 @@ bool Application::LoadMeshObjects() auto MaterialLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef)->std::optional { - auto* diffuseTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.diffuseFilename, m_SamplerEdgeClamp); - auto* normalTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.bumpFilename, m_SamplerEdgeClamp); - auto* emissiveTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.emissiveFilename, m_SamplerEdgeClamp); - auto* metallicRoughnessTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.specMapFilename, m_SamplerEdgeClamp); + const PathManipulator_PrefixDirectory prefixTextureDir{ TEXTURE_DESTINATION_PATH }; + const PathManipulator_ChangeExtension changeTextureExt{".ktx"}; + + auto* diffuseTexture = m_TextureManager->GetOrLoadTexture(materialDef.diffuseFilename, m_SamplerRepeat, prefixTextureDir, changeTextureExt); + auto* normalTexture = m_TextureManager->GetOrLoadTexture(materialDef.bumpFilename, m_SamplerRepeat, prefixTextureDir, changeTextureExt); + auto* emissiveTexture = m_TextureManager->GetOrLoadTexture(materialDef.emissiveFilename, m_SamplerRepeat, prefixTextureDir, changeTextureExt); + auto* metallicRoughnessTexture = m_TextureManager->GetOrLoadTexture(materialDef.specMapFilename, m_SamplerRepeat, prefixTextureDir, changeTextureExt); bool alphaCutout = materialDef.alphaCutout; bool transparent = materialDef.transparent; - const Shader* targetShader = transparent ? pSceneTransparentShader : pSceneOpaqueShader; + const auto* targetShader = transparent ? pSceneTransparentShader : pSceneOpaqueShader; ObjectMaterialParameters objectMaterial; objectMaterial.objectFragUniformData.Color.r = static_cast(materialDef.baseColorFactor[0]); @@ -1332,8 +1357,8 @@ bool Application::LoadMeshObjects() return std::nullopt; } - auto shaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *targetShader, NUM_VULKAN_BUFFERS, - [&](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo + auto shaderMaterial = m_MaterialManager->CreateMaterial(*targetShader, NUM_VULKAN_BUFFERS, + [&](const std::string& texName) -> const MaterialManager::tPerFrameTexInfo { if (texName == "Diffuse") { @@ -1352,9 +1377,10 @@ bool Application::LoadMeshObjects() return { metallicRoughnessTexture ? metallicRoughnessTexture : blackTexture }; } + assert(false); return {}; }, - [&](const std::string& bufferName) -> tPerFrameVkBuffer + [&](const std::string& bufferName) -> PerFrameBufferVulkan { if (bufferName == "Vert") { @@ -1369,6 +1395,7 @@ bool Application::LoadMeshObjects() return { m_LightUniform.buf.GetVkBuffer() }; } + assert(false); return {}; } ); @@ -1380,20 +1407,19 @@ bool Application::LoadMeshObjects() const auto loaderFlags = 0; // No instancing const bool ignoreTransforms = (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0; - MeshLoaderModelSceneSanityCheck meshSanityCheckProcessor(gMuseumAssetPath); - MeshObjectIntermediateGltfProcessor meshObjectProcessor(gMuseumAssetPath, ignoreTransforms, glm::vec3(1.0f,1.0f,1.0f)); + const auto sceneAssetPath = std::filesystem::path(MESH_DESTINATION_PATH).append(gSceneAssetModel).string(); + MeshLoaderModelSceneSanityCheck meshSanityCheckProcessor(sceneAssetPath); + MeshObjectIntermediateGltfProcessor meshObjectProcessor(sceneAssetPath, ignoreTransforms, glm::vec3(1.0f, 1.0f, 1.0f)); CameraGltfProcessor meshCameraProcessor{}; - if (!MeshLoader::LoadGltf(*m_AssetManager, gMuseumAssetPath, meshSanityCheckProcessor, meshObjectProcessor, meshCameraProcessor) || - !DrawableLoader::CreateDrawables(*pVulkan, - std::move(meshObjectProcessor.m_meshObjects), - { &m_RenderPassData[RP_SCENE].RenderPass, 1 }, - &sRenderPassNames[RP_SCENE], - MaterialLoader, - m_SceneDrawables, - {}, // RenderPassMultisample - loaderFlags, - {})) // RenderPassSubpasses + if (!MeshLoader::LoadGltf(*m_AssetManager, sceneAssetPath, meshSanityCheckProcessor, meshObjectProcessor, meshCameraProcessor) || + !DrawableLoader::CreateDrawables( + *pVulkan, + std::move(meshObjectProcessor.m_meshObjects), + m_RenderPassData[RP_SCENE].RenderContext, + MaterialLoader, + m_SceneDrawables, + loaderFlags)) { LOGE("Error Loading the museum gltf file"); LOGI("Please verify if you have all required assets on the sample media folder"); @@ -1412,12 +1438,12 @@ bool Application::LoadMeshObjects() LOGI("Creating Quad mesh..."); LOGI("*********************"); - MeshObject blitQuadMesh; + Mesh blitQuadMesh; MeshHelper::CreateScreenSpaceMesh(pVulkan->GetMemoryManager(), 0, &blitQuadMesh); // Blit Material - auto blitQuadShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pBlitQuadShader, pVulkan->m_SwapchainImageCount, - [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo + auto blitQuadShaderMaterial = m_MaterialManager->CreateMaterial(*pBlitQuadShader, pVulkan->m_SwapchainImageCount, + [this](const std::string& texName) -> const MaterialManager::tPerFrameTexInfo { if (texName == "Diffuse") { @@ -1425,18 +1451,18 @@ bool Application::LoadMeshObjects() } else if (texName == "Overlay") { - return { &m_RenderPassData[RP_HUD].RenderTarget[0].m_ColorAttachments[0] }; + return { &m_RenderPassData[RP_HUD].RenderTarget.GetColorAttachments()[0] }; } return {}; }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer + [this](const std::string& bufferName) -> PerFrameBufferVulkan { return {}; } ); m_BlitQuadDrawable = std::make_unique(*pVulkan, std::move(blitQuadShaderMaterial)); - if (!m_BlitQuadDrawable->Init(m_RenderPassData[RP_BLIT].RenderPass, sRenderPassNames[RP_BLIT], std::move(blitQuadMesh))) + if (!m_BlitQuadDrawable->Init(m_RenderPassData[RP_BLIT].RenderContext[0], std::move(blitQuadMesh))) { return false; } @@ -1473,14 +1499,14 @@ bool Application::InitCommandBuffers() m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.resize(pVulkan->m_SwapchainImageCount); char szName[256]; - const VkCommandBufferLevel CmdBuffLevel = VK_COMMAND_BUFFER_LEVEL_SECONDARY; + const CommandListBase::Type CmdBuffLevel = CommandListBase::Type::Secondary; for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) { for (uint32_t whichBuffer = 0; whichBuffer < m_RenderPassData[whichPass].PassCmdBuffer.size(); whichBuffer++) { // The Pass Command Buffer => Primary sprintf(szName, "Primary (%s; Buffer %d of %d)", GetPassName(whichPass), whichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY)) + if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Initialize(pVulkan, szName, CommandListBase::Type::Primary)) { return false; } @@ -1500,7 +1526,7 @@ bool Application::InitCommandBuffers() m_GraphPipelineCommandLists.resize(NUM_VULKAN_BUFFERS); for (auto& graphPipelineCommandList : m_GraphPipelineCommandLists) { - if (!graphPipelineCommandList.Initialize(GetVulkan(), "Graph Pipeline CMD Buffer", VK_COMMAND_BUFFER_LEVEL_PRIMARY, Vulkan::eDataGraphQueue)) + if (!graphPipelineCommandList.Initialize(GetVulkan(), "Graph Pipeline CMD Buffer", CommandListBase::Type::Primary, Vulkan::eDataGraphQueue)) { return false; } @@ -1561,8 +1587,8 @@ bool Application::BuildCmdBuffers() { auto& cmdBufer = renderPassData.ObjectsCmdBuffer[whichBuffer]; - uint32_t targetWidth = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget[0].m_Width; - uint32_t targetHeight = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget[0].m_Height; + uint32_t targetWidth = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget.GetWidth(); + uint32_t targetHeight = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget.GetHeight(); VkViewport viewport = {}; viewport.x = 0.0f; @@ -1579,11 +1605,10 @@ bool Application::BuildCmdBuffers() scissor.extent.height = targetHeight; // Set up some values that change based on render pass - VkRenderPass whichRenderPass = renderPassData.RenderPass; - VkFramebuffer whichFramebuffer = bisSwapChainRenderPass ? pVulkan->m_SwapchainBuffers[whichBuffer].framebuffer : renderPassData.RenderTarget[0].m_FrameBuffer; + VkFramebuffer whichFramebuffer = bisSwapChainRenderPass ? pVulkan->m_SwapchainBuffers[whichBuffer].framebuffer : renderPassData.RenderContext[0].GetFramebuffer()->m_FrameBuffer; // Objects (can render into any pass except Blit) - if (!cmdBufer.Begin(whichFramebuffer, whichRenderPass, bisSwapChainRenderPass)) + if (!cmdBufer.Begin(whichFramebuffer, renderPassData.RenderContext[0].GetRenderPass(), bisSwapChainRenderPass)) { return false; } @@ -1764,7 +1789,7 @@ void Application::Render(float fltDiffTime) { CopyImageToTensor( m_RenderPassData[RP_SCENE].PassCmdBuffer[whichBuffer], - m_RenderPassData[RP_SCENE].RenderTarget.m_RenderTargets[0].m_ColorAttachments[0], + m_RenderPassData[RP_SCENE].RenderTarget.GetColorAttachments()[0], VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, m_InputTensor); } @@ -1772,7 +1797,7 @@ void Application::Render(float fltDiffTime) { CopyImageToImageBlit( m_RenderPassData[RP_SCENE].PassCmdBuffer[whichBuffer], - m_RenderPassData[RP_SCENE].RenderTarget.m_RenderTargets[0].m_ColorAttachments[0], + m_RenderPassData[RP_SCENE].RenderTarget.GetColorAttachments()[0], VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, m_UpscaledImageResult, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); @@ -1787,9 +1812,6 @@ void Application::Render(float fltDiffTime) // Data Graph preparation + dispatch for Upscaling if (isUpscalingActive) { - const auto& data_graph_extension = GetVulkan()->GetExtension(); - assert(data_graph_extension != nullptr); - m_GraphPipelineCommandLists[whichBuffer].Begin(); vkCmdBindPipeline( @@ -1811,7 +1833,7 @@ void Application::Render(float fltDiffTime) dispatchInfo.sType = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM; dispatchInfo.flags = 0; - data_graph_extension->m_vkCmdDispatchDataGraphARM( + vkCmdDispatchDataGraphARM( m_GraphPipelineCommandLists[whichBuffer].m_VkCommandBuffer, m_GraphPipelineInstance.graphSession, &dispatchInfo); @@ -1828,7 +1850,7 @@ void Application::Render(float fltDiffTime) if (m_Gui) { // Render gui (has its own command buffer, optionally returns vk_null_handle if not rendering anything) - guiCommandBuffer = GetGui()->Render(whichBuffer, m_RenderPassData[RP_HUD].RenderTarget[0].m_FrameBuffer); + guiCommandBuffer = GetGui()->Render(whichBuffer, m_RenderPassData[RP_HUD].RenderContext[0].GetFramebuffer()->m_FrameBuffer); if (guiCommandBuffer != VK_NULL_HANDLE) { BeginRenderPass(whichBuffer, RP_HUD, currentVulkanBuffer.swapchainPresentIdx); @@ -1909,10 +1931,10 @@ void Application::BeginRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, u switch (whichPass) { case RP_SCENE: - framebuffer = m_RenderPassData[whichPass].RenderTarget[0].m_FrameBuffer; + framebuffer = m_RenderPassData[whichPass].RenderContext[0].GetFramebuffer()->m_FrameBuffer; break; case RP_HUD: - framebuffer = m_RenderPassData[whichPass].RenderTarget[0].m_FrameBuffer; + framebuffer = m_RenderPassData[whichPass].RenderContext[0].GetFramebuffer()->m_FrameBuffer; break; case RP_BLIT: framebuffer = pVulkan->m_SwapchainBuffers[WhichSwapchainImage].framebuffer; @@ -1927,16 +1949,16 @@ void Application::BeginRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, u VkRect2D passArea = {}; passArea.offset.x = 0; passArea.offset.y = 0; - passArea.extent.width = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget[0].m_Width; - passArea.extent.height = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget[0].m_Height; + passArea.extent.width = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget.GetWidth(); + passArea.extent.height = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget.GetHeight(); TextureFormat swapChainColorFormat = pVulkan->m_SurfaceFormat; auto swapChainColorFormats = std::span({ &swapChainColorFormat, 1 }); TextureFormat swapChainDepthFormat = pVulkan->m_SwapchainDepth.format; - std::span colorFormats = bisSwapChainRenderPass ? swapChainColorFormats : m_RenderPassData[whichPass].RenderTarget[0].m_pLayerFormats; - TextureFormat depthFormat = bisSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget[0].m_DepthFormat; + std::span colorFormats = bisSwapChainRenderPass ? swapChainColorFormats : m_RenderPassData[whichPass].RenderTarget.GetLayerFormats(); + TextureFormat depthFormat = bisSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget.GetDepthFormat(); - VkClearColorValue clearColor = { renderPassData.PassSetup.ClearColor[0], renderPassData.PassSetup.ClearColor[1], renderPassData.PassSetup.ClearColor[2], renderPassData.PassSetup.ClearColor[3] }; + VkClearColorValue clearColor = { renderPassData.RenderPassSetup.ClearColor[0], renderPassData.RenderPassSetup.ClearColor[1], renderPassData.RenderPassSetup.ClearColor[2], renderPassData.RenderPassSetup.ClearColor[3] }; m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].BeginRenderPass( passArea, @@ -1945,7 +1967,7 @@ void Application::BeginRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, u { &clearColor , 1 }, (uint32_t)colorFormats.size(), depthFormat != TextureFormat::UNDEFINED, - m_RenderPassData[whichPass].RenderPass, + m_RenderPassData[whichPass].RenderContext[0].GetRenderPass(), bisSwapChainRenderPass, framebuffer, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); diff --git a/samples/graph_pipelines/code/main/application.hpp b/samples/graph_pipelines/code/main/application.hpp index 577a480..9d769a1 100644 --- a/samples/graph_pipelines/code/main/application.hpp +++ b/samples/graph_pipelines/code/main/application.hpp @@ -14,10 +14,6 @@ #define NUM_SPOT_LIGHTS 4 -class ShaderManager; -class MaterialManager; -class Drawable; - enum RENDER_PASS { RP_SCENE = 0, @@ -101,8 +97,8 @@ struct PassSetupInfo struct PassData { // Pass internal data - PassSetupInfo PassSetup; - VkRenderPass RenderPass = VK_NULL_HANDLE; + PassSetupInfo RenderPassSetup; + std::vector> RenderContext; // context per framebuffer (some passes might all point to the same framebuffers) // Recorded objects that are set to be drawn on this pass std::vector< CommandListVulkan> ObjectsCmdBuffer; @@ -115,7 +111,7 @@ struct PassData // Render targed used by the underlying render pass // note: The blit pass uses the backbuffer directly instead this RT - CRenderTargetArray<1> RenderTarget; + RenderTarget RenderTarget; }; // ********************** @@ -191,22 +187,22 @@ class Application : public ApplicationHelperBase void CopyImageToTensor( CommandListVulkan& cmdList, - TextureVulkan& srcImage, + const TextureVulkan& srcImage, VkImageLayout currentLayout, const GraphPipelineTensor& tensorBinding); void CopyTensorToImage( CommandListVulkan& cmdList, - TextureVulkan& dstImage, + const TextureVulkan& dstImage, VkImageLayout currentLayout, const GraphPipelineTensor& tensorBinding); void CopyImageToImageBlit( CommandListVulkan& cmdList, - TextureVulkan& srcImage, - VkImageLayout srcLayout, - TextureVulkan& dstImage, - VkImageLayout dstFinalLayout); + const TextureVulkan& srcImage, + VkImageLayout srcLayout, + const TextureVulkan& dstImage, + VkImageLayout dstFinalLayout); private: diff --git a/samples/graph_pipelines/install_config.bat b/samples/graph_pipelines/install_config.bat new file mode 100644 index 0000000..c3d20e8 --- /dev/null +++ b/samples/graph_pipelines/install_config.bat @@ -0,0 +1,31 @@ + +@echo off +cd /D "%~dp0" + +:: Get the name of the current folder (assumed to be the project name) +for %%I in ("%~dp0.") do set "project_name=%%~nxI" + +:: Check if app_config.txt exists +if exist "app_config.txt" ( + @echo. + @echo **************************************** + @echo Pushing app_config.txt to: /sdcard/Android/data/com.quic.%project_name%/files/ + @echo **************************************** + adb push ./app_config.txt /sdcard/Android/data/com.quic.%project_name%/files/app_config.txt + + @echo. + @echo **************************************** + @echo Done! + @echo **************************************** +) else ( + @echo. + @echo **************************************** + @echo No app_config.txt was found. + @echo It's not necessary for the app, but it can be used to override application settings. + @echo If such functionality is desired, please create the file and override the global variables + @echo according to how they are defined in the project. + @echo **************************************** +) + +:: Pause only if run directly +IF "%~dpnx0"=="%0" PAUSE \ No newline at end of file diff --git a/samples/graph_pipelines/project/android/res/values/strings.xml b/samples/graph_pipelines/project/android/res/values/strings.xml index 2197b89..6ecb278 100644 --- a/samples/graph_pipelines/project/android/res/values/strings.xml +++ b/samples/graph_pipelines/project/android/res/values/strings.xml @@ -1,4 +1,4 @@ - Graph Pipelines + SGS Graph Pipelines diff --git a/samples/hdrSwapchain/01_CompileShaders.bat b/samples/hdrSwapchain/01_CompileShaders.bat deleted file mode 100644 index fcb833a..0000000 --- a/samples/hdrSwapchain/01_CompileShaders.bat +++ /dev/null @@ -1,39 +0,0 @@ -@echo off - -mkdir .\Media\Shaders - -@echo. -echo **************************************** -echo Compiling Shaders... -echo **************************************** -for %%i in (shaders\*.vert) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.frag) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.comp) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) - -@echo. -echo **************************************** -echo Copying .json -echo **************************************** -xcopy /y shaders\*.json .\Media\Shaders\. - -@echo. -echo **************************************** -echo Done -echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE -goto :EOF - -:COMPILE -glslangValidator.exe -V %1 -o .\Media\Shaders\%~nx1.spv -IF NOT ERRORLEVEL 1 echo. %1 -^> .\Media\Shaders\%~nx1.spv -goto :EOF - -:COMPILE_FAILED -echo COMPILE FAILED -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/hdrSwapchain/02_Install_APK.bat b/samples/hdrSwapchain/02_Install_APK.bat deleted file mode 100644 index e27ab5a..0000000 --- a/samples/hdrSwapchain/02_Install_APK.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off -cd /D "%~dp0" - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\hdrSwapchain\outputs\apk\debug\hdrSwapchain-debug.apk -@echo **************************************** -call adb install -r -t ..\..\build\android\hdrSwapchain\outputs\apk\debug\hdrSwapchain-debug.apk -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/hdrSwapchain/02_PrepareMedia.bat b/samples/hdrSwapchain/02_PrepareMedia.bat deleted file mode 100644 index 2537d54..0000000 --- a/samples/hdrSwapchain/02_PrepareMedia.bat +++ /dev/null @@ -1,65 +0,0 @@ -rem @echo off -setlocal - -echo. -echo Copying from vkSampleFrameworkAssets/shared/Media (shared Assets submodule) -echo. -mkdir Media -rmdir /s /q Media\Objects -mkdir Media\Objects -rmdir /s /q Media\Textures -mkdir Media\Textures - -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\white_d.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\default_ddn.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\simplesky_env.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\simplesky_irradiance.ktx Media\Textures\. - -..\..\project\tools\simpletextureconverter.exe ..\..\vkSampleFrameworkAssets\shared\Media\Textures\nnao_f0.tga Media\Textures\nnao_f0.ktx -F R8G8B8A8Unorm -nomip -..\..\project\tools\simpletextureconverter.exe ..\..\vkSampleFrameworkAssets\shared\Media\Textures\nnao_f1.tga Media\Textures\nnao_f1.ktx -F R8G8B8A8Unorm -nomip -..\..\project\tools\simpletextureconverter.exe ..\..\vkSampleFrameworkAssets\shared\Media\Textures\nnao_f2.tga Media\Textures\nnao_f2.ktx -F R8G8B8A8Unorm -nomip -..\..\project\tools\simpletextureconverter.exe ..\..\vkSampleFrameworkAssets\shared\Media\Textures\nnao_f3.tga Media\Textures\nnao_f3.ktx -F R8G8B8A8Unorm -nomip - -xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\Skybox_Separate.* Media\Objects\. - -xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\BistroGltfFused Media\Objects\BistroGltfFused -call :ConvertTextures Media\Objects\BistroGltfFused 2048 - -echo. -echo Cleaning up afer texture conversion -echo. -pushd Media -del /s /q /f *.png *.jpg *.tga -popd - -goto:eof - - -:ConvertTextures -rem %1 is directory, %2 is size at which we downsample (in bytes) -rem Convert png images to ktx textures. -rem Larger textures are mipped and reduced in size, (very) small textures are not -SET SIZELIMIT=1000 -pushd %1 -for /R %%i in (*.png) do ( - echo %%i|findstr /i /L "Normal">nul - if errorlevel 1 ( - call :ConvertTexture %%i %2 R8G8B8A8UnormSrgb - ) else ( - rem Normal Texture (output linear 'color' values) - call :ConvertTexture %%i %2 R8G8B8A8Unorm - ) -) -popd -goto :eof - -:ConvertTexture -rem %1 is file, %2 is size at which we downsample (in bytes), %3 is the output data format -rem Convert png image to ktx texture. -if %~z1 LSS %2 ( - echo "Not scaling (or mipping) %~f1 (too small)" - ..\..\..\..\..\project\tools\simpletextureconverter.exe "%~f1" "%~dpn1.ktx" -F %3 -nomip -) else ( - ..\..\..\..\..\project\tools\simpletextureconverter.exe "%~f1" "%~dpn1.ktx" -F %3 -w 25%% -h 25%% -) -goto :eof diff --git a/samples/hdrSwapchain/04_Install_APK.bat b/samples/hdrSwapchain/04_Install_APK.bat deleted file mode 100644 index e846651..0000000 --- a/samples/hdrSwapchain/04_Install_APK.bat +++ /dev/null @@ -1,16 +0,0 @@ -@echo off -pushd . -cd /D "%~dp0" - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\hdrSwapchain\outputs\apk\debug\hdrSwapchain-debug.apk -@echo **************************************** -adb install -r ..\..\build\android\hdrSwapchain\outputs\apk\debug\hdrSwapchain-debug.apk - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -popd -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/hdrSwapchain/06_Adb_Logcat.bat b/samples/hdrSwapchain/06_Adb_Logcat.bat deleted file mode 100644 index 6b89aff..0000000 --- a/samples/hdrSwapchain/06_Adb_Logcat.bat +++ /dev/null @@ -1,11 +0,0 @@ -@echo off - -@echo Logcat... -call adb logcat -c -call adb logcat - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -pause \ No newline at end of file diff --git a/samples/hdrSwapchain/CMakeLists.txt b/samples/hdrSwapchain/CMakeLists.txt deleted file mode 100644 index 8574d9a..0000000 --- a/samples/hdrSwapchain/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -cmake_minimum_required (VERSION 3.21) - -project (hdrSwapchain C CXX) -set(CMAKE_CXX_STANDARD 20) - -# -# Source files included in this application. -# - -set(CPP_SRC code/main/hdrSwapchain.cpp - code/main/hdrSwapchain.hpp - code/main/materials.hpp -) -set(FRAMEWORK_LIB framework_vulkan) - -# -# Setup the module path to include the 'project directory' (project/windows or project/android) -# -if(NOT DEFINED PROJECT_ROOT_DIR) - set(PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) # Windows can use CMAKE_SOURCE_DIR, Android needs build.gradle needs "-DPROJECT_ROOT_DIR=${project.rootDir}" in call to cmake set since there is not a 'top' cmakefile (gradle is top level) -endif() -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake) - -# -# Add in the contents of 'shaders' directory -# -include(AddShadersDir) - -# -# Do all the build steps for a Framework application. -# needs Framework_dir and project_name variables. -# -include(FrameworkApplicationHelper) - -# -# Copy required models to local folders -# -include(ModelPackager) - -# Museum GLTF -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Museum) - -# -# Convert and copy textures to local folders -# -include(TexturePackager) - -# Textures -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/Museum/Textures) -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/textures) \ No newline at end of file diff --git a/samples/hdrSwapchain/README.md b/samples/hdrSwapchain/README.md deleted file mode 100644 index 94c7940..0000000 --- a/samples/hdrSwapchain/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# HDRSwapchain Sample - -![Screenshot](img/screenshot_1.PNG) - -![Screenshot](img/screenshot_2.PNG) - -## Overview - -HDRSwapchain demonstrates the use of different swapchain image formats and colorspaces. Has a gui dropdown that allows for switching buffer formats on the fly. -Also demonstrates Qualcomm Vulkan render-pass transform extension VK_QCOM_render_pass_transform. - -## Building - -### Dependencies - -The following dependencies must be installed and the appropriate locations should be referenced in the `PATH` environment variable. - -* Android SDK -* Andorid NDK -* Gradle -* CMake -* Android Studio - -### Pre-Build - -Compile the underlying shaders to .spv by running the batch file below: - -``` -01_CompileShaders.bat -``` - -And convert the needed textures and shaders to the correct format using the batch file below: - -``` -02_PrepareMedia.bat -``` - -Note: The sample assumes the existence of supporting assets under the **'Media'** folder. These assets are not currently distributed with the framework. -The framework team is working to build a centralized asset repository that should minimize these requirements in the near future. - -### Build - -Once the dependencies are installed and shaders compiled, building this sample .apk/.exe is as simple as running any of the batch files from the framework root directory, accordingly to your target system: - -``` -01_BuildAndroid.bat -02_BuildWindows.bat -``` - -### Deploy (android-only) - -To deploy the media files and the .apk to a connected device, run the batch files below: - -``` -02_Install_APK.bat -``` - -If desired, you can keep track of any logging by running one of the logcat batch files (which you can find on the current directory). - -## Android Studio - -This sample can also be easily imported to Android Studio and be used within the Android Studio ecosystem including building, deploying, and native code debugging. - -To do this, open Android Studio and go to `File->New->Import Project...` and select the `project\android` folder as the source for the import. This will load up the gradle configuration and once finalized, the sample can be used within Android Studio. diff --git a/samples/hdrSwapchain/build.gradle b/samples/hdrSwapchain/build.gradle deleted file mode 100644 index 1074477..0000000 --- a/samples/hdrSwapchain/build.gradle +++ /dev/null @@ -1,96 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - lintOptions { - abortOnError false - } - - String rootDir = "${project.rootDir}" - rootDir = rootDir.replace("\\", "/") - - defaultConfig { - applicationId "com.quic.hdrswapchain" - minSdkVersion 26 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${rootDir}", "-DFRAMEWORK_DIR=${rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - - // Uncomment this to enable validation -// jniLibs { -// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" -// } - } -// main.assets { -// srcDirs = ['assets'] -// } - main.assets { - srcDirs = ['assets'] - // Uncomment this to add Media folder to assets - srcDirs += ['assets_tmp'] - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.21.0+" - path 'CMakeLists.txt' - } - } - - task copyTmpAssets(type: Copy) { - from "Media" - into "assets_tmp/Media" - } - task removeTmpAssets(type: Delete) { - delete "assets_tmp" - } - - afterEvaluate { - packageRelease.finalizedBy(removeTmpAssets) - } - - preBuild.dependsOn(copyTmpAssets) -} diff --git a/samples/hdrSwapchain/img/screenshot_1.PNG b/samples/hdrSwapchain/img/screenshot_1.PNG deleted file mode 100644 index 67828b9092f54fcd47f3d08b94010cb007c09e8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2221620 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�S}2|7=<+_E&R~1`I4VMJ`V2HBQ5`jb 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 kn+q3`!8fGQmdcBJfc4>)HDTzq) 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 tu=KOGC>ABvobg|p%1g%MZiBXTDTY8 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%0AwQuE5v`F3mR|9VUVEai&$-b~GDopGb8{E1ea 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

a*^Jd^v|izETSbu+RA&Xgy% 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

MrX#`(~72#++VA>hvBH2oPEl}DF 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 z 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 z⪻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℘n^AFFJ^^lte6*O=gRk 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

m9Jon6l_4rv5{fB)4*7Gds>K6Ph1yV(Zd}iv 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±&TOQ=@$%bvz{31Ie3Uq_U{R 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

^r{9m5BhrXLKYudOh%b_*?GZIgT8{ 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

MmloL3}_#sWdxF5W*-$N?QNnt`vyTqIwM& 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 B=RHYHDeD+5`^dm#585ZCxE*z1{6y9pC}l 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�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

soUt?9s`J1!LDc2~0FM9V5 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

y9ht0dJ}I2KBBM$Sn&4f$va6{O&3U<1>JLN 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

twtm5!0pD*921(BZsU2Y8HxTtp{G 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 z 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 V+@WkZyOqryZ<8$s;C) z%h{D!K5-fnIxSv$?bb@yRFx;zx8x|*5-7XOvhjPXgidJu2kIWumvzIpjR3mj$$8~^5o?y2M18nH0AB z6k5r}4W#GcPDM8M5#z!U?e$GPTHv45sy5O+C9|^vONqCpL~bn`5yqS%R17H!Z1}yB z#8q7Hgaj3^o5Uo&P+R+v>vule7@_iea6X~DG~e-s@Hf5Ly9%cpkV{U)C=3=6XxDF` zYk6r2lVN<97z5d?hTo2U7tD-?jUS@UV_k><#Y+P(+~1O#LN=R0xD^Nr?j8}J->6Zb ziRtLr=-3z-2NXtvPzn{$fa$a6Go(4hLoFqrMZVqBDtv?u&D1STVLG`aD1YGvwO<;u z7QC&gyvePhV4+Eic+rJ^%)=;Dt> zM~J8>if9TN{6^--g9a;*T#vsoa+8%n^hR2DjL%rezjx_9%$t&LKT0@s7qW@}T5iip zy&b~nv(gBcR45Z$=sj23E0y08)}5105UOOJnjd&pQ`Z(2Uh;f0y1fW$Ar~mI8&=xk zcHZ0DDjCF3T?Qt8fzN`6)GME!&vyav1Zi~qwU)TFIl+h^-dQ*QDF*pxj2oG17KFB0 z@d74-&`PjsN|LZp5499NTTRvSF!lGq9hulRvhP$##$L9j?$UBh(_I-Sik}2OiJJ2K zbuQHHQtm~lSAL^J8A?EK(`5OLmvJa@fp;QqQrL_CXV`53ovn#4qV*@%rMZE_xq*?H z%_`a2p)5S%ug<1!7GV`OCU&0AzHZqMdFHt2iWTnxzcsRHrBYQj+WU>9)I3ll)2NBq zj(kGR`De@99|xBuj(~+n(AC>aXCD+wwwmXG>x3UFR$W$Dwk0HY5gc|}$4IO8Sl@;K zacL9$>n)*zloik4(ZS#Jv(2NA?`RCKDG}K=Z32dD+mYRD?ET+` z+UD;90nOp@MxdWrwcFI*CBp0U*%Q?S;m6Kt6N6VHf9H>AI8#{jGenpipK8T~R*&A% z%-R?bO!)ZP`PjLA1rQHzp054a5cK!#d2mJ+%6K7CKg54H)0W2r>5;yL{C$l(U5 zN{tl$?}S#|j_JR#Y3jcqiPr0hH}eqRwV?wNQfo?*3VT2sWmj=#14yfF+XS^H&0lnE zer47=0O+S9t4e#jp5*}p0i=&tu08P)a37c!)>T)gN6HS_Vu0NU;I2T^F7AJupd>es zS7C(#j3oH7Z_HV)x`7mCL~$@|B*+zomCzd;Fb_#vQ1k95f{gcReS&D_=;|q}Yilg4 z8;XWPH0NjjLvVJEyzH+(M3;9W7S$V#sQe-c3CYHtW{}meqrU_qpQDE`C%54`qClaa z6?|<>@0;-cp0{Uj1vZcp%a+UX{&nHFjT$s#{rHRYO!kXX?BA`ZWH95PiPdKFNR+iM z*&-;p0rYdfzhvpoiVBS|Cfe~%eTb&oFhu{SUx@q3 zgpS2G94?%!^yA~tJ3qs$?Lr{BR=|kDm8PYlP9F*>7e5}Q6Q)s51V?`VkJ z1lvLpq`eys)r&|nEhz)Dj54!hOw#~6v>36lKgnTWB3x6?8Z2)y+E1)%UDsGuJ?i5j zCOanP=6}HZJg1;?`|iuX4kPh-vicz=3(1X0;+tJD6~R|L!xgIS0d%czOBljf0}L#B z-m(YdG{~8EhC?1svN|QI;$%hDY^dU8-BPfVimuctE#{cff%ixXhB)6oP58rjg*v)mq7H}(r5!&7^1kO zE2}Wx+3Msu#0=tP>ElOvNz4S26flL0`ci^neT^88i)7EbG$2~eUv zx{pZK=3IvAQOtT(&F!mQ@$gyfG6i~al4`=*kZ=}a9Z<0`dxMD@H6DEpz8?|zug)4) zv1$(u5E}-gm_m@CLs@juz~Wrj)3eFhrDbxoEhla7Gs|NCgV#9z^tJgA^Yyse|2+5gkKt3>E7#3C zk^OJQkd@afk(ZU957kkxM~0AS3d1glAZF*|zs<*V%<(|P?+vJui3mR6hEjUn7J1oz zd3jM_BeCNtt*zzc;==JRLPbTLojGqw|1~=slo;@N!~6H+dUv-d5XA8Fd&zwo&ZVNX z7R<`dJ~je>!>!-E*>=MB3WPmv`#;6K-+pJ8qPeHSE*r;qjp^$?0Us{k;?Z=G>8m7Ldr^pW@V?%1w`V=VobZKA%_}>-+OC zcQepHV6x)-;Bj!Ltdo_KlGNMMaYBzI^9%RVD9=8KVF=HY|CjgW{@pGrKMKXa4MxS# zzAok&E*;>oKoM#OaN8ztzkj66ru^jZRRK9yK05E`p2f}aIrq8VK?Zu4aZV{I+d(JN z!O~2QcU%8ZQe}R3*%2WfYa!3%4fTKb-yUuiaIcW6P$*6A*Q8?X$aw;n8^CD6l9knY z^LXa-&v3m(`17izY5k#RPdKdFMeo<~u^=Tyhezy+=UUWCEik}1Hs`17H6H;rmYhLM zPK~3zXm5I<%!A4y=nj!g0-iHnKTVA4i?9>E_1s(gaX!LHRa40{sbs?>Vbsu0Hgact zNi>YmHAnmhj{1(`a|H{u@Xnn9O|jT0k&nZ_Fxc|&ujT6J%v9t;pZ8~0mqwm`4Zj?` zn=C~v8mq^Qi})<};_GtxC+nA1hL&z?Q~R5&RV`ve-NY|8L63WW0m&(;dwhyqbxn*av8HKpY#zC;Dc)Ji5J!9ibsBz#{Y|DFv+fD<2Af-! zh~=uc6~*Eta*337c36iOA*GsBT%0DeD|fmcyO@0P_wyJxL((P($o_DH7#%o!G)d0I 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떪?&34dKH&CGseN6xWVq%)={z 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 z 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�gRaL2n4m3Q5dIuNnCaLl~)&U+;GO?f8QDKi*Z%7 zT($axGJ~=2e*;%p-R@D3=gZ)#rCZl$FD_ns`S$9as~2Csy>Rt>Am*FBuvnX)oI1a_ zaP53~vSc=^0#Q#i6PZ|;ZaV`q@`y_yBP~S52nAI{)>~8|pMngbR}^3|xa!A0{_x|E z-~GqLVIoz@%v@Y*F3tGDKIkSKZYPXN;j;-JO!#QiE(|{7*iWH% zfEfQ<=Ce_6l%W@Z1jh7;tE4K0)M(V+dF#zLzKL@JzW$AGP*=X!Km4$5LPdcTWm0HA zMNOzEoLaw%k}LwM(46YscVBt`ecBqDS+%UIDl-$=TCq4;ix<=JVkTQJXKST!Drz6M zSLUakp7AlSD_P2AYQ=251n;Rg=!K48)NUTNo9s?&G!uuycrFE*NG29cg#(FTI2j4X zf}Wtu?i#f?Oi)>?Q=lC*oF)Nt0I4#aX>?W0WtK* zi&rjRY*|aS9RL}5=_M*{Tt%z31!o52_nh4E#EC6WbnJav#_l??d)wv>8#Zm&aA?ye zm(LYR$3TMdklQ=1gZ@q~@rRtX*=%JhRcOR=RcE|pHM!K?gCnJ;XJXFXm>O+NS*8~u z?`urkCl}n_ka_FY<6E{KKXjtU;4oHaBDs>M*zi_og4J1nG;LH!`b@m;fu4>Nr#jjE z;fZPO)Qq}0C95|?wYms#Rkf#H9jMp4s-@=(vFD(?IVqc(HB8OfYgtWU>xtBphq59; zdBUHqj&sE9y@yV2+IDo)wjD+T>;7A{rt5KF3 z&Roe-s2a)*L!qXNrDUTHPCTuIl3Yob$%#r8RqGVCaIHR)%?ymY`?X_YN7RrkIZ_o*C~1#m92_xk%g*DQ zcO2Wih#a)O-E&lBT~upD(SFU5lmRK6>q*4Nafw3m^~O9k7Yf{ zf-9CXdA*WE+C~Dgk7bIW0@*SJOEPUvq>SmjxlkE{Of05}L==&z%omUzI&gB|?&tUJ zeqqPX6MGIG3B>ftoFN=nxV!?RY53s5PMuK{Nop;2QAgJc-hd<=0}+QJB7cAvjl;fF z$&5OgQ4(CGj3-p_q&l9Ehr|4Mj2-s%k6U|Wywk_`?%edu)}x1yAJ~6<)5g8qHtp#? zaPZK!eJ>o@#~nB%968Z*=DFdsM--x-agREkb*3_oRK^|**&WW&QJdLnGr`g_YQiZ3 z^=cTr!I0_Lp#xi=+^~NmgR6EvjUm-Hk!b;+{R-l$9Z%uU&0oO`YpCBH3ZZpXI83dp zK-r76Kov5J7R&hCxC+D{4(N%`kwPVvDzs8Q;aLNQOS zlIg7mjZvdD>m*7khd09J451yCQNu+xgkFIooDqo{28Cj3V>OJ{RU%j`k%_cMwNeFN zJkWIoF#MB>d0MSpr&EYU9GP5*K8ZRQ>kDKGu~5k4a7RQ^A+)T}Dg+`flBS`)zP>I# zpN-Z!Dw#mYJ2A>+nc>{-s2Zx3R1_%2&oDmGb%45U8b%a7IQgd*iZ)A9I z5S{+eF_5&--O+KTr@Lcl02vlD^o2q12qG#bpfwR_AC`=D74?cD($?75o0hZ-v7D@8 zaO8v7h>|0Q4*XqQMTkJSW!SYISHZJHSrwHBa20U|Z10zP0zQPRyg{E1?ynjS{ygD?(6X48% zAOaCQ)pD5{S4rg(s0O`^)#WhRK$p|&OrVA-^+v5$509=44iyeerBy;ToDC3~Rm;IkD**5J`kugBC=kRl&gv1sv$>p&eMFJETsnq$2^191a)?LC`fG-63fR zV6L24GQxw+W&SPqXO zkBb({NUsENWpMH#JH{OJ`Mm!$K8j7rqxh(_>wtVITtyR8qm>vS^yLz>%@-%8UMsC< zOcXFdqVNS0{Ylr-MC<>J#MJx$60Z736VvEFl9(+?Vot1;n9_C4GO&syN~s=A3~G8L zG34oSiK#)-qm3|?T9#Ij{syQ! zl~^GYk@rf7@0An{spME6-zDnkho1wYBq-$)5EU9{A;yCGP>qru4SXdPxS?7tH|RCQ zmI__`+Fo@qu+SScX0rjo6MFCwZ$9`WL0?aB6>$dCQ9nUFf+q}8j<^c#urNeAlptl( zs6f!U4>nON&;W|qSfL#g*@~%5yzLYOPATLP^g6~60BARhke&oM$5S9*3jAAMAt6D& z5Mz->U>6vm-C)$%>}K1j(PAN?-0=u?P%=7d#7OWKy~V7B5)vfdXf^8$dX?KdW*aqO za4xISWYoY`7OT-_x7ZzMrDbzi4My}&L`bK^iP+^BxJm#YJ`#2WCq{*?8oqZhycoiN ztNKQWeKif8%Vm?eeQ3eUgAXp^s%rW62Or!gR>aJTv9$W;H|MTha|T0FrSirbZ&14` zsL-~nde{x{K~F%muDW&0ok($o!p7p_<2?c2d=rG?svB>sMa7v3PkYosZ6)pU;$2$y_W~ z$!1Eaa4g^txr_C})XH3;Sz5TXnkuBT{D9!p0Pxn#DQPZ!gPOgvpog`&P>A$|Ro z7r+0>CqMk`GiaZJGdKn~5(?Bl`O}{$wP~}P_VK`3fWUD={zspGjz>tK6=hY>T6+}@ zz7D5JPZ`Ql2pfW$Klt?18?U{*c;)=u#pRi`g)6VzzHs--^3~PF%PVWwFRWZyT)V!y zN+uAzeDB8Et;E|FIJ}O z;dm&R@Rz15#i{Dl`NgFh7vP4P3`&>RG3K^qi`nmg_Srvu`sw%D{(voR^$@Ol)Fluq zBdel_>ZiT1${QTdl+%k> zR`c~jAmVfR#(WW9d1fM>Px~T)U?Q5Iti}t;!ephfG+mua zPbKsw@Rf#dwOods4)kL1d51Bp41F9(=S9L-;omAS;s-5}%p_F&JwX4?~x8cf0R zVUIt;p{U%4Q&5vshRmykNxiZ@&icAMogDDqJMYxzrz>-lrRj!a+#WAvyy1X15(uT^ z(QKl+Fyr)$jd{m|$*9Zk&QH|f+&w`LoZy((X&lDCnya~T^)W}ta&|~iobWd1JdJ64 zW7;}7KR!9{nV54-%)8wI{f_O2wr+cF+pbdzgSNSts!oNg)4|$oxH{v{RvbZ(Cf0d& z=!LV#PxW%ey!wQuRu|WsQW9!i*qjp8Dm}GoZ!Fv~WdEoTUeW!OH?AUqm?9O8y zdr$S98D<-7(oD%zteeXXW2tUPWVHi>=X@bqsje+lq`9J?Tw|9?edSV5x!hYS^;YXF zUx2034oj6I4wtZ4me(4>YK>K?3{|Sb`CNaw++V8?R%!$BMAsmz^SN{9q&i`uWKUJb z6Gcxn>tqW!TectDvg7!cozLw!boxNgz;U7Ad4;swse4W)J1h_%l}kH}>PQX)RAtMa zY}pq{*(GwJD_~BS+?kRimei&4j&#wUDcZ9oXRhMR6s_sJDO0fI%Z^groz7XpAyp)- zNG8?Ew9YZEK7F=l*RJQcZ9B4a?;)p8>kFxa5tT2b(3@HN4xH8)xZ#A-8#lf&J5adOoqF7Q!h?ORp)@BRlXiOc6Dx)!_*DLPnJZ3eX4hOgfHS5TZZJVFo zwSDvct(*66e0I;aXZM`iwg14@eJ2ha?m2U!`}B!3CyoxCKB7|$1*7J4&Y8}F*gYPT z38SOx%oe@bVlbKYFph#DrNN|ADFj_F9NzN`2Cmxu^oCteZ`kqF6WgA8f(EhL{3Obj zCo!fKMOUoh0dFMYi$?viSTKx?7{LeHQAk+a z;UU7RI8Y+y^939!!U&mIgs(YHJPbq7 z9%Ad%H-Hh=F}6C$-~f8?^>lak^mg?T-@VSxb7&_uG%z$Yz-A4z**Iq$kB76TaoFfE zH8j}Y+tbzC(}~oHSXx0N)YuB4RoA)R?#=j28%X}Rg>B*9 zImX8jQGv8*)Z?}Hb!$<3f1E!cWkw(ju4>T%3JC7wsun4rJEFLXMp&nAfQYDqK{rSs z089Ak4TWG;AQ}yk@Kq1sD%daCb(>W|-tG6ObqcvctTSkIMvdO2(;Cr}t{t>Qp_GU) zFcab=DQIL$sZuRh65ApKQW8GgUzt*(F{m+yno5d~pNtO;(y-<5a0*2nu^2Px_lJ?H z*u>5V`VKDWL7-MZJMi=(9h0Js67xvQgs_xDZ>y2RlguXWrCbsa4Kna>^7w2q^ukIh z)Pbc;DKm_k)LJFsXhL}YHF`C)j2>{HMM9^ng?B-LjBLCY!;W$NLUM?niw0Kc*TThk!94B=#ZO$~;)mhS1!!6Y zLPJoA2zwF=(98;|5u}BVfuOs=BMOf_`V7)PlStzrpee(<3K`f0Hiv_RV@6g*gy1S3 z?wZGjYhrWSDXXFnBz-0+v1&h!?dO~!whsz@Tpz|&k4+4(B8e$#B?d2jL1HR>iNtI` z(xZTh;V$bErB0BTN`I4BF*Qh{TQRM)5`%Ldml(kF#fho+Kbn}PzjR_YdjwR`#H?#I zODWZ(i2|mF5`&sri2+VuoS1qoTtyR8)Jja%zsarI(5h`_RW6rCM~!-Tw-sW!RKOTU zp@kHP1jg}doZ3%lClvT5BBdg@3f?FLSQ5ll#104qbOs4j!GKS7{o?NiFsn{M7#wNR3W9(<5I6z!%wwJq0xXSHEO7=BCda09RW|& zqtHMIlv;(l2T@wE8oGgy8KAHc!m1z-)!=+_nnE?KQi3puO({iJ5t$f11TeBkKV)R& zc(U}bcsLj0@F-F#q@WZ*n|SbA6{0J>YIM}(#J}}SB>a|c)CwB19ZGCStn@aU(QHDi zE3;8+F==gflgn+h*-Rh~hXuB>T1}%?lig++8?(E8t})^ah$lr%&*1PRIOPO>_>j$$ zu6+b!RU)ez9PDL?)o?!>1{OG#FGebXVF$rgESZ>}sg`fO|NiX{KDfJ%SRu3`+-myr zl~J!BPX7AqueVthjaT(Bt9lSrf!uoMorN1W9N`GXRqI*RebcISxa!I)FR$IYa_PmJ z*IvDQ{??_1OG_7SU%q$`ow-(ToNvxIgJDm$l6~(x-=Zvu$|r;_QN~0wbn-X~I4HO!d>gF3S-+Sk^J8!?Tdi{L4k(*kXsn681 zgjnUPFj$GFK;@oo%${Ft%uUp$YUyISHq)41nNJsB*pY~)q8`7?<#tAsVYtiVF8hV+ zSARr8r$hVg!+`yMPGV6(Azk|u68D`}qo;$xw*LHQIAth-wNL_^Lmuk1TWg;zWIlmr zTM^A^P1@!UKK=C88?TeW|nU%Geg(%oxo*DuU0O|4#ATe-44xzKFR zHQ=T!Tv`TMy>S8VQLd6HPL$>@F3qgYO)N|sa38yEdS*O<%d@;MB8#hBX`PKCzYcC%UQ z4SOx1&A7d0k5^?f@dSb|vaWgvLc!0qd-ulU2_D5&q(WQP*L+m44rwz|Dq9Gyf}uL@ zcRi>Afx~!+Re?N=tJchJkJ;lH7#eo^{S2jggjFG~x_9rwOD|r1_1^5|)v2|G(o{8^ z2#$G18%tAD=g~4QmWld;F18$mRWhAGR`tmz-)Vy?VrL z>}OOES5Y&o7OrB1M6mkikACzGBImDPtxna7%@RC9*)m2M%hzzO$!IzpOGn)PF<;ml z&&HF5RCyM0l{?@W_l<|s(Qqc3hF7nU3?)POGZlelu2IT0%1*ZvKFcPnL8n(U9sw;@ z1*2H(s?ewkC-sJc(7sK*~E!8|FXCRAuq z^}z>7wc1kz()j^NsP%hqzuj1vO;-xBY;xS^3Z-JcXvh`ty8Otb;)RUWZgsewQ0|Y1 zV)?Wualkn=p7-xiwlXDZtz`>!uE)eKAs9CO3DPOpJ`ND&^>MFIUdg&#~ ztuTDmI%0Kk9kBut40oU0{=}JGPn_EIw3OZX{H|@=Hf-2TW(L%1m2jwT_%Qlh(9>zv z7*fm^bXI3F<;i5e9*tyeiIQzRZ0urjN|V9bw5vL4ZA@F6vtyGBo{9N!SSE5d7JFpp z?voq0oDi!N&4uK|VxqASt<8oj)Ba-9lg~H{9i6Nf&K*6~Ga}?x8oEkFP^(KC6O!hX zcw$OYDRx&YJ?Yf2%Q<2;_EqZo#)P^tscKAVY9&>)>s)5ri6Wa@%#D?r-ui6VY}cJS z*Slrgk!`za3JIDwW=Hc_^70iN)EavY=FERcj-)`Y=k9TPh8d zOTCp^f4MpkiFO@(;oP=8&v7K2MA?z9y3-X;Eax2IjcnR_Xv@yyTXsIbegCP0U473> z_@|Y^ZmZ&iSa^^xJS3H#(y1ajXR6@LRy?_?-ygL;ck+zcp-z!FR;jEhm9}L|&TQG4 zEsYiHo@~jHEso}jwtU%HthsWf(O66qi>Xo>Z8mSnmu-5B;DyttH*Y?)Xa5WCpvf1~ z1S1-MM58qccI|y$W8j1n%1}%ZjLJeWRXC;$MWw;8Fcc9);*w}Wn#iaV8C^84PGv38 zxHb}1jg3o2MtXMdI-paZi3CO*=E0$^LpwI@-TchnP0#Gv{Os=C8+RSux@X_!y~p+) zIeX%{lShu7Jb0-8`6EU(C!Thsb7RE7%I+F{+}1Afpv zg-R8C2|@ei(jZ5$m%)Laf&T6hc;mTF$j^6 zEfjMH`Z@;tyFiAAdU-+)i^syi=e=D6$frPh&?KrKV^sC`b$54l^z?M~6K_5me`;`` zZwLmi!!SlAIzL93M!lWKWpg+q#1jyXs)zdYK{XiMLOT>ofxs$|p}{^VgoDSS?@&J+ z8{#VJ8%VqhA!B!qQx$!^pq9QKP7yu@fOLg>yb4^kLy6hk^6OAYu$s%#uT1E|N(2N|jW=AAx58A4LgY zfYZTqQ3E0&_9<6IUq6{hi2r3U1{Pk2@?^A&o*f#bd)0H9Xvh@z>zdg6Edc z7C<{PBxq0v!4|puyFHy?|gWDw$YsF~Bu}cR@%nmO#ki za0bb#v3Z<95I!F|#1W##5@ita6NaWD#0tAn%Bl#xVu5zn&X7Nc;8mhlSE#i?#|i>^ z8Ha_FVxe}4(W#J65n?5TT~Iw5N}#_c>L>oyBqv@

8l&got5N1Xt1L!B}fc+c`z~S9yGK1yNTI`B&MNOVxZ0! zB+7aqF~9#moS2<`iA3u&=g>;)PmorCMC&tj>I)J>m|BS;Os&LlCXyJ`)Jn9FsYepi z1W8QMxK#56&;6(v>})M_2EYBrmdO4)9=m`qx=N-85hfC}^q#KAp690IBo2%$tW z`24}=iM&zhz>Gi#qpjmleCq_DA;{Y^GLX$_WGl+Qh_Mm|vBIG2GBH&Zv?TBo5+604 zrwK)?QED_wqfv*@3IUcPj{y2_#-wHRzRB^c{BY*-6=x`_ zHJPu!@x}v2RqI$)+o-Ayswk^MTy^cbBN&$J^pmTr>v0vss@iUVM9$y2)tH-HyM6WI zz3bOrxqbcBI~VR;UA(fod~NmotxI#~=RsdBO;kSk-ghX?0ih5CGCymvBs95tkW964 zM*AmZ=vtbgd02khB45zvr({k#D$qV`Ma_ahe(>oh*I#|{?%S{3e)HuEw=d6Mn4ejj zU%a$bo+yRl{%|6Y$i$1yVtuYrovG(5*>pZpY?P*!=VsRyD^s;ZE*S{>;a0*U;Sab? zM!1!V<%?^SAHiNe{`~VF65A-)*G~x@qrQ7TB4$Te*m7)y$`s;2o}L#RDm`Gx$?JJ9ySCaX}Y`Iyg&o-8?Uueuvri(B>i_EUh z<1Rk`{3pNt?Wh0pFEkFu}YBtO^8t6Set?Ts=SL8a;pa+VaiIkyKQ#S2@Q=?RJC1VKkdGiFD$-zx?HQe(?(s zYEiX5WYv1XwM3|070CBmg3xOH9zUF zOg&RhC-R9=_$qoGsdA<=)5uhEg^6meS&inBF2Bp>wAkJDU^3(hxyL+?XeR3Nje7!~ zbR}PytotH?QM+Z#H$Lhd)#_9*PKAyDIwL90Jk7)(gc5}ejek+Fcf&tpRC0;QsJ;E> z8`QK4iPeW6GPvp+-#{UGG@)vlTp`a|=L1NAR2xpAP$R6Cfz^6k_2N74%wN8kEM&c) zs$}9J7%^4~;dI>Ta$52DT^gO*HfBo{v$=_?C+zdbLa|&jmQDCV-b6l?EM!7t8o^*9 zY;#%zahxd79rSoZ9+!XI7xucmj!}ofYB!qgM$jvu3!~l&kU=Y|pEtxVq-<2)%jbu zl>DB~yllGPP?m<*7~%yF*`Of?*W-y^w(zsp{Qf;{!`CxJ}Q)p>vOT@QoKGN ztxSi?Q-MO=or;<=C(rdCIko@T*?!JQp{%b}MYX!P(L`1?F(oVI&Xr5u^$AJ7sCC*o zwFz^5LRV|5h#i(8>6GM$2Fq$`IfMA7HWR8$hD37FmhDHj?mV&k@R^Qb-g6xT+xI@d z_wczhJ%e3CBRwOW(>=q-Ug!)b^!bXZ)G(FmrfgB4t7!9OO`)PKR+NPzD_7r{DfF=fXCY>5IwJu z2a=c)+JM#bXJ=!=yN4gx}Z|&hhI3|apv5J#-tkes)JFj%ctUtS$hw?ptlGjNp(1( z4#m}xggzY81S8U5SP+g0BMC_)E{&(PiHso>kw@bCXi_)smhrd)J9Zq}x$Brpan?89 z<#u$MbZ2&N+qe0dy_=uevwh>PgIjkU*tC1^=Dmk@9XxU1@bUeJUf6$d;Q6CgogiIs z5nP4NfF6&@NUWk zJD+}H_cKpCcW|#nDxua@!S!nF^4^oEl_dkSUxdh>z2y z;bi}O9=ZgMj0_Hvp)9O|b_NG~F&sM@WMQx>5*Q0D!a#a^I&hEu-NVBJZ1ymVg@Ih# z0u}78@kk1t0YfeQ998rdmU^rpZzAmJ;qXZzAeM>5 zQXyZ!5eU(CPo|W~)e63l3y&7uU-XHiG0{i*kxwZ^@Kk_yhGC)5R|e^oPzV|y`e&ex zl2QypI2YPO!Cv6r!C~;Y!_aX+_c1cmBZWsxE{2^7$&7wOLwy4Bc=Lo@*slQlAg&a; zV4QDVCIe+lDiVvJWvR(#7KzcCPbQa$BtnTCW3Oo zJ}?wowTadJNAXcyMV>dxZ8tmwj~HUKE-@>;i`w23r(~T60HM? zz^K2UnA#*UO?+`;cJ_ZHJ-Rzem;QEQsy^<5K%ynEmZ?n=!==7BF@&j=7`#LhgO?s* zRgjn!B+<&u_J5C6wG(aUvBYX(Vxm&1ka_peKncMOhDpM>9tpkmlG%7ja&~OYgXheyDrEsPvLdtNea%x}&jjM^XA&og@ zU;<8|pCd(A8XAWSzM;fJgf%jRA2K{CJYPOecrhZxn0Y)td?xs8imT{OjRqYhRwkov z)M|7(K?AfnKJf&1$fiHDhBIuh%g?ZnYTI zpm^A9W}DSyHS6JCz<3Km7zVDAkt>h3xX9+oKX1?k(MzL0`OxLGZ=dZtd=e2LVbL)*4^Oelp+T5kPSLebeWCZzN{rS(Ix8jt;Pf9xAClvmQ6hgHhef~KUwtQW@ zCrXPh-Mu+?VR@d+H#fC9JF_-lnkYpxpey?PVXt#+)E9EcGvQb===Its7blmmU7WkH zQk`y=nw5N`(pa3yR`P*}Kc0?SM-6Z{&tJLpYZCDt8i&20=KqUdfPBBT-yeSV8LXlQ zNe>T7KwuU6VUeI$aGJ38H)NJW#9qJp)em6RC!au`MrZ%oKmYR&fAuSL+9G5DGSC7g zRWxcNOH&u_T$#VHuy|>4c5OPDjaH_r zvlkZTFD*~5%vR?b<;iL&8pssWP_lC45#bLAzWMUp`MGeyZ?WpM8ks?_^hey|9^07P<{Te2nY8Ay zajVA*g3f>f;r!pgRSycmRY@2t1ykvVR-t?`v1;S0XsK-V2NWg~467f&RRmN$9#?^^ z!&S|-wNanf>}}zyM<`WW)^K_6^2@hZZe1x)H`0}C294v2H{W`B3f`}%-y8DGTwKmo z(wTC~<#EK5v2XwU=OAcW^&p=D`2jqBpM6FFR$IRJ%U>dvA`XDxg$;j>(b?NE*AZ8( zgH}}FCv_V{jP;`*EnhkxjQTT`Ty3sVUzkdj(!rQNQB1jgV}(YsG+B;iW5IZ^u{2wl zszIp~@RU2K=pOjU-*1}S-WWrjt zguzuUR)x}X37o%pK9*0yxg;z3((FWGvKC6k;IM5jJB++-W25nWDqSsjBffE;E1ZhL zg^K5s=}NvhS<6pUqxlqQzXp?b%V?2+Ei+>OpZ<#F!IKD z88{mh44Ma#RY5m_)>SOj6*f-@FNO;npqc14vob+Kn4}NzdSsCwumPX)XY|QO&!=17kp(FN(#|W-U=-zv@WB0++N1yL;hs=qrGoE#r?dr1~J)yWZ zOZ)*#4QsJJTBr&#c}c#cD%BOGDz{u6E|vOA#m-XcY^8jzSm-Pi&XtNCrBZi3-$!Cv z^_MFHmC8W5I*4Ga(p|3fma7A)%)o&YojVVn9+pUb8E>lWP87$}RiD}_J9g^y_PwXJ z?RjC#uIKl6^_^0Rx-?RrTXRM(J~+(XGsHbEl6j)$WWkXskEcuHp0IhxfpaFOK3jHY zOJmuJBVDlibOS*vH=VWSD~^20mMvH^Ia4}o%;rtmyg8mwCz8rcPMs_2^Cd&JsLqsh z(X>ftR_)mPf>gl^hV^Ef?D%shPj~fLow8_JAI}<-1#_lk4@K4fpfC{ThNAp%R1k`Y zV@X{+V+zL=;g~uU)$;g5yLTVmw&T!_oySDH=f@r0e&3M8-nnc0zKu`s-t^4wott+b z-LY@?#yxvB@7uk3_wLO*5AWL7ad1ET)N!XtoG*LOv?}XJW$pgpD2$_Unr3tc#K;T= zGR2KrE!S&B-Di$%d2+*+uMk$%a{WVdD&hdR=_?zye|5v2XEyA7dV^dk_e3K8SS$n@ z9q4|b0p@bZstN^=2Rs2wrEH~=TPJx~mdm+P38iIqg+i!Swgfl8rG(M7RtZa)9Ntrj z62_}~43Z5>I6BAiM!39Tu~dLG3e8fu7#RvQUJ+WU3=H&kbe!(%Lkz?M?HAu}s4Rqc zoWtrD3E673gvT9HD1>?geDPq6%!8#?D~G|nNW|3|)LiP{hjvxNQkhU|Q1KC7i1cQ? z)}({|j=(2^#}-LNumtrOMw{r^#b8dAi{H5c zG`Z>hv$bU7IQhQL75EtN>KXHEe69{A*ta= zBp90*V>t=AQc#yj%ysBiUu4fJ;lVOtE5E)q#GqCY&w zaF>N5K1ON-&CaNkNCo&DvIgOF5H_h5a-~eFkit@-R$$02l}sYTAZtP~A48Ij41!Xo z)j=1Io_)mNOC%JdZ2?>s4LZtT5F4lfsvLCp@I0%vDo{=}piY`GNEYk`)mYFR;c_83 zQ^-`1qh@GmnAYFhi56jSsGK1_cbMWT=tkjk;rZhHfQYL=!-Cg`OT1X{8nT8EG^1b3 zFtKvrqQ4$-=!1iYpCYt2;GzR8)1~I+PI81bAr`aw(hzT3s=d z5)#uh5f20nufzg6GvIo`$8w#S6%s4*i^=Zzm=Gs{U1q>?vBAre={*v z|NjeDttVCw;VL8A2dT6q8oF8~QxNJzX%r0i#b|0ot&P}}G{M^iA4ddI@a00vgSZD) zfdW9c0)eJ5kNSWNtuz%M%%L;lr9NE-4txS9kMM-@ULWmf5M=22)Iqs?K<&?bf^ z0f7u?9k7JGOQm9shA1IWlUPeahTtl!iJo*Md=+UBC+0K2umEGIBd)>>iCsdD7B}Y$ zxa8~*S0N!H5eMOWO^+N|6`mkmC529lKn(Dt7qfl9lwo&uwDE_|(XKk|@J>GHW z*y!k}(d8K%MVCO6!(n#VjF7iG%&^wwcG&GkhaJI|(=qC>S!`C5#bVIFHy5qX&=XKW zE(?62;ByIm533cm3WPcXlE0q%;JeR(PhksJ;WtqL0}lN613s_GV*dKuZ{H-u>h^o@ z-Fg50yB~beCRVeTFGsRjkehG6&Dd2vgsTXv`XXEfYQHlU8;?ZhuU-4Qxa$1f+x59- z0Yg5`EMHq)y}q`1X>s}L>eUyo-F*G-($%$K)E7yF-ulMZf4a_K3gqW4IMx37OJaKk znRZS1`6-D=)viM~p%oxcSJ9tT&;*G<6XYfY=zu`x2cLd&^Ys@m-Me|~%~x)|`O?(N zY`#{=qUN7XmDA}`3QFRIM6sElU74&*7G~FGqp3)tQJK5ATBuhtutSem)8 zID2s^nNL=x>ywMqH(tJt=2ZXrpMUtz|NP_s`d^Tzwo#N}Q7bA6v)}-r95PS{r-S!` z+@PPd{r=$AwA}z{{x`p&85D8{=}mv_{kI$Q&H8);o}bCZ$;HddS6{tz`Q_Wo*Vo)$ zhfXVZj$1R8j5{!{)5?M|e{HS_x4<3bv8Y-vh^UAI;KR6zgk480MNF$6!c~l` z;7@+?wSW4jH@@+8c)2Rm)rqB<(qtu7$uyT|rq&kcudLP=Ci0D9b*>2m^vdj1JfGI- zl`5sg6ZQsE5v#*2lM2*onJ*qJOgF-*nA7D<6f-8XUT@G^9af9Of?ZY1U7hq+5k<8%}|=&8eu36(i&)!>t|?imTR{R$-j=ciwsF z-FIJl@4e+~mrGOi!eq@hX3N&gmAR>OwcrW+Kr0vzxWnm~JLtCBOwnB28}@~gkx(*h zvKV6dbhch9O*irr)kr!4mnE7@k9o$OE=OUa7EVXA^?WE9usO|k*C_dW15GDjWX$7@ z5L`6`ss(GP55^pwWl)=o7DZd!-Q6X)JH_1!1a~R!?#11TyK8_V#ihk5R=l`7#oga` z-wZ>Be+)yClXLc3`*o_hSB+Q`cIs6o!uM!1XMD1ke)6le;UIwyX1n+EU73&<>qe(n z^B$JmM3wWrpjx==b-C86o9h9#U%`64(~h>ZfL9?DR9Q4z}3W=8L zR0)`=Sl-wNq~S1F*9cd$o?6B$WR!h{fV(W`+r`Ucl=q{Ec(d5gY@Mr{B;P37YP7B! z*u;gkDa>Rh0=!qaZ{gyFwpCvmqcMm^)hR$FaC>ekfh;}DIH!^Oq)!jE0xCE2o5}>k zNm+vJo`IV>ufTz=(vtXb%FqyZRQqy0cR6W%)}`y3ZjE5hbTG&fLF;S7QFNKs^&JTjJJ#_`JF3}&QTG&VE;Rni5MAdhpAUd=qhd5Qv;gE z3CF51AZASK9NTkC8*K;1PpT(>UbhZ4er*PKJjH-P^&o%+t3uN}Nd@0#D0Hjkv!R9c z1^A(h{PZ}uB=t-5LPeutI@4KCW^SkQY3(ar@3?M{Ur7+@e0^AV>tV>wm4cC zLvIr3gpWu>5IC!31^=*uoGC4xCT6#u3siA2ee;p+I2;ELb6LvLIiV8D_;1%K^?qX_ zxR#czGnw44UFxFDAy+Q{@%u-rGoM2XLu8ZU-pyweHQJ@-dx12qf2hB7;{6UU1nP9G zz2rkaTQbz44*r-f1ra2}_Z5p}631QixwtTwMVFx_hw&0HanE=lsn9w{_nRx+I=HgMpq%f8r;pd~SR zA@>P>-Hs!ppHRzo_o5uxo0^l*xFjt^Zh##N&-PZK)`%9TzWtv#!O+;Q*#prpG0gtg zq^ys>BS_ly=>9U44t$P%m_?jfIjgBD}iscV&9s<#;vgU@}i&+UM>u zziu|*)$sKdp`xSXkB4WzjACW4sLtKJ`7cIyXcDP>o~ezMwRsM1IXW1CRysK^oBUc& z&1(&Gl{f??g|!1ZTxdyxzs28w`k54FG=i*?(0q$9Z6Q2i=>~1-p>7uFsOab@H(vL5 z?qWlGw=-2A#97drVXhovv69&O04aH+E?wc9pn>$YH!z*lKrS5XsDW`zzsg#M!Ha}ss-hGwI-d*@l#-N0#10yeSw#(#nV{bzwo$8_ zb;5{1c_LLdUW!A9IBJ8isp!AO;(+2JX|)wLdnNtEq#y+UjBDZZ6yW$0giWX#q!=)+ zbf%``P$-13owpW$(B;Vu(6f3_OHgXd)0sv#B{5kVu*MFO?Kj(}hS7+n$;BlhtB^c7 zcFQXU?BOUxOEB(ZyRoA(czp?-Hk%^mD2?ld=^#7|t1ONYbAc|KDV#r?t7lupo0CU* ztxM|bt#k*qeVsEx;TBaZ*_4{v zIQZ}1*cM3c2MJc~9Um4fn43eIhGXTud*I)B?~U}{`>E9Z|HG~*R=x(sxS11jzK3(x zu;q6dCg9V7!t!@igIhJTg#Z^bB0Vb;>1f zSBzD`USvipgdDXY_c4VG+&NS}eYF=G_SNW{dKkDWyRv!zE+nBR)EUrftDFPHvh-+W zIm3kpg}YjThRFz^38XiP(acpkJ!+_s4oE4CSaNc^huEqGBlSF5s4&#0NSclaw_CEBLQBnCyuhmP3_P%34}9>LPhi zl?DB095AOYuQ(Y89guR@>#5d6jT`lRtI@JUzHZ&{IS{R+>aAX`Ic_M7fzvAJ^qjzq zkC!e+siUd^XdgZD&f}{wHdaGJ!;X%-A-;9L$8NsKjkY#lk8pxpX2UKwpRJj1pLP+Y zUz~z=ByBBjn9RteDbZ5Zprm`Tabt2TSLxL*Ql{d034?`eife2G0_Y^KKGDI6&*2>v z1U|-&d3|Rw7Wx!q`iyNmi94S^RiztM4KkoVC+rJ4LyOPGm~gY^i! zIx+6=eLn+S0sr0O$JyR5;M;JVWt>^bgWd!N)p78?zRa=(UP7D6!S2ez{t&v&8DoGjhr$O9{pr5lAjP!60AfSaJj&9+!INby?fO+_`cUMVm2QC zHAk**x4-?X8WR^kY0cxGca*F@@`#$D-&79`pZm!Rl@%HbEq$MEnAhLW__V)&?+eJ% z%QtHK(dKRGu{FB9J%62Xwx+a?ovg{P&1M184O+yGdk!#7WZRX;QBRN?Ad60blK?fP z-SZpVN)Onco*D8*8-{a1i#E2zLn?*wv}vn(WEpCB^&^)4J-6ACLiE^x4}S_ZQ-o8o zlV4wh(6xgNyf4p|^Xz_`H45tg(crV~Y99(J@vy`9W_ z>i9or8|6VJcsb_{Jn94jOcBq_&0Rp?QJR=4ppAwVu} zfsZXc&PV>-*!MCoXN8dwRSM~Dj%pUpJwMy{cAFDd`j4!+GY|$O0h#P`+XVJaIM$XD zZGn^4cDPbws%pCH7EPr{FN{omOsN7v2&ubf6^hJ-!eQ-U(2fKpystA6KlF_l3d0y- z@iaQ7N$@&y3`}D9`#qA+6g{g^?;;pKdNt9cc^y7!S*O_)k5-G%sV;c6gZ7IT`Qi`L z;S^#tM_&bg_p`;xS|L9B#Rk*%igyW4#h+L_<~lo0t>v)G(GfG?;W&W&dBDv!TEd8x5wzzv(L!u zUxsMxGh;ZZ|4m;N#qm>{*PrCG-u0m$&6=AFwl6XobJhyk$}Y9;B7L&(3$~4s0H9%fmyjpubwhonY&fq%s?OPWwa{eBhl_F(*^q#3D zd?s1*@CJ*ew3*5qU_I%`Wxl^v2oRvrek7Eb;zm_%uD$a z`^{cFl}Vlx7A*K({tI|IwT~M#ovB%(60g7_?EbJ?sUgbmuTo?>%$csHM4oU0#9!G# zh=T*krBIT(gY#RJoEYC8{QWb`>%Sk|1i#XI{^M_P7@n>bLWl53ijxo9oM0mZnO7I< zlc50p{I$-2+5Fd)`?Hlsr~7h|PQLTCZjX&%(r4KO@>8L%jlxZf*fZcMPU3DEjb!A& z(+CO`H)prC`QZ@_RA@8==>P06eV+v;*zgEVV#GSAB`N0GmH^!NT3*p$#Vm;gmvE|N zF<~;5vf?Zho?2Vk+G5AAsX9dybAkrVMpGh57L|tclE<_NR|q3N^fW3h`uhW*p$$n7 zj0niiNX1vm@`FF3%t)bDIqQinP{eY<5b`DtMw+&3Qb2X<4?tt~9qRRE$oU|ZsTF;r zN(l+>P*;j)2&Y2Po!CpL7wDI$M1l5;{^0JRvu*Dpm?i-U0|29)O9AGoKTG{2X9yz* zcGlLFLDuz7-fiS)`!`iP6{=*Xg7*?ZPO_@^OJ|c@Ylc?SxweH~h2J~BS2X?nZkGg; zb$lXuQr**YmY=WkfQUQw*U8%ihNTG3ghYs+`$N228#8Yrs-oI0#}$sBcjgOqY`OX& zag>56!dyiN#Q89`#FzlCpAhIgW*8XJ4ed_4m+dp%hLg*}q;_zGU49mHoKKH*nGYR^ z`LZzPs}*kj6=Be5kzxt?U&0eKT%}Y=+<=+dgO1i9fNt3kYd7cPwQh`Uf;d(!QC7k* zN2{j4s?(*Fu;uGjNR-gD6P)n~V>!1klC+7EbR}Ac^8PYIjj@z)@A}n#;oKva92Ls- z0g1g{a1ssy1RcGIoQMiVR1FOnK+`mfei@~yLPd_@nla8W#2K?vyt$b9qqSqT%T*^i zw=<6@reWn~sxsonTy9C7Yg4LH?DlcN@ez?rPic8G$CJ5BdnfpqO_6WGrbnBmX|g7p z)wp|0i6c{OwMNPQ)Qjz{rck}%Dbg7UZG}sKsf(B{=F7aWjEuu$#c{vc-A<|m6AU1s z;ifWtZA`UGCMfw<2){ozB_IoKkpou zJTqnqJQWEqTt5}%aUrbJub*$dCZ(3ivg9f>T1(7SnonUV@UGo2&}}hvdXX5_@K`MG zku&D4W}erHJD_aqy&wh-{Wn#b{mi#7W>KG+ILc12X0?C^U{DoiokkkxO)R}#;iNcL ztaxWM7)%v)gbbHQI?vzSaQA}2ooi;iM{#huy66t6NgpYjdlPZGRA^LcQ=c@Fj?xig zir3vnLXYr2enJ}Ph62rc_{zXL-t4ST`e-U41T8l6=bCkLC z0h9hSG{eh{7_2?E=SQdSax`iT79b2-UxYrbR0|u9LR@oUSfOwrrB1o$U49`zG0#l| zO9I!&cJ)aZH#$o89sDb(!sh~3Hn`w|M;4A|d#mLTWyBjwj~T9W!oJCLk+ChmL<<^D z4YdmmowKAxigu!#_(I>bBinj&-lVgH`GpWqtFl>m6@* zD|`qI9k1(tC=I~ds~@>PyW68ejlpkKUZ5eBbDNT+Z8rK#=kAGrrdV9<2wcog<0k*K_~a5JaSEF@~z5 zAs!sfSO2_*c~wO3V#NUw7zuF!`;g600`O~?H$tB(hIN=@LRcjWiz3s=`@{90?>*k; zN27Y?J-Yb}DlC6O)J2*E^=;E<$}|J&h?L=9O#ilx3GzCk4R)_5jgjA_(}UbHw5ppX zym>JdrFXKtxq+90Tu&ik=n}{8B^+yoyaqTi!7o719&qDFwQMFcr?h{1apPC<^>+RN zm}f#ItYJ8v6K?#EB2vN4(YOdd#9$Q;Z+)Ki$=7^$(iHCvsFADra{PX!^A}aq|MET(umU^|8w02EX(z36K1wW1plBVmB#8f2rOn zC5N&A6Lca8Q6C!DpL`zu=LtM#psK}yf816vf)kKLd8IZ`uTw=4Ixk0RYd)x>*X%s+ zYX)?0z=Gqt?$^Wh`AV|9*$G`>*LtiejK(c;(lnblQJ;myRVm1>WJB*;1E!0k34(} zh3k{{x(ZxyCVz~C7Q#8yDjX9l@QR!04L$RCn;Es+beNxbhCuEdmUq$GwrZ$trdFZMStDf_7561> z+wtmbr6hIzYD`#o^TLM~GgXc3ed+LCnh9k|Uq5zZyXEiaR`8xiTRC*zlLdKRn?~!c z>&VUhXVez+pfkw7!9AH&A2L{c%RRb5u22>JyEMC&>!CRo;+tpel!Ty#Dh>>r(*$*V zX=xGdGwfRQO7S+xat@o&9hGwC zh0*Tj9a+&TCYYJmEE2HIxKlvYVw)AQ zokrm^M~Cp_H^HW8O;iG1Bo@g=@du!tN016;=4jS7rp>shn$mAYA7x7FFnwVqi-xRjj(}rGzylMM_rtG+Jm#B-g?9P$QGb>a|3D&7k|od1A$-IcXD9nol0hm zX&9<~(5hhLXTYr1_EYO~6)GUdx){eM?&gbIZ zDB2)iozy8w=`?1DoGKF6l;8P@g`zqa&=Nfn!5#;`PXa zEG$aDf4?V*m=oRg6|;#gd=I(WUeD3G;)DHTCrpz%u>!@FAWAW_Juby`2^(fKg{ z8IFl54I3Hq$B(`U+fx~1gPF$cSP@)}%d-9QDDmiCsP3*2>LLiWQysgM^WB!_;cYQk zOs>P?r%sZP+mJmLDzOQjB;+4u;lHeRPypaL2J;F#;o!3Y>_p4G#1V9wQqk9<1s>Nb zrBY4vQczrr<6N@MIn9LzQb(FW$dIyaJHi~F+V-wl{#WD-O^R*v5x0*S{iK9MRG3rJ z2EkuZ(Ia%magk&mgmcl*L%DlFnm+vgXse#Ntm&JemzB^>5M~IAs3P;eyro3DdPq>% zFKQ`&=;Yv-N2+ao`gEkFf0T%o_7;tb4PlAg$`Nyjy(tDLc2zR{TX7?4>KH%Dz9DRG z(yC(unp8yrhD2vxJ#TIflP;(^v1SsOK#=}5rNV%J8<8`nT(nYcGVz3O%6uW8EswPq zTnz1TJ}6$Iwm&L&QzYju|qaui=`qi~yWMNPSDi&&RmEfZ|(o*1A)fcf56t-21*wHAQe75;ieDPt2x&y6Ly$GE? zZFmQS6bJBB^2Ht)Y9g7|kDs#t%breT41u|)n@^?q9=}B|?FUhD$O3WzN|{7OrFbnf zJ%hh=8t1Xt8t2Gg@ik2zu;pOMe z8Lp_PUFjI?6}BmSpT?>XZjhr$i4mV#Ks+r%$fD9wh!7@D=G|>b`ep)^PoetWHq?9( zf+-1VCSt_0RMHIk)z$(-Ai2}V;vW!|g^NpzInLFlfO-s*%7C+ou!Pw&^rKM+Wkc2- zOKYSd35rofPlYmust`#zW%Gjxi$!4=Co@P5p@3ykhyCB zxpuKaH3MSXbSd>9_oIq*EefD3!X5odUYb_wSF&Pw6a+|2>c#4;={cF-zCCN;vpsU@ z8iT<4I&D|SkP~sB`k+~SUa|(s;%&LP!P;IpKl7*OD+lm1XxgdP5qi zj%vp+gnICo*rqya*RxtC9_9Xqd%ReEa6$JgIp5bhy$_aeMwJ3uT3k;7@Le~j3ja7< zlOqdKUd^?4>@I+H{}^iCyktvpj4UPm+rL;?7g(TimD$r^D(t5;D2-dIWyKv&f9~$L zsp5u^V+V;Xl8T6ryj*Dil+co<&?GhyFGp<=JETih?{(Q0uj?ebkus4#soB5?<3$Ls z$J>o}@^{#Kg5{^aar56Pv-`f@eSdah{J!M{$hr=;*G@8wyL^rYiDR`F6eeDFujY1V zG|f%T?)oG+$rX3avRtdx{-ouEt2c2s3v(s9!A^$099|n!dIMA=+R=Z#4W`CQlC&dgP8qno#iI{Nl za%xBM=*xkF?EA7)!khB>`wdL4V*$3&FOJs!zH5ZHEZ2M zWF>7N;Qkgwu2;(xha2k|BxcEpj)K}BNN6yh?on9Hf}^?CTBm2&+_v^5&sTI0N8exJ33Z|KY6 z6eW@$j?wUFi=MTMozE(t_*fv_{OS1nxJnqucnWQ9g20-}1C-s?&UcNa;nUx)p5uJw ze72gP8pH$!D&jAHq-IHZ=JBd*gQLWXd>a`j;*Uc$X0Ovp-GG}kR(aW9pIsG zH_s`Em;>+SWuNboURtko61vSc-~mK+Z?28`-{D@ouKPvZ!Eu=!`Oz#`jyJ!0mn+_t z2D??L7I>q|R*v}g`8jg}TF*@|MhQfkh(D8MO9`F~-6g`USlLR1qdH>9qT$#_>@W<( zpYv)Xb%jlsj%T;!I}tO+MFO;r!<21E^zbA^B!}CkUv+rn>TNP8H%sUXHOC{--0%7x zc|wY(1{2My^jni;41f0co-U8hLnt8V5==EdJ8(F4>ur=oN1_d{h)D-t{%P|*+Yfij zLIC~WV%pyu|3|MzruENW;zP-ij&R0|O)5%V_JkH<-ROMYAflhgGC1!po$g;108)AV zwHi8ZI@`}}<=Dy2yjB^9Z%Vu5vijq&;gd^?QNc7N(I!gnFg^^@=<%OVPdtIFB;s2J zP-%IozKgl7i*Qs~^M*Hf)azkm8hErAna}4O+sAWF^IDdXErk+`NzemVV4YMiyD8+sD82cdnAcl$(GypHor*Jc>WWpX2&p_N6B1$GJGxo+^mP?r@(yr zspI)!sfp9(rxwTdlo#Rra99YnaKf@3;uo16A9I>obUGH54ISo_$yCFmVlKmaD`y+U z(%a}#<^o)8^-%>C4W$@YOf6oP@%_}STof0ucq$7*le7y+))_3GHo{OMKYuh!x+Wrd z$6?3-SByxXYP)74`}cQ3zDi#F`Gs6Jr7lBNoaK0M{qhcO&IC2*<*%tY;A5O1o*knY-u_QXSvXDd1ABN9>7nmlYf zI2v)_EqrDOT*?D+(=5k{l_DvM8pN*$*m?jvii~`Qkw_rm_CI6K;o|NiIy~f`2$`lR z5a}Z%`-SmY?)#LjjrZ5^K!4_Ny`imbr4Uyhlr~y|5+cpOG89R_3jsBiUwBUhXsEZ_ zH4fGE+x=I9;ACDO{|U5VzyM4QzAhNP`Th9( zT)b2|ea-NIy<8W(dwU8Nf&ekZ4x{WODnU$*WiBrg9KTujL!KvA%(Y{ zg~bOuwA&{B{zVff`c!Jnlk;HnP){*fHHJO)ESPlHa3$6ZA{M$ZWtLZe5q4h!?b?j= zGQ_#a+9VMXm|DG;C;)6q6wiTG(~|zGodY!mx8i5z431TwrVcjb5-Mw}#1Dx)JQff&(KOyO754$FlLt8FY{{wDK8WB#)v6|3@OjyN~^+$%@jtHe${`* zIQ--VIw5cY7hj8TvAm>EvQs6flDA3&`}<$19vJa=<^m<^H0iLSVG)W_)d}JFheu9; zu9-q^VJ!YHl@uvaQqJaE7j5eN{_zqY6ImOGG;Gq4)D8>XG7z`?c?3~vSjCM$B@<~e zmQGEF)>$+XF|*(Gk9;_!j$W}%BjS8UGGJ1>-<&BLqp>a_qIDoKP1j9x=WT17n zb#Am@C=>&>PtXuk1oNvPbk7n3yYOL2E3qkf%0G1Lv4#HP84BZ71Rou;b)+xD{M}#s zgF*)gq7;}VkRtpQ!rb0JW59V}m_);}^A|nwTsmW6NMeke#QAJnQDX&stSi2vXy~g* zCHl}ZZJT5Cdhd)&167qdfb-fqQ<5`FI&JvfYt=3#Ll%3F^K`)eq71ufDTs+f_JS5G zTp>t^15BQgNkqdzV`CZqxCS_<{u?swulcp+Rg~gAqIJcw`U~FjRmnA?Y03{VwRrw2 zjGqtF>L^;zhc1A5HH79m4CwkeAUX_@XdkG%x9s{a7*PtsNFu%aDeXh>^`+zTQ!SQZ ze*i~kJ8=^hf1FJXC?Y6(SjCVIDTEewW*qESr0UOiVW%lwdbHYD8-~^zwO{__ry>y| z1Zx3;vxnSXtOIx{YR1yf2<<;WW+vf5`Jun+#EFaAVy>7&epI4UU@=*XEBS|R^?%%; z7LD7SrYHPKeE}N`5l6%|J*B2*yLa>Zv z$Er8&Gu9Ye2t>z#SFfy3Hic&f&0zkMM0l7UeR?I!3COHVApy^2K8gzBpA>!2N*QBGzRK4{5;7b$~5f8ytLt&@6-M0iMP%S#t-KSJ0H>ZlzV z(z$Z4a?aYS@w|+{N%d={Qr$f=)L`KR03IDRYoD!ppAI(bXB@Dx7R|2a*`+AXmPNbz zG;(%x&SpBzeW{)f`$Td%o@X3Y77`q_Vn2P1YHRi}IibAdw*)9zHLhJ|SmaI)w2K&r z4;fT_dl+t^#r%hSCzpt!a(yuH72ycwqXU9FfD`$8dM{WwtXLqnJiXBusG-3^c@*km zSYw0wkHm7+hvvd04~_`z~>x5rn(nBdi&R?>vDMw!nVz4Q!Afw8LmYnW-YlwN+}4H@*S1ro){yTsIZwZTQYBF=sFBlI&)?ZHm7DW$ zIQ*&H$lMy|?x@1qbc^7EeMDLOVy;7I4heB?J^?mECqEXkt{$&&O-aiiz`nGW+Lw&H8_uCJE#UeRb`np_q4 zF*-wB`PhaaxjaPSPW$Sz2dxfRcxnClj8{4k3PM8>$WwX2nsW(<+Fk|vR01G+4k|kl>s|u zTq$)=J^i0Q?{Sq;(H0 zC_s_NbU|q#&B+}#AA8>8x6`cMZTfR|=SIfAK>`G3$z*28-{)Sc}8 z<1M-u3rET-+nA}GcHLkgsL#~vfiMKMrOE#-UbcyGn=F&~I?e_#gv@`)!^v%yqWS>- z_=I*iXOfE=K#0IGeL7T!D(PCtMS*?*W6|$T1UFl_^2fMCO0u@(Qd5yNSq)GU`yO4z zvdvV2=XQ@@YV|c299MPPJyFBv|N8hpWB)mS8tt*_nenl|znoBY@&l@ehS~_;GUW~J}+ZmL%a_i-5$Ep3(R%TnZR8*zfnRDIq z^rM1z&wkR!W!~O;yjI|HwVj$?&{ELHa@n{bcHv83Svf?Fn8iwY@Kn~V*sXXgVZC>2 zDA&qWflq+eiJNvlyI$)+E7ppRZZV}Pd+0~mGB>x?zjzycw*`S<)3xCou65g4-8_Qt z%DxcnIzWTPfp0w?e$teDtVF|?HaZ_VSl-ILm0-c_cQ48(SYD;%JBGc}-pHuEAgey3 z*{f;mjfAUj=~|=1br4hSFRxkW8q&M|^(PzV`6RwzOj#X3=qC+Vg3CrR#5HTweM)u0 zUYyH@ShOQJ{`q=Li7s^d3`bjGYLhN@?NN-Bvpg3Be#!7zP0fjkm#(#X5^VV=+~u;e z6|aweF5uf?Oh>NCAnSh28vYLmf42U-FO@osi{H1c)BG)Z_BW4z$<)PK~AxTb7Q9zfch*fqk`~%wo`EMH7_8Q^5WJ}i>d+~292wbqbD63V8UmZE)MCjLsZ&NtfHZ&867dWLeGu?9 zIp8f5cwhXCp@^|e|8TfT<69UOEcBuiDF>z?!)0Lm_km<1I2rU~a5I(9%vvy-kL4aQIvtBm-fi|(jm**%!3T&HNz#u}q7yi>F=Yc?w3B8G#13Nx!SU`YX$5&Vb}qSBBP zdxReZdSP?M`n^vBtWV~kIr$gI@ax;Vwu*|#l6uw?dV9~dit>|_MR^%XOmCYOp(UvU z0s`{#NGqP6IwN#mL;C~P)~q@^C*3ive&wH`C9UUA_N>?C=TDxUp;?o2iij9?Q*=|T z)#E`-O|7)?``9ol6XA3N){;IR4SG&eJ|2gna%`;mv_N*0RMELr0zLD>Q55b4^2EK2 z(Vc8|G#Ne>|EOe11#?tJ;bDD|3janOCd* zlo(0Lh{SvW%;9Ui>X`EL0SBegtbXvX3H2wc^lzsgP2vEDYsG8iH5_nAaKwI4DA1KRJd$L?psL8jLE} z@PH#%hbpxa zI5>l$564rF#dbvqAT>#+*NqOpzocn?&+LK_bzWjIx zOCyvfg68#|sLqT5M;-=jY8Lp3wRicp&DPeoS_`s#`h}=Xp)55jjKsT>#w?DKwtvwn zP8$}@Kl(RS7yShiCV^CZby6vYjUSYRWe5aA&y<_VRyM}vS*>UX|t&XD8y?EdkjKm<;CbH!g?iQL8N(u~_Vo7w;`1oSZQi=IGKN3HU&U8M&u zg6~T_kpn`l5{*up$LbDAKg9_F-g>X)nh~iMGTZ|pnBCg z*Bch+n|qb>3Vv+Tcb`tkJDp?_T&P+tjowQr@&XcpAWC+ zL2sQKuW=nm&AXIe=UJr$uOAPr%cX1(IFySUdoW-yadj1wF~Vhm=1yZ#`i6!=48F&I zO@I!w0?<$i0o%cD&L(%@d_B6{SC;mus908|(2<*El%H*s&9Klk9mYm-y$_m#9|-yU zlWjM;ytu4NkAW;E>9Nao-k$~+Gm;a?!@Va2~f1j|?7S&-6xQ7JIv z^me+D*>A0DGTk3x>wRI7LjFTSqq*$#23{gag2y++`sN0J*awU3Ojo>mt|yq-HuSoE z9%o`(Sy$TwU+4W=*Zm)7{%_23+uIX@@UgKN8;S%yA8)7a?HicC_4VCqJ8t-#3_dB% zle@xFuPbpRGtr*7VfWVm#V1h3{Wi!FpwFR^N38zMh=(9@rK| z*_nE5Z^x%)?fqU>`p?{zVcd~7UV-Hkrt#YhgmJk~{OAl7Uu%1v(xNu7jjjXzaiS7+ z$nG7Z&Q-buDoZ#?;X6E7ldSqhCpvYsh8B&!{k5j zyU%fL%j{`CH3;W0(;13dF%!ohU}H`}RWJEBY3A1WN*cw2$>V&%NT2yJ74T-xz7Cs+ zt@7Ho4xx}Re)#ZyBQGVc*%nG>OvAqKvi**y_i_^Asd`rEH~y)Pr@G1p_lEOff_@F} zi0$GW6*c>V;`kSlLGX8=%k6vMsa?H)%A)FLebDji{hcg%_kG@Z*Ztag&vV|n*jo?f zJUqGZK(&$2xk!@sMiBYmIyaQk8=#7|=V4Olem(H{iHQw#av4L-eg84W_dZsKb0t zBwj*558txx*dS5aoW;}^#fBk+BGH`MiBhC^xt6n<$&L!Gz6qZo%RZLWn42$_Rif*e zx7=1DfGYK9Z*y0@P4HAXqsB_Gqs3liVV+MX4{70`e?CjC>WFoLWWK95@WEYtfsy3+ z@Qk=hT&B{P7Ku&FBy5QQ~9fvh> z?AVMyRHxJ(&v^$dY-CCsfb-E5S*qnGHFBc0%3r4AEYIIU7dUhq1dQzC_CV+xZo3 z)j|>o)M8BtC7ud;+rCHF8Oj3AR(H?)=sM_E>NUX$@4j4+o;hL4EJQT0*lW&oG_@=1 zn~>oE|7CllNE#Q-?3Ki4EzrpIXwUe?Qf_0#H!Pg1D|?k>rqOFln>q%SQtzrzVmD*EpP(>u_ zw*PM$;K1OXJkLeDEXPa-z$*#%8-Y)AVxo!0KCMX$b=dCssE*?@lvDmy{ z4esvj=`j5>%YVP|X2ti9!YEk(XG}08f3bc`9;!By-75alpdCKS<~Nm5lz z?WOXbyg9O1B2Y92LN-N4z7+QK+H5H@T3{SMnk-Wbe7K znifdoFWYxoE_(|Ve7(9;Y0|A2W7IC3Mzt0Z4Ap{YK!CC;!qN~FW*#_}8FE}f=qp$` ze;gtK|J|h;Q+M>#=qW9)#V1I&6s}s>0zeGbKxu?iZfk)KG|*sK$t;g^D(y(V*lEB@I3fD_W59 zPuBT>JK+35uS|?;^J>v~oT>`LydT-;qOC6l(auLWL2LxSWEg#!Ps|P}O(`~0-n@~> z9j-YWaW^Ctm7A3RZDIGTt2^{um4|OUnR#8wR+>6(xSRMas8*dh;`&>T!xtTLl?Fv&#Na<8M$nbPhLX2iy;b(yZDn0~;FLIh5Qw-7S z(LOrTHFcSp#&aD=lL%qkpi0D1Qr_5};6me+DZWbl*m^XV*W{!TI4bUNV3#b}^EJ_o z5l#j3xf5PtApoqlAksjQs`JVMP!oWrpATE38R)2D%gA&9vWtrf4wVBRGPR1s(P{e% z-x>z&mlTvv-X)`FiX*WkLjkv{1MQbFEi(o3rRu!Q`Pu<{87vml<5y)Z0B&+JG}B5N zP-FN;fN=|OQLP}Lfk`e^EZ}o-lx={S*7!tiKbR+SO`;ZJvWfP+66fGtvPn{aik`cu zcnYbZ4#r3UuS)>tW)sAyM_+W!62KLG;2_k7>&nVW3(Eec{;qEg)5Bb;SZIkYQ!nv` zN)FpjVB~6z%1dKFSj11OTOV`9I8uUfj6#n8(t~jzzRey5jASIX)nLvkQ+I11y^BJr zflxtFG9MBcQq;&$M}?BpYwOHjICJrv54L}zj~*O#mvw_2B3|RHl;}p^3y(Z>b747f zcWYbnIks)I*lTejOa~M2ca61;?K|tp$||dUOn^Z`T$~Ze#l!CfTbo!;XDbt>$b6Xs z6~ac&+R}!_l2GRIljY=kH_L5GCUV?OJ;dr9Z@=#rdKcb{US89i;&5OfB9O2o3Q2rQ za8^xob*a{DgR#9Pc3S1Dry7V^*5OIdFiehGJKsSZR1SdVY;Ef~(y*>iY zCEzlg6RQC%QSJEH{?tsWejf)KE!;WgGa<4m!PcCagU%}97OY10INMn|)kz9?>V-;p zM0=cFM%UP7zZKYz757pGeJQgMz{i&SU&%3^OURp5BJ&Y)&jD;HawDng!86v zs`Rq8DQ;&6*!!?z(bi#(cJAjb^dPw{Sh9Yrg5KLOCPaFuit91FfY5%iMJaFWTx4|# z;CaMzIfUs3s*&k4d5w{>s7N<+XWB2vZn<6H+c56p-Z03`G_+wg%5A^fo`pQInJWl}5t+!J?KUtIi1S-;PI;nQQ*d(e#7rtCJdY}S_{)#9Wtl%d;VvY;xF=L4iz z6YSaA1mi?`;;`K)?x?3^@KUqcR?xm88CLdt%V`;(yvb`JdJ?DA>&2JVz%RJdk3KyP z=*l7})y{t=E`VVaryoBurWZ#c>Ehx7Cham{dhNPd_xo>9J=1qu^Vx}SCjM)d1(RDN zbg1$-W=m=H$n%LR*u5;N4$ptuq%m`XXEaNX!|?Y!UWFppgeD_?6zp&StLhZ7LfG^W zh%DiYMuWt%ZL3}(d_$Ie(8RFrA0F4Kz*{`ho9QXGdfkU0xEst=^<+n=01^ysME)N? zr)h$>eZ@QS*cCnz-iJu+ig8MT+B^Wt>6;J)|_-LAg7h=tzm4sDMu(W3VEYPuz!zhPaNwaN&6ZrtX2K_JOkE+V;d`_3Ew7Sg* zL|HmubTOASCl_6bMW!12>}k&1ZRl?+$Pf0-aX=^T~|MoIV=7-^ahew&w~9t&%PU zQTgvbX1BJgFYI4kDXDyu4ib~+oEY1MZT|+P4B?Ei(4za>7>@?zOc7)~qT_h-Ifl8) zy@v=AY<&890^svkn(qge^2utY&#vTQ`-*mkRnAsjtT*0DR$BYo|1JOUIZv+zGN?i} z9H`H$_M*?>YeJrmOI`1CRkNL5WXnA+=UaJ^f{A&;ZKuB`mHk?Q<*LW*dY(Rd{{H}^ zL0i5(arEf^{bJEDvZ}NrfnpmQ*Qr4@g^?r@EBrGO-f@ioKycOeuWZ=dbZhf@=xsTW#W_4fC7b$6X5j()wp-5p(>r@J~S zpE})f?(_hOuufxFVIHRl?CI<2qR^_l>l|!?5DJa3I{W&_5~EyECWU5J14IS~pq=jC z9t2yYDWq2*=qE@bVc{fegM9{*k--1(5^}Wq5^G5qY!}df>FtkPl=%;kYnH{GD#oW^6*B zpj9bla4pWS|1Bl@AXOaCs~?=rVk^LM?~Nu&qcez?mZ17_$r! zm`tqFs%Y#g(94u6nZc}wQ-;1?2T!aDeQxwdjlp6dp`bVlCHnV)R)`nJtk;q7RVJ$u zYJz48x}=(Dix}lfg%j4J1r}jmTCEb=gryF8OlX9#E!YJ13+gRsQqWz(W#JQ6MgG^} z$>1`AR!e;Jq!NsnPF(-cUk{X7k&q8Rp&F0J=5jE+IuA_^u(uTw-yI}VG`u>zo4767 zaKVPqEQ70%lrgvp1k`7={1CtaaA4^R`WY17mUXO(;;Q>XU{)JlCG&ZBy4sH`;;R2m zV#TcZn~ACV_YzZkoq-j_RgXfYM-#2~cT>B;^@(YMB!=|-4k_kqq(`X}Em@zKs_PQ7f+S`$k|>aRC^73E#8nRwC}K4=%lv31TBn_u(g$&s z(_sarh2ScjOccI@)T5Z7C=zX*v7drhR|xMdyf%a)A+Bm0J;FO`K z8a_s-ekd?_fnI~6Q&UT;ww3~)AvJub7{MUBI7Jk?hlr2|5m#g(pP7Y}7?70wcf6a3knPAh26=n`nwJM0z`mr8FZvDGa`wZmq# z+YA;HMzAty6{A*z)oL(X4UVxU31SS)m+=CCnF37^bBA%s)l<9v>ZLhcf%)~~-#iPiPD9w1iD2uW%cTX zOSdntU0YqgymbE7rCc@t&PU(;Y0H#`3Z)f4BV36J$jrv zOA>MEa}oml*Z=yjKmX_7oxgo`YHhwc+pJF4XU{K!{y%qNskt~+pKHusm`|6}`Ff!; zT`x~nvz2snaWb3;Wy+b-WX0_ppFO`cv$oh+m?}+Gp)iq+WlE_)*i)<)C}zSVq4=z2 zF!g<6ngmDki{CR7?a?cM=R%CI&~>gAqU&eB#bEGI9}b%q!dXKL?baTW@00dHzW2*t zzVq#G+DkST3li&RDk8l?)fjz?U;D!DD?|=N8-%!^- zdLJPJ=MGDH&0&dmfzn1QzyJNG|MD-tCU*g;Tnkqrv7(IfcfWh_tyd-%>MJ+TuU=bP zy|#Si-j&Pu(1CH~#-%{mXVj~VdZpcAZY;n}3670hgRww;X~q@`nY})XKcF79arg|b zY8zOAJW8yntlquriN%D}y6Ta&R373}4@sm{viXA=i{=27CxttvxFD?ycOuIe%$+a%uL$-Rm=J3z1mBVK4=j}JAR~M57P&T4Dv??lxQW1yC1~Tq->U46Mn4?sPY-3g!TdUMkol$Lu zZ|S%l#-`BkSR58l#IHAjf-be#O-3t>ZB-_l**I!aspQZHLB9q~Kuzc}yaDh0g|*ke z`Av{FzR84Ir=aRSu_CzY^{){_s;_+wV^mR3KmwuAsESStNO08yg)Ln5DxDv&EhK!^ zy?5TBQkJEC6rED~th~`p|0f`sVu(mYQD9Neqi9aCXs+V563i9&Hu%t5sQcuA3&VbY!3j{VXNPBw^KH0VR zE4>Gv?AY~{=eKM)`s{`SPi;7~b(1&fjU=PNXuucrx_vI_qtnGmbAiEC<%xK{=_^nB zn{&a&tfw|LuCOY(a=C5H+?e$>rrnJhZxb>^s#Afk-hr(25Z$5lT$s7CaYZGmFx2Qq_#e7 zoR}M*oDVlZPL@6@lVW!o3o+DY>?op@WgzyG#O$m#r}j1aaGe_nZk((*#frK ztS(PQ3UzOxHlC~6^EGFo=E_%G)k%M$YRi?4p}0Y!)^_%D)%uZeWUx@^D;9bymBC7F zq*7&-%ES3We?H%x&-E7y!==(lr7}{jajG?5smvZ7?cToq=+4~YdUo58v!Jm1J__M4FQ;N%9p$ zr%NdiagQ83y?xiQj@|*sxIn374G#94c<$t;P5U-&+W+jcJ2q|Fy=TwS?(PncR}c!o zxaQ=hjk~sNK5*vDnVs7Y9^QSl_rwd`hmIcJx_`&Uz1u)G?cKF)KfCAj3r7!2#3PA} zJ)S0#f)STiDHAJTGzf1uj8r8;C7pOjr#g9P?=})lea|xps-7Ve0#aPHnK%YM`xO)@ zeEJEruJVM#OyDYtt3cBO#gAx)*~bM?f1soVtr&Bvw%+&!(#BPKlOB|Ixk?HOyjUhw zXyht`TBeq9g&d(&D3Az1y&oPKOwd))Ysj4rmN#LannN-)zjSpV^Kn^x?u@blXQ;qlL-!xGJA_dEIKzXi#ZFQy>GV3B=6}!4q)?B*B>Eh)X0wu~aCM2*_lS z0_X)~(Dg}0Qeyoim5G%ah2E?;phqF7PiRb_P>9teFctz+*ae0^7b}z!WI$?}Mz5l% z2%b-LIuY|!8adQd>y#?3Lavm+CQ7wTf^+|IVUN&08tn?$Xp+3KUqpup}f7!BwafqcsB!IE6YahJGf{3YSnB`drY$ zsPM=Hf*ke;WVjp_C00~TCO$np8r%ldRkY6l&6Fs@q(KbGCBq2>5y_z&kcjIK1?Y$9 zzC6OM9{R{oVTcuZ%;*!l;o7xp{}8VF-$~3qzBn=U9>i6U9)(Kl6J7fy)A|P6iD`%= zhBN(-CI%h-x2O|S^pB)Rw_<41gS@Gom~|vE8$6Pj)sM75u~a*)FQlvrQX4-}P}NSf zkS0p0+6hW%od>L|7+j^%;xtJzjaoscGa#=Di3~>!qX?W9!HY`XVT@EICFmE?5{bf& zSVs)+9tK&5%21QpPz-|BRkSJmYLNF(jZ^*+`zH7}65A-IHMGe>s!j7)ftXwo%PBOK zBGgHS0E?6(w<5vFDI?dYmE>IT&vTs?-2-8#&>A!af*&Trzo0UFv&gncvJh7h|7SRC z!m7}2vyH0|w2682Ga!{ISP-(R?HFN{e zm$bsb!xBDx+!n4H!8nv;eqU-`)xuR=)I$(g(P<6gfaCe>MbL^tuO=>m7<2ut`^2ib zyzGl7+_4y!&u=U)-ltT5gH@3k0I49ZipN2qLkMSckFqKTRDrzl2FSJ7U%T@1?S+dg z6LXXGsruC7^h@u(dFRcSF5J4fd}aB(4LUy)n5mTc4k- z&rdbxC($u*bz%0x^1|hnh09A5%QG_<7ArILOetNODmNCVeL;697RXj|;Y7GHRd39p z{ZVPMTA8jDYWZ{t#!P|c>?9mHLv23$43+pdCaEZQnp*UDduacyVBlpM3J}cR#xG*2~vlyL;)yTWhzjtlqe^bY*pR zZGPd>%Ix{2*$Yc>f=icIO10eLrKQ!ImliIs&R$r&c=zhU<>lH;wOG&B=NgmCv(=df zT$YK&X^`)K@=Lh9KP4`E6iC7DpyX$*`}GSr7c%P~RDe~CJ0t;H@Du8M_Tc1?csqy- zA-!uLkf8!+dg%xWG7cSnuuy|=mM3+_x5k z<|TLn{Xv&EFcymXs?(K~8*6hH7sp&Scw!w+Ya*R!8%a_2gouigNBSTU!Kaiys5H|O zq*o*Zo39U9Mdt^^B@v3K(6s8~k1<1V)z^OTgAcy{{rCUrpBQ3AmLRv^d~Np9%H-Po zRp?8C^rdWU@U;!8UsZz6!po&temb^s*t0Sl)(2B9H`uf*j z|Jv73h?y0Zkl5;&Cqda6I7M(3BdwpWy#GE8ug*lUq5;?6d+)_}-@W_x+f&O6nQ9@L zPxxcOC_Jta49k@$WkShlG@Fd&Qju&ToQj3hv1l%tZIshxw61b`$9-XcBpr+A)1hR{ z<{Y(HjbolMIDImsu1u@LVLJ3^I6o}yIJnS33{qS*GCV-7s|c||Ayb&6s8muKyNVL4 zi+6BlK#HQ;vL07K9VAwSZQHXM0&!~Ul>9NeRJp}1;3SD#6jnz2mXSDf(HXMBwrcWrV^HL5t%%NpSb>eKG} z)EITpt55q7A=S z4CWh%#+q}XiG^r+DlAa(!WnyIGF)r~iVb&p!tLKsX#E)I^kBJ$a*6Ye=HVCCaE(Z#w`MU zk7$FS9Ola9{CZGD_*6UJE`gdCDSPR zBtJ4dh}trrD}!;bPOTp`>8(Zy8eS<>1`T2e5v-C74)(A(Lmb{Pi;W>B_t??=C7+4BT1bhq^YZyP6as7dw*I$jIfTliYyUhL7vtmn;@&|ffi7Z zNl{P*nI00ps<)>L%IPW+$EuT=c966TpReJeKE26+E_E%6L_rl*!Wq*l0*R145jYiy z#i+EW=Ub1Zn3_Zwm_;f;IWne}lOXOZ`v6O#jOn4hQ&@Ii=;j1_A^Ca;eytNck#&NF zWEaU?&N1$kfg*$EONeQ7dbLK2v)yS4u2O0g3Z+a28V_h>N*UZ)G-wiINGa^>WMVn2 zMHq^!lxn#i^ggp5Ba6$?PzaVfqedbXz~e{Ewd6_-)ECJK#-cV&MvFnCS3{vl$dO9< zkO3h!O$d@yYFL3LNU&ci>3V1kEZT@z!k2@prILvyIQ1kKbQ4giaQ;dj{Ddb8ZT+CP z62Q<5=g5OYg)@R9QK;lX5g+!eQY%2~gcFCu27#kh<0)f=bqsz&Y$@P6=*>Fl^mQgJ zMrVh&i8u_xv1xT`wMMDcDM9H&@}*V4hHzkbB2u)g5DPg9xdHv(w?3Q@kVIG)lllZvjj&n6Tn-D}2HC?<2wOq3 zRClJ%fD$qV8TA~Jkr*|t_Hpm1oML=QXp`d)1=^JA;ZW-!>&&d~3n_1Zh~RO8#}%GH z23OJa5HtFciK3;460`1+M0fE;iK#>q)6j!9R{#5nwnh_E^xwi&lqIcC%!D1_phkd+4qn1Nw51$(e+J&}_5{2+-BLs&)UjnVDKnb!TQUb3Q zeHGCSkl-r1IkCOMf41RspitbX;f%DMc6ZAZ>3hr z^*S}7RB*I-z_bM0R7i-gha6i*R)u>f@C$dR#DG?mm!ZI};p+nfdN^$S$RfAm@zL{9 zAi?l>JU9jXoQb$f__C8ZGV~ZZMQt$~tQMoiLLijQgl>R#^O$qg?RL1m&;is-@4MAYt*L7^J_DgZeMInSKj>k`#&Vq=Dtu`vA%?W zDiCBbgjivo*dieZY2hkZ`y)bjKKbJxKl_(|`PHBQ{5gqK^(hJJ1mzTpAw!{tNS~l` z{_UUsWa-M<{H5i^tLGQ5UYNhQSeve9%eltfrn zCsc-Q@!kAOG>s|Nifvq2D6fReg`f5+c&x5UvIVMsTul;-CJ@zx?F4zkT`r zw-+z3TzTo%wO8+5ynB7++J%XQsZ=3(`NbR8U%k70?E;+OrMuVQd{?fmoxgn9x7We52Ta;dR0va@*}Dk8dnf&OmFw`~!xl|J7gq^4q`u_2(p1)(?rL7#!yx z|Lebg{~!PHo4@{*y8gk{hD(k2sC{=n|NJ-q`mZ2xJJ5crH7y|AH4tbD?h#xoyiG)) z!i8%WV@dzo%?ooE=a(-pEL@mfy1IJf&6nUtc>UwCbTnJdk9!@3X4&m^S}po;JUD;# zydxSl`vMkUKr=duq1GS4RrrEDPFC;Ub%(1e~9F$+^ob&E=WmWVt@yNaka3l`g+@ zWAVyzv03o=$E{YJgfx>+uQ!;Yd3@wr8H%Fdx%&1`e@dy-w|@Fl3|2*i8dahE{O1U& zi1F07e)1EX9FX9uwt>|*NbIVw|KJC({E(PdA*=e{_YhPOyDG@P_r34I^7^YUPOZ*O zUs#-2nTuwk@T3{^O0z}h@{gHJYP-YabXk=$fz4qa9W#ZJ!O~PUTQ4D?k%`O}z0>6| znRQkxjA!K-%9Q+Lfq(7FaOMh=S?><{=${#t$;N9Re)vW^!aBuOWD>x4NbD+sPY1f;;3%RdOh0Smu+ZTr``E z7jyAqHk67wy<=vZDGIt$t>}*ipht#t9QTYxQn5%n?ijb*oHkF`ZyU4G!7f}4&}Z;J zaI}LK$W=IFw?IH94{1e><-sT)gT=ByU??mSa9}8`R!OE;R+g?@S-O0A`O1~m>+p%V z2Fvp|Z(g{CQv_1ENJtijW507}?bfZ;8#h+Sw16OLLHD`cPn_KH#Ia|eIQ;B}1J7*O z`_zWLUqxp?=eR8x3+C&k>P$172%|G#DLS!OY|iIuGpSr9n5u=!GvTSlP;=HhG3Pao z>sd0H%B-$Ujn^h@%^7cfDo~y9H)ezNY2UzL&z}9y?LK(s(6O_zl%Y_y`rUGOU-#su z!;{Y*C=1SH-7JqwB-8VXRb413cQ_5+pt)8XDHo15C%Pvl2kVXgi7EEPoU=adY0icx z<`VVk(8PSCKItVkR)Ji}Jr*3x)`HFXNMk-+o(%euqlKowHXSL{eA&`idD2s!aLKje zeikp^NapH+QZrPZ2o`GYRMwKon=*NGCU3}<^wkM-sV*&)`S}8?P#7#0`|{bIa(STM zWL2s|ndG^0xvx|jDwkQ+DyLfGR4S}uk(J90n=M`2cOKomW#7h4yPw^-iwIJljT`rF z-g0p3_M4GhlgM&0?a_U4vm`VyW8Ln0Mg68nP0{>LjbS@j?|G(_L z_jeq}mG}!Kk^sRBFpCs(K%Sg)&Jj6dFqjz(2AG^M$QdBOoR#J5?>fq|y|!e@_O63u zd-M0azvkUr)iWG|q%5!Zy`Q$uJ$-trtE;QKtGnxd=H6RlqbtI}Cn^1+vwf%mD ztCMT@H1`Zk-JOQcUQ00Sh{QUBWA;$Q9vHLvM=c{`_Q1Gvc+@@=a2YI`%H2nI?5tI5 z*(~;jojdnbqM6u{-Bm}cs}EnicxIqaKG-km=@N5V>JA<_ee(3>J-bgHt9?Uoxz@(s zudY9LbnnsqRfqRg9o}1YxMtr`9k1ci+0zP@AP{c#hdlm(d&uuM1f+#8OmHjV$6S+*Gu&LM;)hf(pqra41jn2xqHXZ`K>FMvKd;HR+Tv zST$a}LQP$ZDTcvY+9u$zTKzSgKy zX;pHC%;>P_%?2?%_(HU25eRr9u|TC)OBE6>m&NCE6dI+~>ohy97-LAQ;PKfkR%1&` zJ(t@olJJ`vuW)%SEv&}+IwVtkAy=-J!Lpf5N7&MW9)GOndRB8CHLYrCs%xg9&>QQx z92UVd z)Vd0e3qx>p*`o}I&>w2tRBqq&1XmSV6@#maGzx)KDGGZLRBaQ;FCixeR}}^B8Z1ko zs?-LAQ)PVWNehXTXcW@{%A}MJmEa1g9J)s+67jTpT2U!MTVj#_Ik;+-6uvc9y9qutaA-AjTAflX z=4*8dtzL;hN-6~X3qCX$E(RlE$>k~;+-0GdCs#>Gd@Hp;$dgEg0s))HYk_mon?Ng5 zfar``lg(_fnxLuh{eq*yhtKM?lK5GASfarfJPm~Sfa0b#sLghh*=EEm1Dcf0WOv)3 zc~A_5`0=3Og~@_}w_pV>om?(d$ORxG0ZXfvnJs!NRBO}{J4KwBkLb3jz`_bBVnq>y zB1!aOP*>Hklo3RQGYJa$@Brea0NoQ!t|Xw2@p){5sGtV)A4Gsi;1n^-k}1(Q5X~T< z&BU}yg=L8G1bn-xP72>>k&r|EY;b14(hG;sD9WKqLNh7M!nY8mTE&v^BBDJF`q=;C zDohNiB8eePe=RZOsVp%Yo|l*s#l+yB|GyGLm`Gy4($k6AMiR5n^Ab~nBxcX26N9OW ziGfxBL%1rR&!FiXc!5Pt6r2w1Se}EvN`1NvSagip_3zI<06EaH+^wz7R^E3t3^+o0g(@4 z)IDMvivLRpd3-(_h8pnArW5_L+0F2i@$Vp02g0Q$BwnZ@Er$m84E3XW49atnSW%*M z3vtzKyU*7h3c=0(Z{Vt>yY~Xwd`B?!6>-(pTW_x1+_?Vu?)3f^kAKzZPwLZH#_vY8%ryvOg$wkS2s)#v2puopPS3ZiLe*Nb^!xBB|e*b&e z1+hq3VDb_lp+dKo5ETfl)A~WvUbwb0v%au=dvodLMtUYayRo!-=lbG}_1O*do}1fT z$t_HcCB}l|BdO`!%-UjRHV0=hy)tVy>$(TJ`iAVRK!duMG!#MeprE@KPKi^u=0L^3AoWmAUEFg~IY|VR>%p=C$<)w>IwIT)wrjaD5e)Q!6ub zn@eMfNKaqKSYk9cpPO2Nk~5>xQRuY3;815zYu`|JC>l!S)4%@HpFaP;{}<$s|Mg$c zs(<|5@8~Tn3BttUO~fX_`9iCRX%*Z=C=Wsn-~RBQ|A{7JaEaia{`t@4^a?7W^5Ffq zrdA3Y_pV)kbaV6G`sV%3)jQX6i_?Xbnd!BK`K>j$BVMmPl8*YrBf*JaG#4AoM4kQp z_TD~6Z=c@jD#fn)inyv{$R|^)2STBzHvJ8_Du%eq?u1A8zlW>R%geT|Zd+&fSHV?l z5AI!mdI z44K*{v?~_p{$mgofm75-3gf2#>}QlxQA4VKDB-G-OCYtVBGy$X)G?4u8u+abKm7U+ zfB3-F#aq9q0^>2M0&`>{gvWG}zhgHt6N8oi2B) z-DcBw^mqpYgB{RI(-UT^9==mBbPh~};Qa|BX)?}((IXqQH5lr_7}VjicKQ0OX1zhD zjAv8tl)C{Eb1Jl%B1TnIN}!6$3vm^72BgHQOt!HqDv!SL4UAy*!3X!=d+!dsB;R^# zc4M`FWFQa=Pvn!~baZ$u=nDr%qNAbYcq9|^jSj;}jiq7(BSQltgHY1tafB1&LqT7^ zf3Vj#;P$#~@cFQtVQ7w@JiVs9uM1;y=+&T^fC>QvU$Yhej)v<)16RS=7mcc5_zMGl z{LfZI{+JP)44Q?_O=>*F#8xNXf3Vyn(bh};fYh{#T368^>r_m##>OKrHxg&S*LNeU zs(BT0)rqPdI;9Lgl>Ni~f$>mqJmj#Mp5Uskn%;RhSPca81%uIL2B1;`SnXWpV+<7c2 zY8rHk&1Ruk$&IJ&sf@GLZ2{FRn--*#C$hOqxqM4D&z+o-})WG)>Yl9!eAoT6O7m_PVwai z&Pb#yn(2>adZX#iXu5SgZjL6M6G_`d!VpUtqDe_SEsrHc(I`6}XC;%IWRjgq@e>K& z#Q4=@vL%&*9DXt>NN0q(NkuHi9}Dwrw&p#1PwcKfT3J<#tZLW(UAqodRo3p_eWZHN zu|4}v>^*Se(9t)ls%v&t9YIi4bAHc(H?DH!=Q;8tjl4^0#TBLOicos7fy)!}I){u` z+2X?|uS%5Cz?e5Q;fW-?k+^$2?)C?5PM0DuA|H?NBEbfqF zat(}5LDejJ1;Y67+|in&l@-T!BaPbq@{>^Ohjt>asw`Sp?RvT5;EoDVRjD)Jz{tq( z=;#Qst{QzFsCr7u?5&VemGsFnp}OJ|XjNnr6jiv}y*iUtp^`~K88+$k7K6cJP-+w~ z##89jBB=-glYpzxC`A$>pU;)Z#B!BfAmno~76eCuP+raDvbh`<3>?)ujasiU+Dtg% znn|y-7}Z92HK=rEgHo$hXyhur3JwQH0nxylK`FtI=Z$qj5l^ZROO;}=Ojuucv8mw- zkH->&@~oDr3~IiRixy8U4PvE4DCToG%`HuJjSW{C8dJ z$h_2Ay;2F4kpD|SJyELVO0`U(mdaHUi4-TWg5IdmDxlj7gdF$@Cn%MQP@NGAp!XvB z(PGGUXcZ`EMzfw$Gve!Kkb$O#Iw=O*GT979n^6xcp-E@4n;jmz-DRVWlOUjGs+Cgs zCZcT`L2NXZdOf+2B7hQjdvnMs70EG|q zV)$eecORTP3obHzsS#IEGDYH2m4~JRp*c_CDk|^_D&i`51;P6Vx)$Q960v%g8I>o7 z9{r7p+4-47kF_l^+el*eCutj9+Lq|nZHd|TbYixZC1wLj46pi9V#NTb7bK?8^Ab~n zBnJO{wZ!nDXA-mduO+55NeoqbL1GI1wVIhiBr$sy6Qxu%l|U6u4aQ;&TKK?I1_X}{MLF=apzi>g9D&BPB2O|gp&~1YpJAQaPm&q^ z2r2@>O5iz1qO6d@Pbgok9QV=^z^ul{o_HOS8VF0GJHiS@ON>__G>^;!h*-*?*V1M~ zK0N0Pw?Y(!A++!i1W}QnOb*mjYB0Wca0TBTa8fvMhao$@n5YFAzM-)26WcKvyuzRX zcAMGhw0S&Euh;4E*xfE`Tf4ix-QCuP(%$BFIW3Us^*THlwaVu7*lkv$-DY$;%r1w? z5btzatrml~)oC)o#YYSW=S8j(2KIuclIbVlZO-NK*c^5X zT3NH3;j@jniUeGTts?3wh}?=Rlkk-?p;9jD>hH;~t~~JvEH|)v@4eOg_fw0D-Jy_F zsmv@aJReb&%hR}O{>IJTaHM0{uh8jz<<5Z5cmkqn)jRKOzV+tf^|dWB58d_0_ul;W z2g^6tAqN9{FHCMexEUS~g~mp1KD_rc;_?Q9EaU0WR6ixSs#M??#4!-IBHbWp}j7!ML~M|yIn5p@aS+K4BY+w zGs_F~K(uZ2i1?F`CWZ@8Ta}_f&WE3V3T>uH4qE;(!Bv0w&;R`WfBeVq{{7!S{o)JA zq&%*KrJ!0kQ#ePsAh4u0gTPVV`u5jXZo^4!Tz?bi0bIDgws>QG;riItti_< zuRtoq%nIEAiA&(OfASMpzw_=}GaCzqm8q%Kxp+S68|mxrZTE!+$Kqq*Sg5tlu2G2{ z4pYxyXM301;WWEj9sWq5z02G0A8@z2Yz}j9A_U(87&pTbr>am$V6=+gHLcQOHMDlO zwYIzAqcEO`z4P7gqD2)ks$$Hko|U3q6=Eq8nu;M-lu{9oKQyW$@+NfyB-{#qmc0KS zf8!f85IYmfsu;oQ9tVQ0|IZ-v%;E|Tf-&r?RIL=NKS@q}<6<9A(DqMN+V52PHdI?&A zEZ@AT6*pY2dFk@Omo6WA>5V-VCn_tB@2oh!qvDO~U3UBknqW!3k9LR6JQnxo<`7pU zCxb&Ho}P)WP@V)hpX|)f4Mt+^E*PG)S<;2}$@#vi#o@{Mp&UkG?@1TBV=1p%Cp~=p z@~Lxmk(4(*)s@pr@_SCCU#rRPcs+Xle7EqjLDgim%MuxTB54}&+x$LrF3U+JFJ&`z zxmBEO;(dwyKzgb>RcK93wa4-U z!;$vjM0Xfe_Wap~`u#^P?5jC{g)2YL zQyp#)yus&~+oU{&#+gJBDZ&#&`` zOe09FoPz<^r6#qj-R2vywY7sT+OTi`v6H7S9XWQksuBZN?b&lmBo%jbYJ7vTp#kwg zpJ1?0D&#fn-+SWVfl~+fzaea_@o1{L&3kOpQzs4_-CuQdZ{=YUyXx?{BefW6UCH;4 zwhjk8zJRN%$LnqL*gz>&NY&7vivo{7jA>6CsXg#o#qr9DTH*|dan^}B6*a2bzvCs4 zJ+G3Smn&cpiE-A6GoU{lMpgyN9tBdw4e(iE5EY?RjB-fIhuiGr+sTsFldXFp>lj z!T=J6`ci>HBj>Oio15zdXjFyK+_e@191EEdt5K?uh$KQDx0&5S0!tMmRiTYlOG7iV zs)j}~Cm_Nm^yzD8Zme%2##3|x!6q{IUsDrWR1p+a-`G%BUw8Q`;ws#c(ksHM7-9v7 z#$5=sGFr_PHa)R>DzTojQ0wI=>M83g0-;dK%ap*D&)4gNx2=!jt-+CzawvvIPsL+V zTtyH11TYnaLMt@&A_D7>S=x~r)}a)k72SljJzWpv4El#XZC+w_gn_7(pgI{eW}8_L z_ZMRnN}=;$#BL?L;svMzNQ6*Q1sw(+1W?3`I@k+Vpo3wgB)J4W5NeImXvT=+YJ!sx zW9hH}eixKz3`L_^Db+F>xe3ZcF*uM!hV%ptl#FVFQG;ed#Gnbkx$qM`1T`8h28Yra zHRuuunwJ5TNht=j!k==5N&-LOC=!W4B*r*a(B)tSx*wm*GL$^z}1Fxgnhevy941cf~O*%3KsoRLsXu|RgqYX3jGQB46Y)5 z>?vFYX&W|TaM6nsLw!hMvR;sw8lRWwK_M}}i;3Cu>7)G5CWcgz#K5XzVmQ;&i2+V8 zNKBy@B&HBa4EuRrVo=auOHAo6O-#{ZVyMy!5>x1J!Bvo$ok?Oy6-j?5u41-5gR8na zTPKT9=_`YS7A6h#3h9Oz*B@Y2cH%ZJTN$g5b-XCp)g`5Du{I`X_9LRfzoM^ z5X0{9Ktc`hR8#r`nUF)dk{0cr5F{aQR!Zsau!3&Glra%gOsI`Kz%cB_p9Z~#HWKR5 z>C_Zg!NX6<6lnl1u}P#QurKCoptT6gpd>vgh(rwUTnQ9|%Hcgi-wSXE5Yi+{-w?@D zRs}m6bSkq^=dhVvXkF!K^*X76Ra>j8oe-}L4-s|-4&-EMAc_rMY^3n-8liyrO>S?bY(3@1{A>yO_UN~{o9aTr_$f-Zqv z7LUs=;wrvKgxZKq!dJ+IoqgTuh50qmfr*j~sx{)Ociy2C3Axhy?}G~6<{K7CW$F3( z?Qp7Go(5G^7H-`hipIM90r)gAxQc+PXYHy`-hO)v)cc2b7B-QO+YdHiJ6rQxYfCq;t=!(6-B>Iv6{c5bmv3#%Z?1%+ zfpByrnu#O}iNqv~zax>vSblM8erp9zc{t$v>90Tg!+-wg=l}Qr{^l=#!8<~1rl8HR z4i^(LfBToeKvUuJmTau(iO{P}1@2n;CS;Vv-iq4FQ5;D#?|<-4ayp%v&4y#4?0j}+ zeRkpc^0kMz*6!a-6w;wscrY;NaofhzQD4Z{(dp^#X&Xz&T)lnv?p}L$kJj!GN@cUx zudfj*v<+81ORNxA4g00azXMlAqu&00gVV|8a9@P0wy~<`;HvI!TSr$5o8YRa`P4R9 zxUrR+&7~$Yv21+)+S1nJ+Y8qg;QmIEk@3`cVPz)2G~LtRiN48JeIy!T{Qimp{RfuN zGf|2?hv`2hAsrZ@6|uTPCRH-0B4$%1Rz(>W75bAdzgwIc5apwfs6QacH-G%&d+)z9 zzqLHMJT`qHZ zPrK7?1C`Ym8g_XdCbJ&a9S#e;w;fJvM|YdkWrdHL&0+R-dSP%GO(m%JAF`_Ne;<7S zOY*(%QK7hsE-9iy!c~T=-Y$_TVm3vI)svjBfBi9$61SpptR8;w!GrhTzx(dHci(yE z&O7gHJ$x{`v6`KqLHyL|?dt0S84L~&27Ub_1Koo?9X%bs@JM@iTWg26v#%4x)9UiJ zdq7+sht+0sxNI=O#?iUWMD32rH;#N#$v4{Ww&Unri>?+*l~e}mfe@{6ao%qHyBHLE zsYWF+88wSro79SG>*2%ej~;=P;;e5Jt*+?GIIJ&Fi*shAB zJ1S1>tT?^1;?myA4rqLLTYHC>2FUH>t6@L=7CC*=vvG zgV~wk?DQZ=ZpN3L9?H%PW@mb{GhNx){`jQN>M^zVIuqH!L~bCOZcpU;;%H9Q9Z3$z z6sDnIcOu`9a{^{O(TpvYvBxtm#8pXMDyNSnRI#{}m{7432~H}-Pp5^cBtH>rNu{}o zgdmX+C6kgwLOMP!n3&*CM5PWVr>gRB<*u5ls+y|ZHI~61lG$f9MS&`BDvEb#A{)?98Qv-&JqXYa+dGx@ zjaTX#n_qwZ((c_y_wPT(<2814r~(0fz^@$Y=MVNt`?>@|-o=9ljvUy3^8D+kb^Lvu z#+|+PJuc1hqx%o<-F0}+E_4PwwD0KoLkCXR9#JX<{*ag8DrfItM_XqrJnuRUnnl1E z60|`&IiSU2xbXVnqg5}Rs6t$|hZs`rCZLM?10LM@63G77K=7wlucdL;2ZO=kFis1I zrd35yHIYn4Q>j=wO(mL6Lrx?fN8_oIfdg?HWY|_RNq3~63aJ(-jRaTWPlB$HTTM(D zj9Qsg01CWZiD9R8XkeuWJzol{xE@Bp3YAW+)@wk4*P0D#gI2CqAbZl_QjXKW$yFMq z!D3Wv)jEULXf@)xP6btor9#*Wl}Kb_fdI|2V2H@)b7U|CmI}3Iz1F0YDkMS}H^Mky z2`fAvuSF!`i=_e%x0w$w3Ymy6R6W5} zq|TP+dQ%y$LJ~Ckgji9igq)}pYQ0FT5L8iCRSd+=2r0A8ZIHoR#q!Ki$_`X6C0vDw zsw4za(H7$FG-?&WPZU>`SOb+3x+<@k3SYu zpjtHS&`MzCCOt`2YKfn=l8QHZ_YvRNu19#^gJJ%EsFCX^8$?kEOqnEH+zjLIq{GT)!*houRO z2%titZ%h7+lxwZkT$!52tmhhNPI;$m=_qwBJyR9~gxvY7Ix(5EFtV$nb9eVhvlsvS zkPt3yuP0Zj9sNK$XCWCXOVbn%CDE0elt7cO$isN_!>hH_pT*Dzgnj9ew)FND<^lz` z44%p0Yajn7B72cqN%TRPB&KrsjH(AP)j6%Kf|mO2H7;h1F^1(8-hRjx{GaHA2~iCL zOW(OHrgD2OF0XDHt_ahw(1M>38cq2BEY@-S$wFYcyYb@I1y^n}jht?Tycn~5!q^Yr z#p4+UbXsiD+Fw%AtPJ7e_FoXyX~e@F7}tzue<$qF60Q&f!#9iqJ z_d)x~d0PsFW~MA#k)#)j7n!(QRYynfcm>Hm3*D8+>+Zn9o|cO%p}0mgv|t1R6S5<6 zUrryolI)ge1`5walGm*t0Ae%3M|qKKaj! z%|SU2Dc2fAW=${e)76*$$zmS{@IwN-equF&xdW$z0ViJ+`1_=`|1P1hwk>74)J|4U zO_>=*8r8#;=*=V+ud7jhVRtJGcR$>MBJi94up+afT<`bJMR>_ul}$Tp%=Lo4B{%G# zE!rZCVVA>JI=p9v5Y{d6Z_>q;y*K!eK>JsTibVgR^8O+V${UG4w}rc&%;Ezza($;b z#Dy#ByQ-zy0z`I>;gnp|Q|YLC5Q)FLhx>mBI-X8mPn*bRVBb3d;w8b)Ke^BUJO=4J&= zOOUi4p`NBP^yXgchgb4H84BcH8H#tGrXB(sWi{?;BTZ1gT-`sSiJAb})T5Z-O~ke? zdLFLtWMRPuA2TC`tdZl$^2^Iee0sv4SH21yN)exn z8^)$o@(y<|zmbLw==(;1f>qr@qT5z9qVIJnUj`SG_Ki+#))=o%lh?7Q2~!|nmP=mV z9%1>H2o@=Ej;mI;I^HI=dac7G`Yu=28~ib1_^)oSSA}I_&yCVXcg*fOrfqwhu7yDu22n?_4fC$vH37Ml@HUK z!u6k*L-Iw;zf?Lr&Yp;kcwY)>b^N)y2z(EDpxzEXSxEW$+d*(O#ZBkFrz4^INycfv-0bS4X)Dx-1q(sxjegi<}5!s*kMjN+Sg@q)SGJ7~` zzo~yU?z$~!dh6D8IPTiZChE*kt%UGXQh!~*lGhjO{yS5c35>%?Dy1%|?79%X0o+4R zYztq z%G&5?NU2@F5}sj(YsL`zG{hLH7t8gd1JkJ*lT2fImRuRC0YGiV zm1?FA!*c!~-;5Fo#;OjK@|D;C?klRIR2Yejsi>}00x=qN1gu3|el4=>yBO{8wA90e z)wc1uTXP%lT3VWU`FV|<`meN9?Um)6s!^LEU49J>R2`te%`#{f2k(MOKMVY<7%mS> zg0#5YL{+66C>u9el3CskzqB1vHD%AA5ylWMmCgu=*aPB5%7{%uj@aXqEz^zqbPXFB z^b1hai=NPc!Lf`Plnus8d|BACx1TJOz@aIMEPLXp$eSGdx(5nH5mnEas1IColal6? zFIziT^^4A2B=<~BvyMEu=R~-<^VqLaWtyS#oN!ezmiwM}J9HcLO}Y9lZ}%FH-)L%{ds`6N(BYd*6@C>R>MS5E1mpX6h^9 zJ1NWdsqK_+u?1=q7N&XM+=m7iD}6%~Diu}xF%nOL z3P0}v7M)`?q#cvBM>@T_>-Wc^`a~vx4rE!gz&it3gEa6nEmI`b|Gw2z-5}4Vp}igH zR>?-+<(o5&w>BHHh21A-VOM2V5h#sYTi!7;rK69}!`Gu>t1i=0b5VTBkYse#ujQt%a#;KLd806;ZPN0wr-772v%x)k z#q2rn7cu^}dCLWsk7t|+!b;|dKJ6HW8r_cGJX{n5Ums_v_6FfDeZ-S~7Rz8!B_SZ7 z;x@n{Ef|P`n~}JtVD4<$8qI!Rq^)HzdEM7e3?-M30F>8`BOJw;MODnKo<%O+cb9U_ zwSHWAekqQkehVUGws~+r-9TtM0E0y$L%r?}w|~QvZI^Z1-QwNCS@}OvhW|F5HZ5Pc zZ2H|!mALc>G&KnNJ3Z%L2E~yrXfVqZA%|jGMh=))O-n>E{`xA34bYDY=!`j>=~mi+ zAaZ5%WT9V=$?_6UPy8l!uCCtbc)QA_ zhOv%>aww=VF@I&*N_FRr4i*Ji*i2Dl4>yjj-XByg4()1slAN75T|VAV)NpXwvhWfC z&?@8%eyEH8IkO92o5^!8qCgLa6B|T7)8;Os&BOT126$Jb0+(5j9dUgZ{Mc29ugp67 zclUjvC~QAO*$B3Kv_xFTF>)IN3xpmRC z^vg2H+sd1HW_fd)pA18#MrFh!rf>J{!8>XB^yu>P?E%Iru(JPM7mPLX!e=}X{JN~( z`vhMr!HdIvTqT8Vyp{CtNntd6{x9P-X?Ud6pX={RG^vhdK3L%)X0E-ciLy{A%r*T( z{XN%!dBTysPNMz#;<5MsX#LV8_|HX{%Xg2*&zIF3-FS&|elNoGV=?yPt7{kDmc~L^ zKb<^0n?<^WDNRhspsLJ7(~eFxVgZV)xCgSBqCf>$ikSzjUb~1LpEwtFw938yr1Oz^ z;zq9IV#~C9a@f)XMgSNgQ;MS3!iH38Xvo0`Y}`EN{vvUcZ|Lm~Lb#*`9o-#%f5=2X zfA-V%5UN# ziX?kitKB+24D9ZvME91=pS$No4ZJBj1TYI8-K?FdX>YqG$urJY9dI)98e;B0TlWS_ zmS~Ta(v=y*XM@o@#jxY#aJE~Pum!&B?M6tXC}~hj##XkXS;H(nw@k@l>Z`8pz_=%b z%zcPc2$Z=H`1r@Fy0%iorOzc0;~0=loeV27Pl>dlHcN**{u+pyHFmIP6C^}?KndW_ zQnllPEwj0(`}+sCb#3zC-n2b>d1HDG%*mF2Pmmbn_!%;jlI@V6cdDk|IWOelJ(phS_PhN1SbW8F$tCA0`t56WRgX&1yklCS zpjX4;$}<8VF)S*sPAR1Adv5PNQZ*J!a2&g)@hTMD%bCq@dpkV#>Hb$bbC%1LbsbIZ z_`(6khlo$6?9=16xgG}k<9{M~f0HAPOf@9-x=A@DCk_26&JJM^e&1?a-aQsDA`218 zq`rRee}Q+3hT_*$ja_&az2{rans{VrbgCMwozMxUTc?ciAGS)AUBXiqD*pJH?Nj`F zuhmi}DOZ5n-zh7|I)QcLnT&@(zyvHsS4sMO`-#Ho*T{KFf>5V-EH>b+(e_&U5}ZhA8KLby8(#x zg}3n8PIfZ8|5)--7{Bq4d^IH{WcaZ26(vzecPY<*-!m$Ia|uFzr2XjQ;lD$-hEDcc7D{LSRmC69_> zr@h9L1G*outmqFYfYb1tisJ148ChOFlBE`Yv(CPhGeuDYCXkZR_V)C+i;Cg12{dTZ zVzh3djoggntj(UxA4ReEZaP(T!&b3znx@R*Oms{599o$2r4xkfb=Xr%LNb)B=E$6w zo~q^`@%$zDrhbFb@@2Zrgxq(8^AJu`0A_Cu^2{%{Rw;aZ<=W(ak??7&eH9EkaY7HD zwmx(GFqDvDwLFOVI~GmFT`x(>cL2^a1qoR+iskj?DxT8};TGiKYC}L&LU4Mcp=<09 zSRm998>2*nZ?UbJx1~PE$dD}8Fek@|43-WhJE=47^nJJ~yVc_`tL%mCZzbGk&9c^C zaEE9x+ySx~aVM*A)o2T0>a~ib{e+vqBmXPJmUp&uW5IXPoLghQB6X8MF$Ondp6-{1 z+^<2@%`%mp_aBD8emLP#JmtV?Q7f}o1|_DE&=S;QWqqNa8_+C5*^GoLJ;m&)G3f5^ zGa9$laM~CV%BN#os4*kUk?5y3)+i31)N5HWHhkkqxhm!EQDIO28BwqE$=X3Sqf8rrk?HU<0AN#n3)|c5gHjCd}Ur~mOt*u7Ycq*=wJI`4~K}pZ>6XYKwgwa zz*q<^dRP6`7JWpk$TX$_iWq=hSvaGUo$jWbnrhNa5=u&_MHZdSg&U$2JwE39x6j9b zZdjlF%4E1uD}=%s&X|=;kA)aXUgpl5-o2RnAsse{v$AT5}{}JkWweFsI@uy8XH1~g9sTRncK}qObz_Tqa zJyg3AguS$|O`QgxiGm^4;VSf%#o-vwT)Vng^ODujXqt`Rk9e$`W&g;cZX?8(Ip&Y`n0lP#H7_f5O7!x@vSK{ z84=}c8g?>ZfYSa74b+ul7b3Q*!5H$LnHduM-qlJ*IKg3jASW zDsSblXlu1~+0YNVdS?L893|x=Z$5$@P){ib#M=>%BO=^&k+c%aOc}_NsIU?vGoqox zZ@}8MfZOYn^MsCsh{>q73)qtVXB=nK;DF!5`$n+7iIZ6Sm&aUr&s{!ukCG{ZB z$Jdd0Sd(a($gXa3`wI*){YZsUQgXcd_wUll@N4erqsx>_P4#vco@!FU5PZy-?|0n7 z(RiFE|4l0BPp9jMNc{P1&8L&HlKrvkx3?+k;G66Jp#6paZY5-(^#?XRnZBzMe_%+w zqQ7sCg}AAxc7{M?)_RUDCHxWC`ww>oV`+D3=Qw?JwPtezQ#G8QYSZ+4OV9notI?&{ zn&0Wg+AI0zN0%3KPhqNYj;X<$st513<$e3hE11E05!jFYU7Hhh=)Xm!3H0b{mGtMwDZS}bq6c#ba>vcA133yzZOK8cy zAKIyuFi~_8?`#S3VKq@il#i0e3w8(cb@NllMy?Bs@#nhnhVmc;J)N4B5V`^AZQ3E} zAKgGzA{o((kI@=D&{VHQ0&y5+2}}3B8Z2S1*>k@e^(gM^J zYhBGYeDg%6%rS$lPDJ+Br;ge%*GjYG=w>_-5?FULC#ySEyJAcA!>m<%M^GYkoCT0E z!dnf(Gl$*Q(a&q_5n1sEPo}yqVLbeEBbVN8w@Xt6vnT|$FV?PXl;nxw)z}!7L{}}L zeVtvCi@&Ll&Q4uBtBKNaV~9m9&b|L3;LTMSuSjKr6q~!YXNE1*^VCl7gy-)7aGd8+E0&88u;pwFu ztmTW4IOVHguV|R{US`DREaU1>`juH;Dgzc_f{_)NsB_`IGC4pSY%a=6NOE#Y~|Zecdna^7r0fh>YwH-8-y^MAIL z^4xbA%ZP91O}1D!C9FDXv;Ukr7~Cg7k2CRpF`mzmmkNxFW=z!=nb;pIn7Gpjs--r} z81))*4+AT#=Dql~y3p;$*sRTKZ?0zdcoqqyIKeLZsjEx+;{?k7sRnj*r)t)DG4UT# z_{)pOzc&aSWHF}Y=qP1RjqY;=ardbgg=8>i=`p44spuvi0qMs93`B4l`!&Q`({lmDDR(1R-RkAjIK?km#bHcFAi1hl+(WfG5r;1S|I7QGRX*v~ZOk zy#24!E2||{TY-`;ggAfB!(@hAz2yRx_d~+oCsB$m&gr}-ZcwKXDajP@YHNsm5gZWz zvJLJTFnw9nuhiQ5&pvDog2937p%8~Pl;BbPzCHWplwGKo3zIy`sT3{8r>0Q*NM%EOuH zr5En6i*a6A91AAh3yPv}T>AdAo#;TeU7%7rE`nyP4nBPS_>cmrE@>I?BiaYC2xv4P z(M`ElrI*$>x>9^O>E^rUcv-rj{u;?6w_f2|>2wW#pY_&$Lfc&>w~c z8U5XMOwemsFDS0KwQ;KHF{>km87IO zSjr5;$U31~2^uPFfKftAxX3-H$RK8zwN91vlL*~cD_b$%t$KzjPA&HRuO?Y|Ye@~9 zfT;x_i~J~eCCH(puar+Rn914Gy(2tFLF(U#q7g8A)xq7D!nHKqgZz8G_R$$#mE^ z7CLHE*{w7r8WWA6XGH5C3au3NdW?gYV5zl?24$yf5I-2jLYbkVI{hHbC)$|eyj}^e zMKKOd!Fxwb{(t8&Lcg}Nm>WU|XP8o%KfOR<7jhL#eu;b%YY=h`3F=+wAmPj0AR%K+ zV`*>Bx4CJC^5Nf%<%74bAfd|Qm?8}`A+Gw9PsT8qZHy*^BUpv>T8i&<_xTIFPcrH3 zH&^=-SzLTB;ckN1elQsnkxqu(kyi|S@baSf$o@Qc*&eWh^qENs1{SBNvYN#8!uWX13fieo@S z!-$}vRguZ7u6RIT2 z^k4k?ZtEtakZO(cnt}PX!*Xl%hIEiioBaoQUkOP5(Tg3^#82lovOKk>q3Vd`2E`wd z(+Gv@gU+=Bz4fCK%2zFsE&+j?u+?B*uUn?kyBeb&>+zMPqQ}<$BbxLnwvh3c9k?}6 zNT<=1mJ%OpIz8*_15U}cdSIL2^WAE9+xd$}-O`tpU^iFFY z($>1=cYC=0$V6Om$e)?%;v_piD~lcZHRW%Bv$q$2c8n_fMssYc978xxUnj zX1p{KyimGX`mc)KKGaj4x^i%-vG~gw&+wn59pK6<0U6>+9EbRy`NE?cp3ombPuCnC zO=%Hj$IqXYJ;*V%e`+5eW3G{Yn4EB`EwyXBHg>;Q({i=|l2B5{grl=!qzpdkTe9US zhwrB}AjShjt;VkP+2MZ9`XX|dtUj%spT^f{ld6`eMr6vQ?UafanhV)RPk?H}xXa(e zHqh<*aCoho92O;bOUPJXMpx#Eh#1Sxs9L>W{X2JO&rA3*!ROIy<$SnkM#K3Nlb8T$ zJmMN`bLITPCHRT9jKudK4u)Bkbb)gc<&6)~7}EZ_6e{@{&layl=+HW@RY$R^a)=`T zBqfh*Gz@2JazfqqH->WCa$T=i@cGvLYRy5}daiO?+e?(6|4WzUvyO$$)_y|~rGkCC z9oUX@$HVhc(Em?wKgjplbKIV#EZOf}X3w8};yBUepg!nx(>$|XS zPFO>gDF#Py9xr|NPYsPBa3x)Bv4ooqd0R0ULedzEY*5kv6*vxw)r7W=4Zy(mndFUJZrgiEJP8e&)Rj$t1(Nnv~A+V1xtJe`MNaks6Aa&elaUbHJ2GJBdv` z$9Squ>G%h0|As#yZ2A6uVuAzF5L!8H_4Z1sLMxSbHoKtKL6W#E6>oP1u{{2)YM@?E zPX)P2RzQ?#t>BZ^Py@t-y)BS=hny56F&=5h)!qa^S>6EEiZEwbkk% z&m*++xRF%69?oVZo)ReR`XTNSGJrQ$Ts8Gq#m>3>gUDhgi|6p%xh2}PBWQ$2Y%D;* zy;02MXhP+_93${p+NXRbcifACd&_rNW{^@{$ne|}+Q>-04EW_06ZBEER?UWY^*e1g zA>-bLPHN$p;v6Z6Z7P%H1mJM-BbhDbS7Ksgv0I;P{O2aKs*ONTJsT`(s0kl~D+mjH ztg2en*x-xj$W%^#mjmR1Vzv99{$fwbBFfZ7RR=>V20}^X)i-`Z{I-^#Ifi7=N2+y$ zFZGQtPa!3B%JMHf-uo%Eq{ zQnZdd_MzkX3hc$a%35*1W9}(2pPQBJSAWZ{JPP# zqZ41Fq0NFk=7rl5B&e84iOA7*llpA@rkKX}vP$g`+42ISm2uRD0ZVjZgxaJz!BenP zYT2xHGJzgT7-{;a2-Ng|mI-qnGB)H0`H*suUxHEvzH+#`Mp%pB2({zf$s$qIkToMg zF=>l#6sSszWD+^=aND7|vznJ1&;FhyAy)-dK3kP>)WVR=!r<=9ku0cd%pN!CAdSO@ z-$I#>JJujsijG#ynnAGya6m%7CAvlw{Ywt0fs)nzXeacs6KLX`@}rMi9NqoVhCK_2 zQhl>_inP>gu-*rRLOHz`50rmfFk?L18%9W?N41v;>Jpkrg|KFEBvX*JLwY*!3_!}- z`F(#8^{_G{r0sC$R!I0fi#O22@mY;4vP-Q$Q5NC%fzmL4zZ1cp&ZrLjhj<#_&>#R4BHRbF*#37&@H9Jw_6HLoqhB;bYNk^vZW}%) zBpFc>#b?w?iYWtkSqM4*;`Mjp{zJ7331UdOih#$?njb{i?SFM}{8an-QzuLn2Uxuh zmA@z_&|qbq)|uM3`@!9GoFP-yePla~k)@FCs+=X_=0NZLrNq^e2al%=vlMOI@f_hp zY$cbasen5)`FL(f((GCDbp7T=8pvUT%C6(eq;Kh{>10C4_E9+zjtyTw;9dXXF4B#g zox!@Y&-DT`ld4{QgMyCK=_PgLm;kf*CP|(5AwTBffK+HLQ!4THyeD8z)Um#LenN86 zdxtQ!sy_2X5&_Z$6-ukx5GBSETe^mRbC4`_(Lu61T{&GaL_1& zk}!5(uCyp#N-N!aUcwi3W4OVjUubgz0oSj?U}mliagN!2XXT03|1y;vd_yn(_%JIE z3_!?+^?{_#a=sPYd?K$69drf%ryF5mOXiR1jDa65$6s3pbxbn9Vg1|Q0p=*R#}3z? zoS(a|%#uzzNEzGkTQD;R6yv@tQ8yc_!3olGN8~`=D`ulh`)V1j+nh(2R44_D*l1vm z513wYTIC;V;rav!TKKGBpb_r5rl|Bs{nm(d?p)x&DX_Et*oWFUybAMj&BE{C8s#Y8mGEjRa}-%49J6hZq!fQc^r72GJpq{Vj;WOoOBj zIgftMhtilmcX7w_8%u+<@!~KHf2fJEbD1ze^! zI{ETcve$$$say!6L~_RHpne4=fE-;s;~{;~?g2z&6hNoPO2yJ?V_e+2#=>oxy|kRo z{%%P@3fQ=W96brv<{yB-&^et~pKbheJkJv<;vhvpW(9Fu=5O7@ z)QAa1-(N4?>%9!~&w<8yI*D(kzxIf2ffE1M%gxc9o&IQ#l1xa< zy)?Q1$AmKO)>i&Kxt*5yyI5ygb+qyFcke#que5k(K1o94-m|QCPx8Qw;juL>66+OD zjw&LPJda1joeDbz^=;Dg$b7@Kil`tqJ^8=U6-8!YbcraL0fMTSnkXNz1!}6~Z;l%n za2@A8QdD_`OfHtt-FN#imT(}N4DL9vuW%?}1nd=bxp-A!3Efxw}^w4TUk^9D{IKEN;$$U2%VRv?;nx5b;-k_zJRp@UbDaf|!q z18^#{9Y&iH>Eg#}^Y#05_)?PFvFgZxhbL+oqRCpUA0jFcDFlyu*}ePaYph6M$iA&fGwx4f*VEQ4YZ2H=er}RltS zT;&{=gJUkVrfYKkuvOnYnPr*C4S;3blAzC}H3*8wWd(X7FqDH}`=N9|2Hl}65aT|} zc&SpT^+^~`0S)AFI~XP)8KsP2eIJp_jW3TT$)`!w16^fyl`fpTXVf@fM7k+oH}erp zx(8le>Cm%r#Y@zZYHHR`Z-mY3FOIKPD4A;Hk(Z@t37Wk-Kk(%lvYle5Z!d==&1)Y$>gu5V>l&#@&P9u)*jk($&ll}TCgR~~Mro4_fq){)kA!3Er)?QDnX2yAm7OCWn!sahC|Hg|*%xC0Y zC|P$iLD$xu6U(}^(r74;rR}(vvq!yc%Kf<0#9|y3MCZ{{M~mBy@s~1`iw~jC-^yva zlF8B;wT5+;zKt1avBY;2OrbUk8HmCO!_Y}hdfV-zi#ZI}hywV#@>cMcCZJvnF}Tk@ zMKon=CV{2yda5=y=e6SlUEW1!D+bEZASclMYv0^phiW8KVlPI?WGNtI$w#s$ zV&>yK)!n_^QOe}g(>6&|lA{@g?W?KR?a~#Nc(ArO85V)Q$kBe0q1pQ^mml~d)mvsa zv#?epVeDU(J>=%k$JEsBzTCH&VNZ2GO#ZvpxTCS{<;m3kq@V=e^mPVIM=}%Mk6qWe zwc^^Z?=xuNGs-Ho<^(xu>V;(KTtLN@Bo}wZGGK5_*pO_nypGR5lvJ&MU2 zxXGuoq`PYqVR_xjr@dM?7jHokGZ_;Cmj7~MuR2*9OVDKoFJ$;U7qSd|=z+bYyn92v zL4-OXI=xz&uMQE06@A%oF8R3p9Z6rS^wus=VGRTnoZFqcms` z0eQNCUGS`>#%VfoUX3~eD-2Ckq)AdOAE8t`1B@{%P%6??va!Un-?0^oe|OK+t@L5J zk25zsi{FS#D+#^Ae?Dx^*<*FX#0e%T&F6}8Qz_a7$j1*6QhP3Wa7m6Nw+W$O1SLQyN2o8f7hbV$zWx@WWp`G}L%M=a?r*-9}+Vyu01t>8UZ5nSC+%QC4J zcsVo(k-Z9hRd}7&ZsALSGf&|>1Cd)eJP}MW+VWkEruusEHsqX|cNe{BDbIsOiLVTO zH*9&Q@Eei91y?y$t{wFl{Yq3xL;FpF6h{c)6kd-a(LzST{rEIGJe-$r8sW%+(zJWP z23f`ae{nQsbaJ9V?eS7~G`TYOG95NRY`Ag5S9(16ol|5p))pb(MX4WaWuYx*otj&QTGXL37@(y`g(XVQ)J?jDZ!6{)QCJCZ&`3a{)UAu) zppVRvPD66&kvu$<$w+Je6EX$Um6G`jr;;2?Ftk&dA*_?1!Q7~oOe$ny1kSXiA#RXF zhA^Xn;}c`;y^59w_Mw>}{8$k7W~|@du-$|Sf&ozK)oza@w+ZHq=>r=#btc?HR0YIRAe;ZAL1mbnF0wt5Y z-R%vg)5nbY5$WA~t~%Mq8K{fFCCGoU(ZU2v$qor#9M6!Te<;vVLKB@Blrun7C#x>0 zN|(2gCIB8@vQ@|G>lm>4K^Nb-5FwC(ilH=ydbICS2NLn6Q+AOMIq-0^b(rP0#TaDC zLi1P_=|;*f{25XStKg`teDRXo(BK{OqNV!ZIr_3_OoaR6c_R4(QV8%w`2v=IprftU zeht%_SAD9ahxSMN3F0A8#PxHFT|{3b*jf&JYB5J-)p*Xs=Gg<*5x9Y%FqYB$>gvh8 zV6xE{S82(l5o{z1Yz()y!EVX1HX~2|reWJ9gGs}R0qZsbJC&v>%ej79UI%;39%`GX z0%-)Ul&`EbeG5nd{Lgv3WKM_g+kq*(Ev>nR>xS*$UHPM`(VI6?sZ7fiOWvE4))ph{ z&gbS9^oaXf*bx)87FF8q>U3zVwY*(fsMEmC_3#i_nHayeANf0)!*u=-IV)?M06*21 zX^+S2T1l4&d0ZMs#86F!|D_li_KR?r(Q>U>$#>*uLcRtTLmjEN>9|8333}A9xxDwM z;XYqy$i$hbf(r>7h^^_yfavK8+*;MRR<*E$@4sL3>bD+9ci-0aM<)(L@g$C(pNFbo z{7PGAZoaexbtbxF`{LxWi9-t;QOZeM<-6trt32XX60P}NLl0-SOc3Cor(9r3(E`#La zzvtEIf+qxgOOUe_h@CfJ5eAY^8`*vvo~udF7tj7SF6(i$?8n4~mek4Z+7(ZAtJU7^U_RkWx1b$Na7gLUVL_27wf@AcrN#kho+ zlM7$sXsBB7*9r!@26|SdSj{Zs6GPS#fz=U#5JRYyD);D#l;m#)|-` zjX>@XG)N%zce-N}C$Eo}J&#-WBT4-+ip*4K!^4sCQ6hi3kQEd{V@5}PE1T+m+DqRW z#ZB5bkeQFh-4=iIsxhI0PST`Z?Pz)4wXT~m0fk#8cEdG0q*(|?WgV-&B2gQ+!#mvI z5u@$?`I!~d@iv3%2Omnv0*KJ%4Fy!g91p}#ns$g5bxa;B-?6HC zt8Imm2T#FYmCtPFXVh9uJi{BMd@E2AS0#6(GZ0cq;ST-#L;$jtj1go7!0ke22G_&jD6Ufi~RR>C+xJ zU)?Jg`Qs(@L8`g(0qkp+LO_PCO;b5 zcz*4vU<={MIE}RvwmkO6>?^obJP^(yXU~@i>}ROUJ;PUx-5$kcoip$k{;Yi9IF>G) zL1fps=V(e515x`P)N$y0yE_kFLEA$UAC=YNq#_X7n6y`HIUTLdZxQh+HUW9@Ra4XP z>$boy-di2}Gl`UZG+jU(y-NwVtHEak1$GMIpy!1Hn@H=ibp-WM3{Pi9IQnG1d!5ga$iuz;Btp&Jc_IiuF@x z?I(H9BDW|B$F{brIwiqY_Ou_h!7^;(3p0(qwZ}Udei52`=NfH~_T8H=k;qfm`^47n zJ*#w^CSJbki?f><3Jy4wVnKKMUiS@Riz5%0Vzc@_i;jdV9|E9q!0&!3!7tHw6H=>H zuewWp*ymGJu)(UW+U`Xd)IITR3)JPmoRSu$KE7%vM66y=U6Y|C6b+Sj4jvWSxxBcz zbUwZEGc-{no=UCK93$kUK}?Bdrw~(w*MngN2D*UQXO%0DYsw@Rub}2;NDz|2;#5{L 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

x%~ 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⤶BHH7^s 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

B=2LpGp=K^;)6<&0DX5h|zF8s5s3Ia!r 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�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Ðh20#X~sfUfIkXjfid!#umxzQygw{S09bB+CTh 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 A=xy1rNmkD-N;@>Jfo6nono6~_r5|1ixOm{ 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

rv`(3L?Tu6M-E6N3ey8en1HXex(< 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

uqtDO3K5pnUg5{hh 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%0Dq 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%0AT~?(DuFE69=Q{5CVJmO>lT=mP7C;NZ!hvuofl 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%0AR_R@-$maHo`IKHG z=rdV5tsUU1QbtGr^83YXGP}Q(Nv;>tJB947!&TC;Dwvfn!E?#|-L377<=w5-y~KKA zYjxYKR&8yr$`Zlq;-()7+|-dk0yl(Mt!(KephC7c*Z7&(w(kSlkwDX~O328%XnSXS zGeH}rezm=^u`+&pVr6x8AI`8^t(}~>8WFr8OcDgQk0RX-qj4FEgL&qtp4zbQcW@)qO(Vj9vWihOgtL~+r|?! z`NU78Qz{^q5iwHYw=9}Vr5NEygiISO%am+?M$)61E&~`z$cJdMN#ioS#jfMq&%K92 zvIrz5yeXx)VRE-fMJ5M`(q2v+~3t zrk5fn*ra_T5MLQSdPD?nNm4cN%WFjvuD(YSUu1BDv(dy<=@EHl6k^e$p8++%FaFz- z#I>a%Z|oDi$Y9i&z(+FqtnUDl3gK{YXeicNYVByd*>Lmv&Fc+~w;0Oqz8>i`-ICR_ zYuB&I@LA)n>pB(K*xA+D)Y9D5+uhdDuDjQ+UB7W1ew}HcZzVM~%`GfUPE9dMHny3s z+kFH5OgT9IuI}#Pv60E?DYsNLzqmLsIMA!3tOK3hU5;4w^!1EQjNhG^xqatOPk-;~ z`uct*v$eBBo_dcwGcz(e+SAvIV9?Xs!`y>ix^GQ$A;kO22f{mCbR3QZ#$Dt@zr};= z;q}pCA_oLK%}JM~VIk{)D$P%q>Z2i3s%RQ8rCmM@LXn|DNQ3Y|5|9kX;VvfI_WV%!pQsMXdcxQUo#m#hmF@xSr*tV}gR1YQb#E6ya(}j9c$k`dIv7=F3-2<`O zr?T0!pP{p^$RL8qGP=+!wJ08%j|R(|5a22kWk|xHI9x@S65_2;H4KSEV7dZVS)ggR zU80197wSMXiAs@b)$abj_QGT`MywpPa>NQo0U{=CNqg(EvdixC#NjGwxmZ?&Q%Qyf z*#p7Db*vCS>Jcj^;ZyJ4zIJ0(Zgc&$G^&VCs-V{NB4Az~;&bN0L?f2mGqX#`L(OXJ zSd|4zE@Gq@M4l1tKBgt4Ju5<>m~8ACJdcWCa1|l0OZ7;nO{D`xI1>iK&o1L~l$v8_ z7}W&xc=cRnBXgfoHhk)H9y*fS17h2dJ+M?vqcG0jJ&p%KXt3w1ZEmj!+0`# z4~Ph{Ky{1FLl#?>&}^}|xV#JvkBl@l+=LNgyJXXxn4BCO9%iePjurc#u7aqze)idC zH*el-GDeHY3k$Q^e7bZ{D%A@4Lb_CC*-68{CHJ+h zD@*h1Yl5p*SC`f!H7i4@<{hzGUe<9x>0T}A44_O?%}>wE=K2&7@Yu=0nVGw{=Vm5n zXV`VerzXc17iONkeDUhbFGU7d={%qzR)VNZ+V`uA{f=AV|0+_ja=6M#h?N6X5edrC zSMY*%l}qyOcf6@S#NjGQ_&=JZD$9**zxwuDN1#X|vLrE3MF`hWF|OZy!iU!b;5AdW@&|T_~U@?qYG z5n_QvhKS}T0gun%OnCH4xqK#_-YZuMM<)kNz_SNuXAgM*kNA0VcI;>0%Q9`QPgg7G^gO&uYqEfjA}u zZN+RhBPA?0=SnHh>dupNdLr#AH?;I;Q(?PAVXnee-tA$$BCN_u0~d{pVn&hU0b)?R zdznI-VD_y*O<+S>{a~OFtJklen*DWFPL^fg&>=qw!PWgzwsHZ=)>SPXT;V7jv9jft zwCoxerk~5Astw|;KEY8BT2YgDR*PK0%1Bt1)jU?;3$6Qz;x2Nk$Eu(JSJk@!@R$oh z=0ea_6v<(ldKYd)E~NPnxsb(G7mE3W^Ee@WF1nB2x+b!2K=}_p2UHw z*afgEasjC_7r?4t2Up<&UKJr$ILD`A=Yb(ofB50)lZ#S;)lJGu*#K0T zfvR0$NrIDhHg{!KeANt0t|qqEl8Fs{{dZS~0nNx%FjghYRz?n88SEvD$&F75ax&d0 zawehRs=e*xu8L4`(%X{umeR^#mR=*I_je2qGo38c*m5l`$FSVYmR4sws$IxS$JI2g zvUU=1znDoBv%5x#axPgeNV}?>-`63*oS?2;HXv4eiH*e8%I>yoS8c8>2(H>#f%Dj0 zmuGW*NpID**F8{L-=IlP)YRB*8M?l6cWQKO4DM=ZbYyU7PzosxH*YlwfN1S#Yi)1q9q8*H8tfk$7#ba( znV(DLvJ$-z?@x4Pdqj*`+uR%+876Y0S+l-&{d#MA`}pMT`NhTg#f8bKJN<)$J-xks zgZ=HD9RfSx)~;W>dFv(_9-f{!GY#L#67M^~!>3Q5zWU-tq=F8U^yKAB?rLu^o>eB* z4L`C2fCoDF$G#`t(Ij)@CMChDp7tUap4)_H{EiWji5S*823j(?XR9OzTbK+?XVh?2QZ=+no*tOhA?K&#MiH5-*MUHfaD`kKBV=+3zECmbBE%lSRo{O5^6gvX zndfibT)cQexkz!FJ3Av|V^VjrDbdx_)!f=*XBh_v#FVxVJ7PEP~X5ncW+NucQy@&rE&9%k4yBW^Rt~ z?w+2u_V%V`ReNlFY&V(ISe&0DjnMhW_h9(q5jTt`BJab?ZnQaXaIMXp^PmTz4v%8S zLrG+pWRS!pmP<3^OJx{=e|pcJ4hdSZxFz5tD1SLb62Vv|szuYr=NMOYg;krh6eRA=v?}1$ z2)BZ)dRF&&?L zfs~#MJ@L+0)1uZ9$Gh4T=mh03puuL16)ld_;4=xaK?_nX)ganIIk^4<0af>fo@>>T zJ{r~VW|C0ssX-6I2n-cfCUsS%T&_+ep`M1nl#i&$Lk%BmRIw`aTYmViR1*ZRUbR+x z^~g<2nM%|^3%W8rL8@A{9;QD2lhLo}P?#Ar5(&K`jwj)+W<^BaMH-Rwb4RHh26EEZ z(G9VJ@FR9OPQ=v{I$0gUw5e(`3v40+gQDg*TxBX$!V?XyA_oJfZ2CF68a#Bjs;ZX| zj$uV76P25JNb6wJess#um8YDfW0g$m6S)ywW&5Iij>K>)_H}O&BpA-1Hy%>_%F6T1 zWD>i(G?~ZYKFfae#lU)?%IW2sa0bxnmD#I$ZeIg@YU)%XLx`Tfe2M?!=~I6X4>|0@ zR22E+9C;WH76Il4Q|`gVW60NPCYyFlm!@Rg#f zM1E`rR_f6=$JeMZlbmetJvfi1mYp88N0Qmge2$+!dL|}CvpC$f=g2l$_eA6mnv&aF z5c-^Dho5HK?lK9j#zVDfyOYA>E;2tvH2i|1V%;mJI*7_iTd*bc%6lC?AX{pVn10Mg zT5S(e^o+#okCv~n&IcmgRyn2+Q;UskVq#)wXo!t$aCrFkojY(@us|?c&CSh%tNcr~ z*RS2MkAAS3ve~hX_Vjj7OpY%s&+qN;6f4Zee6E;DXZLoK+xb#9lV#R!!Oo>K$xJ@A zzP_}yIJ>$$52LuUvbeS;!&OU*b8BnMOG|oRv%IA51FkGDtgkJvt}fztB7E8HRhjuJ zSGIx{=B8(-Czs^8i)ZHU1o<;#od@${fY7_Izecuy`_)&D0mbB!ze87ot6ag#(3wD{ zMifH^0&(!$;Xa``22l~;F`e%s#7bFxgjk6z;kQ5hpg56A7m-!ERUq~gLA8o&7{Oaq z>3c)0es6GqlLH@ur5qyp2pR|`gzB&=PvwA!YiW_ET4(Kb5+rB6p>By9c-b>o>FeKq z|KRb1+HtLV$fj1#6|&_Tn_7{Oqtip?=HXH8-Z{_L$8_s{O1z!5NQ*;<*=IvaRYDVH);z4^^o46!Qa zWMMs@OBM?I={;nwErY9ep{#lI!6=1qE1H=}DdhCwLid*|g;F_}7l4&PjItd=9}r|q zDY^NS3S||j&kuk64=Y5X(ps~D(q`Wd+D7u=`N zpO0O*{r?hNg$r5y=dh~(ybBSOuiY zTtKQK=Wvy~fI^vbe9B!2`upEQyvPyaaMhn!Tz>rV>61rxI$BzzZcp9xs)RZv6I;7G zn~CiWQzKg0*%Vf_yR)8jN^BUqWHzl#uZo098);ezU6M)lJy=qx>BLHFv{=W{-7R}E3(&qZ2HCDP*hDNQfuPxduHMdi+xV8fGAtX!R zGv3r8!Nkty&d%npS|KJ}e7N-kjQWlg$TwiT^My=uKXG?FMoh?`UuDY;Wsm>*#9l>F>qg-pLOcu5M~+YHM$snV;L(*@n^277J^e zvez&@J3Bf)2EWw}H#RytGB(;jFwoT_9D#7Cx3BNkty^$r4UM-9)VTJW&px{@9h~b! zBg6Zd3~T!NN%9a6JGY%|2l0Vy|b zEhf^{_2HqV8zp@xg%~Rt39FJGB|tj28X0(U65?>x{FK_K0oR=B>ggI8 zAMGC+XlZM?ZsygSTbet%IvblB8C*LC*xWbR-_xhb!>nj*YGT}(IS?`7$emgL41WFk z^_#aE8tp`(kg2w|ke>1E!J*-{_I4fj>*~1G)Yv!BKQcbX?1J^5nwcJ-yv-ce zrv`_I2Zx6ShKBsR0Z0XRXJ?s{Gjp@!w{Q0k4tDkQ^z`)+;m+NuWNKe51;a$Q93Cl?y!r<1Ck0Tz<1n)hYJVYjm#v+3J4*d|Bi8`V4$stm(a;(ZJMyw=z3m9_Y=Sbu; z(~4u53|BRg@7_IeMRrOw+%gIRp($7~_w-zt*rqC3bEt5P3kYg41ji7HOTP8oOk96=Ykawnwni3|1 zI8EQGGc69uEeCJAjY5QBc^A?Dj1)OLN+l01G7N=QtHUD?%~!>uDsiP0Dxk-~MCfQV z2}c@N(Xn0(&}$qWuA*D;t57SE9;U(>J4(s3AA?qS9I^87oY|`~3OZ0;q774kEeQ0^cd!qS z7i59KV!Fs~6&;@QNoYs^n0~a8=1@;U6oF_)#3w_;yrlIe!|G;L-PESsBNALycO=je zs~EI`h~xTGYLuy2(NeN?6|JNjYfq)vM|Tp5R60%dPEJo5Vu4nUSjDPIb?52o(I5N{ z0M!#|9kFuIN^sJ}1=A*wpX`f47PbtVq7Q9$x%d>5hlrj@VTusX>YgE7LaglWgU8B~ zoOR39lx#YYKOsb;CaT-3SD|husy%ut%j-VDm}#1C%pyc#N33{4d6al0qY?KN!>0k^ zn$?Cn`6E_OT0ad{XP}8s&YJ%b6h+PPgb@4@TorrbpCSXhFS{!u-_bq@Cq9)?4dZ3R zmJ~=o{V}mMUrn$ThFi>J&2W1RJ(|`uTSXyXln8NRsbM;8Cld1u3)+<)mMJN? zYG*?>F_K$rtFlN1L%6lEx&mjowq#J${MxEutOc`}?mAY46WM8FePwk;pEg+$k~ME| z)x1GhLaF9vrxxdD@XXKNnVXp;0+RujK%WkH|2`Z8G;I_&vMzF^DnqH994d19I+Dg6 zi1{u)0A)&5f^s6n%5|(9qKd`%%b%W!>mtP`3Q6UNm6avj!EI?-m4r_@MOc*+x8nQ- zS4Bqx!-2908W1KG;Uiawa09BGu3%Mu2G9@()w2$e5)v1Iaq5}xz6-Z3PQWaF``d2} z%%Zku56=#cnWa1(ta$m#VHN-3>EV&IrK*CQP7j4Z)k?>3toIJ9wPLwa;3t8{0-nOW z=5b__9v#sw!mJYuLNewm142PZXv70d8EADem1+$&yp;! z%jP;lQ?Za?Px##*e*6=H;otu*#HvosN^}*P@gsf#ev08LSCKR8V?R&e6(L+c zKn_=FbR4nrnG+#a^#=o=`AX;pt+d7(`X3=yu*dLb2rn!(zIL&)`EsNc$(CQ%_6vx$ z+E#A|tzLZb#TRehym|kg5-FWJXaYpwrh``0Q;n*#T@_C}?}z$6iOG9RMy!nf^3zYy ze+sU0^ygq7mn|%25CE zFaPqJ-~7wx*RI{Xd2?WRaCBm9?DqKd+}yyBkbdk}cQIG~ri>;aToKbU>#LpEA}{5-;JNp%_+UMv>2pk{ct{24hl* zKs4Csix)Eb4*QD$z`n&5KYXy~v_z38?x^W35u)W=Z|hpVWYDi-yC$ZG2zcoyfU502GLigPZXtU?_WBJDOx zeD?a4pTvA;4olyvzqhFcrn{+;f6YyVF#0gx zhH^Fwn$#Eit`k`bSw1U1|IBo(gjzaW)nKMQ#&6$VSzCkbD}f`!V8tk5DSZgDwgAJepS` z7)+~`M$N`cWPWmH0#KYP>FlJ7g(f3uQrWo}hSE_R#fe}7Q#>i8bCSSwRw99#Gloey z@iVR)wI##_vzQdkAO^@I8?sQLVo0-yxX6KsvR*E6{4NQDycahr>S6qPK&=05+8bl% z@}!C7T%GL`jvTcJa%C~kL_cj@RD?}+qETqBP=N2olg;PpWNHG%HTSc1ajhh8n})^l zJq=v+_)yz$dX8IheYhg}J~R+Yqs+94A1=#~{^ucjVBc_1b3Ra(u}7Yq1t-O)@NA^K z&uM~9Cmrt7w2AteTVzh%NG>u%+5(t@+LVJ|>Q5@bPt#_KKrRCgh;VXdhqlb_m6KsW ziohzTQS)hF01)A)=l7Af_cIwkA{Rk9I{Js-iI7~WXj))bhC4373EF5H#W@JBDiqRL_R*kARZrW7Rk1a0Y_pYaYmdANT@hz@ zf8S39(ju<-9i`GYTpaKsEArXi-cBTv#LZ@p=+Orc^upXex5pD2$Ue7sNfzkPRcy^F zKw6O!lb|ctv~qFCK`4`jVh{Tx#WBRpy&(UvIhx?4%`v9v!-W#A5UAKIZ6Cn{$rigk zWz1405>wq~zL}9?79Af`1gQ|E97pp!A3o7BWM&Re8A`CoBkBE_}s^qs0K;Oo);n4 zk;-AHzxjC#^+4HXs{S!`W|}|*>KSIZtsV-|q7*_x^3Y4#Q+O_R5{bQZn!Rj(aq;$@ zNp{AY4L7^Gy88P2*`Z*)Zr!?dlYLKHUjw(;AGI}J`@G@St*-9wjqQ!~^%YpV3_^Y( zoiAqLOOuHWxL-7#WlUUcw}y)pcPZ{ZNU`GX)= zUC#hD*z!akUXA983Ko<)oz$$fjBk4By5ACqAdA&;8MnO;hrOPj8k+E$hlJToXw)N! z;X{KMbMI}6F^V6TR6ufmQkO^xjyT34T6PZLi!>j$cg$UO!G}Kg84NB7vR6L(7=HM% zgVCaXCWy!-5iV_L6<+tZ^SKN5V04FB-gQRjFzCq)egP^myB;OhR)h&f6h==rC+sV)p9?jOJF_K+1m^O#sL=tkFY<^0R;S_&U8Sq z!lhPa-vZYr%}5y~zg9h&z8Rp2KEUK1QLkjx60^>nc6pnNr|XKQ zl2tHtvLqhQGRwH5t$MHCiX&J}fq-W$UFYJ(o1_dbeXm_LrOBqW2+Dfhx+Q3T`Wil) zMMDNv>>2W2YgrxWFK%0=3WFluQ?&$YEnf7>8+)kZmXKFRetFONGcXkrq)}nH+ZA5^ zn`JBzidH>^V=J)7!pR}p4L-&ht}I{B89X)2&O-MY>NBcDbm5sm*OC6mRBwERByr1c z$r?$5e=l|rlYG>rKMJDMc=J3hefRd?jsBJBKZ=hT8{P#_Je+NI=+^7-8+re4zZCWU z6;+RMV_yskycYfvi`rO8k6AVSky@h~^()POKot7s(PmC`#(J-(sq$06wJu*Yk!q?l zq!`#<_~f_Zw>Ugebe1{*k<_2q(03ZXuoaIT{CxN=SdaE^A8Oe9mF-?k_n_3Lr9b6b z6l5me^PHa3yEnSy>dF(Lt}j(fI^>Riax^6WrLj}rigW(nXV59AkA zOJ`#!K3Tx1T@NaK7(BS)7RsipFA6s8&86 zp%Nd~_?PM}V!$1Fm}tn%4RadQ>yFTt7Sy5XK&I-Q8VWxN=$G$ULwuOBhED9y&+Ta4 zO>N28Os$>Gd~F@Aoj(Oa%N~vukD)&us7Shs5_wNr*emSofpBlV^vG!Nh`KGXgUfKe z$Q%SHO-~`JiDa;efDz*`)i*+>@-{zYE%A$wS%UwqHS5g`{X4r^2q zj+fl$ITqMaI@#4EY=8=0doz~a-^lljW0}fUAz)`5?MHGBo z5%F;{tX@O}3i~JyA+=Md$X*xIe6K!aVC=|%r(Cyjxwp zB3%_&Cm;iG_9!UUL&j$Z#nUG#|>GhzYFg0Aqlw}gL*Z3UghGn{e%nWR^pFu0C) z{Bpy9Y%&ta?1TqLFf9E{8v}DCB+q7eS(*yz$g?Vd|7cmz6C_7R#6sX_!yTgLbGe7U zc%`;Q0jc|^7qMLs{AW>IvzU67NbLj^GTyCd)Kdmg?1~=vA+Yk!laA`M2eU-D|9YvU zPtOH0+Kw?-51y)7nO6a*1WzqxMw~F`D-0B;N9Ln^V#8rkQHLB(NvGtI3|Zq$kR-+t z#qg-`m(sXHGY@R;^or~T^=MtG0elpEIA>u*`=9GTQX1HF=A9Q!R_pzl$;7Kfcs66X zd(w}lpbz9>OCtNI^*YujepXnG}{M@mCZ$W&BC?Im>ysUVRCopBlvSYn(50tu0%Xiyv}NQ~Qk zMSzAxrxb!d)9cvS+N)oQs?pwx`@~Q~DdmWex0`g!P<3e*jitV{1B3$KC0I^y18j^l z_~$&^7+&M9_QN?SWygVrGRqz9#YNZkknDw;PLb|Ds=m5~)+WMLK( zIyjDInt3gB_4j)MCMG5tL&(5Tgu}QjZU>TRt5idqoS#^J{eub}th9>!ptsD`ld|sD zX4GEf+v!Yt#Eo#7#u+tVq~_}1aXq!U59*NjqBbxH((g-`vHu+w6zjpIQrX2OGWB0e zOeaL2mrr6?>*w$2;GWpv?LR7gM1t1+!Kvf`JMK5QEAwVb*#W`6JH&cl2AIn#{Lgs^w?cl|8*GORHA zW9>0?_?kTo%KY=%c{=zb>ydMS)Y^&`or4LPh_k1seB!*OMw01@m8G4dpO>Avl@Z(H z_iPs3)dEDUrA_pFeV~z;lpPHN4qs&37u49*L^NyT=|OQ)p%+s;<9M{q-+@Kux$5?9 ze_G|G|HF)U%^2uA%4(__=EGzm>l1G1r4=Q^FLir2{Bd<85e_S=-gC75`CWA+M4Nh` zI|sc{`W8k2>qbw{h(XowVG>875|sN+bCSemo_9U`NZ_a@sqHOOV4|ZEz1APC;_>l$ zFmL;*2(jqo1QJ(vo>Uq(yM(P)>h&(($*E&Dar~J>Ij2*pK4@ywv3^7+b5*n$^5x5W zmfE#-QPEa+H)BlS#S~*Vq307JFE>wBYnvmMeQoMx-JCf4J?WGT2``DRDT|UjoH(@@ zjhoLME8m*SFij8BzS<4)+V6cvOB^!4i_Ju#<<&2hfcd~;OPJ`-+6Ar0Nx@y@8qZG{ zTz0oVka@gQ?F31b&0J%v?84o2XT7n^f@mmO2v@KjxmAD%Ydk2`VB1(5RL`!?XkEu~Jp}Mry$*(eIZH%7R zspQm(3e0VN99G}8DSnx)&t`i+m*_2q!Om-v&MMg0cj@o{JVAacNg!6l?5GnIk~K;CurET8?|`0pxHp>S zRphSN5D@bQT;~BeU(7Z3mAzDxWUX&fc}|YFyqzAwf(vxB@EiP5i+vD{I_joy=mq-T*3*& zhR2@-(d*=*KgR4fZ4hmyTf;D;$Ii&oLxXf+OO+Jnl`$jKp~h>m%;}6PMM0k>VyS6V z9FZpFc9TQY9#nX$()E&Ea91-`T;6^OEoRl}6Y06$9ZW`OV>s>2%CCsi9w=xuN@Q&0 zgvbz$No(M3x@y$NqL(fGG4s;Z*z&z{56#2^<9NbRbt=c}my6;(!dT7`+Fd?wT~Ubm zfUdPBICATJ6JnyIO&_;b1ud&vJp!`3_8yN`1$Tb$&O%}%IH*)Y1vo4SWkaK@aW7mX z4fgDgPrjcY9UPt7+1Wz+)FmaoWf5`nT5DSi%6o5bmjp)YQussH7~rlI)T(m=Qs&ks z*CrPy7iR&=V!OTA`afMA{m%q3iO$v}B)IYMtF5i9w&jV=vdVzV@UClW>fj$=FaMJC zH&Z!?gHro01mdDGH%EvRj7UKspt03TgTbR^#3n5@k6aUA#?^!pX~u3mm2#7F#R0FP zZx#5vk8y{n2R~^M)+2wGs;iWAf}?5Zx}WCP>|R9QB&~dfY|;HjJY$qtZf81mmLMgn z0TYcZ{i&|g?@u9KyG&ox%kT-dVJjkY?XMS_8FqXmihm{1Y%bFD@q#*|Gi@Djk2Q&J82R`X{wN9vqn zcFvICmP;8bJ-p+jjwy<7cxN?0sOGJ@MeId_{7Z0!hFy{|cFKrx^J9ts`tOJ=B|>Vs zFK&wq3u=C<&WOLX;Qx*dO&s+#v0HSh*`F3X1goK+7weS__?J>>Eiz7G!!V;x5qIfD zB7_UM%E+%4BkyG#77>J`uJShP9OuA=qgBv3>YjA%aobbblR@%ZYC`^g4H&{2NcbRv z&!h@;${y+*Cx(i|SF-S^#EUQ%K8f{Y7xAc6eW>R`F=%O1XBxFmTgy?pr1DW##F z3H8$v;b4NQ%A3=~MsC%5V^`D>F@gDQ6@AV9Y*+?VM;t>A?+f*Gf1%lzqsGSGVP#FH#$uKx0kNJ3+G*) z@yTfXame@#4QP8LwQM#C%B~0#9Q2hzyEIKh7O8!!nJg6U45N%c$h&C_e=bi>9xkR> zNIQj(=nokqQzI7CbOJC>LY#aQ2 zJvMdkse}ao`3{EM5cXXp#>OqwTJCHleS6rL#I<_KUKs!l#k;17Rb;luOR%UcSH##QHV=q1MiM8gfgyhad0YV;uPVuy$M|=*1|Dn3NdM zOmndFEi5hVod=NCZLy^hr0KZ3->p%pFsA9uBM*5x&U(a)*lK?y;NPDWbNcMJFBVr zuL8Hb>wRgBc3mgcMNOL^k1BWUgCLu8;0wf}str^yDRlcJ2QrV?_I*u)be96@Zn?FnfFnA~>=T~PIW!c5QN$L6fX8rh*1kzHH=@+FMOy@kIu?vY(GMjY*U-4Cz*cvK!PAwOUb_s(DDs!B|6Ddd%Pyds$)y zI^K9eXi4kn&8vn$y&6m5^`ng!b<$c0K;q9$>?n~y5NAq?54lbEwVK@kaeb%LFa2es z196HBVh77vOht^m-jM`BXJ&uA9B0uqfn-vTHcKaFe>}$j@aB*yLz;1r>fV9dS@?b2 zkNppLx|1#+0^X0j}t8((1<_NEKKA-thK` zwj^M(+^D|oNEGu2`TCI;L}v6qV792J0xvYHbhPhFoG9}}<93t+q@YJ_0<6Lxm=#@~ z@X@3=2Cjan_u?WLUtR)%slPz`EeF!>Soe>)5JK1gw)xydgV)FDy%5yq{Oh;z<> zYpJ%$n=j*l-<*PwxOK8jqW0Vpf!+y*Nsr^dTc8M$%5<691id6IX;Pb*&pX%X)4hiR z|5;E#Aatmp48zp|C&VTS=vO`RwmoIxouVS{Omtu+8tQp(PsP&|zn5MQ7__=VRt;66j9>{HFKA)U#ZC z7cVoJm&-?pT4%ycKMzMta$?pLY*IbPt>vxYnjH3z3{PiN1L+^cM880TVukpH%8r4PX=UxBn^K{pP7K4gfHGPLq zD~SvZGnW@0=w^@Y2?)Z&v_hnY{Ya7{u@WgQ9w*mTDL*GY(4#Dp2_C&_zP||Y2T8UF zfj103!_zs}fXD8>GR!~YAObrh@^w!GVn+JqZ-2vQ8*G2w35b5SqhgH%L>iyOodP8d zaX{+K)E<+1bof||ZQ5r1{3O4_g7=j(J1i(t$qr=c-#=(X?hg(pc^nue3;k=qH}GRR z8(q6~^tC7>7i4~k_*b1J&y{89T2y%M=IUI+b-Jto91d~GOHEB?_W%?<^yh0vp+IF|oR!7K z#-6pj!tLIL>v(0%%idtUXD9y$x5IZ+Dd+lFBF3IlXp6O{YcH*7EV3pn#=!^l+(DZ) zO(WQjHlj7EY(%P+Y#4?#LV+e(O{k`=swYEy#7{A{5eGAsna!_bcnS@P7Ww_OFL{i* zX|5uddaqPeUC~ttTwi+1#M-2N;uycfipJsi9jTQvDd&qvDAz?<8j6ujmNogCYU46$ za?-|9l}sfE9F^%dM-dC#6D|D2NmaEG2QWmU(Vq>^V`ojb!_RTd>1y zh{(D=eG4`Fj^hWf+52cb^;V<#{Ew`;n}Qx9v!Y&iQ|@|I9q&KGZU`I9Ael zPX^7RNk;20ZL0Z9PrWkKQR0BZUfsUWGvA6xO00NtMvoI=!$Xo*<5U+e%uI@g_npqE zX9&N9^2MjTHo$;zbJIes%#>lbxf2W&#v%s9neU{y{BgErG0Bg)0R+#8QIoR?8x$2q(I4mh%y06#Dq@i-JDOH70tG^)8nXIsI+Z)Y4Z9C;ii(o- zGCPCU61U0MUT)M{qZHJzt;f%7vA6tHKT(OB#(hl2792$f$bZ8|BRiYhehwWa04x>^ z^r5n$t6E@pW##{%8{UH6SvN%@@hJE#Snf}V2n&DD{&U&>_4Rhb0Vt(}q{QUJ3h53z(pD_%}9U zfBqVv1Tku;~NCVVAf24FjU>Kz8xSe zEKpJX;fO9FKdw~=%y8mCs{DEU{1^D`S^b0x_n}RUxnVc2oAa1AU>|dQp`*S{<7c>G zh{Ol;;1G?!@(_ryHLC5{w-QrMOWLw>btkUYMy8T!tQU(IQt5ItxqYeleZ^ zK8P2%qmF;xaGF3XT>F=A+H9te(UcmS?mK7~4`G|74%-C!;g8sQyTC0U@#iaLxnT4m zAlor18-mF*aG=WM$8;ne((j1$8}o!$4n)CV+U9HNxRgYomMXm%ExAqj4n!-Qs@~sqe>Yz0xbzflZ=-eCg;{B_=CXenC$NKs8 z>TBx}fY80`!MM_AY4YkaAmwYS+d_R%m(9||;AY&UP=u6YW10ba#-p!4*X%E+95#~W z032J>)u02iz%jTf6t3(xgMna7*hJ0<2`>^5!JRe4rk-@8RF=SEfMwQ6!vU<|Fze?u zt%OrHT`~F_LMHB%)|CUViCn51M4+v$WuUL8ovy8)uCJe}Z;-jn&SS<92sIo#Y;4W` zXl@EwUtb>ES0hQYb|BC4eQh2)2KMr!>LxL#A@nzQ$;Js$@C|hhfCl#V203i2;$4|J zA%QkVm#Zt_e;ey!1S)V?Fjhdy&(_}768FyKS_5uTfZP#~UITSP-Osjy*vl>lgX$ou zi_xkLgkAW(DZVcpO@+$vsK+kjXfF=K{9of@Rzh@zFyuWn5^|N4^tYZJC!oNMUlfn= zo2W!twl@;sywp2#ct1?Qkp>{*#nq{oTa|<`3~;wUJa{-M76b=-G$R$n@#+bQ2=ll7 zaC@ZmQbd!qC)NsgldE#rv?^=$^n2_j*q=E)`Q>|g%DY~L+wOUPcDvko-u|j{GU>iv zP4g)8`f~1vIDha9cK&>!VX^A8eh2D)j#Zo~xJ|`u~syUW0m6V7lIbIvTv!nYU=$}l>1GE zS17ss1TLq!iugu7yE%}l02+c@bibZNs1cYgrl>}H?_DfdG84`^oB=Zr%TQs~K-R7t zk4odKcvmT-90gZWROUE$mJo&n2d@O8&h;w0kSMh5nkQBWk*-}#50hw)WfY=J?P#$pm9C2Cv?g{dxcSZ%0zYAAhUI34)Z=>Wx zQc}+1gQp-Z-_*Ql$DE7^ppXW@S~j+7YVp?4pJVrhsu94Xv%IX5jpgHLMMVe7SS8yS z%g3?QNtaGAa15AsXFx=JM0k9=&XU6m0 z(Gmq8+GjrMCdA1z#PzhaM%LEoY#ZopNQGwFNipyosGqAlum%{uN`CWE{eI&Sh`;sK z_sCwTQ-SyB<-ds6?Q#4eJcK*+sRz`79*QzpSTAk^)5qBpiIfv6GZhx;&z19~qIsJ> z7+AQgZGjL<$Um{Wh#@JGX}ph(z-mPLoQKz6D)sdf<$rTJA>x}m=tl|>PuhY~nz>o0 z>JfnyU=_-ma19A^N-3z*5D*fX&>22+)G8-S=xsg-9`d7VclXc&?WmokSO`rEt+Pkp zE1&#*!WJDLQ(n~iqNJMyez;k41Qfk9T`CQqDU}<>{{1T~O)`f3UHgg8b;n<3%NV~l zXc1okTZ5U4g@dcwH}<-w!PBZZ=_jH~3|@T6O{uAI$Gspx^5PHBXigA8)f!a%IEMjO zcyb*``{VH>;({RP4Hm^2KaXlcQ2V-nK=2tw4}bHMBS_Z4_}wrjPFxQ|+8(}U?G1$( zGeymLu4E;k*$u}}uS&GWmDj4yk}550?j7U2notNRi)WBUn9_&d3 z68hCk(@&GEnmL@=Lrgx1DsqV-=VvylUp_$dv6#J)4YM%N5@+t67S-2AUEs~Z9LF1= z+1d^X8x1JRqVNaDR+$*;3M}Rim#TJ^3Ccq=UUo^$>Z}Eej-cKb1rArO(PeK(_zWTb zovDaAZBOMhyEFP3f%=&Z&{9ilvw8Szq)KVQ;w|I>(z^%=vDCs1f|`ctJMzrC_^FWo z`#_Rr;#S)5$@xb#+tN3^WJirbJ{;}8p#}lime%%?ujeEu_EwVwRysPm$d-#=R37AC<=IiSfQar>Q&e6}g(a-oHrt*KUXlFhFbh z1mQ#n(og=}JtCcib}im6=WtC5DSYIef6*ZkRNP1KyhBEEAY`PMFf=(t@4+utFISP= zW6&JhO2h#bqFfbDGA@0A1Ggd#R6XNQOE0ohV|(o2z4dJ8(Myw5Bu4M681RmVA?1Yo zYYi#`W_Wsk2KQYu&Lp=ugwtqZweR!&dPuBD*2JOiQ}S`MJwQ)c%!x_ zF`}Ch^g$9^x*mVMkF6`L;h9O(Nx4>pti6H~P(jk-#*KesS883m8KO|VLmk1bnQK1O zSYLFUCd9Ebm}e%t^s4=n%>Y5yh>w3lk1E;RDEv{$SVYVx;WQqSLHJxR?@Oarb*qo) z`kCl|X~n-fyc0i;1XCMXypaB;4m1M8R4*wP)oMs;YejsK^1_S>Mp}-LqD~n}t{`HS zzH9QhqSg59MN9@fr||45X$|Ng-VTEPA`h|VHn?A<}VV3Ue-Gi?n|J^6d9)K z@oxL0s4BI*PwWhwnFBt}Ft>S{a{`DP)Hk61JtGjTW!NnV|B!hcNZ~2bNg<6Tz3F$$ zqv~wsWUvfvTaj?)w)~BLF=WjzEMVN!XjJN=`lVF$KL8n&8K93rlu|~R$g94 zo|b-&v8wdvD*%EB5-FGtwzig)MQllH^AHps{ld#7T;EXBR9pWiX+@`TT++UbmF?r$ z*y!ic@wH|_em`#?Qy&{sV`CR5V;d`{+!p9`4o54eX*UEpTz6+>ZF2Kt0C8G@^zM0# z4^3fLl$JJbowhSU*ZTbWITV*mBks9z-OtvG5msBTeXxT7u^dVK3bFGZTn;?E!mwuP1N)+xuv=t6cFk;+o?5y!VxhEE2zv(Np+kE2;tj=G@qp}N( zYAyLAn)A!|`iW1TX+98F#d- zjg&E>L9+_t%3Q~GFq8DGO`!UWQTm@D>IDg-g>F|V`j(mn?pz)<@~zF$W#x*~z>WP^ zJdXFSl?DscbYMt90#~`=#;8*-QuYpN-}Ygg=(hQylQ26XhW?TN%v6ZD5Qz;f9Lz2D zMMUN{|MGD<%am<2bZ|eeFmbfvUC>;Kc5~Eh+Q;@AwEzy|-CPB63r%Y6g0V3`t_bg7*5F4&AAr69XWp044&<=*5V=P<`GBwxNO0 z$8U2On){q%=|#ozXqvk&$2iqfVXy@{bWKA{Sr9g;rKWtn0tF(=K69^9bCtmuU1`Wm zq;^#)q*j_IPPI^j{>$A#whPj_7H8fG|Dyl8GBD}jy^l-tZjmT)!%d6QwH^F6TeFtK zs#M7`))WQ!E_<$45&*>U{`1~r0ofyvv*{Tt)FI;@xGUyqt!t?j5#`Rp~3<`n_sVsbvq zNSY{FBtcTr=j(mUED=|4@E0p${mXwG5+3B@m8#;!^lgXu$F*jd6vF@I3hp#7g#om{ zDDQgH7@qEGmgf<0T=07oeT{B^t9*OE=~#9Y{R8!*(Mki|&30A+!g;{u6XQDNB3W}U z!rQI;dTaGLJO}lRL0L>It88#uN?JyG<`DpGh%Z$q*d9(^|La;?@Hy+vgtLRUTe2IO zw_XnUCl8J>1MEcR-#rO91`DD}OUC5i@tkbP?K6L#?AY}r(d)uir|o@TC8;A9 zrG;D^Sp`D$9T<}SgkyC;2IXv)8wnc~@CsrQC(Zgo|NebJQ5?lBHEx=a-fB#|vi{(2 zk?9d-$_KvwZha%MLf(D4#~HesRNRQXZ`9F2ykSsLN^ou0*y=!WB0Lx8PU0&1QShE) zIU^G~RSLXbcGLkD^~A#THKHl?yD@GiHm0EoW=T`n+3F8!`FFEa;C)%`X(YMPp_X2u`!nQXtdKQDm0Ytg#yAegY(hwsnZ&H2IUf?VaG;#%iBDii^Gt^uvs%|F6;ipdq&lEN3 z52-BQK9i@T7jFPPg4hb`&krU|d2vF1KroL$3yf_DCyT}H*#MRj$aRm~6mZ7iFnNB@ z=a`8q!OO_+*uC8ut;?izOvCd^Jp$W! zS1#aM=*wo0L2%BDBvlldhiPU0{Q4$lzX;{WnWs_jP~AUItL{DO>F4b~?yjWiTQtk? zB83DX#w9vK1WpA(PLSP;*TG4mW$lviY%2c}Jr<;|qRs9-S4?`s@lu7wiOv=di2MDr zUQk_ZRL{3y#NEqjS%PQ^p}$Q(&QIh7efX6nw5tS46>$IP@s&Zec^2R?qOFQ7?C_yF zJTT~E;j%(W7LzLj`M3h~neyg$jZP&Q5WQI2-O@){u6U744R2Xws65#cng41?=PsGz{dUmnV|0nNz;(p3yYp>$Dfj3=A`k$qm9zj zV3D^lS###o@bnWYh5Df{BjU&@H9E>m46yg{g7QzlHtyy?erl5_4=4Qobf1458X@;7 zpbQQ6P&~!6x@qVdfmOkfhSCARVhN3l)Nm5CE}S!IQh02X=}pH#IJzdCl_*b#?%WSG zo7N|bFj`=iHg{W9=q*$xs@6M&W--X_c3W+}yOhduEVwcCvj1sI*#Rz;-AgsA(^-e- zZnCm`tq_BTr1UNd4*%OfXB%7B*GZ-dB*|G{($m$|r=GRzsvEh(5$KOu`h27quG_=? zP09fbJuK&5+$__r;V)?PbTD!FYRA>`xdA$g7W38G`goxSUQgsiUD;mQT2@!FWekm{ zp1ZNGzQMJQcjeD}cj?y)nY%zXA5xWn39Tmil!WvPl-evuXD1XVMX-<5M$T&P_DLST zPbb*qO-fpxe3}v)QZIB|es}L05G4$g=mN>f{~Y|}9#+1bxLC14?o;iDhbnByuYMI_ z>`OMTUY}OQ3Xp&~QWD2r2ZWp~2Uf^`;wt7AX)^dI@qylkG2259;g($Nkgj+hZA@~2 z%$E16@f8UBbnD@oz>ZVv&&J^)}1bEsF;D6-% zbw2hcB-;$$3kI*R?uezqsxQm!)d800yosoyR6lARa;x*YD`F>LSk5G(bYr9KV~nwX zna!My6^^-$vAyo0la#l6C*=nFrrMe~JKGqiQ_U$=DZ@O{I`*47y!+YQ_@_ERs2L*1 z9ziu2psNeCD&rlFYNu(o^L*ia_05f1TP61vQi2_p*)K_!myw_Y@n+_o559aKO?Bkk z5fS6;(f^96o17%;yVTHrAW^A^tFzURORQ}?mfHg^hTw-2YALJ;7%V9oPGM#GR5-Sc zlziE4{X~h4*OJty9Q0g*ta?8x1 z<1847>9$5`wb4#~9S;}REcO4?sXMAXz`&!)QGU@NU{2^lNBaYWn*+yIq1aXDsc3r6 zIG#mITStnvSlu^7!*YnD8XQGMGpYMU+^6Uoykc-#xBVCG(LRz6PuEnl85! ze0j=Eq!t)_#5)=}CCnxH<@Fck_AWq=zd!lTipdAJ^K#hiIUlPmoYLgy=K?B8+X^o6 zoG#P%2;ZI!;*ZN@W|5h`UGwoGOq+>e>GJ4{LjK}+HyyOmuQCn zOFfNbC9G5anlm+h?^or@XpjjRBlFkNX0MUK9K?Ch6%ZGIrNl=ryP5MW|9*>&&Ur%x z;zmPp8Av6iqW=c|7`T(fHKhKKtqQMMQoV~4h*$4aRVk8lCiBOSNU}uLbs#~A!`KY( zImzG!my#|Ul+r^Hr={b!ge~ES+*KN0)!uFqsgv(2^=qm`i9V}wKy_Z#&fB|0LcF;^ zHN-gf>+StcoYv7M=!vN&OK6@$V|NOpQE3cVm4YIj9l}BazZw5JC1p0;&rUVSvV~)G}*|wa;t1m4ywK`~4jc z50A$DoQ8%5ux=#0S7%F7Dq579YiKCk-$Mus_44up0H?$wszoIPmg9l0j>g@AR8}^2 zJ#T5_e$Je5fB^+)LF>TNYdfesB1YvIlZKK09Y1_Izp_sG|8h zcQG)~v$HdC;qcbcka*EfycOHn&pY-gqt%-{+&mr4w>N_}iEb7Ww=cLbwpoX# zU;P)p+vpadB|kz7t89O~@}E%0ufO-uimFt~08xryj1pqeNEKqJchU3=i9@5Yn6*%~ z8QsH&-sNq$Ck*is6>tV3ZzlR@3YZ26hMM1OvjO}3MYD_C=!9`_mO6D|w9UVaJpz#Y27K5{|F=ae1Y_ zQ9(^sII@)CstJvuyT|PvE6dBW`*|C{f)u92_9SV=j}gUiytYi>U0gnPz`vo=Gjo_| z-zH^!G$Y7;4bv+gl4VISbV1GE|H}b}1K1mUBFOdI={hxVp*oTsI}hy|;XlF??9W_zPk0El z4*_xE9k48DaX1Hd6K=s;zQDU{>NgSahe21y9@k@nD?7j}7W^qXVfJ_p)H9a6)%Dhf z({>U~kZrZ3x@Hh(dkKbZQz682E{=1Pb}9Y=BuK?Lp)f!5t;<%^Yy<^jpdEF+m_P|K z0;lAreBtc@N%PeYAs8~JEUu3p)ou8#v1sw@71%fZIW3haq<#-w5$D%5dl)+-Pv8mz z^hb2=>Z7wm+CqpBoANl}GJK5EhaeEAI#1Rr!w+8uJPxb8H7G{o14$OzTuKEfCOkMOEe_v=xvze*O&DjZ>4c5%$?Be9=;^H*X zjRA4Q^t*d!sC*L~8YwA`-#-#9-mqdr7a#=eh4?5GvHZvC_`5BdIksJ0T?3`bdV7;0 zne0FS>s`h>JN)(m!tWn^O%4pIDiy>&1s?A*;AC%phRvZ=-bG^$rU?CnK!3D_XrhWo z+quz;dWY79O>gGjXT0TpMH>ZXa^?!!l?GM`Eyn0uNN$RM+ki!cg|hxshkXfoax+x+ zo)5`VMZP4zWeVdV@Nu_J%d6=j{ zn|7ez8$;{o$7^NLms^9k*=mOM2C6f!rVW6WfrJ-*`?MY(T^IiLI-TV=MF7q>F|*Rx zEKf*tEnb$|WH97d++JK-oLTpK*j4l{50(p>sL2|pzq_C3;Q=m3GBPr$slnff)|uV6 z`+f^fPuHSe11^IbOpJwom{oS$_K`++*ZVuv;-iBTQ*%!J5U5*S<4@CnLHzujB5uHr zfw{L;Hrk4T;UTcC|9tA>6^Vonp&bc9MW}+@!4=Hz&_8NNh*{@Q6iiQh;)`74o;}}@=ISlzjXFrGfHTWRH?-@OQwHx0=8%tPwrSTKF6>UT22?aK! zoTgL}>mNJeyn=+t@U|i6|_9Z9QJCpc#=$pYo%StAfR4VHG z_sCKB&%Df{1L?65v*ISk{fvnz!ak9lcsX8tR>A=br|ZQdmVu`XIxVhoT%<1fR8KLGQ0BD&-uab^=wB7#> zFy;&#nuLQ?GS*GHEKUkkBPpo#IAC`Z62zH_^eV?0hW{8>qSS;KgK(oLKwtFVhr7D? zJRe+cEBb(_jkFN@9e8~PR_ysT!0u=llhXr{@p)hOsxP98F{Uqz7LtgcfBlRfh0k;+ z!SKF7zLYQa9a?*Eo-Jim<0bx#=@J>>A;f{5E7l#6JlMm)%c^EmGkIke@{Nr%44d%t zr(y6fcMSYsaqeXp)rfjgF=sO_(!k5w3B-g zcq3qCCezo)=w;(W3bZr~^uA?grU29oO8P|%G>k7_J_9V|4k>+J73A@W3#{F!sNcVp zm9RX`Y+a3=oIFfD5`^p&51Rl1h!x2SeUE~sxBG$UZ0Pa)##w3_7=DDD)%1R1D9zqK;i>gUHdYraT=~VcK44K3;j7Sy0?pm+Eef_fw5gAZ>_JLiS2fx576D>9}5rRGa!Vd@dxu9mU|XvByW{5;E@7A{sxM#FYw zR!%Lpw%&%t@aa=hy?piR)tfhO-o1PG<(FT6{Wa6+a`M}}@~g;Z8b7@UXr1Pyt5%t* z_5UDT-ls z_L1|uA;Cw^?}n(Kz^ZWJ_9x&f2aIq5F8Vp=5gcIpS?3Xc)`b`!xp4beV^z3-AzgLh z-bXIn{sdfw3%7sKg{bBN?DUZfx9eQE5jh8{aIRYQFvCYR^$ zt}e~4Ezhkk&212EO_A|zZmfEb(RDO@e{V;8xLNOlD}&K-g{DS3W(7agY#;BF;&)rC zSeC{{;=qI%G|=uU=+MaMC=3uu1YnV(twqRJbfWOujq5jW-E{cD@u|k5|&HY+%V~LQ9kJg8XT`N&H*4R@T>HVZ}7Fh(CJ7;{N>g>u0ZC`AIM23EC}r7iwiq>M`XqE z7tuyu#1Tap4&@Y1=b4HPnK%&=M<5?D(~;KI`QyjrfAK>4Vn_uIj1D0`=UxzAtqIQcEMTi>UBql(`qL4yJF1>~lZa2Y?N$B1CDOB6h)vpK-Wu83*t!+?Z+L(;SEm z_`#z`2S-OpbW5wN^NWi!v$MA+Cmo-XZI0QQvD@SD&G7MX!!Xo0Z%X%y>rJzJ)!Nny ze-HOe0JBK*lL^_RIo#9Ndv|6U`2-ON2|ORGfgA*AMlx75Sk52dC*lrjQHjlD!QBf)J}Dx*Lw; z6EY@JX}+0^M=8jtK4&EFk)cU?mX*U*65|oz1C@1+C3%Tz){uY#=v18{MAXNNj&NJ4 z6sg1@TN2J)2cd{B!O~bOYC`LXKtoin!Bq~2@iQiejl7K?&}FzPPzO=ffm4ur#t6Un zN!*`CLO{H`;`k9)6Q#n!-cbE4=luyVR zQmYNSB&K&4Z6}<9{L_INS>fP{Vej-&s1tBkzoB{p<@OuUWa~AF z3v#;r86Vj*>{T1CZ-{lfp?*ez3b#2%t?to!DIiOy09h^oRdt9}jL==!%PRIqc1+UB zOthh^%qyD4?tEZY{~4q0-Ca1LyR);S$gNOw<9N0)e&_Re;Ff2O(dI_!;|;Df}^G_e`AwY0XvH4$NW zWTeZ~%wd7Z_BX%zm(M;|&g@ga;m5!H3p|o1Y-<+^<~SE@58GM4tS;W3oVqh{`}U}T zR+Cdxa|;Xla){tFea57JU|?)wqOZT7H1JpKk2HbE_8Gz3Q+MyqFD$ICug}cQQImne zL7L31(ebhF-d^hIjdi+VE(WA zIb3DF+VR1`=~4CgAXmt;0_BT2*;zlV zl&i%Yf=L8d)eg$X_l^z@%Q{=Pzg@^Bj|>fmN&o==^hrcPR8MPX=O^r$a3A-bS9N|z zh9y{g*o}B}^bL%1QEF4RDzHLSAOdaC)z<)7dMjK@SqGR{J6XRAIkP-f%4O2KI@+?k zX;#t`r828+(nTS`RWM?ObfuhU6+e_A1Tif3&5Q!cS&40f&9QtUo8&WlveE9}t;!_H z;hXQjbGXXsw{W=z$_SS+SSpZln{>Oz$U=M|VsfT8hN~c0S%%VQnp2ojJ}!<}*^F}X zxh;y|D(KBuU&-?N`}Z&3zI|b)tVDjq+x$B2U3Xd#R>To2R!+8tGuQwYLj$d}-Wsvq zvL5^u4{rdI0cQU*7{{5FgwUae>3M; z)lWbD>Nw}3>2<)cz zNt+bOpp{OHv-AtDDhaEq7SomdUZt>KD`%l{E?Ft14-X0_$K})G^2uT87(t^7`=7~X zlG*fbVw(o)(}z$!R<*i3zq~NBI5)LCKRrJ)IXyW#JvqX4Y3{DDs^xje;3^_7ZP;gw zW$G&^SlL-fI~SSSPmt~K=nza8!oM8=l+7u)Dlsk%;nOg1C%ygBYU#4?E+3Bj-(7`t|za?OUCyu(jS*tMI_T!WOgl>RqnM+pxkyh>Ts1 z;VK>0t7DV{muvzj35js_=phX8lb0_q?BJm%ltdS-x_G3o{PNrH zzi0dO9SFkj+zdMtyQW?bnvn>8#=Dd_s;h_Iy~SL{OZFho~ot{+gZMpesZU7fz6H;FyxBeSO(zZjMKNZF2+W z8-am|=Wn^&+9egha5IsZfz4(j%^^{L^^K>qtCQqNj0m>{&k1dt?Ez(j-yN;p15` zRt0&86PZ&_x&ktJGLrL8PAE$Pn^{?+6@(ChXquT3mQgaqN>#PmN;}NI=?1|)!dt2> z4uS+wLurjDml}GXFkRIl)PasGvLkp> zE{jWHA!23{fmZmq;3rRtv+-i)h{#;i;Oxxf_$@sY5>|xu&~MSxafw(_2MQuL@~lX; z?Q#MemZzV@A+mL>VMc{~zEmuk&2O0%yPPCycr6+c)xoeTN@q%EV(iJ$SR*F6V@ZZF zT|ul;*$mOBu$gjq%`6RTM#pCC6k%2flxt4akpWl{0;NK&hyY7vGW-;vW?zVNz)R7r zN+d}ncNHz2uGVUZB~RGPBGBsbvuDghO;?}NM#qe4bQM~6z$8B6XP76E3?q2RfFZ+o zV!%jPkN@P^WWn({z*sOtj?7RUSD!r0kout^&=)b*E7DT22X*u6)YxY^La_VF9p zauVx;yLRnbQL-rLs;chud})79N2 zR;op2%R9Texa%Jh`OR0v$re$`WZE=2n$iC+X14fBtc;m(miX+fY4$dzvFR!kxt*vjYZ*D@a0^i%$2RB6~ zv}Isuh=#y`>BUdbnbP}3$D0Tgh}O~8(bd`7u516`;PB{3m%iuQ+dnu!a=Jng*w`rH zcp!)K+B(`>+FI>PJ8e7#aAlVOkf|ws9SQsr{!Q)L*%gPG+*3~u90Zig=yzsLJ0|!F z!9WptCXo0d%ioI@#id6|RUsrotl*ufZHz%kMct4H`OV~33|Fb1Km71J)A50mfxUsr z32+r$mcdmHV~O)IR>!OT0bJ!oo?PP=c}Q%rOKmYE;>GJP3gvu_=k@;S;l1NhwVcVO zc6YZkxpbkFFO+imBJ0j>rB*sRJv=;S(I|60JgSsSEM7a={q56xhiCVXr6gS|oCx=|&7x>A3qUE-dXID9v6?T2IPxui+O(|=lP{s{QA>beZ zv5;45#e8mG$3eE&_LG~4Fxjm1q!5uvLbeW9RVxL=oLZ%DP%R!EmXD7rF7>$iD)tZ- zPTEq)?iF*Xf*Djn5~QqezWkh9HKke70y}_%%kXzW!R4*B!Ka_YMXgHiN4ZVvBp6y%$y$NihMjvNu&M zaU#~?h?CS}XxgSitiJdH9>x)?*KgmxdHeR=S6>NEji0P&qG}ddL%e6a$uu*5A^qPJ zt_lFvRTu7k1Xl$V=b!EBQK4UO9?e}yX)XlSECmXQsDwdWzK;r z+`pQ0xazNe{p+8RnR%`Zt~#t0s|L)o(x>wpW3bzQ`K_z^rU)z|M1wf zs}2vOA4_hjZv)fVQY&z1GqG|IDdCx_Riw$)cnlk%$>2j6T`E2Czcmx zgjKC9Zmh4YE-$RFE^MsZmtxkJ%{cw~?(SA{FQGG)X2&X>PUZ{gOd-|X+bzW?a}5nQ zjhDLapcPzQS6BDy`uh6T7W~lA$jI!%;>_Iq?K{$fX>D)6aZ?|Nf&U}20|(Cek+7qy z!)-UTwCQzRcVCb21*yL4dh3?dWNtM!cJ_4j^y|YneyR%(R|uvG5eTjn-t^_$H_(eW zZ=St=eWAlp504^PD)6|EA44#~aPuDMI1yxmcK{=fr8}ed)t*YxqL^Zx?T7(aIO)J- zTXLdNmQV&W#(~rXm+$aaOhK^sQ(A^!C|fc?w1Aa=@#6gHQzSxx?drh8nG=y7F?9ss4ATn^s zY=jf7tYd(cY@IfZ6hN-ZnSTS|m0a3LdDM}(M`Pyn+S8aTgaFQvm0b9+LB&A2roCl-gs zR%$hUroe2LdnIF{R_Z{v{}mx|lui+prB5H4g>{Fk)EuQ^ZX9seApnTVI3i#T3D6Q0 z*Yo(^QM*p`OAqKVKF{e4S3=a2-Vhfwb@7x zG|%Cu+-rNe$z!Fi_IqDg*Bvt`Y!bI#wj{Q+t$UO;E$VIe2`y$;xZ4 zeDr(?sPa0KoCq;E<%M$fpWJmklyaHL`x&-LSvQy3ln|n90FvB-m63F&9A+}43Cc3k zHuXhLzTLFdf=5vLM5pKyWaZ7#^(0+*7nZE);4?P%G%oU+A6GCPcJ-{qK)6aO-#~S zh`xEER@-qxHc%=+HJV$cN>BfYPlF%Rmvi)H$l$6$9kiFumrg8B+`c_dw~UPR4-5>A z2tlwZnt*VXbsz5EaXFA)mrutK{^~tB}s;_RFQL!Bq||6-su31c3!n zqFl)no=YXNshwaq9p>qY3x!kM@ z*|OohXIShdYv?8GqRT$C5xHbRjmd=K(ea=46yNeu!^4n~vlNuwq5Z`T35+kQc1%oz*XBajJ3a)VBL2M>#kkp;8dlYmt8I?=uEiI8|G4}z3pUT)7r8E(Jq-+Us+sRo?lsM7cN2EXKKn8- zG&sMsG;!w+JdATr1A~L`VK{&BI66Mw+1=fsvx3cy%}qCNHC(@W<8#xf|6E^XzA4D5 zs}rUNk3m#;1Vy!Xc69gkw0Ct7htw@?ut#n1jzqBYT&*xjuH_D6YD!5`u;Pkfc?gq@ zoMvLM00@&~VY^Sx#cIO=3n{QKA_;mhf+HtFV9ib5b9f?1& z-OkiI7fb$N(3T>yDx~)y$$0#;FTeQW8~ODNwMX9xk=ZWK5Ns5PV1^|G|Ifeu_KVqD zomf}>_17PM3D(!K_!qS(3S=-n;IELQRH8_wbNv7!e~8#qGNk{@U%oY*LC%`i7u8l^t-dSg#H_vqRGBiNrI(g!5AHnB zJVeiMV+S3+9&hpz7ABLE6E-3P2O?ULI-e(Gh>~%;dw4);C^}49&reYyTU1m;h6L?M zA7oh$&+#@rnCI#d?rJd{!Dp1CHM2o@TErgekA=D*`iEsCC6j^*b^o!f9ceY`l)$(Y zQH@XFD#OA|8-)bJQMfI_Vx0@lS-(tlt8khU2L7gRPT;N1-7aWsO1v2*L)%QV0>ajfad!V9dHy z+^YOqjcLH^5eEEm>k}rA)m1dC%6cY~&pC+WL+_b=!Vsa-YRe#Mho%-ff>8a>O2xXl zpQFJ3hhRL*SC=)xQ^-Sp>WX10ZN78Lq|>>qgI0dak)~D>G-jq%nrWgFxXM~2*D3xu zM8x7&W|1t4C8Wec*y)@ zHaaAvzpn_>x390WvlCX&ojXT-z#ymofq_09I5;vsIXQjd!j)^+ zE+l5|r!3KrH37X-^*r@NaR1>r(@iJXU56{fr zVxj)>)hm=1Urswhgc9Na5b=NnIlvTQ1aD|Hv4VsqBgH2A*5xVOk}hPhj#CU*IXP(M z)d_@Z*`g>S#nNHV;VOr&l+&qY{SRsV4?m8N*b#NHEfqRUP;87t-v$Ud^Ze9Paa&s3 z1rdqk(JkttEzr{!&vS)LeV0GsT6G7Rh#V|d>Xm#UTPzhSwQ{LksPb3dtnof(A;S`e zcaJ=#@75a4Dz7UO7ll$$M?c-UyT7+nX>zw-YCw(34$_JD1h3ml!H;F1+vU@8j%XL=7Z^+pI;-xEAfK$8AI@ci!#A;a+yp?YW>ROc_tH}Af(5}tZEs9EPq>`H%KjzOjV;e+ODandeh?Tv> zP5(r9g|}#LU@pa5HJ44;PC%K1L1tZ*D&|t9Lb_6fQY9S=n5-33wUWG6=|I3*zE;WX z?N*KsQ9|?8a)!F7F^9z2Rs%QIWi__CGQWa4G=FP;b_QCQy*YRL`t6%n1zOz{Ty_1@ z#H|~b7Upj9_FrC{U0s$tc5|}MvkN@FzNYPj>+-q2EMv5d6^QocVZNO2=#XlKn&Qez zS5Nokg$uGa9~wfxaWnYt-kxsrJVhQ;6Xiewy~IGPeyM%-UCy;1)IJ&8_w~q%N}ksV zvYJBsfk^MOFMF;YQD%3qjOr=GAuS%!cfZr8msVFm!H1* zG1wjl}hwhQEpA z*$>};`;&dEj3xIkzmSt#R7B!m{`R+D{{Hu0je?EU--5Swv;k+;nUsp=s+%baQr#ji zS4xRh1dF?3$6dr{pvb(7^dC?fVAYk#FTZ^L$tRBu`(wO(+04Syp(}SvGQYgMoyp`_ zax+!-_gVL{r1a5YlEkw`V`?NL7ahqbxJu;9MO$EV*C&|ZlE}=2MW&-X4)hpY)nu$4 zBxOm4CZVO8+Z5clwO?4g1$(Q5<2$zDA>Y zuutLWD`bvWp$-S|Q>8g9;%n5%K*_rcf@dvRTYxPxzgDk96}DiuKNX={N_)O=Il1*m}!3>^$wNJZ9pJK_85j?QhQJ~oC!KEh5n(vsoJ1a{7VEkI^TAKv`d^rffmW@yyI9it<()xMTTSs*}l{*&jJ#<>h##&V#c7iD$Yo*i|{7 zGJb5OmTnABojhoh#E~-I0BN(aGFZxOpdyb{whOOyU!Kc=T;jhxay$6aQp}j+G!xY(0!1!;?pVEW&-Tu(FnLzR54lTtf zk}sklN32?LtJe5y)S6Dbh4=$}%sc#(PmrFnK(tW~10B6%3#^81XJsm#=EZ*X+O@&K z!M^_f-rio65MJ_A)6=8l%j2Ta&{>BV%LTJw1Y! zMn3Po*xadCEjer{o5c47X)rHe2_nGRRUaaG${YK(C!>P0E) z?AA%jBV(iJT4+<0kCKFfG%z>_(Ll11A3kBM%e-9COfnELi>I!^p`lAxE?>SXV=D@o zzHs6C%^R?H@rqn-(OncfW+>RG9W1D?gZAOD-90~a3WTEJ?la!iKSEoFY}34>q|Qa2 zt-Rl0fH=Av3L8zJOl^(q>SCC5IPduQxp^E;&{u?tluUx;zTxIFb0^XPU4g*OE z393klJ09c!6Y7W58zZz4*LI|(v=E9%$m7OYrrU%`PILww!}1+o z5!^sTDF#C*k7H_9rfXABK$p3u*08$s~9O$T+K%P1|BBpWV);Hq(iZNP5F}ddH+A`#$CW=RmbO%6f&M@wp2}bdRi6@dz39jK5v&g26N5Wi+aI2TEUd4#j zv&frO{2@&?R`#;xRmn@37qU#NSihJ<34ZcM6@lfK&0LiLZ;W@su;d`U+@gA!5@5I z2$}vET;+M*89al-Nge{^(-J)0bB4zvh66Wm1-~1zS}k63j3Nc}=v{%kp3Q^v@OE&n z-UxmxJo%PsRe-5pH>wIK(fdQl_nr_ky#+G`JShqxwIzhdT0*$-o)8MM;3$=cH&7}M zf4A@kT=gSwpYOhV@!}aTO&Km_^}dr^DD7es(qvfGdU8wK0}ZZP*Cs*1RXPfA{bX05 zz#3sR4p*(q*OhMubn;z=F7#Ld1w_}Wo|dp zg}j`v8(g)WO$)0cLW*q$OqUI=suYuzLb9p|l&)8^^{Sk#AMDkS4x6<~mTXmdG1PG$ z?hT!GX%FCvOsf{=X6A0+n4i5#gzK#vS8mT}OQ1FbUYeM>c9FY_0j|;pK*3cji>u2E zt1Ane8>?n$77#1-l6jXe(7<{bl?4?FwPSF22)(DbzaQ-oEe&;~r?+=tXb{B+?dq)5 z8gwNoI{Nz8-;YWpO>1m)cw|I}wG9lQ%J?VB&aTe>p@E*hUJ8+dB_CDiNkk1ok5nX_ zq+{k;=ullOML;I+HKFS@`jY6F-k_7h$|Cck+ilp`hJSYH~Z=rpMHwWX1&KEc9p5T zwuZ9PV9?$0q{Upw7i>%w0UxZ91QwWqRZ}pB4Y7zwm=Xc;5n`p4UQ9OMM3iH=580R} zOa|>+G3NrVWXN*CtreorV#oIdn=-qYPAa?^VO53=dBj(zkd|<^=ajW{ysj>qSqIf= zVR`>PnaLK&o+5=pd^t*)Dorq}OpqLX^TO5S2>yVS-*LKDt}Fw8GWx4I);?M1oJ3(* zcGA2Xh7gAVAqbJBjIYvR82+i$dQ5l|Kb`pLL*v9xEmKX0_4ZPN!vreFEpBWaohs3h zf3jUNjChYfOfx&WW4ni>^F4Xu3uZ=yMY5E+=g;{IB@chUw8A~HNjQ1^rV?ZHB&Rn8S{w|5esrbX=eYWZnpvQAz(y8Z$}i;ZRlIc z6Ez|+*?4h_Dr|)xOoZTHC{n~*;E)ANB^Zl&Z}T9WFlw}&l6~L|ds2SkDMp1-iQXUs z56WedOv|^%m!D*={)6ehcGNI?2Mu! zZk+3 z5f38CMoo8Z0_&D-HDyZs2J@I=xQeI3q_SCr1mwL0hsZ>icmCq?KNbg-1Xnr06eYr2 zOd*}PEvty1AY4YIKYaG=(evm0NxD~O&2U4sy&)3EM@QM5Jbxw9>D7&m+jDc5E?=IS zo}RvN;i3$fu5eviUS8YSK>D|tV<}-tZEf8>-2!o>Idpb)cXK^0>_*xMcTdZGfn0`v zeCp$~ZL->yC3w5E5n)w!m#c#^r%#{$F!CX#L-B;keB5#VT;D*yjF<)n`UeNQySvdt zgx$2Yp_$m;b3rhuDE)&2Qx~Rh-nuovxacU=!t&CsS#+{nGq-PZl&v}s zQW|xsIp!Q4&1z_5WORINcywfFc&J-`6=YFPy<-y-=v3%P{4{{;LpYROm_ckR^VBI= zCr(=i1_$IhYiLOLnryOqX$6I&Q1$ioQLG_uedIw6Gkz2(Pzu<2xp=3I>J#JE1AXPU z)OGgh@r=P$-kC%wfv%JJReL)TJ!^$97F0JjKGxgUr|*vEWT)2F(RS_T4W@z2tXM_+ z`ky6z>mol&)B?K&3qVUj8*%M|h$}oX@zXV^IFIWsj!*HdTV07F(8?)5430rqoT_2W z=`*{EL*t4Jt^Bw`0=c#$U8O~@6SZ=Pu4Oum!&L#6itYx>tcc=AoLuYk);;^=d7+f4 z?eM0mRCjne^Rm*JfMs4Ss51w=D3C$r#x8QF!Yi5gE3fChgQnq7yo>X^Gk9~L)a*2C zckdtXqa!p*ymgL__UhH5sQ|7i=&Mk}L^q;LUl!~{zmlEk2jz2#d_IxOZWZ&%QX!R1 zZ4`2eLOxk2q-1`jeJ8whHljV#f!%=V&$%^ zqK$#POa1eMD>l+3@89PQjIcn%@r~ptz=7o5PozXsc%Hp{8UEIcZD)xV(JmV3TKBu* zsy`lDQKWw-I3V@=!E-v!^*@HI{HfmwA>SW>t31Q|g69cf&%3ZHLb&%jV&%05Zd!t; zd+?kDuY#gt6e$2muLnn$2%gPre`j!h-VT1(A18Qeq4fU?a8<}*A)rbY0;=?S2>0F! zZ#?@(2oFagU{vq2sB(y^HM|X1egFOUFP=Xwo2_X+a$l8B>ioWq^_6Y&yJT?HsvSZ> zWZmqimeB{01O5pnA(UhCyTs#eKV3du?_T`nY{dM&?G zFE#6>gS|RbEm57pRlM14YoQo3qc9q>B-5&!P78B03v)MbUcYqf=9SwwuiU(L@%rUS zuCuqUFU;LqTAW>3k~P-K@`A9c<%KoczPaXbm9_+$+jaHi)>>9yFmgk~!zh1p*f}|Q zeP#xQ!>yr6JSS^;nL$A^l1E!RFVv~CM~4P>_x7NdpmJTfbn()a%hMMxqUT9}?C3zb zL~TN`>+IIagXk{jyJWiG+uuvEo}L+$oC8T*EDMQ$-}!<^@in)8Dys{NMp< zH;TU8W<7dzXa>6cMBPWCAa77^bWAc*?bR1wfB)S#KN|LApZkI^Glj$T8_7afVhk{X zbSv6&??O~cm@6wrQo<XRcG0_cMG&ufVpQ$_Yo=Gz~CqD(JGh*ji>U55kO`G9dz#&9T#xJ!K}{d7LxL+~uFtRk)| z?I$w_Gqpn+p6L_h^d93%Hgvu(zxn3n=bt0#<$~9DPMJF%R*71ny$&$NabGdIwGL}J z0W^^_7tM!wLAZzR_Btx+lP$s&h-kTJh7XQdp;Gv)aAt@Iv~p(zcVYu2gHxkPt1=@B z3>&87mR!CvcgTixW;+$h5F^?N7`rs0*ucNwq^K3aPmNk9idw3>Lg<1)nUe~1Kx9{$ zxkVGGh#L7@fOBV?41%lBoE`_CJMcz_JLKUEiws}WDqUOoLg$my8{*AWuUa}eWmFZ} zRXGfiD+=|n)&2=wWgdKl0T~-ws2|_G8$(nmdHz|Fv0wpDguhmIQ-vDGEe%8jSLtyZ z9Y#S0O6GzJt{4az{+I{xVnq{)-rx!+PKCIQr2w+1EfLZYlY=!?J8sYW%_D{$%E*Nj z>Y`~p=!I0mELCaVk|@R8Z`)H;6aW#f4zkGX$bc#*M@%e_Ow#JqY$zmUQU&SO z5ap!L(*`1Bayc@SlMK{IM;+eL<}$caX;FbrHuPc091^nHnY04(JcHk5u@WO$;X%jL zistqFbqI;cAl%C4mCuBeTHMgdDpIk*uqz@nbW%fdv8(m8Y_DurpdM_2s~k}Zoo{o} zt{O*GXC;egW0D8;h~brve?jy=oO{!}9R5gcuo{lLK_R`a4;#!q?(#E{O8UmYLa}(D zGb``-pDlk}4omT;YOf|eqQ7qYBPH&6h*OUKDC~?*QuMZoTvqY^Q3m^FqX}bEh!GT` zg#0q0#;eKSPKYqUPqqqr4TNH`WKg^A+O0soUV8TI!PBQyw{JKag}WF%Vp;X*5fZaj zuNPRqvhGYIHWP`tg@xO5bFdJ5AAR)E_{7B0 z%F6P}%E-vbIWs9jD>#4te1E@unM+|X{lrizK_`NNP6^o&_`-kYkm|IIiR6*fkrd)> z=Ae`GQwH~t|0AI;3Ot2AGd3|!)u=SCiAru~znKt){J~pN^_zb1G zJwMO&+Kn5Ru3V8FR&NhA+NZd7YWv7=CCH#40Y-2lpHq`^j770(S5J?9v+J5PODl9I z7!aRPfQ?gT>f|iNi7*4_vVZUCL2DudiJpO+RHx5}XU=qWclE%PA!43xUj*AIlgy-$ zhd@?iQm#lvjEHvsb(|L1r=a`>!10tf=c5nB82wKw1OtZm4bTZRpW4;%GpDa!zs~H{ z>Be>jpW{JV|GN>B<3zr|jz9q|vm+fz+C{5^VYrVe9=3JMlqhKkrgRCJGV%vSmWM?< z*%vrzJCK=Kd7Q-XT7L3GA3q*GbI8Q#{&NH%P&8(E{))-60bku@d<~kc!h0k z1aQjt@ojAge)4U7+5@<*BLdB+N;?4!nlZ0WMgpg7!=Ob@u&QKYBZ)#~#U{5m(#g$S zI-&i5=Bm(l0ygUGVMo!m3wvjKH#MDTzLy?mvwfVx3F1+$%B=Sx5%f8xkROy zYBmbBa;8#9RSQX|QqDAY%DX$Iy`6HiQPNp~#dM`CLtMSqlN-rxIn|;ez7ud^PN)94 zY1P8q&6yilW^P=*eeH&d9oIX>N6eN9IM#3vxWawWbu=Tj}REEzN9` zXa^&%Zf~#8E-YNWer;%U_*|!N#1mA64y2Ehr%s`B=%ZOrci*7kC+SsPc9?NjS5IFr zdJ>x4==j*h%a`TubZ%~RY)p@L%WpdR6I$0fG(6h|*wfRk63pbvsk6I_D=Hv~23>J6 z!}7k~iK!_xIn-960Qc@maW^g8m-?vk9(PPZfPy8WqwgL_b%t1zlLEOi4G}>;3p+5N zDiC`1g9j+tWMG|!x{s(pcpw1$Ag4R`?jcb=HF@*u)vGVR`sy3=`s6Z6dW?N>!LSQYz?1MM+bbt|X%ysTR03k=<*U!Re(|jYCl7Mhr7SWy z7RFqEGOWr$B{znO$zdi(vK$^FKSKIM;zoQ*ceG85l<7GgOY&m99EYoff4RlA73IuB zaYMpSl(2|N@oD%}K+qyA%;P)=C*S>qH1&Ogp>WSeA+ArTI?L$_0rY_3vyGokJ0(gh zM*C10P?E^^4HJebp<4!jgza*ML;2#62`1dfBEBGWo1lt3X9oirf7XAp4kRZtlR0Cs zlw6W)@n%anC-VR$^v5S~j6Mi8LoqZW;y>Y5>Y-NbBCU{Zxl4Xluy=$L$)*XSG|1y# z3s zV2}hEcuIX}sFwe9M8@!}aLX6=g@9NIJt0DhFZIEV)lIm@6({v9rjh+Y1%1v?SoHRAMrei4+P{$BbgIoI`J*xH859 zZ-zvOG%IBJg@iCjOFIh7HKxtUDSk5Ivw5Y_SEKCXwSyW_nO-c!%=FpCmBOtDH0ww& zn;a6=LjN#@D8#qO8NO3=1khnPL$!n-Q5yZm#DE8W(j0ZT0Y*eJEDo~r5l(^RH0!V? zT_mLM-aT69e8zT9kRCT6iF&hUWE3DFGq0n3-LktU8Vn{u*i_f2^gYe zv6suGS~mT8X%S)-98THBz;Mi8LJqCm6}nTF%%P&FQd;314tf6@OlBD@j}JOmx`l{W z=jk4YH*ZU*H}YmhW|bBpp^Tb$h@LX%>syHg#8cI3wP}bF0*DE$Ief&j(*8&f4j2W9 zY2dF8hQ^7whTeUs+aU~0S7tTDPtpzEbyR(yzvUQs^1lWB72ngIWzxg4Cx)vGsFK-~ zSyU0{ugQrx*&cuL$&;5acXoHPxm+TZN@lYg$>dflFqgl_6*v9ovYW=CdcRJPMV^6@DejA!bX#+!pRHv~f7=TEnw3PYt@Yyq# z>+wR`u_0}nGBU@SUkVp+oG1dAP)^V#&{A9nfKUKj4G^GX%7AARY7k*kkZBa*Yg_;n zq=^Xwl1}wHV#U=}ELZA0f-VG!CG#sPScGN2eM_Tcc#wvp&uoDu$T@r`Ind?`+lf-t zqQ!9);N@DG5j8%4`J&#eRCz@;Du?%vk00HW@2XmxrU75)x}?7 zLl#)o-Gk=dL6bNyuse4T9ezUPIpiI4_weY>{=p$Ho*KegYnF^au2Ml}O*^J#lfPWz zZM#*i6r094wPaG;Usz!YsIq;3 z5GCt8E9%N7)0u4+Us+aC!O}{{4r(W$Ib)G?mCQB^Ffr1|t zX6v6Y;xSwm;fdecPqNXg0g!Tv^k=2KK04mvK0Q!|nIR5WK|)l&`s<xQe2D_*zR7 zeCD+~V^#>Wh{@w6FvEpdne%nXomjnrTR|tdm7!63IY;iRM4lLtUeWjNDT9A_;JtnS z{?ivPK6&-(O2?4ACqd{E0dJC=!7*$IM zNR@^6!d1NEa!FocW-=;=>#4-X)~5EgZ3}f;-dbNW5Nd^2qI9#>YEY{1JYB62qy`N8(a$7s~V!fK@>Tp#>ZVS`- ztj-xsB{yN%;i}c;`Q;_i;@qvd+c#!!-_Z5eb!`Tm5nMHM?c%K)R~F}Q$+%4L+@ek~ zURhd^6D$2(TyT>selA*9xC1ZQl+i!kjv1Xh2ce>&R<`N59JCeG3|Z9oM4mo-`}+sb z)%xT>-GQyn9s{lV1zKIXc5QWIV|HQT;^oUDqa*zTbhX=`i`t)hEKxyIk@1u63qc`NKT1bS05v(v- z1IU`AR;{qW)0*%AbzhIPoD%3pB1iY{-Q{im>{*SqA4+~h`-v!)wKs|PpFBZ#M=HE{ z_3A5=e_wv})py^2A567PCZXs^rEtlIZ2RdamqsqYq*1xdGqJ}{MLceL5(*F!3$ejZ zNroMVhCyTMFm{jcF z|4wN%glvJs2(E(S6f)2QepTB|MIiq9mtP^^Sz0rum1SBP1)|_S!=um~0m%AqxRa9Yx zYnK^w*s&XjA$&eNR^`MkffswbtRx>jeJT)2_*B5Zys^ZoPC$%L{s@k7HUycO-}Lwq z&+imK+rtBvwfs5IoOp?=HR^*06bsKRxhwUWmrNeHpokXyz984)JhCW>aVRy%O=F4$ z!4PH;6tdA|2keyDKI1x4&;laR+umK&2>*hQAImqhud5;0Q!}m4Vazo)N3u}Yp1piY zggzgbUut9_WbMxC!2%hlsfD#vjaUD-P zlg%blsg3PzeWqHNAD^7)?&&chFIcL}&iO@!I3p)V0(vC+yAbysr%s*v=);c?`okk5 zBpJ#fn8Sb>1=Nmqxp2~v#2bmkjhi?7`}@&ED1UNl>e}_|7cO2zCpmrQw6>m2OrUJ| z;d(j^(9D7yW}>>z?oNJECYif?x{U$3$kfNS_@mnS^L+yY7q48FqSC4JVMfLTBvBni zw)S%!r_2gTyq!HeXg)pLI%FY*sxzSz1INb3$=`j(Ks5IoH8wsjBdM;=Gi`F^?&uO3 zD4EA8WMF6r6^Pnlqqk27D8uUMGuqPVb#Wz*7S!4~%5d6!T4@)a@HQ)%E6sM7Tk+#< z?QJ@jxl029R}9M8_OoZ&w5=~fnCN{Y3!dg^6devf`f2>AS8aQsaS?bU=rIGl=%sV! zB;HTX(YC~XDR}-ktahA}O+9^uSd@pIFTU_^V-8n+`sJ6T#Kaog5vzb1`AWM*zlw=; z2nC6BhoY3nZk6(TJwegqXuTA4u!fnKlCm9e0baWzdZJnI@r3tR;e4|YAyr&Z)U zD_aDV_|+dltKk}}Ngjbz6pz!K@4tWc$@ATVol32+v%k~eWw5`~Jlw4|c?p#K6_6Ta$9E17kM|Hn`Xp~#I%?*Zz1}GE zvtBPrQfU`q&UWf$bLq`OcB@oK5-Al^g!73kAX-O}m=w|e$WZ|N53%5@lr zq8zkRB>K7_Maaaoz9{&%L3_PFc=YJW^XIR*vWgZC|8uyi6+-$W!BMCGS@06H3D80e zEfHe)=8fR#aR|9BI5_oo@Vnsw3!$v{hmbD{A=N^RC3$eT=Zz5Vy~lmk`-123M+iJl zQ2|DJ3rO;x9zu>k>}1_T`29K}<{{K!A>dUO-Um6w!P7n4+rjU8@caQ-`d7g-zb}ML zQ3x27g&3kz_~$?02B+Q#z7sHptA1k1`oj;Oym(g5C(CAoDsNEox5rCxGno)(FPsGm zaMd#8rd1o}Or7hxK|F%1%v+Pt8FSFS9XVE)g;8QNm7u^)hpV&=Q2x<%x*v7rG6~+i zye@-vRV81G;41gBVqdRyoOdCg;l--26L#dPSyydmWE-`bPOkH_m`iAvUnx^5*s*}6 zbiJGrZdFP(D!E3jAgbo;m0Z1=r>;US4G*>xFu09hUD5%6z7sHpt30lsGuLijyD)p} z+QQt8<;B}>QMJ0Vw6r+4yr?aK%R0_jmR1g3(HqtwtEtpxp_s{+a;Rw1DGjSa=j-b2 z?l^xArBk?7yFL%O1R!2Tz_n`Q#IQ zDt`I$3;U$zDhsc2387zp`NQ41&r}mpl$l$|2@3z}JHwb< zSuu&L3>5W~ESnH%uz_4bn7NFxM@&gN(T)D{-Cs=lx~z>w=C8jB`Y~L|;i?$162{a5 zRFPBqkT)Sh+^8t7*PH1$k;6$|ju&N!mCgrrA?n|;=2B1puUw@^a=^Qi?FHOZpoxrW9&!6uf98_(`llDECsU5^@2@}Sa`dZ^P zwea)xxmKZEqa~$Qncy#*Ogk}O6Zt*=0f|SA>^Ue>YQ3lHcEHz(iOx{IxQkkajPE)=CkJ5 zC`J$*s(=KkI8tCGa5Y3Az(%?oZPbD#x>S0Y8-19G8C)GitNML8ytfPnVDWeT28D&X z;*Whxpko2F(Pu@>IT5tue6greX0}9)av&qNl!-HII_(%%wHGX*8E6Gn7z0cgH5sCCD@SmZ_-r`eAsT`bgyvB#yf5sc}%wf5$u9yj}aFQ8D z3FWaf;1a16#8aL@CFpJ@X^<0fFP8ku?DkU@(Ss-ERK`POndQ7WR^_uxGtl<;g;w}L zM_m_&JBs+Ubiwa&i1Mk(You`XK!ii7Qk&}bRE5I1%d*d!@93MX*u+Mu1gqPr6iv$& zbn>81w=_#h{muGpiB1Ew_Xcwyf~#zBWBwTz{?hHubJqupfks^NSIi$Qe;WKD_!3Bd zd7Yj=d;0R_;}7u(UGx;S&h6rq$n7DB15(m5vTtB(SN! z-|;Ni=5hErYnu(xb_R!r2FWuqfx0p>Iy!k_dU$k%oWgcapQg!hGCnzBNY=P*c+^h7 zvu$nUnV6iUa8xPrV;=36&$x;{u6<6UkE* zU8)+-oJQ~J5p2}gE2FUC{y}{^?CS2KSixYnFETET8dbFg+CiBFp-~Dl@1jh|^Akvg zH+q=T0(G=?oLBdfDDCjPHdMl7hxt4uqF-%i88s&V%U7>nMkgJ|?#tU?Szit!`Y zvI0e5gp(&KgX>@|z)*-p8kaPm7C?b#QFy!xk*QlELo3jZ^rg^BRy?xIQjJ#WcWzPD zqK$}+D4W+3*og83?ZrMZD(>2mB|625lS(tkReOg>mg=sqwH;mw$NSBry;4p40ju?L zrB*_y)|%DYPDQ8h)yqv}(E-2pNk|$BZ++yv8CxL%c!eC@IY8P=2`cA#i@0hdqpIC1 zVu6(oDw4!hvs$gP_Q@6ViBdjUVHE@Ms>`w1NfZkyd8f*;T3OTTNn2sGWiON2N~Jco zHsyF%5S3X-`3lZn+uP~XHrJF=Hh77W=-^a3C9hR^vr%9fWoB8tjZ)mzCY5}uRLnen z@<G@}$Ju}cMJ~YsMZbGdX zmVb2a-n;%>1za6`R65JSZ2ih_est-(uZ4dI4`@R)^A;=4k~@p=gNEW}unhXDD!9>Tpp23Li9 z7Cb+}9}mSDq7;y%cLm3r;t-zs!@-{lWmyPFRTKhP_5VM(is1QML%0!z08mB2fht14 zs{ZkhzyISO0hD@I_*)d-1y?;U7t&BMmz1}4UVjPMD8!w|&2^!5GBHbRp!OF_xm&kyx}g)QUQb`o@|qrA zSe##=xVc-XJE&GeBO_>C=pX*gjew@5Z<3v)0Zxy{AnX$UoYjOnYnU?VuyS?x_=+loCP5(^B9AW z1;o*jyF!Oh(7B7s&dN}5m6=`a?eFs*|LmJ@cvH(u_sf?;WL~}c{Hw1}K9EmeqXvER zjqh@oXkq%frIGYp)IjFn@5G3e?-1N$mKw|&uqv$#MP4SgyLFE* zh6P!jyMd2*_HJ?V z4uPzJ>IdSKNeMK8D|txtbXK;kez_Yx9v<}W71*IB*iv8CIDoUo`VBj8_nQiE!2Xw%*bt!-5G>sm1<%|XSore#O9|&Iyz_eSLnV}^*+`UH+ zA3S|RW*(tuc$rW>pm}9}M&4gaTZpg@vI=(RqAM=nfZ%gw)5A)3jyLMe;1Ef z^L+Bj!xlGxUNTqm@G77jL4K*!rc9;QZqLtOzIt_PdU|4V0%`6vIXyi-C7cDB-rJ|G za0v8{bNWn$K-V#R0;f((F))uva?WjzkjTj+UESTnq|92a29Pn`U9qAbZ)tFMpF93CBY z|5g#`bDCB=6h$0Xtq+w*50gSVclqgYnnMpe-lSjVU7msPQ9vc5X)xb6&@Vi3bd>72 zQZ;RqiJ2Ug_Vk%4+1azfqn4C93h6xO8ThFJ?XX3fOtExYR}XEFwG@GexCRWX-M0-g zvI4xw%uoM>sW>+Sp4Dy|pp?K%moGExSg60Wy-_bAL$3l{6u1a zRi#+273=%;+754!Qgg4dvs*_d2#RXfcK3F8R-hHH6CFL;I6T@z0dZuCH($M0+-X)I z^pScc->8>RdG=7Ic5Bs2t_HDSX_Qc5noT4mZ_sQZpJZK@&ut6h)-J!zOvYSRB{#B} z?R08`1)43j*0h{SX$2>{s$AON^jVf#nFJY-7`z&_6Hwl%ERQU(wu};}55x`97@Vh>XJ3*WqG}~H98{oI z(CYEir`j9%`R78c?A!eB!Bq|qwT5ux4~GCd{mBp>jzXwA0;&ja<4W%fo-+>N`PW0Z zXCXWmg#Zq{9>TqMg^_REsPsF*vxO($RYkaA!83dC#{-`9E<~v{_}%w~P{jL# zXA5On2ryMk2zb@+B32>ke|0n99}EGbib6oDECj47GO7xo)ceERaMjCCUQ|k1Ay)Zx zNxuE`BGX|LBEy?xC#C&>!m8v(eZ{~jZ3C2bl{>K#RwX~{+5l)f0k;jVa)>I9QQjFLM|n5>*m3#Rw>jCt|DSUl~Xp4R-E?CNqr4K12?Z#Tn(#|2d-)< zE4V7VSt+FI<*eW;!>aZW4^;^Rx3OYXD6c8n!Yxi{CTy?C&-%>5?9F+zs|u!7w{I*h z%r4H)8eDaCMsC-yF3jCrUc9}uIJ=;&e+x?sx5=}-I49@peo){lJ+rd0zPi1=p#v5Z z`m%w-T&Wdr&(2Itjzc$QuJ7C4pyN9SckUk}^KQ-E8k?NxicYSPT4SI7P)1R1&^&Zv zputtBO(dc_qQ>34bqhYO-nfCr<|-Grh@gt`xD+Hi2pNrPaA;_BV&cm6YhBttaE`lZ zW*>a;0eTqv5L(y5;-WU@*v1Ff-B~y}R^<-SS=u3iS@`jS=2d=|m1(r)0ebT6*-wA_ z8?xjlM9a@V|MegL_*;zT{No=#|Lt!QQLbT_*pnDD8RKHcC7Fvu7iqd$#Gg`riM=5C zB%kcAGEk;VDf>1kg~_!g7qkXcNma7Fc*roM7eeckSFh00Tt)l(hws1rDdx+)+Gd)rB!7#1xkU#gSMr$9#&s zE36y6Pn>gqu(d!E{jR5n0)Gilp^JPGIbo$k;Mo~FsnqIafao`^tM~R;tqEnQ%dUjg zoh?MehA&@0h7|wFN{`GDcH>BBjOjSsK-{4vN+Zz`B40^*BtS)nhr&n9K@!)adv^s_ z*^X4Et4gqn!p1S1$y)9Eo-AX=)}OE^_>4FyN-S$pP1O{2=fMMt5@;J1v9kY)_cqqd zjdyU{d}yw4AU7sD6hsnlMk9a4ouIeEOt#&L6xvI3sE%i;$g@Gj`4c1E;WqCv6&Qh5 zp)J;&ob9cPAqg$cS?%ktIaUvzs+b6~)YF6tJ!C2g)aK@1qWs3zNFX=QxMhR5SM1@a> ztGFtqwaHcsSDt0m7(Rnzg3*&GHgU?!1G;Q>JT5xHs>o)DkC{i=&U__Zh3Weab@|&&6`)R zY4`oD+1c5-xz&yJ`Q_#5OP9LL&d5NL4?g@zKnc{Q&r!10L1gR56f>Rf?$MSy(k0y6 zWKN~v{-Mn92U$NdHX5Lx4m1Ijhj0rmqPw?eVQFb#aKPXX!BmQzKHa7rh1##z-P1EM zHHA8X8Zb9MfAP|#;gJ#Y8z$B6{=DsxQ`9~>HWmQ2ez_iRw?IQqpFPvl*V8xHM`j8? zYX|dDPE=G6iidEYk3T-^KHUcf+A~o$emGO2_t%PfSoOx0E^B?#ER>KKkg4;2!BnFhe5Q=y|V{Nc*`CrJCuJ z9x`=x2dwhNe*+>>CiIb++xStk2wC`l(Y4E>nWX&A(N9$N3IBf#<}nl?SR851J~nuHq>ewuz)>lE~wI zHZ+}`om10O$S>yYLzdFEXh(vdAXY}cy7qlo=qdt_z7Hld4p#-lib#txCUwHp1HbxD zR~Swxy5%Hg%rroUDg;S*$)>_VD%`a-OaBVp%swT0rCzU8kw_tdF$(c=;=8Xg0Flx{ z!L3!44TjN$;PdH=XR>=jdha(YwNeQY$}(i9THircDAo{_d%TBvQ)L?mjmBZpE z75%N}`HSamy@M{ZFDF*K!VxS7hkFpZK%-u&8&<_?i+6^M&b5yuZ>mbg?0QSwLWe>G z$+v-gT~%x4T%%DeCJ3LPJ7+PDzUYyRm}E!+OR4XZgNUh z$Yh1s%Rw;LPrkplD9JvQ z&Znl0tp&7|!Os?O(8|6O3$BeEvB$X8^Or9jx_TDT(-$uu+g8B`(M~|5bBt0sNo8`- zD*l*v@18)bXU`~EMvGs6{cgA_;6v{TA=AGK0et!cAw2MU2$e-4U`s9NQUG$^6+(_E zgeTt>LJkYz;eR6pJShqRQnKK<())tv36EI_CAO65c|3&2q7d+;2vH&gJn20lWcnY4 zP{ivYfK^dwMXU$`d3q~^+wTe?hlT$wxGG>&Q3xPwdDw|5@Kbv6rTo2PQUtQ zKwgna+Xk3SY{<@NL*B==k2BpD$0RYe(C<#?q+ zb}V2%vt0<@*0+h5@;VT(QcBm#*;*-G%5U?tUe4~+@;kKx)T|d9HM6UND*3&=TD6=j zP*i$5o!o%ujn&1~rQ6F3GfQS&CD3YaW=_zR&IeqIt*&$?pd7KAIhA$}E-%h4&fi{K z5PD_K*B69Ut*>l^oq+4x+Z%|DYQ40xSFcnHMLVIkSWNHkp+S`D)e>u&qvL(zd;5*C z@lk0cC`f1YJxvq^sd)OOe^Fo1QBd+OUcP)|W@ct~_O=cHx;;KQ(Q*D9S_==NxL8gp zaOjj5uUxro4oXpRWux8}{E~iP0mZ1Rr|a_7EB>jOWnmFvU8%6tM=w9LgOCnwr^Az% zFHw44ee=zafBowhUwrY^*Iy$ZVp-ziIbi^Al+*D8-ynh9ekvZ+IUeof?ilf4h)6ldNG{L5d3OnFao z^^!^dDMF)ANhQ~9%l)gbb@iSkvlDT3AYEiS1R0R)%!fM8SfnoaHb678V!=-a zJ#K4zuEbj~2;Y+x0HX-2GLsos7-NLOyv0-agU63~u!i~>ffVHT61eg+lrR5Q2fnLF zaFrugZkgC(Bg2Z zoH#}GTGi2j#u)_E8dp4ZWRAKHqIszHYU=LLCyoG;LZ@Z&d0{$sj$WZsp&y(RVSEoC za)lYyXtl&dUCatb&8y>5CWU7Ur+tyg52H);}F0u*dJJ0vae`Ozn zzO!3cOlMb@tarx8yL)=vI-3g*3aPR0QXUZN+#RwL_dJEtyjawLrPY<8kzrF01iPF) zd$zs3ePC#4a%zhF#7`MEbouJlwT+FXl@)mNLWCbFzv9A5EWiU927K3BPd9no@@Qaq zpns^Jh}-z|_4kjBj}xKN56zDIL$ho`GjTwT#>((&a-z4tU;Pkv;>iGtx*VyYQM4X~ zhu))Jhndcl|1A_zBS2Ba5 zAE-fKll8DEc*a(=>u`8=Ibx-cRVL^ifI#%O66w-CBK6G46$#f*xJuvfZ({~D z#J8McMMb5xAWg4PP{tyB*D_gA)Va8;#Vsx)|06j`FN;)GsfGO?D;Z1c{`W|F-8@y zyofio5KC-^BdYABnAln?+HrweJ!xx;d~(rJ?z&x-Tm$D)4y zk;?6Z?szCFw|U+`z4y6|ej7lm2&h%Wa4V5-6*Sx`CbV23R!^QhGzV38BCHC9GtxB7 z#^3D9T`6_Y>fVC~Jf&5}7hn7bt~v?f;eR6pU?~a#Te1*g5Ywi=|wmV*3Fz$&J+3YAUgwN(!V;$aj_CrvO)NXjh=TtqZFXtu4=Qm@BL3t}>9H z7osexwkc%899IdhG7M{-H>{hX@}kuFfM#07``WClbVOj)46Ld`sj^(DnUMqtk4BRZTcxPXWQ*+IDa3}$JboXFvd{o*7 zS_|q2%7?%yC;P_&Y7IKj!0^z}sLt*|p&6eXzjXD=!t(Om;^M^A6zUAh3OUhJMkgi~ zSC-eeHo0E7bP-h#&Bm1*2dW6JhY`jnC+|Fb$jVCV$!3#RFfUxa^uPM*m7uAw^y%aK z@Y%!#m}Cip2VJpZmeN>@v)QDex zL6S+;aM>1#HMh`=HaOEkNTc0_Z3sPZc_LNIU z_(2fDFl-|lk(AzKe$o~JNhUJ?@;6$20#wCBZ@3Y)l(uM>BDKFTQ+#-KDIT|xoYcsJ zE{WY-3yMw#RNrz}1-hzd1V3@-sHLtGSUTBa@}6-`juI#kQaQW=3yd#KYem+F zt#DOXrHksd$hE%#Ly;-dkpAv3q!4;SQazoGp@nM$E}#b-17 z_d^oBMNZ_TBD&@9_!!0O;nSy&U&ylq5k`R)ITq$Hgds`-{`6q8xod`6cilU?I`D{c z;KU5sXo7GnGW$;rhc^1@*fpeXxsq?B;C)@ZnG4i7SIAcw0cjb?ft?jA*6$>=VK z31EYj%@qoi1}9XiPP=~}&b4oGe{b*L0D>iWCJ(d1;2X1$N^1|GV>cu+;xSMqYOz}K z$p(>)%!WM)NOGd67-^z3B2NA@CVrA_b9;MrV`F7~4Klb&HddR71lNtNEm350<%RR0 z!&R{1Qw6Hj)SrwgaX54vLrvfaQxjZe8wrV9d$X#-$af&pX*{AvQL=9v3~f|JD%oE_ zMO%AWlPQD<8K{(!Nuiv8f*FjJOr_G9428Vudc4F zt?^XS`YHp@r4kVmXBQW*+_*kAIX*Z%*xTQGu2Xy2+B@X#dSGZ^a7dVr?*%(|PClWo z-MBu#w1l)h+t$`M&~JE_yiazV>lhds>>udw9~?N}+1X}J0DAj+&lrev`ivewC5x!j z4g(FFL#xrT(F+$ZUc7vnTF8m?cbld$J2?3CnKK5)@c0?QQX|8*SFW45whh`Y!tUPQ zE7z{|5B7KUbhUK|W17BjVQFRM_U!D?@GuWjAR0(_PY-+!4G;0Sd&8uS@M*PBjBz#4 zKR7bf)gz~z+~Vix_}Jw16x^OWf9|ZgLjT~y56+n7I6vvG?%p1XIw!~BJzc$WdgZO| z>5;)vTSu^sLYbj~qhn*_b?k;3d616fC)$f+JqCn@!s%-Aqw{c=exu|7>qIEk?*#HV zTxH6b?F|h2SOmI#_#p#CyT&IcM#o2KGVOJ6%AqJY=gOGU&vYHVWL8(bq!1Y8;n5L# z5|*528r$37N546fT-(pJ_YU;-5A~n#6xe5sp9DCeQS<;k1D_!^3f>iT0$1@*I3r|` zzf<1>#g+BB8(Y2n{Bs04Qa*;OP*+eJoMP1?RxpGkn5Kj};np{bv=B;#BB&pzA}u~2 zq>%V0H`7vFjX@D|73H;xV*Sma2agDlYT-wgUj~9GZt1S)5OK}NYl$%_H>whO?Pzq- zH#s;&k9zvz+1|m>h@o=+30HF&d? zDnWYZ8)!5KJG=Wk`v=XVyN43&<$^vrmGb#qs<~T}7tM06Q7a zG9~ydliHF~7glrWgqg{1@$wV6mf04tC08mk9ViyEFmDnmRj?D-c{`Hrky}?q;}!Qa zoh;?hiPeGmju6=7c#}~pfaQp%PaE~Tb+{DcX!PS^Rhm8Pqsd(#sn#hJE6G7metl-}Q%m z^t8y7`#@&?_mJSnckgOrpzR`j^yJA0?*xntAo>>}WPN||lHUm7-g`nQItl?&dOZYe z>5ql*%zHw}^uGaAy%8K>ibDXIq7Xo)D1_9v;HnU_5OTZ+_6lH?g@7tq2w>9tL&*2% zLwNr65Wp%6j#v=_{`3}T6;ds{k<&xS_xeV{fIPhw0tEH0@V>hNta=Ns3W(J2hBx4< zzwinWT=hx4lB@9|X4QjUy0x0zT;{dNdoXR=_Z+SgAhou%ZD`cS+T!Nw!p5pRtdqXA zv7(~@p|BG$YzFi*0p0VuZpi`G3I+0tOef82RmMOo!>UU8bh(fb*?vG_Rc4hMZ3Z;B z%1;I~Z|nJNqG*<}xeVoO6|@sDO+y-0+LEf|w`--8jH()?-9~9|r?kIYCElnNgjki; zUY3xy!BC~8;B#$hePv!J11`+Yn{}1%3Y@!j%^|AA`CAKfN+hzl5X`AoR~CH_p!`?~ zu9}r&FW(eNr>!q1wh$HD8FO%`FEGVSwN~0`R`(Bgj_)68WmGHe@^ild-7&ZdMM-#* zsa(>HT7#)*rW6jy%-bAVwVy*ZZbw_XboI*Z`FYerA_&Y&AjOii$uKYsY|=>C0Hr-&b3`VuNA2a){ny?8EloLrFTqld{4 z2XtD2Dkrx^A`dxvghIY{F9zR#2f4U1u_qVooBGk_jitD#ND)bs=ai4^>l|7p3O>HNZo(%fTHY+@)|KKG9}6r;yV! z$3!8Jb4AJ2LhbsJX?U6If^WlBlopF&(LdCg4qd4ttK!FBQ4mAnUOtS`Id716g%CZH z&2ewgQa9`;4-Zlx5j9^s6YVJz^N?u|W>9S|0Mu9Z?aPT`A3u90V?Lo`CA&PG%(w^URMc!4g0ULuDD4<9^w`t0t5hld7=`BD}Nr8R92BUKny z#S&K(!Bt|Q1+J1NYkqvZTS(OMcy|{Shw6xHr5#~F+@(5-;_(x#s@`ZcwGTJm)JFLM zH!&0-?kKO9E3B$r);iRzyMDCIg9i_v2&EEG6V-D9C{C<(Qre!-YNB$`v6 z$1h$ydj9b(kw8VegQ z>a`lfv>~0JMsOk$OE!ym_RjtLR2LUZnXu|Sli1upu<=silq{UZP(}6F(UCg&!2>@t zTVr89zv(e+d$7pMur|uN=c!=4<3LPSj@1SC#Bi1V2E(pT!-FE@yJRN4ozliS1C>s; z@;PZW6Zxg`lBv;rmIuo$!A9HL!lwjO37m4!ho6XfZ4yjuZ~Lx2cc5li6%42qH5*55 zL9NlWFt|2t$RH*i;5JsBC;?7XX#`hMGKpm4ZroC9taWCkLifsIOHSzYSHmr9wQo+; zF2YPsZE?g(tQzpNvAMavzD~E$1b*^Jnsp^yRjZj|kv6WbuP?2w%`Gj>E-cI~EX>Z$ zUB7-EQG5O7O(*jm-hIBSv!}18tEcN!bhh28Q>V^%o*x<0;dE!)+6=(zL41#njoq4? zo4#}r@r@848X30TWK(WHBr&b6e5cRI8M)5>J7+uh1wi;dzK=d~J0_XU$g_4wm$nM_ z5Q}%%QN`rcl(wghj&^r<^B_-kc6GV=Pj^qZfladLX=`gE|AmWUMzsi?5ePCdH8peV z*38Vz*!Z|qgpWQN7?cMq*$oX14h|2gsDXju(b4hANg7BwUYanb_IBaEdHZXQ| z%90C4&vkfF4xI?w8XoHD?IpiJG4m8odk2RGN5@Cy+F%bnJWKOw zDSXCik^?%#3Hr8YC+^WSx)dJNF3a|jxub$r%NBX=j6z((hbLe0l!f#UKhl8G^Ds$U zpx)kIwNZx>o|o59K~%n9Qd=hDK-1JV^Ysq5Tw%VquNU4>+h_)3N0~g*ZU~o;0yXk1 z)j<^Kj0t-p7<@)Lx?gX9Z%A`azwt^@R%oQ>fR9S`qBkcN(QaJ_!{I zsbVoDq&>Bf*j(P;Sln7)+%&jqdt+&9eJQcIq5}bw>p9=tr^Qi5Tl@^J+T4(fVS!fe zHJJBbYKxT=IUS$krOT@~o7pDO-@%9)=+R@du6i8+a*}cwlR-jm7!{x^gPep_MR1kA zm3p5?>bg@HdN14*QI%|SPa_zQPNX5D1H111OROr}RT{FbEVxTfo^pm+VtnZ)U}&&T zruMhe8vvFs796*7(CV3;di>B%l0i%#+kSrsswD1Xr2>7!%&gFVPzE4$EoA!tQ@ASJ zcvlF8S_oiLO9-ga9}D4`KM*{>;HCd-A)rlB2$<7*LdayH^;y3gps9C-fK){xKuQ(@ zlJx!%^8LvW9)3>6M;R!}5d8pG$r3fdRjCr!LYjBCd}+y?U$1qGWR;fRr}5I{%(!PPF+NMX{>D;5L~70-`nfkuxD=LwZCuS z_Tt>k{H(cJpS`&-XAsrg%);yqh{)o?ZS4dkGqfzDDy}*ZaA{r^RgT;lNGA!AN$~0~ zi1`${eSN38$Fk^P=g6$9bSy}-y4$Sm?o@VntDBpvW8I}#odT=j12Dub(B zuDIgDtv#D!|^mh`hNGF1SBnrP+iH3W+=L4I{#=T7tBfc0lGokq>cnK6ajRM|ou^3^^OGnF!| zsu@h5l<3HjZgCAjmAo}YdHivRxI+?-EVzomm7h?^+0;%kPjPBS7!$-#fe0=2@{>Xw z*Ff9w0{JOb!<>#kdH(#-vu6+Nyvrj4t;i4;75H&|MP939UFF!BledwTxv!`lc%rYI zsyisedW6KVZa2_}2lWxpygs@2915W*Dy1UnNzR5jZxS=+O*|%^B7fD~EfFV${Ip2U zr|i6&N6(%*T;&Ji+<&b7fYANOLBo+w1Jw6JMwSxPC)PiWy}fdy?$84aJEr4s14QBu zd9C-P)!n;CpTM5;W6Wqk>2@A;gDD%but`um{sg_T45$<%12M=)3i3kgJ~1LtvV|zz zCW$&qJbOolzKX_+-jMkc9Tnl5kP>YW$>8IKY{-`*BQ@1-Lw52r%xy(%7BN_I=@pq) zkpim>LD@h$>e@XB+YBjzVx5SSjr?>PJ?08Aak9~$5`kuIWY>tyhR)*xRuqpBE1^q7 z^3gs!rxUo!jI#``a(WG}N@g-FZr+5eLPc3O?Ao?ngaWDzLW4mbqkql0m14n zsC16X;9&otw%46IfBwq#>yy*dLO0InOudn@u}haPPhGg6&2HTR@Df}l*G0mWCDjy#{H4u(UFO%$;;QSPG8i=FzP*Td(&uR zU%%|C2JMi+^9F=b7xh}ZJG! z<`NtxZ%uM8P7uN+6ig9HCeZUjzU1g#su7RS?L#BO)XiN|oD+zCGq}nDDT^2^<^8D? z`>@CVM0qd7ZykdbiZyF21-n|M0lV^BM9AMx6FSeM%P|}T3Z#fGJ4Mm# zvnWRmv4T{HGihvaL!*zvcCOQ$vUkZ4&$Ge3HBj3O>7_Q?ZwR$@SOx>U28RZh*H%|I z)>&GkmI$u0T}%3y*YZ)ywHKHBv1;K8k|=@_VnPLyTH^YcDP|(m%^?37zU@Ui8|2Rh zHRg5riMm9Q&KbxO$>Ua3F^NedS5cfuf2|OYN95X$TH%<8d{;fS&4By+M|*pR&E|fi zS}*ZV;@a5d4a0jiTd5UxEpRT*_1`IZ-uN$lC&KeE~{t zuOzmX6Pr4;eS32`o7u`FH?rw1EvfQpM2CY@$;8_F+QRzUVmc+i?7YR@p^84$=UA0w zWDQWtu{Lo}ShR?rYFa++n*m+t(w$s&e0`IqMm&ng z8tlo3(x?{V)Jq;s6`wzm;{8i>6~ zpF3iuU4ao|b;oqGgQFuif0hpB9}!L8;BN{=(Gjb=rbY(1%EQ~p(eDJ${5v5O8ikPh zuHXd*49S86Nq;Aw*4rV}5ru$7S#TUG{CHRJ3~~6Eh*iL!q7YE1fBrN4et+<6 z0j&BrHUs|UFMs*zr=LFi^kt(~glg!Gg*30c&DHtD=1SV^OL^rbx81->v}M?nV^y1L z!PUB77CK|q0jxqUrM=e0Oik{tn+O3*;fch*49@SR+na1m*$q{XXb8QpPjk3Fgvq2KO?Ma?&kdM>+`p-5m}lX zomEs+Z5xIK=|)PrySqCDq=%sqM3C+drMtUBI)?75TO<%M(o%7d3tB z6=yt{3VDV1IoR4bEKK9Mb{QN$Gz1ESWS#1OzmOk1r(!k@`?7~GesG;a5CG>0%sdbG zD|Ew0M~kP!85tLCRxf*<0C%HGr;476zaEx=qvrkAA}v)W&Go98F=soIfE zNw&1*FGZxbXB2EA_Jwidk-rzkN6TG>1lS{Hko_(ZhRFHfwS*1Sas_1ECSoIlzfjgk zXIC>f7I{`HiNB^t6e(N?xmB5=EzYK*oJc~kbmZef|9DJbJ>AKM16Ml*ucpbE=-w-_ zAq4ANEt7sny3(gHo2?J{*qm}D1SR;BYiR$_Uno$wkLLu|WYFjMP>f`&d(Hn_P_Ogk zL-?|CU1aON2cq>(cRcNscP*SO>=w(ih7z)bRI0c=qA53&ovn_;aIJyw- zHV)qOd@&sd*`;7c89QnID4F5@xK#UC1WexuqqEQ*NXrnLpaqxIZ-%-oS|uf?a`W5eJcr+5qT zI{n$y>u6Aq#F{vxse}Sng%z3{pOi!xX)Y*8UH-dhW(v`3cR3nKyc!P8-O7!f-kQFe zHV~X0Kl`22y|wj4km+JzY`lyYV%X7x1qLz!Q2MPt#4S#H*L`!lmqS%Nfk4PEi$ZrY zLs;+|?TMXX-Q8%{a`kM7BkILJO{}nmq4fQFh*okGAw^by zmX{tMEB-bnFD?Yh?7DvgSV2IQPth==Fm(qDYc(?^t;Or?I8Y(^XA~Ou`NaYKqpvbS zxROJMx+l7k;tzr_**=f@S)1WiMZ3i2kmpTF;@3PmljpB6J_xT=d{zNyv-Sp_$5THX?cRQv(zkJ$%|xz#y(Up0>3W#6QS0*J>Wbc1MeVcv z41UK#@W2lT^bJ!pvK6=bOdP~I3eM2=zw2jgg{CR%(vcE>6d5UNhnPma(!_04>LSzNmb1 zyai^wd-2lt1Wsv2K=I1Xp&a0N2 z$=RyJ_@!WR_5wpuj|xM+F<^ByqWaj$k{CIUE3$Q__40z zZs3sUQN1A5b;KP6ZOC+R-LKe@lj&OEAOe;<(2ht^RijC#QvOI@wOGu{(B|W|r*O5! z4BBhYvgKkNZ}<2Pm=M$^UT{(+vvlh1-0D1?%-%OuvcdQFt_%f=?V81);iPzw4R!Jt zYb#qOYg;CoMsQr{eBXWPGFEw&;*KUuZAGH0YLxn}vT%F7$bhBmBXll!p*CY^wVn+I8M#-otg6>hDQ@lQXUw;+#p5 zxe1P)pGvu=cc{;Xs;|Bgx^ns?zqhXurPlvnVvC>qPu>ysQdAXZ^od!*wy1tlVBLb4 zr)%E`kxnz7i){I;`l?YryadGOkTXTMFdZpC?BV2{vWbDJokT($SLf;vAD@LJLgxm~ zYxe?%yw@*;r#IFvkij?LZ~z1giyi`E0OP>jWEUtv6b+2|3JG3#eb*(|zzX~z`>z_K zs}$fA@95cn)jwO2)hgevd zU9p#Z>p{)1*F?iK;*9+0d-nCHIw--A4BVW;US8VNsk^oYteBoMJ?wvVx^zv-*cYW) zE?j#G?wNjMIGdVrNWxLa7hbq0QNw0E(Qx=k!@IC+=WXro;=Z-eQ|;G1ZTqPL(V1_feN2m(!eJ#0}w96PKfezC<cRBD<_j!4mMb>lZOVXW;?q?pRJ;MC@4!Hkrl!j5A}=rC1mO`7+2?tGtH-_D^ICiYtOeb%-Ht1wbhF;r zxwY16t}3L{-&G=}*ccmZb_>SB*Hv?Q?+}xp3ngQs{I+#MdO;PxM>ocXJs2Oa;q;_^ z5ke*HQykVUFxDLD4)3m#1XQO5J` zJR{7cg5aEH`iv-MKmcSwpM%oAB+VGplZ&Bl(Pb?5lgU=)FK5g{eJHRTcO#JtS;TRh zLGmvPKmksEx%#^P^?X>8u{c~pO0*2=86)(?vMi7Q9DW(!_qp1^y}Ut|^3!ai=!gPd zhS%F2c*WRUCv8!}^a7Mctt2X#E!9`i|K(~@zC-YLVXPeDrza(v$Kid4f3>U~Znv*b zZ&%f$i2s_802hz_w0*M{e$>RF;fLg$w1)we!|WZPhKYor%rh0 z<66&M_lqJg@HBAHOX9_r3EqH4tiKeDQX!J`1cH@~S`urvNh3c( z+@-7SXUWD{Zie^vByXF8xS!|n)4xjRB>H-cG4@u#80)}|aD7v_*VHJ=o^~rK;95m- z3F*xbnyf-E{w5dm0GH}cG@ht=acYjxS9Nttf|%p?fB^YV8+wzS?Z&Vhx}* zoK&lIaOV!WSFC(t_5gtx?UpzkB0oe54hm#Mn4>bC*F`oCB`Me6nT&z|gRoeX3yW#2T}prm`JKUJ#y~INumf(^O|3+F4o)M_)GDJmC-j5m6Y3_GMOu5S7@m zi6K_LJIIwU!)_i|v|ac3Rq?=SKc`a}Muq2S!+(DZsuq)_0V^~?+e3|psRB}2SzbYo z)i`duC}Zqt<8J;uL*2}9@l#ex{@$E1naKng{GX5>0u%mY(o<3*nJF|h6tr8^+q>Ig z%K53G%cZ`)%R@P^>w~s`OiOF4?0^i5ezVil^GMloySZ2)=3!Q1K;nhoU0l?>ZH9AK%d*N|}zDgt#RUrHtoDaS*`6zm#PrW;YB zOg;*>7aJ(XBIVdaUtJ$(E4j$XO@^jCM15g>6cyLXv6?2vspD7oTOw>iC@$40^#%A_ z{)!y1H{bStnNRP2PE&S7iArXVEU82Cbdibhj|DZZGUfHAiFk>eS4Y3emA`^3Q#E71 zQllJr>gBaSgZ!v1W;7}yK*C+bTuC{5LUHcUsg83YUS0i`xi%_mOS}jFM&@~Xa77le z#LViq+z$PIqPycoq4T;$2qXxl;8T6JWpLSV-DUrPaVyfEeRuF=v9XFgqJr(w2iwI?$AGQ$)av_~c4CDJv zxtxH*FKk;U3>$~Qcq)`u;*vD^R4AC{^KgqrXZ5duIWb&~y_{0bRVABqBJS`+z2>-$ zE#gja8TUwAfdi9psXIpk!xIW)f*NF@7=smiw!h}ILOu~XG}!eXJ?cKzr)`l?P(Z-W zHhVECq9P`^-U7C4VLcRZRPvU$><>x5m>Tp z@J5(lMDdX^TM6=!Gf;|M6Gt@#92;~x8ydIMvtv#K-okDSPep%+s;-G1mncVpNCYPr z-afL&>A-2y`O=xnJ;_bAGEjV-nHzfV0=@f|0klGTn5yGnA0Zq?O3-f#KZ6?hSu$6z zIbYO5BLgmAxL`(p@&}ax*XZQE26LBQqH01dtSaUG}Ia>tpaMTOBA>bwn=D zo5+_y156{sM2#Un?PoG300FXWl%ql?t#jDf{(Qg9`hy;amxcLT14dahzGF#8RZGiH zSq)@}j-l>41_>~FYw%8P>d+t~Srr8vdww_F7x<^nWQM5(FAF^C*M;{ZT`w*V-J%m& zM{fp|Nrk+;ez`jj*N5HT5dS3i-gm>P|6~ovT?{P4>H(~X?s3|3XxuK-erm!z3|8i)q-@MLlBzeMQgj5+TIm-f`vz9^ZrSp9kQAgo- z8Aa&cO#jB4lwPnHLlgGX9x6aob7&ed!W;S;KnG9mdpRZBZ1@$Ky`Yc#b8-SClMDft zHWh39GbB#Y4`u9G=$VJE1Pd`s>&mYKgXMmnw$cER-{Wb9n76Ht(|%|`eVqa?tk1pg z?@7-X^3$^*zOs3E#};=!+26;b?QwOX&b}~-#2{9juowDFQ

D)-j0ffbbMN@_BB;7Ph-2*c`2Gevk|(s(BLfR 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 0.0 && LocalShadowCoord.x < 1.0 && LocalShadowCoord.y >= 0.0 && LocalShadowCoord.y < 1.0) ? 1 : 0; - float InShadow = ( texture( u_ShadowMap, LocalShadowCoord.xy ) ).r; - InShadow = min(1.0, step(0.0, InShadow - NormalizedCoord) + smoothstep(0.7, 1.0, InShadow)); - float RetVal = InShadow; - - return RetVal; -} - -#ifdef USE_VARIANCE_SHADOWMAP -//----------------------------------------------------------------------------- -float GetInShadowVSM(vec4 LocalShadowCoord) -//----------------------------------------------------------------------------- -{ - // Variance Shadow Map. - float NormalizedCoord = LocalShadowCoord.z + 0.02; - - vec2 DepthAndDepthSq = texture(u_ShadowMap, LocalShadowCoord.xy).xy; - float Variance = DepthAndDepthSq.y - (DepthAndDepthSq.x * DepthAndDepthSq.x); - Variance = max( Variance, 0.01 ); // Clamp variance to help with self-shadowing - - float edgeFade = smoothstep(0.40, 0.50, max(abs(LocalShadowCoord.x - 0.5), abs(LocalShadowCoord.y - 0.5))); //1 outside 'edge' of shadow map, 0 inside he map area - float Distance = NormalizedCoord - DepthAndDepthSq.x; - if (Distance < 0.0) - return 1.0;//not shadowed - return max(edgeFade, Variance / (Variance + (Distance * Distance))); -} -#endif // USE_VARIANCE_SHADOWMAP - -#ifdef USE_PCF_SAMPLING -//----------------------------------------------------------------------------- -float GetInShadowPCF(vec4 LocalShadowCoord) -//----------------------------------------------------------------------------- -{ - float RetVal = 0.0; - - // Set up the blur coordinates... - vec4 blurTexCoords[16]; - blurTexCoords[ 0] = LocalShadowCoord + vec4(-1.5 * FragCB.ShadowSize.z, -1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 1] = LocalShadowCoord + vec4(-0.5 * FragCB.ShadowSize.z, -1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 2] = LocalShadowCoord + vec4( 0.5 * FragCB.ShadowSize.z, -1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 3] = LocalShadowCoord + vec4( 1.5 * FragCB.ShadowSize.z, -1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - - blurTexCoords[ 4] = LocalShadowCoord + vec4(-1.5 * FragCB.ShadowSize.z, -0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 5] = LocalShadowCoord + vec4(-0.5 * FragCB.ShadowSize.z, -0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 6] = LocalShadowCoord + vec4( 0.5 * FragCB.ShadowSize.z, -0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 7] = LocalShadowCoord + vec4( 1.5 * FragCB.ShadowSize.z, -0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - - blurTexCoords[ 8] = LocalShadowCoord + vec4(-1.5 * FragCB.ShadowSize.z, 0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 9] = LocalShadowCoord + vec4(-0.5 * FragCB.ShadowSize.z, 0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 10] = LocalShadowCoord + vec4( 0.5 * FragCB.ShadowSize.z, 0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 11] = LocalShadowCoord + vec4( 1.5 * FragCB.ShadowSize.z, 0.5 * FragCB.ShadowSize.w, 0.0, 0.0); - - blurTexCoords[ 12] = LocalShadowCoord + vec4(-1.5 * FragCB.ShadowSize.z, 1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 13] = LocalShadowCoord + vec4(-0.5 * FragCB.ShadowSize.z, 1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 14] = LocalShadowCoord + vec4( 0.5 * FragCB.ShadowSize.z, 1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - blurTexCoords[ 15] = LocalShadowCoord + vec4( 1.5 * FragCB.ShadowSize.z, 1.5 * FragCB.ShadowSize.w, 0.0, 0.0); - - - // ...and then read the values - RetVal += GetInShadow(blurTexCoords[ 0]); - RetVal += GetInShadow(blurTexCoords[ 1]); - RetVal += GetInShadow(blurTexCoords[ 2]); - RetVal += GetInShadow(blurTexCoords[ 3]); - - RetVal += GetInShadow(blurTexCoords[ 4]); - RetVal += GetInShadow(blurTexCoords[ 5]); - RetVal += GetInShadow(blurTexCoords[ 6]); - RetVal += GetInShadow(blurTexCoords[ 7]); - - RetVal += GetInShadow(blurTexCoords[ 8]); - RetVal += GetInShadow(blurTexCoords[ 9]); - RetVal += GetInShadow(blurTexCoords[ 10]); - RetVal += GetInShadow(blurTexCoords[ 11]); - - RetVal += GetInShadow(blurTexCoords[ 12]); - RetVal += GetInShadow(blurTexCoords[ 13]); - RetVal += GetInShadow(blurTexCoords[ 14]); - RetVal += GetInShadow(blurTexCoords[ 15]); - - // Just took 16 samples so divide to get average - RetVal /= 16.0 ; - - return RetVal; -} -#endif // USE_PCF_SAMPLING - -//----------------------------------------------------------------------------- -float GetShadowAmount(vec4 ShadowCoord) -//----------------------------------------------------------------------------- -{ - // Shadow Calculations (textureProj returns 1.0 for pass (not in shadow) and 0.0 for fail (in shadow)) -#if defined(USE_VARIANCE_SHADOWMAP) - float ShadowAmount = GetInShadowVSM(ShadowCoord); -#elif defined(USE_PCF_SAMPLING) - float ShadowAmount = GetInShadowPCF(ShadowCoord); -#else - float ShadowAmount = GetInShadow(ShadowCoord); -#endif - - //float MinShadow = 0.5f; - //ShadowAmount.w = max(ShadowAmount.w, MinShadow); - - ShadowAmount = mix(0.5, 1.0, ShadowAmount); - return ShadowAmount; -} - diff --git a/samples/hdrSwapchain/shaders/Skybox.frag b/samples/hdrSwapchain/shaders/Skybox.frag deleted file mode 100644 index c963e5d..0000000 --- a/samples/hdrSwapchain/shaders/Skybox.frag +++ /dev/null @@ -1,53 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#version 400 - -#extension GL_ARB_separate_shader_objects : enable -#extension GL_ARB_shading_language_420pack : enable - -// Uniform buffer locations -#define SHADER_VERT_UBO_LOCATION 0 - -// Texture Locations -#define SHADER_ENVIRONMENT_TEXTURE_LOC 1 - -// Textures -layout(set = 0, binding = SHADER_ENVIRONMENT_TEXTURE_LOC) uniform samplerCube u_EnvironmentTex; - -// Varying's -layout (location = 0) in vec2 v_TexCoord; -layout (location = 1) in vec3 v_WorldPos; -layout (location = 2) in vec3 v_WorldNorm; -layout (location = 6) in vec4 v_VertColor; - -// Finally, the output color -layout (location = 0) out vec4 FragColor; - -//----------------------------------------------------------------------------- -void main() -//----------------------------------------------------------------------------- -{ - // ******************************** - // Diffuse Color - // ******************************** - // Get base color from the color texture - vec4 DiffuseColor = v_VertColor.xyzw; - - // ******************************** - // Skybox Color - // ******************************** - vec3 CubeUV = normalize(v_WorldNorm); - vec3 ReflectMapColor = textureLod(u_EnvironmentTex, CubeUV, 0).rgb; - - // ******************************** - // Final Color - // ******************************** - FragColor = vec4(DiffuseColor.xyz * ReflectMapColor.rgb, DiffuseColor.w); -} - diff --git a/samples/hdr_swapchain/CMakeLists.txt b/samples/hdr_swapchain/CMakeLists.txt new file mode 100644 index 0000000..7019793 --- /dev/null +++ b/samples/hdr_swapchain/CMakeLists.txt @@ -0,0 +1,68 @@ +cmake_minimum_required (VERSION 3.21) + +project (hdr_swapchain C CXX) +set(CMAKE_CXX_STANDARD 20) + +# +# Source files included in this application. +# + +set(CPP_SRC code/main/application.cpp + code/main/application.hpp + code/main/materials.hpp +) +set(FRAMEWORK_LIB framework_vulkan) + +# +# Setup the module path to include the 'project directory' (project/windows or project/android) +# +if(NOT DEFINED PROJECT_ROOT_DIR) + set(PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) # Windows can use CMAKE_SOURCE_DIR, Android needs build.gradle needs "-DPROJECT_ROOT_DIR=${project.rootDir}" in call to cmake set since there is not a 'top' cmakefile (gradle is top level) +endif() +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake ${FRAMEWORK_DIR}/cmake) + +# +# Do all the build steps for a Framework application. +# needs Framework_dir and project_name variables. +# +include(FrameworkApplicationHelper) + +# +# Setup asset source and target folders +# + +# cmake will use our GameSampleAssets (default for no parameter) as root directory for any asset request (see FrameworkApplicationHelper.cmake for more info) +inject_root_asset_path() + +# Register local variables for asset request, while also defining them in the C++ code for easy access +# Here we use the default destionation paths, all defined at FrameworkApplicationHelper.cmake +register_local_asset_path(SHADER_DESTINATION "${DEFAULT_LOCAL_SHADER_DESTINATION}") +register_local_asset_path(MESH_DESTINATION "${DEFAULT_LOCAL_MESH_DESTINATION}") +register_local_asset_path(TEXTURE_DESTINATION "${DEFAULT_LOCAL_TEXTURE_DESTINATION}") + +# +# Add in the contents of 'shaders' directory +# +include(AddShadersDir) + +# Search and include all project shaders +scan_for_shaders() + +# +# Copy required models to local folders +# +include(ModelPackager) + +# Scene GLTF +add_gltf(scenes/SteamPunkSauna/SteamPunkSauna.gltf) + +# +# Convert and copy textures to local folders +# +include(TexturePackager) + +# Scene Textures +add_textures_from_path(scenes/SteamPunkSauna UASTC) + +# Supporting Textures +add_textures_from_path(textures) \ No newline at end of file diff --git a/samples/hdrSwapchain/code/main/hdrSwapchain.cpp b/samples/hdr_swapchain/code/main/application.cpp similarity index 82% rename from samples/hdrSwapchain/code/main/hdrSwapchain.cpp rename to samples/hdr_swapchain/code/main/application.cpp index cdff196..33a42fb 100644 --- a/samples/hdrSwapchain/code/main/hdrSwapchain.cpp +++ b/samples/hdr_swapchain/code/main/application.cpp @@ -1,23 +1,21 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== -#include "hdrSwapchain.hpp" +#include "application.hpp" #include "camera/cameraController.hpp" #include "camera/cameraControllerTouch.hpp" #include "gui/imguiVulkan.hpp" #include "main/applicationEntrypoint.hpp" -#include "material/computable.hpp" -#include "material/drawable.hpp" -#include "material/material.hpp" -#include "material/materialManager.hpp" -#include "material/shader.hpp" -#include "material/shaderDescription.hpp" -#include "material/shaderManager.hpp" +#include "material/vulkan/computable.hpp" +#include "material/vulkan/drawable.hpp" +#include "material/vulkan/materialManager.hpp" +#include "material/vulkan/shader.hpp" +#include "material/shaderManagerT.hpp" #include "memory/memoryManager.hpp" #include "memory/vulkan/bufferObject.hpp" #include "memory/vulkan/indexBufferObject.hpp" @@ -28,11 +26,13 @@ #include "vulkan/vulkan.hpp" #include "vulkan/TextureFuncts.h" #include -#include "imgui.h" +#include "imgui/imgui.h" #include #include +VAR(char*, gSceneAssetModel, "SteamPunkSauna.gltf", kVariableNonpersistent); + // Global Variables From Config File bool gRenderShadows = true; bool gRenderHud = true; @@ -41,10 +41,10 @@ bool gAsyncComputeNNAO = true; glm::vec4 gClearColor = glm::vec4(0.3f, 0.3f, 0.3f, 1.0f); -glm::vec3 gCameraStartPos = glm::vec3(7.86955, 13.5954, 0.022805); +glm::vec3 gCameraStartPos = glm::vec3(0.0f, 3.5f, 0.0f); glm::vec3 gCameraStartRot = glm::vec3(0.0f, 0.0f, 0.0f); -glm::vec3 gShadowLightPos = glm::vec3(0.0f, 50.0f, 30.0f); -glm::vec3 gShadowLightTarget = glm::vec3(269.0f, 0.0f, -254.f); +glm::vec3 gShadowLightPos = glm::vec3(111.0f, 420.0f, -423.0f); // sponza etc +glm::vec3 gShadowLightTarget = glm::vec3(269.0f, 0.0f, -254.f); // sponza etc float gFOV = PI_DIV_4; float gNearPlane = 1.0f; @@ -89,7 +89,7 @@ Application::Application() // The Object m_ObjectScale = 1.00f; - m_ObjectWorldPos = glm::vec3(0.0f, -0.5f, 0.0f); + m_ObjectWorldPos = glm::vec3(0.0f, -0.5f, 0.0f); //Sponza etc // The Skybox m_SkyboxScale = 1500.0f; @@ -98,9 +98,6 @@ Application::Application() // Pass Semaphores m_PassCompleteSemaphore.fill(VK_NULL_HANDLE); - // Render passes - m_RenderPass.fill(VK_NULL_HANDLE); - // Compute m_VsmAsyncComputeCanStartSemaphore = VK_NULL_HANDLE; m_VsmAsyncComputeCompleteSemaphore = VK_NULL_HANDLE; @@ -140,10 +137,6 @@ Application::~Application() vkDestroySemaphore(pVulkan->m_VulkanDevice, m_VsmAsyncComputeCanStartSemaphore, NULL); m_VsmAsyncComputeCanStartSemaphore = VK_NULL_HANDLE; - // Textures - ReleaseTexture(*pVulkan, &m_TexWhite); - ReleaseTexture(*pVulkan, &m_DefaultNormal); - ReleaseTexture(*pVulkan, &m_ComputeIntermediateHalfTarget); ReleaseTexture(*pVulkan, &m_ComputeIntermediateHalf2Target); ReleaseTexture(*pVulkan, &m_ComputeIntermediateQuarterTarget); @@ -270,30 +263,30 @@ bool Application::LoadMeshObjects() const auto* pComputeShader = m_ShaderManager->GetShader("VarianceShadowMap"); assert(pComputeShader); - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pComputeShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { + auto material = m_MaterialManager->CreateMaterial(*pComputeShader, NUM_VULKAN_BUFFERS, + [this](const std::string& texName) -> MaterialManagerBase::tPerFrameTexInfo { if (texName == "ShadowDepth") - return { &m_Shadows[0].GetDepthTexture(0) }; + return { &m_Shadows[0].GetDepthTexture() }; else if (texName == "VarianceShadowMap") return { &m_VsmTarget }; assert(0); return {}; }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { + [this](const std::string& bufferName) -> PerFrameBufferVulkan { return { m_ComputeCtrlUniform.buf.GetVkBuffer() }; }); - m_VsmComputable = std::make_unique(*pVulkan, std::move(material)); - if (!m_VsmComputable->Init()) + auto vsmComputable = std::make_unique(*pVulkan, std::move(material)); + if (!vsmComputable->Init()) { LOGE("Error Creating VSM computable..."); - m_VsmComputable.reset(); } else { - m_VsmComputable->SetDispatchGroupCount(0, { 1, m_VsmTarget.Height,1 }); - m_VsmComputable->SetDispatchGroupCount(1, { m_VsmTarget.Width, 1, 1 }); + vsmComputable->SetDispatchGroupCount(0, { 1, m_VsmTarget.Height,1 }); + vsmComputable->SetDispatchGroupCount(1, { m_VsmTarget.Width, 1, 1 }); } + vsmComputable = std::move(vsmComputable); } } @@ -302,22 +295,25 @@ bool Application::LoadMeshObjects() const auto* pComputeShader = m_ShaderManager->GetShader("NNAO"); assert(pComputeShader); - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pComputeShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { + auto material = m_MaterialManager->CreateMaterial(*pComputeShader, NUM_VULKAN_BUFFERS, + [this](const std::string& texName) -> MaterialManagerBase::tPerFrameTexInfo { if (texName == "NNAOout") return { &m_NNAORenderTarget }; if (texName == "NNAOtmp") return { &m_NNAOTempTarget }; else if (texName == "Depth") - return { &m_GBufferRT[0].m_DepthAttachment }; + return { &m_GBufferRT.m_DepthAttachment }; else if (texName == "Normal") - return { &m_GBufferRT[0].m_ColorAttachments[1] }; + return { &m_GBufferRT.m_ColorAttachments[1] }; else { // Assume anything else is a request for Filter texture used by NNAO. - std::string filename = "./Media/Textures/"; - filename.append(texName); + std::string filename = texName; filename.append(".ktx"); - auto* ptexture = m_TextureManager->GetOrLoadTexture(texName, *m_AssetManager, filename, m_SamplerRepeat); + + const PathManipulator_PrefixDirectory prefixTextureDir{ TEXTURE_DESTINATION_PATH }; + const PathManipulator_ChangeExtension changeTextureExt{ ".ktx" }; + + auto* ptexture = m_TextureManager->GetOrLoadTexture(texName, filename, m_SamplerRepeat, prefixTextureDir, changeTextureExt); if (ptexture) return { ptexture }; // File not loaded and not found in already loaded list, since these are Neural Network weights can't just wing it! @@ -325,40 +321,40 @@ bool Application::LoadMeshObjects() return {}; } }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - return { m_NNAOCtrlUniform.vkBuffers }; + [this](const std::string& bufferName) -> PerFrameBufferVulkan { + return { m_NNAOCtrlUniform.bufferHandles }; }); - m_NNAOComputable = std::make_unique(*pVulkan, std::move(material)); - if (!m_NNAOComputable->Init()) + auto NNAOComputable = std::make_unique(*pVulkan, std::move(material)); + if (!NNAOComputable->Init()) { LOGE("Error Creating VSM computable..."); - m_NNAOComputable.reset(); } else { - m_NNAOComputable->SetDispatchGroupCount(0, { (m_NNAORenderTarget.Width + 31) / 32, (m_NNAORenderTarget.Height + 31) / 32,1 }); - m_NNAOComputable->SetDispatchGroupCount(1, { (m_NNAORenderTarget.Width + 63) / 64, m_NNAORenderTarget.Height,1 }); - m_NNAOComputable->SetDispatchGroupCount(2, { m_NNAORenderTarget.Width, (m_NNAORenderTarget.Height + 63) / 64,1 }); + NNAOComputable->SetDispatchGroupCount(0, { (m_NNAORenderTarget.Width + 31) / 32, (m_NNAORenderTarget.Height + 31) / 32,1 }); + NNAOComputable->SetDispatchGroupCount(1, { (m_NNAORenderTarget.Width + 63) / 64, m_NNAORenderTarget.Height,1 }); + NNAOComputable->SetDispatchGroupCount(2, { m_NNAORenderTarget.Width, (m_NNAORenderTarget.Height + 63) / 64,1 }); } + NNAOComputable = std::move(NNAOComputable); } LOGI("Creating Light mesh..."); - MeshObject lightMesh; + Mesh lightMesh; MeshHelper::CreateScreenSpaceMesh(GetVulkan()->GetMemoryManager(), 0, &lightMesh); const auto* pLightShader = m_ShaderManager->GetShader("Light"); assert(pLightShader); - auto lightShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pLightShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo { + auto lightShaderMaterial = m_MaterialManager->CreateMaterial(*pLightShader, NUM_VULKAN_BUFFERS, + [this](const std::string& texName) -> const MaterialManagerBase::tPerFrameTexInfo { if (texName == "Albedo") { - return { &m_GBufferRT[0].m_ColorAttachments[0] }; + return { &m_GBufferRT.m_ColorAttachments[0] }; } else if (texName == "Normal") { - return { &m_GBufferRT[0].m_ColorAttachments[1] }; + return { &m_GBufferRT.m_ColorAttachments[1] }; } else if (texName == "Depth") { - return { &m_GBufferRT[0].m_DepthAttachment }; + return { &m_GBufferRT.m_DepthAttachment }; } else if (texName == "AO") { return { &m_NNAORenderTarget }; @@ -367,19 +363,19 @@ bool Application::LoadMeshObjects() return { &m_VsmTarget }; } else if (texName == "ShadowDepth") { - return { &m_Shadows[0].GetDepthTexture(0) }; + return { &m_Shadows[0].GetDepthTexture() }; } assert(0); return {}; }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { + [this](const std::string& bufferName) -> PerFrameBufferVulkan { //BlitFragCB - return { m_LightFragUniform.vkBuffers }; + return { m_LightFragUniform.bufferHandles }; } ); m_LightDrawable = std::make_unique(*pVulkan, std::move(lightShaderMaterial)); - if (!m_LightDrawable->Init( m_RenderPass[RP_LIGHT], sRenderPassNames[RP_LIGHT], std::move(lightMesh))) + if (!m_LightDrawable->Init( m_RenderPass[RP_LIGHT], {}, sRenderPassNames[RP_LIGHT], std::move(lightMesh))) { LOGE("Error Creating Light drawable..."); } @@ -387,33 +383,33 @@ bool Application::LoadMeshObjects() LOGI("Creating Blit mesh..."); //glm::vec4 PosLLRadius = glm::vec4(-1.0f, -1.0f, 2.0f, 2.0f); //glm::vec4 UVLLRadius = glm::vec4(0.0f, 0.0f, 1.0f, 1.0f); - MeshObject blitMesh; + Mesh blitMesh; MeshHelper::CreateScreenSpaceMesh(pVulkan->GetMemoryManager(), 0, &blitMesh); const auto* pBlitShader = m_ShaderManager->GetShader("Blit"); assert(pBlitShader); - auto blitShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pBlitShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo { + auto blitShaderMaterial = m_MaterialManager->CreateMaterial(*pBlitShader, NUM_VULKAN_BUFFERS, + [this](const std::string& texName) -> const MaterialManagerBase::tPerFrameTexInfo { if (texName == "Diffuse") { - return { &m_MainRT[0].m_ColorAttachments[0] }; + return { &m_MainRT.m_ColorAttachments[0] }; } else if (texName == "Bloom") { return { &m_BloomRenderTarget }; } else if (texName == "Overlay") { - return { &m_HudRT[0].m_ColorAttachments[0] }; + return { &m_HudRT.m_ColorAttachments[0] }; } assert(0); return {}; }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { + [this](const std::string& bufferName) -> PerFrameBufferVulkan { //BlitFragCB - return { m_BlitFragUniform.vkBuffers }; + return { m_BlitFragUniform.bufferHandles }; } ); m_BlitDrawable = std::make_unique(*pVulkan, std::move(blitShaderMaterial)); - if (!m_BlitDrawable->Init( m_RenderPass[RP_BLIT], sRenderPassNames[RP_BLIT], std::move(blitMesh))) + if (!m_BlitDrawable->Init( m_RenderPass[RP_BLIT], {}, sRenderPassNames[RP_BLIT], std::move(blitMesh))) { LOGE("Error Creating Blit drawable..."); } @@ -428,7 +424,6 @@ void Application::Destroy() Vulkan* const pVulkan = GetVulkan(); // Meshes - m_SkyboxDrawable.reset(); m_LightDrawable.reset(); m_BlitDrawable.reset(); m_ComputableTest.reset(); @@ -455,6 +450,10 @@ void Application::Destroy() ReleaseUniformBuffer(pVulkan, m_BlitFragUniform); ReleaseUniformBuffer(pVulkan, m_LightFragUniform); + // Passes + for (auto& pass : m_RenderPass) + pass = {}; + // Finally call into base class destroy FrameworkApplicationBase::Destroy(); } @@ -571,7 +570,7 @@ void Application::Render(float fltDiffTime) if (gRenderHud && m_Gui) { // Render gui (has its own command buffer, optionally returns vk_null_handle if not rendering anything) - guiCommandBuffer = GetGui()->Render(CurrentVulkanBuffer.idx, m_HudRT[0].m_FrameBuffer); + guiCommandBuffer = GetGui()->Render(CurrentVulkanBuffer.idx, m_HudRT.m_FrameBuffer); if (guiCommandBuffer != VK_NULL_HANDLE) { BeginRenderPass(RP_HUD); @@ -607,12 +606,16 @@ bool Application::LoadTextures() { Vulkan* const pVulkan = GetVulkan(); + m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_PrefixDirectory(TEXTURE_DESTINATION_PATH)); + + const PathManipulator_PrefixDirectory prefixTextureDir{ TEXTURE_DESTINATION_PATH }; + // Load 'loose' textures - m_TextureManager->GetOrLoadTexture("Environment", *m_AssetManager, "./Media/Textures/simplesky_env.ktx", m_SamplerRepeat); - m_TextureManager->GetOrLoadTexture("Irradiance", *m_AssetManager, "./Media/Textures/simplesky_irradiance.ktx", m_SamplerRepeat); + m_TextureManager->GetOrLoadTexture("Environment", "simplesky_env.ktx", m_SamplerRepeat, prefixTextureDir); + m_TextureManager->GetOrLoadTexture("Irradiance", "simplesky_irradiance.ktx", m_SamplerRepeat, prefixTextureDir); - m_TexWhite = LoadKTXTexture(pVulkan, *m_AssetManager, "./Media/Textures/white_d.ktx", SamplerAddressMode::Repeat); - m_DefaultNormal = LoadKTXTexture(pVulkan, *m_AssetManager, "./Media/Textures/normal_default.ktx", SamplerAddressMode::Repeat); + m_TexWhite = static_cast(m_TextureManager->GetOrLoadTexture("white_d.ktx", SamplerAddressMode::Repeat, prefixTextureDir)); + m_DefaultNormal = static_cast(m_TextureManager->GetOrLoadTexture("default_ddn.ktx", SamplerAddressMode::Repeat, prefixTextureDir)); return true; } @@ -631,7 +634,7 @@ bool Application::CreateRenderTargets() // Setup the GBuffer const TextureFormat GbufferColorType[] = { TextureFormat::R8G8B8A8_UNORM/*Albedo*/, TextureFormat::R16G16B16A16_SFLOAT/*Normals*/ }; - if (!m_GBufferRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, GbufferColorType, DesiredDepthFormat, VK_SAMPLE_COUNT_1_BIT, "GBuffer RT")) + if (!m_GBufferRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, GbufferColorType, DesiredDepthFormat, Msaa::Samples1, "GBuffer RT")) { LOGE("Unable to create gbuffer render target"); } @@ -639,7 +642,7 @@ bool Application::CreateRenderTargets() // Setup the 'main' (compositing) buffer const TextureFormat MainColorType[] = { TextureFormat::R16G16B16A16_SFLOAT }; - if (!m_MainRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, MainColorType, m_GBufferRT/*inherit depth*/, VK_SAMPLE_COUNT_1_BIT, "Main RT")) + if (!m_MainRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, MainColorType, DesiredDepthFormat, Msaa::Samples1, "Main RT")) { LOGE("Unable to create main render target"); } @@ -647,7 +650,7 @@ bool Application::CreateRenderTargets() // Setup the HUD render target (no depth) const TextureFormat HudColorType[] = { TextureFormat::R8G8B8A8_UNORM }; - if (!m_HudRT.Initialize(pVulkan, gSurfaceWidth, gSurfaceHeight, HudColorType, TextureFormat::UNDEFINED, VK_SAMPLE_COUNT_1_BIT, "HUD RT")) + if (!m_HudRT.Initialize(pVulkan, gSurfaceWidth, gSurfaceHeight, HudColorType, TextureFormat::UNDEFINED, Msaa::Samples1, "HUD RT")) { LOGE("Unable to create hud render target"); } @@ -696,16 +699,16 @@ bool Application::LoadShaders() typedef std::pair tIdAndFilename; for (const tIdAndFilename& i : - { tIdAndFilename { "ObjectDeferred", "Media\\Shaders\\ObjectDeferred.json" }, - tIdAndFilename { "ObjectEmissive", "Media\\Shaders\\ObjectEmissive.json" }, - tIdAndFilename { "Skybox", "Media\\Shaders\\Skybox.json" }, - tIdAndFilename { "Light", "Media\\Shaders\\Light.json" }, - tIdAndFilename { "Blit", "Media\\Shaders\\Blit.json" }, - tIdAndFilename { "VarianceShadowMap", "Media\\Shaders\\VarianceShadowMap.json" }, - tIdAndFilename { "NNAO", "Media\\Shaders\\NNAO.json" } + { tIdAndFilename { "ObjectDeferred", "ObjectDeferred.json" }, + tIdAndFilename { "ObjectEmissive", "ObjectEmissive.json" }, + tIdAndFilename { "Skybox", "Skybox.json" }, + tIdAndFilename { "Light", "Light.json" }, + tIdAndFilename { "Blit", "Blit.json" }, + tIdAndFilename { "VarianceShadowMap", "VarianceShadowMap.json" }, + tIdAndFilename { "NNAO", "NNAO.json" } }) { - if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second)) + if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second, SHADER_DESTINATION_PATH)) { LOGE("Error Loading shader %s from %s", i.first.c_str(), i.second.c_str()); } @@ -744,26 +747,24 @@ bool Application::InitUniforms() m_ComputeCtrl.height = gRenderHeight / 4; CreateUniformBuffer(pVulkan, m_ComputeCtrlUniformQuarter, &m_ComputeCtrl); - // Room lights - m_LightFragUniformData.LightPositions[0] = glm::vec4(-38.0f, 19.0f, -44.f, 200.0f); - m_LightFragUniformData.LightColors[0] = glm::vec4(0.7f, 1.0f, 1.0f, 1.0f); - m_LightFragUniformData.LightPositions[1] = glm::vec4(-20.0f, 19.0f, -54.f, 200.0f); - m_LightFragUniformData.LightColors[1] = glm::vec4(0.7f, 1.0f, 1.0f, 1.0f); - m_LightFragUniformData.LightPositions[2] = glm::vec4(20.0f, 30.0f, -40.0f, 200.0f); + // Bar lights + m_LightFragUniformData.LightPositions[0] = glm::vec4(711.0f, 254.0f, -275.0f, 10000.0f); + m_LightFragUniformData.LightColors[0] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); + m_LightFragUniformData.LightPositions[1] = glm::vec4(650.0f, 250.0f, -400.0f, 10000.0f); + m_LightFragUniformData.LightColors[1] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); + m_LightFragUniformData.LightPositions[2] = glm::vec4(875.0f, 250.0f, -190.0f, 10000.0f); m_LightFragUniformData.LightColors[2] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); - m_LightFragUniformData.LightPositions[3] = glm::vec4(10.0f, 40.0f, -20.0f, 200.0f); + m_LightFragUniformData.LightPositions[3] = glm::vec4(1025.0f, 250.0f, -100.0f, 10000.0f); m_LightFragUniformData.LightColors[3] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); - - // Spot lights - m_LightFragUniformData.LightPositions[4] = glm::vec4(-1.6f, 15.2f, -67.0f, 1000.0f); - m_LightFragUniformData.LightColors[4] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); - m_LightFragUniformData.LightPositions[5] = glm::vec4(1.2f, 15.2f, -67.0f, 1000.0f); - m_LightFragUniformData.LightColors[5] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); - m_LightFragUniformData.LightPositions[6] = glm::vec4(-17.2f, 13.0f, -48.0f, 1000.0f); - m_LightFragUniformData.LightColors[6] = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); - m_LightFragUniformData.LightPositions[7] = glm::vec4(61.f, 30.f, -84.f, 1000.0f); + // Room lights + m_LightFragUniformData.LightPositions[4] = glm::vec4(500.f, 300.f, -50.f, 100000.0f);// 5.0f * 1000, 0.5f * 1000, 3.0f * 1000, 1.0f);// 493.f, 178.0f, -137.6f, 1.0f); + m_LightFragUniformData.LightColors[4] = glm::vec4(0.7f, 1.0f, 1.0f, 1.0f); + m_LightFragUniformData.LightPositions[5] = glm::vec4(800.f, 300.f, 100.f, 100000.0f);// 5.0f * 1000, 0.5f * 1000, 3.0f * 1000, 1.0f);// 493.f, 178.0f, -137.6f, 1.0f); + m_LightFragUniformData.LightColors[5] = glm::vec4(0.7f, 1.0f, 1.0f, 1.0f); + m_LightFragUniformData.LightPositions[6] = glm::vec4(426.f, 300.f, -490.f, 100000.0f);// 5.0f * 1000, 0.5f * 1000, 3.0f * 1000, 1.0f);// 493.f, 178.0f, -137.6f, 1.0f); + m_LightFragUniformData.LightColors[6] = glm::vec4(0.7f, 1.0f, 1.0f, 1.0f); + m_LightFragUniformData.LightPositions[7] = glm::vec4(610.f, 300.f, -846.f, 100000.0f);// 5.0f * 1000, 0.5f * 1000, 3.0f * 1000, 1.0f);// 493.f, 178.0f, -137.6f, 1.0f); m_LightFragUniformData.LightColors[7] = glm::vec4(0.7f, 1.0f, 1.0f, 1.0f); - m_LightFragUniformData.AmbientColor = glm::vec4(0.15f, 0.15f, 0.15f, 1.0f); m_LightFragUniformData.AmbientOcclusionScale = 1.0f; @@ -916,40 +917,40 @@ bool Application::BuildCmdBuffers() for (uint32_t WhichBuffer = 0; WhichBuffer < pVulkan->m_SwapchainImageCount; WhichBuffer++) { // Set up some values that change based on render pass - VkRenderPass WhichRenderPass = VK_NULL_HANDLE; - VkFramebuffer WhichFramebuffer = pVulkan->m_SwapchainBuffers[WhichBuffer].framebuffer; + const RenderPass* WhichRenderPass = nullptr; + VkFramebuffer WhichFramebuffer = pVulkan->GetSwapchainFramebuffer(WhichBuffer).m_FrameBuffer; switch (WhichPass) { case RP_GBUFFER: - WhichRenderPass = m_GBufferRT.m_RenderPass; - WhichFramebuffer = m_GBufferRT[0].m_FrameBuffer; + WhichRenderPass = &m_RenderPass[RP_GBUFFER]; + WhichFramebuffer = m_GBufferRT.m_FrameBuffer; break; case RP_SHADOW: WhichFramebuffer = m_Shadows[0].GetFramebuffer(); - WhichRenderPass = m_Shadows[0].GetRenderPass(); + WhichRenderPass = &m_RenderPass[RP_SHADOW]; break; case RP_LIGHT: - WhichRenderPass = m_MainRT.m_RenderPass; - WhichFramebuffer = m_MainRT[0].m_FrameBuffer; + WhichRenderPass = &m_RenderPass[RP_LIGHT]; + WhichFramebuffer = m_MainRT.m_FrameBuffer; break; case RP_HUD: - WhichRenderPass = m_HudRT.m_RenderPass; - WhichFramebuffer = m_HudRT[0].m_FrameBuffer; + WhichRenderPass = &m_RenderPass[RP_HUD]; + WhichFramebuffer = m_HudRT.m_FrameBuffer; break; case RP_BLIT: - WhichRenderPass = m_RenderPass[WhichPass]; - WhichFramebuffer = pVulkan->m_SwapchainBuffers[WhichBuffer].framebuffer; + WhichRenderPass = &m_RenderPass[WhichPass]; + WhichFramebuffer = pVulkan->GetSwapchainFramebuffer(WhichBuffer).m_FrameBuffer; break; } if (WhichPass == RP_LIGHT) { // Light deferred gbuffer - if (!m_LightCmdBuffer[WhichBuffer].Begin(WhichFramebuffer, WhichRenderPass)) + if (!m_LightCmdBuffer[WhichBuffer].Begin(WhichFramebuffer, *WhichRenderPass)) { return false; } @@ -960,7 +961,7 @@ bool Application::BuildCmdBuffers() if (WhichPass == RP_BLIT) { // Blit (only in the blit pass) - if (!m_BlitCmdBuffer[WhichBuffer].Begin(WhichFramebuffer, WhichRenderPass, true/*swapchain renderpass*/)) + if (!m_BlitCmdBuffer[WhichBuffer].Begin(WhichFramebuffer, *WhichRenderPass, true/*swapchain renderpass*/)) { return false; } @@ -970,7 +971,7 @@ bool Application::BuildCmdBuffers() else { // Objects (can render into any pass except Blit) - if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].Begin(WhichFramebuffer, WhichRenderPass)) + if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].Begin(WhichFramebuffer, *WhichRenderPass)) { return false; } @@ -985,11 +986,6 @@ bool Application::BuildCmdBuffers() { AddDrawableToCmdBuffers(drawable, &m_ObjectCmdBuffer[0][0], NUM_RENDER_PASSES, pVulkan->m_SwapchainImageCount); } - // Add the skybox (last) - if (m_SkyboxDrawable) - { - AddDrawableToCmdBuffers(*m_SkyboxDrawable, &m_ObjectCmdBuffer[0][0], NUM_RENDER_PASSES, pVulkan->m_SwapchainImageCount); - } // and end their pass for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) @@ -1167,14 +1163,14 @@ bool Application::InitCommandBuffers() { // The Pass Command Buffer => Primary sprintf(szName, "Primary (%s; Buffer %d of %d)", GetPassName(WhichPass), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_PassCmdBuffer[WhichBuffer][WhichPass].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY)) + if (!m_PassCmdBuffer[WhichBuffer][WhichPass].Initialize(pVulkan, szName, CommandList::Type::Primary)) { return false; } // Model => Secondary sprintf(szName, "Model (%s; Buffer %d of %d)", GetPassName(WhichPass), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } @@ -1183,62 +1179,62 @@ bool Application::InitCommandBuffers() // Blit => Secondary sprintf(szName, "Blit (%s; Buffer %d of %d)", GetPassName(RP_BLIT), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_BlitCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_BlitCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } // Light => Secondary sprintf(szName, "Light (%s; Buffer %d of %d)", GetPassName(RP_BLIT), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_LightCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_LightCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } // Variant Shadow Map calculation - compute in the ASYNC COMPUTE queue sprintf(szName, "VSM generation ASYNC (Buffer 1 of 1)"); - if (!m_VsmAsyncComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY, computeQueueIndex/*compute*/)) + if (!m_VsmAsyncComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Primary, computeQueueIndex/*compute*/)) { return false; } // Variant Shadow Map calculation - compute but in graphics (regular) queue sprintf(szName, "VSM generation (Buffer 1 of 1)"); - if (!m_VsmComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_VsmComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } // DiffractionDownsample => Secondary (?) sprintf(szName, "DiffractionDownsample (Buffer 1 of 1)"); - if (!m_DiffractionDownsampleCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_DiffractionDownsampleCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } // BloomDownsample => Secondary (?) sprintf(szName, "BloomDownsample (Buffer 1 of 1)"); - if (!m_BloomComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_BloomComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } // BloomDownsample => Secondary (?) sprintf(szName, "BloomDownsample ASYNC (Buffer 1 of 1)"); - if (!m_BloomAsyncComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY, computeQueueIndex/*compute*/)) + if (!m_BloomAsyncComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Primary, computeQueueIndex/*compute*/)) { return false; } // NNAO => Secondary (?) sprintf(szName, "NNAO (Buffer 1 of 1)"); - if (!m_NNAOComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) + if (!m_NNAOComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Secondary)) { return false; } // NNAO => Secondary (?) sprintf(szName, "NNAO ASYNC (Buffer 1 of 1)"); - if (!m_NNAOAsyncComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY, computeQueueIndex/*compute*/)) + if (!m_NNAOAsyncComputeCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, CommandList::Type::Primary, computeQueueIndex/*compute*/)) { return false; } @@ -1258,10 +1254,10 @@ bool Application::InitAllRenderPasses() uint32_t ShadowTargetWidth, ShadowTargetHeight; m_Shadows[0].GetTargetSize(ShadowTargetWidth, ShadowTargetHeight); - m_PassSetup[RP_GBUFFER] = { m_GBufferRT[0].m_pLayerFormats, m_GBufferRT[0].m_DepthFormat, RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, gClearColor,m_GBufferRT[0].m_Width, m_GBufferRT[0].m_Height }; + m_PassSetup[RP_GBUFFER] = { m_GBufferRT.m_pLayerFormats, m_GBufferRT.m_DepthFormat, RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, gClearColor,m_GBufferRT.m_Width, m_GBufferRT.m_Height }; m_PassSetup[RP_SHADOW] = { {}, m_Shadows[0].GetDepthFormat(0), RenderPassInputUsage::DontCare,true, RenderPassOutputUsage::Discard, RenderPassOutputUsage::StoreReadOnly, {}, ShadowTargetWidth, ShadowTargetHeight }; - m_PassSetup[RP_LIGHT] = { m_MainRT[0].m_pLayerFormats, m_GBufferRT[0].m_DepthFormat, RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_MainRT[0].m_Width, m_MainRT[0].m_Height }; - m_PassSetup[RP_HUD] = { m_HudRT[0].m_pLayerFormats, m_HudRT[0].m_DepthFormat, RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_HudRT[0].m_Width, m_HudRT[0].m_Height }; + m_PassSetup[RP_LIGHT] = { m_MainRT.m_pLayerFormats, m_GBufferRT.m_DepthFormat, RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_MainRT.m_Width, m_MainRT.m_Height }; + m_PassSetup[RP_HUD] = { m_HudRT.m_pLayerFormats, m_HudRT.m_DepthFormat, RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_HudRT.m_Width, m_HudRT.m_Height }; m_PassSetup[RP_BLIT] = { {pVulkan->m_SurfaceFormat}, pVulkan->m_SwapchainDepth.format, RenderPassInputUsage::DontCare,false, RenderPassOutputUsage::Present, RenderPassOutputUsage::Discard, {}, GetVulkan()->m_SurfaceWidth, GetVulkan()->m_SurfaceHeight }; LOGI("******************************"); @@ -1274,24 +1270,28 @@ bool Application::InitAllRenderPasses() if (WhichPass == RP_SHADOW) { - m_RenderPass[WhichPass] = m_Shadows[0].GetRenderPass(); + m_RenderPass[RP_SHADOW] = m_Shadows[0].GetRenderContext().GetRenderPass().Copy(); } else { if (!GetVulkan()->CreateRenderPass({PassSetup.ColorFormats}, PassSetup.DepthFormat, - VK_SAMPLE_COUNT_1_BIT, + Msaa::Samples1, PassSetup.ColorInputUsage, PassSetup.ColorOutputUsage, PassSetup.ClearDepthRenderPass, PassSetup.DepthOutputUsage, - &m_RenderPass[WhichPass])) + m_RenderPass[WhichPass])) return false; } // LOGI(" Render Pass (%s; Buffer %d of %d) => 0x%x", GetPassName(WhichPass), WhichBuffer + 1, NUM_VULKAN_BUFFERS, m_RenderPass[WhichPass][WhichBuffer]); } // Which Pass + m_GBufferRT.InitializeFrameBuffer(GetVulkan(), m_RenderPass[RP_GBUFFER]); + m_MainRT.InitializeFrameBuffer(GetVulkan(), m_RenderPass[RP_LIGHT]); + m_HudRT.InitializeFrameBuffer(GetVulkan(), m_RenderPass[RP_HUD]); + return true; } @@ -1302,7 +1302,7 @@ bool Application::InitDrawables() { LOGI("Creating Test Drawable..."); - const auto& bufferLoader = [&](const std::string& bufferSlotName) -> tPerFrameVkBuffer { + const auto& bufferLoader = [&](const std::string& bufferSlotName) -> PerFrameBufferVulkan { if (bufferSlotName == "Vert") { return { m_ObjectVertUniform[RP_GBUFFER][0].buf.GetVkBuffer() }; @@ -1340,15 +1340,22 @@ bool Application::InitDrawables() return false; } - m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_PrefixDirectory{ "Media\\" }, PathManipulator_ChangeExtension{ ".ktx" }); + std::array renderContexts + { + RenderContext(m_RenderPass[RP_GBUFFER].Copy(), Framebuffer(), sRenderPassNames[RP_GBUFFER]), + RenderContext(m_RenderPass[RP_SHADOW].Copy(), Framebuffer(), sRenderPassNames[RP_SHADOW]), + RenderContext(m_RenderPass[RP_LIGHT].Copy(), Framebuffer(), sRenderPassNames[RP_LIGHT]), + RenderContext(m_RenderPass[RP_HUD].Copy(), Framebuffer(), sRenderPassNames[RP_HUD]), + RenderContext(m_RenderPass[RP_BLIT].Copy(), Framebuffer(), sRenderPassNames[RP_BLIT]) + }; if (1) { - auto bistroTextureLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef, const std::string& textureSlotName) -> const MaterialPass::tPerFrameTexInfo + auto textureLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef, const std::string& textureSlotName) -> const MaterialManagerBase::tPerFrameTexInfo { if (textureSlotName == "ShadowDepth") { - return { &m_Shadows[0].GetDepthTexture(0) }; + return { &m_Shadows[0].GetDepthTexture() }; } else if (textureSlotName == "ShadowVarianceDepth") { @@ -1364,19 +1371,49 @@ bool Application::InitDrawables() if (pTexture) return { pTexture }; // File not loaded, use default - return { &m_TexWhite }; + return { m_TexWhite }; } const bool normalMap = (textureSlotName == "Normal"); const bool specMap = !normalMap && (textureSlotName == "SpecMap"); - // See if we can get the filename from the loaded material definition + // See if we can get the filename from the loaded material definition. Take a copy so we can manipulate as needed. std::string textureName = specMap ? materialDef.specMapFilename : (normalMap ? materialDef.bumpFilename : materialDef.diffuseFilename); - auto* pTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, textureName, m_SamplerEdgeClamp); + if (textureName.empty() && normalMap) + { + textureName = materialDef.diffuseFilename; + size_t diff = textureName.find("_diff"); + diff = diff != -1 ? diff : textureName.find("_Diff"); + if (diff != -1) + { + textureName.replace(diff, 5, "_ddna"); + } + else + { + size_t period = textureName.find("."); + if (period != -1) + { + textureName.insert(period, "_ddna"); + } + } + } + + // does not exist - load the new texture. + //std::string filename("./Media/Objects/Bistro/Interior/"); + std::string filename("./Media/Objects/BistroGltfFused/"); + filename.append(textureName); + size_t tga = filename.find(".tga"); + tga = (tga != -1) ? tga : filename.find(".png"); + if (tga != -1) + { + filename.replace(tga, filename.size() - tga, ".ktx"); + } + auto* pTexture = m_TextureManager->GetOrLoadTexture(textureName, filename, m_SamplerRepeat); + if (!pTexture) { // File not loaded, use default - return { (normalMap ? &m_DefaultNormal : &m_TexWhite) }; + return { (normalMap ? m_DefaultNormal : m_TexWhite) }; } else { @@ -1387,49 +1424,29 @@ bool Application::InitDrawables() const auto& bistroMaterialLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef) -> std::optional { using namespace std::placeholders; - if (!materialDef.emissiveFilename.empty()) + //if (materialDef.alphaCutout) + //{ + // return m_MaterialManager->CreateMaterial(*pCutoutShader, std::bind(textureLoader, std::cref(materialDef), _1), bufferLoader); + //} + //else + //if (materialDef.diffuseFilename.find("MASTER_Interior_01_Floor_Tile_Hexagonal_BLENDSHADER") != -1) + if (materialDef.diffuseFilename.find("MASTER_Interior_01_Plaster2_BaseColor") != -1) + { + // This is a roof piece that points upwards and so messes with shadows (remove it) + return {}; + } + else if (!materialDef.emissiveFilename.empty()) { - return m_MaterialManager->CreateMaterial(*GetVulkan(), *pEmissiveShader, NUM_VULKAN_BUFFERS, std::bind(bistroTextureLoader, std::cref(materialDef), _1), bufferLoader); + return m_MaterialManager->CreateMaterial(*pEmissiveShader, NUM_VULKAN_BUFFERS, std::bind(textureLoader, std::cref(materialDef), _1), bufferLoader); } else { - return m_MaterialManager->CreateMaterial(*GetVulkan(), *pOpaqueShader, NUM_VULKAN_BUFFERS, std::bind(bistroTextureLoader, std::cref(materialDef), _1), bufferLoader); + return m_MaterialManager->CreateMaterial(*pOpaqueShader, NUM_VULKAN_BUFFERS, std::bind(textureLoader, std::cref(materialDef), _1), bufferLoader); } }; - DrawableLoader::LoadDrawables( *GetVulkan(), *m_AssetManager, m_RenderPass, sRenderPassNames, "./Media/Meshes/Museum.gltf", bistroMaterialLoader, m_SceneObject, {}, DrawableLoader::LoaderFlags::None, {} ); - } - - { - MeshObject mesh; - if (LoadGLTF("./Media/Objects/Skybox_Separate.gltf", 0, &mesh)) - { - const auto* pSkyboxShader = m_ShaderManager->GetShader("Skybox"); - assert(pSkyboxShader); - auto material = m_MaterialManager->CreateMaterial(*GetVulkan(), *pSkyboxShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { - if (texName == "Environment") - { - return { m_TextureManager->GetTexture("Environment") }; - } - else { - assert(0); - return {}; - } - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - if (bufferName == "Vert") { - return { m_SkyboxVertUniform[RP_GBUFFER][0].buf.GetVkBuffer() }; - } - else { - assert(0); - return {}; - } - }); - uint32_t skyboxRenderPassBits = (1 << RP_LIGHT);// | (1 << RP_REFLECT); - m_SkyboxDrawable = std::make_unique(*GetVulkan(), std::move(material)); - m_SkyboxDrawable->Init(m_RenderPass, sRenderPassNames, skyboxRenderPassBits, std::move(mesh)); - } + const auto sceneAssetPath = std::filesystem::path(MESH_DESTINATION_PATH).append(gSceneAssetModel).string(); + DrawableLoader::LoadDrawables(*GetVulkan(), *m_AssetManager, renderContexts, sceneAssetPath, bistroMaterialLoader, m_SceneObject, DrawableLoader::LoaderFlags::None, {}); } return true; @@ -1461,9 +1478,9 @@ bool Application::InitGui(uintptr_t windowHandle) //----------------------------------------------------------------------------- { // Gui - assert(m_RenderPass[RP_HUD] != VK_NULL_HANDLE); - m_Gui = std::make_unique>(*GetVulkan(), m_RenderPass[RP_HUD]); - if (!m_Gui->Initialize(windowHandle, m_HudRT[0].m_Width, m_HudRT[0].m_Height)) + assert(m_RenderPass[RP_HUD]); + m_Gui = std::make_unique(*GetGfxApi(), m_RenderPass[RP_HUD].Copy()); + if (!m_Gui->Initialize(windowHandle, m_HudRT.m_pLayerFormats[0], m_HudRT.m_Width, m_HudRT.m_Height)) { return false; } @@ -1601,24 +1618,23 @@ bool Application::ChangeSurfaceFormat(SurfaceFormat newSurfaceFormat) return false; } - vkDestroyRenderPass(GetVulkan()->m_VulkanDevice, m_RenderPass[RP_BLIT], nullptr); - m_RenderPass[RP_BLIT] = VK_NULL_HANDLE; + m_RenderPass[RP_BLIT] = {}; auto& PassSetup = m_PassSetup[RP_BLIT]; PassSetup.ColorFormats = { GetVulkan()->m_SurfaceFormat }; - PassSetup.DepthFormat = { GetVulkan()->m_SwapchainDepth.format }; + PassSetup.DepthFormat = GetVulkan()->m_SwapchainDepth.format; if (!GetVulkan()->CreateRenderPass({ PassSetup.ColorFormats }, PassSetup.DepthFormat, - VK_SAMPLE_COUNT_1_BIT, + Msaa::Samples1, PassSetup.ColorInputUsage, PassSetup.ColorOutputUsage, PassSetup.ClearDepthRenderPass, PassSetup.DepthOutputUsage, - &m_RenderPass[RP_BLIT])) + m_RenderPass[RP_BLIT])) return false; - if (!m_BlitDrawable->ReInit( m_RenderPass[RP_BLIT], sRenderPassNames[RP_BLIT], nullptr, nullptr)) + if (!m_BlitDrawable->ReInit( RenderContext(m_RenderPass[RP_BLIT].Copy(), Framebuffer(), sRenderPassNames[RP_BLIT]))) { return false; } @@ -1641,7 +1657,7 @@ bool Application::ChangeSurfaceFormat(SurfaceFormat newSurfaceFormat) for (uint32_t WhichBuffer = 0; WhichBuffer < GetVulkan()->m_SwapchainImageCount; ++WhichBuffer) { - if (!m_BlitCmdBuffer[WhichBuffer].Begin(GetVulkan()->m_SwapchainBuffers[WhichBuffer].framebuffer, m_RenderPass[RP_BLIT], true/*swapchain renderpass*/)) + if (!m_BlitCmdBuffer[WhichBuffer].Begin(GetVulkan()->GetSwapchainFramebuffer(WhichBuffer).m_FrameBuffer, m_RenderPass[RP_BLIT], true/*swapchain renderpass*/)) { return false; } @@ -1689,19 +1705,19 @@ void Application::BeginRenderPass(RENDER_PASS WhichPass) switch (WhichPass) { case RP_GBUFFER: - Framebuffer = m_GBufferRT[0].m_FrameBuffer; + Framebuffer = m_GBufferRT.m_FrameBuffer; break; case RP_SHADOW: Framebuffer = m_Shadows[0].GetFramebuffer(); break; case RP_LIGHT: - Framebuffer = m_MainRT[0].m_FrameBuffer; + Framebuffer = m_MainRT.m_FrameBuffer; break; case RP_HUD: - Framebuffer = m_HudRT[0].m_FrameBuffer; + Framebuffer = m_HudRT.m_FrameBuffer; break; case RP_BLIT: - Framebuffer = pVulkan->m_SwapchainBuffers[m_CurrentVulkanBuffer].framebuffer; + Framebuffer = pVulkan->GetSwapchainFramebuffer(m_CurrentVulkanBuffer).m_FrameBuffer; break; default: assert(0); diff --git a/samples/hdrSwapchain/code/main/hdrSwapchain.hpp b/samples/hdr_swapchain/code/main/application.hpp similarity index 78% rename from samples/hdrSwapchain/code/main/hdrSwapchain.hpp rename to samples/hdr_swapchain/code/main/application.hpp index 93fcec9..94d477f 100644 --- a/samples/hdrSwapchain/code/main/hdrSwapchain.hpp +++ b/samples/hdr_swapchain/code/main/application.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once /// @@ -31,13 +31,11 @@ #include // Forward declarations -class ShaderManager; -template class MaterialManagerT; -class MaterialPass; -class Material; -class Computable; -class Drawable; -class DrawablePass; +class ShaderManagerBase; +template class MaterialManager; +class MaterialPassBase; +class MaterialBase; +class ComputableBase; class Gui; enum RENDER_PASS @@ -94,7 +92,7 @@ class Application : public ApplicationHelperBase void BeginRenderPass(RENDER_PASS WhichPass); void AddPassCommandBuffers(RENDER_PASS WhichPass); void AddPassCommandBuffers(RENDER_PASS WhichPass, std::span SubCommandBuffers); - void AddPassCommandBuffer(RENDER_PASS WhichPass, Wrap_VkCommandBuffer& SubCommandBuffer) + void AddPassCommandBuffer(RENDER_PASS WhichPass, CommandListVulkan& SubCommandBuffer) { AddPassCommandBuffers(WhichPass, {&SubCommandBuffer.m_VkCommandBuffer, 1}); } @@ -115,19 +113,18 @@ class Application : public ApplicationHelperBase bool m_bEncodeSRGB; // Drawables - std::unique_ptr m_SkyboxDrawable; std::vector m_SceneObject; std::unique_ptr m_LightDrawable; std::unique_ptr m_BlitDrawable; // Computables - std::unique_ptr m_VsmComputable; - std::unique_ptr m_ComputableTest; - std::unique_ptr m_BloomComputable; - std::unique_ptr m_NNAOComputable; + std::unique_ptr m_VsmComputable; + std::unique_ptr m_ComputableTest; + std::unique_ptr m_BloomComputable; + std::unique_ptr m_NNAOComputable; // Textures - TextureVulkan m_TexWhite; - TextureVulkan m_DefaultNormal; + const TextureVulkan* m_TexWhite; + const TextureVulkan* m_DefaultNormal; // Light Stuff glm::vec4 m_LightColor; @@ -147,7 +144,7 @@ class Application : public ApplicationHelperBase UniformT m_ObjectFragUniform[NUM_RENDER_PASSES][NUM_VULKAN_BUFFERS]; ObjectFragUB m_ObjectFragUniformData; - Wrap_VkCommandBuffer m_ObjectCmdBuffer[NUM_VULKAN_BUFFERS][NUM_RENDER_PASSES]; + CommandListVulkan m_ObjectCmdBuffer[NUM_VULKAN_BUFFERS][NUM_RENDER_PASSES]; // ********************** // The Skybox @@ -161,7 +158,7 @@ class Application : public ApplicationHelperBase // ********************** // Deferred Lighting // ********************** - Wrap_VkCommandBuffer m_LightCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_LightCmdBuffer[NUM_VULKAN_BUFFERS]; struct LightFragCtrl { static const int cNUM_LIGHTS = 8; glm::mat4 ProjectionInv; @@ -192,7 +189,7 @@ class Application : public ApplicationHelperBase int sRGB = 0; // 1 - apply srgb conversion in output blit shader, 0 passthrough color } m_BlitFragUniformData; UniformArrayT m_BlitFragUniform; - Wrap_VkCommandBuffer m_BlitCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_BlitCmdBuffer[NUM_VULKAN_BUFFERS]; // ********************** // Compute @@ -229,13 +226,13 @@ class Application : public ApplicationHelperBase TextureVulkan m_NNAORenderTarget; TextureVulkan m_NNAOTempTarget; - Wrap_VkCommandBuffer m_VsmComputeCmdBuffer[NUM_VULKAN_BUFFERS]; // Command buffer to run VSM compute commands on the (regular) graphics queue - Wrap_VkCommandBuffer m_VsmAsyncComputeCmdBuffer[NUM_VULKAN_BUFFERS]; // Command buffer for VSM on Async Compute queue (needs separate command buffer since command pool is tied to the destination queue) - Wrap_VkCommandBuffer m_DiffractionDownsampleCmdBuffer[NUM_VULKAN_BUFFERS]; - Wrap_VkCommandBuffer m_BloomComputeCmdBuffer[NUM_VULKAN_BUFFERS]; - Wrap_VkCommandBuffer m_BloomAsyncComputeCmdBuffer[NUM_VULKAN_BUFFERS]; - Wrap_VkCommandBuffer m_NNAOComputeCmdBuffer[NUM_VULKAN_BUFFERS]; - Wrap_VkCommandBuffer m_NNAOAsyncComputeCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_VsmComputeCmdBuffer[NUM_VULKAN_BUFFERS]; // Command buffer to run VSM compute commands on the (regular) graphics queue + CommandListVulkan m_VsmAsyncComputeCmdBuffer[NUM_VULKAN_BUFFERS]; // Command buffer for VSM on Async Compute queue (needs separate command buffer since command pool is tied to the destination queue) + CommandListVulkan m_DiffractionDownsampleCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_BloomComputeCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_BloomAsyncComputeCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_NNAOComputeCmdBuffer[NUM_VULKAN_BUFFERS]; + CommandListVulkan m_NNAOAsyncComputeCmdBuffer[NUM_VULKAN_BUFFERS]; // ********************** @@ -255,7 +252,7 @@ class Application : public ApplicationHelperBase } m_PassSetup[NUM_RENDER_PASSES]; - Wrap_VkCommandBuffer m_PassCmdBuffer[NUM_VULKAN_BUFFERS][NUM_RENDER_PASSES]; + CommandListVulkan m_PassCmdBuffer[NUM_VULKAN_BUFFERS][NUM_RENDER_PASSES]; std::array m_PassCompleteSemaphore; VkSemaphore m_VsmAsyncComputeCanStartSemaphore; VkSemaphore m_VsmAsyncComputeCompleteSemaphore; @@ -265,11 +262,11 @@ class Application : public ApplicationHelperBase VkSemaphore m_NNAOAsyncComputeCompleteSemaphore; // Don't actually need a render pass for each Vulkan Buffer, just one per pass - // These are NOT the same vkrenderpass's as in the CRenderTargetArray's but should be compatible with them (are allowed dfferent load/clear parameters on the atachments) - std::array m_RenderPass; + // These are NOT the same vkrenderpass's as in the RenderTargetArray's but should be compatible with them (are allowed dfferent load/clear parameters on the atachments) + std::array m_RenderPass; // Render targets for each pass - CRenderTargetArray<1> m_GBufferRT; - CRenderTargetArray<1> m_MainRT; - CRenderTargetArray<1> m_HudRT; + RenderTarget m_GBufferRT; + RenderTarget m_MainRT; + RenderTarget m_HudRT; }; diff --git a/samples/hdrSwapchain/code/main/materials.hpp b/samples/hdr_swapchain/code/main/materials.hpp similarity index 91% rename from samples/hdrSwapchain/code/main/materials.hpp rename to samples/hdr_swapchain/code/main/materials.hpp index c52c1b7..e6d9178 100644 --- a/samples/hdrSwapchain/code/main/materials.hpp +++ b/samples/hdr_swapchain/code/main/materials.hpp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #pragma once #include "vulkan/vulkan.hpp" diff --git a/samples/hdr_swapchain/install_apk.bat b/samples/hdr_swapchain/install_apk.bat new file mode 100644 index 0000000..62ab3c4 --- /dev/null +++ b/samples/hdr_swapchain/install_apk.bat @@ -0,0 +1,21 @@ +@echo off +cd /D "%~dp0" + +:: Get the name of the current folder (assumed to be the project name) +for %%I in ("%~dp0.") do set "project_name=%%~nxI" + +@echo. +@echo **************************************** +@echo Installing APK for project: %project_name% +@echo **************************************** + +set "apk_path=..\..\build\android\%project_name%\outputs\apk\debug\%project_name%-debug.apk" + +call adb install -r -t "%apk_path%" + +@echo. +@echo **************************************** +@echo Done! +@echo **************************************** + +IF "%~dpnx0"=="%0" PAUSE \ No newline at end of file diff --git a/samples/hdr_swapchain/install_config.bat b/samples/hdr_swapchain/install_config.bat new file mode 100644 index 0000000..c3d20e8 --- /dev/null +++ b/samples/hdr_swapchain/install_config.bat @@ -0,0 +1,31 @@ + +@echo off +cd /D "%~dp0" + +:: Get the name of the current folder (assumed to be the project name) +for %%I in ("%~dp0.") do set "project_name=%%~nxI" + +:: Check if app_config.txt exists +if exist "app_config.txt" ( + @echo. + @echo **************************************** + @echo Pushing app_config.txt to: /sdcard/Android/data/com.quic.%project_name%/files/ + @echo **************************************** + adb push ./app_config.txt /sdcard/Android/data/com.quic.%project_name%/files/app_config.txt + + @echo. + @echo **************************************** + @echo Done! + @echo **************************************** +) else ( + @echo. + @echo **************************************** + @echo No app_config.txt was found. + @echo It's not necessary for the app, but it can be used to override application settings. + @echo If such functionality is desired, please create the file and override the global variables + @echo according to how they are defined in the project. + @echo **************************************** +) + +:: Pause only if run directly +IF "%~dpnx0"=="%0" PAUSE \ No newline at end of file diff --git a/samples/rotatedCopy/project/android/AndroidManifest.xml b/samples/hdr_swapchain/project/android/AndroidManifest.xml similarity index 97% rename from samples/rotatedCopy/project/android/AndroidManifest.xml rename to samples/hdr_swapchain/project/android/AndroidManifest.xml index 13133ac..bc9a085 100644 --- a/samples/rotatedCopy/project/android/AndroidManifest.xml +++ b/samples/hdr_swapchain/project/android/AndroidManifest.xml @@ -1,7 +1,6 @@ @@ -21,7 +20,7 @@ android:versionName="1.0"> android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="landscape" - android:theme="@style/Theme.NoTitleBar.NoActionBar.Fullscreen"> + android:theme="@style/Theme.NoTitleBar.NoActionBar.Fullscreen" android:exported="true"> + + SGS HDR Swapchain + diff --git a/samples/hdrSwapchain/project/android/res/values/styles.xml b/samples/hdr_swapchain/project/android/res/values/styles.xml similarity index 100% rename from samples/hdrSwapchain/project/android/res/values/styles.xml rename to samples/hdr_swapchain/project/android/res/values/styles.xml diff --git a/samples/hdrSwapchain/shaders/Blit.frag b/samples/hdr_swapchain/shaders/Blit.frag similarity index 94% rename from samples/hdrSwapchain/shaders/Blit.frag rename to samples/hdr_swapchain/shaders/Blit.frag index 81b9a9d..7005436 100644 --- a/samples/hdrSwapchain/shaders/Blit.frag +++ b/samples/hdr_swapchain/shaders/Blit.frag @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== // Blit.frag diff --git a/samples/hdrSwapchain/shaders/Blit.json b/samples/hdr_swapchain/shaders/Blit.json similarity index 100% rename from samples/hdrSwapchain/shaders/Blit.json rename to samples/hdr_swapchain/shaders/Blit.json diff --git a/samples/rayQueryShadows/shaders/Blit.vert b/samples/hdr_swapchain/shaders/Blit.vert similarity index 52% rename from samples/rayQueryShadows/shaders/Blit.vert rename to samples/hdr_swapchain/shaders/Blit.vert index cdd4f93..59fe126 100644 --- a/samples/rayQueryShadows/shaders/Blit.vert +++ b/samples/hdr_swapchain/shaders/Blit.vert @@ -1,23 +1,32 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== + +// Blit.vert #version 400 #extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_420pack : enable #define SHADER_ATTRIB_LOC_POSITION 0 -#define SHADER_ATTRIB_LOC_TEXCOORD0 1 +#define SHADER_ATTRIB_LOC_NORMAL 1 +#define SHADER_ATTRIB_LOC_TEXCOORD0 2 +#define SHADER_ATTRIB_LOC_COLOR 3 +#define SHADER_ATTRIB_LOC_TANGENT 4 layout (location = SHADER_ATTRIB_LOC_POSITION ) in vec4 a_Position; +layout (location = SHADER_ATTRIB_LOC_NORMAL ) in vec3 a_Normal; layout (location = SHADER_ATTRIB_LOC_TEXCOORD0) in vec2 a_TexCoord; +layout (location = SHADER_ATTRIB_LOC_COLOR ) in vec4 a_Color; +layout (location = SHADER_ATTRIB_LOC_TANGENT ) in vec4 a_Tangent; // Varying's layout (location = 0) out vec2 v_TexCoord; +layout (location = 1) out vec4 v_VertColor; void main() { @@ -25,4 +34,7 @@ void main() vec4 TempPos = vec4(a_Position.xyz, 1.0); gl_Position = vec4(TempPos.x, -TempPos.y, TempPos.z, TempPos.w); v_TexCoord = vec2(a_TexCoord.xy); + + // Color is simple attribute color + v_VertColor.xyzw = vec4(a_Color.xyz, 1.0); } diff --git a/samples/hdrSwapchain/shaders/Light.frag b/samples/hdr_swapchain/shaders/Light.frag similarity index 96% rename from samples/hdrSwapchain/shaders/Light.frag rename to samples/hdr_swapchain/shaders/Light.frag index bda76bb..e00aaec 100644 --- a/samples/hdrSwapchain/shaders/Light.frag +++ b/samples/hdr_swapchain/shaders/Light.frag @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== // Blit.frag diff --git a/samples/hdrSwapchain/shaders/Light.json b/samples/hdr_swapchain/shaders/Light.json similarity index 100% rename from samples/hdrSwapchain/shaders/Light.json rename to samples/hdr_swapchain/shaders/Light.json diff --git a/samples/rayReflections/shaders/Light.vert b/samples/hdr_swapchain/shaders/Light.vert similarity index 81% rename from samples/rayReflections/shaders/Light.vert rename to samples/hdr_swapchain/shaders/Light.vert index a60bb2d..2efac1a 100644 --- a/samples/rayReflections/shaders/Light.vert +++ b/samples/hdr_swapchain/shaders/Light.vert @@ -1,10 +1,12 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== + +// Blit.vert #version 400 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/NNAO.comp b/samples/hdr_swapchain/shaders/NNAO.comp similarity index 96% rename from samples/hdrSwapchain/shaders/NNAO.comp rename to samples/hdr_swapchain/shaders/NNAO.comp index effed88..a04326c 100644 --- a/samples/hdrSwapchain/shaders/NNAO.comp +++ b/samples/hdr_swapchain/shaders/NNAO.comp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 450 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/NNAO.json b/samples/hdr_swapchain/shaders/NNAO.json similarity index 100% rename from samples/hdrSwapchain/shaders/NNAO.json rename to samples/hdr_swapchain/shaders/NNAO.json diff --git a/samples/hdrSwapchain/shaders/NNAOFilter_horiz.comp b/samples/hdr_swapchain/shaders/NNAOFilter_horiz.comp similarity index 93% rename from samples/hdrSwapchain/shaders/NNAOFilter_horiz.comp rename to samples/hdr_swapchain/shaders/NNAOFilter_horiz.comp index e3e51d0..39856df 100644 --- a/samples/hdrSwapchain/shaders/NNAOFilter_horiz.comp +++ b/samples/hdr_swapchain/shaders/NNAOFilter_horiz.comp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 450 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/NNAOFilter_vertical.comp b/samples/hdr_swapchain/shaders/NNAOFilter_vertical.comp similarity index 93% rename from samples/hdrSwapchain/shaders/NNAOFilter_vertical.comp rename to samples/hdr_swapchain/shaders/NNAOFilter_vertical.comp index 030a60a..a1f15ad 100644 --- a/samples/hdrSwapchain/shaders/NNAOFilter_vertical.comp +++ b/samples/hdr_swapchain/shaders/NNAOFilter_vertical.comp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 450 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/ObjectDeferred.frag b/samples/hdr_swapchain/shaders/ObjectDeferred.frag similarity index 93% rename from samples/hdrSwapchain/shaders/ObjectDeferred.frag rename to samples/hdr_swapchain/shaders/ObjectDeferred.frag index 083bc2a..405470d 100644 --- a/samples/hdrSwapchain/shaders/ObjectDeferred.frag +++ b/samples/hdr_swapchain/shaders/ObjectDeferred.frag @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 400 diff --git a/samples/hdrSwapchain/shaders/ObjectDeferred.json b/samples/hdr_swapchain/shaders/ObjectDeferred.json similarity index 97% rename from samples/hdrSwapchain/shaders/ObjectDeferred.json rename to samples/hdr_swapchain/shaders/ObjectDeferred.json index 57bc895..ee62b12 100644 --- a/samples/hdrSwapchain/shaders/ObjectDeferred.json +++ b/samples/hdr_swapchain/shaders/ObjectDeferred.json @@ -1,5 +1,5 @@ { - "$schema": "shaderSchema.json", + "$schema": "../../../framework/schema/shaderSchema.json", "Passes": [ { "Name": "RP_GBUFFER", diff --git a/samples/hdrSwapchain/shaders/ObjectDeferred.vert b/samples/hdr_swapchain/shaders/ObjectDeferred.vert similarity index 91% rename from samples/hdrSwapchain/shaders/ObjectDeferred.vert rename to samples/hdr_swapchain/shaders/ObjectDeferred.vert index bf5be30..aa6ad99 100644 --- a/samples/hdrSwapchain/shaders/ObjectDeferred.vert +++ b/samples/hdr_swapchain/shaders/ObjectDeferred.vert @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 400 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/ObjectEmissive.frag b/samples/hdr_swapchain/shaders/ObjectEmissive.frag similarity index 90% rename from samples/hdrSwapchain/shaders/ObjectEmissive.frag rename to samples/hdr_swapchain/shaders/ObjectEmissive.frag index c684cb1..6a7acee 100644 --- a/samples/hdrSwapchain/shaders/ObjectEmissive.frag +++ b/samples/hdr_swapchain/shaders/ObjectEmissive.frag @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 400 diff --git a/samples/hdrSwapchain/shaders/ObjectEmissive.json b/samples/hdr_swapchain/shaders/ObjectEmissive.json similarity index 96% rename from samples/hdrSwapchain/shaders/ObjectEmissive.json rename to samples/hdr_swapchain/shaders/ObjectEmissive.json index 138211f..852448d 100644 --- a/samples/hdrSwapchain/shaders/ObjectEmissive.json +++ b/samples/hdr_swapchain/shaders/ObjectEmissive.json @@ -1,5 +1,5 @@ { - "$schema": "shaderSchema.json", + "$schema": "../../../framework/schema/shaderSchema.json", "Passes": [ { "Name": "RP_LIGHT", diff --git a/samples/hdrSwapchain/shaders/ShadowGen.vert b/samples/hdr_swapchain/shaders/ShadowGen.vert similarity index 80% rename from samples/hdrSwapchain/shaders/ShadowGen.vert rename to samples/hdr_swapchain/shaders/ShadowGen.vert index 24921c0..35a0262 100644 --- a/samples/hdrSwapchain/shaders/ShadowGen.vert +++ b/samples/hdr_swapchain/shaders/ShadowGen.vert @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 400 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/rayReflections/shaders/ShadowShared.h b/samples/hdr_swapchain/shaders/ShadowShared.h similarity index 93% rename from samples/rayReflections/shaders/ShadowShared.h rename to samples/hdr_swapchain/shaders/ShadowShared.h index 0150d45..30f625a 100644 --- a/samples/rayReflections/shaders/ShadowShared.h +++ b/samples/hdr_swapchain/shaders/ShadowShared.h @@ -1,10 +1,8 @@ -//============================================================================================================ -// +// ShadowShared.h + // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Shared Implementation of Shadow mapping code. // -//============================================================================================================ //----------------------------------------------------------------------------- float GetInShadow(vec4 LocalShadowCoord) diff --git a/samples/rayQueryShadows/shaders/Skybox.frag b/samples/hdr_swapchain/shaders/Skybox.frag similarity index 85% rename from samples/rayQueryShadows/shaders/Skybox.frag rename to samples/hdr_swapchain/shaders/Skybox.frag index c963e5d..c8d4708 100644 --- a/samples/rayQueryShadows/shaders/Skybox.frag +++ b/samples/hdr_swapchain/shaders/Skybox.frag @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 400 diff --git a/samples/hdrSwapchain/shaders/Skybox.json b/samples/hdr_swapchain/shaders/Skybox.json similarity index 100% rename from samples/hdrSwapchain/shaders/Skybox.json rename to samples/hdr_swapchain/shaders/Skybox.json diff --git a/samples/hdrSwapchain/shaders/Skybox.vert b/samples/hdr_swapchain/shaders/Skybox.vert similarity index 88% rename from samples/hdrSwapchain/shaders/Skybox.vert rename to samples/hdr_swapchain/shaders/Skybox.vert index f68539d..a3e21db 100644 --- a/samples/hdrSwapchain/shaders/Skybox.vert +++ b/samples/hdr_swapchain/shaders/Skybox.vert @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 400 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/VarianceShadowMap.json b/samples/hdr_swapchain/shaders/VarianceShadowMap.json similarity index 93% rename from samples/hdrSwapchain/shaders/VarianceShadowMap.json rename to samples/hdr_swapchain/shaders/VarianceShadowMap.json index a46ad0e..5bef425 100644 --- a/samples/hdrSwapchain/shaders/VarianceShadowMap.json +++ b/samples/hdr_swapchain/shaders/VarianceShadowMap.json @@ -1,5 +1,5 @@ { - "$schema": "shaderSchema.json", + "$schema": "../../../framework/schema/shaderSchema.json", "Passes": [ { "Name": "vsm_horizontal", diff --git a/samples/hdrSwapchain/shaders/VarianceShadowMap1024_horizontal.comp b/samples/hdr_swapchain/shaders/VarianceShadowMap1024_horizontal.comp similarity index 91% rename from samples/hdrSwapchain/shaders/VarianceShadowMap1024_horizontal.comp rename to samples/hdr_swapchain/shaders/VarianceShadowMap1024_horizontal.comp index 5969284..886ac2f 100644 --- a/samples/hdrSwapchain/shaders/VarianceShadowMap1024_horizontal.comp +++ b/samples/hdr_swapchain/shaders/VarianceShadowMap1024_horizontal.comp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 450 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hdrSwapchain/shaders/VarianceShadowMap1024_vertical.comp b/samples/hdr_swapchain/shaders/VarianceShadowMap1024_vertical.comp similarity index 90% rename from samples/hdrSwapchain/shaders/VarianceShadowMap1024_vertical.comp rename to samples/hdr_swapchain/shaders/VarianceShadowMap1024_vertical.comp index 453a85a..d6e2b91 100644 --- a/samples/hdrSwapchain/shaders/VarianceShadowMap1024_vertical.comp +++ b/samples/hdr_swapchain/shaders/VarianceShadowMap1024_vertical.comp @@ -1,10 +1,10 @@ -//============================================================================================================ +//============================================================================= // // -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020 QUALCOMM Technologies Inc. +// All Rights Reserved. // -//============================================================================================================ +//============================================================================== #version 450 #extension GL_ARB_separate_shader_objects : enable diff --git a/samples/hello-gltf/01_CompileShaders.bat b/samples/hello-gltf/01_CompileShaders.bat deleted file mode 100644 index fcb833a..0000000 --- a/samples/hello-gltf/01_CompileShaders.bat +++ /dev/null @@ -1,39 +0,0 @@ -@echo off - -mkdir .\Media\Shaders - -@echo. -echo **************************************** -echo Compiling Shaders... -echo **************************************** -for %%i in (shaders\*.vert) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.frag) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.comp) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) - -@echo. -echo **************************************** -echo Copying .json -echo **************************************** -xcopy /y shaders\*.json .\Media\Shaders\. - -@echo. -echo **************************************** -echo Done -echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE -goto :EOF - -:COMPILE -glslangValidator.exe -V %1 -o .\Media\Shaders\%~nx1.spv -IF NOT ERRORLEVEL 1 echo. %1 -^> .\Media\Shaders\%~nx1.spv -goto :EOF - -:COMPILE_FAILED -echo COMPILE FAILED -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/hello-gltf/02_Install_APK.bat b/samples/hello-gltf/02_Install_APK.bat deleted file mode 100644 index e189963..0000000 --- a/samples/hello-gltf/02_Install_APK.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off -cd /D "%~dp0" - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\hello-gltf\outputs\apk\debug\hello-gltf-debug.apk -@echo **************************************** -call adb install -r -t ..\..\build\android\hello-gltf\outputs\apk\debug\hello-gltf-debug.apk -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/hello-gltf/03_Adb_Logcat_HelloGLTF.bat b/samples/hello-gltf/03_Adb_Logcat_HelloGLTF.bat deleted file mode 100644 index 21936e2..0000000 --- a/samples/hello-gltf/03_Adb_Logcat_HelloGLTF.bat +++ /dev/null @@ -1,11 +0,0 @@ -@echo off - -@echo Logcat (grep "hellogltf")... -call adb logcat -c -call adb logcat | FIND /I "hellogltf" - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -pause diff --git a/samples/hello-gltf/README.md b/samples/hello-gltf/README.md deleted file mode 100644 index 9b1226c..0000000 --- a/samples/hello-gltf/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Hello-GLTF Sample - -![Screenshot](img/screenshot.png) - -## Overview - -Hello GLTF sample demonstrates the most basic usage of the Framework to produce a native Vulkan application and it is designed to be small and simple and meant as a starting point for developers to expand its functionality. - -It is recommended that this sample is used as a starting point for other applications using this Framework. To do so, this folder can be copied to a desired location and the respective changes to point the source and include files to the Framework `src` and `include` folders are addressed. For simplicity, the folder of the new sample can be created alongside the `hello-gltf` sample within the `samples` folder. This way, no additional modifications are required in any configuration file to build it out of the box. - -## Building - -### Dependencies - -The following dependencies must be installed and the appropriate locations should be referenced in the `PATH` environment variable. - -* Android SDK -* Andorid NDK -* Gradle -* CMake -* Android Studio - -### Pre-Build - -Compile the underlying shaders to .spv by running the batch file below: - -``` -01_CompileShaders.bat -``` - -And convert the needed textures and shaders to the correct format using the batch file below: - -``` -02_PrepareMedia.bat -``` - -Note: The sample assumes there are user provided asset files at the following path: **'Media\Meshes\Museum.gltf'** and **'Media\Meshes\Museum.bin'**. -Texture dependencies from this asset should be added to **'Media\Textures\'** and are required to have the *.ktx* extension. -There are 3 extra require supporting textures that should also go to the same texture path listed above: **white_d.ktx**, **black_d.ktx** and **normal_default.ktx**. -The framework team is working to build a centralized asset repository that should minimize these requirements in the near future. - -### Build - -Once the dependencies are installed and shaders compiled, building this sample .apk/.exe is as simple as running any of the batch files from the framework root directory, accordingly to your target system: - -``` -01_BuildAndroid.bat -02_BuildWindows.bat -``` - -### Deploy (android-only) - -To deploy the media files and the .apk to a connected device, run the batch files below: - -``` -02_CopyMediaToDevice.bat -03_Install_APK.bat -``` - -If desired, you can keep track of any logging by running one of the logcat batch files (which you can find on the current directory). - -## Android Studio - -This sample can also be easily imported to Android Studio and be used within the Android Studio ecosystem including building, deploying, and native code debugging. - -To do this, open Android Studio and go to `File->New->Import Project...` and select the `project\android` folder as the source for the import. This will load up the gradle configuration and once finalized, the sample can be used within Android Studio. diff --git a/samples/hello-gltf/build.gradle b/samples/hello-gltf/build.gradle deleted file mode 100644 index 6c6e1ea..0000000 --- a/samples/hello-gltf/build.gradle +++ /dev/null @@ -1,93 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - lintOptions { - abortOnError false - } - - String rootDir = "${project.rootDir}" - rootDir = rootDir.replace("\\", "/") - - defaultConfig { - applicationId "com.quic.hellogltf" - minSdkVersion 26 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${rootDir}", "-DFRAMEWORK_DIR=${rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - - // Uncomment this to enable validation -// jniLibs { -// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" -// } - } - main.assets { - srcDirs = ['assets'] - // Uncomment this to add Media folder to assets - srcDirs += ['assets_tmp'] - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.19.0+" - path 'CMakeLists.txt' - } - } - - task copyTmpAssets(type: Copy) { - from "Media" - into "assets_tmp/Media" - } - task removeTmpAssets(type: Delete) { - delete "assets_tmp" - } - - afterEvaluate { - packageRelease.finalizedBy(removeTmpAssets) - } - - preBuild.dependsOn(copyTmpAssets) -} diff --git a/samples/hello-gltf/code/main/application.cpp b/samples/hello-gltf/code/main/application.cpp deleted file mode 100644 index bc6da8c..0000000 --- a/samples/hello-gltf/code/main/application.cpp +++ /dev/null @@ -1,987 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -/// -/// Sample app demonstrating the loading of a .gltf file (hello world) -/// - -#include "application.hpp" -#include "main/applicationEntrypoint.hpp" -#include "camera/cameraController.hpp" -#include "camera/cameraControllerTouch.hpp" -#include "camera/cameraData.hpp" -#include "camera/cameraGltfLoader.hpp" -#include "gui/imguiVulkan.hpp" -#include "material/drawable.hpp" -#include "material/vulkan/shaderModule.hpp" -#include "material/shaderManagerT.hpp" -#include "material/materialManager.hpp" -#include "material/vulkan/specializationConstantsLayout.hpp" -#include "mesh/meshHelper.hpp" -#include "mesh/meshLoader.hpp" -#include "system/math_common.hpp" -#include "texture/textureManager.hpp" -#include "imgui.h" - -#include -#include -#include - -namespace -{ - static constexpr std::array sRenderPassNames = { "RP_SCENE", "RP_HUD", "RP_BLIT" }; - - glm::vec3 gCameraStartPos = glm::vec3(26.48f, 20.0f, -5.21f); - glm::vec3 gCameraStartRot = glm::vec3(0.0f, 110.0f, 0.0f); - - float gFOV = PI_DIV_4; - float gNearPlane = 1.0f; - float gFarPlane = 1800.0f; - float gNormalAmount = 0.3f; - float gNormalMirrorReflectAmount = 0.05f; - - const char* gMuseumAssetPath = "Media\\Meshes\\Museum.gltf"; - const char* gTextureFolder = "Media\\Textures\\"; -} - -/// -/// @brief Implementation of the Application entrypoint (called by the framework) -/// @return Pointer to Application (derived from @FrameworkApplicationBase). -/// Creates the Application class. Ownership is passed to the calling (framework) function. -/// -FrameworkApplicationBase* Application_ConstructApplication() -{ - return new Application(); -} - -Application::Application() : ApplicationHelperBase() -{ -} - -Application::~Application() -{ -} - -//----------------------------------------------------------------------------- -bool Application::Initialize(uintptr_t windowHandle, uintptr_t hInstance) -//----------------------------------------------------------------------------- -{ - if (!ApplicationHelperBase::Initialize( windowHandle, hInstance )) - { - return false; - } - - if (!InitializeCamera()) - { - return false; - } - - if (!InitializeLights()) - { - return false; - } - - if (!LoadShaders()) - { - return false; - } - - if (!InitUniforms()) - { - return false; - } - - if (!CreateRenderTargets()) - { - return false; - } - - if (!InitAllRenderPasses()) - { - return false; - } - - if (!InitGui(windowHandle)) - { - return false; - } - - if (!LoadMeshObjects()) - { - return false; - } - - if (!InitCommandBuffers()) - { - return false; - } - - if (!InitLocalSemaphores()) - { - return false; - } - - if (!BuildCmdBuffers()) - { - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -void Application::Destroy() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - // Uniform Buffers - ReleaseUniformBuffer(pVulkan, &m_ObjectVertUniform); - ReleaseUniformBuffer(pVulkan, &m_LightUniform); - - for (auto& [hash, objectUniform] : m_ObjectFragUniforms) - { - ReleaseUniformBuffer(pVulkan, &objectUniform.objectFragUniform); - } - - // Cmd buffers - for (int whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - for (auto& cmdBuffer : m_RenderPassData[whichPass].PassCmdBuffer) - { - cmdBuffer.Release(); - } - - for (auto& cmdBuffer : m_RenderPassData[whichPass].ObjectsCmdBuffer) - { - cmdBuffer.Release(); - } - - m_RenderPassData[whichPass].RenderTarget.Release(); - } - - // Render passes / Semaphores - for (int whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - vkDestroyRenderPass(pVulkan->m_VulkanDevice, m_RenderPassData[whichPass].RenderPass, nullptr); - vkDestroySemaphore(pVulkan->m_VulkanDevice, m_RenderPassData[whichPass].PassCompleteSemaphore, nullptr); - } - - // Drawables - m_SceneDrawables.clear(); - m_BlitQuadDrawable.reset(); - - // Internal - m_ShaderManager.reset(); - m_MaterialManager.reset(); - m_CameraController.reset(); - m_AssetManager.reset(); - - ApplicationHelperBase::Destroy(); -} - -//----------------------------------------------------------------------------- -bool Application::InitializeLights() -//----------------------------------------------------------------------------- -{ - m_LightUniformData.SpotLights_pos[0] = glm::vec4(-6.900000f, 32.299999f, -1.900000f, 1.0f); - m_LightUniformData.SpotLights_pos[1] = glm::vec4(3.300000f, 26.900000f, 7.600000f, 1.0f); - m_LightUniformData.SpotLights_pos[2] = glm::vec4(12.100000f, 41.400002f, -2.800000f, 1.0f); - m_LightUniformData.SpotLights_pos[3] = glm::vec4(-5.400000f, 18.500000f, 28.500000f, 1.0f); - - m_LightUniformData.SpotLights_dir[0] = glm::vec4(-0.534696f, -0.834525f, 0.132924f, 0.0f); - m_LightUniformData.SpotLights_dir[1] = glm::vec4(0.000692f, -0.197335f, 0.980336f, 0.0f); - m_LightUniformData.SpotLights_dir[2] = glm::vec4(0.985090f, -0.172016f, 0.003000f, 0.0f); - m_LightUniformData.SpotLights_dir[3] = glm::vec4(0.674125f, -0.295055f, -0.677125f, 0.0f); - - m_LightUniformData.SpotLights_color[0] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 3.000000f); - m_LightUniformData.SpotLights_color[1] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 3.500000f); - m_LightUniformData.SpotLights_color[2] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 2.000000f); - m_LightUniformData.SpotLights_color[3] = glm::vec4(1.000000f, 1.000000f, 1.000000f, 2.800000f); - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitializeCamera() -//----------------------------------------------------------------------------- -{ - LOGI("******************************"); - LOGI("Initializing Camera..."); - LOGI("******************************"); - - m_Camera.SetPosition(gCameraStartPos, glm::quat(gCameraStartRot * TO_RADIANS)); - m_Camera.SetAspect(float(gRenderWidth) / float(gRenderHeight)); - m_Camera.SetFov(gFOV); - m_Camera.SetClipPlanes(gNearPlane, gFarPlane); - - // Camera Controller // - -#if defined(OS_ANDROID) - typedef CameraControllerTouch tCameraController; -#else - typedef CameraController tCameraController; -#endif - - auto cameraController = std::make_unique(); - if (!cameraController->Initialize(gRenderWidth, gRenderHeight)) - { - return false; - } - - m_CameraController = std::move(cameraController); - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::LoadShaders() -//----------------------------------------------------------------------------- -{ - m_ShaderManager = std::make_unique>(*GetVulkan()); - m_ShaderManager->RegisterRenderPassNames(sRenderPassNames); - - m_MaterialManager = std::make_unique>(); - - LOGI("******************************"); - LOGI("Loading Shaders..."); - LOGI("******************************"); - - typedef std::pair tIdAndFilename; - for (const tIdAndFilename& i : - { tIdAndFilename { "Blit", "Media\\Shaders\\Blit.json" }, - tIdAndFilename { "SceneOpaque", "Media\\Shaders\\SceneOpaque.json" }, - tIdAndFilename { "SceneTransparent", "Media\\Shaders\\SceneTransparent.json" } - }) - { - if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second)) - { - LOGE("Error Loading shader %s from %s", i.first.c_str(), i.second.c_str()); - LOGI("Please verify if you have all required assets on the sample media folder"); - LOGI("If you are running on Android, don't forget to run the `02_CopyMediaToDevice.bat` script to copy all media files into the device memory"); - return false; - } - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::CreateRenderTargets() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - LOGI("**************************"); - LOGI("Creating Render Targets..."); - LOGI("**************************"); - - TextureFormat vkDesiredDepthFormat = pVulkan->GetBestSurfaceDepthFormat(); - TextureFormat desiredDepthFormat = vkDesiredDepthFormat; - - const TextureFormat MainColorType[] = { TextureFormat::R8G8B8A8_SRGB }; - const TextureFormat HudColorType[] = { TextureFormat::R8G8B8A8_SRGB }; - - if (!m_RenderPassData[RP_SCENE].RenderTarget.Initialize(pVulkan, gRenderWidth, gRenderHeight, MainColorType, desiredDepthFormat, VK_SAMPLE_COUNT_1_BIT, "Scene RT")) - { - LOGE("Unable to create scene render target"); - return false; - } - - // Notice no depth on the HUD RT - if (!m_RenderPassData[RP_HUD].RenderTarget.Initialize(pVulkan, gSurfaceWidth, gSurfaceHeight, HudColorType, TextureFormat::UNDEFINED, VK_SAMPLE_COUNT_1_BIT, "HUD RT")) - { - LOGE("Unable to create hud render target"); - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitUniforms() -//----------------------------------------------------------------------------- -{ - LOGI("******************************"); - LOGI("Initializing Uniforms..."); - LOGI("******************************"); - - Vulkan* const pVulkan = GetVulkan(); - - if (!CreateUniformBuffer(pVulkan, m_ObjectVertUniform)) - { - return false; - } - - if (!CreateUniformBuffer(pVulkan, m_LightUniform)) - { - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitAllRenderPasses() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - // ColorInputUsage | ClearDepthRenderPass | ColorOutputUsage | DepthOutputUsage | ClearColor - m_RenderPassData[RP_SCENE].PassSetup = { RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, {}}; - m_RenderPassData[RP_HUD].PassSetup = { RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}}; - m_RenderPassData[RP_BLIT].PassSetup = { RenderPassInputUsage::DontCare, true, RenderPassOutputUsage::Present, RenderPassOutputUsage::Discard, {}}; - - TextureFormat surfaceFormat = pVulkan->m_SurfaceFormat; - auto swapChainColorFormat = std::span({ &surfaceFormat, 1 }); - auto swapChainDepthFormat = pVulkan->m_SwapchainDepth.format; - - LOGI("******************************"); - LOGI("Initializing Render Passes... "); - LOGI("******************************"); - - for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - bool isSwapChainRenderPass = whichPass == RP_BLIT; - - std::span colorFormats = isSwapChainRenderPass ? swapChainColorFormat : m_RenderPassData[whichPass].RenderTarget[0].m_pLayerFormats; - TextureFormat depthFormat = isSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget[0].m_DepthFormat; - - const auto& passSetup = m_RenderPassData[whichPass].PassSetup; - - if (!pVulkan->CreateRenderPass( - { colorFormats }, - depthFormat, - VK_SAMPLE_COUNT_1_BIT, - passSetup.ColorInputUsage, - passSetup.ColorOutputUsage, - passSetup.ClearDepthRenderPass, - passSetup.DepthOutputUsage, - & m_RenderPassData[whichPass].RenderPass)) - { - return false; - } - - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitGui(uintptr_t windowHandle) -//----------------------------------------------------------------------------- -{ - const auto& hudRenderTarget = m_RenderPassData[RP_HUD].RenderTarget; - m_Gui = std::make_unique>(*GetVulkan(), m_RenderPassData[RP_HUD].RenderPass); - if (!m_Gui->Initialize(windowHandle, hudRenderTarget[0].m_Width, hudRenderTarget[0].m_Height)) - { - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::LoadMeshObjects() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - LOGI("***********************"); - LOGI("Initializing Meshes... "); - LOGI("***********************"); - - const auto* pSceneOpaqueShader = m_ShaderManager->GetShader("SceneOpaque"); - const auto* pSceneTransparentShader = m_ShaderManager->GetShader("SceneTransparent"); - const auto* pBlitQuadShader = m_ShaderManager->GetShader("Blit"); - if (!pSceneOpaqueShader || !pSceneTransparentShader || !pBlitQuadShader) - { - return false; - } - - LOGI("***********************************"); - LOGI("Loading and preparing the museum..."); - LOGI("***********************************"); - - m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_PrefixDirectory{ "Media\\" }, PathManipulator_ChangeExtension{ ".ktx" }); - - auto* whiteTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\white_d.ktx", m_SamplerEdgeClamp); - auto* blackTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\black_d.ktx", m_SamplerEdgeClamp); - auto* normalDefaultTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, "Textures\\normal_default.ktx", m_SamplerEdgeClamp); - - if (!whiteTexture || !blackTexture || !normalDefaultTexture) - { - LOGE("Failed to load supporting textures"); - return false; - } - - auto UniformBufferLoader = [&](const ObjectMaterialParameters& objectMaterialParameters) -> ObjectMaterialParameters& - { - auto hash = objectMaterialParameters.GetHash(); - - auto iter = m_ObjectFragUniforms.try_emplace(hash, ObjectMaterialParameters()); - if (iter.second) - { - iter.first->second.objectFragUniformData = objectMaterialParameters.objectFragUniformData; - if (!CreateUniformBuffer(pVulkan, iter.first->second.objectFragUniform)) - { - LOGE("Failed to create object uniform buffer"); - } - } - - return iter.first->second; - }; - - auto MaterialLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef)->std::optional - { - auto* diffuseTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.diffuseFilename, m_SamplerEdgeClamp); - auto* normalTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.bumpFilename, m_SamplerEdgeClamp); - auto* emissiveTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.emissiveFilename, m_SamplerEdgeClamp); - auto* metallicRoughnessTexture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, materialDef.specMapFilename, m_SamplerEdgeClamp); - bool alphaCutout = materialDef.alphaCutout; - bool transparent = materialDef.transparent; - - const Shader* targetShader = transparent ? pSceneTransparentShader : pSceneOpaqueShader; - - ObjectMaterialParameters objectMaterial; - objectMaterial.objectFragUniformData.Color.r = static_cast(materialDef.baseColorFactor[0]); - objectMaterial.objectFragUniformData.Color.g = static_cast(materialDef.baseColorFactor[1]); - objectMaterial.objectFragUniformData.Color.b = static_cast(materialDef.baseColorFactor[2]); - objectMaterial.objectFragUniformData.Color.a = static_cast(materialDef.baseColorFactor[3]); - objectMaterial.objectFragUniformData.ORM.b = static_cast(materialDef.metallicFactor); - objectMaterial.objectFragUniformData.ORM.g = static_cast(materialDef.roughnessFactor); - - if (diffuseTexture == nullptr || normalTexture == nullptr) - { - return std::nullopt; - } - - auto shaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *targetShader, NUM_VULKAN_BUFFERS, - [&](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo - { - if (texName == "Diffuse") - { - return { diffuseTexture ? diffuseTexture : whiteTexture }; - } - if (texName == "Normal") - { - return { normalTexture ? normalTexture : normalDefaultTexture }; - } - if (texName == "Emissive") - { - return { emissiveTexture ? emissiveTexture : blackTexture }; - } - if (texName == "MetallicRoughness") - { - return { metallicRoughnessTexture ? metallicRoughnessTexture : blackTexture }; - } - - return {}; - }, - [&](const std::string& bufferName) -> tPerFrameVkBuffer - { - if (bufferName == "Vert") - { - return { m_ObjectVertUniform.buf.GetVkBuffer() }; - } - else if (bufferName == "Frag") - { - return { UniformBufferLoader(objectMaterial).objectFragUniform.buf.GetVkBuffer() }; - } - else if (bufferName == "Light") - { - return { m_LightUniform.buf.GetVkBuffer() }; - } - - return {}; - } - ); - - return shaderMaterial; - }; - - - const auto loaderFlags = 0; // No instancing - const bool ignoreTransforms = (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0; - - MeshLoaderModelSceneSanityCheck meshSanityCheckProcessor(gMuseumAssetPath); - MeshObjectIntermediateGltfProcessor meshObjectProcessor(gMuseumAssetPath, ignoreTransforms, glm::vec3(1.0f,1.0f,1.0f)); - CameraGltfProcessor meshCameraProcessor{}; - - if (!MeshLoader::LoadGltf(*m_AssetManager, gMuseumAssetPath, meshSanityCheckProcessor, meshObjectProcessor, meshCameraProcessor) || - !DrawableLoader::CreateDrawables(*pVulkan, - std::move(meshObjectProcessor.m_meshObjects), - { &m_RenderPassData[RP_SCENE].RenderPass, 1 }, - &sRenderPassNames[RP_SCENE], - MaterialLoader, - m_SceneDrawables, - {}, // RenderPassMultisample - loaderFlags, - {})) // RenderPassSubpasses - { - LOGE("Error Loading the museum gltf file"); - LOGI("Please verify if you have all required assets on the sample media folder"); - LOGI("If you are running on Android, don't forget to run the `02_CopyMediaToDevice.bat` script to copy all media files into the device memory"); - return false; - } - - if (!meshCameraProcessor.m_cameras.empty()) - { - const auto& camera = meshCameraProcessor.m_cameras[0]; - m_Camera.SetPosition(camera.Position, camera.Orientation); - } - - - LOGI("*********************"); - LOGI("Creating Quad mesh..."); - LOGI("*********************"); - - MeshObject blitQuadMesh; - MeshHelper::CreateScreenSpaceMesh(pVulkan->GetMemoryManager(), 0, &blitQuadMesh); - - // Blit Material - auto blitQuadShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pBlitQuadShader, pVulkan->m_SwapchainImageCount, - [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo - { - if (texName == "Diffuse") - { - return { &m_RenderPassData[RP_SCENE].RenderTarget[0].m_ColorAttachments[0] }; - } - else if (texName == "Overlay") - { - return { &m_RenderPassData[RP_HUD].RenderTarget[0].m_ColorAttachments[0] }; - } - return {}; - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer - { - return {}; - } - ); - - m_BlitQuadDrawable = std::make_unique(*pVulkan, std::move(blitQuadShaderMaterial)); - if (!m_BlitQuadDrawable->Init(m_RenderPassData[RP_BLIT].RenderPass, sRenderPassNames[RP_BLIT], std::move(blitQuadMesh))) - { - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitCommandBuffers() -//----------------------------------------------------------------------------- -{ - LOGI("*******************************"); - LOGI("Initializing Command Buffers..."); - LOGI("*******************************"); - - Vulkan* const pVulkan = GetVulkan(); - - auto GetPassName = [](uint32_t whichPass) - { - if (whichPass >= sRenderPassNames.size()) - { - LOGE("GetPassName() called with unknown pass (%d)!", whichPass); - return "RP_UNKNOWN"; - } - - return sRenderPassNames[whichPass]; - }; - - m_RenderPassData[RP_SCENE].PassCmdBuffer.resize(NUM_VULKAN_BUFFERS); - m_RenderPassData[RP_SCENE].ObjectsCmdBuffer.resize(NUM_VULKAN_BUFFERS); - m_RenderPassData[RP_HUD].PassCmdBuffer.resize(NUM_VULKAN_BUFFERS); - m_RenderPassData[RP_HUD].ObjectsCmdBuffer.resize(NUM_VULKAN_BUFFERS); - m_RenderPassData[RP_BLIT].PassCmdBuffer.resize(pVulkan->m_SwapchainImageCount); - m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.resize(pVulkan->m_SwapchainImageCount); - - char szName[256]; - const VkCommandBufferLevel CmdBuffLevel = VK_COMMAND_BUFFER_LEVEL_SECONDARY; - for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - for (uint32_t whichBuffer = 0; whichBuffer < m_RenderPassData[whichPass].PassCmdBuffer.size(); whichBuffer++) - { - // The Pass Command Buffer => Primary - sprintf(szName, "Primary (%s; Buffer %d of %d)", GetPassName(whichPass), whichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY)) - { - return false; - } - - // Model => Secondary - sprintf(szName, "Model (%s; Buffer %d of %d)", GetPassName(whichPass), whichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_RenderPassData[whichPass].ObjectsCmdBuffer[whichBuffer].Initialize(pVulkan, szName, CmdBuffLevel)) - { - return false; - } - } - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitLocalSemaphores() -//----------------------------------------------------------------------------- -{ - LOGI("********************************"); - LOGI("Initializing Local Semaphores..."); - LOGI("********************************"); - - const VkSemaphoreCreateInfo SemaphoreInfo = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO }; - - for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - VkResult retVal = vkCreateSemaphore(GetVulkan()->m_VulkanDevice, &SemaphoreInfo, NULL, &m_RenderPassData[whichPass].PassCompleteSemaphore); - if (!CheckVkError("vkCreateSemaphore()", retVal)) - { - return false; - } - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::BuildCmdBuffers() -//----------------------------------------------------------------------------- -{ - LOGI("***************************"); - LOGI("Building Command Buffers..."); - LOGI("****************************"); - - Vulkan* const pVulkan = GetVulkan(); - - // Begin recording - for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - auto& renderPassData = m_RenderPassData[whichPass]; - bool bisSwapChainRenderPass = whichPass == RP_BLIT; - - for (uint32_t whichBuffer = 0; whichBuffer < renderPassData.ObjectsCmdBuffer.size(); whichBuffer++) - { - auto& cmdBufer = renderPassData.ObjectsCmdBuffer[whichBuffer]; - - uint32_t targetWidth = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget[0].m_Width; - uint32_t targetHeight = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget[0].m_Height; - - VkViewport viewport = {}; - viewport.x = 0.0f; - viewport.y = 0.0f; - viewport.width = (float)targetWidth; - viewport.height = (float)targetHeight; - viewport.minDepth = 0.0f; - viewport.maxDepth = 1.0f; - - VkRect2D scissor = {}; - scissor.offset.x = 0; - scissor.offset.y = 0; - scissor.extent.width = targetWidth; - scissor.extent.height = targetHeight; - - // Set up some values that change based on render pass - VkRenderPass whichRenderPass = renderPassData.RenderPass; - VkFramebuffer whichFramebuffer = bisSwapChainRenderPass ? pVulkan->m_SwapchainBuffers[whichBuffer].framebuffer : renderPassData.RenderTarget[0].m_FrameBuffer; - - // Objects (can render into any pass except Blit) - if (!cmdBufer.Begin(whichFramebuffer, whichRenderPass, bisSwapChainRenderPass)) - { - return false; - } - vkCmdSetViewport(cmdBufer.m_VkCommandBuffer, 0, 1, &viewport); - vkCmdSetScissor(cmdBufer.m_VkCommandBuffer, 0, 1, &scissor); - } - } - - // Scene drawables - for (const auto& sceneDrawable : m_SceneDrawables) - { - AddDrawableToCmdBuffers(sceneDrawable, m_RenderPassData[RP_SCENE].ObjectsCmdBuffer.data(), 1, static_cast(m_RenderPassData[RP_SCENE].ObjectsCmdBuffer.size())); - } - - // Blit quad drawable - AddDrawableToCmdBuffers(*m_BlitQuadDrawable.get(), m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.data(), 1, static_cast(m_RenderPassData[RP_BLIT].ObjectsCmdBuffer.size())); - - // End recording - for (uint32_t whichPass = 0; whichPass < NUM_RENDER_PASSES; whichPass++) - { - auto& renderPassData = m_RenderPassData[whichPass]; - - for (uint32_t whichBuffer = 0; whichBuffer < renderPassData.ObjectsCmdBuffer.size(); whichBuffer++) - { - auto& cmdBufer = renderPassData.ObjectsCmdBuffer[whichBuffer]; - if (!cmdBufer.End()) - { - return false; - } - } - } - - return true; -} - -//----------------------------------------------------------------------------- -void Application::UpdateGui() -//----------------------------------------------------------------------------- -{ - if (m_Gui) - { - m_Gui->Update(); - ImGuiIO& io = ImGui::GetIO(); - - if (ImGui::Begin("FPS", (bool*)nullptr, ImGuiWindowFlags_NoTitleBar)) - { - ImGui::Text("FPS: %.1f", m_CurrentFPS); - ImGui::Text("Camera [%f, %f, %f]", m_Camera.Position().x, m_Camera.Position().y, m_Camera.Position().z); - ImGui::DragFloat3("Sun Dir", &m_LightUniformData.LightDirection.x, 0.01f, -1.0f, 1.0f); - ImGui::DragFloat3("Sun Color", &m_LightUniformData.LightColor.x, 0.01f, 0.0f, 1.0f); - ImGui::DragFloat("Sun Intensity", &m_LightUniformData.LightColor.w, 0.1f, 0.0f, 100.0f); - ImGui::DragFloat3("Ambient Color", &m_LightUniformData.AmbientColor.x, 0.01f, 0.0f, 1.0f); - - for (int i = 0; i < NUM_SPOT_LIGHTS; i++) - { - std::string childName = std::string("Spot Light ").append(std::to_string(i+1)); - ImGui::TextColored(ImVec4(1, 1, 0, 1), "%s", childName.c_str()); - - if (ImGui::CollapsingHeader(childName.c_str(), ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed)) - { - ImGui::PushID(i); - - ImGui::DragFloat3("Pos", &m_LightUniformData.SpotLights_pos[i].x, 0.1f); - ImGui::DragFloat3("Dir", &m_LightUniformData.SpotLights_dir[i].x, 0.01f, -1.0f, 1.0f); - ImGui::DragFloat3("Color", &m_LightUniformData.SpotLights_color[i].x, 0.01f, 0.0f, 1.0f); - ImGui::DragFloat("Intensity", &m_LightUniformData.SpotLights_color[i].w, 0.1f, 0.0f, 100.0f); - - ImGui::PopID(); - } - - ImDrawList* list = ImGui::GetWindowDrawList(); - - glm::vec3 LightDirNotNormalized = m_LightUniformData.SpotLights_dir[i]; - LightDirNotNormalized = glm::normalize(LightDirNotNormalized); - m_LightUniformData.SpotLights_dir[i] = glm::vec4(LightDirNotNormalized, 0.0f); - } - - glm::vec3 LightDirNotNormalized = m_LightUniformData.LightDirection; - LightDirNotNormalized = glm::normalize(LightDirNotNormalized); - m_LightUniformData.LightDirection = glm::vec4(LightDirNotNormalized, 0.0f); - } - ImGui::End(); - - return; - } -} - -//----------------------------------------------------------------------------- -bool Application::UpdateUniforms(uint32_t whichBuffer) -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - // Vert data - { - glm::mat4 LocalModel = glm::mat4(1.0f); - LocalModel = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, 0.0f)); - LocalModel = glm::scale(LocalModel, glm::vec3(1.0f)); - glm::mat4 LocalMVP = m_Camera.ProjectionMatrix() * m_Camera.ViewMatrix() * LocalModel; - - m_ObjectVertUniformData.MVPMatrix = LocalMVP; - m_ObjectVertUniformData.ModelMatrix = LocalModel; - UpdateUniformBuffer(pVulkan, m_ObjectVertUniform, m_ObjectVertUniformData); - } - - // Frag data - for (auto& [hash, objectUniform] : m_ObjectFragUniforms) - { - UpdateUniformBuffer(pVulkan, objectUniform.objectFragUniform, objectUniform.objectFragUniformData); - } - - // Light data - { - glm::mat4 CameraViewInv = glm::inverse(m_Camera.ViewMatrix()); - glm::mat4 CameraProjection = m_Camera.ProjectionMatrix(); - glm::mat4 CameraProjectionInv = glm::inverse(CameraProjection); - - m_LightUniformData.ProjectionInv = CameraProjectionInv; - m_LightUniformData.ViewInv = CameraViewInv; - m_LightUniformData.ViewProjectionInv = glm::inverse(CameraProjection * m_Camera.ViewMatrix()); - m_LightUniformData.ProjectionInvW = glm::vec4(CameraProjectionInv[0].w, CameraProjectionInv[1].w, CameraProjectionInv[2].w, CameraProjectionInv[3].w); - m_LightUniformData.CameraPos = glm::vec4(m_Camera.Position(), 0.0f); - - UpdateUniformBuffer(pVulkan, m_LightUniform, m_LightUniformData); - } - - return true; -} - -//----------------------------------------------------------------------------- -void Application::Render(float fltDiffTime) -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - // Obtain the next swap chain image for the next frame. - auto currentVulkanBuffer = pVulkan->SetNextBackBuffer(); - uint32_t whichBuffer = currentVulkanBuffer.idx; - - // ******************************** - // Application Draw() - Begin - // ******************************** - - UpdateGui(); - - // Update camera - m_Camera.UpdateController(fltDiffTime * 10.0f, *m_CameraController); - m_Camera.UpdateMatrices(); - - // Update uniform buffers with latest data - UpdateUniforms(whichBuffer); - - // First time through, wait for the back buffer to be ready - std::span pWaitSemaphores = { ¤tVulkanBuffer.semaphore, 1 }; - - const VkPipelineStageFlags DefaultGfxWaitDstStageMasks[] = { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT }; - - // RP_SCENE - { - BeginRenderPass(whichBuffer, RP_SCENE, currentVulkanBuffer.swapchainPresentIdx); - AddPassCommandBuffer(whichBuffer, RP_SCENE); - EndRenderPass(whichBuffer, RP_SCENE); - - // Submit the commands to the queue. - SubmitRenderPass(whichBuffer, RP_SCENE, pWaitSemaphores, DefaultGfxWaitDstStageMasks, { &m_RenderPassData[RP_SCENE].PassCompleteSemaphore,1 }); - pWaitSemaphores = { &m_RenderPassData[RP_SCENE].PassCompleteSemaphore, 1 }; - } - - // RP_HUD - VkCommandBuffer guiCommandBuffer = VK_NULL_HANDLE; - if (m_Gui) - { - // Render gui (has its own command buffer, optionally returns vk_null_handle if not rendering anything) - guiCommandBuffer = GetGui()->Render(whichBuffer, m_RenderPassData[RP_HUD].RenderTarget[0].m_FrameBuffer); - if (guiCommandBuffer != VK_NULL_HANDLE) - { - BeginRenderPass(whichBuffer, RP_HUD, currentVulkanBuffer.swapchainPresentIdx); - vkCmdExecuteCommands(m_RenderPassData[RP_HUD].PassCmdBuffer[whichBuffer].m_VkCommandBuffer, 1, &guiCommandBuffer); - EndRenderPass(whichBuffer, RP_HUD); - - // Submit the commands to the queue. - SubmitRenderPass(whichBuffer, RP_HUD, pWaitSemaphores, DefaultGfxWaitDstStageMasks, { &m_RenderPassData[RP_HUD].PassCompleteSemaphore,1 }); - pWaitSemaphores = { &m_RenderPassData[RP_HUD].PassCompleteSemaphore,1 }; - } - } - - // Blit Results to the screen - { - BeginRenderPass(whichBuffer, RP_BLIT, currentVulkanBuffer.swapchainPresentIdx); - AddPassCommandBuffer(whichBuffer, RP_BLIT); - EndRenderPass(whichBuffer, RP_BLIT); - - // Submit the commands to the queue. - SubmitRenderPass(whichBuffer, RP_BLIT, pWaitSemaphores, DefaultGfxWaitDstStageMasks, { &m_RenderPassData[RP_BLIT].PassCompleteSemaphore,1 }, currentVulkanBuffer.fence); - pWaitSemaphores = { &m_RenderPassData[RP_BLIT].PassCompleteSemaphore,1 }; - } - - // Queue is loaded up, tell the driver to start processing - pVulkan->PresentQueue(pWaitSemaphores, currentVulkanBuffer.swapchainPresentIdx); - - // ******************************** - // Application Draw() - End - // ******************************** -} - -//----------------------------------------------------------------------------- -void Application::BeginRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, uint32_t WhichSwapchainImage) -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - auto& renderPassData = m_RenderPassData[whichPass]; - bool bisSwapChainRenderPass = whichPass == RP_BLIT; - - if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Reset()) - { - LOGE("Pass (%d) command buffer Reset() failed !", whichPass); - } - - if (!m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].Begin()) - { - LOGE("Pass (%d) command buffer Begin() failed !", whichPass); - } - - VkFramebuffer framebuffer = nullptr; - switch (whichPass) - { - case RP_SCENE: - framebuffer = m_RenderPassData[whichPass].RenderTarget[0].m_FrameBuffer; - break; - case RP_HUD: - framebuffer = m_RenderPassData[whichPass].RenderTarget[0].m_FrameBuffer; - break; - case RP_BLIT: - framebuffer = pVulkan->m_SwapchainBuffers[WhichSwapchainImage].framebuffer; - break; - default: - framebuffer = nullptr; - break; - } - - assert(framebuffer != nullptr); - - VkRect2D passArea = {}; - passArea.offset.x = 0; - passArea.offset.y = 0; - passArea.extent.width = bisSwapChainRenderPass ? pVulkan->m_SurfaceWidth : renderPassData.RenderTarget[0].m_Width; - passArea.extent.height = bisSwapChainRenderPass ? pVulkan->m_SurfaceHeight : renderPassData.RenderTarget[0].m_Height; - - TextureFormat swapChainColorFormat = pVulkan->m_SurfaceFormat; - auto swapChainColorFormats = std::span({ &swapChainColorFormat, 1 }); - TextureFormat swapChainDepthFormat = pVulkan->m_SwapchainDepth.format; - std::span colorFormats = bisSwapChainRenderPass ? swapChainColorFormats : m_RenderPassData[whichPass].RenderTarget[0].m_pLayerFormats; - TextureFormat depthFormat = bisSwapChainRenderPass ? swapChainDepthFormat : m_RenderPassData[whichPass].RenderTarget[0].m_DepthFormat; - - VkClearColorValue clearColor = { renderPassData.PassSetup.ClearColor[0], renderPassData.PassSetup.ClearColor[1], renderPassData.PassSetup.ClearColor[2], renderPassData.PassSetup.ClearColor[3] }; - - m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].BeginRenderPass( - passArea, - 0.0f, - 1.0f, - { &clearColor , 1 }, - (uint32_t)colorFormats.size(), - depthFormat != TextureFormat::UNDEFINED, - m_RenderPassData[whichPass].RenderPass, - bisSwapChainRenderPass, - framebuffer, - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); -} - - -//----------------------------------------------------------------------------- -void Application::AddPassCommandBuffer(uint32_t whichBuffer, RENDER_PASS whichPass) -//----------------------------------------------------------------------------- -{ - if (m_RenderPassData[whichPass].ObjectsCmdBuffer[whichBuffer].m_NumDrawCalls) - { - vkCmdExecuteCommands(m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].m_VkCommandBuffer, 1, &m_RenderPassData[whichPass].ObjectsCmdBuffer[whichBuffer].m_VkCommandBuffer); - } -} - -//----------------------------------------------------------------------------- -void Application::EndRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass) -//----------------------------------------------------------------------------- -{ - m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].EndRenderPass(); -} - -//----------------------------------------------------------------------------- -void Application::SubmitRenderPass(uint32_t whichBuffer, RENDER_PASS whichPass, const std::span WaitSemaphores, const std::span WaitDstStageMasks, std::span SignalSemaphores, VkFence CompletionFence) -//----------------------------------------------------------------------------- -{ - m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].End(); - m_RenderPassData[whichPass].PassCmdBuffer[whichBuffer].QueueSubmit(WaitSemaphores, WaitDstStageMasks, SignalSemaphores, CompletionFence); -} diff --git a/samples/hello-gltf/code/main/application.hpp b/samples/hello-gltf/code/main/application.hpp deleted file mode 100644 index 7d8a78b..0000000 --- a/samples/hello-gltf/code/main/application.hpp +++ /dev/null @@ -1,190 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -/// -/// Sample app demonstrating the loading of a .gltf file (hello world) -/// -#pragma once - -#include "main/applicationHelperBase.hpp" -#include "memory/vulkan/uniform.hpp" -#include "vulkan/commandBuffer.hpp" -#include - -#define NUM_SPOT_LIGHTS 4 - -class ShaderManager; -class MaterialManager; -class Drawable; - -enum RENDER_PASS -{ - RP_SCENE = 0, - RP_HUD, - RP_BLIT, - NUM_RENDER_PASSES -}; - -// ********************** -// Uniform Buffers -// ********************** -struct ObjectVertUB -{ - glm::mat4 MVPMatrix; - glm::mat4 ModelMatrix; - glm::mat4 ShadowMatrix; -}; - -struct ObjectFragUB -{ - glm::vec4 Color; - glm::vec4 ORM; -}; - -struct LightUB -{ - glm::mat4 ProjectionInv; - glm::mat4 ViewInv; - glm::mat4 ViewProjectionInv; // ViewInv * ProjectionInv - glm::vec4 ProjectionInvW; // w components of ProjectionInv - glm::vec4 CameraPos; - - glm::vec4 LightDirection = glm::vec4(-0.564000f, 0.826000f, 0.000000f, 0.0f); - glm::vec4 LightColor = glm::vec4(1.000000f, 1.000000f, 1.000000f, 1.000000); - - glm::vec4 SpotLights_pos[NUM_SPOT_LIGHTS]; - glm::vec4 SpotLights_dir[NUM_SPOT_LIGHTS]; - glm::vec4 SpotLights_color[NUM_SPOT_LIGHTS]; - - glm::vec4 AmbientColor = glm::vec4(0.340000f, 0.340000f, 0.340000f, 0.0f); - - int Width; - int Height; -}; - -// ********************** -// Render Pass -// ********************** -struct PassSetupInfo -{ - RenderPassInputUsage ColorInputUsage; - bool ClearDepthRenderPass; - RenderPassOutputUsage ColorOutputUsage; - RenderPassOutputUsage DepthOutputUsage; - glm::vec4 ClearColor; -}; - -struct PassData -{ - // Pass internal data - PassSetupInfo PassSetup; - VkRenderPass RenderPass = VK_NULL_HANDLE; - - // Recorded objects that are set to be drawn on this pass - std::vector< CommandListVulkan> ObjectsCmdBuffer; - - // Command buffer used to dispatch the render pass - std::vector< CommandListVulkan> PassCmdBuffer; - - // Indicates the completing of the underlying render pass - VkSemaphore PassCompleteSemaphore = VK_NULL_HANDLE; - - // Render targed used by the underlying render pass - // note: The blit pass uses the backbuffer directly instead this RT - CRenderTargetArray<1> RenderTarget; -}; - -// ********************** -// Application -// ********************** -class Application : public ApplicationHelperBase -{ - struct ObjectMaterialParameters - { - UniformT objectFragUniform; - ObjectFragUB objectFragUniformData; - - std::size_t GetHash() const - { - auto hash_combine = [](std::size_t seed, const float& v) -> std::size_t - { - std::hash hasher; - seed ^= hasher(v) + 0x9e3228b9 + (seed << 6) + (seed >> 2); - return seed; - }; - - std::size_t result = 0; - result = hash_combine(result, objectFragUniformData.Color.x); - result = hash_combine(result, objectFragUniformData.Color.y); - result = hash_combine(result, objectFragUniformData.Color.z); - result = hash_combine(result, objectFragUniformData.Color.w); - result = hash_combine(result, objectFragUniformData.ORM.r); - result = hash_combine(result, objectFragUniformData.ORM.g); - result = hash_combine(result, objectFragUniformData.ORM.b); - result = hash_combine(result, objectFragUniformData.ORM.a); - - return result; - }; - }; - -public: - Application(); - ~Application() override; - - // ApplicationHelperBase - virtual bool Initialize(uintptr_t windowHandle, uintptr_t hInstance) override; - virtual void Destroy() override; - virtual void Render(float fltDiffTime) override; - -private: - - // Application - Initialization - bool InitializeLights(); - bool InitializeCamera(); - bool LoadShaders(); - bool CreateRenderTargets(); - bool InitUniforms(); - bool InitAllRenderPasses(); - bool InitGui(uintptr_t windowHandle); - bool LoadMeshObjects(); - bool InitCommandBuffers(); - bool InitLocalSemaphores(); - bool BuildCmdBuffers(); - -private: - - // Application - Frame - void BeginRenderPass(uint32_t WhichBuffer, RENDER_PASS WhichPass, uint32_t WhichSwapchainImage); - void AddPassCommandBuffer(uint32_t WhichBuffer, RENDER_PASS WhichPass); - void EndRenderPass(uint32_t WhichBuffer, RENDER_PASS WhichPass); - void SubmitRenderPass(uint32_t WhichBuffer, RENDER_PASS WhichPass, const std::span WaitSemaphores, const std::span WaitDstStageMasks, std::span SignalSemaphores, VkFence CompletionFence = (VkFence)nullptr); - void UpdateGui(); - bool UpdateUniforms(uint32_t WhichBuffer); - -private: - - // Render passes - std::array< PassData, NUM_RENDER_PASSES> m_RenderPassData; - - // UBOs - UniformT m_ObjectVertUniform; - ObjectVertUB m_ObjectVertUniformData; - UniformT m_LightUniform; - LightUB m_LightUniformData; - std::unordered_map m_ObjectFragUniforms; - - // Drawables - std::vector m_SceneDrawables; - std::unique_ptr m_BlitQuadDrawable; - - // Shaders - std::unique_ptr m_ShaderManager; - - // Materials - std::unique_ptr m_MaterialManager; -}; diff --git a/samples/hello-gltf/img/screenshot.png b/samples/hello-gltf/img/screenshot.png deleted file mode 100644 index 13f6aa87ef06107e02bbe81a12d47fa5f76a20eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2692986 zcmV)rK$*XZP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&|D{PpK~#8Nbp6+_ zB+IhqiN)OMp6=A@Fqj9D^F|T`2!aHN z20;)*@W15mvskOnK9?Zih>D688R6k>ZuWiV=H|}nw0SmbZASG$BOg6}9yxv<4eUja zpGA(Ih7P_79X<&ia`Gg&|4m^38;)Fz96pI2Jxv6jWuph#$bL3*;HAUWT&!M5R&udY zCfq2*%h^aV6)q%0#dNrqk9VuNPC4DFWJfJ;J82CY#a=bnuesw^anY}=M~!KxH0zd^ zgW9ZH;!nGI|8hG$Uk-QE?q<^3&AN+0W7e(gCQa^K4QummdDJX&-s72#0)^+-+;BY~ z?NzhEkugO?ZE zi}h$X?VQegHz)IxX?rtjQ2F(+)+(hFq5a^&lkm~gcxXQvInKlb@!)=pha5c(t8LZ1 z@#AO7;Bz%^bUzn6$j1*0iKAjFK&?1Qh4=D_V?MA^Oy?2-Do?Y!(a6z%y*hAqhtA2N zb9&&MP&ntxfwMhyb_wS?=3IoG^MG@9WH;EIU+&p(o1N?e&S~4Z?K*dU={PU!$T=rE z?>jH8ycjqyht9nnDg5^Z*L(J>sq=Q}d>lCUJ?BN|@oAj%1bfuOf35Hn|A8<4SJ)MP zc;8of#gQxa6aC39>aYKJ^WSe6IIkwodwytt;)-g;Pq_D9y^!*IVVx)ZOZu^cRq0C&^bSJ&M2|3r^r0A zy69CHV#7wBeh(geLoZVpR_f@$GfE=(P*S1inaDmR9j5H1!_RZk{e0}eMFtYb-CBO! zE-wZ(U!2b7ZH^~aHsi+W9C_>PChhH{eYWVG&N}Cd&ef`WvFL0@{G>i^x*uA-tkt0%68n~Posv*u)5w1ZgxY)Om;hMM_Es}LDhQ?pin+H&WeV!xbh6{3|)5EbEnOD1|y%|%y(>gB9;x$Ipm`_%Ak z-hFj8z1fbg)&s6EOwJbFMZa3j$KwpEqo)jtMBq7t&PyI6gI+4+r5J|Cj6^=4 zC({BHow(s&P5BV&rvR_VeZBc zsXPsJI&0Id9M^;Du%2&}-F7)wFQQ{3)m*q!P7N9bHxWohk20}i8VZfXi&7>wJS3k$ zO$AC>G;;(cMm_6pq~^xTxmejv(8x$*Js&GeT_@1kYNbM4=lOUg8{+4w&>mKRj_6l& zu46A$~-!RWpHZDbXvZXqHO) zxLu^7qP(S)jisZ<99!iqDzRJ1tcR6;If007hL!VK^L*B#FIN4^a!}oln+Ph(bJB2U zt-_>TY~*A0Y^ahBHQZ>olpNI3Ywj7=Pp9ph&G2qFIGZ(JoQ&Vy?%rH)FP9x2f;G9` z%}y8nVIxOBW}}CQhm1n<81Yd1&}D9;6}yWX;C$6XabrH`=M> z_!Yv;Ig(lBud+L_Rxwe_MQA;wOH#@Rk{(b&Fm}@x<7GW;U@N!d7N0!tRu=tQyObK# za-6RQbu8(i<|6-eBDRdz`I0Z;S2ZG)bfA_EBC)-4V%p5ra?w&I(kv$Wl~gMq=@g@N zH%wKj054UahMq@{p9c584(xrM2pzOa*=3(jX>c4h3-cabQ>TwkrUDZ4Zi!Ke##;?) z!=_ixC*4#emk4F!0XGq<6;rKphM`2iV~8p3Qo2*l)bq(^Iae#W4KLmDV$DLdd-VeS1#W2;lMJPnm#(@|A97%e8Bmj!*C{1h#TX-^U(NKZbV?STiDqbfF!%n?Y%rX$FfRIAQOGheM^hS)nphMf`G=mrIhZMyE&l!m{ek`~b3+&O? zlSYAzM7RcZ65ihZe){mOsc%}m9A3x!WR?>Z;tKea>gp&d@k&Q05S zH*-!)_Sd4Fc>m-jFl2|>*f9l7%SZv!u#zh4YdKZzYZWt0_VRze6o1@nOtK+G5^NHR*h;>MBcY9Zb5 zvYl#<;e+kyR^35859)4uX^?HRm;!Gw@T+cYPca|80H1)@igg=felAHoO? zA3jZnQ4tv|6v~0;jGF}tY7IMrW>^mE(_Srn^z882SI5u)LJL4B7>t<+R^ter$y>@P z6qFQltC$=%3s^mDTq?Am3Ge432ULJ+U~y2kpd;@0?G9Qua`+98^2v*h^e3o#>|Nc< zG)uW|tw^J_%Cugt>c-RI16tKh9H*lPd?1enY-9B(d>1MLV@;K?1+{Fr!?3NThSlVt zn(UV1RX4)$ETyH=E13YlMVavG$07p7+YRqMjRf{nFX;MrIEPro{N`W3pALRH%p zmj^ZqNo>=kUFz3iRT*?F{WxovrmX@*52i!I`nKTc`B%q#f1#;;97`7nzQRr72gT%J zISu*>lu*mLD2lY2Pn5HQNr~?s#`0x z%ZO7Njf(nZ1R*~(AZ-OSg%wiOX$Op5-2miP!_(#9bU8d*jn0?-PALW4ML&aZ7*O3x zw&`WC2${$sGR%u$b6z?`5k`&Z3Jrw}8|M{7|56yRp+o&C7TkB!7?&^|l#T@{`E)eR zSP1RI>5ymjJ5qhTmrF*xT$0YBH><@oLP*2Ty491_cs}Y(di8Oq(y8U8{BuzRl_%%o zL52_J7}=&WzFC-#_Y6RglIDuu}aW+fq{c> zvM~lA1}KP~p!sHL$s$1tcHP0yqa#0d5(* z*wY$Vv5-K7s&1l?4(H;>kP*f^n8D}oJnFGXrPC}Fnuzz>tDlC{$kNr+oNlFJ?Pfh4 z4^iz}K7sCKq%246?X(LjW4!QQpSHu=P*AzpJ|~Pv@JY>$3-DBOz%YmaO^RSsPzC7Z zS=$3d!Pjnfqnq6X{4b2%ElpYlFoO>*pp!sN5Eqt(o6q1)bI4i+Q3nn7YuRCg-Y?R3 zppkj61_kYuvq(5z zvFF^ko!c*-DV}3R=jJfduk1vgBXcDAMZTxOWBK!+{44%*_^>1{UiK?I5S<0GyjZkPXW-yEX!vv{htzh`!C?DD@oL?_ z-HzbTH>)08-SX}Y(&$^H4_ zW;42458vIL-k!{^H{+M*%Xc@YyhW~-@B!$bX30hm`E5RaoKFNRx%hn89<-}nv`4Fm z0l?x??d7O7?9^&r&P|28l?;j=6%3F??Lr-~qr+OZU5vI1(S{qYo0qw2eg_J}N-Z2a z+>M*}m+P13i>p=ta@o6HQTn%=!K>5p`|IWB`!f(*R@Hd;7W4q)5%kP6QN${4xJe@v zA~cBn4!H;h0R47JE1TWLSn^vm1_ez`Ju!7O5m@fuH-YTWw59N&9G^k4H`7k#1a8OA@W01F-P5*RKf3X|AJegdt zy64lz)e@teq$Y?iLYoq2*efIs;rSFE3-eiYy>Y{(<$IMBfS!KglhM7+vfFEvhb=_9 zax72XFPe;!y+KAw4sS#eNau$TKVm;Hg4t{ZUjqAovYdKsF}aqj1c%2 zC*zNItE)wQH>zE4M|UTao3%QWn)BhiY4>E-pY+G|uL=^uXSG6dHEx~Gdl22z zd4Dx(qFXlO7Gq%m)f}J%Ibz6n+k2&0+l$t6p+fx7V6lAVAY(AG5L*Dw5Wv2#2QXN;N|E25%{ufEO|cnPedl$z zoWj_Za&gV{(AwbFRH&4Vf@1&)wL-e=reRs>=n=Gp)_{zqqldfAYCWf6qO>z0%qSN8 z%EoC33#&;oOebtAun#Hv8Z1jqpmv;qjq1g8x0avw%Dz(xxbH&kVgZ!x7b-=;&L#pd zC}9|BSBdLE$sE?ai~AWMwPLF7rF%6OMF&op_M6L52k7EE!s>F}MmPcWLU>?1;!9}e zZUy=(242ezYB|Q8-!Ebdh5L6MUPkfi@r~aqAM%sZt2`wZEt3e?=rX4 z7w6RV*g0=oJD4+$6Pm(rf!nt8ZtlFF|H&<-Ci>0)aL!dbTO#o;%(RY;|Jww2r zpzzP;o$W+3JwQ`N!K_m}nKZVeTBj68o2^DIgwuBfAc}M-Xpq6>#*e_LEnsRU1c5>S zx4k54zhBKYi%`KN7`0YRH%hstIi%=o-@U@0_$_LjpCglE8U}7f)caM#*kw@ns8t-d z%iH+?4ue^j9d8z_V)c_z6@_*(sWW)dNYI{TuMCTz8pRYN^bnPf@-tyCibkE)L|V%>d)Uy+?ar!=)j6{&-Bo zBV@c}SW&z-CHyc7F!bYQp;1VBsSwr;JWOS!ee`xWml(@4Qz<@OI-mypqcEEpYWlK8lrD_NojYOqfjuKWFR!ZzMv(-tf5Rl&CyY z4-}YA6#td!@y~UH6epvBta+vinHZ`z6*-ho${bkSAJ~7Aj2wHpRK3IqP4GFbQnpjg zw<|f0>)CMBZHziq@N=i`(I9{#SJHS~%EUB(6Au7@eHRHvpQFMQG=VLll8c8|?0roa zs5@-Bg+l)#Z{edo+Sd55+)0d`PC4bJgNUU+Hu*Y)Assp7d&POpLx<=BGl0a!D*=i`a zlzEq)`Y{<;XTIJ1%koLpiz#U~PqV+=qjol~WP?bZ!ZBgWCl^z%0aMWrtwM~RMeM1z zkLqQ|6QUd7H`Ff#2Z(}foA||e7az;Orz8M2265BIICwJW2nI4BFO|mfbA9ZCTS_&7 zt;d2ILE)okjE9<+ZB;c>4kSBYk0#wpo`<6n1)C2*P;T@9Fw8luq>_ueF)(KYZ~}OM zq1afXNj24q;@yrLm=DYZZ0=?|yjb>5XRSdk<5LW*34LMHw6HeK4TEeq1LU!s4S8vW=2UVKcn3H{PG`9+Q@}!y#AOZbFkJXu#*bNCD{> z0CW!;pK;>*l^M)3SE%(w5S)jYmhwr48MQ=LB4h<%ec~8P*(#;`_1tP$-A!All3BNk z%Cm?7_;5w@y}in?p2HSit$S34rreC0yQv&??NYK?h+*UBz0&oj_xb`73)AS*e-LKi z9Vph1lY*ttE{sNc4xWQaZWZOm8#O)nD%6G2EF=KIqgH9!Z=lFvdZ-M*BI1aaET*HS zoE)puW(F7ml!VZBiqU>K-mj+o0Z`YBy1uKbff~j<@Ubvw6bEe;IeLcWNQ4f6>=%m; z#QW9d3VwAqYtu0dMTz*qlQ=96%@{dG$}L(-)6p10YvE^Eo122>A>2qgBT!5@6-2?& zlC;TsR7Wl^7v0N6?|j~Cd1*9PCUR6xry~D6dUQo?e7Dr0#ZN_?i)-hXd*}C;&aW?= zUv8bBZ=Ij6ou6)W^7EDR*a!Z+u>OIAG zOL38-IjY`!&i%1-W#u~H+=QH$QRhw4`IvQn%sM~h%q?}~Tpn8d6eodyKTJgqP(UaM zhB1r|y_Sj|W7Qa9GB!49{GmjTXKm__z6MOlSVs1Ik2}}Fsi(6xk}SPr;?0RD@mMia zm#gj$uOR6kNLQ#(cL_w;1b}U!0`n78L0uj0ZwqI{HWo8007o9EGN5AX$gfc&6^;1V*- z8TsffVk<^v5FRe>M%7nmllznL>7>Ea#x0B%)~i@U0j4$4WX`EjDJ36@IxZW+@cY-R znJ~tZW_fioLRx(1(aYWNem9u4fGnEaqgkY~4Cn(!s}_&ba3ix;VKbeO9K7xDwr zm9ovm2F-G>;bHU8(iUP+=gyOH{e0Fu9V4ZR!MWa!U!Kj;r3NoF(=cu3TLt+6ry$Oj z*9DFjVweVK)y<~=-K&#NFHaGE^VoLI=bej1?{0^UN65R3ot7seH*I^PrpuR#0_DOD zg-S_6(D3a-3~i4=5l6~|1uv2?6T~~(&PNvA;>Eo6V%vYY8{Dnsi#eIdsMX;)&r1m&Eb5k~=oDi-0omiFbc%k}%AZXe<3BEfQGHE2b!V5Vsh+Pk*hHHgO1a8<>e%`a7*D%9!O2uUF!(zf*u&m1A}~W}7)HwL%jLV< z-OXlrwdzB+=xZ1k@Vb}|)61C1QYH*8=f6P1hE1}8N6kx>>Qpi!@Lntv56)+kUb~S` z2D+vApqlDelhl?L@PQqo4n_zXv8*yrfeSqK;TjP@}edcqSCEq3&H@gNG4{7}Aw>Hg7C<=^)36Z@}xQh#z4>93EsQC^xS%YVz4 zllzVH(+B6xiSGQfXG+ED=AWo~D|_Hd{wW@QV*yioxV`s!tjRZhwRxue&p$0WXJw&^ zk89`c^uaCVmu2Cf3Ng)L$Tk_7p>Trwm6ub@e-GmY(7jj!O)K)G4{N8>#>Jw2Hfzn= zg%#of?LK;T43@TF2Y+z!TZsCgfnrRfaC+4&I@xAwUGN@EUPtu5n~+ym@jlr>t32)1 z`}JZW8RVJmQl?vx!<0Mgg*Z~T;bts2H47&{|**YnWGfmqKzdLw>XrWKz^L_?&^p3C0EW zxEnXo2*|bT;(os3E;2MX|zJhDSjupNE)IkBFolHH3YnfmrtpL(?F+l|w+Oux? ze9`3yWMa&w!*Wj1Zop>WY3@4_P?A2Y4@T_q!~0u04=3VP(f10 zPBj%|q0{DK1CPOepQCW3igQxkeMOaKCJnizL^R4Nx^>y}`n60o7oic*nW)?ppgnw$ z3Lltj!v^WmGo%6%ixv{pPlPhbP$qutCIVO=O}FRMomPYE)D0biG7vSI>hth7EMIl@D%9Lka&S;#UC%TJn84d-KM6&_>;?~9LJB!fq)hP`{qsgx! zyRW!@^i}b3QVMDDXZ`8Hvbm)yxwv9cD=y!XH;-G^V!hK*#gWUn_oz8=3vu!XGKKD=O4u6TIbwn>w-h5cdb}5r>*rZ28ptKW5XP#D`px)v z2F0D9<&wc@;2;$_b}@WzqE^f*gg+g`%uU-Rsy!QZyNy!2R_xSE3}-JB$wUvE#iYCv zprv#K{E8T$=c!f9Rwntr9@?CXzFSH}QUPm!p)!7z{0gX&fqf|X041PtUB~D!Ld~Hm zBN9D+20z8j(fA4+i3yRKPwK%fMO9nHWWSnOjhfW9SIP9s8K~~OSGze~UZY0s!zs)9sSiNdKjuJyT(03X5 zkp&xK;6mzxCv*hW7Eyu@$ALrO0YAVwKt=pHRP=_BGaq7eOPYjB96@&6PP0qM5cd9?|k6;bHYZ6H?-7ZI)#6Y}W0$_1o`;oxj(cag=gD2^DxKZ&Y z{nogpHD17Mo{Spt2L;c!L7@UZM^S4@Q|v&PFdGKHu;BI?kHuNj=>!#X-CsFW&az-HM{W(POh-Wl+n(?E1%F z|LuwM-#u~ulO6q&|MGKjY$lh(Jmzw++K|J zDk(k>CBl$Ud}gQAvq<1C@g_Ih!R>BDxm@)ycxaqnMG^8wz%a&WpBVTLQVrCeH1peW zjiH5-!qU@Eif!XX1zwbfG@=OF<&59Bs7rdHLyLPU__n&xi(v$5<&LNSDt@Y@e#J_a zQMfiLY(hzZI2#M(QxUkL{JUnJk#c(aW;?vUSVDB+NMJ{;*;{9OyS)3N%;;YyHh9rMgPC{!?z3P^O^J8 zL_Q|ptEH8C77X>)qMtZM=Ld_H`Znm?SqPPRul{Kl`D)PiiWnZO z0;P}+C&To$C|1(g5&DZkL`O4@j3(LKomTG1U4^Ab0FZ5v!TF+7FEAXm?iI*;GHbm! z9We@)gPL&XLp(_Pbk<=IZAOiob^mrfKvb@lqK+{0-KYvUmNOoMZJ|bOQhjHC+7TONCJtFx=GVz$YUfLg*b-4=|%odMIMM znup^t-cM(3G=sm$1s&2T=kl3&qw1ZXon;eR+O{25HiI(nbrZ+vqAExz6Xw;T;sq@> zH0P9Jrpk&im*YT|BeIVkn0G6?QEk=p?zY2Ii$tShG$U9Rivs$@U_;ay`=GsMK8kh{ zB&ue?Y-l{5>??hU0Zl~L-0sGV(2IF{-LGO80HXjP`j?MlsFt&u64wl;psjplzI%c~ zr&BAM6ev&MZHF}r1OtrbU@7V7Q8xatyn>QOY&3%;+JI>UmC9vSh}GRlo&U<`rFo=_ zS>xT+{Po53YT4P1>VtZ5*i^78@TFTTz_HCOB{vOxK(454n1a=ZPV-+37#j6<-Md_HXDJU4irBEBF~j_@m{@Xi@6f$ zMp_aHe|b8-UiSeLuzF|`C{0T~7hPoaX5HJ3>(l`=K>>(#JlH~h(edUT@8!kxe9?G$ zHvRnO`t8jQ#&xmiTrRujmg>-zXY($j1M@#@Yb+3 zA}p|e)kSpa4osVMdazfDZ~CR(sB*Pvzt}Rqs2iNK4c^rxup7%o4;9}k{NxAvY5gh9 zNJoz`{B?KU^(M{SteHb97VZ3n#f1%PnOscH5rIMrF{^{Lv`SH430G0c`&JF#w|k7N zzBrxJGC%<&gvy*xn>=vZDpa-JTtdi4VHW9n-p+sdEdsBIFa`95+J)$>l^188cl?<* zY%#*W9+YW;VU^m7gYkrXB7k&p^wOa4u$v5lCgZ^aj9tHxm)CpQx!DX}T`Xz#I|+Oj z+gi*-0d|?#v6qW^SuGN*7t{V~luABXFQ({pa1V`!dNDv#&Zonh)uP{RB|@6FY?tE0 zTB>jM-I^u9hyXHTKmoY>T7>c!P58?*wGS^~G|?;~@Yx9Zmb&rqXkZWOC5!wJn))mb zkG0i08ugD0)>Vih&ntXPeR0G;eTUq1m0}zg@YG z@0n5{m>6dpzEKd6)lQyG@T>={fhDj|_+a8Ya%`saEp)<^96>xKh;g7q`^T(;~iNLSY3+ z4&5O#BO3Ft421L8vDhr4ix6T!QA!Lbg&=i3E2UaK4v|yf!1KQdOIwJmzl^Ay4)IqY z{-EhCdJ-@!NZ;H{txDF`@x^O}bhDI&Tme&uO|-WMA1)*U&0?yj)qI71y~v+x`AEO+ zYUUEVGj1$;C4_3$tFFgw9Y=7Ll97462*UQ_bbPt)tp*iT?iyS%(ZWM8GiVcSMzyyV zbyCu5wV+~t6ABB;#j!zhuM~~k8e10b6`!<$#`&m`I~mK{busJE0!U^)6-F`$gUYz+`qS+70{^X3w+pcDxWmIiN)#U&F;XbNC)yK+!il-1 z0MC2y7YHy+lA1)1pY!Tzrvj(Y;)!CC`YY7S5En=F-~*GChXsY{FOtB7L92S@-zu5Ws^nX`#-Kj2o(0*y&$TL2^u34}NJn-y!9tj;dKLSFdEFXnS;NHJ_l)*UJs<_5x znMf<@1Pj~H+EoSqZ~E&|^?cbu$bp4zF9FkplhQ=U0KAVcO$7Y;JS}oW2w}B4SG*tF;{9@e50Y~#f0!KVnbM3aqC>uLYh7NooK|B=CwfD98->K(U zRF%3RV@M$F1B#%)e<9Ai0!&C>W6pS5Jc#h`bHe@pV#8EOp_H!Wrl7XyBE$?6$?yc> zaN>h`bFKk(j`)_-Y5o3ee6te#-V7>`cPuYfvf{?kU_1)bkI+g97}cWR{o*V0Z0wMR zGHs>^aT=NN8w;pbT7eimL>`dsNf%(Brv9aLNUpBPzLvbmEv3~?83lprgd*Qx@*#k| zk@wf>D_V-d`>-6fT?FOA>;MvH^Un2p03Mikib{e}q5X6H3f#YrSvg;b`f(>54gD;t zGHdLH88@p97{STydhud%zbYMgk=7ri7l(5OWS6B0cm9 zQpI?PS~><$oxkP?L&7+rU@X0{~TVAj!)~sMbDTN+!<=3?Eibu1A zL86IA)g&$6Ey4Q4X%R9}GFz2{)@GDqrx{U?3;Mo69UuWzax<*-s#y#btxc0=;sNvs z<~hQ6j?i=g#)(a;JYgiH!v}H0H&%q95oo!GQz3KkrTH|>21Q7sUq(kvTeMpl!_WAP z{D;AzbLzXItepA(HUHEu?p)QKw;Sh&SMo#s{#bPG`={Q>Q6*m$S3Wp@d{X)STjvkT zmy-|9Z*QI7?wwy=DA?-9Yv+e6=lcuiGv!?Vpl{Eu+&e#imRst#k@=n`&fB^3(JxEq z+m-VzN6Nzaw9wH%`LuSv`%+dqe$R2~eC9~CH_rF|6}$hl|3iDow{z#y(tgElJLi`( z=Qn;emJ{mrNNFOzoyq<5dFp&ObH1ND-!GgW=gvRFAL|_x%2Bnzxv(EZ!6~y zzpSlnoIi%n?`7wgtn;Jm{OmfvyvCW9>vB4 zo@HW(g>)zxMwM$JI_l5hf-tV4As%M$bw$N^2q)ME28AE@0kFe7%Plpmq6luceMZEx zFRj5a0Y0K2u2wy`B1g*0-SDM3Rv@3SeH8R=T-%IlXVVrx=eJ-`sJ@o1t^1d&-rdRg z<>`cn$U9uiGOW;*JRjQ+CO{AFCJiJ_ktU7&vggg)Zb1`G`<0yBAB-}{7>w7#rsBO4 zJYT_viu=eiOq8w0oNk&LVszV7MuTee*xj@_>(w*SW7Gu&)L2LcQS=rnl>m7+3vu8P z))9qXbz@+-ZoSa0$;{Ns`R#U-NrZaU%yv|v%-h+v7q?(5=_T-MH6u>mVnnNG!JT-! z94=beE3y$$_N%@^Ph&LEs#lWFZdmVEv%;w<%`H^3PICrN(LFoL=}Al74g9eji!L9e2fO9CUQV4Tuu%M3@3I1 zO*L&5R$Wi2f4pQq3F_6{jv;Twu*k^;8n!jtelIj!g((4-K^Ud9))$N$?(M4k;cE8b zdj9Hk^y*}Y353{)Y_~kP5EjUHODX=}HE)!3AgvSz<8o2!ze-8O2I<-kD~q-~Q}hKw zTei1|N_1nJE>#c3O@n>NlbSAtF8dl#$0{rU7})5p9~ zZdM)2^-?L)&StIGXQRu7=#9~pcqJ3yExl55)+!*wH@nf*x^uf7-knS#Fi6ztw26{b z+LSH|Q|Z`zBZAXj2+FHW5?BAsH~T(NoZ4YEpWAVm}eX5Pv! zyT$Wq<96MpZWQE%uPfyQyFod03T;9U(v=i&5)UyztT4mfq<%K7?*^q+w=k)t&!=@g zq30o=^uA{+?=UVkV4^|>bPuP|+5?LkhLvmtiAEzfcE63ytAr z>B?Bu1rI2^qF&Szxo$;kB;iH=bYim@2NXh{{n-1HX=|l``2xZQF6?z3hhBJp(QGs zM&1Li05c$CpxaT?%O}GTfjUh!gQ3CwV3JUw zGnMy$D!k4=ssjGe%9oQ5=T%u>klHx@V z9q~wGDEt?LFlR+&S_I55dWtjwEi(j!l&mOt*;e+^@;;5XqXMR45XfT% zlE@Ku1o}FLSMw;?R3R1AA`kO0q6g@{2e*{gplNyl6R$~VttO7k%gk^tYvO#?a?#i? zw>^x}-KP6;*GHL;>RM$}&4rr9SS=qzJ;JWNOayh8i3PxW2LHrn)3IYW9m%I-g^a=t z&??yRSWuxWbZ#*n#&%Higr+d}DZX3E%f`J-R5+)QDCZ(5w{kA-FStWHAvWN&NfV8o z9o5pnt#&@F@PulnU(c2@nv<|(np%=i%gCdxu$rew7AhsT)YGr_%q?Z%etWLXfBS*S z*c4P&F%=G&A`Kr}{ENS&Mr=jtT+BtN_-JIqAcTUf+g<`lpcsXMX8rxh3yw&5!@~rK z@uH$F`*4J>hEDPj0Gp=YY)v;67&UST;k4r+@Z+ZDQ^BHGcI%5czzos{LquG4Ps3gI z6zi~^NXXCTt@WUMzR*++#1KkM@ACvcN(#J@$6nLvd2@}~LUnz}7X^zH$pK{Xj5OL8 zhm=l~^XLGHLhLJf1`Budp zw94ID0ageJ-Hv2KUu=5!Cxc-F89Cs+zJrzesC_I6)T5(BQ6qj0kDq^?2p?q<;Z!V? zu*Ekhe@Z4E?39%aO73zbDx|fgd`QZo`GAi8_agkI)G>g~JUa?IVgS;%nwe9Oj?wmV zrd>hjj-N;_pa4eMZcH>TnS_XBcVS9cQuK41YgZQWhA0=hK)S$ z^1&5M5Oj?N0j@JDm%Yk%+&tHEoc6VnT6E^^yg|q0w2_&$GW{|%Fb*6-o$|40b?_tz z?I!Z{KU#Q{A0hQGwtUZbOL4{V>~ z1^dPPH0c}QT^{PfScN&mkl`eLc4zD;-G*|ZiD@Z6c+6Nwm7Dum-)fqBe4ipZnr1>z zLG1+ebK!ZXFs`LX%FUeH^h;1;LCJOr{f>dRn5ifq;-(_SY@%97!CoraV8@G18fn@Z z$)40xtASoSYfI&qwqRLSO=;(SrnvPI^YJr?MC| z*VFE#tBgOfuSbW@$&n>B|C2*XJ}Jt9vyCfe>RaCr#qpKa*(q%5F?i}r{M7HjzxU>x z@{51|(aI<1ujaA(>$fU@aQx`}?)$B{ZpQ~7);s67nS4VpC(gT-^ZkjI3jTJc@~f5K zPwi;sw{z$BbLWqXKb1@8Zx_yA{lfXB9l7UJKm6mw`OQu!oKXI-pX+8$cFwO8=lwt- zRPW3W_4C|3P^*U`CzQFOeqEV2YN7JS(u(<~IQgp`fA{@UbLWqa^IOjOIq&@9I=|-3 zGevP9ol}&w^TV-o{rCJ+|FjM6DI8b0M^U2+rlspqd?+t$gS-!aD)P7+RHAS~zcVPV z*L|4V>9jRbW=Dzl77~Smm^V>9TP47gG3FfAaJ%WFi(l>(pm%>Ve0@6N3g=g={@reP zyH)%Yg#l&JcHQe$|7J6URhpMd4@BuOtiS}LdY0jNKJTD+#Ji+13m`Lp3>sW0fYmhP zmkf9*WikR%H(UiJ^-A(g!SfY1RfwX38Gz=Q(ntXqjm#j9Ky+hQR2fVy&W_zaSpqLfy+K)Laf|KzX>~ zMmwIIP~%1xO$CW<<@IUicca=0r>f?{{B_waE;_|oJHHv0{QxfTJ>b5O(t2U2FZM|g zKXJ@Y8pT8x+wUcT2w-AaU-_q$$rY0;A-I zqG0Lyx@IB9)8s)b#0QN$mQuu~SK=)ICNz9m8(b(5OjtoEN1;+RgdCOQXuDX$?V!Bvm$`DW=uBI#U_?1FYi4K`(2o+RCxc+&Y9{@Y>z@X{L848PTmEcre3t`^$%h1khK6biW zj|W{q9>5?QI|355HPNlaOwEE)LyBC51+V#h%%x2ii&;T~8Cl>Y*!ZYL|Hk9NeFX~H zoUQF2qWLp1DDxQ7k{oUJG6*cYTKDcxM6Wh= zQp&JGoIsx%EQLf}ivi`663w&OYyk|j4t&T1InknwJ-(Ftc|N3_=K!N4N6!NXPdUNR zxXDm9dNj!VyOrgZ^7BUdewLe|^Xm_CLiwJl-+yxc@SRhCF2DS}{PF9*{x3iO>67!_ zTe+w{gBX6+#n1P07`?>UzjA(f>-_l6`SFeO`GxZ>JaP7Rml4I-b zxyqX}=dBh0xCuQaRS_}6+Zsn8uwAGbYV_V!uTUmVBGB3AO(K1PkzKX`k zA(f44qJ>e9O$RyCBNPM@g{eidJ!N?5*K$BU#W>j77I2-omSvMXUsy3+Q z0Ck0Q6b?UEqBOUvr9eu`X3l+A(?aH!((qAwa&O#(w-D>WFc{uu9qb0C*h)o_pje76el6 zLN9rwc@zb%%B4cPwF>b{R?eEC@gKE`Et}xOOSu>-C~F=BLrwdZc1N$%xHx>mc;|#y z$bYSLFyfGC3~Rj{zm+FZj%j7^b+TvW7frc69H&ZEC6ZOynb-+FEA;_qrCH(sF#Zu zG61ItjTQ~=!#L84H1YG=h?(uzRAFF)roj!j>*u0 z^iM`vAkoA0rhEz(_9BmiVieSOa^x9U1+MT4n-as&$56l1UcFw*Rr0A?K{*6EaARey z%5j3S0>v2z7U2>i3dt=+cR&)kPSbVDY4jvtq##ywW=lE~6^D`pb9T!~;F%Hl!l0Jn zIyQaQE+WI4GaJkK2y8~38ja`Y`FYoaErJlZXECUcdiD9JT`r_)-dz0H{0Qclc+4=R zME>@rwsPosB1E(7)0-TVVXd-^9PfpXp8Lx)X}aV6Cx_3!Io6741^Cc?xj48n2xOY~ z>yutp{^C}7(5iOoo<)!)0kMo|+WG!$`f@kC+w@-T`tL6$ug}KV7n=QnBiI5=YK72p z1=~mUXnYfLTa|hAEENl7Q?X<;0LP4l4ik}M3MUVpWsV+>{L1+0G1U{fPz?AHXss@w zsG(iUg)BBu(dY{M1sPV{Zlg5lRN5HpR;knQ+OrFNO;WiCD$-b zr*fpXGX}NX{uu(Mg`d(4iY5~gc2nW3GN###$L}tuFSh-gRrg|ApSN;=iZReJ7k167u0bl! zPE%N_DT|xqT{Lwp@Qk5q<9AQOZ((2NO#d3g8bQ6AcT&SScI?YA`rmg;AwtOWpUNJB z&5OKLh;h*>CZ*zRdzn!^1JF|FnU;&C1~pA_QATxl(iF^I50y~$Qces_uR_G+GwFF} zlltYNwdfX6Q)nlYGr)M+b}tw0b*})nJe$_9S0aqVdQNU2H#V&07(vL@(A-j35Y1KC zek_b8xFo6r+{M^bpl-|S1A8jjdNBnMY8HXe9@S$=LL^^ZOiyPm9>OTYf`FpWXPujM z|Ne9gh`OA&`bbVWF{!5(?d-In{0w|70NW4y8fa2EaT9*>#VzG8-}@KyPf`A-pyLE> znYZtmLU3&rrS=+N>@o1fsKS7toxN#J_2Hf0PhrJR9p3{ z%RyBZbl!$kEPADjMR!!oLK`3_C>k0?fh6*dcXne)wQTL_qzM`r)zZsO(Ry8(x9C6g z)V!Hp_lk7t-KO*EWO%vij+=R88VmtSR{aa9MmgVUw|d>KmyHAT;UV%#)l&e?VFjd~ zp0~4;MtWcwZ~^^j7U&{Mwyy0SqR?rrkF_W>-!zJEM+0b$c=$*skt382!ip#}%oquh zX_aFv0U**3gXOcoyaq_R`DaG(eBKMJPv)6q#k1DrKY49zW1&(bXg> zBZ70S9-3+K4m=#J32DDxD~;66cKG6C^m5l%5X8I%W`fuQE72D>8;um8=iM5%Kji!x zTE5T{CoPQK4jDLT!+uo@5YT|qjNQ`tynDXrq9W08j464L>uET@B8f(=<)k+mH2du; zHaHtQWE5!an5AP-^d?BI93NGazJCgX2lRxZ^O?1Lyr)>F{AAGHEXMVci-E@mplT3x zKHQU^OEFUl{06~fLrph2Y~-7TIKLY88r^!n=4FSS+PGVz8n5nO%!aMyxU(F0XM^^1 z(3RMd6?5hkxzt}7$_&^Lf zI7IQ`E3*iOiRmkwe+5f$(RAH_)~ zb|^=Z1*T!1j=X0ayxi^I(lslcFFsut3q5CxIBaZd?x1QaTn04Rt0+x#01azx``2>XC( z>B(5%mhWk`QL8lSRFzfgAvnK;={=t{m)*k2sB*jM-EI4n`;+16xVq>RFIU59BeQ5} z`5Rq;j3G_YWLn&;B zHCMEx9QHYdzI#akI?cr>7IBh`c|R3;=1=QAOqb>4fvV;JD?BY`IdrwOO(A}XLnMJB zg&-2Bb*8Qs!0yq`@IYfMir9B!M_>-d2v?8_#HNzf^XWw1#Sa^W7<3NYiRfZ9<##K_ zC1%!5exd7;J*3FDVtfu}h#qejqYU<03j-R5H~Ij;X8)8ufphS2E)gi_6UclGAt@x% zi4bBTTPC-ZC2p{l5g0f`6k0eipA_Uu5#W`qzMa<4Jg13GDPILY&@u{A(`+^f5<-X+ zX_Q(12vj8xhb^EhG)HZj2jrPLdfKbIH`~!})&Y|Q_5~%uHb7zNTfurQ{6R`7h_Rt? zZIbZzYVq;}85q9U4z|M@wQ7|V$0ug4$-^wTMe!P~0*Yc#Ne!zS_^_aU1x=`sZ8`my zUCk(#;y{{Jw>YUK=dJ9#nK_+khODnBPG}MUri_B^cnR}Qd5vNU=s#){TBR&tj?vMr zxou@-PSYCHP;**Z1Z~s8<`JOsbOA-AC32LBYr;8p{Jc|2d*JBj-yA|9pF#GxaBj)I$`N1ycFNcS|X*%G^>90akYXufM5q zLizMUaZfLo0vW%4D=!k|*Uu{QDE(mn{m%L2^Z(z%U;R5(%n9|I{Yn=fpP*=|x$|n} ze0$}5f9?EmtMdJg%Aeg*-};^@b51>6xq5I;$u0HhlX@uTnfkO9zAs78E%(+x z72^9C0&~Hm1{J2N0dC$6#sbYxoBK2dM9m528~wl$8WyrOl|H49J+4HfSfEe{(}pQQ z=M1X00oI_?)NXO&30<4(9(T$LhH8jl59%(1nu`{wKsA55+YR4dPC*eU+v{cfZb2q%^M#sr|&PPG}`^i;KhcqU&2sgkJ=vkljj`rSflGAP@MY? zf_OlYbRLGojhEa6rI3wh65(Vl2sjj<7n7G}quuxx)TSlG$$@zQA&r7EQTA(+2eebO zlpXimw8?Td+OFoO+vR#WnU4pn`DnA8te4Z-WKhaRG^u9(cjPv0X|s5~uO5BP>8nuQ z8&CkId}ow{r`qk5Klz;eSUJx9+q7s#a%&c!;;*YhR9cF>NI_z$^JcYJE@s_k6+VTy zLTFVi+P&qaKzCRfACLJ^hXTEC6q4D9(v@%#z&5rG$dKXHKui!;IO}+wlCnf0^XOza z;HZ%WA)jcs4Fv|CPMf284(y61=L*B&V%dd1ZjDZE2IUI~{I~;Gy1lvHZZ?%dCZ*k4 zz zSkFeYQFGKPLNFU%#>-l=t*kPHg1gSA%{S*0sOZaW?|$2Vb2hp^8C@?si~@!dO^uXd zx%>@4si*HjqZ2J`%{Or0L<4)NSTK`}Xm#Q7^Mvd|C=(C+&K<;$(Ls?dh#t9G1S**4 zS-Jp>3w991g7wG1Ve}Q@*ei`&C5&LZR_b;;aQSk%#BtE?wOUR7;bOnvtCx!a02+{1 zqPFHGP~2kNg1KNiCTX^|(G0QbBRBD3EO?Nz#8T;4ppXtTC=fYr<_7ZsiU?4|lFV_B z;X}rNLkxMUjj)w9U3cv2Pheml>uPsY%rvcczwO;^x;Lxt-KPIy+drGsdZom6T%X$Z zwLDGaLQSg0$S8156d>~8n)GM>_JCLzSy()uAkU*Fz`o)f^@Z6@gbrPhb1udpH8n0| zXzEC^crmH@ydI;tlwypmhYe-i8&p>P5|9k&2vYzXpv?UoEI`>|EqgX^ zpC~bwVg)z{s}E}FQ7t*CXQqwZwCN7Y$<3g0z3N`hnt%-y_~pEDHETfn-kgo$gP`Az z@*^eslEkR;^kZ!0I?v8eiby1SW-#A4@wwJ+bt=u5gejn zr9^>>C|dL?%R%jI)-YBG;f;gf{86E~YwL3|@s3{S~u>6Q&d6&IZ2n5zH#%;+@MRa%3g9dzjdGX?O zdcEnN&0Ev9CX{YA{kNAh*a*Omfw8k(zo(PNtm%UG_@OOQE1u8kq`GpvmlGI_Nh5c) z>RzvV*Bfa0;9}mzSAq=waOjccRin=w${8Pw-u>2sgYM`j?6Y&{cE|<2j#+ zd2TYFj$lpEGQ~_pj_^3-;VAf3_0K-3e{@T2o6hSO4~{3_EhUGPU%p(q*SYVCQsmUz zf9;ccIQP9*c7u*qbkScS_~ptg=Z}JOd*p17on6Q|OFOUH&JRFhE58j@ei_>NR8dra zSdf$-6(yI``J-FvOSIG%x0LU^20)0 zs~6{OchM^@6opzC)zUL1IH*p$TWwaD z9#qnpVTAVeQ+ETj&ly|enpqgyt zf(_^gmZh5PS7cvo1#6{WQCtl5=QHU$NmTTZ?f^d}uny2CUa>8FeX(Cb0DSk~I z5s?K!B+QTFCk=d-vY32-7Sw0}j{>M2iM%0!(S4+mQcNh0fWmueI)#Ww4l%N|d^{UF z^6d*$N0}D{*8*~KSw1OQ6D<+7rF`0UK>ecNDGOnvCg>vgTjb~)7_tzgKhLBP`iJ;= z3ZF@9EQj?;%WV{*_Tdl7TmSd*d}t0v`C@R_302) z3Yf0>b0rH8#$apEFq>1gn18ASm$T@7TMQMUN`YsHO|SeA$i^pFgD5uy5BFPu`?0Y4 z`SEjJ)GS0$vp(s97AjQASO>a=0Z1#Ex{%L~mcj0CluW0NsB8vR;0o5CGF9+Vc~Hv@ z>$!Qa0uSU)#sW}br^zs_o(3z6P1#%^Uf;}5oPX^wbQ<#QA6yZXM->l`H zD#J87wzwITUhI^yzF*UlLq7r(yrHxSR^S!1w%ncOAg1s9T>?>SAOU|6p$%dIE!M~- zl*T?4J`5Z@J$~+^=f4==Rv=X_CiXta{x|+kd|U4^TFP^7Fu*@P_@2Iaqg4L%-v`f> zIj7{kdURm@YWMur{;T_cdT?)1-km#Vb?3b4Ty>pyTjxj6z-N_TKRZ8vQd%gvsJ?T4 zG0)V`ly9xr30Hilm0y0NaK%5d^It!y{PNLxF>%gn&RNyDY{;XeKqtR!JE%j#lkPO~Wg>H-Z{;NdbDfS4x$M`}l&4WzyDtOA6 zn9?L8hnncM2$WRhklsl}128dUl0QjYEz-n>l6HY)Xw%V9_j$K6ZFv|whNmAp0ENrO z0;6UgT)MEdxUdLpG#D6SfGQg`3(8ZgMIW{82&&USAYY!2{V=`FsD1@uxLCh9Ti)&_ zS1as(OUwCJB5b#-&WlawV%7iyKrP;$fhb1rFDLxzbW&d-%;gjVWYj7wl`o>a?xO=! z=o9q3DV8uWwd!hlffncHqUbK8@oEH)$RQSuaT-+Ap7#7wOhNpCTJwz@g@1gDuaL1o zuaX&Si&d!_vD5J3V;a`uSlBW&h4(c&!q8edmCV<#HbiHlS5XKMZxkBs9I=&FG+;=3 zW<8~Dnb;AEA^}SA=Lod~evd}BDGTN>|JX6abysvQSDCENT-&Pu)OJ?easGu2^V49^!bwF&^5B!O`ISp`%W_ zF`JG#j|P-PMIg=Qx-u5uWd1nO6BK6X;HfR+IPhzD@KjM{zX+!BRHERX< zq4&80PliuT+ofSG2X(*NjM1*IE>>6T!4lHmE}YFo(Ur>Z9C_{zD=F>FJ8G=@l}Xc8 zyjU~08`ofqDC9vU1*m|WQ-pHo?d_nn=@#JUC|gD)f~1v_VL42FslZxsM5qu>PJn`m z;JzP6mW>D9WZ26nn9E#sayU{rKk!|92Tz1xO&eq*hoy|7R0cKoY&{$I%6@(rtmL3s zD(7N68A+hz69I&Q|5D)HjFG&oTfkzPl>Lfl(%Pz$6{HkVH`mWoe|_AMGVpv8KHkeD zLVmh8HvxZ_-y~v*nGh#F#|*JecpD1En%Hd6gIfyVhj|6i_N!^J;FbsO<$IA&iD>LN zMvGCU*ikZqd17EPDgy`};}iyp_5+zvs4#D&h6q0bhLMWGf6W$4y!XF8eEye1^KS}o zV8M^~_)_#FclyFF?e}Q1Ir8lcB}A9O#Zaa43JF(o1CeF_Ll8xQ(y--Fj|Wgk#>A~X z(_!Vrw8?($z?NjV$<8ve?1vWe8JAV1Wf*Zhgyuq%=%{>NQW1;@WZ>}GSBFo(qUH!p zE)}h~a=$|SdAnNGCMu{Q6|NN$$N-IiUZV0w2ed<)X1GgA=CJHl6fWb%`;~M(54npE z>v=FR8eVJsZJo-jRX|+R+A^Zka=bh+r>ZihG9p|T#e zD=1-emMJo~S5CoGM)e#{ zX!9YNp>(F(uVrg)blh-1M85gkvw!kKrTm3^{vLe)!*l2VR(AfEvEzUOeN!4b@I6ys zq06#~2r`W__4go0N`SDK7KGb|>meQQW#hR-02C<4iezGsQD@^Vz;(tOCzxBCp^Z~} z6vx@Dg$aClGWq_^)$0p6pe*!%s>{ALBmZoavgQ0_LJt3`u8fB=gU zLpi3+t7Z3OtiHiujA-R?9V2=%Z{KYCK)t)|U_H?C3N(>=aaf_lK#Fu8^oF-@<(6u` zznsGAL5)zLWhXzXXF#Pq1QN2HG`8bL)s3UR^)2>w09h9;$=(W{+N;MBh0=Rcd zik1RgHoa7JWu@FdLW48d{0TIM9A*RJf$~Doky<1b=1CKwlsPhTP*12WU%n~G zG{ces1G}y&BRkMPS#dFYDT=_oZ40dst$dsc+myS`Q+o~DfX`pM_oY0zr8>@=FRS*p z&i5VXt>@h3otuJlU2<-l&YPk0Y3_V~Wu7VD-{gl!nIFn`RO!SVSPz88- zF9qlBi;pa#w|qBrejPZ!^qpS@&Tka+D9J7L=#x_UlQ-&bSI*zA?dV5KeYwKPO5UPB z2Fk52pVa8#oRhyMo%_Rw>{>d;o%fcc+%G?J-c)w;-yh?leqTGkZ_F*VHgD9{`I}$X z&cCemqQ4ED-z}?@pHJ$?l=EHE`Ig7VoOhI{^ETqV4mdZ*&b2M&<9K=e-;4uKBk12q z;2?Y;4=9^biCLO-kwi@m|TBzI(m0Deycl2(4?DH=X_e*4aRhjTce~Mx)7jhW&AaRM^|HI@6j7190@HprZET0->s9+|*;#ay69=NJ zO#l=u6B^dCzAvL&g4-+80cuf0wPrhpDn38oE@@__rcHCxg>*C?351UKLq}QwkM-sA zVT_s^v9NPAK0`o`4_ns9C>Yq@ZNQ*LPC22QZrJxwG~JMV78QjraRnYIq*BkCI?iC} z`8h;_ANuyV;rgrjl<1l(+L7A6LU=0~EM(%jRLo6N$&7OASR(MY7n=%+re|#c5E?&W zKa@wQ43;g#CYAv~-k+wjZ;l$=mY=j9i(pe;Ga+@CaSBQ5%G$7)aD#z$kYWl)jKG zyYZ5;kS5CcM9Gcw-*PTm%7V9~u`!=jK1aEP6mHWgr-qGu%S&h$w5&8zT%=-{9PGE5 z?L9Xc;$3pexN1Pfy4JJ{c(;N9e%L>oUwO7XtzSv;MXHP&wcw!idQiJq_P2_Pt-L&6 zAiCF!Hd1=OLxxB1FUB@`DDi%==`Gv2O|Q7_d8=LtAw;Ms6Rnr@u+W1_lK*1DU!5-y z>^B!wu10BZRhrSmAp0Cw$?QoYo*U9p0dkYql;;YQkClI!$~IT{pQ z3$uli`Kn%GnWYz^buY^iz$6f6yKDP#l*pvWl2IMBhX|ETSBPB%_QLYxJVg=^QTa^@ z+PaQ*R#oL*l(g3^joL$$mK(0-6{E*kL&+Ek3?T4&ujP=+Dz_+n(w5NXBI8b3Q+$;S z@&o<`Edb4{ZbE`&Gckxz!%LOjL^QY$3D@k1V#H*>G7*_DxG2)zujksf@B|Z9Oo#b- zAsIpfy<7}9fgo`NH3B8IDAx?m-fOH0Tq6vXV(*Pah^-wHG0cgE~c@@Zq3XHx9TvZ?9E#Rz=_r{_DffbmZ<)AKtX6fTxlHvC)**=#Rc;L zY=q%1rr+Lg-d-(VUu{;yhCi};)vUh_3ef8e&xJdsJxkK!<4(8bJKBdyEAH6M0-8 zN4r6T{b~M=t)qecHcJSGGSCeG56uF|AN8ov0WB8893S~@4#h|)nev+;+U<=cxX)K4o)$oThvPGN)oj!C+xb<&q28t)B1}|m)9Xzg>=N<^Nzu&Im@JiwhWLT zsd2*EMkW(GwveUgu>evR%_k$dWHc26t}03wF;kIqil+Mp(}T40Lq-A5fys;2cgnMV z)7I;yTSnaK#WVvv!z*mA5fkS7dgu$zCE-C$$@o_gQPV1N^w9DMc{aMwfBl&xxqg%; zOp-%i=gfj2X-P`>C~~AsGN1*k5}aMRt^n1@0DXr+0T}pZ1>g#1L*@sDcC>7$l&A*(S?TgS^F$8GX4#2=rbpKt)rMB@05NhEy*b(UG@n)u;Iu{I=4RiDj4y zB3D?b(4mqnD_@PDE%6%!EN*5Ca7%X>gwP2(M=;4|WZRy0R0E6wclj1xs<+#u_(Mx- zlpQNFhIW%Wl8VqdxA6&yApMRC@|m@uK1@8L_;=2c1iFvo1JJU9KKHc>^{2JzAch|3 z1t3Q;C8ngGRI-3(08^pc-2~@8KBu*%UVwu6*sz}05U6F)pN)JJWQ7&ryGBg`3HZXS z>x~*Y3optpJ07I$LTmRbTEsVNDgIzkIi1u18yB-C|J8aI?1H5SeRnawS~Ra0EvVnC z)A73RjRj&AQHVAJrED#8#r@gzW;5V*Z!RX^-*0|=bMoE&c4?{8K`GbU@oJ<*nMlIi z@^vh^axt!b^}jFmo-)$m*392kUe+V^G>yO zQEk!A^}Xnz6kW9QyJ3mvTrFFcgSI`YicX-9lw_puQMUck$+&78XEZhg%{5)fzbFg6 zY`ddsg3jBGt8jJtem$(LhLuJ!S+IBw2E&82nFm2MLzFx2?-vVo=~ogkTlhdT9~B!c zs!c%Qo`o;PgG$|x>PN+Em3tUl^%OEwP<*~ZBrq5vX>PP?$t*PC9M^0-$`L-vC`FsV z7L6;let+rw zx^%uTJ1=9-`H{J+D96r8L?J~tIp;;qdDU^=_MCSE=lxu%A^iBM-|wB@uC)s9rxWL= zbLSV3?XC0cOL?Pw50t!De-5YOA}2-Xges&Fq#k@yl!-iLih(kp zlmer!oPW7`^gvxZ|3dkbmx}*BxTS{Xkh1dEk>w_zIDe&Nop(XGhtB;3L=6s$+*rSLc1-y#c3l8 zEnjQjsEQwuiI!RRZ8I0k(Yxqrzw`B|dA8`CExNp=UrElp#r3FesZtB$MsCqlayR*y z9@f_=mr$n|qXL)>5cZ_)jayzTAMTZte#GLc>#cj95~a)cpYK<-cHPUyBf-O?{ioVN zIe-ze{Znmbk1@i~)93@y%BF^e&pb=1;3XSM83^AF@`{0y;AGJW>t2x;Y15o)>TDv1 zwe3>TqM&4X0>imzOWQor_+w>0GQT$1dxWLeP4ruViZ`BMOVlz1-`GkN(scV?nawl zl6LFT=2b0K);y1Pj#C!Ze%)=?^38Hq48$_KV=4J$q^@7hc1kI%Y1>OS3vu2>!I~nd zAQgZtW&)tlucW#qt!)HTA^=0%4QH$k6XP@v^-r73kDG;lC8Hpr6jeY5e9Wv`5F;FWk6FZ z3T31o)p!d}8#P@<6JNwn%r~TY6q==!i9$7Nw)&u+kN8?$@qL;O`F4NGd0Vx zl??5}9Dtz!$7Ue{p0h7XV|SsK)og^JZBt})khX>HmL;(WJfDnV=D&3}_9b+V)~*@3 ztrn6N-Y*B4QjFP#j3@{Bm~2K`1j%xK8|4#20KZ~Zz)UnUV^FbCxeyAZEZix1kWb20 z4K?R)%%rAP%GKN$Z>;5k4hq<5m9(1-pc(VguDGpo4)FjjspR5_kan>tr+FhB8&rqI zY1pI)GR!@g`$8s$egn#5zr^}%zis7K2=8Inkg-v-*eLS+EO@t+)xN@vEDB#O#+6TS zod?n*K7OEp;Qi-o-bFLI+RT`5spTTHGot`Q3E_+ev__tG2pl{K96k>R4pAl`UGQbr zmihPun5JelG0e@sBTqNXKOGA~$%NyrKzC8I<5qFrt1M8bZA$`B_BTt8+Yr!(1_;u) zl^?eXwM?*Mt90poWiaWLrX4L;L1Jg^0zzv)PqxdcS+6{(XJM6#VQo8WO}pj!pwX$i zG!6nl%QG1L4cCgP2&A+iCK=(qkeNz4hIdiJt#<4C{+(P%UmQ~Zs=Ph12qP=+Po1CM{eweFP9=^O4E1-P)MLODSNuOc zlrL_nKb2oT$lr9`k+)%MHlt-gXPeYp7hg1-0XN_@^Y z-gH#1+s;+fxu`p56=zp^aH#2|B%hRDW`%!Wl%G_?fnqrA$di*oHidI!$(W2E1-S+zu4D&~=nV?oE%Ryx`QaV=z)rSYz zbaW=9h*2hO=_Qaue~TWDq8!vep&fx*#c0XanZoX%b3T3L134y?%SogZ0}(!Yh8&{* z<J*cK8O=XV)!2)*+DG_Y#+G%>g=D&Hh+y{Va>4dDdU!W8c z0SG602~n4cRK%9DXB;an$yZu*^ZYL%NbfOvaxZD?Yhb+oyssZZVqi>A9BnBiU|X^R zcra>}oYDnCe9-gy{Dih1gZ{v5Ek!I8R~faEinTdR8yRbsQmt~jnvc4PW3+TktM-Cu z6@JcN)tDmoK}5)JF-R5zHn{(_pCVe3N~Ye?1Gec^9t~;xfnqq6>~hlaD!HidilQmp zgi?lct|e4TBORax6q@R$y+Tf&vP?9e3fpQ7VJeDGgE91|L~)a&XR+V`pF^=#X-^e& zx%bV%(|=aLsa9S2DX6s~$=n1sV`|x^4fRQ#R&!A=MNPu=2>n&c#=UF|XoofNC*(H6 zGLnY8O|Ukr1yYjF|#Yr~Kc_6pu`l>0T?VZa2BA)m4>&S`m&hK6T6KsQlrc1NRC9za`Qn2u@`%O|BykNU|m zsQCjO)0IHZLf9xNiwE}$zvXlI7R+nph~7CuBcb;Y`&uqa4bf@*kcKiNt{s6Jr3@n% zeO}AUgXVj00jr=O-vihx#2boViAaB@LLft=R5926(inn<47c;pB?Vtko3mD4ekD0H zO5CP(aD5MUvl~@+!|HZW=7gbfwP>$;a>#D`rETBqm*bOq8cwwA|v4(83mUF`YKd;j*! z+C6{y9_4>La{ezR=YN?x|M#Zj*xZhsuO=Mwmmlvxi3AS(e$@m;7+r6i**uGM7(Fee zlMc6ln8lRVspcZ6dqYvFh5~sK!nOG%&>u(#dP84Kd(~mf>(|^_uR7{f`0uP=opwvp zW?sI)zW&Q`-mlI3bxyRHu2~o>-CcgzEDoApzftVf-Lcl5ln1peJfz`9dX_U4E-jip ztZ^dWP(IFe-V2==DAS%hZ02V@twx>?YU5tDr@eL4n7~F++YJEqz>AP%I77dY?>0oz zq@HYIfiLB|3{PlDDkB*Z3w0USQ-f*}8>St;3ejdk8CbX(U`-1E>**o%3)+gdl@>eP z3k8&7KnssSqQ!XAQ{aPz@mv1COc*pz3(K*c3ILa#`(G6yb3s{`*zW8eh8}iad zbCBP5ou3EJuN-U6=bH1W=6qXszU72tQ~T@vxO0BqIzMfdAN|)e3!(CzQ&-NvoGF3S zucz8;?^jMvoL{ESPi^PNw)0cV`H|AJ(s6$7Diis;pmU=fPtIk?xl1{pa?X!g=lg{7 zG3LApJ1=t1eaCq_a^4M{_Z-L0`-$^$>U^4Nv%jB~%8dT|T5hRd=c?GJne(abybHHtaWr+f!dvq3MloK=2KA6aqKYyt#<&7>=1-vN zk$eh?mhvcvH3_B&ZLLRG4x5v%7R5{&d3k&LWksy4x|WVwd!Wub<*Bx6PRBxrhn6!k z9X=@7S`~B8N$*S7D^!Hxz%Y#T>P3ca+fy!T$X>53?AY~`nslk%xT}j!VQ%S!M)mB) zymLBfUM#db+sy{O*`0LCSX0Ozp+LC8V z-Ycb+H_w!X%osqIn*HLI(oBn-Xo{)y6V2qJ?Pjf2Er8>-@JBhMz!qVD?uc{l#LiLB zUFe5)Dc!APMh)0Y4s!^-S!yTyx;Be#7J87PauyN}KbiLGlWwh3&7->{LTN=y(K3jN zG>lT2`mYdnZx&+Z3><7fpuo>P^cbYVFMP5#{-|jyC|bK!N~4X7w%!nvk3Qd^qPqpU zX`v0vY*!Ag84Q+EMwslXCpI7V`GC8;AS z+WPl-GE9*!<*!&SAf}9^QGE(c$9JLsd-cM!SL4_!WjeKdw_d0#>0=JEC%|p0o^ysC zSeC~0fgNB76c`VK(n26C2Yb3D6w}r-6|%;46X5LB8-k4h_-T5 z&1>5d@oEeWV~}=0E%0+>!1u|PEqDq^!zcjSKwyfN*P>2E0fhFyMm#LxOGpA~F+rSz zI{|R?9V4Yx)M7CPzKkOkC?r6ioeF|c;Cz6PG>h=$e!XzA94|(#L95iMy66_zcum>0 zu#$9ik_LzT(3mwefXk!g%>)nRGqFfeaZ=RKqPi5rMLjuhddX3{B#KqgPWBYuJ8TqT zSqx{t@F=8F`BRE1&9dk`hb{91ti~t`?N%9WF;2Z$O&R^Q%9Vj5G7uK6qDR8V@=3*G z5e%+RRv)HYl{-eQM{Cn8{z%cv_cWXhWPI$ivUDt%Pbr4WVpS||OL7I-2F@OfLL}jG z`+3xL3b732Q^)D>^DL@6!G|Aclg$JmSd-o`)f7S)#MbZWil{8a9?*QmxxZRd)7siO zUcCvEq+uIghOZVYfI{T7R~OwOo{)doc4}r@ShmYz5z16jOarnL;Xo`JJ=#~in9VOj zBOkI#LE39s1(!|p|Lwybe3n>>lUEz($4}1N3;ACZLS<1@zAx!to!m{8di=XL@*iCf zoZGSXzvIfM7q&OwOXu@T9lw+pGyUqMJ3pCc>c{uC{oiBx{6atcd$H)JkC)ENv2$M2TdtaNNPXHmZ)Xa3y6I?H z-_6*$nf*h#oooBQcV}`)Q605%mHn}NM=qLENC7EXk;N*Z}UK?y}$fML6w)@pQ3 zG^RS`GT4 zO)6q1Q8kWk2tb$UsfL#X9bvVBOblxIvtlw;+~BV!F<(OfN}q};MGCNQcso z2nnCb5$b`7mn4Mucxgnrex!@&zVMNpcah*>`1k88v8{r=2TWkXywHseLf_=_hj+^M8n*weDIzjx%V%eE{0T&w0Qd43pgl#=|ZRZ3Pf z0W9*Mmf>AkC9GJhl%O(Hqlu<1WkG|CuVyKOm{s!1?##dh0Aqrw3CNjOD=04mNKPgr z^32jW`_G^3Kl$om;hr@S#b5A6#~FkRVqr1#({63tsSTQCW#Q0_i-wY$ij?vh`3+q@ zO~uP5usc{HjtEsUq|t=Ta7AvWuok#Q4!?;9o?^%lZ~8*O7Y#MqiCokpN0ggGIAy;PrOw?6C`RMOG(C8Xf>Rc@;$+1=TgyZDux}z zU~!K>p~9zWGRelW+&#vI&<_@f7sd{*N42&#c?^KwU2HDuS3CNJQc*?HFxDjPii1;o z7BewU_%E%h+v4(A>3UimhbIe0#zET0MeVb!b$qBzVMz0HnNP~}xn-KC{;|Mwa6*Az zbIj8{< zck}LQ)L0GcyJ`D!Jv>`<*W>1>DbLA*8+yw9G;CnN_X5HOlIPKSG{RSkW>>@UDYoccum9sX$ z7>*X}f*xy`Wi|bu_Wq3@C*}L3e7Ds9`oQ_$=bZod#Q85x=YNh`v=l8KMPf`cD4O4h z9J{$R{bz1Mi8X@4ki!Ne2gsi^V?@l24yMjdHo$PgRRN_h@?^dgoZl^OE4Tr-4f8k=u^SHZODOW0GuUK$%*<3cmN#4zJz`$ zY7RSOK3ByvYeUw9XNUVwG1XY^ayB+>c}Nxb5_v79!Mg(VwX6dFD42Y|wUs2bk{LJL zRZrU$0ZiA5k!kKGEo66Vnfx^Og+Pz%t6^=eO>k>%w{1?SFF{g%SyS51>sQWiSI$pi z=ghxu?kB%|xs$@r<*|A!yCY}UbY9;$zuY*#mYsKD=kn2$^{=-4)0HFV*;=) zIG;w&`?2%E%KMh{#&zza&Rxv8r9^eSOF6Hz&ijaSckEmoDkAJM=DbcjpL5O+N$35M zuACn`S7GPYbzY8~w-Y&}KFpktl!^0^=i4jZ&*WcI67+?ls6Nk~Z%59@uvX{E@f39K z0(u4iz490CJ)X!L^;m9_MWnPvf3*KJe7rAHkqT-~Lxk$6l#vr$ z7z=b2m*qg^!SI*8l4WU;XXkw0*&_cuU;9{9878weXtn9cnAj+wJIjJ-FG7 zzJGtWnfCZP$UIiIqBsSMYEB-v3$cD#^K~6B0Ya^$k8`luL^zj9WFm*{qGnLr3~eRM z(uys{IBZ|*(JT+tdQg6KI{JLO`h2&#Kb^cfo7`-)dE%Rk*}JRd>+|XT+2n4gRXi`Y zgOf=^%a%_kFLtBXXA|%WDgum%b)-E_lRSjR&7v*PNAZk00c$&g@>`qdnG*LTf#t1fr;>Lno5s9i>- z7cCowxxJJPomb0wlv7%C8i!AY*waU$LoJSIx{)C~xsvQzrf_*ML7X1&5xkh44_cr- z1gV$~O|)9Rd1pICYQ|MQi3*+1T@BnylsUwMdAF@eq+!q zo~$MqR7LLO6XQ;m(kLd%87=ChJDS{C%hBMNIbl1^J%m7(l~R$PoGtq&Q$;oN?Q#H> z5FAdu) zDr*=Fs#ZvOxnwdH1!JK%GPVL8l~PI{Q*$6bKnGyZttdE-fxqlkXirQSx&n=XerOhA zvu??1SW-4k`A^X#b((8C?Qo=e2%$Agv{?ic2KnTI1zcccZ9ZAj7!3!Ki8x$~|0Zm! zN^U^SQVp8L9H4MxSh^M<_$v`&3TDx20%f#KhNWPmM@d^A2wTfa*J+(aCJ}&^@Zp?m zuMRaFityMoe=1s+^TsB7xnskqaw zh9@$E2>=3WsMcIs52+Y7^0p$TBrq_pLCNIB$S1J{2YY*ggXhs>u-sngP&qqLabRnd zXCbN7A+y52*B*T4ZSjw_@M%`a0j2aVl-GnO0cylGyW$D27S zBe?hQlaun_y*XzU=fjCs@cr;c`{i+kn>q5=vxf6x<=ie*?iSAdR?7x|c(3PwxX~_t z{FUpRTy`IxPvNB;Pb-?&qWEvQZp$b2aV`H8b)fL4n~D5Tl$)7zJ=O7Qs&YNk8$Vr{ zTWTq{6c6DmDDv4^K6t-DzPwa#G`G~!`>Iz%T{K6nO21KT6w}yEOu6r8fzlvRStLO* zIC2@I(vkmoG@OWP+seoI_oJ+Bu**QUWzH$c$)HhOjnD~2gkM`AX|9p+qJc2!lz^Ss zM{|PPF{m^^az+P~!qwjzOraCD1EBpC0aNTuEV!pt#xnh~cPdIhWEnXE{s!m3{%_!r z{5BfckAfLg_!C7d?d zN`&M|$;asKsvGW>lUSTWI$STr?S3s8GdG7~;?jv|A`)Qi!`S1;TB<_V2<^afvyo2C zW%y$bXav3&1BALRWy1hA9zs*ostsEZ4LpO^VhwABM7xYJjU!#iOeBP+LOw$lxa7wL zr!?!64Wj^2jNwD&I73$;Kk&Yzy>A|NWQs>(k&u|6h1<|#^7=&%lwKM%l786Fgro1@ zr}wp(oewW%X2Z^QF=2o-%QVbU5=s+BLB}3jilSr2NFo+YCmmF%rk?ooP%fI96bAa z&pcDK61|47C6w1p!(20|>cLR2;q_b9UZVuSXaXm4ah{M%L@I@B4Unaj@`IxQ}qAlX1qf?*o$B z;Z94^L?78Sm_nu0cUkpdBOg-$OGi7*(hjApTq+3P!Pp;+%psg0(Ph$AHtmLn>29 zY4smPa|1R}s^v|f>$1{W^y|6p3_{czH?W>|+ygFd@eW#&`U+awH@ z+kD>18lvo_Yk;a^y6Rc73HddZ2#|X+mY0g&mG{~;f32&zqpDUDBx(f>1C$_-$|aEL zLw<##@l5ISE{+!Q8}KkE8KnZv2)k=aL3ie4Cp3HG`&O0B;qhkuJZcrtr`3uXObA!x z>ULwkXVlg>aQicV>XmU$!Mrhq`~^6QCMYHtNHxpkf`EcV5$NE-)5GUqA3XhMtToTK zd4rVA;UmFRKIn5lFBS0Qr+|$gV4O}TO_)4f?rhe&(I(d8-MDr>Yu#?3*@Nw8T^PC<-^999cHvK%`;FbMnd$=f(KW_ z#?&V#&7x+96w#3HRy9?QF~Fb>8%6Bvq+6d2TI<<>6O;nd)v4q#E!>ZI^lRLfXLxcm zg(rZ3L3r~)<9t0{4V$3AQLDJ<*C4JaQ$;NHs!%~?S{>Arj zC5zN;hPBH@ch=HkhnfpG{w1u5Py@C?6Odd)Bd7Aq)I=Wu#qY;X#3FO`_3P#%Uy| zMC0vzq+g14y;#fE`YEN9ZAL3MO(Ax>?tQ#lez;wHx?TP8>E`Xl?Dg5?_4(xO<^1!@ z-QRxx_J=oDZ!hLAb`NQiE|*j}Cz&6%)rLVftiWo7|PA-O75@xZaGvdwuzzfB*i6 z_jjlB9(_9RR_boN=Bg36^L#tMxjef(-R$PWS-+9j^oVw3GjI^7x|*uuV<}otW=kHp z4tobs_N(b-w|FwHtp^nVeY=#sp*n&(JRe6#j`ox-QP{kb1`o6 zlgkC#vN5ctv?hPix>L^S;qAKpV%xi#H?9^9PTpNkUtdgacH?=k+%2cg7gL=f@Po#T z(yvdu)mAxE%7huAc`e-L8#4@_ZdKes?SNq_=E}uu_PZq~99Pd9@KBV}06PFnd^AqF*NaPbMJtI=*f>(=rRGsc}Z?x|>Q z4cV}GAMM!HvB)*8?6av0g-e(l4ybD3RB~NaZIxxG7;V@JK7^!KO2|f-2MU2V#Ug(< zvcW(u%UPpM*(tqBMpI$E>T=XtPde*Sb3LqIpDgFSx@KiOWl`*wu=3ey$3x`G*=WD& zV&xmyGB@ewGT=NamI(tJp5-EY=rjO2vN~)Q80j=MeaFDxPFh#n>D|@o<$AImx9H#1 zpt9^&&=^#2)b!9%JKN#@ay`1)O}CRKZPKlzElw&_&VnHQ|k@rR1{E z2Q7R^1VmN^KuvCKidZcMcqrv4amz&z*RSBx1`>epTF7Y;-x>n0z@A&`U;;mvEbR#u;J1&kU%*Ll*1wt3LG8pKTRn6tkxW9azfh) zX^oPgR5CDe|DEq$k~^uWWqO}(osTyU!9jjX?+3Thqx0y?{l3fQs;`9QA1>vY@&m8* zLqCDKd5C-`&X?bw)t&ENIzPR4Ua!qvm%qQi$rS6u_i?wsVQSj8K7drX! zr+;uuJ)Zcl;CNBjlD+q9MMynVz$$-huBhv&%GKnd$UimLyFOefX6n_(xqfs@=@nKt z&i(S`U3!surdH*ze5c|0dWw=9cgh%6df!kn8Ykn^6gTlmX9+YQAB7| ziytovV05%!7>#dAQr;8lBaiU$v*W$5LkHg^BbFh^^2^9+XgO%W721yD!F?~^y3YS7f) z?ehI4gBHvVWr)v5os;#{)(Xitt+=*yh;~EKNJZTQyiZapA3;VD41m3K11es*<;b_Cl5Cb;#9qB)y4p>J83=m2*$A42 zwyNbK;Ne-POyL9pW4Q5Tn5lNT0RV`8#ywu7#hU<_L^c%<2abH7RPaD4gDosqju=08 zAwn((M>^Q6W+%ORpLU?;`M6DE9Pxqql-BMws+D3colQjCbgWX$GAhmeB)1fFl>z8l z3@;|e7cfSp{GLirrZw^!cNPYPs?j1ROW}kGqlM*eR%n&nQrhk_WZPUu{LQ|#eF``M zu?Jf=+z7m2+0%01MgjQ=^ZB$PBaRBAvWlrdJ)dZobDgT&DqGgetg=8Bk|8;&6mgdJ zj|@O~F+5$Jk_d!sxABzi`53lEe15bPpOcCl@mH#yO)70GGJrhzP6iV~&5L8Q<>(Pb zlDnTH?WvN|UO@0`%}6O^UP48SA!*I3S1F<)Eq74XkC3u3H_qjj3Zd@gjq+DY`TR13KsX14w1R0_DO)a;S^>s$enS)T0g89yMU zbOD^*nsVJXO6i8gKAH~g^JEX$!?)zLA0MNDkqCA|R1lJKTKNIZX{$u2=pP_c6;Usy zJGBzx!HJwaMP&rWNdal(bd;#bm%mYBkeHAEPyr^Fb5n*{^8@ z8Ss5Ms4s_#gFt&qbWlujex()T6fYBPcp20Oh)`m!xz>c@atlc>8$km?V`w9e8stzc zMKUMRtsWRIf$mFNT8cCps*+DhyP?#OyvU)6wPIO$3mOf5q>PDX#k29_`0+D@oq`Xe4kXGczj%iyznlT-EP6Z?cmcm>V&W$K2QMg&e5A{I-<6??loK1J5 z`rQT+s~ywev2fb+S?i3V%_Cd$jt4!PwhJ&iWctO$`er-6T=mD*>7jG#dxHEBq(`^W zN!NM%%K81w`6={pgYRpsq;hGdHIhw$j9V6q#mE? z|4G;V^MG^KmRst#yz}eWF0rq?6q4Q1@SrI_>RLsDlB zDPOO7wp@!VHr;oG`tY~jTn+2%ktiZ36xbRgrCZJW^b%vhf5AXS@OyNVUuE=Jn> zwo@6@0SEF*pc8$EJ#-FL#c#oLS{U0YLrSs7$n$(qzueBSMw}~-RKYbKjPzvQ=Q`|> zYM?YVKdIHD2AbOdXzfi#;U{p{?YMqoTk>zU{J8ev{_69)ySwxGyjvM}>*idmZ)~fe zvzZpJQ8wcS^myK{GMvkWteZ*36*Q}jx8$5vY)HVCZXFcUVKD1@peNt1`!9B*t5yGG z(p>e*2>(R;Rwz%w#X?)IT&{Z8>%r|-tM=|s##hVE$`V@L?MC+(ix(%;i+N|G5ZP9{ z;%YYy^WSM^#%y*i8w5&1?6H5Sh>&*AdDh4QF_p@ysf1R-n$;W@BEIN)_q)OStJ$ZU z`R5m_AMSVG-|t@T{G7+*7rWubqW$6SGajb>h5HAzUXa@@OPA-8^oL+Gzzg!>Z-annTd@tn1vVV6rzg!Q`7jpU0uyzOt+sXTG z(|vnB`TTP8?q+kno2*8SL0$W8&$?wAYCWtm0695b4k14b8JZNR!6#t*(dsof&S=s? zgKAMkrK}yh869*-(^W{FcuoOxDRZu@SZ!}RY4fpdFEOlTkYQWcuYFj?^-RB;_)dzStT z(QOuD0&tq43e%*!X?M}DjRlOfIWgy!s-tQr6&ifjE+T32f;IDsPO=#C&8WGXw)ySl zda@a{X1&U=S!kD2+J&m+E(ew6s5xjBk&2G(K#V!ARZB2W6J6EN+(uf=((;nD!^yNs zUoYhn^=2K9SDY<}SL?y~LMcKR+HyYnaZ-I{xZ6!yr_<);YIwb!p3hr!3e~2kP(+Bj z$zee7+E3h&($Y@GMIn=@*K0~AVTc^~2)w3cxW|4H^5F!^(@*Y0fr{vd=?Jvv0Rz}F zeCb$&-E|0RF$36u+dvY46OaU;5%>pw#LU<%?UY=6v@`8LZCge}9z!v{Q3S$ul*VtH>{$zrWI& zzK^#LZYi#uw=J0K&y{?91?2`PGjm>zl=Yk&{Aj6@vU6*z_Wbh2KXvV|=3B_^_2Jxk zbMg=^rSjz~9xLhB(?9XuQk&}6<92!4sjSDH)wr!p6wM+!8N3Sh1$={4!G!2%$UG)P zAyKJdG8Rrok<0*Ek>M<-Og=tn6i?Q(<#aG;mUzf|P`g}oD2gJK3ho4iU>xlZ9)+#Eg4e>_FTPV{2O=4mmkoq@aMis0+p;m;_A)@PNG|#te3PHQcPaitQ9U=&c!Ra zM6;*}IC>eg*tVRNd?PnNJ|P;=0l*9mg;I)$=xU`Ej2)Rl!{@Xep`3Rpc_XDB*122F z8PC+7Uzp>nGWx+MbHh$;)UESgFbs8|FHmlBrr36|d~eWJc=6JD7T(arSh z#cr)wc9U+>;>gTribO%g%!{gINz#qBG!k9<5RWD&f{wa5iNGf$s1jF2Du^CRW2c+o z97rO>8#Z1@DA${oO~qsu^9lu!S1zmF?jV@hBQK+*Q4CK#%~o~sv{YDYPTeG2I_~4) zNvDKd`TiFMvfN(uW;RC4qq?aB1hbq|U`r|<2_Eeq?LARQSNI@mF+Ma=5>7`GX=6$) zY)1(X+m(LPqs~;%m~x1r#MjX>^^)7Jd97-(Q!n+K)nU8ZYnB^OS`QSLD$0!;$5?14 zgQsDwZ2FlGfke}8aB4^{FQwPg7A9<6_9Vs_j4SdtW~rU15?zdT%KTm6wbcxxuU|=7 z(nELNEg@z!9pA|7fRVsFgblUk^Vzx^)7*ABS2VjxYglV1yC#-e^jCeD`R>>Az-g)q z=T+FCg%7KekIO9RbSxu{7CY90#B@B8O+@%F$|oLF8~T)-Q4DaEJm=%6P5w(w5H{db zx6H`WW|UqkME~}iWd-KcOO3MHbJ(emdQB>0&6Td^m580LqyZVf=Bv`$Jqlx4(@|W{ zDZ`X`wB-w<_?{O^F7D6kXque5Q4|494ddZ_8bumv6a@SLHj1j#mfyh=$R``A=3~Bx zj{4L4oHq(dj5UA@>Q~3SWV?-;L`^vZh?URfR$;`BWCA*D0sEl{6g$ z1)%gq;-WPRdE>q4NdQ~3sC*iJx(4)yOiV6f&6NZx&3k3-;@VR508~Xu1Les|pqC7| zMjM4#zn+_RJ;27O?e&{QG#-_&xG~6ACF^IqR?HyX2gqb7(Y6dL@RG)|zi?7pJxJ%9 zmrC}C#;1kB{76o(?ol5!e>D@@#P|M(r_O(VDp%BhdMy9(iSvJSo&VBs{?B>mfAw7d z{TI2V40ij|3${^+N<^uqo~7c^3^s{zVykU?wuC{8M6wa26PnQ|=NUghw|T$muRfr$ zl=YyBHqZEQ&G+@1MT}TowW9<$i6_u)9TV$jNeMM56|D*k8FYi5h3ITA9pw2ujTg}< z{1xeMmU6U?@0Kd%kU4C&xsw$~pdc@e0X3YtMJ?x_CQQNyevns6qZ;d_dk_&SBj6}Q zi@Bu^au|s!XO;EM_e`}aISe7#8c;}2BQC!7L9H`vK;br1t$<{?(v+)MD>$^JxYVpKPTv1np^5uSMH$`-I(c+Ly^YB=}D4{j#^ffxRNZTX)6-^-};ChdF| zbKV|l`Jpay!ZGRGjqn#>ZykE4*$u>&Pdyo1HECn{jh9Zt-(Jv_$c!f#dSFhzMsH}S4c2K@tv_HSO`sKT~A75SZIS^efQEnEE3_mR2Gr9G!i%=}I@UUHL zH>#kh92QiB_KUX{?yaqM2MzCTJGfeQUY?9zo{X=>X1mJiZo3hU>X~sPYrD3~PjR~& zzc`uPZHI5pr+yZ|vsv?QH+p$GeX$$gZAY)pX8dD^kgZ?Y%*aA4NX? ztgQ>nMtye!kh)?4lA5NF7e03~X?%CL{CvCo_IC08%k>ZUyHB^P_t&epmy5TT^ZS$0 z`Lyw3H~Qht<#+cdZ_Y+9cf*%E?SAY@CUAyzbCF z+IrkRUr(-g^V7uu<4tW5e(k=`K$vxuWnX@Z%A#AU=fcBUcG;_JMoP{Fozp7LMTd_% zop-KxlbhY_VmY|kj(&W1_1&w}i@7$(xL$QGmmO`RyYAg>`q~y_)xBPK?~stw`N_P8 zsirA5qZ+b`{K(-osJ^^dU#`bs0$_(S3Rwi7NCk*Q`=(_Eu!4ST)^;2DD3%_gh4u9# zgCI7v|FU1#`uw_kwis+CZ7@W~izC3V&u0kdZrm7DlCYp@Gdu4T*2DVk>HPL${o-=F zn{~%6`4gM@7_A2(DP*FhLM9Q~qxTD`fIqDV4u%zIUQx3|!KSMi1Oq5h>L3TA)&j>F zaWwC8*uXk4ewzibcwyQu$pK{k4y0l;tWr<@s#TVY{%+FbI#og**5lUMa>&WNtH87ASs>H(%ZrL?IdDY{v=iZTSDf=>VvXag`q$%p}X z03FM*?&WG;7Nh|yFz#fb-eSYMzb7x!}UX2tEds+}q{ zKv{C&>I#~$H3-l!trt#4AoCC>us-5(GV2IgcFPPR%9>GZ%Wn~_VWWtWM`LTU)Qu@_ zC6!EswSo){rZvb}rIN8JW$h?RO~!dG;`5`NC?9W?1^l!ur_aeh`epo+2Oo{Og#5yP z&+1D5bUU=$9`AezkNWZ}E2kCbZs>gfTKoO!w~sC!|52wk^AMTO$ahHjo~iqdWvY7h zcc;>M`|<6MPtdD*qrLP+Uv4RX%RJS@k8I-Ab1eY$-Clb5pOQ@R7OublN4J#!L;qaQ z_h0n*Qr%E;)|I~u{ovDa`(!@A`~e7I8gAkkzS^$j#b9j?5^M?eg6hEG;V_5|=%10; zE+sgkAu-~+#dy0IVL%bW^{8>R9%A&R(}q>8Z*3MKW^#b0V);y5?x#!~p+dCMw)_*$ z5Bm2xfY1E1apgba#C%n;YB5`OmH(LkRtuS`)}6%>RHRgk@^VQog5GN-H*4`M;_Z5i zqBf8gj%iy)ggkQuNHZKJoies&An{XPLM%ed0xOWQq$L4>WZJB7up&!@SlR@>HVe|y z7z-S#I#yCZ#A(n5Gl@UY+Ejo24Vs+k6GNEOxBuWFtHm4%5xeN8MiEyB;R1$Af& zt;@xNP((+2MbQ^<^0Z|=_alAe>xm!HBM=%D;>DTgp90B$MzRHI{FVU#V=}}5{ z>&lH=FT|lUC@wToA$cS(c1XFdsI8XB#SZ;>Zd+g#R2W^SJZcqN%A^x)YUW<4KRcBi zm06Bj%Smt0u4{XWl3-yypU@0JIaAIAX;QjAeE0;$hy@pfFsp?5Mnj@}auz<8wYA~k zEA$2o9Pvm5X*y-=4=PvDvv}}XQfqFS@8l3gSc&NAn%2rkyBAAYv&mRW>f~sz6SvR!s98%b=RXzWB?Q zDhX4Ah1G4}E$Ac=j=#b&;ch^eM%hKk>m|38OWH`$D;QHb8$_V+QZA;^H*T(mO>itA zs#ni7vU_Ku|pqqru3n_*G6#$$A zkf=}Dg{UU6DSS@1?hV?tR+)Es(|!}UzM?BfZ6Fq)ozB&~S2fqK7Z_jEgr4oy3mg%x z3I-^tESVZ^mRg58FzBcQ7@(3*cy3zBI?Mx$jL|`w_Vzc|(mYwjQY}B^Vg_r?JIYie zx1H@SN>{c$&g}b?S5A6{iTC0o{RrTJRUR+In;C$lfMGm=|i!*L;+t_S+fOC%Vwm-L}ZO=`zqO(ME@Ovn*=f9erPFKQ9BPqgR`e_ zNr55(kp;HL(+0Phy32vsFml14xpX2EW%6|>*x-2#>bwYe!qdtkSpfr9YEr#g(n<`+ z){BXTC{ID>fHdp3U`8-CoWL$Pp4z879jLoh!z>wEAB9PYx#vZ;uM~_X2setpQUXuQ zwPXfQ#2_CqsIi0g!JL97g0!SlKl7X>VXT3uDpXSVdDmcJE2vm)J#Uob5K7QID=8mZ zwXS6BY94nntL0j?EEm(|T)bMz<>CPuYELExJqKfuMIJD0>2m9j`my7~M~(uHWhkXS zs7B5}c2F0F&}Cz4A&EXhe-#-5;%Ns~-+z_qoOFXxd;g2#`tORaKf8%iy%s7QFcshPK)5yLhfvHuBC&$-;s%EM~vsFe^WRUZaOW5B=n?KqAo?+tT_sa3j)%E~m=al0peJEV2jU75}s?dIfnM53ls$QJ6BruLJlXV-WT~jnE*D{o*UgFUgCG^p}1DZ{epTyV&QEM2Y}wWyD|12IG7VqVB4%x#Gv3$-`(q8obB8@9N*pR-JCb~7tuJZ7+RLZrM8xB%qHVZJTRxTfDd(V1kJ@I>u1b}rm5x}pcbP8uY+@Tx;lZjZf(}l_s6ZhQS)fpzPPoxy+0f^ zq=8wOG>BdHjKZ`nI&ls>^8@gb<-Pj`qRTY$bg#Y3~kfv`G^NPcab> zGKm{q0D{|4jGzH=ge4bThdS%PAfb~V>GD?4p% z-qvQV>i)34(_^&e2+w9omXwy#A;k4G4u=%;5O>;UO6)Rp&lppPif>;29?v+aty24jb zKhhD{D$q9=TfwDlVctWXfNB9n9A*!GOQk~8ZiB*C*Axuwwwux+XdW3?_yu3pNid8Dkl5fy<(iq3uB;!O%@X3(BUUGNLsyp=~Mccw;d| z2vnVjpF*RN`F&rYLQd4)-2+ysTcSL<7Alb4(o!A>47Ci z1Q;7E4RdZ_Qs1qDeBD@ZExNqZ!z&68hU=nAe?z)u3V8oLOs2wopES4%5&L{>!1O;EP!q~-wYFa-;7C?t52 z9@Ek>#2W$uLIXB-IUNiz?1LG^{ae?=o|Twy4K^Fz2!aT6H&;#KqG~(zc2WE^%Ov#f zT+Cfb2e<~13(K(CiZK|3Fb*M+F#0A>f^>WgX zQc6B5WkRs)a74{Vq0t$Y4a?DQE&LKp{>jCA?NmDdtilEr1_0G6aQK z<>G2L%&2lYg8rg6jdz6!H2rJBTM9&{xok2T5Bq~28cI<=t6jkWq(L5M+Dfj7kT%(& z5qFhIomo8t(-5@HhE_7v5_k``9@B5d=m6!|S>Pq%mq*_jFcs}vVXQeP2&o%@&0owg ze2->bJcvmI>Ms57SR#Pxt}LpXVIKq;$oN)lA&`ZCtMDzL5eG#D8j)Jg(l1GZk`g9Y z3$zQD#XgvU^LX6ftIJSyp#(yMg$;{|+sQ2rH5F1CmvxYuvM}+|v5?Qb>Di=#45gH= zJwkz}7Xl0K(j5t!D#j7`jSdaM(Mf`il&8-fvgsiGd~qXbLc4m6@|elI%X zXge447cjBLm=_g~Dpq78Xi^Mns4-A)@I2UpnPCmVx`8y-SniBw3$!>WDt5JmX2e%e zQ83XPPH4zwSTx3?UP|HZL~wKjY+Q_cp)=za(3CJXlc8=~N$_PVO8{p$$SIfl#F)tz_#GOHX!0wQdKN!Vw6TLR^$}F2>O~*j5QkaSa<= zTj2^8Bm;CCVoXrQ!MY3&WHNgkftV6YdPO>IWy5r+Px)Zb)hb+Iz#}Q;oKh(;cV0fp zoqS5pr!jG0>S5*?5yu+wZHK(fT$~8|FvmIil0$K!|6qJ!M8`vnrIT{Yn$EDWN~wSv z+L&&C$4pXR!BQVrUH@Iy^*>9l|6@e>NeNde!czITmliV9F*1@9<87G(Z3TZ^TIZ@*Sk{axb$q54+6Q@vZSpop}f?kD*9}_&p4W@RcoTQrr^*N@0_HWW= z@NeN#LH8OFWr#%)$$U8gmMfWo&m~YG0kKRLb^eX$V=HcUK7{B zE%K=d1Oz5a^d;sAbat(h6ebfmjSC%_&?ZI{$iZ2|-gW0mAk!hiaSmog41;)RyQw5b zX1*yWD=9zcNEqSa?IZ+W7%FKP!>?B>?6lQ+Tb*^Zv)$gJU)$|!2gCaD*uH-}IhuBM z`zB~_=^MpDW6=8vxYjGMx6c;Cligv@(0%`o0FywSuJEQ&(sk5!J=%9Y`#QJO72f20 z#Bm3Ea$K%1f9^!~5orPyT(^dz?GJWk|4rQm*gDzf;w%xrfJt*g|+#dAik^9 zuFm03n&~f2>LPIOiZ1afY;Sj6kLIq|4JLuYkyF)m9Agf02buapm)H~GC%0=i=DHtp z-4dywa54$|Ue|7%SHNZZj?s2G$hEf4#dcUV zPI%6^soy`E{h$8vrFctY>X|`Pn{>=kQ>XrCR&WBOd_ymd zTD5W8I9f~>)4`yj;hK;Dn699n>c!ZsQJFR6y`KKyboTV_!F~@`C5%Z4sy0k7Ka;+% zhy<=ot_j5j#$GxeD&#ZeaygYqKrAZdY#|ea4iNHfd$(5I8#k1EoPg}ebRysuePh~E zJ6djR%dlE^*kTNEZ76Bnh}q41HQW?JACIv=F!n@_?OQwTn>(Gofr*n(=DkJFI2<=l zcL$@k5pb{hwpL-np*x5e!d!$!=UIhhC}dNzB$ab9Sb!Of;s~S%SKA<@13b{?Kg@9g#N>~;uC^=sHU-|yaAv~TUSZtu2k&6~$#3ttJps`mLo z@8Yn3A1Ca0pPY_x@XlVR1EoG1APf;;2{6Yz2)Wn7zO7U|DobU{GMjeYGPJs(gQ_q! zvXDh(7&)VsHf(5^hS6mLbWn+JniYZI)b<8-G~l!)!@P%;i*I4>%GnTvSWAGFkRfPW z`nb_wMzU1M?qs=GC>OGFIj^Y|O_ejrs8lW(x>C~=*0HEaHC;Dr8Xm+nOjTj{C+@Y= zs~u09)21wCL;be3JD)-Dj;#uGSr|e(BTwmh2jy(osx2nH{rM1<9_)=_Lmf5MXB&$>7FM#uBsPT#;QAB?Qid1KaA zEGa>6opyC-7Ux~2eu2Dgi^|wwW^J#ujE+1Fcm4~(~2x9l4KgSwkf0OW*z<3qJtKm6UH_AmNaTG zq0(YxPeqpWS({nU##U+8lm_)utr*`Mwa2!CChFG;a?0O^5~(Y-Xf*QKOePsm#=^0%KOFRKuB|{7u8Gh*yaF^c3~CV6GT4ez zCfKbN#|?Be+PR7+L92pK1{R}nr)^{0szGIkk~izyi*XkKc0h^0s&n6xVU3?1%*X8- zruBelBOGwYBLSzLPC60JXOhKYA)QLbqmfi12DV8hqRChUI-=8YXk@{1xLtMLQYQ@= zJ;JXnFe+y*v}9K5kBY6OMx!`nHU&#|hX@n+nFMXXA!{doAeQ3b@xp zzRgI`n@J~hT}wp#-p!S5QH$Csb`GtSBCb{fdo##)Sl=5MyM1Hcx1p{<9|d#9g<}Y& zdnhN+J)j9tC!v|dEESFh548mP7FS%;;WT~znR-7j$`TcvoDrF*l#R-;6-fzJ))TRT zLLV()ewT7lt&)ZcWJnp@1$sQBI_^@%AWnp!Ge}u<8DR^dO_uS#nA0asjghVOGRzFm z#`VqBYg=nSY^`74Ucc_%T#H7+(V*Aw-q_xNz+By0zv13oVT~;Y6>c;9x%2~3Aps15 zu3)K=lZjj)JJ`XN_|aF;%oQpGnp9j*&Rqxg7c|QGl|wx9a(}nxdT_*0d}s;IZ-b?-DS&f~D>sUw&-5rV3#!CnLLq5MA8@w6D94t>y7AR9NPvTBc6NE!xXl zT;0eC;+xl&*KuBiFO_Ay9=3dUXDjZD_CW)7>T=)K#$9{Rstp=djAcj$^gA?l47y4& zugVpvQUd3vlQC7648ts!N|{VLlTMe4`D#@)43R5Vh2*S4-eRncoAQia@DOeiI-RD7 znuj_q_%KjpG=$^y6o3i}TN=kB-VJL1%P0gofC!Y6_Aqwx^c|%LT4RANdf&jBDCIMF!Ad3!=>&~>Xwy#x~;#$T8SsF#Irtaj%Hyddzzx?q5lTHgK0LX3dZfb}|MgY)I(mfvxL4)_T9; zzf8uQje7fLrB;g7MRW{I9;1|KYg`xX=y|goZ&kC<8N`xdb=IO*Hf~kLI$~9Wul;W0 z#&_=3?;|X`#ylSVhThVl8wJ%u47{Ng8Ci^Jt81xUt6I&+=!O=)g$34XWcVH}|2Xq}#k?!Q&F}r|-v>5-2(wt*N@xom=c(ycMNu-TcrF>r z;7kFZ!Fqzu7V&RE@-Rt|NH7om2fdFw7MKDo3Oy5?V5ntHE`t@ppSXgKMFm^Ur$7s#`zOaB^QIJbQ~s#Dmpa~1#DVkoDt15ybj~9iCb|E0GGlK zVZ@2-ffx&6=#!ABc#EP4J_4m^1LA64i1%TWc{XhZ!7!&G_zH>>-b;mwl4U?5(V2u# zqCZ_Aolbe&TOrRHOty4rvy$||D9*8*tFMyd*vZEHFxQ#LoQ5P_v@lITbr%)Ow-)QT>rt4xL3bwNMMIft(bmc)0?2V@Eh;GdP2;BvP6IPYTmKL79iZ!T54k!LuS? zo5Y-1%%TMmftD0LQyXBvW$hG#FEr$tr6K8~^EK;|Gu@D=p5%7`JG4MUuk@@cT925N zg06`{H$Wpm{(u=41DGDxVo={7H}4)z_9iVnF!%wFr)0x4+yrij*&nS6GRjFt1m~j= zWx42fwZOu}Xm*W-aROSAK``h72PK4BYsy)sTfwbyP_GzrUaw@jb)|1t?J7il0s;g* zUQV%ukx*Kq)lv$>t(1*d3h7EdT}a2#O}Ruk6AzX18C5Dl0t7v45#JV!I1J>7pZFA7 z149^kDU)q|L753O$Aa!sCT_?DaI7vuc`Y2LL zz4(FK*VkPxwaBn!OhVOS3Ni(90k&Bpuo)5Q&!uvS#t(*8KBQ#)5Y`T0SxN;gU4mF7 zKrZK6_3F55_3SDXFDb``$0hC~+$QPymW*JcDrXarDd0{g&mv`wcoXPkrHtd~NO2<< zQZo4?hK@`Gwjh1LvY1>I5#|a}u1N)ED#^qkYj7{&90(TQB9_VNSx_9eCN9f$C$w77 z&0J+7#??WloX6vqGLh~ln1CUw2upF9G=f_|Qn1(*g?W>YUwQ}5Qt z9TS`ZBNmc9$l?gsSORnPJIpbdr$L^z?=U4}nn{N?FaV&z*VIZ!&o$+koc1OBEE_Cl z1xyb&Faq}`-9^u&F>f)W`KTfH>kL=6U<(qHN3zUzsfv24z_-@;OtI24aK-csT#2R~ZUwrg5* z-5$Cg1(??fM|g4Zm9z5=UHx$4bM2R17b(}7xaQSyKAs@%3s{N)dJdVcGlM~V%Wd6t zv+X*cyWTWh=cel>&ct!Wb?kBNIH=Y);M66}qf1z7=Mt7;N^E1N&fTqWfTM!)&vqWJ6BEY%}C+mQH*T3{p%^92%)GW4udgL&}LrDA@DWQNwX@ zGBJ~Zptm`$2Tp(zJ_@tY@sEIkS6%e$pn10j9SdeN1UmFEOHM<(qO5Oe;B(A~`;)Gd z(1d>VA}Q~nE{|J|H+#ik=A(ors+mCd8r$WGU2Z8USe~b|*0>=vYf@Xq7>WBCju-T7 zB*TQ&nM<{hhFu3~gXs#UpqyjqT&;pxmQGs+gV7ioJ*-z?ph5wiHr1w*?$rv=3t?Vj zI(Hx{D23pE=!j4p(R#C%+>jC@v#{GyVfGK}#hW|rTRY8Lv&I1<0W}8njcgcukmgj` z>3a`J9fkIwm($Q5Ao?-qRdXyZqbd?(lrjv<$E=AiFqJ$c67;a6vGwqH{PgCG_|#ti z@vYta$CJBz{fEb+^Mn5FdE?g1zBzB*+w0z0v~kYy#6Fuh@9lN&E;<6w>RcRlA077} z9Q1JTe7|#hr;RxVrZ3u)OOeF{oy#hiO*!RM^U;Q0!h}&SWO}xaNe<706EN#wE^Hgn zVA#LtN`@N{anPte3j_zvLVvMIgYXUH#pA;EYd$tPO26D1mDVDQLd4?Yjgy$N1r;?2fdaeDv zUCdr%yMpsEhe5_Fg%}tNlPfF@BA(R(m~Gh5z*>`*1`!91A6go8HCh549n6fk<9=K8 zeve&0rHhk(JZ6v$q=J$?w@R~avo!(EKYR|~G^&Cw4o}TY&xp`ZI%!CTn zhpE#xz}vPISF-`wBn>rFmlAb34U+>+hgX0(RFex(eCg<(3`6^r3(S#k*Cc5F)qJF! zq+@RdEL2EQl81S=Y9KsN4&t~T%0(Wi@H6GEnE zlpq!$6Y#z}U2W0lH$%J5-L8muZ zGLLE{+7O})>Jt=1d~9gUV}gD0k#!FZQQi?(HkG1UN~I!DoV*xoT?5ishH(pHd)`*} zhvrV3zJ8ESe)sy;`t^0#t{W>smbKb~o)&bkFhK^x3EfdYXd7GX$AX?zc-u_=`%db= zasVmNAnUq+=(;&xf=cuiy2O~SAS95p4{|UXd^;(-9^GRi#=i<#v z3Gp}=alXQi6U0Y^NCeqk;ZqJQb$;SHXp{Dvu9>>LGPeBf)x88%bnq1{g(J?+FwaZv zJGrZ{?JVzd1xp=t2uq#xT{DqSoj<&UrJVP28f4_4b(gRdgZM-SdMNjkt~Ke>#Shvb z3}Y}M%Z+Wb@*Rd=&_m4@ViQal!w`T98ViCC6H$N2@9}%K{O--5cPk$D6C@IrCnhY2 zGH|Bj848g|>pcPs92%*Usv?x4a}C3{Apy!F%QbeO1`s4=vS-@xf?}A68Lk!cmNOB| z3t|RIf$?BiGVVr!m6EnquwoJ70_IIihh$)>Us#l|Pn^V*4!7e{ipZS=#=~=BYJi}a z(?M0olY>7ofx?iB1l$;6)O**i1-5TsY{sJDaL^z2ZTmKFY~A>7bLBg5?Ai~%TmRvA zTPxo=&;|x9eI@)XuLij)<)h5=Ei(T0ZKlJ+XcgnA==el9f(t4Ep4`bo(1mR;G7rw$ z`eNAVH;6~O*Bq7m`{4HVh!3XJy5H+|Z>~Wz4|q4->o?YK{9*Nn--A}J{qFkr|Mm9T z^?-Z5kPJHuA!a3^7b5j?ydkHJQmkHzS>?FM5|G^K)pz@K%sZG?po(Kkg6=eJbB2ZR zg!QY7O1?&kHHgr#*b0Sb9Ss6ook;+h@Qyhg5{Y=w&y?_yz&6;%?_Tw=EYfuln{oX* z1b8~;*DJL7)m#)>Sw~cM*UFh}6viZz&?)&uDzsgQ`-EZaW3*!h_EETQ>d+7({tYk* z6D`xNL*%gzZ^u|VV>2IP42Ng^2N)^15xT>>_C1W0WGsLOi$}u|-zL6wp2WAwbe8V5 z>+X#kn=9XMt$qg~2@b)`f~PViIwfGb$FqTX%cJ!T&kfec3o2uS6OaOtO&75RceGnS}VI-J0;D1)#a%8LFiu z7!?CV1l9z>QB;ye7IT=BFpv4IaI?ajStKhUXy7?AX4xv zoPb`2$hWluV%Qdo zkU*F4u>zx)p~29394rsx6b*uz5!MP+g~M6*VBEyc*jDfrlq(Qq6ow~uxU47&c0+q~ z;2vx(DN_+?{xAx1;1jeJYgziyZhUe9OJ%~_l^lznMSW|T;Ce0|ESC!9A~gS~oc0%) zf;OP#Lr}vo`W!bMG*k`dn4vJ+ubiRhN*T>1vPp{E;ot#KLuQ^_bUFhUy0zV51E$sl zN^iRcR&mTUyeU*QTgggk2JSh?l){u!EQv$eLRd=Fh!7rCl;Ik)PeP-By?{|kBd%ri zng(;NI2uSz#<0a;fhd4vAi6>g%~NEmq9_J6jM7pz0c}?*X7kAib%}sG6%D{zMLP)p zSuf<65541MiA+LK^sA+-6iH;&#Bj!-j{3JSel;*mIipu{S~+_V+IT0>s5gS%UU&Vv z<@)b)uK!eb{j*<$?+Hu_J0O=;Q%zl|RTaG|7jo%TJep2KQi(`3=!=8`*<7|#DVK}6 zj0ka$hsY(EgM;1;j5^rEcw1O;EkhnOYoKPW0yT>ZiAx~daY3R>ybuR;vxG!|ik}QQ zwf2}3op?|JS{;W+CCw~ixQL_tRfH!bQx6uC*rNGh$5QlUV;GIl8o@ejVy+1=5g_E{U*2~kTyy)t%y+ISp@c#RrfP@^R#_>gB++5Cebl`fHcb$3ZFm(k>fxhG^ z7YCPsl!Iqo#oUSO@QCKRweNb~c0KSelZ)e^^D778;yHqN->dy?*R zxpM*t*Jn1UEQ9#YEZ0quQtC`#PuRbSBeuu`)pFe*xn7Q$gZ#ebx&^Aa&OE*V-$U(urCNZ=K`g|_F>oceCT@DaXm~3SW3{b zSCGebgpXe0QwIW~TB20WX`vsKbl6?Y#1*Nimb2h4s2zlviK}ixa6^NHmcy7$*wQ`d ze<~QDsicNh1zg7oI};T+6uo&dKUFeO4869gbWC|*%ew)<7_*)tSSYYAP^#H1sj&J!9YFR^pc162UM7Us11#b%uFErFFtZ2>(9RvIL zYS`4qZFAVt@p#a5)nd|=GcX#bjq%vy&d>v-CRnOzmJ@rIOw z?CRQj*Q#QoMeE@O>rx6ryqHhxg(x&sEgzOre$HpCug|3qOdfalI>!_H=B#n=pnq{X zzc`)Ym2d8}?(g^R?6!`_*3rQ z0g(i#lJaBD&PSmaGQ%JfCC2<2)^K5+>>3_PgWXjIueO`@*>ns&X=K5cV}(|njF#^h z6==6mrbV&?n(okbpyiI(1{PLz3f}Eij~-#WPD;PDz%Ah9VA9PK9z2 zH&X>?1GQqLRtQ(p!DK9$WyLoxQ6|IgkcY*;VIM}Ab;4tm6J0%z7RLLMv;s7|w($II zSLw=xJ5GdUg)JTojZX`(21dd(r<@(kc1NvQ-yT5WDkfnml|_zQ+*ibmc#3hB|0~2{ zV?axW#v}B8riS!#i7U8GL!y+j6_!1k_YJ&0Zba0nT|F2OheAiU=+Rj~Z_e9QDC-!` zbKxq5GtoOnF*>qJyWJ|p3v5wH4`{A|ExKO%Ht6`^+xP+ZVzrZasE~!KvJFj_IXK*F zI0ut28U%VdESZj$g9;07q1>Qgq<0|{1}LWDX&L+o&V-51D27T#SoO@HA&cBMtY9b- zErZZRcq6g;8j;dLNGiMnrfeZLxt0sF1lBu-A>^}zs4j-)xTT^OIz|~<1Q;H&&Xl1w zaz|xalL#~)h+;e>26DeHV^Tm9Va#e}sEFG%6t`EmRtS@PclFZfJA#3k?#X zO+m?lqz(JFpk;N^|KI>pOJFGLx_7`pwsBG5F9MDs1d|m2&{uSY1mUZ3!L_K-TWZf* z{>1qTS0VLtboxNocANCg(tN!8V&Vyn5 z^%Ks@t|OClb;P;*ut1ROu)9nzwG8DGcfoO7_SVF8Z-?~(ml1-OfY%i=H5TMF2npY& zU7h^*tP>&vM#dd;(zP6ShIG^`Oexy-0j3|upj(HjoDMPfe28%?8;OwHzrE_&ys@?R z!{*Ah&D9^=o2z~gD?zLIID`z#fY^jr!2jSJSRh=iWp2}ml#8pE4tgRKh>=Z@uFwHM zFu9>N6WJ`mq)cKuPzdg1B$2n6khEUHwVK8HRf>V6YH{w0G8@@M^ZO za6ok_1BMsEnR#Bo+u&X(43HAwOb89m(P|!cek=fsVBNEE!%GLfHQ1K%z!odUdTDBM z=xwkL*XGLi>o@)YMHd>cf7w>TUuk>A?}pWfr;S^p3?D46rbbT(5qqAuU|$GL0OAPN zFJ5!fHiR!Hy@N4E@I06TU^y4WaPVzXCJ3N*JsWiw;+}XU=<{qsA%}jBUci%VuU*49 zTEG5>>)-!wYwbFRNg`M+r7&eQs~L!82!A@6()B3{;Zv`~n`#>G4t)vlj?Ow@f=hyQ z6q{TalhKkC%ee?MzKJTdQZAY&I`4*p2dgh8>HvoEV1bQnCKU;KF>Im!p_R}M?)4uW z-%k)Mh=6-78TCsAXeKmnG2LTA(ehD9l~Telrvs4cy6`1Ir#q=+(5Kj9ylbjl%)*LX z1#@zhh{?RuN1vyUGHl!cb>M zA(KHoL|_d@ZxLyQj*5W*i_%%@Q*x}()lf4Hg)9d)!~6){02-Z?jfDg5px^7=-t>F6 z{a$y#yB!XAqmghZ;E4sji7Yu|DVS9!&FbEuE^Imt>WxroxZbumWUZcsfIczzb&cW>3JjC73$VD9#BhW9 z7jd$5iBvfdBk{058V)cYoS!Qzko=hJ!ro0VHXg>m%{1-q^&3$EG{A%p`nEur6SE?f zvs#FOm(Z$4nQaAO0;)+2OTv_dmN!J!1t-E0B16!$Af^1U*7NY&n=L3C{`gyVqC|65le80a9h9 z5cjc4j7&oS=1HrXg+dPf3d4UfZtag-0wC5vi@v$rGcit~$HKIMM1@X;Cf)5bP!0r{ zEz*E8EgA%ALAW^!@Q5gXBD77R#MK2xCj`A4cm~=m(NHFx&Sx_$QNs8wCO$_OgnV=) z40<=Q6Y*_QfM9s72osx^@;y!445FifV2oVR(aNN>n9Rmva zs6q2;V9Aiocur`fRs66RcO*6xa#JEFW4IBPDkW-k_FuZcK~STQs-pZl2&`^GsnANW zDH_$%uw_7V!`y+dDp@Af$B5%)vMzlb9MAkycF${2ggtE%31>MC|1X}B$V_TYZ9Nl`p@$Z}(eD4JCgzZ21 zUH_}$`i~LUk81>~UO7R0PHrht=sKCtB(tel$nOsN+>qfAOwph(9u3B0p=3OgU}!)f zlZ;|~x;NLiH&(YdRv=t-RrgGI-CKfhvp|UWgrnj^Z_g`G&D^|R;i4O9N|$kt|8|c!6fH7ctn0Uh=68I zLZ3Nah&Y0+SSX+$1U(BfcsjRup`RkIKFV5a8Pa z$74#^TKRr+^&0e*jT_&AFmtEFZisuR5h4q0v1b&artc3;$f-rIb~Ni8&AJS{((_`b ztj(J0P%M4V+v>C-?{=#D{o2sf-T$t+$t+RCk}lySQpR;~=z7t2J&L&&m%!5(_o%P1 zB*%Tp0i?dgq(HLk=7Hk`$_du%3g0NJpYBd0i(0hdOdlDhHp!e&E0E#WwO7+l7p?q{C?#vVcq64B+3+#{(Emn78&t z=HsKC(f(|(Gi>coyDdX5WuhVzXO0OtODXVeDH+6m&te^SNN2|xVKFfGM;7Kbfh(yH z$FR)lv?AoP2zGNkXlU4jW*rDbT4*4Ma_kQ*3C1uCMH=c#1`_~SorxZ_JQ#A;*1>p2 zDGoIk!gSiLk6JpEbv&3(v6va#<-VTX@2V#w<8V*|-QH=zw#S=7n!{Lv)(%q{mONC( zY}8Y&45c$rBP3`P( zez-fnd$MWz zzCFKnc<*d~f7-_k2US31OkfxS%N1n;c>P)-LN&b{2M?5zzTnpNd~~~ug|^q4p< zGO`sXQ7$+N=2lZL?oC?9i_!kHvlul__ooNb-lSWHk*1g885V+JvOm0CITeH+(6g&( zbFGps=aP6|v=X!&rv1)_L@hiY>%NIpgP6#m@;U%S-;$Z*Nu>JX*lft)E^sn|LNsGjW; zmSXNmDOb*hp>)bjl)zGzm84H#aLk6w3;@2ZayANUnUi%so{f4_qNoVe6s`j$0&OkN z=(%B?c6hxsZ4ymh^z>OvWuO`H$I8g6Ozg_6#q{%wfiZ2a7EC`GQ$$%!sh`?nV}C5M++~RXF5GL{QqU$2IxJ*( z6-o}2LPjR8{}7;W#Sd&)rWz6DT>M*=96bU=a2`Hxd3;R|wG+c82XjWnJFm`sH(8KJZm;sU<9RiA*_!gZFk^ zcjv4sh{tdu1eZ@PuI~U+*iH)EaR}dbi`RR$+SH288e_`(mTD{cN+ufiu7j_<8`r&? zKfs;=XC_5?1W??!2F44s9MuNbDXHUqM@)pkA{4*tp7ra{e!&TJhZlG>BpZeRm>jmc zl25?86HYNPYT9xRDlYU}*r-sCVVN|vl2t9hR-q%Fa4fQvtX7P5A-IZhmj0|HF^4*V zBtq_SjDsQTQVL=d`#U`oIwYhe_!A?2($YoHv?we^52t7IKgTc89yAh25Gcrj4!W;K*hTTM?U~`5rPTea(_X?Vb_}%6W9^b-N3`sF6 zgPsj=EX+3C4r2jR00v!y%LaU}W)+$MM;Rn11`Ec>tZVjZ+gI?WX0_bV%e8VEEs2N0 zSa5tN!|aGnNbgK|3+9a9vk6Vx2XO&IcaxSdXlwP_%C+A^@y0%EFpMTNudwAREmQ5- zdc9iKC5CB(YB0;IXz;RQaX=-rwX&fUZJw-HTA3^8gbr!=VW!Aq3?_pa=AL5~d@#n+ zLCm|#2TLWA5f*4ebHONx_%>PQA41!`j@AGXcYviA3rHdtC&Upm!lVNrnyDhUajnD@ zGuS##<(SLR`(Qk}5hSCyBLrYB8L4FBu)@UpJ5QU)jZmw>x{QyEEfDh4Pkdx5C zf?k;7Tji*gT5mIyXxOsMW;iy3sK36fwa_^&L&>Y#9)fUHWcxvj5~oP z2#p1{D-0-DRgOK3wt}pNIR;^+6cR9?7)O?8@fNfv$W-!N}FJY zNt>?U^-2;WZro&HmU+L9+d(tg>zfB78{08GdX|gFkoFj-LL1jcmV_VbUr%w7DuOJL?3em=_O3$b&9aFg=oxNHDYo*uj>^yKot%Rt68?NWU(l z@i7ghqkcS6D$ELuXqk|A14ePgzgf;FW8nac26{GxJ05Lh-`1LEbJe|m1CJW;Zbbtg z;YBEl*Kd$HnfNKqq6APrMcwB#w$PCv1a|1a$nsy*_ZS&KA9-i39amCz?*VP7&9$|fTDRHT$kNQGoH z=mul>+?(F*4fiG+8RXeo1D{000iS0(6!7AtR0R4DJ)qIB66^bWpx6v;s=H7NM3-1q~L=8U1?g>ol*A3Tyn{@p@E!U45 z{P^Y)kXm|6k!vxn(vy>bJ!SVMW|1{aw-{_udY=-S#e5@`3aLaq7Ky~8(O5VXk1%AT zCYQ8I(blV0RUY>`{gz!*%5pI)6>@SRr%M$>k=0VZS}vMZwPDt5LpPL4O)i^irCycr zb14s@pO*_+tz5uG8oFF9=M1H6X_BSMc1^>{x>UjuT`J;a9BkCIj$Q9IEK67FnoO!n zwyxstc1<-E+>{r`nfMh5cfl1vxCKZp<9Q1Bh%N4m$8(;?R3(+)7Vutb8N_|1RKUBG zbD2sZSIDMuzFjR38s@NR_E<(i!}a6gP%IRPM?%S1G!>60<1rkGhJx`(I1!B|q7gJ# zE}bf5(z#?jmyFTVGnvRHqTq5&AI_OLClU-qgBY=acqoX6?Af)hrGr{Exo>IX7VkJ= z#?3Zp&@fE7U@E1aZD7A^D(#v)=~%sbbzswtrE8k8&1Pg}5Lp>VRz_dZu(+}_U%9_n zIWMj3gja^)mBA$qFVAs)f{&!=${2L@^UIx)vT`_Hxj$XGn^+k;KmY0qOA}5iRoxOpUoCKi-Y}x!~Mhk#oqp6(QP)skcKKXYAU!I{0u%UXOgB;Zkc-9 zP?}WQiaWjff|-@{d51OEF~iZMxlC5I7}R%#&oIO{t2*f>^5oO`0rIjkyrg zyj{)J%W+8majOa?wNop=;P2Cys#q&TF(nLbW!f?Nw$i4Z#zccqEBkt;CB+Z>)mzj0 z$;dbu=&-cq97_j6H!37TkoW@W@D~!0*B%^)$jih6Vc%9F;+yxII|Cc)WeX@$If-YhmttKl)2?PZT5gxc0rXxi5A${2R&YW~PAod=Zd)Cj z#d)K0bJjSUHI9XY)uM0Ul_9U8&O%LrLX7#9lSE6$11!e9#i)hXv?XQ)luJa$S)n!` z;lorCHR^~F%;F$uNKhjV2Ik4wKAARd?zCBDZ>M$tpm%q#b2v2UrA1h(b#K3W&NNcJ zJGySwe%JFN%DgL{Ylku6oI4J2W`cXUih3D^~V5qF8EfUVmT9zD<` zFj-dfkwU^J0K24;WhU23nqh{FPOmEu?wq}R_W1M1cfbDhMO+{dX@OeSG)k{oB{CUp~hVkN0<=%R-?q2=uU= z@`>UdVd?~xL`%&WB|;>Hgx|k)y_EFpg@{%lVp3pr>J2E4Whe7a)Qvecmk88r)lRFC z2yXR^!hWC2fFg-w1f0gLlyZO@s5qcOU7}B)z*2>`l*F}bOG2}BYpf>-#>18-obcra zdtiKzF2EfY4Y1`jG#Q<;cc$r6N;GyZat6(MDGN+uwsm>D4wWO>9C%`jpyFi2o1!uAVnGn5Y_PR+-l zkad_{u4pT4d0Yzp1=0&)jHxbBp$Zi{5i<@UAe<4TaZ5j#^{3ssUV-7~lQID=Qy1fM zCR9pz@}k~fG42KXB?HhqSD~+9P%w9_k}oi4zi?HK`I8|$)h2E|Z88dP+LSxh3>Y4F zgs=ilTkNtqlya-wrSF)?KtC{tcEx09OmI*yqi2grKi)1b)`Z1kEX(@Dd}|`Hqq~#} zL6OR&;!%;_f)Buq!drB$;;Jn59N3?YdTlx$EoS5W`RMRqZ!w=9?(Yse4d`>_q#tGs z)IRjJUWl3Hq_Z;A)`inzm0opdC=mJx#~}~ArYdrBOLMY zE<0VqQjo)V<*rcxHxhIqkzD>dz8+aGG ziA8+tu>kGxRM_j^UM*$fN-+)N6JnO0eIfyTCd&GQ&E!9HQm$TRnKWvcbKO63J%8l7 zySGG_i1i3$r!R6pabJ8~ekR(P+;!qAGA3J>t8+a zq~h9Ze8Hg{%xj5KbzH}N*Zl=O#TF*R{qU17PGlf~OgXok6a)#+sbT5&11-ejvo(Ss z4Xp?p3+ZZfhJSfsp-v*1pdDncK*FDg#w^oErxV|M4 zpT+!})k3T%mRkr*K{8mrxWJ5G;y`n-dCnmEKZinsagr47@kAPj>p43WawzIFs%MP!*^ih-7e> zbVSaIQWLLSQ|!9gvdy}oL&IluPcavCuY(mavOug)AKYfZK{5n6@7uuJF+eQ1y%usa z%ob7zO%d{}I<8XQ^&bdSi43+dS<_Lk<1I!0*Gp(#%*!yt@Lp{lql`{u&RcX$Y1Gtu zrie1GRccx_pN=KyC$br%gCqf{0J)7t(N<}whBW-nzqpj5+)_(Z? z`i<{4R=$UA91p?%^p)}%t*TgcvuRsRyN>tORi!FdG^L_QC8=DLXx*eMg^XM&N-!u? z$*fgtnxdA{N;#*=MHq5ibY!6?SmthwQ;K2%Su%Xjzm5lsN5hyt#8Nl2*T+Rha6DU3 z0q_uc)gOKn_fH;j|5`D zEm+$5L`Y!}Ndi`-6F!0)(L-wOhi!1+>i6#TYr*Z+IFo0)g$+mq3M?%$(~~m zewlUN6VSB;-kNXf6>K5&h$so{LoB?7tN9o@9dD{JmvaI#lga=Ww8~I~Fqc6|Lu;TN z+QRu-XcytSl!n^SGb;@uo^(71o7GsbjE)YNG#d}nMJw#jBx9*q z2zSR_Fs7hrVV;Gw7b!v3A#*T0po2v44Z4`9YrwPV*(7e_7r1A@vo3t!*6{G<6m-r6 zS{|ZCEGZ?mQlgX!)++c&-%Ru`niq`*DMZMlknC7hOD!65zOKM#FIvRMnZw9b@(@$# zIC{g0(uaj4I-MbzP+9S)U_ZN7K@)*6>cLBxn!%8a_T8q(Wyrgkh;W$=tp_4)JkygyTZTY`9Bb(X=vOdyCT$(Y2y|KzvY>Hw zRsrW{xYD3vL}QrKHJkEKfKcEf1~sd6aTVt{3lceMr_3G3%m6xFt1xkp$;HponBX4+Gsl!|3}DPBgEgh7OL<)?XqBv1N)zf5ZdQdPm%CIZN=sp| z)6b4$Ia$u&?N|>~7t!BP{?WoUDG!mT6_evk`03W~K8lo5?*zTS;rfq3*Z-~T`d=!p z_rg``?Ik9~Z?C&t5HS=qSHwI8T!#c_W5NKJJNjQb;xlT^TCJt)4PE<+^rk~Khjfmp_{py6PbFS#iIS&2h3C<5Mzx_ggab$VEbI{rO8}!XNSJx3Azg+6K`!&6VbJ!aH zIxTa@Q?UmoUL;@vNIuJ$jV?eZ%F{iXejRD+hKwRO_BU;X`rD;WQUSNPX& z?L6V%Pv89fU!cEn-)}GYx9MMf{!6+#?P~`3mNc!QD0PQa)dE$kHb_-TmpeSZB!ye_ zGXK@e1EzkUKNRd+;eEgb8D}AMhZWYD0U8SEVqgfr5?0nH4kaR4xLPZcNe`H9u?!Ij zyL8-8Y1NAr3EF0Qv7w}4dz-YtnRf|O!p@*E>sdpni6XByZnxK|4)yfe#5~{c+}UmJ z_4G7r+l559K};>CpgzLd7v55yN;-(?ArabwRsiu0e)k-ld0vk}W2D!iPm!j2bY)cL$CASs&UzlzWKdNWjxDm>WyY24PGR z95G6k1aVKl2B<+wE`r~lOl$__Ejq-c_PY-bdaTg5=sY~^-QUBJ_JhM7h)z{I?T3f` zC#QpZ`<+ooIJPIv zDrQry5Ub`H3xJlSKT)$POsN9V(k9szEQ+>eem%1Uduhh}+*gShn0W#FID(yeDb_bi zP(ZtSktpHB8r7LO8#dUqrNRt@wcn~{n+n%RVWEk|_R8L*^X~P_Cl}`z=Qp1}xsOJ9 z{NUcnvOt*G4w)PnStMqC`)}gBv`n6oI zmemX4On563*}`LJ1*qmBDeXtURI>pk?Uz$r^b3arP@%G65;Q8LV4-^d*7cx= zhzxWH$HzxX1@SJHoQ4vQ{!+6cs6l!WU68`4cPvsU@s5)h9(!ll8elT1q%llN36GM+ z1BA*+GDZ&OcVyeCLYoe4L1(D4u5&;H5HX!RL+NRzZo~3{-44Cklu{V8bLM!Kr!CD% zu7U1m0`jhYFf?|$M5ZQI3Bws|kFkJORWiYzQ35+fee3Z66kKd!g|5eZYjM)Lc=7dI zl(ll=5hhqo1X$mS?t3f*wh{AhguT#egeAOr-7>V@`E-A=vzSj8JF~r=DQM7c$k_F*U9?jCZl+BTF$J3e z>~p!B3x_dSxoC~RHd;O_GVD5T5d~N&5if>YGDv8+mHLP7CD_zUyGD6BB|UpYaB5uS zK?m7!vMF7CbZA^4)`QcI+ODS$UH1=&7CAW16*+(oDYJxi7B$!7Tdt!f(@Qy#aSk8_ z8Wor^>T9UTDVB%*hbOLQ=R~FsJFdeXBlyOb@pM-^BmpNK)LeHutisF7io5ek@(j(} z7a@U8;2vnv60ldtb<}g+nYkY9yUs?gxy~Ot&-~^21@R%pGdsu>?mIOjYdw%)ze2O6bDo6%GQdG{3d_ zJw`6^Sy5%uK|Jvh6HQ%a)<_1@Vk8>n7K~M$)-}f_j4=@$ih&Hn8z<;R$Y+dSe%sP= z1I&pct>mZyE@DOq3?EG85GG~`BRvV08@IHBX=jglSeQ3p(Pvgc`V@#h9SXX$GHRNOPLU60h0xknBEby1BM~}r?dj3B?b{@UQCV{BMgkP6uVk7 zs#4Q3G1&c^Hy~T0tOLk$LlFr z!HH22$kcUAXYr6nQ!10uU_Ke`Ovj^Mr`KurT2`-Nv~9CluQj(AURnSE|MW>jK~$|; ztFAWm;-K5?ckDsO8ugo)-C%8Ef@qpmT`8ka(-BWPiZRI4&LS-6MkWG*>4rE;2Dici zACtB?1?CFrm?%z%HiQb45EV}RTlA*`p>e=nP?M_p7{dcoe)KOikhaLHfSDIviGzA6 z4zW4Vvyj8E?IZrJRMcHeiSUk^T(6cOhl7|A+^a!GR;~(jkKBvC!1F+2l(SK^;nwOk z_d3x5aA}kUMz`?%#H3c8$VYm&(KZxL3<39gD(qGBG3aJsMR0y0$?W)5QI#JyYE5Li z5s(M#+>w})nZ$#_U?%DTi(1&#)k3URN}|)91u8Ttm=N!aBbc>~a=dR=pn0mfkVpiX z<5Y#F(DG0hO=yW~2D3cZsD!?Rt+QHygSd`ZTFB%4dL@NfjNU8dq9T>`s%qABO_hV* zEiY4~VN_lNGZ1lRH03%o$GJBWVP7s4%OxXV@?@Aks!WUKU6$KI-z6hVc^(UJfMYDA znC0D*iiHeawXJ$xV~SW}H>^}st7+A`S!>$$M!ja#w3?uCxb zPmxu*tW*FOLFm3pek?gKG4|C;UMfIC z3(BR8T+Ygse5I79Pf4YWX1D5wWmLJ$#>)5@r*4RD?10dcP{J{#LVCnm75qwM=OclLlc za85dq%30?$4)8?4Nj^wSO4Mz{IWUg&auPSCBdwCdImHyc4XVXdvyyqe_HW-^0#6|9 zf4JfLzhqqhtM2+g2V5UkmRJ?OavY{WE-(k@SFvyr^>IxDYz?u6EyfkJNl~$4CFe*mr)l{H=3P{5f~|%`L9}oGar$=SeO@WX#n)C6iR>fyD0-BVq${q3d)w79je?wP);^XGp>gMXoU!k>?&CQi< z5qh}2wzBojw|^(CuWaEW)UU)v99sQb2x%^{_0QkI}WX^tp4!j?>gxE z^&9vn{;=cFSAXK9LSF7R8na$~(lu+96m`v!bwG=kxpiQ)6Nb0BR?oN?sCOb20<=$- zv=e!(hE@d@HD(=QDDo#T_@O1wJG#Icl2C9huI*Q*Z5@Ud40WglW+g?Fm6few!NQJ` zakb-d{jjee4{Ns;oxA(powma2%c49pG%%eAdImbHQcO#E7N&u+&d9IGHncZP?NDJM z)CP6QW_A3ifWwN=IiN;ZxLsZ9atL+cX-EOT{D_E6SSIeEwJBx1h01q&> zpv5-T^w2Esv{fcfwktSzd$)BqYYc4(_k~!;bZbFgGk!ZfVkw_&OU;ff*pM|Ghq#C8 zk9iuVV3DPW18O#C6eC6<>^PC(VL*BzR*HLS#rUWppU#^14*GW%or|OX-9_u>tnu_@ z`1oXSzTZCI?_8V=pWPfkJ{dke9Y4X&+33;n;NqbB@NfWwHWP+zzgf z8NXhPc53VwB8)bS5LVxS#sm2r^R8j~EYL|RC}o0@aA=~#RGQmT(g$XEc<<(qAK!oa z@b2BK=TGnMy?k>1?#;_Lubw}8c>dw->(|epJb8Hk;{49jNB3S`oVA(xMmeu<44D5cO50cggsj?koN ze-`b|Mbcpp7$X{Fc25q6a@4BCwR{*#Fhd=o4Hubrsgm-QlU`Viqoy|Q7(x+Ih5acF zz{zI0Ut`wuPL*+6yPfKkZz__$u|8K7&7O}jJqj*@$556O#4XGUaZ)f0w5wPokYmgs zzs32NhS2qpdnN3l1&EJf@0wOhpiKng%x#U!??DV?u(~Cu^U; zj>+XynAxcS*bJ6cK8okTN52D072|GnpPYp;cugv#v{Ia2T?{sff=RMbPa?P(hB>r- z1L|EO=th$^lr$vLysz&LYlma=Xk^lps0XW9RMo@-2%y=?civLdcvD8c#C#c8dciI1 zvy5o~`XVchB>ZdX;6~iHmWz6!rv|)ROtFCh;$P2%Hed&)@U2Mff(8i)WGd`kw`%I? z@xkfQ!QSpp(=rTA)~gD1>!wx|iXcHubQ~=6dDj$q9|(g^TEz4nqaBiyC>4!=5q`C- znpf)?g<64Ozh*h!HHuSK5~S1U{;09jHNdpJTG1@Wz=xBj0wxDU%QmRf=fERs19H6xz-(z0_Jfunma{If89E0)3j!BiN#M z+NpmaWFs&aVmevZ?OkF_&mXxiZZXtui7q)%RBj2=IB*ZQIXW3VK6hQ*b?s<`X>fw` z6A;dE&>|dn&c`kG>#nDFTu*P)ZOVaoaC|Hvo}H@eKzJ}Y>7Pj5B}(<+%=PrX>-?CQ z)KSkhR|FI#;2~TY`&Wb`d#dYZ%XQiynns@{@eGr)Yqw6vt1DOvI}3qKVgE?DN}cb! zPKHZZYWWsUgrh+2mail3%M0R}bFNN#vtw2F=Oa<&ql`I01cHgcwB_L1fDKm3GUK>_ zrC2r|wqnG;iTMulq?in)SP*@KwVWdUSjdCk^t;z!9B$tD9zTb82N#ha=r1V}=h^DO zhNQy23SkJjf$<1}^boE zIWdM(Qj~g#1vax7fN?+A5|*%MlZCu7o20_bD~yTY(wm76QxFz@VR{7JD>45jt^=Wp zK?kD?rW%YWDa(j6m_5R|poI5=kjL}^;Q&oww`WazOO z<}bQkV7R>pj{%!JM7K&hE_s;h`x-3Cwd;Sl@%``Cum53_N!gi6!@GF{BP$kit5W`8 zG2fd{2HjStS#LK?+tmAQd))6#hP_e0Gw3wCo#trJ8xQ;A;b1lyLRlJhZ9}c#^#xwc zd{XpY*~a6cl~}zl6WRhndp#%DjW{@KNeP)rfWv{Mh}Q@-R=7~%%+&$|QE3U+%Bc#| z4*J<~QdZP!D+sR*7{j@4U1=KjMh+hobc-WhW_*2nfDoVpU)r(IYb8 zPR9Zf-xkKQ%LBgj8;mk`M5-17mTD|h{0^smyURGceDU~i!u>`?`#$m z0X0wYh&$rJgk#_q*h~yz=Dh(sc{i4zr|=xyKwn_W6JJ5nuEauKLsJd4WT-{VlKFJJ zn2oDaQI*Paxu90^g5kJ^GXn@_sqVOP$_F#s_b zQz6h+TBJdMo)Gm>bAbL3_p=S@>g8RHdspJVRUB~uDX#f(TsZhF#;IsnaLXo)*dM?x z43ZTNYZx^`$}zaR825m^!Q{|*p<^^uFmn;y3pG`&1rl$90*oE#(hY*M`Et^SAy4TC zJ4+Xpd3z?TJjhA>1Uju)Cu4y^vO4s-y2OxG4F{QDNQAj?Jp)<|x)OvzhkmR(-dOa& zWdRm!+hSpi08@#X+K5P2cydc$)^o>itE}`A!}tYbIIg?cuQH(V?u{)S7-@0G9B-^an%v#*OQsl^Zu4y8K9T_P_e}%aO0?>SXTl z63+he{L9~p<1o{m)2@yGI^?63qgJeSPHW;PoF?ez^A6>BhCy)oW`j*VeG} z%~yXXT^CnyF7m^F=0)(^8`svb{q1pl{6Z_gA>QRLY4zIr*B`|N{}$nd>*BP(B(%fV zm-?3ocXV!w^S`;mzeec)-*opSS8)H@weNrb``=yC^6w9qf8Tw#-1!3z^0?Uk{`a|D zrDd5TSU4RPR$C11gK=YjVD9y62P2UYoRLt>XFRZ$>7qf?X4S!@cDk_Y6?z_NdB`;g zzNV6ejO*xme9QbMRn{i6Dltbdgi;H`8}bhND*-PEM4QP+yS3u9DT`!M#?&h8_q4uQ zmU9tILP|ac8$QSSsr2{8Y**LHb)k2rLfg<{MO_#!6^6X)N-k>9F^4Hyp_;>Zvy~Kc zDCDEoa=-ggr5sJBCY}X1= zqrhmsdO3l8CGD>yJe8ymnqr5gNpklVoqLP+o!!>Gz0So^@5$Nd(dqEX>FDX%_|eJ8 z*?D@#oyVY)Vc#gJ`A8)dfC4S0{0_LFW&_oHs8$F&IYAtC%7A{BXYEl4Z5ZU3L4_-m zNc=?K93ll3ULgpg3s_w~zjONW{o9w%9$(x&efjjkyO$TQAK!j-=itf3y?3vkynOob z@x%LXUOs*I>gn5;7kl$wB^QOkFNut~m@BZTVLm|(#Z&|XIO5;P z#sgK6=%H3*YiRi}<|oXWm?#`IEh2K*qUywzM#D}=ckrZWT& z3OZDox}0)gseH^E4f~4B#1A&$?VwQ$_M=`fCp1X9LJ0RL;VQM33aqDs8`&s}LT2MZ#wPgIF*=}b z;_-yj#6}`O*D5@KVnk*tgB&d2VQ?+m@rDRqmU1ptPQ!SWku`Z`AmEnO+ zy<}@eXLYemNb#jw5FEu46Of~i<_F1ONJwU<{pM>>)Bj|jvn=IJHd(2&=SEd zSo;`*u>7I8b3K-2Uc$*R>zdKx4Q&&`3#_)&|E7P1Gzk}>g+Yg@=Z}d@ogXuA)Zh|e z!nfEuXF4BGhOS3w0?Eb=(pTQ#dG2*wIA} zsjI|K!ik9xRiEjuaF_eXu9FclDbVc7Tgusf^EwdcIiWdx%0M$WxJ(}HWLdIrtftlvPtXJh`Ln_*DC zEhf=VGPf~9rBvoqi(!tdl^H!zOwv5Vq=s+7mW-(kZDk|wLLyj5hVZLsz=Lm7u~0Uh zOef=DMO`U_XX=^+V-FUdZKw@XYd~xo3buw?sq1pn)WDO?y4C>8;W#rr<-uC`*sSY< zG%zG~z^K>(6FFDIZ^4ZWKr5yd*bEXeP#Bp?F{76A_^PH9YjTbpsFcC^cnr0WsB5x~ z2f*zdvJAPDON5x^-M_sWaIa!!%!}$~7~>e5;5vw-Y}AV;f~kfHoq1JqVa&6b*&#Dy zj?a{LJw#tl8g(ET(joV1Jg|ud>=1|k7>z_Wo{r$bv2&ze`5i|aT30CHTVoSa{q zD~wY^w?+e7nM4S!G#PeB{r0fi9Dq8FUdtE{n$r<1TYK2854(-YpfwqFr{m%7Y}_}C znC8$rjw2^wGCmCV#e=Ou3Sm~Qi3G+z_hu>wS7u)=A|VD3a6{3UmClc7r1~`-W9poySBIKdNRLH;0 z!ln^_CLYQr!$h6@jM4?g{2b;`%;G^&o{aUuLg^@Thw&WmW;zkEIFA?|yV^0OMosE8 zjBeZRv>F1OvM{GK>(y?%(P>)PVpf_Ad$Unz&^F{EF6N2&w_+@`x}9bg`9LupE9a8g zLQmjg)dQEB6b)%-$4ZT^DS~>%tM;&9(wK1IM z)8S%gGU|7V$uQ=}1icqGmvbd+o@`+s6Kf{op{5bsiuyP4M*fX!^mPpow+hoAjpB>( ztpel5V~a(jt*hv4JU^ElC{@1S#t9qOaalFT5&^JoECubEX{tGhHLVZ@Gmjdu!sz$c z7s)7K%1zrfDF0w@DDzC2&sbEJtpNYSg5&CJ-vWo@)i8*lia3iF97iUrv4PcTD{*;) zSQX?dPb0{iGRmwa4Y`WW#TcZ>wImGHCgG~ArR2MHPAiNP6s57JU5jX!;|;nj`I3P` zi+kY&F5!#3@-!Z+cz&r>E9;f4Uday%i3gtV->v*tPF5)=Mi1NnHtG6LhUO9Pk;~)X5Ka(ZeYwu{CH``G!OJt9lYaxsIM@FTeRcfmrdRaUb*}cm;9^S> zPXZ#QaD^EyU!8ya_!a0NNSyrj{?!k^{q`%mI_HW6gt2^)uir(`H<*-Yr4^^G{st@s zTDe4~t`oBP_S=7zZY(hxB2$0g6~3H<^YL@gS6_Wge;bf;=)VY-TGBU1{yta=w{z&f z0G3)|H;UeLh#VzgDbTfR*M9%i-}m2tzqz>)4u{j}bWZ$bvzb^d=5f366T(u0a=A*U z*_!s7JEQLIxVtxQ9nN}3JA;E+=VUQH+3la~4v%+-htuZXw0pQSJlz|g?v0Lj$G47l zZthQR9gIOZ|76}_eY#2OaN4`MFEU~8bZ##CIR9wQEq;42AM8y!vq9tRV1Bwk+n)}0 zhpqidd(zfsU1N7>?~fXXBWvE#4#ur<$7q`JsAKMoI=zP3wNxl5&~(e0NF8>XoP`~W zDIw4LtgMoWX%*6@k_juKgc)79X}~A+QcTT-RUBllC8i00P=>(89J$*wb~@GlfpIcz zo=oT?25pAM?Wn##s2yS3H;yOG(|LQpuhZr?O0b!$g#^Sgg|d=0DoLXphpsbjD7ylu z+wJQ6Lkn6jgu5x{i)iv7E5~C}!JJx2ajiqohoA}3FD6S2LP^8?c9)a>N}6$PT|K|o z*YE7M9x`gL`~2qk*{#XTJJT1prVo!tk4^<04<8*59v=6hEjigttNBPd;Z-sLEf-Rm zLWqeH)NFuDpdtrN*C=rTITuZE5o`rhCT7z@%p;1yLHYIzNWx!X)jVdHassJFZS&r( zH@#Nywvq#vzfAjjo zyBF`@KL7Cc^-rHae){n4!;AYLUR`|t^#0F({OM0WzWDY1qd&fX^y{Y=zx?#$AAkA$ z$6tQ>>BkSB-o5(t?&ar??|=R2)93duKfJv7@%_usA6~wDa{JZA&6khwzk2%c-K*y> zo}9mX_4MjGQpBpnEjekcEa+=g5|*4YimaSS&@ky|5sy*=iuj}{@)d@5}pKAG_SqkfgFop*BwxQ<8fnYzvUIFk7Y_MG1Ur6}z zV6efYv=28GwZOT;6c21*pMGuLH4qGA7)5Qp2u(=%{#03$zDmUcLtxUZ&b!QiG;L`+ z1AEr9O*tnQXl#R2W~2&%G3X=}b(iSC6)Yx%e_u9OrSTavl)P2VGfQha=mh$yc{)|w_SPr~>d^;-DYv`p9uUDz#c*ezDS+Zqiz!$B9O0?e3xx7o2&C~$PH)C=u~3A=(n z@6<<4wU5Elt`B;xL9a9Db=yswc$TF@gU9&|jVc{}KIqu}Rvk3#wT8XMpluG?wXUuA zJB>lNg<(=HrBm^U6H(%!c8={T45xg8$wbkBnTR`|@E1j9xZR}S8dbgBx(w4A#vbe_I#V!qZv|#& zF2S^~Ne}Ru?O*3>=SBkn^gf*^K@^U$^DHTnTs!~y_q)oMCGUmv%4NWU0AhbbhC=etSOr4=E+j3gVhnv-$FtHdaA`IYF zh`2b6N#U9SdlEBsDH(w9$w%F+5}Wah=+}*8XfqpOkWR?G0=v-(-xF3POh>{}uqUyP zBLUBPEac9m!joYaG#e2h7`JQvjyWCL^KpAJYz@1R7_Hse2s9fHX5+3_jAJ&0^@N9k zoWa{c!Xy|I1XGrhhglahLA(W~3GX(2YS4NDKHhRt;Kc(hphm=Jow=OAV;-WPt06{; zZ9+!^7YXl)EX%?$iBFntN|h80LXqJvtL7rvSRk;y7V)m5Daz@Hl#i#QUYgb-s!O!F zaPix`9-z>~n^=AGK! zz?`=vC+i|6!I355TQC3-D^gLIzC0q7kUUhxPOSunah4S)Ep3KhF+PBKCvhCw3vM)S z(BFK-^ld8UPz)%HFJ?NfV|-LnF*Gp4#QfWIDe}A5L0;xLS`VQG{H&xI4Y=_Y7zslj zgBl_i91Fg6213NULEqIdMzk*z3#Jp{RK(BriG>m&Z-}94+Ysvgj@@n4x(%&Wul9*O zwL0x4=7@H)-ZZ)3feB;CpwSj)0Sx?_QmR&RnP>otaag2Uj|R3OPf9F3A1R8`^O&G9 zamb}?$Op5XlYZ1EsxF8i?o`C*#DwBGVd;B?+Ya8;y?z6Iy)9rV3M_)xt6n(>Siyp)ULn*3q+0?aG!?q2zUQ=pSsgg_LUWp)s9`FEQGjOs4OR=tf zJRo>`BNOrD;&`6zu!qI8GAom6xHXK-rfK-562h4>869^jKi0P%EUt#$0D@?30Z#Lqgaz)&hFX9ISz<7a>@oWe; zQu-BAo~&@|0N*$g_COd0O(~-lqTt~+3-~YuuR#sJG7=eAKs|%pj*rm6=rdR=TC8-G zVpVH{WhkslvZG~(R(a5Q_Hicg;5&XD$EvWcNiU0QCFQF*)46{s5%a|btwt$ zk(d;&CStT#l^?XDzswUYey8W znG*Ts1?_54Ei$-on)1IDDWx1(%E6>S|9!>vzjs{!lgfh*8ucwK1s+0+LyD21y=xRV zQI_`uqXf2ZB+1iE?N%*j>Smj;)D?6B^ZGCTaExZQ_*+`tmzd61h>wGt5J36r+pjQ} zFC@NoOn02H1Y9n^UGDtl55?8Q^?yTGC*a@ZO`RQQ|MF5-`+osTiG$ek^&PZG(AD49 z2QOR6`Mdh~n-h3V=k0z=-=29%&I4S%k-(mo@Y7cZFORR1u3ulmK!24SAm%IIpKnhP zwE7oEmUIbAk*;5&JYSJ>+Fw2R1(y12KP2J!B@*{ORMD&!0Sgc>mS&r%xX}JimMU&e_qeVj7Hmt{P7qsqIhBRg6!AcVgoU4p3f<8I+mf|Z%?fL* zsJSpSts2bxT&S84>#&UrG04POr#9=EeOv9@w4x7&*73wXnb>>%+M)-|#yA|+Pp1tW z#F4|XeL8O+42}JPsTLAaE@rXdG}9K?5arAWTf{9O{h_r$yzViUfkmKOdP$dZg-je8 z3B)62TzaQxLWGcVPA(y4ICjF;ig6D#V3_N|8Q5Ky(+9)a!^7^yQUArQ3Fy_G>5JRb zi{s(N$q00Rzk4>dcDhx(JN@v>3B0T#!uM+Va5WopR!Eezzg~u#Ug(=8OHNnPj1v(m z(Pl9jKXV1}-oJhM`O}B@FCV?UID7Z< z@#~k*UcY$s{NdTN2Pf~}ynOfi<^8ioQ!j`#=N?f}&Vz@sD+yvHwZgzGW6H#=)2%Vj zqOGu;jgpJODwaj%HR#GvJ<&3-9Mo*kEJa%i7j@}AAf>BiuELp0p@%^9w z`17atZ{I(=`})b9cdwuQ`Pa`sy?gq{&u{9qq({rWTL$6r2w`1}DJ`wBn! z>BHMkZ(siS{`Kb%FW)}gd-wS4{p)9Mo?m==_wvP)d#|2d{P^bSFE4NZ@$pwdw2CT5mn4HXt?UdjaV zcD*{o;tu);Ow3@#$W6bL4uT;uKsdK*S6OV-AqutjC^PY}h z?LitZb`JJ-cBX^9`2a^IU2EEs$Iuj;)#;$Q*qI$2>>VE+;NpjSJBRx_M+dV7PTraB z@6KQb*Q+I14#Hi6i>}breOqf0mfMTh${CD$H5V10r!i(tjt6oHKdclCM)WmHMzR35 zAE!ZN8I@!&_iqO|!cq<<1?p#9M;%7Yy%Mn0%crF07X*?X922EFKXN_3=X&;-DX2hn zmAXTqifO_xFEYBqp&SrLWTA49qaDR{YwUV-)Ai&IE8iX3^q(Rcbwwg}?|9@oow#oA z@m^2v)4}S_-V(F|O(k*VD;&z%!SxHvk4L8K{%}c$hHIg?_6^s`Kv17_+#>>Yd*-^g zyY!R7j`J9VrJN^swhqLGm--5v!a*mu)IiyW-j4wVyN;OD2AxFw+w@QaCl`~fBc>LZ z;Mo)v6&W!nXG}R=EhQyZosOybcs}ZJ*bj_XV%jNBF&(Z~%fvK$oqo4H>^6i;4#>eP zo1?BZZ0RjShN0DI!F&Z--Bx2d9?d4>`D6sf!=%5Mw0GyD#qNA>cfQ!&+1mw2?O}g3 z=y#eh#(ML~a5foDhCO^9^x7S(+N!It+3Y$^yN03Ku;|oMt&)P2Yt{7*o}pRq)bh4g zXx3qZn&Kgw$uO)+*q@vbVIai(o2iJmkPP8Pz=Wk#u#yTuU{(tWMjM4#X}6s6Ng3wd zr}u&IO@Ihmy5R^PoFM(A=mtWcl8E+e-mb~l#iD)u-JoTQ8<<1&oMW>rF`@jNz!+c?vr>1SUq%P5MB)EO<@3k z?_Lu{u~)u#jNwco)M=QoV;8gW-fX~x=>Wl2*dW=GPiMwNE5A+vDgprMW1M$b~_UFvTg zQ*PBNb&)5#ZAcK3yQ9{$t-}&V*N>Xoq+?nt(>a51P80l~m!NFmQVg|L^BqH)cCAsX zCbBm&ad;PsN~4M!b?Qp1RtDiGB7?XJ!U=|)tx9>lDx0-xF`tfw{Z7=L$ZfP5^ln82 zD~kBUHE@@RlJ=#e5Wv?1?sXc-5pRsKmYbMma1Pj*5S4Ee<03_nE|`gj!2ii;AQcZ| zi(wKAdelm>X%kQ$W3*#@b=uvIgGt$~M!nl^;$XMkV2J3T*Ru3VAt~Ii-028deKYDO zB9@ByDj7(A7CnU6F)B>`GwL>~awXv14s0=IKgyJgBAZ)qJ5DzxFvDhWd)2%C!}jX; zf}`-JbVS;M86!XwY}apmU&_RAHB(|Odq}go%tCJ@QN9p5j|HtyDb}iTqi%K}iL^?! z0u4C^_CO%x6Vm*M$9`sf0WAIvZ z#Udcpu9cw)<9T2x(dix!X35xLMq?(8VO&nvlr$zjPqnk5wlE_@zrHMsVgEZMQ zuo&l0oO5Y!f5CLV07KuROJZOA@k{{;UHv&neskt;=n{p&{^j5DcK8$LI3K^JuYUg9 z6TUvqkK%t<-!5N=4Itk4FOj3Kj(mB2vE#JZ7rHv<>x*B~)d_z|PUARDv4o$NP}El> z0I4P6ynhXuTD`Wmc5NNBvV?WMJ?F2IgGu36|CzAV7s5|&Krmig|K>OdUtPLN{fjt} zb6?Qc2L<%=_Yh&Jzl`Sl+pyH-?Ut|Adyu-mPbk9zM8t=j`a<^kBhQt-A-$&X1nmKX`IBy1m=HfAiq{?ybAGPVe46 zeSC5L`o*)C&z?MceDUh}(-%)4efse3)#KYw@9zEd=>zO@eERg^?dOm0fByLH^ZVDI z-oF0$4tD#SkFQ^Rc=PJbi>J>YKe)Jm`_9?ntwrZ_TEBlXe)53vR(Ee6o!{Pnc;^uN zH%|_pKDz(>>7%EQ9-i#at7T4jleS@3^UQ|Ba`MSSGMtUk;W^~tn!j2|aQ>^LDk(op zze!1}5~nP#q(%)DHX+NwHq=3*+BDRbNhj5LyShK9ACBz9apQ1o)6ku_P9}|mVf}R8 zKAX2^O=-8QLB};J8C%J6hmwud3e0cK1UiLiF~Lf04qzc?LeSozvec#2?VaZ1li~AQ=1k50#D(|S`$LG7rdLztYJYDUQf^jxr-4dBXJKBVQtc)}XNuMlRVo>9a> z%oEj8s+^4%QV}`F;J78?5ZuT`x1oj8ktY|f%k(L;;$uN!pc!RY`~- zHP|hjy=;|PNMU|NgPs!W!p3xw2pkQ9c97D3{JbeAF?$*1I8#k&rG{R%swGpGtBPb* zi;KSg^5Mzr$G3m^@!g+(`SGW>Pd;4i|M~OVKmPdkrw^}w`uOG_fBpGSzkL4jeml1etrM+mmfdy{9k|m<1at` z`twhJ{Q1X^Z=e47;q~VaZ+?9H^7FfwpYW@TgHJE+{`~RHr#H{vzkKxS>BARK9=vC^}yAu@{1f%BT|OKb2YuscXyB!6 zt*DgJ0+32Ondw!Qo{WIWtHqdBOh7+Vvf+*a#i%r_m**|@Y-%5m>d;!y0$sDztC#R3 zXdJKv?87XJwbNk301?(B)eI;-ySU@jhWNs;?bq^MEjw??hXWn_Bl32Gv5CDxePmD` zLkQ_|68Epc!puds(xHu%$WdBJ2Rn6nZ)dc>*oDTzj08UBU&};2cmQ-kF0zf^!VHVk zlwHTzsY%)0$!NxKi9U?agT-urcQPOMj`nwt4|ex<#=Eoe+3CsY3C#SR-TCxjZ+CCn zJ6ud@KDAiw8^0o4wL3dKI=FM|%r<10{jjB+GH?uVAUmgi5=*>+Zt! z@)DDJ^^D{=PcgU;^n|d~(+kqGhs3HJKdB`qm19OH2fMifjObV-V5xDzHLbWFoe`EI z-F02ucHNx0j)zR}bSTiGlM%Cu1XMWd+5e6@^kS(I_yrvbcwS*kzQn>&n__nrnCcxU}8c~!GM%l5kHV+ z#_P>Y*sU>rY_KX7>xKqvYS?QL=IAzt-Dba8Z|TL!us`hDgC?dq6~-!T*M7GxJf3KG z!Lpr57b)#vjkVWl=)@zylPNUzY6GtW%hy}JFLtuQuUPwiKAc4*K zvUE+N%dnP@)JjZx-OvhJF;)UAV*JK@$q-WuV+TA5d(T0pa2h~KWvJdtoJ|<&)k~p<6_b7`6PB`3-}WkA z9F2fppi9fvO3W+DN(45F!WXqB=S{U>CMuS#k;gZ~*d-Oyx1lWfaqSf*{6b<;47nr+oV^y8~(I3Gs{W(mSU+thU_Ycjok zS(8guxl*gLFro-Gl^XS$WmGYUEa7sfDUwo5R?F#{QpCM#nxa%nno_}YnuexT72E>f zYI4prs(4H<_>E8k-BAPX^{w?Av7k5V-xe%!9W9UwlBr7Ra1MfX^#}9<<}5U98l0R6 z67ORYE^yR#*t4DpdcXsjL>S{Jmy9ODzCL?EL2%%IdIsq zq;kQ%xh8_$uJe&ZMzAZ;hwObBce%Clop%E!KhrjCt^EMnSo!|O_rJULhkt+L+VACD z4D3`bCcv~!mUtt9wLq9wEIHk-SD7TM-E6lS;DmhKhgQP9z)^y`a62MX$*>2H3XYO; zQ59E9h3HkC4V5zCkdO6qgKolDkfH*6y^dc6MZPoa<1O%!v3p`4UE>!SyD$nOfo)LO zw^huW*dKq^bR>M>}O|vIJ$%bu#E1;51dUeP~*4tf-ccz2!paaf{ zdZ9mTLv&;4VX!2E+i5x=Gx5JHDp%swAg1swlnp4lc%)3!r{=lVTTX|rygt$UP8@eU z=n4C`gTAeRsM|=?PqeLrOgShOktyE>6ekQ`G$}+}-y|$0#;+(dD)QAj!FVQFwV@Rm6~VFww6N~PH$REgQP_S23Ad^DH(dY0?fSo~uK&H|`X4Gw9O~UA;RKwI z9T(;p$DbD53~Q&HiI&n4Ixl#cv=0+%oTVH$m16quhozi9fwp{w=`8=2AFt3K2Vq&_ zKi{5=zpEo(AN<>Y-<*8)^DFxDC+_>#zxwL$^4m)U;cHCcsx_Q*uKt{FuYPrP+LAFE#g`}lwqd`ft490(2`qJ805J|M<%HwmBMyFZ+Shdb+KO}L>i>7J6v%<4zVVsD zzJQ0WXo(7aL(Y9cUmyItaiS|&%Aw`)|9`+zUopeio&Gf}6$*tc%W^=dzx->r+nG$} z%3EqSncqIyKV9_BZyi3kcXo0A_Jg}O@0=aKe0ss1!|}bn_M@9S7k6)--?@2le(%Y{ z^9Og%9^SkC;NI=W7w0dZJ%084>FXCyfBN+P)4NwMpFVv3?Be75w;$fU6v))OpMLxV zYyUG2y?*)n#j|&>UlO!>^YZ!Qhv#>1-n(`3;P&yI)4jWA2j{m>aOEct?w%iy?;g)? zpYER>3?JOP`SAXo#}DtH9_}dlFqEf`UbIDW1f!DHE7@WyjGeKli=PmsqlzLogqjH& z1-jm7_!YfTGJBKu-gLlB1O{b#waDar{f536b?zO{Pi9S6wxGkIx!X|>hxOyJeRI}4 z=+~@D99BJR{FhU8DbrN5EhW{~vbLOTNQt3Y>Kny@SsYuHF_$LF9Yg9hY6Dv}D=FwA zn8=|PK%Y*D{2--NSj~mybO7ovq`6+Cdl&QrTTU~rY>87^A>r$2xrc|n^MlTVgATgj z&Z2#O&^?*7;tZpZ-lUX8!C(x)^L&=)uBS>Ai8WWt;ORE%a$?=wwXe!B}RbfZ|E<4o9S*jgzGlbCo`DbiMw^OmyL(^=h#5pa3Op#a8M$CQqz&6iK^{rK+H zpMLrAPrrQr<4-^S`R9*+{P_5fKfe0>;_j!XXaD%epa1#Kzy3G>^ygnbe*_=?{Q1*A zet!L@&#!*^`1di&zXw=aJF^!ATGefa79tDoM#{Q2FJPfw4}_q$KeZ$5qW;OWD=?_b>i z=Rf}VPoO{j{7--U=}(_tzPvlfJdIaw>G^i8$Vk$B7&-xy%8OEiM?2#OC$qhdgf}%y z5nGBi)f54mX0=_-v}*+@Lv6hXjum<6nLS;}1eHv{0h^#P98cQ@ep?I;4OZN%7b8mA zi;N05iuH)=^o{mGsL!FciENr*edU|)oDYTSmjZ@XiEvb z5Js<|A9bO8U?|aNN+h*)YRzQBTd@FvDzNM6xPCUN?|0SRRt4L`fxh3Z?sXK{elVE~ zDGlAlR?|#{;P7@ii7m#FR!m^bVl2;kTA7GjWMox_btZ8i+Y(+J99S!c)r{Z3HXAI& zJg`oosyZYvDPK0`$1uRCKbhF4Q|owa9t>)Di%vB?Z%VVKBxQoID#4irk;Dqzjx7uS z2?r>!Yc4|mPX;zH1Ue04+HcJI^@F|nu-{>5n|noowwo|kvr$~c2W?v!e{4^L7wX~Ob$2<2c3S?7eiI7994%tmc}KI-5)JCpu=V9!P@X9la}=wRpe&C{Ew zNBfKU{_gBxXS6%8_UB{5U-J>njAp$S^sGTgcT8niiJ1taHSzAbh`W*sF!QLyWJYQ! zy)*6}?)C|9?M}K4jql6yh;-h>Yi2@gz3ji~3oL1PmE=3a{e63hNxcx{?0-R~uJEbH zt~(3Yjw*iTKsJ{kj^nuGU{Y6vZ$Z;CgZ>`hrcc(hhXQ-LN0+O|cU@2JaZ7TXq%P^E zz>N0Wgr)XdOIT`fS>4Y8q`szEnaI?=;S!VL&X};&gFSAYov$IPJG0A+cU&_~yoEs4 z@D{wd0HKyIcu6=iDY%sA?}%cEG|#Z^V2wDd>y>P*lnMa-KmxylkxHphm3f^rEsZrv zyO0~z%+b&|92yXS{d!r>M$uWBh&vVBL_eyz2&O*_v4&ZtCsf-8$99`$r(yP5tai6E z9WOmT>eXhgGU&BO!~SG6z*k*M84H&R*tdH-v-zaIJDcn;giqgmJR3Il_jVoUzWH=0 z;>%jQvmq{sTUdq$6TM+-ZQH=TU>?(ds@ocNTZ3M6&})gT%&ktV!OT`l2477E-BG{O z?{#|J7ObxrD~@^d$zUZL$;AA*L;xlzgb7AB-8Qpfql_sdjfu5ZNj0>*oQuGs$IK-$ z@R@nFirKhagwai3Cs@nw^=ovppsUm>_*_J;{SfiHEtyHIM-V28SgSWmm~Jp}JCF^G z;h2w6$&N`J+Frp&2#0c#wNvS_l?!9W$H#JtLKUWFRm#Ww>-m^lNRn-cL=UX=RVF@% z0m;&qp7o6z47!2!C>{eA{(2!3>v!x!k^Fpr);ro8AM6Zwr)cvL%v-duZR(k1I2H4w z9U`!tJ?k+)%kWjQ(M;6K7f*+(g(&1FUZhtq4eW|pNx(!`3Q3LnPpVo>I12`;@HXsU zCn~Y;4pD%mismXgsK_;2bdsv;<(6%>Y{Syarc!9P>{iomH;it}=ye($ zv)pUdJMC7x)$I4W0`zQl+l_9!1+rNyO>fkh6ug5UHq1^Fyjllywi|W3ZZamiu6F8G zn(@v0pxef9z!+)T^?tVnoe>@B21 zPgrs#<*${K?YagjG3=w;>*Z`5N<~Bz5`lPxUk#r5s5fRnCyX6^#KL^ujcAbWW8`P|S}q=7rtnT} z(6J#EM}zKwUTF34Z~!?8HUKx+b$w)47Nh2ZpnT_G-q)p^SWBSCRw}qvNQLD>s*;Uk zz$!(|rwJt=SBgmxIz1C%(Ev0!WDy<)103hWTFJ${7&stCWG92^s1Kb5eIpulgF^zW zWkG(}TD!KndJSwN@}MtaDQ84uMD#3m*ia{(+EA3OXo+eDnA5u=ONQgPgni5%vz|F= zX-?qCw583vx|2+!R*c{vw0#JcXml@V}d&aDdUu9rEXspA-2#>x| zf<%Sk1Kq4vh=8n05^~;_lJx#=Df70r(=&Gm4O`8^!kV1j(b;m=>L7G6=|Geh^&gJk5b)D) z|E_?TO~4&cA=@n*3XF{w^Qj@{@QZu_OL2uWJ!BSt)A3;2Loeon3T&}>W zDd{}Cgy|?Vaujx0iR4SDk4u?w=>M#CAqmd%ZP6G5?PMVJAcTNxPolGCx zJ$-op*7@C=cW<45UOc^c{^a4st-bTZ{*!zA5AWT2^5FL4^V7!<&R#x!^!(|g#~0^M z9zA&W(xrrraWuP4K>H&7s0I(bOKoNXZ%wVE0WmCM zTZJf%Y8eK0rY^HCd%YZM$O)JbFsESygNA0gE#mt+R<#f9-{?3%E~bJcv9k#sDF7m_n!qZHrmD90n?WKutwSZ5P!e`xG> zs%9lwNcb=b4Vi0@i4uCXVn@q0H47rm*#xY?F`x7QBBgG04vmC?qF>i_3z=)a)mQe}4Xt?;rm2&#(UZk01Z>kDvee)2C0* zZ-01s@#)>GUw``a&;R)ApMQS;&wu*)Km7UUfBgLN)3aMYe|q=xj~{>i{OQ-9e*FCL z{fBq2J~JNh#mCoAf2Qx%k3W5Q_2b*;pWnUs`Q6ixFE8FafAs9p-RF<*{QT+7KmX~c z|K=b6_#gi1Pk;UuXFYlQaDU!b8fvCd&BD|~cW`RY2`{i*^k^}8`sl%nhi5nEmQ@P( z_3W@-=-0BHYPzlGEh$c{lZF{nOJatuuoxeck?XlYiEdMVH0iKj>S>vto}E~wp_#X( zxSIAV*-%d8Ly?#zJ!F=^_F*l@Q6Q(hI9OmGd6bMFEXUw1Jv%b<6RR+5R(4y`qE*31 zTTW>CP?<_3`YWnr1Gqb5XPDQCK_yVO(qVU;WwShZ!kw-}T@xh+BINtxvYSO|~D*wQ@f>xlr{99Z}GU`K``l8^KZn&J&P+10a_lt5eIQJJ|v z7nIUIyjLc&t>ozd59_p)3=|WAa*7a@nvaQWDJ82C6$zN~jcNuv7)rDuBU=tm4f81v zE{%F}5mvOJ_fymjwr4b7aI4#_9q#WOEM~jY;ql@A{$k$mG++P+nc-zEiz_7krBoo# z>u`ZI8Q8!8Y}U$Whr1_-i{t$r41|-t@$tNUvKa5rNAq!iI_fWWrbjUMcc%M`ozvsP zv(uxqlf#>*2cm@E{>|eB)9vj{V6*Pd24}}dP=4pr5$=Atzu4QI?Tq_76G8*9X~+Hc zbkrLUyR$)KF>W31?cO>&J=kCD@6PsjCX4CdaCdrgFhAa(?@kA;dNu4_cNBf->vYwO z`J_ywoC=nc0lkz!qoE~jUBdgG9_}9R&Cd46HxI|h`{Vhj3zI;UQ1G%MXEEB({(}Ru zIF3$^(-S^U%dX=#WA_{=>MEM=3Yl^aKD_BVY!SiX&o4ouC8l$^^BZzdqyp1aJveqf zJ9j;MAhwq~S2)zuOINAK_guH;^rG5tFOegV155F-FX1rf%1aVHSqqhD)ZGDnrU*+- zTo?PUhX<|)`EE9?(y5cTu6im46a-KeC&a@okXKvaDgN)6## z$2?HoR=#9Sn|DAebA{-hfb9}qNOnV zdvf-_MJj0GXsF#Ml&ahJ-_nSE0?KELfffZqpL)yb=$Al;9#8gcE=^!i%P=Y=|^m0POMtzK`3xMct!B{iz2Gi4E(wQ|C zG$}+7Y$03+zrs&o(8gHmjsZAgXEPh&YL*ZbT%N&EQM*YWhk=|N8+g4sARZK z0D%C*I12Ku!B!L&BjGUY!(u1?DE2)Y*Q5TeaxT%b^u>(nHBS$AP7XxiEr$KDS=TG2 zY&0G9ren;H=_K?Kv3On>w2*R81F8ka!eBNTutFRZ3_|u=K4Mq%EZHt)YI2@FkGa@o zDgAZ4JJ?JZ=j&nLRtN@pfN@N;#bESquSWfwkN~h|`=SnGlRkR6RyC805thm%!ZAPd zZG~a{dzj-KVg&6Bk%G(8ht$tnV+tjvJnU@;m-CPNH(8BIy znAyId-QktXnXp<&sD(JJVDwHZ;>QWGpqqhvZsFe-;7p3{j)y$CR1^#l4SM4tW}eE# zgXvfhieoAoNJImvSSS+oCL)1&$QKKGbE#Mt?bh#L%ZRh4j%f%F+%#oFEtj+LM388d z6Sx-(dYE%9?8zsC6s+HTO+A`&iDc9v(F%=B^7*~i+7eq#4)EjH^ zI`Ny=MGm#^w#0V*#&_BL{xH7N(be9 z!ZyeQhE~a?B22j@(528e@nwt}#(sL&GZ8O?n)C5$A#PMsV179l#++4Ga%wphWvbS7 z408~F3nD5_{s^x4Y z8!KlbeE3pIucVg9TuF>vr+<6diqu`}#;8+1VHHw~Q3c>yE6 zS?lxl>m#PvvuC|J23ptFn|g@>fVt2?;QF)mfBWIa(gDiBo<3f8{k-n_e;Ka-chmL1 zwHd_cgzP!nE9eU3!cfHc$t6PUp;R~(@nH}u`M89>DJIc#kcnV-t(>*YcEBHU02Ifr z{+0x2^7S7M;`}Rs=4-n8`|Xh>;)B1HuTT2w@9O*|67+?>`MW&+oAdwj?}h{J{L6pN z&+!%xeSJaaZ+RmD34Q%1j*Dl$YNFplPQ)Xe%U-_tC4B`^;hg39e?j;b*Z-H$sO5X% zq#thl%OKGbLb|c6srLnZ0SU~uO^ zqELVFhp%*9`{FG%-MN4J(~chByg?cF|_;mEVc=g%HLcyfO0@tyrAx91P; zo<6>Rd~tXG(fyORFPZZB@%hcC7k8gMe)#y}{+m}X99Zh}$9GIZ^!D}JXXo!>clpb|&q5 zG3|AjKv)79NhfBQ(RGo~rsOy^e4kN*fQwTNa)nDT0Wre~&xj#BWHt?A5OI$lo+#v0 z`E4qYmL*&o@N;@8>Ju4dEQgx!H%Y@5nM=cic20Wq*?`5NL;EA*r&C_ZhQE6I>fNiG z*Eg46y?OD~8+0D^{`HHOSLYW;n-}||m*=}LPd4A(9DaCv_5SUvw=b_QciSg>)1&gMv*&DHh!$nWF2$?+J(&@Js6zLmKBcAI1_y@;quqYpBxiffXy z;0+?AC1>l2KAKg9XT@AvI1+WL(dLe=5rVwRQ1XdnC1=|-JiG|nb)uS;0WB-(a14fP zlrhnL7<3_>2(IHbq77iks=$bTX5gYk#KADztm2uJ90O6U0_jW4S(EZGXg$c2z?{i> z$ebwzbhlZKN?{Id$ZZHZbxxxUqrw>#Zi~`qQ3Nb9j5Dam9t(ZmAZJ_ELgL>ZuZ!8iGUr*Z`X(1Mqmeh4g>TosWfoOks!$R=_Gsfg2|H$(__SCfSKHDRsdh_)QR0j8O$CCZJQN7v_3;! zQFtTJ57F}x^hV)^-(`jV00aU#2oE5H2Z)hyBh(1VhomPy*Qu#7-IU zC#4p%^>QA1FjNa*LePrQxjrm3Hgrk?%OXEyR|aj0fE871&1#h8P{mk|kOyKn>@_}p zi9-Zt9zrL#vEc|Zg`wh^YtQvE4uah_rBg2iu0SqeFxQ?@Kr_h01Y}>8ao0txRSK4Z znE?hkg7`9~0Y3&HEbFx!voRlvrujspkT58?dKpV8M5ACCZ(S(>DfijxooC{W72<8` z)(`sQwWY^Q+LDk%)5wKhr?r?(z$8;I!&HzjZ#%Yj7J%$J_mztne?$im)au(Wd8zdoz#_!NtHDZ~7p_B8}5|)toN*AKvq7?ya zO^EQsI`lo1%!&CDg-?OR4sB@Dh@%9V3YZmPs~i>rrGTze$t1)jGi53T(+FG;h)W^^ z0;_=G@Hwjz^v#DP=K4?YYG^ynxm|fSFo~$oF zWv(wl3k%t>G{8&5nHH7?;yc!{!20}D!fp1iZxl$oVBIF9VY!RO$;<0(G4Gv=+>Ip3t2?ruUHyZm}ltH(} zX*H;%LU_M$E(|o{S7$}UrSljo@CwutHms6%;!*$^RHrfOcf>=Uu*Vv5>cdVQh6$GO z;6xsJQy3`9-$vXZ-j0W^tqv!HFp^nc(1bP6FnDew=_ zZZ^HbqLpdo7|Pb55Fq@gm-?(4Ah#K{(sUT&1_3OaP9AjI&QD6P5$c&BcAibSM)Kq$BQ3#GVQ{;vPdT z>dePn*{BnCA;D!+!CF4nZI+saShJD?R;QXzl#&7bJeH1^fdk3F1aA+JK&x(-!|inV zy&f2hK9}9+K__B3+}s#~12SHZ)9bdw7=)#YxI4rV2LlrZS}fpze&{vHd}i5{@#u`$ z?opah6f6bX^Oc2v?Lk$ke;Zu*f7lk@u@(-W-`erP0TjVm3oyGWL~LAUBpjufBPa1( z3`(I+#@8zZMwJNhV?M)SRJ&cldsvDH(zinOMzFkmfGkf;d1FVngs9AhL^K zGXSsB```+9rx3!2 zylW!TbnySK#cm;qPt~SwTbR(@PdxaxMKMuL4FtQORv(e62SimB&wBFg>67OVk)Th( zqgx^hN}s4f{We69n%`Mf>e;712^#g^$Af+)-6KTz^gC)W-6B)>;MA|Gz$zik-&OMd zUJq{vmwHI|<-bJm=I=VdJ$(jC-9k{mCfRJZdsr%)M#yQua@qVeX$6H&&>ZBGuoK=svJBORStx0!2?jP@Mf{?#6=}bH2X{WR|sh#f4 zx2J=>`SAR3`|9lQaA&+TAMH$gTm51?3rjE;ZJHE35V6pfTgHV+-)B*R01Tpa(5ehs zl@Yrth|DPBAgCyWPz%cEApa+Prlj8-Ct>VC;v%F7*wi5phH_8(%qhP<>Q)0qoWK(+ ztQsMTqi7Wc+$t(w*@08+%E3cr%-bh6;tgRp;d(eTwx6kx%5%5G2+s>O>(_j zS}GO&ZmY|p_S&>ool+;~1B;-OaiH>6trR3=vy!iuan%GBBJP=(P^bhhnNI@-S}Wst ztQx4H%c=ub9>j8oP72&4s_EKPL5naX7T1piSj7h=D>DdDNkf6DZB0#TbZgj1a7edad|L z#7OzVRKnx?9eTfAZ_z1`3FD&s9>me~65y4+dXZhlb*Q=M#M);FS`~J!*sPVgEZSNj z`Sn+CUfo>0xw&}%`sTx%n|C)S-@Lwfdvo&g>iFf=+3TB&*Egr{-(G+F_1ka1e*eu^ zuiu`IuTQp*_qTvvU7g*WZoPhS{{G$TufKZz{?+B1>yzvAotw*}>x;9az3tu2+0p*) z@xji?{^rHe&eh5Oi;EMu=9`=I7pJ=iTa$zB>F#{EGwmPkZCzg+yu3btd3|wxadNW1 zbvCP36Yhu;eSW$0Xb^`gU|Mn1XX`er?P{UdD7OkRcp^$F17Qpv*(l?{&mfxI%i#?| z38G6XF1id;qMi{*N+2>(GKo_s3Ocj~Ifp1bbK!jvweVFXpGIj^Sykv1j9^<_%B_G= zhRBo-VJWsvC$T|yRSRJY1g{k?h|(a4e^??y%_arBbR0V-1%|wo3+O5_3%Fa9f5dDM zV1Pf9aModTm^EULRqM8Dt$Kx3CxweUO>&=I6R@k@28mh0hDLDcB`8~>*K-lboGzm* z04#{Z3@l*C=ZyHB=~y6>06D@Q@;YK6Zvvzgk4>)>QnrvTlR_`!@afAS6oCv0Y%2(3 zS_y~fOmScrupA)iHR}~%%RruSn4l&SjD|z-RuDdkVH(ki;G=_o5T#J8B8F5@0T`{x zh%cLrWs^}5NI=ZaB%;|=40vc@bLD&*3=Kjkh!P2w1|t!=ZYdK5&aYX?my-TW*q%#9 zK&l58vyh2abJ1$rUrh&FHDClwz`!+tN32yk?Pj~#fK0PqgG{SlZr975X06kzSF(|E zHV)S;XJZu*U(2OZKATM?QgPstWBF_VSAi`5DU zOZjYi;JiUfhuH(3okH}KLONu~w8;_kSs|ajQb^UyxpFR9%cp9EG%&k`RJfGGyj`zQ z37NoQBlfNQPK01m5!tWMJW8k*>M?|$hBee++8Sffy=iY@RA1;7Fs5EY{qcA>7&DY^ z5e45+M8QUc5}Jjyd7C0LDHg1v#~`(WBqk*KhR`i3wKbIp4a3o*nS5YK1c13WJ4_mjPHs1!F zp9o~*!AvZeO+-rBWFeOVF(w|cCnDZLCI&q)8TBTke(0acc$DCznRFtOfP4A$$!GxT zkcQrq-0F9>yZeb8;jrP->5 z;Re$k!ct;}h=u;$1jPIYt<}~*rhNumCNUoaSsLV0)P~^GoCZnQYc{HQAWyvt`X8;jzvsL%z#Gr+VqWTv5}8eGr>k7+AhU|ZXz`HP|bKOxW*I zN_ZGYf`hUykX(Q`4v>sQ9Mg!I23!#Yz(PbkhJ+v36{%grhsDAyV;CiLtAgb>%K|o~ zUWzBejD(;$4?XXIU=OnvD$5{3fl@l;1#AqphA!v1bjX8n4ma|eV1<(S%?iRc@L+ZY z2_JeX5M&VMLqBLs1VcgPGI($~kHAs{lai7W;2Grn4H<7E>QKR=4+QJATQ3wcQ5QzS zXIPAyIEelp1WXAm6~ZlX`W}tI)(>45W?h6<304I&e=HJ=hrQ9D2V_^T+XcttDUnbN zjt@8pEQQz;^!#ur7^h&VP%wltFk0$?3>-vlDdJTv=nKJ>U51d`1NvPQoa3*6RYNX^diF`V0(JL4vb^*L!#`+@B zOM*s5ty`6d2@@?wXqQOMi9keN2MyboH z*T}{2PJzf9#{h_wW}<|*p%gMv?GCt8gA8VyfWr{;6N~kzKkm21y(XZrOK;Ii5YVBa z1tPpnvnyT!Dvy$pNMam>FOo z_-rb81e+Fv$)ZXZ0$XTZ2+JHIQ|M_9J%~$qOd*HPW1;~g0~Mwg8EB%oNIXnoEJ!S0 zMT1`+bIt3r$1zT>A7-j3dd>4DVj=welMI)lc34tjKJ?g4B6wwtWigA=5L{CVFoZP1 zQX-aG#4;)cCbdYf5a=r63LI*%QSz=EYLbOF;!x)7Un9?&zm?txFR9_9{lF?+y z1=C6vIR}KLfKRBxQeH?_^9fYJuH-AlY`K_$?pMs`inzB>E2V42R5=sQ2F}`~@^|Ys!3&YG-iaQHo zb1rO2diB*@q+QK)YPoK+(kz5KrC7Hd@7L0^er4RqjJwrQx6yADI>l(SoNLv}z|aCK z4w4AWOx+)hi9&p+b4d1K`sETx)VYKn-U8`kLO=>3so#{yZt6Nz-JX%++eD#J_jG?3 zlE;J(dDl3QqbjpR6@OArT^Y~CMt(>LOX0!yiNd5PqRxE?NKpiZ_s2Ya0`w3qx(AOw zp*x+a-vOC|gBL%6r9PpDSj=a;9?~;{@BFTS6h-$4(LMc+uoTepZwE^uGW8IX`lZ`F z#H8-&e(ysfujcOUQ}pD?<1g;gZv{(z@dXgNJWs|4tpdVQoqD%bZ-Km2$#?6SUK50+ za<^3*^_rXGcBh(d=0cUYvylyKPy3T$Z+kx3-kfeuM_bd;&U|uyd~kJkaB;GCd46(r zaXRhQw#U7bqr?53?eml4{q5maFTd4{9}aRC2U|z8=I*$@Hy@oH?p~fA?DPx6a$sDK zAMLcy54U$_gY8M{aI1TEFhAPc-rt^`py%n$?OqmEIFo`0Y`s>-(P`t6A><)rQ40}a!65WZ5b`YwPROo~`%K7f$6N`YIqcNh(7~z<7HOMN3;cK3 zWzb3J1}Q@;1{PsMBLT^urx9(~L0ng|kuX#o*P>u2+`5QOX;*R(HzBcy-3FOchyH^j zUTZq)%Oyf_kdQ5UKYl561br^x*Fk91VBBRf%$y<)&8S3OWw%M`&>?=Il`w$MgOyk< z+)(mpW;q)eO%TGP0e8JtOQ#YNK03$sSyZsv1+40jMea3-{bqT@rAzqD`G^BpRfmQT zl{83M@c6*jrh?9PC0)t*^Qj1afx)k}IatFw^-{YS_F3e>;!BCoAmA@4f)>NA1VbQ! z7@(K3;HOE!g$!&{K4UpzF{{N|nE+~%3tI^vPj_fVAY5ew=7dWVFiHGI^oHoriEL`V z%OLfb<#C^-11n;!n$KlR#R5<)79Eer!{M;eXuuN1p(F1LE4s@dw`oL9t+0oVc z-iyoQ7nkQ}$A_bScYBViRTn1*FD}onPY+*QoV>g|y*WQRJKBTZ{Nn2T{9t~#*?aZk z^7V_;x38|gdh_zt&E@g_*3Evul5lyAQuOGg;$f4Dm|mL!SdeTY48mc=ZE_jq(D8x} ztsl+oXj0$T&RPsLJWd|Ouzz>Kq2NTL|mna15XOaBfP~y zTUQE}(#bdhyQZBFHmik3B@cXIEf=lileuI#mkQ<5(NaDQ>|l!+?jfUDM%J*9OE>G) zR<)O#b_ZN0p7F@1C=)5^AL`W- zu1ds~gNzN0Nn)F#@(6zLM>pG6jW}qPN0fgMkuQX02umT9^8k6Fe1`+YbEqg+sw$AW$w9 zVS%XEs?A0Ns%O?IaPpC{i3;R8j6{${K`sTE7Of*u+X5A)xb$T?v8>@S)<8TqY80hH zUcjO;R;l20&pBv9wL(o?h_>@^+Efc^u*Aa>W|U$;QkX(vqHvov{Z6CTtn^y7cB9m+ z<~ohac-VpY8HPWcD`I1KJ^^cmLr3Q|@QOiP2e}=#0@f;*wz!Ugz?O+Gn-(!1HMo&kcdT4ttlEwCE}?>EDBu&$^+2(5vzg%$Uq6O5I`P>6;+}nX6E@UpBrnNckP?$n}{>XjnM zdmI**-6~+CjvjO&XjtCHBA2nOknp6a(t(^IdXnO!7dAd~Rm9m)NCZMYhtFXOxGW)` z&1ch@>q|D1Iv({UBi@ixW7kWhd^(CAhwrf1-PFopuqSMuoRhjZzpv`q^DaL*kVo0>RVT<0N1k80I z6B`6a1dMJjFvfhNf(yeCSO{PkEJ{=!hq*#8ay&{HzwtZ&1|TpnE3qdp~*zlV^N0DH@p`{N;(mvA_5oknS3sT97_g@gXu&xlL)8dflMlzibr#q zR4$!NCu5mZ3~r5HDQrrjv#;8A&+TuLeVBf^G~LImu&!3R9pGMbs52*of>Q?ei%tMUMFlmcqmC6M`BK2#&c&qwWc=aDTvW z2}==#2z8e}!=8QvE&h5;3g{sg^VzP?=zlIO^}8cepP2G}c8mY%uoS!>>=p28?s^5# z?+;6*vc!4$a6Ck?38tiev)srATD3BWOubfNJZNl92cvp=+HVZ%*>=`DsKlqk&U`%B zoQ`%jrw6;6=f`^>!yj!8PIr12r-z68yVFsBH0Vz7n*H;WZ*R|r2RrlK&B@lJzq>h|4tsms)06%A$?kY- zRI_NsW?1#*Jex_=Y&K%CC{Q|`Di+W|2Jk2OT(;A0!3+$%tk3J#$OKvm+oTW}f_Z%qW5 zawyq$1=~V`-#ImWk3kAz0EYiFpdDY#CXHC7A&b0mtcdm<<|OlfpK6#-~rZ zH3k_ht8|%wsh9JCfdeVssKCJaD&YpK`uNEdKgQC4UsnofL;|NlePE`A3&N`Gx2mEp zJ&;o?h&nV$uZcv5HKK=CqcmVq_|0;Sh@lZP-8v!EBxsR3bwaq5P9-xN^(LLtAY-L` z`fAKtkDDWQ8La5QLCVn931wGc1z-z27F3DSlLC<*8W2C#l3;&u7qv_%ecd42>3*=*<_H* zBmy3n!&rkhfxXZsHWlBg;X(^L)I1j&28#4jrpsao_&mTPzJ782;^O$`;`r4ydK|wx zKYaJ<@-4cHx_W(cb$NdJ;_B?}>lfdAc=w}kzy9I3U;p6!n-6bZyt+QUJl(rG*}6L3 zx;#T4=WkwKy?=Lga<~mwcy)d9>gE&*p#z^D9bBHD++3Z#y1ux&IJrDSSnBol+4b4c z;m#cT@QX{l>5J>bcW+<5esKlIAMS16T%5jpao#N_p?9Gmp;lqnZ7Ek-T8 zQw#*dU4!02EKtzs4{cZBU^P0thf|C))JFih3)sr1Pacy+0Veh*kO!i)VPQ+rZQ&EN zJc4SNl^mm-ZPf@#^hPGgAqcdI*-9aZ*}yuZgB9|*7~`yim;}-kju$1`emV_OJKCJ0 z`juY7G)Nf={yKCa5ZfMo`30dbA3gdKw@5f6!S?Z^FQFQ1t1DDxSnEqD4smHPB7iTH zbJswURKd95gHVK~H!>a#L|mIrD&b??D3Gr#S_$+_kRIVgLO7HR5>$eKAqH&)GS%`k zxDVb7W=@3x+*t-cR@Eilb+B8X%v0m!j*lae2Ho4R!b^aq_rzgg@y z^WAnmpNW?WnMSSHZCCo;daGV-H$bedH|w=VtpfeFS+4?**ltuCrF64i>9(6apiXNz z=)qz2O0ibT*I-*MSIdQZrPQpIp%A3~auM~X%Gqc>V$Vk%sOwZIR*IQYKG~?28=(u+@VWA zkO|#VEryCw=uhfSTWZolALp>ENF7E2QiR|N85>sPwpQfU_j#-mRVxY(BXxi(LB-Oh zg=!StNHt;$wJ3@D2Ui0k7q5gDDzGJC_~0?&T#D|m3`D_F_sA4w(`T1FkqcNbb&H9) zv|2+9>l?>)Io6srd5{wJ_;JQf|8YJ-Ajk}=~b>9sK74(=wE`7wUk9mzzk0EGR#RB$t*pon&K_N3342-?eqOex{XhHROr2Re4OkgXQ;=>*6g5%^y%70QJi z5&pf2Xdn`Bf-nz)6G$LYzats49&lg3y@??@CZ#f4LtD-vQl2UChp#zANsO?_9@f_0cAjZ!8$;8O{0 zMwL+`)2qagu^Ln+t<0iVnssszc?>cH+@TJzM8fm})u69}0KWvYD;*t6Jwdf8RO5P1 zTY0v=f^qA)j8(Z9WhIS-t0J-3C@*zH;$2mX7$9JaiA^#3rcnzt!VTgQ3!N5+F*G~h z>$HS|{%|-HiG;jfcPNO+9k4p3Vxd;87&UU>5DW@|T_=H=ic6f1qfHZIMa zNb*wN2DC8zl<*lcAxkFYRLaFvGGR06q#A|c|f+!ypAI0a`VV&Q3MCWKL@WeX15OVp z4&5~pjK`vs239x}K)A~5^to)59bdrX4EfxNh(8$(!cVKo;IdoL)l?8MEU(86=fX|l z`hKs=g9fm^RKS{xdJ5@SF%!we{n>OJ#z&=;FBP(de6Ch0L0hdYK1M(HXbVY~pxq@M zm=-hz6*Ba4o>3)4i)mnQNL)6HPGQl>bqb-^Ws60^P-l2pDUYraF=3X*moDMKB8~$@ zgmL=V8_UpJxCCS3vuF|lTPotAV=08CI6O9!zP8AuEg7}4c*G0O0!to;nCx*j@Dx~x z@pW@H6av&KwyFqLs1`YO5}#QP9B;^DL6hEqEgiC@gSL=E2VD;COB9iWu$U5WP0K3bVIjmr9!G%&G?-LA!`k~D-3*`2gq!|Lxrg&H1XS5W+9rk1`P$3f#n;)DIBDW zx2CMjRVHzl&S$MV%-T#M1g`}qQ$$sW9euTwtHx}0jS%A-z>GoMr~xAZoH-04l?0|x?UwQx zSi!TYSTy8~M*_K2w48}zfX;X*6LptT{#LVAuM#u=3hG<~8&Hb7Yxx8sQ(_P6IfZ3Y5ZzxAPesXr&M)Sr15{>;7bf7llO znR?+H_QKosg{$R-1+|om(KJA6;?V@m6EG zYs|pO59#gz;^_&0V!}I-mbsH;K0;2|J`}VBd&#bcbbA;%08T-%zV{>DflZ$f*>!t7 zp7P0&zXVI&(>);d2|XifQ=cJFzf6k+cKM}i{yy~l)`ajgJm@zOL5MyFi75KrVJRRu z>sP{3_m~vIQup-m?w{gNzm7iMi*yipOP`FL-y4>KNn_A$wQ8kqCD|!Pd-Z&;QEa4L z&0MIJ^SAPWUO6&triaz|pql6ug6%?J*3EBCdiy)`?fH0fIy^eqIojXZ-`zSr+(j=u z=chaK;ke(LP5N8&@o3PU^{caXW>Sl8w$o<^lgrcn<9Ty`SU8y0&kwh+&koKHH}~el zz0Jw>`SHQd=JD=)Z*#Oc8SHLNx27YwI9&N)d)jN2Rj_gk8FCRvB;W}I0w$BmVzJn4 zHiyIEa=8o!1M*NV6bd0jqtTWZpK<6bz}LEr@|e#W_gOPxS3c^-$X{+l+-He;%mKU3 zW6?xC7O%q`_5nZb^f~lm0aq;ro|xDS%Gnk<%cfW>|1N#+d*8dw{rdFmDLN%l2{usW z4XyCdKNMutf(^*HbV8p|>e5TJzy|5m3aJoyEO={L5uGyegRNPPrk5r;2QwgOi8i1k z0k5|7{ORMzk3q_X#(wxsW%({a36X_S7+!h~($pGCj|z?rT|{A&M&Q5{=wyl}CXRJE zB#0G{iLM-=Kckr*ff1n^2#u*w?6j!`P!pY)VODazRu!MU{^ZdY|MWMe?|%2YFpt3& z(xWfF57M1dfZm{F98@-e!2*v%)Ep3>BHBP`MZzIpj6vXpN-6~yTOIX-h*A|CZ&7-R+;QTu6ZllsIr+}?& z)@!W>QXQS6SAf@S*9wht22W21;PSO{zLHNN6|(h82{_4eJ_*-^e5sHFwzZf|MT1^= zL2?wf*A+ZeE`tdKq+gH+`0S0vXHVg|pn1Ri@=JJd>H(>zrXHC}FcJkDk3uq{C-ne1 zLh$7w8b!H?y2p3!4x{KJVnv}gpTbi2hXKLfoPD9>Cjd}rp&CY_U?v2E!U#gO2tfuZ zbqgB-m4bLcnQW_27{I`P6bhCk6~GEp^eIFYCoaiv^J+96yuH*t!bL7l5&Wc(sf-z) z0v_|8sQOd4pkOJuFI52(|9f)IqLfQR8y}*nXOQ9t61P$A&`CTdg-XnYfkrhxyoK+4 z=R2^aUI8SkbKbw2CyyV&WR4#&__T=M4a_|V03hUp7+=W5vx!hD;>{=hF^@6k#u!YQ zxG&)|Cc>V4CXq`7(qUIF4H8$eQYzHSrADpVsDrRmgx*yt7eFA%#l7hm9OlSG?1faQ zQLBK!Q^_X_sbDb~sFiYvG)2Q8a)3BN>`e-&Je7*2iJD#d(09g7ET=|m)z zh`_FZ+X|vP%<3i(l2sTP7A@k{s7DENf=Q0P>Q)w?!sPVq$s?fWPanYmef|W*-N&#t zEj@b-OVrxRBFK{}jD|^5iRhF+BM_cB8>rete9fSr8q~sATciYg$e?W+JG#Seu@c4+g+*!8-mF14xrCR1)d~>$?XyX)7A2fRg{4IGPc7k^G*XLBZd6Nka-l&bF=^#yy~?Ch zSqw@s4`Ypa?7DE!5B(;F&iKQbWCVLG+JOclp#WO&VfeFHDhWa?LR#@?C>n5L#67tCixnLm+4wgHmMHNSzjKA{xvjW4TPK zkjoZ89FGOyco7@J6bjjE7{6XF0NGh8V95kbSVl39>iQCwxeg4aT+EXQF)E)#z!mYi zXv)WC@>m;AlPcyji-G4Q4(SOY7z)gQkZ2}?3~t5Gdt$pz0;`o-$tTE^GUzl!-1s3g z<~91QYKum!N3}b2^KVkJq3=N#f_{R|+BTL%95nm{W)FrElSJ!-&P*XwL=oxP+T!D- zr>HZv`W&P3VKB-7OgZB57x55K^qr7heZ!P97a71CAgH3i5(TM#-sBQ zK|_;X7?Q-tIR#50FpX+c=w}KQzNl$I!eiLYI#{@2b%r&x2D4Z)YEp|WDn88E(Erg7 z9R*8aq+^7}^h%MG3uA3VAz*047^KK$R9aL*yA~r(hV7bLOvoW zQ$brk8Of*6Ai9jIQgN7C5v9r`@`+#};e&gp;vx81$|YfyC*P$iwPL1GEjFu#O3K$P zC))K=qnH4eqnwLXlJ0U60jzQ^UM=N;N$Aw`lR;-P8uWXePP1Bv6A2?xDdk%AG8Oc^ z158CB(x~K{HE78+#wd@w>ZN$4kg63@-FkjH8jkwi$*4bUmkG$#?ldaxdZk;-jhcn| zWY}*M`|Uc^Dw~W%gD&`2$RvRGDCINIk{IkF5=_RUutGtHPbY#&@-YL(K8#fiVl{&fI#rv5y%@E1V@r~bmf z@NYZ_PW`_u3;)V^3rlg}^@s^F1s&0(5;}~EXu#ujS~W5u3^p}-H{{>LQV11MpvgyM z3Te>qzyIo!6pzQBJ$=fc(=RVC-`^$3gCI(HX+)h^Oy(zhFD{@2Z}BeSPF_w*0|`gQd1_|NF~f~A1)i5|dGpP*3>aH#wI zZOI+*^xG0}N93*Ez8ZW-|0A$eHb3k(TD3x_lIj-2{Yqlg%#WJ6K{eUVdYWlhC+{Cu zBmH7_S{@(U{XLGte8y_F;9PaOcOb$}|_2oH8=^&kN&3b!V!`)eT z+$xM3$w@snEQcnI^!efZ;%I(;Fgw{D9By^@w` zGUQH$U74^m1w2R4kqX)qK8zELKDmubyHOqT*nqS5yDTz^2)G1vWFrJ=AH&1BG+duS z7%)kE1`!2InH3zAy_K-~qHA+HZ4E{a$n%se0SWGYo4ZR?3B0w9^)()o27C#sF0(PN z4G7F2vs<-di$-LWqqipD*I}K;?=zfLK4S?OTrP{|HYwA7b0%O(cnv_gkTvBu5#=v^ z(5CiUln#u+kCC=u#zXy&yM$eZ%mdW7_eYN&J!rb`FFt*QU;hx9LbVk9q))tTXeH=s z3U~#b1Vh3B0mlqtIWRyh+Ok&8k9iDMCC8=VdG*4eMV32POZ?P=6Q5{^gpB}w>arNr@?EGlwU}t`^zj?H`1sAzEJwlx+RPjT<=C5zgZ;m(L zzPd)=>L-VX=!I%}ae8ujetdCucyhSAw>3FF+$*L-#6=XoL@s0b>Ekacsq(i^j~{&j zEFg$a8bkx(6(CFr5|l;3fu?Zj#ZDcu6wo6q1*{mnDR^JdA<-R`iVL@qS2N<)na0>>aY1*9e@5(rdU2@@I< z4gVJQS(2#`b}IEcRxaEDSdqF|}d z04WNoxd&^g!>AJ2MPXRCfQ}0NKz+2`Bj^vpQV{|JQ94Rgh7h7fyrU-zTc^sYJaaDo?!^m>FO!$T(|} zfE$DXkZ`ieP%)bZ0ij&T6mzLcA&Hv5NnbgaC>PS@Of;W~){1EmU2;)ZrBtj}EA3{j z+pORxs9FvrF%VgxkJihXa@vQQ0{KKWAA_I$ZoAiMb(-}inyIE5(8tgh6-XMHN-153&NraDHY(j#tzOE+V1$Vei=k0qynyWe=t~?FkRCSseTGW#7GTB$ zF%_zz5-~vhL2uS{oC%=_#O03(Uw&+-zPge+;=mJH| z2Kg2PmdRLZ!8&jkUX#RYmO-PfuRMo`|IT;51NVj58)od))z!7Tw7RmgM6dt^!qE5g zvWUHkXw=3cY%zm&dAGiz=qpe8#QhNPHfn`PEf+)U$;BLnm?I>?4GAWNUgY6;A$s{i zuT`i}281fBx3+sC*4jGps09R>b=Z;&ZRPpK+7f+z8Q$pX5~6!bnTW)Q^bkok1Zy|+ z3RIr*+2dg!B2egb97h^bF-jf_yaOM>A5d1$~@F;ih;CxQN&7AZ~8Z%XKmlgWJSoQDOra2nPeH zcr@%bX2aG>Hd4walE55>y)dR=(yo?^wQ`|eEz8CH^~J~Zl_%VdMf3~C27ZZ-kzpkq zvw{cRTPb46_zZNoj82wCIyqmj5W1`epVREJ8J$)Gkln0Sir50?8oVqabY>|Jj!}p> z5dRaOi z=(MW6dTu&s4cgUMzZN8e(Lv`bwRWx0s-zpW0(zAyBr3UB5k37S5 zQJzi5g-6}Suw9u9+Z{CMtM;3vQM)u9btl7auT`xUQt(pZVQ(pyLc7;Y0u`pR zsc^uThy>H|Fc6H^bi|cTgfpl=70+c-up+=PhX*XCqj8ry;y{B(Y&X56&U${Z_`e_~ z_533m1$l}tRu}%%jplp*Hi(YT|01~XGm`mPXyGqIxcw{G28a=#N{k&&3PTZBU!F-R z@H>q7-LF>mIjuT{SSjYfz;inMEEWgY-d{(*_{A^&(|`I;zxc)fbx-|%A4G16Sp1*= z^MC#i|KUHt0g!(7v!C^PJ+WB4xVQ+r`n}%IfA%wK7bM6-i9{^Ag?R4h0h;qG(%mtb z0)fC^{Ka4V^hL ziMl2MdMLfE+r;Pd|MXA)6l(j|g#PAl{=fh55B~t?Qq{PFr66JEHa$2U(p@oC2#t4( zO#p#pfd~H*ECoaz@R2A)<5R-A;(?!+V&*0wT6`NJ|fhDtY$lk-rn& zpG)CEpJ7rI-C;w&Oo$Uvc+jt--xrpm2(EAoIZ=1K|9N-)hb36}5OVr0>FJZ_l=KJ* z-VD5;-y4?7CX+DH42f^4ai=nA<)@wU)?_#zH2RfjJMZh2!;^MyR8LNN{6Qnwq`^o@0RWRRIDw1rCW6A~qLQ;8~p1bcyTlk!A}YzeOsCPbSCKXkZEs(`~7^*N$Gr&J{5GH|IgNZD?^*k_cuw0w_V;5UkV27yz< zvnV(OreT>?0=1Y6w}6(XqzK5|*MZ7V34X%+g3R*rGL1&tpsfMlOnr($XAPV+Id>h{ zWwcU61!jg-D^!axyc%$ae8v)EeMzHI1RVN@uv8&zOZ(svls=2nu9w)fVyi}MPzc04 zMCYj<0*MUZTi6<>BWmIx2S9x&$p`v9hlavGum~XS!%_eB(Ea2mfa;_0r zXE_^|eBhaY--6W_d1$>TXqHAD>TJ;B#{g1FpH1hp>s>}AFxK?7CAj$d@^fHVIgB+f zYXgYKrUR$NXK%1JRvENq*aiIe`pV+k^7Hj&{Mszx;s-RXh+!e#E6j4XQ_W391G#Lv zkdE{#;ft;2%kzUbH&<_8UcbJ%gl==bH@Y~SUz{A=T%5i|YradQ>+=^EN7u)rtJCd^ zaW?D79;a z95ecC_Ku|H6R190VIn)I14nJW_YRH2UnV28;m_kl{z^(~8bTO|f zb78P*7&?R6i7VzN8 zJT8~XpwrgZ81xM~s>`jx23iIRVZ&xJU?-HUuCCB&YxMP%HPR~-0=ibrQWEb@CKX2X z(~8mH^cMC~@>CLzQo;qE#HbY5buy@)!+@r>PzSSGWYwSp6yQc+0>SIAEz@bMO!@|6 zV;!!)vh-|yb$NrfPFq`DUte2aTcfsXAOWr}udXbE{KsaXl?`yL!12Qn^H?>lLa3e% z09Df-^ov}p47#21usPg*cJR$T$ z;HP_J>b?Z?;ah|Vp`r(RO!q|LQzHAC?gHP}BwCjtEN;WD3YAd}fgI9eRaDBMCSS&>?}mR*+aU z4xNNUUj@;9>DlAOr;jKiJk!(FrDv;4&tXjgT3&oc=qVx0z+M;&Al2838IVb;g;=9f zL|?WDEft{K)Jv&uv)qP`REKS?QO2Ryr=(HN+L1)~pj2r1$Cx`YOwGv1> zt$MzikF^^WbSY9Vc3TxZY}gz2Is+i+oNYW8MRfdzUxk}ii`i@nourVyS_R2x*lkRQ z?QT7v3fa-8Zzh>dCqq8BPQgcCNaz#^0U#5xGKP6c!QY^-E)x9bW1^s+&k}`IJ^JGN zOhkuq5`Yy`z*rX0(Fll&ug4|6oM2Vuvglmq2HNkSAo>(lC)QDQ2v#?cGeP>*OE3}z zh1x?kEF^FQoc`sPUqA(@b^JFcIFdtOR*UFBGNMKyVuK8f0x(p73dTpNkZi0xW73vE zN*93e%%Ooa4mBZu#Mk6}x<-O-wp2p2h=+w08%M$M7=%tOUoYcu80){TK}b{GCiwaM z$(PLaMG(lPDDAI^n9D%ux@coj#73PIN|lUKArW#mWFlB`_(JxYRKOH+Xaw53)i{He zgoc832N(|}QAd>%OiGNN&R6-2<+Y_J)a&>x-8KzLRIQ{EaSS0L^vVwzplCRlipPR} zZ#)`EC8LNdg-~rO5%y#f!CW>8>w7jGN5m@Rj|M&A0K!aRzXLL{Xc%FsOgbHdW?OwMd9P%Y%kwi2E10)ggr{ht`Q}@NgyzWTY53^(@olK`Xt& zvy!h8vt$CaLRCw7TDd?bVDT8M&>x7`ZS0586QH*Pwx>&&B0S5)gAPoAPz*0|Hs4DdgKgpmX8@@Z} z&sMe2WsvzTs<2ZZaT~)9ZIA@Wi=g{CHCB&FW7F4wkSk-N;=ER)ayT4DgATY~0f#Q+ zpk@>FTY}&aKTQPUf&BX7&`PmmM&rwxsed#FyeOA#dfJTfEc?<-hC`^jI z4jF}*gTZ_SP)`~R0T{*5`C(?zqL~{L7IffVPyt`f(@UAq{Zt|b3=_9aU&tj(g>17? zZPrVrOvGo?P*kGcfDFqBAhD^cFT|iI*bB&%*iLaqb&iVE>9TQ4FkRmp^Fg=D>yDJ6Z-q_9$S>bYU3 zgnCk)@~Ds8%edd3jk~>edC;jt2`mc0*vzM+eyd#0MN=_<8lzz(5QIuZ^O+P-IN(i2 zLn#=fAvaJa;>zCXNx^aeTuMHZC}iTfm@no~Q{E5VMtNGsIwb-4C|C;V0W5{uQY#Dp zhl{935ljjxg!Hq}!q3ACe;Ho*Ipl*23tA}`ULL$KU<85jrA(s(E>ovjg;uDS^B%hi zW@mq=d>)u+$ym^IRsA-v6vtE0CAT zWMmhl=VGz=KmN!6n9F5}deq{|^0GuC+1S`12+n8pF;RHX%E~g_>*qiF+28;D-+zRq z$S$~o)9L)%zx~@>E=QG8L+x2o!>;5KB7*)8iacG z>CcA*yPn_CXS+V5dwl1!a*FQv-qWwdq<)z`g@+If`VI6y21_APwfZGk>etd|sMCL! zK7*woJ%0TA`j(1@26dEqU@F_3jOXLwq~Dnix|^f+xLY37;=^iUKJ4smO|~Yj&2f7Z zrlf8Wr1$x_J0JJ9XQQ3jXn$P3Jepo#?4N^Rzq_-$y>)SVe0sFKJ+93fiS5~NZ)dW< zJ3Bhq1F`+=Qn5u8{>XwXExZG z^>^mu!`*G*?D-rP^lS=mqS8J31J8b+fkYicH4%&&z~X45M?Ry~uk!B}60h104QprdrB#-kHCwE~Y`=+W|>8a^f=~^zE)Z>P1%8733nh>NNqB<>BH%J@bs1JT zrGO5EM(n^oGM9iCgjLX>;K%${vr=G?A^rud24ii>?Q%j3#NGOA(3%Tbi%~~DWKDVu z0gKYAK}UWLjCrRtYGiB{i^*ibma=f<^LQZeLlF?0%@XkWQi(_;6u@4X+-L{^fcU-2 z+(7kji&~(Qa;#{ghyVu&04m{zNr4_}%_^ZqjVd#+>N~8aTq+vCFy5-5RhfWV1*{3L z$zzcDtZJxd&}H)5v~nR6xC*!+oaHk~(tcwx?kU7QutES`fK# zn-oTs5Lg)=a~-%nmtN{N%FsuWitE)2D%nV*l4}&=vu6DAX#4Vb@6Gl3``0(uX9q9O z<`>6XFD{SYy}W#Rb#i^Wd2zgRbAI&d>IgdL?!0%pH#$9-A8(J&=GB|CgR9en!&z&u zm$}%k9}kizJHx}BIdt`IqqsHc?QV|tHYdmX+izZ69_?+O9qnD89lp3YdUMEnl!egu$6`Zh5mUJs)PUX1h-5V74r|sQo ze`kg<1P`_+hdZ-_t;zn@cz-^c4_bp}dDN-y&4>L~wb!b2K{~A!#_hti4@-HroJ&^G zd@S9pp+Yj4kNeY6 zFM5NH`J)~~GU&)9BdM^*WyauNKBqAj^aL@!xYO@;1Uyc^$LV%jy>^4cqIcO%9*5a# z)EKo2t6t>*E;HyH_NpNK54+V)4O%7)EFgxt?6wBI)@0a&Ic+lR!n8K-REEvmXwdDp z8w8MQqU+FZt5r&L>)Ao42F*3a=RWiMHw$Xz+HuQp%<*Mx9bFQ7c4RrBtVq>6Buy;uZ>vdWfdZ}Io zsRq@ZYNcAaP^*@@?bc+}olW}lL4A8zIoKiiX}3J?*ZN(MWD3JxtzU@`8U^ClwmO@R zfH4>k`?JYtb2ge!MsQH8UWLv)9`@>$e5+oDYE(=41}Xy&%UHHf@tyXyf)d<|fE3{{5PAV|7harR29L&(3sBDmRb6PyE6=`Mdin)r z+_bUsoX_5nAmV`47GP~xB?LS|j7+eh6EmScMCU>lb!lR5nBf&LdvB~h`_5hZrw{ZQ zVT<=C+zx4&N2E622i^l!v6#znWig28s3G-?z4iC8t(7&?!`hIJgh zaUq)ajJL5Qpf5o~N!Y8W5h!_+RfoM==Y&tr${mpgKaz(4*EUm1iF0Arec{?A{j#<34KC^U9o^Y6_23T zGjc9mDuEV%FK65P-1kn`+4y;nJg+bIns#VKHokGN>K?i##VXvUc9y(h@ z9UmzdO>~jf5wcZcE{ss6mw7_Q#1wZebh`zS0l?hB5nOUb$%lN=5sik}leT~mt zXRRZw!((oU_#6S316vV~CE_t9uNr6ARh3F_%8()_ctg36F7Gq3?X>5B}f}{>eZ2C;ux+kO6s<1H9tKnt)A%+ljG< zpuZ|Q+y(l{`XYVh8ExqaorIgDkSU6Y`|~f?m!7a-+%eWDK#GJAVWN>8>IO2^7!^&R zk#b?wzyt_$0z%Au8aib+%7E-z5e!D)b`X=|(-3K5tw;q-wOnM-sYt9hgF&lQhzeFja4_6qS$x>YSSO6htjhbH;CWGRabRXLx5 zxwL|X@p=&*kW-%l+Resr(3^~aStv9M(QX}P+CI$8lkpIy+;+2GD&#V$Xt|JqUqpH; zK-Yy;px@qZNHrTpFYKjkrI@Ja0=;@>G-wZC@*gy2 z<34aNz;aB7eOLlU{noJC813+tV|&EiJpmN!uE(=?m<7KJeNV{(TX$t)zjw-=ftHHg-_jkmD(qC zzOwMYJ5gKeFTx8yi!A&FP;BAnQOpDVRTLqrzX~rb;3UXe1*yZNmZ&AL#PYpPV=5j> z#e>;Y+^SO`;>g>O^BIoc8-{QisXMxD*pKu}Ak;6HWBMO}rG9(5M|M6d zr|5n!MHJ5U5K;PdMBt&%3x6F^m;LNszZ3oc5iFI@7G~(_94DRG7%l0Dusz(JjW_${ zK|S3n#(TxkxLcWzVKN$RjtBEWbKZhVdhvNh`;Z}(0Qwhu;?lUe0-ceu4V-`SdP z^-EjB8e9#d_%#aCVQ*)1bhtM?J2~3koSmPZT$~*rq3Pew!QS>h?1QPaUK#c~yKu!$ zbJ%M`Wrp2Wvswc23|QppcsLvNvq2M^zIywdgcYMWGb#_Q0pntTF(Juc!`k_Ak^$0&DOv=Of@>a&MkMsx$D5rE9#wkYie83?Ejql&)1BII#YVvb41 z^yq~)1sgFbgUF*7xYX!}8$;p9VEN=2<*b-Pne*wgK7GQajoB5Ykg1h&j7ouNHQdj6 zx*5-QE3wy2ZPsIxa(Jtm*lZ?7m1w6B?B;{btRI#-K4S&$WmZdB#76*kV-coJJBZ45 zoy(%OXkm@y!vPv#TqIn-Rb7lZGeK)T?aPPlVTTqfA9d^Pdg*k~esz8R=EdcU%k%4t z)7LMqUtM2aU!2`so}TRuUR|HOd3p2d=IYIhtILD_)#={p(E&96-uCAH&U}wJ3)`KK z&yRMF_vXjr(xl`oM@%V?2ABhv4MbO^O2jG!jm?B@T2CBq_71kkqjvu62t9xGTlHS6 zes;7shaNKOA8gN$_jh*Y6L`1tUg2=wJKmnO^C0z`%DF@_9V(^*hr5&WlY>_`m+xLd ztu9ZG_NJZUPA7FRE<>lf*zdnMKl*TU@ZoIyX0QHwyS(3woJ|TB)8g4Eb2ZKFcT@YF z#L+OnJ1mUq(HA?_m;0@6Z{|P!YXAM^gl%4O!86tpj(#z)*^E^Z_CW#P=A;suRYSv~ z|Dc;X?4@DXs1}{oBYW-m@hE>XDed=?-Mn{P@(l~#Ud}Ts`?qVsY1y9+7$YvtX4O9~ z`uaKVPBU`Ui+8f_jNj17xVNgo?OLFdb@{EzQq)>cI?GX8K4j9%p|46@2C-SiLqFnb zK`v-a`wdaIwwZCa@o`*(taFlgY}b6-Rqv$W+N=iP;=P<(CuQ5rT9-u=cBqC$-%cyG z*NW`5!n@t%*04OSghoaGq#WF=g*WSw!*24R6W?iuw;JJ{W(-YtGwxx*H!TOI<>0&; z+G@t;^~kv7hqLC@a3f)hx>Rwm77F38QPDRndWV(Bq+16`wNnTUYKdXH)Nd5qwPL>% z9#_KSTC|td6V7VV*~s`tt^D?^(=3FWkgvuk-Qu`cX%|9` zq_Y&U#9XS3PaCqzBX(uTuGGl58?;pkpXoCzvH@evt%aE(Xj8!`C`RqIq^q6{g}si5 z*OCdEQ(k>0U`z#V>7X^^HzmCWzeOIhDUu#w(=}ENDxg6ldyG<_S>`jzKsa>j#SWd= zsh2nnQkOw$(~6M+H7k8)r9%&_vlxyEJGJqE74AqpyJH+fi$O&1}4-y$w_ zFp==+<8E!xp~(cycJwGDkGpk2t0HKY!V_6kd@+Y6V6J(MQaCu|)Hw_?gMt_L=zSK9 zofNRE;S{$~iQcSTW{(5oVCobCg_r}vj7}+rX~C=!yNq&R@6gA*Rs^%0Q7JGe@Y61k zQNf42QOP$cF?ttevVmWE(TzPD3N0!iJ~V~XAR!*akpH$wS1GSjaiZ%KRV<_p82_%| zA}G~ET!!Q+jUmXu_7=E#082&5r4XDV2Sa(@iGH9EehQO^ub)ddT!0y)hJDD=Y2Z^GbBMx{_HWLx!er%~y#8Jt#=N-0;!#5#@2V$_?BI;}?OaTo($ zSHSOaI;=Xa%HwwVypXqB%qEN3Xf+!xCX5sTk_$*CFiV3N1ES2R*MRx9-);;#&GDcE zA`eld>P-gS>9D&w8SHOQ5B7GpK?FgasrGy_0K#y+^+LB<7-nRIru!C|-BZ5D^k3S==ErQ8hy?kuB2B>~f*5-CIo`k?zH+H?K} z>PKu4%O)K{KACdF$(-#nUEtBuwh~map^+N zhLA(MqYW{aF5%K)3nDt7xyECzfuIiZwhDb7Gn7IQbI`pMV||&mj&Z(LpMMDlVEFvC zB_W@ql=74!wwO(+N}=u&tg7g?iNI1g0F|(^D-wQF(4mF=#_DtGYa0bT0fPtZ4Q!zV zKQ2FeM&+r!RC@gQ(bFf7xb#IzcZ`p;BxSG4xodDQ)P&kVk5MR`FQWq>0guZ^&(_#z zJYtmw><2U#9E^?y*eh}#je@0AKq4m4^7F@(?iPiupr#f<%HSttfCqy_l~7447RRIE zR3Zl3kl!1@=zBhl5btrtBjI=?r_IaG)U?390y@*l~Yr#Y`3)k`8B4 z8d4N26$$$zK~FU3iG}@zxT_eomJ_aOE?O-YGs)PU$_YjWs8&ikg$RAXGZq!RH8E?M z^4}-pVpv8YYhBFU&@098IKZtvdGsZ;$u02ns}k%5Cex^v0cWLEid7Q6Rw+@-#Vi_H zz_B;bD=3$_Ar*4@T$Y&60^U``V{+I`5syykNl|DNggA>rAIvavPvpI2j>Eol*bUUX)t8OXj6qYeZBE`9?xDxm&hhX&Zo zl-H1tIIc#gkntH(K0_tti})<3#aPK_8kJ(RR%%oWrBomvbu~)aYBpNL zNGa)R8KauOwpA~+%Bf~C)~c85)l#)m>~>l(3xgcgDCb}TAM`q?E!C=^TXWREu0b!Y zSBlk?7xh)gAV{?uAWsdt6AW9t?VI{2&2;?Iuk7AfgSL`F=eO!Wygz-DahjNhBkIOw?B^WOAu^ zG8#&Ty_twJ5%%N~{!HADuFx~dbkLSfMhdxfF`ojeR|~arAro=?Oj4MN9WWc~B~{_t z@zVc#uNXxsNl}?YDj47Mh0B$Nf2Cdc*B+uFMJ)J!7FhUsaN#crK?X_?mIB!cKRy5l zqmcmLqmgn*^Z~RYF(^eaiz)dVDghebQbv3f-tiG4d4QYz;?{`oHu-#B>R>5>r7Gnz z9J9E%D3i%3SZZkzt>=2Z-p_~;-*7mj033=C+*!hd|I2^*FXUh>x!-$7w+Ue;biRvb zdJ>7`!-o%_!BTLAfB1)g_?y4^8z_hL?%g}89CpK68Vm;H^7|V-Ot-h74*ul?r^6|5 z;ytqV0G6WYHvLYp)YCg?>7ywhY2n+SxT4(wPe2c_r%&kNUigEA@tQt|qW%Zz9>@6& zB@gL-7i@n^Ke-t)MR(opAGB7US-%tB?7qPY%)2RTFobdZmYv;0!BZZ2sH}vdM@U(8w+t?D<1)odt45V>T!_# zYf)o0YVPE`8ZkQ=_JlmvfK{>IiC*tEULJMc9CcpoRFC?}?N+Q`3T(9#=d(PF}Uro7kVRJcZ?G^po!@|4~+iFB7^;o|W9u<7O zysw$@0^3y2c;>A*Ts9ZB)KczoHPXp?^AYQ;nY!F+yxi|xZ`FY=X61`%>2g*+n^jMS zncYt2bX0h`RlA&5F9)%+aelv_-|J*g$ECwjd2doX-D+O%br0vAV!}Hp_%*vmAmFvyw z#k?}AB~QnNS3C9V&B{?fb#Z_}6?X@4$I^$F$1nH0ug-Q~oou~2=)FGZyxy(8+bzG_ ztG(Q*olOewj(YFUhNqL_UOV>HUgiB>`D&Uw>?L5=4__X9eRK5ksQ+TW2~E1$2)*1Y zzT2<;@M`>%*IPe0@BHv`_=C&Ahm-cJ?b2R1UXEJYY1eiuakg2%-XFf%E?$k2vyx|& zbKH#LC!L_*C{zn*9v#1*vUbyse$EMxf7FQ{_u~DWYpWhS9j33Qh4WEruNA%+rC;tg zUmSF=XZhn^;>Bj^?eXC4$>`N){-hT_A0{uyshiEx>(j~AG=H<(nlzK`Quy`B=J}*> zy*GSw*n7QQJR2tWT9K`KXs;E8OfQE4-J#isMQ=0Z=w{s}m7o;0G*XUY#N15Up|BRW zr2@u~+mH!6=e6+hthGNZZPtR@&Cq5mvD=JnHzV_AWL)+l)?m_Ulv0C&+eq4W$gbU1 z?4Xz49~O2xiS2HF-paNA=jG9)*qsO*CmHfGe8yYujU(XX@Q%v5^hrLzZmN z+)6ugL1WCNfo;Zb(8+iLKG&!c`K-#YOB;5o6CPdCtIvhZFqTU(d#e;r2JJDoAse#R zvY~9;6>#WcK5HTF$%f2Hk1pfaC*0bAP35wvLv~fjru3R*AgtPTLaRm)avMWVy~ij; zGRgcFMZl_zI5oMDB@=dp(UqGf8@3ix{-ob**NNRGdBCo*=%lfrGv+nL{kDkD<+hn( zAy3?A3fYweUX(;#+K59PwyWT>2K1Q54_Rfvf76y9gMeYz@L>W0a_Yq<^ajnhXk`dt z=*4!e*lCo*jqG|Ua8@Grx>7_u$nu#Qh0twL0UK?Q^K1sC+inVaZ5E@(VKtaEG9?I; zVzyo_mWx;#xxlPbV2CIJNVzQK~37yNDRXn>E*hGO<%?D1=Z{VO>69ps@ zASPqLaCik5DY=7V5Q}*LMd9`?gGy4$g|ZK0+rgz`clK^c9a_v)f*+x%dzGkqe4&vf z0Mp&BTQrJNR-zQ9hz8R=eFht$wiLmhfDj%cfYdGB=`m415u73=aAeMQdu2*t3h^ob zEks2rOjV-`-3-EEY2)q1;TfrO5t+IpYzjhnea(VPMYCx{Abr8RbD883zdhhGI!#KC z!{jzAJXV#*qV$;MUW>wsv0P#w-9{;#Yf=hz7=T=C)k;lju|mud z^O#ZrOD<%i1rYIS>@+H!Xsn7(Gt^SPP9ZdEhbYR$a(#P6X^xpVe(q2VEwwO#>BHOL3?|zXj32td+vu^=i3JtuUx0 z&?jXgj*!QciMUD$UoJvjNWDsI)<8cO8&oh5L?Brx#ax|21hTF~$c3jg#YLi~0(C`ekkV*`ar$!-GD`XM?A3@;0kwC~rr`HOpP$3gb1RMc}A(Mzrdac!{HS1Jbr34;C zua=s0O1PcXq;pt}4vWER&^XZvkp(&cw7FiZR;v_hrChC2!d9zM18LMMtyZH0(x{XQ zxlAfiDdbQ$wNk2<3!#;yAoj~RAfj_ILfI19A92@!B}c+7Pm5b5D9uxU&5)n{wV&*&R8 zDw+z&|Leq~7H#>dL8DA1;^_pM%cT++dM_FZ#3I3XBp3?^!x)3l9rAln4JsA^AvPHe zq?55U#_WfK1JSS#ekNkkpdVxB!C_JKB!ywiQn4T$ACJK`+>{~}l!t@pC5jmFh2z9G ze>4(;E1=W8RGcy+g7To>9q>Bha2SRN^hQJ8STumJRM=Jsn+p-LOr&B!z%-(BpHcx8 zrfL=FmP8qCS%yuDTPcD31gtga;dVW$+rwK}CVEoexzmlJ5{1)2y8Zo6|LNmLU$W>l zvrY*;N2dgmD8zg;-=nW`HlSfwcubl^2&03gknn|E27|W3W-*!TOO#<6bM+YqjV>`% zA_7vx7Z@UCe40+evZ;kGqs(nm_-&{v<+G?gM$|P%C8E2KBNQz4D--NpT}G86J_Aib zq1(U^<1*GZR?$Fp9ZgeFQH#Fvgfdp8qqix9e&D@x=*ubzS0Q4{_)M9AsT8r*Fg9_^ z)yeq=g#e~0n^tT>XLB5jN`MhLNn|0jf(sd)6de?B>B}HW{jy)q@1x!#euTbn$)}GW zG1k!WIgj*V5o=Y(qe*!i*f@w#BRqX)f%uHJ`~(OZ5M9e}EQ>hnG7JDpm-E)mDhxyj zSCDYll^BVeqmgnH0=k4aJ4b&SM4Oe^8#1kGp+hHi8RR~TD&aMy16GVNZIC+jQk96g zy7ctflP{t2uzmjY(etN|VQJ3BgVkcTi4G|9jZ(Uni&ZipZlv;wKt2^Mq$7n)q?pGq z2kmO6+sF^P^-;fx8rH2wztE}cDJI3Wns@m(0cljn#=QLq%! z^MzL%3;)W5KFe*L}-+vAt6>mfD%fX=oi2E#lQP^|L*;+1tk{>UH z$3VJ041bc}RJwY|igmBb@M3o_oL^blSp-+IPPl-w&OKyvv{m+G^CG2*^$>VRlmZmdfl^ZN)2~Ye zmcpb`8Op`#_U3Fh9`5gKjr+|G1_5ntPKSefX4-F#dL7E-1g10eK+!0}Y}acR294~n z8t)dP?NWTw%uSowNh{Z@#M^~%uaYbz{LO5jSBf_Cp?uVq47n3wUojo6=VQgB54NpR zs*;W8VqV|?`juoY8%4K&nMfraZsbCZe4v)~!@1)|dV*KZ?~GfATf^;PwUPD?s_}Uz zzcZ*DZ*~u7?UQN!a8#Z)lg+Gmvs;|CvwMTm!K6NI7x%{X!&!5yUmCRv(_v?8(%&97 zwtB^3Em=;7cjx`>Nqf{tb#mTr-a9IXb74mz?rj&N-9oTmid0g*Rsns$S5kqf*HTV+ z>KT6{~zdebRq-F?(^)y_yxSw#ujD?8zW?G0nd| zXujAgzuGQeObf@O?9D9qVqQ2M=Lh9bBkkI1#{2R`LK<`0JX ztHbdh|KROE|LG6Dd2{;Va`NG{_u_E$V!QI~)%=?m2On+@e){(CWL$WE-1+LT38$Qn zGu60tTnW#ciS1tQ#lhg)tE~?wgTr2GR`y?@uRh4mvlRg;(39(_!j-UVU*myxt#9 zJGnx{w%v?wHNxXsZJUh!zFf3Q8?9yRw`(XD!Ts~MeE z{G+00vl*M!!n0ZkXxd0k`mIJe*Dps$mB_S{-`$*yoB3J4F>mK*jl|Xj?b@cJ-sW_$ zGapX+%|Sgo8aa^2w5u`!Qz2|AM{SjatC9_Ls_8=9RfZv4PFG>-2|A*FYXYNU z+cPM8SaU&B)TsfNX?-)@;m^i@H*Nlh>jOI<(1vH5%}w6VX)EpG`!Pv9QZ#iU*z9m@g4@f#~kC=-_IZ zkR5L4(o2BB^_wJKqeO!N1khovT`LILRbhuZV3m7JGNW2z(kW~Pxx*m0n>2o>$*Nac z^h%RPE)}p~3!WjSZRiZDKG7*6d-HZu2ZBu9UY}B%qF|}u zLOr%H$YaIOh>t>}?yj8GFBHuSWgF4GqF^Z~CpuXXGskaLV!yH|y;gPDZ4NjMKASe| zwZaPxxJ&_uKIqUzJl06S<*}%oM!CzZ22m$q*ZQnVAG{Zv)^1cGE+gX^QRPiwP)k94 zl?d2!5znBKc&u8xL2lK_Y&xk09Sib}8i`ROwi;Cqi_T_H*fm14lBboj6oL&okEWMm z2n*tuje$V`gnX16Nw|6;3$4tg+;s`+3K5U7B92tR5OFs|Ji1cMGN{B_Iae#=ffQ}f zDvWxSRw2+Ug+{elD`l(2Y^zT0v8df9In)G%G&idHN^~-gLBRupo@UdETqcFfrq`(? zXv-sH@L6lL)kQvYO^6<0Hc-oeC>o$=ZXU>iXhn`7#Qtt&8!xx zr5u%*O{p~USQ{X5fIMl_OK|LfSZ-0+G(r>cNDX(iXvH?Y+-B5R3~G2ByHNqd3e{Dl z0;5J|*2>5;@^uQnSu3|2)DE-8VOE1wiSgz%GMf=f;Eiak1{IvBS4nO|+9`xEth5TT zQX&AE9G=vqk(snIEeuit1707p2Rb>zZ3wgpOd2U14;M6Q_~RY;^_fkp}E%B^}C3A-k;XoNr@Im23p9&p%e zS|U!P&vFv36eMs7A8o-DVy;3eRLMjdxd3JfjBduTkXK`oa5&&kC1TlB90Xc82&de5C?4|0g04&|i8@VwSJ>|+ z&ZK-HuQd@3!jT9|MS~uUNjs`#4t`DoSh=!>XY$kIuV15VB|i( z8;*xx7~l_`PX!|ZXE9naIPEfc6^Lb;d+ zttUkNomCDUh&XuSv7qI7Y&v6OjY(fe*J%tiJtL}Z%iN7c^v{i+NzvjGhBgp7Jkm)J zld@~WPJO_JQGJYZ9%JpJNB`Rz{F(#@eDTE>&!0S^Ej_`geCyAlZ=f?K;=7H$f<}Cd zRgB8Fg1)8Dc8|Hfh@cgTn2DH_06GR5(@~KMp{r=5JQ#plDaWJ|VLTk2#G({9U_vm+ zEGi7QhmNHPCIwIT{3*8EFV_=FzIUgf_Ypx`d?I8af(Csat?;;LRtYV`z5`(yl*@L+ z(XiUkbbQ9DfVB=|f%wHn?I)FpDaN>at5PlvkqrTsBf^DVHP&H>%d1OI9tLorY73KmtCXPZ?#uafqnvG&)3su%Ud|OW zF%roxp3g)}`EUSEL?{_An;c(D}13*9{ zegN?kKI#O_CeuM1gqK05-tRQqM3<_E!ByIwW*z!-t(0q`{WZ#ZAlr4Dm3AeK?l0@v zVW&184Q3O#aGm%QY{C^bXXCBebT;gc`z?&IJ^;b6-KZ4v=~zA$ZW8S$xNN16%_hRB zh!+Mrd7@-4jXtFEDPV^}Nnnj|%=*g3Tr%PhIF01H3o>09F?~Y&{@L?|(>qv-vf!hL zQkXg*c6^Zknz!)(G%x%-fXLKe5|>hc6+!yT$in}d(1HrXn&N7Nkp``gk}>{*bOkzfEld-Ua(6#X`^6fB28 zDwUy_D{PIso1@ObCd^1hScz+eRKHnjX571-8>;65t(>=) zb+yyZX3Evix`tUtH)SmbbTNlKYLog+qLf3Hb;(l>X~-;+urM?-aE)OQxAgqDQxUew zLH-A3(PNTkedtNSZb2Lcr6RCS#2~8`3-Ddcp6WeLU4m$CZ0a_<*cQPP*@6UQ$t;BXc zI4*h%VNtD(%AQzj(W*?+2=7zK#X)-v}up_VwRtj{hQUm`7m+Pi@lttZYF7{ z)w~+Gnq+RaYj4grUmZ_h?X}+>^S98-q$1THtt)e!WwE zxm`RTM6M_4m)jN8>)ELu_Rw;$Ukc9}vEy;+c$6De!rh#ARtw+k)L)+r-d=9LyWW3s zGT-i`LCmfdl6&LE(WE@7#SZ$}X39Cpx%L~Oan`99Z#d2Bn8#QNo3_fn&9e9PX71bb z{`-s3%dOJ97CalJ-t1OB95uf=Zte{8S38ZX?aJXOeK5@Z`1SGC(d=N>IG>f@?$$Pk z?aPDd)$!K({`A#B`(j>yeYW|-uWo+&qpyGR!w>)4Pk#8%e)8e!aI)3Se|Dz9^4+V8pZ@ThuixIB>~9_HOn>;*`PbLmAI>K)_Bxl_&3C8c ztKII4lg$sWFW11@CbbCqs~S~y2ZgP6a@t5t+J!;008I@8ZKs#pn~(Yh|MsY{ zGpfzIsGqpEy}6BcozwlD&4V2bbTA&Yro;C3q_;b6>`a{3|Vje@-Yt3hp zzkwnN5b?bpb4s`F8jCeDNNX%zT1?(Z0DdI6@qTX^Lmra7?6V9YCu$0efjt6Y% zco;>Ypg-XAg4C3W`O-maz@pI0I4})5bwZVp&Y?ZuSb5^qiTqY&(2ntvqb|MMZU*7g zVNyCRT8CNhby_V3jYY3E>6A(-U!|0pbf~GJQ!C&AgI4WzyCUIGI281G-43hCY%-Yi zYO`Ktvzpvan-#9$wnYN4%V5x}-A=pT<8)bdz+sy;B9OZ61_eyfAl!OvI-^>o2Z2FN zkKbuLQJIu}VLn`_1W*Nu(hS1w9YBL%%{@^k67;H>SQu1pF)7rOauFPg&?ov(1exlW z7sgG@l<$D5+x#6Sg}~E2azv1+N@QWyU1+B7_WBp%#HAEPRNd}DsI+dO8(t__$WN-A zKuCG}Ejor5xzm{{`fu}4-iRYC1@*jltwkwYWpoP_$3iE#&R;84RMJk2NW-&rPbJ>g*qsDI0!3(t+us^u%2AAFFwCY_Zl~p5z zw`^4Mv=T(7pv#%$Y=act;-EGGeO<~!=Z0d=I+L~tLY*AsGzniW6-q^1wL+?p@MI#6 zOw3iv_K|FuLbFEdby))*o7bjw7!^=|r$ui!X{aFd zCM6#-4ui~VQwQ88IExsWawL2@gSLtu!8sceK58xq*=sz;3VjtM;dQN)E#cBY%r?k5 zDiMRvT&1l%*U9*B7@M}l*;s~gq$KgMTzawJs!}WE>&wsJNO)w6T4dFVqfQNsEHfGh z@yu$0P0hEe`4+9zq?LidY|}}tI++EAl2Sxe4!LN}3WGw$M`T}%ii#fmsxPyug&>r| zBVfD*IoGV@!4~eT7PE+?&4&jBIaVoTz>T0XR*l%ElRzQ*#uhOsB@49(@^lQVDq+DS zh9sb)cPc6BbLkaAlUia>2s9FojL(qpHsk_^PR54oqemM)Vs=s<>cYUQ1aX?fK$q28 zqF@5ohgPy_1n{~sLI~a$5j~@fqnENl=Eumk7^{H~Pij<)Eqb}bYINGIcGMSB7&S5_ zym0|jD&{L?Lakf?WY8cI2Mq-;OREseB|;6ltCOnbVwFrpP&1KEDNxG<&|zd^o=Pr) z1GFlcQKPUJwK^4As3oA2hrQ`|2zq@<}a#*U$v zGEH(03`V<7>MLk#0?=jcfd#v^lMm9en~<47i8NqEqK z>5zv}rVz5U1m9E=PorkF&`G>9`OM0I1;h0~g<&*77ln?^C&7yer1KGb`ppR{$=Se& zlQ4ZDP>9j1(GMDjhE}Ug688X+sWmivq#!D2Mlp9oB;ZPgFfcLD5Nf?K(1K6OrNJAK zK&$dFEVYD$0M@}6SMbp2Oeb;Zr9QJFU{i-2x`@jVacW_dX(U|w`U)y^{i+nOsk-Gv zuU$ponx$N;Rt6RYqgB+(#Za$V?01_3)R5`{^+`n3KKiWeblbIl zr#>Y4L9adRAb2#ys44x;`3RV+`E)!Tk4D{Qr<@q}8ohSC)51^{ohHWP>$Mx*X1(1g zcWMQ+%bt#B=pen_t`*^cZnHe-Hpj!k2=+BAqd^x6o3--Re7ZTEO!}>HuQBS?N1bxN z4HYlsGKpL|-l!lZ)u@z8xl|?@$zr&@L_QwKCnNc6vY3gMv(a2SlFh`afGm|_F61@? zyXCjR%q;er6(h#ulY4(s4_r#YmMVwL!5ugSKfmQK{O^{9f8$2Oy}t@$0KUJ3OmN}< z6GB>0i%~OHBjrIad}yuuS%NNp4@=#`C3i^2Jy!CI-v~=lMtt|WA&@{Ir_pF)v1nyw ztEdM#d3l}p%W|W zI=?k6h00ufKL6vTsB)5r@(&+A{Mn!V8C6JC=~sbecrYYr5vuimr*w-%Sn5~0l={b`PZ6Jw^pA~60o~z5pWphopj+4oF0%AXIMio9AJXrP zOg)8ufgJ|6%ZN%nrI03|-wBqA_}rDaV^~I~IXS;E>o??s=Acy>ck4S@-&P~G-HeV) zfxT92s}`(A&1s*moAcBXwnoy{DTF%Z7zn-ntQ~bsV&=3*?KexJ4kct_c3H?QirJ)m z`jXY855vlBk%g_&V$cwGDC165%5O;ejY+>L4Kiva>ApJN+@CcMC*_NI_F$0R>F1B8 zr4I+SH@lVB+vV2>?U!d;XVXG86PPp-ulH)N_Uf;9O0Ty|-&}6}=-tJ;)4};9e|0e4 z?3D)9#P#{Xi_>{Ek5Q0&<>-f-gKsZ}Utf-29t{rW%|WXa3%aVs%-+`I;&^v!+&$c$ z49n3*%unE?b-rpSk;O*7BtCOp}(aY`f`N3?nogUVb(?R3(U~+kSaCLtC z{>_U&{_(f}?2mr@FaP)_fAWV2>wNX<`k(*NkN?FV|M=zk_RZPOo12U4^W#7M@els+ z2j9H7IK4jJ`jc-izIpfZ+pk{VTpVAV9Q@=5@4tPy_s{hUcY>+%1=Xb~0 z>s}vpzdCGvIGg<8`xig`=K3e!zW#8%|N5x^;b!OjVEppp=!aju{%1e>>i_n`7f{KI zquHy=gP;E3-M4Qqe*EF}PriLQ9kqbx_|Z4-fBJ*>P`7X1z54Lx=8u2$^}qO&pHMLY zzq&bjchtGsET2w_r<>KQ!_kY2!)d4R`fC4R)@)_myIt(Jg@mtFFP$H4zdYZ1eRF}d%VAWv^zUH+&XIMMho*eCr=AHDY;DW(&(9diSird}HPB%LrHv2{Y;kgINO zxn{<@+erC>K(CjveQt--qylj<;#9{xx?0LxPr1r58w`PAw+_5frxI5*?K8eO8N^iSECTCm$J2DCLVHG4RWIrT^o4qIuMzX(O^DJ;u(jmFewGRjzT&d z@K|FZZ!F*lyG`+cE#Wsu-1=NB8 z*MTyd%cRt)l^{!lRIHY8`K&dCOkmK;;QgA6I+IbaRw~?1M-W$YXMYw4i6i zRd+^w#J5yJw=n4~baJRLl{TPf@r)5O8N))>h})DNaUTqXry&51dLgM@Xr~uO)mud> zbZ|~Us9FqRpn3vL_Uds0OF?;fVL)Ih3SgoTtB+98U8Y2W<=yKsRU!-X-W@CjyL@;f z3K2`H7czPzs1gO1rL_c>G9##jxY8Zv9e6wHrU;Ocd*StoAM|>3p$kt@z;bwAszDH$ z(x8%5C$un#FZ99-O&{Ki0^q1)QZ8{RF>GCSTR4b9 zxEsWBk2C0XT8&!0g72}LAZOCZpgSReq7p)(M$D4&H%tVd(u$cfE)6^0bCBp3`KW)f z%ww!5g$$65wMv;*FeR!LGC2n86sT1)sgS8sNQ?%p&0+vD8}%lQ#BNeMZAP13 z>i5{8w__N7o55j_oAnB-L1{PZtwxPjim^d3f~P@a*2%0onL(>`85MS&1O$5#p96w7 zpTiXK*)kDZC1!!3$YZXmC2Wva1*|o6gsk8}xsXF=(l-py-9;RzFpyTt0r677-@r(A zYKhrw0tQhjq{9SgRinKsR19?hHA0tB9&{N{M?)(y>!3-MFc$0` zj(hYDliFt1n{*1Df~QyVHBy#Z%2tY5N)ZU^=(`Ov3IRhUW|~xd9op3jVDv#{^jf7s zBjd3dJT_e=L1EZPR5|467oQF<5knBNR+LhqTqc2eLnVen223Lw2^$eNjR-1Zf}Vp8 z=Fv{dsuno3LW_zAHzoZ65jV3&;=p-c2p+qR=vxUrM1#e9)*uY?O zxRcIOy;`G`MT5R}tyC?f z>cvc_UT&2$m6Wd#v$c!CNgJeTADpFD%A7V6ybXuN0Noq9It&4f3t>0Gvf+h+XEoa_ zW~amEcG?_fozrf%TaD0>Ty~4gZnawsI+a|blHp`)HbMy;X3}Y-A_1Sv5%8cV+^P`5 z3xzkUh8Im#N?JKzCE-d1 zOtFB&=W#%|e){Ceqc6Xttt<+dYs|H0Ym1NI?i(vlg&Z0TVG*0gp)E7l7Gd?;Sbnnn z^vjLqr(EWSSb!k~#Ta^zCgn5WxnS(0=AA+SZwJ-x1WZ`_(DL0V^IKJZ8>)yxhoQP9 zJpSWHUs6t^zW2TFe($^Ah5y85*=^(jDF6QVZVQPq->omRr;oqnW1C>dPzq==?z)J* z&f7p2{w$2d_nb|`K$FDX8|q8}ap}u2^B6TUsDMt!m9SSuOk%`}VfdI5_L^SC)k)ZL z?z)UeGbzz(59;hT$n084z^V#4G!gV}u7L)JA-VYUF#(`%6V{9*>Zi}9X;)JHcD36m z4tvec|Bt!B`np9n$GeB3+GHfvn0&Pc=0)HRYz~i$ikheB7H2+mrEd zB;ZcPBDr)jpGg!lv2s3KE-dAkise$iRxOo_IiN}@UoIBvm2#~tz*W^!F%>CB?4@kH zRw;E_&GB$B9`+F?Rjbyk6`*#bR!5KL^T-=U3;|o^LKT&hDd$s_QUM8MHS0jNauE(i z*{G+4jHx3RE44E6&tA%%AnI6_B(~9v2m=yfZ1wd*k zD)kYTnmoc%KyZ2SWaZzgR{jrm<^OF)^#9^l{)1)Z-&>Go-wGz%ggLjp_6+9H65U*e zrH~Ya<>lwnQp@lK(n>=}$49v2k7220y)nh{cbv&aYu9 ziCFZxW4>h~&@%H9@ez<8;nqX=m%~zDeTkI#{uC^Ae0+?6r;kM~(}g&s-{0RO&`L-Y z0zw%cqA1%kpv(}EzSgJCLH#3i(Z>#a1dl#}N)H*9mmi-M9(m0C>G20biJwY9IN;~u z{~utfFaC$XQa}Pu^y|0(74!fbK?z^|5f1gM%g^b*AC~&+3*-atzZaGYdA*gSrxNB{ z8BfAVr33a-CLRxYB3?^59c@<%^+GZmbxeDeawb|!x+g`?q7mI27H9p!xLcm~8wZox zq~PwREUh@-i1U@WIlyakJ}Pe4d1!giq|(dQTs9uQ+&bxM*n;sok(X5jEV_uBDMXzf zhY4PnPlRf@*r1WG=X}j#uw4jrOQCT$Kj}A1`BXj~YgO}mqgE&9T@35{{o8q>L`|GoR^SdAZ z?eE_F{%-zmuW&O=9Jazoz0Boqb$^h}hpjjB!n@1)&GGQ+u=~TS)0=4_8FbXkx%Sn| z6TKFULwz`@Urn+Hjo{TVl?XX|jq=s;_WK{+e*gLgiaJ?zpmYA| z=kI@f|K@1c8I(iEqvFqRZ+?DvGwC-fh4ibdle^>o?SA`oTs|D+?)GZu$Ge4urUeMZ`yb!kUYuN?9lpIe{cyAY z{&M)kt3|JgoMHXL&p-V9{hROK-oLp!dv!5;dph{}-Tleo916KS-n}^9dv||2>eZ&5 z+{LVPG%QsM$$lle+Xzp}zFN{YtA#4rNV{1%SWFHVT^`iqkI1&T1T-&TTe$Y^;OTS{Tf3)CFCpd?uZW zN239U&tdY|%^{?O;)n(X>m_DWz~@N@?W9%;dtU^OV@^jd1BbUjD&$OgSss_#D49to z26h5Y%+J65EgW`vy~ILD-6nm+=dhU#ZaeR=@(>I8orFe;Da9s+FdJ#9XiXvARLM4U z8W~CGNdgxHX9%0c>=OK-TX>EoRC-`YBO8&S4H60LuMO-nU?ZOF=nNmU1{f6iXH?-En%sO3&oL;)JIH; zd#D%!wxAHWZdsT4#lG3Ae_=YFs`J+#?x*y?cy}Ro*{ibgTiTH;Fg&JZbuCa zJj`=o^?8oA0$+=Sq!gH130y8?AZfkIMB^~e>=xe2n|w|ya%#!btX@j!l)!-_y)%sn zSBv!WO+vM;lW!uNMK4zFyf9(gX59`ZS%r!B^sB!^c7k7iBSPlGpBr>CtqQU3T41V` zGT^IK$gGkA_^fs0fX_!_R?2NmB~dHof|tl0iD*kM6$5Roy;v12AIT+~I+aL< z{IYNCtUur0Sl!-SfBy74#m=fq^g_JxYwxrHC8@^{lA@Cvv@({$Ej;V7aSk)X!p^CY8d-y# zr>sUCYL1k5G$P=iX}y9qXkc7Sw2sD*H5rpZi-0YyM7*;q7p=m;`K$zzw}MA>3YyT8 zm=yKDN+uU?0>`dZiX>aBTWiRex=OM^;VMFl@GpZJ_;%pxUv6){TzmO^duv@O6RBk) z>E?5dd<$0b*2{0T(lzPE)6HjJB3U-2e0%L%;J{&%7r6Qjgf|H?k1*nxY#lP|<){Y; z<)&V-1+8$KafAnHWHhN~X@iAlNR4EPQV}{0%rQNtG!Pojpk=gTQX{4bjHL+%q1##$ zgA;18;6h=OhS5Y$9z?LeAzeSoI?N81BCTeljc1@+bQ(GQ!UoGT7|e47Ku}0$hti4& z)ef|j((I_jtCG!UFu15pwG`?=DmQWDMrK{U`AoI*9FC4!@ynOreX+f{CKIhAJ;aUg zVBX5No-4MVYsIU$d}C?u2dad_v+yg3vfJmQbd@5bwc%^-zW{tqRk~j3Pq`r$(l_Ay!GifTWilWQl#Oy z@#4F+=ikb=5hw`+eU3C|(GYB?#K@)+bQg|f17WU;V75y|>yphEO35~ipiHuZL|^qV zNfa<)a6uLisbLBNj6mBjzj^-T>(!UfR$o5<=C^eaBeU{E-t%veaUOU(e5ynn&m>zfw^yHRzC==8&%gcR={LV!fB6*F z9$aob{~B(I)}P6?U&03n9#`(H3eDfp$Tnby5k_AG-EP#&I6ZP64Zo166207b_7yUl zg$zO=Z990^i|@W#eg1S~eRXSNZR6!r$gm1|o_)Rc^6A#r#&_R-`?r7lw+L(aSO4mN z`(OX{+LJG(8{Z*ODP%4UsXDGb`C{Wa5~LDJMq*z}Q&X_@$#>S3Qjt=!38#0-`ghXJ zr;?2)Fh)jFZDnyxy20p`6eh=2A`Vv|0X<}*OJydJ9}+kQAjN+Y0qZbQzxlhr`G`O* z!>=yku#puGB`)sUpfD7Wra{nbc*fm)u&7N=}!h2lE3@AzyB31B>*pi!K6n31$p9ofTa*_ z@<@LcmVzJ_i>sB&fB5(R{y+YI9>Rb45C5TBt%^hoe{nM^96MJWXL2&#gJ9)Y1p zf*%A7ZEtP;yMOoZ{^Nf{me>F5fBmlz0kYX_a7zL&s#c+JA@M){(?9)FBobMADh6gphKNTPy?mk>B+w)m?NJjxx62cckZ!O^=i2i93 zy66)LiOcX=`mdp=PmiM#9(rCFlwaTd&0n;7zQl2UmG~EEiR1in%3q-WVVKmCe)aZ0 zMN5$Ak5ka&zXG2AGW|oSI_PCiYN2-;k-NOl+O<5yOY7uVtjoxx!$c` z9nY=~CpU+qtApX;d~i5zACHP>qwGO9-KnI{kER!k=JBXBZ>2j~cgoM!i}6mQ&?sk0 z*?2hMa@kCon7@_{1+4hEnVHo>rI0Zju4UH1;e6Q0M}|fJQ7?79sJ+^&UXN4vr?a#D(X3w`^_oGS8#sz+z|$yY zU}EHhrmTuNJ1)n+zwq0lh^y*_cw?4r@NQ4 z#@pT8=_LQ^eD}v!r$1gz?G!X%e|mFrJSrTGs&|LOw+GeR^WD=$d$*ro3=22M$dcF5xPG%+ zdo#-%*Sxz$N5Z8yQX0glsJG*8L&DD8s}2AF|MW>jK~!aE#Lb7z;N>tesRrNQo&5fX zyYF8ey}w%A&hl6L-Sflg$=>8>-aDN&?#~x@$1w4R?_b~i?uWNOyuJJJ-Q5pwu5M2! z*9X1(^WD8kZ$9e&;iq?hcz*`z2lLUOk-Oe&{QTk7{ngRw!SrZvdUmvTeYSUUFkei% z(_UrTtB<NUzt4(aWIaSP$_+BsVa_=$`xm{;tXDtY?H!M+i)Lb4kBu9#Q6;$B zh#rsfr+e+Q{o%Y0fgZ*iLf7-phJh{F&8+EIrYILt2+^q%odbwUH z+ROXKmGHD%9JRC4TIirxfJYXi&a~ecwo2o6dDgGZ`lV?z0fj8a?QuIls;7Dd-=dw| z?Ukp4&e8r1*6gI28dRdaTBg&i^*Zf#z0_@##@*_?U+tD6ot&qccE;T_uH5l?J#xu5 zoZx-D*30YNMs>o&=0eEXU)Im0kP`zI4pnfFsukkBMzPPI#Nvf8s#J$2V*`9 zaF1463H+7YLORW)mBoT~(r=@pUfyqGtjNBP%0$SljK*(gBVMb|VTALj$)K^&8lQzo z2A!$6KOXi(g6@#l;k9!fhdCArc->B$*@P@F1U+Vsf}=mjP!x$re6~c`AM@F~CN1zz zurUJXtP#Ilx)3s`x6Qa1`4hAld@i$**0}Aw*X3~8EiM}e+=W)HU4cjMhXb;Cu}1pVdfs>?XI( zWH+-&M~2owx`|X;7%d4LlyVDJ0k3(s#H2o|TdAIRsR}T?AuQkkVhy{~)-8 zo)V;%mZ;XpI1rRm2%s1Bsw??`kO+4lmG}bMm5g;|P+93$5IB{#AWK+&H4<(rKxG&N zAte}OYN{llPD`qUKSjzRMAh(0J-X6}qezGp%xo=TDZ#E*-i$=0>OMqJas(HkE&-W> zJbrfDWyG9jLo|RSppaE&n-y7oc37eRVUL9g6L#?qR_(HKZX4^iP)-wJW07LJ5tk!b zHsI|k9f7HpGO9sLt7Bew8sg(h@ua#|R zRY?5`IAlt_O)9r^!0>N9<#jt&LJS@BDhWi6;diBETxC3NRv94@d2;P#2L&+gN-*(m{gCcOi1er z=V*clmYC5odO1yKScWpP6scFygc{e#Fs0Z)XmCtP;9B6=6*7rJCRU1G>NGNgUWF+| zTkFqsYT3@_8dA5BZ%MXSSD$_b2@1)!c=H8POjB*^Wa~RGzj^ZYZ=OFx?(pD}QX}Ce zgHA!HMYK+4q%b3mQv_y%1&M^V)C_^)Dlw9lq6pY0DO?M6!Zd0VW3ZSw+CV^ay)G*( zDCk==Lr`iYQK*q^5t!Ua>sSNE5^98Ws726N=x~bA8d(El&{MdE=SYUcSQ3iW5L$&n zD~5V1rCUmw2s#yd1~~S$=ihC-e4-SuBS!>^ZBiq~)e^OQ2l{+t{pI@VGo(+akczgE z5h&^Qs%+~y>=gtu3%$Pe;@g)`zutKHop}8_)y{JYNm*_qxhV3pkx+Tax`urFf(T$ zwNgU0O+%tV4--SLM6i@bx(?MAZ$8K5NXHY|#!_u*B&$eYQndxVE3MsLfA-Du?~vx2 zYUhOj*&vlh)y@MN1rgND}$|-(MdT1U0O&v5UUm8 zNMUoE!W2*?ILa6>+0Ob?LM!JC7>%p-8U-?@rr0p3k$NV)2tE_grBDIb9--#SotLuh z=MaIeR*F`)SHIg?gW-6h61}7}+dJz|G?F#wcBIX>{*=;)gawEYF%tG|G&JilbIhaw zB|+N0(n`ZBknog7E!%wY^ed%t$WUmbtAS?^X z&KgX4@y-S;d(qa~_QvYw+6&3{I=mEtWh4&Opa?z8QoULN-3#+}d+q7^i|;mHKHY*P zvx%%hN!Gs=t$rh3`*!R3SDVkjf^m^s(MwAyXN9E=7I{Io`_ldi*qNLvso z3<{>Ko*+fbmruWW@%-tNCr|$V@BjW^|LcEk!e!YYp9@=3J|-LD<6dLZZ_dWt*;Fi> zjAl~tTqaq_r3$%hwOnk}%8gp7Su4XSXldZ7R6wv)y;`c~W7SfwwuGyY&Rwxyt+cB7 zRwdJ{mWTazuT|+Z%I!w2Rj;;N4dk$|g!BQS94NMyi`H{+C`vTzrD`b)Z|St^y>_eH zs@KxKW;s_crb_8>DW9$sfeQ@eQqek`pvncv&~3sAs!+^jin%mYI}r^fqTysbl8C`? zG#QH|;*nT16!5uyUUw`Sjz)r!kS~=GZbbsgSSXc@rxJ0ml`#=WZIe)Jn&cakul}dK z&up9nAw9lF#l0mI1-}acikdI;Jf`mo4<3Alob;W3v$Fpsx?I6k$mreH+Ou!J`5Fi~ zaH{p#hjCp2w&`C{!if?C;ceuK<4BcKK0AObS=o8MHc z6`#)w7ax%kAh>+-;`!m>pGKCa zBjl|Q=wr6eGQbG@1z74!LBi-)iGPlM3FZ8PzWAe*CH;>Cq?Yun3Ov#;;GsW9@c6HQ zr@u^p5tjN!pkE~-2|ol&efleyR3@1mGz-~?tAu=oB4c>MPE^Rm0<~gxcRaj2 z-n%-UUY#7A9qs}XzBg*j2CZ2$35+GMmy2PenRazjR^UsUS#LeP{G?xB09QZmbQ{HHF*a;uk9G$KyW?sxb#s0+9kdP?<2N_wcc=5qz3y(mdN3$m z%xf11!^@N1i~a7^ZuM+d*`0JRj`z>!jni3ucUW)ag58|6ne#VGsX@C2g~!9*aKKwF zW(LiCJz+iQB#%0=YSbKc8SAB-+s1XPsa`#sO9avp2e6ETa=03|IcQbLs%s>ztvK&t z6>vtuHPWC3J8lGS2C@BSWYWs*_RH6M&9|4+H`n`@$J4`ke}B?Bn$#{A&G$&j>-+;! z<-2-!bNc=5!B4MGe|&rW{_gz4-RbXtxQ9N!Kbih?fA|j{Zhm}wbGA1)nKsU6wY%ft z_pdJR=Ecil@~odc9p$cfD{y(c-`*QFcPE42egE#~53f%TW_On-|Mc_sfB62@K`VMR zuESWjtJ$m5{n@ZRZ6>FU=s_=gf6%^}q~BjHu8+t28b3A!}x%=b&>HWp=q+6YL%a^;&%e~Ik z@$APpH?NNSr{m()ZtdOK`2FSL`t;!X?C^TO^Xj1SDP7vtAg$8T;<-`*WV;g0z$dpWN_J%9K1^oO^%Kir@Gbbs{Y?cSS{-o>JMe>y!HHRhet``hE+UG;x_ zb#Qq+Ukp2Ei~jB9>BaHl>|lI(IDBos>i``CUT=Gpzo@vFq z-%TD4io3ny-k@@QG&(<;bt|z^Ik?}94GZ2`D>CNoC^t7D-tpVi1n{VoPT?@>5o^H`xLSm3#E3nnDYa7SahgM33&PiUgo)Dn<_2&60{OG4R%#K{2p??Vz&f}9iro193AuirwL z6rwJ&q`u5hORn@ANQ$bFU8$wfWi^4Ys&ag#0tE3miZ2NnqRJtp45$!%1g-4It)5S_ zlHgYAv6Vp;!BRju=ORu_^5ja(}uT;E9JFk^Q)J&{2g$RlZm&{S7|X_3uH*iB@}$@<(j!SxvLvRlG_S2XB#@RWn6 z-8Q3*!yQ)MX*1b*gN4yrIn2spHWo*JpQkluj?gMZ3h9noDI+nJ5m(|G;FPpZqYfUl z@(gnAM``Sw4pMkp14QfPNQ?y;AE$chv2ib%>s zuNB}PBg|DJW3ZW7r-i|lP+KXD-17nRsWmY$*>H|f*f^cTOdBbk-{UZ{q+SCou1KSj zVHyQ6oC=v(CJ_P0i?qFP1@O{(t!(YZx1>%f1x8oC&FN*BO8V^EFEsKUrDSvS<+s47 zYvmh^c1I&wU48cTlW)FQefpI~{1VCCD4`*+3S<5Z8&IZJwuNk* zV=9eGE|-d5ym~cd%?DUYvMoWD$X_B8QL;6)2r=r&j?cHhQSCg(B&(>gsvVt5 zY`|cKD0Rwhy=t3K?Pw+ID#@BgzNJ%3^;+m*nO-a9^m3@VRw>3Y1=IxI4t%&)v7;2P z<7zQ%HAY&8Yvnpjsgz5h6(){FQZuxHWhm$wQjaNRB1|Qt2t7+;q+YGnD0P^|K;V#> z&||n(X*MWfCa|QACNSt0n#A2sI}+d1%2+~6<1nS+u7=b~2(^gN%AjX3*#>V=+gKf~ z5y`iaDK1jAMW|uWkt@2j=ilzEeh0G`##Ad^(@54}_QH`8stxnpfIt};gR5CWZ9ur2 zghbZgMJz6-5iGR>aRHV>ZokZ=9Ej6Pkxn$GU=28D(9?Q^L#gEw*iLyy&%q`MpHBIv zMv7GJNHuikHWWo^kSvv6u_ao63K1=`DTdP3$lK$Zc;l&f;~6ryuiZg*!FFCE6J3fO zWcFLJ1zR_b5Wo$Xs5)f+X`9iCkp8$qP9W4wEElgo`R?nd-~1LbED<+KE24E$h%5z* z5O$`Ok*aNkGHb=KK#YQ%5$x3h5{KH0tmCUiC<7)jk}9|hPa*%FtjFl7jklNRT~tq7ZLD{exCK8{l#QF70K2!Zsr2HD%)dbRwEhM@zYMIiDiAp|&WT5J$POZ?Yl}8Acs&<-{ZoAR%w1B&* z7PC+Sa^6=#I2W9M5d2h#AnB({0bx>|reKb$UN5HG^-8^%DI`O=bgZ0 z#H@th6}=Kh7yZd)sf7-EC2~T6L?y+zN(56)E!|X#)?pHGtZnt>`cgLPS9r$~mV*D5 zB-|2UDTsY0wzG@~IL;r3Ut&5RQJ&A~qt`zne3U|Zh%eEuB~Z1DKivEj7b^D4nm>ex znt!4Pli`S#IT1ZR`xurPeo^4ZJV47rmf=rl{zxAaA2Te&^6o?Yk7(If4<-B&ExYR> zGfH^~zx~a>0G9eCn)BDvSE!s{C;pGYq?QQL$ID;U;gLSahW;!GCH!f9y+28R9+rYz z-va$fWC~{H*Fu1i`P;|vFM_3V>CCWGkB9w*bgY<3rePn6N87b>r;;AEN+)}hyQ`C% z^TVs-`T5cA>0$t^`0=zgulReF__W^u4z(OMwG!q=HrOsiIvH0b#MWcxQi#iXsf0rx zHETL?BbEI)C9jdA5)AuYlTEH6U)T>m2{w6N!GK0RyjEtv=);t zQaY=pfIA)c8;we~n)db@`Tf~&F&)$^`SZhBtCF1!Td!}aY?i$E<~fuiLB~?@!Y)eTbWX*Uy<*qLXp9lNPU0#p%SYw7ruwds+BC zZNtgj$7{z~`&m0UE4i})CNTqi-Wt<-QRux_VxAok8kh)@#hc!_|y9zUSGYtI=ngEKi(Z& z98Ul3&+lIC7B2^h^HJ`6R=rx(E@$Q2Js6$#(PH}Z``16czBrk8Utgd6@BjGo&+l%J zy2+dU&h6>!;&66)Fg;#OCY{`%8l83WS4ZQ!{l=@4!Oih-3Fp1KI%!o4*{G+Have6q zy_|bc@RuXzoR^vx?E7U`$f5^6$4SYCX>-{ znKsjlR_dp_!;@}oPzfzMsoQz^?NJ+g;PP;My=Zgf7p_vbfP zaQAEg`GE z{q^46`N96QcXqhD7`2WkwO2>&4=3F#D0Wib@1z#Z_}RRD-b)M$o=(m)Ya}lBde^6W zi*XBv9!4;q3Xgl$VXH7|7n|i&*lp@(UE{p75jB?lbSGg6n=zN!K)}gcxnA^Bc`s3q zaJ`IuQjZ-@IwzCnxEzFHkH+=GQRQ&n-yO9NCasIT?)Aaoe78BRM<$if41UYLgF)`N z6PuO2qk{LK9UHe&^^~)lb&pDcM%>y+*yg?B{lh#HP0sd5 zr~8wW-R|L}wiwo@mEf!%8x#ZGym!{gwrT}f5wmu-R|xFZgNtr*+R4rO37E18mmEB;AyYRl(ua<#fP785oR!MQ5WFE=~oJl#hj+g^;P04|^;I zE2R!Os0#8KYOf?*g{VCrb(FKAq=!lQjA1+JVw6rs2?hEs`j8C|nlZ0Y9e0v`3*j;$ zL*_m!;j<8Kqt;ByOnQln)7mLTz{Ug|MxUJv`JAzkFXUvy4l3+oJ$BB{>EZ!Bh4!5>^fDAy63~uY)(j z@Y#6-umlKrBHoujKBj^1{|}QaJLny8TvhThs{FjwK|QQ zA+%020}KOa0QNv_B9&$a>Hv(H%&3eUjpLQHBUMqCbz<@$?nRf7K4>eDZGR#6;gFEHwoowcXm{ANvnrJ&V18S?){U^1A` zxE5Z7M1%-TMe5ZC0uyv02}%cb(*Xx=Vkr|ta0ZQuAx$g|E#fGQH!{4Dh*Sk>((dMjuBaNCasCJO8ccu8{`ipNi*H=Xw&t-y?5Qfy~Uh3tW2>Vb;Q9V`L z%O*hi98DSxTBrcRs-R;LBBLZ>0_zkAqrv4or7;q~5=((N3h9$VB~2_t=wNuZIfmjH zy$SM=YP1LHk*7s?9OfaE&)`Z9m%(6Zr0b&fr>st@S8g#nDa=XP&MLf7CEZjZBT8Gi za!V;%m5bK2(haB{Y}9J$x0h1PHhysc1VNxqcm>InTc4Md^%obd!RfuRkyaEP7 z?RRiav%$jXY^=_1#LYD3u>p zT#%1>*i^(>%*OJWSS25?m9q6xx?YF@E7Yo_d+mCs)o4_U^-`u%NY^WcR=wJ+*O0X- zWWqdKs}vixO0`s|6_U+bsn>1}kX7>LsMqSX8|`Kd9v^gD)l9HjNSE^2rPDnmT2;z5 z^U-ELQb&&bs@-M{@BCt}H1BpwZg1D;4I5Dxl6epe*m4hQ{-SU8o40;Q9oNXRD`bdM%tkyJeFH0n*b z45lKl+zPILJ^k|ky7!1TEdi+|GPQV=llrK~hfpd3u7X=j90~}Yh2N$2A3O-ZD}+Wa z3>9p$5?FFbdQgj8s8V_*4Id;@r`O0d@@@EZ89Dpf>iQDq_$$L-k@ErJdO&TK@YZJt zmyid-!{svb0|}2U1A<*XOJ7F*^iv;6z;2e|7wH0hgr%03zkqm_&-^kD0bPD7Q+V~q z=Afb;!pEnUnV0mX0575VVg7s~6Jcbg+~`$W$JARfrGU^@Bm>`k;4vHanWNjz{_Z zaT9sVDu+(Gi7_%FlU@vKgIXrzrSkzM7j;$hiC!f>$XMG+b2DM7hPb?!%(#f8Q)f_Z zI4xYr?~!aganbUKRhRWLIX@S35Lqu(PIwE+a4{3@*V8EbFXrN~~Xv zHHz_KE>$gN8r9r<*gV`FoE^^Z&JXv7cY zW*A`sC&Sl^!lD*9=_RfY`nMM+C;PKZG8Xcf;~`h2kQuZp@TJM8q6hQw{pIn=qQBP& zAGgAXy=1cxuyMMO+c<3{_dD@LJ$TelSt(^V=iaLaOFT1m?=?_4y3xBHdb<6f^(x;hwKO$#T(^vR<6_U7{Y*EfIo@!dcC`0D4^ z$KPK}-d-L4^!E1E)d>=Gx;XhazkC1t_xFGJ{`Eip`1YqaH~(uHA9+xuFMll5=xYsZ44a#Se{M(!3<6+@sT0cD)PrJFRlSL01s4gRSZ|&sG zyb1$dh&qb_dXTpClRTr^0EP#+?wp4x`V2V_In3B@2C@4|>a-ia=*RXO!CA?3)(PE? z)4hyy-Y&eqI{3%i;q@>Mi8rJ8_s7kjUY+iayYFt#-rZf?o$vkr)$YIj{^Wd;KWc~X zXPKXlYlDKX9J4hFvBj|Y>ZJGja{suOzTU0;^lJadyUFD+_3F5Ddpf>8hJHJk_v;^S zPv2cH&KAw{{lQ^3vDeMCv)*pf@@AgfA5|LVSSD&OCY+05dDe&=wj#&v@Od|KKaAzQ zhIZ7La>IdEva|YK+D|(vr1cYBq0my_Rpxc$QqZ@xe4eSbc@Ii7aP$yqIQbu>DhwuiO&qMw>qy~pjy)vSIt zYmXbL_tyt|?Zl!UxSW-*k7xVC`o%bZ&cP8_`_NM z;$VDzINTrPJLOn2$CAeKXWq7T^$Zi52j~}#{Q@} zZzczMS3S;;ieA_>=Dp&qoj%^}?@v3Y`_q$24SI4>_3t%8d;RQgFE?o>Ce`qup6KSi zxqva@rduf+Y$^4GEo4JRTeR}cP$*!eG2Wo?zzLO<+DTb}*QVTL&TB}zh>VZo38|Ho zMQnK7%@zYpzn)7+yl{Ms`>g>h9gHHJOkZPN*(M>1LH)T4vTEr4{-1i?t`eHS4zhoWjE@9JIo3*79-RxbnI!^NqA{jiX7k5O$iNNM#Z0~xg2MoeTg$j!7KxJOnex9MJd zgkXUD+Le?Q!BWHa13c8LBSHufTta#W;Zx&B6~86q1T+?;rIwh~gGQcxCFMqF)KCDn z`gNo+2X_m;l~#6T)LI#}h2PI$DfEiwBTyxvQScO`L(Vaj(-L4Q7qT;j$h{JwRtjE( zNsSv(u@gGQG#F;f~68G4dHhg0eV2DmeNvMK}hOR zUJK1uY|M@uoTcz|ItG11l*30&#luaj5Har5@EZ+YoUNwv70EKR5*=9 z$YT%t98r%EhR?&}7J~}iGN@e^#&4tTtQJ!%lnSX>w5ij`d6r;+vB!00j&)gipTivV zARlL(K@04Yg;Kd~v_ZX1At>h4vj*B zSESy|(RPc`L@F6f3^}*fpNY2Ca7;$&q?imD{ZWdLWXk5tZ?{&zQ*1wn`s?ItxK^%F zDUheI7vHEwFVx7O_;Zb9l~jw&42EkJ3aMym@}ESiY8Wzc#ZWecA(21`O>Rv>*YV8U%?6ELM#BjvKtJ_if42q8p_L5tAFEmkKn z5Na7Rr6faG2_aWV;MLo*oz=~aRhZjysmO%H{VIrN8tucf!dMR z(#;%U+!AT>X|-Z+lEyE2SV*FmPK2^%gXZ(kXzshACyYnmLAK zX_7axP(2ev(0VyTs5k~^VaS!pqCcaP(n#n@V`6aLXfX4v#mreuB%>8`0``P#Zwazd zFmH`|1Y;43b(0>68o?xifx}b?bc4?p5@CZ9j4Vs2jfBEXDv+ctPuXd;)50RFVMfC1 zvcfh6GmX(n%*afh5-N{e%9<%S_M^YV&}zTa6!g3NUYEyZ3A)XGI}>sl-BxJUCQr&t zxRirxXhk~NnpU!E)Qe#=RYK*_r;x*CPDUB9=mQSMVxrVY zdK!s7f#dkrIjxjrb*U2O(J% zt$n+*`Yoy4;B_Kay@{kR6&osKBp!B~HAb@o^AMhb&V+Zdm>2@x z<&nopkCV3=4KSl%UWI&4U|~w>U?u4)BwVF*pqh`?D@j39FW;yj^ru-ZRuc|jY7jEj zthMT;T0YV!=Ni>grI5`eqxp2Ggrud4^=h$R$+v68ZUY`Hx9inzqt-0vYo#2Lt}5jl zP-rGm&S&$PWGW61rb_utyHV*u{#s5jDb;G0v#n~O(`vLDHRNlrS#MO4_q|j+oQnHO zx#UvyuZ>`-e6v;ts+J1nLMEMvB_e@%#Gj0XbD2ac5kN^`Y1591fCEY zB|uSdxkRa!B`nidcGjN2G=lRVEG^h9lshkhU=NjUA#7VK+tRDVdgP8&YUFHdtLqOK z$zK-)L`48-9_UvAB|ZW%pJfy9phsGUhs$N=2NE7z1_Zc#mcG3F6OVjOLbiuzKYv`H z$2Ts+ZysQ&$85{+d3+f@mih4bUxcL~JiJ-}m_7>+cOiUM;6u*O!y_yO;UVWkC4WWB zmp)wnC0OdWkKoZ~ILoc6~8E;v93 zy>6e=nh4svIqyL$b~#L6jj~q~zYaTHqm(Ko zy-BAY*w<2!$$AaN09_8!oEA>Wn>zWr3|XxF)n79!>jA7qyE9HaX9ZFzjA~4$+UGaZ5>WZcYC#0r=wRF`zO2oZY`Zpg(5+>m1klh z|F~6xW~L&6pw}^Mm*3x>UY#t8QOmUCIcNqODZ7o+Rifs8&e=&>#|7uzypZzq({80- z&j#!?eA?paAR8&@BD#qWAMf_ovh5+k^VS zxOqJ9zuGOm+b_S_ufCcj-%L~4pruhv-JBiVU!A_Wz54OZ{XhNm;luq^x1QhYWp1b0 z59i|_-&}pTJv{G(Zugrvr}M-4pj$~!E5XBN@U$O4AEhq(@zY+io(oNSjqB5c!&&cO zkQ>zF&77|ux3*GFsQhBw>69Yvq-B^k_mVszUt@4}&}DIu(q5b!XUvB+@6{l7+KXTG zqKm5Uyc>PDn|nP?-A__)=Gpth?(NzB{pobK>OX7*203>-?4s(woECn5bMWf8|HIwc z?y%9wdSCD6UrjSVU5F1n^=?+=%Q56AU4hxMEN`e8qD)Q?^b z;}_lNQ8RShi5?8HC$rA^tbTXU{Nc^z53eq+PiE%_)6;|b(PHxU`t<6c+b9I#c=3m~ zr?2O^H>cyPc>{q{!_=%27#BT@cH(kYhSp81!IN&Rm9!QE?CmJESM?*GhLh~=Uj6>0 zf4$c@o_7ugMFGU|Axlz4_oNz`HsZ*iVAVa&+T#v9V$~ftf~~kYXs0m67OmdcE4$DX zjhXrx`zY@^Yy@|a=#yt!_ATncMI$ut7U%UCq#rf|2$RY=D^b3lK$iRSerAxf?^V5n ztfLXPz}_9r&j-nid2@f-@05^2-yHeA48pii zOWrZmx$K`+{Ntjxlk?6R;Y`R}OgMTae=}i$79nK0*PIMmXZw>`Jv=N2N0rE^9O`5o zowTzO;fo<-*rtcg#O-oYxC+=*y=;wAZCXgVpVuZFc*;e@9C*eXX{ zL^b6}gk5esF#mki&Bk4%-;6npx`5M^@Umem?xa;_Lgu8EK?@dkP#zOzGsvBs2KFlp zAr<~qD|fPLpM?zBX}?+T=2SkjJ{5F!DydPsGHBO&&2lCgu4V%Huod#SZCpI)@K{JV z85{MIkOdVOwdq3^ot;uT3^Eh?8}*t-yb7H5+LJE`*{YM4N3FVuRd_X{^f` zJFoSb)X<6mud$LcqfW%*VkfO|A&gX)Gx2O@@fZ0zTEQJit;*Q7NFT2fPMHEiozdE+;Yz)y*ShYFJw-c~@cvL4rwx zOr9^LrJBK&PI9F!5Q3#1(WqtQ0h|)Bs*kW#5c^~U9^q38q^b7+MQKroJj9`AG%F6- zii_SsCbTU^hR}NKCKrdfIknq_*^OG45wkHGD@y=(7jzoqE`!;iq=DViNo=&nVt%i$UJM*qwIDZO<=4*7&c9w#}1C6T)Oo{8XQnBdev+vfPeFJQiUWUBpn{;A0RKW6t)709N z->yCTc6;@SeDkSJio{HSRfe9yRU$&C#&v2W%7l~$RitVMSBsR=Em|javMONIQO9Z| z(EqGns+Nl}l>#X(at}7J%|=!w6XVKlBO%vml}45}5PCw7A;af-IkG3Ek(fEsV&ZgK z4HBNxDJZQ3W@*6dw(usW-D)!%IV5^UyKEM}i#IWP5>vobH!>vBa?&YSgU&?b8rcSh z#Jjc-GPU}|#_C{oz$_9F1jMoeaWIWB(b~%wa5&z4@r`5yChBu&re3v!#LbWqC5gqv z0RL|@n>Ygo)78irj5J}uF&xwAH43EC#Ui`iP$?^KL^5#(H4LQ{2GPtxtC6geK}R9u z_iBdO$GSC|=WuS09OfbDhjwzOka>&9uaz6+8Wyq?!O18bR`gG&P*9O>! zHQTU+Y0b7?zK%>#VKR=!1s8`ZXeiVQMg=McvrAC5Ll6~96YvX{I40*v4NGDMy_(U> zEhg4(h52cMR$B}TcrT}yAd^y*4hly~jyfr=hsCajbe>i-1`HM#n)5JTS|m$lW%U+l zh(TpB!t?+_3axfC<*=Zs4!vYGb8e>{Rso5?YotpEFM_?u#;EM9+RkcVm$UJl*X8iJ zoi3-%?Xrb}@EwMAr{WDt117OCN-K@FKIlMr+=NRRo!FpPX;pIZ+7m0KL<@FAY!`Tuo?Y(411( zR1TT)0i&1K*(g=Q%^+obz1#o`oKOYa7AvO@dYwME!)0ZY0ZXG&7_Vlf*@#gSxFHXSb)bL~d8Q7yOX)q15=DrAZoV3%B( zurnQTr;z=rSU!_X#=?ncFd6YCg4RqtP{<@onP@)Yk4FO8bfS<;S4#O*EQoqcDNCkH_+8Qxv_jHSg22?_7c0kKt{i^3va-GY zbbIZoeCGu$Ma9kwSZM~$4#ZW0`$?S)x*jRP+8B&C+SgV$9x#%}u!KC8;Q{-2xI#gQ zFY%ov{VJfuWeI;w9|O94gjbf~AA5tE`FNl8*;R1zaP9#(%vS(fnUFe!M;*Fv^m zCjR2`pQBHh(K7z=^79nP`8g8w1xooA(tn9e{V`yK%Kuo}9}&W#9s#M3^y_y$(nnb8 zkM;NjB|br53Wn+L{`PN|r23b@QmLQ|@y3-{I_$}(;JE9uTlrKhl#KYRN%yQ8x|o#i zj;EK$^OHsYaN0hcHjii3(^=)HgKQ`5Hsix`IN>#Q@_|t!*)4?{QDZM{t%TV|!qUw; zDj_;%LozjR8di$de0HPXq^Sm(O4yk6GAX~Yk@hu{_EFJ0uZ8*YY_Q^Q!Nl8TQ-Ac0K?+GgJ>(Y|xsmkXZxY zHY2TTw;D?Ex)~S8?D}The9?^@^a}^Q%*7~oJ(~ z_di@rez+Xn&$2(?E$&ap$K&$xF!$!9`)arFW;gfYr1iti?%S(_+ePDYkh~qI-tOk! z&QizS#9=3XG0wd@>c6?Y{PFG8KmGLf-~9ac_H>qudvA_99}cTOo_F7!_s@EX*ZcK% zSBvZYPB-rhTJdSoebfxz?3UkOO_ABAMR`;SPHK^}Vg728KkBCnac3@U?d3fO?Kq5b zDelY$OtmOK%G!Df6RB8t+s&n1l2UC&%<4vjJ*;^zyWvIEcQ;Nzt6xo0-|y$|CaL#} z+=qkG_s8}3M~%CA>1G&zHBH`*61TI`4>$Ygqe469-)pBo95vp~Gv}ksc|U$X&Hiv$ z{pqCf;i&m)n!On3Zx;36pEvgFfmz8@jhJ9&zPjAopL9RGy1G6Z?YHA^_evL&@{h-j z?~m&Dhn@S2gI>WqF1lxB@1z%;e#vp2_`ZoyxQS>GMikGt{r7vool&C7A_ z-NpQD-f85*gL3$wo#^I0C+!H7+)7$YK@K7(-Nfso{)fxO&Eas;DeSdkonmBA3hy@} zNA1{N&7bvB)s$<|N$r*0^P&r8X39gu0jm*)-t;Do*lsO&(h40ngWa@akaJd}d@aWJa?WWj1bLt*yJ>qn?HHDV zgPaTQW_?V~&o+~`LXc}FES%~18mWtU{d`(kbaUfQ;c~ya}{TwA+OHc}>8K zg%LO8eq?ZNbHQ`NqbJZ&$zjt$6KQIIao8q?pgB0`A3S)J5!M5FVivJcIKF zP1t2hhFm6E3&$;$=q0e1UNaGKkWrrrUKg?9Q9B-W5ReVd=V*l<#5`&~NbTN!x#xl#xr4}Fz5vR0mf zyN;DgWTjhr5P(9+lpqE*5MZg#k*NnIzQ@butzt-!mU={{fbw2cU^|DZoiYkgk!mH3 ztyEnr4c|&Lw9-zjbki%H)Jijs%uCe-Uwfq>657gnSF&F83zYXgP}YM)#-P=Rl)onE zkk4VMp!R?AQ5!IG!d`p8W%k0%@z`QcI_4l@AY5iNSPoig=LoOE3>gr|!Xd3sShijh zOcj`T$U`46EhbWlESu08vq5PlWL^^%b}}&2B2Eezo~Tt9FsTE)#?NcLCbgSUz?kxS z5lk~XB{v}McS}H~B=A+T8KiDT9^}=m20=Mn>(6zPmxN%kNH1F_6oL_G^$wxhCe$L} zaP(@K$)KUM5~M#R+cZ)bO=z7~&hN4S-)QDYWYfy1_gF|+5gbL>Eu7cRIZY%(Xn_|% zilUeVczEEoY>XNipVo@aw8q9^M#0XMmC+h;B|~a}%>zab7(ZbDU{xZa2IVF)vLoMQ zaFt5Difr*<$c>t8=Ow8@#-}A4PoW7ItRtOBvi@Xy1HtV34nkO?6e8sL^$5;L+i zQh`J&jil8`S&WRs3P1D`88NXGN0BPI6#AAkU>t?~ib5jNGsWdbLPg`qythGvl+?7+ zbzmV)G!D=6EV3K~`#GF0C>3(arxdSA#5ZIL23+1nL(#%kp`mK#PCMS z#ORSVeN1ddR?JA+fYStWm8cgi$+&Dr53+hjkvIkotljRZb($d#TzJjWogj6^^oDwZ}NfhlMR#~^$P`j*73$PXrTh|cm!-uo`JvD`s>O9^Ex?l#apWTC~<+ncy~_HX9ivZA77E!n1^tRKo;D zvQZ`^ZU%Aqh5oUa5G?C)+U!=dmFI*x56g-*!Gt#(T*#3K<#kv*E{D(K_IaEhm(A(0 z!LOBpbtgmKNLkFus%RgOCi5Wu!LnH<;ahO zNzWTp0hiIv>5y++6MC0LSgN#61{2tBB;d;nYusic?MU`n37>NK1+p4sq0g=;KE5;iEcV%b&>H13~dAel5LG~coZ#jI&?DS^tk|z%sfWbRvVDvTr9A|c_z;B4$IPG6LwLybn16{k zJyv@eJ}+$<{wi1sE|*0;qErvz;d1$UXw4&p^ed$4%SW_m39@`nUkLOk6MuCJp8Xm@ zKalumg`^7QTz6$JSoXjyG|wNS_>g1UV~f`n{PH$1@m&_t^?j$E=;ZJ>9*(I=edFJzMk-#*Mu}>3ovA-mjfc%g6o9els#Hx(j}0ly~pe zL*uf4n6=M~?s3iz{QR)!DTcXfi0USc4ub?fGtrc_YpkTyXi&!^0oeLj?KXV*Vou_;6S zJi0rX-0!z;X2lOzqx(ha^>O$8_2SiG>&Mrpr?c9$9@%Tf-X2u%rkUGu^7T>chugiM zt|n)L^y@|G{eBUNR-Fv4_WSQIrXSA7Z_cJ4US0pghnxTX461Aa*f`pL8Opo$#Ak`fi-~u$TSmr1A63{C96p4+XiNc`bB1D_jf` z2mQ>&ID0utUysut_6kRh;O#Je*bH@%aVt;4O_d{jEoNzD{ri*d(Wo*XGzN{_v>t!G zTezGQemp4su%Cm@`TlZpI4t+`-lf{w!L+?MDAzN-T-cTh+9G~i#KXayzZ~XXPt(`^ zNI&bSMK~KF7O#Gz-g#b)nbUr@5J1ichedZcW8Z5U@px33 zbc^#*XVfb6ih)Tzc5yhbWI`wX)XltdI%}Wpk8Y3pZx8D*y`knev)t(*^~25d-AVgu zoPBpXczxU-*W!bMZ(a?|>fx(F@}v{(S4Nh`2d@tne_`8gxDlXT%lKV_#C%AMz=e6^qAXL;Kwi@@Si zh*?xT!<=JY_983kWzV$iopn<4T5!MS->dotS$ijCD~FAhh_RWpc5?1X$XDShMHRWt3ZS|PB95z)Wd^7DCRU_jH)YIRsr>{@<+l62y>FAe3 z^G0}F@a$Io^NMejcMWsSanaMuIvWXlBkdix3VXxGuv4A3visfae9&xVJl(XtpRo^e z&QTE_3_#{;%mPbKuiixv-l@CV>nJ2czV=Cl;_h$WU+)0LQc-X3sI}K4c7jkl8 zm&tFVU_%I5v~bXL(sEuWf)!-Ow!N&J*6eJ){BG^ZZz<(Et=wQWTQ*V};I(!}8MG3p z5W7BT!Tc_Zhu23ObRuAL+i0bD1GpMEItOhAzugdWQc(vPcM=H~nQ~KMC+jw9JVq>F zAp!zo?t_SxfC=Le&gD=I=rk{RzhM%IQ)L9%sO9ei39!^sRO%yTJqSNaI|MArwNg*4^hyYsYNS`{ zsg*kXrjb{^B~_Dx1$2Qbj}b^&=E?aV&?rQ%m8=_4&WqFoi~f~3yAswTicu?#&`Q<6 zQVAf>dO(%XN-2Qy6ubyfLvNrxdvdymck9G`*|giHwnS;^u)32s&tpCtOs*Wr#Ydkb{PgCVUFLX3}Tld{!##pn#bP!OXD}Fq6Yp%x}_o zOqk24gY6nvM8A!6n=mU0vq%@TlgKc?gM``ZLTryF;bCJ=3dYoDRE5lFnt3?2i&gQs zgn^F{DRojZ_)a-!IZVGGuVK`i>rcOY@#HH^{KBFa@wy#Sxj_j47NOWc5S4P1)*$&T zonl)dT2t)2B-CQyh-ib}f|)F!{EiAcik!0%yu#|$D&njZllpD}G)y{Lt)++G!ik%lgPh(5G&r?dP$-o=59Ij-52#w9ms^mM8t(Pj% zDu&$8i3#Z(|CPUM)iiltvDulx!k1Qqm1LFKHBF;2v?+Hu|F%hE$w1k~NJ= z{_^S9o6o<(Brho?5-dUzqrhhC#i)jQq{D@D^pFyk7$yvG$R>ljXK*8_W^p+* z)5bGKWNlpoRVB1YL(OGnY-R?TKQkdSVH}MkundNVF(43%V=%Q!DVLg-n3R!b2#mxO zETuP_IJhf#i_;ldnj&xtSk5H+$*ye`Yr`(Wkz1UuVA>MqUk*v~cBo&B^tRuNL5vi3j zB*xMN)K-vG9Sj$VJOE#0iZX%ajkanvX z;ZP{TJMC7t!{T<>fLwO73%TjA!7UpSB;>qKv)|_p_`F`X%j>kd?Y!M;aXal68Z+TC zE3NieX$Px;cflfMbV~?ZtXE4#TWj*|mwt;LzI7%6lY(z9kP$~l>pd1jz-4w?n1I{L zBb$i|x7iT#IlOiwtaO;1&}nej=j35iLMn$wy^B+O&A5|Qn+Ykrh|UP~3nBlogOJ1OO~J22~DDTS;AFipU@z=^1zb;8jrYA4`vJ0*|0 zn537D+HpUxg<2&%44etk-|F1xMJYe;v*2*#FsPBHHl-EAl7yAwwb2d}VdqIZGO3B& zza;&}RKS=H81o^%6tnp)gx`Xr&yx+0*pY`BIHClt`jDN9xJ_Y~(PK8iR}B3b#!lx$ z)`*MsSq&aD=`!gpv~~%L+l&O-co`i}>vB6!_a4>m;CC50_B`wt1Ub!qyE1-+ zr9RT)@ptbrvV8Dk1i@0$t>-%%FSj;UH(q?BSE4nkm2GHc>p-xHAU_4lr5ZC*;#+;R zE%hsc@aYl-gpzzp`HY0{px5?ziNde*FH86p{WBSs??nNL9{oCe%md-!r4SwxAbeiz zGAZ-e)qTA6Nv3H@Up{90Bl;YQ`kek8ECqxL zU*c20x+U0^`uZ2J)ZhHeV5ykj-2+y$6fdVksi;5dwM3ju!f!4_Ecu9i)~~<0J-@%$ zzuN0w%qn}`%&Z|?X2h?=be*+bDVQ7D(<~15?84w zt+g;!4N_*kNUIRVq9I@fGcJA3L!?}I&S$7cjop-GS`E#cv9{nTtX)bBs>yLB2s>{j zVrpgFy=rpQ&M!KdlXBE9KP3?0TfQu9I3=Lb>yT z!*+lH02UX%8P}sY^zgh>ygTS2?X!1x-`^a(zF6Fy%|Gtt zhm}Y%Y_26;XQSNvy~3M$=6YVf+O6MCvxn{I>%H<1$F+AyjoXvy`|HEESNm@+_ugC` ze7HUO>Gt6FZ_loe`p1*Xhs)Wd=vlO)SNomYqy9lFay5ut&TF?P^Tnv;w-UQ$_ij74 z*U20A9e+eur8Imf%*?Da7I zVK4u~Y3JS9_|`F-I@sJZXiXs;BMXqV6vQXil>wUj0TZe$kAZ%L!W%;Vi~R z%36#V=biZBAbHx0zF*`H+o4%IcQEVjPrH?TvQo%Q8tL6uV&2K_jk}{>>vCQ_>cj@6 z;G|c-*z4cVi`}%n7_q!Q?%eKG-klF%xX*g=+c~P|Q7b$xd0@ugjMK;M*l{n_FUKlL zB+zuyja`j0r{mJWpuFEsmE(>{JvORFkP-B<2S(6m*2R6MStEMfi9$~vx56-jK2DKz z>S|%uq}$nf`L#~+yq`4fm!0#XGasN6ZhT&Hjs#e0x8j{wJiCn$vPa&GPK)kI(KRV~ zVBM91Ts3B?#;qwgRgasyX&a2iFz4)KUC=qODq%#*A!8wEY8CvDtrRlm{cHl6iZc|0 z3}h%qEt#kjRwZ)#l5zKozEROVuln~}k!i)(&mwigLEb&9_&XU_GZQ$PbuSM_=Zo&~ zqg<-HSsxp5P!T(s_AjH9JCTavo7W1SVF-Y6mS-d zxoNMNfFq{c1m{kjlT!ol>bDvaerrmAr9y5V*gQL}3ObmelS>6{37;usH^33Lk_i?= z#(-H1=TSJlCET=~QU+{f!o!7aBruj?v({%+MXcJ0MayG5HvP7rlf&}aUVXCq-EUn6 zse_a-s!iZbe7qKpk0A#gaTwr;nQ)QufIaNwLN+4mG{k(sh$$VM4vwc`JL$EOPDT;4 z=~6B-=`sKbe`r~;e86Rvh|K4h6hdm0D+&GqV_ITE>Bsozm{b}_K&c*R zna7O`OLg)ql}B~FCA74BJYil**+1ofFl{aXMv!^=yQJkK%V$4Q(y|gaAxW;Z70E^w z{m8s}&Li9v%16Zt6 z>5_|zILH{pEjncE%xOUQX^;h00k{Y_$_IEXW=AJ}WOv`9^O>{>F9(mnyaK+(Nh^81 z1Q;Zk`6j*CYtqJiCg3+>4g$u}j7wp*B>jBM4dtL=^&8a@D~2#HBl=?r5Udd=jbJGk zt2C$(N<}Kx*PnjzGp zz>@?M6&jscK#V2?P3%bQpVw^wl)T1wIU-X zg3f_~U zW~Py`A(KH3y~iTE+IlBX*iCvXhdaz1bOr3s6s|#S*UR-XRCAYPpo7 zbkGErLN?9_orWSbCZvW*z=Y=vTC$*J)G=8L3lKI^^t+BQml2_qts^ugB|g z!HLo9Fu81|fYe7xqhbMPH0(!`U!>M%W_(Vg)55?`1@p_nQ*MjFYd6B; zrJ!TAQqF+13*o&m>mJ0TSgpgtnmNkM5t0X-A)yWLjS@3O>0 zo|wl7o4k|5pg?GB!f#3YxR{eldFX_bv=9;={fS5nn>?HokaI>t2isKAiOb54kRfL6L*p@`9pRJ8C-YKeqQS_;{l7_Vvq|42gS&zuu*4a zG%k}a8?h$>j*!~~n|8`?f@5|zfYez^F?&1bZ=_tcv=7cRa1?U^s8^7Fsl7f__V zM>_g?<<-W@|3R(XyhM=GM+vFjM=ig(ARe_VU{VVq1N<&ifR?2lezCHmQ*6pbt6S^O zH`iZa@^uo~O58wp^`+}DrSu9|T}U02P)nA!r9MF$2rhY`2dD+5EW@W;A2SQ#5uFi$ zo`*Cce4Z1LP>7Je43DKPvpvKg0s>!zLLLyACB*Xp@_c;c^C09F!b8GCfsX{~0xfGR zsP)0+gN3O_RA@<`0?LjG{1dkx?me{nq2bFLaO-1jQT;!E#bY%d=u?@?_yc`v^+O3C zNw_7@r>BIXP!&FdqCTfD1cT)tQKx^7K7mkwOn(_&g1aAKDFK;!$ovsn`aeUzf~5p{ zfPo&B_#WspWa_Vkr9RF7 z>^^At_iJ9@jVC4dtmy1#tkaTfoOcW|wn@Pmci^o!Kh4{BiwK{}dr4r!(D}@uZMW)h z(Dbpgj7wh((4CZJTyP#V0`s!FmohiwJnVF^6}GZyD@=KSCAK0PH~Gk@+c?>q91U{A zMsn0lAB<~PN0V7Kbl!`N%Hc{bvA;W-_KN4j%*`ly+Kn!nvA37=t6A}Sj5M$g+OhLt za#jmYtHDJhy4#5CH-kt0} zdQuDTHo~L46Ik?|pLTJ|jF&71X{}_{%_v~ghr=|SGqjR**~U|wL0XHj?U)f*KIpEK zR_LG+JZwkr4jcdY!~N@n=GmljGHYB65?2S!+r7&5ICIoVj9R&AuThRWV_s7s6}~te z{qDT=hqL#r$o*dVY?Qs27GE8;-k!FvrrGmB;&PO^ zndYyDiCNy(N!w=a%)zkQ&AM*K$*X?s-O2FgZ~|Y8X~B{AQNx_$Y7AXk?4@kon0dG4 znU+0CFO8(q8j(@KGt9f&Nh>t1o3fs^L*s%gXwh3qiD>ORIFaNsiJjGNDD_srjCIrY zvrhQ56+CGLj_bawZus>i`D&7QHAzEPkBY9{isx<&m&p$Y#aFZJNi#Grx#wli#k_Jl zZ_V2INj>^%mRZ#Nvof*^eltoOHT~E9*qce}ZWP~dM)n5vb~)9qWEbP!tMmQ)dG7T* zdpj?TDj}~)15N(@-Q*AV)4Sc$Fz=Z+68&1TUyJW`lJ^T_x2u`3Ac2L5yIYUnjME48 z&`}d82u(Yv2g*T)QEhC$_)0HZtAx06!d6e&n{i9V&sG!G)7|pkATy~1-YoLtx_?-U zA57{8vvwt)ob;Lp-Q?Axad9*qcdM_jPhXu)FQ>)he(Gr6x?Z$zCOPq(ff~8+rYXbp0Eh^d&5` zVT$i(Y*{}YbK--vZJKwCvi4EVF{^m?JF$yJ>!hE8*G-C^X*~i5oodw7D+c=ID4cJS zZUfALZpP6}TKgG$H)-i*kVF+^D@S^j5&PK|) zcs=XyWgVk}dtCA&V`0q%M200_FXtH)yijr{Wu2D2i+bd^6NAInqMbf!$9h?JH|y?X zoP&bru$!0^z4bT}l`;}?S}#kdQU;xpP;9svW!$d!aH@z+7q%gJle8BOc4WqDDER4W z%+{^OVg4hj%(SmliZ`->L8Fih+Y%lw>S8@6T`J;bNo1BH;-KOI7o}6c(bi>Q;G}D# z6=q7q<1*liQz2)}XAL+x2dxe}=w!fVW3hl)myfyfaZkd}M_p9XO)m8U!d89KO}UNg zbkI@^n^R7G07=~&@;*B2F+{DHgOu2b9WN^bMr-56H&4F$J5s*pq9hK3#70W}W{lCx zc!SDk(I;GnxZ4o16A`a1;WMY)aQ;K^Sux>@`D|V@0sEv;FNxXloS%U>bOQ8-i&6TF z>aYb1S+q!?1}TN99JDfGCljcihJ=#{nKgEU%x}^}Z8{{oYSo5#wT+P2DH#$yGm9U< zCKZBUlE#&G{*wluA8swNm`6AU2yP)*$}NaN2~ZKjbOcHXhz|mK1gr-kO3PmX6Vo$F*H;v4P(b{b% zEf;M(#gMt8ms>BsdiK@dN!Gq4<;di@g%Bs~dKWE+FEytV*%_tBs5TNX^GOqlT#~u$ zW?0wWyUnqn%V#5j?O!tO6!PaKGU%khJ!0|=y*QF6uB)3s+`?W{c^6zhb19e!Eu4nn4YnGl#b zyHSUPFU%b9!${G_Zt~cS$a)T~_S)H?i}jjyz+?ggY^PPgNm>bslT{lH8jW;KD_vDf zR&ll1ZDq_zhzZ$@6I{+A2_O!aLsd!DmRh{J)a}yA)?{1H)}MV1pCmLW+HHdp86&4D z!}j{~wI^R}z4%77_N`jdl+aETK(E5TctomN11nMq_J&O%Bd4&)GO1-l%tm)MX| zY89}itU*U(QU>`K(?D&JVKQ9GQ)-vR;Bzp*0JC}pp_OAQxk0bRRAQv6CRtT(ztBq7 zDD}44pcH^SHLa6t6bNMl9?)!1dmX%5vTo4HX+p&j3g|r!LyBog6H|vAEb7!^tqfT= z(@54WlnPgFB8e59nAL8>JcO3o2r;4DUVHxJ>)-yZY#YH+O3_P|U|R>6bJ)j_p9)3= zHRL&pL6R>T7q5rAq-qn`QUj(iQd$m|ks2{e>FgGx(`M#515YYU22I3kj`}Prx!7(o zkvff5CDUt=*>4sT8*~bW(sPW#0Q^4!gAmANqA>?=fB~|wICR3!#&b*~C-qu`Rtg+G za#2TX<&rIr0|7ClUS~BMjSPunYQ0uP;#vk7!sp>F$WOg;6X{XH;7Zpp>8fPoDR2~< zo9o-_&t#j(#2Y4AWi{JNfhmJl%o#KkfiZ*{K6$V-NVQ0hoDYZ@Oll;Qf+s!&i$h~| zKn9J7r!iz(N-u{m0?cY8$Y$cK7T$*BrZ|=|Sd1i3YgxU_gbUafa^H#UF(G*to<-jM zXpJ2@(?WY}EG!nMnX(#@VKw*;!dkGgI){aI+RZkL*{f?`g9#sV(IF@2bMhXi z)#b2z-7criYBLfjzujiHS^|D=Bov7F9APIN3A$o_i`T(fO$L}hut;gaq!bLOlT)i? z+e$G46RecNi%h>OIlY8Xp>antO$L>fMZ@8Cn0!!08ad1jyV#(Ufuj6gCsfa7reQ21 zUZ?9m?cK9>)+A-x>7GQCDgY9uyRt5a;lmO^1NwNk+t@F3)|b2dg5v=JT? z7WO$qKDWzi;*AD}nesYKeh2F_<1QnDcPNJ1>ML z?KbQEPIDsU4S6iE-60cHNZ$~Nec2c_oE*Fkv&YIr-ApSVfZaRlK_&?Dad$Qq&xD=z ze6Zij_uA!pFKC%b2GV^yH(3IYsp$Z z&`3Gp6qSGE@`}D|XML`g* zh47H@G3R6cC4H)}Kyd39uo0qPhKGv%>efRAJ}U}^$D6{tgdo)am*p?-q6|w~hL4ws z&{KaFmilFBKtgG#3V#GheWWk`e*{ZGhQEMJ{f~#GmNHX+B`meP`%6G-Nxy=kK99pA ze*$>=X9#x6p(fOOd`QL#4_HX`1E|Yn^-X#e2$HC|G5d`rOmdZwv+2cXZRgal# z5mPB>1b#B*Wq=z*)~P$mlR^Gsm^vRM_iBN?s`s$wTU6Y;HSbX~uwV5o%C6&vf4}NI zZ6jCuL!<#@O?#+nnC+*`)0`dlpn{heXDm4n={6h6r2^~^QC^vHU_oA8@KLjZqnol+ zf@~?kw3C)roNp(A-8BL41SbzakL7}(;pnHG5xIP@*%<|X!^|N{9_GI$r`sj4gti+wu zvj3=;J{%Nh-NLw2y*i#B4lCnI;A~PDRwMmtxKj@1q82Noj5zUn%2H2SDsjuO2IWT+ zPRz~7;Ls1B4LB`9cNIgxFRv>$pD-FxKEU+S=5mO38Z~hj0@t!W2H4AKHE=mA-OX}~ zMhF=4>tXV0l)N0JZpN9r-SX8z|8`Ni+HW0B8;7&zo9p?Tz4DJo^o_P zF9wO5z1GE|yIb`lWNN>1(9e$R@%!V}?Q!p@mpt#qZbzx(W~h^}o=?j^+#US*>ip_( zD%fnw{CGV--tEI#d9UW{q%6I(4VmlO?JuhSNiDu;CH7mP5i(F6xEm)=TESl0-cDGI zn5Y%E?AQD!o#@;BawWv7cAmqD&Es+aZ(}z|gBD#qZiX^pChXUIFrb5+{iGdyyPJ76 zP0uUdQQir!%Xq1?ZuGR5IO)U=>VZ+tan=q_iXLP(yBvIV+JCc~yBQ@HwZORKJMASe zdeOIn8X#0}koUl+dRp?HcA|$3WN!a-Qo0->GgViE#H{RtPjav5Kk27l?^S-h?7v+U zPN&tQdHZPI*_(7;UmhHGGp(FA8M46#`~IMFHO^l2VmG5WP%B|+Moku6wEEp|CF@TM zeySK`+bP?m66#jd!)AWesq7AGC$r||Uhj6EJDHU)k0-CLj&Dw9d+ijgp#6SvcibO! z>PNHA-TD5(pfoFce>|?eo@ZarGOeU77jb>KJ3E_HdU!b0!;)hi;$h&GW zYb)a%wafeC*5$$EWY%t{tjDd;teu~AN_)N1xLrzkxkbO&tHj|121med%IY%e(qZe- zICnbA?L!x(t+g;)@FDCY?_)U4mPYiH*KJpWblyueW2RDo&3UO&);2G>dKp_Y&NpJF zZrZk63&L=~>W1aBUk`SY)6%1ox47nUmZ<4 zg{9 z64%n+sM8R%8)6<4ybEbyS@i)c;j__xJL6_m86TVXvneN@a_CEbx}Nb@V$QS^4;qz> zYQx9M%zBA<q8dp5}EQFRRLZDi3tb(IV=@WBdbhdJ;Gv^2-FgYSrU?#5~PG6k}!XQhn84R z+KD3Q7vh4P6kKMP!b(dlNx+73-jz;irIC5SlF;J$CTMBq#w9l<7fGS2>6bNI?YN0>8_|&JFNib*+wZ~3Bc3}S#&W65wPGw1gVbt&04=ni$Enx zz8u7;6@!W4W|8UKm<_&Ja!#{t1)g8Nw)yW*k`8$9;?S@bg{@=yc-xcEA24Tc1{bt z5G)^HHGzL~nF+t!?z9@+HpcIu&`kEwz~cem2<)!iWN_Opz!n-Xxd}l(TDfSIr!=@q zB->fDa3rDGF&Si#nZ`9+FTas)zf_7=b+UCHmj*0)wdm#ci?3gN``gv0Uuq>UYz7I` zoYC%hc+6>Gfw}eAjczN06nX5XsGCF5AD9>_7P1j`8aQnYN61*6*v(@`T<$mP;6vj# zW5BNaOj@MzYQ_Uj)@sCoyMaUp@=vb=w$o!JTqd2M*P}8qdY_%K800jv4J7rL2^csp zr*_iF4Vl$wkRhX2&ynpOBid5DCJa_3bTWKf^~f8{b4DxDE4P62gr?z&4e7=c#nv-; z1RAB>ex^mfz}9iunrQ6_rqyh(BPR*a70X+kcH5*AahM3UK?^Ch5QxlBK7r5{G+~gQ zkp?D}g+QRW+f4fGMyRBNRT0V!Qndwn{Jhqv7nABO=nCi@k5P?kh)eB)qLXZARj=An zOOX+JLV={xkc(2D3VIzdvL@ER8<4Igtrgi>EEe?W6q_8WWJ#5g*2V)?yNR+wKTxPB ztz=ES@eCRBR&Sg1Ql#vu6TyQBNzqFv^)^gGJB_S^ufBNx-B-Ucl5&-FU9$NU4qC`s zqGp>XHZriKQ(6%$92g6S z)o9@eXp62jhG$z%mvQZl4oua@W(2v|X|6mrlZvm0a{ zR%IrnYtO!Z`ps|Dq8GGklTvMviZz33)1cWQH3%c)5H5zSO4(RF3<|A5QdF=CIGQve zi{q5hprSDerGXBF^@s%aIh}+jkT8@Dnoa2~ywS?DCXVD73KkS{$jInSf(#TcTc^x)TY4`}*8I8}zMuL97$K`hL9+%bcad@0&r_F3*ab&{D&O7bMJE7gmyXvMr3r!#p6DY%kOmq*=-ghGT=o!EL_-U$;AEHWH938 zIUK4Dbx=S=BimpZTCYOZ);%U<9?>GGFf*7K2$n6O+F>!Nh1R$%l*eI&Dd(~wjM&T( zHWni^$iA4g;XS$j1;ozYPpbr8y;uK?~O-8;h@iEF*)rvc)XNP zR|=_^i-E5^?Dj5N0Ve^!AP=k9el8PjxSTfFE8u+9Njv*FcRgl-LmHeeDluy4o>+dsoo?uJW z5>+i%Eh#Dhs6+siD2YH``-0NCR;|4lvQ6*Umimy!##isi^2dXRQ0* z%$+;8UE8ehthM%PF+D$7UYstMv+;D)pN$71M=K)h8A7+Ab()@~Nj;OA_`;;EO?(L* zc-8Ze_mxR=I%thL`p}_a_vnj7m(8KSWuilz*^{2UgjYuWeCxGPvk8752k6q{SJ%G0 zzxL0uwfEma*wc-w)Wg8rRERo-s#WNd7ha`8XXhb7NEl}g<_MTv4mNME-+6a$XX|k1 zUL2iKdLJE}5kZ<$$wPFGI2sJdh;RL6bmL_TaF!cF*K6T_aJ`7|5-#%snhF045udL< z`0A7J=0&mr-GqM?czp%weB=6BgqN=%nVVN(w18ep{JN+wK(y;u0bRpA;bRaryb15o z<5yRZS`gvoD+ouiuWy3ub%ZX3iNh7Xx_Nu^_)F-;SKo z)o;E2b?oUE>1!C!FQqqw-~T>X>h-TD_1{4ugcJf&L4wzbzxr2!rNTsBqOU-xfWGlI z%;moimO>t;po2n8>TmpwU)$Q+#PNCvLjB@J({wZvK{0 ztJ0DyFsEE~`41M>M<>k>PdlHTx=Ww!>$RmvJe!-(&c`1toe$^Q`%~rdKsamBADnpa zFYO0C9vviaV=E6I7}c&;Ic<_IlU_O4M6W7j9;+0Ow%#kp*7?$bj>j5Y=AuPiw5f?% z?a0Nkg`KwOvo<@jNk^zSTyg9x{f0K}H<`*A6{LSaH zFRxl3oHWmuqo*_d!_(#m$AOoq)5-gD^Zlj!{Mi5G;q>qQ&F}oJ&z^n$bou$?@#l|* z@1OVslRO{Uj~9(6bL;8SJDU$z!NfYb1zsDFsjD;#;s2YO7dND#PyZVEvtXDXlZPj#_LhMU~2oE&Qs-Pdu(`bMMcM z$5Z{;Y3Ipt>*36KwCa4gv>@<qU_^kKYgEqYV?9Bc0!u#S3 z0azbh_CI3nrw>OTKRJGUHo2Vp7gP6g(R_L~fb=i>^5wMo#lykp zPv+lwa`J!q@c5If&a;K}<-_iWr!9%deSB;^8VHL9HMGc%PAwbclhe`jlkVf8_;4UR z>U{5f)7UVSnY&pYDdW$W{&i{E(I zMLK0;TR`xEcJ}K zuV5ggb@lqxV}Vs1Hrv&)fl+t4JnWocu7J0|5-wka7DIl%$#h?@qQeALOk>Jji-n3H zr7E=wQ_9F9mQ8M8QB9qkceJyiIY;_X^s2=!+tTS`^!Q?RKJU$Y&T`U*A+u<(r#<;} zpw1fX)S)IWJuq>Q=QGhQlEC9f$YRCg3qr7e)#`BzxvR_QG?FSCe4z=uBEHy=v94NO z_N=zWt5l&O)m^?kZW*vsl&C6GNi=kUtRf{Wp`LA8QaN>i=c9BbCE$63uhNycK;%pj z_YB_Ec~h+060WisS;>@=2SZPS9XVCWY8+Bfg!@GEDs}R}Py7ShZx4tEm_POFdk=>;W2PTzL>xq_9^;L|or$81G z=^|N*$q*?84U#Yd^GIUKtD4-iY-_vRnPZ;`g%b;{3g=f$)LxHx` z5s29)mG*@^#PozBBnYCKj3q2O+msL%3BwuQ0@?K)1O|o9k^)kL-w=_xAu)iiAQ0&a z#b1J@0;~r?Jb?-l!jE1MLXkqW=tVT2M}f1>OR!WxHg>I_1t|j=0U?E{0G|r8gA}eyOTC~MHhpko)?QRO0H?wtg%w9SQ$h7Z z4KmaYu{AaI*Lp5DZ0T*2vG|g~6l|elv-vi3mQok%>7FAtRl*Z1o{Tkg9+=0VkY6xg zEIE9^6AE32vlUvVN)RYiW6*c#1b1Y_7ZWPca(tUDMO-eYQ(2A9gCv72J((=b3>sJD z@T`a4m82=yde ziIMrkdj3e|swP*K@C;Q=)AeFC7s2yKL?HsK$XDV_DN0szY`v(_MNg`Tb>zKRB8#R( zSqjx_yS65(FsaKR#Ae7^K_E&hmE$pVoL@4s zn~ooV+(}fCf0N#jAs)7_!fS^2~7e$pwiS-m) zjzWWoSPBY>jy6l~lEtWi=Om^kbI8{lj*g;7{+QE|ZMG8VUgZwZ!GBl*DOc@P5su)2&p;Eh82C3d0Y~9*hN4~wGMzNjSh1h2L;9fDl z4R14t_jm8TwRiuWY$mm{ar^GOuWsFaD|57-*t?5m_K5sJ4QW;El7&MGIrEAD!$4t> z9(Nulv_k}wRbyCskHrcqS67%a>a2PK3IKf?dczT@l1S!N3Snv>$HC|2#CAQi2k9dm z@DKr50k*OUJiyj63|`@Bf~b|E2V1EqbkHG|J7UUljVc2FK&Hr#Oes@?$*P>da*w_Hzzb32l{_8Ereatnk5>!mSb*d~CbpeT>}O)T@xA-In|G5(+nMNgHo6V9 zj_llm66PZtu&v6+wzrW3`&SdYcZ#u%+|hb)wBkKvfe3`oo;%DX4l3CryqF{_S)!7I ziXfj>#S9j}ZBVsRHV&){B`+uUDw(5NK7s7xkRnek8{36ns8=N)&n5PA(JiDWl{-Sn zY#Ne{l+*i2qcC$omg2SCA@l`R%}N|8@eIdM6j9?CQWDs}Wi`vuIE@vkTApV}jwn*K zEDnti#V8=?Ss=?IM~FNli=0T7B&G^uMCM3YfDm4m1W{m-QDG^=QkcjRsz4|#tiMSZ zQ&1$LoFK~a)X{c2ewdH%)U&_|Q6lgsRY>drVfhGM%fhgtt0}gYrs2a%(vUfhM(01G zZY^gLM>{N85jm2jYQR*mtZM=RD>O3j4E(9bcJIPa&7%(5trRm<9ho#1Qqbek)Zqqf z-C?wRV&c798pA|CsEB2r6fFt#NwrT37wG&$?{ZLlUZGrUE8t^gg4Pd6)GsO zl&*-T%1Knd+t6g5Kq`9_p(zqXmXW_L-caR+YZ;oXNTQ+ej>>3!U1Q4vmVy;otzVx4 zTuJRjckgZ9yB#~&ggG2$a@hO9^3B&$Jr|u!HSpw~Z?!zb)o2!n(Ov7hQm>&KGSjeB z&(bxCgK`RZL7=Ko$4V}S(5du+NEO?zI%vC=Dq5;A>a{`Cn)d9I)%Dq>+2|hY;&mMFd$BRkRReh5kG|l;-Ic@9HVRJU_o-N0hi{7-sHP!=m7|j0gJBTcyPrDRs+0-j zTk6#pSj;t^f^M$yju(LeEb{Vo4TW5zJlAw{p~oOjcwMLYO?oLXysl$jQ}E?=czFGi zx8cn%Ug>oDix-zDieW-8@(M~D>UM=5rh@PrtS5X#bdCGKExJ&?;oXb-FwWNkgXk}A zkj4{&rCz8$1y}g?<(OYl(9Yq_SM-g?YkHCF^|w%!zZxv{HPGk3LN6mtK=5sd2mMld z{cG-}Zek*Q=NrlXRp{;T<_0QynL?l{pl@JOKyZJJOoea10Xe<&_;TRa=p|U{uYgaz z{u+X%pkG1-D4=)WeJ7Df0INV$zwkW&i>7>nAQTFPdw1{Nz)~$!dN$P`4#Z`Hnzzf7;%Gav^=>V>W#Dn2%NTU3BNaw^Wop&N zR&8Wqfu9|I(c=0p3v%ha?~S|eYT8+i8%-IBwU;B~{gne{crdj;`{2Q+PftEL>pYx$ zSIgd~XWqw`osZ7j@1M3GpU>W(o6lG7lezWbiT`)Lc=~s~`|+1g7hgOcfA{J5*qY%Pb4i;;cOH?F4M zqnYzyVq8v~=W}Q`{c37mPMxcv*3yV+Q=E0R)xh}V*nH3zpU?E~tgMetybrHNzxm12 zPd<43{*$XGXVZs61seas!hiqa>Vrq8t8uIA3d@mqx$0fcyyF&k+%ule%!gC^!QB7y zVeg~U#8bN%YJgDv*(pL5Pg~5;#6|`-bMWWq!;c;?Ll8yH7Mv-=sufH zrw{J;wF*3XTpk@PQj2Ae?vq$a;FyDrcY9iO(d0%pG0>}LZRVs&L(H=d_js&4o2ZcT zWlwlERi93jhXd)fgKQ+1K0S5FiG?3GnTx*q{z)782%j6kek-2_I%zV%PK&O7wdg!t z^;dnX8{!%!_GsDp;=@OuJf6RQF7^Q5O; zO{~uzO@8z9kDi~8Iws|bWmqqPy-(Wwv#AEW{rcGGz zfwdYGwXIYijEyHt|7zwxK5kyk?GGQXK74ZV=zMW9?H%`xhbQB!liB5J^5K)SXAjRG zo-dzW&OW^8!5F!mx1Y?cNkeFu;>i&8%jL*^IBT5sH5h2ij{Iohy?;LV_|f7wJ~)4P zws>@Ld_L<;eST<>=Uwq~;$6;KC*$U%*L-j~T@0L)k-O?y8dL0QHKebk*5_?`g~lfO zyO}Q(eWB143qGF*$uqHkubMe%@!6hS?5SngB|w``Y~r-dLCY^t|KcOFK6S}ulUe!H zqQT7DTF>G77BR5tzRk9@x+j*}N(J}?vSBmf3UIoP@r0ik$+jHDGi6s}d#=pX&@ok9HQ6>8B<_N6RY`y} zZt`W2S`{j92)H4$ia$ggg_aAvK3DD0oJ$r(B`b(d$SdOD@}N4qmlnWXET*`L>Fj16m>`lR2^! zm(gs@qwm0aE$>y3$&E!i8T>$Q7 zN)ZrgGy+L7kSQ{=&FyE8*0sQs?)`UPeed;O-@fxkV&`_|;9mA{y`0#liV?A%Qm6uO zwM=FmjZ+z5yflO;JXOsn8LYq&C9a;=sGLfsIV>X(1&uA498@Z!&_zq89F>*mimA!I zYnc)$*OL~LwS8!{!nL2z^)>mt7Q+Wg~Z;@dMa^9 z)(coE1F|Ar%j2a)DYX~fyBDZVY!?D!L#7-{?cW0_W8=;{_uqRxA6>8KK>XgwMUZ9_ z2dNd)m3)$~=OK5I$f;}%#5v^nzY>?IB73w8aL=<$1F;$+c7tmpXMRd4+@?f3EU=G=>=c6J80y)Vub-tca$gE12 z7%ZENAR94=P>jQ@wJ%Z_Q;K2PLxdw__7J=U@+Wd1vmV*LT~6%mZ@e4Xx>bxJXXnt) zME(%g+@sBR_U^x(P9?VP-`cwKCdk;O;1qx8Rw4(*+bzVl0{965kz56&`UAF>EF}@! zKnlPQWd0E5Mxvam=Oc1Gt}!{CLnkK|QU}@CwoDhHi4-CODdc0@z;95VVsN5j0a=em zswt$dl8qlggK)JB$hJhaSk6Qf2kY6yUM+V7lZ;SBDrUfbL?J?y(==AV^T4{>^}y{h zmWvjmThX1niG$6^{^tJ9dg5>k_^OsYA`20rmQe5{SB^sGCXRNG4)*poZ)Fp^2V1w} zyLT$dZKMlUimP;it!0X-Luh$qWSx)I&|z%{$UH3@!OQ7dAz8?vLlr?9Eu|0gsUzrs zY9WQ!O7&`?T+HS($znQ6mXmv%clNjLPN<|0v3#_SJdx+9 zdbM83K}9OLC`70gkTYrI3oLyIt%2nt=)lBG1R4|A2}2;-CNhmo?Pp^3Y~heQ^K<}96%YV~R2N}i$C9!@(qx^&1AQn8qp&hdR$$hO+uQa zMPg|}5;$9zY=v$&begEuDn*K@i#+Q&776`WEvm9G>~$PVcWuKlWaJx5q+l9k%E+O( zT2E9GTQHPzk@Z~S5c%CtZTA9QX|%_a%BENwwCsLEgPly%)mxrL*NYNIwM>5G2~A6Y zY1vU3Pv;F0XYo9Ri62d=a{-GHEhi>)lRFioQ=*_lU~~ywB1R^8Mlm1L+`en<5~B?>HK8UX-lPsScJX$ zyuqwG%CxD#o^9+gqo&gF)P{gRe&_%E^wn$sP@$sJqgU5{bA9cfB-Z|y$lB94t^p}z zzW0IkD>*bK(E0n`a zk1xLsUtZsYkwY`T@PeZL{O3Ra{onunpZw$}!{Go$4KBDzr&F%$xDL9ux3@!B>YcaW z)-)Ar2(?7N=*HXK*||;*UDpK&ubaZ`?4aX^;DVpbb>jqY5qR|K-tLaBY45%F?pF{} z@D+jMP(rvM(|6u^`{hqwd-WB9z@Y#nLA;DZ?FJczWy@sJFT$_0gFbR>4`_RH?`1$L zq`jsMY2HnJb+3Pup(Ya*dC8X(_ z1aB#f4)0-a00nrN!f!+52$J$_A4pfs_ujmHQ%d&iMaWG+$WT{lz0X}>YIT}s3E&18Pz8aY;AHh;%n-~~%klPzVsjF00KK*p6 zf9JIMot6D`YMizO2zfG+9`yOsHoIzztFCg^X2(_?elNS++`-#o;jBfUc*IqQdDQ2Z z9tj)qW3Rq)>L!^2u|Kl;4qpOMInx&M2Ay`8j74W4-^-!0Xo;6S@zGGcni%I(=W1fj z2F=CDKVNoECSF6q#tu0{)`jx(xp_5pK76!#cD1@%bsx;!4^G=3EUjn9t!F2#_b+-M zK0bLg_da|ueZ2B7`r?NtjoiXwR1RqAiWv_W7)L zHXkeojpMd(+>xHobeLE*uIif7^UMDENIMo9qB5VxU9N2J*v+eKn9CPTk98 z?|j}l@5xP*gIq>Uscn!?r|L-ynNmI)8xI%lCl4<^{pk6ZpMLb|2alhgjW7E0ag$wi z)$@7l(fRazHE~UG)Y6tc?X<5v9;>UieAW?8ky9!K`tHF%{9vJfcIrGB8M;V+v@||m z8dqKZxWzqPc;{X2`LXx$$I=UTA|s&}V(^JC9b6CptPCt|hEm!o-&r zz(sxWVxTQsGB9mlE)KLZRBCtqy+S%Va{041ciN zU54!fbSr|}8Z_!(1B0(dHa>0gvnEnpS~mGfOP)4`sW0^%4r$OBkSsQ~5cRd%ag&+Y zL|3adC4_4rr7FEPYp}2d8M?eDp!j18Z!0y0tu<6~*pTKO7}~O;Bm;(1svp=M&qiBEtr@ z5Z{uqI9rOqFG%JVTY%PZW#k~n5h_iw)RL=^#c|(W^sI5$8Mf`AD>THi!Q_3N9d(>Z z$C|ZOwt|jyGhn7jv>H6^KAuWZyL)&f>1}K zkY&;Xi|Xoio6Q6HV#ybw46sEjwG^ylP(zoU_soGw`ZDGzL|d)ZGdoOvFTH=~_M6|j z_s%O^=>X5{ij_!%%OPbnzT8l8SE`t7-W4k_l5{yv6(cU6?`zerT0zdyu@r24!=vAHGTm0t z=eAIhsRCczLio!I6ee_~^oy|64L}1C;L*Vm))S&UH$YE#A5sW8g^exiQLX zQv7SM6w=;$QFk>U^!O5K>A&7<=(AC0H5<%Fot`I+Z4$;2(ttz!fDXHaG3$wCPeM1o zh?M)_rm55#8mUqlnauL_G*eBmNX|!!1BKXj_Gp95AM%wb{BqT}r_^UXtEtv)u7LDF z`BFo!B3(Q@r4nhT98DeEm+J`4bh(_ztnrx@M9Gka1M z8K}zjgi4nbu5O8S-%^l}pF0GB5ad6er4*6TB}U_Mm4f9vi~L)$Ad8koluO1{$)+P) zGF8hQGDO`oWnZH$7?^a%<q?`u7(^ryj0CaQ?cF1 z;Z6=6a-YVEX^;|4g$IeTlG=%E-%1{?BQHXM3vdXjXZDJzgT2i=JNMqI=l1ZzVL62? z!hqW)s!+282ME&2>;dJX8&C|iQ`)*+PHfY~Bb7|& zqMKRd_59xUoi~mS_BQUkbF_U6>W*dhxpI`q9pKr0EUtOpr^+y{NCl6kxshY5tOrl?8^9g#-o69@N!kvJ?1 zP!#r7z zLNBC&_o7?n)IMFy;FT<1Es$7=#0uqHoT%pUat57zmpv*bc7el@1Fs}9^eZ3(y$xvg zQewN3+(vwo+Jmuquya3~OK;wJJHB^^fsU@nYe~e|C1j|0RL@7t$z3dq(4u+?C|M7D zKh+8`X!F435aJx*C@5Gix`h{GS;z~SM(#p;LO2u^;y?(rdEl)K8BUgxJLt&EQU0!xCk>hFnD9#VBInO0r%+K9yjEBf~wiBCrII z$kw5+q4yO60a82ybF)+}3uUh5jsymmS)9dkbU7iD1!QAbOw{uc;CUz>Fdh^DO1QUm zuaM70wr_`Oad_^i5Z{KD4159Y!f=+!9E?G_91{p=>h#g>eHe)#j_6tCEXw^=v7zBbrArM6iMKCmgzJb-IlkSPaZ$Gd~kkzHt%jA3w{<>iT`oGap6e_4(B-BM3F6_|$Ug3yC&=_f zoelg&%WfujAH4B@LYhqhECn|RU3zWpe?D6KXXUlOy}tJ3HH1T5zU1;8Zs0f6mUhaakFc5A65bEn#Pk`yb6N=`#E|hkEe-9pS$_Cf^`hBQESQogUYIpA3hFAN0d+_+@ zfBxrT_|Jl0RaJu2UcRo20R;7iZ+pFN5EorveDOulIM;9Q-nl)W&mjC@e;<`CDBSC> zy|%Nx{i7fKDE#D4{^U=}<X2gYSPo3=ESBdjZ0MP%o_C zf9dT_AN@>~^>1KOKp`v@AS_=C|MoA?t@rMByMq_`{OpU*zTCXG{W?;ELUixF^~Gcf z;Rid1H;~gWQjpj6{Tr{my}P;p`~UV2zWnSrUSK`nq^)~9fA??y&p-XWpN5Zc^Ot|| zmp}WnpWV>&C+|b}Td%ycw|Vg6AO21l_$U9b|97QO3y~@Kg?k7IU;XHZKi=NlfBluW z;T7cj^Pm4b3=ioC-}^zB(JxR4PJNAj5te%GmAAJy4}SE+-+^}c{`Y?H^|#k_4NJZ9 z?HgDMe!u2$gfT)ABC;Nal)ty{om5Fxyx(R4%OFGuET+(Ji>j*ra(DOdtF!O^XE+2Wo-srEQuU@+%d@NJ?Uy7KNxB6KRkZ^VE(~H|Kq?< z(4r}v&HAU)*7>yY{^P5wv*jo6KfIVVdq|6icsx-rdg5uDJx7W>^7EP24+Qdyp?b0G zUL6nTEoJD*qn5b{{M~%8vKvx06Wdiq^73TRu^5mgRs-kic=F-W=xY@a13bAh^KcL& zn_SkWQ}xX5-ukHmj~`5o2aEP`SM}v8BtCM;;}&z;7A8$?KI$Vgv~KIWpMCW4})K(pN?ja1~$wd9^%zL(QI=1k5 zqI@{lkeBO$@xi0h_vhxbu?$syx^m|}bJAve2H^@wv>qB*V*egrjoB#pT;3Y08AgSLZG{vg%K#Dl~XoE>5hPNu^>txArz}=Mu=LwNgiJt=ni% zQ}g)3#KMtzrh_z?1}2U?f_rk`S0`;{*;Xemb22bi9cg5uL-&Rz2K_ZMG1w2yY<$t6 zr!LWw%OJej3_5zRt5k+YebNwz-KN17ItW|DhZf#aF$K@KLb>NK1Z$+^pEEgxF7UdT}SL8b3zRAg~8HQt8y&{8_IsK zTg=2jI)#0C=IB1ioW59s^cy1bEv=F{PpW~;-w+Cr_|QZ;ViRBPH&kCNL%7LTJdN&H ztS?qZ9!C|U0$FM|EZ3Cr0_?eSrouE$&SHzc$$+Tu>x=^%G?sKN&3A-uQ|tR$Q!RI0 zsSA@v*PZsfo=LV9r2k^`#g`e#je&vpv}#ks8yeM;t0@q)(mRF2 zJ6rF4d*i)V>#6Npa*N9E8&n#mUyy=Kq1rOYHjG4#rfO+{#(2B{BCg34rh~R6;1-i_ zN+mDQvT5*zmQ?KPRp>PdLrMoA;7Mdomk6H7OZBu+jiWQg@KjSQ40WUrE7lVr;~|U> zPs03c(HUqu2sfFm&Q*0P6=E)00zpnlCnx}1LWQ94J`6;^0WJg4oEJuXUsG0Mu5q7M z;LE8Q>L|VV{RTD!@k1Zy2>l6RspvK7g=?G$sY-?PlD1T+Bn3BNA|bt847k6^B|M2Q zG~&B4<%5zyA|532BAxJfKD~(CW_{({J%Gu=vW3VL+@L0c-xp1!rv7^0H(=hLjXL9A zbJS_}4PZii+~8o34txkh510XX8(0N~lFK85Q{Wb)!bYT7EJY(%--xIZGW7~P%OGtF zV0E#YK(=7nLyakpI`;9%?mJ8ySVbp1F7L3&U9L)I8d8NRUdw)51$hmtXZAcMBO!Iy zd+YDMa{JA1rFL&0t-ll7xs9cFgTwofp(v3*#0rUqt@m4QITOhotyAR`h+fTxqYAi8 zz|}>Ag;^p8B-9d6JCn&H_j62MXNodg z73wJhB<*reA#)(jGS#%q)_q&^EV-Bhi4h6OL@6$yzlEfbi!P=D1uMq4qT9C%AcsfR z<2$$0hxarR*>FX6?j3BrlaAc4!kCJ07L$7*z=OaUdaeoV$l`K6#n)0|Ey;pVO_X%8 z&QT?{dX3nY5<5&O3QY}k>XWJz2*YZG zip(FX=tRhPIk}tIzYko;loL=>q_c*Ox=Y6n_tMcFiNy_(kcb>#iPuq?Z&h+JRis(G z%2yM>8xn>ZR^{u36!N6bR3Yob=+2#;jeD7Rw33Npxg+RhEE|BKfs=l@8pYGwN9%8I z-F@$9ccYx#!HUu3(N+Zcep)9>5!g0>@L$a%C-g|$u97V0618HMsFtvD0jQKq7qdyM znB=O-S}B*$ChFBZRnKQ*TXZQxBDFhY#aR#C-WQOmV==j3$tSVw5ne{1RVuO@-M*8H zZ4)ik*H`S~h~`BhUr4407u(;8~%b z!E;B&_$KmV9@{L$cWb#Lu@+73--D5u*uAr}c^AjAt$XjJ_U}}a+tuV&=HPB}?`|=+ z1zAJcp#4FV#xi?InJ&FoN*~sdU#%2TL=6t%P^xO6C6|jJ)(bIo#G6d>WQi!os0s`p z^b5@eoeOo$$9JF$Qu}we?!B9cN7IMvN87hjhwG)F?)mt3@?bp=eOHdjOc_dxJnPlc zm0bK_3!Scp;L%!|$MY6Nt)-dg*I@wFdT z*Z$r<@-6k`O=QaVTn|yLF!R3;1dV; zx7TkS>~6#kw|DQq6W_ZBLjrg!x_d7Z*{&j33ZWYzl7i?Oh50Jv>C>k_`q7UL4)zi4 z?|t#b=imSS_k%but{1pZ2>k@l*Jg3y<2413zv}ub^2_((<4ZTMzy3OcqEN_x1D5i< zuVAT=!V3xyRe*}1Yj+o_1{H+(5CZXM(k5jAzeK;{<7;_%9kK zc>CI`&z?OCajutPsokCJKmMaX>i2t)1yH42{*yoX6HQYgH6Zl%kN;@U??V|jHxObN z(zCD^f=}R8n9<8`e~jMl@9iAC{pNe$z@C6YSSm1Z`&#(RfK*6NpFIE34}T2l?C%^N z>>Pga*_Yq{-Vbgtre{x{|M`E08vQq5sh4SY^WcyF=#PK?^PhkD*>BtgejN;Y^9SGi zXMgz@fB7;j^;>`Y?;h+N-O#=F?nC%qkkp_%3Sb68 z=+}S!*T4PkZvh{^;7NG;76kqcxI$3s*M2P$NjnmA-WAVB#&JhFZn856M~8j#<&lZE z{3>-HP9e5@_xu6*pWi8uLtS1O&hn6sfdZfZ@Xc0TXJjCMM( zK^ljRxTEp5F8Qv}Yq@RTK3$9-%>Bo6_vsv&zdamji-B=AHlNP)MezU^qW)zCVf^}4Ro(upU>t<`k!cmJpF{=>iZ(T67&vb-a+r}#oHXfYQ}yv!hQc@G@~WqPc{NW2!^y#q4s zgC75UrY(Hhpi)h#;PHilj`g$}h}O{iQyT~2StZaZY3F_Eqowu9iF4ZKU`GP11)X({ zw3fJ8lVA3<4^J9Tr~0bJpA77a)c_W}_n$m`a=z#&6^qHimedruMuYh2zI>&sDV)|3ZY`JyX!)!Om6b2@F0o2u_v z(_yb?vyc>stbLogJejR#!;|IobTJ&c?4)Ncrh`$-=;_$hV}MD3D~1M$e;|b(_IurI z@(5%z5WukPo>Wf(*MX=%b}3h^hKJ3894^;lLz9^JiqDsPzR=a{U7Y|iSisU2hcr{5 zmmRJ^7LF9Q)b&9mR!tF;i3|w*p3Zg}re}){4Y&BB##T&KQbmrVDy}Kc`i)V8U-gaE zq`L$jXllTp(4@02@P^T|DJTqb*yj+7uC|zTCVjte-~%9&7?^lZt%9Ja)MACB`?uft z_09KQrH~_uJq1tp0;deV&Ztz*63T6xZRr#`?Uc#h8f>#KK0(z0-H6j)k1|kSw z!BRJvmr+EyhaSyQNxqIrg^d#;Q#UQ6Xa4%QW6itPa_9kjOkw;QXl(^%?wdI9Axw`j za$UYKhOuLlZAWOxwWd^t0SMI7@s?UM*_=>|^VL}BQx|Y*8tYK^C zv(~t!d2${7NlB|p7>KNULM`SBc^DKHoq;iKP#L)vcbK$PJ|ePv*`s^Aci*`4*0&Nn zxAyM8ojY3R%Tc}@;VTiL8W-?_A}~!?Z-`aCmQ<;X#iK*$84BlUlE5kiRyGvQpmI%< zX_=HK6bvQ{BN3)e7tGEAO>@!TFYc$K|!XAd|hWM2&tj6o~0OE#T4odOYOKC z2tQOY%42C)<9e+|aF{w$M-u6(Zvyk9!vvrVLOp%3bt@m+sHKq?q3qH9N_+z#2Z}DpSz7ib|kEwO|l|7)jQ$ zY&oXXlLlXQbd3UlVr&_?=VO5Z%7F*EYTOhn z(4kB*!j__JH6>8M3BYn$SWrMv=g1oJzDE{$JPVVOr*mWl`4s2yqRLaqIr;(8`GR_Z zz;B=fCDR&}(^%y32iE;kYQLUG{*R!|O|A^0BGl9*(+-nGDx9_0!TQ_x-hFNB-rEOT z?`0EviNg(O9H>k3aHE#nM;2}63|U6%IW(3kqz>^yRHI9Z$dn7&dbLSIizPRF_8QPJO^w5JDIJ!Z|9<0r4%}o4mkqDGYp1|@+!F~RX8Mahef2{ zgzSFGDTMy;1TuK6q>%4zfvjTX9P$8_KCBkf=nO=pQWS^CFi3&&v8{483fYO32u$_J z8-4z$oJMLvkZdlpaj^03*8O*5@yOBk?d;**YJ8)bK0CgeVu9lDjAY&oIlz`I`=-h)UI`Kf}X`Ut(fonHhm@XJBhh-0-Fpv}!02(%P zw254d9j!y-my_H3o3|1%q_4NX@m_5AULn2{-ML+gZ=$Zx?9qiIs(?Utr1=%u09KFg z+(C^~IK*>@kh@4^Wf2!DY;vKhTXpl6J0UB1uc_2+C;Ea z5n5~uNF&o!8ChSJlE7Ulk*-y;kwOv~7?S8*OW0|^hdb5m5mty3r6f^G6qCrfQX)&H zBHD%u^Gq!tHDJgq3`h-3HL0*Q-x3|U4kJYqXbbF0=@OTJKO>*T;!`b}lpZ}N0q78s<> zB(gG7He^~?1Vs`wS=3dj*D!1a`H`v?6Uc)UhtoCWD3E1{ZbSEMO_6v_5hsJr@u+b+ z@y}O7*wD6hyeU^YD(3Pfm>wlO<%ty=*_+p!w$QYtX;&RLxSq`n8}j+oowzLe%Xdqg z4muaB>BaGEIdtbOapsZ(qYl!|sHF~l<(Mu!50Im4Tq#t8dS&hJ$Jc(FT>BT?+V9Y7 zKd7($Gi>dDEw26F;%ndCTKnL=wWqHm_~}6aOI-v8eei9lHWflq&tF@6|Ftzp`N^wm zAHTV_mX2)2_Ryhw$b>bs4^!vf_C_qSzjNCKx_(6GIy~*eYKls7s#zp|~gs4=2Lj?r}x_(53 zf5mm3Kl`&k+uK916slkl2p5jm)9Dn-H}HD?li&Nj&p-bh3J_{bd9HKa0zqYO?!QSd z$_9-Cr3$M6^u_0&!(-S`pMCl%y#4NXf8%9X3c}xg2U!d5?rewA;1$Z(b0Gpj;6M7& zkNW-I&D$IL;)}0RhL~Z#Pyl!gGWwh(2vqf7?OW>gUj|G4BBhd993$ZdK6&k1Z+!9D zmp}QvpN3e{ryqX?kKg_ByT2Ni3e5n&dL%IV$3Oh>pga5zfA}B1_+_xv=H2ZdeD4QW z7Y}~>pa1Y>Sn8LmRvqjd{p`BCguMYeG`)c`UWh8WAu-H z_~Tx8xV?FBW6<{!T}ONM)eu4b%D2=tKJ|5!>Z`|q!Ydk0TOxhjWL7N>Ce3j}n0j>I zs5cFUDn(5?gWLuSg`rmQ*xb@3pUxZ4PI_lueq`5|K7}xyk$ci&TT*H2vZo#Kyu+Qe znF&&@^&l|YQ=3t8qvv5ztJfRG`>Y>Ae z%zrlTkJ}dP&tNN$Tu!JU9~y0gp0thQp89<0d~)VL9?1)jI_ZiJ#_EHCICaTKGyCzv zeK1s3J~Q_C_s@IpU-X_FHy=#R%N`G1Y7+I^Hz8E$KZFkT#FXpWWBi)zEAPSyM+e4e4HE39;LB{JSC6md3Brw*i zI*~{p-P_x^W!okQ%yjXfr-y-KO)&hfkhAJXv%RBscGSqfVn`No`v? zTg_I}!KCj_`i)`B^5v>0l^R+dq#al}mJJ%Z>8!7ucBQF9_;P9Lb0;0)yepixAyWoA zy{qFONKY-StCo?I8srA0+zDJ?*E74YF+!k^T&d?HnZx_3qjj=gVre3_cdxINCsu9h z)Q4ux<8y7bG;z@1b2>`Jmr8B9+zdRbG-afFb>2Z}=2@E?8g-dS&s%EXOB*>voHoUI zgN1sXw)uHWesXnuvFu%)E*@Q;Un~X#y|(gcgUtAb0E?e%O3Ufc*E!!5hAngGF!Kg8 zv|ts)ryg@UGA0dXVACU)nRqlh6;3L34YF%9zJ|Mean{zR4R&Z^L%ljSv93~X2{|IO zbF_UYoj8J>0kCLaDK+?HL%H9lLJQj@=@=T$IJ6YXVO+jK2p4Dn{>Zv^xMv` z?VOBTr}NR}@$|u>c{z~II^5H#`t-PSGV*3!^L#O0_$+E1kDIj3dB3sjS$&Hfqw&H_ z8~mg5<8iM&8}-gtv&FbOANQeKk7t8%52Bz;7Qp`v0?`_^rMRvq$)EDv-kbcd2M@Fm#gnUKWRL^E%Z!vBuj#Ty4 z8YBpv4ni_;0#IMafDQUu1xh$@n4ZOqEDX95;(&yPv;|>)06|(t7KKQ?POQQ(8N2KV zQZ|T=E6aEm2Gqo*A(6g;kJ`p^+FuO4F>F(Mt?95c>Ns7CYwPr=>m4t~%W?B$-alJT zm*e(o?9Y1Es3~_%3gqfVgNE|Jj0B<`S&ol}1L&z-bQ9!u*vOhp*4LSVD~vq0ErUeoVbhpnNDW(eO_`~sI6QA_ z0zBdvh@gDiVm*bh4M~@2Q>A@J8Fu~SS#LS+3_CtBB2>90R~>~Kb=<|cGwa&WXs}nC zcl3_MI|@B)H@Bw}5$eL%Q#_W`NThuRa=xolu1!EIK-}+K&nz9-Dpbz zA+@0Rns%c|6;K$*#b4k%0Zp1~0~oJn%vRJ zG>n({`grh-<11vC`7Xo~LwdQ6)1}C8pC^ zlg^6u6jMv`SRA$xzDBidz9AMBB4r7cropyMghaPB!esJD8&RWMuF-TK0ombayy#e(C z`7$!-6rz|?_X_T!phJafV zLG~e`}dGqQ(_zW9nbCw zl}LD2?ETwsM|SSS_wK^%r_|Be2s)9J>Pe8yLF9%C+Nh3cgG@OrIy^q~GsTvpz(qnW z0jpar(62#YMo~G5kRTXh`51+~ z=Esm;Cy|zF$T7c8q~uz>lHB3Tk-d9wz4Q97-+TA<)WQ91YzM#Q|NZ#k4v7_+YMQL1 zYb9hc2UV!%qeMBu69tYz-mj5{OYR6O#wonUQW#!Jv3N<77*oMDrYParYUZFA-{vZ@ z?fdV*+QC-hNXsdQFgt-PGFTQ_iWSj$m(c!!g*Y@?5~fkQiZp;A8e2_>G^`9cte7H@ zyQL_UU#Oujs3F8BR?F-~ckgCmyU2MNnS-8%hJ^;qMYneEzr&P{nBpN~+V|er+_;xM zx?f3bV#%#)5X7s$?UT46^B~ zqqoS^6pCF)F zjZ1h&#F7G*fKCLSAqz-b6UqQw3QPj8&>u+fv@O@z#2Tp<2kAf?Tk<-7R&Rs6to6#V32Y|C6KeT$liKn_a0;#-MNhbspJmuGlH0d zMu1&tJ+lWl2rEqP*0P6K21ZI0`jM?B*;)$9snA7qU_$mVpFsYzYT12s4kq$Zgs^%UQX>* zU@;AjeV{67s#f4B*fz+fCehUlL=)<{Nv{cmU88c2Lbg23w-s2dHMXq4U?;XOfc!f85uXJ@s_tEV|0jp~scTqX3o)K_#FEuOO?v zf0A4K7fe9(+K(s%PW_Nv`)BpF@7LD;adGXR6xRN6e(fLU*8XXB?H?uA{?XCe-``pL zt@X9Pd3){ich)|7bM4vd2$}l$jkPb|UHhlWwY9{-Ix@A5ZKn=53UQ<)wYzmca=3fA z`3{VkQUYn;1__EazSN#bvPWN zbi(WN&oh}!0P(!Qqyj=^3n)x5gr%;vr63$tExb^@fbQJB_4Mfz$Vd5}PVHqHWu#OND9s^kFy4KJPH?Y)CfAW)m|L^|Yb=!RQ zMJkzn8D_en*MFH2->;(E@7;U$Mc=&Dj_6CO<^~W-=d;^yH)Bn$(hMxez+c32k^i3S<8wBNf0X8Av$+7*v_=~^% zJAeD{e*W2S01f)%moTZ9=-bfYUvqi>OL3@gJ_Zzxrd5taf4tRd4iZ$Tu7@t<)5Yu<)j`Xd4Vsgd zZZNr(PiahEWa}U?Hcfum)W7Z%C4*Pgu!(O>* ztHYK(@0hcec-CTIzMgcfY1um|OlEY*MCIO=L zgH`W*WS#cp%dz?7e6XDKA77o$C&RXDoQ=J4uX(nd9FH2~rUL81xa)%mG;C@Ekhjfx z*P+`sJ#I>;J@vfHUrvxA;n_f+da%VO9xt7f4u8?(AB@y-QwC8P!siWU<`M(F0;1`_ zp}Gd%5YU-WAi7Y+Bd8#VJ+QHW{Q(WT0kTpn7b9D@J91&+)u%QBcbZbMt5@d@5|{yX zgi8)Q$(O5r2=oyCGIfwYY~TTsM4EvBUr$Z@Y)1;HMqGAQ}briZ?IJR7e1=IMMm z9}l{|)i&s>KC~e>?lczTo@4N{QLpbCAc4p%3_=*E?UPv_*s1TZ0~a~=hBdqI3SC$2c-CS(xHwtBMq$`(%*XxJ zY&08n+fBFY!!D%Jb~KH{U`qrwZL77mK@QvctY`OhY-nITwGwDJ*2YGq6x-Nce=mNp z0b-la=SC)mZ0ihcU|?OX+Ey!F3q(r3XVV=|X_!LK;YSV~=xbC)7Bm;u)~YQX@9Q;$ zQbAie42=4YQfW#hkhlz{-~sD`{Ok%tmxBT{#ZphLg)s*)^yyT3_6QRA02DZHYdX#yj@N^C-dRyY5}yI_GW_y(4_1190|(c2O3x| zn+1{5Z#c;a+GA)`7B<8!wFaCp?loq8Z#wiRZNn9-ZIhjMjHye_JKDe%CM{&{>c~V> zu8upwB-1uwN*T6o*gC6{;Ja4Kvq1`_usn^IHJOJHNnl$IYtXjaF6^@vTNfNtYBsE4 z&p)2Fm(yX#ce}PQ_4q~K>$SYepbcFHbIGi0&ARq<&}!O>CDXm8v*mI}0`ZZM$LXl>dK zV4#;^DTD!qc+gAKVAiba3rs4Y8vqD_L4l?ckeWfT)QuifOI#Z|*PmZ!`XWIDIlU;x z%k(us3PN5g+t-k?;1y7tTJy?lYVx`mH^>w!WPnV4g~|mjfLbHIW@P@ySy{-%Q5v<=OA->COpY3B2A<8XO{%7AnP z5>Yy`ojBYoBoAtVn`dNkgH9!j_6%a`(ZgUJhZGb%g{)(W2xkFF5*ArlpnU;pFfqlW z?BRX*1?hMD&KvjMc_kGbS_jb@Lb0#cn>r2r@0n7^GnmhMgRdM zQbo3YAl{S3sLkdyBCXVsw>XQ=z$2svJpxiOM1V~lu=H+x=eAgh z9&Nt+?(4sP=j~Thdv|L&q?gdQnn4n(p9T*qSBK<{iHIrFY&$ov7c z2J{Y9IMm3jCsc%bMxbjnR;Z&x?hZxZcBnXo@l=h)i&QBt;yDq|LcQ?(5m(Q`hpEVR zF0oIR6Ff5IJ3vZs$Y=acbmtbH-D8W$hyA_xUcdFu8~NyZHMvFQ_UQb6F}_twA`}wJ z0MRPR9lD613dppcL%(GHkjNqr_knud4vh5Bw>sP-=iHfn82IoOJ}kz!k;m@z9^7Oj z$g@=~IPehyOMzQ1q5$!cr!!a}phE>B53PZ!Ukn(Ats-NzIvNyQEd`OuLPV;kVB03w zQxcJ3D^TkUEKF<}DVphl=Qx!}122)t%{isYJglLb#A&d25oxiW;wmv{d>+fHWES`z zI3#p72P}#e63N)%_MJC{S|W3JKYe%)3vj69!TmxUIsPYe=#MK-JvY6vv}#%VpJ(RrCFK-&rga9th7LM64!LCOWBl?JOnQ-U7Z zW%GMN>43=YW{&RDB$1ErG5I~0N-4Dn>`R+Mp{Lbg&i7ObZDwE#s&I-x`8wTlRbA#p zjwG>SJ{@rsh9~kYQIdFC5m}L?VBi>B6*d=+WjLmaCNWv?EqUatm#fj`qC0G;24B~? zT2p6ig|dRb%)!Wo4PH|tL4JW9LPIQdHB80Rj!+)^;uL8F`_rB~>NvxW1CLWAf{}~1 zFmFq3lRWO}(*`@i3J4)nudV&&-L)T-)_#{+`7Rc3>8If%+=PD0!+Z&XK%U4wcRrv0`Jex}=Xn7-^9r((x`B#9 zLgo4jmO9wq3&X?fCc&MZ?S8-aqaXbU$LnGIjrIHA|Ni%&7;ydcCqMZy(pu^xN7Oe; zST|X`px0h|HJiy?U0#M?!37m0a6E*Z&{wa$`ZZYU8dM73B24P)>hcHQ|2|SB3sQr~ zKmYm9{~&PF4%a{YhyOs=w0GZq2O>jjz$0pez~%W5e~6kcOb1E}O$U!~19W+D^-Gbd z*8&}-Zv_4-x_@`;```OPfF*rNVAM-U(;F{fsiT(ze+7MoK>Z>tl}YBWE*?TI8+W%} z`PLgDEcI&e;b$Lz{?p(4=?y)&coNM`3uVhZS1t-QZ9V{^e)C@e(Zc z)~G)TN2+4J{pRhLQQqSnf8oL?An{Mj=5qPc2}zgecEC{3`V|A)N)@bwfHOu#<1RTyXYx~rkl8Xr)pb?sG~Hgy8TML>N$+^n z011B;=$)SQk+O`*mu4OUn_zq0(eXv!K4}XJpP4m5-ewIt(-4azUxbNr>C?w82Byxj zO&}emmN2&Pvq^I~XbhWX4+*!vA;IpP>p3FG1~3uNZ2Y)y%zEz7*Oor>WGq@-&fqFz zk3VgaAi$4Yx^EF62E_N*6`4<1ghP8VmZ`KSjiVRxHu zx9LF0gJTeYjkaeuZLQ_#ErV^VwSkF)sMB@1na^JKrHhgI=xlsC_Kv&Cq`|ow{hiD9 z#X!F736Ey>$*jBRXwcvzhX$#ptCku}&LHGX(Le~9ozXEku3k6_pC%JtRIJzk7fJpNp6r6APVvx$vl=Q7tFXapUR8mWsnb%eSNgaK)^N&c*BL^@f7AZLZ&t zgDQyqPGd1@Lld=4rfYMvmON^3EtBj3TUrEii*6A}&BsND=)o-EN;OBJKz?hh*tF-* z`rgRn`W87vr}!cGb?6CWUmDmX492!j_FQ=~?9L~n@t_L=ZOgNVy*AWtKJKn2o#nVa z8TO{59(3;Ua<-aJXX7DMb}=2DET*RrG8>LOv8CcIxr&Z@;R}W)#}CnIT(GZ&?NQfa zC;b+5JiDQ=;`5;oNU7MW_T2PqDXaF=C^fX1bbgkEJ zc3U3oGI<(fNL&(_Zp#G;98t%IR}I(nUDLHx;K@lJwqn+F*ahbFO>y3L&reaeEoYO- zs6QHXR|~l5LZt>>zv=0|tw7(ke8;sk$fKj-YCUd~$!cO_^VX~T_uo=sPfw=hdP1QK zn#|F7)z+1M+aGpYkX_RhnvM>$-*Se4S`dj_4ZG8{T}yIQcG7JuXZ_i@2aEzO=~;TO z3EZwWZOL~n4li^(6<7=QsS2J(xS>sr915m_X@l>mwMEZ4opn}YZ`v_N{bs*uAUA4C zHUwD^AoUXI0U!lrBm-C~K&C=yMhT7h0`w=OzYTbkfufDnuKM6dq z-xSOv*Luuams)d+L6L%z+!PPNQUOkP4M+tBj|i4ZtXaALaW!fIpF?*yY{fU|NlRHy zV2GKsrgXj-jJl0!6XXFIWc7}L19QSk1iU(S&}o>nQSWrzJRMj=hn0~!Pb44TNgS*v z4mL80LlPvbViII&jYfz1wUo*L#=b*N9dt^j%NN920!YRZAPK{G=_q9oW=s39wbV{2j$D1W#oLheG_Jyrpdzqhxro(7+K(4%V;+n zz{W5g4chLkt@=vcm#a+`)7Y{qkdDT;OdeK7*gr_MsKaJGxo$|5Kvz_@h)yKn%eI91 zQq^R#eOK<7jKk#{QUzK3F-4WFniA83<`PRyll3j$RS1VK$yC|mitq_lJOWumBT_J@ zDR@$&vnpGtWcCt!cVKI=ar=$<-rfDJTjj*IP>sQAg=`7=GEvF!SjJ^@CWVv@n+lY+ z#1jQaA|NS)O2dMSqQ%>%U%#ZB!ClY~esC9~EL-*~kW- z-GgpL*i&X7DZ7=S4Utw6+`z^X5`hHC{9!2$D&5=sZ|Ex zR3VQ1pu>=akaBVtm?{@TAJ&la(HrdfP*X4|)k^7dF~9!aYmj&`wwaHtLlf1~yXipXB~)93ysFS3cn%sC zHZ}s5fq|y77;>(UOi<&QqYVVorH-$j5&|VUaHL4iJb4R)O4pBt6oSPv0+!Z**~B{VDwc)pB77|+V@Wc91S3uc z39Fh6fXgF1yIW6h6PcZI44HXK0#B9_YAxCob3T{x=rqh@zED7JPmz6h6t<}wF)QNP0l zzwFw-VAp;ZerW_t{VTX((Br@6(EYz+)_wvv@XMl`-{aSQA_Szbtx-s86rHt~I=r6& zif+P^aR2t(2fN$l)K2PP{b=j<;nuC#-g*UTOMMNNx&dy&>n8y$6^0<_B!H#hdhNB> zb^_1be->Q-=|BCa|MFk{i|e{y1h7iH6BH*Ph|uu75SDuJ z;WaF^xv>uQMNZAb$PoS#h7|_FBb4FhQP(wiga|-?`4@iy8HFtXHwZd>kq$h5{@It` zfSE#i6{-AuGw@f@t3muPUNYhf=_Od|24lK;dlP~bkzRiM=?hpYP*6f4@c8@x_7C=V zj`nsAf&R|l{=4wFv$_AqD{tRK3n|2s;07}N*?-H3?+4%e!Sg5YzXVHtEh!*K3KD$r z_)QS%8w4c@EFZrj$M&K6dpk$J^zmhS?UgrxC6Lo7xPAe93a@Vjh7^sYH4dG>?gXdg zI9y@q&?Ao(s`2E(I_!JIYRnU>GDpBVEn=yLPR>W}$+GwS;q1Z8>>D-o=TNc0l_Rj| z!g6Ae!qY{nqs@GE2St-EjL5=ft!D;_X~0~Jq}Vb!!IjWNdD$1whE}g>HeES5 zkO=)D)MTI-)rpNSJm!34E&3L0zaS})#wQ+9>6$pyvdPaI?B%q1IqxD|%&HIcn#GqT z2J=j1*zv|~d*BKKhn@HJ5lH(UJNDH{*S?y$kEV*v=PWkU)5?9Ve9~biJ~L@Bj!=y5 zZ@^g2CL^)EyOs0~>>*4#-P0<4tM-R+o`M0adTa zYz?-&NXD=kp2(?me&q3I^TE~We4ry3aq6=m#w>hx)fARKe?Bxne0p-Wnk=V-QB&&~ zb)*_&;$xc}JJisoeVvMK--i7q`pYw$hqfYfd$1wKU>lK3?XSO0WOwH_Hn-~yz5rVd z5FT8i*hPQ#M^3Lns)5!<&Yo@lcs82$9O&7ZM-Ls|H??I`7}-=u$3d_G@y28dun+ch z0c5#R-v{}p;hM0W#aNVcVQfdMAtV#mW51 zgR_UHvk#wKK7V|9b%u)CZMigAZ`kU?i}}_0>gxRDYBhXtI=fg+CceCycFv9$7iXtH zm*=O;`RsJoKAH6vv&nRXpoc-Xb+VeBF30nMHyU(Si`nsVx||N@laXVaP0#LkTf;$j z*!3sAuxLvl){e|NQkybyBDWXYyO)jaIxt9ug3V+bO1<0A2kpkh<6zqaiT67#*v*5$ zFd22`)8S+^7?1kLi^<7qa=hqGduCTdu5e)B3@u^`8;+qn8@JmQ*LKw&NT?1ntp%ZC zIUA08jeb*`j=JNvK50q;z|k7GoNI`qUi)k{9}jx-$#634L9s1e@jZJyXtzCm)OA<0 z0f>K#=@@7QbszSj*+=~@JVG0ut)|C|5k#1F?Y>2W1PgPK-*DrHJIVcfAZ8%@UtpL) ze?IPvyKcADm`#QaTWd8e=%A6uEudmez3=dSPigtyuOU-L^0CtSs_S zuwKX06m-C|z)>n3R@SgK#6gW@XpR%$lA;A;_F9z-W-RRDk|80|)2Fp`P2WJK zUWR_GGD-n~J|W`s0*VR&pb!HJ&FGZmnpwVfBh_HndOAwKBVB_^A>`D43H(A%)?b8Q zBTzR`RB(ez8@bmX0%tjk(zL4C<3sH1{dSWkiw0XFDpCO9K2a~V&e6_9DEgl4e8qC;pkDj^I(5QPn zjQ5;LBS(QgV)rmv%m1s-I3FX6s^|#k=z0MR5x$+T6i7lz@3q=q=Mh$7) z0md^tOYOECg{kml8Ke~8D@ouS%YgCHZ+l%=p23Q23cgbB+icr6nOa6Ab4^o#B?+=~ zg%YIMP)V65$x7Ph5rXCk#eqfi9YMy^P)H!8EZh*=YF(hp9909cYSglj-j-7Lk;Na= zM1So-r(ps~cp6EY**(6B+;z)DS|qX{F-CXqY~6Wl^Y)wZy*rr*@{=uMab%9l=EiN4 zs%4onJmx$;?{RrpE-eW+g=)i8#9Bha(6N;!SN1L0RcajrA0jnd47IAOk9w^k%yhP@ z(?u9`o~6UDCb7^sn#A#VPGL%>LPH&)cCJGB25kuyt{R7ReBv=(i>7##8Yg z%*r0OtITg#Cnn`MWlLKqw*4#fQ$ra z!{lBuwrw$aSEC&nIjcq|EpjE~jUFA^n1{lJ$H?`66`Be%*|FSJp zDw&17pCQq(QM4t@Q7I@ntSqCB*K7Hz$nz{E&^TU9l#!FBJ=h-9i)jig5Vb(S5wHg&`oh7vtOc=q6ICO6}Ei2S{;` z&ajmjR0ppXC5|FW36UyUGKK8p@H8^FL^^{=Uktf(${$wKyO5?#<_w8~HOn(qXiw+{ zRpLF3Gx-XXSs}8nSb_cu{GB0_Ku8KE9K=Xm9?Kxbu3Y3k9XN$J+;|5nSW0Xr_wQtm zkb83E{42SOrT54}gvSf@e3U1OOuax>GCEsnnmkua)l$1;A*!=gu9^_Av_ux+ZSvrL zF@Zd4K_c1cRwlNCEboeuLVP=YxL(g47E%Y$n+0?#Da-_~fnYRGiMk{U28>b%93 zU_Nw&k`K#-Qd4o{$`hutcHr_gP(dic)Y_JdAP9u&2*(X#8d^kJ<^-n$nV@qH7Pg8$L=OJJ$sW^Z@*kN^0O`@P=&-X2i3TK!M|@jr(8P+x!i@xvkW=&PG|{j3GKTd6mO2bHt$^Np_Z`#-0sYo*{T5^t zhQkdM18&0f;qh0&Qh!zY6|fWnV*Y;uO9dEZh_n6dFaF{$;qj0D=#O_d4{oA`^jCtV zHt%iUeeeGNzra$+i0`isOGVSR%pSM-sfRQ(>)Cx+>R`c;u|z7c&keAAqLiY_s(rGsEM9ru@0 ze>LkI&-=&I?sDkO+RAZTT=hXpRBeTrj~X-B_xo~3F6l%9nH1@@wn2C%hYY*}&~4(; zizfeQ)q*K|=xd{{H*6XmgPiwm*(UB+c;kh9-J@EhStN8eA(w= z^NQ>rXZ?%SV~0HMYpZc{HR-Hoz1gr^$fh9qY2Ry_6gok# zgtWxzTE1Q>#I|p_YzBHcbi)L_uizw7J^0&)~oYUj?I2b;GIiBYJ6EtA7eV>RtPy*#}-nV&7Er_0Id zvbUIY&z6(3#bh}_V9KQ5ob;XfxOsUx|LFPS#i$LE45WEFX+Ahxetg+AW!km%6No<@ zUL4O($KL6z1I3u3gY)A@53VlGPM7oPu-}75fKskzllf#c9ihBtgT}OLtwtVH zr`KtmEQgmT=K$@Q3_ATGjpzWt^?PM`HJ)X^njgE%R`^E%WEXu2% zc6vNMS)vc2B@y*n{dNP|6Zve?=~2HmAGpv0vr!LeKMlKmn}VSS-1X?j!&Et0pj_Kn&JZ+tb$*Ik`FIJ@COrqZY&IDz zXQM6*6WCW`MP1=1BdC$D^R;$EhvB3vobPI;#`n98Zrk%cbKGx2`kj{7Z`m+)KplZV zT=zX2!hyly)qFadjQZVHW6t3c6-wTX1|cCVbwft>*G?D1)qJ{wfj=J(`|Y!n6|7vNo(C;_b#V$K9VS?i1b`Dpz0N7j zV~ZKgXqRWJ%k$ag>G)#SSPX&3IcrlWylsHP@6rVf)Zu!(D#ZQq0H0B5$F9`KE?({ose7ZaFFJX>md zkb<{D0CA)1NVdxH42jqB0+BP>d`GEvbW#x*S19RJMrR5R$ZxjXx9Ne2EW3Rf8+eMz z7F{;q(#V#{xv-8m3|P@zm2oxBH&{)ms#MCPQw_1$P^x@6l0Ce?efO>1dvAk057Mu)}esDkO`{_o%EbR1Jv**%BQxV3B>7Rfvqq5f3l>{w2*~w2`kPtb8#t^d6k)ps>!wMiVeGqN*;g@*O!-0qWaH%iU7>=U z7Rh)zvVG@Z#^> zHt0O;W@Q$0#G0=mV<-trs&t{0++!;VU_y|?f!Q2GMrfLAV&yzdU_6G*X^V-SY;@a{ zDS<523du?#!;v*SA1NhwpfkQ& zfR;Qs+}pbM_A6L&3rp=3W1FSK4pT`~Q#;TUTs0T!lvGO~jd;Gulw&a59KJ-C5^N=&J-mlk z@;pPucW;42P>8PQBkR?~b}h9Fl0`YWQ%>(gMjDTEM5&ZIEN700QlgG*^y0u{c|3kpomwu6mr_J2RWBy+LLAzbtLGH927!SmFNnEa%f}3vk%$}&a9t!@ zjsi1AL#5g$z7?QwuHLQ*P#cQdZC(6P~{|FP1MpmTm^Y0Gf3D)XIwf- zW_F-8qTA>sip@K3#dhA~%11tzY4I5qPncAyEfs-mI-}H+3Y~W}R^w{OaPZSqmsFXSne4(I$pzI8&b{Xi+ziJxato*dD+z$eYfN3 z3R4!aBv(y9ufep?lq$f7QauU7$L0d>lS~ezm6=DcT0GK1P>>=*4}?Cs1e?#Li#LUQ zgU`2=8tkP#Lo&JYYGxa?1R{p_TYd@^7{Yz@?Ur@+E@5eMEq$kA%9?)L^ zQvWK1r2Q>t4JX4Ttb}aB%Rm&_Q?r z$Gi+Y1+WxCi+=JG!tl>N{S@*g2_g(cu+*1bGA1KMqTM z_VMSV{`dvl^G&*emO_HBGRd4{H*V;+|M?I9@DKlksu*v-dF#`!C-ql?rNUP)KSEMa zwlEy%8?e-Awz3;TZkB@BQHZ-EFuB764xPufR{gilPx%KhUvI zQc}G6a>ZlO`SAvs5-X7gmv!j$;l{h=Obm97Hj~i_bN0~+t#pUwJez~MSG6e^AuRZJFezvJW}^{bXyY}h5#WT zc8vtgq+rGoi_Y@2r@YECwAS9Sf z;bi2En(DNpolN}M7=(6b)UlS6?#XI?aWebtXuy^eo*e){;~)dfg+^U1}@{A4*zTWaC&*Vg!BSjX|S617YGKLp01{g$)MkE^xN*RtuIE+ ztFzVnPax+x^weU~KU+JNH}jp1T_P<9^e& z45)s)VNC|j`J~r}j+>2+(NTlVuBWz5w&N+o9=z&<+-NHFVm4~nre{i{E+jsN);?Q| zMlIbJOR#I{NX1$Twql3nd@>i^kg&LdCma#|U3%2-EG9ju#d6Xcw@r($wzT?ca?cfk z58>5fI$RV$L#Y4&|MW>jK~&8~i)kMTuC8Y3GH@xhIWpFp4PY?B_#O7z(7BWGVAN~O zhpo$#`Lo9l(2;ht5yS~Jj1Y`C0p9MxSgiYU6%G zms#khe%tBzX46r+O}o={S`8aDh^w`Iv(s{VoyKI)fx5uf6QrP~EsqA>LATxSHcge6 zIRdG}jC#k5=^27Y=L?YXJ+p;Ix9sVhE;B4mG#d^KisM;-F>GMjeLBBaiLXbuZ^w^z z#A-~c#gHR;g|t<^>6(_pG%N)w1v3A9=z5mynrh24+m70@kihR5BD64c!Km%bdd{Th zLCIZ%R|SN{w_K%R$+}20)r=$64X%vN!>%NXu**;FfLJvdcG?ZM>mxlfSFEXQ*|Wq! z$8UO;N$lTf0NrRyS=qIPzqabGoetN|XKNRWwX@0E@nCJ)SzEN$mhH7gXYF{nwi>KW zn`?bzts^2;riT{@ISN6d5IF)0fguN5({t$Dy=(X>0D2JCa{~YcKE+XB@Ec-4YI4n^ zf<*YWfwguqM`h?~*B}%GqP*ZYM5cID40QhzM0HI8dKCgvjet<`Ucg%pfe!wIvLS6L zX>ADM7|J>TnwkA;LzhMV;JU40zXRMp8xPMH{gbgb@7t?c_w0BM zj5_SKMuW~|)CWcyw+vWNWVRCRlu$SwDripl|*Pf3Dvr!)=ie9JHZTaIt7Y3}MO1dhUx(W+11fHENVQC1K zA-m=3@CqJaCWnQ#-$troFvCpxO?V5Fyr~K3lqdn#S)y$)t%l{>vK{y!cf{JL);tCGM0BD{ORm6nt7k#(60~;Lm3@tbtrxUEasj4RT1o{O!s~eYXrmb4 z0!bdED%hAM_U@(*?q`nHH*US2O2i_&>#zhf`2!-mFV_&7V6iz@L{?GAi8!7D;UC)8 zWU}xI=`W+RDN21E>#9}A4n)(2Sm|g;nzi_fuQQf}!wT3|YYnO5p~Dk-SZgL-3z!OK z#eNf6BzXc-Z;|i}Pn2EQf+zyA%X6VCwT>$z;9Dhq1?#)gq~{}t?pzgl(h2-kVflza zS1l3q#EL0lwd?_1P3Z#eD71;pyD~jnaKyS$iCR<|N?3?OO<&u*^JeOBBer|Dn%+aZ z({coU4LZYP2}7tiEeV=kXOa05l;2WC7v^!Y&e4P}^DsuRN)Z-H$AGDlapXGk=x0+h zkyi0k;Bc)Bb#XPSX)wNuLtlf4&Q;J^a{RlseHb1fA{9@LbsreV@%$}tJg zdb;50tSM0fgH!dg%2Xt}CQvmV&r`)CNV%FhsAZ4nN}Mc40vAQQmGlmt+ZU_Ra&Y=v zF}WYv+kEehZxti!<@hF%+ZO^~V;Bh3MG&Zw2YMMp>QT_A5|)I5A&*y;7ze*tmcjCM zSV79jNDa&E7ZW?V=w>mw%b=4J6MQ{q3U#TTLUxxqWbs!{B5jEaxWww?P z@O;bDkxOiYZ(6d&mLvi>nSy3Cm;zHyXiQ0`a!>^c#0QgZDpd(jlf@`B5l9&#mP#Mo zE2JVMRw@PU5WsdDRDQpf-l-(74--T@Q%P}HCV8+?OzZ_t)6r3ST%eu?ate-^DqT(= zl9h}mkh(w!M3Kjl2NJfLB+Cit2rPG)iT;0i`>$rpk|aG0-DcMe29QKgm+Gpn%F4`2 zEshpjYrU7&T5hfN(I<75YFVu?Gr$laK!O0l0Wa<~5HrJ9`~lwA%XePGEBK0s>%R6m zC$p-%2R&mXk9qD~J65b%Av_}7zwPdEcl$9O<(b>NQ;x%Eu4luKb{^i0ZrsLZ26lWz zE?UX#QKbZ1%`oLOQHWQw(NuUNpWLftBdOho@y%P+)E2M-Rg5#W9JE(rD!>dfox@0- zOim+{(0q`Vh2mZ@`mmPXA~G2AEFH$MR?vrZc9$=pX=Ej~765jeAPf}4_j9{<%8~nt z&0CM}T)TJc#@4-$3;Xvf(Fd8GJ1{9qu}2s)F7P{M&|+XmCeXndraTnLktKmDazs`n zGB%s#YWZArBe8Qoz5lqB*nkF7#i&fBWg?-2l*s4QYSo|qqPUVHK`LQzMTPJE~DgkJqH^sn>i!S`=U7+C7x1dexyWuoPUZUV8ENz~S!f z>}-`gc+s!nMTV{;MiXRMWxi@caIwOJ-iDPhgA2blEd+pjM=jZUE zi*(Fz5s4h0dgtoAJSZW6rLfLG81nq;5hU!K)h)RA`m3-0{LlaV|G+5bzlK|o8PZop z1+mq?f(%~=5AN^n!i(T_t8#*L{DV%uasB!VehTmJU8aA@(9|jssNHIQy~@41`{h?8 z!Cb*ifAR1B@^5531~uYdU)xTXnqbqnaX zfhVBwP81S>{Ji{N!o)zx*g-d;VmBB;YEPWfLG@*F-_U$1Vh zUIe$`S*YqNeMO)jT>($)!Tz+x;Q{18 z0}NKWC(P4`FeU0HL0>nX(fOr-JVz%3AjQU*=c~JoK zKn%YSa_ROKn zwhR(~;iOVc1#VU9rr?AAuaFIs_2h~xmR+gRFt|b6A2u{l@StL#X|_$KVJnuxdWML< zSGO#m&(y`NO2j~0zH|MfXm~HW{SY=wgNPwUz@~hiH5E>m;6aV8W}CJO%C@7hpiW@4 zEZ1@j6$D=pq(Jo1CDymJUfpOYWk;bvCxI^Mwi|}?ja$;kRGHoFB| zkxj>;rJj&~ayXd`T5aFx)QwTU(eyM&=RmaWcbl`x;CL}QKbjm)nzNn*6{Cn6j3o@B zu1cn^0)aGd$%M>R@N`?(axDW*!$bx&3bIyd*1hQn(Wqg+GaGfGU5Cr*^Cu@yj_2n` zgX4o4+8hO8eHH`%+1cUI!J^-7kB9wd=V#D?zGFg<&8Nfp7+u5ALZROrxB_fmAb#zy z-M;w|!cygIoG-;}k?1!4#bo&NpL_*6MbXOamR&@?KZ4V!|68dPRs9jdKb+lOhZ?7O@{I9 zH_dL#^IQ{#d(>;fT~}pnmFqUlRvq2$yuexqG&Sft(2F{C6WR;Cx*T`WzK=_djiSdS zQrow8*KWu6*FZ|fsOKO|Xhg#jKy_?7a<}CUyA9wjlLq}H+jnTFSi?08vF6CthDrNs z6*OB<$e|&j#f;nf@vL(+@|VNrpzVMr*|G%;9A@hnw!Gz_^-!xm8>6QrbPBW%y1EVO ztf@6Td)#kL`*lyH>z35=ttQ42mU@W3p(84c#p%%junlxb%hOsG*8~+ER%g)I5$bXV zb$CmosZ%bOmdg8u*jlw*SiApOWbHGd7`A!*owkXww|ssC3WEkiHG*uU6uI4*NzwJ(j-TAOJ>ALNf0=$1}x_#WZxvQW(dSU~vEjQ_GL}%NSBC_dO*XsuQ8(S?KHt>GUw5gV4z`bPTk( zxHwvd4(Fl82mz^~A6kwv1-^FeAi~t8$&y*YU{XT(Tb^-1>?Wp2;gDSnxwVi-B01HN zQwbTlkeUoh(U2GpDXEZAM%1aLgysXJhI9c-0j)r&3mj^7O+*YXWmxPV1{*Xeee!1lJG)YV$YW(F;DK5Q&!{rSM351TM?>b4AfA4?Hb ztx_o!3Ynxt<~tt7;FstE3|w#)9_^`=EfhglVaiF3OaT|!Di71oF%+JusC=biaxnXJ zSOc2c2*nP}2#u-hY|GU>+mrFwIT-;OQsOCS z&SW&O3{8~LL6*eVW5g3H~Z4C%EM1dhaOM@Lh@Die7#q&(X5($$lSRi%KaXg9d;f>A5 zclUSJ_crjD{Ay}bB2tb@nF=k?7;i%(U}_31xtb!t#;Pk&VHKJQ1XVI5+E4|7qd+?aqHpt#2u4;90j}A#LcSO2lDh^MxG9QLxDhm1tz+c4q$p zo!=?O9@E*aT;yST?|x+cv%A;d-`(DPeD5YG#zbPR9D5{}c40>r%VD{SaTqYRdJQ8? z0co`;BpOuG6>`3a@d3~x8-=cvSj7vOE@*TPNJC|9 zmGV_u2c5hcm8vnBK!^?DfKptj!hA_ud|oGFVlBpF=A<@WC9gE(1_@7=iegFg!5DBZ2ZA2Zo4CbJb@y9Ek0o!x=z5$P=$eJZe30V1=z z)g%V1s%7@5LaY?u044#69kzH#EJoL=$&G4itAf6YyBOvPtbIBW0mO-Ld05vrW7NXKeoolI@Al}s_YQ^`aGs-%fj05FBALYT_$XCmw66xu!QZ#_U* zYWH3-`hd#rR8rfC-3L35Zl(6u3h~Vfp0|h=Muo&SnU5mB6%$k`UCqVHnMf{%CwG8xj#^9^KEw)%PsFYL=^Mzf$uqTxx!1k4(_qcMrmJQdkdoWDs zI9%E%lItKpbGdCQwO)xmEJf~DqYulG2l4gKwjO@AyR)@*|5_=0udshF7R1G;(isW{ptuqnM3Y03p#DD@K$4?g?eSzsr1dO>75X2tp+7GmGKEG`LCEtJEcO4YARx6OG>;+>mio(D=&!WUU$#Pj zIS&0V3xuWqNih_nGF!m$!0W*A(0*7+w;tYDe{l2h{o8x%cT4g0O5$-Ld>^JFI`Lh< zxk7USaOdLh3dC7ap^*QJ%fIFdb_r~AzWDs}RpMU;pO6jiuELhX-|N?}F>Lue-@g^u z2j%m5D7jE51bOkV*?1Gw9G*fz2WxPJNd?!Jci|PQx4>Vqh=xKzZ7(uFg|Suv60ibm zz7^Ezim<5H7p36ezXO6gV?lp}Hc-%_)r+9QR}O|y@`bfj;lf&K^@`x7-!Hz^IjbhT z_wKuJ7mNB!Eb59@h}G>|pFvTp{8zUMt3c`RUf5EtZb1pF7p(~1js^bZUtHNqt?2#t z-fg#_C=jefjpPq!~L?9*v=)wnMAmli7~aJOcgwX8~EbHXU8rxu&I&53_Wh( zv3;}ZvMHO-*yxlOAu~IDP+~oPS{J5uzHgIFF~g(d^cF0;pMCu9y_-LTWzJ>LwQXor z+9uPn`KC@c40h12gHmT{k}85`D7&U6^C*r>9IGoJ4oVHr8G$0`yRyiuvIq(%X!5>i zcR_blh4H8d0`$1w8G*jtbX%U;Z~KF`*Kkx2qy&Zl*|^{F=97N6;q>cr8+31t@HMh+ zv7qzMM!kN!QFruC!vq}qKTpMN2WX+t*m=I$oC83~;iwvDl2C!Rqc}nyEY7~ z&!`^Hdovh=rr)kZm(~~KmIW#_x+B@};+Cf!%tw%CG4MdKfpPR4yIJ=dzO@1}JlC{T zR^ci#mVjD`e?Z|;u znvY@l`;B3@QFkp<6=BHW6_cJn8@3N7-ATuS3_(~T7m6Bm>(Em`J@o1_ZA0$+(x`1= zf`0K=_*DLNC*bK-)+8pa(FOqc5SAo6^?wuV-tz3 zJCE;t0-Lf_2~*iE5S3t9+n(COLjx741G?JPZS?(7iMmojqa;r==%j@a$}!}PD;67S zt?S9-j(s@mou4euj~C0?7&vMgAcMewP^fP#N>SknUFJom>?(xDMgL81m|gEB0`iUi~s zO5K(fwrt9bqY0onNOYl607)7|{~b_KYMC9Ow9l3z)qI35M0~Z@bPee0eyvy2#svC$(nUSvsP$Q4~^VVUq=YZqe6ByWEK$Q zYRaLWjhNJ|AL^JPmqpAAgIEOyQx_oA<>wVL<+GtW8){3Tp%EGxp|Obs*8}|x^^{PD z3w0=T-&YaO28hVfxBGFVUk>7KeqGe z&ZqCkHgEIAJ(%gEUZZXE80$(V1&%Hia}CcO4LajsITLu+&=r*{sayq?^j5>iO^YTJ zS#TW_)@sL8Tr)VzpjmfpL*N+K(qTzQV=-9TL=F!!XGm4zn;tF^h^lLnXDFVjnqsYC zs|~cAg+er7X%GO=eN0y>#XMOlf=FO0Jj_biD+2^Xa#hxm(Zx?J?MAllM)o#h;hp<8 zKgxwMP!3brvqU_gT@zWDDGK6xRZZfWzOC}4%++980ntRYkWCQftb}Gzur(_Zl{X{` z>I|C*44daz_&X4f(Jes&F?AId6GcK~%CU5~h77RaH1MQ$TH+{0;!F(r2eS!e52xR< z&}G=5WuAfc9M<_k%Y(%bM39zm!JxP6PTiI)q0&&vhDJJ4)#Qt81w(6BGJ8TT#T3ID z5rs9JNN>isZa=#H!+0#R{@_-0{j+lPQ8D_E&u@c@OJ~s=4&!+-_%nke6rdb~Ef{Rx zm1|7{ac6@s!W!bs7zmum$33wyXgQu#22IuE3t}Z=3T5CZwvyIG5(dbEwNBw-2+-G? zA;?;hD5ZI-0$*VSRe=DB1^Q2wSqu)?aJrrXn_bIQLqU0QxP) z@QOE0hN|X4lV^(&jmcYF!K9Kp5jROtYqt|yw~OHi4{!e9(;vR~@b)Lg=mRFRf%ZYE zO(wt3R2_!o7a{3K;|!lLN1XY6`=;2d;lRd@&4ftfc}+zsO_Q3!n~F44}SI&FsQnkc+N^ zz+X;o2<2#W<90E&R)}xpW1Cz#P8JiD)J_fSyj4wXVA!VIo=Bv1p$6>1S5q>b7nveY zWR+T6WlPXYhRQjn1S5ih6q$l4Q?ACFVpXih9GODfYBmGR2Je+BF@sKFCqr9Oo3WjT zYxi$%KfD1WTS=^^cJ5{O?*nfq(YNtddiP#F@~9NY_~qH~qv+tOFCh>4d zBCsPv_Y1nn6ypdr5;>VJaphPZ?ZWUd#N^(iS|OQDM)tNI?{3_$B)2N*ZMqoC$G5{9 z_hQ?R(y^UFaxW8Ei*DY*fL0i93vJ4Xe5{&JR`Us_k}f8;(Ijo_4vc#tzEwzUSMza^ zE|*fF-1D_u`86~s$SCLqCV{6U zyKEvrql)l$3^K*1#Ny8E=J(D6C~6f|>NKFQJ`Me=c<7(SLO;J1dihc4<+aey?}vV~ z7W#)fp?@3>{nJ?JpGHIfct7;dqM`pb9{T4=jEw$ois{({8dVRX2AljjYsQdUqG z6c;3}FdF|mt>+&tD!h;zc^rs@RLnZ|(-xTW@{6Xxg_* z2p(KDa79ap-3n99qz&r0- zFwU8JEy|2Ic(ZBfT|MENOSM=`pe(=uk zLZebyF9ROV`IP6K@ayvJ%2iE%!aL|BZEu^Z}0ee$5RF^H-HuD{gyxMwx)wl(=|b( z?xMMeO4UlXCbt}=sgVu21d=71u{6DI-JW&bHmtv}cBi&BAKkir?fvk^omy&xFM`ms zZ-7{1saR&Gu^9KBo-DKJIEctT{uHeCnOO-1J&? z$Tq-G(;)n7APR$y18O`pZ9M39d$HR83 z0pl-0<=~Nn#q?l-248iHA9lUNMgM3q81*~T@nAk3O-B7LCC?TFP-5A0FLM0{#CJ_Ma})CF022x@A-GiX|Et>UP3*HjEcIJaWF6!ZDr)rBeOEID=wSN#Wpt{+}wTmDgGv$ z+sQ{CgElg3SqGEuY~1g860m(>h1YD?-CjcDqPs0Gferq~5UCUCt)2Up$3L3cBc^+ky^(*#nAk(^W?u zYtU{?dUcrHzGI-T5WKVninTN(F3|8ESt^%43@g4QetNVn|j zf-RFETcgq?F=RQr(qTM9G$fj?9DTA}lGI zNG)f><#Y^V+Vd1#`Wl9B3QbQR!mE4GCv{I}TDCC6V4}vbV^0U@#^{-XDUs2QJ4B#| zP=%PL${4*k^_WSogTh8t^2JO7lx9%oMV63Bv{0b(5xE+}a~Oi-`3yx=1P0V~O=QSQ zT9Zgnj0J`OegI8Ukyw>Qw-m7ymdfbPg9l)Tw{q#Y@2K5&9mCr<>w{jWhsPuO&__*I zv-l!(V8e5?$|kefX z<;bQ`Gj4J_%7~V*pWd)R+t*L zC1?o06OyBUZ&>FR<1Q@Yu!A6&V$-nW_@?Np^mH@?-iD2AJnT=$Ls+8@my3hN{N!kP zyc|t?=IPP$XgP!ReAMqvMuX{i)bedz;aQrfmI|48M3Z@#8cmbac>;DBlS#WUXT>5Y zil9BVEVkdaVLAZM!-@oa0;`9mDRoCLCK01_nS@x_d3@``+n>Il-G2Zn7MJhTjoBD@ zR#o^iSt}{B0NYKwX?0=iu?&i=>98_$MU5>0=ff&p_iXg9=NVNIZA(K%6s^NdAVXJ* z`5Z3VEx+4oG<_FV5=G*sz6tZS&5?? zF7UFL&*G_+up-2 z!Xwc6=$30rI5l7qkgKjj!u)}<8M0a}7g(YsvsIoUY)!Hi&bJiUOrdq2V|ca>E0`j| zK0vZGC2)+UptrTi(XgpOi?APD%~7g+HAz+Q*jAXBFt{U-Rayp~to}>6eiyn>Yu9yC zrUjzV(3xS|M=Xrb8BAKN#?c#*Av8t6qd#@oP(`Q%3;^^%tx^O|hIT=dWf%+J0Xbx~ z$b&Qj+alVx8pN=ncVLyQB_*~3J?t2G9L=O_H`OvL7Y4 zMAD=apu{TWJvzNEsWcen%v|oQGrNtL`GtZ zutci@Velofn#?A`Do^rMo~H^jk8w7Emm0A9bp83LIcTaDlQu{+VArT*ArqE~1cqoZ z7>`dkL=4-kGDV5Xt5g#D1jCb235_YrJgX~mztzwr>=58vQwITsX3L3EdOw@kuVf=+ zIR`K0DsdvSQ_k!Wr37D1a7DB<5n+Hbn^1F%a!?KzBM*thnp)mZZUeV||JElTgxB$W zq4eH;kQ>R&mQcjQ5S3~KMi%yNr~_BnV~cxyB|;Z=OVLM_)V4t7VZmo=S+W>s3Ssn* z%VOB3S_=LC)Jnu4qVQgLod|Wv?UWPi7Pl@HQP>u?f7+;CA<(ODY7*bW{Ydo0;{)E~pOwLpo z*eD&9Ea%hZOqi|Z6t1Qb37gNuHm#GuoCzpLtHoerve=A9r^)ON6rPD}Y&^WR{qP2x z-+@j@1FNr29b+aag0Fv-VN`rCn7sUAyrI=v+>=%%?I0Sck+q7LTbN|3WL;y zUX78pTm;>}D(O9FMLxApSD>pCg~WC~vc~3iYuRuT4`G=@4^JxeRzXRZ7Ah^KEFd{cU-Y*%8bF6Eh+(I z%lL~03_5VK$7d|L?DAQy7Kee;$OK;uWAHvY34>)(2pG+r>Oq5^x@1=^)TIJSeZiTn z1`$`Qk(QWhDtU!UA`WE<4wuzy5wWySWw+q*7RdZcc4(F-b+*B$KrnNI)3obCx~t%k z&`mLeF?rcUS4^GUefL@5!MDPsR%TN_x*7T(v!NFshK|1vZVf7DNA*3H`s@q5pXt`ioiUFXo}Y zoQ3}9QRp9LLm^mbL^Q?&rr!)aMIXnu?{7W0e*5}|M6DLydVn6Y;fFhqK1-(x7a`Aq zE+Ly05ObAs36#8z0Rk5|AwEy&<{?mW>5C7r+_rL$|=jZ1uSn5srSeG}j6n+V;rB<*M zTtJ3ZX)C&belFjL7rz4%3T~}{t+(%fJM)_+yp?!a@He;b7QZTc=Mw4(njV5#rC;`h=2J+Rcj_~-xf>o0zE`^LTRq+ih` zEcLfTrr!UfzyG&{r3_g(95+GLJYEiGqn;{qu*>FSo27gvn@U!Sd4VQCs2%m{#|JZz zl@I5`S>J1EHIq(*03?+oF!xP1ZHq-b!bUCi>oUkRAOm$BzHft?ZT2mqC1xEe20{r% zRMzfXgM}5=HBT&d8v3xU4?7+xtHWLkr0{dlcc()HTpGSA^050$0tY0EJV=JVYqdZi zGGt5T2EEp3&{x$Rt4$1sUDNur*Q# zv_bqa*#!9!1VPsl7t{W@ZPj(U+x9`=18RF}$CHNrcE8((JrbnY^f>C>~qPvOTId2{`|*KujA#oJ@BP*OM7;H{QSx3@!<>#J~~)T$Ad3Fe|mH< z9rr*?tUo(Holhs8V>^~P=(W#|<|wS&pl*S}05W`KJ{_GL&JUNC>^5d^wA0JMp1OMgm;BeCJb^MdV$?3E=TFZN-|V+voX@^~G8o&nu~CHGx|)mbY(D<%;}1*{e@Si_yoXVC_(8V` z+8WG}<#gN$%p4}e-r3Re#nV$5g88UD9<(O|=;z_t@d4EB^k^~YG#jSmiUox&bV1o0 zc9ydtr1v|G`M5tF_JAqBeDxf3Bn*5$>~xzx@Eb7g(P9jhho0)RoB!k=|Ji@@XMghY z>1n@RpA8#$rZ`=Ox!^n2Y}h@S^^TU~@u-W3=(WvZOB=b=$SfZ<=&ueO&@(~Di0o}_ z-2E6sW9D`&F4r`vwkLsJv>4S99I-^-pn4A7vFM4<_RN~iWeqCXf#G)OdCviE0Zs#M zd2)7qe7HP4I)Da3-C!v=m_wI#VGf=gOwn8jQJBWzeDdV%WDp#v2V>oBH(Cu3`W#_9 zm-Q|Au&eeOrf129jIKb_QNQ1E`Yjh$o|7fK3j>qmVD;*4qt^C~VXxhBrG`pCe}Zb{ zNhJ_{K&q39J6m@@zI*N6=+<2j%9-r8&gAO00^?LT zz@dYltMf8j7OA4f6PChi0!3HyB3;%+3a%*(6q2wN2IK5#oTG6aUxWH|e8bharY(EA z*s$b=B{odH?@PxA6Bv3}F&eI}%N)#c(35pKW3V}eDPS}ci|;pd3})B1JyURGqT|V3 zUzMtHHoq;E_dstUa$!m2%ki~p>=BV%7s_#4Wp~%_NNla)m?kVwwIW?BY9Q9LMNo%0 zSdU5tqEaNv#ag+*)XEG|LL)DpM0GwL$tA;hMp$7V#A3M`18sx^rKOr+s+mkWD)9_( z+7PCV>)3|wm}0N(!&o5tCRc&md)>B6@5sA|Mv0f?UBXhU&o{KPnF?Sjbn80`D1fEl zVr4M30;i4_2rYR8qBbk5B0h+r4us&&cBsXNW{nG2>fjQb`VKzzHaLaxt%et{6kLp3 zhq5dM&%*p#fmC?ts3r!Z>`_Ucpk!IbyQ2$zarR zTRO3r^$r#jOqq_C^C_(S6I{VOS!AhNiKvz<#jMDYuBn+SZ_pXGuvbZLkcEh;QgnV_ zsl^?IHZ+AHD{Y&v7SdF$TzBxiMM+>lYqH2FY*@Fif0Ril$^1T%S_ie(6AIm?+t8?< zr$MbogWh~H>c9qscDNpt2HUG5axg)1sc^MiGBjD_2op4a-_;ZezQP{OvovhhmZ8CR z3@bnYdU~z83(CCbn1K&6tN^-1W;wDX^NcDma3OLOEPxHy@GRBV(TWOhNxY$A@TPJh z2dx%Z5(lmum0677+W6OZ89|Zt~gdH66D`=f9=_>rs z%A#N@ydxCra@jYex(EB0&ND>dy=eO;uQ6G!k{C49UK5Wfg_ZwsImdwaU8io4j$DJa z*OyBTM?%M5Xnbl{;>h3!C%x(GFxJrXAnKF~*-R<{0!c%yT69t>?SbG_h(3;PKe~JK zqm6rbURx>p$Us}Fh**tD1V%VQGckn*0mFA3$1;EcESYHgdM`Ky)zuh~%~YOXi%~}? zw;O00>DeHA2+&Ka%zNngY=SgJlhsi`kb&`#fR`GsZ77<=z*x6DqwOh!x}sF07M<|9 zv_-|l;;uy{Bad%BzIStH?LlPiCYf9>Mjus^>wIZns3j$?(rMVhsE#4wipLNPQAAT# zn=_c4Z_2ht@wFshOLrR%$gZ|7*Bt|veVs%{q^?=(>Sc|HqnB1@$5FYuM%zr%Wz(~! zfR2RuU8cCNb9uRj!RcYu70H~bDNWY~iPTU*zSR+!0~tl6$V#qKNP|>XD`qO`JtDKi z!Kz!1aHV~j%5dcyxCbwy^LWxCJP4Vk z(mu#(Tyak$;qE?cE`=D{4Uw5`Dzn7}COnQtv88A&g~$8}<)~7NG5K9cDQCj#4{j?o zmJf>wk=~ zmKZ z1M|XW@X$$^q;xT2k};sVm}x6{m%@O&uo{c`t=#V2@T2Q|W}Qu~?LD}5@8%El$z7?i zBjq=>;-+5O77Dw-IYe>|!^ssR3QIVeShrP2Az=t$9pFkBF%Z~Kt>NhhLM00Isib!B z0KVLwPUmdCs8cDB;k8N_-rJV4eYMb$^GzwIi=@eBVFIqIr`IAjo3I%uHlkMcT+ngY zq)EjPU&9l(BLg)*)(dSh?XgLhN!p;_1q)OuhQ6q^^d^tL%EzH;T`6;T@4Z!EspGe7 zrhfDp29|pE;YG?(081TS!BPRi#VYg3yP+rVg`T`0diFu+%NwC@9*2It8T!Rm=#L|z ze_ROt_d@7jTcLl!hyFn{6sn|mU~DSM&D8$G@W$P}bsV$(wa;#U`eC_L++Dw$-Ma_; z6yJW3Nf&S4`0U+FxaW#iDc{Fv;z4-tZ_x@vK>+3LM^;$RidGpezFua4zc*jsO1~&= z1*u$IAhdExmjwo?m)R~2j^Hi9BNyn**9`+H9NtIhDxe_4sv+3G@Bb0f z>JMub&{c-3(gLV!RrqE4su}@ewaWHZb5?m)mAtqJ3c*`Jo~yfWH)=%}cUSp;A6*su z=E1k_!kzDb@4XK{_?TmbySE>F8-co_6#(>|M4&g=5YP%9dYj(+-Usg^Wb-!G^M>Be z_8o%6-wrAD*AQg>P6l>9APoxyhrOZ_d7srSG4 z_umb$DEPa=o>qU~`3iq4ObY)tHuhAGns-f52tl=mPjr>4pbAtj}iazLn7s{sg9K9 za$Bj$Cd*Kz_y+8qO}Q}e#9_DL=}gz*Ms0i8Z-W#Il2gCi1Zf_`IFM)q&DQrE!!{Mq z(Lv%F_Pe$rgIEJv@p#y?4GE;2W*y{a6rJIzXXhu+&W=F28lkgQf7EMtTWHAwVi|mb z>eX+WAZQwj=*Xmjhg%8I_Hn;8ANNMx28LL!5-bUFA2GBZ>BFZ#T zXxHtNgW06tYBw!K!rzcV;03V{-ZB}2mg_Y=qYIf#<#0JUTtKqlZKDC0p^A0a2(tA- z;UBflUPJFRoN*8UyH$5OpdovXD5eGPY?g$uYUr{_N;4-+7`&!mM-?|(x_`s8WNiO@)^0j zzx&|RwY%3+yJ%M|<+p9vr5yHf+B-cyJUu=*Sd0&6gOla>>Dlo&KmPjcVEF8G`SlmC zUp{~G^PhZmdb~V7oIN`~dj90}m*4zsIUCHzy~Fu%)R2!B{gY*XIzab_*{BDKSP=e3 z?>4NL&(1+p`t>(o{^l27zj}UldN}Rc>|)?PKVQ5!o6pi($T1C;=TW($-jfmd{$NXxh*7vxHBEJ zTdpS11y`qsU3W2R&s!>JA?HVnFJC@AKVAZ7g7n|vy(Y=BfPY(lnBzaES@rf&{9&bY0OT2jZTbo5HsBw9+br<4ny5=O>Fn%j(uK)Um5^Jzr~@?66Z` z%s{~&f~^}6(%^$2@mPrf0rL{Z_YzA1D(t>FZ} zv=3Y3t_!W}x{9X@o*|&EWz#qqHBSyEhtodff!SuNd>i9!N$3vgDji>eA#*jVf=1XEZqF49T@~%vzLFX?-9@SzGLBSR)ajBLr=Ms)C!TLj13c18y zwVYMhfWwN;Y@fBtyZil3ukY5QsJqbNI z2^|d3$IYuCxj^NRQwj(!DxtO<8hQvA9WTBGOToqQLFjOXxKfi3FsT(F6@*lW3;67* zp=CF;>;=fwTd>rM=AG{vOyO6!HN2pC|01AOT|yA*0+0$YsnvCzN0X>;!BPP-g%r5* zjf_yA4=kisfYgepz?*MnFclzEUHD`WnOYf4LCxR5QkTe-6!|Yl-FmOn1|}c0oVH16 zGN-Fj-O(G42Ahjxp;Zy+`HSgfJm{fqY}*Hp9rc^A4Z-dPd)Z<>UCgGl@eme=#dHi? z0BjbuO1_xOf?f(-s!O!5RAGm8xisjFaxGEUNKGI;L+UpDR->+n9PDVhbTXSxC;}Dy zOrkha+2b>MEt(BK+}qs>Z=wScY|x-lgN7p#Y0nTRqXF!vEKR^t30rW(cU{DlxFwVvH$~_gxHv#j!LjvxbH!m8q-nI0k+95u~sT1)6LdnhlJtu!_Ji zWR;<6upI~30m4;=BFH==vJ^{JsA`F&YO26wQ*pc|t1MN845rMRssK|%mspq)pegB0 zE*;)@aOdX!-tPTdpTsurfclD&VzOaZV`ZK&R9;uuOfmvfM!+KlIf*n7#<7FvK+LNRyfaK(c4#rRYk~UQUXhxngWl5ip!Ux23PV;3FedrqJpki zGG!~Y1@DqMg|F3J6V^bSZj<4#-|IKDp3C*>3ar46kZ=1q6LH0oC|wa@FYYvqx+5c4 z)ASpzRxPHIkxfS|ufjq>GsWT_mEOb?5+2>fQ&zX`(5a0Aj9oE|*hDG9S5vTNfGUUo4OsVW!RHBwx%f)x&k^M)vK2Go6t0vYYA_MC) zPgit>Z+c40*P))e%)@FN#Qnr$Qrj+Kj!jR8L{ny6Q+0JbND=x$U}|(Jp%C$&uMC?Y zmKHZ3e8$((x=7eU86{X#9JMj#CR4=Yq@`+HV{&peW^uW?!PvTrKONZy>_m0f!u_S& zf{6x;E${+UE2iUNo+?Qs2A?WrqJ~)0nXE#kC5&bjfei~(eS?U~cJDs= z?8Cb^f0zqDl*-WRxK@j>`CXy3FJ2s;7y(h4%5E{RDO6)B)Q8Hl`5l<%OeI;#M-hCf z#DYU7V?t?<$?u@m61wtXSa-g-52C5f;*p4ScDs^5`$1h*(W zAP?Rc1(ue`3=|vLxDCzcOEE6LCzg@Bgi-`H6kEdC3Nyo$31AX|E=fd6sv;o5mSQ}S zgAoU|hjjy3TIC6eDmc1eNR-T0pmU^3j4SS|H9S43n%XKS))8+i>?U>}Y(Kso-9mdY zI=i)U*@IDloqc5(1$9u!lt2}VnMgT>E_-l`fx1yeBDY87_vvD^5Z{2E4pFwuwor+y zd<_^|69|zm)$*})c)eCgrQ`dl@J4$7VPfZgF&!m}DLkld>n@bZRI14u{ zs+LeunSv?S$Q;HF=W^S%z#h=@r< z8hp~G<2s$SIdlL72J`v!#3+und|OD>`BZ~X`&`PQ;|OU{F`v({rHD$#>q1JahCL=R zyZz3}aqsBTgYV0aL;vVu=%4R|p1yy9Kpnn=pJ+1`KvAp2xBdRk-VL3&FnJI`+u7PSIa zuIMslW!Z$;fIEAtrFkL6TE2k;1ywpi);A*;_C&y{p{~WrrxUCo2RbIM1niN z3vBvpzP?RwfFYo_VW}&`=L1A--hBN7=?^!Rx}tY}3*q{MVW~Ih(%+P>@Tn_+>7DO= z2z2%J52v?bsny@bw-pF=k%oU)DL@+=dz!>ednSlP=;)$JpxdxyNutY|EE*C6O4M}V zA50n`(g5}9>bRv&d+xBV*5#5bS74V?YVnp%fv(kWm<^qQy@$;1c^Ye}oWzt|sf7N< zbgUS8uzvq~HnE3CqHvkER-UwUP(+6vf7bJseRtNwz}_OyfB-b?cR?&(&L=HA>&k|G zu32}6{SN55qd^yq=OwP;g948~nSsOuvd$DkP&YtP4=kh>Lqwx6!f^*r5wby~Xg54a z0nxwdnYtpVl7Ipw=)InOayUbsx!0Nv+JlxGoUkLWeweL0230MNLB&OU#H`yoDE1&Y zx`y0z4QO)PAeBm(E62lI_aEH8o=HZxAANRZ4(6zI(-I+nzwLo$ZmD>bGDt|!nbTnp z$^^+*7Fb#2ER5D+Plqi~(Z?9Ks5>3wnQli1v-xz?X`<5&i1pCG!^LJ58c5c>uV zWdQ>;8_h;t*#CM>8y(FC-Q{ff{QMMpuT}S!v&oawqbH|}qgnTC*?awT{-f7tKYe|2 zFzcg}f@_@|9h@93S8gL{@AKuWLAM3!dJB|rTQwE->9VotX;Yt>yTr(-^7-BE``6a) zUdu<<(0rGSdUU++O7lqoFfFGC%h~fMXI~D-1$W?+Zsouf~@b`z^jvC|NO8Avj)Dxv$b;8v&8wh z1I;=f`E{LndOUyi^ccPZ130GE_S7IwcJFXLX}e0@H9+`nxBP?o);Ung{LA<_gNyqc{ z>CxeZnufaNeujKbRr<;fM$c>67PI_`~ne%Dim z-3H9TE&@h2WW+n;jk4BwF0C@7RIaU$U()#P=iHq z%}QhIj8sTZ;wMnOf(Vpf4w>nYl?mBESv-{watb>am0v+oNUQKtTOm2}UjV~*n!xZL zF#n(~!*Yb~ROlNHYHbioe9(u1fE{WEv#H~BJQW5ba9i%d-7fkp_vh0ItpBh#p>uZK zRb_#ym8-?P%vNn3wlEQ6%F@ZEl=sAv#ujuoZ|jPt$g6F%)$rkyrD`k%`DIt zdC(kS5{c#gXk_p4y&KVu&#H;XmE?v3x@a{4T0PXE)3gT!4)@n@Vt04bQwIDnz*e+2LAXNf1{+=LALF zpfjb!*3SC9bSioGvro1j+{lJOvD_|a!UA0;%V|)dp>EYuwp`3HWEJ1b5el6XsA4J} z&S#PWQ-uY=R5=fW-q>M%ml%+F=vom56o2_^`@RJd5C;QLF6PNH9**{ zc<3mRGj$cxX|g8rtggy1puks9Z_`jMJki4JHV~}w91TszJPo#Nw3!7Ntmy^|tX}tQ zXcTP34c}|R7t;W?vGEjCyWtp!E`h`-R232fCxce3RHB9W_WFZ6pZ@UO{f&F2_`1fH zY+V92_8qh1DZV8^_rh+{@^sIXeOvP}ZXmFb0?g*yx&zz}{clU~3J<1)$O;T$D-4K# zurH`0x4r%lQC(B28+_A}U_%`D@vL5jDG8;pN+w~l;IFD0i$_U#4i1WA0w=((4LyKA zbp+TbFf&b*Ve}P&k*NYm5xI0s=So63D%KJ@UkZGzFxb37#z0nt?YO}ul+tcy=g#9> zAKkh6ad!W{T-w)(s8HOkr8j_|fgqb!10_E$lWB=a$W$sA$|6?`i!(;x|#NwVtL@b1*V6VZTR}5@M zPzaTkh%}kq&Fnu^$P|X_hW)4`I7(Hr(&h7A}Fz|*Z5anzX&lyZ%m~%G2r!fWS4ZgUKxL7$Mkr}R%WJ+HtH;kwu9qlZ9A1{1{%Bi9Ck+CDbz6$Xa;g4wc)32lG*Mbu1^=OUbQj zdXKAS1iHjg6^?>6BuC`qLM^ATHJB_SSx7~;U|)7sN@Mcb*d|v=8(hf}%8m>=QLJeS zp2{jz4r<62@KhGLmc&R{*=^`jwGy`3T*uaozOqs3jOSQ==|L`u+%}|&39oT6x9rr-DV4Gi?#^gB(KKDfYczMKBn(7QoV z-zoeLA$ahzkhd|THz}9b-=Wp5zdgMj?EL=%SSt9tNW;I?_X}8Reb3O;=@2w%+~bLI zu3AiSXd9e|O&w2tGN_&>_&SC;0L`;y@k5`VwB)WyyF%XLa<)(eT@=*&e#cvm8jB7_ zCo#Fwq~8Q-KxNCY4r)IllLyDfh<8H23c@GSgU5`VsPIv^Z@tmE3CD$mCK^OMPZ zg5hIFgU<2cqT5Ep5DYQfZ%;=Uv?zF_4w9mc!9LXSpgYGOqPw$EuhVdw9{NTt#yyac zK?jDHg8n>c*Fhle)G=6T8v~Tu(6pwjH63l*b>|)3Ws}fAG9QlaJX*VVbAR)Gu$5*}R6 zM#l$>Blxf10zJag1d!1*q4Hwk95mUHS)Mwz!v@Recen0+vUc~=a&mj_R0cu7si7|) z%m&8?BY1oFXy4!=`?==$sr(=abRlV)oVNucm!( z()FSGhl}ZS+#C1mi^%}A7gOcGd@?&)PGK}L7_)D{m_ZGno*%z{asKMrDZ)aN{*%MO za@?A9?9Z3(moJ~5&RWwRdX2T~c+4EAbI+cfKRG}399tAFyf8qc$Y)cT*p5u)d_w>+ z%aMqsPc?-Mncdr6zjyEY54ik>SlUv^M8gtK59Syu{^aoMFJAxZ=Rf}P<@w=a2<>`$ zc03INdLK-Bhx74rjzN)zz1FnfI6v%<`)J}f?6yFE>315?kh7!3v$Ml_&pKX?7o+B4 z;Jki*iXp}v6{?DcLW{`=7_RPuxDQt_I=}eYPriJ0Htsj-o_Tt_{Ifs(B@X?;`16-f z|M)k*I$EGJ9gOf|Iv90rTP%1&*5OihAv1Go1HA-N+V*1^41^ zS>s*{)Z@CVkNd4o!)&^$r`8-U?Ta~3bh|da74w|aQm3qF0!M|J`bjwlK>-u=U=X}^ao)5=e7X}FW0Krp( z=PNN&BAd3_^^H**n6M67nI#cIEd|2?x?;;!#vKQij@`BX^Hp=}Y6T?lzq zgmQ$Pw`doEo{^21)U1j4R9_Eu_?g;%fmKbwzUI@3n2Q?VEvZg)<$t4i$+>vWopez!9n4`E?Jc&p)oHm}Jd&rsz;PR0O*I%wUlSismrY}S#g zuvUXgX6q`)kcOrV``z)dKLUl@)qO{YO%2p+kku_ZW>GP{y04VO#AVt zh&RMsY;%$X5?A|bk|}wQ7U8^ihx@Amf+b6=+&O3I|gEB zutS36V8M*yp;N1}$iiYJa4bhtRJF)cC7GvSELe&l${C4=-CTmj5ZVjXhJJvygOmcD z+4Z#sp1^DMVe#};&*Tg~4@=@8ICcQ!80a6*u@LpZHyVyEDFVn{gr~zYCE8-yX4A0l zfv%X@y_bpZY_C6Dzx!z^`mmNtWp>q*lMe#JW(wLVGxAij1d!tL**-q#DFqi%%!WPEYw6tFpgzuN>wBq zBrq8P#~}Qc>6mKEH<~_hbpuvlUq>jvi>He;2OS?4(zYXmFa~Y3Obin5*k-ei(f*)J z5afIZeG$r+U3%~mRc>A+kf!z)(;=vzqR%FUVQfWLNnWu=^nkhy(4Z#1{d751Qpo=`BDj6$YejX}#SnUUBUT~1dLo4_-=M1y<*tCJ>D zp3W;|DjR;Zw|=LP+>!C}JDgDpg5tR?@q*Tm*-YDhVvXQWcEu zpN|PdUg0T`sd$EzNkl+nYC1~85}>bKnRI2s692pgbJv88Y>flnhZo>sp1Ek@_bPSsOeAuEgn?@~SQ!%;_+1q;b z;Kuu~yu#Afk_(HrvYZa5E$#ex{^jSdUOzvZ4*kV+xR`+~4WfeXC?p7WAW5|Fym@N` zLVC-Sxw0nFpdOzcA3#13-}~J*Nc%v)`sT-HCx@-3KOA&_{*xaaEhmTb{^`N!)w7eI z{^)BEM?f|T+yFcCN&o3V|Lkyja)3TxAP>z(Ab7j*dAyu8@#JQwA4D8)H$1q0c6NAn zI6In;XCshaENJHGV)S(09D9^h#&a>^Teo9-Yl+Ct#{ExW#RGu=R&a?(f#ltB`DxFZ zjap-jxzIS6kLPW@XA%vi)Y3`~rHp4PNsO(F@aiBem%W^gUZb7S%asw+;c~v5kI&EM z|Mj2!gJ(~UpB@gL9rQr33p}b?&@E7_US0p`mrsBF&5xg)9`+mNaZjC32GF+obPSI_ ze|q-M{>h(y{%rZ`wEyL^>A_-pxPUSd9vXlK@4B6)jD4 z4FUbXj7nQ6^t9rOkqnyi#+{EJ-@TEGZ8>zTr(}Cte&qAV^Ul|wpS^f`deAdZXRQ~{ zPJso+T~Nu|hvVkK(1Vvj8{wr5&jAtjU^f2xtbg3oW<9&x!bAGoI?-!dAn|}$^P69N z^YrW(2D;a2LN#ZTF|_E}`RVC$v>f_pr$@lFP+?TzTF%+n`?Ej()$617@yK6H#)EF_ ze)SEEJ7|N0ZilE_?x! zIG^}@w{9LE%w9e@nGM==jO{f%m<^5===uk32O77`!=C<=*T)K1v}AHQ>AW~Ug4UfK zFM+*aAfB8Zzj*fKyR~)qLr-%KPr#FGqrlV(P zM^or8i>b@`I@)sQJt05o=zUM{6#~>~v;uR@Nxu<_>+F!84p{tNf$bBHtLLeKB!L(U&rX?B5BEV!xX!|F&nj~eZ-Gk9U)^| zp&BL!6AJhWrqX=aoOJ!Bt=26S7Bom4x9xG;8FlLNHY{_>`y}HS7 zA>OpYq*k!hv$N3I6219WfYgc*y4uAQF#xLU(i>Q+&W4r)G?lUnmw3&kQPlt|rz$qZF5NcG=Y-$Bst-z@j zA<(vh)!u@oFakO}xbt^>Ap`6L3pH#~i}`dm83tH@YG`=A=X5+gK3oF-!>;6*TBi+r zjn!%5QL{(5P>h$e>0&y8&9qrZK&KZR&nXEU&(M22+o~woDkqXTfhmHLqmxOC%bR?W zDaIT_15FrI#D4JWj;)gII-Uy35;>hi49lcqN@<5nuQ7=Ys#e+Gyr0^+i-A!C=AiX!spv1=%>N~aR>bSiZ8j%ObP|#TbC0%4?xVQCf732ja)8!{o^03-~FTppj+>@o4&@h z40_-SJ)0T!e2zqaTc{Fn1q@RsID(+nK>QIy7TEA!nI((W?4GUC?Yhx28H0?|xow|I z#Wz0Ne0Y0*du{*m&1&LtEwKi}rxFQ~%raC>RU{L5Koc#6f`xF)3dz1_noW zblCk{YB{xYkIigS>5Xz`4|eQ_x38_=zp=M=8}>6;4C{_53osm?0;{ohlrb%Y`iT2?#*G4TH?3lkwn( z5Y^TMoiD%!H0a>bI=+YIZ0JCsDl|z{%cWI!X{s3f*ohB|JPVr+bdiewxjIQyG(}=) zvQ)|==%&-UNUKaysYYS*LfC>y!lds--sA{4QUPs$^29 zQxcIdq@qM+5Sil8B-RirI-7z0POe7fT8zr?!{!K+TCT-aDqYU(!i9t9Fy=*^&Un0_ zP}-++yP%}Ag)o)dW%B!6F(Q3dU#$uG7f4 z!R0+ubW|Fh>8f#<2+(TB5H-Hc6~ihKb5s`g`d-s@G(1PU3DaI-WiqV`6|zzgswt@& zgL3L(P7TgIgj$j5O)kG<(TVuht-Z|$>G*Cg`mmbZsHL}%GI*q5V9bRVTyY=jQ!Qjf zx}?%sv<<}gwuzP{m|{(+CR~*UDcUy$*WmH@BOr!zuvU#ul8sfGuRi&>vfw=I6y z)Q2A56tg{x?ii$0O=R~UW_E7V$;Z*P8=LoUJidGV!S(l@+AatQY-U3&Y-`mBa0r>* z=8Aie-w;ThFG-ac^jK>5UVP`CM5g%?0+hgA1{t%Ncs02$mG;|OwdE-Dq2I5ozFY;> zW71Tl^1jO?yJ}%zl=@m>W$}cj=uE<8;$1nXSHt+CTC^@eww#F(#G!sM*_qL z{)g+}KeU#*z)*lLz6Ou4@?X#el!JfoT^0d^g$I~U@D*>p5C8D~>TXaOpcN(+AU>|J){*V1$5cofL4XSUEmuE9uKlz-NnBZW`|!^6~nvVf~A7TF&idc zq<^QV)z{VaD*si^)m`|6epnF{wz^og3+N*K{}x#44|L`GTiZ!p(eHw#KDYpU)r-Zb(`|w-+C4uxdU}3*xR{+DFG0aS zK0E;F0`fOq6BN;BX9r(@{%qRyrak{?F`AA0pTBr=cC;K1I-p=5EvHZ`kbOa7b_^9w z`W+ooUOhei#gD%@UW|urZ#nK9j5|F~lFRrbMlHD(-@d=`;Il`!KgkD1^&mddg?(Kj zXDwkd^g%0LOa|x2OOV)>)4@-^eDU+IU(JS1bZ)X4&?{7~I38f=cMy_BeT<3)Viv-J zlm2`gJQ<>CvobGU>KK^-Z#?2 z3a1VuuYk-7UCohYs#*j=Vm$0&xb#`?criFSn8CAsUpktP&QF$4&kkO{eE#y;lP_K@ zPY;I&^YK@&o<2Dko%FS53yeOVNhN%>R(CYlv3<`4rHE%4$1>}_XPKtRb1X$j_$xQY zhG45XlZ-Vu6cZoZ{OH!l?^R-tVW)4|(#gTR;o4oBoetX1&QD)GJ6nwVU%YxY8xPU> zqV5v45>+dMFg(G~Y@->x8`_{rP2cW=E~pCgQRiSfc>Vkgp6UnD&E}KAbl5@2qp36; zuJ18jm#aGpNVmY@!(JVqrq37zdBnC&d@yS+1FpbdUk&N#mlEpP7orSPlh9m zo{p}6PfiZLcya3MHDAgHKYUe2Mse;Fd^xhe_8Dx)au9C8_9AIU1fm zXuGHL-n4BlTSDKc)W!V3sDj`)YNJKZz>}J;1_Re=`cUnY!&$H6jC$Ur?;nlq!@kz> zRhTcp*wbNm&}{-A_Urnnq4XW5rIdWR+;H`_$&6e2;cRd?!_&lI9xbQC*|06K71z>W zN&+(g8`piuvt;0U=o~2RXgO(ms7V{DGyt|4v|5hPkc%K9>$PZ$PbSts1)(jxahEGa zF%CM&yQZLWRf*0|hfrZe(|Yatco@Xrb=7XeYFSGv)8bOEqgv{w|vu3(09p{Ib7fR4PZ-H0b0HTkGCAPbOvB&sW=ejW6s-g&iilRmtpE%Ek2Vy;}T{ zP9z!{1-u8$qe+ydi||G?^pIKKF+f|Efn|$%hOF{5LE))viBxna7hcOoH#3oSph7wV zdO|s|j?p)A+u8j`@!iKXOJ02jr0(OVQ$@t*ZCI+Wh2(t%afC~|Dj+EH z>H=vm)L{cysu${M7g*IBKq{aMz~~Y-03eRh*gj-#}U<9VO}e+>FO0LSjx?Z>gAA@!0R`#6l4yds1+==x>yl3limoGH~wzj zVnFlPHLcEw+jlkYw9i6Xah^zMlrdY zON0~A{Y)~duEI-61&fNQl|9f%i}~E%`rX*ZEj$Ihh;eP|8aZg&uB8-Gk!}lE1dZv? zQLE)CJj_|OQFmQV!&#gPjJJ9i6YR zMU3UlSK^*ZP~}7>v9Bv)DuD+Am>9dA<5|iy(4NRe>mGO5Z;3%@Lf5vMb>Gkxx{?t& z(lS)fF`=QQMRMYt8=!gKz`U6bxnc#@E975rU=Bm z1u9=DW~frq63Vaz_$pbqwQdUqMN?M?Jzz{|q;44sESnmeuRCfF1elfwbr`~40Nmr* zrYb5T2i@g4P#@TO8Cdf*Mdlb9h@r`9rQ|~?GHWP2?47X2>b00y+#~b*>B#z{TR;5d zgYQLl*JFF@(cQ;9T_Ys?5RmA$S4MrUA=| ze63otO|1^gu_{tTF%}J*hBh8xI0ajmC5{9hLr+^lqCZc$nuBy5s%RHk9 zj1SX8;uMkAB}U~5fy_foZCx@XTB7pB zt6`zETTX9B_qVS7;GOv9?P_8T<{+8b;)$%O^2pv21@(tz-#`FS))c;6%)nLzs|uuG zI4zs$H$gg;T#d4Xf=VV0wAM)(ObWd|F}P0_UI!XFTZ#!(Q4v6}FTvD>S?n5$i>D37 zO)6&dIo}rRuHuL#i_L(9AXOt$H4e|JwFo+Zb9uIwHWb>@XjpPYt_m#z)xa?nN0(fk zg$V^04cCIf2Wc6mXS?np-e;-0SgU1sfjtbg7fV`rSY!g0ETtM@^E)6w+Eje+(e?f9 zwPH4r+_}RR@VLEdYBM-oZ-+{)3&lOL6kdf4VhiDNX1|u*7pe(es2NnsRasZAVXST< zqEkt+5;eG@r_mOhgV8ZHQ56}ck|nddut5tZM85kD=jJ4 zF!-iYlq!2qooxlt>9;TV-Yx$90#2-f$ zpnQjlu3#yk(@Svb{GHIV_b`O{Dw5R7ND4j|0RnX#5ae9B`>ig3&fW|Co!ftq-T{T>y?j2qyLPt{Uvt^CP>$y^ z5S z$9IFftMrRo!6T3X>8%2TuWw#@c@6Ik@?6yC>h2Wbvw- z;vb4kUBOasdFuVnzY9QW^<`sY&#~R}(?gJqgUHZrQ&%{Kjl2L^sgA@MyWVaeg#AKRK9<`}q5wse3Br z$TdgBlf3xSK4^?>kP2OMGQgAjo}Hh5@%;Gt@n|&YO~-@Nqs0Ui<%U0>P7W6HSI?h5 ze{#BjvM`Vb#$!SUI-Ld0{_N!7{AhkM?;TFs@HSBIPY&mh5t;$wA&4EpwW}*azti~Q z#rfIM{QP+F{OsuTVD`oHv*%}vdDm(xWrxoU)Eo%(v8_7~Z-4yY7Dftin8e5^jcl^% z%A>XhN^h&~^xBQ{lf#ok4B>Qqus8rkzt>vM$H((-$Jby}UrhT4vyNx-ZBIR2j$S`I zJ6epOPp0GHd^$Qln2$#TboiPMphX~mLFa=4KkT-;t@>opK0aIo{nqKV9C)PZJ5NrJ zUOYX2dVc!#7q6bcD39CAk#{t09UaU*fA#G6V78bJj}PZhpPYcqeRh0s3S+sPpPe9p zFl-ycwzZrMzIgd$Ic&B}z9E;EUhU@x`p_&!*72a6*zP)!SZ^{3*f^IS@x{zI?#eHo z96w()o-e#tXXCFwfAaKrG9Pt@ZGYIQgC;hEiq+kI(>fS>i=jUs`0%!)gUNW%>^42< zB9^Lxz_*x9e)QGnpsJ1A)}-fw+V9@}gCr?i1EAH(! zbXP1j#B5&$X#)?pt|ZoW9)1e)4V~Qrm6b2<=~T*>N+8PUOvct=3hVv04}JLLcz!;% zMt05PvoO;~ZJb=gj??v(R^1-LsCY2h-T4&e*ZlnSAP7v}f^q3J-9ZP#uFXf?`LNyf zwSzGRET0dW^FgCw$QZZkQuTklB#Hxs-C6fwIs{#ouB=MAo zSiJ3;svSg|0!^%(M`t~%S}dfZ<xP$sB#{o zs&hq6z=%AqLfD!B1;WzN?*OMk=R3AcX>?u|xp-_Jq;RvgDF)V0>K@`vKy?CPsi%h+ zYe|M%0V%ry1?E(c89to~qESE|9dZc_{M424mKb=tA)d9up>{*^9)7Mo`{eyllR#K% zXoT$i1uTUoNS9F26|DfN6=noEM+U~95>_YTK?W!-g5Z={{vF6vgGXzrzJ}E^3LzyC zlA`$R#p?nf3_e%*)an)7W~g2aHOe6^et}Y51vS6I%PtskxAu8DRfL43f@bkrLSx;?~t{J@~50enT5 z)3r*8BC2Gy%#Z|CDP+Ts)XF}U->)RMicz!}s+Mv>EeqOCw`JEIO9U;8t6)fPx&)ek z%OqjX0zJxMQgn7FlS=HY-Hoo@EJYrW=?&2ORK5!Q0JY5|BXy0&z(B6%*h&Dth`wvX z?rZC!LS+<@C2D1XqcP-JH4Yr*xwaIi`$0;oiLH^9JWK>v z7uag1l-v=C3{i+n9A%?bk-{^C2Kp^JAqH^+bl$Tq6KbxAn#5^*RfSJQfaXJ8E$CUg zA`6U;j(d8)*J?HD&{9Q4KfXR}500uSoFUa3CJVAkuhVuc6Q-NUGrEe94djPWMsGgX zg0-vestj4mrXplH35?`xl*8v%uoRKppwgSg_~y>zJGVc6w-A0%iaaD!>nfG;Y&--F z<}dIS6s2JKtSV!8td^%WU392~RTZQWkf9Jg)L6$-VL%alF%4)PT2VUfiDfA z0^^Ty?gd&As36!>7P=1kma0`M7^Ms5iY8L7AvhWqLaiZ0gqE+h>#CzO3X|8UgvDk| zCS}k`gF@2Sj6`LGYC^1~(Xmk#MUDo}w^bHa72teBgk?WxvYEP#r$XbgZW?b0HL)D7 zrnaPN%n~ZL%3~CNg@el2h79`=8f|GZbQ$mibR?ScIWj`Vp4DkMu)e`Sw0svtP}tKQ z1K3P-blwz7IuSRigia>-+%}coz}V!4U6Y9JKf0cX>{Ltny~j7?N?0hOXCIkGPez`| zbJdhki7B<1P9;n>SIz9Q)vT>BmRQ!Qq{A0%E@!c6Uo3b^4TKz}7FUR*Mx``?gz*A? z=7}_w-PV|lLg!$nr^9OkT~tM?mWvc(>p;cWdLXi0>{WzbK*5|Julhf8yXT~IwbO1`HS+j8DzlWGkr5H^X3MJ2jg zxvLhNQm(D!=PogH=z&=sTa}4j9q6UDoP)wWAv?A!bI{tva#PF+rCln!2_hxD!ln~- zA>9-+tpIWw=!KqIXb2gojK`&XE(KyIXg!eFma;uH57!f`JQCB#AN`&4cS5U^_<)Wt zZKf{V^x*muidvyjK&xAD0iUbHC+~+|-@q{ED>Uj?fnn4NheBFePOV@m3A-agq_=h- z-`acpS#JMfExD1}xqI`I4=R=N-p2hrqIXduyPwOH-oR3CgH!Lk^WOVE_;jsseY19B zMO#EbaIvDRYvLjU=D8xw4A0`@ml-a;zIE|d{ww;ise+O?` z(L3lU_j~F4!RNb|Skn7wsPz$izJ)IR&FC!<>WZMi3wkd=pne}R6{Np0q-j+vov1QP0tCwS2e){8|{`g0)Up!q*x}&alb~s!1jAzH=qoLDP^F1Xy zF+qa5^Z3D?{hf`>?meNf?Xk(BRUP?k!{QDm%~8LBzbje>+Bc0`XGgPBjHxun&^>i$ zSQkN82R#rYaaN-p-vFr&gZK>UPtT4Im$SoJ|6q#oH9Kt#0u4`fTaEFse=whY@#^K% zvy&mnfX(`72nsONx(-?;hFlu<7L&nZ+@22nQ6EnsTuz6F^YLObTp?5QQK#Q_yDk6o z7f)Y5KY#V~^z3l47!Tm7(}U^3s4;N4hFoYUg|Sg=$mLpQXY2l_k8fYAB-W;O<*da_ zU9#)&C(FU8*QmP&6nlPh^z8ij+1c^g@d4C)K82>Vj}IoGc!Th9IG>yzO+l${THIpT z{QUWo`DEB{m^Y-)T%nJ$QC98Vq`!<#dF8RSgd^{^+YOrlbC-WgHCM z#cYBw(;)_mf~H|qrnBQ|&s&TdCkK=Hbolbw`RVcUa5=>gMa#j-;T#g6I~Ujw{gZif zG4f}_*3okE61}`SeU}{=+|mU)H|4>*$dRU*L2aIXg-0;blZ(#$6pS;Mc+7^H;!f z==0*)*{^@`a~Q9)gYoeKk4S(1IhggQ z1N0AFOnN6{_o%D1d}G|lgCNHpcR8rT-6aBZ{n-c)4gCE1`H#PRg>k8HbdFvI!#(Y} z$J6Hd5heorw=8~CSDqXWzy9I{3@-2wl;8C9Zl?*wK08}JKR;Sd2cx#rZ8>$N)>R90 zw|eN+no_nBe}q8_9(;=DzvQ+-0+!1AAbcD)Xjd-lLaFX3lVN8u?JcLhr$_zcq1n~T z81=y98YW-2_@<}!TE4II{gwlhbkOkzE$0ByGEkO%G<|9~=$dCK{iZW&+f9RNTO7<# zm}a0l;m{JaJ-1*_7TX=?%Ma3aet;Ik}1EmP^J)jy=M^Perw#TPy6*z$8AEZyH2mJL(LnO)JAPhZ#ueXNV>#;QUUcJw!LB3AGF;; z(*RQW8t7JaN5z!3GwnAgJ-=y-5|zgQ>Iwxa87LbPoeu=xJP7@sAp&<%70`+~Q{h1O z_D!+Zawh%y5C+Rr2CgvlWslE7a||X+64lh+Lpr@K_7c0?9AyLSpPYMQ#&Lr}Q-D-M=$z!D3N@9a7CKbA1tBj>W zB@4Dpx5|pr>=bA>jwp1VNwW7U0xt81rKIJ6F1ZqLuw?zdM-hq@1Rj{ z=n9tdFJY+_ZK3s(97n&r?~q*#4MdD=Wn@Eg^a6)Mf{RN`>f)uB$P|!YL{cIbu+-Iy zR>&08^8%I%Xa!3tnQNe!feLCFA}lo`51K8Wi)t%;+qYpmLc=$m1%(Y%V$k!^^4G_a zgzZhpIvS2xc*aP>HBE^EOO_c&zDp7aMy6>zMSB54*k#;QI zG*m4JA%sDxI98EFQ&&NQ6{rGF6*Y;qR6(RmL@9%@#ywjH<_khKaWo0)Hy)g-$}CNk z@>!lCArENdXvJ)*FjaXXr_xy_x5MVP=*(s{yI08PKKE%s7{^o;k+WnPW*jK+7^GW6?=!T} z;b=>fKvy?)(9AiRN5d{iv`qyvp@$<+4q;B=F2h4}0))tMZOu>^s82&@+5rLuulCTf zQH5p(fRqDou}wX|ZVW>cq0yCMM&YX%7>iC{#mp|p*XYbvdguPV8z0{M==vNCJj|Y!Xi!d`YY(_`*J!+K6x6 z+1q?{`}#-sKl?bmc`qN^Aj&ziRt7df5DHp{rgNN1)R0?NC0f*f0xlg79oEo0bIzZmANB$JhY}SK>N} z@!f>tPIm9X?#6@rw?5gpe=V_nHyeIfOl(r61n{;<;hC^1R~6Z+DgxK>FooG#jwSL6 zSJB0q#FkX9grUR~3P#Ojvno2=C1nE1=5w}2!^BrPjKm*!9ZI+y(It%f3hd`XnxadT zDOSl&+x z31e_Ieen@`@U5((ei2wm{d)5vo)pkG>j6-;6*%$1zyksIBzNy; z_7IZ-2{^iO`}Xw@38K2cc|W;zhfHsl5}VmH!cy-AIMlabsdo{Uy7oI@DWJE}lYrjj zxgyMY3G}?dt=^=3tEk`i6$v4jZSp&bK$qal???m+U@2(L%7yS<`1)41;4N2G+NiE- zg%!iPUC~v3q^pvFzH{r6zWdbg&-wf4cf5B6OF>)Sf~AU(eo>hKkh;R8uD%96_FYKm zchZeZjOjm1H{L>^Rw4z{SLai`|gEN)ers}x4!TFSMUB8fA6ogle&PVzV)}UvFCe@ zm(M`UK3L8sCx?r6-2xeiAflX`xHF<(GF15Nk!%O~f74a{sZn2!h3L37k^%?Iw&qv4a|IUZ7`5^c|%PsRuH zai?xRIX#+=2Avj2jVNtkV9|C1${7v1a|~{E^y1mm)03kK=7GfCQ4rW@GVDQ1r^DW; z*Fvk19_R%YBpfa#CkL}2;5WipN7LSXh;Y@fe*Tl=#q{iOaXcSRdi8$0G48kf4&OGa zU8^?n$ca^1v{i-7>_55*8ws1+o;lT}M+_}u*|VRYEupU(9$JC~!9<{92d`f|`Rel* zpTB$tdN|s@wCb?$&nI|%9w^U)x;$!uZr|;;>Z6AA`PuXrKmGdY*~#-KXFZTLo8D|P ze0qL584VGFflMC8{`keuezKfT<~{dh?89jO>YJZDIXyU-jew@3?(xB5*s>O*_UZBA zY%*HTr|9B$dVIVX&3fk3v!mm~`Et^S26h|f!NBM>)Wx_1-3}=|mm7QZaf>~!lT9I` zmiBiae7e2%ARXV&h3}iSh|eSj7I8B1zkGW5v(JzI$)En@Pk#RF^>OcL-kXox<3VRK z1ZsndH5(6rZH^9R&(4--%kGndZrhVV4FDm$p^kjQB9CU>uU?!UEvK(vJbiM! zSdP0-&kkQcfAZBAuUDNN z&rS|OLjX;0(C^u{)$py^usxfOL2$G+0h9_|W<|D^+PTN&wqWnS{)6v*_Q|`u4?iX2 zkK}5?QQ6t3`=ifa94+SulkU^Q!OQalDES#0&CTIG0H4594mJPgg@eB_z@!K8gW_C_}03Av_Dc}mUI zXiz!&P1lyH^I`pXF&uVWQzl`GwR{WhryBOKWqK+Nx?IDSJDytCX_G6oZL!~SLG8gK z>gyi*hj#0DXh73}hW8uBu%Ru6jkCk)w1;M5lR*c126Xb3=^qr^1Z~HbEtT>u5vKXD z?M*vQ->9^dLQ~B6Ok64LZQuL&;jJGgckU~d2*^fiH437qqtbYmTpQ%z`gj10*BZ6m zSxY-Rn$Ab90Uk!Kw_O#(me&pVI%+#jN3PpC9wIKYy2Lcy;25d4JMP2c(;WA_mLsb? zVaQy!=^V}blYZl5K3EJvTj#iHMy3k}Uv*WcZb?vQN2(ZXzF`VYM`6oJi77+3^y^05 z6dZ*z6{hX!!*b#e-CBlTnM!(KNOF=(Aelu~OX8$)smV?Yh$Pj3)GhM1V|O zcXUvJpqF6%Y5TU!gPL7oD=EGdmdO-V$&`zTNfG5deCCpoQVM@&Iz#4wVJ;8|0nKGVEadtcL10U;IKaCYa)Oes$|DJM;KvQw95M%9^?a&9VhVIk!cUI8-|9LPv* zodk+{ot6rWq|TWj2zTi?pry{7_|A=(2wQ|>UvN)w5Qwoc)1qgrE%Le`4isUa{7-V= z6HJ#+1Ao18n)va_t6#tOLXg546?Mri5u!!k^IWS{0aO-91QvpXjeIr@5ZGuP$D zip&WdyLA87{LS~VMl0Dh;+wCFWH)^(1N>BV#F9e-MY%pFRj*cT%K(~1J~4$#0%z)~ zWs-gRZHa7=RxVnOp(yB19Ag>8yA1#p&(?ecWKEG(S#&K8YKF|D0GMrEunFd87%C6M z3#g1_HC3YWS-^XdX9bpVOatF$Qwf=8NDyU{6WD?xFmyJakFT42f{HD$WRv@ad~78V zkA3j&TdVi3P?32+tcsQ+f!_U)MwYHPB(RqTj17Q|13+s{ksM+e#qcbRxwq4-N?aar z)U{+}+qKMc$!#@A>y%upRxJx02`qr(R7xcPbh1}~!~n%|EZuHakS3dpi&VT`t0JB;GlSkE+uZvPU5rQDE|h!V86% zoZke(EONwuC%-kzMCZdxw{Lv-?t5?kVQB8-?D`!cv1oJgGJtX}tq}W4y@^GKaQgLt zO(4Pc49zj*vLzx9?Rp8N@M#4D*EO$$d#HXzKDfZks5 zN+>&OSdm4BF6gR)PYBA+P+9a1N6H#>gpDmg!MJ_(?T>!+=E9w8(N(f(8lR6b`7|L1 z(G`h3o>D?b^@yXK#53sjXi8K9l}pJYA!RJ3P&9b-KIFmg04n+qosAhnMwPhb#ko{G zif4)Yo}*)mM%hiVVDf3l5Oswxn8-6S#!^|HEs!vvhHU7HNGCO!Fi@yNRFOc%CAPrP z7&v*i*Vqt*LYpo*k7 z?ozQuD!#&`HdQVo6{3Vll4(n2h~-XpL!y!Sw85viT$Ia(#e9SeC55(xq>x?}vzuZ* ztkBVtl&lrW{;)+$DY>MgG?_!bWi|~#woB+1#B@<{EyYxYq9u8*SuT>_Kgh(TFfvbR zGOp{WVOik(5u}+a*=iH|D#k5w&m<0pGE@a9B!sIX)`Av>Fot!}w_j^ii|G8-a;apg z=%4L+wP=c#m@$}yMn$yTnwDM7Y~0ygx&w?bd*gj6v&yH}xYR19JB!aCOK2Tk%%emo zqsgcEY=};WxO~jyQYA4_(=wivbi`EI;)^PU15e9W49a37WI5*IHWzipL{ZL^4Mt^? z+1Oe#yo^DLGAVR|%|>#`aC~zymx}OoP8JwqsF_O_(qY^qQ}h$Dhl@Wce!eRBQY!p-;T@NAe^?!U9SG7q&4T0wN_Ms)e6oLkfL>uPqD z!*rKiGlYCuj1`4gNlp~Sn3P#buHO~X>x4gILM1+8(IMo7PpvYE6*0YvPKE0(N4~9y zvAUY9O3@avd&<<+RJWpY*-bgSR^+2nVG9a_DdluNY4C}Oy`x=f{)s!<^&vC-XBuUm!Ar##RekLTbgNHr4D#Wck+C z!j1LWYu7(|N0y|m<@<@1n`&lR$*w2k#EFm4QWtELFXZ5YmI^2jUoMW%Ih4yx%Ej^d z^)sR;_?8G#yGZc6vIA0#G*#HG?9dTRgI(6V#3=fP161*EaY2-elOFj@sM( z#-y$d-2yT4lw(DDHM(+RW%1tf!tC7jcct{Q$A_>UJM7kWRXCis0ONa|CbYU2PY?HZ zrzE~izqK>!Ogh%?HuUpGw^bzuCesPD#ySaO+#dA1P+yz%>U2CD4?DFAR1_5lJGj5w z?6&Kt$A?cIogVD(9v$o*?Co?~fZv1daSusBi<*u*#MkV2|6pf(hStda5;LX!ey8r3 zO0QLY_UL3f861qN$3tk1rDnbS>}2qlfBwmDe)aPQCr79qViZ>QdhObH*xx3`Q#Idq z+TI@b@d^@iw9`TrOoshWUp)Eb`N@kXC$FAA`TUdTXks88T;Jc>o{q`3aXXXI$>ILV z-egcWNwBJBd05x_WufAzWvujSdeU+CMh%0*TAS>Z_>->wsHY67dndnTIEbpT2rQ;*K@yy>15`2C6VH;ok0a zG#o%DMn4($8qF$T6dzfE|;u(_9xFCqTzrf_xjbn zrsk>HqA5eg^PtG;GSCvVlSaj=x=OcRdj90W@!`&(+iX|Nmcv%nq)vwqC!ND_bGKLe z^3xa39v+SRWH(6+oW1SQgQNX^yWVM3cPFEl&mMpF@-gvf>ySVszI*KW;e*4|lLI9C zmw)xsQLl5jGeQcVzI^)0%cr%Hv9~=$YvSg9yU}h`TQ#d&*EVg`e>Gp?E zbCt{rz>Gm{KoLi2>%OzCXNk}bt0lYJs^~(tBopenrlosD=F#D3I_h-lZnI3V4PgK~ zrQLCBZ%PJZyIF1&<#E?L*&ATU*F39Q)LSG#xKppVqfT|)ERH)Bz#-4IRZ(bGJ*3cU zmM6XPpk42`s(X{}vxj>xpBy!-rB=N<>>~XNZXGZq~=c-pj{F zgl`4NuMw7T+-r?{#N2YwF7+C2yIKNZf=X)0EN-Zm0Y_yh&!c{`*YY|wvhyG&rJZsA zaCbcEH70nlRcckOsx4`3Qq0E$DrHD)yXtQD>)YK@x2l(PPG(bVW~=RKO;3~QczSa# z71{7?t=FjF&YGhdVit;%m0wlzTbWFH?$(FN)mu_>QK!PX%v6d7hBhDpFh6iJYEzR0 zTi5F4l4t7@pG!nHbFnopvyo0jB#u%9R_60Ooh)P$OmZb3Tg*jBgbpUTEb}Cuh)gHN z%(_ZNEKMYaEk&znlg;}v;{kLjT+WvAxlC+nadvfOA-DD}VV!(J%37Z>*T}KGHFGo} z-gdZXtPsIu z%s4T^3SG9ABCd0n_$lt3oFcT8A6x1h)>7v}2qyoL;3+~&ZO*h=VwR<>kZ(xbzM1KR+1_cRj8=S zBmufPmM&yc$*r|aWXTkgT4AG*++s2jlTX%d&XBo0`T&)7O{vrLu&`fi9`S2{PBAZUdsY2E?w05iESf<7U@F#NFv?_~@TBU|gW}w^hvhR*Z>@_sW&_rCX z*E~~WRIvbL>+=4>P((}RbeR{J9Gi_|d=a;r z)G{y_5Sq>IGQfxAeNzTk4MDH zA{kPdgsCfl?nn>|2h<5n&ci+cX#q0^R)-FWCBR_$KrwAo#Z==vmszz+xltprz)>em zAxq~ofXBI1)RA*oM;x+qR?KBWLVQt3EXP*w-M;$%hd=zI&AE>;Z*Z{%my2NG8+Xc3 z4?I&8v!Oz4SryrwAF$c>c?2%IRkW03B#H3Z6#kR3yJO8(X<~ z_u3Ed-TWxDd^f&+Z}HAYd~!);vuq*9Pv_y3XWFGr4u5X*XT&mkg%pCqnk`2m(9clo`k^1 zKrmIQsB1MM>Y?m?M#Jn8Y%j-s0#Snd;fBE*2cphee5w z3Yj&WT5`b>(}v2T$H|1c3X5s7AwC^nrW30Q9d)F%#YG(?+Zd|#bDzYjF^8gG%&Lm3XK`5Ua>7PLv}f&(!_jN%a^5iSs@#Omy}Gc zWY>x+dVkr`9WjLk&Xg!q%s47lvS{`+V!2erm9t!G-4)|CHCa;=4Lxg7n>9I6;-f-x8C4-A=8f!1bn)YR zH$KQDBV{41<=4d2lA2yJ^J`RO9-`$pFxb`nx}IOtn3$!|uEt=BSib*pGE5AqJdt?S z+3c21Z5eb}$!!**3noq2qLvTJTrLcNh73S&9~BFeGTqQpQig1_S5?v~m*xs_EE!56 zWJ_sRr<+FFq&A2rpq?7qnZ8AAtcdHMmaG8c@sXyQL{bek*)h{{ezPhi`bB1&4qebv z7Y0)hvh`lTLw$c{*Qccd&%S`V3T_TKslZwa^6=f6FMSWbpZKB8gLqP3`fSwC{A1$W zH#_sQxtSRhTgt90xs8^VvglAQbRY9beD(H6@4c1J=T_%#Wj5{teBz#@A6x3%v=rpc zx8DBXe(Ey!@iqNHJ_Fw5j6Lz?;`sdfx0srM3A%jcyCis=90xD`4*4@_sjIVoanAm} z(^@LXOh8K!X6o#{7xMMZ-+1-c>0FYaq~9#sx9)r`%`OVmw-8fT&AVoBwu}ld-^?c zPC{J>dHno<$e&3|y+%C!e)(Or)cKX)NlR6{>Z1oo+mq3BdsHqtz9F=n&m^(x1RgO2 zbCyJd-lC(6QfkSe*Ihm~9kqMyM#+#&Hc`66j%s9Y<%4J;d6?0DM!^5N*G z$K@~fU5{B0FMd3K@5cQ*H|}0}ONz}_xKPugT4lA{Fh;$~;r?`=xFS`1p7_X*p0f=E zxHo-#vN!7cd&x~YJEMBP+akZZc;pAb$*4c%rkl5~I(C~Ce$v11o(}PK;QRy`6K=oy>Sc6L1>pXk>@RJu$fMyT& zb{-rb4SSt>#oOPROveLYjN{$OmoFcU0c1@{DTGUEuH{Ld7%g#I&-Qy2gWFiRMP=ft z&HGw@y~sx^O1e{)tG2k?b0=M*@;*L2{Mn=ScCU)eog5ty4>J<^sIfirgTxcxuHoKv z3;=w3u=BGoKO1+;d)vK}qrIbp{q6DKbgwfRHpYY2bksrKhJ#+UsE*s_)05$|M<=H{ zEx`L0Q1`HlQjlHnIz^QDV3)+PB4$;M8qmeKU*GMO9vmM$d35~bA=xttTJ55+ z-;xeHO0OdQ^wa$pPmb_lztd<`+{2yWZrkiRxq+EHs%E+9{NkjtqeuOSz z(;Hngd(@J4s@%hYxjSqQuJd z?q08i;_r7YJo5a>$?d2+Bb>^7m?ps5ab$J?WBuT?(U9X>ePLHdu6he!JpGCC%mZb_(@onEW5w>>!8 z-yz+;Ttatx@$>;sC&S*j-|D!;(Q@qOCT^}IL?g?$mhN5+FW;8ZWRES2-ZX`TXG`1t zcDq`tmtEp}*sZl4x=3Ph<|kEg=y76hvnZuXa;jnGryb|nqoZL}9ai}5x;$xGE#Itf z)Tju+#OwnjGz61b3UYO1oa^w=4TQC=szx91ptNgU+a1 z$CHCD@iD;wB!R%%K`{8isMiLhs(UU5p8su)m{2v#uEs%uvzd@yATbWALU`@&`?s#V zlZ$WGOioU(WH#@!xdaqMLnR7vyHV+P8yLtyCYaWMj?0c#FBz?hRrkzxwODnvx@QcU z?oQ9!9d|mlv)^(DEhx{rYw1W~GH7?370hV>9)oThQ_2*RQMWT4wmXetqw4H$_f#&! z=2E)Ep%;}+zFoD6X=KSZ70y))$Q}K<3n@lEJv9*4~8#GJ6Y?z3k9g#q- zTtZdkjrkjEvsZJWd+3U`l5G@~k|_cSpg0oQFHFZ21fWZ3Dc6SH49p;N`9dZ}qBRRy z^82$`kl8GgSSdv2sOWqlwwMYpMAql%C;Y&+)q5?E*VTgF36@p0%9njrAE~mW$o-X z2%f@M7Y`C*%QtHh76>iX;bvM4F`Ej$CA^aV7V^4tSH8B1OGGPM1*D7AUZ1LHU%;rUoQboR2spzVlOQ)E8))Wgi8 z$P~8b!|RK&^#wMzS-R0f{{kZ#nfm9ksZXkwLM%XB`OO2jg$h{RJR$Ey0?I#pNE zB#P%48&F;n0QEJ6H+=pD8ih>g56ZW5ftsO^Z3JmDW*u7x#6|s-h-sCMoAE5q652vn z2)oA=@i&SDglSy6u;N7+RSL17U^U*~V zpDmKIql^i=3ao7YxHrSZSC83AlTg;!`ChE9PWD7D^kn#~OzL?&)J9qt^>mUB`?#J(~&R&hI-c{%bkU!59 z6p?Q?sti@|imv~&7KRj`A>SnT4*Xh#WDJV)7336gI_ikRf z@zGnG3)f>Sx3ZyGvRPy%l#MJ2g(x(rq9GJ*MHLHDZk-rRdjI;lv!Ys#iTOrk7ZEZXQlDq5D_djg7@yvd9&pv)QdXg~)w2I?IIaYS~p! zrK*-t)eBWAN(`eErsAl;HD$-(>72>NO)4a(SD_SPRxBC3E#>*t3Y%QD*)4NZz*IKB{JkpdlZ#6(F-Vu^wF$i^2jy|lCx)XRZQ zob_sI(vxE)Icl++evI=Z*;r6dl=;Y{NJ3Wi6LSyWm^t-1ra%q@JE;q=J^wf$o`SCe zOfd{4cz&G^pQD01xk@%?OmX2uhu4jYEbOKr_@iKX=B zz5Lc}V&&F{@4lHzCKvC0oZ7fs;-e;wCJ#cM2Rp%?@B0?)>2^j-ozWWq^*qk+Er)p+)T@%iRg=l2Js z(mWxszInrCxk&%AoPQgnKyvjpCj|+d_|8L~|KP13zWZ%j>Ox39NmdCrhtm(|0(qSq z3gk87>G#WPJk)o}1v&NFi!Mt*OPvRb`Ud6ndxiMcU6yY%Qx|fXg!;Ce-*!eqou8h4 z>wDzAPA&OD%%k4;!*_o74c{$3E%j|Lz4JeO@jGZK+j38i_MSd^u(z`f9mO#ftS(SQ zu>nodVMW_DQ9CT+Xt@t9cqZLB9&)wMbmv+l5myOZ6H1AJT7a&?RDdeXt9 zx!X4TcDnCmYvNXF{Z?dSF|@IA=cBin$bB=vT9xCYx_Wvz8g_xR9B43;erwt-0b_p# zo(C8v5p6unbM5K4f7r8n6=mG39UtzW9333(O^*+zCx<(G(~)oRQU(Bi z{NU(|S5F@uP6wU(WZ3onxq86HJL4Y8f?@)$JN@~cDH+zVWZcuhE4au@d4qOxE6!h^l<#-bb7eAgVc69 z)_%{O_N#m2&Wk4`gwyt@iwfJD4)(T3ZI|zunZBK=Nntg!x-oYx72TxsnZ-LFnuWER z9342h?J7TNpp$q$=|GHY9vtsh9lqkK``g3MUq1TstB5J>z{vFFPoZ>X;w*$twFDATP8Y5zuW0{fdiVZV^7Az1`uJ% z^`MLKc@pD1z7SuzdGmuefArQL#g=d6LieQnX18X3`us7vH}o^K{;Ow?I!zL8e1B&` z%#^yVlA~`AJFlJ`olaY=qFk#KM}y9zmSoRmgU-XGRpJbC!&c=yTS zU}sS6R?WSR^X$RFs0YQq)Pz*MlBIMS-elN0J=*)~^G`;-#-Lm6cf3*Cc`$Mw@AnU< zt?gkGmD5Czbgl6KePf9Jx;^Y88+DtlDT%h8?C2?I9*MO(tFt#^Yb3Cgo?kZ#>lzca zl|sKPx2p~+r`K)}8mMZUY^X%x2y_5H53)2}^$bnw}Whp4E-oyp;}vomUr$R3xCUb{9O zl34FY(+*~db{(oJarf)D>Zk-jHC&kvd!t^{wd7{a8#k5y9JyCD$4#f(EVpW8oAV0UaMLA|o=YO8BTIO;+iqZhJbifdjQkS7j?1VnL^ zsfminn3@bIBJzc$`P;GZDj)vv%v5TPSW7{0tgjG*DQ9cO+VHt5|J#7EBGyvp-h9LW z%BPvsrI{K#<7LmRq5@8e+z{O3OYjw8c9v$`_)O0r22)b7!(G5D`7{vWk1ibtQcBN^ zTw;(#XsLi&x-7l{6du8G@HpPU?JBcPz}vmG*we4ra+xm6POKM9}`u- z(;jrm{tW$YvtA+OqaU2btrvAUAL0rrj;0ieghOKT$z(i2XA>F|*Rm_|wYz+L!R4b0 z6JKAvmyWE)LQC-w351_Zgn+03p@FQ521m!{bBT31zhSc>qp-$AX932R?_XcJ`(bAD zp2Kd5nRT8f8=;m+bZ-*i9NmL#v|lY^Wg*zr5N%B$#&=u>ork4!wyEN)k|`2qK*&mL z7QM>1Bw};`aXL%qQzh5Nz(lgTBH^NCs5p?R7?+EP9Ob!2U`PVAAJ`dTWk)XubW~-j zkjqK}?*~6Jaf(h0ge-GeKC=NhS2RUBy`knenAk!pyi8Mtk3V{MYw-pknO4{YY||yi zP{^LYBFCr_tI5Q>N|ObkQ>24>#&`$7&Sz4<;m8|K38zMe21BSQ61_+U5GFuZ%>z&4 zxMay5W~h7^FdjE(3JJW8;lt4d6xh;8L?Pr~6Y>gQ@U@g8<`b;VXzNzJ=JPm&k!&|> z%{mF#g@PAt3w^`TM1d_xOk9^)RpwEDE;1vs5)~ISYf^d{GdWr+v3fhSeDCh9>+ikw zN0=_?FmdY>Q_FyzB_Ue2q?#kvjJz#p1vVwoF^$Vu8jpHLiHI?{r6?Q;&<@02cJ(6q zr6!|t3b~BP({zEvw365y>0^bQz_AjK%m^rjZ4f&eujFFhu2o!M@`fKQo#1~d=c<$? zQVpO z()}BFFI&ipxiAx*i!R;3qWt08-@p6uk2V%Q4z1i~Q_CtFH)MtwM)`h)wX#>QlnLjE zj)ykLrO}|e!j(+kwTS~Gnl;$ik)cS0ep%o!C{Q9MpPIdQE3viY=`?Zb7t8ZdO2Owevs59&(i9Ta6j9fRL!Uw>-V|zv5FHZDq&H&WO}tQ%1=Ap2 zuD<;sx*Um@uPPE6Lgmw9b{(peO>ZjMmC(YCxjP>(+`F+p_i=3Hc68--IyB3sH_-}0 zK7uMO*)oP6vW*_4@RTkgpQ3Fj!DOC~EvLi8!bqnh8kZHRxRejuQnq5UB}*u~D)diG zCg{By8~1n3Q%zM+1kO+-j?U#X33N6?m0eudh$WO`X=p5D7%h%d+=HP|c639?DQpVw zMX$t+#1=B>{1vj3BZ((Pd;nboUj_EyRTA~Qgmt`9B-$?-(O9`u)T(A{d=-mk)pa#S z&92Fr6*@W}U%P|pYvJ~lTx3zou1lFUF&koYQOrS@h|o&|z6^6x(J{~*$N**of7K@Y zmSUxDK&5x&M%ivP>d@HzJ2C63#Lml<(Xyz2%g{|-70A}i7UnLLL*#OWTq>7Ip>fgw zRguxfye1Y*g~o!e%Z#aVCD(8?wrGg1NyZN88!BD3rFz*Ww&$(|#R=*F38LDAPGok< zdbdVgE2^H`trcq}vV~|33xTcBnW!TqD+YscS~dk0?Uj!>Qo5pL`1o9E^;SM~XKU`t z`U0V)BIpU5ccG3#*!a9jhcL%_rcg6ky|Afr3Dl>jvn2&n4b5l6Y+{*{whv=Nls{VNTW9K z6qi`i^BYonRn4tibjYGMpl3ET;=bpJ5iP%_QR`JH)=&~vIR-4y(h>tZLm~@D@1DLv zf}IDH)5YiU8#705oRLt3d-C1)0un0VrvlR|BL3r#-<|p7`k8qY@z=xWEb-tAj(_UQ zg$dP6&EzXu-k?L7jr(+TA+vd(ip(WfZ(Vus%}97_@$Sc|%~^|2XoXNRk-c)|n(yrP z{Y#t_G0Y*f)GV=Eb$a!kytMlXUkZ(NlU6pY8hBFC>r?Z#hGmvlILsIkErND`ga8hqV z-u&~@QvT_O^Z&EbQV{>a+zkjEawaqkxMD#dT;}Ya#gJ~ zXo`Q0S_-yWc$3~bbH)wH_0z@wPL4U z9CTaLG1-}pc-1|^E&I?Q2kr8Mqn+b}J_uAg}a60aFnk1Am zP9cMKZQLo3JH=kBg4A#qaVzVQAmWozAD@SN+uNfi-hw(gIXVC$?RDB%#|!LbJx}u?=|X`^~KvRvvpA8_Zw2($nSJZ@;iTo$V3o^U?9{?yx->^zqW|AiOu( zS*&*Cn;KQi#b(v}^)J5s?A5bJr$@&J)BT-*up{xsNvP@l?NPfp88pYe>fWgN;@P9| zpo4k?w0?X%Jv}}=Iox~xCr9;f4)B*AN1XE%kH)6NCbCIMuTCux;t(>KHVp~ zMCrMvp6Xe|e3y$akl-DeIF#n4yC3z;Weev+8Up)Kr)#Ic6=`VlwW3*kPR_V0sFP}d^RS@Q4+(+Z? zOa}WTqEqwH@y^RR9-Qt?M`+M)o9vZ7>UB={ho}4f!`%Uj^V!Si&rWy0c=_d zbU0}P3G8k6QK(Oz9=$l7j9V_C#kk*`c1k<_^24L)Pri7yJ8C@K@9$4qgH~z3UwM4I z+ile~@Z(o$0W7w9|cfINq6z@D$!Z z>UW405=z=DcT0RtO_s$-Ly2R+CRT5)&E1S`%yG#@Aw}?vL5D4l{7g6O)R66+@nCN{ zhUQdvnBMHmHb$B0VTlWi_qS;Z_wLqlWPg)wW!;Nl)&z(9_T@N4?hm zc5l>cv>V=Z*qV0SVcj^I)SjJ;4|j(y*{1B{YiaxYybqbWZlSPj zfF-IWr`xDjparW!vs&7pj&`>Pt|^yox$826veYg~H6^v*l%P&krD#V_mblHuo9`~q z-j1x@&u`t6Qe=C0IlJM?xq4A+)k(Db?S8daGaIht=}e<2G)h{#YIkccbjOOL)m#<5 zx?44C4vDG`)z&c-D6c?lfa8EVK%w1c9Vi1+(5T;?lI;;%-G+y%+Zo}s(`%MJTY;ua z@>z3xjUvD*@N%o-0F}8Kr?ROk-cobg6|-!S-Mc&oig*#Q*4D&!*)r%YCAFw!mgIaW zl}yatxdQzU{SbX`W8t=|i)E<5fLXZ|!M6fkv=uZ^-BqFe+qyzfv@8G|2>GbarCeP= z5i}sDLMFboN@%G}Jex`eRws$@MmoC2WVWcx7VeR_oXjIlN@CM^1ptYqs~A%}M~6eJ zspJ+P`6!^JY@d@d*UlnI5l=necq$;I0>;Wb_wvJ6uhCN0){MFNH6f+phShJFN(KBB zu`|N`D>Ds#rf2%`(a+f>LL2=KF}G&wEQv^^uASW+NI-HCV(ZeyK-ATlHZx;}&Qc)k zQb10fQ&EI?y2MODaI?PQAD=%$K7Dg72#(JTrhIZLD3lR@uUY~~vj9Abrr=sq$syGX zI0pb<^K4h+%f545x83S>T9`+$%5+=JVXr&rcdM0hlNiz1<&uNp2{Z__z~nPrAuY36 zUE&JaL@ctIOKb|64K_MQ#aH)9dTYbE)u3d~-e-T1bW#BkPNrNE}jBi8Ezd zNG&q)MJ>NBrI!og`&4wErgE$Ew>IalF)`xhp%peICJAT?OjoZ}u;}2RRmajOhmROpp}bqmYBaeB)Skw=U6(Ua9N4P0WpM$MZ$C;CyS_a z1!W}Bmx>n2w*M<#qlVtwB(xOqyDVWMHKiOtGG?u^tE;4jZO@WW|02(1(n*!i+q$SK zGRHF2ikC^JQpqGuQL$)rabY1E*-A!3;q`^h<$GIe^U1B1LTs6e%tjWk-+2Fx_uu-% zn;-pf`To_-<=cE}B^O%}*&NDJ^uv}BTBKAgk{I&>+D=zUU?bFg(UdfWT+tMf=NP{y zQMpVKrNa$@byYMR$|kmSA*ab~QO=aq0&0N4Kob~3Vdx5-&&I;*Og4gJbVRz4rKv0u zs(21oe_|kpnN#5zI_ua5mXe~z(8*P%kVB8+>8#AY%C$&{dPhUYR;wk;)mbzsdbLh%(eagq+aGPL zE^IB`%7wK67jHb>{;#0kI@%C3RYgt-O14mFGs(T9493A|#ps>Esx6B@C~Bz}u7 z*|!As$fn8$>siDO8vRh@D9q|boh7!eOf<7`H?wg&y7ckZ@||oZwQ%R7LUf5wt`x$v zbbQGcQdm1MU1(fNDnw0{#p>W`w8bZMvA`x*xa6{wSv9CoSxl4-R5GevA$zbGY{g_% zDy&l>hYdp;w3)4jnrxZ5hLLM%DO)L&Y*iBrd}h<4Lsd12U-F|kE4z3OriIkPIJ zR)pj-6`u8kXv;`L>Pp<>!zQ(AQR`(fTKDx&C~1HRqukQu)|&yl6p&4UwbX^|e}87@ z++Zq@;2ucu)WyNG4`;r-cV-^-lR4jOZ{80q_#GjJa!b16fI0zUJ@<*(t2m^9PcKGsb z2IS%jgtJH0!Nbbnq1`;ZxyGO0|25Te>3~R_uj6Js5-fQ zEAp*RzThoR>j>YzmaQSlHlw9+aHztkCx*0Yupgzqi@nuAI&j0S45|ATTsG{<*%%wI%yQq#Ow07xqxw#+ zW96akLHP#O1;C#48r#Fp-p=@Ne`j}R43!R=T&GcL*X)k((nU5PJKq1rPrms4)yrWI zSiK35-)m!G@&K3{o(>4zA=thJow(O(5I3|cak(PD?|DT4>C=PhxMelV=HnBxBOcO+ z%82Cz2h;J8I1!FpP{)B5CZhqNx7y9gsDE;}2f#e&G>4r=-4THBO)got`EiY{5m)VK zc5sqs z1mM5!nH@lfO6eitm-_WeaevZldCKm9r2qKA0g`Svs(!eo=Z_zrAREVr`(NVuhe!L< z!OLe4P7cNocba5-!B%xTY@&)#1QtaP;hS=XkIC#mke&C)0K`swG-9zSS9ODa1LPY;Pd+MtV%=T9Gf@#zbcX1iNH*&985^Z>1bJRR(A zANbC0?M7|TZIRI9)Ap!o?TvfC{>4w99#0+~3_pGG=%-(PfI&cNm!H0T@$}Jn*auRA_6GIz>I&1?zO?%K%^`arvidwf_+Zk3m6}43q zyJfjsQJO|}-1bJ@M!!`Vb{i=2-gNQ^-En8qYc~#dM#sd!u-UA6(_t6GZQ84hYU;42 z9`BEczh2D-QYz~-CWM_~ciitxM}54pVdlxtj77UjoEnPI?Mk*e=pe!2&bU`8StWyO zI()apcZyugp_^tN!>TOC>Po_)*OzX;x4Al>4llE@IW4;^B^RaCvco4ZHk)PrWN$dA zo5;!GcBfquJ%h64LQ&`IMI8lh*W7N+LB^UM(KYL3yGT@g7J%Qg$VS(;p|HamSo+t$r!Ay7wYHQIXyBz@_arsyw z6#^8gSfWQF!Rv-dnKI+(lBux3AvO@E0nDrb^|1LglZ)q*8`&g5l>pe;WF!|`qchP$ zCZ60{5;+NKCQaGoX&X}p-)4wecVr=Dq1_zMfwzH=$ zXes|i!Mg%lN{hV*)MqN3r7*TmT;8fhjle2XYF3Nwy5}kdEJlDaWb3^F1~Je*(0&QC zeZSjvER#^B7#B6-1_%I#DM(=QLM|#~LIRZrsEUO*Q{h!QvBo6VH7;Fr!(lQ2vgh9O`b#v@Rc!A996*=|xRYyj5gBXha@{L#5SkAznyqXd(mfQgO6q)oxZxgrMM^rYWfeMNicpeyu8@jst}%s-WvErJgsuqm?%I02TIsYJzLj6S+io>+ z?#IH13Z_Y{YpJb9*)a%#0*$L|NeUe&);3h0$%M&XW;{m~@tvd_r{NY@CVo4`@#I}4_D`JF!9Ck`a(XN zv@{8mHlc_7Q1QMMjAm%W^$d-Lwv>2=WAeI6q9Zw|@LI(&)od!k(s>jg+Bw=CvtPlt zqEbY<;z*t$ke%D=I-6O z^7i`uE3xI9xvg0#yXoqTsY<#+f{UvXFA$&11%Zm|QbFT0P^wKjY|vx_H6_0xrdQ?c zI-l88IrMgk*gEMVh8~$l>Qyv7CKC)gsDjN}1qqreYpEQn5k-KS!;?5u7}2~gGsrx; zbh+rDt6*4Q(5WJa1*l}JuEy$g1goJ)rKn7dqq7EmY=ds(9#irY4tN zqiBkLTq+Ug&|A_1^lZx_efrR7dDUQmB9O**nO|r7RXkHgc+>5jf&;Ddc)=#MFkB6oF(zJ zBC=Su32g@@L@XrNiEUJV>t15x-rDl~{GDq|YD1^Ck_mDmGdLgmK`}uf|}7$i%*o*eA6tniyV~9md$7) zjj|9uP|X+p-TF*wgO1E)w`OfFQkG&;dKE3gCYFT6VnvR3okGvacZ_sfPnOsXE;fhR zscoc-e7MAg$8Pp0bmR1#UAmCNOC;3Z_hzPkbo0wMKmvX$;H_|q6rNx42`QhABA$A_ zAKzC&kSX7O3i7kLnVO214_`zF0Jfo#9@g0|`kjrvyiCIosfBYx^=wJQoe+&7i|CfJ}*Sa^? zzh-K_Q@;G=-}oQ@$N%TQ`Zwf}K>qgM{RbB$&b=+AxA&4<|2O~EY90pk(3MN{4brEK z{=fOR|E@B4c=1#qmuV>!=114&$hSTL6fjMfnW?)Wsk{69A`i&bd`v$}%75v%#V@b< z$A9tI5}&bqQ5Ra(H8n!=1smPd@w2dA85qa+#S5 zDmc2V5 z^WXnRO9}hR0)sp8EK&%rL%#gQZx_Nw;ID^+uYU2{i?4b+FYj-t!B>HNo0)ozmcqeX z-+TA=$M^q}|M>6x>7V|~3n_cG_kVQdHHzm#{J2yBIfa9_0=b}{zEj@(!yn$eIr}gF z^k4qF|Hr?>C*+^}lZI zyV5I5)0$AxDTR)4`7qWeMG`bgY*xG;RGWOLt|V(p94b@^Dvp%0RG|aiTIXdhLqcHG zU3@~>lK28J9#$`dD9X#Zt+}cY>FG&KSVC?q0bS$j+h%sDsl<0G%yC;9mgusS7}Qnb z2h?rtZVyLQxl=Xvc7`vWK6rdO#iZJ(LAeneDP6LKqD!J|K0G0`)Q`XTbdT&VhnZBx zvIOk}3iRpW_Aahf+!~45>9lH zciUL!u#Wb7?P0$QJq-6B?c)uT-RXEd?2`aPr~Bi6t4G2!wQCkr(x{TgdO~EsLOt6q zYIJ0E;jV3&OS3nq#7adWp#*noJiz?4ZEtt%LA#7+r{g{}{-f>Ai<5D);`WOCpu~-u z4v7{&?max*J=mEXOxg!SZ_+}ok^tez^Wz7{zxl;afBNNThr773)oa(g&GON~&e8s$ zQ&t=?ixs6+D}D0p!Rg^H2~%CspbbCUYrHt_JwDz4;?q}nFVN3q7;N#@-5w24t_Q~l zPahsVI-X4X#jien{K@mj`;*S;xb*px>ESL=ITqPc1Ip^!`r)%jdrwZM z<8Hm%sMJc(ONb+nZ_zd#bjc1+(_wFCJiwsCmC2yfZ&!PDr|$6WTB%=E9**oM6Q`o4 zJ(GkgXnA_eQ;CURx9OYZo3*0Ww5VR)#uz~}9n{&c_ROXlk1pR>ynAh9@lI;}E}vX> z*>J<62TgmwUul(OjNh_rIV#(6=-rlCG3cU3wQJ_yq*qqbt%^P#c1D9PAltMqAB-D& z8_1m3#5ijjE%P8`w*XlQmb(aGm+}kEL?J=Nqd4!JI zZ;cvO$1V(A60Lyjq98^*c4P78kD{S9;;giClTXa6sd+WCtaB+_Wr>MmuQVODwnrFK z#J(rb^Nh|7H&5>Fq9ojY!3owHvGt+);XVk_h!-N1;7)Yb+ z>aM8*wRV~nCZC4t)@hWxtr}jTOLVJ3-1Mrp)F`U0veqb*z1S;7!*di<$g#PE&gVRx zHN--*q}Ln;Q)t-~+n!d_a%yIUkIl2Gja)V}f9E4AGV3tJ4ab(Um>hr<6p=R#P1973 ziM1-wYfEHym1u(wYgEY97^vD9hL)z_6#!Hu_(dwhXG8f^I1vpcVr2Vsxe#^uxGfcc zJaU;-KAXWK04=4W<=93n5~6ZZfsU(U9?Cp`gsv%i=61k05#njh4Cc*aT_?%#Lk^GKm;pNU`zd(E3Vb zYm+Ht0l8O}7INu?DvJQd@yJFY6JjIxxUD;4VqQot5_Hyo{? zi8(;HYT4oP5yvFnYQE)EwNbCNh-*yM_kOl`CdU-w3=+&mC4qJ=MJ|L5nbj2%Ra%t= zATdJ$#3d#PMO!bqhKt#gg!N%`g)0-|9dun{w;=MYfd@D`5s&&onq&a@0N>)%)YVea zp((OW8)~Uu@oHG9JsT@{A+c(Ssk)jnsZBtpd~$mz6Auk&IU$R{~Ql5uKq@GOM=GfZ%4^!~h|Lj$;!aLo(YF zcB$gw&LH%=)vQ&~MvZEvRxV<}Bqm*ogoOsP1le4|Bi=p8bA|Zvd4z{DxoV}{>$Y1B z4_FbE36yS$8I6hPbl8>BHCLq4VOv)kK-ZpQ$Q;xOIIL#gCNWVDG2xb65;0vMJ2NU02Q3R%P)0*x*H;#c z=z_epMt90(Q=-6?y%IVBMuh0|Qw&XIGwIEZ^`*syjrHYJ zoJ?HtNGKHxQLz;^GMiev^WhKw=&e8cU)=iWhb#B4-1+$Z@ch+me2XdM_(Gb`Y(VF< zO;kBA@(jwFj7JN(4EhY_w{$AT(m5=w<&rb#wu8yd@e^MzbE8C~C8U%?HkOg7QOvq%71q92*QoJl29$%HIPNY-Q>>?EBFu6K^=4Dacq~*t80Cs}n~{mM-YBKz@TUP(!Tk)3^{c zD~29ntQ6W&@a2>rmzcowZd?zg91Yt<}+h*#9ka2Yu1IG>A zfyp3(W@zB;BN`guK^b!e$gMgEQ zd^Jl*tDh~*{Bn_8oRJ0Ms%^=%lwC`2-rJbJe(R&RZ(MmV8s3<_^`V$vA)6GkF%sDz zSqQA9zWGO7`QCi%oj)HfMOc-Ur1ek!=|Ai4zF5sTkbrryTZiAe`5W@(FaO5>?mzoK ztYw@FnTu){G|kh`fAhzG@{j!ME@6DWMN2uYqkr>n|K0!eKmEVHla~5H;E?z`X(=32 z0WJ09vtR%5pZvqsjE#38^T?IYj`>Ob4qEEF%iAR7b()6(OBH;DdvGW24|0fm&cC(q zhUD{XpS|Vx(^78|FTU@#mI@@OoWK3Y|KQ7C{Whr2m6ZF(fBzpn`Sdrh(L<2Sw3O92 z`ak_w|4mlz;(kbH=jA{7r~f=Kv%<4T0T)+&`SKUP{o8-{e~U*TIQZ%pzg;{3>UX{9 zvV5DCy7}?F|Kk7nkIP=|_Raej^1uF%|IX3j>1!0vWw~Ic&QJfmv{bj*zjt%)?#a|nyH#fH`ixQwz)5>?tLPgEANbrNZzSUJDBr0=>KIm8v4#v=xtDXrAh$p9$A=&=C>a|<-ok1OF zyj8a(K3gd&lR>>iIH_{QmUoBcFJ2vg_4y|!M+e)@axTJl@+G?@k7uB|>M0nuy7oSlvUN@%;s$1dj*(gT0+@r;VZ< z?eBc?=_j9k@(LQ*pxfCV^>#+R-Er^1;qI@0`r^r9x9!k}O|flc9}RS^u(>#U8_VR) ztM3&e^A;1XX{pn$`fz_R9klkRqlZWP2h)DHs!V#-z3l;@Z?CEoW~y%Nj#|6hqgK^^ zy5ByW4#rJ)uVZ}r;t)^u+f8CY(``ZJ{ab(SKYaS=@+8c6t5)@_s{ixA zFP{%jcDks&$*}uZe*LqDN7JVd4o?oI0OvcC(a!ed=wSEhL-IJZCE~|-bbv~pcHKvZ zi>A@~=eWTZILPOo(nY?&%`jbx|{_N%MqmzTDj~_lhJ(zUM zj*ysCgwj%BXrdQ&YQ+b~#Di}#8a_Cl{`wbR z{pMG{m<;<5j}J&Zu8LFCg}RY{ah7nM>|g*9KCw+{L$$V z5aFO%?3Gnl$_Sawx}N#u$>Hx z4Ly~?+V4mGMBm2y{?aeLYSqhtUZzTZk0K+*GxxT;&mJAVdirqGYyRS^Prv%~*@y%l zGn$R+gOk0Z{cUvbk|lrn>El+t1O*OIq+PGrI*H~0r5+$8ort=YcDy$^oVL0Zp=m?e zVr^a88MPi949ccZvNXKC<*A-VLJ_x{K!*-Ak72LM=ok)`*1@Q9a9AiKH3>|Y9)+WBn8Z}-7R+Q{C2NA9uNa4 z6dxJh+wP#n4tFQhQSarmN4wL>blBb=G}^7^=bya%^)G+^*^7tMVVzhQ5$Y2#yM<2p z{K>?U9nYlkjUY7w^!ni_r~Kv7Xwfc+3B#=YZx`pM5jC4onj_| zo=4o8x~*Y{4C-N1gR+HLsKjoXxs~OcKZ=Dnw$>Ln=dOy01tqg=&|6iTA9hNUp4%C{}`WK7<{6ac(M91x)S znvQ9BzD|i5qg5?6Dn;VFOb%Qqqn;%X>Q3ENNCa_Hf=*m3p0kyseo?^Y@-5BDhP;9$SI$eQhakN2%(}DiM&Qp$+#FC_{V3Yk}u){A)e0Y zA)g_-9B%ybL2!(Fg5w}$RX`yHyb^hKeMSw<=#d#SHe)7d?97avopJIrE~GHyQZq$g ztdyVB`Ag4?r+jNE2w|-JG$G_&TWP7Z^e#HN$>fr3KAua(c)B2QESjFphJk4rDo^KAx#R{Do@2uI600}Y=dMPUZb%}( zwMMKdF|lLW;*u*&E`dc67+c7!qkCWw0N~ZhX0=#`0CR{TLeWx`LWoL-#Qc`Rr4)hq zp#VCfHwjz;KoPSg3G8AiB}+lhc@|SBaSS9F%o1w`)veiLA*ym&qAg$=ROwV~Yh`(9 zE3_#IJkK(=X`p@ps)-%22S`aM1ichR zE#643-%G6D=QHa--FOAoFboP+5sBB8n6-oqiThUfnhsxaloAQ?4ya6=o2mv=krQPt zUvx--In*n317rh86rTWiB9ED$XVRO<2{1O)2B2kJEW2uxI1mw^vTC{5C2`F)vNeG$ zpsgL-!pQY^%k^5#dIODGG)hGiK)PH6rWODmbs4QJqunvyYh@2pWz~@YvVcB?TtvyP z+w^8&20MHGz4hg}jkV?Xe)vb53)ixncLCt3*b;FcORX2;E2hlgrNGb4dIjZG=(xyc zN#@Z)Ie_83DP;?>rTEq|M!lxUgKY4Xk|{6_RtCWt(@^eA!l@7W@4W{TjItFs3wBh7LLEwV|0bs$|m)$J9(!vJKTS z6^%<1vmKqdprRneLrx-(_}ms@nvj!{MqyR5xTLL#HXCyk2DRkc$RR87WMezqAeM|6 z`{)uC;>E0!%Ji^edY13-i?tq8ADRXVPf_QfiUiD;sS4=fgn^1Ku!*IWdsmldNjTcr z+U=}=5q+Di z8m*dLb`)I4JYXt3#w?}+=*g%z+=FH!ieH@!jTQ;?P7F>1oPr(&L4y*%LY21UtXCwg zA2BE^S&do|<%)+_qbqml$gG}O5@PpnU3q)??ni8F&Sf@?{Hl^$)u~N|iDSBNR!f@5 zVrIhuvDfy5dWmd?=x^#`;f4KnW7uufD;R}>sdB&?o^3#h#k2s$bx>8C9?IgOS73Ja zTw*s$jOe$AJL5jFWH)(3${RA(DoagIuR1ab9xo=wRbk*3h9!DbqWf;4p{Ff6RXp z@#p{DfB!#x`$b>VQhu;-occV}H)yE~xs(m^?D?sm)Yr6Bkg?#HdaZz$PnVOH(>x3; zry#h9uU0cQ9!H-4>ficf^6e@YeEXXCQPsaD0Ur;upVtjUIwrrlrcgN66$#$_>7{e2Qn0LU0{-e(9eEv=k1$`o(XroG19ZUUXT$ zO-tRrdH+xU^k3?leVNTk#0 z6?ItxYpJi9Df0Ik5B1t9`6D6E4RzeMJtb3hd4k)4-#ptkH6|N(4H=-Tq|@CZTi3H~ zBLnc?aOFw2ZfRu4AGVN%7Qv*qxO}4Du8js=|HmS;WQ)y`2n<;|M1!CG)MjB!-G+?UaD8zPNUeY z7>Y=jZK3Kay@t8lcXm5&uT4DHPy|f$&?=rkd2qDbZ&z&~z+v0#wQIwEYtU^$c>=U< zdqm?WKl)j!!KIMlZmZEH(WdGE_E^9I4Y=KG^oZTo_;`Qk`h18ZTIo<-s$1);dJoq!TzAv>^Gcg%iL+3 z-I_USmxnEP(5a$brlWS%(@E`FbXkhoY>11^ug_hJZmq>*k(*cE5z|WtZE3F|P8#ZG z&ksj6b$`3PGeIp@+l>medFZdx2{C{BtH1uq%jZv?K7P2fJ#N;3?Ty_*6{}{wQUo>- zG8_Ao4vt;N1cZBddW>bV)9^;U7TV&oPhRe9kB;}ZQCBaYo=*DZalbPebcel8zti0A zw;moJoD!eD!ST-E`IFPrql4+Fzdhm%YL`kYgIZ`t6#TH_r~LH?RZ?U7lif+b-KHdVcDvkE1z-6%IbrC(D&d2&=QlYncVJb(P+$*H5urYb`%R(MKc zfi5`UCEJjZCbSB?qTj7_OGI6mmZ|+3Gc4w^n|D_3f4sVIJF-ZK24X z0nApmMAzWSW=V$VYD87l6nG+K8 zVlFK3!ra}f$@M!_Y@SW85&chL01b$Hg(|y-hF4czjm%)Ric0(~3YH38lLu;5B(n9j zrU(+9q7v)LcsLtd&BQliTgzMP3(@e#*5+n5og@)z)1k!XLLwdo$Pqb)&8Jm59$BAL z_^j*O#bBx|6?Le*TIz;*?x|<`d{dpCdAK)IjLbOxMToOWXsL_fQvoeyoD)xkidvm1 z#%7#|9}xY5le!dq3UWbCk%MzS>*8C;8KboL4YKKs{RvLLNks(*XQ$^EFPN!-;UfHz z|0yobSZTsT5h^M-W9JDW%KtYu+I66~t#IjAC zk^nY5*9JyXC59&vw zXvgNFwwR&g%fN;ts!=|PZyAbkA^BXE)K7_EJksZhcujPA-@42uh6#AJ!sJpsMRrEp zT3?KB%*Hq7))#Iq&D{!xHm-g6BNCxz;YMWjULn3B6cQz!2N2a20k{z8uvRjO*Oka& z7}ZM_rclg3nn>GH7CJyt$rq(`#T4r#kame+OFtk~0~&y92`sJ3e96`fnZulE@M%-X zxCU2pwUVPk836<&zi*XXg>3525vM1A?eNGZWyO+f7k!7LTGfN#wB%ZyX02*aj-2PH zG(+Xk)+jFC+pRe@SA=e(uo)(~CZ<=!)N*|FHXE5+zI$bP{@(K9{D<#+FS~h{j?D4# zC8ZE1+u^ejAYRW_Dy~{Ic!tX4lN(fOgDoUPo))QuA~Ge{#A;Jb^B?DuVYDWC0;(FBw+u7~V@d_|oNOkQPR29o zL?)HUrZ6-(tkETh_+|5K0fQ(Ri^QWLra&CfvZ+`ho5E;fDdN_LF6&2pCp!{q5@(57 zQ=~+)S6xD;BC3R@XCb=E+onSJO;d9n3!*AA@=vUF{0@NCnHWqZx2Rl_*ar#3?+=68 zCwF9(jWdZQHnGSjmpH;q%}eR!joB+J^LJL4=kI*{?#A4;v*o`65Aq_ow%Kv zY_DdvYpy2qt-7O#l*HwAi4mC`3XYmAkx)bex+MmSV;PnaY+-4jmtc(`gpSHNDpL{? z=xjyXK6#bEj#D{#M}u0ichIbv{BX#K4lTdNls)lJe`H4BCD~rySdFfVthWb zaw8sIiLKA3R&VI}6@V#6%90)>P*6F_#DoCzss$w<>OI-f*xxs)QZ#i82RYyM^5PYh}YhnZ!j zK~(F_m&=AZ=bY4;1Q##M87TXDS`uT70qTuu*so*L9y=QrY+zrW3KKsoV=Q$7La!{&3P$FDMvPc}KIQ~X?YkL=W zeqFuaK})@JQ5GCuqNTph&t*a8kvIzS6-ngfBG+P z-@O0rQ{4Q|{_B7K>iMTQ2qbv+``?laFTcAtXYn`|EW8xggEasC-}@6hi-RB=|Lnj1 zXTj-(;54`hdHMWPNVU?ue8caT@1mt%`}=NM%G9+PpTbz2SS3x)y(X$xzB zXKNLUx7i3LUyF@Fic+>y()fIs%_R!yXfClyLY8Dxx*`(qXe>fx*AKm25}HP)A}6X^ z))S&;el@vzbN>3f8~5Iy6mxqu_NXl#G{w4+!}1S>U_gS7PkNnZyICI(Nt|!s)r0-r zez%P|eRtRxHBDk@pfk;qH0ijz!}6d;OlPt7kO{PG1HkW1$GhWhuUW#X3>e(+AgM0d z)}6S0xucc?Bn)_KDYVWI(hU%7dq@KPU;!qKL#;d-_D6#r4v^a6-t^(g5m5Jolfy4Q zebs_y>R7vz;g_Gh&_vF&1mwiiDb!3^h&VzrzA?W%f19QXb9b+obb3&gTXw!*WctnW zqvO2?M|;TL$>GkZ-+A@y$uEEQ)h~bg<>xP-9`u~OLG|&;{>!J2P7kJsyW3d52ffbA zCntm$>SA3Zai+(^-cP>x^x2aKJIGnxuG^ezDAQqUR98DrzUK*t)86C5(a(SU$hIqvq~*@4?C5>ERRzd2f60_;~u{ptsleCavP5 zgVEEY@gWJ+RYPGr^UV0plXlg!ny%EZsN=dm_6ioY5n8++*<68!bm!W;P_Vjg ze!HRV_q|s~?d_U4?p7znHjTu2MWsPYX*FsGdpob5KRH1?>`wM~w@;4tA3r?Ay8t{0 z+~Ttu6F=VHCO<(dB2b7ANJ{NS87uD2c(AiQhC<(M*08{jdaYr*G#&Mir`<`rG-!E` zADo^Z9UdK^l1F>n!;_;!i0_8E`{d!t^QWidVYAz=*DFrD?w%g*ogNX~IRKDToB!}s2PM=c=F)+V-#)&P26wSw}-v)pu^KSTa%wZe(>t)1N7lx-RiZV4+_xi+cjr@yAR9> zPzv=0XcQ30*SGY#XN=n3-ge*8Wz^sPbbO3~&~8B6sC#&t<_c-(Tf}R%?lr1jnW+AD zr(t;(Us1DNGd(F4Y$gQExp3#|^6bsb<~`sRDYL?*R+(%Rqh>PfAMT7h6%!hjA<C>pP>)uu~h>^+~_FH|b*BbsHYW4vJU;WG(6_H2|uChIWB@h#f)6 z)++|n@QhxgI6}{F5Hh-6(yFdr^W0{|DQdJQCF@GOsl;7o^UjsG@7=k1@7BivD*4bo zKE6PwLZ-^LsurHwA2$beXV9u_j|P}e`k2@1)k+Cp8NDWSCaYa>F)+LJV%bp#t$MFj zC%sUDYD@NVV)9vh0uTaF$$}uTzF!Ra4cSCJpuaf8#)`0S-I`T**d#6nMMJPv7JwW8EE}2y+62bPWHPh2ujIDwbIBzk zx8<3VEmKGbdD0}oR2B3!BwjCDKrqN2#| zet|{R`ISHdUI}u>GzIL^r7OQvR($b~$^8LK^-ZcvULht?gn@!kgpGonF;g@VT(3(r zRdL2n`&3l$te;en!fVVFNfU*NysgQcL}!b-;1Oa1copc(hImCFd9PWo0oVYhG#kxU zgE&0_mH_qF$#5n=3jv(CrUV=XEC&FO`LjkCeqEPI_+(7HfY#|m3`jEAYe}SHd}f_Z zZDvwQKt!IVh#6hc!do0uu?$IMbGcMBm533Gx#%*9B$Zr_uigo7h1M5tXEyH0sUMl89zhrb71EDxp8vIskhHYm@)06+k$RSsIYlG8CE3vDpZT*_7PSWlEPQ z=n}-1(2^~wpfO36Nt!aH@Hv1VAX}M^N!bk`I*rHlDA>BhQAtI_6kA~E0;XB$B(|ZK zi#8MkgSbtRKvSp_yiO<7yhx0Ys2p3!u(@P9yhOHIiY{&~-JZSk@yg2b)eqh!G4)pN zMAz@xiW1 zHuZp(a%_`$x0Or8%cy9VToY@2&5dE;*I;nT53MDv3BL%H-O=($efs5R`VfC$a-plSg4tbF3}2;;F%nijq~}a%qGzX z3^9Yr2UDF3#mP2^12{0Kp;7sCJ{{#*+BH?%P!vf(<=BL<5{b=-A(6cuicZy0F%`E- zEXWc%M#T>_h9cO83{0L+M`S)%uUI8lFIz&js5Po2Vw#CXD;r~}oUSUmu0ls@)Jv!e zo@H_DI+oAl@Teu^FdJTA^65fsC9!%tym%wB`0>>r{ose+|AU(!y|uM)Ew*wivUoim z-GIW0l%ZW}0Yn4iEGMVt^ z+7fcbGZaVrF}zud&Swg_G!D@8mdqG3kLDIRibRSa0pm@)P*+7o;wo6QGy#c|pGI99 z6;&%^j9bLnQzhmzg-lFf^QIsY@%WMOcgU68$i4P^ygq)J{rotC3VoHpKGEa;me|>I=UiyM)ySF}ii;m9o ziA65HNbJJ6tS$@0olqyci=aVO1+U|Psf ziiHC+oBzun;9F%fXm5{torY&iX)zzJ8ilsYl{GRCD{MyPa*jgRi)yDqs4D=6Zi#P} z$e_l+FWCkZq^c{M3hg;MiU3ur=E|5cYOaL!$PlssgH0{n(9?se)+zE$D?e)4yQBJ~ zWp&9G&*re#CXxy7d`#kkkUrEpW$zbMJ>*Vw--noArpED{Q7gH-@X04Fiyz$Z7D@${W_irxUdQV6$>A5v2 zg^6-g=hB#a5{dk4PJCyy6k$N#{fYg10WyQg2;ul(QF|%h^*T)-eVdl5e)HMOulTn3v=rfME@-LX^y!lqfB*0O$*=#?Uxwxbx$*H` zT>SmC)Svvl{}d?%U*Qyw2gk3;1wVxc@i^3;%jQlOwA6Q=LU8)8|MkEA?Qj31D<9tc z{vWKlJ^b1RCZbOGe_JQTg)_es}OT#cb}F^Oj^g|o<( zHz6jqp|WWuza^)aZ7xnH)-sXhWN0oMSprB-#3QlrCX-7*6M{NkFFR$OcDZngS+9wa zsuFL@F*ZEAaPvo-_uj8bQDDoiouAaCVNHkr3N2^QBY|wX?K*J&&i3eFk3>M)o{YA~ zBh2OpllI}TTrns^p*kgge^fcx#S9OSNbDEd&C1TC^YZB_X8+wu?`UT*?pEt%duQA_ z+8rJr?Ceg*?Pht@tL~1P+x=S0Q*|Z|?Xy*Nwnrp%2M4``p|OhNwfno%UZ>e<*0zVe zhbKp$y?XKEFF*UmPrf4F3+3Wu*cKmb^5}5#bie)cAAkP&%SVrnr^g55Cl3#U zKu!<#x?esXKAhI44ds(3$6tK*>fy<8rwIUVj|ZK}pwnwrhu!KB|5<#etRD`mkNR?v z+lnmT1m1>PcmKwFY+_N#t<@}kr&m5`E4>POls#-$h@aPZh|ELr@3otgK^HK-=0Pbh z?(K}8KR$hYvIjk;TExN%$h74d-0t>R@`LI0IxVQ|P}_ZKhD0ut(H*Hg^kl5TSTdW{ z(!tK;blMu%l|jRN`TXhO-tNiK;Q_IYX>AW$pS*nW>8lr?y~2AAdUa9raaXavv| ze132jIwVv#VxiZpR)w&YTi%?z`q6toynW;2wYgj2-x~pNcHZ%_ic}WFi&~ zhXDD|MNM7pv}*f1!*&f?5Y=ndPLB>x4)>c?Z*P0hZC0nF-rn}GXe#|y{i{!39PSPs zje>sQ0S~d6sx9?fWvC!n=1rA^MQ}~BSx{g!-f33)?HbUHBC@Io2tjsoIoh3~0;j{S zs|jp2TC#yTwRQu2gLqk*8rP~BKmrCE*K_MdE<#1-SMOc9eeM1E+t&)=IjqP)q3O_E zCcfeSqH7F0^?FIy0b>kcC$nBDwn$LSDq3uN+&adlBW2KSAMS1MPDhhrAC(XAcDzsGqqXZ^t7i8b*8Ze1>6V)wae*{d zv7~c#Xm5@pF&UXFpax1N+3}r(HgJ@RYgTQ!T@*%5v+k*YglI1kfVr&KP1>ZxYIc=u zzmQ+O{m~Ea-MMw|_Qy-NKjh-`W_~pnS){XJQ)QrY*B#lF^X-aBwx+CAkQoAr4XI>G zwK9pfS})o4l38)2MoC2xy3Iz>Hqph{0(8@aCP5unZ0Nq4oJ*(ae7;4L|lR&6x}Z(^S7nOIviH6Mt0M$C=&X)T`rXZ9$BW7#Hggvtdz@`i(K0R z6s(mU;?G_yTc+s;9YQyhE2X0E(^o_vwloRLZFqx3kIE!t=!CXf@GSJYtVAUX$;jHu zN_b-p-9wYnTktxIL=5q_MxzTkDwpB%3G_NHvBafT!z;H#n;R>$HxnzjFo-Zwq_>u0 z8;d~HfM?0jB8i1hBDDkTiNM>oX#fp!6bWrbQ+eR=O36_KhRr7pndYbzpbJnpSBMAh zdu2;;RMwOzOXK-M4C&|+!=$%_T-38P-&M*$Z$`&9Rk@H!a&#W~6gY;V3h0W&@rq|r zHL6VZO|t=fC7#Y_b%_T$6_^~I-s01%VtPeLEQJ?u-oO3v^3vi*@4pjSzh8(i=b}p( z6iW+pxlGKpH7rA}1%;s)SkP2GToc+2(mG{F^COp=@o0oDq-V!SzO~LysXhe@V zX+oF43J$532^U$xYjnl6b|Un{OAYE_pao__xa=spIVc18%O~wizf3TTfl^1659~gkP4QRmAD+)7gFbtI4S`! z7+uV<4PBEppSED=0@?f?&|MNNQ};?P*#t44#+{gUJQpy#OnmdPs1s7HR4r;ni%>9V zDJ;r>>qT4cG`(_BFB^2TqBSZOW^YBLxIFO zPEh$wHkDusc`VbZL^PjCd5-2&pQLfIw&t?QOgf%VhPc$4lG~WSe>Bq5Fi1`UuC84G~ya@UQdMSD=873y- zana3?2s#GR%xB^dfrApu>2w4wC1=<4{JP7A_~g>+y^nlaYH8`tM=STP##V0A@g6LsC2S`v9C*%$Q7XMV07zZ z0hmHpBq%?Q%JG>{X5%ikHA_e5qf0kp8}s4yg*#W?VhAm@z{ZGwvCJejiRbA8GHjbF zRzi#$^gUEBrjcsdv<(qg&_?K5*;F!{iejnNgaVWeiB59)I6w;KOo`26%3=$U6jo=E z%_@9e=CawuRz4jOnGEU{1vg}tXen%_WNU=iwq#YLn0$h#)1(3gitHz7iMCw8fOT|q z38hghbzAkiXI6?j8QmmwoolF4v*r!E4Jc9lPPOV`;48hB*K3uC8zz&75?Lfc+09|M zK5BWbvgyb({x}qdop4KbN1CJkfy-~LUg|=6>A%I7N zPUGnQho?TN6u9FB5-?EsJodS&J)f4s6(W9+sep~boxwri(D(8>A*6olyXk#3OAda% zGV|A{nLp{z{A$CerF>@UXTB>Rv6cclB`juYEwr}q-VeWrl`^`yyfuH#rZ?5h8WmZf z;w!{zR2Kc%Qs*Jh&k3nO-XexMnREIh;6bRr{dfPtzd8?b9f%*d`)hg#r?}@bEfvr! ze;&Ea2jKvx7heUZNGf>Il7GjSI%-{NSuAE)|fZu$m^67CH4ftgB1JmG6)LhE0nqV8xXbI>jcIbta~ySGU{cenl@znR?k#`CKNllG&Qa z*jK4!G`tz!T+XMXSaP7w65^lB8C=XNtg+!)jR{T5l$=_+_0e0)x8Ad;bx({B%Hqj( z<8+@yK6?D{c#2Faj)B+j0VGAb4aXX%55vJGO<=k9Cyo| zMyaUMjk0=jIN9GFPA8pL&mTfL`1HlYFJC=8+U|CJn~Q^iw>xMIiD7EZG5B81d~!5- zus^`c+NxRy+wD=Wjy23HIvhho*$TFMJKWnDbeelRgdY&-h1j&I9=0V{N>obb{&e`` z&t881@;Si&qX$PPd%e90@l<+vdQ_`;c*XGnaDDH`pT8UcloTz`A?sPYQF;8}XgVG| zesKKs(FvB}o$V2Eh^p9?qSmUG0Jy*U?A7Nl9*jF=+gV)^8=iL9vmb3&QHqnp{Q)U> z^I&KE?D2yq4^RHmFMj;Rr!P*A5AgY`U;cD|cXG5l{PoX1`@8?i|7yEs4qD|$r-#p< zpc*TdE<8Rx{Pe|>gPl>QUi#|O7lU@qQD{%e^zE#XU*i)?snF8${N35>KT@zj7B-4< zre2g9o&p`QW^tV&zuom-Jbn1!R zQAOgQ38EK5R~`?EJ14X{nrsuM6ag4w5m{n!3=P{9)4+A8E7ZWaS3TbC66>d4=fTn5 z!{dWtr|PNMU;gBazw(>E^y$l|=q)upcd|Dj?2RHqqyFmimz}z!%6!pv`rTHyUK+aj z8n+o)`1pf&-}?CKN1OB4*Y017tj{LGOKY>&bEz1|Q2vJ2acE}fPUx=fRs&FN+SciO z3b}%k4bTEq`SQter%?tDBwqT{$(V#NuR|d&#|C;!d&&SBdN+jizo?OXVVxE%w^YYRSPERRk`Zh=f<}Mb~FD$t~!7yJNh71pp|k zIjFf}YFW##XSZf&ufKQggLm#+{}6yJyLq2YEahTr=|ouK^Bj{C0j0PCRE^Vv>E8CB z*QwP#tz9*a52hq|)TlEVw06cAAdM%dd)-E-&L$)l^P&6qum32#xw^JAyK?V}oL*AW z%em0~e0)u0lBSTV6irNDbCL-pVN>IhA`5Ix>1;yHtTK_gRCGO`0qDx217m#U(+LtPI-Sa;QyfhJVNyV2(NHQD zrv0D#w>CG{S60?m7FU+%mloz1=V#|OO+;2^O1{4yv6CtgHppfbbpLrYWjiDgn;}^y&&- z$mdMMs8uVjWoA-ILsQF+g@FcS(rz}}%?6~^s5k4icB|g&Gyy*d2((NV(0OYy84YD) z8-@5Xor~8i28q>Tkzgyaa451mmro@Hjt5Y*48B&7329sXJbBXbkPuWnPt*p^lAcwRY{TfW>GC!s&Dw9_B&0?C%M=< zUq}H1OCnE#plb@@DO4FtH7$N+MR(mv~S&23d}PtBu3(Zn2EaBKtbqN%*dq>w_hUPaA|ev7koUgAlx z`Knihpab_hZ7dk|S_Lb$rb>9q58G6%xl+|7yL=Ecz#67isccKoCqj=~_2tFctoPU&tf$pXK8|=Nr`w2>I(AU+9Wg~Q^=tL&+U2`TNkh*C{&afZ4}nb z!aAQ?4$WUfsaF^8FWmlMWBxi7U62bQl~1WcA+dg+&0&hph-?aTJ5&)#V3B4f9x6l^ z#LSvWhYTvD<~Nl5CY@Z7>4+iICW)fRcbgT<5Db+V)Rdtl$_0&%IBKqF2_hAz6RTLu zcsft#k}LzQfab9Rav4j?qmyH_VLtIWM-f6;T0_Tw z>x+@l+RYE&%!lVQn|CuCcj)+v!czv>8Ug){G6*TAL+Qe_hGv3xS1sw5oR@hTjfGhy z2lZ%mmdk7!d|KnOs6)PxNQBogCuk%rU5?7ca>)prPYQIVkcpw6U|DDK2`U>eq@zqO zt`PS|8bhf}+zff>4@E=NL@Jxy5|}JbE3WF+ALg$8T)h>L^kIb^e?Dz;iGlELVi zZL3f;rHX5m$(F~M1V}_$t{`45vbf2T;SrGB|it_NS? zdf??ZlMT&fL$issyK^@`z+y0W_s06-t>nfXF}=dZm-r0SH4@vOD&&1@scUCcR6t9e zGgIfWr2@+1j0c&IYHL0pbRmA+?yqSYoX$nHi&K1cnQi&~a+wdp0ZuQz3Qmz!Kui61 z|NZ}fPe>5*9H&n{4+tP%=6zb~2XDOjCL!A(I1L!6K)#cf3b>>jYy9PGTq=HWa8?zU z3P@5|O`o6owA50<3<9DDm2>gzdCK2D{hhSbhhNiD-}h;$%T9cdAgQzCAd#T1Zm#hw zDf`;e?+f|#ZCYwJtl!yCzD-MASzwkE_Kg+c+qBfJ6>%lu;D+Dxq6_)`wA9;gy?^^s z$n!rBE%kjrg?}$v3XcR&LH_?iOMQoV)N6lpb1S8yx4$zklfVZK@d=k1Vs$U^=_GU` zEMp9xUTtXULNe5A)w(1c4F@e#&95s=Mx>HdI+RN%0P50M*Xf++5Mya9nR)1-=~X>7 zFU9W*nN=mby0viq;}70mzV~rkPqvIq%glDHeAA?=C38F=(X~f|?#^_(RxQ^d6%Tq| zHkCZs-G2PwaA$kaX;m@V*&16eLW`}mt0tFRvH57LqIDX@cB44y*ADk4Pad5d?G6Xc z;-KXX+T~8ORI+7&$yU8OtQ*6+`SQ`xSD(HDPR3GkGO+i0L?6Whj8z^h8Pvz^@o+pG zAf0Zz0c3o%zw^@{f4M)M5XOr5D~%r=@7ua`FzFuc^g30&s%FP^MT9yqe`jUkzM{zY zZ(Yqt76)$O#kTcgm&E14+x=bey1iC?*eBtTeCvJt^!TXNfJSPc9vyuC;!(q*yUkj! z-85A4Gt`%#z9>3m$5|-E!)~)vwLW|G{FA5q2b1dQe*bU&zuEiGFG-dqKMc(MvWFOq zcvrUWF0Cu8QfnDnYaOX|R+g^TSHAn?2n+@UhQxpXi4h>=0y7vbK<>BYf3j!4?4A|h z*DSKSZ{K$xW(GrY37)fctfM_VJY0vn*)Pq^fAgRG_y^zpC%^Fze*3@ujbHlVS0Ha7 zsNsSDAHXo3p(gDd_DATzAASGJFFyO^<@2XEmy7Rx@%k5k_`S>XQ)uQ7zWUpD@70T&o6ED=Abfd>$JIf_T*pH5%(D~6(m>qr zc7SmYZBx-y)Cod6B(hR19Dyuh$&G&7h0ce4j&9^loxV67T%3(bqOQOm-1Z!e(}c$9 z$z(F>jR)s_IGyyK-CRAtI_aCl(4zVtx~c`nOBd=d zpI_fxUoB>XexMp$RcfTk%+BHZz591Rc=YhW)|0ziD|ZfdR)|IsiYVvPozR2MjI;w< znj%MLI3Q&NAToHSYRJND*nM`n@NCsa-FV|-F}+-jY_Zl4C17_v8_#LB4Q1#nZ4-a8 z9`(cd0DT`oHZVQ$SG)iyzjBkJYL#q2fIemVd~8N`X{umj?sNH^$4g=$n~ zftHzyBUXBPvj+?cTj9x)N)>D_XMjj1QHj0v$M-+lS$jz3cCv?SwaiXEyW1$l;Vo67 zXKm?h2vUUVsf58dx;E!44VlcV&>LhyrAwB8XRC(>lu{-uDO0MALZPJ-GF|Mt?9k(S zHZ$$WgHRl|q|RGV#sbfo&gW`{P@Gb#AkPXc}(3R9mOyUf60 z1EmSc`W8KO*p^0)L#boXq0)548gT6ckDIlmla4(0c~7btOi?Fu7F#r#0$)u!T$wH> zE9w1eW}hk_G3A6URs*#W$n}m!3~a_%ni^Ba7STmVtb^D_m6Aj;0mN3*LOlz_R#H?s zp|d50D(Gz473&sPp~^{1sKPBUFkOp*wvg~jC2cSzh0JsH43tY(AgiNda*wViiPAAy zPC!gEe^^fK6_2+YxkI*=hGgmZRyn=jEFOXI+$_XJs!+=x0Wp;{TTPLr<9hB8>R-w1 z*Ya_?lBnhO^T%7s{dE|-S}smilGV&!=5RfCybW3HZ9dsvd$hIs5XLoiu(7}Sczf+3 z!~n&2)<7%=I^14`_2+PB^#H>wkX13cTS)H4w^#Q!pX{zbT77uucy}$137#D7tY+d{ zFhjOiA41~e-PN7-M~OXrO2of|MttwkRE+)byRq+m68qujvG2W(eRdgpK1LO)UIR6! z+|(_3nK!TGV%=KoRBA*(k? z)>6O8S^`xON`-JzbanEv0Ux{U#oRpJA{zAugj!yggg8``xK)d_>u(UN2wFmIDK_#R zB}O=u5a~%pzNOyM+(B5%YhwCaSSmuqoLp=s#TII82Cp~p=~7z?0(SL2tniDI+3Cqi zWZC0EcyV$volZL~H!#_bK`El(I%wDh(g?_Yib%HueKBdnx^Xg_cH8a6YzhnJ`N`;H z5>6+hPRoZa10*q!psJ-@A)7AcvvjitLcggiiX?*22kTO=+oqb$Y%*TRrWlHJ(bJR7 zQH?@23F5b*3LuifN^VdYrWD^=y;mw0cQ#fIHXbyxJ0O#=)r2BYfsKbn28ICgrpR+B zRayo|laaBN47GJl1!O$eG3V3%$+*)CEfDx+kyEpJVWaF znr(<6h+4V^awDvzj%oM~2xFZ-w45mmbVZR^koG~Kg_eT&t;p!gy&VRpC-bX|bI4N^ zc!&vHTVQFKMwJtxmUJ})Cd%34qy4RFwY;;r0$&YXigVQjs->u6;MuUHLPxa&59KjD zAPfct1X~q)3>IDp0n2eZpGK0i;#r!d%M{sM0!fo$9|#5%UP4qWKuxPb+ix3`EffQT z?YEKbX$78Z3a$w|n#?m4R1yZ&QD|UQMj)-aX20uo0zGt9*wZ0D)Z!dN0QMGV+_7Q3 z3QZAR?@dw3CG_$9uXgA{x6?H=NwJum&Ey<5OXcU)ars= z32Fe7)-v=kaAA)YI2sxVU4*KCFkaox$$SQ51g)5kN3bu#E6_hMlf%fh7XG}1dd+^z zmSI!2G(MkA<+EwvvS4tbAeNz2MK*Lz(^O!YV1gMM&SBWpbiP6q_KWfL{N9tw(K?ZX zb?f2B@BjSfzOFDe4dx+? z(XfwDNTi`73!G)*0sp|yz$97B$DPO+^8|ROehV5t9`v9epjY8z0p>;(2p>Ax(hL#z z#K4htrex9CK*&36MyMU-4xSwEttAe(Q+rPe$7q#F6%QKu0|U+d(k7eN`3AxYeG_t!Rj!UUysqJz8q8LWDMDMQ!a*&y zE!B>)2P^60{Y>h3`^m?0JwX=_sKP#9Ppcx^@@!y-pdr2sGd5_UL9YNGGW371;{j&{ zOB{?oEU54q*2-C3Xu29}NR+~2iH&lWsOD9^X(=@7Nr|+r@{Y!*K6VNEYGiIz{xMrb?IOL zYpp^?hAaULt}Y9qV}PV^F(02!@!aQEr{T@T$iPX<;qYQ;0u4ibfQKocJiD5_ia-7|vfu-HS7GYa8(8Y| zk77T(7yFfavG3iBef}XHz<2ZWXx8^CI*AVw+`>}t$9}vK`_%)a|MCs|^v~qjpPtA5 zcoF-DIgDAtQvV=B7?Q%>$i0J z;>SN>zA@tXzx zM7db>ZDWDn!cs5F@vM;`xu4;kU3< z{~a6(=-aT=G9KtHECpc*{M}#womI31yuJPF!%{%eQF8t|qc1> z!lz!0)rmt-I)#9xR?}%lB?B7f-Lyf+6yx(?6XLuP^2&(_ZLE zP^-2p&4%8|qz$Wo$5YQ|y-%KiN^B*GrtP{qot(-}}{H{`J5AYu6WN zKmNg2KmOtOKl|k6t7kW`)7+fRzkGH5`Sa6@k>kr%M`_lJiDEY4``-Tcs@TYkZQ{Bw zzC88MhR(c$UVB==7ih|SHhuo|=Go2V#o5Uz9$E~$1o|vIn~w%9dmPBH0fe>y{Oil7 zsJC?!Su);Sp~LCdFP{D2ld~UvasAcjuReM4^y$^v^UK-Go73ml7cex??Vo@8>gm-v zFj!{`*pp!A8$Z1~`}EcG?|$(qDr8-refP81Kl=U`=Vz14^V9Et_2n0zy}rIYhxWdD zcKzb!^pl&(%Zm}rhx60|qAXfnm30sY2INW?jt_OAebO@_V_X&BV^i!TLRg zOlxG?W^+BGx#;P$QGgC99j)W*u=4@;35+)|#4x^)p)7LUwuibo{ZQm7Dmubh5-6Un zs}gfQ@1IYCN#6ru05()lAzY;~A9`me14E%hSF~jU7&~Bz=9AvgVNVCf=@hNcM!oQ4 z9G-UNj^2bcla4m^*@-VKde&*r=qbeje@iUsY(;0wutW9G08{SRyeri?VERd5`tufB zfPpKg4^Rh?DJXcPQBDD2i7rTF$y2GmD>xz{5=E|A6sd~JRCT7>b%eIfE&9g!(6+^f zEmnakgq-^}*HRm218v}oJzwhkvab+AJsZgNmO(ihWD#bCRd z0zwx=_C0>!@d{H^m;&lQidBio8baBYtDaKpTBNTxJ*^pNL;xA`WwD+{`v|t^%e9u) z1nwESJ&7GzAnSx5>Ab)616L_`k0TA%4wovt?n!}YXuH4p|7GGwnNvf29c<3vG zEyF-J^GEgUAyI&?$iP^0)f87r>U04iEv?zo2%9f83vrDu7;FisYmz2c5*ulQF8ERv z8t6$?SO9GhciAFaP3deAdK;Py-NIFqY$bt)6>P!eOK@9G?XeJ9O%jDTRX!5QY&o-E zOzr}U$&?dfGb>X$wuT57-$==Hj;p~dJE^_3?BOO+jMp;z_1r-{e~?RTXX2YjJ1bi& z_f{T!wEFPl)c$I6cjajN@!=NGlf>@Y@y=>|dnLa0B)yj@D|0zv0Aig5@O z6Wj339&NAWkGD$69he)H^d8g%BKJ2Q9c(^6*m}J7=uUDEa$cp6zvI8rmI|^+Gb#3? zuaJK6`>|jAUhIco#=ie)?DOl`C+D$Oi`dI~?8PkhVjg>Wg7kcj^ztMprxhtQ1~>%yfiFMYvLz zj-9t-mji^Q-hxm|3ahcPf<>P=F)NGdog89P6E4amN`ufM-H<>dD9&XY#HQAq5Sj@CgStfY2?ddlEyx#)`w1H z&?3%M2W@LM@Ov#=m06;aW}10jqCh0>wt}{&DQwkNnSN-s9Tfy85FjPCp>hp$hujK# zoz4;-0y!2W1&Jd}O+fLo-5L-3$bp#pY%+orlE{Np4017QB*_Rf1+EQ3qbZXDRe^67 zR>(r?AbGG=EaZ1LAEyu3$-+K-#hxMYEG0_<9x7KaYl?&??u9;x*`Dh_hE}Am71%1& zaM%aounqi-#4{{K=&HOthaM_9#&bDC*w$T}YOrsGjN@L00KlSQJMBb&8O3s1ps1rAz>2ihP&Cqd9x z=$yz=eUR-o;GOP{k8*rD|1A( zT*M>!L>|U;H0-;;AER|A12awJVcx2?W%{1$0xw9Hnc^W^Jm5+PZ0Vqx-;eKY-TCmn z%_kq%v)e*FAyGv|pquq7}8H(uI2D+h=c$sI!W)7y7BJwa*pe!pQRC!iV zCr(0FXcDSK1uhJF=%exubT9CtgN`k56#8hBX|hppP02TS#AhwpR;a+1VSBQftjlH% zDyb34LL64_C-L3&)c#8TXoD>s!UV2ocjZRXU@}}Y%McZjN2_f`;v1C$TgwCeR>wFzHO`WfqLc`NJ7pg52Xu*fhwj~&*CBfGM@509dOe}nrh|JoCETBg% z;C4MrMVDlVk{~PvVuH#y;0rFr{CO{&I|+YjUWTgUN( z&4(Xo%>-B4r}BGr@sKJV%WTsz6f|k~9Mn=YRZS71Dk*JOhP5a7_5xp$;(m^T_dN=)f{!&id}G1+r3WGHCT%Zs?dT z81Zf}>;xdz&4=ODtb2XZKA(2FzHW%fJBefo#t5XaHp~aP4or^NOt*Am;IdL9VF*o4 zXjpQ?mg~SSwmo^=b3I$KG!_{6laBIy=gw#E#g=w_OSP#bEcMxkv440N`)_lx-zvub z`(o^$7h}Iui2Y7J_S?DGKTXH}o1@ro#$*5GIwDq|zaM-33$d>r$NtV99>DjjOMmBa zbRhN5wb-9u$NuOn_Kz#KC-Fi2+iR?m-fm>~^G90`@4S~z!KUz}kv{-tSE(N>jRY*H zE>0lS)O`a>eT_?f3zmB8^ZP9V@&-n^jYPoZTQ0zV3$AZnfWI~Idy~U0IYaaa{w^&& zMgc+KCmuP2XHi+V?=B&jEYo@9Dy}UdV3Pz5}Ep`u+%ao+(OQOC#vvUdRq-h z0F6Q*CTiv~66hz|3xU7$>%Uc(hmc$U^z;AM|NH;*8^8H)-sbkzFaJiQHuX~r`qA53 zLAGz9rO4lTRDoMq>UM~hF3*=W$I8E{&yu2p{P@$C-{`u(^XtED_g}mPhJFG(T8WUU zhBSs`5&cd?zx~xO{iEHy2?^lccjABNSAYF?PT!zfi|0Rv+rJw{F5h~$pr1?b8DE?ZpPi3RhyM9&u$YY< zQ$hW2vWiTkKuJ`&Ww2e}?6;h*BYI*580(%RSrP?Y#B4lh2i9WRIh*(A)4|2*?Ba9| zn~)~Zme8Dq@1W6j)Jps8v>V$ z0j$EnNr$d+akhY6`E)+HIh$Ud41vpss!qp!REYv6$_HpMCP(&p-Y0^G`o{@$}2jUcY*Nb9H_i`E~Am`N{KN`rfBszPwlr1C!2$T7#*j za;dl^3c%}#^;9U8`$prWtIs=n$KqiFGc=WF8T{>cK0U)j1beWDTWG!x`#stB_4#Bp z@41t%(+dq?^smllpW!)T=>7=k>GkEyXE$HIJpb&)#nY>^vy;h}pT2;$O!}?qun&0x z(+R1gpM23dCG68MGT3B9qh7waI=P(pU)~@}b$T)ey1sxs`h&JJn+%>_p3leqv-$Am z;^brovd|d1tKSJap$BXb2v@+SbzOPdl3}M5YsW->FSWO__4v;I>K%nlN%aKqPZnEf z8RVd2Dttp?%8tgifnk(s{1qk8JB~CCRZnH69rNi)>vG}+I*lg*xgxOUzDD*udD?|} zB?6BaTH+`)P~AqTz%D)v)Uhv~kIc47bu4b&HqaBlQtdhPu%+PH)q!?4wE7n131x>b z`%1$W$}mwoI?;z$ zdJ8h)N>U>YTe3mt`zA5-*-)xELRlg*TrJ5}5~#K#*QYIU(UnFn6UeoJO||uApwv2A zV;%@kC)T7T`8sKeRoLtyJ(L^jWN47C+BAi#MC1^-k!mJWgg{Gec1#L{Nn5H18ZmO& zsD>GfEqP*f;Lt6DFu9T=lzJwyXp2~=QiBrlkyf{blE&m!Iv*-^shJfU8N_G|B2XG8 zi>-F}3X}rfVsRy*o{^d`b(>HGe1?JAfEp@vk*cOeA{Qvlk;@G|ZW;(WQ&h;j!4@?t z55kxslwGwxbm>{hS#q_F$Pwd7HK~zhD@iCS`*rZz!O_C zIQ+erEFG8Adqm+#qY5zSkQdaJ=Y%PUN(qA>-onvBM` z)Y2QiT9=7zGapyTEX)?RnpEhV!55o_cqOwBSD11jHmh_&BCIO2&U->F<0=VJr5AHlx$?4T8~AJ(dpd}nn6VS<_BuCXQ$03OQ7fv?Ar94Q###-e zffze)#h%S$SEHW-OO55&^&s|q5xbe7k`#KC%ArovLW%XrShtDRf=CnsPg6T0D>gA> z69avmj}4@W6*~=LXCa2YCaOxIwp4^nd8OEidP@rxRlROOtH_j3%DhL^iltnNtd)4G zA+n^%q9=OT{v?)AxF$!HdAeH5A60WlWUU~wO@*g9s!rE(L@8M-<(kzJRWHjNsem9= z&eP2*OV;X@d@-A>o9la98=1sWK6RWvK1{|BAU=6?Sj?sKnMA#urfX>& z<@|BIoGTYn<$Qu^l$wQOsd~&5_Vb5pFyggZt(-cjrM4OwoKDTckw_M0o|Hup(OK6< z>pxi_C9Ww8bhqudLE6*MHx2BermnO+6ng?k*0>s5Ii||TJXz9Z&b9SH+vb{ifh@Qx zZOM!#3yR3dOvMx%{cZpSM`6&FxTOb{0wOL*<0#&{Hgpkm6+&9W0dN%4o&#J>w;dw9g--TF&lD_~GPo-2 z8V>r8cMz&;d2J}dQd~p!ZQZjq$RCwTK#Jzd=w6D-2-TzX{z^HYu2xD_kaMy41#Ixs;T%R07gLkd)2AqAp@-uKIgRAH~4 z-8yJJv9Iw~1yR}kMVwVOjYCRu5D$pZcta$C_inkmA);HoNJEM;(3upjZ;C)87Ado2y(Du@Q)U#7;K`~fQN6$j zZN)R-8<+c`H64WT?RQ+YADFhn!g4Wyb0P}Ftw=Wihao_9t+6*#xG$?)AMK9wmNA3F>BnD>NVY6~A z&KCD8iH(De2ciJ$>#?G4@aC*neG${k`MZ-;c-sK`QpI?ATvCi~ZqQ?7wTqem#j^rIzRME!C-FWNx>b z*obf3e{|=)TD6kcTZcu&WQ$7uh_A#gfe363?NM)iOGPfv5%hQu{zV7~{=It=-#6(E zjPfm5iisasfTNtoapuoOgoyBco^Zr{#V+hioNmef`0VvJm1n1pL!gf#P{LS9Pu3^zT3)w>n$L73%lFw=bK|lYqANc~o@cjDx`Ss<~$e}mvF~Ix@WSMDJ7_y=9jf+XxZ`m!AYwL~BWE?{XYy;LT*HX_; z=I4vii<{Z&=V#BZ7w0GA7f&zFPbNKAak!$(PjW5__r_tbL8=WIId zh-Hl_584hCJ0JHIfq;z-c)I0Jc3n?`W!AM!SnE$FodB7TEV02fq94`s`vc zK`o(Y*N&;SeLOX0Jm|sR+z#C7u=m5SzWDt0%h_l!9`v7IonD?!V66vE`r`DY-)VjK zvzOof1+aYI)Ni7ly?=o^iBDD+)%5E`xtEP|q;t}}XJ@LenL zY|GSCMS_0D<1JLO=ZF`x;e6CRnGB)5z0f{EpA_T8Y%&`UXJb5|@YS=M=QroGF?tC& zI~o7lul(qHUwm@Dm;n>t@;wI+4|0G_vP_2ngaOHY zoAxxqRvT@bngra~D-&J_6?)IS5aY&E42Ih`(W)l~X$ ztCBtt8W{uxVZ@bs-z23*M#AweLPw1Q&eIxglU%gLMMv=T#xUS#EvciEkfBWEEUu(d zz$h0c0XuDrr#%^30qk+7!v;EmNS|DT#E2GgLF&KDShJog4DVfZBay>LCUnf1a;cE@Po^i!m0PHf17Zj=!ZiGw$xl*-j zQPBS_z2VBW2+yjAZy+j=$(#8@TPSxdGBlvX5?MTkhA3oCfO#U69jyu#CW}Wb+Gxke(-Z>i1!AQLRdAu}yxvUE3=ke&zlEie5k+cH3m-A5=O>tKB%lSKokKM0R6|<8 zRgaw-u~QQb2`@Uai}o98#m+;l^BG*<5W-T8m>MZVEs-gNrIgr-hOpF3!klkmsR)^3 z;y(i;b-cHBw7ZJ5vwFDwWN+iq{`#Ziot4!7dSZX=aO(;5^U)64PVR3!g7L!mJ&fO3 zeQ>yq@FK)y<6Fst4SaX=F%Sgy)*r1uzPq(@fAh(`^+$I$pWNSGeX#oQG%c=F_GD=CpXi3PhcYD(ut$pwe;RfIk8zxY^CE{ zrR;IDS|sYFS}{cv^?E5)FC5oP$!aMFo0q^b^-`u@OoBj5)XOYYM{g`-kuDz*h5b@u ztDK3~O1Ww&FN0*0JBlXWVXc^Ens{!nNEU6G!lOS!2c$0$#?WJn$-=g)2rS5iAib+H z?>mOXk`hPjimXa_K%ORZx&p+5SPt8qr7)&K10Q0@99hkR{7F@_hdXN-^yy<3;20W9)PPX|c16eYhXfkTR=`!ya3a|qnGP1y;k09QEymUbG~`DMIMgcARk0I7MX-9kmJc#KL!t>7 z6wMJO&tNo()2JMs-zguhSCZRDhx_;Mez^AV!}!)inDa-6Ta8+YrO{Voxm18!je4Cn z@IBG_ZnmlO978ng6xonOmZd6+K*>DCQVjxLE99tVg>9CAVCJ*~2c+}?9xiFZTxuB% z9`oP!Jlm+2vMQNT_@=4LPUHp2P-U1-s>ItS9^e@IjtlJ)2~{LLO9^bn)_4m~V3a_f zH*{I#q4b78RScm4vjTbmUhKAfVBSIty`Fn~p)D0dAurVvg`>5@%}4O<7mhZ7nz=pr zn(Fz3Mk&EJ^O{J@9BTS#iloCo5gmuS8Vfs=fj?$st2M8?%P6J|SA6PX6E z$1o*q6+K1;1{=C2R2#k?TNCgnD3LZ)oMSLiJH81O^GwAthr@MW$(}EO61DZMrs|g6CK!FuguZhR_-ITP^4-ONY7b z8nSC@4ADSGjjk2iTBy?oUr~s(L8e?bW6>G8o=ERKE~JktrQGhyM|dJ(JprVWd0Sy^ zu`W|37#G{bPa_0IT1O?RVK3;lEKlbR6^}0Mcf3Kz?Rc82^PVXOwg&IYY(tl5L!vc- zg!M&*=F6O=3h?>kZvbpFa*j^I(_UZ<+fLWlp^bs1v^{M$Y%Rte;H3wlWy#DS&Hb$w=QPg#VBYQtV)+UCVkR(&ZeDl z-|e`{xaVskLsT+7i(5=OXER{e4d9M!HfNAYn@Y;ncqOrMyz^KRMGAPB(ymJ-0yahG zcSD^T2I?R%ri1okI`C{AWSL37-SwRrNHo2$=Sl-tyZ{Nxx1&=jedsq+lY1=}mLZU% zTtkJgZ#wKOCf(^E^lgo$5TS!L(>7pnkcX}S5}ZzE^vEj0;c~!zHH*h=E#-(6_`oku zx|30FF`u2I)s6Y=?%!IP;C&ihm$1}VcVqw6UhLn~u|MEqzZYRrK>wDC{Q(pEJtp=C zZ0wIX#H#+7kNrN2DAk{Eu|JVwe{vf8fP}LMJqv{L0EY zLQ?qmEm-Q{r@~TyDcu4+%Uc9uzJBzV(h`M1dIL-SBz+@iO!;;Ew@Qg%sqZXdDWGp@ zOTDFAeCkamKbg-P`j0(*8;`WiGs^0xC%C0$n%fe8BIUcc*v1H!y0;t=7@fCR;hXxu zTjEdTaNCm+CiOKe^=(=rQ%k$NzX7e>9_J_iMEp;scVVd|En%s@8GZ1^i0^MiAAc+6 z+w={LDWco>_kJ?|+k`2i=q3~7oSc? z-RCz~i*eV}IoR4|AyRcQG=?H1fj^sdFHYLm6X&d}`3~&PJTL(U?2)Q69gki=o4GI~c_2$dGrJS;*^ZF!%BAz6 zX{yp>*nf6$G9R{Sk^~k9Rt(@X<|AMOndz_%tV6%!pP!7LT`z{+*44#)K5hf|Fc}12 zefhHQNsdgx+In^}eRgyC{N}9ZE5O)|yY>_hH??3jM(wIW`?F^!pFCSUy;`6n@cH=1 zKlmzAk3zrTmae$EIDusymBj`Zi`i_{`sDfb^XrRoA2w^)Xqc06c)1wQ$H1nxfExow z6F4@{(dXk13b%B%UQ94V@%5|cd_8H=xlb4FFTNW48Uq~L2pyLOh9)Z#r-%$}oIdd4 zzUJB*aJaoT@ODOEh^KA2W3j!!8iabw;+DTT!$vahwdUjgVm6*nhSOmSSVl_~Tdw)# zCog{OSAGOt-G(8Nd4VMiMetF58qav1k9wE0{-SGi^`^}iBgK%6D^vz1HF4OP%g#N1 z;xKccdp)zy+tS#kLE3luN-r|4n!3zIN4n~(XKmSJ%W^aC@Rb%S-IS0&;L4s@jZ|;S z5VPpWvry<;)a5|E9w-x!oq8NlAUC=?G4K&cvndG7)o%NNLMvQFc9E#{l z1EcA%#j~D#(NnGm>II@a^hpc*1l|pm8nAIM=FY(5IyN)!DmPPm7>YfQTMV?DnSI(* zUo8CB3;$+h&O&MAu_vL>)|!FR7&^>pN2bchVlx{m^@&SQTx#OcvyfSI_<0Kr#{#8# z-dC#^~CVk~;fqQy@GrfU(dSQ$IiG-Nw^!(t1bSXs2iSxY$W z$@5Tf`SMA~8(h(mDnp0vnFQ3t5UZBb=z07w5L~eqLLYJ^ohyw)q3bX@szKGp4mR;fG?6s>bbORdsX1f(D_bSZQ`8URM( zgeFuJuAnk`v6+GOgs-O>h5bTu2dI?ZDWtb6xxMW1*5US({f$T2_(nOsS55C#k_by> z<6DK}9loA!n7i1eqvjGccImV)qD_!^e_^ac|I`Pi6=y%>KDOMQA7`{WWa zsn_SRSLd;pXGkwjBd{r=XD7FT>k*<(OH69%QVLX!7_ zWgB6s^ET>UAtu#AOzJ$u0A3@A3XS-h5hnG9+(K+7qXrpdGNdEtR*?s*B{C%>{&wzo zCzsecijb*PG$IFEPj=TH?yaNnd9=HdfJZw|pu>-MR<>5}LjWPjXP1llLN2>RE+7ZwaCq34`DVSQE9e$VO}sY0vDBuTE44_9Ef(BEJ!@dF(gSeN`<^Cvz8&tBFoWDba9-80l z1g*gJT)T&wTyP0hi6v`Avf0R_Q_wA@1PgUlYG!n%u8&Bt>>7dp3)t)N=GY0$;6cpLJdA)9TI+=vN>u912 z43fdyVvTEL4Vmje56e|sa4(ZiG^%B? zSu2+cgD##H;#j6>Xo2qro?EMy3%Lx>Qk|BUP8~O^IgxF`6l&HhiQ_|xs0%F3(IkvG zkSsE-z!(pqafm%dYUYN(kd1OysHYr_wRA}lIZXooif(x}%toSF8}>Rd|9l5c)dE}T zJG4sW&_>Szu9!1rvK3gs_$gdNri+e_hH|cL!nA>6KzRWfh*3dCJix9A8Vp z!}!qnPWNn>zaoBs0t>ISJ+<4ifg1+?(^m;J(`VhVg^dN@T zxTtB^MGHRHH8opfVYp$cYa$DLFUS}0fdSWzdp8UHkne~Ei_Q@Fz5TVjxm3JfE$yz} zWhx1!ky08-xslSTydgA*QbOUIy^hyuxiBGhS%fia1!lL6pF6}vrMvS{s~g(3CLk0g zGp;V6_c24XR9+Qmn0t!IItC(Ts>sldip&x)@iYP2)$E0K*Ea_(yW{ETM#_{1Eo(Nw z(|beoAIeX9-l*#XuZ|j3sEwsf`r+xcHyPl$d$Y-4)D31M5GZsd#$mFPK$-@?d$Zlp4II7Kc0pn?WPz%eOobV?&6A!EQov%|4_y;RK}S@R zfmtlD6s!rV$jYcGNvI;-3(e3`6@gI&Dpc#9!P+_xpJ&%sC&1E3Wt+_fV(~0w#x^OF z#d;|%FbxpRUfe7$&*srNOD{jazIgrcXJ5Z@a}KnGrG9-o_Pf>CzoTNm&&Pg`kNtZf zF81%Z*dKC;PyIfF+ERZ=$NmVyaAjkE!p8nUjQ!a~>`!iDfBr1?7tb;9AD+ej>@xP} zSFyjiiT&AC>|gt_|Eh?9)UQXd6kPw_VJrp`CYjyI??2gi^s%Z)uoG8P8wQoO=(Is3 ztLYu4QFic4kQ)uumU@FpEsw6d{li1w{`UY&AujW+QtqvxZ>hKRzh_vA{P5O@5C1;= z_}+giECqqbM}HYCwWOtgsJ|Kg&xED^=O9!6t5T%Th4jHU>BH#yEgb462y^&r!csrC zbccS6O8xD_!!%7W=xDjuMlYWIF6^DEgoj+ff3UW}dd<^K*c5v$|77ScM#1@f^69G= zr?Xj0V+Rg*Iu2*(d%6vr*7fE2tLINI&lkgfXEq+f`rOjlfk^-tCDx8J2Wwj!t29OI zu06;etSXH}DB^Lp99{P3!XUi>1=sRN95q(Si@%O)c zb~T&!-D%IgI34}c4?o3tjUKd2-_@s+;rU`bYFnPt1evg9@~$DETC%07OzE_zUz`k~ zlIQbL&*3i?lc!fF&u`Ao785)Aoef$&>bal2IQ{is`#U`k&qH-hU;{+psBSJ#&|=?H z=2Kwf0^8JJqYXXFcl17NU3ydF>c#Y7e0L+C%ck~MVV@p(LLimdYSJ^+(1ERsvsBtO z*;g~Otu=w+Gtt7oBoiQ)7T^|zUa8(unx0TIs1k_xBb)ZcYN#}TY@w<%m669!0i$3ov&nMQ* zVPm7dP6o2fZM ztbx878M9F6YK^lt`nSFuXxBsStRqf*_VuZI-dFnYuF@FT%voEUgyQ)?e>St>Itlrf z)(F(b$m5<4^`1%gObV`DgFx`hK;0{-B)mRw8R%!Yop>x%plv{ap0?Og$n+g}t9jB9 z$02uuo{z-7MJUazC6)$0dpR~<&a7d`4{ah;swQ6oUcnK{vo_ziNsY?ubm6L}3|%JF z&}@*erKr+zEq|y``DwsCn_3-{)P%Campz@Fch#;%o%RqR>RM#WBtwH5I4o2<0#L|V zz(e=;puIXF(FNb2Jf-d;$WnoVB;Y&ch9lPvzG5p)Q!Fb?0j5x>HODP+4%L9x`P@lY zxgP0bkL#NhOe)}0q0o!Ia^6$ME(`R0X7w%7V2VH{SK{kwG|iK0UDV8~lf@&5@#Q*H zDO9oBF9vF;HevKZIwFckj#5+klB+fP9^0|#lfHgFGN4ftpX;Jx5l#$~EpoM#NMwj= zqGeG-kArU{)as5@?b^)5=V8d&Hq=&_1j5sq_xhqc>!`D~;zU>{RGX=!+6Fm5&sHoj z{XK_nYrtWndJ%L*+aRDHI3mM0(HxJhrl@L4BGDlfJQeC`i${l62;>=*EjJXd0_k0; zrqe}*$cY7Ci$XIKp_b^P%adyk z5R5NmB~*AatFQ%y%CVIMQ8=W^M_eOaD;{Q(Tb2AiSxuBP`^UR$dy!^MVt=g?!BVBf z4pUBo3@H-XM&U3U-$)*;BMx%7kv-ZfCU+~D{nX)RHNA)K)w2hc^lmY=a}+66r4H9K z$6G6p?rg0+*jazLv+?k7`$_t6J^mJ!id3aqxmY`oYC%8xGWKi`yRc(Vd$BK{A|Un4 zzZm=FAEW*hgn#tLrf;b>g_=_lEOqe?ECm@ZVX5zZaf?h{bz|*HEG)+6QtajQ7MA+- z67{4InYut^YKcj`I*+}Az#C-h#R9`XHxVp_fYcj;@aY>^>Si1ZDu`8i#n_OEo#~OD z)Eig|!l*6PMsVt~^9GiR(5QEjsin4*a&+s|9LR`{;X{Qf6;-7me>C5VU@3S?AO6ho z-WrTo=6EN2yq!DRKHgp3U4OW>a{plSaVEY|O6{O;`@Pk~?keh4?XKqHoB88y7&6qE z+C@#bQfjY|*eN8oOXzDGnd>+A8lriHVes}YVHuOsQwn;OdhQ5Z#{tk z+#>81L0vUSkl2BDVQ_Pa9kP53PY-vVEMcbAM|ajA-(7ojXJh5w@!sn8#v`ct!8U?Z znWL?(m3teH@9u3pgxRtOb=Y2kTZr7>ShnTS#-lqstM{QHsl$!^%}4Pam_HlE#C8>- z&#m0j$nv_8k)M8`t<{H{5$&u$+TC~zSJX8-*vQ7WQU{y+yIar-s2=)_t|tYe zpbDhKQ|Mf(UQHgyE5&p*dniz4%Mc`ZB=9^-i&RA-3M}2UOob#+r-mdNs7d77oiIR$ zIhNtz@m?Tt^S)!Y0$1c{ANU4UmUvd=SP*}Jcj8%!g{fs;j!X%;z};25%5FXwX^j%6z4q9m};QnFcPC;}P{5$*t_c+R@gd#Ma|P;`qV+yASTXzq@uHG52(GcXwxh ze>ay&k&P-vG>AqWWNjanwsdG0(QK4U1*l}TTrwi)5O`Wef`O)h(DRX{dA0#BHfk^p zP*=#-cv~W%#~^@;X)>=#97EI)pn+znvL^9R`DG5M`L4(m(S-hi9x%kFM(5E>7ei3B zLbH^Do`JrVc`DLHk}R3B4K?&^U>ZH!vJJ%$>NZyhgo4ZFxbmS?KZfbLw|;+b?QZdS zvz*+nWwvYCJ))Y`WKk7)V9{+|_AGtaZx6AP?Z8ni8GjgKDn~Mr5gYhRhR&5>OVXLV zAv7(Sb>*h5F>T)p9K+IN;HZ5^bu>y9>Z(M9mH@ktXNZPK%5>S%q;`O~MmMkrfdLF2 zDh1wROg1pR=yu96x-ECm@zIl)1w1g!TVTK09y+nIZG?L$k*T3QDM#Ce+zOm-=(W(j zk=^qRNDNaNdJ_6pl{gp(AVc9ixeD`~uO4fSW1$=mW!SQw93O0FQ;EIxdpuPK_E@Jf z3QX@t+E7^-O+)4!9ly8^8jjf@I}F;6uQQ=*_R)uF*l$BU-L`MQx1-C9rJ|~oDKjEd z=b9yvszGgAt`VZbCK@f83M=zO7Y+9$jYk8?ao-QJySZL^-iZfkSs1vCyQBk)C(rV?qWJTpASyP9eB~v_(98>4_kwlb2;x` zpG_eBpl!E3H840=0WOiSb@5`>JDc@SMlIhIO^G_`nii9DsDwi$+2Ve3_lfVhLNg~< z4tyrr;!@4*UTCn>jy-@i#4*~wGlQ}n6VK(%C8=gnmk2|mOoi+C4t%>TO(-G<0v$^c z@FByh$TK8-MDf3ZzsrAs9pkgvvgU+3I#q(*q zhwikr=vba1BGD(a?|t|4U;g})uO9#07w>pFe--&Y|3^o$KZu|xgr!(in*#bh3el+F zk2I%#f2k_PVX{9KV}B~e{z#Ag`9Z>l^;`43 zUpqv#DTJkn%ns^7>^*sM?}K6?4;yFkXbl!kgG@4oJ$NLOc}u1lvRzMk1(sR@t1E9;xgYV=w9UV{I)Is3&2u;9lFi)-I#CC z+ftT+W%%34zJ8ZqNi1QhJGVmv^wHhNUk}Qg5;3b~%r|HWOCd6K^po(=|5o&ESPCf8 zJo?GV|KHORf%<7U)SVB18vRuYQ<&#Fu+-1}BrFvnP`BYXe^K1h<+-((&z|30pP$T5 zhluNUV7EafsV1yeWHrmybDG4$&OGb{(XV0N`RQUd9*3|b(^a}rR3rg5>0!S+pHAk} z>Dgj_GV(k;l16rb&nh1ShapxD(5K_xrX&cJ)DD^163Y8xHO`dcJWBvm(soo^Y8reU zfBSN!&=Ngc>$vhKFK^D~6Ij`!ll6vQe)3{E42NxFF$zv+-HWk1>)U-#^p%>)SEi$0 z&(}=8DmK$PTRfXWeYHW?zdoPByQrbsF-L8y}AT=^#J?*3A6tFC1 zoyvQB$rmf346<|{cul&TwAk`I5N?J#lz0+~G66e8v8xl;1NHkio$p?@o{r43jskSq zQ_s6fOKo-x3a#E+5~LqH%pw$@Ps~qGJv2!Rg}IMrbdVcF&U}7k(~$qOvGHuApS8uQ zi#kWoC)U7%I#>D@9a+y&s9nrg0`v;hT(;$MtiL*SpN{ow#H7^ImT);x&-!XhX`FWC zn~`zel}|$cY6!KG&IaoB+`gV#W0zU9#G9#eJ+%=x>B_UV{CsM?n%ie>siievpL$97al8CmrduuU!pwn2kMy>Y3EY>L);&U)kLzh)y;)&H+OPu&TbRZ1AWSBVc-z?lBz8%rC~``M{UY%0b!}g_|)V|5|v{b>1qLC zsnpR%F1cGy@8#m?vm6+$qrJ5v#H4ns={;z#O6OIkz|~VA%;b-^vPUTM19xAD+(;eo zZy@A>u*F6(xl_&Vq{iRo_R{oYw zl-LhGN0;G)dTd0-ru?n0(9*vW+Ool|ijgx3RjcM2o~-wLf&nk{HTl_Cr;1LazWX}% z*|XTfLRG1-h)~h%dF+cDM5Yj&y7~q(g_zVku+)n;u+$QGvU6XsbB_M^ERAkDBP}Gv%z*3OaNJrmN>MB^|QtFelEEKqn1zZ=8ktVk;nRj&Bw|8b@W4@J4o)W9Y;vhl29=!xsy-q zWRJFBlpzfaUn#wZmUoAn`x}oDnTlYk)WJp}yrZgqfHn%82U
O04^JeV-AbeyW3qn3M8dJ& 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%0AQ0z0xPXcAfUi4*r=~9A6ntCOw9`t0VIx z`Bc#1HWMko^}%X=aU{PuQdk|!52rm-LkYmKK8q$Dux0{gHO6(D)L_fnw5Sr6U9a$( z)d8o;?=(9}rHjPPYKhm3SCY=#>Z$E!L znDT~fsv6?V1 z)Kkmj#rax#x*V<~UDbqhEaz_!%z2Mj%WDVc-R!PLF1Zm(gD$uKG zjkp|l&Xl8WBMw_CNylK^k@g!0x6>Algiqq6 zes)X22UbF%KqwdphyN{o??<20PpncWAK2b-PlZncrcSGdkD%e~E>Zg}?$v7~tItU9A^SR`a(0H`O_{mtZr+xkw;5n>S2YjF)Cd3p zI<+F75xL-vD9oP⪻$#xU`6>6#!e%tYSF74W;Uy2oL*n+-OT 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

iN7aL1p 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 z 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%0Ay>#Ii#TMhQVjR$F)Jq`Fz|(bv(j%- z2CNE@W_l?HO?8x`*zjJH3{axqqJYt1QVBzLl}j(tOSz!3?FL0L8@H&@bU&*`2ra{Q zjZ-hlMZHmv*`^VBj8b46rq*>VDgj89fEisU6Lw9OQz<_V0y7t~fYO8$BhFR?9-k59 zY5Fsd7m!jkVnlz+DMm-&oC)CW(C8k6D*ZHSLae!W>ZTASI#L} zDY5FzhyZW`Zvfak6vU`GSvJL0j(b;L|}}8N`v7f zWDI$X;+dRnq2R2?@Jdh{Gzv;VQ$67*1kF*qI^IfN?nn7Gk@XE|2I%s(PcVpKEZOL_Ew!vSgoK7cU>qev@eszfx5HENLa zCMvm%S62jjld-QglR)RLFXb01;iOCL*K>0ol|v0GnV63GCMtOWxu@!tPKK0oDSRR4 zXeRLG@%Vftx=;=-mIHI8;7UD$LZ&6G^{`>R=v*&*FHZ*6i}9L7-1G23IfrJgcv9n& z%?T8&stH%9PmI^6CMOoqti9R!xtaO-*`=k0)s-a_Rcd~&WtLi)ot=hy*j-#e^Z2Hk z;}#7D%HE(5LT3X#Di<(twaBCr>12G1Rtg$D8L*bqfr&!27_pQy{`r}SwWYb$`Nm?S zFrD|NJ=%~}0pJY9HM1y}##7CVCt&19abe3Kr7MRmjie*%(^X^k`D$XdkzJWcuZ+jn z8;SMt$Z9RTIhovDuP#<2bHzYC?kI%JFh*d!Oy&cPoUa_Uj;GvDt}guS-ukPXtBrZyqZfs00R-(wT1^g{+;nGH;;eZv_t3>qGYIv)e+?mO2 zHRJ2`@Rhj~N_nR0>cDs_T z5i_xNepwDhhcPk%a}|bI%Dq03m@fv#PyjEQrF6ZBETRu8cx0ew4i(d`W(Q27as-FJJ?7L#99mq?1{f-34ojIs zQuYYwymZuC&-g1*ycEzjBAU&b=f&lTUq0LT`r+C?{_xGUb#w#JpC>c!NrZ*e0Qpo7i@e)qO#>)IewJ=_YS5jUC;>}90Rg?Cc zfWQOozqMYyJfGW{&0Lzx-P~;a^4;TKzkmAMFQ31DaH&yr&y0sK6{TzJ=o!L(g5(G$ z8|)<31`vwQGY=)`mtcTCMAsCh)SfNWNafHfKAoMKS7 zQLtp3lJOYyH(k;OGEJQh;z^G-h+JB*pjA1Ma&9!^&9oz8#sWqGNWzJP{rqHNr4oqR zWLdYe8aB*i91D5RRLTKE2}(6;Ee7-@udLvbytujfhi{(#{{78gJlXi+&E;?J&u%rt zev8VF%YO0t&JSNb{q_4tfBNp_fBxgI{``yAzx(ppx3BJf{^a_X&u{(w^}VlN-2U?U z&DVF&-CWK;+A3{LXQwO4W+gK>S-ZNBU#bLCF11I;2Xzp$D~mxKBo7SOrD}Aek+`@} zUZ_NhL1QU|S0d)wf^R(Sb{b`*5dh!a`Jj0w@0&X4Xhz9#cMS&&PaGkHw~wST*9-R9|_-p~jU0 zkl_I0H5eO2Ry%o?PQvz^Ne(~}3b8jDB{p$J6 z_fM{Wc4z0|wT-v;FMajw#@DE3_sxSVaMY$(Fo;8~WS116G0@3HERs&b0bCof0Kiqk zx)d=#x-#|t-rCnMZ+`ju!RIgTzI%G}{b%=o@&3iD$9EQ{Y8ok5hC=*MK#c;sknw_!F=J5792U|C#f%|o%jrN!?So1wYXt4W zQTm`pMBAQ8eerPf4`1E;yI;Kg!_VJ-|M|n;fBWk1e)Yv)fA{sDfAwx-v5C}E+Fgy> zW(xk*dThO!$^>wYgryKM%xZyA4jhJIQE~z9TU96-U)-q%f){hB>uC?@wW*A!0r)Ly zxj2{Go=&V)y-OwMLN$5keR7%U1}eKnzmgDDq$OH;H>rn z+fe!8D4fz>V7tBi?Jl%wnX1sz-uAbaKp@awf2jBUw6yEn4N9fb&09AwUB0xkvW(&j zz<;x74P|m_5(;3FdO6*wW+&^pnMPr8rdF%uy>7e7pwYKNCYuaey+)}~%2aZxN+DCq zrDm-J`8VkWA)7j2QCL(wV5&MX4Jlj!wdF>ErvCtI1tf{0^7~D|qoNLV#I6EW8?>rg z2ovS)1<3~FDrA<%?5dDO0aDtoLQx|UHq4~~1uco#lwqqPXqLs@`lQDYb!b|tveY25 zkT(izM2FD>R;68w5)SBPT!7QSjnxt^#-)l-SaDDXFcMh?8P{fzd2Bk5Rc$k=%sODU zVkO1{Dl6vF`E+F95VFWj(g2g#$084M>0@FpRUzR4rI%p>V9^$n!R2Tr*SG4dTFfA2 zD+Lr8cMQ0?j5CI@hGm@L_5?8)tvot`ODCXEN611=7Ba@@W4#PQzX+u&8{<)j`HV3> z`~;iKr;VWC*-WB{OOx;!fO*&?81E>DJ&QcVAPrJR`vxnN z&1f~KEINhFsCM95p9A+f%_sy!zzy3To6&1G!mS3q4y#@Ukj$kQg`L{42M@W;QLi=Z zHb*>Gk5w-bu&9JVg@6vv2S91iW%gRME|U_98x@7iAoH440lUs`)55k5O;|?B6QOu< zxkHb^1rs565=z9MPDDz%R6Z4p`yFsDiPX9HfJ+-fI z;J8>w>>WCB`1GEGr$0V)rsLr8PY#~=7?tCn967bOr~l}w-UB4!87X^|M;&AmdXdK{ zZ4};-m`wqJEMTB`@bKc8#D1xO1sqr=V8{hb8K1@`LHj-)WdLI!EC*1KLmefJ^pS_V zF&05U9RSH}PzY2QS0U!&YKcKE)G5ST1&R|FbfZ9B4zu2B(kdlF5WiA1t&*=-h^eD} zLMBN-8y3fhOTZ``HY}4kQ*SH&MBr^Wb{^SDP}vK6hK*v zlIJlZvlKGpidZ}bnModDkcQdRF)j^F5ddjVCk~QF`lw?Aw6Ou$02L`@jqioG)mGh}uDMu$4>68+^ zTBcRW6*5dNmB^$LOe_-ed14_C#q-jL^$NaDB|$D=@J}TLrHLGu1YDI&pi^NcoziU7 zS#h0FAuuQfC_=nWZbUQwL~x>BCDv=?Myvy%N_cp&Nj>a2RDlo2r_yBd1OU z*RBx!2s3q=DHBv6X@QswSnY2&DZH=^Rt`u6ShF6-o#b$Y? z0C-OowP0C~8o+AYEG&4HX}1zsIRb$WnVL@$&_|%d`RxXeL3E)RSu49%itf3LJ!KPD z1Il_(J(aXB6nzU>=dwd`Ijp@Z8EadG+Uxelg_davnTr0#x`h0gS_Ka6whTZ}f2C!> zLL03HZ4(t*f7t!WECr>VzprhUdeGDHy#L2$@N@0oYA5nT7i|5+2REp8x!s8ZNZmVw z%B@y(^V>feu-fY%%~F*pvPr>H28^5bo7;(yOJO{2mzKlEoKKq%nyPWvMA}zPxTj0e zg<5JN?FpHL35zIf6nNBVCNPUML>%r@VVtm4UJq&KlE%D8o^wg_ZduBX`E}f&NtE^K znrY``+5wL~XcSgsj>%l0nf1*S!>d!Jot4R@@pLX|44P5)J)4^2(hI^iX~ZTC7z9y^ zC}iThH7tjc=~6MRGGNOTvy^I;(~V-1Ps{OYS-6Cx6%yg40%}x?nJ}I~)xpt?s_V*h zcq(a*0b+J5O94ILu&`AbvMS+EMn3rlal)aROuNlWzC|tcnxuX+C=W@>ZyQhhrtRK18~ku!XHe%ykk9kP@|J`ppomc2_kThSvAo5gXDsZvPI z%}&qHPPbf{=8%WfWCPW-T%{U~@hO01lMN{Ui&?5|lWND7YHiFy!+H%(;+q(+HzrU) zv-u_)DEv9fhj9U($dnx;v%v`&Cg9QEzU13qKSm?>-Abi zE9F_W5)i~1jHMQ{R3fGtW4AZ75)Noe6N)aWZ~`*G<;9qNx|*)%6WK6G3hQLjmiMY# z>E4t91K+D*O{J`jgehtf`1RbhOBFK9vR-{PVu{%lQ(52Acn0V(!uMJ4+ISSi&`iz^ zT=B|s31rQ5&O4EERpXAiVqm!*-dW78PbPpOqVQ5atv|aq z|NPqG<10(M>y7iX#aaTnAHtO@Q7ex=h8xs!3D7g@Y|gV-3SOGaUY*ZgnM>bXEnk{R zFBaTuRsV&__*yM=VLE-Tnb>M3&QE8cGb~jjm*z6t)2VhO`;6bDmvRB0ai}A(mavJr zu&tItmJX1uXx4^b2d7+^FHPtD}_vC-!&1uqeBG%D##(A3CzmMXrL zqGKUrSt+_MG^6)6t8Z`4fAeVLySERY+`4${+~mcXI6TsN)U+`kygZY*y_|n{eeUu3 z+WqzXo#piX)$EIl^?TMZQO)Fi%@%=Ns>PP;@j}R4PrC9UOEF?A#~j%J+Gx)*hK*9xKAv(< zq}^v=$ewdRAZ@@69fkLc~AD?e|gC;RI8?)%4=zkYh< zAAa%t|N1Y#_<#J5zyE*!?|=V){O9lgkN^1n|NURT|G)k7FTQ+wr4)AyQD$NSpba1l zK9kgkOW}(jZd)9Wug?@$8d>;5 z(k^8P7bV?lj}Zf~1rqhjVrgeKyFFLhoGwmfJ)6xG+&^5Tgwm8)*6Lxn)NH{AN@pVN z+MG+zL^uV38wyWf2M!_VJsFEx=rznIdR07B7XOgWFz@|KcK zM$|=*Eaz26t0z$giV(7sLBBy%Fkj|q&>Q%8yVvqN;*i+hu7Bs^ov)2`Ngw8d~y4)KY#q2x4Ta- zO-`om4juOH(bZqPx&OPbp8xrmZ~pMji+7KAzy9p**DvpW{^a`W2Uos)eyeRId3*1| z)1AqeR~n18Sfd!9Yn11w#^K2f!s~ndwS#(xr!bM zm;U{RVtJ&9Oo2A=@Y z0~w#L5+f$;(1~MC8DMA>!&NQZ_N(`}XaxzIy%i-t}g+Fja~)i_vN(Sd6>N z3HLWLGG&_2+h&rcW<)y`)6J)iAg`tq`ni;0E@hlf z8mCjH#iDb*kG||>Eco~Hl6jN`Mjm@>O`WFaM%r)R))fM;A#{z8&`0AW~CpOC0yEwT?r!E zZxlmsS*^!5CgRY$rZUdETlM?r>pRo2rIKr@9?JSPwK%?93#^Vus&RWW7l=DGAiB$? zLakZ`gi@f03KrNvRexh$f*Lrdy`YnRT0WczOS^I8Cks^DiuAuMAIwRx z-M%txK;!lm+Pm#TPzmd{1qzmSJ?yqmZ&$V~R6m-i+V-aQ0^992e_M|%Qa>%lV)5Fw zs~2`I>|EUWP|k0k+rF^9vAMpwwz9o_ers!UYir}&xh>d+`pvD)bUN+zdfop&7Mnp~ zkTOwlF$+qUt`pPL0yL3L${N*6Q2-Ygnih&?E%~h)pjZGk;~qoErh*c2Xd?~{Y=muS zx)Z!{5E@CRDqxcMO_DmwWGRm%K_geoMH+=zua@f6GQC=&lJH=F3mKz~ zv2G@@k4qio(?>*XqD%Y9BbuJAAuSX zlK_WUL^Mea=&?-57O^QPsTqfYoIV(1Fy3i|0pf5^%Pe(*? z&u;WN@UX{*zGa4e$%r3zqkbpU!~(96$7WCp^->l*#+X|dcA3I%lz1fOcO(K%uiYr( zG0CI7Y7xVx6}xd&)N2b^wL!Z+VAHydGK-3jMkPEnTmgjHrh!XwaU~xxl0n7+(Pxlz z0jAoGDvM5rYcLd_8`nB;jYTU}iRdTK92y?!92h=%ynEk?o;@^rUuW;3gC{;d(Yc>6 zc9u@lGG*+N{R(GM-w(Q%i-oMjG}x{VtosV#M_tlU8ZgDJ6V{Qq0jv z1@KxW9I}u;qT~`RQkq@Cw8~jFCC9GjJ9Q{Kgj0*`Q&t7rh*6Cg%_3(x)f@mJHWklr zmb(oS6cJy}gT4pj0-m0fPiIrd08lZ>(0@?KDnQXp(l8V{afn48W|D{D?URRl>4g54 z{b-m)9zn*V(SAB{kU<=xjP?@-yNN^H1W;%LX9$C5sbd3l3W3X_!+isZz)=w+gOQA9 zRAF)f4IUSIL@cs^NoG^v`u%Lm2(pSY2~5%;brc!zpioA7X=8n)p>FC}Kb0^@B@VOc zWC53f(&q`-t*LE%7IlnC8DZ1LxJd&mjY(|C6q{j6slUi)nN^qURsDm~Nmkqa=GzKk7L1;ChDUBYRUJu$=$d`+`3iK-Z z8Yx#PM%fi5JSx0jWY82c;E+}+G3nH}L1Qs$T{aUGI30e)W>ngZ%4!r3;FwL#x2c5| zl>ml}Ucv&&ZnnSA zH}vP@0gEE!(D`j@uUS@8bdq{)IwcPL(+@sN-iG8 z%(%}QbsJ&GGAVd|lN9!Xku!jjH0`$lZ1)-vE~6r7MeZ-$MmQ8-&O%#lOybDIDry-m1g0yI{-mRta)4+G0ID}^4qM=+bj6UN5YP`K>?3(VB2FkT)GQ%D zFzXGQ0CNq*QRFd@zwfMzgm?u!^=cBxavw#jKK zb~mZ>Hi$hAv(~0y7JbUBLxiZPuoj?tUqGFANqhb3{)n+JsO^uL=lTLOF4-`vW1QOs zXi%Is_h8%>lM(UY6piC?bX<*Iytplqowxi>uWW8y;|YcZ)hpBzV_aG8LvL?H`GHH z=R&q(1UZ(<`*mrTG-~F#)r^Q$Qi|EC8DCG-Sx$M&30F_hm~txpTBb)uGmA)4dKZj+ z?Tt5~*9I-{EY$-cMbg4cTKEYIvh@q-ISx5BY84G-o$!ErLk7E?nh%=$lWv6hQ=Y!4 zbz^pTW41b&^+xTAq+c6w$OCqH*e(xP#6goVY!(L1e4n1HfXjOzA znxt2saBD%l_8BE8fTe&cXW?Kjm#}d%E-BzJ^d`Lt3p?-EO!s&uvW|h68M-wJsgv`R zLb@Kmda^IFSdAMbG?)}qv7myD$=Z37No~m|jT*VdfGX}(y0yHxLk<${@^JECuDCIt z-JQ%G%oJ9KQllArHD;K~Sk^0^t-;W8ucP4NCoSx-k);=t`U)|pQKA-8)nbNHNKC(Dzfy)uHA)IC|B04@rCP1_)|{Q!X{l0gPa&T}as6sh`QRr?r6S0|P!6XX z9T^%QAFb0;!zd(Q_1CC;gK#Cqo;;uzq%sZn!Uu_*F6W^DD}eUvXa~d*5sOe~tTZA< zZ^#7goDb+jCSk^<=#SgVQFA3`g&qjqGN@z3p_khEVH4XXBS9Cn%IH45AZ(F%wcJX~ zGMM#Lk%}gwr2zHiycz)HFiw>sW_TR%79f8*F&hAYt;y_zwerS9x<6@)Sj2EiJ2O3> zA5FhGocYt+!#{nx|LNVy2g{Z9vFv!kKVC#sW`EK(TJYxqA~WzHlTiqr0tT)pY#B&8 z7y4uSli7#!#iRMY>7uV3G0v5I59SMx7K&?w@y(Is>QH>DH#n5>z^TV;fx~C}!lQX_ zIptRgnIPD~1Wdzs@@P1>NglMTLpEhkKp(Y;B4%+ZY?|r~jTeJSw>s^T2MhwYij}dj z+-izf&-0q(E|by>P?FTjB6kT;Yf}tTrjkcALKjtYVDub_YGGK=i%8Isgp@V`rClvy zxy`Cf#5Fn8bFeu#nlbc84VwgtF586(bU78g_j4@kCzKu zW2y1Hd#32UJC%L8KJa9z_p|Nlqs5-Xne3za!Y5nR@1M_qzCV0_D!$TVo=GSwKE8@i zS z;tu}&rG^t1Z=YmvTjxi^U*4b5nD8CkkFcT}fU!GS*BZ&^n<=N;XlEMmAKt{DxJ?4w zezui){tofvZNdjF)JyG*k6M}M8fhmQku~2L0{0r3d*fRBu@>gV7Ur2dq~mvprwRPq zVXwsMp!E)^Z*=qLj zeC}{2{q>XO|KlHD|9}7YKmU)vfBk>?>C=Dv{i}cd-K+oh(`WzhfBpXd^B=$efBox^ z|KlIu{NMiRtN-g?-v0NWKmWHseEeWzf>rwv&7*X|)DDQGB$+jw3HY7DN zbpoQ_Ab^2-FlkS_)sww}#cFIU?}0a>7_&}QbK~VqZ_JtTXku1z%B^y0c?vGkEaxm% zLR*tPJ97i8V}-#qpyj}HUj*(t>6C?yoTY)td^rr|Jt0F+$XJQnhcoW6o?>_r4fBNdL-#q@~m(Tw2=HTgSIqTCt*<1YL z>E7?Zc>0I8&tDyF?5|9|I@K>)?OX0zd2m_cxU{ZqluaRcz-@x z?adT2iMdJ?283$LoevlSM&Vc?0Qqvvj@06E-ie;TTsgcrfT%hUdd7Q#Am2dK`OLD; z);nFTw_s{0MJ;KszBgpf`E{{?iplA?a_a*O?ka)U6m;q2D(dyt4{qK*fByQhF3jbQ z?n}42&bE+0y4HH?X4mN!<_9h8(^uOOX+Ly;f*?qj3e5`|Wv4Q%*9pc$0(xo=~ zl}_HZPWqJ=^0_;tledYdFSne8bRBb|fqJ@yef}o)*p2Sv1o|zVk{$7wlO7#NpU8(X zmjLoE4c98;pl_H6o+&wsS_p-jlNvI>GZ?XD9104F%^@SC1Tcn;g7N8KJTZv9&b)O*;`nd?B81&xwkfXe`Dt9?))bY)<1c;3F-4E+i#!le(_}I z?UP-*PDa5YFvfwtP3uMxsfe8*_uJKcA3C_iq7jGOy2It%=0xJtCtE*$`SMTSy!of! zz5V@HuYdRDt8YJh_Swsaub&*gI9h#vclpuY(*2#q2Rrl6?k+-lbARc(m+L=$aq#`? z_1}NI@#Bld?;g+m@O=Kq$1|U8^t|23{qC^(^Yhu?J)HdG)0sa!oB83<#CP{cfBtmq z_iy%p_sPLeUmX7Y_Q5x=_Wtzsi@*Q=i@*Qj%byV~^~oQSr@uWt-_mC}wBBN4kI=Ckz{3oygNoSw;~ zW3c?fFa5$vyQ$NBxQpx3V!5V(n zD|@|O$UvQ64)m)%U~TVTjQ;8j)H|99mUo5q3iY4$3hx%ERwtzD3zWR80FAJ|zP7fu zy0Wsey1KHuwz|Bsw6HM0va&qCFgHCtIX^$Uw73B4MZ{Gt%*@Wr&Cfxz+3ogUSg2nY zm(vjr_~K!|O)HczFk%K4={+G&QX~}z3zDjU(y8QA;Kcz1?$S&A7P;4~(#eqZmfwQD zgNAL&kX;4qh*ci4NS$gV!G_F|kV$MoZk6dMHkp`W5)&dO4*L4Y!I|YO5K28dp;NPFJDjre6Bf0d5CbQ|JPLs-^mpk<`m53=~;Iv|*g|TjPRszr z2w>76=h!uX3AsiYU`yn@8L*sQ!PUvw1{rinrdGmGiJ2(ynS!U2!kVuVF=RZFn1$!l zFf39#4F|x!jY({S3>DXkh!Pr3$f3x^Tp^Feq2Xxwb_%YYMaHnn7&^Y4ifx9Pkmpj7 zZWK&X0)*I+3Kf&kO6h7Kb>3m12%GH!CW%MG!$c-zpwMG{S~ujW*j5_8wdMBZ&ZcYF z)|-4fKI*lFT;`bH9`)HmZcE5xgAz!|kUJ4{`|QR<$Q|+815T6Eqy!8PPsF3+NA0SZ zOCPXn;{iu1>`4Y)F0+QsAmch4HDZR-Aa$Tf4nmWhV^NDNYN1xlkgy4Mz1*Rfnbkt{ z8CA}cZ~)I!0K@a>cs`SeJpM39Y#IRuB^tJwf@>vXTS0O|o|tI(4=F`yYJt-nlEs&R;#z(0ql*BwoCB>io6iwRGab_0#9CoIH2!eUz@&IjQ%~UVe{& zzoQeAg_L$)jc;O+x1{jk;=9F@fry&j%spN$S*_ zxP-?PbK#b$LKYIyd6Z58wM)w*fS7HUk!8$oDZNw8BS0^8K+hCXOcJ_5MAq=|IswTn zp#mTW@x!6v2QA3#R4b;dgmk@(3w@PG$1zD=NMEU|nF_z5+koQ@g+Mejv=RhU+MC(^5GxqY>>`9^!=^|prVxXxy%Oz3JNqK_HS3A;cb zhqeMtfv%s1LGBKqvk@^g0tR|1BEK*#s9|elAIvXxg)BHbbVy=X69sW$EriZSNZ9t< zT`f1eT5b`s9RdLl-`$DrY{g?b2)J%C5y#^&r6Qh?%V1M+(D~tl8N`m7DIB7Hw8)|m zS?$TiD2%CADOJf(UMAwn#R9cltXIpCiJx2|6$w}jI*UQ$a#$h(PbTKeB|^1AqCpmX z$cRs)5US-!n@O*hp`;KRwF=l*B^PQGe2YP&RZ8Gxl#94fO{bDt4Qkj+z~@Ru=uj$| z7?D{@u>xHTS0>_1`Am2oN+?%|Y$mM*u~ACM*i0IO8ii#vY2|jk%x@F~jC_C(CggmU zX^?UC5*AEeCOI<1a~tJWwE#v8k5xA@+#mCrb5U2=se?kFN#@cC0a-(G8zl*k7I9Lr ziwQBsUZd1$kRac(Oe~0kMhV@f5x5L;k5LX|rc*0&Xix|;$a{=ZI8-L&h}hM36~`oF z_|5X3bhIxO2$@^MT=IMoAW4>xTUAqU*f^Z^0JiE!-d&6!(IJJYn5}?36nh7f_JITfo)L=#q};i_ z(CT0esW8`kOHKFs2NJfpO=gzB7*3*f-(irtlw!6?%FqjmK|QD7mR6(s@w|5;?@7B9 z8K*4gk_B{Zav(Pg}u2o(Y87CYdNoLJoL`u)UzMcbC!DcP zOWnKn-odZ5)LxB;s&B1dRlV|iDYrK5(Wg8*F=$|y=sw~~#~3GgN{(I6tJxi}@V zSI4TjSTy^xu?7(_WMCJ);;@MyF>=#RMZ%?Ws8|5=LKa2PrV2Z?0kh0!l1>g3Cd#Sd zLTGDoEb7!`e8@FJF=U4NNw+3sg&oz%qma*FRq_31SLmog% zAw4r?T_Ae%nk_~C#H9aC@pGEH^@V2mpp0_+NGql zl~)O=DusBRih8#mtoBz2`b#xhs;)dWGBVUxGtC=Bj8(N-9r&%`UVW+4QcylPIEVQ3$1LeLV zh#hs$wR$m%y{Z<{L`;H&jhqE)M06>K4B{P>1O5Rh0!U_}h+Mh?)}8DL4kYXVs;ddx zaN0Rv@>K%zgat(bH;ITkJ`O;sQA~pA5G21!+%}l9=L5QG(l$}>_J&OZNhb_CS-$~< zJez`^^k{N^eb%QdB9qjeZ4-GEVIk$wdd>2?^Sy76roVnP|Ci6UzkRy&d}s8* z%D~n{ekkJ^DTJr{Vhh#ubUEG=vcS{}vnEW6dRe&E6rL=G=KEu_{n2X50WCu(bTUX776m7UW)U-0 zLWW7fg?9}AFpP;whjcV!o9T7ue41j&G+PQz7u*gRC2U|t49ucaQ1OZUdYYKl;kM~L zF1rrqA`S&4LLs$7Lhn?tx@`*DLa)`Sq#_3dly;Sf;xH-qw%0ah$^{R<$1m;;sGup} znpXxB3zg_fHMUrdZBO;oe7*PV&lP6Np^dTh(~au0jlrFX%<53`@k-_6t?EYA|9G*u zG!R?tj~+~AU#*rt-l*(NWcMesdn3{DsG*3y*!DXX1!r%%xI3ASVt z>yM}xO3uBh%*I$|eKfN_Q#@Fz@DyFGv=7_qAGMROebjL3TI-n$H;>o7gtn4D+?>jY zrQHC$+gVo|31^##XBr6~Hc`$sl26^}IC%?ussVrgHsQ>*?h_w1oVd|-yp?(pE4Yc5 z-sljYZDO8mB%Lvt=mC%9QtPoc)}=eRvrUv!ZEWON>T1V(A+K1kqj81p%Y%`v(UeSu z@4(%{bs`Z503=Mb0gECRKsI_KIZtoIQjbpxnQXvZNeB9pp0v*xb7~?EHB6rljQ|od z#IPt}UK~t0^FcGn%@RISrx1aJUCu?yncz^`_Ik7LA7AeOx1T@xk3YTnfBf?|zk74{ z^GEC7Jm3BOXOI5Nk01ZHpTGFmKYaT4?_WdyUw{AR@87=o;p4;Qu@W+LqIL;r-7vvB zYF^JhI+o8MtbdlbD!Fd000vSJANwMf$sTXotrykFglG_4o~W zuR7~i_;g&Ihyrh-QzL-Mdv9s%Xmf65tY^I78}A8b+{&m`9I=XnMjmvM*-~J#;Ds~} zFIvPhlyR?)=EwU|Af>70qTSWmKfQhWj~`zB*Pp)m*T4Sm?|=OAAAfxN>S)cOU}(AB z=pzIN2NJVQ$&xd=xWr~2xfMiPkB*DJyYfgn5fuO%jL%R9y0nH*tW#`iHb%khggF9* zE=B>T*>)w{Tys`!SFlVH8q5w>IYYxE$QkW`;`Uc2zI^rIn~xv<^!3ZnpKg8k$-}?> z?#q9C|LTXs>f0xqpFZ6FSD)L|8 z>Wf(uF3lkFi4ISm*9ihHrYUTd#_dvKb}bM{)(`LmafU2i_uLb`#0V{`F76b+qiQ#v8PGY1}ypJ9m0o=#E&lCI(Fga``0>-HBryB({D6lK58U> zcnf<5L%HcRD{G)yWmfV4-X_zB?XW94qatPQQA5_uJ2&zy0{p)BC$mkM^D%Za=!a@o;~AZ+-6WV)bxs;&5m6 z-qzCQ;?(ZS%-xN-#|LYly?l7IxBg&%^X0?+mk;-jb{0QAi10 ze(>EVPrm)+;oBEGpWR>l>Bld>`{LE>CwE^xI{5DMmp{CH{r1hX&t5))<9zw%$?v{+ z_~q;SUw!=eo7eX~-W?gp1xJgKk$hkv<%G^KRtPK&M5A^kAW0dIY*cbJ5~fB>HOUz+ zy)^FDIMr;BXzdCb64(;ft=a1QU>4rcxk}{zN_lrC_h7jMX|m{@9m*{XL}p69!Hgpx z)Tcdaw~in7Sb7R5Y%a{X*-YjaS}KB=rCXG(@FtZ1+3~^(30@zLpBBa{%@3k5E4WYA?1Ff1jc9B%dFsN1!S{`(Bl!o z0Tmn^3}`_!)a1j62iV3UMI##weOfNoBq2N0T#r!#60b?lahWyANFbkzh22(zQfO5} z64*3CuTdsrVd1Lkx++pG1-WYGk!2hb$XaG4U`wV^!7(Y>@M_0ApyJmJh*ToFM#9j_S!xMg#3q91Lh5b>>4iz|W)QnL z6hufNzeRK$o7l#qbc&e-Asr`Slj*n?LdP9aS0fYOCZJ&<@u=O%H5C=ZBEocrOaj@Y zb{4Uvv-t)jVpo%tONCAzh2*uy{kBBVkqCS8abG6v&O|(!s5cYw_GQ9_L?9V-1|2#F zz*=NTAp)5{<~Bs!#{NR0ln!U39-rMH;Ie3h4wq3La_UVgAzT2LiebYA)4KT#oPbSM z%Y@b%O{3MQbXtud7-7zJK9b2#5G~XgW5zi%Y}9<4_6d zATg>?L`bSp%9Jp1Tv96&*Tko^>x5(w`2<`hi$-D*kOOi#k8V+mTqdQ>sMac_h>s8> z$5Jq2b7%xQ38&Mj!l7U!6wt~=3IPjwpqKHDY6+i#CwJb_2}o8MO^+-#x@ByP;!@;L*_FGOcI7p>;l+N z#kIHIzS`Y(8$~(jXhdIgF^$-ko4ED{*b2Q}z(jrzMGQRjrS6uS*tT16944WIf^Fk6 zh%jeCcO`eX!H$HkW;g=Avl$XPFQT{5+2QhNL^xeH8QVswk!2J@H-k>YAOfp_(Afxk zb+A@6S?(bhgRq@h=Nu{z^br= zV62z84HCVWuHX=?N*?TGQPecB^kR7n2zkG*$EQ;BaHP&VbbNHgYV(AV?2kVy~9D^;C*33uU{Rr ziZ(`*o5S&il5Z?y?+Y3HIu?>?#k8c?IMttpcPHgmj|p&VcTTU}Ib+vv3JnK%J7Sfly}C-$Sxz_$VGFcrF`z8^wWYm&d_v#lX ztJBqdK465awQB_#pRN+KmZFwy&;%f%#^o8qRymC3AWT@4JP^C(96X2AX4I+e8m`~K zO}XR)Va-(Des3-}Tk_<*%8|SeI%_#@tHdnjkha$=8OvDX7QTv$=Ob!d$R@PJjGVGh zQg8}0PBHZ3iGr^`X6g;;CQ6~z;nZx&-xD(S#ceM)tFL#4mIor6qp3%Wy}P3^z`%W;~wPNf!9uTn18m?%U-)fdRWqorV7 ztyZBL$h*ZJlzQPWpM!O8ZxK>mVXBbN7JKr2eZ6o<5Q_(Dq!^qO61spv>)3?`YoF7q|CDtV3xO%pQJD z^&%KN5Y}fMf~bj|c1oc$sCfkF41n=s7Gc4wn(g&hQ!aS_M>5WdqOT`rf#Cp#o0>;_ zW!NU~i&;kVZdezBhLM~nVwYtDx>C%V4;lhSfm_Sjp3HoHIQjA3=)J}A_aAS6_k88` z-uS(RzRii;P}Vn93QzS0`=U0lNv0Fi$=xkNF3qf!sRcBoPEraj4<-&~iw~CiHii>0 zcun_s7s`S0oM)vP-5$?WlTPS(d(%D31JRjMXuc9%8%}MErB?Qvf>IFD4t<9+5j#T@;_~g|G@bi*z{SoGqiU_eV>8^L@U8Pc@cxK3*yR@MQM$z0tkN z{4S*N^jzNh#opk@8~qO#dbdUrV<}UQSI)w>FbQn|vkXS|yYr=I8$%CP%B#bXv7Ghk zM&)p^ygHIuAIm-2nVRj72o)HEP2lw!uC<(RC11UT``~iRsVgmKFwD!d15u8k?H1`o z6Z>>C`GUZXX=hyOWL?1tZr|!WcZYPMjeZs*xYo|QdL4VLk^Vs&`=d_I)mFyEM)FCz zwvl7*Ac$@@V9(yboM~rW?c!W(V_aw;oxa(9{6fQf7}kwe;*~3nr|`6EE5i}1hRb0R zxeO8&-)2!FS4UBYI^#E{y!ukq+7q($C!GT+SH^Fi9xC;vd?~M?rW<8Qxpn!FCGOV2 z6bmU_8=XdK-(HLg6lO)I5CvVPY{Z=oIg1g?_E_Ti*3f77mwtS`|NBo4zkas;*@KnO z9@l`MNF)SiQEPucMs%F2Cj*YZDv5~ZUh-!E8#r3yYa>I!^e9IU%%S_^x?{PulIlc z=H*|1`1B8-9==)YdAU3N;@;Y`yQ>ej=4J+qhwC$+J>GfqU}Jk>!bBI4>q6g zFCH#eKi(N$97WM42KcI+PG0YpcG3Ppo zw`^v;L9gi~G+ny+!MV#PF5WzGqw{n(|7sWiax?vWEA8T~u5&lBXYY{Cv@p)KbFN(P zK7Ot1STps!#6T(){7sCrt&ES_ITsq~r=jLm?E5zfr=SGGy+snVPfZT8g!mgBXYO>L zZ|S~bG-&J=BgnXJr>#<{2w5b6lzXBtqwH@F2kmiCVb|N z;o#=n;NkYttH*cWA_8&s^^=3oUp;TZ@O= z%Xc^C?rqLJIo#e|pFiALxxc%*w>r5poqw>ia4?VLd5|LXq6!_|Q&+mkOJ z?!LIc{ps_=&tE-!@$lf$-L2P;4<6p#eEsy^C(j?ec)0&?Z|V8n*$2CeM|-O;9_+q- zd2gT)AIb&C3xSEA;7mC-gQ6dVgJvlQ;VY6^EikG0Nkb4|0-vox64n<*>|L??=Y-PxXzQe?d7hlyh#?Q-gcAjZIJ;&&Q*3NSAt zS}IegrQX@`)qI~r<{fPmsHr%G!{J&rw7lb+>dX=Re7Drg>-RVx{ z6Go7Mt@X-~@zvCwkOoxE5BfX)2&&b0f43Jb^$e`*HQ!aPRY42T(reF<6%cf%E)!vE0zJCetmJBhR1gpRHm%Prx2Obmjj(Q$Vo?hc9%IU9_L~$Ic`d$`nr9GEbbMSu$IwBh z7XJD$wJ_5tOc=bXN*>iH=PLMAczNM!4GIoaQ1B=Q3DctFm=$cKT_t78 zd1R=Mh$ z^B6GjY84`tl+U3ezkX^V#i5`DbsUeH1=BHfPOE}#lrVJA!$lN$3lwl_7FNk6>V;&h zl4C>MDBqzKLFaetgl0M0C}k*lB=pUd*oEt8V30ZmEFub;)_N0#(d=rXB8sZDmT!ci z9^2lC>u6$VH)8^SfnnPP2eG7TJPXH8lj8AyhiLoj?CWCQejO(Bg zv1~etPVC~+a3E-5JDZ6FJhr0=u8@SO>1TB|!O`$Fe^`)eHipeaOf#}Z#C7r6bVM5| zr7F2dEfX145~D`0RZ0{Rp66~&# z2{aNWs*n7mD@{73UM<(6O){liB9}>3DkYo6D(E<~!0ys$0Zwov14lPof@|l$ZlPqYG zBB{wB;88kZJOS*Zl`vcmyU*)^xyGP|OKam(+dX5Ezb3?^J4!y8IbTVKRfs-=M>GPehj-lyf{yqZ$P0>Gz|aOT6d{&qQgE*5tAup`!KMnHYQh$GD3W%uPsiiaFia{T9PpYI42Oae)G<>wVZo=) z`*kSTlv`1bn)~Cn{n`9aIPL1lD#*WP;%nl)yZTjg|{f^L)1az5Q)#y6A?0buBl zn}-wnk+f;D=v^I6Lo1K;gl8&=u|gmlu*9sAh!OdX(hCR*HVmiNgI=fKVX#QZ{eDTt z#*3Rd37aVEQT7J4y-{RiiFm%4wJ&Z@dGr8v5>Dkn$~{#{B|W-Kz+AH*Gy%4W+ogqo z9)Ne;tq$7c5x2^16uXV0kW-lj6qm4PLgtuD6|#y$a1BmH#34_3HK~9u1l`CFhtlUl z#(c<>2^jn)vDbj?@Iiw2>UnW1->YNWlnjTG3GNz)!J z^t^~u16Nf^`wJ0=-z2fC*a3^I5I~R&U>G0-=w!K|1w;gRJ(N6hK4@|4L~=G>#K39f z0O4j|}Y8o4?KXg3fw#!Z~0OBpfoG+eAs!560$8QG%yYuok@>Aeorf zs^N4xm9$(UFgVax^W}v2pvlSc>8Xj)5u~y-JTwR;gVp{@xrCUbYX8tsb+G2qysuQM z8SVXIwO3#M)6eR_K;4e7Zp2sYDU?cxlY&%pJB94{`ucj2r>dG3)i3H%h?yF!l>3mW z;6MdV+SgkEVFlz8J{6{j@;)_Sm6S(Y44J2kei#jf3>=D*E1}w?B&UpI z6%%_rvV@iI*Dx$1q-FwwX4ES48bD6vMV#8D+3~5NVt>j}O&FF3Bg=j6`J!`qAhbS` zge#vZ1;&fvy@jF2+jH=CPxpqVdP5_H;8Z1fe|7Bs=Io2RE1Pozb3>`e>x0m+Js~p; z^y7K=@?i9Rr0o|VBQqTv#{S8IJov-yLm-2P-{r4kqns|A#H5O85~swN#9W0~(> zuK)hC{b#!qi~Yf8TZ4NuJt$P=aB_7dyEU2Ti8|T|*RZrZ*RdzAG<^{COEfylwYJku z#B&lYsfBRqM)&bX+Q}}?htY@<&%ANH^K>Kr!)Ee@+xU|nH&5pvHL=g!!k=nmo^9iw z#fYz9MORySCrRqdSn;)H#<|<1W6iV=@Zy`@ysNF$i?=XmE;k>$)^+j*_Vmr}vo|`= zwBkQp8jQe9sh09#!UNgJsTBsSilo<22wQu?Xx-faEjD zV4O+$P+&W+NrqfMS`d^fFl)j%vY0p^W~?TBX16-KRH@@ zeRtvW$6MdNJoxd=(eFQd^yjah|M|;jfBW|3KmYLhAK$(B+qW-%|LKE2eD-i>ehAxk z2SzP1v)dqL*tG(^n3nRWB2Hyb%sP;9MeNFyTkF&Ff+kTuV5p`X@IsYi7Gyb}u=fNF zS+5R#V{oA_NOP6QY&isDsZL1N3aM}lmwVVsWhZ$5&f_{CMRr-@X3x_b-3`>cP)% z4}bjP>Fii}ZnTi{YV>@pN6Qq^S~>UzF0q+QZex*JIHXp7%`Y{F(9Fg+GI5O@Qk#@R zGN^=hv(}QX+-K0h+GaL*oYwV)@zv>p`H|k)p~BoyW^y3+aCiC5 zBjhFO<^IgGgQd@&Z2kBt@>KoLfB53Zm%Fd;t$zGq>+SP{Paf?&+@9ZCo_Mf5|LSP{ z*})3*c1SPpt-d%|+MDbDuV3!1kLN4da6I4?a+xDJ7*#ygjJGFZck2W(rv^kWXta=B zU5q(BFzXp4Fs%S^RSQU7qZnR8m4G5*;^?F3VJGk>rl=F?`5AWd5-@=@_jrpK~ zaITGYu1ok~2j}WX%_nZ*k2jD{V>mbD7Fsj?d;=NjOkM3fb`y8$$i+?l%YQny5>c3)!3+zC*=DRFqyE^;(kAkXfgKcLDj$ zW#Ocd*aVe;3istQh*UzVl1EVs={hOPqTnQ*619jSVACXgrd+`E8AVB#YPOm=+ML-z z`ggPUw;;_uMUP|W+5Y0gt=T8L3lF#FHs^*P?=A#wY7rA@1OPMzEI|MWfoqkp30e_~ zZw+Tx2$@ljabqIAyEb!gd-d7j+9yxe-#p!W^=R|;le-TO*0z_%)@KJdX9|xGR$e{6 z`~3digWc8pyQ_D%m+$YdJv-WZcC>kSYw_{jje8qY>$BzUrO`)wEB6x1SzvJ-)Z~`sop*=MVOu9c{lpTzXGEwwFz7RI2{Q6SV0==#;<%uB?OKFfW0c`)4 zmWtQ7rW(P7IHr0YF-f(hP8ij;{<746{-*`1!2rE`Mtr@6%=Bpg{6uwbygENI zSjvXs)dozif@u&?JCQ~|m*_IepmPH7wySF{f%#+*EG;M&KF_I_LZR0r_nGA$ z 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

    D;;)QW1|g_9 zi%Kvx+B-8jIx^mKzVGOX_I;+q9z4}?@YuP1XS};GVBh&6RF$t|@KjqX1NyP^`_A?rIoY-UOwXZ# ziB1-aF5{3viURN8P%uowIP{5>jed6|V+Oh8DIpq%(>w}>Lz+V6*vK;i1|FG{u;Uz5 zkPai`qGA_7Bh3o7NyRg%_yz?>D@FDQ0Ta)o%_{gLorEUg5P1wdvQNS3#3>eGl81`- zO#{`M83mftOT&#Iza$n(CSb}1Ob!*Nmhv@nfkMpD%7qrKR3qc-m1472p^=O5GZWKe z15+ct)1$q!69X_d_5#^P``UWi&-8Vi>25pS+i|wP>wJILh0(#D+3^AF#2~6b*Vi@y zM-KH)O^g!oSUQbLCK32Nu3DwgYSdzpfKH{%PLGccbPe@f7$5AO86O~EkX2MCq*!E3 zBPy9s(+R1t){5u~K4>DgUdmGPDMA)m!lS{rR!cYv0bRi(38)wV7|2$_!XqbBWUfM$ zB_*xYA25cMJQ50vp<|(=IAjzTDP-cg)LAlij7EU2AWFFu1)r{0@O27-Lc~!?xLPS! z&ZVlvoL2rRl>2;Qs0W^Nq_1;oqz^ke41EG$kU^Rv&Ww!owhi{Q!B>V2_&S5#=V3iN zF^HQQq2VU^)EN^I6oaPZ+0i`W!MP?04dz$KYtP04t8@9y#oF>*X|9}^ zE2S5z*-9o-N{4It#9TE8>vY7Mig=5eD2m#fFE18DwY0yKiPZ|JW;wH5FDy3-&2qY$ zi!L`Sn@f$MYccpQ8t$B50p_Yv~jB>4vsZ)v#YFW$Yh-=a+j0%B8r?eZtGE1S# zdKSIgX7D;pUZ(}c@fp?dk<$v|#f&QM*^F=&3@4L}fr{=~bT*>~nW!`Zw^eJ<$kk$& zR>H8EG;XU78N7@dpUV<(nNxbktW!g_r8-W+hq9h8x9bJs)Z0BgL3IWK-$IbRHEm zHQJAv9HSFw&@doRi|Df~!US!06owYS6^)Q)l(8%-zF94?s73G|Eoz}v54Vshg~*W* zo)*N8fPtf6Ct!TO@zGmL-+pK3yYF53%a3k;`}O57-`@W0>Bh&8*FJ^zVEM(h>h*d5 zM%K7qaI9ucJ4N%wqUmzget$jsHWQ|1!qNaG7eXeg-A4GCb=zY?q&iPPS-%=r%3)>oL_gcwU4665%0lD=e zw@#p9&w$*KvI!t_MO?<71?s;pUz??10fe!)@n4rc?fluUWBD ziLaIdKIAG4H>6!a(-=9~FkHlNRBGMRWQ-xI2imrl1#QONML z7jqYhMD~26qOoY9PyjFo5Dk_VWLyR)x%WFH;7fppu!esD((S=bSOXq~v)~GQ9#VTZ zf@LqPFB*-&4YQeap_TQ#S}9el01ykMQnAuXGPSUPit+75@Xa?H%~nmodaVNQs!=P~ zDn(>Z%Vyae*5JT}|1?XHEDDlYj52+$7JXM&3imH9-PvgZAHKYpzqpXOv0i!W;==u% z=A&z?Z(UlvzFNGtQh<$&Teg~WUR{XYT1h_I%D!{8_SRbR=6vu<&9_r>-(Sz(Sxw(w zN#9sZY*hk4amyi7(y0QZW!H#w5+=-uYDilSYL_y$J8M~(8kZX37uTCt7Sgvit8eXA zpWRq^bbWbuseGxKygZ*;D}{IF^B=vqcV#KRQ4JSDM!*fY>Cv%)c9Wa|%()S_mP3YH z>-j5l!IhkCA!XhyJ8!Qg-@m{3{95(Sdg{f^=7&!=KX|b6$a?btuV&!5z zRPbw7a_(!5(8Kjq)}sb!qU2MpDgofym`mf*3r%vC*C2+`16i9GE3^MjR3hvwM== zHA-vi#U1a$92~=)Rjcq!!BE%ip?=bl3HmYMii6}cV~n;T(&--Jz9Gu#e*B59+5LUw zLw&fDofC(qsOR{~F_CJfXX1G0 zzA$*?{NSN3%>J&agLa3YkhTwFPm~HC5_^cw9abnvePgFaCeHMZow?9|6iXhgm!n(t z_@(9Y&V26LO7ZoBD^IV^-`grazEpkp_QI>%i_fmspIolo-OOKGPG4QhTx`U*tC6rx zZc+=Yg%q7M8}}L4>d}i!={pzaK6rZR!zVkpw#u;Q_ICNwa^~W4`uawGvl)-MH7f;g zIbyCPU5n-DVkNp~U`=kMNo_2BZ|-G!?wr3aT6zkK!J^}}nKuv5S!*mR<7*j!6H z3Nc$QY+cNHR*K%uihsT2TgOAEQ>La-b% zrd^7>PraIVFXsK(fYECZSQSk8)(>{;H`dCV^~82P+A^lpx8^cC3;BDyb5E}?Kfb>4 z?Do#no0~A>Zmg9q%|)MFs=Txp|;5eoZB)hf(U&angQsz$}FkUhr#|v(Ckoy%9Bl0xCyL zm56C2@7}EjmeV#+RV$@%F>K5FO-YX~;nt+RdJvv!5yPb9r~KySQaFKP8@0udCF?i( z3<8}P{myJr3tUEp9mt7Y6LJ{?4!zf^_E^*{XH2C-FLmf7KC23NOW3BUWqemRknfK} z%e&Hy+*!|TRDu_4fm_STi)F_`LRXLKwu+7y*J=-Uig#91H<#j9=VSG_t(mmL9K5rV zyfGiU){NfWEZtqt-`&VQzBYGdAql7&Gd)frVZ|a|CLM>CN<`c)i;&N0%$1VKU?l8v z+BFRFxI#<^(9EUbnIsHpX4s||%0xuJThXlgBOV2AsvS4ouhUAxVUJ!XGw2m|t2P*P z#Nz&F#9ynHiU9tS;Y2JH2?umqrI61S3AqlFvYB$EVK5hcIlsZIKz;-|K2FJ=)e4BH z`a6o_qw9qPx0VxjsGzTu9F*$>8Vf&$AMX~D$ASh=^$mmmD(TQ7h97w`YmPrmWrfBomb{NDQkmx4u` zlne118NO}c=-J`@?URQ)CqbATJkxuiZ5YXxA^iE%UHb;`C&%d*hDm3-r;l_@9BQ9F z+&y!uYw}dv@UaU+hkK{a433}g95@a~p6T7+k3ZEhd8h-kzZ-k7eeBSMp#$ABM|x+E z^-Le@!yWFLKHN2VtQUKvkGQ`Jzpoc}tYhp5NS;yVnSR`nGpJzJzVj%7I--%?Qzv?7 zP7LDCjF2vjP|i-xoK3jI1|6|?_Gr({;a=3{ ztHgGbnnj$15ne5(a=8pBbWpx64gNowrC`IPCg_#;kVpL6-~9c5`)~jDumAe5fBMs( zkRj@S{EvVC_kaJFfBBbx`lo;T$AA3CpZw$}zx?GdfA>3-ZR(GI{NvAl_Oq*3ug=fU zudlD~?CjjRbLZBrTUV|k)6$-8==SZ~*RNlPe_`YGd#|58dv^WC_06r#y=XhY3;+*c z1MtH}E44Z7Sy)_HLQYXAsX1JE&xr|;!`d1$Gr@v3*Vh&R4YY#nU;|Ek^ytyM@4oxw z$rE^dY$Dz0P{8N~OiPjI6BLE9$M!K;R{o@0j zWXynof!8aAA*U8NSkiB)ru>zJC+*c%V)ld+dAR3;=2FDAnD=G<`h-iJ@tg8dm(L_K zN*OQ=^kSMt$pP655HV>N7JQ2NjLWNSxv84O0gEi+PzS9_i=3$ypma_O4#BGv#2hfQ z#6S^4HbvB-Z03WNgd1cXi1Dl+h1=(R>QYb(QgO8!Erkt1BhM z$mE392hMaKIdNhCsqQ!12M-U7o*5c%J9+-lx!%L)dXJz$KjK(h@5xgghx>-ljZU<~ ziD!F{ob5e)y8FP14rI(a+jHm)$dms4T|+1Fm@xruMnIiHnI-76IuVsip5jwb`cxWr zl!+f_;znRw%)(1qSo-WRkQ5k-9P*Tejc+9wBFK5jEM=6l3^JxdK-EfFW)0t@=F0>O zxq!x}&GMeB?7VhKdMb2Bj=G5+h_1_L3;c_)N8w z2TdvFs%1j6MvAOdGJ#$xQi!?m*x1P-{L~O`a&Ts>cXqsgdbAfst_^gegi7sakONWo z`Tnl+y&Y#q`Z}gZk;w)(J%*hgh4u8<;KXp>#dO*SR znE*Le>Er@99=YnUiO6k@I>{l9AzvO2O~|3KS~e-T$lk%Q7V_9M5}t;i(n%OjROf_k zmZPM`HZ|X_7QkRr@`y?Ty`D{j&7=)Kaud^qwVQ!hFly;-aVbQzo=-*aCbeUNzv+LzPr^V|q z!|_(V9AFQeZUCUJk-E)ryar1ip2YT#Vfsd=dokD{DVGeLtQ0U50!GU+g$%(U=#)Z+ z1bIs_0E?;wG?kDJ{Jj;*Co-vodKm|rQO-5U*sTyBu2Uy;>qJ1i+&ZyI#*(vV70}yq zrd`c5%UNcnPeV|D&#U@h$>|wvq5Jy8>}Y1%VvV_;UyUk?6pP%_H4}4 z$VZDY4+t3v(r#lQ&ndVmiGZb$2w#}SMW>;2 z;h!Rgl-mkorDJ&@J&<)9<)mQdgRxD~;ev#@dXVYGFMv2Vm?G zt1MxcG!y2HlCKmpxwZU&Q5?0Qx?rV{aVhIrD+iYHo?6USjMy6~cgUuUyEN6PIp*c4h^2FWs^eosambtY&O2OM(tUqU|p}4tK~wyQmofXxt61sP9tSfNB6!X zG^3mZbV$a;)S~8VOWB)i#r2{;?~+`sh1YY=t)k~rEwo$qKf2i1t%WYu!}qsJPcAnW z6Z-pWsXHr)>+|7{?<~B&(b%bYRx{S^5)fMdjm5;>^~}As%+mI;7C; zT0~ieUXv_llU75TYxAhcKq;VEFF0RZt-pJ3>*=-S2bUM_Zr86a=QpZ}g^YVS>srow zHmb3k8#N&L>(xjj<+7@{QzN}B^0a_9?bdSZQRLroXR~m9DF(FdVk5Xwu-};XzrMEs z^ZM28xp!_i-?_8!-u>lQcNbn1amPble2s3D9aF@eLBXRnD}? zXd$a2WRd&z{Fn{p$j^tYFf0KIC*7L7Uw?ZQ1rXJurmafg)O#E9$~9!wk9Bcx3WsTk-AiEw6Y`rOdeS)O?EY|p{* z@pCNNIF&xuF?y^AbGj4A zDh8u4^&%#hMSQ;h;PCVb0&Rdu8CJ>}mse}^X?Hp9EQFDZ&7G~rZZiqo02)ZGoqBY; z9^R^jmJ7aG!ch!csxdo=xS&~rEJukT89SNqTNcaVrE*|*DZ9Ivxw@KLZ$wvXk^7fw zYmL~&Y-QD_TEp%xqetj*|h+Fg7j9IU;=p;d> z4jT0HN?doR>3wmv_T{VlpTE5K&DRgU@$UU^ynFAvA3pxz$@TXiUw?FM_4<1C;gzKi zpIrOk@%3E9#iq=dRNSabS%_JyX?G<7PpezZxf%%zu!2(9R1TZcUQN_44_m|_a1wTD zJ!UNg4Jo%O=hv)FkXySs~bFV5dw zO+DBy)|0M{TJ-6)COpR7o#wsW=FN@D^|k8#%d3|bi+9%Z4|gk%E;SxsX}oiL@!@Xy z`f_T!5n0H2h?p@dep<$(fiebe1{?+kZPX@%2eTteI2RPw2YB3woEt@dTBToW%!jJa=jdv*M#i%_MadYW-xrpsC z2*YNR8**k+z{jos;|8r}lMC9qlI^9i$!XAsy_-pjw|pq|;-x3*DF_=LZk=V2%$G&kW$t zbWNUUA34@FeRzO)VuX5jh<37L{Ge1lNf-2WO&k~?92=w@QW~bqNp0LG8O9x7Ejs5w zhQP~R&uuLf@)2jqEYk6@pt%5=Cjt(yT@R>~OTmay+H8u9LzJ=zEk7NY!eX6Vn2vZ? z=ZZ<6#inA0t&&RISx@_tZuM%;RZ2&)Fd{OUmSRVm*W*+p4A5#Q_qmp6R1-oT$v^z= zH~;Y;|M9Q?`mewL!|(s_hd=!LzyJH6{`9AR{^x)G&2N75cYpVHKm6eje({T6{Qmd9 zhdr?T?sva?^ypE`V6?oxzJBHE71&-|U%Phg8tlJx`O?kSa{c=C+jnl?xOoHi10I0= zPoE%k0n<0ty3hI<(JF%AVIU=UCsm4xXrE5j~B(5iB21u>@@w5L_c4uVp) zDx7MrO@+!Qd5jXTS!t4UfJh^M4L;SPm6pPmdQ_M9h|^990L!FH8Mn)0c6q=gu_#!m za+Zu?kkYjx3cys5jSe-+GvYHVU{GcJ`lJuUnyDNyl|lxXyemb2JqFNPxnAfV#0OqIMM^AGcnNe)_d30~WbO#TT(jRQ&k#_#k$2 z80BN4U@mkYKizTYWZQw0?FY{F9X)Yj{}`sDfBejuo&z02Cr_L|c&_)**`7m#!)-Di zxpU~msgC{KL#GGF+fH6Mcm^dqNB&kPJNBRMJUBewiNW59 zW#Oy}HlI2TLX}HGMG`(D`)S7>r3dkJPI6g#otGvPrc(hUl|! z9h7&8OO*1dIytu$@P$(esb&>Vz#=PJrRb$>5|=W=CQb1u(@fkb1vAJYPKxL=9MY74 zftLfL7O~|5WR}v(1zNdKuLPbiR!RA4DRP+7DJ6K!7=CJ)h#AFA4o(bq?uGIJzMUNI z9qsQJ?7q<7b#831YhtLoujAa*NIwBHhAQ_>3}L56W>K#6q3O{+I36?B4{c_AV0LmC zK5d=eiD~&^jSqCpj3c*1xDgdUCE!qXFe?>Y_?ke|fTF{6kRzgw>{EI%!oZ-a^kQ18 zp=$TY1jC`oxD*MC$fF`3RV9~%CNjzxMN;vR$Q40%A>Kz|lQBTTl>$0YZU%mWjvGf7 zIzB@t;>slgnV7Fph?QcFh(!cKF6NL$Y$|DXVq&NVH#r0izQyE7@6<@&%=jSm31+ls zVz6VZuWhfv*O?jXn;z+bj)G6|(58l9P9d)-CSJ}(MkpDo3^=Rek<@$D(D)#5h!Q3` zV9z&7!X`n3hez??t$KViK3&ddz?*7inBs`JGXW7;0mlb#&z@(Hsl7fwM=p<2( zF%>W;ea3{>m{0gC*;u`hT&x$H)qFV<1?`4%Q8h~d!7!R)YiOJJ;Jys+L(w=XDre7M<0ggws*pI;+9&vW9*3sNVsiM#3di zs2D7MoJ5&oFlLFQsq?+Z&h;MaA3i?@1ZbpPjG`>bGAi+8EYt2Vj8XG0&QbMy+vOL&Ke*Adty}NTa7W@k_)j~|&j41U&f{Z!q(edVU zuJy9F)XIaqQSxq<9J|fXjg8`!#l)q$@7_k{_DZ4|Gvqvqj9Z?tiTws)EoxjsMdhp+ zuNDTYQ;n+c1Nq7NbeomXO`yc{v3k;xbg8pGz0V{Km{H9UkA|t>Q)O&|R!A|Tn%`tG zZHhKKOqm@8i4c#5|EuW)*_{4!`QP^d7TH?>;>`cQFAk+gWfuWZfG%xBP1Udgm=!>WooZk?>uki# z(29PYQ_b-iMJ_Ghs~1Hbs(i?t_UPg+wMQ?qt9em}5+Etu7w+OUNhI7^lNyzR{@N_{ zpN;Ia3io2`U>%8sqtR$8mCEPyh1RmS0jO@z!1VR9ySoc}_N-B`d~KH6TfW|gjXj&x z-U9yu1S}Sdi9}-0>=kTfnA&sBf<4(xx>(4!(yr(7xeS2MTD4rSRT_<2%cH+GH~0Tk z;)9L3Mzv8bHEN}~dIcrGLdE!;P7CkrFQ}0aBrF_oq_`bb7OO>}>$G`~d@b+EyA^4> zDDRe4{OVh)h4q4Grxw1pm|RL2no;dr8`jK~!#r*NWatjmX3G)RWCj1P;YcXr(-xN(gw!rQrgs`>d-{;t`5qs(JuN$(W<)By3&0RGq* zt-Tj>wikP{bLw#0$o|fWBZGukKxZU zSz|H*(XJC!6K;U=ZoSZ<=7+6{V%VB+>-;9EtCbfV#mrh|Fd3mU(N3)p^aKnHhnnNk zi9&8OetOiR7I`fSH>l*GF<_O4?aFk}(9HWTE~YafQzhw2hs^n?^~QSMrs2ljs)b@; zeJ-(B@?BfauGKCKOx-TM5UyMO-CllLEAd-dST+jn;!UtfK2W$DSa<hlU+>Yw{o~ zBBqR2QH~hmPDR|Q%m?%U*|T0v#3oCjU=U?M$Errm#h|g4a5Pe`f?s=cJzI$wive9D zZq9jRFw|2nxktmc%BU%i_S+x7^W^5%t)0cI>y7!WXS*J$C7hQRlP_*ATw5(K=Dceq z|9UxaX(9dm&dz2tzg7w@=R7M#ALx#&%gJWaS`Hh_QA^yVg02I23bcn$!GMN_31U-m zeMSlNHtKvGDk~l^@Ifnah+}322VMb)N4t_0u?UL+eZnpcnuH;%H03c=qn3&u(y(S0eAv}6t&46Dvp|mfS_3;(#tvP3zctt^4@#z zJpTTlefI57UVZno*MI)myB|Hj`^BpVpT4;L-h<2U-rIiv!Pev5;?u34)2e%gq>wptYi}5YU%GM$naEBQI>? zC9Q&5#E5DO1W>w}m7EvEg;cFyIOW-FBNH5^^VE{%FJ-3A@wDKqBUgg79t9($&G5-nfL{glStT0_Qpju9@c}do7*U738qwe0$p7ZYU;gF? zAN=w!U;q3sUj68s&%gcZ&Ntq<{qfW5-~RB~Uw-lW{YO{U=hHGil`u0z#t*S5BQ7m( ze6sy~|G}=QgMEa3JyWO7bRRt1d!%RT^f2x85c6;k7FE;hng$7QdPdwn!8_J5aR5cu zbidg?a-x0W;Q8S<&-A`|e&E0;t-T+6Vi13NgnVI;cxr@xx^4JK%jIET+vuAe*f)D{ z$NF%``bmd}*(dw3NBhW!hUq7UNvGh}s7@dK>?EgSlHD~%ztA>xq4$rX2LoTr{b#ptZPl7-+ntrZ<{QJNE`(OR)SFrxx_rCY+*|V146EZ8UuC30uEJ|0e zUVZZP$t6(!moHtve(mnPyN{nd-rhz@%|ZJEDtP(wB^ z_koQ)7b-Xr(8ZqTHSC84j)&VVFE7Ie;JQksytck}`O0NzdjWT_z#eGu7p}JVLnEL* zz=yEFzp#xGSG6*r!#3O(u8;Dpqm1WkEASnbQ3iB)q-A6vL)I~Pl0A3Rv>rI&<#P9Y0bL*tM!$VCF^D}9E69VSflVaNLL6aBNJ{Y;eoXM%wr2aFC3QzK^D zv?7O2Y*F%UN{&`YHp&=It-z+@$=O)Yo_gfOfg&S-p-B)OC0kU&h}+!Ecp6cC!piq) zm~n@^k#biemYi1`FbWlHtei0o%+RXlp-2iP%cf+4;L-^xZoMSwx0E6lxU5qrD29z` zug0t6&S%`MTDpo_%ow!_lP+o2r!IyJb6MBse0-(st;LNwpEB=LE#{mH8G9vWPI}Zq zv!Dp_Gi5Kw%mollF&mqTQW23bD1Ua#xn{am;D1KOA;^$jfMk#`fu_P2gvUdnE_$I& z!LrC136H)Ia{|t{NNH*=F6&XJU5cbjnf9oQL47rD1+5x$YCwUS6r8Y2Q;548`OthR zQqKnSG1q)4R?P-WDSs&)sAfauOt6v*!~U!v`Nqa=;%dUNF_*f$R=&JmS)I$8v@!-2 zFXU1q9=+cr0pynTY2jWew+a+ZIcBXST&1`>?K5Wlri4=+cdA>Cv^tF9RqGdD z8R(aYO%B8abPbn=<k$kqZOIkDuRvvSVNO$jQ!u6Q?>3p6NO` zG1W&RP7-h=RoX)4BgyKMOfDNInMuagG#K$Dbg)Fs<4|G?r6qz(qXjYwEuM)#fjZ9!v%gj0z zadrYfJ%XDWo*C~SAL?#pO+wLm(_{U}I5pHg)Z0Ei)`y!M80b8YV%G2&;>;Lkv~PN( zcWSr?J2?dBVkZW1lS8u;gV2aG z<#{XNw31KJOPPQ=R01k=2oO(r<5D<=Ll!dOMG%lb2y$|vDnx9hm@5-$?o0444D$}f zPMD(NU_A+paxZ2Io)%uTRz%eZ$Z8%@1&xm$8$F(YDnTAnWR;i=8}K&a^&!tG4n-y5 zsKgwNl&6ymG%~(~$Jq0eLIy;cP$}WT`+^3~58na~hQ|iFjoixESTO@7R+kBw8mT}l z6Y3Qrlr>2!bDK2|ql!(#3k5tjjmX50=tX3Qng^4@rsli#Vkh8U8^B#j#Gy+2w0?`! zq2+rFLbqPvF^FMi6{3!SRndy|(evkZP6To3G~Q%9(sJSk1@hE17J}A8?sdVRtIztY#vM z)$DRTzgS5x7ku-DaLA$2NSH>ATqMZJta_zh&X@Bju-3r_m!c6dEGmIn z$<<5QY9U>P%J9))+oVK(Nyq{yXPIP7=vBLl3v$w-6~SPzDtT5V7nDNYt0)Dv4xPwj zl(|d_t6pZ+ii|3OTEdYDSrR@|%x6kr#7aa;g-oMX>NQH8N@`F`eHJA`*Lty0$~4QE zAg-;*L`4_UG1OU9O^8Lss}=Aa$7V*lk=c|@MILs1Itp2(VPQs~XkzjVk2(Y6w&gZU zgdr+s;@_wQl#P&lDXw0Ksah^k@*B(1m-m*R-K<|*2yYb~n+5x&y6?_f;_aLDN0$mO zZ_mB=VCC+1@%Cb1yI|VL>bDEV-IDp%f^V~62D-bQGpr;vi*b!h&D8RVE)Ay|Hv`*u zw#sd+mwfkk^7nR1*OoKe6+hhKgGXzRcZ!P%V@S_*t7s{g0wnu<(pK>6J$fN@C2Fmh z?Vwqj_UKlN{zl4?3mUV2Jz(*yR~NB^CXfdWJQW8ETAxRr;1EVp)_vM@FU1JrHS zF7RuZfFaUuPrpMF?a0F-oH5-rwdyoVc@_v1&V&R%3^j!(yeJFL02I~ZdYb~nuuKi*LUeTemeu8=hq%m zd#!~^$xe$P910*CQ8W^d$8xzGKrXz1$N+)G(^ zIiSrrC3%;u88dB^e3$Csm8_%aRp#8Xt+MawmBz!J%0|Ic^2+98nyr%SawB|oE_!(` zdZ`}Wsf0F)zNL(_8nweurrGb11_Z7Qx#K+^K?T0Q}w4~%?1WzwbL7K1t<(oQ)E zr9IZ7-$_8e3z^v7!85bdT?R4PpkVZmA34`^@WSBHj?ts%`}dz4+SfU;4;bBrk%Ol? z-Z<6yX6MAw-q|DFm;)V?hq@ z``X6dJU6)S!qCC4v6FkbW;(_W_st$^8{RiWIzLD}-93GvcjiF*`2OyheLc8?eYoSp zxC_1bqkSZxh=s7lbS_7b*(NF-k!hAg^Oft2nD&%?HM)6;e#VB@|q14y1sV*;{3>5ESY+5e|*UKT4h$?K&1`L&$bt&&%EBRWkOoo=%5=uMb z){E>dn9}n4)Xk0$0FncI1|10SQ72|V=lhIOP@G7_X?UPSK<>d>K$!$02dBG`V>2J5 zE{M|-axWFbtei`Gs&Qv6YAyv0884ES9v$CrL{ZP6m~wu-&mcC)*!oss5v70%lf|ZB zgY>W}SOW5d-|bjyq`vj)_V54Zvmbx+`EUO6{onr8N5B8;&wuroAAbMC`~UbipZxJh zpa1jUe)fkSe*BB?yz~8cwq9P!KfP4Fe`%qS4e}YY)rjfdM)v+zZnqwKbg8&gc5D@$ zHx^=dSCY?n3r{cAx2n-n$kd42A{Mb%%?Ro_5i{SfrJF^Bq*KwVV2;*cS@895$Uy$`AS+ z>9{`?^XAi`c*HqBS8UXBm11ghePwB(R?No(UYo~d&ZfgoyCD*AR!Z4wrRa6r{XTa% zD@-?^T!*XJiq=AKl-Pp-}JFT;yH}CYl71@OgYgpcJOr9o971hpC3AmGTe>tZwEm!d-UwU zn_ZJfra7G$UeEc#16>nG+eQwY?%8*`Yad9PZv4Js>X|<5iC*lH8A)3|{$MZRKp*+w zAm#7~>G%-&>;U0-KmOP#<;*O%>%!>%j)?;u)B8KI`-WJD2k1v8_~&|OPn_#N*n>aT zGrPYRd#ne4q=$51h<vjLlx_c{Q+{s%$xmEt`@ycI+a^ss%RzAK{`@1i0eROvj5Z8^RpZw&fOhWA3u8Z==SZ~yF0rpE2s({EO0zr1n|Ry2M<szPZr46g=V8)&h5jd+k9> zxRgT7<5967v6C*f*B}tmFnk7y&!Qm@sqtRoM5|yKVG1`fNSGQTOb$?IhuOqQ9%Y(_ z9W^TXA-5ssH3e)MkB;jzihO1<$YG>6TRB0H1G1b6Bu&biB~A?h^^Lo<7i&QPEp8>% zE~B_q48MWb%mqLur(8bI-@Y{(dBm3qhrH7h00YT3J3^w!dj zT-X@*s6#esE~qVpbeVuI5il_+Gi2;Id3KC~9Rmu@pDFd^hHTIR+d-4WrsS|Gvm6EyC@392Az_mxTrz_&+0l1=YPuU#6=+zX1A`;yPqrUG zb$$nro#{MwrW@rDINNvlbkCb7JKhBGa=sU!(Xr#_-aLN(4Loji08~M%zI?LxWIM>H zLnpi5JlVPLROkNQq0>O{Sgiz41k5OvI4fXLIQT&(ZdgR0(X?DF+pLwDlw6&JDQOv` zWE_&Xm1PO8Mw%YNjC6AdV{k4|P$`ct;nMU zMVJ|znE(ymJ3BQzG1xiM*ET-bg-kQ!gSe?-*g$SU6a7Oy?K9&8gy~T#Zjy$ZAWjVe z`=t}6V4FNMMn?{bM#Lt=w1O^zVCWgAk2D-+F z`=(J|Djb)~(P}gzKATCw0*ZiRc+_br8*h-%EOG|)9(;WPbryO<$wjmd{f-MP8s*KQ z0#37`x@HW$l!**mz|0vq;Mg)QMb4wEL@Z^i#vC$W321vMpMZNS_*8{}4w_Da3iHun zkf20SlY`TveWL@Nlf%e!iZDGgIoLTdfNWBueQi@iC=Uz@@f+-%9PF4L?xGPe94eMe z#RAV4vytDEf`HdWC| zccqc>4Xq$Gm4pw+7*rCCOlVNcbP5qP_!JJ4@E9UC(#Q${&7@$VxF`WpDTIq7_b7O+ zMwP^>Q&{y17$$!>Ho{YC;LlMGQDt z&Lu+^0mKE!)bcE&Se1y00099x378o=*``F`Ibagze5yjotQNCON&%oXzeAUcIx-6KqNt z6&wwpNS+#)9_k$KZNp+FL;}8Et2P-l#Muc9^uY8W2{X*4%%V7A(v*ZrK#&hb6j9$O z_>>zt^G?yaQLt|otXnz5TWis`uT`!$eZaKm;)ac)`|f(?@ukws`z!aaH12HY?yg1A zr+H+Pf(HC{HKV&)vu))KyJg$unrkJgE_g(+F8SqN9oMhtA8ZpCW$$M!b zcBvWJD!F&c?mKJg^`dt=^u!n{l=a4|e5KG0c%u;(s zs67<&e_XycOTjV!`(Xe?e*BXk|K>Np{?Xt5^_^?GJi;&!KP;k7h-i~C=8Q$obZIy? zC0okE!SE7LF;W&D1R0k!Nt)~$E)nx(9Iip$2|*jNP! zxMyqv5C+ShU1`tD37M4sUzSTPixnLFUzfepVF7IV^#T_Mz_)iiV7^kRv=>m2NF?I% zIBW!i!E`E_X%*uu(y8+;`4du{xf`Uv6cJ0Ifse?HtJQ_0Gc#cuhc6* z#}N9ChTUJAr9^C0Jw(AL>m^J8H^qPs`WaBjT++UfcFw09wWz7+SFhyU0OB`_zV(84 zE$?10xGF)_dck>fDY=?+ZI(QM@~rLzxd$ox9@DOmVzLuDfsERS_L!&Oy)}1FrPrx7$0pH9&BdruEsvOKmV<_ zcRqNq{_JW4OmNv zVm28#ze&ahloqkcfr5fYH_F%!4KHLCWj&g(Nnn(qWGFg0eRQ_tLeG&??T2P2JK5yH z_TeMv`rka;gMI^S8#+2dZR^1u=_eoTAso0cvG2^lo6x?>Yd(2&g5K3Nb);+hQ1|qq z9?a2E;u#r_FowC%F?y(b>PYX*$x~hXP%XcKH_i?2>zFz`LODDfwswgU9al2F@s<$%5Bu+30;|$^? zgE$44iGm%c;>KCTX%662Xw+FA9Vb9VZSXQa-EP*)Btn^hDdAFibOIn(I&K)+S1O8) zQ}T$=nFt~A;T9An5B&lLsL0T&b75AnEh=s)VZXYTy)+lyXlBhCsmrXY=YrKt0CY^= zuf0-rKikRP+N|8%s64*5{PFXfU%r0${-bMOynFxC7k55-cI(x{t50ujKfAqkYrEkx zNP#TLc&N~_&m^p;?ehgs+^KS_SwW*P;Z#-=){6_VauE4RrJb^{fn%4EmQvPc(pC)W zQceYs2bBFPplu-USLZ_75wQpsvhGI8?KjJHQdT1qD1@xdjDMq+EQQTxIf}N6JCrb4 zVosGq%|&@+_2_2_yP6B10tW+KV3IOn+oE6_B@DBS1rP-GPYiX>P7X6k7%`IokOiQR zS-}B%1L#E0$4h7vMllsxNi+hJjO7D7q~$x+TqIoshKxsBi`(-7ecG*R#2r96>L5bH z#;_HIJewp`ABrwPc~4RvRE6E47iq+F^otY1pcHsh(V%Bzv1$>`UTsG1tz|xWwDY}> zAAS1t>R)~G)=ryTC1Y~2-XV0Xf?UT;0^#wggl5*-dPEo2m_l>nQ)t=@t~bSo|SMZdMU$a z5^pwQfBR?e{{7#4_M0Dn@vFc6^l!iY&L>Z=ytuXg>a9y3Jh}eSlWU(nzy3Ghe6Enw zJ4a6T&K_^W?CZiF8ljz@#g6K$gh+a~t);!!2OLF$n~ z;<;YTktz0tG1}>#sY9KU$2-Rl4bhMH6OZ>{PfqdMPxb6O*MGQu;&A)ap$o%DPP82a zIdiIW-|6oCZ4>)@ux}2~_VtmD^x{tp&_Grk8fNSpARQqx2K+W5mfzDcad?Py3d3vf zo<4GJt!S*2hJ1-)92h4x=y z0LiE(SPhJaZ(Vuv==zsmeDw35|E%R3^^0Hp;^)8m)vtc{55N2MuYdj7=bwG&JKy=% zx4!kwZ+`Rp-~T=!C_q_@i;F9**g8<|uxz!K<>jTufBq~8fC>&+Mz!zVXHD*RSC)xHZ5zco?`KfRO7quD3k7QTBjZy;g6ar)@z$g#B6&5j`br zwEU=$BNafx-HW^MY$$}V6_dEWfr1BHw?@BfmdoW#CIc`7F2Z3@F=HrWluIXsp$`1e zqhaU0iim|5&@)hx91+`O)C+iAGGTUd1ZBV(>u;YL?!b-rv56CM4hhJxoH3>30Z>Fy zSCr|2nbF>RwsfKS7)OGzM#9dfc$LG|glP9@E! zd5?4Bsvs5$hUdX!^a*l{gW!DLU zHd!ugOu+5wI67&XNt$AlF?>3fO~HWJWTW6RROy^Wng%e8bQy4aF%3p|&@8da=vo0W zWR(MKNIC$%N>eUXJqifK3WzsmlZ23eE6NoBxwMfWmv*kyQ=5y$rE+v*v8?_7vh^42kz7~X zC~Oa-hcsetsaws=%*@Qp-RhQF>J~GNG|c4jfEi;uY(GgHa^Q)RIL5IZ=Y6m1{ExGC zD^JdQzVDRxluK2+tE)Gxec!7V=#`|AK_+D+;x@zNN;u^CW(GjNf!}o3u)t!G@ic=Q z`1F9fD-m-cU;v~Pu}ZUkWImAgn?@79eAH8jy0bwGJe7z`(H6)@7i6W!08?A>#^@6gH4eP_B4jgY&nT7g>3fQALi!=qstq#^uJ z51UDq2suJF88|QuAu)Ye!oX?;6puj?^P17SF&SGcqVuVPIx*cO=QKG#2OzOk$>oqS z$RACPa_z~vM70oQ5(f+e(8X&-x&yt4CZ=PdFqC;qhL&r17BlKo?DddHRMLu_AY#(i8kUBC*#`Yr;JB;)- zz~tco_B8w;1=|Z0PtGF?5SoJVL*&tL@Tl-76c|o$++2VNJSvt&9AuL*Vm7kNkn<>f z_(sAYP-3LOq71VrSUPDK*=mgp;0C*g2f9aw2WS+cfX~&a6dHv@hJr~EWSkK>2d@&4 zjWVV~%`-_^$XW`SCPC{V{S^G(W^iug7--i@pc!FNGsw7RmC&x2>!rw#2QHzMd??Kv z%c$g;)k5UTBt*&n;E~Yu@9XI6I5X7ShU@Pn;|7FmI?_x5vF|!F*xf?Jbm9j)hfwyt zv$(!i_!G#BkVQg2gfwJSi4+0`{A#4^rVPRgi{5%7n<)T|9GgaDka3WsmXy;}NHL@w zA_t{t#G6#2NWkkbX>CTe9g0cqFsbckz14t%pd&?9v-=!Iq?XbtkXlMEV9Et_1)m1( z3C#kx(nvXWgTiYwxGg%nQRTL1JyxBk>AA*ZQF&}8mqAqWNpZJ6*bK6XUKYYCW>r=a z&SKP>@*5H!UCOI-Y1o;7DIc-H)Q&rqVLMcVk%n|wQM)SU)Bw=6D3MK&PRjC`Wq@ph z4xLpk4A`~l2znux^ys|?fQ$UF4W*xR>YzT?t`)}o_G~g#0jN_cjF;2dn75n_!@)!) zKUT_Q6YhE?y);!_p03W07pJS)N;VdBTg-Ze%VrF??XXJvT`1|E&uQ`4jL=^2XTWU@ zc^zS&Bj|C4ye_B{^x8AAAUughD`HcIY4`yGvfAr{j@#9QLg%tcLlPEI%p&q>2q3X3 znC|WqZ5_wB^x@MT2Tyk%rcwIQtduZ1dXGu?B#Vk~QgD&)n~V(-1NsX(DC!6NC4~-c zsyjJQY+8v0jVOkKOM>~>jNXN0qf`5D!0a`MeI}`|spd-s9U;3q>(xvoEXA*ImViSWhQQ}i#5Mb{>iYmHPb<0*v9FuqZ2e~lPAOebpwaOIFBOuUj$ z5wi#a8kS4OfUusZjW@MS|K0$3>~6a#v#`oOBd zA@vKJc`@LT;KA6W0TALW;(&}pG$}YPtza~4n#m&jGN4JLQ52hFq2#Yd3_(3NWE8B7 zMW(Zka;Qo9lJ<#&y%M!Tv*i59uz5P`nlJk2i@sXI9*{LMFCef{;IhSf3u+L(W7)O&s=d#;|iFq2uY#TLrJ&58Khcywnrk8;mtoMQ=R&aaEw zkQZvmsxV3EPOZod(!n5T#s}pDbewWfxl-|L*P}}%H%z*nne^4w@ypBOE7i!>WO8LJ zw%N#Bm@jTk=hmkR8;#6LEs^#cVKuE)M-?Ittda9Y??x?rZX$ehxo}}Bx>R&*PKMrl zwE4rAF1-7~#%tH6ZY^bZrV`he@(<5XymD>km8*?6Z_T`PW%BMu0VaFVD+L~?79q=I zgA}D3ck2YDn4=tZq&>Q3-WkhS%3DdeN)bynYA*QHE2Dw!dVI4Mg>qpgy*?hPMvN{E z7x0Q!f>vdRR%lf)fr29IP`fJaR*lDui{-#n#+eVG{55tHe~@wZOy9v1U3+EX5vQJe zymjxXuDvaTd)o>7yQzn|DTli#`#T7GIpSWKY~)1OGcA~XE&T`24D3IPJjmv+39xxWSf%$fdYT8E$Qp&c6HoW<}@bx{s?k`Hv# z4)@WX!>~>d2~PAjW6Jch_jZu?bh1iphhgO#tmgZ+BD!F<&nTt3h zPUJlAHOj0iJ}jtqwZN?8nb6y5ao7&RUEneBLl$w+rnc)Ou!!2Ve5;!6)G**`(xtq_?lg=TWj`J(6iV&%%(#I18P&tF=4cy$fRyD#1T!Q-26J-q(v{mT!pZ@uxt zl~?aytYktG4i#B!$+-Xp%5m#dDUfh$gC=3prHnfi`H*3AHZvB7Az?{76~KjHJTI2K zlS%t@-aT9N=6$+y*fbV1*VB&qQeb5~f-)#&yp^Ok>e2&Xin%nfn8Bn2sh;)glP*=# zsf^ndA+r=lVAvuFnnWHQ-z;OuStBX|31AJfIQVx+R}u_by_^S73E-4UE};^!bmEYN zO#-QFXlm{d@^+};K4vM+rbOPO5xcT!!z)E0&)vGDOOx@a#}m$a#+wTmfaljz?u<`A z7PAzC`lwwNGD}cMX@kVA6Zwpia>SBwX-o=~j#@8f$T=g$uzs}~y0KEdu~JzoIPP!N zt}NtVxw-PIAH49h*YADw-s2D6df~^f-TTq2cYpfYy`R7F{4d^l;TP{b{ON0VfAC=E z-5ZS`T_1nEQ(K!Eg(Y7lqODc}H&zN47IN2DOE;Es&!4N_-59+#pS{pXjK!>tj0^V2 z8_}r_TctrWik}s-NVNPBB?o6$al8hhQ_BN1gU1cwN3bL!o=&5Pg*=%=pw}uB(O@DL z;&7O5m(}ZWTFeHk*^rC{eQrxK5v*1Ul~OkBx1|&QdaYb8B;pZQF&9llkrJw$k5|i? z+E}5OLkI9@Arq;N<_p81)*Nn6Huw zEe5q##sgw3p!C86J2f02#vlxBh#EB$NTDDX2A6@#%>$iXW+O1n#jq95;uid}+{!6!h_{!~{zJBk+cOGdCyw;&Z z{iI_QO8cqqy(8jwlByFUIN8fMda8GCJN8IF_4EMaR2TI?Cv{Ih??^xY&;ai+mfzln zJJ5!OvcGkB@7bXPZ9|88SqFOP&5VA;Bb_71alH0E`iU0o-geTyV{Lmo$@_-|Cot?& zZMc2Cw4+19BO~%tSkak2)*+^`n{H?u5w{F6TS&atUi#qfd`brhdNAeCZIbfbKrgZv|X>_cQhOTZ-!dt@vzhRzyLi|B46lCBB9Ph zdslz>-W#8M^2uNR@|WK=w~s&m_&2}(&4>T>;V*vii=X`DCm(+J;a~sy*PAzQuB{lj?&7}Oban%9HPzhU>aIHI{Dt#(?%uh2?dq;h>i+%vZ~#}4=~UCo z367x}9KgrnZU8?3IjsJBLq2p%&4}XwRBqqCy^Be%U%w9D2!B3!@Bk{q^T3n9eV`^h z*xh?~Z{E6z@W$#2JS?)fT3cOSS)KKl6TV$SgF9Nk%aRP+8ca zwW$T;*-$oQ4OnG11w+Ngi0Bw0br86vm_DTA;b^#Sz?M!WEudq?Y?8cBHCOOnS}0vz zt|C~H^NfY{$fkQd2JkOt=0}X2q+OhJNJB>6M9Pl*G<~{&NuuWAVNo_oC|W*ICm?w> z?6IV?iLnJKuOZ>q=!8^{ju){>BMv$8aW+X|1$U_!F*7e}=7ueTgk4li7^kxKm`&t2 zaQu39)GErjFiXpq$gSHvR8 z_*A(7DXftv0ZeutMI)peL1;@EYCZ|ZHV{#tQ3S04!XMTMzzpycpj4uk>6|AYG!#RI z@ua;Jv!H00dLc+@yH+$&iq}f9m6_6FqfoD;>eUqd31w<5Q?I6T34g7eDkXjCpamEd zAeM!KbG?z;m>Zp+%vaKZg?iDXm6Jy>JUT8HG?l|f6k8o&cG3n*9w6t@D0)?#a;qH* zx<|wIX*tp6+q*PSXq0+So${jaQYnui=GMc~Ux>N^a)bCX>D4?Yh0j25#}xwF>GmVX zTK08gPK{8y`*CMZbnc~7283(^mo+Tl;sjiL&+y6TI`$rK-+Q+22xhROx92p0&_`nq zwGSPAu6^(Ew!J-rr)V?`i-SMgbL>RtzEj=%2e7A6lomdXM?;oG(8y9g1Euh%L(3C@ z_F;Nj1ssN4A`r339MXV@fz?asP_!b7PDC-vm^v{Xu!LU11oo>E(uFiEkA`b%bI4rE z5J(=AlCKdnQR+Pg0f34_BY=+p2i6KHKxaf88k2$}4Ru3h0Tt>qwas|v$XZITaGKOm zY)x&H)2uNzy~C7ZE@7yL+;qO9;0BP%Gp36{#E^!2h(jo{5&_dQ+}A!b&922lar zD`1SkY!cA%@L)jfn=koDBH;OK5{Enl=bN#v2plp7DgeFWQ-_<{PckenDiO13pV-GF zVxX|dLr`|rI zC2CNMF^qr*nn9gl71M}NC~-Xs9*>gr>m@9+Qef3etQxUdB`_)kDj~EmS10E~2ce*@ z$U1?=p$ucXn~C;%+K5BF6kI=zfZM#ldC(L*nnf#z1~;grI+;MmA&Y3k1}W375!f}z<;|qv85De@N~jjGBrKwoO@il# zB~>e70f=&04F;9OVb(d#NU7wq8WYig!=keqR1TBYtW(0gFg3%08PyW4T&R(tP)8Oe zCtw!)Od_N%Q3;`cy*9nwsBs~klz!J>%40W3gd8RfS#?>IT(4f_)JsElHBuPCDrS_X zea5l0E9o=%%rX>Y#;%Ba^-#fMl!feCzeNtx04{}WN+?mM+HXdV%x;4OewssrBx=g5 z17Q_*sJtcxh|`!$AGWCgKmxR|Yxs8b@{;caPz~*%7Pt(ufK}zQC?Z~4D&o(?gZWgX zR?f~$6lZIN)!EwS($r#obg40#iwFEplgp~}pt$CCq<-?+k;|UL?6&BGP5;Dz)0|6$ zl97NF1=|v6rCc$aBIZzGD6+{z)De_ca;Uq7Jk&`V>ckIpkcWF{_yK5q7>#V&FqY8S zKXjG{eUIyTu4P}>z;Tq+yYp~c_jBF7C%gMjJlDEk%p(GE035!nnSw&u{tpWsiKTxn5W3!Lc>QbX_7VF_oP5K{AK_T%0fVw z4O*ifv(K(~nN)Uz9E!`NOa|=9fFtU)=AxczCJ3dN^ygxpT+|iun7zpPL+CQd<6d*z zV+vRl%|vQi0Lif?fQJL0N#Zw2K%`p~9Gi+~L5f=BJ*E*e6nvDV5(ceW%$D(JY~mnc zuzdtZ^*{$q{AX-ZO4To$PwD1T`iZEz8d5eAy2ZS8dDL@xK7D(={P5!Bi&v)}U7UPy zvA#a;T`HJYik3!FTaT${Gy2t0`{lXVcYu$$$q zh*gHxlDua;VI2+W=L@d&T5xSFxH1-As)QFyft^OYo-pM+imXRf3h4Ysk>4y!`AiwV z#Rm*oFZRRYZId^XJt<3J>qN#qmT{ zA?JbQ!Z8Q~d^Ð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

    UFRYC9|h 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%0AO)pm`ogEGe(8Haj6KI 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 #wC?vvr%ueMQ9pS@DZ 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%0Df7|Y={I)r+Y_;kvFLk8 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 z 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

    7U;M>i{QH0VCqMj0fB)CM_w|4Hw|?=L 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

    LeMrP(nDnZN(E+DcSdUp2 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

    5R4qqIyNx2Y+0|5Y8K%U$~68b9LAaDjz zuD9+#QAmpLnYuBeP~_c%I>ca*QsE5jkQiv(HMqgSfh4VR0Iu~|^T7fLHq3DgKFGin zgkh6wwEai1`0OBtD9IC_LaH>#BU36MLio&=7a@{Bzz)QolL3beA{7Mq0|NtK!ZLw! z;j;b7t^iDO4F8Bj0??%vF#EQYR4P6E5+6oFavM&f%TTRSLx3Qf zh{GTOfTH{P9X@RtfB*ph^hrcPRJ1!WK~T8>5ab^B!x24j8%%`MHwci24?ICeh=5lh z0OSaooaB?xpy&p~$3Vz42}pu0%t9CKe&WOlsx*N20XZTSk_cfI!eCMj!xR}uh^|XR zI>eaA2Y?C$sAEG6{TwtxauS_$XlMwx5?=|(4q7n6hVO%^hq4Bc$^%jG0a)fi{_yg| zBpDKCJ1m)5M+(=qSPSx97z~JUZ@HxGH9{}0vr-Ui7+K$PC5KhaQt_S`{ggl zpdhf!4;lbvM>G*s=d2bEmJNKS40RTpR zJeK0#QKdx-DvF9pfMw(h5KTal_m8Exl@)YROAvq<s7bnhHS{bUte#^<>H5v5XM9P`C1&Sh|NwKJB77Ya<&>RhD;Ora4PJwTXa|(b4OE5xKYZyb!CP9 z(vwFW@lxm6M>c4k&6qcvfy+zzQ&Y*^$>izj^vOOwr5Hko$Sf!(rPQc z+)Q#;Vr3#RQx4CRLNn!1H}6}l#n)TOrFyKJ^Vj3{iHs)_IPiA=a(7#es~1jPzkK?} zm2)?*U%q+m%BjuOY!v%ADYo1W3p;5&43EQt?PW9LZ*Y%AOk@M?TmThP3>ga{W7MHC zj1L**BZ-i^kclTFey_vmG^=#-5t*oGZ1}iz44)C8nyTX>K9uv9M1> zjTmHuM)?SRtjea7$3ot8BAiJ?a&dn?=FCOy$$%y1H3n_t9)kqW*rsujTq44(LSynB z*!ZV=jh^r^J{kAjwj4A+jM=#7Xp)B_cSoMwLEv+Pj=f(=MZ`z;G>FOBV_vxX{^S%1 zrMMkXO2#3;$-Zxayq^X|j^&%SAK)NGmY7JvAzdzB<`jH7$Y74S6A(&ITOcM#T+pRR zh>sLmY9bI+9X{04>J$L4g$6_^05QlDA2gyOMF30+hO#`s=Lwz$PSd9mwvF#JqDM3A z!h`(LTxxeJvQlyvy~M$yX*axbl7`np-*^pKO%bidZbDydD>%aPLAwY^oKnGC+ z0#qsD1Jr$dDG1;+lQ?Kb>Tz(8Vx8~pZtrbB+tq$SA{g|T6=|Q|Z`UWop19xcw`sjr ztz9Fws)aVS&@wL2$%YkzKD}(X6f$l#lXH!U`Kju3tvEYbo~akB*+@R&E~bKwa%Qnv zU7DF(n4Xx(g^KB5E)!41f{BnT>bJ-Jwq(c^3HdBqJdCp+zBx4P6XPC(*r6W9jN#M@ z?P@{5tgvf@7S*U#HD((hbL%DSBuF)4lnrWxJ>c84V)MAbq8x=0?x%lZy`+!*7JICH zTmTnA=)Tlz9v?NU$JEk6@o-mP+nJu0pAWQuG~CT5mY&uRdf8X!&ky&s4feFRp809Z zM?Z;p&6oF=ch(o0m3TVha+=jzrAV)qSxq{x+ZFKpTn?*NB{6EmazUSBtVb>EQ3<-Z z^Qp0b850`&v9Q}9acG1;irU%4rxtXLkG3IiQwug{^Z)d#kN=PV`Y(U@`q3Z1zWe)c zp8oo?N56W!^~-zn-#%FU)zj@SUR-(g5lpML)I+NXDSzWMCsr!OCWeDCn} z<7;2M{rKB&zWn@?k8fW+I$oQ)xKzBeTYq_N@$OFj@>1c(M)i}M%dc-Ny}Y{c_RiX8 z_tqZlHxA}9o0GA8(4>_OONP4|Dc5Q>yxmCbO{aIJlFLQ!dM&b1kE~VLQn6C@UtXGQ_8f-5HwDpL# zfufAFk#tChyCh?Sz1utPKe%P>N_Nm8V}3*^ZHfc*!2VJEFtpI*7ypV+e*^;v^_ z)g;)qi#Dyo4U1sQ%Fd+LZGv5=7#BNfa!a-yqD{Ma-NufeRxP3_?dY6IwC-RhP`fVi z4!a~jQS35mtp=S*r!(rb+()U{8hUd5 zrBkYO$dL*}`Mo%RhC=&5 z3xEXx?THjB&_%0)K$cqgd&g4mwtCo?!7{?2W+$6mW1oPsNGS$B3@{-~eFT6YF#vpU zNC4r111%89f{A@CwFZAIMY~nl1YjI8NC{AcI%Lhy8|O^-_M*mgEk=*SfF-;7uJaHHn`M=pizouhZqlVP)7;_1Z+~9oPcXC zjOPzO_~642e%{g6nocFuGC|a)+-t;k8nLxnc)1i<$g^W9+}GI2<>UUK*JZcp_2Uw) zY{YIHw-_`*yY6s0a%+G7`eya<^|deFJo@^xw_m<__Q}JmpWNH~^zo&~_iqYDhkLp^ zMn{H(f|0)7E{$5D)hG@6afi(i^uwS|t(4d-hETxmucfi9jY9%p?Qpcpw=IN5ej^%WN{JwVH9G zVLTM{iMQ8Do2>=d+ z`3@o(;uCl=0%(2=kYCVPbm671ua8D7ogE0dPoDFZd3AtdAkg3;aQ+z}2}KMQ445BU zIMIB!6+;Xd-UNyY1VX~if?I^Cm!s zR6uj#u$m%%YB#h4DN>~XaB%;DKuUFiB(l^FAdvErBZXz?(sKo9FcARnlw=?ezzb^^ zu4lm{kUWa`u)!f=n1xfc?P;f{fo|&W@BjX>)HqbgAXSr60&k6gER_WM|L9f?iQ*{3Pc{C3C6!#Q7qJpROUy}jJ5$ZaG5dhre5hZ$%DGd`|vZeQg{SGRe&N5445Lb@C9LPC6MK6#$1C&3Ngq7 z5Ce!HG2#QH0)m<2dXVSvAT1CS7zkuBuMQ6ngM;cI3mF87-bYty)#IJ5=f?UwqIRX< zu9FD{MtfU428mtSm$r+7_LCOlFQ?U*3!2MOdo$xr`02w^CrxTL8N*)tLMg;PZ|WYe zg!J=y&tfT%51D-qqh2LeN{01%_&iYwxUI|Oz)IP7bFta_aGMkvr(`OwuSaz` zr=;kXEToN>=i}Rx(VeN-b|bn`3$q81Iy;t{&Uu?zPc7j{dv!^-t`fC2QjS8FG6i*d|~#r*7vGo$RxtMYty$bZQr_fw70W)w7+}%`sM2vcf1yr4iD8oIF`aj z$Y+v<9qNc(op9^2K}$aB@|)!z-B{GF$oh>bw>Iunfyf0-3Afs75IVG@HqEF(F`yQ8 zjSD)&0~bbnF9`Zu6=PjS?g`MU9JDEitcpRcu)`!9z%!~|I;au%sRZ3d`3N4E_3{yi zL79yBbE#M^8O(N;aFj9!oC^ZynSqvRq^AjJ z0sJ}+Q+yV>i04$5+1!F6QUSQrjPK4kcq1IXw=qBwS*9$3!sEsGEQA4Ys1{_IypS0A zMJY7}v&Dhwb2!O=A7q*AkjM7`#lQZme;2eUH|ybzs<#?Y?oCCu>LEOI?=+(GIafVq zu7pjK30o~`kGr%!qts_sc})thQ5vwwTv}nwp$wSCMmhVsxj{an6%U98+D5z2%SXF~ z1MR|rj*;G$k)8|4Dg}KQv7t9pSzqB^&G3%7@kB0j02Sw6C?h<%6NFv)1uZ zSW}F3t3`cU$pCEXq=R_6l#O&thP$PseSiBmCx0IURY28HK@0}84+wxY?)Q6vKtBZpHeJkZ3|LhTos|7hS1B;7gqCrUULjBl z2h7URO2o7?lipaI-dvfVovh3@s*5w#xmseXnxDu;CsOWO(lMF!&(@Pu6S>(&8KqOT z0=vyUx_H2mh=th|4Fw%q+|&m7uuV0l6Za`c+KkdZrv|tAu-_!NYXs~IbgD6jM(8uj zb&@`VY|yF}LLL*2Rj;xe)$G+#DMA`Sd#VN9qTX}Tffkc;#568YiTcn5{hjA8eE9br z=YBfad2X=#eB0T-?{4|9r|nEv%ST1eRK?z$>PF0F#jwvL3tALL`H)uJJ1*${ zkzU-#{+_6)2jPD8@%=yl_RBwh_3$^J-2CJ3|M7qQ*FXKIKm6*SzPS7AM=P%`)$eU& zZ>(i+9xOb#bM4KmXJ3By=F3mteDdVe z-oj*|o^pJCf8+7-%+;0B#l`%UmEz6K>YE!&zkPM|_5HQO*`&uL$M`EnENivMN;SMZ z5!t9?F-Y!ACD>ottH-t)@rAr+x#S12JCnJyH+OZtc5S0}ZGB>AIt8)YJCirJYA}9t zv-Zo^H@|p%_|5anFK%q+0|pFer&d%Bo2N4_JOHmvgqjKSWW+F^b?;55cW1Km1+Pah z9P4i%9vq;5z{EI1%GPRb#l;Gag%uo(JPdIRKG2vPsg&PXfIx~hn`v4g`U|or>zvh~pSMf4yz(87jJ+Xc6)u~F zP2Jd>acsjX*tQ9G9ikm}#w6KtO7~pSJ&$zXCEa&Qb{*nvyJ*8I+_Vd~9O5;bXwD>< zGl^Dh?9Hit?q_}M*NO0>9Bo7HPKw$RLP#uxJ?e*)1cOL)zc>v!&L_h|L0D1&s zv`&D@8lCGG*hh-y#m13qH{c{ZI+nsV4t7`*zw1hgPXar(+}oU>Hzk0We_!l|l+W>WIOK_90)00VyIRr;s5F6ggT0 zG%5&y!&;g9kolQ2XE4~n#7L$J!U%+E`Ua>Ci4PicE|}Q#Lk2YU2ujH*055#-0D2A) zYSb#dMj;*TacYIa!4BDICzd7b2sb7|E0y5-M0g!UIj~stPiNfAkIH@@Mb$l~THpjV7YrY$}vVhO?<~DW8~|p1g7G()#Mc)MRC%k}DT8GtG(Z zwYinW=FIfu()^6uWzA-ynPf2NvqwU1x5Jo-`Vvu3Bxp}WgYjs<>oQqQ3WapIyQ@tp z9q_o#h{xly>9ym6QT8RQwpR9ueFEAU4TzKo>LWBPx(q4x3xN&&cR-eA9#VM^WC~(L zqg#njAT0t)(Z96NBE`K!BbGmwI?>?(d6?oAK@&g|z$d2^A*Dos3F1WV-E$yM6VMt6 zhIRln@aQZ6jewC%gOC~o1jav~J#C6@8{chkS)lI@O{htsLXrTGZv$(mV zY52>f?NYIg*YL6j{7Lj36}%s^Ta6u{YAz}ivSvqPzrCbLoE+b=Mo1X z3jhrAir`}jpnqbap@o?cJwlNqB~xSp;Il|!p9eX5uauYPWq8*FWHA+Exrd_@*1MG* z!kEpdvSb0)kR?0BK?)|u8x2BaApn3r4H{r1b&#o9qd2`>O^q%m}{ya2o#~6i4Oq)*5q=zPDfh~14a=R zHEIpGMhd^E9o3y&Kmgqh8TiG62U-B$xt3!UO~pXXb-E?dbRbTb5|9NSVpIfx34)`ext<6{uCW+G5!kq+#A#Rm{U6uwl#dV^UCr5?&agd zn-_O3EfZI2gb!r`I0rpf;w>}%T<-@kLPtSe6M-s9r z{T4;YHeQH({T8KO(yJHuuuqk1g&u>+Gi+wgjHW4mm6U9tCpNbaK@me`wE9HyXR5D;Usm3mxKZh>HsKXsW zlL^4zM|2m^$V4e+fzx7?o(AqpET*TYM7W^Q4kkFrVx*mRbQ;V7cRWNiQW*T7xfhm+ z0C4Za4h2R6*yr#-DFr~0Kpsp|1cwLjg1o#(qm-%eDJS<$B|Lg-#r*^AAE|}i7S*s@FS4n}q(hzb zi6s^HNh#?FJC+*jYZLUhkMy+kwtT>TxYvDttdISbPw`NfpuerZ{X@|}n?^dQ67|W( z`na!6T@Ven+jSy?atsy(eJ#?Vb_{0aXs1%pqZITi#(IT=UHq{WfQnF$pr!z5zI~{s zNYPW&S$q*d!lX!I02yS>%JJcaOaEX09{ZPn_y7LM-~U)89`fMMH7TrGDSQ2JTxios zEgG3!E7Qw|wbH?4z_!$^E>720=IV>n6AM$-`N`r;HBl=h%b93C87wBfjY4o~ZfbFE zdUbwsWhz@sdz-bwOru(>GS{m*1v#8KoYx(u>(qK5SO7zriOTyr39rv5${N zotm&i?KZH!z-(Yvj z*n9Kx>GAH$?&iwQ`r_u|#9BSPIT=m4RSxZ#S~}F<(>6BTV>YN0@kk+`4+i`yxlkeO z9T#+tk9Ek0TEu|Z$o8}-=UZ1&1(_3B#X%1Zg- zV&QN;dvP&;eZ6{Zt$byrcxAP`T8}2Y`lR2yP>o&Ps4SGdJJX4y#T>kEH)0#LNG)P0 zdR1k=dNOL!}a!L0+vRxND zrP^kPO~Os9Xv-#IpF(#^w(RUX=o{eM#XAnku0yhF70sJPYc_T=wPP3Wx}@w|>2~g; z={9yywP6#lTSdzj;i6f%ViQf-WRn(IQY{E7Mhhlc-Y9b#xUJji>(p@-wv{50NFWf7 zj*ih6L#br|G#~*JD^?)zsiBaf8PPb@svyvwkfFIA00AwsfFe9@fdc_Zwzs!qbHcW< z9B8WtYY=12{mv$`JSZ3tCFzIv-7!k$5M1i zgi_8S>v!nF5$cQ0G%d*(R}er-#v#KRi2Fx-azPfL2mubX*Qsmk7jS}J;D zcBO2%Lps#q){7fS`&u=K+ipK->sX8!AuE_<|F^Z4{_^99!l5jzar$I(g1gB7hFL3z# z5g?~LC`hCnPDUN02D$7;@owz^uq}P=9-d>WYF$S{; z8=;;YOL1aqjRr>Gj>G_Xflcy-21D&oHKZ6VNckfz=<+WTk|HcneZisjq!gxLA4ZS@ z5a3$)Z*c#DNuvU-3JxNqA|BMv00>9|U~+-67p#y4!8I5I0sufj1}Xd^DhdxRiSY?V z(0pK!K>&!E`WM#V2x5JGeZ4(B-JR{Cv7w>9PJ>2aHJ$7a`77x6uFp*rBldE{8giLW zTAux3A459ioXh*l5lhOWt*4xmX=mDRbedEF+qg?FO1f0pp!wag6hpvcU#UfBi~eFN z;PW^+J159SJe!Tg{!IFCCb?SnPA81bm}WU=TFO~-Zh6Ton+mIn9w~c~$|GIOnvSOf zN7Lc8iP%)iRgGFEV%Dj&8;>xvIWL~iC*t;yeLNHOI&4;o_T6QumWx-84=x?;Ub%R9 z>2Uwn^{Wr=+_-kQvA5D#YUUFWAH~DNs8ie2BI~%ot`^|g(ru7}h1rX1E1Qg_Vgc;XXbhlpxfPPV zdP$>^dK@$X_Y3V9c_z_3NS+7?1DuT$CUF3I{wH4m36MdAft1$*jTAEQ3q=q}Q3Qex z9Y~#Q5&@7rI7o>ANdEMZ#Cw1`20s9r?3@N~2c?|VlS2&(h6n=Dq{54VAYIS^Zv+5M zS)@>;6t(7Qx*wrVW|{Omd8AxW-&qE@^6yUQn2&c}2><@C|D9DeT8Wq^OsWU;d&&)n-WRMPwb)N~CrCtm_qr^HsChl)_ z8kK5MpM0cCA?TH|4{7(|k_>kbcVFl_|Ffa4bE3gc(Ll#oUz>2SW3;z*nEe614*6)$ zXm874*ZKa=bNwCXMtWN{l0mChCTE|iYEz7MBSNEmNFyE?7xjmuV39=I9Qw6 zTAJKhXhZ0I z*S25W+`4x(ckiHi_jvx^#id6VXP(_$|MbPZx38YPe)06vk6(Q9{NZP>a6NeY;{Kbb zcV9og_2Tipjg>{W-7FdHiv=88i}j^isuVWOW*x<_Ib>B9gQn$DV5#KatVg$}61&r> zy_wW*Gl}J4b24@?pTE3X1&!-?v2eUpI$9_m&gYNjbC;G1mzN6MkN7HgcAJ-1O4C_y z!mZ5)jKzR9>QKd9+Gf^!ZKHa$klt#9*C*ILGn=;0W}H(=EBy#|vynWQFTndu+TMtp zvu?RlHQ?5cv0uL{#9eLY=_OUndRUT?Vy#7rl^9DbwlY{&v3sB;mX>FlA|Z?{m?**; z3_y%P!c+t!*rs3=$EE?RHB-Q?lch?t5jM4$+F0U29g+rd70U z7wtOPITSATE|p8V!+mFJ$01s?370LxHSW7qTXxZgUA$}+uiGTs5N4-W#24?nWczM8 z`+^ns5vv8`=!|}J%`RTGiKh&c`%Dg`)WY{&tK1Syz^AHv{65p}0pP^ct;_JjZiEqtLpIU6S@R%8=(Cq*!6 zBqJpP0yMm7<^?b#bG2lDTwEj)o>IVfrRCz4^@;V#nAc%6Y2{{}(qq$AQqDJz zFMat5W|&7W9^L%()%~}xpMUo9?wk7uZyp@Jd2w%Sl>GvCXs}l-8r7;5V!^On%8sQ} z3X#oX(2UD<8oAA^3Ha>EM6{UCWHanoDw7N&jYoZcuRX+0ru^Z6!)8*%!p>CO7Y(@* z(ZJHeGz4K zP&yf5|C$jGxt-RDN*<+&m_HE@^zol2)wc6G9^mJra?T;DRF z`%VT1mj!{8`U`vz9Gd~XMnDfDOWjJn`5s^&9Y-S{;QJjZXv!iC+*7plLI%%8G-Byk z3IG#c_yC~(eP1VsN>rU6l%9ZBBqQKZmVhjDIYD+?VeHZHL)|fe!K6qC6gfaya*Zr3 z05FbWk9!1W!AGTNU}Jj63=9I51s{^U1#VJdO!7`l5TwWj#lj=w00oScXzCyk0AxrP zfK7Nu3OmR`41gk)f=PS=WdYD+fv*wg{{(Pxx+AERXetE_MSzST0BTGSC`HTgRU^Ox z*#tn)@&r@hqm-AVcpyMvp}c$6MHa#^3qX=<%kKaVB+-fQ9ZR7pNDBg_O9l}JiqL&X zDJrxrIu0qh0|zOE0T7c5=cJE7AX@TH@zdcBacDfi-RbJ^Mkpl?96<|{9)(Jgkaq$v z1_3GphsD9&5ul-U?%cW7)>e#UI7KkzmkaZ|!vaVW_$*8TXao#e1V9h@9Sz zl!5IxU=x-R3?_C8Gs_8#s^3pGGreBO-6`GwSWw?s3j>LijBljgs^GP49f)YVI1=S zv>?#Y(JqllSc{#4+hHrG0uj3^YFD}~-~CoVuQvqj`m9$IcdFQL=pyE1z#McL9R_9G zrHNRjA)~;p7qeq2P6xn4TPam6oR&Kei8=2Fm5@M}uG@v?us7|=~bEjgbiV z%e=#Gf9L4L-9#aEX=ibJZQ=M}=knp!?dumG+`E0}*7fU`_OBdmR*D&lhlgIHVjoDx zL*`hQR@`S%joEdQxX+sOnZpis$gWNY?HTw{3k(wWTNsy75%pRlZezq{@LSbp<*-#X z21SEx5PLJ1UV=wrEBnUHm_Y`!gNo5E=}@~`*h`=0(aVOcYLVBfO@utv0`@c6QZ7-+ zC-H=w3VSlKKsFvs#R6KjlDZg+2%gE2vZ2Whes&9SHxYm=iZId9T7xVJ5b+*3Jyt{n zK)L{2;8CAHAwmiVG$e`QgP;Nd;%883R3R~FM3=aOsH;9}7~lW`RT z`iY2sspOr@dnRJmTEba~yD>OD>=boOC+-cHBwhpiun`+_Bb{o=pm?xdGT1I3>yeN4 za4$@;L#UCS3;pdM3Hmz}!a><+ub{tOIM^}L+d9_Y1~G-8cdWOizvFCw$GN@^_MtSD zpjRg!<^Jwozezc2RgGGdBcPSSzW&bheDG8wswqH?LpWi*YXJgONRcdn0|8_K5+Gf) zJW?v9EPyOjsD+WD=;uHCNl(Z5zRn9W!Ju(mq-K9rV8m~dmLk@|}ASmRXu9FHYrVE77T}dopR8tEFZp zOSMwEm<|`x(U8{`@jGKdPsr2WTQPAF>7l{)vb$9ET!S2@KzV^P33!N7}YCr!$Putmnt`?-7 z7e4Gb_W{!0HppB^Mgqr&2ZwvRhpSV&i`Ctgsr{|xi-&tRuV3EZ-Pzk(-Q8H2pJ_~# z^Fgm85^%>tZr!-VpjGL$YNK9bHtO)y77cl9M%9o0`~ULK|G)q3zx?V`79%rtMjGEaxJ-32}NuQ`ACOBI#3R3mx{iXN@%I% zUnvJyCqm7nwGlHm6Xr(DJfC;1O@#Jm)7Lla4=%18FBZ3_5-Vjto{bxEQ^`L*pLG-h zdaa}%T@v;=`g=Nm%CluESi5N;#2b3gI3i8gJ*RjY8`B3`wMx1HSY`<%iJ_ESE|j!U}h zlCmQzr*zXU-gQX!>3EC#hWe~=tgaoJGYRI+!i-tvH>zDam0hd!8Z_MJsJIGpd%Jg) z{qDj8a9bO;pdFo^on2jBAANKNt%}w|yHPVD%P&Rf7tr9NQ?NvVL!E^=0x4*0F=>Os zJp!G)ri5OA7Jxk#XlP+_L5fa*|ze8d1gf&sw%yTAR9XFvR@TsT}v2KDmMyq|rt4fon^GkRyU zd}T4SQ4JtlkC_(=o}ET4A27&9x(B*0=w!n&yK*{Z-_PRACrmc!}L#o6$!<>=?v z>MK)eztf1>%B+)RqqdjV=e~G#@9nEcpS-;P_2;j@{OtAHC)b|dK79J%+N&owMn?vE zx;sXO2V_#ATCHSX5LZf63Xx`9YB6cGYK2j+wp;Wbmn9tXX4COvK9xy^G4aL1o}l0E zau|IcTR7nKIt@0H+-=u{e3o1)xG+;Y*xOoLnVX-ToN3k@^>Qv5tXFb{Y%&({7qYSW zMt-4Lnkc2x$#5~BT%4&jYQ;)1olAv+K5IG=2>4w=OuG?ZH0*_ZE*%CD4*3eXbiG>0 zq@qrQrBmB&MuSeJQb^ib&!f``=z8=84MNsQ+^C~II^AVNASFN^S^&fVQYY{n5}XQkq36NMzv= z!q9>)--!@_W%LdR0?!8ld8Dud4#WUtDHsBaj2kdi7Z6Z{@P!K(u*AbJA_1sLA%GMz zd>91IEdv|@G`*wg01PlbRJcPCm^AYPRCk!7U`QS=`1+z0fZz8#LKl)$YvMqF!h0`B zvJ8L*ha^Em0F@%3f^dEQ{CPMfcf=$+5at0paLv~gOF0EVOr&7K4)z1s7X0v7inIXO zp-?GWq^J%&qT=M5#sK&*4taz@ff1-8h#6jb-vRc)N5?^4Boc9p_Q}=-!2Sd_dB8Xv z!N}>q#0MH2!~;731SmEz`6`1T8t%AbDP|t`$k5ObsX!j3=eXCt-~}L$D5Azh-BDSj zFiWipK#NL=i7c6dP4Fot0RXzV(db^ImIuHjF<2l#5?L^*7LdfcKuZI)08(mj5`zjx z6k;QTs0FkD*g+9wK*QK`gp>Pzxnnl( z+n&yBO=l)zmPX1R_vj;DYs6#nXa=??JSm4XW*(aes2XuY+6h{abBe2eMZu$tn8jZ0 zh)p$QR1BIFLw>izYO$R50++djZ*#7&w$MD<+q!bFa{bcwts7VF-nxGK+NJB4_Nt{E z7uY-Kv|5!^CG5k4x1jet9^*BVLA`v$WmMXAQl~-Yx2i)iP z&PJ_VFJ~qv%C%Cal27E~fuPe6_FD3ZU^Wrfsa5D%tRVDEj=sh)pdLrpqX;R_;l*g? z`Tqxyyr*!K)BWIBk#s4sQfBqNNmVj;46e0{F-x2GA&lB*XyH z0)Z5uED=OQ9x3S}{r7+US7x<1;#9|M^1N5IT@S35e5+;uT+UsMn9?pq(k7nGxfV+P zM#?#naHag#Ft*b+RluTjVh}2a9qKWIY)~=UEg$I|?)Y%5_q?#bRW#5h8R``Fw+*y^ zG}w7|w6_(PaIjM$9FULov3I5hJMbhv(%UK-?vju73j5oKds~OPFZ8yb1>YbaW@l0& z_BZA*woQs*lY9vG3#N;nwzGUAAbx;ofU772RTiM^=~5#2EI>v8m?bS5QIJ7;GWfVX z8wAj3g#U>Hv_Sv;kN>u#^=#+)p9uy!@*&f7*4apyr!$VFMrLiXxwbevKRsD57wVP5 zY%M+4D9%qemKWz%7Uz~1WXQ?tdO2In z#*4XRrI;%ha@kZY5wLnpGNW>2Ts)u_4_Z_LlX6T8TG)$u0Ii2qFB{fM2GMBJ;Z8KN zl>1pFE&N z`}NnKe)IXOuio5y`|S4f2e%&GxpMtz3DfAk8~cy%9NfQk`Q@WqpTBwZ>6@p|9^Sfr zY37Va+SlsW3vzBbuA*0!_b6sFj@h(rGOC|V+xKTuhjZEEg*+}O-q@&KUe4dx zsNCP1M7mKA&t;txAuX=eiO_t(yEPdp1oeuM&Y{k;wYUwFb#G_Oh4W|6e01^_H&#$u z`?0uUF~*7uCf(<_?ZL$AOFIk@w7`Slfg)%Dus}s*2L$#a9UUF~0tVoJ7K6@e&^2t5 zZI|f4BR%rU4%r)0k|V$LVnBW|C~)c0Y*4-4{rk8Ix~->{44jDi`1aLFv%afs+cRGT)@hDEr=-iKn}P~WkOcDaj= zv9_J;cYvqYS6&Bbj)xJx@j5{UEWV zjqo)BID!G;k!#oiD0qOXNu!GbL-xcR2l4_*q|_`hg^fD~5@_%dJmNuA6fFQ6OwRnt z&Xs7g3}HBeN3;f&Qu_cb7#REy|NeuY|8#Jmccj15t(VN_y@zw@tw!w5b`969t?DN? zmtI|-KAulC5~hSrjNM^1sAVrFPR1r;R;)uZ;m}xL8}8ZVynVOoxjN&$wG@4{Tl(bs z{4XDEeQ|%QoDLdwD!oeNF-k5i#$Mb#`sC%~H!q*Oc=7#(o6G`8>_Rk&2qC*o|>#wO6iGGYPMOMo32kc%5zht z-Oa_hW;LIQrV_!4iF`2^nVzba3dw-i>~grSQRS?1;W$34q+3-e3iQI-hQi`tMtE|Ag<4j@Zl0dd2F3;(1U`65aY2K@3~$Rkys+K@aF zpJV_cs6qHra40Z%0RcYI1aMGO(gHwGn^W~6jOq7>uY{06iU)u@WC0K-c29wqM2e6| z9(>f4vVXmpz`?iRO=R*;#`r(HkBE{Il0*xRs(!c=?CJA7%hAvdd2p7xA zcpxAPYY;#+ky0(dgiRPkcf%Tr&>Cn81OpmCB%pbDfUH3ab30-{dKxf-B65wuFzR?F zVn&?AM;0mSNT5zR-CVo{fL9^F2n+&XQasd>e2pkQt&S`NU>|@Z)C(!933n)>YVt9V z9ZJa^QW!xNT(S%f8XPnT)Db{a@TWFN=tZRW0wA+gN63RiBNizD*Ca#25JO4?*A*vs z9B+++N5}Q`^(mD~ZqcS;%h2834a-z17zcqA!O-xgOQjk|B%E^=23&wZ3MMSW7sXGF zfPR$A<+vkYVR(3$YfAssMZ9?qhY~B zDc?jS2A~vK3Jj(&u(^&s0R@I4Qse_e`~YZJ;8SoQBM=DQHP;EmVlmnlyC#fhu~496 zpY%dG{X?d~X;dX$s!9~k%l%fvc+_L6M6Gjqk54xoG7Oi4+G5m+Egyd@<#QNkQ^rbA z<+8kgEERTJCR2E*4(`t6cV|+UHzqHxPr;gew8v`F`W%LkRfgw_*^ILm(iT1PX2Nh~ zF?oGCm2}8LW??<5U&z=3`eCbTSR?AO$@^+it>0}kb02Crbs0iIccY%)SY6!RSU%dC zy|}k}>1hAT@xjHNmWc#Nk{y^M69QH=G-N4gA(QKvy} zR*uPs+Z7`nM)|PYs0cXpE(80bO~9rJI`n?4I_%H}Eeh_FQX;!nWF8mTG$M~d>M=-Q z+@c&a%7#pe5$m|Xq8j7gq!@{K?Tu=&F;SW*9O+XiXq6u_d1p<6> zfs|;na2lk}^I5F#j!qy?Gys~6^VW!f0GJ>!m*Q5X3gV`tCOX|vJO`y{L(njS$tDsC z`0cugO;Pk~CPKPuNQVdQiHI@p(@tkyl`#7Q`qLR#DP&4G*t?B>lQibmCw*q8R%}&` zSydx?X}@H!t-tl>V_hFf2HORF7Y5ot7;OJY*w>23?V-+d>K^K8?P)tB7-;ue6nfc^Q8villTrx`+{e+>BKFDi z&I=!+;?yRHpX!cAU@iC#RLX;IPhJdJRG*lIY6sM=^D+|+$v-O$Da=n}@=F+inz-3nX z?7C>k!~Uq0PG-}wFIy?cy40dRoov{y72`4~$25|`;m(g_Bb{n?fHj~L_DhF4(Tt-# z7tleXf%g86kJ#Ts>}?hFwaJFNB}1Lud1CuW&xPUc^YW2y#DDeD@ulN~8&@w~K0ds2 z^Oibwl9myY)KHkU5#F6GmSnMN(2Ntkph z$yi^1SBpw2_|dPv{^XC}e)=!Je*631ev8MyPhUU(_M0z${fjSOKYR3xFW-Lp>e17C z*Y8|Ax^Z#$`q9?i>ldFsxc&In@s-WmqkA`SJ$-ol>D|ls52o&3KfZf;?biOxt)u0K zcW*v^aQD`=OV=*#R!b?|0~q1}t+?2F{PZV(Z?~EPE@Q-@y10=4_}1Rtz3H2q6AzCT zKE88!?_mD+&h)*5g~yjypI%(ppN_LX;kRBrn#)Wl%uWsaYFf%?+L_HYl8*UepcZAX zX)KrgtCjF(BYt_Mi0fcBy+51Yn@R6Zr!Fp)FR#^hXR~1LO(&1$vlo~0`!lKaiC`_F zpUc>$Gfs@}(VmvHS2vw?H#4ref_FaeS)GWi)noaPwXdt~qYpp8{)QG~%)B5le_D>6Y!fVV`^P%E5jfxMi2F z+t?re+jOu)EB3QNhiKO&TC-%-_YMaVU&2-zhCi-_g}cQS{=4%Xdzr6+S=G3 zy2b>7E=ENB{mwlITa+0ZmjMfHBc2vZ>0D<6A2e%rriwoH&2U8zkoqu^{?&-zmy`70?muBwoOceR1uNpI*JWQApTCwO zHB}D;yzE%YW{8A*Gt-SyA)QKwvzbV>mQq0uKxyfpt`;B)ESG`(XUzx8@SES}`7RC1aj& zz!nL)vgz1FC6D=bqMS{{g7Ih&GjB1U4EUU(fLo_kB4(%Es8-1hx^V=L9zpw4XCXyT zp^K?&&{H&o(4izoeFvJ)qLc{qAayqgXn_NO02G~NP?Ucgg?C|Tqy?l)>QA?nbT>$M zH!L6>OSg2VGy>Ay4boi#0s_+A^*-;6-|&Mo&M?2{+~-_Zk5@GwgD?1xiZuMQE*eaP z;gs+6Av*9IrVLKW2%HyPW)vtH?mUPJ8HC3?2$CI$#)BgqdcMN60q1*BM4z)!nBeQg zoB$m-^smbj4cf=pj1XhgVyr?&6=o55`dt(pkVwAlMHz~Kv#1F?TVFG?cVKi*U=Upp zQZ|)KgzA|wJ{7H+xiYWtcpo1*2)pGD+8?Am(f9C%VU9%hz$OCv6D-W&%}WVGApqHR zc~o-*#_dU>67|`0IR`_A7(hip?rl9g=i7z6XpFxolAjC#ZRa7TB-&vOe5ZmH1c?@z zgC``XPD+R0(_ka2p{6h*tIQlQi8P9*VuopfMY${@MFis^fmCdi$`?Ht+!$hgcv0UY zl!~sXu{5H1Byejr_jE70jKgic6ZiQv6tO_#YFBDB$y7L=rJ~3tYLp*}%;W3Mkgs(!FyV4zen7M%tK zEIE@v5;S8ChM>s)4x5+u#f}UV=MF_^;uO3&{2;eQq=SV=mp&qfc!##=SeZr0Bf}P@ zVgc;LQ&k0)Lj>^>3UF1STpU4L#9-eM_%b+mi+R(LK7`Qlco0<&B`gf>^g1Lv4}^HH&`nts1Y-kTS-W%vffyrR#op8eH5mR;*@L1qNH_2V z6ZyehD}nrs2m}# zzK-Yb2vf_=K|~QkmJtHUzRs}Q^%CTN0C9%XT*dFXy1F_Ix=AV@ITZG|Dok|Xpeh5| zgC_X-E|(J_|C4@h>rIy=HMp;)Sp@P<7iu9 z;3wepYjfBU_phM(>+yE(z|g&vq&Ub?Ys|1$HgrZ%h~A zrTD3uC~oCgoUKn-kOf#pNViRHL$Rj<8AbCDG2_h)`Zinv8^#)iMc!q?H9-6DLB|O< zjFO&!s#dG6IuVoCm#%+IxebfBi&B(4sx0O> z7nX%xP4mBXv(~h;^~>p+meQJdmv|Sov@DO%Ql=*#`+nKmbg8C0B<~+)gtnGHtn2|J z#5UFS747x($x5aD#r?4gSKNtF+rlBHlAW!ZO^bz!4*V}v+hfI4(C$Hca;}juHs+dY zXyoJg5B5Qs@ERa+J?j8E_RObN16X9k-oS1p-Few)g4k>`(aNX@2lIy{d`q%fXW|yi zs7#unu)fT&JCBx={--XNj_$@T{!gm8IX_Mue(DRaw)^ki&u+|~4)rZQKK5=*HvX5E z@Ux1EiFMrmCkyk`)G_t-VC%!dYH?>ux$dVA@1FmSHBSXRRZP7-hX>sEJ9Ya#{+aD> z*V^!ZekK5fypIn%OVzm@-rjG$Cw9$0N!Hu_eRnQjbBNRaPb)s&I`QGfFcNHgI6u8X z@^Jj!?)5M<^EgqsfW#X|w%K`kKDp4&Tg@`Av{q>;$cuq-ZGzo*KSUGCjU$3j9KD#D zx`?(v6y{y8>Lh%)oHy0o(R90zB%deL_ISB>+uz^%^fcFUdctF9WR(8jJ)EWmt#L=| zm(DufRY%%5{Hx}s!|UR!Sd`6M^MA8yTdTUemvR@gE*I969&Bksx+6w96{M{AD^u_U zXlZHDNI*sG(3mF_X-_`7H979ZkkwX;1^)$?U2mLLR=}eE!>|;yU`}7oo(XI4_&!UO z#t&$zJm(KQ^lSGfN*8;Hmc|t3pCCui%#!kNzo~rSa6q`k6fis3S(oECy8oDlKzDSv z%WW33M>za8gEYAfa+VI;@79*X#9L1APTK~uFfKZDTDFo;+dd*0j(*ny?#Uz%MNeez za$oNYND-LSxZW} z;ZB@A)aalccdge+xY=hctzzsP9Q=ZU96YpGsG-*`STHitic7_JL_$G+@0)Vnn7&?C zK^^trYgntJ2R#RhI|)L*2fY^LU`>qC!{yaA*uaB7B>o)+VV-ZoYfyw$*(xhf9q2j} zz>_Ibim)5|hp?KD0?nHT1T2)+KYpqR34OvaQs&z``XDxIThw#P$lE{~TM0`_;O58X zXcN1yo*7ZAZ_>W9GPCIZDy|@s0rR5TVhm+Yg05Ydo>~k0*+lw@*cSg=$w2Sqb9~-q!5$NPdD2x z?-Se@GLH*0_`^lKVEakW!l{oS=|Y8y zjPY+`i=d-Vyo2`4-Kx1@dLtSRps8HWa@o{{d=zYaXwrrde?Y z{sbwCSjeHU8_Pj1;xPqqbA(`;+sJ_axw#3ge(+*DPV`8E( zUY*9m)vZC71qEUUs`Q4?K;p&1)KKI4K;b};Jb(B6a0LuyMDX>%00Kk<;x%o5cJ6p5 zLX17#LHYw>0hs~J6&NHv2WCTNb_Okj^N8?a)Uco;JdxruLtnYe;VKiBmya!WYl|ar}cpX8zBVd_x>~jAO^9R0ysYSO4JTC5Myv~aQc77ftWal z`Ce!;qDeZidyoeGt|&VN!n+{rqG>U2H7m#X{6>FIrooC}%U>kMz<{R}FqPPb@F4v| z1dA%nr=hd3a;<-_g_~6K4 zZ00JY{5@i+&u}AD7G0lc%|}Rw7)j-^f$u*=wkEX*uu{2@7xM`97^Y`S2^k%$dD7Jo zMsj)kC@bc2uS}084F7zi7VmX)a}$%j1yO~XP*gA*-MMbMLSu)%n5-Keo zhAMoW_B{p)(kd{h)HShUD2iJyQo6y))o5ig?%7}^#_Z^5su3W?^tLBC8<1x_&iwW8 zpK7!gufB46DaT}pmX!+X&|v>=i%)%qVU?tnYwoUGOU8vliGFN@72}az(Ryr*2km|p z-Em4pc}CrY6Q2Fg^b`oIiJQ+7YR)B;%XqfbyL%4+KsKKRL`V$}_Q9W&r@lix=7CoGf$~R5MdUse<-q2~Ys9g(710Joz`Hdy<0ti|!}CI(P{Zwu<_d9( ze*b7t&%G&QG?~+1oao~Ga;ZprViUJ$mOPN1X}=73ar!Y7M}9WN#+m#>^_jx-@a3Dn zbsZIn_RLqDUgMbc^KUuQzYEQyBt7I`T6;8EddU0QT+>`E5lkB7e@k#T^tc-Cv!bWb z7dRO>dF8S-P0zQ!Z!UhKxlkr5{3ESS{7ZD=OW>zR{Y>AY_UauH#)wQc0~I^-86pi2 z+yA<_%REF1ML~GjJ(O@9AoDU0Pgp;oAfuKvh5J*8n^1u45bcGoT$nyR-SPQ#t^2^% zEMS@CbZ%-9pir#36?S#iwREu6cd&JK0k6n%he{^Kba!mnSO~dG*L<1xz*sLLInem#E{~`SbQx?- zs--x9T)&N&jNsPpWAFvc)xWKa-M zTHW0_2|Za@If=dL%wZ1kYU%E*GFi9nNVflW+9i{F(f!A9uFiQ}`!#CpIhXj(nr@ z_3$7#&PdSz=6+}nsX0%u#pCTZwqn>v3v&t6eUa|y%WYlWlF(0$=?eOPAjdDJ6$B>+ zBGdQ~J7@W^(7@M?z}%*msWyFi1N|INsKd@gXK57|wx}2QqibXqJlizO9_NR76u@-tK5ewgal_(ae-vMKk zQRspgEL0&x42xR!7LQ1XN}bL2ZU+m{;0|lm$qa-ep57+$njNfDmjD$^$WO&~=M}1D z=ZL%CiGHVmAqHqKX62|+jv1z0%H3s)N%<6q3m+6?Jz+cs8g=cYIJ8;lIUWQmL;s{W zwJyiK@)(T#!t|@#fsqjSlt=kR%lQv2|+x1qWk z6GFB+GXf$a7ssgYIX^!i?au04oAdSffR0*RS6W(HQGvEbL1<%VSLlEXf_sT}l-xIs z8+6E9#)xsZ2g!j8HsQU(@o6d2`#}FrPyGov(RN8qdd%PlYCs~19n%hQ%=ZOME07B^ z6;yWQe$v|`5J_Mh?7%l_Upz60l9h`|7Kb6mHJadwlF_H?%aqH0qJFcJA6?Qa?e?#EJ;=Ff<|XLvXn)+E zyUH!aua^foVK_uYr zTqI77WzlB%L=*R}o-cCF5f$kLqkV9iS)UGkwQZ^#t*+#yPgi-KLh#`p3QAwtXaK+*Z zkNw>kg&DVFVl1aklOg0!ysOL+PVIxI^bM4S!=hFHBSNYGWOIqbb4uXEPw#+IU&Ewx zz#ACyY|06yomaI3b=@1l^_<`?cO%UK8b+XK$rTD;Yps8mH%4;x&n8wqULN@pY%1GmJM7cDO z<0XE%@|EKf;e)h6`3q}n;lp3i8OQs9FVXc{rdAj!9G(|Jc5PBW9tgYOv4z`NJzv_B z)+i(y#GGEt*iS^zH=6Jv%Gy9`Es^^e@Z;5>2*(uqsmPURN4usbBuc~anS;3q_B^Up z`>_uZ;3Sb@?q$!QKNaZUL=(p@%(gjjovdMmC#(F4h(jpePi#Rx=iWvZcsosucv0*R zlxM~`qWBSe%z23KB!Sl*N*f4Sd&ds-96ru<(mS;SUirO#Gs2?IFa^s~UI2{D7i$jEfF*c1T zths_@zfi2tMd_1&$1nReS{Ygc{y~H-(Ju^<2}5Rt8^Kr!p&5;5U}GReC8SghiTBll zyvhQrX^T;!@yiYHH0WLfay|eI*p=RnSlum5+3!TJJp`J2dqowp41hp+jg$PfWA}GB zHT=3uFKn&IJitVb!+Mrpi9b+>v#78ODSRR_WX{Gy#}qCDhO(9wBfUF=Vda-uqi&{( z#=R|EZ%T8v^z#e+QRBH7dyO{A6n=k_4JN7lLei<+xFIr8G`2j0sOPz`T7{chnFR;WbT9_|vR*4ghCmlw}c zRVAy!E>jNeG3i;8aCKJBk+3gjLVaCV0K_H9bfEmbz>QkC(hnRrz2RXvp07PWc>Y5? zA;K0&HQf|QYl}q%UX|=JIs6GapG@O#k(g)G#X~za84mLL)i2B~ei&9MYsiJ_Gm^>D zQ4QJ`B+KKgZP_p5zcaN<&ZXba;kl(2zUDyW6k4967AhtL5f)Q`9IGtN0Q5_+NK|bv z8pwXY8A!Xw)edYvY+yiIdWR}609sCd^o$HVjshG?5@9hGJW?B;;2@^38owL`h6syD zJ{~8U6PRJE0UM^#gQVylK>^zfRn{hn5H~I*CHcn`%!^$5mwQ5==% z>#zfI{sgpHjFf}UaMSN5`xr)>52YB@O|nxqcB{Gjb^F`99t&{Py;KQRksHT+ny1EC z5b2>;XdSvTyfN=vm03jti;sW*)^d%~{4@Q0*K8wXiLfqiZ2@jjrnKy=Px~&T_ZHJ! z+@Wr3a_003An%|)>b6h5xfSjA0mEpJkL%%Y zNo3#afc|cxJdkJ5x>S^Z#1H#m|MP>Mt<(=vqS!-Zxc64? zUVfrc^z+`>#G@-ye>5o?x#YrzDD4cq+6X_-3Wn)m$fIa}0E$Z^<{i})l9Z(CBQ*T6 z-T*HLTGGU^`CHd$btB!tDA&kHN8i9uTTf?seM4I(b4}l9WmQ|Ut+N&NRl(JzPBSAf zqs_CSyS|ZqvvOQ1g}^c^+I6C8p*Ur5B}3}#kHnnZ5lz%`TlS1tzCIQMnurWKoOdnM z{vKR^qY>5}D~9Zryef&>4WmXyOR>_q)!IcZ=KhP_!O1c-;r%8MV;e4e((o^4N3C8n zAqLU1(&;*G8LwqV+`@7ujrO@3uZFc!z-@nEx8w&cro-cNe>3LL>3Uzs0O+*j>AECHo z<&i7Y;(E3>@p4jS%dW?;7vz67a*l=1xmrDqh){u1f}*=dFS+SlLAhoQYO$)x`fz-f z6m$E;^ov-4^Xb1EV!hbT3@%IGY8|f@jkZ=HFV_lxvwC;CcKWI4HuQ1k^6@Gj zf5B&XnApkr?CWw6{X{%$_rBdwcz)CMc3k@N&MRO|CGsJN`SjSV33IoxMval2zwQe~ z1B#EpaD?dH9S@cVttkiLGp*uC5ep&B)lh9|i+{tFm?b3HGft?T+j$x0lJ%eUn+w$A1o{hm|s&Ngq?53$i%sGo_~|ooG#`cL9%~y^KXBO!wn4{Q`UG_k*OUzdjBe>8W&DqffB%itKLhFbZWmE`~@aCmqQFRqiC4) zR3GhRBKh960nnca_uB|C$?8e30CJ2t-pnrufp$f{Og~PR!N^?8pv>zN`I~{VwET2= zbD5MabgnA4kB%2V*C1OsH||U+^z2L{msHtNvomdPCygLc1{h%?sVA(D_Ly+``h9#c zZhrh*12toS25@>+H0@C(?W-Zioy`+3;r8gi46`0A&;2N2mZPJ zOsCAzvaZ6w)_U{u*XZru0oOb~I@w_wNcPp7^GDkG$}#U?;Y=Z;!sH-pwQx~5Yc7Gm zl<;0~<9*0M5D^gqkm!5!J4z3_0z4g@LaM!|c@*R?_^Dv55x75B;QY*%ckG;4c}T1% zB55)3*1lZWzkA7aiAY++)m^jCl)8{>V6z@GwPbOjib%iBs)BZD@uDK9{Lh*bIA@La}0h7=X! zMnKC3@tjiJAEicC7ig1$!NKNv$|%+lIaNiXRAd|-z%4Xii_r%c%SDC<|Be$i=C`WA zoVDnGl*J>mh=GCdPlOdXkrJglsVc#$G&tgf#ecCW?4}F8VBQgsgH|)1)jo^GaBsI; zLU8-vU-YBlVGEW}W6kf>NDTmttTPsLgL4Msc>)*<9XuO2QUXO;Ltk28FWn1P|w`6nl(e z=mB@&26HoGn5-RtoeT>7M{sT=(?A3!7Vb}*5!FlZhVCxwPYb3b!`j$wMB!s9CF)H9ys)IcJ4gug=l?R^Q7VaL- z=(=_h)-WQrO}=>6TvZNNs-gKb6gZ|?a^;gNwrY5F3)`wcDqJc|lhwuz3k@Z2CY}?D zX%@@V0YTiaFaeri2eZ!o_tXZAx9{Il!H1Q33kc< zg@emrJIsCVK_}hgvoc32N@Z@zK@OO=2R3YJBUrd~uwS5jz|X^o7Y z$e#C5+4uglDK==r`IJ-Q&CuE2T35^8-6YuD#?{;aWSV?qhFQ8geokON8_%U&}b zFtrpXcRr-{w-UsO2p5WsAlDN78|6J=m?ngCIZX9kh8_#!kxe}m&T!lYoJUMjI&tj2 z>PuF-xr6+ue-7NcH*|B_8@gAsnaJ&#dv`YWegzBg{v;u<99P!=or{3W?o`EW#Q(e9 z=jw6mb@FibdFFNUbn$UW>|}QG_=Pwec%`1x7ueaAVq;CJ( zE6i$)*XNsw&;H)KH#aLD{aM*10Eu4bomYtaI8&{8Enp6OHGG5oRbg@b)J zRjWxAS5A)1pM`SybLA^FecL$?Qe2FyKXi6~et0MhHtKA>x*nSB3~tq1OKNUDQpU_; zt!8?CT-m6QSAUA_847XYxA-EDD23z$0lt=VP6%x^5&%Sp;9ui_;1Ur5l@xaR-VbCY z-JC8i8L@~JqWe6y1Sh7qe$XuAex4?KY=t9)E849n$rhXUr~Ct1i!;nw#%nCU-JMG{ zjMwwR{Vovym+ztA^wmT2eXq$BRnQdn9U(0!{Z;MykPfbk5+^)}>7-=H;w)--3|t}K=RJuYVa{G{>-6_Lu5u?m>SJoMN9BQD>y zlgzaC5sfF+v9-v@(A}|dH`#IdW0q!bu6*C*7T~4JPjuZKMkNPGw(~8&s1y7*`19Zuq0Y zX&VFh7iUDNpHDyeiRSvf-(c8qmfuF?;zEg(#|B+iBh+zZoaubU@Y}! zTIu35muKwP=UhA!Jt@grcw{3O+=JMV=TkwRB*6Y)a{gk*@ccG_7KX$OpPo|V67NU2 z52ikYf=n;}=(A5(4o~?3t`I;tlH}JWejo~Wchp)>jv^IalXP@u+gKre>ahE*q=Ve( z$J^n|Dlev{kwJ!!w?=?J^m0z`%4oyD_iOFrb=jk{({{}V-TzjcD)%-F^Su1Iy!hVh zPi9n4hLSna<~j~-lBIQbHs32xHNU1Q$K94tHAc8omC3CPqEvV?ni$aEYyGIrSyAKM z$%$A~2app;A`dd`rc)2^pzVVB#7)22ZnjyDX)XG`11)IT<`QhO>PK^nxQ2hJLnnzL ziuNjiROV?Vd@B6WLM_3tluS$RJxAb5*__>brS_GRx=*B*&HaDBX84iW^@L~4pElSS z@F-Fp$_{mG!I=Lx@>T8N2Xno@TBrz>m~U@^Ww@J~G}U&s)o^`IQIzInaDRVQzGB&_ ztB}^xT#T9_Q;eltT5w^VA1@Dl1Ivu)Fz;6E`m!WNguH;ekxGaf)%dZmy_k6F5lwpJ z>HpN}qFW{@F%Y~wTYZ-7HUk+W^}KG~jeoc%ZHsirnXmunh|XNV9v?4>{fM0iLU!X) z+ji~`6f(dHM?!(8dr&8V<2#rCDND+r5L>Z8SOJNZiZ11b1gou{ieRheAo8&Vsliz< zgO~Tdt+9!Mq>|-6#u&d0{ZiZ^XTTQp#K5DB(N)iu*&^~K43~z;I(*H{zkfJX(WnVt zMC7}o1LcKa69dtotm2^9zAk*~D4%k?U6I@8AQbk0iGD?Y@xT-x1t>hhphofVS$ILa z91mkk7Z_WEXPkrx0u+jNF#3TD#9I1ZR2(RFCW?B_JI>dDXg=97*#qN*I+gFM38-=j zI1`QIqipaLQu$1oaELYo+mSE8mnD}QHk}uxIfd<7MO*xjdiVs|Hfgpd?C|wYqV4bglb-X&LjFt}+RfdWM zFOmdB1sTLR_L;_#Nx%Pt(IW#wqJ-{K+h6RdA)>pWqa*jgReqNOph&T?C|JZxpyRxp zX}K~4=-w&n!AQEr=vk5>|1U&Ds#EKQ+xE&OC8lKchexCd~fwIlAAR&{| z5G~=yj5D)rZ4^C4q0Q)}$(S1ttt6aJp)OGy;L(cGFuS$=Z5XBP3RYiqis2hlH}s>l zXAY@k==Lfh`ENK!wp!SFX|+nKdHwP5s z6QwPs(BRjM5)gJ;Xz;nIRk`&Pk$nANZdgBCj+^zxY{k>~hi1Bs27y&+EpLXM(m0px zgp}V8!*YUxMm3j$Y-WP1LEolyd3+8O{S|W>{L3Xe#td_NH_wQ+bjSa=xP`)l|D?HG z3xnZC3XnnIa}wmj(&_G^Z%oBB;*6jvlV7FCAg(~S12>S)y`(4Gw`2$fy1JmE&a7Au z$a->Zbn1-~(V#APD|`*2@KbEF0=rcNUjda&VS^9Yt{`1t(}Wxl27yNJ_(sIi<5KnE zkue$g@HkV%a40-fdKHJ)mF-V`gxFKZ2d_ zTd|oHdgHO{Fh@T2wMu=pw5|K3lbiRGd6FA{zXW(rYNiorrtNE`?rEjrFKMM}rKRna z(h<;J5xe37YnX}1Sp~Bo*-388Qrih{3kwtPuO{AIsy2A06ERhp4Jo)yks*z_HN}3q z*ILUzW6XYC{=ptShOTxxO2;e8ZK(7RSR$#t%FxHhNEdF2^z7fZ92=&QauRyb?q2$2 zleG^zvQs*7{NpegzE!YvYVB&|@1AEOv1c}HcWdZc*4ImK^FBC#U0-WW4A+tgIfNp7>YS z*49>Q$Xqd->6BZwu~8ac!7UY=@N%`bIEp#pq2vOfV}e%hr?W7mwh5vO`;V8b-Ja(s zSrtxa4*oCJ`{bX6AGZ%)_c5D+oboAaX*l5d`B$EB_hTvRPu~aQo2&N!-p)+3@mN73DH*N@GttX&;V*ME$G!|CmY`|i%zMD=M^&rR0a5xG%@K~_%zHBlNm zsndkPM&@SD#DrB2O1O)C*;{a4z0e0mq%zW~5*byUR{dUK>z_{>aWjchyNQx5r}4*a z15b_@-^5!?NY^aSWKo)1cS@PttydWBGa;_{TSVzfTi?_NSlZ)#0^|mSku7jfKMf$U zps+j&<3W~(bB`0fqOAv6R$S_MOM#cbveP3*XOs}ZQ{sF=xS!BVM5of=w+syUV*zy^ z!-F5GQ0Q60G=?d6Rb>LNT{L2up77tZRO9tIha62;|GpSaJK094upVVu zajRohhIa22b`KA4Jg-^+18-`&+bm&Xpla#U`)k5K3K)P->PSXwUbMyf1=%h!n6N6Z z-IeS~^ zAN(BPeqE{@7w}~I)a~o_uoMR<5Ufv{S>0c^4)&7zSI>ku-X@}Rmb5afS-9UGPI{w* zx7Qc$Cl=;=eIGr@jh?6S4E%h)y4N57xPL$V?oMh&7(kSmKbOO*usD`*Z)5p=w4n7F zD`ms(mRGL3+6;$f9}VUnjM>ej)@TfG@?}@e5^f?NS&)4uQGF(_8~xJX=^kP`EU^C9 z_7Op!1=`~v^d3D;XTVOzJxtQ#vwiJSG#HcN6JsuLuvMgK?XqgbRi8_p%9 zgQt3IT&d8vBz}q{t|j_Gf@ANh4Lu>BGYhqJJJ8asKy!48hfWhe>&CYC>}%0>m&AOI z5+sel64(_U)2)TN6{mmty&2|QXjql(Qd=|ZsQI3w7LeH}O8*)hH?K;UlhDVAUUHBh z2tLr5cU-7nD(S!|T@NWsMjf5x^D4ANqA^OusuKvtba zh_MjQ3^AVp8Gs8zdcI$Cl|?jNQdmofhDLdQAe5Ln0920{sG)FMqJ#hs{QD^8h=q zSw8l3B)#PL2vyA-D2e0((F6h&L!&6|Ie5hB2^5UdZXwA>!?-UE^i+Wed&gA^pCQ8) z1yRBNW)LCG79YY}qY6&J13fDvU~@AsJTA1vfJdy~!}nJH^#`_`D1|YHWR#3a$euEY z1cKNNvi>E81|v0>MN1rz2G&DtN-Qc-UYNZU=s%UvH3&F@s3atL2^^(PbIo8DKZ|wL z3wPMUOu!I^OO^gXiH|D zugpOPj7hjk5bVpQM@kDns(6Az62!>ZDTGKtD-zWC;2GL%FP>CmTwtxEUK84%M7Jos9(3pI< zEl)n3`A$inx=D48zuj zpSG@n-zmfXK$nl~Tfm^vXM-^_k2lYO_X+b5?_5<{hDulBhCr0NSc+C8ft<$I9t);p z4!B?>-#VoG0uHnf+tpay;dXkyYH2N%n=u40?YIb3!V8_uCMZqtz3m8x<$p0rc8d<< zA4jaxWmn9vK@#04f83sH#8D5re7i`2_hT)Vs$aDo;GSep<6~Ae}@VvhhaNB~7 zojh)=srACT^~bfMS0Y2|KP4FHq_3|5w3U|T#;&^7wubiBuIA3#(T!4V?Q930vB=TN zfHp(NEniDga~VTyA7mPntG-0VXXI8gjVnxW zl>!_u%B;#%*G5~D0=3H2=s|tPyl({cqb|bg;}(p?VvJ-&M8}1ZXoYxjoB3ctjlzju zh@$$tz;3W;HlhucxX|w&^xw+-{AbHH@#D=D1i%OX&itu z4uD|!f}oQpqY6qo)A51)e?{jsKoo=$@;a|d5~%U0YGfm7?>)Qc6KgP8|6sZ`8|bqr ze>|D9kzOpkwh7;H_hPaBaAG%8u?r}q`D#Qpn>jx3EM@1}PPv-lQZuRgDM( zgoDRsYC-@p=UB@hIM{!?X)2TS1NiN7^VMk>A9nkX#ck?DS5zu|Tiz+NuRHA1yZk_7 zL{K61qU9z^shhkPE)#&=)j|ICAv?XJ_>c}@lf}gCs6o@92Mg>DfgZ7_CP}340@KnU zWal0_5gaCke(mwv3)#o(tgB2IeKaf8u0Jwpm8KwvLYL7XrzGkzTfLS?PaJ zJq}~kwG`EEYBCg4+bGE(aCQF?)H8bzHk=tV9ONH27FhaU&Uz)L=ei+p)UjouAxlb3 zEcz%7RioSny@ccO1k;3)>8$l4V^&4Iz)^j@ddfsf>)7y<77Hoqi4(a!>sF+VgN2FT z*8^v#{ma4r^{U;*-Ic=5o3*95YNJlKlV5`qjl1N2kB=)y!%M-KiH5KwVE9Z!s`_a34Zj75Mr1&bPwp0#q?@QEyrD z!Aw5C@xKM?Q7OL);rcdZcEZ!t##19Ga@4^5Kp@#B^-otb5B21c2*Je~`Gg+7mw))V zxIWYi*yVj*ehyCy@AmI{JE_kx5?X)UO{&`L;J;s(1KxkkzEHsLdo$!n9q-K8Aq5rM z@ptz-8R|WrQFE_2HL8BRwVc(9h5XDZzh6k{t2mNhTKW(3|6ydcaC@7(mDA(N%gYoQ zsh@Yi-CX-o-nv16yVur4>@Mr+PoZwXZmx{;^e+o7W?!l5*gxo1OOqcff9`5=vnqvt z{TKi(Z_tlTrPAzFn_lgEok8bh+T*bQQdBqhG`^9NsYz0yOIo;N^* zMBGIJul&^OP;?T523TXRkP@(<+y%usqot`gSQ1R=K;$)N!h%y~0V|5*Z4y8IDc=gQ zRQvCPg;eozf0PlwMBlWRM5Q)+T&I>If$VcimN>U5X8v=zm9zVfI&s!J1h+i19)GOC0d4<1y<1RH0OZIvZT4)fFhQ z4}A119)*V-Ahco5LKrKl{TglE%UF?VF55UwNrb@=>bUMBEq`XD87yqB5w3VxlTqvy z?Xng)WF>7m#`2J?$ZnGOrRp+B_LR3S?lQM)p6Fd09@aIaV7v>$8>PmE z{DP~A)WNi5KY~`^JpE@`#Z17jJ9X!lT~T`cRDTiM7Epia?PKQNd01DD=)E=xYzO}l zk$cu8z0J`*y*=J6ygd&Vzg;zZyvCO!@(OJJ&h&1| z>8j24^mBORt-cMoaNAD@&P|(A3j%qyT&9l?*?v`jt!Wh}D(iFI!$~tu2Q(vB2;{*s zhKB!5>TQDcP)=xBGhw{mU9gb8IrWy|BoOT@SGISHLha7@zX_8N$VlnSRTF8LH$ z+BZx!h;C4Wl|KDU&K2-M^b6sRN#zCkMU7(3QShUYBEewj{NKp1Z3w61^BD+)Fqo0C z0{u(bdxnPF!-wVygG5OD`G9^rGg*4}Lg}|+5o&b7n=MLIRq*c`)1&`FYSI6o;4*5* zsS^0#AXtYYCM~*XWY~fw9Uopdpy&>f{|qUdDeKKJAd%?|_S@8wgaZ(In!0`;tLV4# zdX$!6G_nY!BWxlpUq%E9OuN59piJG!PkSKnHm=HmRiw!KmVBkjMB^mnOL@^C6iH8M z>}MQY7>FDZ=AB^is}9z38jNq=692(C`&dO$G>L}bew5I7eP{xmMueeGg%S&Ch!XKJ z4<{DHFtE6`7ELiqEjP*vP6X!OY^H@zX!&}HkZHJi4+#;{T2Zn;nc;z}c{juD z-(ct>4q`0J$eu`t&_p^BMBVA#Xc2V~0CsYx5C`_wFqoj+7TOm+k5dw$JwO#Q$_Eg) zaG>!)vJ5&Dv?QWoG$_wPGA}{N$UNko0;muF3gg<^+FE*)84?UTV)NLda%6cqK?c(rBoRK^HA5qvm2$^qjO;KFh0M~@uec-O@RjE~}wu%fUSj=TFu zqr!Z$*US?b;BRgBr}CZvtZWwf+erWx>Ou5Rx@noP`9#VjT^zQtZ0|^QfmG;NCiFx? z<_iY#50riLAzpQ4=7q$1gn-4;{x9emb%rNyl=_M-W7vA!mU%L5haZeS*~+(aQ)aCm z)tN1sG^Q&Hz$rXJvkVV8e*LBm9j0+5E*3uW6#R?c7F!#?wBw%p{{-{-_kZ#SzVly3 zONkpJGs+*)?=UUpuQ>IHE85qH1&BT299SlKOOJ|mDY8g{N-I^ zSESx6mo}Of=pb_){U1j7-vF)rs8rRjjrdG@MUAKwHE@^h!mI?l0W-~ig9@$b%5;UH zZbjMhsc0*5>_#IN5`FByQ5%Bhu6QO4WNgr}$RR!JM|8XbLT|X%m?EHee^j&o2M9s; zzKqagImQ(gAqAfkWR3t3;mlRB?bfCsE;^fC#Ni(5I6QnH3}4=eLK9iV?e7U{ww&hFT5Mew%u%x8pq3k+0P07Dlt5CioL2l0o(~ zNDKsb9`zl-0iW+9G!$^!9ZCtjBczb$tTJ5)qdTC5l)8`a9f-jQ-&3vUJ{aonHW~Hn zEAty`D=Uk0>njUe>&qLfi|l88i_;q`b30q>2iqH4E3=EUjm7yH$jnbS7H6lL^-6QH zI@hetG%9oT{AAiSnGZI(zia>w46e-A<{R0S*~)x5FkQ>%Q{kY?=yBOSPHWKT4hOtp zzbE8pFL?SqPKVWGVLwArk1OSBl|rkMj?0B|smNr|Ic%0v!m~CRUu>3_X6wybwpL2c zPF0T&cGg$tuk6fS-CfvUpW9n&UcPv6u)BG*zjNvM0O{q!jZ23+S1ul0yL@!z((&%r z+TQlYkG^^P>=&Os|MrWQzyF6{{pOcn{o;$apS^kc$*bp|zIplV;k}zzFU~aU2q_%& zIc(OB_I4~MnDhYa|c4PaKhnJsT-+Fpw_06q~FCT2)*qoRzhuC_P_DmPUNuPNt7dTohK0KIt zc6s^H;mo7sg?szccXy|rUtM{9ed*=Z`Ae&nRLF%Tv$wAg7xxcqC(Dx8ph}vRdFy!D zre1f+*4>gVk95x`KMX4Nf{HD_e9J4}WgmNz?t7&BUiPi1UAK7O&Aw&MJ{`r5sKi?? z$%;+1=3qZY+j59D?4lK`Xx+g+I==1XJ~G8lZP>vUJD+lhxYHkYh_mGsuRGZ9*S1l_ z9qX*wMQe5eQ=u~{mP!vi@F?2%h>y5Wp&$5VyI$$0N4n*aA=G`JY{x6#bh8hr@B5V( z!{Zmjs-vLdD5N|NvhPySbr?_{1(jPa>AF+0>6WtdEU$9gEnjm;+1pz#DfhaTbjQKo ze%j@Z$@bY#4%xd`n=DB23is)&EeC>^uGxf(7F3fJfrBb@2V3l~`|Y`9u)v+oN!Qum z^&2g#h9)&56GmyqqztO1P$d_F_ zWtHX4%B)$DHYwr;h1)=XF!6gA{UxBjzJ9v!tVNq?+L>YGV}8NI4u*P5OA8H#zj!PK z0jz>_Yw!RQrU1~iQi21TZV-S<0ZyFp=@tWr0sufT-M{^hKmGB4R0#WuF~>|LGFS4y zx<2>Sy@h9or8}FMukSCuIIeEiym6;oFB=$W{~+OzURlZh;>p&(etq>{zr6hCPmlii zdiVD)Hh%MD$Vs3sYuWf@LD24XDsZ=XJXtrRJ@o^mbj~2 zNR>XjMas&O$$; zqrnHTVxbe!rg?>KcLy-M;Sn(-e#D7UNROA`U~xrCprslB!2>D?5-wP^*fm=$smHKMkeDFKaDytshueW zsFYH;hF{($-9E4YzbJxDh=G6>QWQY|X8FMgU1&iaOo|heJeG!!xQ}f?7&7pSy8t%@ z?QZGrfMo&&51G?h0Dg&2SpXbli9@9j=0QEe34ZV305sJRk$?cG6o4sm%G*Q{>dw{d zWYmEJK%MpaDWKMrqNdO#3jkSwJb|_8_itnZm}oQ_GeiUEZnPMIO3~dk5|D)$1&GP)CYV$`T&{A4W(XJqRF+FfiDpQYp7+pRC=$@bEDDly?XG z@K_3siAF#XER!|3Lkdtxs09e500JgJ71iMmq!6G;pbpD40Ej?MF`f|>!ee9Q-2_W15s)N1NWlSt!2p{86j5br z0r261I4Jtzu~ctw9|E9u`63Pk`$2rz{d9syJhx+m|XbLi^oh8@I)+fXi- zpY|dbkLt$d4zt!G@3*VReEPAZLz;EV!=|x}PgjmPYH4318<;MH_E#pG`B0r@gXO4W zwiuqt2d2{QYRsAo7%EX~C2A`MjY+pQ=+Gr1LA%Yy2TZWAkC`g$T9JKx#I6y#%qpM5 z5OkZOL1#4NbAA8YQUN-a%4ZAdXd#;_7xU$OIv4ZABmRkUVY*S9nX1iAPfgV)8ufC$ zT3}!J&8M2B$aJkR+n89KnPgw3nQP9}@{{FMy_9SeV-tmRF&isq!_`8(TFe!**y^OP z+bLudrF^DQuhz@iGW*B5Xg-rlCnALm#4@!?p_I=m}Tk4j5lrpXDc{bm4Hr1 zig6A;ad<$5e=-O7>5c$-a0qlR0J9{IA`Ae?pooOY0=Wi20Nh-~{GKL|LW>CEKpsKT zxJ6VHFlYcp5a5}hA%=m3EO~)bSVKz33W$V+Nte_Kl!XBKf*5g#fGMsX-#fej%_`4< zI3xp5FaQX$z?(vf#zBxY{y~#Fsu2i27|^GKAsM99ECkSemShN8>Cjdqer3JBIh9%{ zc&9VYskF11a;#Q@a~Vg`uk{&3TFHP$Asp^&H)&*1pG_kfQVM$Qeq?~G@^dBs81^f-7jN5>+4mE2bCgr>I7Oo)+-(977uqRMT6s# zVTG_C9JORb!<|Ff)B-1NB8||j90lz$h`k1(MKNer42|@*{`ALxbJCjc&JY3WxF3R! znP_k#3l$OuhX*IfB#HPp|K{HyMRQTBQe&dgpm?J2m%w%G382gM5*s|wg&pcjSfg$t zP+yRjvuDrfwBvf6R;N|xGO4YNwT;!~ovn@it>yi#g}triz3t8Ijn%c~g_Wgw_RXoe z=F+35E>nrnX%QL&{^SjH{&6U~N$#OXz z%*8!nzdIHVB=GzaaIv57xt$i1L8Fo>WkRJwrjUwsY9(efn@J14*X<1WyxEAOnRTr+ z^LK9^t<6`O#o$6cy|=Z#wYhR}d;ZGK?9t}T*2>(Kiw6f=%LhAa7Z3N254Nve+CSLc z0)6c=`*Gja+Vauf_K$x3`LjR#bZ>hi+eT(gl$ z#l<24EdW?Nh`<7X7Q{k=bs9TD+I3;!fdIDxo_x`OmK>}=5Mv8F2drukK#QZH(G#G- zgaz1vLDGdHEoLClbKrM%w2lsTyUmI#TlHIeQ?D*J-d=A!Kc2X@6kn^j@9a)&O($b+ zb=Wa}YoqY=%KRtyw!V72_tle~Uq0J;bA9gacIDz??&4DZ@$uBFYqR(ECND0RuWwGh zxp(l{!^2;GeDl|D@4vo(>Ba4XtDBR%^Tpk{;{JSgbt2?5%XIRQxZ7}jbMoH)^u7Jr zJG;$0yVDOZt~|T8@$A~#qvM6g7Z*Q&u>H#?doORS-aA@covxfLc-*0b#h~{YH9@1g zViYY|+3QQYF7_etUG_?pWX~hr^UAh7vNgAC%cs~6urE68dS%;QDK7Tb68oEaGFr~=Bk7VD&-lE!eLsGcQUbzx+zx!hcRq%KepzGx2sdX2NcE^LPlK#x! zo?p4ozC0yA3M$z7lwWxqQn8O%1-Lh=!m6Xt_>Nbx=8~;CQCaz}OSWm3Y_J~~GQYcS zGzb@!U9@gvUp;3BPcHU`6xwRtE?BS#mnD3M zRlI3qe=%^`A}pI_VUs#!Qv3AdUW3~H7fcy68cln92X;RI9yM`aU}nMmg3jQ;6QKl`kgFdrFGT7?W3O5?j zPj1Y8adYN3PnLguZ}zjxl}|2Kzq($(vzENOReXMF`rb}urR+&LWnr_Z5YVoaJaY-{ zO3}Gh^KDfkjINBm?Ki#Y0KIWj^n!1(gd4P0AtF$VbOj za*bLkmx)vgiB79BXjN7=V`}|gS27-n1U&(tBNFmNLf&ZDmr6!FF00#V@HmY@pFNk3 zq?4g|)SF2~Dy3YtoUas9wQ8Y0Q7mNRevdI4v{y@M?A0I~4%lnuY<;3o%*Ru4Up5(> zYgXrHr<#o#RBDxMo%<_(u$fCoqhW8gQiw(T9+%nWFnAm$gv4IwQc47)gFW4y=vnGq zTA#46VO_*%!2qE19TZ_Q1VOzFP`^U}0H2-&D8&MX2@@%bFw_5E8X8ioPriCi$5NQFF_`H@09kGW!2X4Yt^e=No=^)~S&_mZDoA_+ z@eviqDk=rEDth80U(760D=O53rdj%A1TR$$wvsAr<($<(PH3tc6Oo&ehKgnCfUJ_ z4A9C5z%`15i10s_bP_*a^_ggCU9{0t6t;Rg3N3P-UdB(9zKWF|te`Ul4{4(Ezekeb}eH#F;Z^*eliC zSr5Iqhu~of)ua@G!58%}MkehA-vbR=A~0|%DvALq)R7`ciU9x*k@WTTp*k>&Qg|U5 z)DeCW8(f1%if9otg^D0i)1IE5(a}*vOHD*=OTAB#&|u&iiGhs2bIpDa4o7ee;{@WM z6v9+f0@@c$)CJK(0G6rE-vd<^G8huP9WVhRcrgNn#G>KiAr6H^7ElTxD%2eu_$76S zK?Ox%qLl!?E75D9sV+!Sgp>>-1rr=iVcBlw4a72R&z?^{Tj%K{Jwl?li1Nd&y=U?gpSQGr<+fwLv^b6kzrz;3|6aZ+% z44{argOmU!uM40((Xim~rIdxhX&0o0kVuA@a7QWJfgryGVnUb~fC{oOLV#t+pF4Ms zAH6V+6vm-K_IWL&ycaYq?Qj5CK$bd`0Gj%g`m`p4j?roKi_Jphoze!?{_M7Dc z9=$kXR~4gol3h3K|{=;tVXTXn5`Hxraj{c zhcX#-*{$z?^4w-IcpV0xUGFg|TxPY)W^&ujK8HRQW?vL`*lj0r9Q=N7KAS3JQ`k@B zbJ%_)a&ceUZwRw55=8UqI4+bHa_MX;p3lUKnRq@KZj=*~<#er>nqV(a6{aVvjY7Dd z@l9ldl}xah4(F5pVkTV3CQ|IP>z-sRfIUnu6)I$tlhwjhy;Lo-e~rtg6S;Kk|7Pqz zxFb8VJWnvs>FwI?Iny)UU6qwdGMOZUAt3_VwFDflwHAOwYYhanbU3sK#b8jYOfr+1 zOkG*srF*(}x_4%G&e^ZDKYQ2l0t{x=ng4lVaqZf*YuB#XGcz~5XK#FDaB6&bWUw3# z2Ba+n+}A?jRl#*yAosoyGRn!?Kp*i0MAbl}0h$3>e#6TxL!rpPk-U-w2VvC05lHqw z3CSoxArO=3!+JLsQ;E`@=(-XWNkCMywD!KC7ywhM41s0}5@9J30km-=hyaqJjU<2! zOkGk!A%qrdfo{L9gi!7;Ix}|-w}1>>*Ka`X7fP2>G@}&Ah#s`Them)9zE}dZ0$=u| z$J)9--+Q((ez7&RG#H!d3C#CL=ljC@v&HR+^n-!OY)@b;=k;0|j7_(bQD1K%-F)wc z-PjcK+LAt7++#}lECG9~-`?smH@OWB9#f;e^^UuvF6d}Yc#Lt6!DqeSZEf<})cNIZ zbCb(Nv<1S_R%dFy3*j_0I6La??RA!>TRv-3vfGpm*m6NzE@V&ptofj=7wLyvAM~S>G6@iLLwRJj75T7Zf94g%Vjq^twx{M zmQ5#fnPf4S>M7l?>v#8l^HJqDA0K^uwtBWYe6cb1htJRd>Wh$6=%JI1IK>{<_-D>3ta)Vv=dG#x}uM+t4`C8<7FcMvrn$JN74=Q+nk!F8H(9A=$6 zDSIXDJk7fw_P8#3TqimEvD%hW`$rFp&WpT5JyDghUFIFf3AK+y>S4;Z6Su5|En88W z_WYD=?xeGH)kBTmAxGcDjbFST_eIsV6rtRu&zP$4^V?WQi)V5Ti^I@s$ac|e7 z9`|LBN4@k{>U>!2)Xr0P9jFu2ty^(rYBg!ECM<_on6e%uOh?K>^)S>yOdYT#2A^u5 z7lhbPSk^+8jfj0O?%0o8@Z_nsId!B?uu|u3sr{*#`5VWP3V89g(_`^P5z~>FCL(~0Xwa$6baMvz{LeR4twH%}zc;h^S4~<80YdxSj2*3}_9mO5akSw3yDzK1dOH8pi@9Gu z-}?Qh$KQOo|Bt_X{NKJg|EHfH{_)f8Z=Nmw_SyVb=aZivj{Nju`j21i|NYMn2hv^b z4R1Tz?~P|WKiVn%@#)0hzB}`~$FpBQTK>hmTVFk1K7P9los+CzSKA(t5J?7Urh=%f(V5JURA*-=S;SiG6l;YLnh=G^kddkZ zlu%Cy_#y_>;I2Ki&kqKEx06b}2(^+`M(QF}qh5MVh1NV#gKz+}?oTwJP3I5_^Ll0B zK-8?!EJq1M9C>a5{ zv{FY{!Cml~5DE@>dga)WWSeVe1qCBPDEHFg_Au`f@^6Q;Wf^PwL&E30qX*Fc90efmL zzzJ7=K%Q2BL)DO>c2X8JKmajuqX+;Y^jZr|2>&G+(S~_IJf=E_);(AgVkb?k9Hgze z5s>Ooaq5Dj=re@OS%5AidPvd>y+#d1O*)`}UL z`@ePnUI$hIO1XFM9w8nE6omh8-nJlTQtli!4$m$A(4*O2uq4pGlT->E3*@Cli?%?i(&= zM*4DNgT15urK!=unf}C7$v)vM86`GriYdepzf~k05Kq)5Y)IDgfB^i(pPm5 z1tdvh(I|{jGEKmtC#do5Y93*P0cyz8m^BsO)~VAF$N*J<2FZe2sR(_5E=2dHT%y7e zOCSg(I~+jil0=9qjaRGAOAzxYg1T#lsGqcC6dH(H5fcdKI?y8_83A(xcMxMNq1;^D z3*s)hUjTO{W>c0JFXq(>&=#54Lz2h63`9q> zT^pnE-RZ*CcxJI28qRon!LRYzQrJ-p*}9E)6COjX%b=c|(%#DpxjHopeq%0y!GSPlv_36G+K(4#&;o`P1k81 zaOhWf4CfF^HxpGvW%$A~aB!ET3J`#!_e_Ck6GDItErQRr##Eo`!_?~>Kywhnp%e%N zBo{49FI5euHb!2bpP8=gY*%-;kN0;UU!EUSc218E4)#`e)@Q4GJ3Cuz)xGVlwdMJ# zvB{Bv2Xj*^i*pYarWdD&)+Y-OPY=&ej!0jBFuS)rR@q$M-B_t?ZyZ*(PWIQ2_jfAW zYlT#}{r;Vf_7;<&-S71zqTysb%9V(PW062S8cHW(xpX3z3Nj)+m>oIUS$J|*IanU5 ztWIvP&22oG-dLJ=e15vKxxT%=bhx*2w7+?AcK+<);nT~5hiChbPc|>lj-Nh$^z_j~ zwR@$Vn)mp;`n{ijc=DUC-uvCJfARdC$4-a6rMdZjW1}1x$$ZS@K^s8G#3?;q{6+KV zGK7e+9FY}+o{Ok3WfDROsmv&V)dTkxNl2m!KJwgDD3=?I5Re58q(W1M-EQmZbO*d$ z0k>%&>H73^{==iGKYX_L55Ii$PrrWl-+uq>AHF{SFW+4L%@+s1e!l+A^YxDphCV+Y zeZDvJcx&*ZgNY|w1J5gypI@x}?46yj-r4!)y~@X@D<2%qA1?I;-AqMynQu-vCO><; z_p|5wUq0J=R-JpeIsRyC;_2S>N9XGwpDsV!n?73|JbqAqxH zjEBSW-HqBc8FX$%Y9RAI(O0z!qbB5qNKg_m$jc})LVY1X{$Uub(Vpn_Nq?P+VfBe%R$_% zZ8oWLD>3zc-(k#L4I8xY;;C&Z@*XElCke|*+;SWY8a6Qbs)CQS)ch7a4bM9vxduiv9I+{v-v+q2o zPDWR+`>Aay_3+f=p00-__i5H~LXC228%uk7%eED@u7xc-aoc`Uoin8!b8b;z9!x4< zsWM$dIy@eZdLu7l+6c5&qNZxXz7esE zxLPBvcSk!73qk8pz;V6du3ZX2IVe5oUy0gI66$HPqqylH)NvFw9&4v!RTAnHtwq0a z#%mn#+OOvYet)2=%hTD}jW%jI9Zzx9jvHotnZ^plg3zxr_VpMG)ik6&N>^=F5_ z{rKo_zdHZNFZciMv(3MHf91E&AN&pcFVBAS(H?ir@7`bg{d?{vYH=xlL!+-su07@O~`%#OTUnLc{ZU(NCt`t2DjJLUdP~{iA@z!MsgRkO8lM;+9_TB;?CZ^q z3>F9aOT}EQrJqS&N_$C4|s2T%(N;g~CCM zP*0+C0Id@M8G6#KTeqN@Q#(33WLt`5JxZ7?$w;B}Lqb$ZNOp=wK>9Eo3YAn{K-KLU z7~5a^sRJO8ms($ks1;zLsD%&+pHjpLD1ji9NxFSwFdYjH*wx>-|GQ)_Fh-EQyf>}+dmgP3?pmSwW=A}Sh4f-keb)QeEO zfq>)^NS5my^bo>9i4^e?NPUTq22~lYB3Lf|Br2{GH$nid1f?7%0>Vd3JP&k-KnNri zKgwt!SJ#h>v@ejBqICcSEyX%Vzj*=L2t`Kp>+V9cgaT+R5zP=p$*WnX zpesRuBv8wC1>s1gAjpDktfTmG-qO-Sd%?kYeU*%#rGm2d)gerQ>ZVsfo{&;7096nO z5Mme{%7Rc0rZpmxVu>UHDusabWZ@76*9kx>G`YwtSzyXtKqwx7FHRr?2vAMr#YnLM zg1R6B#0+vtMj$q5#nymkY@e%v z?7;?#6XleSq%4eK62(O*(Y#*k+wi4OvOwsNier)#C;o?kL*225vZ%F`2uPLYBNQ=! zenP3cfG8mxASIF!h$I!K=U|L300)SqYM#)byGiXX0TOV!n>lg@DIcekY|0t=;!0*u5f zKlsb&%DIQha*2G&s;(%*XTDXij}wJzXwldrSF3F4Najcaxxp{dcqzCxy$P4yPCeWhGqDcfI4_vACV zRIHGSmGh~g-uz%sc4DY^X?A>dae85LU}-2ZUi6QZ)1!m^lsGXqJT*Q#J~A{qG%ztX zG(S1Gx-_@Ev@kt6KGa_x8yOtnHqBs@@N)$i81mR0>gy4Pz@CoJi z)WL8;NQ=`DvKrC_L|z6fQKjkDgs!Ghq18RFIhQ+ zEuDny5(Vg#xr`7%{no0#|vS24S9bFXj$O|w= z>#+(D+zzw_keh;3ofi4)W}{Hm>Z;15YR0|*g(kelr#r*d#lE8l1FOTamEpwNcy^&b zGM?$$o+=zH_B|Mk<^AS`zR1dOa=tG*lJWM%oFiFZU!u!rZ?Ux3M}po|B4%oBY`OQQ zrS-Pg(HwQPgk7yEuPNs@N1V;Yh&>aqrhJyT$KpZ5edbO@I^V$&CsFcQyHa00%-zi1zH4! z0tBRi;7iK_8dTc-)mLBn(T`qx{YO8tS+22{;SzD-XJvgbX9qlfi z9amQtrVDYO&(RhMc$4vHDjto7eEx2?-|LBm{qaap?MY>l>0~S!i_A=p?`}Le*jhMP zn>yT@+FYL6+gd%`Ti;w5KH6P5KUh0G+}zt)UtM1O>a+Jhe0KiM3!VBV5Kf!t{%Q6g;vfrYG| zRmL}7Z@YiD5bqu?_`iN{>wo{l^Z)UmKl%Us{TKi6&Ex;_>v#X#@3@})(>IsD`{MAo zpB#SqWb^%l+2@ssXS?I?AI!Y7JN{&QE6iJOliCr+MVlt|9J6d z@9uu}OdV(bczfbvee`l;^vTZT)4i#8_h+8(&%CoUaj`b^YeT`bL|^{L@(6kKF_<(a;~F{^B`qEQkzZcTYkH7>lPlvSCpHk zI%*$EdpS|P1u55=#;hi^cNi14L+u?#D!3W3?!~N!>R~JOCLq@lHKlf{rfTa7Z*K+- zOWuy{h-D{YSqhj2J*J||5b(5UA^UoiC^L+D*K|^oYG}q%@84MN!9jUIC_3`-bY;G*y-EF?ta`$!f{kId{#%#c9 zzJH@P*f9__Pvx8|{l3l7=)0Bi4^9?O*G9Id3+HQt)rH>YC-cW!BTJ*n)uBk*!Yp}2W4Vk`&S%ON8(Q^UPm4Rv=r zn(j5%-+KG4A2T{PH#M}k-ZvRqZ02^m)#y_Ls9PO3o{IRru2>|HOhhv2SUwx?EvAPD zdk6aR1AT>ozGAs2)7z8lEv5T1CJQHIB3v-i`WFI^Q3vfS(+^`E6BR8>Lo-e?Y(hx8OD6$z37}T=+7h2W zL#nP&x{B6=)Vc&oJt~A0BxO+$1bQflQJR?*4g&NmbYcn9r@>&5Z7I60e3TtMn1piC z1IU6ll*1%1p~QnQ;LH0klyxNhl!|AW1H%DK-F|5PUZ()>5e4JA^0{ouW-> ziHZ%f!q7uF=wXUMiJp;=ya1-ohd@#ar64I0zA8_1ix?v^I^e(;AV$T-1C#>rGgGG& zfd)cRsHs=b%2$9UNiPmU>=eIgDYYMyfEoGTy?e6pjet~E)=#PdG~f>;X$4xJ*_;q- zr4+0}QXqYj5Rgl?ljcU5&@l`rARv68RZ9UqLI|HMqT##RUJ_O{xvHInSVh&8J2XPP z0mKym8wf>Mq9On^=P4thsVp5{G+f7Zj%0x&r2`bwJ>Xn78>TKPxdar1S0NA(V?+ZS zBxw%4OOQ)7)zxcUQUy^csRC#b1G*SGQU1??RPm}9LzU?d6pc3cQUz%;1W09NC5u41 zB2hF*O+^Wk0-^vyN|#aq_RxROFHH>SHqZ#@6_*-8OZC-_adq?RfP(;wOh6L05yC_> z5JGYxCcYxdN)pR4LrkSy0cMB+=n)&lnL^Zxys`w2+y(RyO4s=i$V1c~+qqgH+`W4j zKFSGk1-bArx0@ydl#J16!~n5b6jB6Y2ouFBaR^GpPNIVArR$(wG&g)}M+v~eU{X2 z#kQ38q}$tX-xMVRWC-;Z;V!s$_s-3?-@5U}>m4okOZjA=)9Q1yC%P?Z^=i`nkfVv; z)%?tkceaI{O<_lq-_{iK+F210vVPDF<|@XzdSdRLglDuA8S9Ca3#q=I;$UBi^YBc4LSH&l!bmlB1rt(^1>_asO9i{)ajT*{XV>0&0H zPsIpJ*+em$fX=02J=u6F;OH+TXD7#2A1tgb&5Y)}<)nKc>mMtp#zzJhW~UaXM;4|> zXQ#%d#s+35)#v#Z=Vu9r`wK3c!DjBb`L_D58J&mwh?`#e4^jOVgTQIR(fJ5VDu5}_ z^VSls#AKjA32rA9&m$!Q0(4$i3oTh7L@jvXwa_JzdYY_dyAxa;B0B8on z6k6=plO(F^7h2~4p`}EL3V{ZkMH(8EoCaBnhyXws4k3M;I}00d5uw-&)ZKVB0qLQD zDgY4x5+x%x6Gf*$REdmUw1jcLePt}YHWHgIdbg$uyEBEo*&^4@RBmlJUYRZK&-Kjp zh7<0V$)bOGIJrL6`(UDXsu)-th)tAZgN0xz(HZwz6G4}$Er$`XP3)j zH#Qj>ZnW3^IO1u`_>8G;1FQN(w>j;%Mmh}vXPd{OHldOpW7w%qr0TXdcUzhq9d#+M zsSvWIy(VtDq}SlHH9HLV4K4L8_ujO&sDq_2{?D{cKv3HUy7mH{pvJvIZAVH2l4w9i z{7*CCH--)fm?WWA^oy5NJ8Iot2;7K=$tc<35F)8VbOPKilF|f((lo-PEMy==0H(C5 z2&lHd`tvhUHR9cGXsE9n8y?tG2TQH2F3oPNEbVWvS9jNUx0bioAM9+bR(7^_HdnV+ z=PDbs)!og5T~aryd)tKD>+_YZ<-^^zlj_Fl;oi>1%H-%kE)fp<+=)malZeJ6!D!GM z33Nw-{E+d41HMqeAB}|a+K2hJ*H;`etS%kxQRw=@%w)NkIj-(JI;%cD zKRiD<*x%WDe7t#fxOKe0eo|RGJKR1wB+JFKhsVz@D_=Z6KHT4Zcv}5lM@KtT4x_w4 zwwYvVfsoY+1Gh|6GNUl}AVw0uB>;p7BLhJa69eJ(RFc&GleS&O%ps}50i<#}0q#BY zAP=Bv0NR5>F+lD#m?$Jf;Kq%&_&wTGe|urPc)mOH!TIuk{ms*V`1<1i_50`l=ih$v z|NZ+<{>NXv{}10h{^o=IFD_Ror@PaSH%FgrkG)%&`si@>y~-p?j#ftJM@rL!xrNbE zCRsbtkl$)qkF(G3>hrtD1J3=J+QB(WXpcmxJrQ+jdqbA0+JRDARNEnSR?%MET8XK> zs;!V|D`ehPpV%`WX`h+nI^>F5k5X!{N}c~Lhk~c=`)T`O)_GQRUzXfQIY%|C-uqL# zRC4HeQ5^zxrryG{U1S~S>gXu-UB82bbvtUVs8gtH+IRXez*LEvvFa#pIfxnwk76dS zJ7n04S+M6kW53AS9_F18@<8L)oN*8; zUnOkRLOYpDU8iY>GG2R)Q9U80_O0-zbuVt)SD)~+RHGK0ycIU@M%0^u@=2EqU#kE?e05Cr&iiuj!y;H*Bs(OkDd><4)MP7cr~NFZDe^^Krs_nlPUw z&8JD2#+{IHJ7ipoS|*~M6H)hI(9s`o71VeA6uz@9bz2r{0(!gLXhHxwJW+-uxlJTh zh2Q^+*M9i@E^F&(DLj}9j1@!Ajuw9Ubo2Ae75ekf-rf1);qtTXfp<4bfA!vjzx_$& z|M=?<{(pb}#sBr6KKLKMy7;fZI{&ZVoc`Sx+kf@J@*h9l{muI;UtLUobvpK|hm(Kx zZ0?(fQwP(rg`TdVxGiX{W64#FI@E?yk8h^r8_9aMrt_7>-qnfBc*&penL^H%fmGLE z#@ll5El11EtlzXbm3?=A;>qUVr$QsvW8`pscyqS2I+E;( z*m41LU)(ia3a*VL9tHPN8KA84R1Bq zz0L1RMs0oOV03=%)gRW^-LaV3T@DME+iCT5+QUIlG}P^JTY~=XNZ6lDgtO@wtH5+J z(qAr=dor0+D4PzId$MCA<)Qw3HWiMByR+%Y$Z+4#K)J8CFfleXJux&oR2)|)GW7MA z^P|Ikq)tr?&(ElX&qs%P`g*eieTAWcQg1Pxj0cm^u2Lb6{!}s;iv}V=Pb}h%Mf^Um z%jqyTHqR#ym~S62)>LDsdLVUkuiPVb@XP zUTKg}^g~DzVkpreInO5fZ(K+C{fDYkcm{gfiIx1%4 zB|-pG%$6)tA|V{?giw{gsuu(t)XHs(fD{3NNzkMMBsFE<0;#Iz8YGt}6u(`E&VdlK z@wN`(>opQksJ5oMK~pj;U<~FVMgKN{1nYMhWI!>q51qIjSVP zW>?K!sM2btDgrH0bOLA^h=R}tlPFBR;v#?^)KVjrLEGKHBw5V^t#K5v3K_i!B=u4t z1kfm#jv=dG8VHU60Wlc7c$-YS?%cUUUQtddXn@9&+Ok2DAqyE%ODY8NlpqUcXfjd} z_(A|Q00=m$$SX*+W|L+uMq)4_Kowb}vbY7lEUi(6H^c*?oG9%=D8fMa=$9f;g>sw# z!89Q&b_4*zk_$9U3i4)z^J`@_pZ$*&#l*R|NebsXoBn8Qe9mhl*0#92dAL~=o~6Y#ZgNV zVS9U9b7NiO-J7P?hM3=NZMhS4wuK$d0ZU!7t3Bpw?ljzWneIn@uF;+(KeIz#^{Ej3 zDnvbfaraQ#GgFR^7ej-E=vX;3(Vy+hMRVzBpL(h~j%6$jvuLcF`2@eSs~qvgyw z4)*5NiRlv~Ju!DaY#&H>O_pQRBfX2$!z=US4`znvC;Db4hi4|orpJfprU-|6GePZq zpN7V}H{N*d2e16#``m0ay$)__xyuNlrAHB!TV4Pyd;wyT3)Cbu5Y>B>qzY=unm~=Z zf@p>iNg7BxzocG=Na|ovf+=QPuY~{sLX~v2L_r4I;ApnjAO#6QsB3@_8m4f7=+r@! zF-n+N!zKD9RfbIgGVtk&xJA2-eh5<}3B@ofPAZ`K-vz12K+vnn&b=nu;EUw~Q3X&d zpa@FOhaD@!vDuP$EaO}mNzIqTtk^5FrJbql&SYj|JiR)ap6&@3L)O7`_jn;N+n-t( z&drv?Gri&Yk?e!X;!J-mAF$*@_HdWc(sG+C7xVhumM(jTsr6pNt=H;ryy7r7bvrtO zotBv2m5KUNVUOQsw0G3E)!%5m^&?x$9ZT~q?loK6T|z_Ct+?NbjL&7Zbu@acjV@!o zskN@T;dcGaAJI|&{6DHc_+h;G5LW{hJo-kJL~Gkoe+v2rmb4Mt@C+`}vm*ddE~OCa zKpshf=17$n4~rfMLXz2$6y zFI2bJjw;(Hhn17Vy}gymgI#sHQ)OqZy8YnzU{CEy?QZPvZtZNYY_85hA62%FtJ~)% zM_X&leT8%?8i+^yVSiU55{QQU@o*p+3ngOVNXQos`U8G--gz;f;o4bWx;&|zA6L!} zcTcw_&kwiGjt@3gmrI4*#_EHEy{)sO%EfW@xVm?)9b$E`y>zrWb6nk|tS1+z=ZD+p zdkY_)%pa~zR(ICFC)-1Bzy0rim8iLy*#&uoNo6i!`9hSCA)6>5 zBY-0i8I%B&lM8uhS<{dTfjrsKtY@bzCM^aj+zmt$t6*|>sd-PEab*S~wXL<;VrWhU zY|r+m-anZ7yPuu@zyJEZ|Nd9+{kPvd`{SnvAD_%W+ZjDu?p+>=aWBpH`uPo<2|0)I zp`SgkeDlHK*YECr{m#~}-{1YGUqAizhn4paX3kd!F4hL0@6SBn9sgi|@{^PK&rTPP zRz{ANhsXPKYL1abNgx;tc(Z}7ofB;?MF=T)%K8jcuJjIz8*4fM=jN)<2m5S;_sd$9-CG9p@bKUS}DoES3vR^=Gul}86?A4TQFKIhcr)a4YvW~O%Bkgm9 zR7AZ7sA^;<>9VB0<#%3ipOchRXTa~L>^li+>Nr%Vt=kV%w*7>9kg5_f;b$DHZA)2? z6Y5+l^%PawMjfj$>t@)r8Z>Q&@T9gG7q{%kwJ#E?r><<93CDw&b0qSu)x$q`Ekzva zQL?D95;pCGjO%{WX3zwUqhRiZjTmzfHESDuIL&w*H=ZVpXX?|3=Eaa{B4Fzac3x@I z7DieZ;<|OK_7Wdp@{o{D4#8aj==NHox-VF!z4q!WKmO6HZ~geSySLslHQ!knh<m8|NS?Q z|GV0d+WouFHvankh2K7%`OUizzPT9t;$Yz8%D{(vgYWMSe0(rEmg~v}%tPtUg@I5h z=2)95Y)%*F2I7lDsqOjxgVmAh%HaO;z{$qw+Du_6?;p(h`_jH{d#kPGR;1Igz0m*j z_bb2oaQ9cw)_?cu(KjFLe|R)ooy~7fX7}cMj@E|v9}LX(MdtdWi^HkqvE0g7hAD7q zF#2$75oc4#-Waqs+`scW^Qp`jT9X_u+773)1k$g7UTgpa5-oD;^PcfBl-ClpNI6E@L$}m~TL|8Zu^_Tj~#mVuZ`Ps3F(Y}Flc4V+rE@j3>2SwNN}P{vhxh=x@B3122Q0W=&m2q?~EGGE`8VhXr!ttiw% zL4Z_bupC+p#!gM2ss(0H5RE7;2#1R3svyXV%>d)IzON=Ay&^zMRQpFj_&}1RAeh3x zo>$}nViZAHl&%&OSF2}CVm^{2@jrkNtH>y}U041Rq)`M!MNFzgq1Qbo1RT^7Ha0fO z9Gopo{51Qq@fZ!f1m)OysZQx|1;;^Q0C4YYAWC0EE#=&!-epg(<00JJBpQ(D!I` z1_9(L0*6Rav_5-V$yXf zLOh9=h$4dkQQ;#`MP!>&TpV%tmGQfS67F&;fSjj%u(g(?G_ zhB2g4Be&aSYHyDE-4Tz)XKPCOtkEu`t?gc?r6m<`l)~1mw=L}Z*21zk9UL!)r+TBa zeevO3U?d-yD22HOvw@yWbf`C*PpdES>DyAtM7*bv?JcD932!diRZ4h@F?ZZ+9_UGq zlrv*}`H{YSUokb(UmRr}(wiPAB#Nm(UokUSF7@{o%Y{sDCYlU&ro)}3OuXD%D&;eU zh=YsYKGTEQ$^Pu@SnukC`IY&xh4Iq-^vKl2@YGOYVzAI(NF=&VDZee=t-iBnX}Q}{ zf9vkeH(z_@FMp^lROu}`=sfyuPRKN*?m7)b^%+Mv5F#m{XVP9M!TCanq^P|P$tZcD zb-ts-kt_nS1R0uAzc0S44e+13G$5dB0}>@;P4cQI- z4!~CcZNe9Mu~SL`bW!Qm*bHAJfi8gSfK*DL^;QK^iISI|%-tlnAva4c`I;ZlCJW@@fw4U=77Da(^zM2zG-ND+h%NWSPWe* zYslA`i1?zxF1NL$Le<)0;Y4@1xw;`L(ce>8UQ~yU zKRQ3Iu8tq>t{)#%4y(Hdl^w$B-uA)XW_5RMcWZfPWA$Kf`)GgXsJeG{e6X{zQb#G}D{D%{tT-&~$P+FPw`uWUS++@0?| zt8P40Czx+cjtwu(&+KilpB+`skM|ENJCDz*$A|leI}Z-m$M-j8-?=<~e13eix4FMQ zd$Bcf@L*tfec^jDT`^uWJpc$sUWQ%P9N>lq2qp>UCkA&2oiABrSBnXZP*&A235m+) z5i>U+FSvX6t`HQ&{e~E!%uf_b2p`YV0Ng*&A|^n9Qcy@J!VqYtA!!nR>^W^FTgSbp zdlP^7c<&D%@BH0Q58toOTx^UTF7_<;ha(=d@%}Atq06oDFQ07w;j`1>ai*H43yNh`sxfmlVcCnB*TU*jyHp9aX|*3$CxRa)E&E~9fjXqzc9gWAWSnPN=Xut7 znsulv=Qzzf_R{w4lx;ubI4igw^|&rduA_|YC~Z4VQ?yBaVlS(_@g#vl%VENJoU&YI9go!ZlR94N0t?l)k@+lbh50b=JkHp66V{EmwUV}Dtvc=< znT-9i;5t{YB03)y-0Hi2MfF|3M?GB+dpggHu7|x{CpqU%+_n-{XHivRrbD%frXGVj zRBz{5juN)hv^rz!BxP0maq2}s^=#B3&QIC4Bj(khX*F!!ia9C?M=|uRGbvwOSBp-d zHMhFv!cO(BWyDm8Pu(<)rs83RAFg2xiX%=tge3ac<+OUn~x9X&$q^ow#JsHN)vslfoz~RW}EBrxD9vx zF2m09*gyX6!$17={I{P}fAM_lz5R)eVgJd4;?teccMoQc)`us{;fFh8A78G0bh&Z3 zGF*n1v~P5{r@x#@C;i!UWNdVB zba)_>igk55^V!7I#Msb4Un&_*r_}JxjO%uoTn=-4dkf8~*3Q?!Xer|-&CO5-n2oeq zrUs&P1GaHN;y~nqF!d-PN~l*{_lbZ$$)vC8sDZpX zaIJWlTw1i|Y5^S4FVJ$R(uFA*uS1hkVmhJI0Gd+7$p9KAj=k4QLZ%M6=jNsOhW8Xy&L9 z=G9kUdGpOTq;}L-LXp?SM4=A&=n+exr3h|meM5kr=?`MD?OZ2C=o*H z2ve#|iIfE(1n_~hvUr2MR94SRDAoe8Q`^i@8$$q_fhZ(N04>_YasFKuDq{m2)QSMWW~nKm24z0X?|vW;UrE!Tgx?W%yLJHR z)sl%{8WfFT*dP_5bfP#PQ?)jFvDUhI^A@R84OLg$QVJAG(d1P|Xt$M4OC14B00Cd> zP86%^>+4bFbUIBYqs7AH7zhOeE^~{=R3CLWC%cXP2}k_f%gb^)I9dpe7Q+)gvB{pu zcri4T@s{JA{i*JeoNuxxTug|-gI+ySk(&0ijShCQM7Nh;F zwX%`EVtS}IGd@%v=}nbW-eNj9T+R*j*?<)7P6^KEYusd59Y%Y zLuGz04)>L&#z!{RR=3t3tjv!tP4|zXrx+^7UCC~<-`1Q7sAHs)K3mLVig}D7XS=EC zc1Lsl{f2x0;os9AY6A;HBKNr5aoot<@FW?x$YZ%U6FcdgbY^-uJ`sXc-7^sIg^=5m5L);|fjAQx3MHiXigN@wAD!e9 zF|iGZNg&qMwlo->?~C*VI(hUptvx}*P|7{i8y+tNd*Yn~nLuCC zQ;xeQi-FOcZ+GCnOkogn{QcK?>G&0Wb|1Yyq1P8bG@bMhQ0NUy;VIqWp2LRaPvp^ z@4V4;?=7yz+i(2ae^c8tk|mSARfKz~KJB6>>5v!qYLTm`WCVI%LVyN10+ENnV_KWn z9>O9Q9I^n-owetwakw~{sQ4UObc%qCy)=q6naJoNsQ{XG(RJ#2P(ny9NfiwOhu!vI zVQzD6d23UhfL`5GCr@#0tuOEIZtQL@ZmmsLcNY)$caQeBPY!lZk18kC?X{)(o?JQ; zkK~fkcq95!0vd2WVaSAsrL$Hj$Br!cO1g(P8U`t%ZXSd&X3Eh8Ih?m9Pmx~ z%qs!&R#+Wsz8f;{sLd&JC1R;Wv?HRT7PUVWv#JxLVwU}gc`ImK3#vz=cEhH_m|5*> zsJF>#8&wsxEoH67ta}mis%N9B>d`7Ps(qpr@rgM&<TxRjVcfDA=veU^HbSP|kou&Z+V@eLP{zZ!GG5!3GMpq#hvAO>K)c#yQzufH_QS@V zpkX~^RMm`{so;6WaiLDUQio4nsMFKcrr5*0L%m(7o}W^6JV~k}*iSO{{S?+Z4l=H@ zyz4?;?#Dfz%VMW`kV<>q?@_VyqUe6u>$xm-o#)+WdAIUL+O`=nFZztDVRd@faYCIx zg-OcoQIq=0p;p0@lnrCfw6oHePNClB!0`2lCRTb~G40VbyPZ;4@D6ZBf5B7VrkuGUJ+lxvn&~cXZIt zrT#_V2&zJo$;v8X*bxd9RZ)Km`jcf^$!pBj1Korjt`BGvSv&7_2$P$`iBQfbh#(P)!k*!XA|X~JTk+BeS`g_;X(E4 zU%4k&%%@@zpRe0x>}bK5mgdISUaS4J957@N(#rg>X>DyKWITk!fJURM`9!NM)udhw z#RxDylO#~fif@Bd#AL2QIm0ijXXYndM5-tRM1f4A46_Wylt@A3BCneIv{?XXW~x{4 z0KcrhyDbICLS8AI5GBHdfG@Q01u(IJO6gFuy#{Coe6k>b*#LQ>R0@c@gdjvM7K#8I ziqLJwr6NP96OvcMsFDhbPB=ubgCvA$cfb@z zE7#T45u%e7jI3;E4m?0vB8+}AidEtqpq!-vW{tXnX7!8bqyX8)5@}f=1R?UmAr+gY zI00FJUN3<##fJ!sPC{tOOE03QAp=u$d2KfVNE87oF2Xv9l0|0bt3ZOOHYi$Gple_?vzu$LU!@6 z>Mq*;tmuKSIim(C6axL^6>CR0qRI63;^b_(1gNMoJWIs*$vI6wP9Tw68$y5hf5x z03jR!3R$E2zVB;6H2H;JCW(hdR#%3>NCC3=krDT0+A zu7F9B2*8I!NEB_NTnO<1`o(6wb>Lu|qykYwr~~}~wE(xXu#|lejD#Qy8l(scMUw1h zvvxAKwl)CRNfFe@VzEeBNYYPgQ@ke0;3;L1T`DM`P>B)(3Z+|$C3rwHO=ZCn&Fcz? zk;-a;6*Z$J!qAi}cH$69M+_!n@L>|AbTrE%UwS^EIE;rwC<}F|H8TRkJ7{lj7YAYn z^+Guz0*C=or5vX{FoirEfF43ww?iNUh-!%n(8voPZPWstdNPi&Lci;G<6oe_dtE;Q__d#u23O`VUv>F2Bm6n1jfR-p4s2Y&w zz$$Eb_0`&+J-BgRdF6+1-*~INr77xj%$0-1usIU=R;9+uskwpVcriSh4~`c@bA!pL za(p-&9M1Yja=xkFXek}WD%q3bN+;v}J=wu>Mjbwtij?xnav@zvc!vhcYNgTF(_bzQ zluJYXJ)=YAf!=(%kQp858A$ulQ_RGP4)yo;mI_1tWv)^#nF%@j;*QCo;?nHI^6bds zXm)XSjNhy43*$=@J&UvB{h2_tvpw3`k@nlTa$)t+eZow@CXa)~J*H@v$!Bk~x7W2a zHOjNP+;L1~+;MX2>A#R^4gf6!CLEyOp7blpD>8(59cxkyyP8tWRwDo~4G15D;}HzWRWGAgmg1H z6+K)`C4|OZ*DWU_9Dzs@0{9dGfeZwiMUqYq;A~?ixtCM>1Wdh;^zQnZtEB-}l>^Z7sK5hPrNBv(s?TZEkA6 zf2+0rMn}WjhWocHEq7dodRyz=w)(f5?!4K0Pw_h%Z}MxXweH64H-6A?>&GqiZ@1RJ zU4QdO|MuUg2baY2K-)N~J^Cb0gCGhd3CKQFE%MJmWa#{2r)U#-LNsuLh#neLt6%MuD*?3DXtka%^+hdN7};dZ zpPU#!KG@&e-rU_<-`-r^+gw;%np~Wp-rHV3u2!nMTZfhHW~5lz zT)H?p80_!8IIf-@RWDADP7e2$W`-umN1i^qc<1rO{^sJrQu%P9@bF;y(b?Wfb-S{= z^Wpo?o<6?(o=hBc7~3m=~>eR#S&HB=hv&1O^D0a91n6Qw}cY{0eP$+MJ!wuwYy|h`%@9~feO`jmD+n!#~!J3owh=z4ei5xRqeo|!?@)z zp}o_mKHF!iZDvK)_v0WmwHhaGQQv)wTDD@={iHf{=`dwKRwsq4!@|{9?bPdR>VWW5 zb)=O2IBh@4IZyM>Gp?d@KWndK?1$>ObmwJBoj86jXE|kTCmHq3)N#suno^(SQ%6cE z8%&4V6H=8Z)ii8|OnYhz#&{Gp9)vrN;>K#EV?WfcJse~{PMQv5#{Gy9VfFT61lq6{ zF>Zy`LEu&GVX@P++8er1AM#VL_?>IdZCz>yV5#Su(l+%CzO+32V;MO*(+!uL8T;yHU!Uw^Z~y83^yB^c=f}&RT&(@% zot@wRKw zPtRxG+Z#TdPCQx894-|5(>{B9L+iaa+8b`(y72~U6GjH^aS8DZfMBd(L}rYJ2KWld z7y@JjC(oO2{McmdaM-PKyp*ro74&!7tsQQMDd=-Ek{0u+bTXDvOT9!P7mr5+BSYnd zxyh+<7JHdeKAuVXdy1){fu8Zv0fy1R{$g(_)2sHOvZX@0uO}N1clH(%lVby=LQ31x z8W`yBDddvH910n|SyM(bsi@cE=$4`Avt5D18oWY;-lf(ay}R91?U5}`3hrauJ8AW85^MP3I{or5-MM+#zT&BVpD zMXFSdyy66r#1cX(juQm3k^l(PSQMwb7u8rAQ!`na zAyI$;z$DE-HCi%4;7oD8R_eDFu68O!UE^$!wNdOQ`D<0#G{2(L)HIC`>T`^Q8JBhGBS#BpIOK0HV6* zk(5ygf?DGr2y)2+8~3sxhoCGpsP(k=mV+$X(Ts-?CPaz0)$$5_B+-L238jJ z3jF#IM^POrB|k<06-R?W+)KSsD}dIc5C}*Ep`Q}*gK*F(nh}FTPv~fC@w%FC=?%$xJeuNrVU0`+fQTQm&Lw=TgyB%wNjJ zMh1F^2g>DQrY9ZhPq-e;jBc&3Y^*G-E{rcPPOr|7Elm%N_UF%R=)Xmcu2#feg5+X&*J~k4 zgfE1o5@HoubZvyf5r{mHsEEA;NdmfZoq#E(5=E`Lt2GEya_K+-{`LM3-~dSl`fV$G z00%$_Uy|S;OfGDYjJ?V3xpHVY>0BC&&G)Nod%Czc*E3ZLE)FKjG3P+iJ)ZaXCps7U zW9pNX2~U5jdo&-IEr*IBYc60dMqSyUHQ}`c9Ic&dE2_?8X>uDH9Ub+K_Ii7JovrPj zt*y?~e4ERnj*+_4(Rj0^?ybh#Kjvzyzrkg0YiMh{eednp>u&zI>F!&tbvF!+H;wmi zwKv`(+H~iQwuYO=<~uF--uj>Zt=c4#76d}mUO+Z(2xVW1@H*7KjwT>bjd!)_QxBO3B~QwrY`}eGz6fzbtaH3Ko$z;z7*NxFCM zZd+@s*W+1PT3laV*jiiMT6?g*GQYkwcCfouRoC|Z&gS}qx&Cq~7WOBjfqW{KjD=&- za4HeYWz)rcrjU&%;}M_B;xaY4%*}qcDb{UWo*6!>tX22aY3t`FyPM0CJ8KKa)xCqt z_SV`Gr5qnr&W`stS0*-B7auIn?QU-zAM9*Cm^|B^eOjG;b~t~zJ5yO6e*Wa-aDVfA zjPJ}745myTfMJ(;f;j^Yvy|*EF?=&~z$caQSD#(r10*FoA@Xp@$mq|wFZ)pP;vS(8 zKxxpXMwtwdC$Bz-0VzV~BSX<5PumdHrnB0I|72odR-nO{KWHIjnDX9w<43KHcS=eB zbYE&=FnPGx`_=QKpS-jGlc#%MKHdHNV&#*gxzA7LKRa3Y_-Ntdlf~bCw12!lu{hQ{ zKh`@t))$F{)dU#`M10!I@1`L}4!-n6u;WuroXQ0d*LE~D0 z%d`gd)-eRT7;yfnowV<+tUt6I!xOuiiTs`PpB`}smG?0Htmf+tM&+$IzdVM zK%Px~7cXh8rtHVs`RJ#4=V8`ykaZkuhmoIapYuD*TF)}-Ej)GPdD0>$c^}2i2QliX zHr@8MZK-P1xEbi!2^;o89hE?PHEcMH)eclT)L!mW@As(}01f*Q!*&=+_2QfMfj_hM zIYM>*`f*Y{sCAmQU1aR%YM07(k+q#??X@GZ^3Ic->mbdg&dItcxQJFWj-#CGOgkU_ zvY>XUF4abr>$2GSu+$~=8THbROW#jBj*w5;DQhF9Hl)U)UCAKR{fmV{?Yi0?(w05f zlQg{G1jZtrG(jb7+zNDTg-m-f)e71(Za7D^cr|L;i<+mR?$K~(PCde{^8bnJT8Wze zKx1Pg0~gEDw^+=*{;Hw5E*tI~$%isN!}etM>GtUJ-LdC;hyb%4G6vA@^*v|Le<{-#(uD)#b!59?tyX!}b6E%j1ic z(#B}?a4vT=pDP88_V#=B*4w3s^>S zdu22}-`hP|@RSp-Zdw#H*0?3RCaHu`C${Pp?RJKF;@y`flVTOnwU`)nPp z_qmrDyJbL-l_CUD2=0Ao8QJ9?hbfYTvUZdt2*lvrzV)`!$k~<47`kxjC<6bB$<%Ni>A$h+G$xDecu402s zU1F6i#0ddrUu{d(z_6^Wzk;4is&JhtEkY7}y- zhqBO$f0*WAO1&f(gaD@0U1)(My#zf;iWVm32`%kTDU_>u;>9KlG#Tm$+R7qytlgK&K&eS_;KlLNbbffNqj5tTQ1H)(Zk~&;SR%BoRugUW(*GOz%IE zm#RsZ15`oJs}=sDbb(YEm(ny4Bq4(^K)*mT>KqhGp*ROZ90i0UdV~)LkWnk-hm3m+ zdT0=dOs@h4tq=%qQDkzXB0*ndT{)n2>b+FM5SoqX!THKAtOneb*kYA#RfvmAS$Wi1PJN^4U>5R zB}B0VKZreK#7KG|KE#vAphT^+ul<2pKt*)Oy)VL2G)ziCCxud$sFk6TQ~@%mWzh~K zFMuN<9N|+gxwLYW{I|}Q(iTM+gA=6swKwlHhkL!g`}dnjrD%+ij*3ZAQ^|tE)dtTM z_%R~x5}T=%-pYgmWx7@!1P~KRvZzM70!%{cF5L+yBSSus7h$4Q2lJ?-&GxPHu$(6K z2)WPN7U>IMF{d zTo^3pCq@UyN7c4eUr%8mAL+@bvMKc;zy4x!pp+i&EA{o{bLm(*9w_A!Lw$wOq4H3F zPq~mBF9lcTCpOlW*OnKTm*$oi=N`Umji`4|83Km2>ObwY~(2mv(B z#Fz;o-UIMq0+G2+1D)3ONUsxBda6zfp+ilsSI}2PF375ZhcQo62yq%I)-6i`j!s9WM{AcYXu z=^P#0L;ymP2vI^qwl~}u%lj4wqEkiRLSJOQKQ`AFTOZGDPUWY2!*l)d-l)ACbB^Zx zBU%4+Z)h;pU5dC$QP*I)d#V)djl1$8TP|QrdCe)m)$eHQvNUy??z;?XL&|Mva2Xox z?e*5ydls&iyXNNGrlwoQ`?p%_-fC^Q*<5#{`QDrAk*N9`hUR;%4YwL@ztMc}Mtj3e zOPk7NYPxM~zH4l{Yiho0ZL4cmJate9-da#A55>W zEF4uU7pF(n-PMQ3yQ>f8PY!n9d*^(2Ywh{t)At_kpYP7@EtQYfM?d}W$ys&vdrT=< z$ruV`I$^>9Z)=|l7BH+c&I(_|Adp0cMLDTNVG5r~j*!`!jItFaf1N;s%zxzK24iZ{ zImk0P$qD)+Q8{7qtlBcNzvU?kySJL_Z*`g) zw`O|3c<<2{&yGJlTYI`Ub-6zH;o;oJ#|!UO=gv1Kw&n&7*CtB2)YUAa5chSbeO60z)tO}imeRlV6~sYXo)QPZKe*+kMt$g&nPZ-&k47^%2=wn)9ir|m9rsS~E6 z>P^6dnB^d@y~L+|PVO*e+lyJYB9^VF+Ne5A*$j5b=WpNP3bgNrI`+ecLv`S{Iv4yf(s2|s9L0@?F+(+?_y;jlC2HCT z8L8%8RPDH_qt>;py5odJJwK%#lzx%5UuGTJ8-LD=tP``(GRo$|v|}e>t7g=8)tP!o z%5{=;o#fr>xb#w|+M+7B9?3&hJ=)dVdC}9knR3rXoC86(zBu?3m$uvi5UG$a8}iCu zt7?#)BelK^jE3FVd=xWP!v@W(YJaT~Rp*Fp1WgZumbsv9I^+mT?pm%FrHGPmLsA3x z8yjAK^)K6-?zye)F5`X1_uZM|)2)%?`P@4@6YuR$zgL;~;9&aQ-HG@1CO+Js{Ahpj zgT1j2E2BR-o_=?GWU)W$vo>2h?z4L6i&&;I_MMU7=auqbKb!mAv&BzO=iWJ*|Me#a z3j^V}yD4I?Pr4dI);f==-q85ArL}Ib5ItL;`1E+;ll`&xxBEUj82kKa;#cpi{PB~@ zuioE%w>tfJZ~6~EIsW5UXJ0+v`Q+isI|noGpFen7ow?W?ezG^VJ6D`52S+kp{R!uA z%Jpz_=wvas+~*xlI|fqjjL*c##R_I)B6GOZGm&?1O(gr%-OUYmWicl=uYQk9R0aW} z!iU2hjj+gz7#!|*l*ql$SPT;g^L|5pM|+E*z1i5&Y_k{~c9W;m=IyfiJoZSiJD-VX z)6rPO8xFYR5pOB49(o!b>KhvwD669xGR1r{pNYX-n4cXU?CUM2`+IZaql0rZQ)-bn z&@(jH+uv8rrK3>>>##o&k7UuANu-jo4C_IEx7A`abhI=#-Uy&x}Y zu?h{euS^i43MPO+rwCx-^&}}5c`^#1k%3PZ#3aiVlswi-i4YPg(s1XeT$PP_$B%xY)L4zpQ8x%s62!Vju2B3v0StNT18de;X~jF z2vR8yF`%k+?GZD{2onxbnAd-82_Hb9lMOd@_m^ z^7~HHU4zC~fJPgklrDAxm^uwe1rRW`@>Qx*q^Z(Vg~m1@G@(dpBC59HBKQ)biarmJ z!Eyjcmj{T6ll6u`puWDI`s%kENl1!qgi@lEB|bz0Wx+&17AhhmMUbT9Iv)*$aNtW6 z2n|G7WB^6rb|5kUJupR507n&k&2>^W$tZ*@-naqfek7!(R0N1N9io8{Z=;i{2}Hln zQRQ8Ms0br~1{4BOPU+%a@v{^Mgb$(B;QOp0X)IC^go!pnqA>4ihgeYs3>LHXCIiqC zML_3Blp-|O);tL)NVik!BB1~mX}c$C*4DxL78$7sMGH`3He0+tAEKR|oz2b7D3`jR z2YI4WG_5MP1swQf1d@upCZJp`sUij_jt~K<4xl;+Fy=5aYhJ1iHH6SeQZAib>+))I z3NX?FJLy|05i=(7=^k2j%nrgztW@fAF8$A5tAPE^lfPi$+S6_Jr`)Yla zhSqi-uXkN)2lTcOLe~Q*l&FY_9|&t{>Y**|bo?uH+Ra_owr*>S%TVXFG?rq{{!~{k zXbrpC65WQrq$j67#P{N9DQ~C4?>1+m{-oD5Rq(D1C6)%0)8+VZZ)UW=Fgj2iDi?Z7 z`H^yZu&=0oMy8X!g-mZYGSFM->nZSCrkG8Y^6C-q(c!Xs=DR01i;~&VrTLlpnaTN? ziG}Hr#i_xmzC?fAk@Xv6?&hSYBkXAIHr4rUP1%5*Wm~-49QRtnZbRH-NQXL;etXhm z$ORoquX+k5+GPy6+P$`xw)z|Q@4j{W#_K;~4E}Sq5|dj}Kud9N;w~IjV_i*xLd(P| zG`JoWLV6v|EleOX|93#q0w!ppjD1fbN7#MF8loBcya7Q6vfFP6U!flvI)^ zSCfW#MzhV8p(KjV$N*9n)X{WL3`S7@mia^%uQUj)_eB0d#?6-PVG@C zZCmQDt-a3CQEzLzYihdHR{wVU{X6ZAx7!=uHa6WhHQ(Vf+`rw?c+1>;7vU~zYp15i z+E#CFx$7|8cbl4;@7=h*F(mkt9BIv3{EAbHTmdFc52U5Uu@KT9lv3@jRp9_#UQ%@p zzGsw!ARgTgdkH>UlX znxW~Ap{3qss1G{Za#7FNKyh}ge{Q_Iy*hh#xP4w-+uxi$*jqa}+CM!yJlx-X=ltO8 zX#e@6<4@i_yEr|5_T=#g?>|31*xp+!p|9-5ZE`Sy)2r^V6HxHyc2Nv=cH{0v*+m;UKK`qz(e@haux( z*mw{!RD&IdVeORbnB_2HMqoc|+zoWBc6Tgw8J4?ETS4ny$h;S^?uO0s6xD9XxEnI; zM@)z6BYpP6m{mOW`)%5juXr&%2*Ek|j~Nyesa z2B~wV_EVOPn0YH^t)^{fIs1kBSf1m&;836N%i7Me*5iaaTwFaB6_v|y6zMpKbW}p^ zTmJS1PwTR`eJjwhAA)Jv3%2k1+xCO)RdsH3Gj_F)rtMWJlQP;7=GvQj`$^kI#JZPsp5$E@MYnoXs?>Rw zcU_j;k9yn}CHGOmeVlifqAU$xwCqclK>I%s4fqvc@k0v&5hRlO%^Gjv<(^nvfQr5LVJ19X=v&3p_ceK}yX1iv4gR3LS zjq&X6bm3xk;B>L{Ym9LIs9>T;`8I#pPtTsdNA>P zd*u8~#EZKCOIwGB?xX58E5lo|cHCG3va}#dci+sV;s;B^PuKe&E@m$m(v?x)-dOnA&e+$_wtxP7>o=bq{QWO4e)<0P zlbwl&TN7VD-~H^->dD5?+(2|R-~DjCe|aD>oOX@nI+q7S^QF$ciP*+)a4Kt`%s6%? z5}EFHx24r#x0_5Rec0vplzWpKncJ3oS?+5YC}c?CmWK}$AcLe@0A4Kt$qS!cvKW;y z9X>Q6VomoO+gh8N@7GyOZ7zq|%?MyKs<-)E*6uD_H0;y9k=GrI_=~wjPcbt#GB`Fo z7>fjR*+edrD5@o0zOOewF*YtdbrM=FriOa;qXkPC+%Qic^ikKKCeiomb)M*{u1htp=Xd1*Q zOSFBrB6?nFCaKqT=r$0FotioS6KX|+GFJnokXq24Y-t0Yrq$+Nh$=TU?d8a zFEpB35K0t#Bo`bp7>F|g#={ptOGW^p10^B}A*B%IHW6rQv|qy-;K;29Q#>PX6y^9q zT&KBE$&gAFv`VYW(uLqNry~p>;}L+C5|9`BRgqU9idq1zgswqqM+neEh;k&!0-#k=96pbIK3l$`!UW`Q!hXbbG=p+$E zp*SB6qE=Mt+Ju%O2%*UW#Lo!8#}W~P79fdQ(JV61HPFnmUGfM38itN(JwlsbfE=$P0@+9ggPyLkg|}$!>rImhEN3HLy$#`k!~ZY z&|;PF39&@46da;3F@}{Pa|**3dATdOJ;iL1B#T}b2%VPZ;mOA z4RnC31GCkHF6ij!fR8rOFF-RH?G8t0S66d$Grd>WDHRkN`zaAXpkF)&Us9z|Kol8_ zB$QOlmh2D$YQdPyNTnM9AV@-<5;2k{pa|N6wuXiP!Y41SPj(jPYEw#kPXaIia$l2* z21>_8;wxy>HZ(L~9#PDOpg8e^l#T!urz}80$PlV~{^}3mTKUQV8u4mdO7pFD-Md#u z9kHKk>Q74%ba!{x*VmIomBk)hB3=U6NkJBiMaf?Q{Rj(?M@$*>$}7qXKl%}b?-OgK_qtzl<#E@;mM9X`wbfTJbuwM0Fph`TN0w`Ba*M7NnM?YBj{ zOp#7Q#N82av~`&p+=e=rq0ZEF^X^-(G&eQ8^1~l+qe?%-OE^S222s6}2>lY&EqVog zq!kFW7Wua1zYJ~6R*+EwFm2HvP$GPhk>!vOO!SB$4}D#Ormq$i8t73%?G;{}BIl039Tv4N0&i-43uROAKHv4xf_gwSLGk_1P@bZFu)07n-Fum14+OMSli z9`9U_f3ZKjQ1-7+WS54M!+31#yegN zjbysBK2zA$O3&%bhr;f5SI0e9N1fZyU~ReMY`YPxM{ zx$81CwAQ~ZElaBjWMc@9>=Oy}=ygdQFm=>enjTsNw~JSCuk?+VKo*MAA&n?NUPcTw zh${Td*rfxt;(tI?8&uR_E8%rqZzE}I$t!>(MNlH8U=p-20m2dj;R}Hz#^ut<`I)Ju z`RUoIk*U#vfnqwJNhIUZSg&Gj7-(!-X@?s@4GZ2F~Q<2P1OjHcr47JQ6Olcw@ zla>g`1``AVgscw$8jxhlK{GX{Nwhhxb{aZ_h(QZj@rwp>$*|7&E{#N#d5cuBQ&L5_ z*h4OgLx51GI>`>8nJNgenIxu{*Is?aW@-y|n);HScPg{*9?TDybFpYxy{~sQ9dcy@ zo|S-UCv4senJU_c|0@yWuD^ZL-?8Rbuj%cE42MzEk-ChBVM8_0PIwUPs0Q1sYF|eC zm>s!-hP{BH5;ddhfwyDPV_5MiwQ5f)sy3KVzK4Fb(_z-OsI<+axb;9i6=gnDn@6^4 z+_Dxjt%l9pF>5ucKJ$k{?X!K>-LQK8NE6mJsUeFxXs)S&y`@ z1Rf>{t%q?0P-QtzS&q}zqm=ak`Ka+IWl>K^r7YEiX(epfj9d0o>g~VFy!|3?JI~qF zndLeAdDeQCwH+r+2jPxNu&o+a&q*D{O7kmE25nCAnN$` zwp8t>II+>7s}eHo1P!YJ!+MaW!~>?ikU1Ubjs<*LSt`q)z5+p;%|<_Dsb{mv{`h-a1Lq5w z!^!xEyCXk69RGZ;|HJkC`>WaYA@!w|NSCoE?mk`0uMhZ!6Skp*W47d98i@9%Jf)~} zH0K@5dsALhZ`2*MH#^&I+gskYHr;5t`$k7geaPK55H-x^9Pg|Z-`gEJUC3>Zgbt=+ z50`UaUrv2>G5z7;Y98jG;2rFed2tvMk5BRUz;X;D&|ID9p{v?N5k++|(=$ zkt8aFfGA*GhAA=LKx$F%M^{PtR(pLLl5i&VZFG8VZlmjxaz|?A~e!b972pKUo96v4ogqIQ>Q|*+DJhPOXcM*2@HO>{0}Vtoc_oSJ(66YMR1Gn) zT(k*9CzWNglT+TX1P|+d6>Sj0WX(Y+v;Z-&UkCsbZSC#tgyf|NSw;XUPVCfyRRDri z5d%^MT~g|(s(P)m5EKDaeht?Js3UqPT9?EXKxRh7a0t*8sGCS!1YbBnn8=F{MHp3R zmYUK)RF+hxb@&t~71WBWSpsyOiuE0!R-e-;p~k%exs=h`D1i;~I~JxGBLX5Rc&Rv| zLZhEj$OUAa(RC7vu;x?+^5J-Dr-SSUgFzaID9sJkIv5b+iBc&UpQTx) z+lV%S=m!!N8m1`MOi&Op5g-%+LIyNyjidl45K1Z#Rgy#$doWV$6obhtkKXHiAoe2w zEqs94vZ^Etbzw-Mi&7nuq;}VDRX|kgD+Crt3bKBm&l^ZzUnZ-M_7!Js5k^*vw#J#SVFm2B0w!RlZAGdE+?vp zA`G|%Waph!ZH2BNOL`zneWJ3u7DT-YimkdDsKtPNr@}iTzL=jjbphP&xsA_A#4{(qahmZuIslLHr zyjCgoE+I+O8s9eEZ)|L+yI+5&t?{<4?Ow>$p7NPv0rgOrzAaTsN9G3-OM~%|jAt;} zIaO2#`popj`Pn~F3=Sl_ic!}>Sc*}1LVH3g6R>B4j+D>FC5NMUA{%zy^TPF2# z-yJS%+dX@`+6U=0-S=3UeYO^#z13rBvNYdruY1$de5^OxO?CICe0Sb{li8^L z?#-yj9CRDFqa7WM#-=;=_By|-JgxL9*xts%Y*H@`=PsR`EO2$?XLewZhiFdztJK*wm3n5Y<18D5#CWXB4~qze#+hC>$I zL=7PT1oNNFa5CqSUG&JD#~K2THkLDxdaz8Ma^ia#H>3}+j_*h z6}9ds@;Y4LeF@7;RSVY6Q4(8U7z zWMpSDcd}G|xHj~BZ}Q`#*^jEz?^kCazBrrz@?znqXA7SmPJeYe^V5^5k19j&Z4^J; zDt%e)|K@b$o73T+?)SZ487hS>-KP4C*YKb(Fj?rHDFq%3#WyCh8{?VTzSv|>c&axt zRtV(7j-hl{%-!NO-|K9@Wo~>c-QDgnHyG}}?drHYnRV@rg&(aHj%Je8>D1?EOJ6_V z|4(0@|K_8;&(9Y>I$M1AWch>B2Ol2KKHeJIo=zVv+aro?dBV-0@d6pqaouAH!nA=+@5lW>d@Dz(A?KDC~@181w!t6Ldh$4Is-QlopRR; zL^*_vLaeKAzJ0@FY`0kq7E`<1Wpg>LE{8>(iQeT1_&YP{Sh+V}DrB;(%+wJu@V$nc67D^_iI~sl@pL)uc9YF&bT}+dr|tIbTU-n| zSS3>n1h$EJgfi3M6PZY;n#hpKcqkQ@v5rvY7$9?uB#{>l2ne7hss=<2MA0Kjgy1T7)c;}sxOvcfPk7J zBdWwyWTc4e1z|0Kkai~|N)}bdHBbsn#H33g14s10$J_jNr3ebe3<@F@Vc{@a>u%RA z6l=viXp#U50feMVh$=cWA!-F83?U|owL*(Sgd^G@U`ijBnyLz4{rVCJ2T*+hGyaX~4*24SuAWgmBdI_a5Iw>az?WR2pNddTsV{df^Ed@bEeL@K1M=!c)L0s%ETJ)j zKBkMoS2ffC4TmJ15TE=>D2-QnYpib%4$yFPTB15ZE^0?eE%2VSDIwJ)N;QQe6^EAk zk{4~dTCpEJa7YDWjBun1QVYbyFv+5f)+C{UrmSW#p(dj&gn*+1&Q)s7nNkIzb^W?F zY}UF)4fGK10-P_mo?bQSfuc$v`lTS@5QPSKhUFaNwxj|{lI+4HRV<CTe$a1fb$?#{2n1AL z08{d!pX}GSrR2hIA||;+9vgrdLv<)oJU}P}ssO2Cxt>deB^6pg7V#AXeAJ3Pl8Y## zF^gZSshO;75ReKJ4R`}PWq5}cmqL>fz>)Pi&H)er4q_CCBs6@SkFZt)wYP$Mak#4I z)fh`C#i5zbAjZJdYNH-*!X60JA_GCFThdiKTS}qZ>uqej&!U}F6e9V;?b@~!Wl=k+ zsn{T;U>I4zOHWJH)zx9}Yp=cfW9`jFeD%hUU*}S+SANL9SFhZQW=bRkq86J0gfJzQ zvH(osOLd@;lvHfvCVFXGiWog5n~=VM;GvFTQqsXpm7=OfN+(9#!o%=Lv= zCvr=pnSrD$=xhl%n&aKZLd02)cjiOLII=-!I$)1=8GW`UR*ZgoOQh2n=`;kLZDF^; zYgJ!WGd13Dchsqagp5t*w))1q^ru%}|B>37RDI$ayL>=JB&w%Ml3qti`je1U#H47t z2Q;A&Iv+qIEPTlbEoISH@vYutwcNGw0Z4W@WC5ZRVM!HXAw&$k`oq5*j9GVQdk@qZ%)Tj6E zw$`aLq^zy??Co`(=KGzdCbto>#x9F`4KV0z=jt*wTAOddM8;)oXsy2~EhyVVG%=ph zTUnTTDv&*?mw===mRx$%NQco{RdpW8uDXi`B=IMN$cupFl2lx(`&=3hf)E;?(_YeQ zj0rNf0HJ|Ikq3GM0SMJ{TFVkjQ)=y|_%JC^Kq)|{g#Z{J5HG13YQX0I<=_3!Z@&J+ zH(!4R0?z;Xzx=ybfAHsTzW!=k^L@sXk-mH?V4vy@PxMB6lHN?vQH;9tkL9y~rjdjH*b9$%hZp6-87ti)n*4I}mSxr#Z1ah#}xOjpb|{J>_4B7`F|8DcCN z7-w-J<2y8-g2_OP46_c|q0tEwd6;@$2-M2Xkw^kmp$8_AmJ@daQI5gTFa?bAq8yMB z8o(rqyy%3}+}zx#!Duw<+W{aE@QnstVjS10z zLUoq0o~zIQaap-eQ|8m8dKhXiY}i&$b(yt~`YE+Lcuze)Wj;w*a85PUb`&)n$JL`} z2jLEFM-O)yDxvo6V8?by<)!*uIAQPc?3x4AWcO z`Czvszqr0#qRZvFfB(LZWmetYhTCrjUB>y5LO$#a`z50egagHN^l+|px!V7JW#aSG z`7h3wJ~^8GfoBZ|V#LtfhzO44WyOuwg zjO>gAE7Qrrq_YsRjO9E#lj+@=!uC{Qceb=UTU;GYE)6GFMl);U*#{%(>AvXdWOgv) z$py^`PkYGGTnL&%jz&xKO+(`izwQ2XZ{&;1g^v$LA1xPt{qDx^Kd%0lUtIp}SEs*x zZ|A2^R)6wr@AJnSAD=Ef*%_@a^t`h-u{;>+k6Dvmlgrv#|MqJQ_wI1#a%1WPCE&JY z<;R`KZO+Xow<;kVx%XuZ0f-UGI4eUlg8-1RMKU784X#7(dO|YFC0bgTuz&(%NYuJGbwdic{&+O#6sbaFBtF!d>+5AD-`G^8jS>Fkzhpe zyS?3=K3{i$MWo*g;dEH-Hd9+$Q(fKN`uaL;uu-6BjKMZBNuOqOeq~maY6`(Q~{DYs0+#=2qg*SGGB@rLcpXoMGR;rsL2@RcnRQDDFqH@OQEU& z4QQ5(fG9~gmWhTIk+MXFE(eoBH6JLD1Rr_PAmsvb0SM8CmoPw-T$d-i=Ez#Bk%d~2 zsu@ySWkMh*LT*y2uMm3DbwU|;1>p-VEuuqg zxGp2aOAx-4B{Zc7K`0dzNXtTK&07QgLHw*M5&Oj$_$U!zj5rN~Bm`uzqBsFeAi_k& z1IRFpK#R->T0)^BF0#y`5YqH>$`eQ^;$fa=g#l!bo)U5OGg04Ays z5K926$cqL6!gv(|%kif`TZt>shyV^^k(4BCz$!xM*IrZhBZH9?BnC?=^3+bu zkW^ePO@IJ|0GnTZ^|jX4HtifPwF&}VT^{nH7D?(t5!be*g8H_UR2B`$Ac>d`i^ZyI z19$JtXN9y`T#075hq0ywH-8YESddU0P+ zC#Gqy3psF6j4h zhO*s58E-k}$_FfkkfRjqqTH~nJ>Y2Z+na;VHnlC)WsG^u(JqtE-s)_>XK8wy%h_J% zF*kXv%`Ri3x%qBK)4e-4e*EeW{sL#yc5>GMI>t-jcQVi>0+FvpG)Po( zeHSF@%7p-O*9%0U@I{s2IxVUIv?i{`5TZg$l2lC~e95arn1bt3@r=-tUF+!z5~bS^ ziU1k0lTbPy9D0=WSOAC42A~lDl8fwUQ~ghaXeLBJ!q;E@f!lDekDqA^1Ba{Q+cUkJ zlZDZoZzSWLECgnI!?R`e-Mz_TXgK37MVzIWb1c`D@tK15rnJwrG?p1JsH3L%rIYA3 zr+gN#tu^3i^V?fGO%3+e+b%=BdRofR&}nMyvNpr?Sem-6EuH53vJa&`$=7mMZC#lf zeYO^lN@}7PX`K7?v2IJVqy3(>^^V8V++}HLzki30g)3-5ecOmAAt3s%wcRM$d(zUs z^^}ti_-GJ4;wS)thw+SfTLb{DETJTc4-wWmNJ5K;fz|?QdW9(pNrD3*V~8GJ2O|bz zw4gMl&^km3glHxdoyu+vs^IV3Ym}}NQVUGg>ji<+;1fcVi}Bsi(dxFgCj#zV+#l{T z&Gknod%|UYZU^j9kJ^xmcU!VyXED~93fLoErf9c?FyQL&Iobox4lbH0#3g1TQZF?&H@Og zD`qB{oS<2N-nnz(smNJ97T*rVYTI?cAcVT zuKloaCuDfg-OjZcFjm6qjlbPsMNe--WHeU&gu%-S(VYIjDmoRQV(hh!72SRCEV+RTA7TGB=ZaG$uO4$yQ*5kD8G;2H0*)O$? zs`IS%G;Kaks>h&?5~kyX=|np*9k;Cd4LcFjVZwYIH|>WywgYYZ;f_P)Op|&SGTfnk z(a(4g={N|s<2~hS?E{6|A>)>Ei#nPLld5qG?X?oMuO>UElP@2c`K?RajRM-Xkvc|7 zJ>?YaBJUnm4jNRIwbQ<6ZaA9}OZ1=FmdXUX=c3MtS~jSJ7uO3Jb@~1Nu1#EL`cBXOzxo|A3DX4)gfpRYXczy86#?XiRlb;>Ws-3CR`L8aQ zK0luM`T6W`pDg_9(d^fk(?8ko`$@I`=VueYcsTvZUeEK5!up`E95(hv%%f@7d^z-B zIJq@dxL6x{v^BOj*P}k^I;#p@8B=>w`wP9NYeR>tgU4HAtJB4q!Ngc8IFRm&b+!iW zjXrCG({Qit{+&d~^Zw<=PaiG4zg_<2qq*Nco%`$eSN`h5jbFXD{)?wezy5Iln-BKh zJ6_zJ>!0jTug(s1+gsoMv3jsy#x?FoZbNQfxkI^O0r#Wa;QIZ}O^OUm0KqLUqcFEE z8X$n&#psdINk$BW5#ZKlh>%eNK)@6Yl8X=-Y!vWCL0)=7>@)RT> zDoFy8@Dl!kAPJ6S(N&Qox%BJ;SP4(JA=#GUzQaTm=la_)8 z=meBPh*~&klV-hMH33SlyO)U)dDN0!N)#iJl)RD)8ijz4p=%ZaVFL8%gh0#jtzYB9 zm%K2sQ_Jzl6$bp#>+L0<(#MMF(ggK)4!>=8g?Bz2)ic#q!Bs(^YSPb%`F3gr?C zK`I1EKsb_06dRP#)$M~Z!q+9m5-D0ZO8Tm5G!~Ld-8JJS3SNo=Evh)=qAW?(9Rf{A zSyDSalsiR06T_rg@q<)ZGKvxu!WaFbN`cO!c>oy<7KaO9>d-xaSLufkx^mQ_M!Lt9 zO0~x%G<-=Cru0~HT?b{M1U_wt{XpdPrUcOFL6TbrW28{>VgpPFahHTTNMcAR3VI7YC$P5@j3GFg$XS_(F+ntR6+`smAruUIUyWj5+VSgWz7#D1T+U` zP=sV;8kYv5boi?OY26+Uxujl%ScPp6l#Xqh;}vin1zqh6~Z*VzLzL9L$CLGlAYjcYijL4?Fww@v(uP;hs!B z;v5?&Wnx~Bt)~&zA66lYUz^?2dO^eYRF@)1l7VeACu?$8Buz z+1o;$=7i4?@mO5O`)v)k?$_OZg;7CUHHgOqcub&2<<=AEqwY(5fiOkjPeRXreGLDT zKtTOQ*ES|3BO&y^Tm*bw2Gshu*29TPcpV}PphYL45HN+%-0&^nF7cS;1&9gAg3b6; z%0*1N798d1s{x<9A|M2zT_c(9`Tp3- zNP4;_JeChmmcj!mPjAdU*&CiLd55yy#i+AC?OC5GO_U<#RChXHi+hYoui2v>acT>> z+I`k0?Etd+PGdtCm#MK^?OLjBDS0W+)^?YWZlfNdGTrC$*;=$6t7fO6!O})vwKL^t zud}t@g-|ktdW1j~ zp%7v-rVU z?XhliDqt_hI&&dsDefu6+&zgdq7jcN>M=7c1YHKVsfmUQINN>pcCWqN=j;fm?|7OP z#(H*EX4aNwmglE0PLIxxs^=%wcOM;p{_Lo-wf62i4_|CcVKJsKNiag=0)}ijI06UZ z8gU0q<`vci%t;W8t>STft>;CU?C=qgsf!RLBr&V8c;%OvOm9*Uc_FmvLCq^jQZCMg zFSZGRLWyJOj_o{Fjj+xJ5q`@s&i^A$Bw%As~5mG;p(Ga0qbDU)24h}scb4VYK_ z=8d3vFJ#ya8MFtc)FV{;>McTbtavqQJcyeP66&z?Ar z-LPpdX5EcgcEYCZu(6_j^R60E#Z@Ef>v#t-N>s-}VY7DnRl6KSwH?;p{tFv-qsB_y ze4xJiXRE4>A#ImUd$I8(WrdI(F7z+^jT;g3u6onZqCGREUhY$8QE4ywooBf$XKA$$ zbr9*GXjOOhQ9t!c6bg4hQ z)EDSY)s$&adCU3a)9s0m4`<)spZxf6>Z`N4Up!j+^^*r*9E^Wi9r(lL@ZY~T_vK;# zXZwAhR0p5!4pkNk(>dqHpm%H7ztZnR?SsMi#&~9HGQTxh+?^@y&h{*iW>!Ws)%o(X z-KqVB{>9<+{$k&I$Mf%=F7B_5R5wNrx5jps2B!L=#gHlO?MVAg*^na{ab8tn^HlBQ|3*HyVR5HzVUXQ-TcB5ZsuI z339_Sj4*o07^0Se+6^oF+Q@K|a;wTcP7=c0@?<9jqyk12^q`IG+}%J{!*I|bMIa+3 zibA4lz`ok25J??mHyGNxx;nc(U2d1dW;NNY=B`ecJOHIV45glm@_5{SzoLC!Pq(Mj z?Q+^|CWq7Juv;8gkbGR6}Mpy87$xdiZ$6o?1Jlad6G2STHPyiy#HsfhNH30Mfk?%q{jNJJ09 z00QN3nwpyRZ7J@lhK2@RvluKkh#5LZfd9oI(4=CC7zP0(3sH*0E!akgJ+v}O81P+) zVL+5XUrRYa$S03xQR5`~bmfYb#xOi@LY66J?90>Z(Q(q1&5)+T?>YL#v& zHxBJ9-499KDzZzI5VsHoB>hRyTeP9$#g>7X2VeqmAgTa*P%A()9BFIK{WZWO70ra$ zhUGBD27x4DGpPbJU=}R#6oD%rcBWsD{A%9#dt|V9#!HcJPcpt zVN$eOt7(6R1f)VEfX!G=7O??6aG*uMXoEv`qS95QP|<+FB11tiYxTT>c#IGMt!=*r zVG>dn{h46|{oKn8jD#q>{@9LOh>;{WxNfIFydk(wOJxP(QtX5;1_L-mbpjc*p&a`u z2;-$J_-G&rjuZ#T1yizP8}>tpa^wL~m^eyboZ~T~2!oeo#J!Rv1osFbGK6GA02({R zy@0ZiVRFY6%BNQYwNml=>kO*5Z{LE6lM$d67;xR6T%BEA)JSTIHq7wUUhz{Gv|c+* zf}nKWbwJz0dZEqZ>E<_wI0s2UYoGz(G%~)XPMcDvN&%uUzYFq8%MwD97t5szVyg53 zstFU0Fu(h>6uHPQ9)=L*2tyGvr6Q(pOR-q>x~xt2Ztz1rU~BeU8-lj_SZ8a<*~(A- zzI0%?7%zlfrKo#)FgMndC`LQgqf8-ZCg8}2U4@7{?YHM6?%|AgAnA#9nXGMf$zYeI zt$|QplY48d)f&{kEjn%1_Wt&{c?fQhvMN-r8wu^x0cHruu-hE$He9xQwx2 z*HCY+Cl$(syCNQ|)7aS7aI@~#8#mtgkvbNg1;*93xIS+REm6UDqc!Rp^g--jfWFB!Qm+>WzefFwkj_9zUOGHAswG@O)kjk+3JI}IOR0fW-4%qQP*iDI6>6f_ zAhkn`uBG=zu>_``3mJegg#wLMA@tin{^5AGb1-gM9*nJxre;h2k+=oUM8QAZ8=Wo3 zCX2zboPTj7J<}f_D+ZUx(v=5&mF2<8gMsb&-i6Uje>OBw3>V^^k zc$BrJ)70dGV{CMG)H~Ym+0~nXjgF26x4HS&TR&oImc<@55=gydo9R0K_Muaqtq%tf38K59Y)khv6c?pq(AS5q* z3E_wyRdcQGQmEF66r}UO0hsg>fi^V#;4i=b`QTl3wiH#uARrSJ!@UgO zR36tbfHI6S{UAV<2*m|dnC3x7{3uR=AR_`uLXejbwXDu{$XqBc26zhPL^Ts?TYUg+ zGzPbj&bfX^5h9F!CN01$cuPC$3RRRSHzYdkb_cVR*Q-4ttnDT++?RvywTQKnRFCtV zr_5&w<8j=e-q%Z7)%Hisd=#}DL@nB0l}Ww67dNZzq=;!fU|R8;)`RMys)MNd^xjd# zq>iA9%0`v8Ii)t9O#2~2C8(|)fBS~7ZKbyjj{QK}zV^8~^^}md zQ=@(2%|KrD5?|a}jav4ChBdXrWmxsAcLw)@9ecs{{jl1WQrk(v4ta>_K-;NNZ`&o* zp-%f@BYG+!<66l0AYfb#nzpqEpbit(y@+-$QbZM0Q5#Z*DtXmoQ0k#D?YS!L7_5kS z$!p|V51RJ0_xlc%fZER@i}uQ!89UXZTiWYy6&xbFR8e(cxjLXdZavD_)rb5twlj4a zlsYc`GH1WY+Rif;wM&&TpQKF3DXZFFqwc5;ckG1>t0Cihpkp_vKJ%v?L8ad8JB-jq z+N*q2Q`?zZj@lyue=Oq=Jtmz4?pg1zUMdA52b9Iqv^4#_G`em zw8i7GN+JElquJj+S^CrSwSRcI@^?=re)DMH=Z6EoJ{|eTSM&evtL@$K1T%QTYnZM0 z7plJPq2QCn+*d~tPdC4Ow)6COX?uQfWvV(}jn4GNCu>obK2wAFOw8-Bba^c8 zqj~qQo-F zXaaGF049<;0ni|ph#7!XF;6q|TM#B$nEdfDQQ0!kokRDN9w<@Cg;fA+#TY46O2-O$ zT!8~1fM%((P>hr$f#iaqXdoUyx!5n|LXbpWT}*%_GL8Z9B82R z->i|qN0OYY#)&DIh0);S<5r@-Wk_EMd zL?t^GiZD@@_c%(-gRdE-fS5Q$lP6s@2QA*#-hSJkT=JP7l|m9347KkiU5Q(4f8zKqLU~d zpi-LbUt28dcS5udqky{*K)EylA$sr(uHfN?)UK{B#Pn^c*49=W_5JVtRawY)SnusPE|Kh`@pQkfqqPY;%Qv%$fh^mt!kq$gR5IrA}3!fQ;p zJ2KvmtiQWIWn*!;FqE0=OAO__1%GG4(G;>Y1gvTYDjl%!;F|JV6JB$|Ya(OJV^F`- z=QBrKhJ?=&a&|++y~eP!JM6K#OzjRsi>afbzV2Qy;Jb52ozVuwnL+@DmEgP48|wce zZYH?5xZ!?>FHkGmxA=Ge?%zo#hkujje+01^NGsD-ZW1&|(oICecQuPEAdnPV2Bv5e z4LT$XN}x$a7+U(g1%pBvU6>_vR)JgTlfznvig&I*WXrS#csS4_}00F7{ zzXDz0wlJkooH$T({7t!p(%dpD;$#2^2*Dhp&x8P4By|~75vAdP$cTVIXhH!rxpaM{iEo!u>U4pVC>YU|5*@=-^~X$ZLtNxy|F>@;{S?Tq(`t2^v6MBGN^ zfr#4_bacUtc}(e`t-lma1nm)zrB+BB@2&mfr_aCs#pi#4SyYDkQRY(sfv4bOs~C-d zaP&5iS`kWi@f|ckUMeql3+{j1YngKi0X2uFIB^8RxLzh`^hlFHLy)R_kPuL!xKe1! zVsZ!AEcbZsOsGO(eSN*z!cD=d{SyDpEh-s{ET-L?S@%K4p|+gTmh-eleHW&F7tefI zu&L9yvzE)ORlP8!&XcmJT`KK`CUr8D_9oPE%KC^aX*x`px1(H^gSho1X*tiJO&#ei zXC$4bv>)b+s`sSSMo-+d7c(Py5V!0`4BHWdc2>GNK>Z|cdK5RRm#5SbRK{cV*_v5> zua~xBq;`mvX*X=xix>}Lrh|xaE8M*vGElTSKs{nmC!K2_`eBc@VPw)?hEn@S=s8MR z_7iFoO&u(ivhF0z8&QiofLtBHZl)sIXKU)qwMR*{6DRLO9cw2{?Z?eZERNZxy|`&L zY}|;NcT_D*$8qzcv`xL>V{v|sd7`&O3)`(6S1ZrcLU#FYSv$d2Q-EW1dWS zYVklR9@1O(&s^GW6p$UCaw5D@@NVQh+bP?2+{}eHs5=Iqs>8gfwR#y%ZL#6Zlyy5{ zO-8~uKgLJ?x44PlKrikFsff1_wwA)?YSc8I_ssMJmj~j9Glij)wHCK|OwA2SU7KVA&~!{gEI;qYkIK3;H5mc2=L zdwczzmbwojZo}66@XknAx<3-$9gaL+sXbmFc(OV4<>}nx&5_;dp1qms zqow|nm4P>>i$6VE{JSrY|NEa_{{1f>fBosf&z^0)JX^lln>pT`+*=;nn#?|0>fN8O zmBQVEp?b+hVX z?8_V?^Mep@7{82MhOJr}YLImsBbtebRA>Q7!T}JnE~Io>Wx^puOj3mwoia1P1hO25 zi5MXQXaEq*KdjrCpR~Dzg}chdbJM-McdZt4M@KtPK$tB+m~xQ=oPjv0I8SIltoB!fLy}SoiBV%@aC=tM2}uIK$IpUJ8Nt%k|=_x znzi3Jms#6-TWt^M}4l(uNT0W$a&d98?>4HR+-q%8m*15&OeK}!~B zn7RQ#oJJGSWFmtAw+{+p_NRj(39t|YL|EM(ZUJw@M~2!VBkgs&_2Gya0yseVOT!IU zb0b9yutW%9YW}`i2LQ^VM0J093#_6)&@sp;k^q~@i)PIqH;^cX>9*l9ApitXtqUta zBQKu6Z7O11eUF4jUwlBCkdD4k{! zF|mXyXkARTDM@v8b@V#vW)hMlRmKUr1JQtfqTrRQKoBtDP!Vb*l>+ozsTu;h9??lN>3WC)O|jxo7eaxg zN)mjT%*E9r08?6=c?J)_Ckvs7AwY42(1_uDpzDVaf09MyMZXj(A(mr5V~vW)pc7DQ zLOdn}G7u8#AgV*>5K_c<-Nn2RmTFu$ne576+Va4vFXJ_VKp;Tr zn$2nip#hV`DugNB?+@rJH&h{mB|wUk(v>}Lrwd&b8X!cBC>H8~DfWme2;tx#TAA@e z2#0=%ZRipE-`SSBfB!z3F%mIo2%?mTBw3)_)ehY^+fvQV&C-8J`sl;=KY0Jg_dfp6 zVeXFloo+*;&(s)o@@(JEvwbOQ?@fFAvVs0wI2(5K77~?AxDa#Kvf)a~Ux@poJ{!-6 z5ogEJ^vLpfb#rcbe{FtaetczmXlA53-dC9HFDy^=&W;pEd-Fp*>48$BFCVLtTQcs}q^qqMvE@SQQXd!wED5(E=`|E0 z_F~M%^Jl_mO?XW_(`#<@ynw_N9GJHmk&EWN=E>)ZI3_(0Dk1m)rudKb9uA_#z( za3l(_S;WXlD)jAKK$2vw{y)9_DY~|X`}=dXz3K9NEizGXPvo71wWxWv7F!(5jFm!# zpfT$=6eHH*LSSJqwLF%a?oX{v_iQcnuFX^z#(E|PGMR`Y8MLOuHhL-Drjm5!!}hSV z%VTa0+B@Ugd1MK%A@1ppdemlR#MK>ebcS5rZj<^_%+^`&Hnpfv{7fw_W3$uH0tne-`X54af!k5ENv{A> zity1aW(boIOK37}K334@5PcevRQS@eB8FP*S2NDr?I%fsfG<_kl?!w+pj!n*mGFfi zM3}j~qrEK=_J^F^gT=^1U$(y(FDJc2g;15@A64%?F+v%h0iTPS_`JAg&+!;paC*)n9#|KFgA<*-Q9)` z4Nj+1zsYg+#DbGC&urX%mbE>}tLrLbIZv9;lIq=}N9v#=>v>ikqI8^An=(Wn=WOR` z_3hYsS{-<#y{%)DU*%J;HECNv`)bR^dX!LK{~g9}4oZiAk}@l8Nz;k8-=rPat+tue z##X|-A2n=;4O=1OR@k%?Htj`Bo5AkwuyJ2~oo7&4)G14HP`Xh&mrCthsY9t^#>0qV zH)7Zd8`Zh&G0Se)xD&H%s@*a3Ud(h5HEQoMsW+HTFdI`dYTM;z=Ots^OPF@z=Dmd4 z=)rjC?U;F2``nLOs68gKC(XzBL>;xR-uzM@yTy(BannZFfUwF-O{2!`m}NVz4j=&c zKnTA-RGV%Ts@^8!I*Oa9h<8ogX7JXx(h-x~V-X!3kz;B;l+Y-Nz^a((D$7mL4svGaFdo&Dq2PyYDj#ozw? z^1uH6#qYm3dwIHiwKKjoQ$C!@UT^lk*cmvSjL-JPFfzczUw`kDPd;YB#3*AVGQ|1E zsAK>F#wlZ*(I;aW4)cS$#c5#DV4`5sATKLgS+F8Wb^%dY$q~x@BZQ1=wOV}pYy(69 zkV=$7DP1N6gvrPZ14ITw!~g^w2*mUxKvaMRQVA&zomj<0#8f80VCu+2DIs+vNopZ; zjx0mTNR$w5Sb`F~ge%CdIZaKB62&371rG9*h!arw4#b%PXh4ZTW<{dNpbbEXC&6t2 zlw*lVm@ zUC0Y9AyKKLxLtFt+JQp;M(^9|K)?hzhlgIC)0iIs?$Y}YAg{=a24#(=4H^Bl!bCa>OvO+v?-EUD03QZDv%~dfXeFK7@%L8MnWNg zc!?+>v<}J=3n4@RLij@H@}dfYT98C72uYP(K$p}ZVkp;z#TbNf2$j-%?00JJ^|({K})CW9u#3=|4bjw@(52(nXIfKH0WHZ;HoNTLu9 zkV45Kp1iqYYU2rc`E^L3C#hwawk`GHhw4uYQYg^-2^@&#=4O^F@*p5*AZj&Mo}oI} zrhI}YHN$|UX-@do@Vv>RMFF`4dhGyBEP%#iqL3_zQSLh@ud{?8Rm^725kfi)S+I>e zEMo6$O9AxDz@!L9OZ|iUbszu4(%BgE*?hK6x3MYiF%%*W9{Up>L&9rJha7RACF<@@ z_{=V2OCs#86wfc@%+g_TS=r0UcGNZNJNL5|agQcl~>_{a&+FKm& zFAr6+q!!~I9!;xh|6nedQ(Fw3QD=M7Ysg1zqm|f9e|n}CohbT7^WKrXuNJcwgT`FI zm=9UXaZfQ~FGcNyX}>woGi|`44o7F59QS9!uB2c6eqTCZK{)O;dCYB=j)u$lwxi{0ZHCbBdjf|wN195XX)ID2^&i5yWa{fZdT#ndixZbpPra!qdUKq*; zm&OYlvz3*}^4w_8#6Y$ue((R}y{?Yd zM9?+VlbRdv@6QFNdJ_}9>49RrHy`Us2a9p94F9;-9JIGbwRfGMLk{(!F3rT44cIzE z4jQ!EX>74}HF_-V>7YI2=yVvGqaH(V);rV_t7HS!e5fZA$j4l%pe+|sr_rSX)|l6X z&UDyOO8JTjZ$9R!WWw2qbFe4#7cwC#L$%u&1a?z5Dv67!j}TN|HMKS~k_EpYi9ETe ztt3hP$t!&BTe4h`wFn$08g4T%$s*-KFyl)`fbWzkZ=X_tl!X%V0(7E{RJ6%W5gC}= zHJh7T^cxtHdmnuILl>woU=h(rp*^=%hQ7Wy5xAASD){l zq}2y&hw5WA%T>d>bljw-?`MH zMM2vwim5}*v_(8kh1P#dCGd4cRb2ikJU-= z*4?CSDdCz+xbv})ww!niP4f+{As!8-BEC%2+Y{=pg}a85mZ7Az6zHgiyN8pO(X@3u zXJ6_IZH}Z?`lIVZiLJ5pLMdFAc_o{ks%c@#$oDHhm3jzC<~xgCJIuS8Dy#f5QqT;z-Vw<#=q_(uQ zYNJf;NzqqX`csw^haM>ooj8gRn!G$=GC6BAw}O-i$c0*fS}BNJWD!e9#?L$gA&(7MIKY7(V+?D zmIQ$$Mc_a&Mr^aLmnA{@PR}{Sm%odEWu`gPSGIS<)TLfFqm2(BUO+= zfnhvV(xCdz6d^Q_R+dl)6_-M#L>Z(I@I@^}0GI#*djJFih^YpC`y>pL5Ua#61SCX2 ztJ6(ezyu;D5RRtlrnd-_ybwgG6wmEgF5Ok{w3vhpkaEe6Fc2j|NYUanq7d?=EsY{| z7cr7x;=P8325~hZbLs82LyRag^%{`GHrd9K;#3oAi#@54R77e4pQZ$&2c{S=Z71H= zDwG4`pAM#1OMUXmT~Q+P(v8K9M6m}8#Ta@8Of^Yq(-f%`BqpI5 zF}=qUk`a(3mPirEi1%;~_Ry)MU!h0j#ZkCILiE6aAfqIS3{f7867A6LI28zk?fu3T**OT&( z^dtt0;bg#;4%vCI>%xtiKSl zq`lq6klK4nc@1%|DdD$fLe@$;P)RuRVQWHt;@7P{?Qt2x&aRNN%V+KAYPx4Pbu~3S z_~BnOMpR#t>Py{u=I6Gjxs+09xHDZcPgi0=*V`Dg>qIpdbOXE-WA_9KzeFQUqqh#Af((R3S)(4*}X9 z-WksOE_Y@R=Bg*FBij?jsiJo{ZLh`5ljY!4B{GopmZSEuQh2x!9LxuXOX2ZqyqfaP z4Q1D+%S+>h>A~FOKz^(*UC9P=QAZ`^DkYqSn4^?%72~dCz#MkAr-PPE*p>;|@-bH; zV2Sz60Y{h5))DoZU8WYVwcTZGavK{`esjRqVee3XjPGu~>$SAH4eFadx2aV-XR0mY zvAqA@54HQS0ykx;BO%U_s_FHWsBi%Ch!G_uquPAZplvt(Yj08A7J#5QDOcA6Q&&!^ zOcByg1keBrg()@wEEEAf3xJ6dWZ(c&VM=EsiCnjrB193^0S7UJnO>L-8|ojnHaB#( zHhAntho!5SiA?sU=lav*{e_`Yw3Z1}GwOwj!E&;ijr62LJ*i+m=81aDK1*xR(G~Yv z7^-1cx5wD*HZ}V!?LoWx9FHVgjYjcXJ7|=yru%ITpLop8`LH<~arEXx1EolBAzVy) znLyG(t2Tj{qFiocF5-+c33$}ZP>8y+VFyM01$K)Um>H$cLceqLW;5*O9z%@G{!4foc8b zj}mX+UP;Cx=~%cL^{#~t=Q-P9#&(#spBJ1@iw^aHUQQiq{y1m5)}mKg%VpYfnX!<1 zm9swP%3H5;+V_1i!*2RDquOIinh@BJ-n>P%;OmP?G8#t0VPM;oAeJ5)`L?6Hxmh zKlKWg;;Zip)f-zYVM5zU)^Sm=pXJp?)kV(!xa7Jjxz38tv$Cs}4BaeQ{_Lf#S5)h3 zS27k&$0CDqKegM4nzk@T6|Fpv+RMD!^HQf=^{Ab%Cna?v`&H3)Rd!w!9NQVkO2RP~ z(|^Y0+t9bAB9Uk$6b*-RVMlMct3PfSOPi;%)~(^_?s#fAX&%j3*ZM>2{h^Ja=*3F! z*<$r-WAx4G@=woKFINXn7i&qcp`-C`cZWLRQbD(012^o2zQDm;;b5tEd!cuIwmLnK z=*zlFF`Lia%1XyV?U`0j%O4Dt|2iZCHE;(rm7BpvVpS^g{#AdA%Wolz#V zq>3;=Ogssw3zb5Ehe?tkq&tcIaL6cq3_bXP8le*nSPPIBXR3~<0ZFlhR6h(ZXl9AS}%4}^dtR_TUOE`X1IF#tedfSw98Wj|&h7z_qVm$n16udD^> zel#(Q(SP%A{*C;(6_6?$D-?~eFl9l7JRw=I1Tj)Ej8N}35Liem{f8(av?@{qsZs@U ziMy~C8VY#5s)!LNEBcjPr`b+I;03dUX;@o0^J+p8T`+DDBVLm3~o080)Qxu zPTM_v_>g{%FwvHl7RiW!2$PY!17gskpK0O#{rd=zbi3OC$w(9?GN?s>D7i?*Y;mA~ zDkDsNaXYj=SCE7lP!0cfUL{J1FiNO0G$Gk35#0WWFQUE?3*5Q$v6P|%&7z!)RDnK# zPWlOj3Zz*fC_*dqW^R{Ck&7xwMc|7nAi`9Wekgp=Mv~Ys4I~+X*enDgsmMUfR6~17 zS)vw&7%6@OL`fo_cHN9JTuogFDMG8_jbUV`8<RknBVpkYnAk5B zM<>d4$3jS|I7eCyKnTr1CRM5?S)@4H2uDHKY&NY%H(+`cg<=NgiE_$?0Bvn;i0Ru> zt!-^E#d5^3M+^XB0A^Db{tWoMiD<}f>TLMrJ)Yj3>bLV7%$?0HyE*PRk5p5`J@I1H zo)23}Nl!XxnI5iOJleZB-g$g>aJad6w6nIiu{>T)k5%GB#Yi>n=lQS@b@mtH<)p8c z4Gve5Bh_>*7aJ_6d0s6h1ARQLnpzA^AA3yAg}7^^65ANhE%e8xE5WI9V7ly|F1p9^ zzCzFxcea(I_Mojj;%JMyx{`iNZ_3r1_Lk%7`yd`u3vo{|?o0ZuF|Rq{w#%kQ4^j0+WOJzGAGH^kpOVl&>=vv1NniYQ|g32O}=^lYIG@qm=d* zliqCD=CgG~+(w_R(`9N2ySlx$_EgxB4%reuLndSkIlJ7(MpMgOOM6|yZ}MB){k9Ij ztxGPLMPTpdvCVsU}Py-UCuoILHf-$0rb?gea-d+P>5O0Qx;$ z3X)v6^Fm_`eg=BO!2y^dA$K86oQZ>a>3E+bYmoh@O33X)B;j(mkytKhDq`6 zCm%noyVqYW&W=?U$MR1PW|qf`{kc%k(QWB$47&^y)%ajBTuJ%L2@hc?Z%+oDF|RdX?__ue9bF-{A=MqQce%AKLYgLM?+DtvoCfu+rMa!HtLbig z!zYD=Zy+CHZW*m6(9BbFDqy9>!%lVNT-0r%=}{7K8KZ7vHf+yFoqs`9rII)T;903Q z6C%?+9GpePq}udjrh6tz;vIMse=Po3x#Ri~IgN~j&HYovOpy)vgeiIt(kTUaC6A zjI8x6tA1Y(4ZCsUa>TeEwd^Hr$7$P9%6gEnAE)idDYZp)oV2NL_hROwnA)7u4%@P* z%_i-Wy`3n9npQ)m9kr`vkypmFkK-`Fq@6q^2U@9jveY|DYJ*JM9ZRcU3|x(vx8t;w zeLd?*$HHm#JN>k(T9o|x>)YE>OBwG;-gTCDozu|jcm32mZt69+jD0h1*-F?BGWN5) z{W9-3&s#4G_N#(jJLSsyq~sh-29wc9LM=E&`M04hj1&G_G;#0p)g+! zRFWP|FSx0QL?#DwXPd*9+oQ8X>BEiD)tSoi=IF)#^z3lq<)ekU!E9f~TaDS`_9l;^ zK45K8Kg4VAo*o-m8A?3c?0>P=b2b@09*b-Z1db+CKf9Ry=ii+Ex8I)rZ(m>h!G)UYGsjESt*OHDXfdBnsh{lq!S{cl{cTD{B?JQ&F!~s7j5`^6j6q>S z$OOv3WLl6FAu^K0{2-HwK;~0XtIr_czylrZy%HYA~Wz#|n7p`IjS2#^a} zn1lkMNd-z&101rTgtavx5J?D8E7}0|F!^8@GnGvGM5&ZMeaZa*0{g`|2*8xNOZWg8 zQKEVD21JE}BrakJO9c_rK|xYFKneaNDy0x&8x}%{NdN)b1-^hJm~fESIS2!oLcjqM z6(s=su}6SyScnE545ZPe6ah{n2`03bRlW5lPo5AwX+YpliXcg9A)q*(NU1W)DTNYY ziZS9A0emtdOzLeXXf9De;D*wG0P=)FNDq`O0D^`fi$EF$f>0_&=^_b@yXX&u(BeQ+ z=`gerQPB@USD}JPLQ5`yHUv;h5z^4mc#?+)+$bdq5EEevMZYK%o#@f)0-(h(WN3F} z@G!=ZOA3WRMr@F-i=;qHS4`>Q}|bfQ1673!(5O3U15jfJs3VhyUd@4JjJic!Z-wm>nG*4Gj&Ajg3uBO-7@! zv$GTDGuu#Q`XNcu8wsg`EInDSk&A~$3quG&3pZEf}WeDQcZl}eS% zOYxKuoYskFF2+8sOZ-@lJGeW?l!hvLYH43g4M2&oJ8 zWrn1a;0>5$k@8TB87>h^6%TlE=r_t%kYsT2xXAA#L~+GWT7|&pk<`%5LF@o zZnu%vr@jFdr(I|ZnN*3s1G<(D93_v?0y;2_LPkjf=#eBcVi@J3T&5J-n#Kiq4>3`G zV}#ZxVFCy#OR7c{1XPDg352Fbv<@|bKvD=K@e(0AMIoi2Q)JLdIX<7C#ev+f{eb|j zh8~i%a&CYU(F2qRHDd^+MmPceG%IF^0DMA`C!<(MsPn}e7|9$$cZDfMAVWwhPD3ru z)ZGFhjuqlIVCo=>FjW9#fBQ#>A9FKACj>J10j4xDKq1CZE{2IV`ZI>1K}r`-0_iX? zkrCSfS)gf0ZULy3>^JM5w--x#aV)}^q^*fylN7aDt*8~(iBFJ`#?q?;lY+>OXRuS5 zLFDaQZ&F{F0k_Z3n8hJkx-)CFK+7ra!Io4YUSF-+m+?nzjQUOaU5gRQf{Yf(SX=eKooISfrvkMZsu^>!*XrFK-7x==4h4UUB) z4yT&pG#%7b_~I*peuo9PMcfW8NdisqTTuiMLl{DsD2F37kW{e*Q>AEWH2`0dXaWYZ z5Da!{5jdo(#?yKT9741KILr)0Aw&r@Kr^Y73m-q&t(HSab_&|wI>jB4-LXJMR% zT?V(Q&DPxT%wx?Md0SO)Et|&RMTAmWzz#IAJ`B8y_XKqr~IJ?MU}_#CRAroh6NzIrC-K za-K4uks3E1N4igw=0|ap+NeruuN1}12T}FIe2)_9eDU?5VKZdhji_ILQ#(X)<5?0( z^-|SY%K9j7eiStxMGXg0!(PO&73$uJ824hP-I!@BYFZ9-Z-xv9N|pJTBGQ&)b?lTu zotv(XMlwH28r4trX-7n*JE?xd?pSf``w8{Cbw}!=Mz&)vhy zlj=AsRc_3(k8sken3@bWXs=VL7r2hqew-o>z#l8?bYA?^6bC-;l&r%n_oQJ`s(@4>H5g_T>swU;O2C7tP~8H8~lccp6-X{ z=8wCZ?z${p=8lG;toL-j_|yHNUmTA;o=Q9;Yjp$5`-A6a{x4Y z&?d@-BQiu;D8na8MmU(k+Ekt*)Xb>e)oxEy&@w^EVo_?UW-D!OBue#35j>V05m{f5)1)-l(@C@2ioo}uFg^5XM z;6{x?-CERA3N)!=Er0+pbplBVg@B2?*eS~43k?%myd=t{7D8wWlm=`@1_HoGlBhl+ zfXI`IJ)&7_;hS!Q0Z1yxy{#;eDu{jvvQsV~Dy9PETnz{VlF)+>89Rg+Kz8^PDwe>J zAp?Ob%%<(cRN+W*aD)KjK%#n$Ajqi3iKd4!q4`FQZX#rXz*@@1FtL+*QIOqkN0o>n zkCOKGcC*>cw54TXXpw>uIJdE8E8 zcc;N!@7?@xc|uqpM3bIi#pqqo=%scq4mLs9S=Y786Kp3MyIi* zt?8lLY0HM4>ZhZ8=1j=J74?|Q37`6dVca>8@uvLdLfE!Al)Ky*yI87j3@5fnQ)@$s zsj|O6X`9Hqx5rXvOO?Ip!cfMQi3eNiKXG=~_oZ9|Y1dMJWPhQyHCQZc{BY3S~3XsE}BG>!BkT1Q$Fg6_nM zlhrW(r=?^-F}tdzv<6uy!;w*Z8#3YqbRni4B;OIEIO%VCuLD>DAZTCdHUML2W$CwA zBD6q~#AZ5%Ot4G>L;*I#B&s^s+mEmyL=O-ph>;OHc^nlb(jg@kP>O)E^wKd*`lJA} z8yXr&Rij8-;sazP3xJlYk%~MOqzJJ=1kkT)t7X9woF;%40g^N)-9Yr*hKzdnNTQ7* z08vVj%~k|x1w4;!T7xU%c3#xt4XRIZa7dL9h#u(%I1q^a00KUQ*eUK683>Xnnvf`Y zaj$q-wUBBJHG~Bs4=^4}#43Q_a6(;O9Rga_Ro#JRxZ0M*hvY&X;f*d$8-1lw8yc;~fsCm@QxkNG_%5?T>_r2C?&?sStD+X%TwSM<2ZR;Ro-tW@>F}h|4LIUKM=W6TIl8=bxsWv*wfk*t5obr-Yv4{wA22lEHMiDT+8%T^ z+;Ma_YA@!fkHu`A+~qs(e4u_amtn=YgP>mGVJbz9bb?S)Rc*EU0&%1G2X~2+mB-)G z0vrp(s}OL=0z^_LL`DR3c_2xINKz2M04x!E^iV)5QJM)r0Nr4rZ#O;i=tPn^fhbAH zK;Ql36JvLm$8M-(f^)+~F4i+swZ!Z|W}-JaT#1j@Qp4qVZ%+L%Lei%`sS9auKV`%A zV%!yS8KQ1Op0)^D;vN%YGZ|2y?nd1vB;#I77y*yTXY2Ob4B3b$=CcJIYNsjYHZpIZ z$7^ZlqIH7yE{CDT(0tF-TE}$3YRA&q5OH;t;?7Fa!}Nl14E=sJ)vyLj2CN~c;V-zU zFh4T8F)hloncS3QMyA3zLR=uNNC*>o1mxa;7syMuz(<+`)o1fE=K{3JvIA|nOjHR( z_$Kmgs4k;{ENBB5rv6^09cSqE`SiU5uHjT*F5_LxIxmXm%O2-d*?z6IrR>iu_Lmjg ziylG;*RzuCx?p`;uv{0dPmAh3DQ!cPVZ>M*Ips6lpJn9aSe%ZAT3IQSB2ywWCB4#*?HvH~lPYKg(E7Qi_9yy_j)3YTAvd7rqW-D!Ln` z3hE3g^^<(sTU2UWDy81rI#Xw*Ti~d@D(%Fjow#LBJ9ta|x?jq&9x?62EM!;T>!oa5 z$Lc&O3)NAtiK!FQHML1~Sk-n!ovpsFcBw2oG1F$)q)tzdD~GGsyJTA`W!+BN#$xXA zgjYM%9DLKn?_4)KMA|i&49sK$%X$A{)^V7!o@E{9IrZ~@M``;>&Uuzo(TkkpD(_I= zZ|3X}7kT@6)<(HAao1SV*Pnd*i^8`$6_@%}@9n;nwkxFoos3792jWjR2hW$Pn?tef z;rPyQY=@ux?B`_;v()1{|}vrqPCc4w>0qow)5 z?08SO8n-3g9YNE>jJq{%Z?d=F>!`oe(eR1A^Wj7_@nV1a^X=ZJ3z?IN$fs-h-=7YC zeLC{HXDhECEzA$+6Mj>`)^0VM7{3fLhApE^&4_OoIx@vGUP1VTFeNWCZ>WN=9Pu4Ur2yG+7bOZGd1$v}z(jyh z43JW&6jc)+>YzBp2uW4W(jYz;h$>M6|3>0%UxH5vFaR-nsq|_o9pEcyoQ50Wi}xS^ zsbV>r#R)nsfJ0QWQzgfA6TCt^muYJn24wt5Zq&W<{-u_0t> zf)1FQDp4!XExnaeAr*?)n#Qt@m5OUDWtz;p)<^RPE8{bL>7~)q;$V8J?4KxlcP0zN zS!W^8mGgBK1DykLQ{(VTmt;GQXam;1ud z14;Y-bm3Q*3%`Fn_luK>UmTBpbv*WRv-fa3`gAe#H&>JY<<08vE~igsbJVUU7alHn zw?`A3gW>bp^qak**So{l>%A|x2fjQS{&aVcJHn&+;zDn5BiwpMh^;l|>Kd;lhRac&6~oSMQ|o2tW=C*csKgGmyAPpWX}htip$>4)%T(va*7J(No?MZX#n z8pIN;!b06(X!w*xE(pX(q8897L60WkbTA0{Ac~ zom4`igcKnJNs2yR$K}` zpTD!S6Q9s4=nwJ&kp?Bh6eI?VRhUH4QXHk@6DeKn6q9tT5Jn7;QEDVg2z9_!Vwxlb zri$@I(Ljhc%%($1Mr5Q22+<&w!kJXzooy+qgH;HNawJhs2sDd+*xufO{OxTisf9GR z4lIEwwbN-NNg`zYGU^%Q-0JG?eq49=!;a<$%oRN9C%xUNkR#!@Y7d{DeB9q#NR0Ir zriZHw6N4+WW0{yg8~3Lp9v(6soexqzo4jy_Vu5S6+_>i+J=;-oWJG|;lt|BBvGq(6=p7ai0F|L zRUO_M1|JzyN5gO-urpO&8cMGWrPoHXDwQ_&L`eKHVq2kP|_FHuvNgm{CxlSEV()BP#J@Fk--RtHh|0%XLEWQUK> zfrtqKQ{*L8XeokRSSv+C>myxk5Ub#;=FuPmBCm|r%#)(2j!YoTmWH+ldv{|pV43L4 z^yPx{!PiB0wSC31pfU*GPvT7aW;qnVOltnWK>>N!RmT=t&Tw4S8J~ zYhqwD8r2jpn-S4yCKjqBf`ggxKq_=xbUrUzo|VjxOP14uUJ z9>?<@`-`&eS<&(|XMR?)yy&rA7j2g*uJvVByT%QTlSOY!KbMocS#?v03XH)h(?j+fer8r2q6!lbsPZnl=pr)l!4*Q2=9Py5By zdFn`Rsw2|1cbe2Dmqi^Tl~UV7Cn=u`EHpd);gdX;&&9?M;RI(~-TL>uK3_UG+XGdoI*RdCtp%^CaikN!kuG&eNRp zT-%)DI?dS5vua!Fgr}E`doATEsYA`BM}7O!ig;&RN|?}zcyzLsxZWLmy+3}vG4Sc$ z==FO4#bWtzGQB^ZIG-;(no0A}^4rVl-(SrP1> zc1D>jrxL}oF^@R#K^97%$fD3Eyu=!7ymg3 zn8*O4cn>2bqexOUQH4B?WwDN{QALvYR`Z$CFCT-@K(rKM4<0;#rj@m3x!EBCQhl;5aTfhJ%qxwQDhCoV&S&)UwKrjqndRN{jf_e4)@vL`y(6IvWh&h^JHR%%~A zS$?`RYHPnA3AmTW%6rqLt1f5OrqGY(}v zy-5erzDW0A%s7&=twNtE2g+TO+&U>8VoS)#2Pie|#wInC%JdjAtja_Qz}eQ`HEwC68O{Q?>o6{LWZv zZ8){mpI8~rEcS*rhGK`)h2#02!@2V6aOPyO_VbH{KYhCWkDu-T{hR&2`*io~%Z0~_ z`IoDOU!RQr{&M|h~!T3_ux7g#}9t!OYhqW+rJe5A5&3v}o|9qo% zIF;TViyzMxu2y?r>W;VuhrmmK1+`d%vZ}j=M1_CR+ zzMr2@esw-`xzcyGR9oo}uMDSl=lf2#XD<#`_f}^r*@)lX&6=;N?oPwQy7zwc{d*t& zz}WnWrTsy3-G@BM)jzDedsl4_F|xY4x-1q8t62I5W0M|B_mF-xd7t=0hkyDjg0hUrfZ_i2BHDL z6rCaijU|`_ute+^^MF2luv||C2t$iKs1j{Nfs}}5Mvx>)7JV>MBK9L7^5CZO+N7=A zq1`M*UXKDPT{r-FJV15|LZJXN@JT~M1Lfjssz9nthVAX`FyW9F`?dP1S3b!Chq6#e z6oq(+5E|&p5z}h~h>C{=B#{LUlERk|n6(4GMO+>41kFk!UD4Ep+?C6 zH_-W1t)rt;U-kfp!+}nzHEr?jx24p_v*e;6&E+?c>SG2z5e~+PivWB$;(tOwcF`aN z4pG(AYAXIAszZvCiW9=2lVBTSqCw=T5gi!df8CAm{1V?MpQw}R&?9*P1Y*);D0z2V zs-edcBwZ~ ztt}y2v(H%XGdAQymYAzU{ZyZ;%Y*Xn2Cum};Wrl4CwsQRv~w))ny>noYQC|ottVnG zMXdR-Reqk2C*HWn#1n5e>?%av5V@!)ANOSf4q0*xm#heMhIpH&g=po@=R;5slK7CQ z+LY3uZ%b+7H}AN~vyWziY9lm|kyN74XuvQ+XgGRCWCSGXT>>b(wOtpg|M8uVn(FVH zyIL!SR4(ku2aTfz&)#%yyeBkK4bKiFruz~D1^+}XK0lnD>`M;yL?>#Ase$xJH91g< zR?@yq(2|Qd@=<3o?kXkRg_tYhGyCnGrnZMH^WyH#preb?r%sy7_*3e)_PWB_S9npi zZQYR#J7OMFz|kFcoAO~t#BB`PJ0mVb(q~BpY*Du%;_UL7)i=57%UnZ?rK7&P<$hO7 zoz2ja45;5d$VHr`xJSLQ9(G1O=D(nxQeoOsswx~jA{^W#5EsZD1%fCtB9EJ(A;^LN z6Squ}074{hw0sBRdZ8icF`^KY(82uf_iHb+XgdP@OKT^Zk0o5k1?!t3@9O|#L7cu` z=j*EdWsmhm+47=fc~LaKC|REu%}>>vQ;tV@+gaZFq-cFszPZ!}R@w42Z+@IIKFgb* zmu)X=u2;Qoh^KkWb=m&3XuHT-Pja^XjP*EYyDT~%7aV6v)8oATX~FpQU*)V9S@o^oMyP8uVmOGK&NCL0F4RVqSvwZWaHig$GN~ialWL#n zIA%PEnD#@)O>L6xZ3wN)C)bH!iCy5>Dyv%b!ipkY6zj;SK)2pRR2qB>>#W-m-_hpDYDb*5F)bdpvtG*Q-O#IznU z@5Z&Gqex0y)unBOon_RSQ|DRrx!+mFF8fpGimCl}VbZ)EH?PJlJ1N_dcD$52KwW){ zr*^Eg_ovJ!8T&EzXeVbqA`51#*Rs?%hHFvNV$7D02DJSjwetA0m)aG&&56Y-sqk@+ z|FRZ5DY(xHt|vX->ssJx#S8JY$HR41bYB$RS0(pF!F8OmZzpXBX~$vK^(gON$@p|V z-{|}fCmari!{2^y>n2rUV>}AtF_Dd?BluQr<*+|v)Na>BfojN z^2^J49=-gg`quhS!d~0a>gfOZ`-}hmSC4*kG5*V=-hX(t@c;VL(_$eb3N_s5AL_|$ zPgQnjD%+Fg_3`3VEjcrgKigRtE(Vu|(#yl?)zQrP>cDsC#6 zj7qr^Km!B-sqle_iKGw!wHTny$qF)c5H>b8vTTx4uuAL^z(Jd=P?=J&0f?mVfvg2Z zMxq+~=DjD0k{3vnl`aoLWY-Hqp=_5>x){LxBQ#(Jg9CB9vM7J&83`tU0LX|B;Yg}X zgW7bcKrVm`&4Cld56pfLcmvzu<11+?nF-N}g;EMSrCh{Niym}JmfOn7A~YbCN+BSI zAtnTX0H{TtD8fV$xNQKoQ96D@3_hxmgvP5pFCnZ=-pYO<1XK##Zf-KlmoH*1QOc4A zqSo+fAZX##X~)XoJ#n3Q9v}&mjPRiWNs_8{kelz?2uYHM1d_xL=phMVsU{E(QJ9oV zH8o|*6@+9ILL><#qb71AbK3w(rD{}Gsw@OPM3}yZ620z(fGAl=B`=mpst)AgOVW2i ziIgi<&_Pu3fB1tR|L6zr|K!I!C-JO=&nN-@M<0H0_wFZ6jSVJacRrimT3h<`$)m0L zq0Pm~>9K)i*w<8dr}g1Soekm`i`L+sjg^TFOig6xN2~=QHW?jBTyg^LT6Ii>G_PxLo?(v-Pje7QQ-P z{Ni-!YGd?Zu6j6MTN_I5j%R=UWOJiGxIdY##%yg5KIo{wGnBN=6rBe%#jCA}&?N(o5T5Ze4-kksRSqTE^4te9N8I(uMb4FMiNig2VNgc{PJq?*H4!}Kb|^U zuKnrF?$6HWzka#>+fR2NFJ><0Qm=RVo~@PF`ur((Tg$_b`%>R!Yy;t7kLGqlwtbbn;{-vp1RFTApULN2Na7DnDB( zoX!=`Hm7!0XJ#gbMu+-Vm*x-mwl`LnO1boddv`u~?+179e9-vtepADPd!O9Vju%u< zEHZLsEJMgbS!W_Z9|qFv=(j=u87Tsx>7@)4MmIfKI=oE940DDjNzjZw2p|Jii2L{N z%Os#nLX%1RBA!HzkRRAU-Lr<78ky5lsD&w>{1e4GVD56C>h#hN143I^jsk~Vy zOJ2q-mWbqS0RRWhYEpPR35z6IWTc}+K#iDlC=`bAONI}A}=BB(%IRGFi}*Y z0ZvQl@OXfRVX3y9UW>TMlGw<%1Xg*zuA_eE`-guk384TbkmhkBdijiOXE@t zQmKfvxImgi0G|+3Apitf&;!JHLO@jKBZhMHAdD&+Oa82dFj1HgR7d3XT(||ibG8&t z6Fwj#A@V>7IIXR1$jhD-XlZSw2q4x<6@V}yV3Ltgq5`xLVzZ1~fs9!y=5pA&+Zqk6 z4{crQvESZV@3XWOQ=ze;+W26(w-BEm8yp*~!HN5AsgT>z-C$_^sI&fq_J<#m#nN8a z-TaBIyD6Ux4(0qAZ%5eH6tXo(?5)L!GwC%Yyv9_(k__0>5pT?E3E0{_<`$n-eM4P} z*++7&*^*2a?ua17XiU!0Gmc3s_jjDv!ekACCZ>%@+mM4ra?c zlZAuXo|WO;+E`(JAT?Tw3>728#W2L|V18k&XS63iR0!uIj&j0X%lJ|OYbE2a$SW#ba&_Iy&ex zw$27~Tb;AJ369gC-pdQw+r6e1m!a9w-RLs5cq|> z^8s}fAHozb!4VoLcWB-dNnzdwk~o|sl#4<*0@-*1+Q!s3?@S3K3S_%b_NQ(aAv&eK z2#HD)OBTIQ3?`MDGL}Dh|0j1pxzp9rnh1MFDv6m|bgnNJa(3DcO>s}xc-}c#3y+t5 zV@1zM!PA%ZRMMXL;mq7{W~>&U>Pt=yW~K)-W4+0qv^VN(t7d%Fw5Jqz<|20aw$5kk za2T3xT@6k{BdZZxcgsK_yf|7c#C;KGXT;r|rpZFKsM{EJ8T_`6fZDn;7o+Nz^#Vj~ z?do`Y?JY>ZrP*U>uyv@XjV$`Si3q~>b%yDo}{lg?PZuJ{C0KZxqxa@ zTbu%M!}>OG3R51lHlglHd<36V{6(M8r)KzY&?bYBkSJM1l}@|^(TN!dKYUp4^ZB(s zDR6V&N=CyQIoEN~c~P=om#i-<_E%N=r@f9h1FkoNp4a^@qAz-^&x+>jqWO7`SsRB7-cu= zG_7`gmi%2C5%W>fbdfP#WzCm4^Lf^ImNcFw)R9u>Y1?VaavU)n20IT!T}KI%oFIM_ zGi`^um$YrBt&rg;Zazubj^n2Nh_$}@h@mMq+k7nX(n{p!KKQ4Q&)V7rWX+_(XDtR84 zyw?@~b%jt~q;j6;-2;hWCKgGd1vDzgR`mV7h8p|kNf}W_3}!8XfS2zi<`X02T4~;+S~3n*1N5p<3rW8!RYl${_B(e zKVFXh^k5*Dii<)GH~M=E$@zio!a!zeFugpSo9#v|u zNn9S_A>d0W16faEDJB`=5X#z%5LyVyNL2Lbnh8k)l+FNWh7~|FbpW!+8k9AkOhGa` zi%wEmtn=K044Oqhp(FuW(`!pvwVgpIrUE2&0!u_W^+JaAE}?Rbc3d}Q!53h#OmxE3 z>mtQbE*uGk(D^{mg$9a4IiV0bh)SwVp3Hc-0zd$aM=g9(5f%br)ZPXKp#%Y$V?`2( z!B|2n1co6gC6c7)g%-2LVB`^o5QXSr1_ojhwjsa+j~qlOZ3iDQd7(*#79~WH z7bYC)f(E^gltmQ(18H9x3#%aN>gsqZgVrsF2@SAW%qCULMgZt871seN3!SBTmnuEw?#}jmAAfN7!}sd%zHe%KkO^AH zdSXi>g|+e0=2UI6C$c;c-yTa(7Ch_2iKV{qOv&35F`2c)kIt3{E|w~DWzXhF>}sjJ zKapM^2ycz1PS?k;HwRxH&Hehb$G`sk+1|p?TyJ7)vb-{qpY4sU4JYR+{>_oZ#!!4L z=T3MH%=Sa2*v3fea5A+$6xtsNzuX%9+3DO@=L=t)&VIH(cDgcnvfOvNTsvIq|Mly` z(~XI_zWC-?>US@;9?e&FM¨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

    BVNn5Ze}!45)>82=C!e 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

    5T_%UYj=LF%?sRE_V6HdQ%g9*-9>)4BF!X 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 z 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%0DV}&ONGfxht&o+j+xjCHg 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�}$4H_c~|H-Z^Nt<6sw2kvbE8 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 Y0~i}-*RTi>cK`qY07*qoM6N<$f@7!l4gdfE diff --git a/samples/hello-gltf/shaders/SceneOpaque.frag b/samples/hello-gltf/shaders/SceneOpaque.frag deleted file mode 100644 index a0615de..0000000 --- a/samples/hello-gltf/shaders/SceneOpaque.frag +++ /dev/null @@ -1,259 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#version 400 - -#extension GL_ARB_separate_shader_objects : enable -#extension GL_ARB_shading_language_420pack : enable - - -// Uniform buffer locations -#define SHADER_VERT_UBO_LOCATION 0 -#define SHADER_FRAG_UBO_LOCATION 1 -#define SHADER_LIGHT_UBO_LOCATION 2 - -// Texture Locations -#define SHADER_DIFFUSE_TEXTURE_LOC 3 -#define SHADER_NORMAL_TEXTURE_LOC 4 -#define SHADER_EMISSIVE_TEXTURE_LOC 5 -#define SHADER_METALLIC_ROUGHNESS_TEXTURE_LOC 6 - -#define NUM_SPOT_LIGHTS (4) - -// Uniform Constant Buffer -layout(std140, set = 0, binding = SHADER_FRAG_UBO_LOCATION) uniform FragConstantsBuff -{ - vec4 Color; - vec4 ORM; - -} FragCB; - -// Light uniform -layout(std140, set = 0, binding = SHADER_LIGHT_UBO_LOCATION) uniform LightConstantsBuff -{ - mat4 ProjectionInv; - mat4 ViewInv; - mat4 ViewProjectionInv; // ViewInv * ProjectionInv - // mat4 WorldToShadow; - vec4 ProjectionInvW; // w components of ProjectionInv - vec4 CameraPos; - - vec4 LightDirection; - vec4 LightColor; - - // Spotlight data - vec4 SpotLights_pos[NUM_SPOT_LIGHTS]; - vec4 SpotLights_dir[NUM_SPOT_LIGHTS]; - vec4 SpotLights_color[NUM_SPOT_LIGHTS]; - - vec4 AmbientColor; - - float AmbientOcclusionScale; - int Width; - int Height; - -} LightCB; - -#ifndef PI -#define PI (3.14159265359) -#endif - -// Textures -layout(set = 0, binding = SHADER_DIFFUSE_TEXTURE_LOC) uniform sampler2D u_DiffuseTex; -layout(set = 0, binding = SHADER_NORMAL_TEXTURE_LOC) uniform sampler2D u_NormalTex; -layout(set = 0, binding = SHADER_EMISSIVE_TEXTURE_LOC) uniform sampler2D u_EmissiveTex; -layout(set = 0, binding = SHADER_METALLIC_ROUGHNESS_TEXTURE_LOC) uniform sampler2D u_MetallicRoughnessTex; - -// Varying's -layout (location = 0) in vec2 v_TexCoord; -layout (location = 1) in vec3 v_WorldPos; -layout (location = 2) in vec3 v_WorldNorm; -layout (location = 3) in vec3 v_WorldTan; -layout (location = 4) in vec3 v_WorldBitan; -layout (location = 5) in vec4 v_ShadowCoord; -layout (location = 6) in vec4 v_VertColor; - -// Output color -layout (location = 0) out vec4 FragColor; - -//----------------------------------------------------------------------------- -vec4 ScreenToView(vec2 ScreenCoord/*0-1 range*/, float Depth/*0-1*/) -//----------------------------------------------------------------------------- -{ - vec4 ClipSpacePosition = vec4((ScreenCoord * 2.0) - vec2(1.0), Depth, 1.0); - ClipSpacePosition.y = -ClipSpacePosition.y; - vec4 ViewSpacePosition = LightCB.ProjectionInv * ClipSpacePosition; - - // Perspective division - ViewSpacePosition /= vec4(ViewSpacePosition.w); - - return ViewSpacePosition; -} - -//----------------------------------------------------------------------------- -vec3 ScreenToWorld(vec2 ScreenCoord/*0-1 range*/, float Depth/*0-1*/) -//----------------------------------------------------------------------------- -{ - vec4 ViewSpacePosition = ScreenToView(ScreenCoord, Depth); - - vec4 WorldSpacePosition = LightCB.ViewInv * ViewSpacePosition; - return WorldSpacePosition.xyz; -} - -//----------------------------------------------------------------------------- -float FSchlick(float f0, float f90, float u) -//----------------------------------------------------------------------------- -{ - return f0 + (f90 - f0) * pow(1.0 - u, 5.0); -} - -//----------------------------------------------------------------------------- -vec3 FSchlick(vec3 f0, float f90, float u) -//----------------------------------------------------------------------------- -{ - return f0 + (f90 - f0) * pow(1.0 - u, 5.0); -} - -//----------------------------------------------------------------------------- -void CalcBRDF(vec3 EyeDir, vec3 Normal, vec3 LightDir, vec3 AlbedoColor, float Roughness, float Metallic, out vec3 f_diffuse, out vec3 f_specular, out vec3 f0) -//----------------------------------------------------------------------------- -{ - vec3 H = normalize(LightDir + EyeDir); - //float NL = max(0.0, dot(Normal, LightDir)); - float NV = max(0.0, dot(Normal, EyeDir)); - float LH = max(0.0, dot(LightDir, H)); - float NH = max(0.0, dot(Normal, H)); - float VH = max(0.0, dot(EyeDir, H)); - - float gltfDielectricSpecular = 0.04; - - vec3 c_diff = mix(AlbedoColor.rgb * (1 - gltfDielectricSpecular), vec3(0.0)/*diffuse color is black in a metallic material*/, Metallic); - f0 = mix(vec3(0.04, 0.04, 0.04), AlbedoColor.rgb, Metallic); - float alpha = Roughness * Roughness; - - vec3 F = FSchlick(f0, 1.0/*f90*/, VH); - f_diffuse = (1 - F) * (1 / PI) * c_diff; - - // D - GGX microfacet distribution - float alphaSqr = alpha * alpha; - float denom = NH * NH * (alphaSqr - 1.0) + 1.0f; - float D = alphaSqr / (PI * denom * denom); - - // V - float k = alpha / 2.0f; - float k2 = k * k; - float invK2 = 1.0f - k2; - float Vis = 1.0 / (LH * LH * invK2 + k2); - - f_specular = F * Vis * D; - -} - - -//----------------------------------------------------------------------------- -void main() -//----------------------------------------------------------------------------- -{ - vec2 LocalTexCoord = vec2(v_TexCoord.xy); - - // ******************************** - // Base (albedo) color - // ******************************** - // Get color from the color texture - - vec4 DiffuseColor = texture( u_DiffuseTex, v_TexCoord.xy ); - DiffuseColor.xyzw *= FragCB.Color.xyzw; - - if(DiffuseColor.a < 0.5) - { - discard; - } - - // Adjust by vertex color. - DiffuseColor.xyzw *= v_VertColor.xyzw; - - vec4 Emissive = texture( u_EmissiveTex, v_TexCoord.xy ); - vec4 MetallicRoughness = texture( u_MetallicRoughnessTex, v_TexCoord.xy ); - - // Get base normal from the bump texture - vec3 Normal = texture( u_NormalTex, v_TexCoord.xy ).rgb; - Normal = Normal * 2.0 - 1.0; - - mat3 TBN = mat3(normalize(v_WorldTan), normalize(v_WorldBitan), normalize(v_WorldNorm)); - Normal = normalize(TBN * Normal); - - float Depth = gl_FragCoord.z; - - // Determine World position of pixel - vec3 WorldPos = ScreenToWorld( LocalTexCoord, Depth ); - vec3 EyeDir = normalize(LightCB.CameraPos.xyz - v_WorldPos.xyz); - - vec3 L = -LightCB.LightDirection.xyz; - - vec3 f_diffuse = vec3(0.0); - vec3 f_specular = vec3(0.0); - vec3 f0 = vec3(0.0); - - CalcBRDF( - EyeDir, - Normal, - L, - DiffuseColor.rgb, - MetallicRoughness.g * FragCB.ORM.g, - MetallicRoughness.b * FragCB.ORM.b, - f_diffuse, - f_specular, - f0); - - // Spot lights - vec3 spot_diffuse = vec3(0.0); - vec3 spot_specular = vec3(0.0); - for(int l=0;lCreateRenderPass(bloomFormat, TextureFormat::UNDEFINED, Msaa::Samples1, RenderPassInputUsage::Clear, RenderPassOutputUsage::StoreReadOnly, true, RenderPassOutputUsage::StoreReadOnly, renderPass)) + { + LOGE("Unable to create render pass id: %d", ii); + return false; + } + + if (!m_IntermediateRts[ii].Initialize(pVulkan, w, h, bloomFormat, TextureFormat::UNDEFINED, Msaa::Samples1, rtNames) + || !m_IntermediateRts[ii].InitializeFrameBuffer(pVulkan, renderPass)) { LOGE("Unable to create main render target"); + return false; } + + m_RenderContexts[ii] = RenderContext(std::move(renderPass), m_IntermediateRts[ii].GetFrameBuffer(), rtNames); } } //-------------------------------------------------------------------------- @@ -129,7 +147,12 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc // Setup Shaders for (uint32_t ss = 0; ss < ShaderPair_Count; ++ss) { - LoadShader(pVulkan, *m_AssetManager, &m_shaders[ss], ShaderSets[ss][0], m_bUseExtension ? ShaderSets[ss][2] : ShaderSets[ss][1]); + LoadShader( + pVulkan, + *m_AssetManager, + &m_shaders[ss], + std::filesystem::path(SHADER_DESTINATION_PATH).append(ShaderSets[ss][0]).string(), + std::filesystem::path(SHADER_DESTINATION_PATH).append(m_bUseExtension ? ShaderSets[ss][2] : ShaderSets[ss][1]).string()); } //-------------------------------------------------------------------------- @@ -152,7 +175,7 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc { for (uint32_t ii = 0; ii < NumWeightImages; ++ii) { - VkImageUsageFlags usageFlags = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM; + //VkImageUsageFlags usageFlags = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM;//no longer used const TextureFormat weightFormat = TextureFormat::R16_SFLOAT; VkImageViewSampleWeightCreateInfoQCOM weightViewInfo = {}; @@ -184,15 +207,12 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_FILTER_NEAREST, usageFlags, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); #endif - m_weightTextures[ii] = - apiCast(m_TextureManager->CreateTextureFromBuffer( - *pVulkan, pHalfTexData, gBlurFilterSize * sizeof(float16), - gBlurFilterSize, 1, 1, weightFormat, - SamplerAddressMode::ClampEdge, - SamplerFilter::Nearest, - nullptr, - (uint32_t)usageFlags)); - + m_weightTextures[ii] = apiCast( CreateTextureFromBuffer( static_cast(*pVulkan), + pHalfTexData, gBlurFilterSize * sizeof( float16 ), + gBlurFilterSize, 1, 1, weightFormat, + SamplerAddressMode::ClampEdge, + SamplerFilter::Nearest, + nullptr ) ); weightViewInfo.filterCenter.x = gBlurFilterSize / 2; weightViewInfo.filterCenter.y = 0; @@ -209,14 +229,12 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc usageFlags, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); #endif - m_weightTextures[ii] = - apiCast(m_TextureManager->CreateTextureFromBuffer( - *pVulkan, pHalfTexData, gBlurFilterSize * sizeof(float16), + m_weightTextures[ii] = apiCast( CreateTextureFromBuffer( + static_cast(*pVulkan), pHalfTexData, gBlurFilterSize * sizeof(float16), 1, gBlurFilterSize, 1, weightFormat, SamplerAddressMode::ClampEdge, SamplerFilter::Nearest, - nullptr, - (uint32_t)usageFlags)); + "nullptr" ) ); weightViewInfo.filterCenter.x = 0; weightViewInfo.filterCenter.y = gBlurFilterSize / 2; @@ -234,14 +252,15 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc } } - + const PathManipulator_PrefixDirectory prefixTextureDir{ TEXTURE_DESTINATION_PATH }; + if (/*pVulkan->IsTextureFormatSupported(TextureFormat::ASTC_4x4_UNORM_BLOCK)*/ false) { - m_sourceTexture = apiCast(m_TextureManager->GetOrLoadTexture(*m_AssetManager, TEXTUREFILE("painting_astc.ktx"), SamplerAddressMode::ClampEdge)); + m_sourceTexture = apiCast(m_TextureManager->GetOrLoadTexture(TEXTUREFILE("painting_astc.ktx"), SamplerAddressMode::ClampEdge, prefixTextureDir)); } else { - m_sourceTexture = apiCast(m_TextureManager->GetOrLoadTexture(*m_AssetManager, TEXTUREFILE("painting.ktx"), SamplerAddressMode::ClampEdge)); + m_sourceTexture = apiCast(m_TextureManager->GetOrLoadTexture(TEXTUREFILE("painting.ktx"), SamplerAddressMode::ClampEdge, prefixTextureDir)); } //-------------------------------------------------------------------------- @@ -295,6 +314,7 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc m_passes[pp] = new PassInfo(pVulkan, &GlobalPassInfo[pp]); m_passes[pp]->pRt = &m_IntermediateRts[pp]; + m_passes[pp]->pRc = &m_RenderContexts[pp]; m_passes[pp]->pUniform = NULL; m_passes[pp]->renderArea.width = m_passes[pp]->pPassInfo->renderWidth; m_passes[pp]->renderArea.height = m_passes[pp]->pPassInfo->renderHeight; @@ -309,7 +329,7 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc case ShaderPair_Blur_Horizontal: { m_passes[pp]->pUniform = &m_uniforms[pp]; - m_passes[pp]->vInputViews.push_back(m_IntermediateRts[pp - 1][0].m_ColorAttachments[0].GetVkImageView()); + m_passes[pp]->vInputViews.push_back(m_IntermediateRts[pp - 1].m_ColorAttachments[0].GetVkImageView()); if (m_bUseExtension) { @@ -320,7 +340,7 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc } case ShaderPair_Blur_Vertical: m_passes[pp]->pUniform = &m_uniforms[pp]; - m_passes[pp]->vInputViews.push_back(m_IntermediateRts[pp - 1][0].m_ColorAttachments[0].GetVkImageView()); + m_passes[pp]->vInputViews.push_back(m_IntermediateRts[pp - 1].m_ColorAttachments[0].GetVkImageView()); if (m_bUseExtension) { m_passes[pp]->vInputViews.push_back(m_weightTextureViews[1]); @@ -329,10 +349,11 @@ bool BloomImageprocessing::Initialize(uintptr_t windowHandle, uintptr_t hInstanc break; case ShaderPair_Display: m_passes[pp]->pRt = NULL; // &m_IntermediateRts[Pass_Display]; + // m_passes[pp]->pRc = NULL; // &m_RenderContexts[Pass_Display]; m_passes[pp]->renderArea.width = pVulkan->m_SurfaceWidth; // k_FullImageWidth; m_passes[pp]->renderArea.height = pVulkan->m_SurfaceHeight; // k_FullImageHeight; m_passes[pp]->vInputViews.push_back(m_sourceTexture->GetVkImageView()); - m_passes[pp]->vInputViews.push_back((*m_passes[pp -1]->pRt)[0].m_ColorAttachments[0].GetVkImageView()); + m_passes[pp]->vInputViews.push_back((*m_passes[pp -1]->pRt).m_ColorAttachments[0].GetVkImageView()); break; } } @@ -411,12 +432,12 @@ void BloomImageprocessing::FinalizePass(PassInfo* pPass) if (pPass->pRt == NULL) { - pPass->renderpass = pVulkan->m_SwapchainRenderPass; + pPass->renderpass = pVulkan->m_SwapchainRenderPass.mRenderPass; } else { - pPass->renderpass = pPass->pRt->m_RenderPass; - pPass->fbo = pPass->pRt->m_RenderTargets[0].m_FrameBuffer; + pPass->renderpass = pPass->pRc->GetRenderPass().mRenderPass; + pPass->fbo = pPass->pRc->GetFramebuffer()->m_FrameBuffer; } // Descriptor Set Layouyt @@ -642,28 +663,30 @@ void BloomImageprocessing::FinalizePass(PassInfo* pPass) ds.depthWriteEnable = VK_FALSE; pVulkan->CreatePipeline( - VK_NULL_HANDLE, - &visci, + VK_NULL_HANDLE, //pipeline cache + &visci, // vertex input state pPass->pLayout, - pPass->renderpass, - 0/*subpass*/, - &rs, - &ds, - nullptr, - nullptr, - {}, - nullptr, - nullptr, + *pPass->pRc, + &rs, // rasterization + &ds, // depth stencil + nullptr, // blend + nullptr, // multisample + nullptr, // ia + {}, // dynamic states + nullptr, // viewport + nullptr, // scissor + VK_NULL_HANDLE, // task shader + VK_NULL_HANDLE, // mesh shader pPass->pShaderInfo->VertShaderModule.GetVkShaderModule(), pPass->pShaderInfo->FragShaderModule.GetVkShaderModule(), - nullptr, - false, - VK_NULL_HANDLE, - & pPass->pipeline); + nullptr, // specialization + false, // allow derivation + VK_NULL_HANDLE, // derive from + &pPass->pipeline); } -void BloomImageprocessing::DrawPass(Wrap_VkCommandBuffer* cmd, const PassInfo* pPass, uint32_t idx) +void BloomImageprocessing::DrawPass(CommandBuffer* cmd, const PassInfo* pPass, uint32_t idx) { Vulkan* pVulkan = GetVulkan(); @@ -689,7 +712,7 @@ void BloomImageprocessing::DrawPass(Wrap_VkCommandBuffer* cmd, const PassInfo* p pPass->pRt == NULL ? true : false, pPass->renderpass, pPass->pRt == NULL ? true : false, pPass->pRt == NULL - ? pVulkan->m_SwapchainBuffers[idx].framebuffer + ? pVulkan->m_SwapchainBuffers[idx].framebuffer.m_FrameBuffer : pPass->fbo, VK_SUBPASS_CONTENTS_INLINE); @@ -716,7 +739,7 @@ void BloomImageprocessing::DrawPass(Wrap_VkCommandBuffer* cmd, const PassInfo* p void BloomImageprocessing::BuildCmdBuffer(uint32_t idx) { - Wrap_VkCommandBuffer* pCmdBuf = &m_commandBuffers[idx]; + CommandBuffer* pCmdBuf = &m_commandBuffers[idx]; Vulkan* pVulkan = GetVulkan(); diff --git a/samples/BloomImageProcessing/code/main/bloom-image-processing.hpp b/samples/image_processing/code/main/application.hpp similarity index 91% rename from samples/BloomImageProcessing/code/main/bloom-image-processing.hpp rename to samples/image_processing/code/main/application.hpp index fe48cf8..9a8816d 100644 --- a/samples/BloomImageProcessing/code/main/bloom-image-processing.hpp +++ b/samples/image_processing/code/main/application.hpp @@ -15,13 +15,6 @@ /// DOES NOT initialize Vulkan. /// -// Workaround for windows builds -#if OS_WINDOWS -#ifndef VK_ENABLE_BETA_EXTENSIONS -#define VK_ENABLE_BETA_EXTENSIONS 1 -#endif // VK_ENABLE_BETA_EXTENSIONS -#endif // OS_WINDOWS - #include "main/applicationHelperBase.hpp" #include "memory/vulkan/uniform.hpp" #include "vulkan/commandBuffer.hpp" @@ -119,7 +112,8 @@ class BloomImageprocessing : public ApplicationHelperBase { Vulkan* pVulkan; const Uniform* pUniform; - const CRenderTargetArray<1>* pRt; + const RenderTarget* pRt; + const RenderContext* pRc; std::vector vInputViews; const ShaderInfo* pShaderInfo; VkExtent2D renderArea; @@ -173,18 +167,19 @@ class BloomImageprocessing : public ApplicationHelperBase static const uint32_t NumWeightImages = 2; - CRenderTargetArray<1> m_IntermediateRts[Pass_Count]; + RenderTarget m_IntermediateRts[Pass_Count]; + RenderContext m_RenderContexts[Pass_Count]; Uniform m_uniforms[Pass_Count]; ShaderInfo m_shaders[ShaderPair_Count]; - std::unique_ptr> m_weightTextures[NumWeightImages]; + std::unique_ptr> m_weightTextures[NumWeightImages]; VkImageView m_weightTextureViews[NumWeightImages]; - const TextureT* m_sourceTexture = nullptr; + const Texture* m_sourceTexture = nullptr; PassInfo* m_passes[Pass_Count]; - Wrap_VkCommandBuffer m_commandBuffers[NUM_VULKAN_BUFFERS]; + CommandBuffer m_commandBuffers[NUM_VULKAN_BUFFERS]; void FinalizePass(PassInfo* pPass); - void DrawPass(Wrap_VkCommandBuffer* cmd, const PassInfo* pPass, uint32_t idx); + void DrawPass(CommandBuffer* cmd, const PassInfo* pPass, uint32_t idx); void BuildCmdBuffer(uint32_t idx); static inline uint64_t Factorial(uint32_t n) @@ -203,7 +198,7 @@ class BloomImageprocessing : public ApplicationHelperBase VkPhysicalDeviceImageProcessingPropertiesQCOM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM> { static constexpr auto Name = VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME; - Ext_VK_QCOM_image_processing(VulkanExtension::eStatus status = VulkanExtension::eRequired) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) + Ext_VK_QCOM_image_processing(VulkanExtensionStatus status = VulkanExtensionStatus::eRequired) : VulkanDeviceFeaturePropertiesExtensionHelper(Name, status) {} void PopulateRequestedFeatures() override diff --git a/samples/image_processing/install_apk.bat b/samples/image_processing/install_apk.bat new file mode 100644 index 0000000..62ab3c4 --- /dev/null +++ b/samples/image_processing/install_apk.bat @@ -0,0 +1,21 @@ +@echo off +cd /D "%~dp0" + +:: Get the name of the current folder (assumed to be the project name) +for %%I in ("%~dp0.") do set "project_name=%%~nxI" + +@echo. +@echo **************************************** +@echo Installing APK for project: %project_name% +@echo **************************************** + +set "apk_path=..\..\build\android\%project_name%\outputs\apk\debug\%project_name%-debug.apk" + +call adb install -r -t "%apk_path%" + +@echo. +@echo **************************************** +@echo Done! +@echo **************************************** + +IF "%~dpnx0"=="%0" PAUSE \ No newline at end of file diff --git a/samples/image_processing/install_config.bat b/samples/image_processing/install_config.bat new file mode 100644 index 0000000..c3d20e8 --- /dev/null +++ b/samples/image_processing/install_config.bat @@ -0,0 +1,31 @@ + +@echo off +cd /D "%~dp0" + +:: Get the name of the current folder (assumed to be the project name) +for %%I in ("%~dp0.") do set "project_name=%%~nxI" + +:: Check if app_config.txt exists +if exist "app_config.txt" ( + @echo. + @echo **************************************** + @echo Pushing app_config.txt to: /sdcard/Android/data/com.quic.%project_name%/files/ + @echo **************************************** + adb push ./app_config.txt /sdcard/Android/data/com.quic.%project_name%/files/app_config.txt + + @echo. + @echo **************************************** + @echo Done! + @echo **************************************** +) else ( + @echo. + @echo **************************************** + @echo No app_config.txt was found. + @echo It's not necessary for the app, but it can be used to override application settings. + @echo If such functionality is desired, please create the file and override the global variables + @echo according to how they are defined in the project. + @echo **************************************** +) + +:: Pause only if run directly +IF "%~dpnx0"=="%0" PAUSE \ No newline at end of file diff --git a/samples/SubPass/project/android/AndroidManifest.xml b/samples/image_processing/project/android/AndroidManifest.xml similarity index 98% rename from samples/SubPass/project/android/AndroidManifest.xml rename to samples/image_processing/project/android/AndroidManifest.xml index 2cae4c1..0b80db5 100644 --- a/samples/SubPass/project/android/AndroidManifest.xml +++ b/samples/image_processing/project/android/AndroidManifest.xml @@ -1,7 +1,6 @@ @@ -23,7 +22,7 @@ android:versionName="1.0"> android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="reverseLandscape" - android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> + android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:exported="true"> + + SGS Image Processing + diff --git a/samples/BloomImageProcessing/shaders/BlurBase-Horizontal-Ext.frag b/samples/image_processing/shaders/BlurBase-Horizontal-Ext.frag similarity index 94% rename from samples/BloomImageProcessing/shaders/BlurBase-Horizontal-Ext.frag rename to samples/image_processing/shaders/BlurBase-Horizontal-Ext.frag index 18409cf..70aba48 100644 --- a/samples/BloomImageProcessing/shaders/BlurBase-Horizontal-Ext.frag +++ b/samples/image_processing/shaders/BlurBase-Horizontal-Ext.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/BlurBase-Horizontal.frag b/samples/image_processing/shaders/BlurBase-Horizontal.frag similarity index 94% rename from samples/BloomImageProcessing/shaders/BlurBase-Horizontal.frag rename to samples/image_processing/shaders/BlurBase-Horizontal.frag index f28c163..af8a89e 100644 --- a/samples/BloomImageProcessing/shaders/BlurBase-Horizontal.frag +++ b/samples/image_processing/shaders/BlurBase-Horizontal.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/BlurBase-Vertical-Ext.frag b/samples/image_processing/shaders/BlurBase-Vertical-Ext.frag similarity index 94% rename from samples/BloomImageProcessing/shaders/BlurBase-Vertical-Ext.frag rename to samples/image_processing/shaders/BlurBase-Vertical-Ext.frag index 18409cf..70aba48 100644 --- a/samples/BloomImageProcessing/shaders/BlurBase-Vertical-Ext.frag +++ b/samples/image_processing/shaders/BlurBase-Vertical-Ext.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/BlurBase-Vertical.frag b/samples/image_processing/shaders/BlurBase-Vertical.frag similarity index 94% rename from samples/BloomImageProcessing/shaders/BlurBase-Vertical.frag rename to samples/image_processing/shaders/BlurBase-Vertical.frag index 99afc1d..20c07e4 100644 --- a/samples/BloomImageProcessing/shaders/BlurBase-Vertical.frag +++ b/samples/image_processing/shaders/BlurBase-Vertical.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/Display.frag b/samples/image_processing/shaders/Display.frag similarity index 94% rename from samples/BloomImageProcessing/shaders/Display.frag rename to samples/image_processing/shaders/Display.frag index 2f5aaa8..be209dc 100644 --- a/samples/BloomImageProcessing/shaders/Display.frag +++ b/samples/image_processing/shaders/Display.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/Downsample-Ext.frag b/samples/image_processing/shaders/Downsample-Ext.frag similarity index 94% rename from samples/BloomImageProcessing/shaders/Downsample-Ext.frag rename to samples/image_processing/shaders/Downsample-Ext.frag index 315f914..1d44ffd 100644 --- a/samples/BloomImageProcessing/shaders/Downsample-Ext.frag +++ b/samples/image_processing/shaders/Downsample-Ext.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/Downsample.frag b/samples/image_processing/shaders/Downsample.frag similarity index 96% rename from samples/BloomImageProcessing/shaders/Downsample.frag rename to samples/image_processing/shaders/Downsample.frag index 3caa3e7..8cdc40d 100644 --- a/samples/BloomImageProcessing/shaders/Downsample.frag +++ b/samples/image_processing/shaders/Downsample.frag @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/BloomImageProcessing/shaders/VertexShader.vert b/samples/image_processing/shaders/VertexShader.vert similarity index 93% rename from samples/BloomImageProcessing/shaders/VertexShader.vert rename to samples/image_processing/shaders/VertexShader.vert index 7d7e4ea..b24eebf 100644 --- a/samples/BloomImageProcessing/shaders/VertexShader.vert +++ b/samples/image_processing/shaders/VertexShader.vert @@ -1,7 +1,7 @@ //============================================================================================================ // // -// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. +// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause // //============================================================================================================ diff --git a/samples/rayQueryShadows/01_CompileShaders.bat b/samples/rayQueryShadows/01_CompileShaders.bat deleted file mode 100644 index fcb833a..0000000 --- a/samples/rayQueryShadows/01_CompileShaders.bat +++ /dev/null @@ -1,39 +0,0 @@ -@echo off - -mkdir .\Media\Shaders - -@echo. -echo **************************************** -echo Compiling Shaders... -echo **************************************** -for %%i in (shaders\*.vert) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.frag) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) -for %%i in (shaders\*.comp) do ( - call :COMPILE %%i || GOTO COMPILE_FAILED -) - -@echo. -echo **************************************** -echo Copying .json -echo **************************************** -xcopy /y shaders\*.json .\Media\Shaders\. - -@echo. -echo **************************************** -echo Done -echo **************************************** -IF %0 EQU "%~dpnx0" PAUSE -goto :EOF - -:COMPILE -glslangValidator.exe -V %1 -o .\Media\Shaders\%~nx1.spv -IF NOT ERRORLEVEL 1 echo. %1 -^> .\Media\Shaders\%~nx1.spv -goto :EOF - -:COMPILE_FAILED -echo COMPILE FAILED -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/rayQueryShadows/02_Install_APK.bat b/samples/rayQueryShadows/02_Install_APK.bat deleted file mode 100644 index 5102c35..0000000 --- a/samples/rayQueryShadows/02_Install_APK.bat +++ /dev/null @@ -1,16 +0,0 @@ -@echo off -pushd . -cd /D "%~dp0" - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\rayQueryShadows\outputs\apk\debug\rayQueryShadows-debug.apk -@echo **************************************** -adb install -r ..\..\build\android\rayQueryShadows\outputs\apk\debug\rayQueryShadows-debug.apk - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -popd -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/rayQueryShadows/02_PrepareMedia.bat b/samples/rayQueryShadows/02_PrepareMedia.bat deleted file mode 100644 index 19d8dec..0000000 --- a/samples/rayQueryShadows/02_PrepareMedia.bat +++ /dev/null @@ -1,72 +0,0 @@ -rem @echo off -setlocal - -echo. -echo Copying from vkSampleFrameworkAssets/shared/Media (shared Assets submodule) -echo. -mkdir Media -rmdir /s /q Media\Objects -mkdir Media\Objects -rmdir /s /q Media\Textures -mkdir Media\Textures - -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\white_d.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\default_ddn.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\simplesky_env.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\simplesky_irradiance.ktx Media\Textures\. - -xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\Skybox_Separate.* Media\Objects\. - -rem xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\BistroGltfFused Media\Objects\BistroGltfFused -rem call :ConvertTextures Media\Objects\BistroGltfFused 2048 - -xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\BistroGltfExterior Media\Objects\BistroExteriorGltf -call :ConvertTextures Media\Objects\BistroExteriorGltf 2048 - -echo. -echo Cleaning up afer texture conversion -echo. -pushd Media -del /s /q /f *.png *.jpg *.tga *.dds -popd - -goto:eof - - -:ConvertTextures -rem %1 is directory, %2 is size at which we downsample (in bytes) -rem Convert png images to ktx textures. -rem Larger textures are mipped and reduced in size, (very) small textures are not -SET SIZELIMIT=1000 -pushd %1 -for /R %%i in (*.png) do ( - echo %%i|findstr /i /L "Normal">nul - if errorlevel 1 ( - call :ConvertTexture %%i %2 R8G8B8A8UnormSrgb - ) else ( - rem Normal Texture (output linear 'color' values) - call :ConvertTexture %%i %2 R8G8B8A8Unorm - ) -) -for /R %%i in (*.dds) do ( - echo %%i|findstr /i /L "Normal">nul - if errorlevel 1 ( - call :ConvertTexture %%i %2 R8G8B8A8UnormSrgb - ) else ( - rem Normal Texture (output linear 'color' values) - call :ConvertTexture %%i %2 R8G8B8A8Unorm - ) -) -popd -goto :eof - -:ConvertTexture -rem %1 is file, %2 is size at which we downsample (in bytes), %3 is the output data format -rem Convert png image to ktx texture. -if %~z1 LSS %2 ( - echo "Not scaling (or mipping) %~f1 (too small)" - ..\..\..\..\..\project\tools\simpletextureconverter.exe "%~f1" "%~dpn1.ktx" -F %3 -nomip -) else ( - ..\..\..\..\..\project\tools\simpletextureconverter.exe "%~f1" "%~dpn1.ktx" -F %3 -w 25%% -h 25%% -) -goto :eof diff --git a/samples/rayQueryShadows/02_PrepareMediaKtx2.bat b/samples/rayQueryShadows/02_PrepareMediaKtx2.bat deleted file mode 100644 index dad403b..0000000 --- a/samples/rayQueryShadows/02_PrepareMediaKtx2.bat +++ /dev/null @@ -1,72 +0,0 @@ -rem @echo off -setlocal - -echo. -echo Copying from vkSampleFrameworkAssets/shared/Media (shared Assets submodule) -echo. -mkdir Media -rmdir /s /q Media\Objects -mkdir Media\Objects -rmdir /s /q Media\Textures -mkdir Media\Textures - -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\white_d.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\default_ddn.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\simplesky_env.ktx Media\Textures\. -xcopy ..\..\vkSampleFrameworkAssets\shared\Media\Textures\simplesky_irradiance.ktx Media\Textures\. - -xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\Skybox_Separate.* Media\Objects\. - -rem xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\BistroGltfFused Media\Objects\BistroGltfFused -rem call :ConvertTextures Media\Objects\BistroGltfFused 2048 - -xcopy /s /y /k /i ..\..\vkSampleFrameworkAssets\shared\Media\Objects\BistroGltfExterior Media\Objects\BistroExteriorGltf -call :ConvertTextures Media\Objects\BistroExteriorGltf 2048 - -echo. -echo Cleaning up afer texture conversion -echo. -pushd Media -del /s /q /f *.png *.jpg *.tga *.dds -popd - -goto:eof - - -:ConvertTextures -rem %1 is directory, %2 is size at which we downsample (in bytes) -rem Convert png images to ktx textures. -rem Larger textures are mipped and reduced in size, (very) small textures are not -SET SIZELIMIT=1000 -pushd %1 -for /R %%i in (*.png) do ( - echo %%i|findstr /i /L "Normal">nul - if errorlevel 1 ( - call :ConvertTexture %%i %2 - ) else ( - rem Normal Texture (adjust compression for 'normal node' but keep the 3 components rather than compressing to 2 components which needs a shader change!) - call :ConvertTexture %%i %2 --input_swizzle rgb1 --normal_mode --assign_oetf linear - ) -) -for /R %%i in (*.dds) do ( - echo %%i|findstr /i /L "Normal">nul - if errorlevel 1 ( - call :ConvertTexture %%i %2 - ) else ( - rem Normal Texture (adjust compression for 'normal node' but keep the 3 components rather than compressing to 2 components which needs a shader change!) - call :ConvertTexture %%i %2 --input_swizzle rgb1 --normal_mode --assign_oetf linear - ) -) -popd -goto :eof - -:ConvertTexture -rem %1 is file, %2 is size at which we downsample (in bytes), %3... are additional options (eg for normal maps) passed to the converter -rem Convert png image to ktx texture. -if %~z1 LSS %2 ( - echo "Not scaling (or mipping) %~f1 (too small)" - ..\..\..\..\..\project\tools\toktx.exe --encode etc1s %3 %4 %5 %6 %7 %8 %9 "%~dpn1.ktx" "%~f1" -) else ( - ..\..\..\..\..\project\tools\toktx.exe --encode etc1s --genmipmap %3 %4 %5 %6 %7 %8 %9 "%~dpn1.ktx" "%~f1" -) -goto :eof diff --git a/samples/rayQueryShadows/04_Install_APK.bat b/samples/rayQueryShadows/04_Install_APK.bat deleted file mode 100644 index 5102c35..0000000 --- a/samples/rayQueryShadows/04_Install_APK.bat +++ /dev/null @@ -1,16 +0,0 @@ -@echo off -pushd . -cd /D "%~dp0" - -@echo. -@echo **************************************** -@echo Install ..\..\build\android\rayQueryShadows\outputs\apk\debug\rayQueryShadows-debug.apk -@echo **************************************** -adb install -r ..\..\build\android\rayQueryShadows\outputs\apk\debug\rayQueryShadows-debug.apk - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -popd -IF %0 EQU "%~dpnx0" PAUSE diff --git a/samples/rayQueryShadows/05_PrepareWindowsZip.bat b/samples/rayQueryShadows/05_PrepareWindowsZip.bat deleted file mode 100644 index b49c1e7..0000000 --- a/samples/rayQueryShadows/05_PrepareWindowsZip.bat +++ /dev/null @@ -1,8 +0,0 @@ -@del rayQueryShadows.zip -copy /y ..\..\project\windows\solution\samples\rayQueryShadows\Debug\rayQueryShadows.exe rayQueryShadows_debug.exe -copy /y ..\..\project\windows\solution\samples\rayQueryShadows\Release\rayQueryShadows.exe rayQueryShadows_release.exe -copy /y ..\..\project\windows\solutionArm64\samples\rayQueryShadows\Debug\rayQueryShadows.exe rayQueryShadows_arm64_debug.exe -copy /y ..\..\project\windows\solutionArm64\samples\rayQueryShadows\Release\rayQueryShadows.exe rayQueryShadows_arm64_release.exe -zip -r rayQueryShadows.zip Media rayQueryShadows_debug.exe rayQueryShadows_release.exe rayQueryShadows_arm64_debug.exe rayQueryShadows_arm64_release.exe -del /q rayQueryShadows_debug.exe rayQueryShadows_release.exe rayQueryShadows_arm64_debug.exe rayQueryShadows_arm64_release.exe - diff --git a/samples/rayQueryShadows/06_Adb_Logcat.bat b/samples/rayQueryShadows/06_Adb_Logcat.bat deleted file mode 100644 index 6b89aff..0000000 --- a/samples/rayQueryShadows/06_Adb_Logcat.bat +++ /dev/null @@ -1,11 +0,0 @@ -@echo off - -@echo Logcat... -call adb logcat -c -call adb logcat - -@echo. -@echo **************************************** -@echo Done! -@echo **************************************** -pause \ No newline at end of file diff --git a/samples/rayQueryShadows/07_InstallConfig.bat b/samples/rayQueryShadows/07_InstallConfig.bat deleted file mode 100644 index de62246..0000000 --- a/samples/rayQueryShadows/07_InstallConfig.bat +++ /dev/null @@ -1,5 +0,0 @@ -@echo off - -adb push ./app_config.txt /sdcard/Android/data/com.qualcomm.sgs.rayqueryshadows/files/app_config.txt - -pause diff --git a/samples/rayQueryShadows/CMakeLists.txt b/samples/rayQueryShadows/CMakeLists.txt deleted file mode 100644 index 288f9cf..0000000 --- a/samples/rayQueryShadows/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -cmake_minimum_required (VERSION 3.21) - -project (rayQueryShadows C CXX) -set(CMAKE_CXX_STANDARD 20) - -# -# Source files included in this application. -# - -set(CPP_SRC code/main/rayqueryshadows.cpp - code/main/rayqueryshadows.hpp - code/main/materials.hpp -) - - - -# -# Setup the module path to include the 'project directory' (project/windows or project/android) -# -if(NOT DEFINED PROJECT_ROOT_DIR) - set(PROJECT_ROOT_DIR ${CMAKE_SOURCE_DIR}) # Windows can use CMAKE_SOURCE_DIR, Android needs build.gradle needs "-DPROJECT_ROOT_DIR=${project.rootDir}" in call to cmake set since there is not a 'top' cmakefile (gradle is top level) -endif() -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_ROOT_DIR}/cmake) - -# -# Add in the contents of 'shaders' directory -# -include(AddShadersDir) - -# -# Do all the build steps for a Framework application. -# needs Framework_dir and project_name variables. -# -include(FrameworkApplicationHelper) - -# -# Copy required models to local folders -# -include(ModelPackager) - -# ThaiCarving GLTF -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/ThaiCarving/ThaiCarving) - -# Add supporting GLTF -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/General/Floor_Separate) -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/General/Skybox_Separate) -add_gltf(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/General/UVSphere_Separate) - -# -# Convert and copy textures to local folders -# -include(TexturePackager) - -# Textures -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/ThaiCarving/Textures_png) -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/scenes/General) -add_textures_from_path(${CMAKE_CURRENT_SOURCE_DIR}/../../assets/textures) \ No newline at end of file diff --git a/samples/rayQueryShadows/README.md b/samples/rayQueryShadows/README.md deleted file mode 100644 index 54aad0f..0000000 --- a/samples/rayQueryShadows/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# Ray Query Shadows sample - -![Screenshot](img/screenshot.PNG) - -## Overview - -Uses the Vulkan Ray Tracing extensions to implement shadows from a point light source in a non-trivial scene. - -Requires drivers with the 'final' Vulkan Ray Tracing api (Dec 2020 onwards). - -## Building - -### Dependencies - -The following dependencies must be installed and the appropriate locations should be referenced in the `PATH` environment variable. - -* Android SDK -* Andorid NDK -* Gradle -* CMake -* Android Studio - -### Pre-Build - -Compile the underlying shaders to .spv by running the batch file below: - -``` -01_CompileShaders.bat -``` - - -Note: The sample assumes the existence of supporting assets under the **'Media'** folder. These assets are not currently distributed with the framework. - - -### Build - -Once the dependencies are installed and shaders compiled, building this sample .apk/.exe is as simple as running any of the batch files from the framework root directory, accordingly to your target system: - -``` -01_BuildAndroid.bat -02_BuildWindows.bat -``` - -### Deploy (android-only) - -To deploy the media files and the .apk to a connected device, run the batch files below: - -``` -02_Install_APK.bat -``` - -## Android Studio - -This sample can also be easily imported to Android Studio and be used within the Android Studio ecosystem including building, deploying, and native code debugging. - -To do this, open Android Studio and go to `File->New->Import Project...` and select the `project\android` folder as the source for the import. This will load up the gradle configuration and once finalized, the sample can be used within Android Studio. - - -## Running - -Windows: -- From this directory (samples\rayQueryShadows) execute `..\..\project\windows\solution\samples\rayQueryShadows\Debug\rayQueryShadows.exe` -- (you can also compile/run by opening `project\windows\solution\vkSampleFramework.sln` in Visual Studio and running rayQueryShadows) - -Android: -- This sample runs on hardware that exposes the Vulkan Acceleration Structure and Ray Query extensions - -## Configuration - -The sample will run with reasonable defaults but the user can override settings by placing a `app_config.txt` text file in the sample root folder (eg samples\rayQueryShadows\app_config.txt) - -This file can also be pushed to Android device (takes precidence of the app_config.txt in the apk install): -

    -adb push ./app_config.txt /sdcard/Android/data/com.quic.rayqueryshadows/files/app_config.txt
    -
    - -Example contents: -
    gRenderHud = true
    -gCameraStartPos = { -1012, 1047, 568 }
    -gCameraStartRot = { 77.0, 49.0, 73.0 }
    -gShadowLightPos = { 111.0, 420.0, -423.0 }
    -gShadowLightTarget = { 269.0, 0.0, -254.0 }
    -gShadowPosition = {-208.0, 422.6, 464.9 }
    -
    -
    -gSurfaceWidth = 1280
    -gSurfaceHeight = 720
    -
    -gRenderWidth = 1280
    -gRenderHeight = 720
    -
    -gEnableValidation = true
    -
    -
    - -Additional options: -- gCreateCulledAccelerationStructure=false (default true). - - Disables the acceletration structure culling and instead creates the acceleration structures with all BLAS instances (entire scene). - -- gFragmentShaderRTShadows (default false) - - Enable lights/shadows run in additional fragment shader passes (renders a sphere for each 'additional' light and raytraces shadows for all gbuffer pixels touched by the light) - -- gEnableValidation (default true) - - Enable Khronos Vulkan validation layer, disable to reduce CPU load (samples should aim to be free of Validation errors) - -- gRenderShadow (default true) - - Disable rendering of shadows (ie disable ray queries). Screen will be rendered as if everything is in shadow! - -- gFixedFrameRate (default 0) - - Set a fixed frame rate for the application. CPU sleep() will be added every frame so on average the application hits the target (assuming it is lower than the maximum achievable on the target device). Frame time reported to the application's Update is fixed (derived from gFixedFrameRate). Value of 0 disables this feature and runs the application at its maximum speed. - -- gFifoPresentMode (default false) - - When set to true changes Vulkan's swapchain present mode to 'VK_PRESENT_MODE_FIFO_KHR'. Will fix the application's maximum present frequency (and thus application fps) to that of the display. - -- gRayQueryFragmentShader (default false) - - When set to true runs the fullscreen ray queried shadow pass in a fullscreen fragment shader (vs compute when false) \ No newline at end of file diff --git a/samples/rayQueryShadows/app_config.txt b/samples/rayQueryShadows/app_config.txt deleted file mode 100644 index 24a56e8..0000000 --- a/samples/rayQueryShadows/app_config.txt +++ /dev/null @@ -1,6 +0,0 @@ -gFramesToRender=0 -#gCameraMoveSpeed=100 - -gRasterizedShadow=false -gRasterizedShadowCulled=true - diff --git a/samples/rayQueryShadows/build.gradle b/samples/rayQueryShadows/build.gradle deleted file mode 100644 index e437ab6..0000000 --- a/samples/rayQueryShadows/build.gradle +++ /dev/null @@ -1,93 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - lintOptions { - abortOnError false - } - - String rootDir = "${project.rootDir}" - rootDir = rootDir.replace("\\", "/") - - defaultConfig { - applicationId "com.quic.rayqueryshadows" - minSdkVersion 26 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - ndkVersion "${project.ndkVersionDefault}" - ndk { - abiFilters 'arm64-v8a' - } - externalNativeBuild { - cmake { - arguments "-DPROJECT_ROOT_DIR=${rootDir}", "-DFRAMEWORK_DIR=${rootDir}/../../framework" - } - } - } - - signingConfigs{ - unsigned{ - storeFile file("${System.env.USERPROFILE}/.android/debug.keystore") - storePassword = "android" - keyAlias = "androiddebugkey" - keyPassword = "android" - v2SigningEnabled = false - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.unsigned - } - debug { - debuggable = true - jniDebuggable = true - } - } - - sourceSets { - main { - jni.srcDirs = [] - manifest.srcFile 'project/android/AndroidManifest.xml' - //java.srcDirs = ['src'] - res.srcDirs = ['project/android/res'] - - // Uncomment this to enable validation -// jniLibs { -// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" -// } - } - main.assets { - srcDirs = ['assets'] - // Uncomment this to add Media folder to assets - srcDirs += ['assets_tmp'] - } - } - - dependencies { - } - - externalNativeBuild { - cmake { - version "3.19.0+" - path 'CMakeLists.txt' - } - } - - task copyTmpAssets(type: Copy) { - from "Media" - into "assets_tmp/Media" - } - task removeTmpAssets(type: Delete) { - delete "assets_tmp" - } - - afterEvaluate { - packageRelease.finalizedBy(removeTmpAssets) - } - - preBuild.dependsOn(copyTmpAssets) -} diff --git a/samples/rayQueryShadows/code/main/materials.hpp b/samples/rayQueryShadows/code/main/materials.hpp deleted file mode 100644 index 0cf44ae..0000000 --- a/samples/rayQueryShadows/code/main/materials.hpp +++ /dev/null @@ -1,141 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#pragma once - -#include "vulkan/vulkan.hpp" - -#include "system/os_common.h" -#include "system/glm_common.hpp" - -//============================================================================= -// Uniform Buffers -//============================================================================= - - -// ********************** -// The Objects -// ********************** -struct ObjectVertUB -{ - glm::mat4 VPMatrix; - glm::vec4 AnimationRotation; // Used if running the 'animated' version of the shaders -}; - -struct ObjectFragUB -{ - glm::vec4 Color; - - // X: Normal Height - // Y: Normal Mirror Reflect Amount - // Z: Reflect Fresnel Min - // W: Reflect Fresnel Max - glm::vec4 NormalHeight; -}; - - -// ********************** -// The Skybox -// ********************** -struct SkyboxVertUB -{ - glm::mat4 MVPMatrix; - glm::mat4 ModelMatrix; - glm::vec4 Color; -}; - - -// ********************** -// Deferred Lighting Fullscreen pass -// ********************** -struct LightFragCtrl { - glm::mat4 ProjectionInv; - glm::mat4 ViewInv; - glm::mat4 WorldToShadow;// for rasterized depth shadow - glm::vec4 CameraPos; - - glm::vec4 PointLightPosition; // w is intensity - glm::vec4 PointLightColor; - - // Directional Light - glm::vec4 DirectionalLightDirection; - glm::vec4 DirectionalLightColor; - - glm::vec4 AmbientColor; - - float PointLightRadius; // of the light itself (not the area of influence) - float PointLightCutoff; - - float SpecScale; - float SpecPower; - float irradianceAmount; - float irradianceMipLevel; - float AmbientOcclusionScale; - int Width; - int Height; -}; - - -// ********************** -// Additional deferred pass light objects (additional lights in scene) -// ********************** -struct PointLightUB{ - // Vertex shader - glm::mat4 MVPMatrix; - - // Fragment shader (could split in to 2 uniform buffers, one per shader stage) - glm::mat4 ProjectionInv; - glm::mat4 ViewInv; - glm::vec4 CameraPos; - glm::vec3 LightPosition; - float LightIntensity; - glm::vec4 LightColor; - float LightRadius; // Radius of the physical light (not its range of influence) - float LightCutoff; // Cutoff brightness for the light - float SpecScale; - float SpecPower; - glm::vec2 WindowSize; -}; - - -// ********************** -// Post/Blit -// ********************** -struct BlitFragCtrl { - float Bloom = 0.0f; - float Diffuse = 1.0f; // 0 to 2 range (dark to white) - int sRGB = 0; // 1 - apply srgb conversion in output blit shader, 0 passthrough color -}; - - -// ********************** -// Compute (ray traced shadow) -// ********************** -struct ShadowRQCtrl { - // X: Screen Width - // Y: Screen Height - // Z: One Width Pixel - // W: One Height Pixel - glm::vec4 ScreenSize; - // Camera inverse projection - glm::mat4 ProjectionInv; - // Camera inverse view - glm::mat4 ViewInv; - // Light(shadow) world position (only used for spotlight or pointlight) - glm::vec4 LightWorldPos; - // Light(shadow) world direction (only used for spotlight or directional light) - glm::vec4 LightWorldDirection; -} m_ShadowRQCtrl; - -// ********************** -// Compute (mesh animation) -// ********************** -struct MeshAnimatorUB -{ - glm::vec4 AnimationRotation; -}; diff --git a/samples/rayQueryShadows/code/main/rayQueryShadows.cpp b/samples/rayQueryShadows/code/main/rayQueryShadows.cpp deleted file mode 100644 index 006965c..0000000 --- a/samples/rayQueryShadows/code/main/rayQueryShadows.cpp +++ /dev/null @@ -1,2702 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#include "rayQueryShadows.hpp" -#include "camera/cameraController.hpp" -#include "camera/cameraControllerTouch.hpp" -#include "gui/imguiVulkan.hpp" -#include "main/applicationEntrypoint.hpp" -#include "material/computable.hpp" -#include "material/drawable.hpp" -#include "material/material.hpp" -#include "material/materialManager.hpp" -#include "material/shader.hpp" -#include "material/shaderDescription.hpp" -#include "material/shaderManager.hpp" -#include "memory/memoryManager.hpp" -#include "memory/vulkan/bufferObject.hpp" -#include "memory/vulkan/drawIndirectBufferObject.hpp" -#include "memory/vulkan/indexBufferObject.hpp" -#include "memory/vulkan/vertexBufferObject.hpp" -#include "mesh/meshHelper.hpp" -#include "mesh/instanceGenerator.hpp" -#include "system/math_common.hpp" -#include "texture/textureManager.hpp" -#include "vulkan/vulkan.hpp" -#include "vulkan/extensionHelpers.hpp" -#include "vulkan/TextureFuncts.h" -#include "vulkan/timerSimple.hpp" -#include "vulkanRT/vulkanRT.hpp" -#include "vulkanRT/sceneRT.hpp" -#include "vulkanRT/meshUpdateRT.hpp" -#include "imgui.h" - -#include - -#include "vulkanRT/meshObjectRT.hpp" - - -// Global Variables From Config File -VAR(bool, gRenderHud, true, kVariableNonpersistent); -VAR(bool, gRenderShadow, true, kVariableNonpersistent); -VAR(bool, gAdvancedMode, true, kVariableNonpersistent); // Show full gui and enable stat output - -VAR(glm::vec3, gCameraStartPos, glm::vec3(-0.0f, 15.0f, 40.0f), kVariableNonpersistent); -VAR(glm::vec3, gCameraStartRot, glm::vec3(0.0f, 0.0f, 0.0f), kVariableNonpersistent); // in degrees - -// VAR(glm::vec3, gShadowPosition, glm::vec3(0.f, 40.0f, 60.0f), kVariableNonpersistent); // Position of 'main' ray queried shadow -// VAR(glm::vec3, gShadowPosition, glm::vec3(0.35f, 0.0f, 70.0f), kVariableNonpersistent); // Position of 'main' ray queried shadow -VAR(glm::vec3, gShadowPosition, glm::vec3(22.35f, 0.0f, 70.0f), kVariableNonpersistent); // Position of 'main' ray queried shadow - -VAR(float, gShadowRadius, 300.0f, kVariableNonpersistent); // Calculated Radius of the shadow(debug) -VAR(float, gShadowRadiusCutoff, 0.5f, kVariableNonpersistent); // Amount to multiply shadow radius by when generating the acceleration structure containing possible shadow casters (reduces the complexity of the scene we are tracing through) -VAR(bool, gShadowDirectionalLight, false, kVariableNonpersistent); // Use a directional light when running ray query (uses same light direction as the gRasterizedShadow option) -VAR(float, gLightEmitterRadius, 300.0f, kVariableNonpersistent); // Size of the light emitter -VAR(float, gLightAttenuationCutoff, 0.3f, kVariableNonpersistent); // Minimum Light intensity (used to calculate light/shadow radius) -VAR( bool, gCreateCulledAccelerationStructure, true, kVariableNonpersistent ); // Enable/disable creation of the acceleration structure that is culled (can only trace the entire scene when off) -VAR(bool, gDisableAccelerationStructureCull, false, kVariableNonpersistent ); // Enable/disable culling based on radius (just trace against entire scene when off) -VAR(bool, gForceAccelerationStructureRegen, false, kVariableNonpersistent ); // Regenerate the top level acceleration structure(s) every frame when enabled (do only on chenges if disabled) -VAR(bool, gUpdateAccelerationStructureInPlace, true, kVariableNonpersistent); // For updated Acceleration Structures determine if they should be updated in-place (single AS) or ping-pong between two AS -VAR(bool, gAdditionalShadows, true, kVariableNonpersistent); // Enable lights/shadows run in additional fragment shader passes (renders a sphere for each 'additional' light and raytraces shadows for all gbuffer pixels touched by the light) -VAR(bool, gRayQueryFragmentShader, false, kVariableNonpersistent); // Run the main light ray query on fragment shader -VAR(bool, gAnimateBLAS, true, kVariableNonpersistent); // Run compute animation that updates some of the bottom level acceleration structures every frame -VAR(bool, gBatchUpdateBLAS, false, kVariableNonpersistent); // Batch the updating of the BLAS into a single cmd (rather than cmd per updated object). Needs gAnimateBLAS=true - -VAR(float, gFOV, PI_DIV_4, kVariableNonpersistent); -VAR(float, gNearPlane, 1.0f, kVariableNonpersistent); -VAR(float, gFarPlane, 1050.0f, kVariableNonpersistent); - -VAR(bool, gRasterizedShadow, false, kVariableNonpersistent); // Use rasterized (depth buffer) rather than ray queried shadows -VAR(bool, gRasterizedShadowCulled, true, kVariableNonpersistent); // -VAR(glm::vec3, gRasterizedShadowPosition, glm::vec3(300.f, 1047.f, 900.f), kVariableNonpersistent); -VAR(glm::vec3, gRasterizedShadowTarget, glm::vec3(200.f, 24.f, 330.f), kVariableNonpersistent); -VAR(float, gRasterizedShadowFarPlane, 2500.f, kVariablePermanent); - -VAR(float, gSpecularExponent, 50.0f, kVariableNonpersistent); -VAR(float, gSpecularScale, 1.2f, kVariableNonpersistent); -VAR(float, gIrradianceAmount, 0.2f, kVariableNonpersistent); -VAR(float, gIrradianceMip, 1.0f, kVariableNonpersistent); -VAR(float, gNormalAmount, 1.0f, kVariableNonpersistent); -VAR(float, gNormalMirrorReflectAmount, 0.05f, kVariableNonpersistent); - -VAR(glm::vec4, gClearColor, glm::vec4(0.0f, 0.0f, 0.0f, 1.0f), kVariableNonpersistent); - -VAR(char*, gSceneObjectName, "Media/Meshes/ThaiCarving.gltf", kVariableNonpersistent); -VAR(char*, gAnimatedMaterialName, "Foliage_Paris_Flowers_BaseColor", kVariableNonpersistent); - -static const char* const sRenderPassNames[NUM_RENDER_PASSES] = { "RP_GBUFFER", "RP_RAYSHADOW", "RP_RASTERSHADOW", "RP_LIGHT", "RP_HUD", "RP_BLIT" }; -static_assert(RP_GBUFFER == 0, "Check order of sRenderPassNames"); -static_assert(RP_BLIT == 5, "Check order of sRenderPassNames"); -static_assert(NUM_RENDER_PASSES == sizeof(sRenderPassNames) / sizeof(sRenderPassNames[0]), "mismatched sRenderPassNames"); - -// Helper -class TestMeshAnimator final : public MeshUpdateRT -{ - TestMeshAnimator(const TestMeshAnimator&) = delete; - TestMeshAnimator& operator=(const TestMeshAnimator&) = delete; -public: - TestMeshAnimator(TestMeshAnimator&&) noexcept; - TestMeshAnimator(); - - bool Create(Vulkan& vulkan, const MeshObjectIntermediate& meshObject, const AccelerationStructureUpdateable* blas, bool createScratch); - VkBuffer GetOriginalVertexVkBuffer() const { return m_OriginalVertices.GetVkBuffer(); } - - void UpdateAS(VulkanRT& vulkanRT, VkCommandBuffer cmdBuffer) const { MeshUpdateRT::UpdateAS(vulkanRT, cmdBuffer, *m_BLAS); } - void PrepareUpdateASData(VkAccelerationStructureBuildGeometryInfoKHR& asBuildGeometryInfo, VkAccelerationStructureGeometryKHR& asGeometry, VkAccelerationStructureBuildRangeInfoKHR& asBuildRangeInfo) const { MeshUpdateRT::PrepareUpdateASData(asBuildGeometryInfo, asGeometry, asBuildRangeInfo, *m_BLAS); } - -protected: - BufferT m_OriginalVertices; - const AccelerationStructureUpdateable* m_BLAS = nullptr; -}; - -TestMeshAnimator::TestMeshAnimator() : MeshUpdateRT() -{ -} - -TestMeshAnimator::TestMeshAnimator(TestMeshAnimator&& other) noexcept - : MeshUpdateRT(std::move(other)) - , m_OriginalVertices(std::move(other.m_OriginalVertices)) - , m_BLAS(other.m_BLAS) -{ - other.m_BLAS = nullptr; -} - -bool TestMeshAnimator::Create(Vulkan& vulkan, const MeshObjectIntermediate& meshObject, const AccelerationStructureUpdateable* blas, bool createScratch) -{ - if (!MeshUpdateRT::Create(vulkan, meshObject, createScratch ? blas->GetUpdateScratchSize() : 0)) - return false; - - m_BLAS = blas; - m_OriginalVertices = MeshObjectRT::CreateRtVertexBuffer(vulkan.GetMemoryManager(), meshObject, BufferUsageFlags::Storage); - return true; -} - - -// -// Implementation of the Application entrypoint (called by the framework) -// Construct the Application class -// -//----------------------------------------------------------------------------- -FrameworkApplicationBase* Application_ConstructApplication() -//----------------------------------------------------------------------------- -{ - return new Application(); -} - -//----------------------------------------------------------------------------- -Application::Application() -//----------------------------------------------------------------------------- - : ApplicationHelperBase() - , m_bEncodeSRGB(false) - , m_TotalDrawCalls(0) - , m_TotalTriangles(0) - , m_vulkanRT(*GetVulkan()) -{ - // Render passes - m_RenderPass.fill(VK_NULL_HANDLE); -} - -//----------------------------------------------------------------------------- -Application::~Application() -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - // Semaphores - if (m_BlitCompleteSemaphore != VK_NULL_HANDLE) - vkDestroySemaphore(pVulkan->m_VulkanDevice, m_BlitCompleteSemaphore, NULL); - m_BlitCompleteSemaphore = VK_NULL_HANDLE; - - // Passes - m_RenderPass[RP_RASTERSHADOW] = VK_NULL_HANDLE; // shadow pass owned by m_Shadows. - for (auto& pass : m_RenderPass) - { - if (pass != VK_NULL_HANDLE) - vkDestroyRenderPass(pVulkan->m_VulkanDevice, pass, nullptr); - pass = VK_NULL_HANDLE; - } - - // Compute - - // Textures - ReleaseTexture(*pVulkan, &m_ShadowRayQueryComputeOutput); - - for (auto& uniform : m_AdditionalDeferredLightsSharedUniform) - ReleaseUniformBuffer(pVulkan, uniform); - - for(auto& updatable : m_sceneAnimatedMeshObjects) - updatable.Destroy(*pVulkan, m_vulkanRT); -} - -//----------------------------------------------------------------------------- -int Application::PreInitializeSelectSurfaceFormat(std::span formats) -//----------------------------------------------------------------------------- -{ - // On Snapdragon if the surfaceflinger has to do the rotation to the display native orientation then it will do it at 8bit colordepth. - // To avoid this we need to enable the 'pre-rotation' of the display (and the use of VK_QCOM_render_pass_transform so we dont have to rotate our buffers/passes manually). - GetVulkan()->m_UseRenderPassTransform = true; - - // We want to select a SRGB output format (if one exists) unless running on hlm (does not support srgb output) - TextureFormat idealFormat = gRunOnHLM ? TextureFormat::B8G8R8A8_UNORM : TextureFormat::B8G8R8A8_SRGB; - int index = 0; - for (const auto& format : formats) - { - if (format.format == idealFormat) - return index; - ++index; - } - return -1; -} - -//----------------------------------------------------------------------------- -void Application::PreInitializeSetVulkanConfiguration(Vulkan::AppConfiguration& appConfig) -//----------------------------------------------------------------------------- -{ - ApplicationHelperBase::PreInitializeSetVulkanConfiguration( appConfig ); - m_vulkanRT.RegisterRequiredVulkanLayerExtensions(appConfig, true/*query only*/); - appConfig.RequiredExtension(); - appConfig.RequiredExtension(); - appConfig.RequiredExtension(); -} - -//----------------------------------------------------------------------------- -bool Application::Initialize(uintptr_t windowHandle, uintptr_t instanceHandle) -//----------------------------------------------------------------------------- -{ - if (!ApplicationHelperBase::Initialize(windowHandle, instanceHandle)) - { - return false; - } - auto* pVulkan = GetVulkan(); - - // Camera - InitCamera(); - m_Camera.SetPosition(gCameraStartPos, glm::quat(gCameraStartRot * TO_RADIANS)); - m_Camera.SetFov(gFOV); - m_Camera.SetClipPlanes(gNearPlane, gFarPlane); - - // The Skybox - m_SkyboxScale = gFarPlane * 0.95f; - - // Set the current surface format - m_RequestedSurfaceFormat = {pVulkan->m_SurfaceFormat, pVulkan->m_SurfaceColorSpace}; - m_bEncodeSRGB = !FormatIsSrgb(pVulkan->m_SurfaceFormat); // if we have an srgb buffer then the output doesnt need to be encoded (hardware will do it for us) - - // Profiling - static constexpr uint32_t cMaxTimersPerFrame = 16; - m_GpuTimerPool = std::make_unique(*pVulkan); - m_GpuTimerPool->Initialize(cMaxTimersPerFrame); - - if (!LoadShaders()) - return false; - - if (!LoadTextures()) - return false; - - if (!CreateRenderTargets()) - return false; - - if (!InitShadowMap()) - return false; - - if (!InitLighting()) - return false; - - if (!InitUniforms()) - return false; - - if (!InitAllRenderPasses()) - return false; - - if (!InitMaterials()) - return false; - - if (!InitGui(windowHandle)) - return false; - - if (!LoadMeshObjects()) - return false; - - if (!VULKAN_RT_USE_STUB && !LoadRayTracingObjects()) - return false; - - if (!InitCommandBuffers()) - return false; - - if (!InitDrawables()) - return false; - - InitHdr(); - - if (!InitLocalSemaphores()) - return false; - - if (!BuildCmdBuffers()) - return false; - - LOGE("Initalize workers!!"); - - m_GameThreadWorker.Initialize("GameThreadWorker", 1); - - m_CompletedThreadOutput = {}; - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::LoadMeshObjects() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - m_ShadowRayQueryComputeOutput = CreateTextureObject(*pVulkan, gRenderWidth, gRenderHeight, TextureFormat::R8_UNORM, TEXTURE_TYPE::TT_COMPUTE_TARGET, "ShadowRQDest"); - - // - // Create the 'Light' drawable mesh. - // Fullscreen quad that does the gbuffer lighting pass (fullscreen pass of gbuffer, outputting a lit color buffer). - LOGI("Creating Light mesh..."); - - // Lambda to populate textures requested by the material. - const auto textureLoader = - [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo { - if (texName == "Albedo") { - return { &m_GBufferRT[0].m_ColorAttachments[0] }; - } - else if (texName == "Normal") { - return { &m_GBufferRT[0].m_ColorAttachments[1] }; - } - else if (texName == "Depth") { - return { &m_GBufferRT[0].m_DepthAttachment }; - } - else if (texName == "ShadowDepth") { - return { &m_Shadows[0].GetDepthTexture() }; - } - else if (texName == "ShadowVSM") { - return { m_ShadowVSM.GetVSMTexture() }; - } - else if (texName == "ShadowRT") { - if (gRayQueryFragmentShader) - return { &m_ShadowRT[0].m_ColorAttachments[0] }; - else - return { &m_ShadowRayQueryComputeOutput }; - } - else if (texName == "Environment" || texName == "Irradiance") - { - auto texture = m_TextureManager->GetTexture( texName ); - if (texture) - return { texture }; - // File not loaded, use default - return { m_TexWhite }; - } - assert(0); - return {}; - }; - - // Light pass using Ray Queried shadow texture - { - const auto* pLightShader = m_ShaderManager->GetShader("Light"); - assert(pLightShader); - auto lightShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pLightShader, NUM_VULKAN_BUFFERS, textureLoader, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - //LightFragCtrl - return { m_LightFragUniform.vkBuffers }; - }); - - Mesh lightMesh; - MeshHelper::CreateMesh(pVulkan->GetMemoryManager(), MeshObjectIntermediate::CreateScreenSpaceMesh(), 0, pLightShader->m_shaderDescription->m_vertexFormats, &lightMesh); - - m_LightDrawable = std::make_unique(*pVulkan, std::move(lightShaderMaterial)); - if (!m_LightDrawable->Init(m_RenderPass[RP_LIGHT], sRenderPassNames[RP_LIGHT], std::move(lightMesh))) - { - LOGE("Error Creating Light drawable..."); - } - } - - // Light pass using 'traditional' rasterized shadow - { - const auto* pLightShader = m_ShaderManager->GetShader("LightRasterizedShadows"); - assert(pLightShader); - auto lightShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pLightShader, NUM_VULKAN_BUFFERS, textureLoader, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - //LightFragCtrl - return { m_LightFragUniform.vkBuffers }; - }); - - MeshObject lightMesh; - MeshHelper::CreateMesh(pVulkan->GetMemoryManager(), MeshObjectIntermediate::CreateScreenSpaceMesh(), 0, pLightShader->m_shaderDescription->m_vertexFormats, &lightMesh); - - m_LightRasterizedShadowDrawable = std::make_unique(*pVulkan, std::move(lightShaderMaterial)); - if (!m_LightRasterizedShadowDrawable->Init(m_RenderPass[RP_LIGHT], sRenderPassNames[RP_LIGHT], std::move(lightMesh))) - { - LOGE("Error Creating Light drawable..."); - } - } - - // - // Create the 'Blit' drawable mesh. - // Fullscreen quad that does the final composite (hud and scene) for output. - LOGI("Creating Blit mesh..."); - - const auto* pBlitShader = m_ShaderManager->GetShader("Blit"); - assert(pBlitShader); - auto blitShaderMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pBlitShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> const MaterialPass::tPerFrameTexInfo { - if (texName == "Diffuse") { - return { &m_MainRT[0].m_ColorAttachments[0] }; - } - else if (texName == "Overlay") { - return { &m_HudRT[0].m_ColorAttachments[0] }; - } - else if (texName == "Bloom") { - return { m_TexWhite }; - } - assert(0); - return {}; - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - //BlitFragCB - return { m_BlitFragUniform.buf.GetVkBuffer() }; - } - ); - - MeshObject blitMesh; - MeshHelper::CreateMesh(pVulkan->GetMemoryManager(), MeshObjectIntermediate::CreateScreenSpaceMesh(), 0, pBlitShader->m_shaderDescription->m_vertexFormats, &blitMesh); - - m_BlitDrawable = std::make_unique(*pVulkan, std::move(blitShaderMaterial)); - if (!m_BlitDrawable->Init( m_RenderPass[RP_BLIT], sRenderPassNames[RP_BLIT], std::move(blitMesh))) - { - LOGE("Error Creating Blit drawable..."); - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::LoadRayTracingObjects() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - // Load the Geometry for Ray Tracing! and populate m_sceneRayTracable - if (!m_vulkanRT.Init()) - { - LOGE("Vulkan Ray Tracing Extension was not available...exiting"); - return false; - } - - std::vector candidateMeshes = MeshObjectIntermediate::LoadGLTF(*m_AssetManager, gSceneObjectName); - if( candidateMeshes.empty() ) - { - LOGE("Could not load the Ray Tracing mesh object: %s", gSceneObjectName); - return false; - } - - // (optionally) go through and find meshes that match each other (automated instancing). - auto instancedMeshes = MeshInstanceGenerator::FindInstances( std::move(candidateMeshes) ); - candidateMeshes.clear(); - - auto sceneRayTracable = std::make_unique(*pVulkan, m_vulkanRT); - - m_sceneObjectTriangleCounts.clear(); - - for (const auto& instancedMesh : instancedMeshes) - { - if( !instancedMesh.mesh.m_Materials.empty() && - (instancedMesh.mesh.m_Materials[0].transparent || !instancedMesh.mesh.m_Materials[0].emissiveFilename.empty()) ) - continue; - - // Find animated meshes (flowers!) - const bool updateable = instancedMesh.mesh.m_Materials[0].diffuseFilename.find(gAnimatedMaterialName) != std::string::npos; - auto updateMode = MeshObjectRT::UpdateMode::NotUpdatable; - if (updateable && gUpdateAccelerationStructureInPlace) - updateMode = MeshObjectRT::UpdateMode::InPlace; - else if (updateable && !gUpdateAccelerationStructureInPlace) - updateMode = MeshObjectRT::UpdateMode::PingPong; - - MeshObjectRT meshRayTracable; - if (!meshRayTracable.Create(*pVulkan, m_vulkanRT, instancedMesh.mesh, updateMode)) - return false; - const auto& id = sceneRayTracable->AddObject(std::move(meshRayTracable)); - if (!id) - return false; - for (const auto& instance : instancedMesh.instances) - { - sceneRayTracable->AddInstance(id, instance.transform); - } - m_sceneObjectTriangleCounts.emplace( id, instancedMesh.mesh.CalcNumTriangles() ); - - // Create the object that does the animation/update - if (updateable) - { - const MeshObjectRT* pMeshObjectRT = sceneRayTracable->FindObject(id); - assert(pMeshObjectRT); - - auto& updatableObject = m_sceneAnimatedMeshObjects.emplace_back(); - if (!updatableObject.Create(*pVulkan, instancedMesh.mesh, pMeshObjectRT, true/*always create a scratch per updateable, may not be used if we are batching updates together*/)) - { - assert(0); - m_sceneAnimatedMeshObjects.pop_back(); - } - } - } - - const auto blasUpdateMode = gUpdateAccelerationStructureInPlace ? MeshObjectRT::UpdateMode::InPlace : MeshObjectRT::UpdateMode::PingPong; - - if (gCreateCulledAccelerationStructure) - { - // Create the acceleration structure for Ray Tracing (this top level acceleration structure is updated depending on cpu culling). - auto sceneRayTracableCulled = std::make_unique( *pVulkan, m_vulkanRT ); - if (!sceneRayTracableCulled->CreateAccelerationStructure( blasUpdateMode, sceneRayTracable->GetNumKnownInstances() )) - { - LOGE( "Error Creating Scene AccelerationStructure..." ); - return false; - } - m_sceneRayTracableCulled = std::move( sceneRayTracableCulled ); - } - else - { - // Create the top level acceleration structure for just ray tracing the entire scene (no cpu culling) - sceneRayTracable->CreateAccelerationStructure(); - } - - m_sceneRayTracable = std::move(sceneRayTracable); - - // Create the Computable that runs the ShadowRQ shader (which does the ray queried shadows on the scene acceleration structure). - if (true)// ShadowRQ - { - const auto* pComputeShader = m_ShaderManager->GetShader("ShadowRQ"); - assert(pComputeShader); - - for (auto directionalLight : { false, true }) // make a computable for both light types - { - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pComputeShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { - if (texName == "Output") - return { &m_ShadowRayQueryComputeOutput }; - else if (texName == "Depth") - return { &m_GBufferRT[0].m_DepthAttachment }; - else if (texName == "Normal") - return { &m_GBufferRT[0].m_ColorAttachments[1] }; - else { - assert(0); - return {}; - } - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - return { m_ShadowRQCtrlUniform.vkBuffers }; - }, - nullptr, - [this](const std::string& accelStructureName) -> MaterialPass::tPerFrameVkAccelerationStructure { - return { m_sceneRayTracableCulled ? m_sceneRayTracableCulled->GetVkAccelerationStructure() : m_sceneRayTracable->GetVkAccelerationStructure() }; - }, - [directionalLight](const std::string& specializationConstantName) -> const VertexElementData { - return VertexElementData{ VertexFormat::Element::ElementType::t::Boolean, directionalLight }; - }); - - auto computable = std::make_unique(*pVulkan, std::move(material)); - if (!computable->Init()) - { - LOGE("Error Creating ShadowRQ computable..."); - computable.reset(); - } - else - { - computable->SetDispatchGroupCount(0, { (m_ShadowRayQueryComputeOutput.Width + 31) / 32, (m_ShadowRayQueryComputeOutput.Height + 31) / 32,1 }); - } - if (directionalLight) - m_ShadowDirectionalLightRQComputable = std::move(computable); - else - m_ShadowPointLightRQComputable = std::move(computable); - } - } - - // Create the fullscreen drawable for ShadowRQFrag shader (which does the ray queried shadows on the scene acceleration structure). - if (true) - { - const auto* pShader = m_ShaderManager->GetShader("ShadowRQFrag"); - assert(pShader); - - for (auto directionalLight : { false, true }) // make a drawable for both light types - { - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { - if (texName == "Output") - return { &m_ShadowRayQueryComputeOutput }; - else if (texName == "Depth") - return { &m_GBufferRT[0].m_DepthAttachment }; - else if (texName == "Normal") - return { &m_GBufferRT[0].m_ColorAttachments[1] }; - else { - assert(0); - return {}; - } - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - return { m_ShadowRQCtrlUniform.vkBuffers }; - }, - nullptr, - [this](const std::string& accelStructureName) -> MaterialPass::tPerFrameVkAccelerationStructure { - return { m_sceneRayTracableCulled ? m_sceneRayTracableCulled->GetVkAccelerationStructure() : m_sceneRayTracable->GetVkAccelerationStructure() }; - }, - [this, directionalLight](const std::string& specializationConstantName) -> const VertexElementData { - return VertexElementData{ VertexFormat::Element::ElementType::t::Boolean, directionalLight }; - }); - - MeshObject fullscreenMesh; - MeshHelper::CreateMesh(pVulkan->GetMemoryManager(), MeshObjectIntermediate::CreateScreenSpaceMesh(), 0, pShader->m_shaderDescription->m_vertexFormats, &fullscreenMesh); - - auto drawable = std::make_unique(*pVulkan, std::move(material)); - if (!drawable->Init(m_RenderPass[RP_RAYSHADOW], sRenderPassNames[RP_RAYSHADOW], std::move(fullscreenMesh))) - { - LOGE("Error Creating Shadow Ray Query drawable..."); - } - else - { - if (directionalLight) - m_ShadowDirectionalLightRQDrawable = std::move(drawable); - else - m_ShadowPointLightRQDrawable = std::move(drawable); - } - } - } - - // - // Setup the 'additional' lights (with Ray Traced shadows) - // - const size_t NumAdditionalLights = m_AdditionalDeferredLightsData.size(); - - const auto* pPointLightShader = m_ShaderManager->GetShader("PointLight"); - assert(pPointLightShader); - - m_AdditionalDeferredLightsSharedUniform.resize(NumAdditionalLights); - for( auto& uniformArray : m_AdditionalDeferredLightsSharedUniform ) - { - PointLightUB uniformData{}; - if (!CreateUniformBuffer(pVulkan, uniformArray, &uniformData)) - { - LOGE("Error Creating AdditionalDeferredLightsSharedUniform buffer..."); - return false; - } - } - - m_AdditionalDeferredLightDrawables.reserve(NumAdditionalLights); - m_AdditionalDeferredLightShadowRQ.reserve(NumAdditionalLights); - - for( int WhichLight=0; WhichLightGetNumKnownInstances() )) - { - LOGE( "Error Creating light shadow AccelerationStructure..." ); - return false; - } - - auto deferredLightMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pPointLightShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { - if (texName == "Albedo") { - return { &m_GBufferRT[0].m_ColorAttachments[0] }; - } - else if (texName == "Normal") { - return { &m_GBufferRT[0].m_ColorAttachments[1] }; - } - else if (texName == "Depth") { - return { &m_GBufferRT[0].m_DepthAttachment }; - } - else { - assert(0); - return {}; - } - }, - [this, WhichLight](const std::string& bufferName) -> tPerFrameVkBuffer { - return { m_AdditionalDeferredLightsSharedUniform[WhichLight].vkBuffers }; - }, - nullptr, - [this, WhichLight](const std::string& accelStructureName) -> MaterialPass::tPerFrameVkAccelerationStructure { - return { m_AdditionalDeferredLightShadowRQ[WhichLight].GetVkAccelerationStructure() }; - } - ); - auto& drawable = m_AdditionalDeferredLightDrawables.emplace_back( *pVulkan, std::move(deferredLightMaterial) ); - - const auto sphereMeshObjectIntermediate = MeshObjectIntermediate::LoadGLTF( *m_AssetManager, "./Media/Meshes/Skybox_Separate.gltf" ); - if( sphereMeshObjectIntermediate.empty() ) - { - LOGE( "Error loading light sphere..." ); - return false; - } - - MeshObject sphereMesh; - if (!MeshHelper::CreateMesh(pVulkan->GetMemoryManager(), sphereMeshObjectIntermediate[0], 0, pPointLightShader->m_shaderDescription->m_vertexFormats, &sphereMesh)) - { - LOGE( "Error creating light sphere..." ); - return false; - } - - if( !drawable.Init( m_RenderPass[RP_LIGHT], sRenderPassNames[RP_LIGHT], std::move( sphereMesh ) ) ) - { - LOGE( "Error Initializing AdditionalDeferredLightDrawables..." ); - return false; - } - } - - // Create the computables that do the acceleration structure vertex updates (animated vertices). - { - const auto* pAnimateShader = m_ShaderManager->GetShader("AnimateBuffer"); - assert(pAnimateShader); - - m_sceneAnimatedMeshComputables.reserve(m_sceneAnimatedMeshObjects.size()); - - for (const auto& updatableObject : m_sceneAnimatedMeshObjects) - { - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pAnimateShader, 1, - nullptr, - [&updatableObject, this](const std::string& bufferName) -> tPerFrameVkBuffer { - if (bufferName == "InputVertexData") - return { updatableObject.GetOriginalVertexVkBuffer() }; - else if (bufferName == "OutputVertexData") - return { updatableObject.GetVertexVkBuffer() }; - else if (bufferName == "Uniform") - return { m_sceneAnimatedMeshUniform.vkBuffers }; - assert(0); - return {}; - }, - nullptr - ); - - auto& computable = m_sceneAnimatedMeshComputables.emplace_back(*pVulkan, std::move(material)); - if (!computable.Init()) - { - LOGE("Error Creating Scene Update computable..."); - m_sceneAnimatedMeshComputables.pop_back(); - } - else - { - computable.SetDispatchThreadCount(0, { updatableObject.GetNumVertices(), 1, 1 }); - } - } - } - - return true; -} - -//----------------------------------------------------------------------------- -void Application::Destroy() -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - // Threads - m_GameThreadWorker.FinishAllWork(); - m_GameThreadWorker.Terminate(); - - pVulkan->WaitUntilIdle(); - - // Command buffers - for (auto& bufferArray : m_PassCmdBuffer) - for (auto& buffer : bufferArray) - buffer.Release(); - - // Meshes - m_SkyboxDrawable.reset(); - m_ShadowRasterizedDrawable.reset(); - m_ShadowPointLightRQDrawable.reset(); - m_ShadowDirectionalLightRQDrawable.reset(); - m_LightDrawable.reset(); - m_LightRasterizedShadowDrawable.reset(); - m_BlitDrawable.reset(); - m_SceneDrawables.clear(); - m_ShadowPointLightRQComputable.reset(); - m_ShadowDirectionalLightRQComputable.reset(); - m_ShadowRasterizedCullingComputable.reset(); - m_sceneRayTracableCulled.reset(); - m_sceneRayTracable.reset(); - m_AdditionalDeferredLightDrawables.clear(); - m_AdditionalDeferredLightShadowRQ.clear(); - m_ShadowVSM.Release(*pVulkan); - - // Scene - - // Uniform Buffers - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - ReleaseUniformBuffer(pVulkan, m_ObjectVertUniform[WhichPass]); - ReleaseUniformBuffer(pVulkan, m_ObjectFragUniform[WhichPass]); - ReleaseUniformBuffer(pVulkan, m_SkyboxVertUniform[WhichPass]); - } // WhichPass - - ReleaseUniformBuffer(pVulkan, m_ShadowRQCtrlUniform); - ReleaseUniformBuffer(pVulkan, &m_BlitFragUniform); - ReleaseUniformBuffer(pVulkan, m_LightFragUniform); - ReleaseUniformBuffer(pVulkan, m_ShadowInstanceCullingCameraUniform); - ReleaseUniformBuffer(pVulkan, &m_ShadowInstanceCullingBuffer); - m_ShadowInstanceCulledData.Destroy(); - - for (auto& uniform : m_AdditionalDeferredLightsSharedUniform) - ReleaseUniformBuffer(pVulkan, uniform); - m_AdditionalDeferredLightsSharedUniform.clear(); - - ReleaseUniformBuffer(pVulkan, m_sceneAnimatedMeshUniform); - - if (m_GpuTimerPool) - m_GpuTimerPool->Destroy(); - m_GpuTimerPool.reset(); - - // Finally call into base class destroy - ApplicationHelperBase::Destroy(); -} - -//----------------------------------------------------------------------------- -void Application::RunGameThread(const GameThreadInputParam& rThreadParam, GameThreadOutputParam& rThreadOutput) -//----------------------------------------------------------------------------- -{ - VkResult RetVal = VK_SUCCESS; - Vulkan* pVulkan = GetVulkan(); - uint32_t WhichFrame = rThreadParam.CurrentBuffer.idx; - - // Clean up command buffers from last run - m_RenderPassSubmitData[WhichFrame].clear(); - - // take the gpu timer mutex (as we read back the timers and will also be modifying cpu timer data in this thread, and dont want to conflict with another thread doing logging) - std::lock_guard timerPoolLock(m_GpuTimerPoolMutex); - - // Read back timers - UpdateProfiling(WhichFrame); - - // If anything changes with the lights (Position, orientation, color, brightness, etc.) - UpdateLighting(rThreadParam.ElapsedTime); - - UpdateShadowMap(rThreadParam.ElapsedTime); - - // Update uniform buffers with latest data - UpdateUniforms(WhichFrame, rThreadParam.ElapsedTime); - - // Set where we are reading the shadow from. - if (gRayQueryFragmentShader) - m_LightDrawable->GetMaterial().UpdateDescriptorSetBinding(WhichFrame, "Shadow", m_ShadowRT[0].m_ColorAttachments[0] ); - else - m_LightDrawable->GetMaterial().UpdateDescriptorSetBinding(WhichFrame, "Shadow", m_ShadowRayQueryComputeOutput ); - - m_LightCmdBuffer[WhichFrame].Reset(); - m_LightCmdBuffer[WhichFrame].Begin( m_MainRT[0].m_FrameBuffer, m_MainRT.m_RenderPass ); - - VkRect2D Scissor = {}; - Scissor.extent.width = m_PassSetup[RP_LIGHT].TargetWidth; - Scissor.extent.height = m_PassSetup[RP_LIGHT].TargetHeight; - VkViewport Viewport = { - .width = (float)Scissor.extent.width, - .height = (float)Scissor.extent.height, - .minDepth = 0.0f, - .maxDepth = 1.0f - }; - vkCmdSetViewport( m_LightCmdBuffer[WhichFrame].m_VkCommandBuffer, 0, 1, &Viewport ); - vkCmdSetScissor( m_LightCmdBuffer[WhichFrame].m_VkCommandBuffer, 0, 1, &Scissor ); - if (gRasterizedShadow) - AddDrawableToCmdBuffers(*m_LightRasterizedShadowDrawable.get(), &m_LightCmdBuffer[WhichFrame], 1, 1, WhichFrame); - else - AddDrawableToCmdBuffers( *m_LightDrawable.get(), &m_LightCmdBuffer[WhichFrame], 1, 1, WhichFrame ); - m_LightCmdBuffer[WhichFrame].End(); - - // First pass, waits for the back buffer to be ready. - std::span pBackbufferWaitSemaphores = { &rThreadParam.CurrentBuffer.semaphore, 1 }; - // Blit pass, signals that the last submit is done - std::span pBlitCompleteSemaphore = { &m_BlitCompleteSemaphore, 1 }; - - static const VkPipelineStageFlags DefaultGfxWaitDstStageMasks[] = { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT }; - - int gpuFrameTimerId; - { - // GBuffer render pass (gbuffer 'laydown' and shadow generation). - auto& renderPassLocal = BeginCommandBuffer( RP_GBUFFER, WhichFrame, pBackbufferWaitSemaphores, DefaultGfxWaitDstStageMasks, { }, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); - gpuFrameTimerId = renderPassLocal.CmdBuff.StartGpuTimer("GPU Frame"); - BeginRenderPass( renderPassLocal ); - AddPassCommandBuffers( renderPassLocal ); - EndRenderPass( renderPassLocal ); - renderPassLocal.CmdBuff.End(); - } - - if (gRenderShadow) - { - if (gRasterizedShadow) - { - // Shadow 'depth laydown' pass - auto& renderPassLocal = BeginCommandBuffer(RP_RASTERSHADOW, WhichFrame, {}, {}, {}, VK_SUBPASS_CONTENTS_INLINE); - - if (gRasterizedShadowCulled) - { - // If we are doing rasterized shadow culling then we need to add that computable! - AddComputableToCmdBuffer(*m_ShadowRasterizedCullingComputable, renderPassLocal.CmdBuff); - - // Barrier to ensure compute finished before rasterizing the shadows. - VkMemoryBarrier barrier{ VK_STRUCTURE_TYPE_MEMORY_BARRIER }; - barrier.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT; - barrier.dstAccessMask = VK_ACCESS_INDIRECT_COMMAND_READ_BIT; - vkCmdPipelineBarrier(renderPassLocal.CmdBuff.m_VkCommandBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, 0, 1, &barrier, 0, nullptr, 0, nullptr); - } - - BeginRenderPass(renderPassLocal); - gpuFrameTimerId = renderPassLocal.CmdBuff.StartGpuTimer("Rasterized Shadows"); - AddPassCommandBuffers(renderPassLocal); - renderPassLocal.CmdBuff.StopGpuTimer(gpuFrameTimerId); - EndRenderPass(renderPassLocal); - - // Execute shadow sampling (VSM) compute shaders - m_ShadowVSM.AddComputableToCmdBuffer(renderPassLocal.CmdBuff); - - renderPassLocal.CmdBuff.End(); - } - else - { - auto& renderPassLocal = BeginCommandBuffer(RP_RAYSHADOW, WhichFrame, {}, {}, {}, VK_SUBPASS_CONTENTS_INLINE); - - VkCommandBuffer vkCommandBuffer = renderPassLocal.CmdBuff.m_VkCommandBuffer; - - // Run any animation Computables - bool forceASUpdate = false; - if (gAnimateBLAS && !m_sceneAnimatedMeshComputables.empty()) - { - for (const auto& computable : m_sceneAnimatedMeshComputables) - { - AddComputableToCmdBuffer(computable, renderPassLocal.CmdBuff); - } - - // Barrier to ensure compute has written all the buffers before building BLAS. - VkMemoryBarrier barrier{ VK_STRUCTURE_TYPE_MEMORY_BARRIER }; - barrier.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT; - barrier.dstAccessMask = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR; - vkCmdPipelineBarrier(vkCommandBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, 0, 1, &barrier, 0, nullptr, 0, nullptr); - - // If anything is animated in the overall scene force an update of the culled Top Level AS. Potentially this is overkill (does not take into account which objects are culled). - forceASUpdate = true; - } - - auto asUpdateTimerId = renderPassLocal.CmdBuff.StartGpuTimer("Acceleration Structure Update (total)"); - - // Build/update all the updateable bottom level acceleration structures - if (forceASUpdate && !m_sceneAnimatedMeshObjects.empty()) - { - char timerName[64]; - sprintf(timerName, "Animated BLAS Updates (%d updates)", (int)m_sceneAnimatedMeshObjects.size()); - auto blasUpdateTimerId = renderPassLocal.CmdBuff.StartGpuTimer(timerName); - - if (gBatchUpdateBLAS) - { - // Batch together the BLAS updates into one Vulkan command - std::vector< VkAccelerationStructureBuildGeometryInfoKHR> blasUpdateBuildGeometryInfos; - std::vector< VkAccelerationStructureGeometryKHR> blasUpdateGeometries; - std::vector< VkAccelerationStructureBuildRangeInfoKHR> blasUpdateBuildRangeInfos; - std::vector pBlasUpdateBuildRangeInfos; - - const uint32_t numAnimatedBlas = (uint32_t)m_sceneAnimatedMeshObjects.size(); - blasUpdateBuildGeometryInfos.reserve(numAnimatedBlas); - blasUpdateGeometries.reserve(numAnimatedBlas); - blasUpdateBuildRangeInfos.reserve(numAnimatedBlas); - pBlasUpdateBuildRangeInfos.reserve(numAnimatedBlas); - - for (const auto& updateableBottomLevelObjectIt : m_sceneAnimatedMeshObjects) - { - updateableBottomLevelObjectIt.PrepareUpdateASData(blasUpdateBuildGeometryInfos.emplace_back(), blasUpdateGeometries.emplace_back(), blasUpdateBuildRangeInfos.emplace_back()); - pBlasUpdateBuildRangeInfos.push_back(&blasUpdateBuildRangeInfos.back()); - } - m_vulkanRT.vkCmdBuildAccelerationStructuresKHR(vkCommandBuffer, numAnimatedBlas, blasUpdateBuildGeometryInfos.data(), pBlasUpdateBuildRangeInfos.data()); - } - else - { - // Do each BLAS update as a seperate command - for (const auto& updateableBottomLevelObjectIt : m_sceneAnimatedMeshObjects) - { - updateableBottomLevelObjectIt.UpdateAS(m_vulkanRT, vkCommandBuffer); - } - } - - renderPassLocal.CmdBuff.StopGpuTimer(blasUpdateTimerId); - - // Barrier to ensure BLAS are all updated before updating or building TLAS. - VkMemoryBarrier barrier{ VK_STRUCTURE_TYPE_MEMORY_BARRIER }; - barrier.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT; - barrier.dstAccessMask = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR; - vkCmdPipelineBarrier(vkCommandBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, 0, 1, &barrier, 0, nullptr, 0, nullptr); - } - - // Build the shadow acceleration structures (if requested to). - auto tlasUpdateTimerId = renderPassLocal.CmdBuff.StartGpuTimer("Main TLAS Update"); - if (m_sceneRayTracableCulled) - m_sceneRayTracableCulled->UpdateAS(vkCommandBuffer, forceASUpdate); - renderPassLocal.CmdBuff.StopGpuTimer(tlasUpdateTimerId); - - // Build the acceleration structures (if requested to) for the 'additional' lights. - if (gAdditionalShadows) - { - for (uint32_t WhichLight = 0; WhichLight < m_AdditionalDeferredLightShadowRQ.size(); ++WhichLight) - { - char timerName[64]; - sprintf(timerName, "AdditionalLight %u TLAS Update", WhichLight + 1); - auto tlasUpdateTimerId = renderPassLocal.CmdBuff.StartGpuTimer(timerName); - auto& sceneRT = m_AdditionalDeferredLightShadowRQ[WhichLight]; - sceneRT.UpdateAS(renderPassLocal.CmdBuff.m_VkCommandBuffer); - renderPassLocal.CmdBuff.StopGpuTimer(tlasUpdateTimerId); - } - } - - // Finish up the timer around all the Acceleration Structure updates - renderPassLocal.CmdBuff.StopGpuTimer(asUpdateTimerId); - - if (gRayQueryFragmentShader) - { - auto timerId = renderPassLocal.CmdBuff.StartGpuTimer("ShadowRayQuery Frag"); - BeginRenderPass(renderPassLocal); - if (gShadowDirectionalLight) - AddDrawableToCmdBuffers(*m_ShadowDirectionalLightRQDrawable, &renderPassLocal.CmdBuff, 1, 1, WhichFrame); - else - AddDrawableToCmdBuffers(*m_ShadowPointLightRQDrawable, &renderPassLocal.CmdBuff, 1, 1, WhichFrame); - EndRenderPass(renderPassLocal); - renderPassLocal.CmdBuff.StopGpuTimer(timerId); - } - else - { - // Execue the Shadow Ray Tracing commands on the main (graphics) queue. - auto timerId = renderPassLocal.CmdBuff.StartGpuTimer("ShadowRayQuery Compute"); - if (gShadowDirectionalLight) - AddComputableToCmdBuffer(*m_ShadowDirectionalLightRQComputable, &renderPassLocal.CmdBuff, 1, 1, m_GpuTimerPool.get()); - else - AddComputableToCmdBuffer(*m_ShadowPointLightRQComputable, &renderPassLocal.CmdBuff, 1, 1, m_GpuTimerPool.get()); - renderPassLocal.CmdBuff.StopGpuTimer(timerId); - } - renderPassLocal.CmdBuff.End(); - } - } - - { - // Lighting pass (Gbuffer resolve and emissives) - auto& renderPassLocal = BeginRenderPass(RP_LIGHT, WhichFrame, {}, {}, {}, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); - // Add all the lights and anything else rendered to the light render pass (eg emissives) - AddPassCommandBuffers( renderPassLocal ); - EndRenderPass( renderPassLocal ); - renderPassLocal.CmdBuff.End(); - } - - VkCommandBuffer guiCommandBuffer = VK_NULL_HANDLE; - if (gRenderHud && m_Gui) - { - // Render gui (has its own command buffer, optionally returns vk_null_handle if not rendering anything) - guiCommandBuffer = GetGui()->Render(WhichFrame, m_HudRT[0].m_FrameBuffer); - if (guiCommandBuffer != VK_NULL_HANDLE) - { - auto& renderPassLocal = BeginRenderPass(RP_HUD, WhichFrame, {}, {}, {}, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); - AddPassCommandBuffers( renderPassLocal, { &guiCommandBuffer,1 } ); - EndRenderPass( renderPassLocal ); - renderPassLocal.CmdBuff.End(); - } - } - - // Blit Results to the screen - { - auto& renderPassLocal = BeginRenderPass(RP_BLIT, WhichFrame, {}, {}, pBlitCompleteSemaphore, VK_SUBPASS_CONTENTS_INLINE); - AddDrawableToCmdBuffers(*m_BlitDrawable, &renderPassLocal.CmdBuff, 1, 1, WhichFrame); - EndRenderPass( renderPassLocal ); - renderPassLocal.CmdBuff.StopGpuTimer( gpuFrameTimerId ); // end of frame - m_GpuTimerPool->ReadResults( renderPassLocal.CmdBuff.m_VkCommandBuffer, WhichFrame ); - renderPassLocal.CmdBuff.End(); - } - - rThreadOutput.Fence = rThreadParam.CurrentBuffer.fence; - rThreadOutput.SwapchainPresentIndx = rThreadParam.CurrentBuffer.swapchainPresentIdx; - rThreadOutput.WhichFrame = WhichFrame; -} - -//----------------------------------------------------------------------------- -void Application::Render(float fltDiffTime) -//----------------------------------------------------------------------------- -{ - // Reset Metrics - m_TotalDrawCalls = 0; - m_TotalTriangles = 0; - - static bool positive = false; - if (positive) - { - //gShadowPosition.x += fltDiffTime * 30.0f; - - if (std::abs(gShadowPosition.x) > 40) - { - positive = false; - } - } - else - { - //gShadowPosition.x -= fltDiffTime * 30.0f; - - if (std::abs(gShadowPosition.x) > 40) - { - positive = true; - } - } - - - - // Grab the vulkan wrapper - Vulkan* pVulkan = GetVulkan(); - - // See if we want to change backbuffer surface format - if (m_RequestedSurfaceFormat.colorSpace != pVulkan->m_SurfaceColorSpace || m_RequestedSurfaceFormat.format != pVulkan->m_SurfaceFormat) - { - ChangeSurfaceFormat(m_RequestedSurfaceFormat); - } - - // Obtain the next swap chain image for the next frame. - auto CurrentVulkanBuffer = pVulkan->SetNextBackBuffer(); - - // - // Run any Updates that do not modify GPU resources. - // - - UpdateCamera(fltDiffTime); - - // Wait for game thread to finish... - m_GameThreadWorker.FinishAllWork(); - - // - // We are running single-threaded here... - // - - UpdateGui(); - - if (gFramesToRender == 0) - { - // - // Runing 'forever'. - // - // Do rendering 'threaded'. - // - - // ... grab info from the last run ... - int FrameToSubmit = m_CompletedThreadOutput.WhichFrame; - int SwapchainPresentIndx = m_CompletedThreadOutput.SwapchainPresentIndx; - VkFence FrameToRenderFence = m_CompletedThreadOutput.Fence; - - // Start thread updating the next frame. - GameThreadInputParam gameThreadParam{ CurrentVulkanBuffer, fltDiffTime }; - - m_GameThreadWorker.DoWork2( [](Application* pThis, Application::GameThreadInputParam ThreadParam) { - pThis->RunGameThread(ThreadParam, pThis->m_CompletedThreadOutput); - }, this, std::move(gameThreadParam)); - - // Submit and present thread work from last frame (potentially while the thread worker is generating the next frame). - if (FrameToSubmit >= 0) - { - auto finishedSemaphore = SubmitGameThreadWork(FrameToSubmit, FrameToRenderFence); - PresentQueue(finishedSemaphore, SwapchainPresentIndx); - } - } - else - { - // - // Running a (pre)defined number of frames. - // - // Run syncronously so that we render the exact number of requested frames. - // - GameThreadInputParam gameThreadParam{ CurrentVulkanBuffer, fltDiffTime }; - RunGameThread(gameThreadParam, m_CompletedThreadOutput); - - // Submit and present this frame - auto finishedSemaphore = SubmitGameThreadWork(m_CompletedThreadOutput.WhichFrame, m_CompletedThreadOutput.Fence); - PresentQueue(finishedSemaphore, m_CompletedThreadOutput.SwapchainPresentIndx); - } - - // ******************************** - // Application Draw() - End - // ******************************** -} - -//----------------------------------------------------------------------------- -bool Application::LoadTextures() -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - m_TextureManager->SetDefaultFilenameManipulators(PathManipulator_ChangeExtension{ ".ktx" }); - - // Load 'loose' textures - m_TextureManager->GetOrLoadTexture("Environment" , *m_AssetManager, "./Media/Textures/simplesky_env.ktx", m_SamplerRepeat); - m_TextureManager->GetOrLoadTexture("Irradiance", *m_AssetManager, "./Media/Textures/simplesky_irradiance.ktx", m_SamplerRepeat); - //m_loadedTextures.emplace("Environment", *m_AssetManager, "./Media/Textures/simplesky_env.ktx", SamplerAddressMode::Repeat)); - //m_loadedTextures.emplace("Irradiance", *m_AssetManager, "./Media/Textures/.ktx", SamplerAddressMode::Repeat)); - - m_TexWhite = m_TextureManager->GetOrLoadTexture("White", *m_AssetManager, "./Media/Textures/white_d.ktx", m_SamplerRepeat); - m_DefaultNormal = m_TextureManager->GetOrLoadTexture("Normal", *m_AssetManager, "./Media/Textures/normal_default.ktx", m_SamplerRepeat); - - if (!m_TexWhite || !m_DefaultNormal) - { - return false; - } - - return true; -} - -bool Application::CreateRenderTargets() -//----------------------------------------------------------------------------- -{ - LOGI("******************************"); - LOGI("Creating Render Targets..."); - LOGI("******************************"); - - Vulkan* pVulkan = GetVulkan(); - - const TextureFormat DesiredDepthFormat = pVulkan->GetBestSurfaceDepthFormat(); - - // Setup the GBuffer - const TextureFormat GbufferColorType[] = { TextureFormat::R8G8B8A8_SRGB/*Albedo*/, TextureFormat::R16G16B16A16_SFLOAT/*Normals*/ }; - - if (!m_GBufferRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, GbufferColorType, DesiredDepthFormat, VK_SAMPLE_COUNT_1_BIT, "GBuffer RT")) - { - LOGE("Unable to create gbuffer render target"); - } - - // Setup the 'shadow' (ray query result) buffer - const TextureFormat ShadowColorType[] = { TextureFormat::R8_UNORM }; - - if (!m_ShadowRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, ShadowColorType, TextureFormat::UNDEFINED, VK_SAMPLE_COUNT_1_BIT, "Shadow RT")) - { - LOGE("Unable to create shadow render target"); - } - - // Setup the 'main' (compositing) buffer - const TextureFormat MainColorType[] = { TextureFormat::R16G16B16A16_SFLOAT }; - - if (!m_MainRT.Initialize(pVulkan, gRenderWidth, gRenderHeight, MainColorType, m_GBufferRT/*inherit depth*/, VK_SAMPLE_COUNT_1_BIT, "Main RT")) - { - LOGE("Unable to create main render target"); - } - - // Setup the HUD render target (no depth) - const TextureFormat HudColorType[] = { TextureFormat::R8G8B8A8_UNORM }; - - if (!m_HudRT.Initialize(pVulkan, gSurfaceWidth, gSurfaceHeight, HudColorType, TextureFormat::UNDEFINED, VK_SAMPLE_COUNT_1_BIT, "HUD RT")) - { - LOGE("Unable to create hud render target"); - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitShadowMap() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - for (uint32_t i = 0; i < cNumShadows; ++i) - { - if (!m_Shadows[i].Initialize(*pVulkan, gShadowMapWidth, gShadowMapHeight, false)) - { - LOGE("Unable to create shadow (render target?)"); - return false; - } - if (gRasterizedShadowFarPlane > gFarPlane) - gRasterizedShadowFarPlane = gFarPlane; - m_Shadows[i].SetLightPos(gRasterizedShadowPosition, gRasterizedShadowTarget); - m_Shadows[i].SetEyeClipPlanes(m_Camera.Fov(), m_Camera.NearClip(), m_Camera.Aspect(), gRasterizedShadowFarPlane); - } - - if (!m_ShadowVSM.Initialize(*pVulkan, *m_ShaderManager, *m_MaterialManager, m_Shadows[0])) - { - LOGE("Unable to create shadow VSM"); - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitLighting() -//----------------------------------------------------------------------------- -{ - m_LightColor = { 1.0f, 0.98f, 0.73f, gSpecularExponent }; - - m_AdditionalDeferredLightsData.clear(); - m_AdditionalDeferredLightsData.push_back( { glm::vec3( 768.7, 440.f, 877.4), 1.0f, 10.0f } ); - m_AdditionalDeferredLightsData.push_back( { glm::vec3( -433.9f, 440.f, -420.f), 1.0f, 10.0f } ); - //Handled by the Light.frag pass: m_AdditionalDeferredLightsData.push_back( { glm::vec3( -211.f, 440.f, 470.f ), 1.0f, 10.0f } ); - m_AdditionalDeferredLightsData.push_back( { glm::vec3( -966, 440.f, 210 ), 1.0f, 10.0f } ); - m_AdditionalDeferredLightsData.push_back( { glm::vec3( -177.0, 440.f, 1000 ), 1.0f, 10.0f } ); - m_AdditionalDeferredLightsData.push_back( { glm::vec3( 375.f, 440.f, -2130.f ), 1.0f, 10.0f } ); - return true; -} - -//----------------------------------------------------------------------------- -bool Application::LoadShaders() -//----------------------------------------------------------------------------- -{ - Vulkan* const pVulkan = GetVulkan(); - - m_ShaderManager->RegisterRenderPassNames({ sRenderPassNames, sRenderPassNames + (sizeof(sRenderPassNames) / sizeof(sRenderPassNames[0])) }); - - LOGI("Loading Shaders..."); - - typedef std::pair tIdAndFilename; - for (const tIdAndFilename& i : - { tIdAndFilename { "ObjectDeferred", "Media\\Shaders\\ObjectDeferred.json" }, - tIdAndFilename { "ObjectEmissive", "Media\\Shaders\\ObjectEmissive.json" }, - tIdAndFilename { "ObjectAnimated", "Media\\Shaders\\ObjectAnimated.json" }, - tIdAndFilename { "Skybox", "Media\\Shaders\\Skybox.json" }, - tIdAndFilename { "Light", "Media\\Shaders\\Light.json" }, - tIdAndFilename { "RasterizedShadowCull", "Media\\Shaders\\RasterizedShadowCull.json" }, - tIdAndFilename { "LightRasterizedShadows", "Media\\Shaders\\LightRasterizedShadows.json" }, - tIdAndFilename { "Blit", "Media\\Shaders\\Blit.json" }, - tIdAndFilename { "ShadowRQ", "Media\\Shaders\\ShadowRQ.json" }, - tIdAndFilename { "ShadowRQFrag", "Media\\Shaders\\ShadowRQFrag.json" }, - tIdAndFilename { "VarianceShadowMap", "Media\\Shaders\\VarianceShadowMap.json" }, - tIdAndFilename { "PointLight", "Media\\Shaders\\PointLight.json" }, - tIdAndFilename { "AnimateBuffer", "Media\\Shaders\\AnimateBuffer.json" } - }) - { - if (!m_ShaderManager->AddShader(*m_AssetManager, i.first, i.second)) - { - LOGE("Error Loading shader %s from %s", i.first.c_str(), i.second.c_str()); - } - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitUniforms() -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - // These are only created here, they are not set to initial values - LOGI("Creating uniform buffers..."); - - m_ObjectVertUniformData = {}; - - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - CreateUniformBuffer(pVulkan, m_ObjectVertUniform[WhichPass]); - CreateUniformBuffer(pVulkan, m_ObjectFragUniform[WhichPass]); - CreateUniformBuffer(pVulkan, m_SkyboxVertUniform[WhichPass]); - } - - // Streetlights (outdoor) - m_LightFragUniformData.PointLightPosition = glm::vec4(-211.f, 440.f, 470.f, 25.0f); - m_LightFragUniformData.PointLightColor = glm::vec4(1.0f, 0.8f, 0.7f, 1.0f); - m_LightFragUniformData.DirectionalLightDirection = glm::vec4( glm::normalize(gRasterizedShadowTarget - gRasterizedShadowPosition), 0.0f ); - m_LightFragUniformData.DirectionalLightColor = glm::vec4(0.9f, 0.8f, 1.0f, 1.0f); - m_LightFragUniformData.AmbientColor = glm::vec4(0.15f, 0.15f, 0.15f, 1.0f); - m_LightFragUniformData.PointLightRadius = gLightEmitterRadius; - m_LightFragUniformData.PointLightCutoff = gLightAttenuationCutoff; - m_LightFragUniformData.SpecScale = gSpecularScale; - m_LightFragUniformData.SpecPower = gSpecularExponent; - m_LightFragUniformData.irradianceAmount = gIrradianceAmount; - m_LightFragUniformData.irradianceMipLevel = gIrradianceMip; - m_LightFragUniformData.AmbientOcclusionScale = 1.0f; - - CreateUniformBuffer(pVulkan, m_ShadowRQCtrlUniform, &m_ShadowRQCtrl); - CreateUniformBuffer(pVulkan, m_BlitFragUniform, &m_BlitFragUniformData); - CreateUniformBuffer(pVulkan, m_LightFragUniform, &m_LightFragUniformData); - - m_sceneAnimatedMeshUniformData = {}; - CreateUniformBuffer(pVulkan, m_sceneAnimatedMeshUniform, &m_sceneAnimatedMeshUniformData); - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::UpdateUniforms(uint32_t WhichBuffer, float ElapsedTime) -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - // Special View matrix for Skybox - glm::mat4 SkyboxViewMatrix = glm::mat4_cast(m_Camera.Rotation()); - glm::mat4 SkyboxMVP = m_Camera.ProjectionMatrix() * SkyboxViewMatrix; - - // ******************************** - // Object - // ******************************** - glm::mat4 ObjectVP = m_Camera.ProjectionMatrix() * m_Camera.ViewMatrix(); - - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - // Skip passes which do not rasterize object geometry. - if (WhichPass != RP_RASTERSHADOW && WhichPass != RP_GBUFFER) - continue; - - switch (WhichPass) - { - case RP_RASTERSHADOW: - m_ObjectVertUniformData.VPMatrix = m_Shadows[0].GetViewProj(); - break; - case RP_GBUFFER: - m_ObjectVertUniformData.VPMatrix = ObjectVP; - break; - default: - LOGE("***** %s Not Handled! *****", GetPassName(WhichPass)); - break; - } - - if (gAnimateBLAS) - { - m_ObjectVertUniformData.AnimationRotation.x += ElapsedTime * 4.0f; - m_ObjectVertUniformData.AnimationRotation.y += ElapsedTime * 4.1f; - m_ObjectVertUniformData.AnimationRotation.z += ElapsedTime * 0.5f; - m_ObjectVertUniformData.AnimationRotation.w += ElapsedTime * 0.52f; - if (m_ObjectVertUniformData.AnimationRotation.x > PI_MUL_2) - m_ObjectVertUniformData.AnimationRotation.x -= PI_MUL_2; - if (m_ObjectVertUniformData.AnimationRotation.y > PI_MUL_2) - m_ObjectVertUniformData.AnimationRotation.y -= PI_MUL_2; - if (m_ObjectVertUniformData.AnimationRotation.z > PI_MUL_2) - m_ObjectVertUniformData.AnimationRotation.z -= PI_MUL_2; - if (m_ObjectVertUniformData.AnimationRotation.w > PI_MUL_2) - m_ObjectVertUniformData.AnimationRotation.w -= PI_MUL_2; - } - - UpdateUniformBuffer(pVulkan, m_ObjectVertUniform[WhichPass], m_ObjectVertUniformData, WhichBuffer); - - m_ObjectFragUniformData.Color = glm::vec4(1.0f,1.0f,1.0f, 1.0f); // White by default - - m_ObjectFragUniformData.NormalHeight = glm::vec4(gNormalAmount, gNormalMirrorReflectAmount, 0.0f, 0.0f); - - UpdateUniformBuffer(pVulkan, m_ObjectFragUniform[WhichPass], m_ObjectFragUniformData, WhichBuffer); - } - - // ******************************** - // Rayqueried Shadow - // ******************************** - m_ShadowRQCtrl.ScreenSize = glm::vec4((float)m_ShadowRayQueryComputeOutput.Width, (float)m_ShadowRayQueryComputeOutput.Height, 1.0f / (float)m_ShadowRayQueryComputeOutput.Width, 1.0f / (float)m_ShadowRayQueryComputeOutput.Height); - glm::mat4 CameraProjectionInv = glm::inverse(m_Camera.ProjectionMatrix()); - m_ShadowRQCtrl.ProjectionInv = CameraProjectionInv; - m_ShadowRQCtrl.ViewInv= glm::inverse(m_Camera.ViewMatrix()); - //m_ShadowRQCtrl.LightWorldPos = m_Shadows[0].GetLightPos(); // Rasterized shadow position - m_ShadowRQCtrl.LightWorldPos = gShadowDirectionalLight ? glm::vec4(gRasterizedShadowPosition, 1.0) : glm::vec4(gShadowPosition, 1.0); - m_ShadowRQCtrl.LightWorldDirection = glm::vec4(glm::normalize(gRasterizedShadowTarget - gRasterizedShadowPosition), 0.0f); - - UpdateUniformBuffer(pVulkan, m_ShadowRQCtrlUniform, m_ShadowRQCtrl, WhichBuffer); - - // ******************************** - // Animated meshes - // ******************************** - m_sceneAnimatedMeshUniformData.AnimationRotation = m_ObjectVertUniformData.AnimationRotation; - UpdateUniformBuffer(pVulkan, m_sceneAnimatedMeshUniform, m_sceneAnimatedMeshUniformData, WhichBuffer); - - // ******************************** - // Skybox - // ******************************** - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - // No uniform buffers for HUD or BLIT since objects not in HUD and BLIT - if (WhichPass == RP_HUD || WhichPass == RP_BLIT) - continue; - - glm::mat4 LocalModel = glm::scale(glm::vec3(m_SkyboxScale, m_SkyboxScale, m_SkyboxScale)); - - // Special View matrix for Skybox (always centered on the view position) - SkyboxViewMatrix = glm::mat4_cast(m_Camera.Rotation()); - glm::mat4 SkyboxMVP = m_Camera.ProjectionMatrix() * SkyboxViewMatrix * LocalModel; - - m_SkyboxVertUniformData.MVPMatrix = SkyboxMVP; - m_SkyboxVertUniformData.ModelMatrix = LocalModel; - m_SkyboxVertUniformData.Color = glm::vec4(0.9f, 0.9f, 0.9f, 1.0f); // White by default - UpdateUniformBuffer(pVulkan, m_SkyboxVertUniform[WhichPass], m_SkyboxVertUniformData, WhichBuffer); - } - - // ******************************** - // Fullscreen Light pass - // ******************************** - - glm::mat4 CameraViewInv = glm::inverse(m_Camera.ViewMatrix()); - m_LightFragUniformData.ProjectionInv = CameraProjectionInv; - m_LightFragUniformData.ViewInv = CameraViewInv; - m_LightFragUniformData.WorldToShadow = m_Shadows[0].GetViewProj(); - m_LightFragUniformData.CameraPos = glm::vec4( m_Camera.Position(), 0.0f ); - - UpdateUniformBuffer(pVulkan, m_LightFragUniform, m_LightFragUniformData, WhichBuffer); - - // ******************************** - // 'Additional' Lights - // ******************************** - { - glm::mat4 LocalVP = m_Camera.ProjectionMatrix() * m_Camera.ViewMatrix(); - PointLightUB pointLightUniformData{}; - for(uint32_t WhichLight=0; WhichLight= m_AdditionalDeferredLightsSharedUniform.size()) - break; - - lightdata.Radius = gLightEmitterRadius * (sqrtf( lightdata.Intensity / gLightAttenuationCutoff ) - 1.0f); - - pointLightUniformData.MVPMatrix = LocalVP * glm::translate( glm::vec3( lightdata.Position ) ) * glm::scale( glm::vec3(lightdata.Radius, lightdata.Radius, lightdata.Radius) ); - pointLightUniformData.ProjectionInv = CameraProjectionInv; - pointLightUniformData.ViewInv = CameraViewInv; - - pointLightUniformData.LightPosition = lightdata.Position; - pointLightUniformData.LightIntensity = lightdata.Intensity; - pointLightUniformData.LightCutoff = gLightAttenuationCutoff; - pointLightUniformData.LightRadius = gLightEmitterRadius; - pointLightUniformData.LightColor = m_LightColor; - pointLightUniformData.SpecScale = m_LightFragUniformData.SpecScale; - pointLightUniformData.SpecPower = m_LightFragUniformData.SpecPower; - pointLightUniformData.WindowSize = glm::vec2( m_GBufferRT.m_RenderTargets[0].m_Width, m_GBufferRT.m_RenderTargets[0].m_Height ); - UpdateUniformBuffer(pVulkan, m_AdditionalDeferredLightsSharedUniform[WhichLight], pointLightUniformData, WhichBuffer); - } - } - - // ******************************** - // Rasterized shadow culling - // ******************************** - if (gRasterizedShadow && gRasterizedShadowCulled) - { - ShadowCullCameraCtrl rasterizedShadowCullCtrl{}; - auto projMtx = m_Shadows[0].GetProjection(); - rasterizedShadowCullCtrl.MVPMatrix = m_Shadows[0].GetViewProj(); - const ViewFrustum cameraFrustum(projMtx, m_Shadows[0].GetView()); - memcpy(rasterizedShadowCullCtrl.CullPlanes, cameraFrustum.GetPlanes(), sizeof(rasterizedShadowCullCtrl.CullPlanes)); - UpdateUniformBuffer(pVulkan, m_ShadowInstanceCullingCameraUniform, rasterizedShadowCullCtrl, WhichBuffer); - } - - - // ******************************** - // Blit - // ******************************** - - m_BlitFragUniformData.sRGB = m_bEncodeSRGB ? 1 : 0; - UpdateUniformBuffer(pVulkan, m_BlitFragUniform, m_BlitFragUniformData); - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::BuildCmdBuffers() -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - LOGI("******************************"); - LOGI("Building Command Buffers..."); - LOGI("******************************"); - - uint32_t TargetWidth = pVulkan->m_SurfaceWidth; - uint32_t TargetHeight = pVulkan->m_SurfaceHeight; - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - // If viewport and scissor are dynamic we need to add them to the secondary buffers. - const uint32_t TargetWidth = m_PassSetup[WhichPass].TargetWidth; - const uint32_t TargetHeight = m_PassSetup[WhichPass].TargetHeight; - - VkViewport Viewport = {}; - Viewport.x = 0.0f; - Viewport.y = 0.0f; - Viewport.width = (float)TargetWidth; - Viewport.height = (float)TargetHeight; - Viewport.minDepth = 0.0f; - Viewport.maxDepth = 1.0f; - - VkRect2D Scissor = {}; - Scissor.offset.x = 0; - Scissor.offset.y = 0; - Scissor.extent.width = TargetWidth; - Scissor.extent.height = TargetHeight; - - for (uint32_t WhichBuffer = 0; WhichBuffer < pVulkan->m_SwapchainImageCount; WhichBuffer++) - { - // Set up some values that change based on render pass - VkRenderPass WhichRenderPass = VK_NULL_HANDLE; - VkFramebuffer WhichFramebuffer = pVulkan->m_SwapchainBuffers[WhichBuffer].framebuffer; - switch (WhichPass) - { - case RP_GBUFFER: - WhichRenderPass = m_GBufferRT.m_RenderPass; - WhichFramebuffer = m_GBufferRT[0].m_FrameBuffer; - break; - - case RP_RASTERSHADOW: - WhichRenderPass = m_Shadows[0].GetRenderPass(); - WhichFramebuffer = m_Shadows[0].GetFramebuffer(); - break; - - case RP_RAYSHADOW: - WhichRenderPass = m_ShadowRT.m_RenderPass; - WhichFramebuffer = m_ShadowRT[0].m_FrameBuffer; - break; - - case RP_LIGHT: - WhichRenderPass = m_MainRT.m_RenderPass; - WhichFramebuffer = m_MainRT[0].m_FrameBuffer; - break; - - case RP_HUD: - WhichRenderPass = m_HudRT.m_RenderPass; - WhichFramebuffer = m_HudRT[0].m_FrameBuffer; - break; - - case RP_BLIT: - WhichRenderPass = m_RenderPass[WhichPass]; - WhichFramebuffer = pVulkan->m_SwapchainBuffers[WhichBuffer].framebuffer; - break; - } - - if (WhichPass == RP_LIGHT) - { - // Main (primary) lighting pass applied to the gbuffer - if (!m_LightCmdBuffer[WhichBuffer].Begin(WhichFramebuffer, WhichRenderPass)) - { - return false; - } - vkCmdSetViewport(m_LightCmdBuffer[WhichBuffer].m_VkCommandBuffer, 0, 1, &Viewport); - vkCmdSetScissor(m_LightCmdBuffer[WhichBuffer].m_VkCommandBuffer, 0, 1, &Scissor); - - // Additional lights applied to the gbuffer (additive after the m_LightCmdBuffer pass) - if (!m_AdditionalLightsCmdBuffer[WhichBuffer].Begin(WhichFramebuffer, WhichRenderPass)) - { - return false; - } - vkCmdSetViewport(m_AdditionalLightsCmdBuffer[WhichBuffer].m_VkCommandBuffer, 0, 1, &Viewport); - vkCmdSetScissor(m_AdditionalLightsCmdBuffer[WhichBuffer].m_VkCommandBuffer, 0, 1, &Scissor); - } - - // Objects - can render into any pass (except Blit) - if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].Begin(WhichFramebuffer, WhichRenderPass)) - { - return false; - } - vkCmdSetViewport(m_ObjectCmdBuffer[WhichBuffer][WhichPass].m_VkCommandBuffer, 0, 1, &Viewport); - vkCmdSetScissor(m_ObjectCmdBuffer[WhichBuffer][WhichPass].m_VkCommandBuffer, 0, 1, &Scissor); - } // Which Buffer - } // Which Pass - - // Run through the drawables (each one may be in multiple command buffers) - for (const auto& drawable : m_SceneDrawables) - { - AddDrawableToCmdBuffers(drawable, &m_ObjectCmdBuffer[0][0], NUM_RENDER_PASSES, pVulkan->m_SwapchainImageCount); - } - // Add the 'combined' rasterized shadow drawable (monolithic indexed and instanced drawable) - if (m_ShadowRasterizedDrawable) - { - AddDrawableToCmdBuffers(*m_ShadowRasterizedDrawable, &m_ObjectCmdBuffer[0][0], NUM_RENDER_PASSES, pVulkan->m_SwapchainImageCount); - } - // Add the skybox (last) - if (m_SkyboxDrawable) - { - AddDrawableToCmdBuffers(*m_SkyboxDrawable, &m_ObjectCmdBuffer[0][0], NUM_RENDER_PASSES, pVulkan->m_SwapchainImageCount); - } - - // and end their pass - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - for (uint32_t WhichBuffer = 0; WhichBuffer < pVulkan->m_SwapchainImageCount; WhichBuffer++) - { - if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].End()) - { - return false; - } - } - } - - // Add the main light - AddDrawableToCmdBuffers( *m_LightDrawable.get(), m_LightCmdBuffer, 1, pVulkan->m_SwapchainImageCount ); - - // Add the 'additional' lights - for(uint32_t additionalLightIndex = 0; additionalLightIndex < (uint32_t) m_AdditionalDeferredLightDrawables.size(); ++additionalLightIndex) - { - const auto& drawable = m_AdditionalDeferredLightDrawables[additionalLightIndex]; - char timerName[64]; - sprintf(timerName, "AdditionalLight %u RayQuery", additionalLightIndex+1 ); - for (uint32_t WhichBuffer = 0; WhichBuffer < pVulkan->m_SwapchainImageCount; ++WhichBuffer) - { - auto timerId = m_AdditionalLightsCmdBuffer[WhichBuffer].StartGpuTimer(timerName); - AddDrawableToCmdBuffers(drawable, &m_AdditionalLightsCmdBuffer[WhichBuffer], 1, 1); - m_AdditionalLightsCmdBuffer[WhichBuffer].StopGpuTimer(timerId); - } - } - for (uint32_t WhichBuffer = 0; WhichBuffer < pVulkan->m_SwapchainImageCount; WhichBuffer++) - { - if (!m_LightCmdBuffer[WhichBuffer].End()) - { - return false; - } - if (!m_AdditionalLightsCmdBuffer[WhichBuffer].End()) - { - return false; - } - } - - return true; -} - - -//----------------------------------------------------------------------------- -bool Application::InitLocalSemaphores() -//----------------------------------------------------------------------------- -{ - VkResult RetVal = VK_SUCCESS; - Vulkan* pVulkan = GetVulkan(); - - VkSemaphoreCreateInfo SemaphoreInfo = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO }; - RetVal = vkCreateSemaphore(pVulkan->m_VulkanDevice, &SemaphoreInfo, NULL, &m_BlitCompleteSemaphore); - if (!CheckVkError("vkCreateSemaphore()", RetVal)) - { - return false; - } - - return true; -} - -//----------------------------------------------------------------------------- -const char* Application::GetPassName(uint32_t WhichPass) -//----------------------------------------------------------------------------- -{ - if (WhichPass >= sizeof(sRenderPassNames) / sizeof(sRenderPassNames[0])) - { - LOGE("GetPassName() called with unknown pass (%d)!", WhichPass); - return "RP_UNKNOWN"; - } - return sRenderPassNames[WhichPass]; -} - -//----------------------------------------------------------------------------- -bool Application::InitMaterials() -//----------------------------------------------------------------------------- -{ - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitCommandBuffers() -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - char szName[256]; - for (uint32_t WhichBuffer = 0; WhichBuffer < NUM_VULKAN_BUFFERS; WhichBuffer++) - { - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - // The Pass Command Buffer => Primary - sprintf(szName, "Primary (%s; Buffer %d of %d)", GetPassName(WhichPass), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_PassCmdBuffer[WhichBuffer][WhichPass].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_PRIMARY, Vulkan::eGraphicsQueue, m_GpuTimerPool.get())) - { - return false; - } - - // Model => Secondary - sprintf(szName, "Model (%s; Buffer %d of %d)", GetPassName(WhichPass), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_ObjectCmdBuffer[WhichBuffer][WhichPass].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY)) - { - return false; - } - - } - } - - // Light => Secondary - for (uint32_t WhichBuffer = 0; WhichBuffer < NUM_VULKAN_BUFFERS; WhichBuffer++) - { - sprintf( szName, "Light (Buffer %d of %d)", WhichBuffer + 1, NUM_VULKAN_BUFFERS ); - if (!m_LightCmdBuffer[WhichBuffer].Initialize( pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY, Vulkan::eGraphicsQueue, m_GpuTimerPool.get() )) - { - return false; - } - } - - // AdditionalLight => Secondary - for (uint32_t WhichBuffer = 0; WhichBuffer < NUM_VULKAN_BUFFERS; WhichBuffer++) - { - sprintf(szName, "Additional Lights (%s; Buffer %d of %d)", GetPassName(RP_LIGHT), WhichBuffer + 1, NUM_VULKAN_BUFFERS); - if (!m_AdditionalLightsCmdBuffer[WhichBuffer].Initialize(pVulkan, szName, VK_COMMAND_BUFFER_LEVEL_SECONDARY, Vulkan::eGraphicsQueue, m_GpuTimerPool.get())) - { - return false; - } - } - - return true; -} - - -//----------------------------------------------------------------------------- -bool Application::InitAllRenderPasses() -//----------------------------------------------------------------------------- -{ - VkResult RetVal = VK_SUCCESS; - Vulkan* pVulkan = GetVulkan(); - - uint32_t ShadowTargetWidth, ShadowTargetHeight; - m_Shadows[0].GetTargetSize(ShadowTargetWidth, ShadowTargetHeight); - - // Fill in the Setup data - m_PassSetup[RP_GBUFFER] = { m_GBufferRT[0].m_pLayerFormats, m_GBufferRT[0].m_DepthFormat, RenderPassInputUsage::Clear, true, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Store, gClearColor,m_GBufferRT[0].m_Width, m_GBufferRT[0].m_Height }; - m_PassSetup[RP_RASTERSHADOW] = { {}, m_Shadows[0].GetDepthFormat(), RenderPassInputUsage::DontCare,true, RenderPassOutputUsage::Discard, RenderPassOutputUsage::StoreReadOnly,{}, ShadowTargetWidth, ShadowTargetHeight }; - m_PassSetup[RP_RAYSHADOW]={ m_ShadowRT[0].m_pLayerFormats, m_ShadowRT[0].m_DepthFormat, RenderPassInputUsage::DontCare,false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_ShadowRT[0].m_Width, m_ShadowRT[0].m_Height }; - m_PassSetup[RP_LIGHT] = { m_MainRT[0].m_pLayerFormats, m_GBufferRT[0].m_DepthFormat, RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_MainRT[0].m_Width, m_MainRT[0].m_Height }; - m_PassSetup[RP_HUD] = { m_HudRT[0].m_pLayerFormats, m_HudRT[0].m_DepthFormat, RenderPassInputUsage::Clear, false, RenderPassOutputUsage::StoreReadOnly, RenderPassOutputUsage::Discard, {}, m_HudRT[0].m_Width, m_HudRT[0].m_Height }; - m_PassSetup[RP_BLIT] = { {pVulkan->m_SurfaceFormat}, pVulkan->m_SwapchainDepth.format, RenderPassInputUsage::DontCare,false, RenderPassOutputUsage::Present, RenderPassOutputUsage::Discard, {}, pVulkan->m_SurfaceWidth, pVulkan->m_SurfaceHeight }; - - LOGI("******************************"); - LOGI("Initializing Render Passes... "); - LOGI("******************************"); - for (uint32_t WhichPass = 0; WhichPass < NUM_RENDER_PASSES; WhichPass++) - { - const auto& PassSetup = m_PassSetup[WhichPass]; - bool IsSwapChainRenderPass = WhichPass == RP_BLIT; - - if (WhichPass == RP_RASTERSHADOW) - m_RenderPass[RP_RASTERSHADOW] = m_Shadows[0].GetRenderPass(); - else if (PassSetup.ColorFormats.size() > 0 || PassSetup.DepthFormat != TextureFormat::UNDEFINED) - { - if (!pVulkan->CreateRenderPass({PassSetup.ColorFormats}, - PassSetup.DepthFormat, - VK_SAMPLE_COUNT_1_BIT, - PassSetup.ColorInputUsage, - PassSetup.ColorOutputUsage, - PassSetup.ClearDepthRenderPass, - PassSetup.DepthOutputUsage, - &m_RenderPass[WhichPass])) - return false; - } - - - // LOGI(" Render Pass (%s; Buffer %d of %d) => 0x%x", GetPassName(WhichPass), WhichBuffer + 1, NUM_VULKAN_BUFFERS, m_RenderPass[WhichPass][WhichBuffer]); - } // Which Pass - - return true; -} - - -//----------------------------------------------------------------------------- -bool Application::InitDrawables() -//----------------------------------------------------------------------------- -{ - LOGI("Creating Test Drawable..."); - Vulkan* pVulkan = GetVulkan(); - - const auto& bufferLoader = [&](const std::string& bufferSlotName) -> tPerFrameVkBuffer { - if (bufferSlotName == "Vert") - { - return { m_ObjectVertUniform[RP_GBUFFER].vkBuffers }; - } - else if (bufferSlotName == "VertShadow") - { - return { m_ObjectVertUniform[RP_RASTERSHADOW].vkBuffers }; - } - else if (bufferSlotName == "Frag") - { - return { m_ObjectFragUniform[RP_GBUFFER].vkBuffers }; - } - else - { - assert(0); - return {}; - } - }; - - const auto* pOpaqueShader = m_ShaderManager->GetShader("ObjectDeferred"); - if (!pOpaqueShader) - { - // Error (bad shaderName) - return false; - } - - const auto* pEmissiveShader = m_ShaderManager->GetShader("ObjectEmissive"); - if (!pEmissiveShader) - { - // Error (bad shaderName) - return false; - } - - const auto* pAnimatedShader = m_ShaderManager->GetShader("ObjectAnimated"); - if (!pAnimatedShader) - { - // Error (bad shaderName) - return false; - } - - auto modelTextureLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef, const std::string& textureSlotName) -> const MaterialPass::tPerFrameTexInfo - { - if (textureSlotName == "Environment" || textureSlotName == "Irradiance") - { - auto* texture = m_TextureManager->GetTexture(textureSlotName); - if (texture == nullptr) - return { m_TexWhite }; - return { texture }; - } - const bool normalMap = (textureSlotName == "Normal"); - const bool specMap = !normalMap && (textureSlotName == "SpecMap"); - const bool emissiveMap = !normalMap && !specMap && (textureSlotName == "Emissive"); - - // See if we can get the filename from the loaded material definition. Take a copy so we can manipulate as needed. - std::string textureName = specMap ? materialDef.specMapFilename : (normalMap ? materialDef.bumpFilename : (emissiveMap ? materialDef.emissiveFilename : materialDef.diffuseFilename)); - - if (textureName.empty() && specMap) - { - textureName = materialDef.bumpFilename; - size_t normal = textureName.find("_Normal."); - if (normal != -1) - { - textureName.replace(normal, 8, "_Specular."); - } - else - { - textureName.clear(); - } - } - - auto* texture = m_TextureManager->GetOrLoadTexture(*m_AssetManager, textureName, m_SamplerRepeat, PathManipulator_PrefixDirectory{ "Media\\" }, PathManipulator_ChangeExtension{ ".ktx" }); - if (texture==nullptr) - { - // File not loaded, use default - return { (normalMap ? m_DefaultNormal : m_TexWhite) }; - } - return { texture }; - }; - - const auto& modelMaterialLoader = [&](const MeshObjectIntermediate::MaterialDef& materialDef) -> std::optional - { - using namespace std::placeholders; - if (materialDef.diffuseFilename.find(gAnimatedMaterialName) != std::string::npos) - { - return m_MaterialManager->CreateMaterial(*pVulkan, *pAnimatedShader, NUM_VULKAN_BUFFERS, std::bind(modelTextureLoader, std::cref(materialDef), _1), bufferLoader); - } - else if (!materialDef.emissiveFilename.empty()) - { - return m_MaterialManager->CreateMaterial(*pVulkan, *pEmissiveShader, NUM_VULKAN_BUFFERS, std::bind(modelTextureLoader, std::cref(materialDef), _1), bufferLoader); - } - else - { - return m_MaterialManager->CreateMaterial(*pVulkan, *pOpaqueShader, NUM_VULKAN_BUFFERS, std::bind(modelTextureLoader, std::cref(materialDef), _1), bufferLoader); - } - }; - - // Load .gltf file - const uint32_t loaderFlags = DrawableLoader::LoaderFlags::FindInstances | DrawableLoader::LoaderFlags::IgnoreHierarchy; - auto fatObjects = MeshObjectIntermediate::LoadGLTF(*m_AssetManager, gSceneObjectName, (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0); - // Print some debug - DrawableLoader::PrintStatistics(fatObjects); - // Pre-load the textures (likely to be faster than laoading one at a time, may do some threading etc) - m_TextureManager->BatchLoad(*m_AssetManager, MeshObjectIntermediate::ExtractTextureNames(fatObjects), m_SamplerRepeat, PathManipulator_PrefixDirectory{ "Media\\" }, PathManipulator_ChangeExtension{ ".ktx" }); - - // See if we can find instances, we assume there is no instance information in the gltf! - auto instancedFatObjects = (loaderFlags & DrawableLoader::LoaderFlags::FindInstances) ? MeshInstanceGenerator::FindInstances(std::move(fatObjects)) : MeshInstanceGenerator::NullFindInstances(std::move(fatObjects)); - - // Make a single model mesh for the culled shadow (single material, multiple instances) - if (gRasterizedShadow) - { - auto fatObjects = MeshObjectIntermediate::LoadGLTF(*m_AssetManager, gSceneObjectName, (loaderFlags & DrawableLoader::LoaderFlags::IgnoreHierarchy) != 0); - // See if we can find instances, we assume there is no instance information in the gltf! - auto instancedFatObjects = (loaderFlags & DrawableLoader::LoaderFlags::FindInstances) ? MeshInstanceGenerator::FindInstances(std::move(fatObjects)) : MeshInstanceGenerator::NullFindInstances(std::move(fatObjects)); - - if (!instancedFatObjects.empty()) - { - size_t totalVerts = 0; - size_t totalIndices = 0; - size_t totalInstances = 0; - - for (const auto& instancedObject : instancedFatObjects) - { - totalVerts += instancedObject.mesh.m_VertexBuffer.size(); - totalIndices += instancedObject.mesh.CalcNumTriangles() * 3; - totalInstances += instancedObject.instances.size(); - } - - std::vector instances; - instances.reserve(totalInstances); - std::vector< VkDrawIndexedIndirectCommand> indirectCommands; - indirectCommands.reserve(totalInstances); - MeshObjectIntermediate::tVertexBuffer vertices; - vertices.reserve(totalVerts); - std::vector indices; - indices.reserve(totalIndices); - - for (const auto& instancedObject : instancedFatObjects) - { - indirectCommands.emplace_back(VkDrawIndexedIndirectCommand{ .indexCount = (uint32_t)instancedObject.mesh.CalcNumTriangles() * 3, - .instanceCount = (uint32_t)instancedObject.instances.size(), - .firstIndex = (uint32_t)indices.size(), - .vertexOffset = (int32_t)vertices.size(), - .firstInstance = (uint32_t)instances.size() }); - // Add the instances - std::transform(instancedObject.instances.begin(), instancedObject.instances.end(), std::back_inserter(instances), [](auto instance) { return instance.transform; }); - // Add the vertices - vertices.insert(vertices.end(), instancedObject.mesh.m_VertexBuffer.begin(), instancedObject.mesh.m_VertexBuffer.end()); - // Add the indices (some finagling due to potentially different index buffer formats) - const size_t startIdx = indices.size(); - std::visit([&indices, &instancedObject](auto& v) { - using T = std::decay_t; - if constexpr (std::is_same_v>) - { - indices.insert(indices.end(), v.begin(), v.end()); - } - else if constexpr (std::is_same_v>) - { - std::transform(v.begin(), v.end(), std::back_inserter(indices), [](auto idx) -> uint32_t { return idx; }); - } - else if constexpr (!std::is_same_v ) - { - for (uint32_t i = 0; i < instancedObject.mesh.m_VertexBuffer.size(); ++i) - indices.push_back(i); - } - }, instancedObject.mesh.m_IndexBuffer); - } - - MeshObjectIntermediate MeshObjectIntermediate{}; - MeshObjectIntermediate.m_VertexBuffer = std::move(vertices); - MeshObjectIntermediate.m_IndexBuffer = std::move(indices); - - // Now create the Vulkan representations - const auto* pRasterizedShadowShader = pOpaqueShader; - assert(pRasterizedShadowShader); - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pRasterizedShadowShader, NUM_VULKAN_BUFFERS, - [this](const std::string& texName) -> MaterialPass::tPerFrameTexInfo { - return { m_TexWhite }; - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - return { m_ObjectVertUniform[RP_RASTERSHADOW].vkBuffers }; - }); - - MeshObject mesh; - const auto& vertexFormats = pRasterizedShadowShader->m_shaderDescription->m_vertexFormats; - MeshHelper::CreateMesh(pVulkan->GetMemoryManager(), MeshObjectIntermediate, 0, vertexFormats, &mesh); - MeshObjectIntermediate.Release(); - - const auto instanceFormatIt = std::find_if(vertexFormats.cbegin(), vertexFormats.cend(), - [](const VertexFormat& f) { return f.inputRate == VertexFormat::eInputRate::Instance; }); - - VertexBufferObject vertexInstanceBuffer; - vertexInstanceBuffer.Initialize(&pVulkan->GetMemoryManager(), instances.size(), instances.data(), false, BufferUsageFlags::Vertex); - - m_ShadowInstanceUnculledDrawIndirectBuffer = std::make_unique(true); - struct { - uint32_t count; - uint32_t _pad[15]; - } indirectPrequelData{ .count = (uint32_t)indirectCommands.size() }; // indirect draw count, padded to 64 bytes - m_ShadowInstanceUnculledDrawIndirectBuffer->Initialize(&pVulkan->GetMemoryManager(), indirectCommands.size(), indirectCommands.data(), &indirectPrequelData, BufferUsageFlags::Storage | BufferUsageFlags::Indirect); - - DrawIndirectBufferObject culledDrawIndirectBufferObject{ true }; - - if (gRasterizedShadowCulled) - { - // For culling make an indirect draw buffer that we will update from a compute shader. - size_t worseCaseIndirectDraws = indirectCommands.size() + (instances.size() - indirectCommands.size()) / 2; - culledDrawIndirectBufferObject.Initialize(&pVulkan->GetMemoryManager(), worseCaseIndirectDraws, nullptr, nullptr, BufferUsageFlags::Storage | BufferUsageFlags::Indirect); - // Buffer to contain the intermediate array of visible instances - m_ShadowInstanceCulledData.Initialize(&pVulkan->GetMemoryManager(), 16/*header*/ + sizeof(uint32_t) * instances.size(), BufferUsageFlags::Storage, nullptr); - - // Create a storage buffer with instance centers and radii (in a vec4 per instance) and a 16byte header containing instance count. - std::vector instanceCullingData; - instanceCullingData.resize(4 /* 4 byte instance count followed by pad */ + instances.size() * 4 /* vec4 per instance*/); - instanceCullingData[0] = (uint32_t) instanceCullingData.size(); - glm::vec4* pInstanceCenterAndRadii = (glm::vec4*) &instanceCullingData[4]; - for (auto instance: instances) - *pInstanceCenterAndRadii++ = glm::vec4(instance[0][3], instance[1][3], instance[2][3], 10.0f/*hack*/); - CreateUniformBuffer(pVulkan, &m_ShadowInstanceCullingBuffer, instanceCullingData.size() * sizeof(uint32_t), instanceCullingData.data(), BufferUsageFlags::Storage); - - // Camera uniform (with culling planes) - CreateUniformBuffer(pVulkan, m_ShadowInstanceCullingCameraUniform); - - const auto* pComputeShader = m_ShaderManager->GetShader("RasterizedShadowCull"); - auto cullingMaterial = m_MaterialManager->CreateMaterial(*pVulkan, *pComputeShader, NUM_VULKAN_BUFFERS, - nullptr, - [this, &culledDrawIndirectBufferObject](const std::string& bufferName) -> tPerFrameVkBuffer { - if (bufferName == "CameraUniform") - return { m_ShadowInstanceCullingCameraUniform.vkBuffers }; - else if (bufferName == "UnculledInstances") - return { m_ShadowInstanceCullingBuffer.buf.GetVkBuffer() }; - else if (bufferName == "CulledInstances") - return { m_ShadowInstanceCulledData.GetVkBuffer() }; - else if (bufferName == "UnculledIndirectDraw") - return { m_ShadowInstanceUnculledDrawIndirectBuffer->GetVkBuffer() }; - else if (bufferName == "CulledIndirectDraw") - return { culledDrawIndirectBufferObject.GetVkBuffer() }; - assert(0); - return {}; - }); - - m_ShadowRasterizedCullingComputable = std::make_unique(*pVulkan, std::move(cullingMaterial)); - if (!m_ShadowRasterizedCullingComputable->Init()) - { - LOGE("Error Creating ShadowRasterizedCulling computable..."); - m_ShadowRasterizedCullingComputable.reset(); - } - else - { - m_ShadowRasterizedCullingComputable->SetDispatchGroupCount(0, { 1,1,1 }); // reset - m_ShadowRasterizedCullingComputable->SetDispatchGroupCount(1, { 1, uint32_t(instances.size() + 63) / 64, 1 }); // cull instances - m_ShadowRasterizedCullingComputable->SetDispatchGroupCount(2, { 1, uint32_t(m_ShadowInstanceUnculledDrawIndirectBuffer->GetNumDraws() + 63) / 64, 1 }); // generate indirect - } - } - else - { - // If not culling just use the unculled indirect buffer - culledDrawIndirectBufferObject = std::move(*m_ShadowInstanceUnculledDrawIndirectBuffer); - m_ShadowInstanceUnculledDrawIndirectBuffer.reset(); - } - - uint32_t shadowRenderPassBits = (1 << RP_RASTERSHADOW);// | (1 << RP_REFLECT); - const char* renderPassNames[NUM_RENDER_PASSES]{}; - renderPassNames[RP_RASTERSHADOW] = "RP_RASTERSHADOW_CULLED"; - - m_ShadowRasterizedDrawable = std::make_unique(*pVulkan, std::move(material)); - m_ShadowRasterizedDrawable->Init(m_RenderPass, renderPassNames, shadowRenderPassBits, std::move(mesh), std::move(vertexInstanceBuffer), std::move(culledDrawIndirectBufferObject)); - } - } - - // Make drawables for each instanced mesh in the scene (and load the materials). This is what we use for the gbuffer draw. - if (!DrawableLoader::CreateDrawables(*pVulkan, std::move(instancedFatObjects), m_RenderPass, sRenderPassNames, modelMaterialLoader, m_SceneDrawables, {}, loaderFlags, {})) - { - LOGE("Error initializing Drawable: %s", gSceneObjectName); - return false; - } - - { - MeshObject mesh; - if (LoadGLTF("./Media/Meshes/Skybox_Separate.gltf", 0, &mesh)) - { - const auto* pSkyboxShader = m_ShaderManager->GetShader("Skybox"); - assert(pSkyboxShader); - auto material = m_MaterialManager->CreateMaterial(*pVulkan, *pSkyboxShader, NUM_VULKAN_BUFFERS, - [this](const std::string& textureName) -> MaterialPass::tPerFrameTexInfo { - auto texture = m_TextureManager->GetTexture(textureName); - if (texture == nullptr) - { - assert(0); - return {}; - } - return { texture }; - }, - [this](const std::string& bufferName) -> tPerFrameVkBuffer { - if (bufferName == "Vert") { - return { m_SkyboxVertUniform[RP_GBUFFER].vkBuffers }; - } - else { - assert(0); - return {}; - } - }); - uint32_t skyboxRenderPassBits = (1 << RP_LIGHT);// | (1 << RP_REFLECT); - m_SkyboxDrawable = std::make_unique(*pVulkan, std::move(material)); - m_SkyboxDrawable->Init(m_RenderPass, sRenderPassNames, skyboxRenderPassBits, std::move(mesh)); - } - } - - return true; -} - -//----------------------------------------------------------------------------- -bool Application::InitHdr() -//----------------------------------------------------------------------------- -{ - // Set the color profile - VkHdrMetadataEXT AuthoringProfile = { VK_STRUCTURE_TYPE_HDR_METADATA_EXT }; - AuthoringProfile.displayPrimaryRed.x = 0.680f; - AuthoringProfile.displayPrimaryRed.y = 0.320f; - AuthoringProfile.displayPrimaryGreen.x = 0.265f; - AuthoringProfile.displayPrimaryGreen.y = 0.690f; - AuthoringProfile.displayPrimaryBlue.x = 0.150f; - AuthoringProfile.displayPrimaryBlue.y = 0.060f; - AuthoringProfile.whitePoint.x = 0.3127f; - AuthoringProfile.whitePoint.y = 0.3290f; - AuthoringProfile.maxLuminance = 80.0f;// 1000.f; - AuthoringProfile.minLuminance = 0.001f; - AuthoringProfile.maxContentLightLevel = 2000.f; - AuthoringProfile.maxFrameAverageLightLevel = 1000.f; - return GetVulkan()->SetSwapchainHrdMetadata(AuthoringProfile); -} - -//----------------------------------------------------------------------------- -bool Application::InitGui(uintptr_t windowHandle) -//----------------------------------------------------------------------------- -{ - // Gui - assert(m_RenderPass[RP_HUD] != VK_NULL_HANDLE); - m_Gui = std::make_unique>(*GetVulkan(), m_RenderPass[RP_HUD]); - if (!m_Gui->Initialize(windowHandle, m_HudRT[0].m_Width, m_HudRT[0].m_Height)) - { - return false; - } - return true; -} - -//----------------------------------------------------------------------------- -void Application::UpdateGui() -//----------------------------------------------------------------------------- -{ - if (gRenderHud && m_Gui) - { - // Update Gui - m_Gui->Update(); - - // Begin our window. - static bool settingsOpen = true; - if (gAdvancedMode) - { - ImGui::SetNextWindowSize(ImVec2((gRenderWidth * 3.0f) / 4.0f, 500.f), ImGuiCond_FirstUseEver); - ImGui::SetNextWindowPos(ImVec2(gRenderWidth / 8.0f, gRenderHeight / 2.0f), ImGuiCond_FirstUseEver); - if (ImGui::Begin("Settings", &settingsOpen, (ImGuiWindowFlags)0)) - { - if (ImGui::CollapsingHeader("Camera")) - { - auto position = m_Camera.Position(); - auto rotation = m_Camera.Rotation(); - auto rotationDeg = glm::eulerAngles(rotation) * TO_DEGREES; - if (ImGui::InputFloat3("Position", &position.x, "%.1f")) - { - m_Camera.SetPosition(position, rotation); - } - if (ImGui::InputFloat3("Rotation", &rotationDeg.x, "%.1f")) - { - rotation = glm::quat(rotationDeg * TO_RADIANS); - m_Camera.SetPosition(position, rotation); - } - bool changed = ImGui::SliderFloat("Near Plane", &gNearPlane, 0.01f, gFarPlane - 0.01f); - changed |= ImGui::SliderFloat("Far Plane", &gFarPlane, gNearPlane + 0.02f, 15000.f); - if (changed) - { - m_Camera.SetClipPlanes(gNearPlane, gFarPlane); - m_Shadows[0].SetEyeClipPlanes(m_Camera.Fov(), m_Camera.NearClip(), m_Camera.Aspect(), gRasterizedShadowFarPlane); - } - } - - if (!gRasterizedShadow) - { - if (gCreateCulledAccelerationStructure) - ImGui::Checkbox("Disable RT Cull", &gDisableAccelerationStructureCull); - ImGui::Checkbox("Force RayTrace AS regen", &gForceAccelerationStructureRegen); - ImGui::Checkbox("Main RQ shadow use fragment shader", &gRayQueryFragmentShader); - ImGui::Checkbox("Main RQ shadow Directional light", &gShadowDirectionalLight); - ImGui::Checkbox("Enable additional shadows/lights (frag)", &gAdditionalShadows); - ImGui::Checkbox("Enable RT BLAS vertex animation", &gAnimateBLAS); - ImGui::SliderFloat3("Light Pos", &gShadowPosition.x, -100.0f, 100.0f); - ImGui::SliderFloat("Shadow Cull Radius", &gShadowRadius, 1.0f, 2000.0f); - ImGui::SliderFloat("Shadow Radius Cutoff", &gShadowRadiusCutoff, 0.01f, 1.0f); - ImGui::SliderFloat("Light Emitter Radius", &gLightEmitterRadius, 1.0f, 1000.0f); - ImGui::SliderFloat("Light Cutoff", &gLightAttenuationCutoff, 0.01f, 1.0f); - - m_LightFragUniformData.PointLightRadius = gLightEmitterRadius; - m_LightFragUniformData.PointLightCutoff = gLightAttenuationCutoff; - - float pointLightIntensity = m_LightFragUniformData.PointLightPosition.w; - ImGui::SliderFloat("Point Intensity", &pointLightIntensity, 0.0f, 300.0f); - m_LightFragUniformData.PointLightPosition.w = pointLightIntensity; - for (auto& d : m_AdditionalDeferredLightsData) - d.Intensity = pointLightIntensity; - } - else - { - if (ImGui::CollapsingHeader("Raster Shadow")) - { - bool changed = ImGui::InputFloat3("Shadow Position", &gRasterizedShadowPosition.x, "%.1f"); - changed |= ImGui::InputFloat3("Shadow Target", &gRasterizedShadowTarget.x, "%.1f"); - if (changed) - { - m_Shadows[0].SetLightPos(gRasterizedShadowPosition, gRasterizedShadowTarget); - } - if (ImGui::SliderFloat("Shadow FarPlane", &gRasterizedShadowFarPlane, 0.1f, gFarPlane)) - { - m_Shadows[0].SetEyeClipPlanes(m_Camera.Fov(), m_Camera.NearClip(), m_Camera.Aspect(), gRasterizedShadowFarPlane); - } - } - } - - ImGui::SliderFloat("SpecScale", &m_LightFragUniformData.SpecScale, 0.0f, 8.0f); - ImGui::SliderFloat("SpecPower", &m_LightFragUniformData.SpecPower, 1.0f, 100.0f); - ImGui::SliderFloat("irradianceAmount", &m_LightFragUniformData.irradianceAmount, 0.0f, 2.0f); - ImGui::SliderFloat("irradianceMip", &m_LightFragUniformData.irradianceMipLevel, 0.0f, 8.0f); - ImGui::SliderFloat("Brightness", &m_BlitFragUniformData.Diffuse, 0.0f, 10.0f); - - } - ImGui::End(); - } - - if (ImGui::Begin("FPS", (bool*)nullptr, ImGuiWindowFlags_NoTitleBar)) - { - ImGui::Text("FPS: %.1f", m_CurrentFPS); - - if (gAdvancedMode) - { - if (ImGui::TreeNode("Stats")) - { - if (gRasterizedShadow) - { - ImGui::Text("Rasterized Shadows"); - } - else - { - char InstancesString[256]; - int offset = snprintf(InstancesString, sizeof(InstancesString), "RT Instances: %u", (uint32_t)(m_sceneRayTracableCulled ? m_sceneRayTracableCulled->GetNumInstances() : m_sceneRayTracable->GetNumInstances())); - for (const auto& rt : m_AdditionalDeferredLightShadowRQ) - { - if (offset < sizeof(InstancesString)) - offset += snprintf(InstancesString + offset, sizeof(InstancesString) - offset, ",%u", (uint32_t)rt.GetNumInstances()); - } - ImGui::Text("%s", InstancesString); - - size_t totalTriangles = 0; - if (m_sceneRayTracableCulled) - { - for (const auto& instance : m_sceneRayTracableCulled->GetInstances()) - totalTriangles += m_sceneObjectTriangleCounts[instance.first]; - } - else - { - for (const auto& instance : m_sceneRayTracable->GetInstances()) - totalTriangles += m_sceneObjectTriangleCounts[instance.first]; - } - offset = snprintf(InstancesString, sizeof(InstancesString), "RT Triangles: %u", (uint32_t)totalTriangles); - ImGui::Text("%s", InstancesString); - - uint32_t updatedTriangles = 0; - for (const auto& animatedObject : m_sceneAnimatedMeshObjects) - updatedTriangles += animatedObject.GetPrimitiveCount(); - - if (gAnimateBLAS) - ImGui::Text("RT BLAS Updates: %u (%u triangles)", (uint32_t)m_sceneAnimatedMeshObjects.size(), updatedTriangles); - } - ImGui::Text("%s", sm_BuildTimestamp); - ImGui::TreePop(); - } - } - } - ImGui::End(); - - return; - } -} - -//----------------------------------------------------------------------------- -void Application::UpdateCamera(float ElapsedTime) -//----------------------------------------------------------------------------- -{ - m_Camera.UpdateController(ElapsedTime, *m_CameraController); - m_Camera.UpdateMatrices(); -} - -//----------------------------------------------------------------------------- -void Application::UpdateLighting(float ElapsedTime) -//----------------------------------------------------------------------------- -{ - if( m_sceneRayTracable ) - { - if( m_sceneRayTracableCulled ) - { - // Calculate the light/shadow's radius (based on the light cutoff, radius, and intensity) - // gShadowRadius = gLightEmitterRadius * (sqrtf( m_LightFragUniformData.PointLightPosition.w / gLightAttenuationCutoff ) - 1.0f); - // Cull the 'main' shadow ray tracable scene based on the radius. - UpdateSceneRTCulled( *m_sceneRayTracableCulled, gShadowPosition, gShadowRadius * gShadowRadiusCutoff ); - } - - if(gAdditionalShadows) - { - for( uint32_t WhichLight = 0; WhichLight < m_AdditionalDeferredLightShadowRQ.size(); ++WhichLight ) - { - auto& sceneRT = m_AdditionalDeferredLightShadowRQ[WhichLight]; - UpdateSceneRTCulled( sceneRT, glm::vec3( m_AdditionalDeferredLightsData[WhichLight].Position ), m_AdditionalDeferredLightsData[WhichLight].Radius * gShadowRadiusCutoff); - } - } - } -} - -//----------------------------------------------------------------------------- -void Application::UpdateShadowMap(float ElapsedTime) -//----------------------------------------------------------------------------- -{ - m_Shadows[0].Update(m_Camera.ViewMatrix()); -} - -//----------------------------------------------------------------------------- -void Application::UpdateSceneRTCulled( SceneRTCulled& sceneRTCulled, glm::vec3 lightPosition, float lightRadius ) -//----------------------------------------------------------------------------- -{ - BBoxTest lightBoundingBox( lightPosition, glm::vec3( lightRadius, lightRadius, lightRadius ) ); - SphereTest lightSphere( lightPosition, lightRadius ); - ViewFrustum viewFrustum( m_Camera.ProjectionMatrix(), m_Camera.ViewMatrix() ); - FrustumTest viewFrustumTest( viewFrustum ); - - sceneRTCulled.SetForceRegenerateAccelerationStructure( gForceAccelerationStructureRegen ); - - if( gDisableAccelerationStructureCull ) - { - // Update the ray tracing top level Acceleration Structure without culling (add everything to the AS). - sceneRTCulled.Update( *m_sceneRayTracable, [&lightBoundingBox, &viewFrustumTest]( const glm::vec4& center, const glm::vec4& halfSize ) { - return OctreeBase::eQueryResult::Inside; - } ); - } - else - { - auto lightInViewspace = viewFrustumTest( lightBoundingBox.m_boxCenter, lightBoundingBox.m_boxHalfSize ); - switch( lightInViewspace ) { - case OctreeBase::eQueryResult::Inside: - // - // Light area completely in view space - consider all objects in the light area (any other objects in view frustum won't be lit by this). - // - sceneRTCulled.Update( *m_sceneRayTracable, lightSphere ); - break; - case OctreeBase::eQueryResult::Outside: - // - // Light area completely outside view - nothing we can see should be lit by this light (so no shadow occluders). - // Lambda (should) compile out to remove the Octree test entirely. - // - sceneRTCulled.Update( *m_sceneRayTracable, []( const glm::vec4&, const glm::vec4& ) { return OctreeBase::eQueryResult::Outside; } ); - break; - case OctreeBase::eQueryResult::Partial: - if( viewFrustumTest( lightBoundingBox.m_boxCenter ) == OctreeBase::eQueryResult::Inside ) - { - // - // Light center (emission point) is inside the view frustum, cull against both the light area and the view frustum. - // - sceneRTCulled.Update( *m_sceneRayTracable, [&lightSphere, &viewFrustumTest]( const glm::vec4& center, const glm::vec4& halfSize ) { - // Lambda for the combined BoundingBox and View Frustum test. Called by the update to determine visibility of ray traced objects. - auto bbResult = lightSphere( center, halfSize ); - if( bbResult == OctreeBase::eQueryResult::Outside ) - return OctreeBase::eQueryResult::Outside; - else - { - auto frustumResult = viewFrustumTest( center, halfSize ); - if( frustumResult == OctreeBase::eQueryResult::Outside ) - return OctreeBase::eQueryResult::Outside; - else if( frustumResult == OctreeBase::eQueryResult::Partial || bbResult == OctreeBase::eQueryResult::Partial ) - return OctreeBase::eQueryResult::Partial; - } - return OctreeBase::eQueryResult::Inside; - } ); - } - else - { - // - // Light center is outside the view frustum but light volume is partially inside the frustum. - // Ideally we would cull against the area containing both, and the area between that and the center of the light area. - // would reduce the required light area by at least half, sometimes much more. - // For now just use the entire light volume and be done! - sceneRTCulled.Update( *m_sceneRayTracable, lightBoundingBox ); - } - break; - } - } -} - -//----------------------------------------------------------------------------- -void Application::LogFps() -//----------------------------------------------------------------------------- -{ - ApplicationHelperBase::LogFps(); - if (m_GpuTimerPool) - { - std::scoped_lock timerPoolLock(m_GpuTimerPoolMutex); - - if (gAdvancedMode) - m_GpuTimerPool->Log2(m_GpuTimerPool->GetResults()); - // Reset the GPU timers so average is only between 'LogFps' calls - m_GpuTimerPool->ResetTimers(-1/*dont want to skip in-flight timers*/); - } -} - -//----------------------------------------------------------------------------- -void Application::UpdateProfiling(uint32_t WhichFrame) -//----------------------------------------------------------------------------- -{ - if (m_GpuTimerPool) - { - m_GpuTimerPool->UpdateResults(WhichFrame); - } -} - -//----------------------------------------------------------------------------- -bool Application::ChangeSurfaceFormat(SurfaceFormat newSurfaceFormat) -//----------------------------------------------------------------------------- -{ - auto* const pVulkan = GetVulkan(); - - if (!pVulkan->ChangeSurfaceFormat(newSurfaceFormat)) - { - return false; - } - - // We need to modify the blit render pass (the only one that touches the output framebuffer). - // RenderPass needs to be compatible with the framebuffer's format. - // m_PassCmdBuffer[RP_BLIT] is good, gets rebuilt every frame - - vkDestroyRenderPass(pVulkan->m_VulkanDevice, m_RenderPass[RP_BLIT], nullptr); - m_RenderPass[RP_BLIT] = VK_NULL_HANDLE; - - auto& PassSetup = m_PassSetup[RP_BLIT]; - PassSetup.ColorFormats = { pVulkan->m_SurfaceFormat }; - PassSetup.DepthFormat = { pVulkan->m_SwapchainDepth.format }; - - if (!pVulkan->CreateRenderPass({ PassSetup.ColorFormats }, - PassSetup.DepthFormat, - VK_SAMPLE_COUNT_1_BIT, - PassSetup.ColorInputUsage, - PassSetup.ColorOutputUsage, - PassSetup.ClearDepthRenderPass, - PassSetup.DepthOutputUsage, - &m_RenderPass[RP_BLIT])) - return false; - - if (!m_BlitDrawable->ReInit( m_RenderPass[RP_BLIT], sRenderPassNames[RP_BLIT], nullptr, nullptr)) - { - return false; - } - - InitHdr(); - - return true; -} - -//----------------------------------------------------------------------------- -Application::RenderPassData& Application::BeginRenderPass(RENDER_PASS WhichPass, uint32_t WhichBuffer, const std::span WaitSemaphores, const std::span WaitDstStageMasks, const std::span SignalSemaphores, VkSubpassContents SubpassContents) -//----------------------------------------------------------------------------- -{ - return BeginRenderPass(BeginCommandBuffer(WhichPass, WhichBuffer, WaitSemaphores, WaitDstStageMasks, SignalSemaphores, SubpassContents)); -} - -//----------------------------------------------------------------------------- -Application::RenderPassData& Application::BeginCommandBuffer(RENDER_PASS WhichPass, uint32_t WhichBuffer, const std::span WaitSemaphores, const std::span WaitDstStageMasks, const std::span SignalSemaphores, VkSubpassContents SubpassContents) -//----------------------------------------------------------------------------- -{ - assert( WaitSemaphores.size() == WaitDstStageMasks.size() ); - - RenderPassData& renderPassData = m_RenderPassSubmitData[WhichBuffer].emplace_back( RenderPassData { - m_PassCmdBuffer[WhichBuffer][WhichPass].m_Name, - WhichBuffer, - WhichPass, - m_PassCmdBuffer[WhichBuffer][WhichPass], - SubpassContents, - {WaitSemaphores.begin(), WaitSemaphores.end()}, - {WaitDstStageMasks.begin(), WaitDstStageMasks.end()}, - {SignalSemaphores.begin(), SignalSemaphores.end()}, - } ); - - const auto& passSetup = m_PassSetup[WhichPass]; - - // Reset the primary command buffer... - if (!renderPassData.CmdBuff.Reset()) - { - assert(0); - } - - // ... begin the primary command buffer ... - if (!renderPassData.CmdBuff.Begin()) - { - assert(0); - } - - return renderPassData; -} - -//----------------------------------------------------------------------------- -Application::RenderPassData& Application::BeginRenderPass(Application::RenderPassData& renderPassData) -//----------------------------------------------------------------------------- -{ - BeginRenderPass(renderPassData.CmdBuff, renderPassData.WhichPass, renderPassData.WhichBuffer, renderPassData.SubpassContents); - - return renderPassData; -} - -//----------------------------------------------------------------------------- -void Application::BeginRenderPass(Wrap_VkCommandBuffer& CmdBuf, RENDER_PASS WhichPass, uint32_t WhichBuffer, VkSubpassContents SubpassContents) -//----------------------------------------------------------------------------- -{ - Vulkan* pVulkan = GetVulkan(); - - if( m_RenderPass[WhichPass] != VK_NULL_HANDLE ) - { - const auto& passSetup = m_PassSetup[WhichPass]; - - VkFramebuffer Framebuffer = VK_NULL_HANDLE; - switch( WhichPass ) - { - case RP_GBUFFER: - Framebuffer = m_GBufferRT[0].m_FrameBuffer; - break; - case RP_RASTERSHADOW: - Framebuffer = m_Shadows[0].GetFramebuffer(); - break; - case RP_RAYSHADOW: - Framebuffer = m_ShadowRT[0].m_FrameBuffer; - break; - case RP_LIGHT: - Framebuffer = m_MainRT[0].m_FrameBuffer; - break; - case RP_HUD: - Framebuffer = m_HudRT[0].m_FrameBuffer; - break; - case RP_BLIT: - Framebuffer = pVulkan->m_SwapchainBuffers[WhichBuffer].framebuffer; - break; - default: - assert( 0 ); - } - - VkRect2D PassArea = {}; - PassArea.offset.x = 0; - PassArea.offset.y = 0; - PassArea.extent.width = passSetup.TargetWidth; - PassArea.extent.height = passSetup.TargetHeight; - - VkClearColorValue clearColor[1] {{ passSetup.ClearColor[0], passSetup.ClearColor[1], passSetup.ClearColor[2], passSetup.ClearColor[3] }}; - bool IsSwapChainRenderPass = WhichPass == RP_BLIT; - - CmdBuf.BeginRenderPass( PassArea, 0.0f, 1.0f, clearColor, (uint32_t) passSetup.ColorFormats.size(), passSetup.DepthFormat != TextureFormat::UNDEFINED, m_RenderPass[WhichPass], IsSwapChainRenderPass, Framebuffer, SubpassContents ); - } -} - -//----------------------------------------------------------------------------- -void Application::AddPassCommandBuffers(const RenderPassData& renderPassData) -//----------------------------------------------------------------------------- -{ - std::vector SubCommandBuffers; - SubCommandBuffers.reserve(3); - - // Add sub commands to render list - - const uint32_t WhichBuffer = renderPassData.WhichBuffer; - const uint32_t WhichPass = renderPassData.WhichPass; - - if (WhichPass == RP_LIGHT) - { - // Do the light commands - SubCommandBuffers.push_back(m_LightCmdBuffer[WhichBuffer].m_VkCommandBuffer); - m_TotalDrawCalls += m_LightCmdBuffer[WhichBuffer].m_NumDrawCalls; - m_TotalTriangles += m_LightCmdBuffer[WhichBuffer].m_NumTriangles; - - // 'Additional' lights go after the LightCmd buffer (assuming they are enabled) - if(gAdditionalShadows) - { - SubCommandBuffers.push_back(m_AdditionalLightsCmdBuffer[WhichBuffer].m_VkCommandBuffer); - m_TotalDrawCalls += m_AdditionalLightsCmdBuffer[WhichBuffer].m_NumDrawCalls; - m_TotalTriangles += m_AdditionalLightsCmdBuffer[WhichBuffer].m_NumTriangles; - } - } - - if (m_ObjectCmdBuffer[WhichBuffer][WhichPass].m_NumDrawCalls) - { - SubCommandBuffers.push_back(m_ObjectCmdBuffer[WhichBuffer][WhichPass].m_VkCommandBuffer); - m_TotalDrawCalls += m_ObjectCmdBuffer[WhichBuffer][WhichPass].m_NumDrawCalls; - m_TotalTriangles += m_ObjectCmdBuffer[WhichBuffer][WhichPass].m_NumTriangles; - } - - // Add all subcommands - AddPassCommandBuffers(renderPassData, SubCommandBuffers); -} - -//----------------------------------------------------------------------------- -void Application::AddPassCommandBuffers(const RenderPassData& RenderPassData, std::span SubCommandBuffers) -//----------------------------------------------------------------------------- -{ - // Make sure there is something to execue - if (SubCommandBuffers.size() == 0) - { - // Technically, this may not be an error. For now, let it fall through and submit nothing - LOGE("Error! Being asked to add pass command buffers but nothing is in the list!"); - } - else - { - vkCmdExecuteCommands(RenderPassData.CmdBuff.m_VkCommandBuffer, (uint32_t)SubCommandBuffers.size(), SubCommandBuffers.data()); - } -} - -//----------------------------------------------------------------------------- -void Application::EndRenderPass(const RenderPassData& RenderPassData) -//----------------------------------------------------------------------------- -{ - // End the render pass. - if( m_RenderPass[RenderPassData.WhichPass] != VK_NULL_HANDLE ) - { - RenderPassData.CmdBuff.EndRenderPass(); - } -} - -//----------------------------------------------------------------------------- -std::span Application::SubmitGameThreadWork(uint32_t WhichBuffer, VkFence CompletionFence) -//----------------------------------------------------------------------------- -{ - const auto& SubmitList = m_RenderPassSubmitData[WhichBuffer]; - uint32_t NumCmdBuffers = (uint32_t)SubmitList.size(); - -#ifdef ENABLE_PROFILING - PROFILE_ENTER(GROUP_VKFRAMEWORK, 0, "SubmitGameThreadWork: %d Buffers", NumCmdBuffers); -#endif // ENABLE_PROFILING - - const uint32_t NumPasses = (uint32_t) SubmitList.size(); - - for(uint32_t WhichPass = 0; WhichPass < NumPasses; ++WhichPass) - { - auto& OneSubmit = SubmitList[WhichPass]; - bool LastPass = (WhichPass == NumPasses - 1); - -#ifdef ENABLE_PROFILING - PROFILE_ENTER(GROUP_VKFRAMEWORK, 0, "Submit Cmd Buffer: %s", OneSubmit.Desc.c_str()); -#endif // ENABLE_PROFILING - - OneSubmit.CmdBuff.QueueSubmitT( OneSubmit.WaitSemaphores, OneSubmit.WaitDstStageMasks, OneSubmit.SignalSemaphores, LastPass ? CompletionFence : VK_NULL_HANDLE ); - -#ifdef ENABLE_PROFILING - PROFILE_EXIT(GROUP_VKFRAMEWORK); // "Submit Cmd Buffer: %s" -#endif // ENABLE_PROFILING - } - -#ifdef ENABLE_PROFILING - PROFILE_EXIT(GROUP_VKFRAMEWORK); // "SubmitGameThreadWork: %d Buffers" -#endif // ENABLE_PROFILING - - return !m_RenderPassSubmitData[WhichBuffer].empty() ? std::span{m_RenderPassSubmitData[WhichBuffer].rbegin()->SignalSemaphores} : std::span{}; -} diff --git a/samples/rayQueryShadows/code/main/rayQueryShadows.hpp b/samples/rayQueryShadows/code/main/rayQueryShadows.hpp deleted file mode 100644 index 3481dbc..0000000 --- a/samples/rayQueryShadows/code/main/rayQueryShadows.hpp +++ /dev/null @@ -1,291 +0,0 @@ -//============================================================================================================ -// -// -// Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. -// SPDX-License-Identifier: BSD-3-Clause -// -//============================================================================================================ - -#pragma once -#include "main/applicationHelperBase.hpp" -#include "materials.hpp" -#include "vulkan/MeshObject.h" -#include "vulkan/commandBuffer.hpp" -#include "vulkan/TextureFuncts.h" -#include "vulkanRT/vulkanRT.hpp" -#include "system/glm_common.hpp" -#include "camera/camera.hpp" -#include "memory/vulkan/bufferObject.hpp" -#include "memory/vulkan/uniform.hpp" -#include "shadow/shadowVulkan.hpp" -#include "shadow/shadowVsm.hpp" -#include "shadow/shadowVulkan.hpp" -#include "system/Worker.h" - -#include -#include -#include -#include - -// Forward declarations -//class TextureVulkan; -class MaterialPass; -class Material; -class Computable; -class Drawable; -class DrawablePass; -template class DrawIndirectBuffer; -using DrawIndirectBufferObject = DrawIndirectBuffer; -class Gui; -class SceneRTCullable; -class SceneRTCulled; -class TestMeshAnimator; -class TimerPoolSimple; - -enum RENDER_PASS -{ - RP_GBUFFER = 0, - RP_RAYSHADOW, - RP_RASTERSHADOW, - RP_LIGHT, - RP_HUD, - RP_BLIT, - NUM_RENDER_PASSES -}; - -// Class -class Application : public ApplicationHelperBase -{ -public: - Application(); - ~Application() override; - - // Override FrameworkApplicationBase - int PreInitializeSelectSurfaceFormat(std::span) override; - void PreInitializeSetVulkanConfiguration(Vulkan::AppConfiguration& config) override; - bool Initialize(uintptr_t windowHandle, uintptr_t instanceHandle) override; - void Destroy() override; - void Render(float fltDiffTime) override; - void LogFps() override; - - // Application - bool LoadMeshObjects(); - bool LoadRayTracingObjects(); - bool LoadTextures(); - bool CreateRenderTargets(); - bool InitShadowMap(); - bool InitLighting(); - bool LoadShaders(); - bool InitUniforms(); - bool UpdateUniforms(uint32_t WhichBuffer, float ElapsedTime); - bool InitMaterials(); - bool InitCommandBuffers(); - bool InitAllRenderPasses(); - bool InitDrawables(); - bool InitHdr(); - bool InitGui(uintptr_t windowHandle); - - bool BuildCmdBuffers(); - bool InitLocalSemaphores(); - - const char* GetPassName(uint32_t WhichPass); - - void UpdateGui(); - void UpdateCamera(float ElapsedTime); - void UpdateLighting(float ElapsedTime); - void UpdateShadowMap(float ElapsedTime); - void UpdateSceneRTCulled(SceneRTCulled& sceneRTCulled, glm::vec3 lightPosition, float lightRadius); - void UpdateProfiling(uint32_t WhichFrame); - - bool ChangeSurfaceFormat(SurfaceFormat newSurfaceFormat); - - struct RenderPassData - { - static constexpr uint32_t cnMaxPassSemaphores = 2; - std::string Desc; - uint32_t WhichBuffer; - RENDER_PASS WhichPass; - Wrap_VkCommandBuffer& CmdBuff; - VkSubpassContents SubpassContents; - std::vector WaitSemaphores{}; - std::vector WaitDstStageMasks{}; - std::vector SignalSemaphores{}; - }; - std::vector m_RenderPassSubmitData[NUM_VULKAN_BUFFERS]; - - RenderPassData& BeginRenderPass(RENDER_PASS WhichPass, uint32_t WhichBuffer, const std::span WaitSemaphores, const std::span WaitDstStageMasks, const std::span SignalSemaphores, VkSubpassContents SubpassContents); - RenderPassData& BeginCommandBuffer(RENDER_PASS WhichPass, uint32_t WhichBuffer, const std::span WaitSemaphores, const std::span WaitDstStageMasks, const std::span SignalSemaphores, VkSubpassContents SubpassContents); - RenderPassData& BeginRenderPass(Application::RenderPassData&); - void BeginRenderPass(Wrap_VkCommandBuffer& CmdBuf, RENDER_PASS WhichPass, uint32_t WhichBuffer, VkSubpassContents SubpassContents); - - void AddPassCommandBuffers(const RenderPassData& RenderPassData); - void AddPassCommandBuffers(const RenderPassData& RenderPassData, std::span SubCommandBuffers); - void EndRenderPass(const RenderPassData& RenderPassData); - // Submits the queued up m_RenderPassSubmitData, Returns semaphore(s) signalled by the final pass. - std::span SubmitGameThreadWork( uint32_t WhichBuffer, VkFence CompletionFence ); - -protected: - // Threading data - struct GameThreadInputParam - { - // Input - Vulkan::BufferIndexAndFence CurrentBuffer; - float ElapsedTime; - }; - - struct GameThreadOutputParam - { - // Output - int WhichFrame = -1; - int SwapchainPresentIndx; - VkFence Fence; - } m_CompletedThreadOutput; - - CWorker m_GameThreadWorker; - - // Game thread entry point. - void RunGameThread( const GameThreadInputParam& rThreadParam, GameThreadOutputParam& rThreadOutput); - -private: - - // Metrics - uint32_t m_TotalDrawCalls; - uint32_t m_TotalTriangles; - - // Requested surface format (for changing formats) - SurfaceFormat m_RequestedSurfaceFormat; - // sRGB output (done in blit shader) on/off - bool m_bEncodeSRGB; - - // Drawables - std::unique_ptr m_SkyboxDrawable; - std::vector m_SceneDrawables; - std::unique_ptr m_ShadowRasterizedDrawable; - std::unique_ptr m_ShadowPointLightRQDrawable; - std::unique_ptr m_ShadowDirectionalLightRQDrawable; - std::unique_ptr m_LightDrawable; - std::unique_ptr m_LightRasterizedShadowDrawable; - std::unique_ptr m_BlitDrawable; - // Computables - std::unique_ptr m_ShadowPointLightRQComputable; - std::unique_ptr m_ShadowDirectionalLightRQComputable; - std::unique_ptr m_ShadowRasterizedCullingComputable; - - // Ray tracing - VulkanRT m_vulkanRT; - std::unique_ptr m_sceneRayTracable; - std::unique_ptr m_sceneRayTracableCulled; - - // Ray trace vertex buffer update (animation) - std::vector m_sceneAnimatedMeshObjects; - std::vector m_sceneAnimatedMeshComputables; - MeshAnimatorUB m_sceneAnimatedMeshUniformData; - UniformArrayT m_sceneAnimatedMeshUniform; - - std::map m_sceneObjectTriangleCounts; // RT objectId to triangle count (for one instance). - - // Textures - const Texture* m_TexWhite; - const Texture* m_DefaultNormal; - - // Light Stuff - glm::vec4 m_LightColor; - - // ********************** - // The Objects - // ********************** - ObjectVertUB m_ObjectVertUniformData; - UniformArrayT m_ObjectVertUniform[NUM_RENDER_PASSES]; - ObjectFragUB m_ObjectFragUniformData; - UniformArrayT m_ObjectFragUniform[NUM_RENDER_PASSES]; - Wrap_VkCommandBuffer m_ObjectCmdBuffer[NUM_VULKAN_BUFFERS][NUM_RENDER_PASSES]; - - // ********************** - // The Skybox - // ********************** - float m_SkyboxScale; - UniformArrayT m_SkyboxVertUniform[NUM_RENDER_PASSES]; - SkyboxVertUB m_SkyboxVertUniformData; - - // ********************** - // Deferred Lighting Fullscreen pass - // ********************** - Wrap_VkCommandBuffer m_LightCmdBuffer[NUM_VULKAN_BUFFERS]; - LightFragCtrl m_LightFragUniformData; - UniformArrayT m_LightFragUniform; - - // ********************** - // Additional deferred pass light objects (additional lights in scene) - // ********************** - Wrap_VkCommandBuffer m_AdditionalLightsCmdBuffer[NUM_VULKAN_BUFFERS]; - struct PointLightInstance{ - glm::vec3 Position; - float Radius; - float Intensity; - }; - std::vector m_AdditionalDeferredLightsData; // w is light intensity - std::vector m_AdditionalDeferredLightDrawables; - std::vector m_AdditionalDeferredLightShadowRQ; - std::vector> m_AdditionalDeferredLightsSharedUniform; - - // ********************** - // Post/Blit - // ********************** - BlitFragCtrl m_BlitFragUniformData; - UniformT m_BlitFragUniform; - Wrap_VkCommandBuffer m_BlitCmdBuffer[NUM_VULKAN_BUFFERS]; - - // ********************** - // Compute Ray Queried shadow) - // ********************** - ShadowRQCtrl m_ShadowRQCtrl; - UniformArrayT m_ShadowRQCtrlUniform; - TextureVulkan m_ShadowRayQueryComputeOutput; - - // ********************** - // Pass Stuff - // ********************** - struct PassSetup { - - std::vector ColorFormats; - TextureFormat DepthFormat; - RenderPassInputUsage ColorInputUsage; - bool ClearDepthRenderPass; - RenderPassOutputUsage ColorOutputUsage; - RenderPassOutputUsage DepthOutputUsage; - glm::vec4 ClearColor; - uint32_t TargetWidth; - uint32_t TargetHeight; - - } m_PassSetup[NUM_RENDER_PASSES]; - - Wrap_VkCommandBuffer m_PassCmdBuffer[NUM_VULKAN_BUFFERS][NUM_RENDER_PASSES]; - VkSemaphore m_BlitCompleteSemaphore = VK_NULL_HANDLE; - - // Don't actually need a render pass for each Vulkan Buffer, just one per pass - // These are NOT the same vkrenderpass's as in the CRenderTargetArray's but should be compatible with them (are allowed dfferent load/clear parameters on the atachments) - std::array m_RenderPass; - - // Render targets for each pass - CRenderTargetArray<1> m_GBufferRT; - CRenderTargetArray<1> m_ShadowRT; - CRenderTargetArray<1> m_MainRT; - CRenderTargetArray<1> m_HudRT; - - // Shadow Map stuff - static const int cNumShadows = 1; - std::array m_Shadows; - ShadowVSM m_ShadowVSM; - struct ShadowCullCameraCtrl { - glm::mat4 MVPMatrix; ///< model view projection matrix for entire meshlet object - glm::vec4 CullPlanes[6]; ///< camera culling planes - }; - UniformArrayT m_ShadowInstanceCullingCameraUniform; - std::unique_ptr m_ShadowInstanceUnculledDrawIndirectBuffer; - UniformVulkan m_ShadowInstanceCullingBuffer; - BufferT m_ShadowInstanceCulledData; - - // Profiling - std::unique_ptr m_GpuTimerPool; - std::mutex m_GpuTimerPoolMutex; -}; diff --git a/samples/rayQueryShadows/img/screenshot.PNG b/samples/rayQueryShadows/img/screenshot.PNG deleted file mode 100644 index 6d8c417522c4a992d6be4e22feedb57258aa12bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1723195 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�AM~d$ZVIiXp2{JTQX*7Um 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
    3OHdcbLwZV-N>Z(zR@r0o-^Ja(4W5 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
    8g?&jAs)Q-4 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�BqUW6(Q1F-V^KoyF~D2sRx+!Rxh`dpvtA< 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%0Dt;r941&}@9JU+X=#ox%v46+z)zVO27rGNEN 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%0D%Q>J=Vkd`2{* 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

    & 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 y&YWBY)h6_i2QxQdl!!wq z&tdc_s__YU<(kvn1xx+YX#1xpocCFrjy`wr6Lrl*0>pK~wQF7bWp@a$aW;wzaj6Wv zc2Wrpoep~1t9?GcI~(hLIw(Ba47`_o{e_0R>$Ta<(tG1>7I=xh>C;4KCTfr}eOhOK zl#_5rJj>ko<4@-Bl^ET$UgokGsYqdoMwWK< zyxt!hk2(zp-x=hM8!ygq55yaK^iWM2@q?CNSpVVr3fd53Je@^Ei9iw)EPb0&BRlD? zfqTY14yaG?&+xRhwuRv?l5AzR$QPS1YGW1RfCNR}>FbY5WYF&MtlzmDy?lBz6+F^d zNPr!lp%5;(O|GVj9W;ur2Y)l1;nRMBfye-S#kni-KdBa!h;rM}(JUz9F9ETE(lXIV z)RZ4!p0ioeG0eZ`WKbe(9b%9G%*xYEg-#Oib}I#Gc7Gfv43x0ui3VmnnO1lG6A4BR zSqvxqr}2Rr?UbrB@&jTq4kg)dc+T1=JhIG;=dNG_oQnZan2=SPa=2!+GrTfw*3O=D zYshQjxaMCYMD1~zPtw}&KvrmHrvPTCh7FcZ!SW&rD~jfgQr^oaw~q7Zs;Tf($cyZy zFy?-lie=*3ed%8XI|&+K&CUlIts}Kwi>*b5Z&qsl-dQP8&G5MF4>Nh_7fINQ*~i_R zAW7Io`$UKJ?mJR=9YL$$qb+PE5^ScGaJM_b(m6s8kmw9T07$Hu>Dk|t&09%9&T=Z? z8=CjUI2@pR?ETFWw&wq7zcST}YH(Hh_J$kn`Yg;KDlUJ>((_-Xl;AE{?g_z#J`zjhwnMPtCR4Ge>-~vZAEHZ9xAQJNDm8O}R-~0t zY;Sg8GVVj%CsnH9Va7k${LL@JK6(?Bj zqG^9r5K=;W$=>jAqa=BpCx4s~<^%9+NjVhYI&yVTkE{;*mCagy6SISU;th2OO=+_4 zRO`3>+TT+(@Y;V>XdaTt%}ilmj@_i#A1F;Rq@>@}U61osdb%)g2m6Y`PJOfz4vV{7 zyzBYs>Zzo(ss)l;i%R{cyLJ@D`0SOCgZmi zxo4ZWcH&D~_DM~ujf*IIO_72vTi{B5sdJbe<9NmE#P-dtis(@yBhfc#kNZZb$uh2y zm%%t?EV;_)wyNo0mU-_uyB31fp)u@RvZXK4+=7qCYvp@K5liPmy$LSr1dGWF1jq>^^*f{mIdHPPs`V#DZawh4%u{a2jY` zyc@X*OL^$PeVb+a#jb*V4Rtw#@@}WeJ)bezw|g7RD>+f{!_GhOaATg|M(o&N0*)}yHe}Ay!C12%N(NKS9ijHL`{&U|E~FUqsA!b>Gq4A ze@-1aA-3S8r-TRDn;BphM7GqSOR(TbupAzxv=zheAv6qlXA?8_3E@=T1PTvqLrY%3dQZS#9t=WrLoDKu(H(5ABeplJe)m&xyvI zZ_1!$44k;RWVJOI7h8mmEX&8Kg#En@xG~irC$&>W4aF!oYW4%8H9Pp$74>EAGWDIz z(b(VIBi60O+vKig!*r6)kC#&$*6kq*Zr#Xy?gI#=em<=dRn`4U%~Iw)A*=MewXVnZ>`RN=s=(`r|5RRXu(tj^b@0ils_o0C02wV%hW!h5&%IyAtM|pvQ`B5k*tX{jR*};mC zG|=63c0p(zG9rwG!|#sIqZy<3PnJ{A?wb~T)cpMy%<;_Gb2lpncicdpx#O=$f#Jga zTLHPnelhixv^_nYT#;AyeRSGKYda*_mW1C4{vnn9@~ezx+4Mhmk}h%*;kTBs9~>R1neIHUtN*Jsp$wt`U*JinT=BJH?_mX z?l*y6Ew>=?EQ`Mz?8P>8(x>WM`E6JdnX3?}PpDZJ)?4OkR#}~g!L8kTt@iWjYm#Tn z_X|V)UppT6C*X*Ez(^BXPTsZw>d*(hH&`414-Vv5BO#Pi z^&VBiiOnA7ANJG+jUHQu$e@}XAR8{Lr{drpUJ+nt+YR}ma$J!9TSC5>9Bq_dqY^*} zVS6htvyZqpGi*?rPittQOZTYv;loT?dB>xQF|nGgDo6F1|ABg`6tOd9DQYR6@I`3D zuCLHc{N)6#2zE{qR5NpK1iHs9cEtn){rUa=0hz?X z_)8vjTp2v>b)UP2kInOCI6n1|2yGy10PZW#yXFRsz7$@yZWaCz5RC#h$=T)nufzL5 zRo1?f?9i>6jZh{8cUCk04^nQD9VRs@YzvBa$LBY9)cjwaDNgYRQi@(vp*-C{mTdsE ztJzeE}NKyKv8y>;7fsCnAWI%H0R^s34ErZVu7m2%s zbXdgl?}_yqFTOX?ZR+#P-ujHn`V)-2qBB5EpT&nlv|2U$_ro(g7Kl|2 zl{z6!~m7 zb2J-{jw(EXf0w~xA9A*z>X~{R!2d)$pEsQkyFE>OT}(v~ zz+sCwxgpq3_>=7jp1=9%-Z@QMD}DoD~0_W5|{OF&FktYyFCHG}a8d1T%i z0Z+rGg_#xHMLvC=l{Xg=M*pn=_%Y`&8z__0*eKK|Gy02&ixRo0*w)spp{)xAz%qO5 z@fm44Y0);z8s32(D0lw4D01B6L`bckwbJk(A(Nrw_Ud-FTK~@~DBZRP#T~X%)bs<_ zYH%U-1=nxqH!3%r^+=b)4usXTHj+Da(s-xl4`+Wyc<-L+2ET+8i~3v0^wq%$<;}fU zcZdMoBg*fg(CNZYr#wgJT)+jL(l%Ulz|t&>`|YDY6NC0pQ|$iS!5RT3AizEbj23BK z;Huca^)KIojNDUM9Ldhth5YU)SM*DEB>V!W8YAbh0JoG3@_!AJ5heM0u(Lw*si@of zafQtIKP6y4T%PN1D`RhE_-W|l9;vo&V|+BBbDe^t(xTSIcl;3go)pXq$HRh!dWdiu z&VR$ggW1ugj4b`gC3u1e+;(zwj=nlgPZ-xwx9jfeA>}C2zsP8U^XUNPJ_iK)t-`Dm za|K$hgT|Sbhum96(sDMK?B--e;OK%KRdT_6wn5lG279cXQ%z?mX&yxCZ8G&wE=n%$ zjwozd8FZTUH`Sr@*kJC0M#HBx>sD!^%4if3u?I4VY7@yCORKhNQ%b$NuSzu(!sS$rv2^b&K`%eeHp#FYO8Q5C0 zbh1P&dV&h@g!HPq<^lmYn_O^-Cg;yz6!&$mUAJYq5&`O{r`Mx56B*|cX3#hOx42%r z;C%|9%L&O^e&3x&*Q=gBKAfKV4_nq>g%h+X=&Cp;Sbg`MPV^m)3WqpbTnUn8>XNfk zn=3T(n{sSYz3R`HW4)=J_7BV@*$GPIOPqM51PSFD&-te78m&Z>oD17?lioAaTiF@V zxlv#KG>2kX#+ak5!0e~9x@|I(y0Ld(3I3XR|6On3mir6~8YPvMd`n26B4ZcKVN8(9w zpFp0vkzKc#ODPhw=$;l5<;7|*2!#$w8?Z2DqeB_}u^(B7^$*KjW)f%e4>hyce)m1? zT7b}L>~X~>#L@oz6h(kDL+YuvI+t%Y$t)&yO8=u2jqp~zYSKkV@R%&ZbN&w{XQ3pA zF9kQ##wzw7va?>3+izJ(<=p3}TgC_hws8#4;LwsNJd36s9qu{_k(iCh4z&tY8aBTldi=DVsr=j1X7H&J~u!3 zW#jTcJMHKSazzSwwWS~pJhxX6_kW&f!unS!?%npE?^}QTIO-3D8^n`n7vHyyTkdWz zFO^b|+vXx_{7Nzk3BuPAE*g#MXTf^eAQ93 zU3Rhz8BGfCGVnQWi>qKan#hma8x}8;-9|K3Ud)`Md?f{CNOa3by27%@^8cM$syHUB zNMeh114%hXKVFZ+o~njWnHy)u!pPxyv9+70QM+F zeso*h-Pxt@jdu`bWH-)BW%)=5_Z`D>&$~V>!%AcwL-qFW zAO9ny)jj{pH&3)$+w3dNLg|)gf*W5+f}xAyZ6RKx-G=F-L2$Z(!9l*>-y;1 z;vFO!jQfHRcolFzdN)I&jY(jKf%J1)W}q8)^MSK)-qbB+3KKjtEk5lKKH^2w;e3RImb~fIY7&qzRyNTn(addV;WqTk<}<2 zE+ad|p@a#h1SZ zK3re9_HRiFKp1cGyf*uk2LO)*^9M2 zl?P7TVwAFz-C^&b0&sbN2!;_D1}khRKiVBO1~)l><5gpg zLCRoIkBCUiRMEv2A!4*eV!*_z`P%x4{3zBm$T4Wvd{2?4Z5O64okL#=Y6 z(dU`cF^CC~9b-qan$zNt8D%0~lBLo9R9ep!#1>0@v! zqYWkkT(*iJ(k0-GD09F6jQCcZ8Lx!VU}2FrYZOt!iTkk-k|9Jv`o{krpg6dngqQof zAcNl{lleCXVyn?JC&_OAS63s|I1=}*WFurjpBQcqgLlWQ$Zw zk35v;Tv5F|=;TNGyyHDUA_We4VZCTW$a_r&^`omv-hQ zO{putKKzDDM~JqF|C9NGL?|^>YQI5S6;XC1#Ua?#B}=D@=5%VJ{0Zyw;kC;jQQ#xWwh`i?TQAQzC~jNZN%?`N1h~Q=$2uj`<=Bvv;8yqkZOI8RT%a=cr?mEbW)W&8^a>1&*I(J< z523$2=-zuR6r6MU0L6KD?(Z0YYMj=LmwV|Gk-zeQM#;xxF`0nYHJcG^UuSHsMKh$I zs1#_3h-g+}Tdz`wXH?0rfvxL@RQRnV@it`pL4or9TRVGX>(CT(IZ#vC)PH?+HjbOH zFNLmlChrGi7WJ}*8~HUEC*fV>>pU|w+Dz$@{2AySWmG*H698jvNn1+vOo~jUI7op; zB46$)C#Is!>~@PobcYDhMvOuZ64xXAUfS%}YBX~x>wMN<2I{dQv1#PIWK7`9u*Z3t zW)y?vT!y|TsrlsEPfKX%to*C_f z7SEA`Rh3qCk(~_){#ww4gI&M$%}Vy4ePnDZh0XXnm$U1Rj-Cam9k$$?poCF16l1UX z;;exlx&?Q4b6nwcEd9OlhpX(e)bsNX@Kr$Y{qP-G$o+fY7h2(q?aC`2&`xx?e4X;D zpV4KANWH{U3H5QtPj5&pi=T}sf9P#=r90ZtkMBQju#u>*olgVTV~T|(Gq4A4(E%|_ zVd67kUr#!i9?lC?|Gw}*N27VZ@<&)#1@F`CCwte^_%xp1Aq*^ zXl)+44$tNCQt2;T`@^z@a9T5ySW;A+9N$MB-!DIfT9S>W*iD)`_OorWWoAmf6t!bDWJ^GCycr&6q zVyA95k0<|b)Tuuq;2wu7JhQP(p&%*4-5^)lZqq(DnQNGz>`N$=NJ%jP^g(TxHO7M@S{P*l1 zn~XAr3BCmX;u)*hWn2Zae>KoE-%Q;>9Ie9-k?UI2nY3vA{e4#5W^L$cyosU7S;%MV zSTZQeZ&Iy4vZ!rpT9v9kWXHak2eFk1#L<@gg>-;AN^r!G@f%k5Bwz@@cm#!rp8S-a^A|iKTXFErg9|-0tp_KlK`G zoK}f9TyO0JJes*J$02GvSy)T=;xEe)?SE9Ulyx z4OB0%esM*6R;b&p<}1D7I}TuZPsy{L*xZAWM-eLkie?Wws`M@HS~oxEc;l4V%|0-WwlX5_=$yn z9sE74%qQwJG1|fP6R0-ZeO)d|cs@bA2-J zas))HWr-dguFb$sirzZm;R5H!3$rg=(Mg&y$dPD$Kd(gKz2~(Vynp-**c@@c2kR7-!*CAJcG2z{m2Mn5eg>9%CR%; z=s%jv$E~M2BL7Q;^Ir)LI7>8vPZs=i+K^P=aKA`;;5F|0XAsbT9~~HOGI3pU-TVS= zWdi!5z0M){e_UmPdpN%j(lIQf7nA;4l-;aSeu_1R3KkHT;Dd>Giy^;8rJ~JaH9d`w zgzvY=J)^!WGT?~Jr4vxDeok6*=+M62!36yL!_2a~Y^X7_#0F$UD2FIjC_wUFxKFJp zZZE{mpxr;?19SQTxubozqdmiqPP29+Uuzpx5@#UI5Drvr5M>(3WIoLjGC4DB2cFKx zoW^Atb$m3BTi`E9Jj2*N^XNTqHr!9t>_(0fW)8WMZc{!VZ>km5M+P%95S-eH+QD(4 zj^F5~P`22=!aqB6ef8l9!{GmMwK+MLkG}ng!bowW!UszNahZoeC4%7b;gwIXXF>Uo z^Sx#-l)V=tn^iR~=4WR{$l&jPhJpkh|EJm8hNO0cP4=q1JV2IcYsvLh`lx@fPgP->33jV2~k`Rf{8Dl6Ufm{rKo<1+__ zQteHe{k4WYRC7{NvqR;I9fixPN{Y1f`n(IYLL*+F29c|5!(rKT>|pggRvD4Bp$=93 zSs&cW1}e!!HUdoPQldh0Y29C61}+xSk+wd^Yr+?6Mvk!Fl{%5%eL?#z{Qj-j<$M%a zD%kOkZSdOd5i;0YE%BfP8(7j6Uk5K;Atek9xHN3h(OH1ead4I93#H?wqWEvm{ig6Q zI?kUAv|Nr!yB2+W*Fts#@fidC!LxDX-3OGP-ORJX_$aF_{;|K?QVrMS2#j;zGUrFD z9l-*vlOgK&zaX)I2=0y;V{IJC<+s^mH`~cW&~v?_9A48$gr4ps{{x*1GOKdmiY?M; zj&v|;Y%vm?cPH2-awVRh3qooqdIN&YUV94ft` zjU5H%`=EQ!Lp?Pf7w7o?lgH&DXRh6^*fa}9Q9yRSgcpS{6B#0aXWeTFm5Huv&#!Fc5BQD-Wc=VC`&31B2w+vz$s8SHkBxF2 zo8W(5{2S}vG?A(i0~DCrfCGsnlaM%>ZCKY_)nB>7NQAMp?TmPi>PysVDzZ=sSkY%;7^p_GuX%ioAl@S1nKHkQ^?Dlq`wWSMKQXKGEW>1Ke$7^vm{FNIic)DE zN`7E~lKlwV_YX}8!gTwMZ2fr97F+BLLk@FHX4TpfWqHT8cwqA~;h%|@6n385x6_0Q zBMTT+bXZqGhOat^sH^TDx&HSmdf4GvGy@vRH~eoqU0-e@WiZj`swEf$<-O5S@+i;2 zGfM}%#Oej4(iHZ;|CRVBdYu!0BfJwxhZ2cXSQw2R6p5z=k_6=Y6=+btbo0zDF}$>% zjs80pggbVR-LJ;^+XD}yjfMS8ry%r-qW_O&W7!m)CEkRb&dg4W+}u*Qw%90e@hnXsrc zs1=k_R|AI_i(=w-BFYfP*;|J}wO#X5u~;+|r}qShe*00sEO1%l`H-g_3t_TNX3}O9_-TAtp`4dxQDG^m-1h?p#5I7V%+yCG8#kC3_ zANyFQHV?)!J2$wbP%Ax{lQHE!ZskYpB;V|?0AWY2&FUPp(^`XBgJHQf7WG&fl2!#W zQ;Mg`yWYJUV+Dyo)Vnnyx9hz3)Bm&y+CB6vUosfyf;4lNHd1q+ve|e4H0a%q>kY9O z*(99kbvKw?jLMI(QoPSN(U7z85@-5)rIeKuJ8J!rF)dqR93^An;?Iw21zV4vQyABn zqD;nQ0aaEQjih~>y$n>^Ks#NXNsI@B+xbw+8G0}H4$iH2k<3}P#R`}ec+RDIZMkd!?*Ukp1|ruY6MiDDxlrByK#Z&xQ$Co0X-pQ^WXl-w=lxKoa@JxUjM9bJ z{{t&KCyba%5AKfMJ(>U zbW&XQcdI=dyr%m#REFtRKAgPlt1o{nfx9}xcdnScu0iR$sk7> zPfttu#5(sze)AiUKYE?w4(N-5gCX-gS0E4q*E5dx@3-IdL75mkhT&#eoDSiFgatD%@FuypskFo{~< zV#`yk;w${U%l;b#DxlF?R>}!VOQ{eV=80iCF~M>?a)Zmx0uY}iRyCXQZueD>6yt=O z`sk*QIj8Ctfz>%<)7OTXJ?p68aEV;tqf-F6IC8?TXLSltADT9(&HgBzkeW?$VN?c5 z#pwyYJiwynk&cGd6Z$U0iU}#%_=ezAw$Hdo7PjH^xfapdk1E$WdR5$p%%dN{xDM?E zvo{Ju9nBwA8GLn+L;knSwIurod~7e(|2Oiu;g|MLIyNMZELUG1j;s z7yDwV!;z14Kd+(xYjDo)yeR*T(EFSSn-JT~T=bKVc)DWU5Nx!76N29B zZ|ai$YiBO*7KC3uUldv3lkaAD@1Os&vd{rn7Wx#F@#Qc7>{~G8TQv`iSX0Q51_al-2UF>VEQ7g%?#Gs!AdXPzdgdfWGSWx#W{ zafo}`P8#i~B4KL4Ka67L-0 zvx>PqG?BL>^|r?av`Rtv4<<%s;;=&yEy~m3ds~0pO{+(3^5MxP4aIx$4G%~j(wzSb z!IN#3&{V1gdGwUM4ALFx9(W0_Ft6;dl^sy`^9M!f0Sa1yAlaXR7v2E+s}Mp;_ei>a zI-IfUQ?I-{FA8OMVtipya!fAt`#?f^K2dCd#jfR86g5?W0=U{i4dygs0FO!|l$L!Q zy3+$y$AH%Nx6bRouOMSHl&MwV6YtDxd?~>%fq_030RSg$)<2RgYZ?}3 zzc{8^Cxu>haoGkJg+zmz3Rb?T+oCfc^ywW8uA0wQ=)#ZrO?>>8+&+rPaSHsy_PtK3 zj;gqrEN2yLD=yJeZWT!A1m@D7z*wu;)X8$2F7t&Cw$@!yJB7+Xao|Qvw)ZCMpJ6?+ zW7fhr2Y(Ew}0G-=(1H|OO>&ZaCK6)WBpRlzg{o+T(LAS^A{F$U##umQp zK{3pg3C&zwZ6ltl8>Wj@mAC-|iZoINqj%~*(5U1?G<0Q$GBtMW@f32(Z$(7nZJ9T!>iu+hOt3rO~IB-4Tt&-3c^i z%ZqujCP8AI=O}0F+ZTUl%xOPU_YEnf4ph}uLLh?_kbzkXZRvN!@jf{bTCLIaum9%e z5dnYNPAQ%CX*1!-KzRJ#s4z+V2P~UeOcfCgEfO|U<+?n`+rLl}%eQNeZl^QNMUcux zM>0#+#aCj7rRPfoAf9v6L>rQnDQ@G`{~7POz05gxQBQ?OK{;nwHb04oCwwa0R}c?R z9f*{~i%H1js8w9~$FY_O5yI0DHaWk(d{ni1*`j`mL<&H5)8n&w#9?qzVFeEMd<#nd zHizE)V_E=6m@|_Y_7NG3`lTmf`XA9MCg8!ue>k;719qJq1^0)w3 ziZiL^JmJr$o#NBF{}p)Tdp@0L#_$OZ42fSg5!S|Iz`Z-L)&vGQP2T~}kuP5Po7vE@ zC#rs7s1vak)!036o&EK;T>BI;0wSp zY!|fotmUF>rb(a7L=$O5dFi>Hla9nqH#2Cq8e2@Mi6taT0QMEWF0d^(iT9s}2Y$QTQXharO}o%*f~MC@@hU7V<2<{4MteyS>u zkA*XaO1a@AjGJ#3Tyt-O`dGVPpae1fTe*}Oc|#69eSD=8aN;8(c&F+KRCXriwNI-1 zIf7ReG% z#q7hdO?6Yu>`2HSY!n+q)M)xKFQ>iqEtF7ThMCWUTNlZB&^t0wh@Cl`rNWtY{^|Vy z^;m@H7ec|Y+m&eXg~w`pC^oQ(KU_Q(?maTx`K+C8S?LM*nJ>u|-69bw-ls?O(nt3b za*jvs?kCR(|K~u+V$j*BF^_>7X}G`C6!GOQ?QE9Xmu}O(PWkL=Hqa?SKxZhRppHUb zBI-3ZAj8jFF*gj2oQgEDU!;4^Z>Ma%!(F%5tcy{9$}I8Y{?vrcsA<(y{(RIBR{8X3 zgti@#fY!cxe!7P%MC;u9QEh!xh>*fpD|5);jgS7kt2#lP;@l=n~zw_gV9 zz>`Em!XkWAbBn)!i=r;CzHjUJG9YyPte37XfJEhhqgv46%jVz(%!~c-6&;n#reYwF z_2jrBzKm0MON7PjttU6=*i8BD7w^IRQ)#~2*rb60G4u9Z)xG(DLM5rvo7Chr>n8V&@tR6mmn|t^+#I1_84`V|=R^6qE$S zQzYh}_QK|(I~lpX)r^%S}j9SA29ZCM3Qm^)PGduCf%M@^|lTJ*KKS!p0(Mz|0u+OQ71n@w0j)a-UYEatNeY@ra7L6{Ru86X5aSPyq&ckvReu!OR2u6d|arz&vMj0o^J-!*c%#7M1Os z(J~w^D?l{Qlu@i|VasgZ41?G=S@4(lBs|Ix1C5<^FFK;9uaXlY87X4E2SamrJ$zV+ zqS+Qj7RbQ{kO|5UVb1fFscaEvWivFT+Db~tfyr?7vu@ZKk6~#-TE@*-m8c0MZ6BVe zKyKN487eDVGOmDL;#gFzDi@MfL6TQ4LcDv!8y&(8hzG)V=xEJO}aakA&b$;00 ziub>?*B1}yVu6USq)g|ZPV7&gw%j;^?5{B%4_b(*35ckd$~6Ez9*V}Bbbb<$Z4roQ z$#-4kA2gerngOGu&=>GupP2ssU{nqAnPWi?F%0Yqh58@?-Xn1K%SW0hNy?aC zC4QbIn9p=K%L|^Ro>{7p>006|tM?$|xJUG-v`QFoX>ppjozukA^EdSaNe;b;Zh!5e-MMxX+4EqJuDOJ^0#=FM870`yT zEexK04QB|{=%*{5OaEV$MIeGAJU~E{{pcQhBoJK-UAQIN7CTBMehow=G0#`J{2elI zmszCCAbauFzRSPB*Q9M*EzhDW09;v%rK#x`H>)8SrzBpg;jui5TCDKhhD!|-P8FoA z_S(?H7H5KLep@xv(i8ElQfk0RQ&1CIcp4^@F0_%weA-2<%%@-438oCm-Wsd-1krzH zsqOz5zZVyFOTNoR!8PlbZ-&ApT%1V0q|yq^7cm7Pv>OoHErW|XYwA50?5jXAS{9&$QW1-F2t1Q`54hp z!QU(JP8=$n59J_PScn4<3i03}2@Pe7h$6nWT%g=4G&!D;oh~JMTxmEaWkWc|TXI_m z6~pT#0qEbR)-{;SV(e`Z1CSN@4IltdJ;4Qix?{dk{&o8pb7!epx~!O4mnf8XnZXA% z_>_wlX1ffgc?Z585aKMI&a#dAW+@gdz!TVOJ)wjY&4~2 zU->!S@Tb_2sU~;ih&+U!IDn;^3Vi zYP3WbnR(#OMx!b)Aql_1!2lTE^-aRK+o5D>MMIVR`n~Vdig;t9SNq-1gG@zKh2^-p z=^g^LC%8@$l?OSRKg3d15JVO~zuBEhY*LOjT$z5e{-C9>oB4hIw~2{(x7YawbFga3 z-A3p5_+`(3tGa%hVr3)q042?I%B1A@d=H4n=?iT%rGlog@P2~fUBFU24sv3}=}{Il zSY{D?he3;g92`aESJxcmSF>kNi)=Ts#QgIVHLq*E@1n&HY#oF8d=lj}i9LZDGosPyrtnum9gwSWQV^hVQor=-rxFKNlA=~iJP7&)JnEHH~cg$vv*pzb*`kuCVM@^ zT6X>@{*J|_L$WO|qckbBIv!_q_&!*kqrqieXpz&9e!1u>L%V_$kjQv9;EDyi?F?7b@~}`FkI*`*qqZnA2htVo2!|lTDLd{*lwa_vBY#Tl{Ywq0&?ugi=hY;emWAQX z{@^}OOkwaqQp$?Bs;Lx4C!YDlbtf@j#)UG<^N1x4zmx}0@jo&N6EFT~{g~?9p@kBOm*=Pc;oS56qeYqI+=8;YnJ-De;UBTw zw{AJLENdHc$`S0^Sks}M_Z|V~@uG z_Q!OqQC{&v#FVCBm+c3R=Q_I!$k}#~DERF{RD7EIU_i7sntLbNL3v+qmS%pJSpi+02t z6&`!z_#$oU&izKRH|w{s$%Cr-+zbexpn5gINk4TC9Tw{lk$G~Q=Yfsbjq)zLEZbws z(+iwfwV0v6+?3SV672(uWyK*&lkK@iyCIVQQ#M8NN;QEDz8cXPc9(&p?de zE^1Lx$=kXsJ$IG$i^Ndn!w3eZy3UMJ{x7gv74`aNwbeMfwb9y-*{Bm5Qn&t5EcuUB z3~_)mcJ^5mv|#YoZdf^E>kr~Qt)0q4;UpFNatgv z6(rP3p*E$`0px}G*3s_3i(5ZF_bB{-xw~hMb8>{K5s?DXi}Q${+uVaX;Y18a{93d4 z^X^X{V!dn&u^1RJ1Ue}#RNaqweLFiqlYm2K*Nlx8fkPMPwA#P6hxU%iw~?q0|J7xr z^LlD|oeWxtc}T0%h;f!f#F<$j!fY%Flxc(t`RO|v;!M+`ZnE(NJmQaSq7S7Cdp|z; zD^b5alk8n=R-_KdRS?zON4OtpqeLM`Km?OQh(B}`zmA{1&~H3_xQ_DQTI#hf!hRDv z<_MJfiZ6b1kMB_9nxw6u0TaPF@k8Fet*1`<1n=dEzuBvag`Qbk+d{{R2`)Vq@ppa= zBCP&3ko`LXVk8fBu3`^f>VTvoDjHOaGJbUC!~X$wL5jXKhWm6PDr1vz znV3$>#7siQrlK-D5|Du*!o#3>5B}dMG%^;Fe2%uy38_E!>vHn3e=e<0Jubaxj!2;C zNr`tnC3)XTnM$_E3eLs$h*x&U{qQrO$pHG05c-mcoL@@Ixs{BZU4t*Onvs=7+{d#R z=f?vwI_MGBZd~a1%1S;cOH5nG=u3|6SwCzK6HPds^vPV>kA0kYW4$Gh6oRedZ#W{I z#~zcmXP(drR4zzZfxWQ8#Y8S~VsaV`GmW%OAqF0Ddq`GlZ zfPK9VyP0W7SBfe4Cn@wz?2BNVq3_YOVfgMmQzoOoNjoV=6FyuQ^aD}YLA3X*%~uxp z@iq1r1{%7-q3xUWp4WcB^d*eCXTQQeCXW7wQH;4TYpI50jL2mn-OVimzoeImx8^C6&sc zy(J|XPe5@=#G;a7t;A$Pa;cOIW>PYiqwkVOJI8o3H7qx_7UULe)9bJ^82QeO8(PPD zG$)tW;MeXh$(_Arxx2q2&+V_u^XJy(`GXC44l>YiM_#dd!K7y7m`D58iE6Zc+QN+JA@E|RfrEt+jV!bgKD(SpfIX*v`YinSc}|KC zIp7ff#qxw)U76I!7x4KDS`V>WOl``#e1s_@X0jg72^%@@z&hEq5jks;tPtGc~0tpG`*(V%Mtnm7m4m8CKKpD_i8nxTONt~_I6MZ%L8gnY)+WZkt>LI_Vf@<~iOKe8SvzBK zj5i6{n@Gvo$uxWrj59M_7@tL(?#J~Z_~Bwu0>pw`UM$KLv}H;&uUH?5b8zsBxWLki zb92|6s82UIWP5RgLaNk`T^JqakA|!!;gw~!^Y^SlisFN z(%o1Fhm1mJ`szRj7wwuXKT-HjT)3Qry*dyp*WYH;vew?Ee+|2vGPU(WYKLphZGuFM z!Aw~?MSz&aIL-02Xcq0-+J)-h5eTBM;cJW}v|1U&SX+#1n_?T~oZ-qK`X%gVdt#eo zTV~&(^N(oLwhdBz%(iJ$m0EB}$hX6w2|~CLr>qj%R|y{CIBeq<9@*y1&ukl`aNzZcxvM1&4&L=G+C) zFB2T1oii8%=R)UHM-23|vNa$%&p}vAc+1jFj9{Kf2i4!9&5^)0O$K}At=C?WKmV`) zO@8>}zmmWB(SMge|6!&68}~u~^&g!6TK?+~|Ht1Q{pjzxYW-)n!N2^ghx&W2TCnf$ zvlsL;DpRay26ahs8QAT!lmfWC?@p zf(sln)fp!uIU%XwFy@mHXb1x)r2sL~D_MWL#CsZH2zh0PX;(0C??OA!Hk=%43;Q== zcc5zPO>s7Fq06SzT~P$DFOVaUkFM5s?Esxul<5^}T#jh%sFs?iH>^&cXp; zZ5?P1*LSX%(Fuk{h^t-cY^-w;0q%kGaG0-b!qDBGms@9-<<7yH+&x&A=a?R9cSXVB z!JMgyvV-mV^pGs${+Jsrpe^-lx?4uWazd=(LM} z6Xu*aXNo>XXAm6Hkzvgr1&7dB+SYDiN)D5*aHf!unS2b+3-+N;n92lY8pgL-xo2uF zn3azNh1^=1^e7e@vX9w@GtC+vTF(Rhk|}D=x*-GF?-2xAAV??PfcY{Op zqoyW{vj}77FgRrTB&PplDy5e%tjoO%YZx<3S|v>hde(qLF5oyM1;GTu_XmeIBAw%h zg@>B96k^(J)<7&py<^e^|!i~qtjnHC&!T;do-r~4Adg-Z(%wuFZl zIKiY76Lh!+bwWcYBRH`Ev46MVkSS`oB9+(4th9tvIKlCS6S7QM6O(yd^LbozMwrg! zlW=HFbXg94e=5lOKb%w<;~6CV^Da@8&F?^&+gA54}sgSJ9V=gou%(>9GU zt$B*S#nceXJGH|I4;gt#sK>~jTHw&bsB}jjj$=-r%tarpjhjV(+aE@M%hc8AZ*wuf z^y53IEbNhN)F&DA#q6I65#xS>0Vho=zAxC*BEjxv1&IDGC(5t`{UX%II-Z1xOv&5D z@vlX}VL8gEJf>=zZ97)zc)`dd3S)@^MBEp>7>67M`!GiFF~)7CV)ZdAKv#!&J3GYF z(OFY{?d{Uj+9usCEz;T4EFFza(ppz9jVDh@-Ld0x`sg!q;>Zy>_T?w#=;Kcu($mmW zk3TL?KK8hL`O(MZaq5vrc%^akTlV;VA5;po|ZAWF+4sgXvDm#oI9sdSzyqStfkAzNc~Ro6#OR(H7dF4vg0w z`Z(NIFMVytFdm+en5O|_cpGfkPALXkrQcI8nLvwVof?J1xe#o&h)gndY0f9nP_qOh zEmFw&C6&PS#CzMj&WJCF_8i7_h5Z|i_eg&pZGR{NMP(4bcVHCT@rVqJhh=agB12O# z8JSMV*i2kTrwA4C{$alqhP;qZiX#CTBN&B7xIf!1p7v+t%#nW~XTJRF(sA-J@il!} z;+;=P!GB676V0-e?}GjBfe#XZy&u9@8j*AJaXFYz%7vAT9IR&L+(u6JH}kT+)-TIT zDVd#xeLohE@m#OWIpA=)KzJA`gG2NYQ?Tc!Qhu3C`eFBbB;0XE`WlW(PyJKUeDVv@ z*Yt#>`c6qP)FN}}Kb8ydOPGlO;$)o)k7*|?^uu1DU_;EqhM3EQ@EJVMVeEmuq~i`3 zt}x>P?GK1i9gN5rj^o_m`v;km;y%Z{&J?1(Z3+Y# zfgFLoSQ7dZmA6~%J4&-TC^T%ty=v@Sd(W%=3p?6?LmVHk6E?DsNryb>=ln8=K4}zo zJX2Xt=g>zEz}_3qL5vhH$l5r376%+|I6e-e5sQg1+G<3y2^(?9=)$}LLxqNTtiTY; zWcnqY&PqC!l|&*X@pxQf(WoRS7dXswe9AC8N+meFxwR;_cNP?yT!KBd2OD$^e$fiX zmn$3aaZAt;I=3n>C@|cFw&eK>9|I1rp8Is*uu2vnR?Gb!0>hVa?2iM7{4H*9=oWwX za|heHy|_9jfffS}&k!7*IV~Mc=+D~FZqQe=roIJ-g?Px=_z|W9XIgK9;RwdVq%6XR zH_`Ebh4-p_L3?MipxWZ!_U04AQ(I#kH)0U>q%V@(gI9w?~L$#YOmcilc zmuOS1Xz3W*tE>%8o0T>$ZPv@MZ7x9;0$3nKF>BK;*zwP9;yWF1$mcg;Gg)wWb;$(| z@t^tM30yTo6WW8FyN~l}Q57a1^xF@18{vA9;O$9{$W1O8(*IHaz#yub$h z3`Ycr8hxnX%A8k1ScQE!mz05rW`TCKOok_1OXt1(TupGu0%CVJDj6ODfYxT1sfhG4o zVHW4vIe%qvi2sG(O+T26X_*~KfA>(Ll*W~|3(xl?>>!qIVkR~&LKwld%hNB0{gHx? z^Zr|}%m45H{J-Qc{^CdS7eD%`{I?(dmBK=|{$YZ{|M5`2Xgvgn{~%Ni*8aZh(}BZ- zWf-tVFI9s>C+d(BubjAL)CY}NPTrQHKU@>IHy#8W?lIbg6Vqn0SXaQ%7>6NFgVCm! zu-X~t3Y;7UOb)tMW(65nrEw6oljMv#q&Vr#$Qh;&p`lMBk_D#;3t5!9RFHbiOwKP2 z(kW-5>xdcnG2rcTb&mrM_i4EDcj5bJB(M$^!J&rt!-%us&^j*)4xLn`WpKzX8EUY01d8hbekH6UJDAV)x&7R@&u;^eijDa zx1M1Q+0VLVk83A;-ExD&PgaKm_Dm$9Th+kO>M%Gos`Xx~*0HNq5!HzEM_6d;Xq6T4 zI1!BAvI0<$Kn};S3gbH|PD&B}#{C{i1iX?AaUwe)nXq5_BM`1}4$8+&-Nr&9C`G3F z%f&S!l~Js-L;YG8X9Ml)*3Oc=dHq1%yL(06dG?A%bTJjvopU>IT(;mO&&uxHv=kyC zX*hON>Q6kQ;IN~mQ77UF4mr`qx(f;pS=)<|Hhc^RC(_-bjto<_4ktr0oZ{+zQ}fK$ za4CU9MjF9jp3DSg68AVkgQiS@QEj3Q2@e@%2%&#kLq9_2MboFS@0%bn%quvw5r%uy zA@rtW<>3rLjyL?QC{5&TnoYl-sgJdTs2oBl5v*sbsy@Eqr z3k8R86uHvUh>m7TujA4HoGeaw!69Z;2LU3Z%SO^c8GxfyNHC3;U!%wvwVLQ_l^c7j z^5(Ob)zl9JeW2p*c1&Teox59gcWce^!5TVa5;5Tn96E#nzxDPaA> zkPM)mp8_%m8y z4MM++7nn-45BFe~g2RcyfUM4N!B#|){zkO9b}6QMWGGGb$`I=yM%vM5wJ0zQ_neW0 zrx7-7yG$~oF4ZTakq$|Fo6uG}(5AdHl0#e02l3e+$;NQ)J*TD5dq!e0v?aXP>%(>E zsgq!s(S{iRqg@hD_DVL7@qG~Oawsf?k%$bAM`ds_DuoF=pTu*5!`Xz4&n0DI&WSo4 z4@q$}AOpib8H9%McpUGY!sn(&BltaNKi#LK^~4vY@#$X|Z{wFG(|baO!VUQCZNiAd zwPLSqjd|f;1kvY5(Vryb(n?k?t>@(YI(&|;yc}!~$lgXlwpMepyp)#N>6nb=dvVYA zX_`{jyIQ7C!AOUUPo~&E#Cj#&+a!_p(-LYsEuO|>(p&$u^fW$&`{Ws%uX^|e^)eLX zZ|Re{{)o&lBZ0HP$VzR76s{fmsgY=(45N=440TH($kfVxuwmdsz`wBS58+%wj2=ue zdeF<7QEd{zcoXVt!+p|*_J{isTZ*+)E%YPU<6;5AJzYG&$U-h!s8SfO8PVQDf5SA& z4m315oSx6Hhob3;Rn^hc?QP`%1YV{k}N_=+Qf!|KnLg!k71hjt%5P%c* z8g&R;gA?~mWolA$PN;p&IfrU+NSpV0*uyV4@bJa6j3~4Kaamruuqv-zT7xV&tc*5f zRGEc_j2^O)U~b*gc^BHrgpG3w5O1!*w$_M4*!m7Q)HIg_4j%&!8Fff$#3Ae^Lc`_Z z3~Z-7Y#M??e+4*HXh^xhAxj@z+r)XewPbrEnw&GCUCS-hdl2SDIa_#)|(8bNAiFDpa0*F1&4qB<9|r{>)Igeq5gLD5F9?#XCODU`(@MT?!jnf zeZza2Z{I+}YItbDAt!DX8aflVpAH=2IE04~!6A(i8YdjgnCqTKAqPqtdK%S7gC9-- zYa;E!5wP%3)0R4`b~vEYK;)pwv>-ZB4$*+6;mXN#4z3)8wyTz~ z{FxEe&NLj1l7^t7Y)=m!(pF8u@t-o%)I$zo0tqcZ129+to%#I&lc>uA%j z&f)P?F)PD4rYj9fBIJ{>w@=*Q(AF^g+XILE96w(v_oQjHY6HUisWvzaP!9O3281CW z&Pfebzt74I5vx`Gz2>{SaK5?f+-wyZLOu`9wWnLWUdV^*;O!9~EMjkrgkg1oLmXOep=}KqwF_YszgV!8z$Q67vs1+WR>+BOp& zTs&f;4HXPROiRir!&eB8E^q3V=}HL|OOVh3hWh@46%`-bG^RW@zk{nz>5y_fpfuVL z&LqbijvW*qbLBP1Aon;#2zU$5EytW&9D5vSc-wi*$iv(Ce|*1=KR5=*Ejrb@VwbXx zH)JCZ?ZktPI-~M7oY>^9JDWQUNe!0uV3E5y|d+lhgOU_wBT@7>x{mH$M;}I zya+qumkAseW1QUV#(3Nd$Cgem<$yyMJhZ^jLc?0%kZF>1@`5RB6&%7YfNj7Ui&p$C z+;Tqw;tcu#PJm3H?-)f}8A4xDaNr?99@F{6d|Y(VQ37sutm?xUQ&zk7UwjY2VJhfR zXgHLPmNd*7ocIoEC>>T6@qL3y!o`5((VtmpX(ArGCF<*th=)*tQ9~^z?I2{L49!^i z$>W{*?N;vn3Jk5>sZ4v($5VK$`}IBU&)#3|@!UO5yXz8HkL|tK$GW#&ZB5dFv7oJ` zL0X&Z(N61B&5dWInOl8a4>d?rL!(iBqcqkz!ej1hX=;{srd#c3mtOq#KKu_4{tw4I zWj^OzKZPBSBBA__|I?F5W2LZn$T{xg#H*J0ZrxljwX&9GxTq!8|ue6U>x0_`%5dto^jl!bo36vG$~@%j+% zgHg2qu^dx`cS<_aDj^)B$8%bNp+A5z702rHG)fr9O0lkC)+haWzvKr4QXCD-@HpD$ zWK4#qVlp%xlR-yCXk<32;Baz2DN_W9j6R%1J03$DAHnB`VPB7hWPB_vqeZ{|*U_9u z(t!r?wHy(D)02|!IVB_bU31wkSu6I*YLW1;M>a-0u;)YQR}yk%EhksE2ISIKK`!nL z$oUO}w30e_%T25_DSLwGIbm0XZ@&nwj*=)(EOxxzh|^tMU7uSFv@ zBAWi%fqvXF@(*G?)G)+|VN-w5i2H-OpbNH{m-ZR$G(3l`jdFN^2U@5{uL6fA+K}L_7M%MeaL77{8Z}rgz8{~fko^o^S72!0=j^Ykj{%32O;^f&m)GYd z)Yc#;pM2ba!!xHVz+pDZG6e=4_J{qF^7lvzc7Gw{)w)&$h0MxfGjecCXvhde3l9xA zG^t7#@@CS%6m zE>OM>-47gUE%#kQK+dC-WkDisQ_jB-9y0n+!QnpaXV|)Sp_`_pglMO7^4|g-ZV7k{ zIAn^_xe_?My#afkwmp3SC+g5d8h$)DWUWJ6?{IsXzIaaUq@|&>MjTGVCSfXN+B28& zzZD!pgy{4mbOE9+LWJLe-*?>w53g@Hpc9|tIpR4i!9xXrCX$oUS|%ka`dSAlsx9t< zh93tGX}g!;A?(0Xy+h99z*g6}9G3_bIiK|N3&$BtRq6r2Ayu8SbZ?pf$^yi41mXdF zyz}t)=&O|A;eEg%Wx?Uc$qk}Sz5B{2LwB^GEi+US{IyRl=d*X<+YubH4lKbT$1zXK z8R>0ijb-@P4mcz*^tNKmCOCw>ne?*0Vc&hhAs67y4#Z@RHg`z|9BNh{M;b-Q$3>Pa zGUY%xcc&#N2oBM|*vLb^rX@q5HKw?QU#{Q~eGJ|w#yPc z)Ha9qGQsQHudtASuassK*Ol$pzMt>qu_=C^^-0SB(WINDE<0Pd+(41KgtlUQrXk$_ zxbOKroO_)noaZr2|Hw3@`<$o4IbazTjTp?L&xQ}gg;3*(KAFk-b?%fAhnyQ_zpL4I z@LMfRB{<~yw$X}Q^kf!f`eZnUYZ&3R63Q4{XZ0h+6BG=fGAcoRXx$23YgxN@L1(T1#J zXu#pxXdGLLD~MvkXhRNu1c@Bf&%*g2Fr--PaEITCfl*fpVPIs$A)(>c2 z$}}`+WN<|u!Ql*?o$-tV4q4;yW5D4+xJRL3F4(EY&;HVwTv(fyi|aFTk%jp2m^!~Y zRgywQ3IqNA^0*NO{&S0mwZA}(9nx874^Bia@inUYGw0?jwLb?VV{SzDXGh?ynR*je zd(aMy`AT8m%n+Otf<{gP49eytYnTk^s^XRLL0KX^95FQ*2@EOLUu0dz<>Fje(sWo-a8hG_uY^4w2@pzEK|=+H-JRlPT2c!Pt*XGGmA4ZHEF&wbMB`Qs zT;}1&`%3EJ1Wx7TXrPyqxSUMkWNMXqp+3UE2Nfd~2+OKf28M?rp+~|zFHp!w;kmP| zrJ$Eku~H8T4h=kn7_A5C1Qnk9@IDn&(&4!gC!6q}AU*%MF5X@T4qFmXWmzz6FaNt+u&dv&q;#u6IXg|Y)vOHXrrQ(1@I@+ZDXOjYEw#G|-TfV5$KJ z9@?nGj9*iy(4d}W>M>mf$yL>1?VD_kLpn4T95V9lEbbvjJ)2Y`1|Dj^gvS-&5MsY* zQ!R08z#%6b(2v8}S5U~wjok$}c19Ke+9*Q;LjpjJHe{rkMjLMGW4`7FhSc*+%jCRY z)0yHu+{d&{JidX4WpK#tT>?Uk5gaQxW>_gagu_W$cxY2+Gj%D)BSOMk_)l5`5&w_l z5+CzD)vLD|U8qjC1&EM>Lr5ns;Ix(CAssY0XRHOI@R0o(&Oaxrj8mDybup_g83DS5 z@q*WCl@l#osa;GfIGi8AwJ)&7WkTD;L^g&t5|sklORT#^5^$Pt@2|_-cdyBN(EE3; z$p@;d&=qQ?H+Ps+rLC>f zpH9f;qD@u$HwzBO`#EWC#%Y2>MjH|w(z%^T`*oFU2^>QAOI2D69BR~I4RFZcKrK7J z$NnZpBr>Jx6eFnn<1&JFLYT+MLq=P(79nebaT4A{=vg4vDm@)kTS=ZS^BzWmr$Szx zpdZU6RO3ut$@*rF#?UUu&@KtJ6>JkECPOla{%nBJ-LO+~Xs;Ui7+}3c);?oxJi-Mt z<}sp(zlEwELn#Xr%y`Ito4>CN83+Px#GzXjAi8D8f{M@INABNH4G-_9J}bOmh0pdn zTPqKaO?mM@sPbcuVQyjUgJ^T`v0FYyMV7`yjCI(0V4oOuNN;DmbhR~0Yh%4Mo<1pO zP8^fd(5d6k$VrS>CyqWP&ph>{JbmN|dHP95PkmXQdHRSPJ9vF%$PeyV7^y0n^$Yi=#M(}^eab6PbCnVN(O#1uINV?~w3`JYeFZ9Y%!6&N& zepxAaWj5UjAD|VsLz`p+xKF*El7PJw#r+h4-BD5xg!?Si!`e?wBWlG6U~6-l_Rjl? z{R301TM^imWwJd49lO!mXIzY?HW}L@?=h&95kldhi7YIu3=Nqrg22e!mlW??-t$HT znS_sohMKAy{YVadS|J%k`#}GTzK;Ffbe;<+xR3&U;&8vLzz0}`*2fE)L4tn5_7r`G zVcDJ;k+sP|nHor=J;x;#jY%qz)- zRoblWz#VZ&aF~WYp7GESm4Ku*I+Oh7Il&?PcGzU5#vyDt*aw#!SY{{2DL%dgKieH;Xy9QbIOLoH z;h>3@Gy84U4%*W91BZ4Y9)X@496q;G28T>dN?=Ga0@2pvz6pC(K@jIxV9%=7$JJK0 z3$O`!2!3whH`p|#&%)LsG^_~@2|gE@D%6|{+O(XzurmHS9z&aG)3lcuacIHe6z)?l zrg~s-xW$yE_>Bq<4V2=!(eve;OP({Ey41o$%7Q`zNe=72;LuSC9ukV6EigJvK@6i0 zUE)5z_Hzrz+Ji6P*6tWf-z0@8NoxT^x7_e>ce1R#DFP}363#|#Ts6hGW z1c#-xq>%blxOO_%hc>3!#t01|n*pXI^~>m=J(&3ZTHtVJW?14baLDXFoKvA~$%sQw zn*oQ+?xWxk{$u;~!nb95QbNN6_-lKU z1^nL>`dggWEY2@{Awt99aF>k0_M1w1&@YE^UXt41+K5A@Y-I*F)_r7cWjkUvT&jQGfoU{~>?=!-x9C>LECMsGnc8 zfZQ*OO5l*G+}zNx0v_tbEe87?rmi#59yBUw)aoQH!6A%~!{BgECv0t+IEv{??{ESa zpQk~?)iF#7r-mIN9Swav=D>RnM(nv647LyluM#+9I)Twt863iRG{!yT07M%4G((~~mtkkD{@w4Bz0;LtiFcG7+qgF7el z83{x~V}%1P3=jo}Io3N1l)+)RTZW<>G%)}t0ws9J8i$2omt=gc`W{Xoo`=DId2_C& zE^W-J3{0FdT6JkYjW|j(+J2a{RF`Ny9TwN%M(g(g4+; zJT6UVPDy)nz4UgpIPHO}ADay@gt)>#+SeutPrHIcrYg1RQ-%^jnd~>Ks41pm(n%0b zh76|Q#9$vB9D;=@LIxP)EI3XXco&cp`x-Nbu1v0)<%wN9ZES*UUW!+QjP=hsxPl+u)LDiqWdrG$nAj)aYjP{cmI z*VIAeM|Pi1Ksb{Q>X>n2LMJFjaBdxVsEb7M7=!3o zvi77|ZON6JI~X@O2COl)(=aDnIQhl#fY&`Kb9sW}1g?EtBg%%*|EF>P$GV&4&cT+v z^W1fL@9uT^0Q$<^8_+fR@Hyyt>iQ?@D=*X*KmP%aQ`S`j6CuLG_wJZzMU(3Eyu5w$ zpac!A2oK-7wj*y|HQ?}ditteD^sLIOuo(yrUphM{_o#CVa__(_OuD@}gYnvc!?{96 z#?uJ}hlPXzhaD~L(%RfEEiDEdHn$jXxV?I8?xE!6CFZ%9MBa2Zy66Kdy;K z;UU2x({fGXzMLcwOhGPqsB)qa8I|aUhDJdXaR`UmOkBVwC??Slq+|*0Vi~`Izs1P; zU1&FaooU*bwrw((kWq|jj0j{DU_Q>2&0b0PdlUw+Z}KPzYn46=4w;UV_5C_n^APXB zxW>LV9fqC3`eEpgCJPCf$|q$SkEtoxI=}Y-0RQw!L_t(&f}qmTI8%}lByyrK9nt7m zg@`e~6rx_Ojm8v+DSx*lFdjuYhG87^8r8<$@*dbE|qm6W>Pw$=CQfMwIsI^=@$@A{o(mM(R%=mxj6%(%5iHnj25+ zz7}ljPaVa0c3Q$dw2ijo($V-7{@)47#yVvn-6w;YJ{d2yln4fjitbwVSsbu&H%ha)+! zOb$nIPj^cw)GVP0{<{MXgCW>ZVf2Af*uNQ%i zVmrzpFd1G2HwFSFx}*6otvM3=<6PDr5fh{W4ZNV4;kWO~j>-cu*jsZLqQ^~!3| zC#wTc!6&nL|5&(HvR*DkYJ{Ch2#;%y>l(zpP^}UmgxpY$_YQ3z-sjd1(zNktH$mJd zJSG*!eH8BPhI%C2hd#vP*mGQ%MSu;J!Jm<)1y;H3JKC%`Chq+ZY*CdS$9|sQPk4#n z&Ge^G7&dO)-=%e0Gm&1&#l7hNajjG6cXKiH!=_J~8^Cx8dx;RqLc_JOJjM?ASCfOX zH3eS_V+k{!Fj8e>x+t^o5sI0lq@t`*n3hyBQwE2OHe`xY?2E_J4m6BQFc?K!H1IGQ zj!7b#z-N<^PNpP{aVZN8q*Aya(541l;BXs$EbN?{3JxcP_24$}n+OkYY{Pab0Ylh6 z7q{dkjWjfAN?*LVqiITOMI2IYaHtRu+X_Ia!v2!XzE`gE{nhXL^s?ZvmKX`iEq^<= zS2h+E9G-dlNjd$@QBCR08i#!yZNik&tZ`TdhrSAMSO{@^g&&M-ueA;_{;-BQK{2np z1&16j=WWE{02le1322Iw{T3e5Hr90hoF8C>4xtd|6F8UP*m1`G<-7xdl@o0URf9u{ z(2(N10_PO$f@B4U+(&50{c2}VmR@s%!;0)3*gnscrLbXNfc^WTBicrquGB(9JSQ~d zT#5mPqq;y_vujYBlckiAggT56V|qz$Z_%Dtdw5zO-*VvLP5yR*Ljq4OAau^d#aiHy zwk_u}pv?*R*&_xVF4q8uOjSx?_(|Z-|puwX|&a$ z*J-~S8(sk-;mZscp*yt`F-GaOTHOD0Y9H{(}Csrs2$mbx{Hz zbH6S^P#>=h5Ve2deBdaf3$tiD1c$biQNOk&jh02*)3yl_BC60X3H`LaXq(HSZRW9` z;E+RM!J=72-` zO6(`uXYxNXNP}~(goX^>;JoW9`e0^6nxe0hK%eb^!(rHW;|bVSxuDLYZsT`Za7ehi zg7dySz${9pzvlU6n$uDERzvWuM&M@+hI=$%f(sG}4s)SyVWz0T{(kwh|MXwvhd&`S zdk7AV{)ha(!!W^A`IQo(AGI* zdI7F*vlF~r>E;H96rWpzgN83*W96hT30=b7GgPr4C^H*g@B+t)yGKt0s4HW_c)+-`3 z`u=VFZ$=st5?5?w4PRT`1!a^68CreVONUa!I&{#_spo>e@;)L#)T!2GTt@F?U9F_xY z&%q$FH54eON2vyfn-i>MLNHj6#ZiJo0z*2HM$4Q`(6mLS*5b-UQ5MGrw6@)Fe_XQh zutbAC33-{`vPV1?9Co?ntmdb5QjQaN&g7-0X@bGZiBKA^(Y_9e^>s>&Fv{C0316oq zIROGO^1_N~7N|@J4l<0|RLFCG;d-ZFD3#SGNf=MHl)$kn#eH7BPyRu97&R6d(Y_`6yg9 z!C}O!b$S>rq;(DRCfaauIIDGf6buX!ATecW$bbeI)6;1S4udenL$Wx)h(o3$VBuJ#i(W8paUY}N*D*$| z!ZBs7TSkyE1*NTHH;Z;Lm1QJ)Sc-9<#Cw`0($OH#U)+`VU%V+FJbzQZ0)6$loAR~i zZ^&0)xFKITBnt)2^RMD_Uwa9n#TyP}tOSTQ^6=efnb!0IbRh5E zIw$Wvd!Tyv_Bna`=2?0B`mVfvZCl>Dx+QO3*_1b~5FoD0>lfGL)q_R32YW%GA-Cri zCuGCq)&X+p_j3gc>8w=?LE zrk(RpR!k;x6wgakQwWY~6e8=81!NHIwh-k?;a*)Zk-@mf=tHJ0Wq(Pr?xD(g?(b^YB5=e$zIGTgnlYJux`m6ih2!y<&av!ceXhr?{7t4FBSB$fNp_!GecX2A z{hZWtn9M7zr=ddTr&&@tNHu5#QwU70=^L_=GI4_KV?Coli9=-NW z(%IG^txcz;q5g!lG-K?-^Un50?5~&3);hF_I_Yh%!~Z!0of1z6)Oix;<}_@NHc3Y@ zo&_2t<~=QA{av!Zl!2|sx>kPNuYDMkylD45G8XT`_}PJNj}-hZlJ_;rOtMEVV4S*& zesBk4)?~a-^1%)%#Cl{X?dor+-M}k_rkkD{`xnCAnb9jugb3Q3ci?~nl8&_6v->m0lWiu!9>lv9^P0HwU zOhy)>Qk)LT;HX!|M!YgV?w7Uch-}TrWqToxJ|!z>m$R}t%eLMv$-a}~Ydj*oXP%H` z_X!z~H!DD#&2`Gkh(|VXtj)Qw>@3FQ>{?3pH{pk@p?_bD${b!x$Iymak4U)dgoN9U ziLdF11e%{#CA&|_P`FhVvL0E*dDt8b%4#7flQG;oeXSDpwrSL02=}SAg>1X7ycdjW z?Kkh|XJI4RRKAWB{#jV4Tl3h|3x)8UDy0IhvZu<6yC7@3-AA^)2GDjxxVKp&k+l@V zP|OEg3H?MC{!b2l>p;RMgGoQy2(EK~MEe|OXIL0aqYuQj)xMF7Jxsq%zraKr4jOPc zJ1i{cust`dHPZ((2}wpGl8UD^B`G5eHD#$2ZOEF2v1m#n;e-OiU?2+Hm#IplXm@c1 zhsk(C(upLFk$i0i3 z(6+otaL6sj_>YS?JOmI`1a^)TCgOERuUvD4{iQUg52#nK9n_S4-TfQfpR?fb>ZS#U zUzXF)JPq6Vq;xj3FKttZ%(~=-L_`Yk$FlHO(t$p$aoCTsD~~Z_kl-*G(99gX?gWR7 zHZ-Y9O^rj^O!TAY3NehE96$Lu0vjp|!_c88kSDVMQNuZp^BM5;zD!WuTxeN>hG<`$%d_o`;yhlps-fV6=##*qudPuc7(=)~j*GB8=x6+} z(U{?f5r+haoM*|S4;hTX=Z?e1;35Rr@dSr+1c61)!C`!c{Y}vZUmjw4A_EXjUx9W_ zaL5G-xvFN4D}G_>H*)F_1CN1#_Re~G?^?SQ^G+Mnrf9Kh%Jl>~v>_Rv1q zZtVN2+pfNsZOeh)Ixorge6<3d;#a;6Lm&#S^m z`d2y!+9ShUoQdrqOE`r+3J)1HK_91>@0TC^$N#+sJbS2z`o-xXIDDwjLcjFjumtw1 zz~PGyB%Nb;Ty5Kh8{4+kI8D+Cnlzf&X2ZtGL~U#~HX7Tu(b#BgG`9Wi=ly=q%>FaS zaqsJ1*IMTSl?Mj{Z~M5U4>4t1j65Jio2lvoKch&K{~~kL8-v68#Qb`kF6c0f2>J@0 zj=Inxdh(w}{StzAQ;6^7^jl?JL1%#{0yu5lynly6dMe=$wnNd2@!zz82yua&ZYvy( zjdd@G0JY{D+4toc$BK_+#gATi5^+Qgkd1@zmosQiqhE)aZOA(ul5j3I`1t5-oNO`X$z$US%o^>en3q_IH>6 zmFw*|%$w__1=m?SySd1?gmE~ysIWEXPm|rxB2&pV&{2+#n z^gz3LsA@5!BU(0eR5%-Y%MQ>I4A)L8&f2Q98XhPd(T0i zsnUP64vbc5&APXvVUT>G)B8BGkF*2m%Hbs3hy>-4 zuJo#eIxr&e7c$`&aHU0m%tqqX+zK<`Ci=LoGPIzMgeH4Yt?Fmoy%QR(?pdLWN9pWL zpTUh+rjVes^y;ekH(!I*0h=|@1e4TG4sC?4{xKY)w6s1j3uP(vltSur0}PY|-uh93 zS9E_bX%uB%!*=)|MIgnuI%&rRRq>X|%XI(F6U4Joe<4NUQQ{D9do1#T{Dd%XE%mwl z#YDxxXhe%^Ri{a@5~F=``e6$V^T0eve-s1H`yanbGq^dsr@V9?m&y72)a2Ckf?C1B zyIh94f1G2f%AHR-qoKHwr3%b_rvBeip}4QH9D{Opgcg!Y<~>wBS@POXf~GmSk^E|| zh)f{oBZAf(stwtxp#yRMK7z}K#{jdI@P#u&!RAQLUUAZ-tsJn>@(xIaQd((f0hiF2 zbn6e<(`SF6ZRv@EgY7UMmLR%YIrthtOV*4Ox^VHh5UGbc!0eZcM&V3w2E7UoqT98| zB;a5R+N&*TBc2%)}KH469-_bj{no!j# zzB$AQF8pj(I$H~*airI~Jd}mnJw${&&-^{%o;J_i+|KVh+dZrm*V|f{&sP_dnyPGv zbr*Q|0?A$>n$FwZum+_y0+cG`5zx6hS`w6VciN>?|T zyTL_9)v0dx6VsA@>R+{jeP;)h0gMQe2)25z50{WXTY!aD9W*%FEF?$3uPHaI<~N19 z0DDg}`zxB>3mGGX(@rrz0RF=r0#63Vx$=4$GKRi#aAJ2%7H1ZKivu=Zg!_1e+xNvR zAlf;xuAX5vFe#ThQ%??iqD zc5;Gln!QGdqto1hn>n0@zBXXz_{31A@Y2hSZaRch-%30F)gdyUe3C01nm`<`{uRAD ziRtU%hb=0abiL}R?3g3lzuw$al7@@)B8ndUPV#>v?-vhBbPV&|vl9L2LHGm6br1Qd zIHTt~=X|6NK!ah_iFL?a%Z&t8%tF!P~zPX zx6r4=v-lwID!t!hBWrYv$MKfhV{m3H{ZhU{q|A)*FjN)nAe9SgpHh-Lc<=Zk1?n1w z;a%vs@m%?$jyRbc(KYPwM%j;lX#&Kch<=9-y%=j~EL_#L@K7={AE*)-PO{UQ*)q{F zFIF11H73RWMXTReU!A-*BKnOy^gw&oQ&P<$A7bXjOKncDUH#dlR)8ewwIB8=p8LeV zTyIGn0E`GMMc1r(sN`lS%C;XD=RYgRP|Z<_)qE#XXdHr+O8g3=Co*L1b&bc}9*;v> zkX`kV5sXxn8XRUfe$IDAq9n=0^f^|YnZ0NhZ;JxvN9})H8MS=7@g1Bm^yxd(S|n!~ z=JhqW!Aw6%lmW=S&7zN`|$-R!-fQ$y&V3} z>9Zec_|U-MmQXo-4mK`o3Z49pU6xWqpN`7u;N~}+lTjix zI3K7^s-7+Kmp(EJI3Y34-@X|nvEnRr(qOXIZYmLD!OR2;T3~j7^2vuq-%<9QhYBfy z#SLc$jWNV=#f`UiZ~3nJkN5T~{*PJv`$8UQF@oFcN&9a~v@^Eu-s+GQxSHA1x4_^p zqxO6T86E_?m>G2i1=$(-up&Ox72n+_nfdJh9jAi}agoeoDfrm1$#HV14oQg)qN6~Q z2KVHIf$D*vXb4T1?>rw+H%u7tFEux5kCB6Z+KzXVBj->i8PtQ}k+K^W$n+3b~PsV3}_QRf3*Bly^mY5!Q~gc0i%`w*?Oa8T|>;@(8RxZ`y?TNY8+? z_(~ctZ%?ip5DL2cO!IE|d%cji2)7#&d)MJ4OXq+NZo=G`e-P4-=@?*9pm7zd?7nDO zvvl*e2ODhqpL~I#bQ9EP8MIMcY~8mQapHmBO`Ivgp6LlTo}0cT<3%nkVAS!Fd&@?P7cif_RIUeRd(Re7UH?QO>z1;s0vbr1;=`Mt1mcd7=tJAZ* zmIcPA{8-=f&dmDtXZQF<0($nfCu-ZQf1elIO}>41u~@~=hs(_=|6Uo0MK)D`=zvP8 z$^(nug%%ommDp!OmjnM0tdEi4LtRXVZd_(Wf=VIg?zCj$w_i^99L{?9Dd=%%?&i>jjuwt7($6i3+BDMqWOOhnqOO-TLj$L zw}9ruc-68N+zbF3WNCu(z)d_yXD$UDBdwrmK2-w}MNkR&@Olx@Yd(^N-C2~X`1dg_ z+RaXR3WZ)1&z{(hg3hmBp;E^mZk%vu6C4F_&*FNNno#@j8H0fbX7m*10Zqgo0)wYy_mhF)0!U9YFU?J5*BlLjiDwq4xC;a; zO=u60X->*QdG)$|fw*GYUq6I8?sZGVw0deykR?cxWwRszR?g zdZ*wzFKXkhGBFap1XIq|ohi5>s3!}3;3+gr$kZLD@b|2`5at#Yf<1Z2fPa`$gb7L? zMwcHmQ41g#MTEPc)|T5#zJ5yj%yYAGM z&NkZ5lWe1r0GDcba4IsRA7N(v6prxb+R@2c0c!hpe5scA`z~>VPzC0+?;oZXScC%+ z7oyhMr$bX=Szj?s)evnl*m1;{*j!`|8D!x3% z==@ly%|yh=(Ok?}972yAM>ff!=bx4ki{I*35l+c#jz@Imw(3v&MlNl7o14|M~FxS87olgAywN}fi4lLxYiPf)WE^%?*+MHySDgV*dEes11GI4kmV>Hl;W3riyf|Z~|gO zq@?qDJhx~#%SB4WE(aiPz4Gov|G=PCM<|&7w{Y}NWDx%SAGHBdE&Mwt%r!h^1ufJ| z`GnMqRNXX!w2bX-0#&i0X;xuaVIF!~y)`{^to16cu7;aA-aoRYk46g?2ot3s4{`o| zc#-^b7GeA7KdJb4o)0DuQ);?4_OyHlTOD!tm=%~* zHP{_!477%{0)N7J{Y4NnyJYx0{o&-+M% zT>(6I;FDG?3ZMINf;|s=W%gnFPA}mO#16_0ukfrknhnp}M$a2$8XTeuS9u}Nty0g6 z7rejElln;*SzRpOJfPe!Ydv2JMz8)7u#JRFW+Y>rrN?7reqlb};JvuWAkn?LyOno4 zK58xes19isuEM-bypDlE&*}%6_H6YU;_n#adKnFUwB=J;NeB`l6&mbB2h{Ky>T>JP9V_y7Ku*61Su${v8pDOxt(JV*w2{5|yLg z9r!8Il_Cmy-T^z2!{W3`RXFMLZ<1{KV(sPMI{A4m60JI^jrH=P>q5goTtYx6hVDkB ztXf;cfh`G_yij&SlGAqedH+S0iH2oV}y(RgFFToo;X@63Z5G~2X!HFE| zO+l8#w~|Uj2Q(*5#$McZ^8W?>9{^jjH59I{K#dN3T7pQ1A3cQ+DhxXFp3wJ#5#f|P#BZ8pXO*q6hBS4;LL?yZ!jve-~G%23-D8QR>sFg){lz! zMDt?B4BHSa2TAf4Z4(M3?A?(M#AitV-D@yf0t~g}$fI(tx*D?`wVJ5I==B;ALwZ7# zc_jv^%-b#&xxV{u6w8JfHor6u5BcdzXiqk&Pm=Yd9GmyKq%i`2kl7_$)QdT~RYgQ? zy=f1PJh_W#Xx4Il#z|TV^Bs#cX`hqo^(`OkH~k6odOwkUV)xI?l9yVw&x?z5k>)y2 zXekY?Z(Yuq^klF(Mm&o=$>|f;jieDHGzo~|b7N{MC9}Y_+~mr~;Z76mb3XbDm*K#Zn`aDy@RYsMd7_N(40zTpw3@`{WOZ`yMB4?p8?t0-&VX9D11ngiQ1V{NLT z?xl*#qk>J{vNd@nJ!^$_6I=8?KXq#yV&t5MMD}p!?%ioGefJ?>^2p@{ai2!({^sc| z*0nWcgGcdTx?ZgqxhHA)7TsML?&zTY0r`i_$5lF_2O+p8F*$_D<1hYi4lL0^1dUVN zbsX6nCJ9T_B5+T1^O`1I7SCtn!~Qt77PSc$sW1;10@o2hUJz)|3Zld6zyL+i(P2mZ z<}MIs2L(>bSva~x?okZjl5!mZXG1>YS^@zQK(RU->KH9Yv9N+^g)(9_v`|M`ULzni zcm|67CeE1y`e+>gEh>-CY(;_Of;cpKs)i)|=>UsimSNAS&6~f>gb{(;#BOi8n+>4b#Xs_X1mt%%ShlcOjzx2Z7d}qA{$U3;@O=MBpip}A z!Xv^bCdIbsucL);MQi1;LCky0A%Hd``_=U8TC-}DEuYCkYnjMfI_-PCGSD(^Vx7txeXb8r&Nft-O{u0I%34QRc%AlbFEPBX( z#5Cb4xl>*S7G0I-1*UKdMtBQGkxMGSh*Ec5DeilN!m$EV%CzX=vgxPS%1tsGkYxF0E(UlPRa^QqPMhZ7-ru9v*2sX5DS z_hyW82y8Gi8X3gZ?xRU}4h-61A0Y(M$KFAza?3{-;yUXuW+yup6aJDKHD`+8G`VIO zNcD%WT}AB}XsjRMExQg>Xmc7pd*`mbh@oTBYRx4kb=TUdZZPOEQt6>O(OVQ8`;d6& zEE9~nph%oZP(WrYZZeN-AqVqB!6^bI$`o>0(Djm>a>Wlv9{#G9*Tz z664AF$-qE8TgFT=7DDB@6moQvjX`SX<>p#@s1U#a+YPO%a_S&sZeNbiD8dspZld(7 z0FfR204Jd_p>I8!*g~a%_(6|i_0?CM-ztk* zvYOVR&udv-;xPxIu_5N#<~@EPz?cCY5;0?(CW(TUyx9$T|2G$NGUhmAh?*92o2r~j z!AuAtL_s=!bn|G%BfbMwS2y*|dF8rqt=|3M+9P222T~qHiYA9My!4g+los}o50JA& z1sMavvga#F6hupWBk}`2g3+`i&H8kh!!6J0t20LaV&|xo2Ulm={)@RFhU;rA2PMP| zi>e%}NA3tm@8fVKg_nV!O-ivok|Y{^#ECWL{}@mjippq;Dl0@3=SfY=_agc0J$a-z zX6Jp9BQCJy5+YPg8{v|frG+M8v?~d{7ShlCgX5$OucxN>K`!OC)l<%InN`kON5)p> z)+I@$jgvpmeWsxiqzusO=Eq|6M0CyDXsXHmwwB$uM;-qSnK+(YO5zb~1oREe78Mla z7__eZ4vLMD!&srXAN^4IWfl&7)0=hE4ga3wm_IPn|O==fELm3^D_I& z*$CrtIUX)ywH*poUp|1Rx*rM;lR(4DoIO2A2sgI^*T~o{Dmt3-Vu8P4-SCmEc5|3rn6|dU*{Usa zsE#SIN!Oh=x19DzfXPJ0HcbVE4G$Na@FTaLl7%JIzdCeA(|Q1g{;NV&7(B=jAqE>* zz9Ql}#CqJ#2%=RA#Ic=eGPLpQGaaA=K|nv9Pk!o8WL4yqU0^EU5#%*%ayi*dNz;RT zoR74wjbRq7W>d4bckwhU*?L9Hjz~rO-~_X_IwCqnXc|>46p^z2xc{b`UZJMwd@1*Q z&-=ND(e;-3f_2;Qb1%B{sqtk?b0bdp;pq3(^S7M!m~)?p;OhtZwRiTex2Tsg`*w!+ zr{CwJU61n!r9RK6wPQk^Z|LizlO6P3&u^nwy62s=8y?4QkN>PA4BM%`c^tY+f9v|G zFVy-|zVngmW`yT)U{v$+<(KDczbvq-#`qsqz323c+xB?D`PLv2f>E28eyQEx=5^@Jv7nDRDAnsG{lQ(>*A=TGHLalf!>^6$STK{r7voKF< z3+z=JE>YDOY$MT>X#Tv8qYK(hU$SQPo*U|K9*SsZ0N@`zzqQ^W*+xZghU4(1Aq+eQ zhv|?dM$EGve?)L7WHs&2BA4IBpju%csVc{hKc3}@8Zg9GxGLJKgF2SU`mrQpIR)WG!z5tq40ilHD*NEPfXWuj{vf$u7xKBE= zu?sD~Z&82q&{<0Ab~rnK&Co!bS^CSUuSD^L)rGOo?R$>eTiCNW$_XMq2wYabR4U5P z()|cl07L z8PXA9tNiDXMQ2L2zxzk&qc=U}LNbn{6CIQ0zdT15zmEol1xB2CYJKp36amKYo_xjUKMi6eN1opUrB%{dJeH`k>arAg1TVF(X9h8-Q1K{-_5xQ=a+|=~a4mKw)a=Xgd&-AR!kNH^R?gid#!M}a-_>1G z3X$+0KC~=;M0saOzUZF68K!(v0~1AYwEi}snx(}kFvWkRB5>gFs*mJVgMW=Yh z4&&uUK}{_PbeXx|!Z~A$_z2piZgmB*TuROO_U#%$hAaSUP#1eSGCZ};&IK@Ju=#G^ zeLP`c^Ic72`Y70r)HV7+?7MdMS{>Z8xugL-ce}BQrwTry4x*-PL$U$@s z`9?0lya#9*)?|))RD!%a7)@h~B3Wstz@EZUZjU-cJ7N%EseJg#aBoCWW*F_@SM_vK zowpEzWA&S;r?YR-x*=%N;Y@_#mI?*-;Mw|y>I8X$RZGkDub<9*u*Qc*Wq3m?Rh-hE z%zsXuSy`WAUpFi7@jK-S~LrXED&9q8AhdkGlEA4 zGxiQJU>bYzBaCTVK1q|x=8zI7V3%SQ_h_^h8`_HRt0E#HB5KwBUSXXu+f1)a=%ykF z?N;!Q=0hh5bRw3mwr0QX>XU3%z?2e(iXQE~&X6I>K5XygGXYR5lvk^KGsW@H>q&KT}Dl#}A9Y9BTD@a>g(E#)Q+L zkQ?REqltP1lh8|}c}8&y0wQ=LEQF0Vjg;~dkdW4}LgtV&t&vp`NNX{+(#Z?3#yunM z9Y)`JeqBeLFw0C~dd*pJ!ne_s9`YYbI+D-$3$NAM8?AhOSAhKdH!tFS(594-NxUcjU<3PU3-Cg20mpAMxjI7ChFCJG9{$SuR9 z!M7gn9YWq(JUeHE5(gmyd&mYLue;jgvR}F#IV@6PBn6SulDgAaL7fw|2Jr6 zZv>qdSJC32O-hkaBP!ElG_;R3&vSBUlWd28|D);CQ}5Cb2zBLOs1W_$G%sYdtW`sVPZUulkREd zh#2J1Vh&m$Vs}`)E{rt`fi`j?noHH6re9Iy}F)$Zn-GEgxrWP_TkR zzGG*(bVk7McoQjLQ%ahNsy?UQ8Pb^9Mgm^(bPn}H8**F3R~YMjfFFi}zO~DO+kC}Y z8jj0-ioNWY$j{CT=w|R#!)#9sceXgVZhzjQmf#qYXdEW+RJ+7*XtGZA+Xnbz4 z8j%rLDLudCY<4|Qgj@}7Jg2>EHVMTEKd;%3_&mKe<(v=syuF@l9Ijktb-l|!)@?kt zz6{@YQooD) zs|^~A5HE*Atq?+i3<(9fs1l8jCAI)v_DDyz_HmVk{Fb&L)^RlR{F1i_?u7-B+ZmOO z&{ud$F68L|hsu~=!y|Ku12UmFYw<9(!PhlooI&w-4+hNOSEX{EferDRe<|~pW?iH-`J^JMY`?|3$ zEu221edQc1*0|+dbM)y{N%XD0(Jjk|sBOvEwy1t>9V`XdzB;p*M@JUDugVOkO6HOQ z&Mu#&KR=F|)l1eQMekyJHQ#Gl zM;*=!(C%3$DGf4R@=_#r4iwRz+QyW$fBP3AS}RDNn9)*CTE4qC^W+QNcRl**Se>E_ zX;wRkKaGt!QT$_O&r-SxF^fSlb~pXF67qvI=1^2A4_)$!FKJs~=Y^~T86}+X`4>?{ z)vGI+mqpD74;l`WA^whDY9Z%=p#^aUr3SL?k-jA?0dTnK+3aO^Y)6VXFVLhQxQn`+8O^rZGS*^q#? z!Wc|7^Y@*8^u*1Io;IL2418Fc*}otvoSE#`-eIE*C=W}!+94(}1O*EvmPi*(4|2`` z9IRW7acbsScB@m(n{YX08N=pC@APnFJW^xpo-OSN<~BkCjZ1R4kb=;@i2OM1;e4l$ zLeYaN$mmF@UY%2u2MIg`Hfllm3}WfV_-@N(jS?wR{&Ohw2e{++L0`gm`0Ueq=-(p%p5RF_Z^O_^ zB;%y%LW$vd+}QBx@MiL`u4>CEeeUx%HM_#qZ&siLk9NQfCZjq8#GZrmQq3Uuq+;@U zHmMVJC6&6^m_(^Z;XCZd{{28p&oTb7WF+Sc{yLMXN;+;gB-;aWo9}GRJA$KR%Y6^1 zG`N<7>r1Ig1a|}%`~)Y{6B2C!YcDV4c@6k~H9Gsx`|TkMC3UUnzweicPYf0xG?V0Q z#g^aro1i$CV+?((t7*S0_VSqq<4l+Vq{h)H7J|ZUZ}PC3#=38_0tUJ7z8fd-A+4C0 z?{)mpz>>91Y3jQ`PL>fqJ26p=g(tzWk0&wKKLcH!@NuU28Y}1pUyf-Oj(0axYGS^9 zXRYKd6MYq5i_I;lWekGBI$kO>)g%C&Q-6z^!Ps|LPC91F305y)40^SmO)%*DsTt7s z+ae1#1fQ6gQeMj<7iCR3IE`t{FPPY@*l_Zz7(5h5BAZCgNb2YMskWq5C*OuYCY>L! zNY}r#eQf*G7iT&Tzxa7Q$^A0t8{;wV)7~S?*pKH zI-l^ohG=Ddv!he|7Bw*e&DV7Z&NsYqvf7*H32k=WXcVLr8!ptK=wM*JOZ6$d=5C+d zh^n##E(CXSR z)XCpMK&jf4s2E#B!!0ViqXXT(PU^^l zXmD^4I+^WB`PQ?Q^|IuX)b%p_Z4|@jWg&!WS?tRk``7z$U$5dW^QY;Ja;x69Z~5L2 zn@_7{`dd!}5DCA_1sesO5oabf=n z<7Fub>H8{Wk^%Fb72uNxl?Ve0QGeyBuk}`@w6u{pOxA$VY&0QcC^3{9Gvyx!3`bW8 zI&^2>9K$Ycd#wEJpx(p&?INMn<(HQ)Y4fbTn~^0c2Auw`ir+2Gq({E{&BmA_4dXw0=8ix~0W-X(W=lmBC z^Bfk2$PxkU*y#}DJHu|_;>tD2z`%w-J1ghS+rDCjf@a9WFbW_0ET{zMbVADYLE36x zwV*=)PKw~ZH<%<-pD_8gUz)Fpn|0-Sr&b)2(zIC(w0Y(jNuS!z>=n1I0aY{No3!Cg zMX+dmM!k%JqJ3DPS{z79;g$3E9R)S`*?kC)4PQl+e1%Dapbhe9m4@}4Txj`LS9#<= zeV`uRuAzPc>HK4bNZAfdtspO@tekL&2}{)O$9fLA+tC-y#Ka|Ijqkr+xxS<%miR>| zQ=yreQfKjw6qxEICe*wIMtt8XjYYMN{V${mhA9tdM# zH`OQ`3`k!+isN9&;NwJLpq{hd+8Qjb65ANX3-h?nvp7Z}HuDIuRTjA;J&Okj^B#MD zOui))QFw_*eQ^^9$Z#sIL!n~eGuJ6zM9#VgFPMi8Wb|1qMwWh4DR@36{E%2#bKe6sEuaMa_}UdD6fq%~K~P3^ zm#Pq$gO@`kg8VGP-z@hm#*kKK-=d~!6`y~G9Jxd2*pB`6jARJ-RUku4 z3oCF8N99Ckc@A$miwBe!ejqxOO^GpGH8X+OpmwMe=Sda60ylvWx&h~kY{JFQ` zvoH1-f9|FJcGDyr_x|9q5%>P`YCrn^hOkjF^?n($k@${r^UeER_lm;j`S>c}+?(+| zQ#q8PgU;t+tL&lE<7&mei?Zu_BK!)$^{uM&sr6+gdOb$?ZC)4nay!lYR@?c}9m0ki zi962oMvTvWq~_i?@6gG17un9|BlX9N`O0<&BW<9LU=^EGG`+q#d*_OB`BM+ogcw_- z5FH&HT!@IJy#Rh1qDk- z6fiBO9}*65^@>J(hKmqz1N-%R6kzU~$~WzboyJ}A$PTQ~GTC>aitCtxmi%}Z5!#pm z=U|mde>Lrq#)e@!u!X9%>kBvCPub z{WV;WTCJCYJp4DPSuY)J^tK>SFEcv(+kM~L{YcPWjNVG*=xKm=OKW`GYhtm@IDB^Y z2`hNd_fR2u8yUHYzP*-jnVEz}|AMc*R^=dJPp@dKXxZ%JGK*>rJ`obn5aNVc^<&CS zrke~jYZ2}8UOuBl8%p)5NFi&Td{Za}GA8`GWMHHYK}|j{(yg<_+N?|t07|e6!@6rp zxVV?*+T>I=!YWL>k@dml)sFCwOhOdHT9f>cKx_ENyqNom@|uW^HUOr)nyR4+I` z15v<|kxa!hf$CZPt_m3~L*mE5F}DQM6Y=tRptxSPVGq?Yv0XAC+To!e7{};;&)jmY z2IzBK^ku36m1+f+(gSsIGT6lb=rTs6sWW3OxC@wMyw+n}zlf~Czic5xQm8@s0LKL7 zm<9CbJe6gLRiXCNHfAHTZGL!lm6lU1lbU@muQJ5dL2NdW7}88rrMH9!gPxi+SFt=5 zQwsmX?2-q#Z_Qx3pMq@>rT+Q{t5w{qG<4OmJg*?42iT(FZB}>G7`QK|(M|PnH;~(Y zgAI`uexhRQz0Ub|@w0F8RMcmdRm>p^j1)pUA)FaOkFiKAB8KS}`*HIWN`Q^W1)~sy(vHw~@lA6?Ec;%B99EBz@b&ciw{ny> z790KLh0mK5I4NtntepbPlTMesHvjhTQiJ+TH#W`B&w8T3&u!?!X@)UB__uO&7iyw~ zJ`f-}8a3!6+FHF%lLxQ{Jr8GO#vCHMp^xjq8;Q6Hh(U%_NIBX65Lb9rH~e}M{_EY; z`%Xz|1|QS6?Y;P*3x=mmvthW8kCYN*`7T?M6sFe>uTLi!2>dI`p$h!7U06NIt-Ww3 z7hM+Tnfq>Retq75m!uzX=^zK)VsN1jOGL6mXDQOkR^3#p@!xk1Tfa?A-t44Aa09rw zH{`m)gxLgi>r$0MrUo8#p5-Zju?GQOI;Q>ORUp>xnHd!PgKg3jO_y6aD9|q==1Z3z z6&ioBfAHL(BsITNfa{pYW=kEj;}1LWxM~wb^jF(R>;sE9%7L#RyIBV$*pg&>yk)xK z!~5{VMF4OG{eNdx;m3@jU_*jz3_s!Trx$#K21OQaP7cB=%>bacYd{D%RI9M4lQx0i zKzy?#$K8}9OMn=>aLOPu5QYTCY+`Av{JPVh^@<|z#@$($eHAvpRGxm{Fvt%2a^EsF z+W7zr{bd5-vQ5m>9NI>d@AD$RH%)*W{T2^g*rJBHO^fdjS;$aYwgv%dM&FlC9;hy) zeSd1fU21dH{WY3+%PK2;Ub1~Qd<5!RF2tK6#JF`R4K%>Gy*~c` zoDI*`8he<~{qiFokO4N(O4Q8OWOrns44jrsLsnRvG5xO;Op& zq?s3Rx5QAGze^Bo<7E4+3Es>m*oD?qnx^bE^stMwBps6x_7_9%O;4Z$(K7CiaQcf8 zd-HC`1kmN7v9i#9oqL6>%ei(yg~+w^7}T@Pl*{nfOiGa-gmO>!;nKbaw!D>PsA;@a9|A-wpJKQ{BbTfBaFK!KmzkCFhV ze=+8pyq8s?hTisd7VUE?Gsj88-PQ=~#5Li>b@9n0`pyf+=-ph5jU4(gzZ$d&jayJ~ z*$&)NI&om05DP;1j-!#847x_4*-vj#4f5fr1@6v(;^R^870mIn)nQ&HWxC5j@sNymFd#`~T9O`xK17*zPebkd~ub_W=#va#~O_4K378O8sQ z_pDO!=D-1LXa~QJbhs?jR<}(bC?{ZMX}0uQzB1==yG50|PB4mU28Dx?Q9#KNYAh1W z_%*EmTm%FbtI~+F0ia0#Q2(K*4E=RELQ>pi8W)pl84q~+usp6%)kUR*3ok2jHxK#J z7kqQO(`hK9G>CqFI?uCIREea*jR>d;pSb*;CZ9`0=WQf0~7Ku^BRpO->#<$%=m zc}O+dTRO`7Q5tALZRSoFWF0S>l#*1<<9O91-H;3w1m;H_0}BE>EJDYAZcUj_qEfRD zoLAiTzSA!sG^KvC(kSs*A)JOXVGd4HL@;!4L20{61$aVvA@l$;L|W+g8+`~NA(pK* zk>e%IvvluQyl3W6um1u(`q3qirC5&6#`?9>A+VNuIb(P|u=cCVc%zybj9={Vnr%~^ zW$6ZIhyZYe^faGZNL-l;XVhvQM`5*HW!v{k`4ZEDjma=L0+2I|_;m_%6@g1_|D1`b zz65{vcZo)6Su5|hH+In2nfju}i%_pP3en>`Ti@2dmYpL-e*ZLlcrW4p>%mvt$u|CI z*Nn2Shl|r9yE3YFhm@5Z%Q1(Jn^NO=00#HH$AZ_NsWDj@T)}0=o^I;nlwmU|H&nKu zt$I=EdAv^cI5GNjccn^@dBgkffk2fJ#m(Bn`G|ezWBbe93j4@;yN9Cpc}Mczy|AnL z+XZvgXxH0;?PJr1rzQ>Z`-1?*5Ma&}d+Y(kSK)^|%dEY+8?fzc^jk+wgiddpzq1zq%{Hb32}?J(54T4IgzR*}sRLSXq+3 zSv#O0K={NJ`DV=hTM!jpm%pGUM?HsNHsy?ce56xUECNGM%m0V4kEgh);3y=uk1~sS8KGS^SE{SajT=etMHw zZG-i>4h)5(G0`%D&LQJ6^3!iuC3p@Y&Qsm$B6)t|Y0V5iprKDe_VsX9CB(aoyi~wNXChs&fLh$f zwm3O6>HEz$PVFq>#EwT!J^Q4JFPfmD2UvPe!E1pfIFJ|dg#4HKCL*1h0wlCiw+DSm;cp{>BjzBdm{L+2NLS#3aOjBPCmxbnca+9{;86r zV&0AGO8#W@0*o!VQ{(c6C%mdk0-8MCsh#|;QTES9SWTI(%9g<*cfGYc9nNvA=mXHHfZ-F z|CA7(^4VHCvE!`6saim%@lH5i2hSdc-|j}-PP#hdW83z_9i6%;7w#QfJKT8L36e}| zKW)WEZn0^PGz`h*iu{YO;3Bb4^t}I6ij>~;w!Ra0(0hLRg_V4@YCQ=aDenu;0oDy% zgBK1Vm%3fuuc@hXxipoCc8=bL{%4xzs@&$!xy?=6%^_;lKg+R&(lw=wB4tayX5~-+ ztbQMwnn$ZK_%z`J%WKa<8APah^@)zFPF~zF-XTW|^%X1*BrMDyy%{A1_^f6gF#e== zW;E)GZ;S?+iCH3hY0yIlnMK?w_^8oO5nvN@Eytu%$RXR`R2`t8Q99zQM&#IUQI{ay z-B$-pM=!vJ$nMlOfj*YG+7=7vl*r(40&<-+9TFN!Yox>{Y;-yv`H}?^0FpDUG$u|m zfE`!3jT998dI>sMRF5`iIVqtkZ&?9Y9EqN8|#Hw z>VINw7j<l)BoauIOdgGNv0sHgM#WER~mhpy=}ia@7w1N7lOtRE$g&K z1cR>odpaxE_UQ|}!t>J<+cf<&uj&EHr%r{3){MA-s?oF^Jw0n#w<*cOsZVDjw^0zpK@@5S zk4;TC#1{EI8O!~%(XmylcW5-4Z{U}sb})y0_QT1#|EgbPMXw3Cedb#cMFmz=1fw2j ziK?vs=_Kn4eGZka7aK8mcwNgTS|j#L|CfhwuqWC*{@Lec3u3d-=Xh$6-bcSa$`i~8 zl2{=k#Rmrk@P!B3OC3ikv5b1Do?W(1A@8;kmdw0HgTDPt-||h-UrWWRO=7)DCY&!% z*(w%e*E(W1P26PVbxN}jDCOpoh~rLK(>egs*g`y|Is7$3%Jg5n*8%BzRf)9G4zRTc zcGIl5JWd3&3D~5LB0>Zr1~eeOl5*?f>0r?3!g8g*x0}?6qGIL>(cv72vYab~0q|-p zmib&zaPwKJeBSF+>VAJ}4@lUGK~+QNZgxII_p{CUf`sSG$8=NElztQRc~ReOe!GxH z-1cZ}YK2^~!wayY3oya8g-r*$EvAb_1O~BBc>9@sZ7!ZPg?CumiLwZ{&VqVQG6YbQ z>jcBw{}^d7^3qzJT{sH8skbOz!B6ov6zPMz z9hN{k7yeL~Ye(KKC%`Xy)m-RYTy%%f?xC1yQE%Jf^rwXeFPkAH<1RFGJsAr6k{!D! z!9~g>PdLh+pgBFklL`q4f#g7VesHU369~$9P@k$^a?;530H+k zvyR`(b>ET7x;szTvtW(1otNa^7#vH;}B(Elu!0`+_f zSAal7>`*)v1Lo8`O~G?+EUqE}WOr>yaoO=EY$<6#H*k3oAyG24Ku{1e|00g_s+u{p z5Gp2U;IG`BC<9OFxE&e)3rk)Cs2p?-PPvOf$LiVonxYIyvb)w$gaVNHJo3YP7mG9d zO1;`2)m{F_?rvt#@S}vJ zwVW=ZXDH~B*R}i_Q%}LVsuG~@&AhS}IAxz4p_X-1oVx)7v{7}HNhIPN>%PQ0~b|#`hYvD>`I+1(IFE5XthK%ri<*=uuTu#%*I*o&Q z(F!lnasK$z{PFqFLgUxOegIO`$4R^iq6PuU$Px7VF9OsnpX4Mymjhw_FH)idktIgj zA@dLeO^3>20L(5ak$xnO?<|DzM16-4F`W|Zt`CqFaSzc z?0Y9WC|+{~Uw5(iyifAym_g<76NU7bKYv;fv)kezDU`yQ zGKMw!JtrQ*4Ayd{Qkr(3f4Ai*T-G6;_%&}%Bn5&{v8fUjN*R@k-eB~}p`^?pMc2@3 zuDaop0>QwEefh{fGZ3j>c{P$`pjRYVh8eeK-cK9(eTtqNE|vxb{cqTwm1ukA<`k4c zt1(s-^0PcY_QHXwU3ZHb#N0O%e84v~g|FWAYf$b{8sVlzADmiuUUbb@u|HR?Wj10J z1+(W)IB>XoWW}blY3d6VWVZ(1=w2um04bDAWUw!_H(F<4P zYcE_?ef`C2^3hAzVrSmVEow+wz^)m}c~jeDBS>!c?Qb{WkQ@3-Y_~ zz9_%@&WrMUcx(V6Ug!Jp{_nkZTfWQB^Emge>z2=d>-F36yKml+-+$+M`NQ{Klz;W% zJ^43Zdqw{JN3Y7CeDihr58ru1{`9+Vs`&VizwwHE@7^VO_sUvHZ(muJH!rQo?e#Ia zNXMA{F0yd?Y6}h(9=gF{k&bXi7I+Usb9sV0 zg5Q+xXJj4kSpqc$h+G63)dssRoC3LX=zW8}J;9iiZOsSg~wpijNtq+ z;*j7l<$yy*L?-at7#+)foQ%!L8tf>(Pscr+yOKB_a)KXP!|O|U|2+QFF#5K5pi5Is zF#?-?yoZBt5zvhYSlh>+R+NR-d_THUjBCH^UiZhK_G#kqo}|8 zzGB+#j{}H2F2P~IgWm`FAwt96?q;o9*w#@et)2DK-qR>u-d5@HwMw7AwE`UaJvi5R zE$nT>_q0hYz-T_E1ocQBHfVpmSMnHZ1~WbxNHgNl0f*RE#Mm>8?O2klz`LawX+yu% zC~41WiFG|A{r)#y-I*xvwTPUZiDN8c{}++jRF4e$8f7TjhB2}S zc2uYI6XJ!MBp+{+v4U5MnQqC&T4gxXgJb$I?)6Bd>x?AB?b4rzO+4V2(IMEwd5q;5 zk7Uw)67V-kSI0@%Z70Of9R zdGuF5Ctvure=J}6jbD)`KL1bTXL&guUwi5$c0ItT)^Y= zvp(D(UO5Y$Uk=Odvw3;x%BVblX-J;CI3#z@56b0@6zsSl`i5?q%eBi$v_XbLjZzFW zNTA^{=yB}BwQPP;JWXGggttkfgu}hK{vNb%v|UCSGQB9Fp&K0fac}ef4q;yy_fQ0i zqJ1(|TMTU_PN5AY(4Lr%J%urZN(XyO%7nPss!#18tNw^ra!k8U!A>ebgRpIi39}$- z1pUki?3z*7HPm>2Les9(&KYE?dZuOP=d3*hTZoIPxX6woEM!`LiVMPMLv!)nDEfnO z^od-AM>}r@{UxKx=Fra(9MZmKy5!2*hFR@zw&}~MT}^Okwza_F+H_HdVfzytCS#dO zaG1zTERvB>Fd=?lM4_RlFQD6iFLVeT5*mISIHa9W4GsyF7=3kncR^mfu%_UUwVkWM z;VW17Ai_ec{X<~x)2J2@{CQRDd)y*8eg_<4++^EP za0uUC!6C#6f2Q}}K>OO{8~~nkUO-dH55{GQwi#22!+&3-ACK`*0V1P*Ci>CdVCSLT zDG+qTN%Spf6R&N+9$Clx*3e#8M$@tc8*mxpDIc#-;=5pz?7(IuNIVOhau2fGUD%e~ zmgGD?PYA`x#q~+KLSLDF`Sz?S^?}EivF{RIyNLH(TpdS$JgzW{?a<1CEJivin82~m z;L(;B|4|pBLd;;J;E{6yLvaHSaS!u-goh=+6!$mVn)UOo)X&FvC^#h0 zX1m1qxxt}r*BW`q{sQ|brZDA};E?^-HolL2Aw_`500|2XEf{1;2Ko}K=wBJlxuSkW zT=z3;i-{IDz>!ho%+NB0>&5avqv@~=z`h_j%)wXr(?9w5^3xyxSbp;3zmgyS^simu z@P9o7hYzBM;P97EJf}6l)I%|!{Z(dk7{suSHa<^ zTwB5bHj{Ipp#g^noW#a}#EDoAhTQ6)3P+4N=|3JEn#o-=V8SrQfM%iL_Ly01SS{}7 zN<@`97?t3VD-6$K@YS?`Fv@6rbIXZIJArS2VY(#NS)>IiXF z4MXzjAQi%dM?oT;p8ZtP&$!x990B>Ml`BwsTTCxUl>+#r7Bajy2W~r52U4W zg{J40C!s0XXZ69h1$OQQ3gjr$@>nR8+7yBC8X_ z(2%T7mf<3=gi()@5nCz@H`X12&^m87#8JuXuPg2bqd z_eW$jLs(}fw~9%wh!4rY$Ec79ssTEgjmnLUS@dli^7@5U6>G1(LdOUW(~J8{vVp#W z;P9ynj@}Q=5cszIv%EO0@Hoo z-kOj*+mou>8%%>UhR2LVoN?fxT||O017nA#yM{Q~X2G3x^ewa_@YA}v98(kyy1-x! zy}&e2`^zd#Jf=z$4bFQEwB+lv*oS_KlLwp-fFosA5Sxhro^PH% zI)9o*27SF<4N9kw`{?*_5eX-wEI3raL?DE=Jqs}^m656z9Cn_3M!bz@WOcMCZ(hG7 z@7}l|@7+9*_ii1?ySLBDd$;lUS)=#woR<&oUXTy(UX-sqcd0^OeV)23UwiS2eEr3% z^7WUDKEmT~Kp(w;{dnE#Yy8YzeD=--)mL#$KL7f27v&@98#vy#aIA0R7~g&Qs{H0_ z*X6ffyCJ{(=1uwj+qdKo-n*mvL+Cp%;x}Jgmv^tO$$MAVxAuAUv#$#C4}0-{N}}8gj9R0bg!#$Q045BRQ1;hz1@q%FsYVMwFX0(i-i6zKX!l z)TpIHT$a7QcCi4r)#B@)1P<-7J_#H$eN#*QNt~w>a{BZsId#g&07D~29M)r>)}Csp zS8%vF$>^9d^dCcdEh@obTqjN~IOP7du}ot=w?VEt7KeuXenuO%;`nV64-y)7 z!=8by37b>Xk|z5U7+P6yI7n!Sac3-p@iN2ORlPD2@05OTy`*|iO04s!q_G`Mw9EE% zQugQ5u!os4D=g=xVsd>ckNbN>_Qx@HC%R=I(1iQCPbP+#dbCFpp$16?8!(18>o(>) zEvZnwtj%zu-Xl}d7W987BoSzlT((n22K_QI9FgHdPzqVEWbwQGef84bbW}WDr}0`` z7AJ8Jj&cI9Pi8VbG8So(qQ727LrpRsX_c{Xn~dQcgw8xICqDmA^!EzM#sSo{l2WMole4NWv5ZA=t zE>XSarkxXdn`l`B4!sUMq*%`>tdOu>;%E;P>p4+LKVe~)q=P-eEDRJgGEn_2cL3$0 z1cXM++F(`S;wz?CPcoy10}COhLLO(0QrI)JX-rlLT+c#EvrSClF&9e>Y9 z=aw5B23iRYpOVHBIHc{|D88-^wD;aps?vn7M^lwraG3G7!}jS=a7YbAdek=_iks*| zF0v&&q^)!a9HRZO_VBb5-EYAmqvJWYGrcV*x4DRu5Ro=M;Q+<9wZcU}9Aoj>X?zE3 zB~D}l7;9mt=fW7jqcT5;euiTqK>|h4=x71sBWtLQX9Ftsog?UD8MQqS?Uq8MTLxo2 zGQ`Cgc+I|VqMwm9=KZ7SgRRE+y7Ss3qjrYyz4)E07*kg>Q86VdsgG63-~X#6;! zSOT{MFAMhvhlGVz8fgeymLfQ0y>*uHIdDV61;RoH6gtufn2rVs zcQxx`8BJ5_Ktlr#+cn}a(T6b+<6{zbQ#JsbgNyJn)^QR3WR`sbZ3B~!!cPM zH1Lq{Pooauzi^(D{f45?}KUyL@S|G*3; z#%JhP|6vt=G5rhHr{#P2Ui%png=nrBuU#?bmvo?4^6{|z*&qKK`KurQNPhC;pSmIr z{}=TCR06Up)q;9|8>;nN{=Tc$dH6-DCXD-KQWcnes9z4%f{A}$RRIpQ)*%c51%_?| zz!~uG4-QR~385ihzaKcfwK^hKS-_XzP}7u_!66GsbD-0~4uc*CJk}VzygaV84XMj; z5Lxrk4GwiOoD;bv@Q8sOPC^+HI-t-cH$w+I1i!9gCUmTp4&9(?v^0f);F zqYViTS>N#7!kAoKotDe%b8=~YUd}E~DL5RP*qG5lpBp7X&2+CkOBBS}ZOu?vJKpRsbQ=waykDGZg~l z1@MEIx`w)l|IPZ2Ze3a<2(6{5DosN(_}_DKky@LT3s$SMa(;EDq=V&Yl>$a=&o0l% z-qN(};(YBcOu_-3C~2E=!$q9u4O|b^G_D7jP>wzEs2qLjs60~whg>z?qLbQDru=eN@aN&2uy8jg+a~(sI=Csw)&6Sb{H`vZqw%gpL5=7Yu(&S3JUr&}c#@6)Axm zw|uVAhKuZH>3j^7;NkVP5ru`fn0|U4PU`v?9Mg#sIJ7HR)e*&cCOC9Q1X@R*6L5D3 z3^|Tagn!VXh(fD1tzW=NvJ|Uw>|2zVZAy`R0q~u-1^4qh zSK`BdumF+wwp#>&W@Ua-?{7vISE~dK@xIRj95&aTkh)XH<0W z*j206F{)+ZALWLEu|SW+a4**sUUS1kjZ$?}Rm5w@TZa*W9 z?Wd&)YUwzm(TDAwb<){YCp|rl;^}P?e{VC+QL98etrGLMOFGhRA`LOV3}EaTO#3z3 za6nU(azE2=d!&HZ2Ql^#9O|TX)+b|$ZW)Qd4)rxkfA48YcORGjzEd(9ZI$zjdDx}s z57&yaJ{*+g{$AM~j>y4SN*2-{DF&J)(s@i$k!C4myCfBFk#xLO3Yji^Pp2dT^{~wv zWu(7Hb{6C46T2kabxazb{*rVy9hG>H_k52OGksFT@%VcgDe3DtCB4l@CDMHcW4m9b za{R4cneNA!iS2m2Q-=M`GU&nQy$w?IHOXKfYaE`Ifxcss>3c@n&U`^0`@%n!&;N^G zm0$g5|5Sec*M3Ew{QR%UvETR=IsK(y5znbdWO=}g@iB!lGlOv}FRxuH${SaPOgk@Ohh_J9freZ4kakbYNWq3bm zh<=cLAZ$NPhYWGzR#QcyKha5A_BH5Nc4qP>;tP-WDA?os3nRZUaLAN?v?Z7V@Cxh$ zrmtkw;T_l`1c&#WXu}dXWSY{eyEVaKHMsk1bwS>^d9kKmhmBE7wU1L4;oX^#$bQJytY;xAkWc^|;?wg@s$HHJNol*5AOF~ z$#XFX`u4%3ANOJa_gx70aTxb-6#Y;X_g742ac-!2oDV|I#UZ8whMesJ?mgarybrmL z_aMcn-xb`0%&x$5te}PIVsXzd!8VyKBsIl87d!L(O{4-C6UOA`79l#*kN&*i(3B*o zmexe9(q{_}xxbe18twloRYxY4?<7*MWy;aqS2X8HKpzq$(x&BlIIYWYi$RAG6hzpdQ)@{YpOO zKE6h9NJzK>|9>eTl6lq-#Qz{b)H?d`G3jqsl+>6qS=;z|f<=n&vC)Y-Pm1?xeMU!| z*R;`xEYU=2|T5-v<+ ztx2XU)oYUvt5_4B(V;V0^kuk)j35nmG|Kewfc)-ne$Rlzzxu!Bhky0I#jQ=WAq_DD4s9Aa4zwHyb-=8Eh6WUJpIZtHX%xU%ScQRX zR~FGo(E0`#;I=UE*;PR{-!}(YPE>O8o|BS(Ff^p9fuYr>28RZPTrp#%=QJ6grd8Z(|QiNdK(vtA1)XE~VyCvy&t(h}Os zIwvjWN8~KqpBwzSVBcl_j|Ub1HyoN;Vk(+iy0$e}Lkn_sYf-LHn+tN;5zmD_-Y}2L zaB)s9V0!`E^Q*IRuri}Mw>+&taeswS5n7s3F@kd!=Xhs<8k6n$QQ4ZKMieM+&JNem z5L7&*4Qgiaka%v_rV6qOS&(R@KoR%iJnl(C#JQpYbeabA6GR7>HOqD;2jsn5`|{BX zm*g8ST$HchJt&Fr@ZB4`auE*Rsi&WiW6vCw6UR?T{mD}raY%5;+FDF27UxRoKu-xA zGF>Sr(x$i~AK#_lH=I?d&6Kd~}=Ih_onb3$myv`TbX2ownpm`-Ivfudi5AvFUh zhv0C|1rAwge7P9a1q!y_A>m;uRVn&GjWASbXzH2}bX|wztIjj;RXWXZY_D>qEdH;i zMuC%J!68$T5)xXFW>b_B5?)wf8Wi-&kitVezq~XECv^x8>ag4(L|iu!hfG^q4GlSV zya*{cgrjPs{s<6D(9i*fp9UQAIqMuUeJN9$@|dh=$p66KZKEUkJv=5;@Z1j^5-@V& zfydER&gc(0`M@+u_PItO^8DdEb9~Y?r6ZOFkNd)Ig5-D{5U_`U1f^8Sr&c~6D==lX`~ z{hOQe;jL}?0Q=s)yrOju2@eSlUpv33;P5ir8~TB>)3`s_r;ik5Do=12mx#|VjdhJ0 zX;@d+BBxF@N_%rF`ry@LDHs2^gaVWpOeOu@s~G2UZ5*_=S1Hp%UPiV$&aERW+6A~IT!$6@Uy zC#7kT0Fe`%wPe7erak>R!J)6SS(?rqmoq1h$;p!^6dax;FjV0=`ZB^prYa>kjQf2u zGnm&@xVzKC+Ba?}K;`d7TZL24ED5w*H1cqWldx#VJdZr5=#x1KP+D~j@v&xXfK28F z9Fs5-=ZF#Lgom8$@wPRJ2kL8Yl3uE#S^7F#RGu!3!`*EvAEU2IQHY0O;$dLe4c#9c zQf|;^RqK5ZD)(`IR&Z!#)0~EI+@P0{hHaXnw2So&J7BML)=5)Woo*R**xp&M`#Z7i z>S~Z~sIRLLwoa1-ds`(6`!UH0=V-6w;sk>}8B7Oc0AmaxoCSxu1XDqI6e<=|zEZ^D zSgKFK;b^o&L0r*WFGWus9yiK#yaWB=xV(b<`^wrd`ZGet4vbs9nv!!EuMa|nSi1~n zx@ElRm!+AMEYD*69*@azf3Kv&O)`S*!Z=gr1|%OoBOMJ#*S%3a#0*CROL?dYhhdysuph=8!y>|U?E_%>{z*^Ao<5cTd zZn?o>sJ&4dP8^lS(+JpPqi?;6**49iC9BRAfq<^Pm1D(_R`#Ex8cIy5z94nUN>bD?@QFeCLo%qsE*Whw0K(2h_Ag~{2h(1 zXeX!MnhKwTyy&An=!^T>>ZBK+>1jO;pW&4Bw49b+9+$P+@IAra7G2a)Q@ro7<$D4> z&81`N=P(Y~*TdR3v`YlPpVH^pM)99w=r6dyAi=($!fX7W-12$a*P+Vbd~0MD&P@^h z#&D7gAh}>9gnK)Jz95EslW>tX2=0IM4>SFY(1K0Cj4IeqKZj94Zg5E7{j&mx)pgCS z+|h@$#VM1{bQ+qHTg)1=VKuF~NmvNqoVpG_onoCs1%Cv5kQ)XPDprd=6zfqQ5?|+M zs>FVP{+C^3NWbg?=c#4~6ao?k5(*L$YHCtVPnt66N!`#8@3kpPnW=-(h6IKcDM@R| z0f(BV6n+iUC?5ugwxk67G|tsIKAHu4cHXZds*up|GXsaqc-_FmYH*nGVQgfoQru@u zQ|d$C;)C7DtsjbD%+!cw*i2d2RQ$#8}07LB7thX9wF2+Qq|hycUBWlE8ENA}M@6E4#Rc zTjQKhOu#mX$`a=XbMWO^f&~8H3he83_>Rn;at`g|fQxx4JZ84DZ7y=8?Tz;>!ye~n zXR`s=Iey(P5<=p&RlJACVd`ZDP3-db<9Bc2w{CDw6Tf>6V=W(Z9~ZQ4a-I{<_4v-` z`8#%|_`eBG@%bw0xq$3A&BfMCzsyw4t9ZVQ<1$6_BDBn43i@C0hndEC!`X7*0)F#U z4)$BW(F~y>M2JYZOUOHkK4}1B0o#DTvsFI&@B{hDk1RMOH2i;6eEeh8|EkcB{`>!u zAJ$MU$n;sO7Fhd5suo!NtX1oKf03#MjUMWuY5}l^`q}h3_dri$!JVFEnCTHLFr32R&n?rH z(z&65LnEB&6q#ay#p1Kxw!d+3cqrPC;BaeBp`n#EkO}#;h`Z~xkCTOjw%~iU_#O)$ zE5RWh?{OGUtYc-s;rc{TR>uhrISE+?hXgZwbEBH7^YR+O+Ps1@!mj1pC2t>o`|#-PoD0shhhCRa%6WwTb&nVIqw3^(kCus2rt8kVxYcawh8Sr2YNGiTf+~FCRXCRlfH8CHdZK zH#EiKcVE6D-*NQSXV1#lo;wg0)IamglXBwNQ8{(|m^7R`DQ)%j($m^1zOHsS?sU$% z;-BEqq$(Xs26eT*rYg0*f4Vi{T;URQkE)Qq604KJn@Q@LQcXwDz(zSZkC0pOnrYmJiQjIW# z^Gaz!ewR!d(y|OlEX%#0X-x?uIeDPKldyB1=Vbu@bwmgbwPpu?2jL+n`}kf3h7L5e z5r=o-P!mM*n4GZSV?s(>Tk#g|Tb^5YlePff&oPGO>^nBn*Wr;RYC8XV4W z619+!@l04#l@c7bAAedpP8^jbg2QVU4SDnOIv%g%u}MMt#-(L! zSL7{58D3r2x`ql2UEuK5^B8Xk4i}1OH|R@ehh<}Y0FLCK%nW2@P{E;3>d!RDnKMmt zx~^4Doo4^sEo1!|*~!MQ$%k{wv_eeBW$J5` z#gs%QI?%v9Mied=(YFktk8z3MaA}ayF9W!b(N95JlZ1y{Ve4oDeHH$LMj~Q-GO0`n z5G_RHs(pNqeitK*F`iJk?`^c}Mnh>qRb% z48gXTz<(-=rYY5^Oa2zFyk`3>uN)>kBse@Ab!a9T>_mgE!sdhp`fHu+Cy?Z^F;){u zM7vwX+gv9ewDBGS@|Jq(Y^|5B_D1P$Z^CtE%J3HH>uQz0?l$pg1QydbR;Dqf7^%gD zK9$0Lk4g9G7GWG^;hbCcwFi~^vr#`G;9I*8>ueGaCt12%bRsz&=}~aVh(oPm=zzn)j8BRg z0}vT;$W*08j6XwZA8e)oY)}K^Mq`~a8flmDV4F+?nxQ6{4z6VlyrT7tcek`A{^KHi1j`R@?aK zCy)FK`NFS#PJaDY{;_=N*M3zV`DdS#C;s{8r1jXZ;~X@~)ukBvu3>rW>ZrVRy(q6= z9mH6YfSu}*&9Qd$KP|G7Zbn$!wxY#>4e86sVJtNTaE}nC*tmkN=X!e~PwB z%+soXfYF7e2t!=6u(w^Jz7C1Q2S@}QXc*|meQqX4`$L2&y^@dg%76kxFKiIM45xxJ znht3ycZ!imluZw6W#Jt)g>i?Ge=}ShH)s}PnFU#lL`qkPi=md#r!AllV@=*Mg2;3^ z!jP#*OLBnW7~V%`I?#|4lu$X^Ft1U~Os~kg^Qu`B>A=Tl zIhMe-d=PM$z+(#z2@44gYk|YmeZb*ZE?WZ}(w~B_1N)KC;5=+8MjhTIICMe7zin`+ zu<+)^k_ZCdymhIjs)3e1o28WT3CTTqRj5M4%DUJ1K;BVDQM@u96bhd5dTV)~v z+}A$M+@bY2(XLZL2Z$>a=i@HdW3$ai`(%VL9RBej+WkP(qxV5SU&pEbcNO_Hx?`SzB560g^01e+ao zI7f{V$GDTjdFB00yL2A+K5dWb{wVwuE`FoUlGQ93tVPC!&ITO%<-*b!e13w%8mUTQ zYaiC92Zu~yYE_Cj-JkxW+$GN#SB{v8Qxq#B8tIonoU0`V+J97I@ zyq~o$;`(GMTG1^9iuOG&DLlmY@Oak8x;Q^17rD@Vmh)Ur)FJ)1iA*UqDS@Fz7;-+$ zfrSbTwWgsHVOR|bUD7B+jWis?IiO6mA!pst2AY5kME{%7%NmL6KtqZPdsktHvsO1VnrL+U6jK~Cy)nioozHXX z9O~jYW*&nd0=t-j1JrUc2AkhJW;U|zDfof#3F)&h4B$I8nvVW_MCS9fSMYuUJ&bky zKGw!PI}4u@;@HOe;rz~JjFn5U%QdBPCa7gihNC^g5+}AkAcGU;par~#+gZGC3ist? z!Y5;~J{j=0%Mkk3;c&N%gnM+Wf}J=FJ8=x>h+vfwf0{Pb*_MQ3GE$Ru`6pppaJxVs z24gqVDKFzcaFO>s&c_`7FSS6w0saD0Ew8~xpjL6txL|0qpTQC)CG#|)A--cuqe4x@ z;S}vv*gH}5-$B^_-~7sl@>f6kD^YN$(S{Zr{=e8)0~|uNz+qW9&fkE3ME&%C{+-f~ zsh|AKiQi$O8vpL77BqUOhpGj@9_nY)=iIA++_2DH7}-wvRtN@1EpVtt2wqokcy?Z1 z+?$mbc3?yj94-yXrP-XEn}o46mXQ7NlmiY2U@Q>;8gQslH1h@=5*Si8+K}LowG6ek z7sU5!=shR1Fi4f746C7`iAW^;BMf9ZxwRpt0>EHDz*GQXS;RoL$S5DK3Mzz!6O&qq zc#J6r(mF}W_iD7m2qOz)I$^=deN&UnL>yXh$jLW?!zm1glNb~U4Y@LM6ow4JAq|~r zI@WNsxl$_aZI=QD`1P@z0*QAa)QOwsWO- zmsu4Hr?x-NG)!D6os?PDyBf>O#&l8k*!C0}5_-<+@8|#cB;A0n!&t8+jl6^r&nV1W zaE7dI!%4cYVC=Jg%AK>go@a5L(I#yBxJ{wGP`9jhmrJ@y?JU93Crn(CYuH{TP~2Kl zkZ2fADGD^AFMO^riihXp6v?RTKiI(iy{^V5j8Gc$xIaEoxcBdzU6J2;_a*uMdoRduzi~@` z`}G^pP5I5&ugmvdyDHy%l>qS)+UAth9eYwv9)Ctvf8s<59D2Lj)M?j95Tg8we!oBwf6;wcwHS^3mf%wqi}jn^qoc=;xR!YAsnINB{;8E zmkAk{iV6)Gb*K@C8{@aR5r0sY z$IbQK;iV;^NwZW{4Aux62_5!Dn$ zgn0jd_Wt|7jWkR11#4&Sz0=d(<|czkRSkp1VQh;_oPTsq$G->C{o`0^jTTH ztGcV*+`aQB?0!DGJG*!8OjlKRx$YkGuRQxaCn7+QqLfl)R&`Z%{_uPP2m}IwFz*DqF|zdLmr>N;i%e|1HhruzJ)7_P>^-hz+nd4tmDUzn+zBpbH&%${H%n1 zUt5CqN?*4{94-&>f3U4u=oL71Y!#){^->4vwbtpp2^=cwa2FhEfF(^DDB;qnC+UiI zm(Gczs}&KVfyq#DHrv!3R21j1|II^rNj@q{3gIg)g1@XdrONUWi&jw@@sPjVvI0~E zDr}OEDfqN%G@$yFe27#@{sZKF_M+PTZZsT7Nh!`f)kcEP7Oz)r4Y#3UsqcE<4;VD8 zaw82(%W_d%nr+~)tUMQ`6?rK0=fmeOw3>&4h5>=Y@_YoieWeDBD+(+!B^j$kV_dbG zLk14pXlqJdN>Zt#A!N(0#xQzlj~X;gh7BC{HB@3C;m1(D4`bALT{*^UOED2I!(3Ac z+idf%oK)T9CX9B6(ceLJM)i=nSGgsv7JI+`oE zjb8IOYn5I#8`b`7RPq1Cs!Mq6}UueQB#1ymMYqa?U+@H(nJ75 z$qHAGivD;BeTFLfL`mFPZ(_gDfQ^|j z{em)#)MsI|HV4CzYz&06(H+b{Q~4o8@?Noei^EADh8lS;8-3_al=HbQgHjIG28$8) z7oe)L(7<6#QHHerEiEbgf`%F&pKk#b2N+5k)E6{t=d~3y>`Dk4^13zhoV&nKu+Wj0 z(tQ^e8o;A0U1$gG+b#zddcaUw8umj&4;)JRT);q((xMqHqHz~k_VM?3k0Fi$1D2Xt z#p`b=6zL184`lnRNJD``r)_C;BbpU4zAL3eQ%%Da_NgoK?`Y?o(x57Rz!kwmK}6b% z4mjlfIMt5@e%{-bG;o-#Z$>iFYAH&Si8cd=wXq~3HT4LFA_!Dgn*V4&klls(m~KrdbIOwc=$Yd0CDH!9OC7L$jvx{+?-70 z=VsI2%0XEX?dS4hL_>ZgA`UoIo$v(PzxpuO@&0az$fkCd0_Jsk4nnlI6@ABcuEtkr zuj}+|@UsL}r)WW{wz34Z0Vhpp#3wk$cEnYz_2KnlFgq_zmcE2skCd@_k`K^)CBxgr702!y2}8MvjWxZtE3uVIggkA zWKhp|fd6Gz@v0#Ib2a}j`|g;|MHJ2P7!|em%8*kZ4j~?5f57i*AKrfIt3&*(isvE7 z{j>iG_)?0fUt~Y2;|=*V`KADsib7|58sf65+<}LJiBD%lFhFd(oO-(|#@uc2V&2r1q zBDj~HsU^*Sa$w-6gF`RU(Bwfw?UVbyp#9T76F3wQ6g*Tkp`r=}4?S6wp}?UVWoR`G zU1%t~*`Oi)F@eG7$!zH{IUHDzeXHyCaAo4km`Ag7HRbk*zezA{A&2mmx`8p-z(`Dso)$S@q?a>iC@3@wxX@&$cs8 zyD(OogQzJRk>V^wcwV*6)|cfV!sk6k+tN$REY(STuXM~(Lx?sd+h0X%tNoRfI^811 z-Ao8dr`%FYJ4F-LEVZ%^t$eKsLyBS^p)WH*zh<20Q0vS_pskRy9cW7^y{slzOF9=G zI8+;_h{K=%{O9<|&wh!&Q$(4;!+*B4rGkV9>z|(?e)jWUy_kL`{qm*s_x#T9l2jM+ zH>sacKmJ0WyAA?hU+8yR2LZM}RDH=yOCT8}JV@!lkWz{k$s5Q`AI#kY4i#~j1`fBT zyLQ2$A`XX|uuiA&+?WFn1p+k~>qH%L-Gqwy_M4pAhCN)b`dnR<7j3u~9Hyrvb%0?z zP7O;gIMgD=AQw2CY>n8`gNI&$VtuY$2lLmQxR(kTqOv-^~8Md?G5beg(p?3|mWq36~%^kC5CQ`5Mz zGWEi`N zu+qYHVy?f#q70{c+Z=F6IT455SQ+R2Ff)kFMF$)Tc%7UWpmEZIj{2xMYn5dsC{?7P zLBm`WK# zr%gIdCu@z)+$tR{>C}X-bC*eJF{EY927E!?JTs5K{_rmT_mA)3Z{EL-zk27g=`WvL z!jInB#*ZFf#GgOh#EsPvqO70*yAg+q0;oh&EXaFHGoQmQI8^E{ z2OO$yifX86kZs;-qB+q>0ts?D6hS0eio!0wr!j4*Q#8Aej)x+a)1{iJN`XArquPdU zl%d)!I+v&DT&m`PY8USIvNQZu&j{1!1fUxgyBO;ZqM^3W#Bj;G(aX_Qm zB>qo+PygGCIK0mNX+Y3YqNahv+h^x&d39xi=VjOi8Wa`p^eIkX;>nws;`IZn6_fM14&S zaQB&-pXWJMt&o|t{#pI8vH@r^k7oZ) zalIqGRyrchEY?h8iG4G#g98r*>YS)R!9z*w^nR|d4NL566#c$D(nYELalxTxBpWPlZq z9ykoMjebflJgliYKwAGYO8aiK+JB%N5a>#P@Oct2;b6H%4+f+@AsRidrlQF}u51FO-~ zOnX#zDW%!pN+G41fuqeKOf&^C(-gu?GJx3zziG10hmm+WZR2Vz4mDu7D}sTp8VvSC z(A{2*KDKj%1MJ%-ThP){iJEW`>f@DYO!!e(OIxctkN@!)ukm5pUxyK{%t17iNBgS~ zwbjLFjQh~hSc%Ri9cLMOx$JKX^LTyifAiTcM%h>OVX2e$b~1>umN3S;X@mFG)9#C- zpU2w~Ek#SH0L}hfG?X4kebEur6;OqTQBNhPWZ@w+7QT(zoHtPV)>m=(PyScD^1plu zul~`$#aI8`zcIb~$Nv_u|M8b_?5qD4(c(8P73qcfMqFBMWqYLA{YB`HW}r886y1R% zX!q$i-au8>*HOp+*H>F=;Bd4lfRV-k26_Iv>nhOBbC?J#Enyz20|h(>MTk|E@*I?L zeL0efqN?#(dQyXhF-02sQ>hy}c`dsWRp^lqk*q;qBkhnTO-fYFW%(Jkyp~Ek7B%dusYq3 zMGqWC9dM|KLxDr7zOLE8VNJLWmBAYLJ#ZLwz+rvF0f))jXMn@DmS=-Q`ba5oNL{Cm zkq!;-Z7vx!yw85sByi|L!-v~vC>6tj;xgskl2 z$g!xyZ2DMvs3{O5`HJXMl%JO#*rNUvtyk%k zBWPfs+EQ18t|qo6^Z^GtnlRYejLu{om7p5fZYI&))QH}eMhvz!Q;kqfeQB`05hI-~ z81HGL|JcrUsUxMS{!Yvc^(-2hbOoXO3$4aZK!&Fnk0CU$FemeSV;fI1$UbQg!Cs3 z;7xX0wh+~Mx7u=iZ4i;qt!l$NlPDek$-tm|qkYiO^P`>x4lSxtzw7?KepmIqy(mI2 z^6<=PD^8EJnDkn}(1V6vJwq?jFqM8(Q1BVD2*Y$O(x;(clZrOvdG~4?Iuke3#_R+Q zrDs4xiz;*>;Xx6Hdmy4KeRt2kQhF9RbZQ({6=k8S*hv{&S(r^}nPU-$F+TeZp>pdV zyXb=}`dtuPepF8)?0`c}u8{=a*kAV4Ym&ZGE7c<3U1+EY`|`mwc}6L-=LcG`q!gT^ zU2e9ZHmmok{>mo0a2uu7mQ*Kng!b`3Q;pSP?Wh%KFE_Qt^t=Rk4D7RGJ~W5R4Di*I zWFcIXfodvToM|9W054W92$*lGt;n0lm*ZN*%Mw z0Desf$j_koOy^~wEa#Z1Joh-?OBpF?y9%}gzQQc0U2vr~w~}pduq==5Cfi=xq}6N> zs@NV_bTy@Akng<+>Y%l`O5LobCM(dcVLP2*JKsPxMk>)7ciO1tXb4HRQ(D&)p=}xq zvHhw-J3m*dS=kqTypC;AwqNlf((C&9Z2f@D2Q(u6?-;53dQ(x$JTL%HQKU94wJ<9MVJMjbM0>gA@X!0UQZ03?< zfS3`&?F0_*avP;8Jt*Q(sY+Gj@Ei@OU2xb5t8++Mox^b%c6}y+!}SRl9CH0`n$oAi zp`r|(NW*rl4)gP2EuH#_Hqbky!o@A_dwoZBsT6@IK&VKDT8lswI82G}4JK0FV5LB! zAfpNvD?&)%Q0Y!*X=HfdP-z4N2)q=fN}V97IJ;)>YUY!HLmE0s8vDI8a=d6mCwgqg z^s?Yk@@g4+(S=V(8NL8G6f|_<;6eH{SeP#T&JKUai8dU;ra%*&{d$nN~m574a$y2gOv+Bj*|k1JVw=0yvXA}2o7F8;M{u>7<`tltSEwTVjmowex@`a zas9N6>{&CkZ=9LOjk70kWBmYW{QD`ysP`Sd(Bhf8a-*jb&$ zHt)HMN`-oI3fs$5JjWB*Ix*p-h2=R{r04mC(E~I>IdvTOOSK>mQVK58>5^1O^6Yd! z&d}*PO{Y#;qw^)L(&1Yh@8-Sod}*6I>kIhXkM80>d~^$c`@wbm?fX|vfBoJS>N0f+ zfAwSwch8I=Kl5#5Wn~~cGXn)V*(fjK{ZZlqAzyQmTQVD5?`mg*m92 z2?B;1M00@Q8rw{@e@ZhdXt);~Iu5U%U3>QSfkV&Pwb`_aO5|s9=#}nM^#&!c4xtCv zB=5ZitI#9_saVfkPgX z!9y1y8aU+f+~zYUaA@gDdA?Q9Uj3B%ADfUepxU^N7NM>h6{?A$=<^vxpz|KkwHLI~ z0IFua>V8p;!{)FLAv$pdE;yX{G;ruf910wIP;d`C+z$+0IT44?(k?vw%;1pMeh)ZY zWB)R*0i14L7lA-N<5NRe9UriC)I;sfXoyCUm63zvnT0r>Q--X(GPF0fU~#w~>yzA8 z^;6lGFAB0*-y6dW`{Y?ZJ9C|hR4ov}b`$$v)drp9(t(AFsEa$|xgTrQQc<9S_h4dZIU8`cn|LdhaNE8l@0tGICP>8HNdXOZ%J*T z>d+|tR9RsbN{Vu*T$B{6=I~w#BvzCZ7(Cn$5Yr)Ib!EEB4p8}CkoY-h|31^$FD&) zu1`b*Xs)Y5iz#U7N|mIsPv>g%{A!fbspq(9@e#Qrybi-!{;W< zXDf`kmMY991DJ2{W2U|W!!^ZdF3mtJ|1jF4#0V6Up>0IBdAZ7 zqO{@&a&q2AF|TudT_rmCyf)MaaP;t(@%9`49@)oVL22P(_N|3HJ|B-&&@hPJHrmE* zA+*(((iRJ#zfBXmG;t@7#}>x+d=Hj*jFa4Ux}Eko{fMc-28{Od`Dm>|XI%wa!i8w? z=O9ve2-P`nAe_CcDBsuSzJYk&8>q{F3)R_gqUi0f;pkWXH@x}B{|k=3`W0ln`3f@M zdX@S*GGF@>rCw~RsX(*pzSUNu zO*P+QPUKGquVWXlt7@cc@}c~R{zgSxL~LT>5d91dj@kfe+b*#4pq-~wx=?pQ%k$(# zNP8I)6uDvbqz(XwyYTQi;E=y7Xy{EyFlb1rCauy?OG@7bBi z%gsV@A=|IgLR7K6tc!%Ketbi$%Alduc2)XkN@<`Y!7@wRTjkT>bb$dtzuL8uTm;qL zalP8Q8ds5kq7s$DlWj3o6)1zhyqGF6sjsM_-LB7NyVq9vQP2Lek^N?CB8HA8`rEAy z=xJ|6Z$}gQJDLp;j`z{No}rz*wt(yBS8?^+3ND{r#@ejPI80(=X$Cu|PvFY>3a(O@ zPcPb}OZiFWE3MK`r$2R-{?+w!OSry~u4UYyuAMt!zL&PUv^K}@IKGy?yF=egewh3* z&nLTNe%ZWjbAD+Y%ILDpdw*%P3nxbCCsT{Gi{z`$4s>FwzXOw$CcpN#Camm6M>2*) zgndp(k%fH7hGZ75m-laz`~4C8!Vj&>Cf*QSaCw z?Xe(QBNgaNRAOVc&-_?R^Y6kb6YcBYHaOgxk?0G#(9VN~8xxB9>$b^$XEkm_|4Gto zfkb6(5kU0(s9zTxZt1&ezwaHx2K`oxBAj#pq6Y~D5YLXaIZ$yzwG16-Xuy!V=mJAU z5qdE2S@Ken?w6&FRivSNO}sI?6gZ?`E@EQ87;PBk+5R#!{1Pd~( z=4im`jymAbUyudWIgGNcsSlR2j|`+H?<&2nq79uir4BgksB_d#8%QZjHDO;9YrLp? zK|?DO)S|wLeG+Z&IYko+8jf~jfzQ+|?ba#!8=7dNNjI8^qkZ(T&+Sam#$unG440uU zSY&CE!-{q;%R&w9w}>y7$C}4yCkNG~s-b!u{=8!-&pC{;tV7h>_S%!D(WE5sY(_2@X3cC;+Ma0py1#A z!$0A_{_LMkPL0F8X-XYwz0#QO*B9XM^VS#O@HeG@{6fEHItV8Iq3TO}Qj+cmhMx9= zLwDfSF+wzZX?)iRIX#Vg+}C|Yn{eAZZjHlh0*9(`I6;GHq}l2lo*7oe;oelG2KWRH z6?I4>Prz^&9QHmJ9BS~^1BTKXjcQA4N_hjk>C!s=j$Z4#8uV3NLxX}HwU)YcqB)GQ z#%hc=g)!Mu!*vk@iC%hBt($1B!8jdvr5jYbQb7P|tc?!5j1@`_evbG-+u{AgB z)Ha-Upy3%x(T1l+9B{ZWK*O!KjRsvCCVN^jK}{(NaG;&eQa4Ub@Sd0*#s%(E;81Bb z7e{(9)Yd?Qu8NLj1s$X!i?mR|{=$PI4$DjFwE7JkYDR2FLma)$O6AmKH5C_!746oC zGc$uw#N9T}-9d2hc{&IfdZ|a{Z0(OS+z$&qU6=T5-7q8D0f#r~T;4QLxb$4zbam_8 zGH%j|y|KaXP}k4N!Ck~P?jr>fQvgxXh_l#n?>_;=i_6la0}-DoT@OWpJ}uRRe3mwO zuNiclcR?eUnt`~kd&Gl@)R`%zE_}Y$wVdoVaQN3B+``{{a07qy{x$sVdspx`)L*@O z8GrR2_3jS-^6>@SJu`-ati#C3&O|O%#QUT|sccJBmxT97Wx3U6X;(c3I^kVhb|sYF z&8hd(-x#wQkE*jU+@j}R17l5={zT~q)4_m69~u;J;Kc+Tl4-U#N^P7j)lU#KJef+> z?)(aXc@Dek4&G4e zP_LcmYpX@bwq4R|+lFnr>I4cFO1Do>u+5*O<2h}Sh7ZrrQ>twtu*dd4m9BIb_I(;S zynBXDC+~5mMh2bNbe*Fk>%P`L6}2dEczKb|`%D)d?+!ZZopidp=xq1$vl06p{kBCd zy1%Q5F8V)K8_@%YTwdcdnW}L}>Gcghmll1fXK}@;bExyINKXw!XaGVH?H)L^nui8g z1c?LD9W)P?(Y`4`RaqW_ zn#HbJ>Xk)Eszz9?CP4)#zbQ#ID1DS>#0whMS3+q@dz7A(w(CF}uQ{Kk(T*s_I%(f_ zN7(;FX#;cF9K>8QV9;?l4HS#-g^t4x_J<0zVFGF*L z=OUDcNbwQ)GQN(|!(T=@f75^bYpA4xR4C(X{2yOOH2+P+i;p6h@d|v0{uDJ?ub{q2 z=|G05ME2e?NaUO>zA}EEM zmjc;?hRUemMKLSwak|~JCg0GT5H=xj=+uH*o8UV3C$i6#CjZ2EkJUJ=i$su!HzHBj zoC1e+@g}QpSY2KFTLp&>G+f5Rty6f&{`JAO6K&{0!^f8d4PPGkecsv+1`paMT^8ZU z?Jl2MK*C?bK1bk?eN8$zEGuH$S!U^(6VYnaM}tp6L)G^bIFzc{zIpI4pfsYCAmT1K zEU_psZaUE@IhZRCc1bxef#E4H)fi!IUPWj`U(> zdIW28<2XG(Vav6dQLIgkU}J&y?b#*%zjb_g<09U@%Kysibc24@t#iDdo6G!+w${~k zyhlBuP4(#FG9GN5Fg@O0#ygi*@b2YPc<%~rt*dF``**lrpKH4Z7Z!1kw({K#+PGZa z=lh2j`P(}uQ~P*V`*5Z8_cj;k2hx96TK;9)tdy40<&(-{Gl6aSXUZ5upLp}c1kO{Z zrUx)ZJEM>Nc{|(M7ELIL1k9(2hkWcm=;!cS2^wlZKgj+zSjKhb>|@y9hJEbY*x$zK zQzt`yH1WJ^l5<0_2%WKV`dr=S#~L`?qu(Al6j)O#Pk}>$ItSJX7^=RY)a6W0AEp1~ zj{9hmx=m0wfXL5fpX&SarRLpCEPSrh$3nabn3DNgzXmuI96ZO@>jH?b1Pv|9(1nJU zmUJI9Or;%t2|3VkSnPWGM3 z{H6YEpjmZ*6BuRtKGxlgp^gUhahvXBlr~c}+TyfBYC~v>1}t4?tg@KTO+KF+)$Pti zMZqzY<{m*=-cft)6W}Y#H0gB(|4&)&F%)MXK~d%*lU|qR9J9~-0;I)?`c+i$u9QyM zlk>UKwz{cXr4lEFYp8_BqGz{Uk$|e9s`{s8sL|vKE}eSeyQ-%4*sxs6wyos(t)#7~ zn&WyMWSi^Ry_MWYz*lO}P|@U?7@|@G6(!uhjCMJt$<|V+yqvacIV#Kf9kwM}I?fKdLAFhP9;Y84eefZE@k=L)P_+&J%g_EB{_D^F z`!j1CeqP}4rBjvu!@+Rv4_RM;!{3w+hEreY*VPxbFF#Mc5I9VIPD4Wj$2OoW7)T?~ znZ+bWHOs1r+r9ckdO6%%y&q{*HZ2OJJ}88}pG%oI4B9mV`$7Y17C z^hZN1e~}g2U4@rW*zgsk8IAb#~Ff;mvbP&(*Dsleq1P&aZUqJU`pucQ>4E zZcvIww1`B5h>K1%;+o{7%=I9)p!Tyhg`Jhjr?gF{_8^#eQK@TruWG6Kky~^KO^Ql2 zkT_%jQBH-lPNz(;`B^$QGhpd&1*LDVFW}FgT*Hr^T)~eXU!r#KqenaV^GDnG^T%$g z(g)|+c8wZ1%+1L{Zgv)mdCw@~(5I-wGNlzOwKPEOf`v`BmLf&qu%{tv>gDq*03;1G zYNCK5oRpGODG!sW!8a)#97-BUQ_8M+Mf9X;p|8;f({=~Y+MGy3wRsb4|L9-}94hKf z086uE(<2DI)WUMe_57K`%g-D~*l~vSOe=y;gI_5qm^MKq1qb?2^CpumA0@c>b z`4m7@D$q%D2Jd@LAwT!l8$4vca1c1Ol%xg=>14XP$9wzUSqBn6pdQj8eMraj(fLI@ z-aKJTtrI-F&13bzq3SLwJ*k!#+1DuA@P?&Obt2(CaOl0(e-acGIP_{AUgo~i2Qzf; zuJYbB*|~DSp#~Ln&UOBk_DFq*(|4rG*wkl zKD5QE=`^u#U^{endIS%*PU9OlFW{5g+m7z+;FG(TOy8uwb$18fx^ofVynPX$+`52| zZ*Jn_8|O_QdAh!V53fn*@WGXJd~o^f9=(6*jOjgT=d|hF?KMYAW4d(`?_5~MJDUzb ze9ZIiXr59H!+AW}oaZ(Rcz2WHd(}3yXv1?ec*uJ}>B_ffdJPgz^REQXAuSvYzu4~LHzAUn4dgWbJ2H9pM#yC0`Ul)jp6vOv5bVQbW6QHPc# zz=<+6Xei(%34XQIrlf)I5%#wu&2bEC(oS<7*Yi3E9=0Yi(bkBGc3z*3CR+*|o*3+= z1P`_JfS{{1fan25t$RxD_Fnp8FQus`i$?5k`K^FMo$EcRO8J`thXRD@;LuA~>O>v# ze0S3(QZ2Hyf&Qm7xVKK(!axhP8+onC6#|DP`5EkoGpTG873SI?bBPBIOA1g%IkgYd zwOa>qHv(~2A-@Jbo|aP|@x`_O`_BGL5UAkqN-2O@lJ?t_4Z>&uMsgw(_eMlIvPeaP zi%PXxZUZwFe?H0sh42T8xNoJ1QmwCI)CS8C50z78h$-4o>HG?gp{h6o zF@7f=QZ29&15owhGBnhbBN?ecW6XhuiZ*Ol`m96{Jx$fLa};e@gTXf1w7vD1=%LNp z9ihEdgIO-;yJ|4sR)zVdN=yqJ#!4|#!)G#5j%HszDvrO2!eeisJpTy7fda(%+hsXN zQCWNpL!D6`Z!R+4{8POC<^L5&U;k5NA9)4&8E>F4^Gy_FzJ_5B0XpR*aI2`GYp}oO}Xl15>xAW8Om~9DSq)sVQ!xIYu2{I^hc?5ij_{HG{6^d~6eGLZ2#1T$YjRn{vA=e&kk!CR;= zIf91Lqev7VLcHK@ROh}4fA-s`$l@~V4b&7KvYLnCf;UjX{gog43VfNbB3hbhsx8ex zL-}#E2C~r+%0(xCzn8}{oTxAjQ3F(0oxo-R>Vnz4jyZ_>bDZl}S%?JBg}|YJq0|!L zH8W`Fhw6##`VQ5m=YhjrXt)auf0N)a9U!K|!>7R^+aLpn4JmMVqF<8{oK)ekeYkR>pT{{s+jkJxmxpovq*8;*R(1Ss%Vy(hhwIMI z57L(E!0Lo*gLYtPL=jbO7-~=0gviEd(9W&uPsTOLMg1B3yHu@5D#Ghr%f2XXDnz}% z03GZP&RAVfo+AM%`m|m|o5qGTG4E-3_&I~ad8fYN7H!N6eExQ$3>{!7o#lOSR%1Wz zIFpSTv5nDdjRPs$mEfV(Jygolxm|zCCQrNmlqBED^QE2*4tL>U3LLu8gr2-QhF)sY z&1ok!X*x9YQjlIwLBP?MR%(pSy)J@=snSC9>2|@PGa=Jz6bc$jX<+cd=HfH83lH~$ z!-L@Av%uky!Dx#(qo1lx)h-mA*|W0CI40u--eUl~LPrDc0O zh&HOdj;gIh2m8-XOI=!Rz_B|Kw)HLSXPd%4_PrHIR4ZL^z*NuIvbmyclawAg8Yniq zOYf^KEoVN0Wy48gWBbDYHF^H)5 zN*kdsm5wQnrl=8IYhs)ivKT+u0+&o zKK2QM(zhJ%X~9&#QYN<<5Y_u>MI^iL`&DC~&;MYDQgJ8H+Y(1tV+BTKa9=Eo`FwEIVCxd$A^hs7;ssEIVG3P48qD zsi58OqXa-}c#UKF|7>HbZTm8O_`VAcfA&xKyPy3x{MVoVcl_Ni{s(@{<=_AOzfu3Z zPgEKYQNd*qI-B~)9>sD9E z$!VYdJ#T6I;4vtDsRn$lK9wBY)(A$EAv*p+jBqJHC~&ByA`nf2hFp#|)nK$al8QW> zuo?UssC0_`_R;C@vRT8G1`svVNuWXSQ1t>@YkVd_#!aOvU3Orhr^`!|De(8%v>zCH z`pttwFWS%phhFWo^assz_>`I}zJ~PbE zI?&%-hsH<{VP7c?l0p3~GlC!Bg(T>skuhqnX=_v!Y=@`1W@-qG#z+QyOh9WTx4b?(>T;h63Uf4q7@~fx|z0co{#qe-S^pw?$pRpHbhxyNU1H@;ttK=N#|tVH9Q_ zLB0k(awwrN)HWc8%VR6i<%4&u?XUE8sZvka|Ynt z6s1--$VpQwXs9}CQ=QJtdjX~e)%$Vv6gZ?jaCjyi9I}l}fkTTl+fzpHzaSuJk%x*Zr&Qz6Kp~fkM0D0E zDp65~j)N-D=hQaTce&34z@Y;V)4(AeQUSxq7f#@bBH*Y;eE(o$!5m*X#!6MHh{JOe z?R35sZP>?tX_&vG-`7Bm27B~-PV}L^r^w0cJVsrA2OQE#r-SZ*SG9l6dD5VP&XuA! zEmbLBYv4c;o;vp$Y_O<9rB`DgB&i=!%C&hHwg?=m_`U#&YGtUVl+xO2=BpwORm=6! zl`Y)cId9ANu3f~p?q0zUp4`M=ymt>j`rrY6^wC57W`uD)?&i@Jc1u5IGOtLIH0 zT-l(`;r&Zz@&3*lKG<2s`xjU6-o=x6cWW8%x*+i#UXORTPT;+*C4NTn{d=2>sffeJ z>$7;MdxqEG;!H2jPq^T4j?eSLINR@WoSq)R++Z(S<8{c*$iez4BQwfVcoM=lLG}LmYtCi1Sm#a>y<7pW{#$3TT`5O9EJIrD9F#^lJ5l$-KaxB!*Ux;aA4tn zdEn5K0OGSH@K^qlDtl@_`W+8i9(*j$cHZ~BXvpe-?`au8bO56U)&1o~{NJ=u3Nulx zT84@=tSmxMGukUltWK2%uo7$|>Z{5TSEM1gt5kZc!sCdQDZN!Df>gLX7qNh#R52Q= z%aE)oLsPVz&sM;oVMm=GT@97!Yp%v1ZQG%CUhB>%rUnw28K}eTKrLqb`8)|8c2;Am zIe_WL0H*4Fn242Qu(||8ihv6hqK?Pu<8{nA@;VN`_7xm^^A#NX+E)?E&tThDk6}KW zwf;PQ_D9G%^cr%Hzm0;N<0$5J_m>r*tVs7k2Cs8A>Z29tYp0#;g2R#SFuEHnFxXaw zk*+BF-3tD%EItPT_H&(>Z3|&EQI6TJ2$n{9|BfUu$YXAAC_{6skoI3b8p63qgmMrq zKL&sHt0+18WfTb<9{mb@$G?t1<|_zgy^0V&tIl~1k^DCiEqoiXqQi(39^wBu%Kw*v zlB~lh&prfy)|;rz;&w%EBI!SZr0)nCeMiycJBDVerGm?{!$=k%;_Kt+2xg;8@UW&3 zJv9aB3KyW0%g)+Tv_uL~A5x^Du2(Li6*&l(W+5IB@GL`1)Ng8~+G7EJhkk<#4n1i2 zEO2O$E)5(ix_!R{4JT-uNKU=MXX{14VHa&5PkP_W=R6g4s0ka2@^+8Ki8yrX{wjs{ z9&pHZ!}`yC;P5p2jWhJ&3?6c+sKYfuL>C;c(=J@6FL09mL@(|4c(?|2wG9Rg>kJ+? zqqepYkw^knRka9IhT-#v3?5d6Y8-GFjXU5lUjGz0RBgNdR@Iz)4mi{VH$ey51FDOB z@BAX}(?+>ZTjim^;l)#UxV=iP;gP^0`_|tDa47AEfs(iGS@O1Xz+ox!*bn7oAE*7S z_MG-J+i*>?(8P+Ur3ww9F6@BANU$7{$})=_jA_uB@AX;}^uhtQd!`~pLnXYH^nz$u{<$I-)sPL0nxJ!*%+WH|dw$qK|ir*ZDU6wcFm3 zxF*QWY#lF!lnaEEE4SAe_$o%C-6PohE9852AyHmDIPR~@z@#3~BdUKLqH zw6eflTbs4#L3X{tDW0dBJU^OX?u`}gO79&|xL?=l6YkeR;84%pW!dKzaVT&|A81CU z3Mfscly5ZdL>WqghGzr~-EpS$v8L1XtDLAq-Y4cy^}67Y`*!XBba`VVPUN8*bx2>p zYRk(HOTj}297;MKgM+;P(q#})OUj@j?c|GlprPs%DteIDep$66oeBFdBSn6Cll#4B zL#NKX3l3?cE86h>xjFNg2T;)QH!dNsvc(w z9A;Z|oxq{MQp8t;2HHW2O6#brMrVCB`$hKs(GXfALEev4jH(Tym1+?jWc$&qH13pA zoHmC2>}M{(9XWverWKfd@yHqNt zm3|Rzosn+Lv0YkV`?fUJhviXfgzcZCc98E+QmPlPI`A4tTc74V$hPa++8l0aJV&XH zmo)CgbG^QZ8)xQiEbH9d5YDOJQvW$SXnpC*csG`Y+v%@3vRdx)y+-NJjC5gPsKdtK zrfJVlbZf#!62t8Y1C^Sz-$S3u#z-iESiw)PHf@;ySCioa{O?M?Urt}3tcd4NQY}kf z>nhrV)m&fAa}_LA3e*yO`2GhjIQ&N!9R3gd_!s{ZKQSQq;^5F(|4;b)U;N_>>7@bV zerWfvK>E)Io{KN^Ys&$L{~C1=@cX><1vq>W{rCm-CC`A+3_35e&>J95A1Jm+5gYW? zY&;rqG-9qSkCdqjOAt(T;?`xp_ z^aQ`l@2_(ImikYF@!XFF=2vJ$YS!ywU()IwdJ%`i4ZGk_5K-&KnsznH_X3B*jbR&f z(}3G}Tg(REhLUvh>G=25`q4!LrX%V{Czm}mc;tYqAh1#^2pV?Bxo>_~07Pjzz% zx@n-$S(m1Jnr)C(GfCI@U7e?ki(}ZL&eGYN?QchKQydL7m8hb_T2_>AX(#2(=I3Uk zP)==r9@iJrASt#qEVV%&k~K0g!!&kOn8K*E6g~Iq8u5p`E&sCX#5wTg0KC&hXf8A!U43^)u4k; zN=IE7os?!S+A~b`B=|g2eGOp@HS^hTi(|aQnb~jZ(mC*X@Y~*=unzcSC(Ffj;S11ofqd>*0Ux+=<0-K&N>lwlGZ88?uurl zvhB7MLu{j^gTSE&4dw8ueOG^AGp^Mi&MQj^te0>{mggrt^&m^vmw&l@}z)oau-Ye2=MK?6GPn!S9H4!oRq)eyO?|HuAL=kDTy zW*PU}?Boq@r|aUS$W~olO<+;IUBO@{9h+0*~F$7xDfzSJ$`k!Hpf$hc_u(%KW@bLd`}%NhdKBl`)}K-2 z0H22?Mdu0>w$xyT{qb}Q)mlTj833s9<{D=*Ph$;68YAqN_bZCwqyrE~=;)5J&lqd2 z!*~myNjkrd8Zgtz=dia8C;B@mr(Zguh<8^@-s?erzQ5KX`;JAy!hKp0I2=$!y_dSQ z9rJx{Ce=k%pQkj(Q|yB#=!`4v@i6M1V8e=m*j59FvjUYG z*l*Q&h?&wSK&fWrtm;4aBzP|;X&*JPAc*Jvb08&r8z1qanc@@OM-pn2P){Rcrkh3Q932<(^4vx z@^>huRC3cQDN})`)UmkQJr)mGRv_f}?UR6^BMqz<h^97RphF~mzV5h^@_@`A$%7G>#gqPYvzYN=!8QF`lFv z{1}Z_U@%sJenBn4OM%YJw~>4N4diCLi9D*{*z3qY@(OYfe+9XRzKT3W8S?XjthZ5| zdz5`^7Ai{l|H|@hSyGt6|5<=K?zfxAGt?EuVLogFj-!Yz(Bk<+Ej)Eg! zM*iD>f+8MY`LVAfnEg8Cz{7C<8;BJjw)Cde0*5@GzMQvEn(;b{kA58$8Ly(QECVgU zY_x|m&>hS`Zzv0W;T-f! zEVPuQ0*CAeq&4~sCcc*4zcDug)gV`Pklv|9!564PC|He1RSoJQF(hJfB;$2xWM9-&UytTQ!ihL+VEZd@*w(`T(8%__)oju0 zw0&edX;6QMHlz*yv!9bq;|#Q)z$4l!k7%%xO9-`!NGU0UU;U` zA!54H_wzFHfZ(pUZs*f=?es}>#Um(XdtO9YeOe9pmKR#8yAW;Xnm{??RRNO&3VnzM zDiHBkpoZydIZkdu^ifIZaX?ZpOxFD>mu(U!3Z~Wqx*@w(vFDje5P!Yq!Pw z>>~GZiT>Vo`m49;m)xa4bDwt1171_uPjcA zOyqH`N~5?VS=8bvZk-yzjgy14!v}C}sgL($FD@_ezs&QT%yo0wYjvh~=A7kagKdIa zy-rjfeTnl^Dtkb`oX?bMh|beSk^eo)_M?l>c0-8Qiv3f#gl(3u5H&&eF|hzn)26$& zHcwkxHOFb^)2|a~6+Be*p`eumuRQ7f%gLfC=?9vRA^$~w4Q+78X78o#FWXZ8L0Lx} zof{W4R2iJzv8L0*Em(84I@D~-GpaL4X*+#S@KN@^_J4_f=4C$X9<-G7{_-OIERAXK z^Bwx1+jG*OK|==|s@9@Xr}7>Yh~z%^h<=-7SvYv_={L20%Y}wYPr4(&gZmdK)$gW2 zs?LY`ZF{vB&N}iwyUy#NF*}OeMMPI z-2R?)P7rYcccpcKL_8J`hpa7F8|`5Kt1(thRPMGh)Qu^&wbPo6p>exztf~Gmeccni z&0KbJ+a9j##tMC(CHgos^kp<|H_HFs-&AY1L0f&8{Q%n$+K_^X0*Dp7uH_|J@Y8+` z7Soeg)Ih2RpEba&@9qVM{0{f68BPv3l%cBG zU^47z&3w4lA?iU;82~L8*S);LoEdk z^|_)8)xlY`A*CoCXCM4t8aULfRxMX}9LqE&H2}7t8TK7v7bVhw>3zwrk;zLh8*VExvZuSluL2VHSERHru zEn@15BCre=3ZQ7Y3sHXC+7AO?M&3T22M$%cw(BLbvK}ZcuDvHblhb8&>7EPuUlq%fp zfWu0(rodr6##7+1BLxnXHuIwX1Mho-hbPDJbTpw8MVOL7v8TbIW+{7e>Zv&rI24?_ zCJEN1DFqHG1BV6=7Yrae5RqD6Na^;vK;k0qoI8;Q3YTy2F@7d( zv#rrmk(rM#oTT%83LjD*xy$#d_o#QNC)=ww)2=AvFiLW>;M1UWVIG(Hs3^*#F{=XS z4mfO%(K(5R&=RdgTP$P)We)rg+jDGn6f~gMSc5@6$C_ntsllYqL@HI70}kCZrD?Up zR2OVF%^%w#4WwxhjcuAUGgh-=Rri%`n#lo&s&S}UuU`5bXBMnx%u)+`<$yyv#CyP@ z(|)IeL&O*AUiud^wD{e)8AvqVG)O#+0EZI88mbxi0DN{USAo( zl_ed!zOO-uK4<2#n>tAS)+P6xNdmDtmwUlsH?I-<5;{_=bf`RVxafhyz7~Uri;D8H zqWjI5V0&iZkZr$a$BwbB8)KU{Mu%%=s0;I>y;xFxzo`+dPP2`h8N<1SX>2Uc;QWbM zY%R}Ydu0(j(y0@s%WKQHdgdgqojrx?>#MkNZVk82pTXU&b9iv^93E~+85H zV0>}}x7jA%;WMsuv=?|z&$-}mYo5>OiAlDplQ=g!juXTE=t|V1G`|Rk-xfGLhMb%N zObzy9i`!ghUwDD%S(AH~1h3j-4m4!nJMF^5DQc3hRg>83qeqirj3jH=H%FdULzJI+ z;IMWV9IE|Ss^QjpOm`@4Ft1ym;34~i{+7Msbrek0HB}nbr@-NGm!(YG0}oRvOLye~ z#NQY=%*=pl26ne3F*DeWlf181c#kTTuE6$Ocar~Aur$v9UTadiS3$!`)i`v);e4+H z4h<4M1rDkHq(Q?)Ee$YA4j9lgFvx2WD#}7hP6i5dGEtC|#bq{%^4KpIx~!&jb$(5xLf%g~hf$n; z2t_%EEbVAP)?1c_H2>JE$T{*g>g&im{+g{<>aH@?{Lx^LuMk20w@P2WLBnWGDH`hh z=x7e1uY-1UPZR^~0;O5}5BX@VD@UTH2+g%+JmyNwc7^!dmSD2Y&-*t@o4x@T7Ta-Q ziT=QBBafebagzoX^U)Z|qb-=redQqH%YZNMO%xve8uH)%vI7r~f8A;z`m?@{s{A() zDL%||c@*JdM^yr{nXjYx*w+!rc@qu(T(nmgpf{3_{%}49d3-~WLJUWXFd8eySZxWH zr5K5pVklaI!DulCB1P!qcY3JKa1rhNVzlzJW^U6|Q-Wl55fY&S)Rbl#JPZ~cLsdxz zns~hh4!dGObk~Lq9QM-Q=&7TPK|901VPlwf#*2Z&{m@V{aMOL4KAK>W0}a;<9QK=?zovTV zwEy*bUG;M3l+vDkL*#(E40*5UQIGor64mI(Q_Niv5tefg*A8Sv1+;O5h!&5&AB_i0yLJh_N&p7*kX9JXl%Z2$Na zon=&%T^ohzPNiFvPNf^9K^ml_1%?uk?s}aeL_kXE0frb-x>H&@hGr0u?jGuUzMr#L z^JCUxopay&?0xO8|Mxea&?Qm}8fv}eqqHy?vCnqiQhp1HSM~p9x8wHrAzxi;r7mnX zm&DK3sW1+adPNzcO#H!}JJLl%Ue{hH&?D!n+R|Oi$Ih{c+8C53U>FxU&|XkuPAf5*{r#T*rP}_ zuTV>fapaQN7}8u!d&3-oIC*HLznR={yN8fguFHjPP(5CgR+-COb_Unj?Zf0+{g~F8 zedfB>rKtZ^@L%*^a+MMDfo|f$t_cA*>X1Tpvc5C)Z#m$*hvFRt{*XuONk=)6W@FoeRdB09#+0drWL+FN=~-nIA+ zKKB^JWj0z~5(4kTzW(1ksury=z}!v8u*V>F@ryl%1{DJl;^HM+98zq;`noz;u*~=J z9&6VB9+f7L>(S0Ur$I08fjp}-j;EG{S=q=0Q>jPyi)=S)I^PMj<7goLkyGIHF>kYw zP=k}S>jCJT09&a7(=j&5xbwg2d}38e*Dh;y%wNL%|C~Pj@fNcI@@rfk^F*`%NlL(7 zb|ZVSk2Irjmd7dNj-8_y%V$~QyQg}B>3{r52VyzgH%w>d&eIM4#KhfA5|tXN7rY++ zr~iGG!hILQEq!0#wJy9R-$GGWP?<>*4iRq3o`Gp-{wi~fP}~(o`~-c~Xml+FDJly- zUUfsq6ay)WilfG|y(dB(rX25c{1{W-?4dKJ4|tp8Oqd3|lgY(OWg6Y1R+0qvwaLDd5OWETH^b1oX6dMe1NH|gfb`d0Y zI1SULD^a_0Lw6!6FUonU+y!h!h;jd&n%|5Z#ElqFfelXuD{YuCN+qdRb)vNt>t+c2B$yG-aaD;tCm@ezA^ z3$qbjT{N&y>JZn7+BOx?zGMWN+g$rV=`-M8N1|W-8m0D}29&DwwSA@n4u2blQ9IxS z3Cc|+z&s^>^>UFliwc2-yq=3o$;EiZO^b)w;$)6^HF?Z54-A?R$_ieUw%8CIE!w;6XRo-MwZplN1$%BGd>H(uNnbL)+nrD{DHy3!V! zd#7iVyw_3p2OKP73+s92ekC2sekny7chWN^ytAJr zfXGTQWX;41gUfhRYz3(5rj6Todp@qc%SpDYt0jS^3>bY6!t2X9YpM)?aGvzcNpSry z__l;3Ew2bp^m?%;ripn-i7n%MD#)E6zf2-}^@_WW!)RJCuEA9Hd;J!u{2U5cbX;B7 z4iDbSHY&F{DjrZ5nB;0(dqHWbb$pRM&+dkY0>56@Fn=nlurQ8Bd5B*7Fc{gZu8)M# zv(Z+)I6f43c|9tpunrX{xY#k)O*%EYskKzFKibDjKj`V*v(1^dolTN<*cN}E7K1hJ z$JkgZAp5m{s$i#rTRzN(9LFVA3v-<{sOnNi`mu8OL)~4?gnmv8dnlsADkfOGiO(w-Z7jMUPl%kRu1!UgQ>UILgT zjHg12Y`NHgV3)$Kr_Kb}Gdeno%!o=>pDm@>H1NgN(YVAFhw5|+6??;6nXyRh_W_S~ zngF|;j&Db1jv>+m&g@u(!vJ8c07D#T5P;*X^QnkoX~VfATNfPQN6!3WH~EA}}pm zTs=OZIb`})%Fk0SHX1t>t7Ak;edy$48HCNPfKCUsRv*8n+Binamy~t+Uz27UH^DIJnIMvA(m_FjOq0ECI^r+1L5mWr>DeG;HT4# zOdtu{=C*`KL%OG-SV{TXfn zo<-9SIr*t5D3RV2Nh9JnpE8S<567et^;^4oOef)8E#yhR(<1mn^SFEzc|>>UO3fna z!?J4t(*Ila5=AX$;s1k#L}qY3qBpJ9KHg5*?A9nWkV3v1hwO`b;mq5eKDZ;Azt z+0MFqPw(jozRns#2T$<}r;rw`%{}>q4n%>0$!F#AZ2#)ccU3(1_QP4D=#C3)>f2Fd z?}Pk_{iYJrQIBGr^gV@#zfHhY{=!4u7b3bTDuUF1tcKcF%lRa=%P9xSX)WzJp~=p2 z2%KRCYZJ?lg4G(kN_;TTi^!C;IjUc78pf23Rons%fx#~pKf+xYE6e5M^YhDsLGZY0 z(r7x)12;S7k|~LYx&_rhk4Urp5CJZq9fGBb)L)^RxxBjmz77=I+XD+?@#YlAKYx8H zAIvRY18h;*tXE_3tY;7TJ~1KL8gICIhpCoY-B4-9y9lf4ki1hNbg71b?f!tO7Rjn0 z-~8v)P0N3Sc6c3DDw>Zzm7npVSi=gLo)9i5m5tV9TNJ9v^>^+k4{;zRo zmrmFt;r|^W(acY0xmt3!eBE8?lRDSC$6=2NH;{2X+=qX~PEW5NR=J3OJnSd3K)pJT z0Ua$RYo}L^fstr4)aqghtr-=+mKAz-J%gTj!V~k);;?xqHN#ZtEV2WKOUn8667BX~Q#P{7@EsNoMhFRTg;)*b+bvQBXEHbX1vIL`Y>$n_GPVQS6B1suh_yvT_Ne z>YXN6a;?$h{r9-TdhaZb{bk)f{Npv`a9clz|Bchgd(F7$ye78Ub{4iQCldt;en@o7 zvRvC}33A-(;#+Z=u@%!HJJtcdA+w4GI~O8bC&}XT zEWNg@P>hJ(QmBt}!yzH2nzFur1%my(*M>g6;K2Aa>}0@JU$DKK)qy9Tl9Q1%+#%29 zDqXB!)gG;=oGS%DEojpO_J} z;}&-K>aO;AE(rT-B%V{6O%!c0$noemtC$*-b zqO;rKy&vNfNIb%|or#88#Oa=0ajGuSS6X4|PVvzO9}LX`#T~bItPFTBq=cAhe`0g;oZI+* zBoiCsyhPB+HU(!~|0x_LkaN<5=>4e&zt#jm3%s;Fy7|wdd_sw4jU_bc@s@n6UkOO<(8%^c35)V}is1HNgiVV5tD)CT7pp*M*?e-7ER*IaQ4 zNX3!(lLwkF6n(u|P>PxTrEN*7tj+yb7f7n}K2;&tUmXu|MS*?VzDeT7ihAck^YPQ) zwVvos011P|PgPmI?*N8l!5cYDWz&JgT%YAG8_V}au)SqM(sQDTLkJ}DGn4dkSqRH1 zLN}0G{~^sfuW(IF%|zGQX-u=^uk^6xF;hXeqE!D1=Wjy-gE;F8)@Ru*(Pn#{d!5_6 zA2u1*a7oVf=y_GzUHeTW%vjk#M4v5oJ!dxCNzIWygHJ}D^fhFHSoOl^EHid$SjI;RV}@z#|BZ_SIr*A^m0t!07>j6EifWQr9B zBYPvf%Ag84!ifBroIK)xp8Of?*?w{gjJ{Pi6~(yM3Nt0))~H?IxI6nxl#^M&NoBq1 z64sng}j%rm@u0KvoZZ zXK2izSp6d;_{f}78s)Ruep@^k@Q|SEzoUa3LD9hpSCtAk$yn_nNq7#>jyKOmf*DK2 zzj@G(yFX^$AJL!ap>zMZW{3MTI-e!5Wcks|HbY7pSJ+a|Md3ATZ;j?M@f^;iXsdd4 zj6Qb6e1?A|*kn|gNq4O0r0=QYf%}L0$M?#Pwu~#4yuz&Sz^I!R+lhrtSQH!X+*=Ld zxy5mUGi)zJoEcdVX6|lZ_(&%d1ohr{>;MBRK0`)IgK(r}Tvv%Qvpq6#priyC3JMv8 z)2IT(M>^gjbq`BjnMbPg219_j3N{2@zz*^Uheq+OAhsPKPkr6cH}s&XB$!(6KCI$( z)BrW8SXYOifBp1IU3yjG3rG5UU@DcI0H8jBXabBF9e!H%-$6zcEFLDqL8cSc^X#fVr>l%e8A146 zIpl%lPA^kjY{Hf6)(EV`bvkx#=6{40s@+UkgFJLLlK2Y6uGH~TIVheeSPoi?w z@ZQ(cmGlc1cHFL(t&eq3E$9@uSr<|BS=>Eu+VA0N{bZ!UoWX%8Z}R zL)!%xz~|5T8Yn#40`qg%$g6iY0w}x>YqqY+y(+y!ur4p}88_=$ZBC-Tx{asFi-toS0^_u{xVV?HgLww z*zye5fqsAbvH1FoIaTv_kq}1}Y*K9E%!7K?XJYJ9{+;4Tt7J6879@O6IftRo2X)Zm z*M^Fx!dJHvN>%YOO~%E#-BF#u{a%?v^Y6AOq0c3+u9~U5{T12Ber@j>`N>rmbi=Mt zvA4bJ45h9$4@5!LQT@(-IqxNvE`lYGYoqdPT8?4r(7SFZy1Z7U7D871#_0@glV7^< zg9pH(;fkl_w)@V`^(i~c_K93sd5rvq@J*H>41fa2Zny|!+l#EJ-Yb71(B~hqFrqLO zw($vo0ubV^?{8y8FQ|+6sLhBKL#tjqQ=)d;FIsdK?&}3j{%-3RZ`mch__da`CKW&l{@bh@?VVXve}-P#dhuIfFex9P1~|rt8Cmi*3<*W%J-46#d6ta*hmY07G{HZVg1GeRo}tm)F_*tItpr0# zm=;wyEBYy4VEt=A$>XWD!Ee^gf;I>H08)0)#Ez#O{*2>-ihCH z2Eg5Za$LKUw|1k52(`X~R8eC>!qfo4v?DsSc6$&VB2WbIpMCz}5MSox2A~O2+SHIT z3=7@@$vy2YRw-5DKk#HdNjzFDdf}7tZ-f_Ia4=3APJ6R9Qg;%(FMQGtQXoa)6PV3F zoozS+Cz1)tfJ8n}h#Bso6R1BNXDu!Mw;KK2;xet$5KT{n6ecm+u^kkl6roskWD{o5 z#Y!UMA^r+fV)&NWh(!ErN&yUx6`!gMD&uNQQCvv@kiken`2lGSj#w3GDSHmBmr@@5 z0>#~p)KraYq-bFlj96G!hNup|gGlgq0)z|I?!qZk<`*A8HN}9?1t0q56N~(ifOY>F zQ~3&5DvFGgOr4O4;II0r1dpID-#VFy27eLT?l(7@!V|?2&E){ip#_dc_wq%V6^DoT z%-qRanECjUF|N3P)QX8g1EH;DAQV(DskmX4A+lmpfJH*gGKTD@?a=8~MDLS` zBYRUJP_(H;d(`2#8Qz=8FW&aTWAH(v6b0_&KnhassynSA5JjGG+p4uz$LH;vf51k+ z8J@QHgu(PKxD+9iFm2>!e4P?i5Yz7a3)6_O(v=( z3~irdNIIPmu=w`h>+S9#M{-pjMyE+a*#9<;@u^Jx7HqEzoN)4^11ps zcis;4CV~A+)3I@;vnh)OJCj?K_7Pi!)iOpcjxMUZDV%2~z~s~!^^=5Tx;sZA0QK&$ zeP1m|e`ZZflBKntm}8#$-9|SUljPVlz>ZWrYqKMpwrcfJW`W3rl#YP4Xcvl0ZV^Cs z+KqEvU|P;k0ZU1Ebj4W-3i%oRC};~fQfI_fXU10oSq->YQhkd%G9JQ}>F4q%t!=Uu zdc8%2e}{#zm7r+8-xC|K_OE%&%yg|4W+ZzGt1nxUC-B{u8%-wo=+zaeA75+k_Afg3 zg5pjCqOm8L2%*IUl%)FZ~6Q(Du{EXt!~|JkS)GP?b|}SlaSlqs%9eGp0TQE8F90{E+-zBOU|JYs2FK zc{d51{a_mSxt(ruz+TxEC~+MnU2vSHY2oiaTEo#?NywB)rPk&seQFVmu$jPrEX;r2y~Ie8{A zJ9^|J*clV@1(+_2F92L|vv-%Nq%`lCmovF0ll;2~3F_g1GbGgNQ5wXl z3+mJY>fi=mf=XJ3zBi7cu{Lt?cv}}Vk_wY+ao-V%%dq86+(7Bl{6{z(rw6H;%8yO zk2l$Yi&=1&61Cn!{S=fx@W%eq$Tq($b_DG%pQTDuq{{quj^%j5xWKd=ol8ZsIuS*-7-(wtq7E6r_xQ{r2^Aja3ZW#YjOHw~Aicn~U z>fs_>bX1C32f1=+-`46ir61JU+p(Xm>EgeA<|M7IOs{V&dNP)J?tcx>d*P!6fI~aJ zT;~>$e)=G-ySklw_29jGeX(?`CQXIQL_m@=@KTuxz6x#kb!I*)k}w+G;**{y7e7!5 zkX?%VE`23Zmsz@36Fh^xz|_aX$Ld?8!=)xNS(J)s`O-k{mLH))FD(lj6hN(OgcW!1 zXe~C-C(DQ;U8APW-1meh8i%&97rWuxK2CZK^bdksIn(m>tbR?0rg5x*?U&1~GrtGx z;{_w^YUu}3^x|%usPXR~UBWRE5mUb3=XP#Q(ug>74%Lcp>zIr231g$kUwMq_q)v9S zc`{sseyYjS{-m6?Cn1(z$^-;w?OqY0+=mtw=}fxU&Fvjta)+%r*lFMRZD-bSrW3Zk{jh!qzVHE0Tl(Dym zPel1F{*%s8bqsKoRAEYIDVdD~+HGKm9jX}7(#(+%u>ct?Qpy)w-HOU;1pY-)invVr zM`6jL{buj>za!VxgvRvu?JC+xn^p{Q8ortJNsfP5d=;qv zm=GT$fu{F-&s|qiTk1W^7$ci%w9mzLVAO8TlfDafU^dv9$A8My-o^qdImCX^+-cwN znq$|hVqz^nEF`((*DSZRJkD#2u(4oC#`IhJ`;Ko$1LYgn_mY;yL2Zyf15>Zwt-629 za+L;*A*s#{9pyxCTl5c=o`*EuiE0Bt@>TKH@Hh^R1wSR-9L3C+PvRJLG2C%AdR(n) z$#8-AlBQ8=WA7Ukd-b!ak!C698^c-7?7 zRh`pWKM#=#{&sYFO*B?qc=w^>fub^p!LR>Nc&yLY==n#PXufd1@RF9CSZPC)zA~%j z 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%0DN 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

    Rsd)l!Vs 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≈po&@1r( z)3f1y9XQNK1F+luN2GNQ8;EtuMjD7U(MMrp91))1#=sEYQ`l&t4@cme)PO^X^$o4) zV-OrNU8zl3`b==Bk=6ztR%;!i-(%a!zVLa$p{6P=!%ixQ7x#&$-y=bS!*I^jHwkFTxsan2V*Plp-`_z0I7=5&psLZTZ@rU1(3fdV5#Xm%e{T8IfLEMJoei}*lsYhe*EMP?5T0sNqy3M@>S@hG@m*vO{WPCP0ihw zrc2U^_L6NJp`jNV;&b28B0l(~QTRtOh&C>3ROg`r`jMjE8(!RJew|1|h&&D7nFG=b z1c&fH)pmv5S`lqvh(0MN1+0vv@SHPR6@4wf!;&Bz1lNhN_^wW#gLWVb4y`IFOF8zz zaS!_Pu$_%hpViNHX~SvsUmi9;C)OG<73ekC&nA+PfY4b&W5eHPM&FlJEI@9K#?q)JeR~7zQDs3a@oiAHgABtKFsdB7Ee9l3d5} zX;vY8m+)~9|CQRod11DTok`r^BN??dDLc7|;BZ{QAtMfl@H!wnIL|k5%$&4)U42qV z)9H$?T1}gzeV_coV?C)DE!`4Tmu7i;g37IGR<-Wgov*H%VUKI z6csAMmcI!<{N@5D^cE}PBRXtdrFoLiCaBH$oQ}PJ@yH#cV z<|MYK%5ooVkA4^L?RJlMriJw=pAa-2EXdO<3-Z?0MR}XG5mn3b&h=$^m#I!US^IDm z?a^9|-qSjfj4WKk_VCBAE@NMeCS+-wdHe>!;0%6u8ov+!dt<6HDbVU3bf3a~N%8$1 z+^a0{kYOET*qTv7L)aNy#ytZ%junUfo`90DdDF1znQcRb{)PPtC&myM&Y-`T&M{+$ znQX^?gb~UM9B+dN2noeFer3{{gTvjQ(Hh_@6 zf`Nwg8@SGbLtS5tDlBB`QZD&kVWLJ7n^dK&aj0oZ(Y9D{$k$9&%BVt)Elwvn$(>_V zLkbT0ejdlQf_-r;R>vIJrqEx9^qEH6!p|6$NKm+n-&q}nu(WAc-QbWVloTG~_*Xcl z06&#J5v8e0ac-y5e%L@b9|Wm54=c>X1@Sy-xdAL$_jHcefzh8h_w;ErT`ZOy$7JTM z$LYTxqek0Ojkcv4ZTk=M zBYgIwpZ&f3=+Eng^$pc%TdL8vFRpqB_bVw^TGB?U2ZNuaAO6|jLVx2D-*bH}glq)( zYDGZUNc`-t8>s&KRsAo2@>dPi81@-8+Ma5(E!Ak-#t_ixFON~9Z7nz?d}}0rRg=x@-tCafg1WV9oXTW15R@$VS^j?~!4dOJg>VsyiBp~21NjioYv$ACi` z0E{#wJS6NhBK!*qQwFHeu`_kRLM|Xng&>TAh(b~RR|Tyc)E|cvgU*=%(nc>58rn3d z({PTMIWTV59k9ia@j^Mb)5-fsjW(hNW9*>!`iVBm_2Km$Sg=T(REP0UWgj7)4BJnjP+va8IjvJDR1h<&tz= zJSUwO&r3(s1?g$NBm?cO;_1dV{k@XF`A+)`I2^}yV!9U_aY&=D0uGOfI6T1fWMv}{ zRdA{_eJP$9cM4Mr5i6-o;k39#Cx)q36e@BSlB>~=*b>aof@&| zJ8L$)?bMoh*Ab&ZsrTV{ups;gPTG|ZZ*3?XSc5O_hfz(ZC=!s-OhP6I4r2kG zRXLW9%49AM=O`}I*!K*cGe*uajhBJ>a1iKlpnW48qgdaC>o~|lt)UHHXB*D8yqwmQ zCEL>+L_s@=dz>OXRDj6;!NCq^CN)zq)wjuR-NZRH(PYjn=M93x83!1d0S!ArgRk%6 znSZc7FAsJXTnJ11;qW^{n)_~EeuaFS`Tfy zt@B_sYU(X6vQ8o);;8ImJzsOlnvd(~8y4XV&g9^1rkHkxkzE`l!FAvOR>TZuWg@&j zgA((i{e*)X#PwqeXo5r5KGZs4Y;#$A5bY|jE2BvRo+0rL^h?<9k$fVGwkL*mAR)_n z^nGKj#~PD^v9KKCIp*x`8)zRnfWx{o8*tz_NJ`mR;Dk#|2^rG~4E5k}-vNgP2EK@1 z1RPeU+WGpHvoJ&R;X45H2CleBnMkE>zDL4!Td=f_6tM%Hv{d!H<_px70;eFQ6x_syZ z;LtJxb+HI%olbv=*#L}_&xt}yd3;95m*qqs2yOTrAt3>xeeGz$0f);4^y3X>;GvBo z)ksqA*BP8MH4kAEP$?sm1~nk8nOa7_TgH7k5erHl_fzYsSLM>_*W~<}({k?Y8I3BW z&YdyQhm15-Xn6WKXxKof&*=A=_Vg0^HbxwN5;$b~Ql>7Oh?xm8_SpHKIOwnl`-dRF z)76Z=@~pI9Iw!4{E=WsrleC~8ZE3kI%?c1NL(PsZD>$^ku}+kpYwi!n%BaU@h}&7Y!J>&=tQDbQw_BYZ($jUkdb>Ndj$&U|dqbIYskJhn z@jJD$;84}uE&aVcGQg-l0>nNOg;*brXkU9En@-z12%8Yk%=k!DrY52?Gai=dv7jtY z$7M7(EZ+XJGL{>V`La*Sg+9FQlZm27CPzaO4>2Vw>pr$=U)YO&kjJbrwS(u(eco_> z>SVUVxoIG#jAe8t`_obq&r&HXbES;Tmzc7;R!fYi8HHfuEtX=qZ->O!dO>>6y(;1E zW=RiqN_wD83PbJUYkF0@7f(pZi}yja9mDMs^|i@F-Y4rbaoJyj?Y0m@UlK(>it|t$ zl*v?=l!BM>OthelxhNx%Hkr=$%XF?^Rwsk9w}@@$LQ;%%NZi*h8Q7nx$bcjxeNew7 z!b6h4GsXJG3AAC2!J)sQ8bu*e#b`iE_}&QGjiYJ+4ha-pu&_qQfkStcp~?*Gy1^l3 z!J&aeRdC3eGv-I~u)zopy%O{%B^1g@Ae%H5%#|Zna(+77BR9|&q6;X$4j_ZD-p4{-%Q$C`j-&=@5PY>t~GpX!Y;x>*xd>OA+DppNhq)aKa@a#z(7lZ z(0|8!O~*IE$#bxkj{%2n*>MC$8rrc0eeZ~$y9e%%D}})I_A~kt``jPwaZXHSdQwIj z5*!ljnW#nj9E6K0Y?qK7EIHxq3fJRzXz%I-Xe{kGhT7Lwj@?bWi?-Hn*yv0LuW3># z+R8W<)^E4<-I?v;%FLLok7i|o_6eRlrY&V^b%H~VLF8e3GOH2o078#zI7W9y9Qvi! zSGE4@emM#M7IG%Z@_i$*-nV_t3A0zYFZFXdDLAjX&U57G27NPKR{b?2lWLUy?jdx; z5no%`bt?KelymNFq$ndm4>+a(f82`KiR#bHT*#5ej~89;-uXgVIA*7jwhyvdnDA?DPgn= zW~^#JqQe8|bNe;&Fu@51zQJk=Y$%Jqg_GY$VV9bSL)ax)vdz%RCt29%9J7NxuMvkM z1{_x4;aD|oDeL$tIE2_mV&eE6fXXOFjv+7tlWARfzVy7|9CJxn82m)px`r+(fOP%V z^FP5HbXVq>0koxgo907n;+0X0M7#{wCLcE_h z5Z7Dy=hkPn{m0TtVA3V>bc+{!JbW9YU&}@rZ?qw z2iU$+=MWB8HNwRVPBZe5P_YUQ8EHu4onSKM$be1@3@!BJQo$iaXTTczHf5=%_ORe^ zv5fCqa2Qp&!Qo;)45KVc6LuWcqW$}Fn8qTI* z@Wf5(On$Zk$M`sKXw#Dt9F`)(6>vBPr<)Eq)4MbRhrXUp@%J+dhJ)EAI)*j7{KL;y zz=LfoP!aN06~X%m4816p%tOxs^|THWFp6}@(8OzvP{g^WG{wvMggo59 zd1rk~&SIqS`gJ%TtT$n5PRz&?To+q&;++G6MMA}8O-K5*!*%)S_J)Z@bYS9l9_?%T z(;qy!CcpL6M3^c_eEX*S&fB--ci*`!zXNgkyYHIU)NkW6Zu^5buPcPqs70nweZa`Y zeNA`!^*h`0;mu9?DvRV_U(?{fjqu=JZ&3+>bY=%IAV8s zF5q0>h9k$>taMC|fJ4GHm#p!=jr%$4?~^cV=5@EoV0W9=b0IM7?`)BQju!FswCgiz z(+J0yip4*ywHuh8bR-qi=m`$`q9^#oZAknnb ztV3(SA>mLhIHYtC!!@9B*8zw3cNSdGa87P-&d5zTp9F_Sj-UphiK&#cWhg??Zhj?f66<1E@Y zwtJiv%gGo_-xo%^YZc-W*EHxg3U~(5mNN2f7~dI`IF#{wbT<7e`clq1XKf2kde}qz z#TmGq;l9fW7gHtKnk=dl$AKJ9(jcgb^tOwy;o#v z`nYHZ66m{N6HE{W1iUiTdRdy!oRTxAUX#5Cd91qF#h+h^a86oeHsJB_l`C(Zsd$H`1 zu}rUwW(TB{9hMo`IALFp^r6k_$FcUHAFQNvZIg}{Rhv1ly&bI*Mw`rf zrt>3N0}hK-Ejr+kk@{LYZv@XIUT0ya4PM5*&RUyo7bMVfRz`+9CEI;LycfSB{*IHd zrJKY*a9N_EE}1V!Wp5ES*IXQSoJW@P1G1Rylc`vzj78eXWE{Kx;h4{NAJBkkF8I4x@n@VEBCC zkU*v$8XCP2IE0v{bgTh5bPwu&T5zcF5Sm6?`ip?W?YT*u?}GSy3BSGK_a!6{%!xmk zkzu^<9SBK#mq)s~y)rl$62B)Rkw9Eh(X`|fS@bh`nJN}#wp5aZkr7!L9l>vm!e1Gc zo#}DdM`Q3$;FH4UBP7)He6Wc*0gsdNIB?HsCZL&ZWqD(78OxQ5o?cmN2oB%5 zzA0~C-;%d)?8rNZRq;Lb*7fb9x`FKvUr^5e>P0YF(XBms&(ZsM|GvV=UAekCC&RF5 z&%FGSoO|^(=#-p$<+Pl84gJSS^dG0sOZ#P}DK%}6X4!zf>*b_5h;}bi5Na6>2OJh7 z<{q_RnrXQ?_|H_=3y{{jgm1>Qqcz}g3N{>kc0xmfK??(_kwoa5>A!Of1D_ErYPOsi z*nrclb4Z!GfmCf45oXgdzNLkTc6@|m3mj*l{m(H4E$2~zg#=L4QE*5|$H*c=1J=;r z8c!$`)EbDevzb=(5KF#SfHlKt#Js}98?a|-^AZ-S?Q3mbytb2|D}tR&h+}OnYiAMS z@HgzSaCxXT;mh!&tKg8&9G^EXr(ol7k}{)0)3|QqXjcq4%pLJdSuTWrtA&L-<1yJ8 zi^(?njcqJh*PniGBU!j;0pkID;wv~eSK*^HmH~=J7Ai6W5By+9R~=o04}5L@s7wt? zlQNd)ns88s-*rR73Ot1Gbnp!EcthP2M@zu%L<3{)48@t5`-qih#S$sYNP2+xoug80gnPdpBm#A?Z z69F}k3qB+Mi&cGDkQ>hP!pV9G)|*GWz{!|w6C%U4;4lfFD&-rLETfYt^fB6(p#Pv> zrofP5bTTL55gO8mBiO2dF9QzQPH<@_7!aD#_hTDj)0!@DtdEnUd$66W1ZUW~5;y*aGbb)09$d4=g;~;&I`-1cWmLhw)(* zQXr|G7*PNL5gF+f3UtkCl6Orwz55~5mUIM4aIY>OHROG zTZ(f;;AkfubL@bx_1rnWvKt(lNszVRkbY~XFTmkZXh{9)f%5qe~nqJfxv)!666gx$i18)Rd{{6crNEn1^9c@jd?wWup%10O&x!tFzUCXEnl2 zokJUOSOtbGRE(uFYlt97Y-)P>Vcc2qz1I1{=PFN+4$dl6WO3^{MJaE; z#C-jdAmGHYX7L{w!8n%k%S0w1WoQcLb%y5{*K7&bZw1$J71wQ@vq|CPsIv#7bAR5{ zVq={)cbXcvK}ciA4*t@(p;5!ZSIEl{hFz@?B!Y3JD zufm|=j?2>9(j@JdE=cpaGpg3}XEo}ux3yV@I@`tH)1@g6lQWGH}s(??f#!g7LSWGHQ`2Z?8EiZkZPKK)(HGUzjeHzx5G|%;Wd9 zj^?!`Em+T5niOkHu-?Su&9c0{HKplpuD}V@8i#gZ!D&MX3>6wW0|!h8n)cwi=xGs8 zXR{0t7Iw8tAEQ(|@EY&=Oe#2ZoFvY?P6Y7$vVKt_qEQn?Eb|ej9}CKKKB>@f9QWyX zG9(jhJJ_ZWYToL}Xjf>$KlM z1f~4%c2@Zo9HUK~8;#C{Q^#5lS~CZ23)79xp*<<5LQ-VpRoE2iXJlv!&TQO2C@~%U z9g>KnFxq4e1~V;f$U9_~aEjwt&$fFm&sm(D2@A&!j^#2OR`$EBmB|QgMrv=C3p#)^ zn~iD2VYsJFeC?NIcj2=Eht%uWomz(tz@bsK-eEmBe6Y8U<*KGDy|)8xFXJ9q#Jw=D z_XB4l-{s(h6$i4c@R^M`yo>wgIB+;SQU!5;L0z{_SA(U6RfOAe@t5JeD_ZA)+fcWCzP*n#H6&yNF zw}FRMa99P1ewj=%qK{FBK^Z4RU~MV%Ij_BPLQb80O9bnTu#p;qLx^<}FP<~taGKyRYtp7N5_g1<0`>->K{4Xh2~4bc#6Hdr7TCUy{jP#T zoKu3sHuRH(Z!J&-96I9r7Do!^RF_q4%?1{>QZ9hliuFbgL?i%gweau-MEGbyAb-yd z4x27kU%Nz@Y1NKnFk&QPvyladjyl`gq_drBS9nM%DD3Q1byq}?*eOh5S|2?~DImmm zdli;dWuo$q5r3x(zoP)rz(WOyJ)O1c?$qc#t*?mBSzmC7k%=5iVA8fU#EKj1%S}DrvY)HoQy;4l|NHWwezJVt34WjSsZkC=l*iVc?YHN{h z!a_%#xQ}_hY9mKKSqgk{Zrkx)fr;#k$>6FYSjKGZ6s$zk*ZQQ4SejiLaa z-$9v9_Q+VcO-4d(QpEoqiQyR11LEmADMKBvN~rIwg!|8+k7$uXtV@!CR!K#>p+0E9 zEMxr&4kL_^M*k4?dC-@5v2C@+Atx0P93EHW@Hkm;cpN6-42VN7@TFx}1X{r>)T zxm*|T@jlOU-}mPhcZK#g{InNF3e_tqyeW%YX^uXA)6m#9Z&d#8KQlmk71uH0E7}dA z_Wr3efkqaZ7o&rz$*NKnGP^E7wDA0&H9F$OsJ@igpgZ;DtEyI)lOo-g`S7xR! zSa?h-y(Zj$?x&W%dIzlguf36jH)3U{jB;krYTkKVl<#-0|9yFkDK|u+myEh_@l3%5 zC6wZol8hDR#~iqQY}2`k8w)DI!RAq6P}ud==)kvs1~+jT$<|y@b*)v|PEU zteM(dQ$PN~*1djRXyPNl9$7EYK4coC>PORF8ziX#Sz(84o%dNrC8QRf!lHAyeushK z5td1nA*udl0g4?760dTPDfk*Cb)p2#6r-21#T2isYJp{PwOrwGi9N!HmS~3WoKPc@ zmMFR+Cu5Y-M8SABJXF)Ejp+vS-u$6M^l;rfZI+yIVY52+yy$0>)DNP`ylPq&b4FE3 z#k39b>N@@?ENE5M{rX&5x5AAhxx@sbG~v#L9Ys#VW$8=c325m3SaMIBb2`yaP9>;9 zgnR5Y;V+-Ti0e1LpJ=mbnWD)?d+I35JbJCPk}xQ~e(!)jQ}5a*e;4?jsfG|*BizWl z!DFRFOF8V$z4Vb^Ma3?mlcnyO z+4IoXzYy+@9{0w};PU%_sSzkTjtH zE#PqPfo74Qyp3*hj*MfDqi|CoVjKak?a^N)I2Kv!-?*c28STIHUh<)y3t%>2^9umZ ziJKyoJ6##Lr5O_E2bMr+lG=EX#3`67Cx=X$QPKlC`wwjZ_!EWtq9cfI@PY^z2pctlo@VZ}&?+A3x`HGF)rnB4-nz`KKM)uCGgKz;7%`Cj;A4B$5@N94~mwiY(HN z(5Tdn0s(WGuUN^bjnA(9(X0Q@cqhQ(4@F%PWM;!mXZTxZ2*s=_ph-a0i4tT}c)U@O$tInAYGcVL6%!&uoS8 z>7X5?ENU=6Rp06)!^#mTbKQF4U)9evWW*>(Soq~y>}7l9&yR2%Y|6{mcUf!&r?_5~ zFU`!*avS77J<)!?Yu4losCWs5#&-n_5`F28ZXor5f(i`PE)UP@qiJ z<)!Kgf4W;RuiUJ5ZEzkt`B5vFnUM5#Cy(r3qpMnTrfYsrraf=4*voL2q|3|S3Ms{E zl!ppycp(Yb%IIJ!`4U?2kt+Z6*Epvvn;a8UxRqHhD4Y59dsq3Fx)BPgq=h5*Z@(0O zpa|3AQg_6iUYxaPyFF+}kt=jZtrITzwN5AUYu#uy?Ss^{tB2fV4lz6Nn)Sa)YL2w4 zT9d&^c}$hs4Y%9j!q=qaPb)qRTdP0~@3rI5aR6NY(y_x^3uxfk?${Rf?XwTK&V=4( zdN=^#*)YFWFS7e)#?=64`c!^iF1#r?GAL^lO@6Hb>kDceHbhzMcX zMdDf}usFTdJFk;g*VjYu`4n=9Q(>fxZxVQcM*JrvbtITkSci9#7db zG*lvr#VYzEr6mLj&M=pkyjRlcxM(U1BYwnQDHtkLpRy>p7?(x`Ur3M|$warkB^ka2V`DwZXuEXn#~{@?ZOG}xlb49 z59t|?kF)^lH2RszL5iHjABiZ``CdRGf%W$m;nnRM0Is*Q<<`!WIpLjjn}-DXB(IyOFlJkWSe$mmP+vCHl^U z6h~q(W~uz$&-kt@=!#tA_6%F(_Fw5)no=mD&`_-WopS zFz7|;PtiXBUvU)ecWQ;hl;v0w*^`r_l`R*>7uad+4<{7sJQQ9`EsyJ{sahrvwjVKz zPen*;Y^vsBoMzczVR95p*lI?(_TIlUGc|RROjLLaz;H{HFz9DkzhX9(g>#5WR~_$N~^%o{7-9u}f5sP>;63%3|0Qsr6zfA3+95?TcK{mTe#X=)YtfZHEYB0EW* zVOCXzou=8mt^LF%V+0Ij5N|eAN_-4qMR#Of_{(eejI^+B;ycP}o1mtX3czH+_4{k+ zbAFc0a{UenDtks1zIR}|dr~iy7=C{1!wh03qvuyYqmx6mfW#G`NFlX>8&-<}K6>71kOA#=#elrJGnIsmL z%2n+7H1?s9gKr0>9hfc&@?GmJ2UHfaK?XjS(^5Uqxh{{j4&nvz;LP)sx)qNkQu_Aj zr(u-d*E-kBK@sFHCEA)9R4a&xKVJTwR+gte+j^IIlKHx#EkaoTzVr)H^}6?NR2!L> zpCjcg1Gm8omBBDAY<7vE|eWb0KI!=dED*<3cdQ(0np!mu&!BzHlkeroJNgegufO$AX_=gdo4 z1_%Rh?O5zSr~bMR%G&~Vq0T_0t~`ePDCHt(psD)TW|ke3;cTKuh%8f(GKZ?iTNR~n{68*_D!h3h`n>0Rj?y4lm!rE0g`(hbq` zRO*tZ?JLVAMzfk?#p@g@1uJwhUq@mIy0@JgKf}UF0T=dU4HaBFG3@hYi37CL%IpV# zdg-52`0FCz|DHx3UXPI6#P}SQw-XT<%skYWMrX1szh{q3JY`n^UX9=_XqZDz>A#?EJ$x#jc_-Nl_+%- zjf_^;NfHh55V={s^wH1lrfT5{auRD#%-YMJPACmfAb{UCk#ZBUO6+jyoV)Wz3DMn$ z7vftfFOhTEL_!apRP8q!fpmG6fDBa5l^D4FjVs1Ba+6c3|M}Q0y6XUkgxWrgXi3IP z-u*WE9rL_F=dZYS^2{cA`*mkFdoATaVma{m90l=#jP~gq9Z~oGNK0xI2~p>UBU%20 z9oU0|C60p}^<*8`BY8vQibkR9hYX66==qQziVz)(1SRX54oDy~0)Yv+c^%KjVM;+k zZBo)7sG(Idyu0MU;N3|vr5nzx4!aYhnBj#`8WfEYj?898DO$ZdDw{<5iziw@OoK@1 zqYRo>fa-~j58#FBSrvt}9niaVF3HlIy@?9g#7gOMaw8o3{jZbHl76J~)U`8b*kq)O z=QZTzjY;7!vL}gw6&^CGfES)7yb+^N9{;l{5@M+@uqSWEg%@ZN3=2g>pXl!6p>i z3%$LA~OW+c%A}vPzju!YiCWn>u^|&B>sSx7e?hw=)BUIv^yT(FQ z;&x=kTl`ndg2Nb?%!O3lO%(CsWVA^rn4EBj8_I^wPK*u>GEC9dG;UUc{vyJ@rmZ#1 ztIWIf{p}94R)b&_4&VGpa@C5t{FhE;1y7zJ8LFDYsli5#wJv3qdt3I1j3~P=OZ7dzW`{YTTus`qM;b+GLEnlT$~+&HPmw{X|BsBt@{sz8{5h}<-e<5pDu;8*-g@d;W8RDBn;kAo_aM(M5i*|4u{0cDb=zaQ} zpfT5BbssI!lfjDe)>l~b!=cpTWF$P$LQe3KAF~OvpD18*&X;XAc9k~{%14Q0rH1zS+R5(^E_YIjep zsDPq89`2foGXLF+%d0TD*SIRzU=#g?<_nK^`5?3Ck>T2Af zqLgc|#Lb3#Vqq-ZmDn;Hdv=L66&bO!DpEWhj1{8ZhlyI-Q>BHZv{~UP-4|QG6UeOJ zO5=TRz zMc@!rjc}pjFJ|jy#)=e1{@X&!v`|LRl6w{z{+5qEw~Ah$PEN}rw4Ecz8)YGg;$$tz zQEJs-oh(1jN>Hc&?bJA%GgQp1Z$~nH1qaeME7bpY#Hr(H}+=Dp6H)DkM2V4A8=N;NmpIr~2VEi!6Ju>PJ19Qx6gpDD0yhF&Vqagm^RjYCD8e8H+GH8>Ro7i+{d2*EdFJD3~ zdVlQ1w& zq=IV5z>dX2+DAB2=})o$#ai?_Uv2&6oV?Fhs^aUTOM5Q_k?(9hyZ8RTf>wh?skIn)09Y)Z`SyRUBFnB9UXzhcy{+hAh9EXOJ9y)@&NpKc^J72P4rF!+rK>d^F&3xhLld zy z`Ay~fvxP8ixxKbAHbFOZZYCBv$oDBVZm?4ZMK-Fr=hTU2(%r_Lec)yo%|0Wv^H|V$W&Bv_6qTmLpKb;XZ| zMmlVH*iHQii^Bn(|9Ri%q@}NS_pdeCDf@ihvgLc+z&Z2$FTY{pm*h8UdKZ?bVpCVH zLZ2388GaCiLDZ(FLsF_;0107Ko^NvpsyUT=ua7q+G zq;HyySufrGvO@AP?Ex^v%@Wf3AFWj)gCArcnXfKiSaeWv6$1koD&iw>?+TE8Ljo2? z@!=`q=`_*AXs4OBta*H~c0z{@KKiaxbVHNam&~nELY36GMuV| zgU1#uQ!2t*4bNh@l$)h&Lh1i99tv}jSMZz#y^`@&_5>=DnLs+L@7I^m&O-nmj5gKj z<>}fO=$jtgDkz7HCj1SB42+;(Fc%F0%k9*W{mKj1UL7l7*E|V1&#_h;Cz`~f7c8H0 z>Gjfx#b%0c8cF@pDFt0GusbqZeseYeIQ19AWJO*vr2U%c+BywpvovlMDFi~) zt}sk~<45_857Kx-Mz=vT5bPBf?7K^iFW1`du*!tCfZ?1rLJA@^Ag^IoZLhPyGMqTYad=i!E}*J~+u%h@?A z+?2aVy#H*HyMBTo{h1s4dt=AFRXivP1wt7SF7zpV# z-;8fL`}kCZMT|?fYzY4vSOw^jBR_&-afr0!wu6Fu`OrVZsPFn_@=!?%$zDm6=SgNJ zUsrGsV9vhSE`6P})sxO~7PV-5cDjszJM+kOd(}g8dz5Q%yRv_O7V;V-*nQHl+Whk_ zv%&F0UhL^|`kBx1($v7ORqw&Oud_mad+)Mp9*ikmW*D-pm5~Q`s8tY(+20bBDb`_y zy`*(8jfF*TwPq}WMefp+lBvnX&p!CqFOCGz5w4LCPhw+(_u@mJBS?Q_%8R(G-*`YgTC;AaT7yo|z<8>W%m4%rRfa<0v zrP__1gE!<=y&$jIl- zcd4n{utL4Cr=Yr6oflq7^(cur5Jm;OLDFbM%~L{_1m!=gL>Hb8&I-RBRcl^7#6x2(<_~ z7>_QpM~N<6`!h?exX`!WgBJ znNaaNN%sDLj0Ii6Wos=C0U7;xdb>R0tkEyVs&M`Zg^bQI zuftX?P8;_Rd@aW5DH}W0fIhSA&iXe$HF6xHBsjlX+?0{DQB5OUx(~pw!svzHy zo;}k*VsDosDM+G276tpa?4D}rOG`^L_PWSp@W7n z#B)Y1g+pIoC2!?esHOzb@N>_uEl$idMoAonwD_Ez=0X9;klxv0f5Ub<0ce~0x?-sR z+Hqj^*f4>>(I_tFNWVN{zuo`1**7!0-lect4Cv@_jTXT zR-eXFwzn}~iskm}m>i8fT7Wgg9gkCo9}H0G9q;P z4@QscLu-R}Qcvj>ceW-9RON^6&iCepGLf5=j7rOY)D!In+s2Z;*ji}?*;mBAo>$U1 zr2T8jrgSZlyczvEPX7U-E++@2G$+EjUjvx8CCZY^Nm0~3G2i- zMqia_K-po(SJTau9`38(ZW*D&P9zTfPGsG-3p&>g7Ta;bJt7B=R2?DDQO}lsrX#w^wkcy@X^5>fB0{naxLaPlCk^{yG1tToAq#zNbzwdZxYv}nQ`S`P^po4z zWcoAob0kMk`EH0wZBviezMJxJ+9=8qmbkpHvMA(Yo zkddHN@zCrk%Kfz?*_6dyz5FzWiE!wM*WCKkTps)Omcx~8ZZYq|exn=>{{$TD&ez2t zpyYJ+DBgdxR=S8~Hr$?jh{B3=o+bGHk1TCk5!7EU^(uJ7c5W93wEoO7fD0gO8?%DK zEol0$vG7?3&ztsZnDp%3k`+aH^=W56i>OgdrI$CF|2SrL%SqEZu zkOOb`eE7`u z-2c4u%=&!)eEa-sf(!L3x`g)WkrB8F2Hcq5@&sIH+>S!(pIv1oCFR@}*~|cz+I(s; zL=RhussUEq#ki7=7Dkwx@2Y4O5gog@TUMZhN!5*1^~pe{TZW2Bcvcjjb~qozlpM}y zX=lTZzl)r~6NX5~panS9S7@;~xTlMYyb^-L2&R!aCnyxqT%9Wcb^&I$b!SiItWFpj zV%JxM9(L-J(bXS4|Chb+Ul&6|E;MIs3>l#h5K8mjhph+M&;Qo4z}qWhKn1bQh;I1= zL){yvz@ndK1kxgW%!$JlQY#YB!e}8!w480Cl`u>tOUv%>6~R6JpMjsT+X!fW7q!+@ z^(XKO4M#v5Rnb}8OL)sWd%sj&{61T9V@y`OI_VQqzZoM{i(95+AQ6N7uV#1@=?8jk z)*XT1fxAZv-udkTe701Te&$E+BykmRjpKK%RtNm6VsTI9?*o2wcW!9$p|Ogq-_3dq zX}+f_z}H@YUPQ7LG*qhW3P#}=_F@=Kk8&Ts1EA2Xq=5aMYekIvK|{{ zCRZ35eIp=9-UhxyuN3D+hnFSILaZY(|H|UGReGyDTDu{S@2j4bOfkZPa1@NZNJ~e? z?GRIx9kh{dyoGQbeJIM0rntO6J#4AHZukUlzoqV(_Z*sD(QqY)7SBOmEv(M}yrx=z zgDjNEL>{CHU`e{i6qR+cdia9hWoUl(2`_F*u}MZ>E$ysiUr}{;r`xZxR<8e{c&wS3 zGn$&1p%x)L&Mbx-$EN&Bl-yPLilP3iJ4=0HeR{NAUY2s4dg`_v69)EkW%PdC(U+=SM1YC1H_Y8Yi*4M|?{0sAE1wJnD5mmci_CNp3`I`VSPm1{b*7J${%AO6=;}{| zoeG(`^~-#r747UKA%k@px+z_sxqckW zk-tp**_%36LNvtvXFasgf0V85sf;$gsniiE$JKBQ04IV^hb2|EN+Z zCr|LF#{7n4#h@@rL7~I|NbgQoazua$pUu&c`fiZ?l!R6W4M8MF_k#{*a_<|M;D*u| z%|dJ;O05wKQA$bSi$mamY8vG{L8WXXr5i6_CX5tS3Dy-dWp?3-1=gfk(~YU{@*_Fn z_(`&o^X*HK`ps=?8O0@ZT(Z&U$D&+{V7$wM>^=L%Dy@ zL2KElW@eLVm!GhrPIzOqfYe+tN67)ON`+tfXwuI`KQ>H%*%RkrdsF%;ZB(vUvMJ`S zNI?$&@{gUv3F2b;Rj z8gJSDY&lRDnELYk;SJr@!+UW{nEV~5+j~d{O?h(uqdG~}sl-L5T3C4GNu8f*et>Lx z31E?ux}{1IkzAOm$F0`E8**@X@2-LBocnF;NiuUc;q>;~A5IH%8y2>0XPBH^a6He= z%g=`oLBglEy1imcoc@mKcm%?V;!6xnI<++OCexl0^rpXJ&CVr0_Zf?M>*aSGqbyXZ zDE72td5vLqs?0X`SK_LpA&}>;)&u3t)!r6Oy@wg;QyT#4W5cT}Hc}HB*4nvi2R5*8 zK?**4J7zr>A#rzm9ov?6z#!HkG&WVN)rtegwI-9&ujV5TIQ7ejEFvj#%6o`WIbU@C z{>IUWQJ+ORBxx7f<>1u0-sg$TzTu`OJd}IV&thB(8(O$|bvI>#jzA4Dp}fjBheMeC z9{KkET|j#_XmAwSX#xoBcq3G=B0Yd_t;q9?$v@hM+OsrQ8qOzctWs= zAYBN9?6}tzKTDON)S*w?EDtiEpVi^~8X@g|jZDYOOBxDR((C=eu>6{KIsUlSU*7-Z zBIx0&rDCY#c1`)#gAPE&PrhDBe!eItu)Uz`xD~o3FbXj8e=Y@lIIZ`x{^#ZWXKk-( z2O8*B6CK|)a~TD^$D}$oN{%@q5;jb%P`goXkZ3fRzJFb@b_3eV?D6xu2L|jg|EJ>I z*P1QPmM)49nOx3$TO7{oiOE|icgY1>DuZ4Ffjt_||IB9~;;h3v#>Gt<{obX-o@ydix@8jg`cow%YQB+C!qaZ0X`_< zF{Y1WSxhR`weUFx>lXW~K>SuAolrlqXj=%|Y;xf?+#ExAgY*C@cTAZgJ76aGFA{f3 zj+!bU%9Q406v7uZ9$INc3U(%5KGTkZEjQW>%b=P=M82`{4nvgC!4nld_41uLLk|4H zB+_(;Q{oT3;Ar%xMHF9wvYnLQ26G?N>ago;WMnyyo$Sngx{!{BMKZ1AeO4AOYL6Qr z)>J!#89W)b!O+^Tp?rV5dpRW(9eJjhunAcE-1lr7h}&sD>)n>VyYUvPksEpazR>@7 z52&CP57*xmP54ZEieuA??xuyLlIx$QMLIHH*d1vvcB1ZT^tcM4Ey6a+MujwpE-&GD z4Yzzlf_HE|fJ*Ae_(y%wg}k}GHL>&??z*5y3TAWEdjrJGn1ovC7>=Eo3RXdOr%&%x zwtxgFs{ubgyB|)p0WhQL@&&KL`>NMW390!0#Uuz|d#pCsv(POqBoQ1RmP#}Syl1U> z>hbYuKAbEqJ^M>mAYnN38861et9;mV0oCFRZg%JpMe6n$=%mX-k1eyVsBk-o-p7N~ z0zDf8&t`o@lg_+xp~Th4ojuGM6($#t!-YoUibv9ORXDhN)XF5*`o{1N9uNI7F_$Op@jPJVsr%_5_BBhx*KFt+eu*SCgP$dZ|mBr%?eu0=!+}E@#(vA-G$d8>SZf7z&iwy05 zZ-5F@42mCI&~&#>MWT$0YQdl7yBemnzEr}v%2@lKfKEFV=avab*k<_d zUrdu>_@(AAb~}s}iNMisTltAE6p-Czz9gI@FqnC_;?idw2UY#=w9XQ;pWC`24gO~@ zp1%|Mk8})8eZS}r$yDLcK{7Ze-&U>D;*Vemtf&i15k#CvT={d=9HYOTJrgWC^^{Xi>!@Fi|9a0|c%FZAj}0 zkkMGK`Wc6e5U|-2&x=EK0;+QnU_#p2F2k9uPp<32q929oSs;2}8J<}Vvfsx74>R9| z3H@9x8T2a?1vSXo3e%BvwbFp2{y+}fS{(cBDgGr7a8X`0Z?d#Iccm(vRo)0fY zCNxv5D@OAD<^U3AAEQE*dG49(y(sr#A~W_Pno({t?lg~QtJz% zE1@|LSyb4Yb-NFoLuXE^gccPelwn4+5Ui*ea5ppoc5c)RvMU_SGvl zzjeugeV}do$C4gjbBAs`CI`G0{6?3ic=vRnX#B1S`D^+n4%zAw_s}FwZi72EMbyel zI=|9x=A*UOF%A=zrC9|y`9}rxEQt0uVtq{xBcG5ui8!l=NIW|iuHCm@tI}z0zKo9Y znO2UvxsxH63!_DhOojt;fd^3`&Qj#j@N=?|$Y3luU;EQq1Qd-8gJBw05yHW7VN^li z{!Ro!#S}&_WE`vjJs=2iwIb6JAzW(c09V)vMm2PQAM}a(H!@#+CeCo>R-|1R0tER0 z-$Cm3hW}Ttw3v~2zj%HI6l8F8!gXkm$_IKL$-K}CuNg8{THqOuxsQ_M;O6azpYOVI z!VrB#KY=_%_%7l^e2#S9!AUIhmr_wg`@4II`hAGxfvTYWYhd9*12$ffuBIIAoxfCI zzAq}2mbG-9(u+L;t)JV&qB-^}_!HSOm(>4o{ECowW{|U8lQ_9}XI81F0Y+dp3x%;w za>rB+5AZF2Bm-N#F@Ue|J6rl_(i$ylSly_Sfo=St`laj;{l2zpdW5YD+^*2v)>|g2 zPmUCvq;9P!zd?M3c)5lvgN%(C{9cMtS{(7Kj8i3QaPUt=87yjGL)P%GoW_lVexK6{ zHh~7D@POntqdGuv3@BG|G~$?PP=tR+9knc!MKm)<+ml%Ji%4Y=tf$6oc#IvZ5P>Z= zJ)iI(`hlDfK_uQELvpc|aljgBk7CPF)V4NU5?$l;Y!k2`DB_4-1N3heJm3 zT1MWALF+?2neQ`i29?exv<%}&c-mN4RWbyTPN&($KdfICYwTC zUxRx#FBsQi`Bz=&XZhB~%8#h#J|>2RYgSrF<#pF3%`n;IQaxH0wW&0Z+#1Sr1oRY< zRJ7pVN=j-?rMUXSx%=v3B5SAQnZqLA-UP_sog{LS!!;R{<Jik9~IM%>4B7(gq(cXDv`YD+LsdnQbww zuMb-3=GtP>{vDTtq1~G??Ib^TR~}d(%t(aq74qcOPYu~rLe0TfQr2kpiVXB&pQPf8 zrB5*z%&m5-Wh)IB`MwV+G%DfDOQ%xe4w2TU(_#cyO&lYU6-#rc&16j}%1l?==Y)8=3hOk{&TN9tJVR)1vZihS3)o4kp zQ>SYVOtG2ccv&>If`9O2oa^>4wa0dg)x1J^5FoU2`ytKOSg zzMH4^w>e5=D< z+C|mkw?C`Rbt&3Yb7$JeyX?N^&T67h9uZPJN3RW1hUt9Sp?2rh(5%5IF1Ib(dk2N> zMBg*e20wxmDa8w0pUOVJHI_xH{j>iQ^)UlU{`*@oJPBb#5-N4HH&^Z7>E1dSr?cT$ zd!#D5fYE^a2UP#7Ua89%=fSMvoTIj6%s$%u0v!+4X?(9t$_IYHzLXyWOi$ zuh0UaYKX__JjzaN3M_Prb?n`Eh7~44C2CJr1;@gY3Eq>ImOXifptJfhR11tjJ+J z5Dch{>V7OI4t=Oi)ju=Id~tSBHvsR@)9<%mU>=kDb3qt-NJeF)waCFgmH!3g@tRa) zuoN!t#Ipd4*rfXqPjZIx82=aT&B72Y5zIIEc3imWL*SQ_oh5eJ@G(PtYxhFpc4)*f z-wT<;lC^9;0n!hDEwQtcqEbe~F56Ana8+KmHi_n6V;pBr6Wjg5tATlGhDw3yHX4ch zGio1(WvOQKB5Z|={U@j~IZ9ZyKJJ^%NUrDwm%p*BZY?T^T1D^JCA=o|tD!y#v5_6i z+tVxeluWI{D6loJXTrs$j2nEV)4)C!oA8P{7>fGqx=@5WrR$2aNi;Fub}Z2uWn<3Z z<6&=Pg%M-M5-6K>(8_1@`(0mqJ9i>Yz?Uv976|xr__*VDI$638va4#cbn2Z#>>HxQ z^wAtrTXko)CF;XCq4mM0T)G%Y!gVyZCe&S*c1$VbZ;iyN$KH1_`~;9m7^Faiv)332 z1-Kmd%*95^W0-L+@sPy%w<7Gnfz@vs)W3XRX4F>MjjxQI_+uX}oN4E<M6Zh0RR&N4AJ)7L!oa3dH=7D&NYhp|uNj6u`UA(>7Re(fS0-L3Rc z&j+h!FHp?q>p;!@MRoI0u=j)Ku#U0dH!jFl{IL)Xw&h}1>>3i^Iie=Zgn5FnVqVSG z4+;tYBkf>8x8d8^nIpC_MhZrieI@&?x6$GVe4oYt)+D%%_OkjS$KfG|0;4=dCjAixAio6RP{6Wb;P| zaQlw(tn!_KF2Uo4CjLEgY zydF3JjI1m$pcb*V5BVT43;@i2y1;GBc_G>x|ItHt7Rv5PIfAXtT~Ro#Nw$q*r|~e zM@EpwdJ38!zp3zW!&1QK`6 zG3kZr(5-lIKzixrc;a^LQ)mWdBe$%R-U$aQ)n(Q zQ*)t?z^u2eJafRjR7NIB5J*p)`VCoPfUu?g{QP#Ir+6Zx6qBAcssP<#MofP~8mdAL z8)UJ+_f?p2Hq=oj81QXX#mRCPe;y{rcT*4?XPRHC%$p1$?y)SMibaDO@biwn3<*ho znM(2P1MxlzO}xs*(AKN0<*L{}q>t(&UGDw9sI(dh&k3|4or#;1M_$@VR zK8KZQlgx?*N*#-!3lX@=7OJL;R#aBPRHhD7!8xlix-Oz7))ekJ@9K zPb&}Zc|^}`3$vcjv=rRHvb!w%vyt`Vuan&$3BJ!)(IKSN3^R4bTvA<*OkMen^d4?4I44b0IeCv6mtfY`_%BE^jj@g;N+Y5KC z`peoy<3ctrYHrKr<;)^WhDmz66^_RhLzyA?O+MxtwED~O{Rh{M2fx!_6KoYv=Zrrt z3uS1`J#z@0&8%m&y47SEHO>&i02V6ssB6@5qxv)Tvn@h`v=^=+UKS0IaaBb7;=7Tr>a*K0#b6QNG zePFu_lwV`OJhjY>kdC-wnVqDquB<`bf_2QxB{M;vq@zVPlNt=X%2vZMSa6zWc^w4) zMv{VoKC=U@uPLFgRFJl`@mQ0Fw@9p**7{WwrwT1wgi*vKV~)2gE5PmY+c_vRiExM8 z+gHdbsO%ymrf*aHGj^$YOR=~8l~>2PP>k*MrX53<{{fF~u*X#5`A2ga>aGA+$;v2V0$+jIzaY z(*GQXP@7xTkz}0?2kM~QX)ow5GM!JlM1FSvPRR}ZfIXM*6a$FZ=GFg=ZA?t29D-?DnrkNyr+$upTjL#+&F$YIb(U>C%@Ebe34 zecnW^oP7f+j1-P!7c`@qxU2#=lCtJB_a9G%YLUyOkF0uhe6!WQPGU#Q)6xgOqa~0Q z$kwZex)X;)+iuh;YuYg4j~jMjwpC-%rPxpZ6MXom)6^u)gs`2|G6{EZ_A>ChfpkydYmr-Q

    dbTaS4KbU@bIQ{Zq@|Uk}fA#$6Wgav+iOh821{- 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%0DOGfZSrCAn;QwK~aQ` z?E<=D0U)og@HemD!jGChIW~%F{*QoVgfS(FBE7^+g-dk-9BDR%0HOuK94SZ$2}6ln z1*1{w+ldlHea9d=paK<9kB@(eBR5M%m4 z%dHfiET34A35qU&!&RD}k3de?`!C3ao4#Geos}c%TQ62r7y{{>I)2I*#%jNS;?2m^V1w$Q}znGsjR#x z+oCV7EXgU(&nV8%q+3>yo||$$E8(@WoW$lD+xn3I>Qw#CkaxM;w%%hM4Cn&Zf;w|S zy|vJz&+-^@tflE5L$2Re;x^*}b8Nh^dh85Jl>c_{v3PRfK3 zVd;u4fJRH>Kxp`$)2W;Yv3U)JLOlGmTfF3jeGi)~y66w&2!I;%Pa$IR)uF;@;Q48P@En4+sZLW0= zw0inm+&9+8Zmy5Azh4+=UKwg$9Su)M8vBFpP>r$9UT!f~6y)c{$H&Wqjhm5NgmQ(; z!T?z$Ao+!0sc6Y3JB+lnG&KZuCdyQllQll{lhq%DLQEbKa=(+OEOac80T(aE97`$o zVveQE-#V6xh3EpYBgXN|5G|l;HAt7eG!4N(OA!mShnYMJm`)$(9St5U2x~+W8b<6cvdLMF|)es6fM!6tN=gL-;VnK1O07Fti{L(5%sA zzQV);A*mN;6mkV(_Tt5h(6WL6rU(!WkS@B|k+cBZ!9)u}Txb~vM2IA<5Co|O!|X&7 z$f(vOe%wirl5kpp7gmH(2q2>ZEe5n`72`kp(YZ6HDogWw!p-4oeY?A;&#&%#TAZCV zq}=thM_=ttGl?#qu1pnxUIU>ltiu?rX!aR385sIj$}io z3_;punra#pKuedFxdT+7k%VR;FeO@|E=waaq6J?g1dNhumW;~e4oPjmku`$Ahy(*( zP}G2!2D-Ac5VUv~S_4KTTBZ*j3ycHgsT?UDTB#XY<|2H+keI~|G%ZYR;$lY-%Mlu& zE1}ZLOtBy>oLFH9iA^g!S{^?T2xCVP{f@B40nk_`b{ziAzx_AO^)(G%lczH6%7p*Q zh)4Z$kmJf|_4VnxqhZh9fK&ahko$P5`N4YcgSDO~+XHVOj6U5Pd46@`t^J{!^P!y~ z-_C${Z@{&v{#MRjzjLG4{b04b&Rl3HNa=61zH>BrJX*chZC&ZI>SVOi<2Jw2RydNg%yE_7wG>F#>}TSpV`Tvg7b z-Z`Fq_ju;{@$|Ksmbo_5QipXRY?%w2c82TL1_O20l2E`i8M5v6JBapRzoP1*cYTG}r$pfV`|V>T-2R zX#vVit2A2a3b>om!bA&qQotC2N&V0TT3N=$#igXAPzK@-$f(#9BeWVsQ40?XQio`% z+R9-Q0#)#-b&?TPBmoFC-6l7#%a5tb! zB;qdWDF%#c#^`cs$m0@g_?5E;o=xINW`T+lx9SuXIBXl(E08n{DXEMBexsCnbu){k zq@-{-JUTks-y89H?3sz@5-+@BDa-2gTSi)45x<`I?XWXHIb*x@2!N7ChH%rwO?NdcLyvjes@=E zeRsWad%$^fvgYn=-GjyEH+P0VxwG`A5AS?mPRrzrSz;ehcK(JUWgvKG;tQRd^T2=u_Z6G6;4;CmV zO$8tWhfR(ww`jcp3Is30I3fv>F%U}tTu2N8 zf)~J-V9=Fk2Q3`&MMwYwNGjk*HC0`ipa$upjy!qBCeK;f=5cNEX2nomW=gHKq|ut! z=qwv)u}!vGrb3pDp~mU1nuY$x;Wlq;wXW4w+GHyZx+|JJ`u^6Mqm@zKX1%=JR%STM z(rqQFRRu|*I=kOq;i$;$4A`BzJh!pXYs`0+ryKL*E3+@@bK`V5amDH9)8k%CyL{ej z%niGXLiXJHs!X3gy~&*2Y|UvfW!333EJcZ~^3(=%Zlfj7S(5B5O)}=iXU3m8_v%kx zefcHs5wTMc$W~BtMJs>?h;a+jUR6+HMDl>j3r2u&MEJXqw;ncWq)r1}jV};>^oT+| z6~x^zWRvjCwQ_!eTV{Y4<7*i_G? zs4K1!>O{+`Sk{0HE#7GfSUhSppa|(|ew7GL0Oy5ZV!IlxN<|@@e+8JusU(DGxj^J< z<$56!nT1?~L9BCDAf{AprH~NAuV#Uk(YQ+&EERbn zcgc9Oey-g-+HC9(R1P$mBF&DrfTPi)w^imjOr=&`f!|TFG}aoZHZ}Upp$2Dz&tfRc zF_dOoDsyU`6}4_%SwUK5NmfyAib+@GwCa>EN#$oi8!8G)3$x0Lvnornb5k#7C7#Yr zK9ietnor16GT3CAYO~y*_aBedj5buZ+H)JN`Hikhw=Tz6nB>;y)Z0rPl{r3ZiA$fW zd|N6fL7$gckbE}%(kt<&e;jw}M;URiuvA%VM%+@pY` z5rQPh++_(Q8(La`vk}2?U*sU&oUVhpoLqT$by`<4q z(cmnPG+5?)1A{H@+|)}3gE9rooSaE1$5Noy>m2E6-d~^p_0K=~V0arPzzGW55xLnsFhpCh-8~f+YJ1ROGCR77mK+P6z|zsL+KeituGS zLST{^;jqs@on_+j28SWhBJB(b6Al(ok(g!S1Xy5*Da1}w00(OtADXa{$6BlrqQwQk z4zWQlAn_1nEPE!qdIMg^`ZU>7I>|U}tq{$eACsX1DTgQ(skW$mwqKwD`;wxe0Nnf1I11 zP-D!TXfa%yZ+rXB#=Cd7uS_&9g^d$U6}`S<9s`5^vf)5^#8=YeE17B0O*ZR-)|?tk zaaViGPkuzPDXXKVSphSWMQ559)PLWHdBK#41L*>F#tLAPG#QNrObslGEC;EU3MAol zSpp=coJUV){E^2muHL2%A<-)xQRWMMWU>EE9o`5unUA=I)1< zaJUuVf_D;Hgau;r1t45jTv%V@ymapFJZuscN^yBURyDL5Y%??vpR)f9x&7IzxGmRS&+j2+MW{>^OT=3yaCkA=h{_w`^ z&+jjO{bcX+2b*snO+DTke0F8({p&N2w+Hsen`SzzcgBK?-QJmY$6VMx+ge2>PX!H) z=4>`wT^%7uNm5@;k@C~g{f?C`>vo^x%4GBX^}Z(u<4+E!-?}<|Ypw74V)y-x{&$Y2 z-aW=_|Ndz0Lbz(9$IfT1$9`)*^!CyCowZ)Sz1)x+*KEmL>vbK^wk@<<=DS?IL2rAg zd39-iZ+l~XWod3^suCLo1}WjM3|4iLWry4V+aAdWPHj7oSSEVKqVVoGkaKuT2VP%Y#r zL>OxrmtvO4ffA7VXG%C_lpzE#D`K=EJ4SS9kx|Sl9BRR*L8iVV}GV&u*F$#D-2baZ$_*;eYX7p$F1qWvxBjBjwYTT z&pbPtdgtoYS8uHS_T9s;pKSc{(b}({ZvOt+*4K~Le)-1gyH_V3Z1z9DHudG}>wkD> z|2NOCefDJky`!PmS3{52TA%H9e{^H?v%BL%A^T8ITcovas?+oQ`sD4|z@z2HJJY`X zLHE_krl-3DZ*2D8TZ?>fckO@uho3(=ocPs~y1*t`8zoh|;BU^C0glCfS=JQ`R9NxNDY(fmWmwIC%#@>zJPVOe(s;^N}u5e5et zQ3q6-5L7!VEHujpu!a~MfNo-9BI?i>r)89qgGm=L6%~MrlGBp~LS6^}6J1)aQ*|4wfQ=umde#2hmwxi& z{Oq(gPvKCrc`;JMRnYG*@2W1E?e-0aoXw7cT0@4tB-x|S@#?ev=KO(X$9Q++NSIM? zf6(3Tw+)2-A)kqNU2{pA&r)3P(gj@lI(vDIsgPIS%Ix?w^)#w1KdshW5UDq|xr+m) ztVVNYe{D&3O=-}U>n%^I)@SuKT3a0jHHHkYKGSE+t}|rXij%4e5{-EYReTB(&%X9D z_Y|3k@}8%Hw-4SsAV?J8>8#z6lzUT*F#oSiUIkhzM*##Yj-t>&d8Ijd&lDQq1;{(F z02(kP1W=Af{t6f+r1@&E+|ET~3Xy#A7bDRODDHvTNN2vp!#6nq#UgWN%lRpQbC#(Us*7B+T;N6w*v-RK`%Z;0Tj=s9Gkh92Lmg3Q6 z`Am7fsys(Uj=40`RIL2YRDSZA{G`*BIdOT3r_(OJlo|g@QR9>poqajs{A+O+lzSJ`m(0lRRHm;jlhCn{luA_q$rzc(0_qTCQfLfvPlMKERE_AW zX-gxi7GJcu5aYA}F#w^in*!`e7t5MWbP*FrjEa3gSHysf0*w%vSUzG{mab^2KBI{3 zLL)D_${+CoZ*_H`p}}Ue@gl*s$NgO@SbZEQ&jX$x^4~r3^77?aqek>JL zQX$`6GDm;=+$P_60yKVGRg=w7XH!I!BNwy9b^i zom-!0C`huDX4Km&y8PyFwJubx@2oTXt)*!RXAOGwZxZEP>f~3?Ef!0)(>&N}TOAGE zJzRX}&c>sI@ufb$w<_PNFD@<2O-{Vb!&08jk`}pEZN+}zdKD1a$9O|}=Z-JuH;8E%dU zh)vYtV+XJn%FakVC6ve^P=q79B1|EJE=<`xi36higZB+jiz7GrbKfBcW?+ zqj$C^X8VG>a|3sFX726H9j{MaSsvb>U;c9EL`<_Ll7LKBRT8`AOzYj&t%!ZM-?80mTL>HHLi&|X^WmuP{eyv@y}ta}{iSyfM;>oge@9Zfbg+w)Boh25csptFQ(zdBa4-RC$Oavu!)c82RV z2kTap*Bj4DpLed)vC!qXI$3`>R=3pcm}|EzcUsmX&TEr_d-F|?H+$Z{wfylLSG-jP zp~jlN&epz;rr!2uV_9xtc1m_eYF1WOQBje{~lKYqpi5;mEF+~?g5`(yA-Orpkqm_*&jJg07jU(1X{jUK# z2rDYYkAgZ2_)^B)On`Qamda!l*JKPA#IL&j)oKX>-rnN#P^yk;^~^!Id(4MsMX=ek?!JjMb?WpjQPuA=7fiwcO)a>2X|}X?eUia&4~l>RkBEE7QMy`{>={x!1SHZm;&=Sc=?S z>RBJCUF>vD1dW6BnMdvo=V z*1~^yd+VP*J^sb(%OBmG{rS_wfBx+!zkGJ}XRmKPzdrZDoz;K%*_&TH+_*j$-X8EA zj@I0oZ(Z)NY!1~O&3Et4MuyvJTvf%EDnnXY8ab4ko1_#-?Fmi(SqPSom7)x!oPZEg zKWx}8Uc5+oz+thFq(xB{ouyPNOsz556#!^42*I8K7qWAp{1}Cxg`?>rOfWQjCi{0*HwUG-80Xhzh!~>j*9Phgk4l z#9aadXJ7eYMNzijS`u~@bX6C%DZkLH>#nV6vgY}XnYH>1pCP-(kmWOE1ea(&rN2#&kvb7}5QJGU?EvdDYS;{gqFQ3*GXIskB9TgchRmwL< z`sxkS9qzt*eUl}t-KBh!vDKdEDNi*QCe|5q>Wta$3gzE7;C04XkzQ4B*;1ThD@k!z zqy|h``rL$svoF2;6J@4^P4L}h^gZ^}zJ!AO|_CI}5jhD0WI765}(FHDI+AT}YQ zp{S4{fsAU1N~oaAD2{N=>^Qhn=@xd6K22w}~&SU?wu z3P44G7A-@F0cAch$0evEeEQXw$_q1kT5GpwJ4V8;_F8>gt)Z>K9uC-AYE98%G-|e7ZDu zWv0iFTW!p9>vL^ondMo^uSyvUQwow#7pI*~zw~m-`JZOQy_}nPO8KhP<=3(kUQ4_5 zYV!G)63+ZM;p|Tn&b=IW{`AEQ=g7Pi0BIDE4br77`N`M%Bq1b+78-(dL2Ii+ibPQ| ztfVytO5Rnz5I{-vi8XbJq7X+2XqH770#G4DE0>`Fn?S_GzR;?9MN1RYhJdQ1aF7uW zfTIa(5RObuLv-xK@Auqpx6|eFc)X2`jS~|S?0&e#1G%#cP29Bd0N~-2mX@BOLjG%E z3|=^a`qw`S)wY7P@Uibv52+3EZl=CYEbVCg_ z!yWaL-TvXWYL`C0$ywG>XXFEZ8QAwtH4u}!uqkLh? zTwY$0n3%-E$+H<~1dzoALeOGR1R&rrWu_+TG7*^41yq9AL6~498yZ2&Oy!b;W?RE_ zAZTR=&!z)w$jiJ$5wj8rv`iKPkD6tMC_=U`#KyJ^um_@xjKrpGP(+3nJ{%xs;Q;9} zDL4cmGU8FYJQx+gBmm?Agg{hq2d$}KiiF^uQIQdX;Ne3Pp#&*mK*%)(#2PY4B9Bw7 z0SJNwVn>3Zg@ynkMx2BJAYlIJhu=Sc>Lq(aVwE62j_ z(N6zJSL4y@=+VZ^{o~E2x3;gX4lfM`uWwA>KUloBHnuU*wLjm#Hyc?UZW(W{jx^e7 zS4YDuqwRA8EpvmdBVk`how>KcGSTK7Yjbti8M+bXHmeMYb#DFNIp}LdcGp} zvY{Zc##GeiE*Wgl&4ewhJ5?S;>p)Qm$({fjkX|gyD3D}Ah@|8nM|hO=qRXi8#R4iqh`I*4SdbtE zaJ~x^HEWt8w6ee|umD6rD@9`F4j^^TsCfS_UhoTzu3DSX7k=ESnU21zivTU|v@Sz3 zs)iZ8#tDNMXrUQGKwJnR6TvJ=lQ%JBh?AJ(<1Sn}cPc&cg5PN{309s$%d_7=Vp&>Z@_ghQoGpg?(rM_ zj!KuQbhfAV>QvLwNX=%%b~ILZJk!Ek_w9wYXUebA%)E1D^1(*`?d6_FyQ4Rjy5GIF z@Mw2rZ>)hA@2!!BjiLIDUe8vqV|S=}vEBUoYWVteL!_qIRFu-w+165Lp9op^hde8t zmR;qy$vvCB&gD+qYL{)g)wtYgUGB6nk?lUmdbf49t!la3wL2QPG820Hcz!P8pX_Pa zS{PlP9V^UEwwR1Op-M_ha&mG=Bgy1mA@6L;5rg_K)00>dE~}<4lu}M=$td@Ez*-~E zV#&J0k^2uVrmz|N9w}~?C1&~h=soh znI?hZl=UhtEoFgFk?DwxxE5d*VeJe8(3RkUrh-{$wp$29HC2Pe#vGX%dEh>P9n{tJ zQID6-Hs5h`x%b9$1h737m_vpU*ZL%?AbSPSG?7Z!+W zr1+(1Wp$8bRPNzOvM5p#!oeV;aIhmrSZ+B0m7^jE`09cyx>zF^xj+a>VnCfy#IS}6 z-XQ?G>Y0@Ke6+$-KYpq#I;(#(Tf6INt$MgE)ZdWj1ZzI^CCa8Y62coY&pIQHYB{!F`fAH zua#!S_cS>}uHuNVG*VX)au@rnG8-+~K}TWGQPgBFY_=Er44Gk1X}Ct;Qf=xA*n%GY zNN1q6#%Rn>;4x<|$tcfD;$7OI&#TP3&|dFoaF({XO4yQhc#C^{Md?VUR66d@>1LpP3uT8N7mwmW&0ox~eF3YG0{KfZJh9Ce0>Oh3QD-T3ohGbMdBzY0Y;F3k`H-MoMrhups;wB*iii<7zAlG>*nZSjs~zOPxrN z0JG4-p_UL(qmKT?6Od7cs6Z(>EHGsx85Ii>k~oD)xvHwla!3p^1f(kvjy4eu!l6YS zBkI*3-R4OETK1GcWAdZSN9Ci17#A8UGIv^rU;=^{Va=TenFtU&wCX&fXLA_AHT(GixfU8N{p~d^^|qj|%4IAl%}uVzPpxrQ2C7Z9F1^iI z#9g?uFkLyBG8H?`B~DXGRb`%`EXQUja+^!d6}csOsfAfd+^9-wCF#l!SH++CapKvZq+WU@E$&oG z+?k}fbL?-=pHu!d4DtX-qa;KsfjnqSCi$V2)M*4jQZh*!WvPG)fq}ZZI`uRv`h6<5+oK4mw9jLo=ngCm1($|eR)$*} z92Jp9+gR8;-0B`|aqdsIEe|xT4>xa(wT^~;^GWR zov+&EaXDNL8;@b0cHCd&Q76wlx^lroYfn1>Q}|MUN->_i@{wf-4Tx1#RH{jmb1C`4 zlya6-R8-8iLk_1fjtdAeiwn#~O{lNIFj*J%H|e#+YR6K_i5^1|zcvLSgad>pv%nyZ zke6w)EkHmnBmlt{flU>gVA(X#r3}Ox1Yx77T2=mg9knGz5177`8gpT1MoZYzieFk> z%LM7t3ISje9ySq{T@H%u$p}N+;W0!QnoWd>MBAoFRFXiE1lYtl@(?f)mT3wky~v{_ zmPHX$5ST??GlINC%M^%^ou7ErW+XsZ)HQ=jWG59RL&DVZAZbC77Fr-?g@!;35U_-S z`q|U3BwjkD%ey?(Xjtv5Uh8#Fw^j|*mG#t=xXV*Q?xM*q-_mf~beC^!EWE!mdGG4x z<6FD8_vVjRh94d*+}oYopYK~9ZaJ9i+nwoI8);o0XxbPLZ;rO?Om%HdbZkwu@6Pp& zbp}Q|19QENOMQWfj_QFX%VgNi4!*lqAMxv(?FH`gG<$K9F)uDJ<*Z#_yhU?ZNu7$8^qFL8pR~D(Q7;bR}YaL;~eX8BLJK)|O z^jw*0x;ojk+3Q~Iaok#Lf3h?5WOwwzdf(lZ?uT3b2UDRtYrS_?dyi+sS7$ z^k1K9+8gj}57lCMv)j7fWtnW&wYv&^4nuouV5Gfzw$-rIZrY644+dR(%8!&g4u{+; zUDo|!-|>Y1c)ad#%)dX;GTZ5$?yj952+s61Z!eCQ6&K{@=5i}9EG#^ADtcO^C7CrM z=PINrX(=kK@gyP)Ji-y+nl8dTBhu2+ zNTXh_XLC|ePyk0p0o5zQv}8ezUh!@DyUy*H?8+N2U}bdeZlqd@QtOOXIE!Gy*2;-m9aZ>!5h;}pWj~m z@aEjdH|Ku-VCgqcHh%qN^ZDWM7q@4B`T8oKU%kHco5ySa@r&#K^|ufI%Woe1*X!|xwPu1xv|o6YSFuI1^0?UCAhi@`TH!yjMi{o|X!kiqQ8tzVkLF7 z(NumLEP*VqoCnD@2tk+Xl666bg@efw!x0(QQB{my{<4%1veppD$gvcB0lJg~!Dt{V z0lpAGIC>bRZrwq&bMkZP)GE-d5u4cI>SHd5v3Y~QnhZfhh;ghD4}@4CLge8Pt<0CM zn3XF|#DpoS5VLfV=b}bMrjMj{z0fip35iztaA@%eFal5!VYyhuGPDMmLdYz5NU^El zIYldg76{F&*M$q`JHxHvIxFw7eE}nzoQ~@9c6VWSZAC{-d7HbWy}CT;DD3o>gsUqW z?4`9;xotJZ-jT2_Aky? z0>C?b+#v(4#r9n=B%?xT6O=WT>y)cNT*DE|nn#h>fT9L05Tw{4VC~Y7cB0E% z;6^*5xV2T}y-RZ#8mdSRK(7MH_5 z686pa1xDLzdz#!st)8*=>TsR8-leZ|RC0e`A8i>4dq>(l?2ziLr6X-#pWCLmGb`W2 zl0V|Zuf<|98Vm)Qmy2@KvNO{X6BF4h$U{_p(nZ1a<$*2t9iTn@)I2GVSh<*`3R!7# zt=ySTwl9E(X=SB)EEPSMl4B|53sbz1up|@;>x~8SoSB))vl+`cQi@u&3B&~f{DosF z^+T^xr{lp-NW`pxMWmI;RfZC<)C3%6&5nl|$sBQq7h2?rft_(mO3LNSmyuzQ!X^p( zQWf#>@i1j)fIQZyFv^sPFe9z(G!7dtETE1rC2{Hm#n*R%S=pn={)QG`00Kn<08*BC zht?*jCg~eQ&8d@OA&3DsXI7<4|hlg0htZ>vG?Y|}Zg!uTZq_fo9w4X!y!pM^{Zr#Bb=RHB9vdKYRb_vpf5b4j10M zw))1ECTGHcXy`u7Y8HFp2fkIwb8bPf#$`* zAO_b)TE^SGJ@w}PpmU(f+UhQ=)@N1g(z|NPHYdZD@{FwH^Ty(|kTcIyo*W4`G&eP5 zXJ;#SAQj|Fz`U5FdZB!CXab+I0n8U#HHADT!Rt`flWkyxQFG3CW z8$`LPYf+b?5~j$&kx7wH4NQT#0K{T_Nv;sk!uX58HdoRsFTcc#TycIz>ZO<1g10*I z+P#INLH$O*ySKKy-BUCesF(>`roy(>9{X~q@}24~Z$U{;QlztWW4d!|)W6na-y8C7 z_Bu9uYzKqxtE1IN1J3;c$2#5d`lq`CKf617JX-U?)!|<~TK)Xa-2K(AoAa#?)_Wdp z58Yeq-5U)|1P#N1ihh6PWXN$e9qOt#b+^_{MVglTYUkSRYY{ib*Sf4L-S)i^|Fx;$ zjrs87t$}BIgSQu2AFTG=U5(sW?7lYNf#nab&%J+b>fTb@RMMdL&L$i7>tGLJPM5? z1gRj~a@-)kG{BLp0_BECReSGDs$7}!T zvunS2bL+#~GoRg=`t@7uA07`*bvPoe)nk3FtD}Mc{>$TE-XHt$sPm)4u6Or({^M7# z|M|nipFdoD`^xC;mCn71#t&}J{N~xtuio1J{K4`kcNX5hGWFs0nXeyh{ON(V`@@@_-P5 zlP-<&MJKJWrPY>|A=I^FPqo~l9a=^a)5;QCxPvKnxE>)G#R8_ND_m=Q6p<%F>`0J+ zxd;h%z_t>#>U1#wXMlj-WM<~4>b)n8v5&X9iE~_b7q4% zYoO6I*jUx(DyptbbCo7HTe5xnbXR3oRY_)HR#MRKnjUDmvOIKqV`OWjp}S5w+nVn5 zj)y(YvQ$S|YJ)Z3qsy+$N#J$YTAbv!6nFY9qv4v_NT5IHcJnH3FKzc3-TLfiM^SH+ zJyc_I>C~TO&b?fgc}bV8e2UXAl;$KRoImx`A1lScgIjz5l!=fl<}1&1x_}|sT=Cu^ z@2DE+${VlfLWn7tGO9u3UjTgZPLfF=>w*zUwdycxO=wLXS`0?dEmTllREVaFm=+)BZ&Qd0NS>#KVvnlp*+1Y*NEo!nK(q4_=rc zT?Fth245JBg@lbUnJ@O`nkC7AYm+=PgpB5nz<{cylmRUuBm$GzFv8`atqxrb!q=h| z3$Z|qQK2E|3L(>%z%VZP1Q^i>z$`SNh&qp*s*1wdp4tXmQIos8-Cx!0tuz*=Tg$Vp zmASPJUA^0AF3)Xn>1rJ1p?XVagUwu->o63UDsputnU%$v`qJ#Og0!NXWc64ojZZ;V z5?%ERQz^ySNfkxe5V@%rQZK!dbpEHA39s?Vy8K#6`gxxrbFJ5NbFt(4Z0l;bqr18| zV9s-tXWA>Wot3%PlJv4{dC)A|_zyd+HI8+vRrG_qyP?)mX)MdtmltXWCI6$(H&9P#P7bD&?@4_FIj8b?ylgIgKA-Ib2s`Yy-e%YC zOy|~QnD^ltbID+aKQL#G!H^6mu+9 zRaI41T9TM}nTIt`FK&WNnY)!dI|bVFjFsc!2hc!h^k zOQ~Ueb1apUlf$~Q%u-JRXpHcHPgVcvVnV_fc3`Te{`#?0rE)BVyat&C1To7Th2T-n zhc5CWa8dnU2&UM*;SMeMYLdPMNh}5l6fubqz=39e#YZbqBr&4d5jqxlK@w9CnlN3M zvgqPM_EG?XvWH0?q$FqoGGc@w8P)PBQwL zzH-&ZK$t)J!QY;G`A278`u^FMe-MA+HGN5TYqhSYrf9Iiczvbk=2FK-pL@B(Jl5Z}Qc(`ULJ|o?udR*kFAnX^4~(|^THF=g^=5xn zZl||&xY01$R7E@2X`5&<2JN{neU8^9N@Cz0x1ay)|XjG zQeAXmN`4T)tQzKDt#jnzi^nKSy%%9YLM2W{VaiM~ z%%YG+1k|NaM&WBIiuD4GStKPYjTs9BxN>qbl5>*Jn+p?z_WU+?f!~l3wB>G$)IZ)I zzB=1>bE#)zkw3ryFiRucF!I7e(%hc3zi(Zv~5i%Dtlb)WQoSe)P2PPH( z8Ndhvk}e@M`nzDJxhj}A>TpmOd4gmv2mt0HR|N5EQP~j1Y z9VQ!PslW>c#fAEW;gvqx#iN9wBunf)v#@kw&JeCTVv8W^9JXjpM zx-vWwvMJwo^j9o&yV=dpba+iY}9=llJ?f4cE-q4AgZ=6>^d z{ljb1Z*27KjnrM6YW(EJ`0t-CKi}zmYqjN<_ohEO9=Ws7`d}&a-d_KQhyA~Ky7HgC zyzx&T?SF7IaBrb`f7p9EX`V{^qHW>E>L+pPx*AeP`g4qt2h*o%-jm zpZ%xby#3^0{LTHLXNQCHVe{@#^=G%He*SRz!<)+A@qKY;_WAXNzx({jfB%P{{o%dq zzk6%%XOH)u-&ne{+_TnKz1-uxzuGn4<_frt`|Gn)VaLPmp}WiN+x@Pq)4`>7%ex1I zAKzYh<8bC^Wh_){ZS?!{^YbNvT4Grmik2nddL-d$UcbpOqe{)GKmbWv6y@U8IJ7J) z>QWm3Le>!)0a;v?uk1$fj&Ug)4LFqwk<|x6piYZHfEF^?VMt{tzA%V7*0}W4VpJg4 zCLxKW)GE5FD@9oKp!{c4f=5OzJ>|~^;V?BZi#(DL08>CIdUfwaBw`0iBIm+Up3o|w z;lot4PBxhUYXCw_F)G2xqyQ?hkWnFI^YGUo`*3lAYg)z2kAIY!oM@}6XmVG$Dl@0s zof9GDC&^oEdEUx2Z)JM3Ex+Ac(dZ~M6(;AVT+kP#bp_1(Gwny~GmAr^wUL(nnU2+= zhVl05sZQTSd(A|be}1UVQI=*YO7a<%Ur#p|r&Q%%HWwxPt;Ma?2EVOreyF{z)*5h> zcLyvpz5W_=QJuBKQJG^XNO4wVD&N{jJLfG=30iZi3X*w?F3z}=bm5hYXJ3ntk7uUZ zG}$ka$=I$Cypi&9NGn|+95Mj3QJ`_;O<16wEqn_wF~XWs11tm{0q#VdA&t;zMy0xl z5T<5UUcBkz6d6`Qw167Xw;=LZgBHcV1`OhkdnN`YC*oIv(SRLk1;PXf14$tK*f<%* z8WX|36fj*i-l%c0Lo0I>MFCy-lo`TNRty+L5u0*MeE3Rp^P#J7M%C>8``Mo~`lF&UDw&+T`}!;Nnp0+(64nM}3W5Z!*Y_Pesp7 zzWwR$S2sn%i4WMJ6c0#kX!eMEFRGSdUpBzgmkTWT!WVTo;b-MKQ48){9 zWT`L(2eT-mPFMDwEDbB79!miwrQaM&slR%z(|zlY_~fxIkxTHjM96jlgV+})HYv)) z#65{O?~Z8?yXR@7y_&;&16EUju=nO)qaOXp9& znjU|;sxYO_Rx%KBt&FxdR~vGY&sF3mj7Ne4A@6jjXQkIO-mKpnZ&>cKPq*kt8!93- z#e??~RR#gXQ6eSJ$uatsQNzzIE^F-dyj>Q1fDcPg4qs z7Cz;qEaZ=WEcpR2qtpq+JM9Z#NOCTKmTv42K@tx^5}Q_XbXlWVAO=JQV1dY4Lpn0SE(_ zYFtsoP61(Q0k?vr%W+8;U$vJcH&}9OtFl|21w##$qb;V%Hpfz==E`i_-Sz(Ch3;z$ z-TPDF?Xlq2NaNOU!(x|nHR7HKR#BYmz3#*5mVm1=;59FdwB6n8-|qM9_dEBL-#)kR z_BnY)Tv`R~p*9SwUL&Do7L z_Mw5^k>2*jvF?TONO!B>Seh4q_NBb6^t3ePm$0dGl1Zv#vkE~QXWR!Z~ zj>IxSa9zk{!VoQ`#kIpIubzyG0Dxc=0;d21b^O9)p``_w5-lKFK)LIw<%fzu6N3P# z1GPF7gR}%A@dI@>3Xr^X=@PY})vc5YgmBPJPEJlwPnQb>N4Ve;!#mxml@qARP^PTJ ztvc1NI{~9Ykd1mCmvpysne{iEFN1t?*LC9IZEKRFK^Tk5`(CVP0hGi zQ(`#zf|&3H3}K3AD;AhaoV*GJ#p2;Z6VeRgB) zmk*adzA^pQ?(kcCgLfB0kJmdG{q@7ypFf=c{Uw`-b*Uz>;JRW*}(0g~KeW1?l^N;WE|J{d&zkYlB&4Zy&?$7<{{oOylyYsULOCR2t{q)AnR}Yr{ z{)4Ok;nQ26-Cevg*|az6-x{b{>a@> zqqR@B`+jzB{@HH-m8r&?yud7X-`^Y>Yp<@c=~`QY}x=0G40VA}+l#5qrt|KWJQ~+xiTifDGKo?&KOW6Rl6n`p29bgkgI|?wa>`c%F z5-_b?ut3a8wWuNrv~mSdCH77i95Xl4Jv<{=i^)&favs&i5vYIuh!F)+mY^ZC=S z*vTI&uObQd(Fk6+NxHcG5#D| zl;}Up6FWiW)k1|FCCED}GFn$TV^E=WRgrHXqZ)Wy7GMN-DHbMUkf~UN9Ivv`~Q~gk?F<6&WC|MJASh0q{{*OGYVI>`0uL!Xw5pr3R%y3G~|# zUjnowY!QZ|B|+@S5Moj@nio}D@gg+x(cn%1M~nl-^2v8e2$jo$uz{2`Opy_YL7}Be zxkkkG3o+1&K{&z`MPx7t2Lb_zXbj&56BNi~1<(v(T(b{Q2jp2G9FY-IAgZrgfX}>M z{>cwBl9Z#UT4ScQILT6!RGFKg&r7tHW_XPS%D>HLEVSzK&ANPJd9Kf;uhJEi7iX0f zq!(o;mE@%t=cX2BCoA8R%1$cINyG;$?8`aH7xUBNiZd@~C!J3?_u8eir(SzS z`5SyK$z%gsAgcfvk}N@gH%me@guGZlQUe@XHM`0ZNDD`!5ugRCxWa#7RJstX0s7w$hLvX&Q{@I*MJpl4H2ZN=hrEH|+IRUuW z^Mv3*SXxqi@%$NMd4a2{q{dt_6!LCOv>(iNAIx^`PPK1OhWBT>?(faq-5Nif>DU<$ zU0di{h|~?YRrj^}IvPA)o6ce~%I}Sze7*(sSjwUvODVrC#m7xR)z!Y*TIEOCoi3Z* zu6zk7`Yk75vnnT33MP62%R^1Gef0~2jZl=9ksM`y$#C)jXVH`THXE4PP#4C zMu){H9?fPm?!*EXb$UIQJ?lX$cdi#eNioDaakbOc#2^?#5pbykx#h|2L$qk=N(myy z_P4aOOrl^qDwJ<*5mQA)B?5?HL0LfcsGF9RlcHqhl%0e6Um*x4Gc)6xFHA*$_?$dh zXpBZvR5EBOtFVx2qsfwU(V|RJ9XK@0v^w@36NtcT0mcu0m2O5RL%bY^0bA@{$$_ zOarBlO=f{diATA@)awCB0+Y)RKA=n4E88>`#6unc>Hzz4MF6_c=pv80fG)s}n(}Wp zMmT~N%P1Zc2E~#nYGMU2njekAN6zt4?q0=zq3^2>kCp`<>?*O$|3#@>DX`rX6T&B@O7@y?B@-ueEPgXOXL z{@`Snf4;wIbE183b^2&^a&w|%GVJQBs~8Scj5X@!+s#w0rh0RpwJb9~E9KnT(@ck( z4ih02%u6OBD*_;xzN|ZdpbI2X5XeXpSU9<_3Fra{n8--R$SUq6heE_cORo%JQ!ERu zNT{Q+T_DlY3L)X)QS1mbNn8Lf94t#0f+6NYm$in7>iny~g5>LVzQwUILTki-2lRk(bwOv?H@XAkqP?nc!E>5=;CbZeJ zd#VeEn@tlT+ibgirLT5pEO>3cJ$qB(gX#9Gb6p2hZ4*JmVuxj} z%`_dh?M#Fo?F5XxtmEKNzk#81fzsdyhxF@*`8*ea@Xh&vw82>Qv*E z>E^@nz_qES2kX7t!~WMddmnA}Jy`4h;CS-WTeENP5ATiCjWt$I1`X4#rj;JoaHGL* z&T|`!23p*U5#N=m;EmbfX2gCt;5wf0-<%6RSnYi0aP+N%(f5xh-#r+9YdiApZqMEM z=Ht=otHbWABkn6h?we!Y`?LO|5igO?hfPx<^KeIfN2s~h=QA1%x{C73it^mtTyBqA zxsod~NlGPkLbI&0#2V;oi%#;P<#xdhg!>XSD+N>5h4td*%#&JfFRX>!4-ufN-MgTH zVprt@ZPA6+2%+UJC-ML>eR^|?&1ptScigzH90L)@UR$K!DTKuu=f)Pd~X#!j@juD<4S{RZa zAYot)K5-H-Wd>B?=rfTFkbG_Ey!vmk!NDd4BNImwrabHrpv7S9ECkBLzW;q$N;Vi? zkH=;9f3l~srYbk!DC5nc*;6^!ZhQaM+&}&5jeq{dy% zCG=>$SIrfB(VW@1CxGbanW>z24tGUit0gwSWK7 z;s5P75B`@wJpJ>Rum9cW_kQto=gI!?##nH;yXpGQ%sba-{_(Th|HnUk@Lzs@^MC*I zqyOjMzw^KS`T2kP)zh!vJ^tfIH~#$TjX!^K{QLLzzk0Iy+mEjO?xW-1e{}sf?;d@A zf9dmki+_B6@W=O$e(_}M`Sq!_ZrfbQxY%Y~3Y%uQM-2zVb*Ax7-<{RI#~WRHgYNBK z`y0zGpI;yO@XFBdo~-@$t&O)2`nf+`pKg4x)cWQ|`@N;M>q|ZNc4z9HI;+0es4K6i zs39<6jGY&>cYFE~s`01d>Nbk$5KAT~IfB0yINZo=#qG{~J9 zAdFL@LKi}Gd2kEVjYf3iN;fMjv#L`0%59TdXDN&?O+RZWNa3y3t;=k3l(f0>m9GH% zO55E9t&aRQcX4M;d6%!euiiM@T|3iL*B!8S)>}IR_6C=}-maW9)me(16aClqoX>-X^qnUAhcuUG*hV!3$l% zcbOO@W26g^c~(IZrMVM`qVTn3N@8h6T}BaB-U?1mi(-#&WR#`EqX@)~(xsIX6X76C z8BiX$U^R&iMX3SQF-|M7L5Oz=1{V+laVjlhYV3+SfFr;oP-b{?QU()UsUX#`QaSKN z5i#UNQbHBbWe8p5saGj%fnrEKk`o|67;tDc4qZtOR}BP1nivq8HKM$=JfMh2iHa^v zAl76^AQRL;oKY%D*you-VqS2Gh{%eZ_xBjHr$<-p>Ep~v$6bMIC zCjhl}l-r05eNVnD<#Z~)Bi_*1NXui7k_9{)5)&`S$H!%+r#1(C#*!?zE~h`}I$Rul zbanaq`qXy|ah_xf`0(M))AxM6Fg>ETA-gZ0SWm7ePho!cXgz4eA* zbyc|D83|UmH+ZZTv+@h+-v%2UtJS9cthv|gt?~J4YHF(84xh*AblBwZMLBed9!x36 zQZ}2dueExp#noPCYOga71YMJzwR|Qz>*fbqmIs?>BlX1GRc{$+wmZwyOy&7i2Kk1O zN&U)|0_+)##)}s(F>5Yn9!v7P{nB5y)Z-%_wVBSXd;cP7I38XqO!+b_7~fG7&bQw9x8m zD?ze*V5gpvlEUi^8x-~gvY!wc*~N+^E!LO_29cpFI|+sWvz8WLh-t||Sn@zHw6TSY zDL67OX!bhn)kH<^%M!l^xl|w+#XFFl5GrC^fTB#9=_nV3dM&{hUHGC-w9vG&CBl?| z9Ti~!>B=q;0ofF44-9l^l~OnX9AN?+5fWXDqbR!25;GuyFzEs%ed?mf1PPUZ1?q(U zhMAv!^`*p%r_(OI*6u9}yNlXA#RK)asgPy3(b(y$+!$%PvDnq>C@e}lmwM@Chq0u^ z@6_eRjkj127kjSGg}3`XtG(5`qyB|%&rFAFGGraBuUP5z?M`=GU+%lH6gixaeD=tNVMb)!TG0uWYgz5q+ zkW!~|Saihx6>9?Kju=quLfI}$mKc&?a3{35R+W_6MnwdG$csQML>P#STnkd45K`Vz z(Gx@!R22Y0u9Q2&xijfW@!hR;IZ0=1g$Z@K)POOq!awkGIyeV0h$+Vq9~c6rORUlJ~WQhsH544x>5g%5P?_@ zzzDh!w2T7O34kduB-sGcz%2J z7w_G8e0^nUv~4odaBpw+ll#lRetq^oe|GJE|MwsNAOG>w|K;nu|KZc)fB5v;Z{OQ{ zesku}U%vkP&+h*2gR8%Lckfs49DMcujjuku{<}}_{_c}IKYMfgt2ej*`0>>*pKQK$ zW#Y|)p`Bj)N~dkMwQ8!>GS}A>X{{Y-aUM(spKNqr8TRb;yKc`m{_4TpfBW*si{u>MJw>HPFZqAPNb(9z96%^!? zf2Af)%8~_zko5x828(;&Ey_$Zm*wyl-QQr~kvCLdK3rek zQ&SwYM zA^0LgG9=%KiM*)DL;w`7p_fDjNiC5i=T_!2)dwA8s=+9(QB zV!*zb)wFP=gs4JfUVz5e;#cMwv+2bJ*2Iep;Ud;7kS@B>nakhwz4X(9+{|iAdC*l} zXUcU|X4KnCnjIz0UY$*!Uzl~dNd1)Nrz(G%r~IRPDTP^y@C&mN3NzyJ(=HWcUCz&l z&rQ9UnRq7U;w#GM(krQ#UQN67N?P1&>6g!?CY;GixtNz8pOz;`x&8I^^?^Wv`rmnYKJlcoTg@hY z8H?TI*3Wm>E=2tI_U69+=*cfWe7rr^f4DfbJ=wX~7g!%{y}v*AV0Y?xp?iNKcyqDi z&T{9irOtb6efKv8Zq2tHj`$7+J@0I^{^s`J^S!R7TBplyv06+fn8dy=~wh{Bj3vzRFB?c`FJ`g&c4huLH6(9>KizmzW!g6M3=ZGE6n)-=$ z&zw1nH73F=Ac%*DF1Kl!3w&;QJo{HvO%HjX2DD8B@@!jSa&t$9Efm%yJdB{r ztrHnqglR=lWF&#&4g!w=npP}m6Myol`97op8YsQ9$IdunjL8T!jz1mE3FVP zMVD^$8d3qD2vL+&FjEL-0l@?Tseq={Xv9PwG0BNcN1c{37g}YpV`@WaaUfms1%Vg_qv5KM8U4+_{Wq_^^uv;@_(ofPho^9`u5_xovd>rC?#dgkFB_;U zYj+p6yNklk0-r9u&X8^|Nv7brhsK|KsW2yl&CPg=WoM{%cf94nM&F%P^${>-(-$kur1&icUd+Ss%EM?ZW2jW=&>9L+^`rrLLAdiE9ukJct1-#)mp zJ~rK5H`wCZ9BYmEDn^@4!%fCWZF$6R;2Ja(rj-$r2omN&WDa#R^L10V>cK6i63f6OXc{O6jPG3aM43 z5vX7%mZL#92%w88#F)551;n6gSOG({#3oUJsFf3F9ElAv)UiV=d<}}%zYYY@#exWf z=)lRv0)&qvGEC&u9`dwQDXoMDL`(x5RCs;(pa16Hv^3Q>)Ywb~@ncPuO_rQSQ)Znm zl~1QDZ@^bH`-9caFYe5KerN8D&EBJl#^b4G z1g|k~u(4{p&v`iPxjyFk_;~1ptD_H=+aAmZzPvs8WTo}y zc=gS3?}KUIqj~@JiQ40dy5p(9+F)HrP1)2)-^|R6&*vl6%GNAqTP*2~%^ou3S$hG4 zkZWJP!F&sh%B?_dBPrrfP*@wcwQ6~6c`MK{QUeR_2--=Y*qUkNM=wGrv#(i z8Be~hg$kx*QUYjAfbbYaD{4!Hm|`KIF%EkOGMc;502Qt-QQkuh*B9lu#k~!aI>LiXzOWrl$6` zptUlu)?6?hvhEFd_XoTi{nd9DL$~Hz*a~jCqyO;nmA`-g z@V|V0_n$vI{_WF^Up?OV&6^uvzkB_Qx30c(WA651>+SvVo)%Z6#e2Ne|JA+e_Yb;1 zKI;ARd)xo7e|Y!*{eS)RckgU{a(m`CZ?6CGosIVn`~K@6-}-NVe(%5j;pxBp>f!Id zxc9|7hyVVod;j$H-QRw6^wHz(-+XlCmyZ@6EjJ$wIBw1~taX~#Bd$)LuGXQS9O~}y z8xO`C?=7_6oo#qyvFXur@VAea|LMcSe|T?~!2adaYrlEC{>8neuin`FG{Lcm4E;C%Jc2EpWU7PNm!*M_E;Jk*LBL_%0d}Cp-3x#z0szZ^E?#7a zW#zi(N=03zqyM!`yR!+Ti)2<-rbNg@;AoR29&}-1TuKE#5h6(!0Y=3&PPLF2lA>h@ z6)_^}(v`_#3R(?BfouQ(8vt&?F92rjDBDX2S`=|gsGlGCA&u$=Ef)^~)W!9#u zsyj^$}&yGDYnv7YjLu@IMGv{Qks6g zAo*-T%DJMn^TlcBbJU-+$xS+&eBqV!%jdlglUtYRsYtFd<}|u0?r#m%n0PmTHR0?} zfBb`g_x-;YNiqS1CI+w!Ep;Md zv~;Cd~32VD#eobH&+7=F*ISqjaj%8*&xTe%ht1%V#nZPUobY&r7?=b&+*h`A7GZPuy!M7hg#{|8mNuQ)vljk}sW#JNt6{ zg)<44&Sj@3>q~Mx`s}_&)7nU5m)}^Hc`-lbtfM&5R+<*D7EXs9_m;v}$7|=>EZx2e zzopPpmZd95vsC0;EAq>7laemHl9}*oUht4Zfu^f2sdCaJt#D{@O<+Pxc$%UR z2!F4x&R<(s=Tv{rsivl8c6P41x+Xa}+2wFtzIY}-J)zcGI@0P|h}6z^*DUlkY)y6? zE)ML@^)2={t_(HrOop$_cU@cTdAK?7aC7+XO60~|+s*m#!}Z7;n|)7rhd;V8`$0{)<~9SLfQ=>n$c-k#a1hoJ*P2gCdK=;Z#qi6xi){o9+KY z*?&eycAaUOX#MCry=KjH_f%DvM4KK!!h7$5fR6}7AQ12-;Jx=ANO+sxTc%->$)qPm ziXufyq9|V_sj6CCZED)gnwg%v?!CY6|NETt1`dNsse10az|C)e`}2FBea_h#2sj41 zT00s%-f}|#2}9_c$5QsP(q3QH@=)Vovumou)8Akp@j2&vs+Rg|r`uh=@^o)OTvcIw zRdI4m$V-JeX%2nqIUX@(=$pqU(F6!wj6!vw-2tQEkVS#vCW<5&t~*0Gd%G8GgQq=3115+pk{ zD~w>wMP+=W2cxt+4UiFHJOpri<~fxXrjkO2E*2~fArTCTpu*l~Jymd{0vH4&ZtR!l zv#ja>p*o-r!4L$?Q5n$^l9`_Y__#ntOlTrZN=o7Z8Uin7EsYz7Y$ApX1~H2-0?-^O zR10w61L{CVv;tYs)dM0RBV+=Tq6mVO9SEcaynmZ%B@TfF%v#3HSPU8$bQwj)O2-1D zvC&bHK`#}jg}1xXN9uC>y;(E9!bx9|@foE)Pj7W@ZBhJ4L(yDE`EY$feQ{iUaeP%l zd|hd3gTwd(!)=~?HqH2mQ(lK{XK8ez!*hOl;M$q~%kwRF*SarF)m>fiU7GV9Ow?bP zth>82a%E%e!L^;YU%m1A&Hc~beRy+k{_JA^)y;`JXP5Wqdd|+Y&a~Ov-5DeGwyDPa z(YoB>+PqFrj;AQSue&2S=p;K8Sr}W?;hj>@1d$`qOo>B+6b%&s)2R626eDRC-v0ps z06{&mhGolz1-dL42rScLJS;4X`IUVN3m-sZgi%_Cu#aU4STev;fe^$8{=NyiM8!hV zT9pwCk_YN4a$1CS?f9)6LaW7sx~Qvb!Q%fZXjD!`YYL#@h_GN;)6}Rk79;~iV<$K` zsLj`8OAb3f*Ye6{_x_k?Z?xiItYW#Nc)UJ)s5)b$HfyjlZMZ6Zs5*0|t@O%r_vNLY zd)p(A_s1UX4BcMqJ-^VkG1`27uH(+;;EmP3t4m$GBbB_nzIt~2;!5wsjh4sT?eAS4 zdHd4%=4eB1YIIwpcWb8S#&Y}Z`I`Hyt>;H8Hhas~ddgNiOE>!*dn1)QL+*29-bdSg zkG2OtygvWI_4&sK6L&X<-@Cr}y<02qTwA=qJ#>Du?#;6!?_8YZ4z)kgFzqY6w>j8Q zo>!h1(_fvj(eK?3-G%y_GgWtHtM1L$+?@7a826l=X_@S6?(1$} zT9`GSFwAFGKxI^FKp6$f$m-(K7MN>+t6n?jp8^7GMBI{Sq1pE!P~p137kmg-EG^dL zLR%ReXjCM?!iEln6~HrqX~yXPP$yma3Y`6Cz^Djh$W+&+)#|giM2=0uz#4Hrv#u;4 zfKw9mM`Hqc|F9_#7&ej=fg7BWj2SrsiWV9Ucd>|w2xwy|n~)uV7{Oo!F)LFgF5`+s zFsz$m)Rv@ZxlO=_15{+PJdB|W4O9W33ZsQC zOh6>MdFiG`WkNziP^YUU1oUr9lm){0?2QR#$08VoKplgML?Bw+5k_omEE9?h0t%Z* z2*rwr*r*HwkrCkq`MIsl4Z}Tc?X~ve)R3W??5U>wYjX|nUmSgPvva$z)c76Pnd+-E zH8&R;fBbmsSMQwt^7WlhUs?bB;nwH(SHJ(-{%3Dr{`{SbZ`@j{bL9@VdC$#vJ>2Yh zW3%P6YXd)fW&Gz4Cck>T__O!V|N4WA-@7{Yy&F?MezN`RcMkr`SFil`{d0f#;?95l zyYKzOuRr?3Phb80XSaX*+09>m|H`MY@BI41bKko;b#tM1r>}T#z;S-6q1Bz$QD43| z(ze=N`go)D>1NBDo4!vj5B=ez3;*qxPyXSP8^3w`?62S4|NVRC|I?2j{G0Dx`Sm*& zfByEBpS^MJ!)r5t{r3L<`lH+b{)@Z6{P4#A@z-zv^wG-qua5ul?$T%X&fMD?8gFql zS38S}imX|)>Zz78YJ#*9Xeqv)a3~`!MWzK59~v3>)L9Tm0uYh`IKr}+5??X_5AvxZ#%agZa+w@y5wk zhdndWmKa=+d^$etXl&^5^yK)UQzwa;Tok}wyX~xh(C6Hq}{2Fp<`GSU^D<-3X0?^9N z0z)is3Pr^TLtf;RF5v+}6$eS6Xz5CZ`cQTy0uA6Jk4IV{zg7%Vluej|hOB`9C@e9& z3;4pRA{U2IL1uwpIRH$nl{<^##TTB-N{$_C^VHb03)3R9<4$E5SHZEE;1?rLy%>Jt z`G}J*7$1N#f0GVQbg=Q2yHPb$a3Y!)t07s@?)!u5@`!lPA7#QO^rI96mc{)@>q3o(v6k&*Ed=Z#%p#)YkAvp z=f`IyhTC(K9C=BZiQ%CqUk*9?T>R-HnQ=k6$zj>aQ5lI*j=YrW()6mLL|0ZgX3O*9 zJ%w;Goq0()N#T(}F9#jx_0xD02U_-;2mnp-%~Ba_*k7!}l|yA9m`X;)*G$nhwGDNc zNYc`!#fW7`GK^ANOhH&f&{Uol0c)@{U<` zaUoxTuEc=CKYwy)}jN zz15rJE!$IVJJane1GQV@&3n`BXXiRDEp}a+@3^|uePyZZ%2M~;t+5Ypu6}ZV^ZU0J zet3K4_iyk1?&<2UUtjs{ljW~onYq8+|Iyv$D~mo}RJyA2>dNzV;AH$~ehvBIsg!Xn zRDX&!!M`6$3<|y15RGV=2^)2MY7q zT0m0I8KP046`)lswJHeKL|`y*X#%=1jYVy)T~x4)Fm_0ajELN_LprJw4>a7IZ~@?8 z0VZO|z#%G(KxiJZLy5>20!5xtU;;B0KadQBauHuNP*M=emm$?kOj;{W#g71C0PN6G zF0~9PW($VypZ_nBK`)Io6pYp94%g-kR%iElGrK(*qfLbiJr%1%wJZJAV=Z=Hd1hZ- z@ycNR#&AQgH`90$Doy06sKcG%b7nNVavNPXUsYM7*XbzAO^pldZ1PTa*Dd!~KiC=G z9CWYsxi*I?cSfprhAOv5YSsp;cP4$8R|oGM%)NPQ_uj$$#pV9psn+eW#`VGK^*;An zkK;_YePgKl@x{fx*{+$s#yU^giK8!`4hbPurc9Fvl!zvp>{NWpqFIAa)}*g8LaSU5 z;!_sY6F#kq3{)rBErlvQw$;C-3oxffF=$m93U|Z61HG!`_-950){43 zc{fFjAwgY%uEL`wJi0Qa7(`p}>l`AG^G5~1w`I%_{J+o&;U6e>&6BvXQjVtwXb5iyZqWx=X$SWqqpqxY{UKSzWb|< zS7yBT)>_}VIDYqFYIUrk+L_zk?A>4JyEs|BGw5FLv2XS{b_UChFNo$?L_4o2>-cCU1n zT%D<(Z!c@F%&RU-uP=(bGUa`3um823?mG*$mnOWAHo7iP*IileIanI%X|CK`omrk8 z^EKAz=H|x4#842eF$zn4R9MyndkCveE6TdY*>6TfKlQB&?K&uX~o9^ zUT_C(NdjmKq=o=coRU|*TCs8j5T+{^$Y5M0GHQFcg~BIhXb7_4C0RzEfn=05nbM*Q zAQXcI#IS(8h9K~cq(%X>;!!anlzt%a2-Av0G+J1bL709~6Lhi6U0dJ1g^UD{Bp!el zEXasb#e#1))e=6v*ufi&U6&6cb9DS*>?w=7sfqL&yIZh zVD+=dn;$>i{P6zXn>Wrpy|(!AgU#2jF7!4#`x+hh&rW{+c>S}xQ*Uhg9<4Wj@9Nl( z?#+Gm>gvzmI)7uO?d|i!zj|x?-+yuQA3nSO<*RF7zPkSRKYI0l{|~?XZ~yrF|M1tJ z{Nac9fA`UqpFG`r=i2mJ=ZD_CFnWKz`{GQ~h3Te_DjOlK4maFd>Abg4^W$5S@9p)x zdv4&z4_5yEdl&!h_pkr<1LGX(H}78f`;V^tKmYdazy0XiPoEt8{OP&hzJ2z~hpWGO zy8AcZyY=@!e)~WE=96E&bLr==ZGLif;*G72*ETwC&(~j_syaJSYdk;q)lQ8K#>K^I zvb3H7b4s}=FO{dT=G^+v_24j%nrKvLRb-0*@Qo#Scp}N<$^u{>0RkeB(ZWzG0x%?D zc8J4MDdQr-i@=;}jp2@HxyH?#iT@_TEeruhk-;YJWI=h+lA|P{(Lxv*ATZmfc~W!h)JlL?YCZdrh%yktkTKvy$mxsV+_sRHx))cB3I zmtT4@IX=29H_4L~+ESL(?@jNiOmA_fG#ig$$-Iw@wv;aoG^`9apI;drYxlNQm2}j( zhB})k2fIevtDD^U6@{sduDtfDqJj4M<|?}*Ke?hftE167*k0RORpKd1^%SL*X2&On zACEqLEGIp&sixeX6YXA@$VRa!)S0OP(E1&`s4lSkvfxI=X z0AEC<1&lS-ht?9NORFw0l?*^z#vueeT25sdQ*a1LeC0wbj*@x?h@l0DO6ySd7ZWHX z*{2kYDh8O;oU-`k4k2O5(9(r40yRUTtHhxdmH0rkQP4jIiOC@L0Y((9CK0|hYB}{Q ze-qXeL!k2Vi_hm}Bza1*%5oA4(xP&b!cwAx62ed9C7sSm3{8$Yl^Av;{KWI2$G#hO z{JGHMFPu91{K=y)g`W;ej*HAmjC?LawON4Cf1iF zN zdUS3|WK#6$uv15ivlBhVsos**R&QZfZAndOdTC~qEjhF_Bg&m0Z_kb`$%-w^h{;Qd z`JOjl8j08+TTfsp4D!u)m2uNWLB4COm%vuJ1ge9J&V2G>2_CtUC~HW$y}%L$*D6# zb!P_a)<>K6rrXZXcV3w9I6v2ZeWmB_*6{tkiO2inZyb#L;MUw%50`%PWcBYpIQySJ zz4)UC3-6vExVzlE*jsUS*0Lpk8@@g*fCaf7GgM$wH6>FZBR0SM8$Ni#Q^9$Lg8U?M=v)S84} z03aYRdCUYGXj+I(xjSc&4jrX|Q2^ylrvF*HvHMR$JcawL1&atID!Br+WtL zZL{t6r7q`kmwjib;>u#{_ON$nr0U#E)7cr{+1XCx0D8Xb!eaNqRO9+^&6#fF@8VyX zZ`mAe*qrU_@l`uZY%$T1l-gXC2AD6pWMSnF!E``d3khfyk-lo838E}oLO@k|2FRdm z7RmplXsjC(#?txbH9{9LETf2b2xdef8B65wAzSNEGhi|Q2_R39IMNiOLN2s&2Mp6D zL|aTVKm!VrR!o*6rjQ{vK`MU~|6KuqfK?@8BS{F9r86xi z-BhqSTr=KWJknS=-(9gc>ASr>d1bkGXRL0u-@QFt^~%=3-bls%NX6B;rb{z*SEjw^ zM%~wDYwxVKUtaFKG~YbeM*u+uV~)ww)pO<(axmQ#E^os1+m%yVC|&&`(*%iTC5Q#t(*c&1py#M(}@8_0b(#&isT|+0Kewd@%2?hmw*vQOi{7G zh)P<}f*G0O4u95g~-`kBS+brk1 z`TbW`Ke{pd%2xkEe|3u||K7p$r}tNW_S({ykLEtSK7M7k_Q6)~`&VZ_y0!HB*~!&z z`>o}+53bFA`pWW$H>TgcIR53+^MCh~xBuPW{OI5Q^-uox$4|d{`|78Uc0YP${k`i8 zmuG74t#(~q?AV!X*_iI}mSn6A)jnA7dSkQg=|;;>@67!4{_g2F3&(eu9s#7MKqtnHq)vBEXx;B z31VVg_fzYxsvE0X5j;9dkrpFZe#Qb24FX*Nbs0rQ)?^UqT?_Dzhs~46UWz>Vd}UE; zUu{8ObxwPEN|!sep(LTDJY&S?nCq>X=y7aBfARJ>p4rdCL zZ!21mfTl*H;#lw10`KbZSu>=A76OEX*=Jx(Qoui#0)>Hbr6!sP>0*kOE=&vxel-*5 z()tGipiu~XSzQ4YDnLsxsu&17f3fIqgCPtOo0cwtVFxH|i-4~o%OhDJFItjjnBRy~ zAQ-w5up||v1;VzVE`g~lUf&U3W@KST0FMiMyIbLzq%x~ zG&6>4tvo-eq9D1lINh0_T#z1~Gqc*?yq~jbdDoDOwg7 zw+e0&)~gI0TE!rlKv?|1A!r59kh&N!NB*ZjD=jTEKA@zpbgHPRt*h&9tsn2Gnrw4T zv^t0Ci$)qtCR-ijKKq!jbg<4g?kk(`_RM#CH^+UO<1J_BIny+z2&CQu8;nkw>SRoz1@#)FT8#*bf(`k)KEB3Ya6U9m~1W>uFaYB70!6G#T1JbxBL{ z@Db~4Xy%Xv5J>2b&g{}!QyVA)%zfiuhKEO(A(*E}Mnd}5bK@(n^sSaWM`Fh^B6V7+ zYc&8SH7qP#mC=uJEOq!pR~cCVF)BM$&&mkUg=u9f5GqjQTGq@X1WZQha+#sRvvpKd6i@K_eFy2HVwA}Q z@`w?VfQ;hdX-p4fVk&sW2`6w!OcB76lo+svuq@+1VoHh_6q1qB;l~OXq8cg)En=D= zbdMc1{%}K5?Hv5^O+UYjOSX0SpQ|Wk%V}G_|y0dbqv1Fmgb8};G zce-_JqGf%wX}P~@wxxvUp;l*FPi5w8TiJz$u8T|k`U3?UW6hfrt>@2-bk>yEQloOx z;_5y2(#)tfPyR3$dvoDNpYzed=+(uxOS4TErt8;wovQ}V^)6dYL0p$Bd8j&b)|bE0XWtqyzP5>X&WT3j zk29LbQu%YOg`*95!}a;oZDm`dbqCWe_cjOaZT8(-?Yh4+cyF_JZ@A+8WbKvt=G89a zdy#hroCm|MbE6ge!)|`=Z}u#7yPbIn?$X@8y5h4FbvG89FHP6%4LZ+`xVC!BHhar< z1|7S@6$c}p+snq6oxgcu>eiW_x6X~ead!0nX7A(OfiE7ey?tTg>P+pqQP+i0*Z!bm zy}NjKz;ULlWU#)V!BbXSQMxqjn`n18x^2zPjSh!{9fsmFL4e7Mh=@3G;sk`MXMu{b zFswa+wZS${3(b;aKR<4MUXLy^fFWj_H#GLHu&^-NAoI7b5P&Z+HWpg6SP}wW)Us5V z8U%PLMOaz{hOl)20fAFX0GOWrW@)W!3TuG)nQ>$8&Dpmu6TlTmsMthIs}WsFfpIuy zXa-~id4J!8EWkH>nA;tZP!k1d5rC)|MN&roC>T=M5|d59kh!jng{=x8W^EKe@^Dl% z6&de>0)Rk3#w{(?2O1ZsFh{5ZrVJHgHY#hHLQ-0iml0ZIv>1?qhG{Mt17=QNgCQB= zcE);u5EEdBj8G>+Rlv;q8{fJ`RD?uptuB@XU>VRA7)2gHC~N^cRK`jl%MgLJf+PO7 zp-cs|P$9xVrj;G`sathbWoAlDdd#T?N7ltNLl4d`t`61AwU=%VdTuPY{^GUeHxK%a zKha%Rw7<~xvkz|l6?tapBVaqy$_y+61%`m_5Bzkm1O58u1|_a9vN?Yn3H{=8i`)p4G0>@y3F>lH`Hbs`37|+?1${w3K7!cMEC_s8G}g8iE2c9hyhY zmu6fgRl(sfHJTu60U*E-97`R*7cCh98i=VCB^NS|7b1bME+}2{fG%<3mr=jhgYq*obOJeoIAeTX{-PMQUA< z@udo_?yTPWlEG$2SA(m+#XHs8Fws@(^A!3ji}i>0@{>Yy6N58iPUa+pcnXsnT{+zB z3NsUOQlj%xd0UR+eK&j_o?i)k#+ zs&nMzCPx%y#yRs-%d+E3GNN4tsm0j|xk+I>^%Z3$W+cZ&h6TO!!gv4T&%gd943bh2 zXi1#8paP`HsCoDEzg3DBlsNCn@Trfgin^91MvO@^4@ziNLugdcMMdhOO?w8Q2?Y^fH2~cGJaYX=#foQRhBtT5Y1u0_3m_HNdockx;ic=gw77~Cd@3bPYV|8WLf;CDj zr}8C500G}PAviqK@kjrE1IB5@|L{K;OV)f-umZLSD_Z;-!5xOJ005)Vi~_4BRy+WC z1mH*!KpUq-hlgmQ13^geEh93Ex@BBlSp#%w;aDmdu?QIy{Aqs^|N1ZgA~i0oG&?@* z)RDM|pd{lEDkw4XWKwi+Le%M;^rXV<6hsg38!-6PT3NJ?df4<>7gZQ zp=BB2p8VK~{J65r$cn<`CU*}2Wa)vB5>@G0`DM!-9^TI{xy}myHj-GC@|kXjK*p zr825|Dv_!u!jcCFz(+ev;s8Nv^^q)q?nSS zwfqXAB_NIf--=u`;}ZL`67%ohIrV`lx4Wjcw!-6a+Y36}8T|BkbEaGEOTCq&EzaSF zqJ>`X>PX|-NHafY=esVi3|>1kcxAcw{JimdeD^j7AFg-4xz+mB?a_~~PygL}2mj@> zt6x4`nP@4E3VPwhOMev=da5`tqo>)k&{HwmV4LZ5&vbhm?I~kT1ywHNfQFy4vNH3d zQaYA$m6evTjaC&Vw7Ihz-38`34)CAjSSL#KDqUqm&CY=)XM0s~RcTg!T1;GINL8ih z=+PtOOmS6rs>xo-Q&E5+Y{-s-ZcI!J<(4E{6=0{cK-aiInb0VNEHfH-8>2Nf{LkwM z(9+etpDqvd3gIvvBO~)H$@q#ZOd*CmcBE@KJG>u11Jl%>JeCR%4`;bh0a*~RuSmG@ z@catNGXWgH?F2po0vtVgYY4y$%-7-rXpGYWjmi|Q2xSDYK;7s9B?zHb0_KSSp@c4J zTI*Xa8JTO?_(u|EnW|$)R}nxS`*dMqgcJZdDoAWH3PJj$CJ-J#05LWQULyg;0f;?g z0YIpF;xGj8rBN$i%|7uE717daE*OGItMuW(hd??!EVQgJr_q@`(^ANb{b*gzL{t8J zd+AuCZN96*_?EYU+Kus+&8f~aL-l*pEti&iw#Hk=TgxXqykl(@V?M`RhoiAHsk_QH z+E}zX*7)YVi|3a5w`Y1Mx@wx;xiuxJT{T7B-kh$g{91cvO62jNm;NF-Hmu5?*IQrO zUz5K#-F|JQ=loRtW}kg~z;%74ZASY?z7Kpsh}w&((*Vu$}Qi%l&6wN^ZIfz**< zSEceY!ZHBTg$cxwiZ}vY_!z+^aiY#nDzQKyDW?)PjTw8rfB0KK5}?AWCNKzsAxB!Y z&?PWhzjVN36M(k5q6Kk)zi)!BOj)37!OuDb9E!uV{KcRDtMJf}oW#)Tg4k}4@ine} z)%iV@nLVDgo{F>%S4yirF+0}yTFRpABwOOCj`Ea|+MKCo+gxkmd|T0cYvGK~Hs!O; zw-;~pI~F^Oq0jU<&rZ}`oNapZ!sOEn)9+oK|M=F@+n1*HM=GbA3nm)#mO6^|hRXMb zTubdm3vGov1I~Mk_4ij>?yvdoobfI78h`t`tU7o3g@*mX@~wWy)%m7J+XJtx_q@K-cXg)r=6oIRx<9zR@Xq$5fIMqFn{+`9wL z%|6GKshYE6RfDzpC7H3SXO>4sMsjj;$e&43ahMLenoxFBUaOcXe`U?uGQ_O0jj(mF z?71i);^N};@g@J7Hb0F55L3&JfvF(#uSu|?bbJ6)qY{9YcfeI3nih|!;7cDpz&QIA z7EqBd2rO8R05s4Q1h5mhL@m(O0w8kak-;5-rKhJSCMFW9E=Iw;G{5ftQJ{_teu+VW zDMAZ464X_wXcm#Iv+Y0r;MNb{y7|iw zu77@i`OV#qN9%15);lju)!tZc|KR%k&tBg+KUH^mq4mL5|D(;`OVbTES31s(Ro-4| ze(Un|(;KVrT%EZwU%x%zSnqT0kJmgrJ2lu;R_`uotFaGOXT7@G^!~a2Pp?n@>h-n% z@WZQr_}-#@?eDL=_`~Gh~d-8*Ot8ZVP{`Bt3{k4uOQ&pG7D=vg%%nCoNCs%WtpvU=Q6G<6N(VmtRln|wjco!s8~#< z8`rXlu0|~wI{KFnbJ4Oyu?!)3bQwbHFeKyNN*BxAG})X5o(%PH2y`c<70{xKx|y1P z?P14q4HPPT6$d zW<+^j;zU>V#6ZX5)KE{8yCgj#Gxk(w?8%(?Qw7N({A9$Q$WIE+NeC`Xiz-NqiaUKI zBKSze=@aRR(T;-j`tsb7j=G(ht}{ao!%g;)#*&_@y!zq%D!1<0%dPz)mAkR$UhS|BP3KLhvz1{I+o7jS6R z4di2rEYO0WYli>zam=4e#5|TU&SfMcT7bp^2CWnX(eULRC;)%Q>=FrpRu~o-qP0ST zK*kcL%c$a)Kp-?~I5^DRY8e9Nhyg4pJP28n02#@Sk+YepI2J9!0z1~})5bR^#>dB% z6cxBi^SveM?G>3Vt}JIxjN6t}Rgzwo9$u0fTAChKm=cm3AC#XM;?9XGOb+4VDo%@V z<|Z_|a*Hxz8!GLiJ-#M)-e8M+q`k7C!d8@Sq)#}KJ8LGE!4pnUpd1qRS=Q^BY&Gz2f;kRF>98B~^?P?8m&9(y`I?6~n0eljZf<*3sql9LnJax|NO5~&El zs6pTb(Ba4f*5>|EDel`M6(Vb(mWg{y%1#fvpH78C%ZBE&S8g8_swiz8@k zYAP)Y5Q0TpGp-0lTaXs;_jN4ga5&xOnUrxXRZ~;p@l;pXr#dUP#+o)q>eq(r*G8MR zrrIwoc3)iXyRtfTeRKTQ&h*8l-pk9qmzH`iFLvEH({p{n_x4W5=Qk(*=I!18?dK2v z%g-NuesAIa&fxA`=Xk5LsXVhFB`hi8M0{j$dQxm+wA)8ot>5F*InLL|QnVgtahp5S=gKZfkFghIme{g* zT+*FPIa5KV#JJmh=Q}*d`z@J&{?GCCu~b=9R5V(eGYIZUXqj{Af1+YWq1D9{LkPpv zsDvTlSdze^QGrI~o5xZ*m+~J=aX-Tdl2Sofgg{qo1rQ|o?;T4;AgLg+$-P!V0&W-p zCgA=-OXQ;c5@r~vn8_Is2Q3IzBzG^%h;ctRjnmQG0%ijQOstjhtWXTODqk>#bfHte@?v9%^z7G?dQwR*yHA zc2wF%TFN)aeHWJcpIlwPyfL}GG&VERS?kR1Zzvt8&F`v6=V{528J-h=vLZhwFDWGa z)JrLG;lo{ZgFffDuXx$`GHK`am5%Ex?dPWIcgJe?rrWDZGppS8jI`93UNrvwT!kem zri0m0cH~YSD4ptz3|$LwR5wO}iiQjvOhGfMQUf@FC6c7dtJwrtpoJq4gGx=SH3O_J z1Yl#OHKH*uVcD09KrjRoNpz9q#gdJcE=+4S10f3#jEa`}p8{gffHIOxSXh{%QY$-x zx*)JCS`Y{L`zHLX0ASgIpLGa0v9Yn`Wd-Hg5p~5$ZO)WFZ^meS?nG0;XnlT%JI!ZL z>U5`$HRQEAlDjIi8tus?8R40U;SKKGuFCA$4(HBT-R^+n!g%Fscj=tZHrHZX>L{9Q z&R^^-*&eMvJJq~DUibRJ$itoCH_lH!IT$@RQGI8^hZ}gO181q~lbMFs0 zcKaPSW^3NKH1TM+@8Nd$gZ+^UYm<4Y(JeLQ^Zj+Jz0SoJ+j4u+c5lgUf64w}*@bcU zoG*W+qiCbo`0c#y-qLGRm3J4aZ_igh^2tZ<}AO;f-zzdVB$bl9i97&Q3 zEqo+->`O>Uz!XDt3CT2I5L~~A{V5BRq)~f#4w`E{7=E0 z4L_6)fF=fBZjHUvgrWijgH60p5O#Qg478vCkQYr<04<_L5wmhi7d`^0(-N?u7H}+u z3j}BpCVop-eC7*9f2<~q=mQ`Q!n%nlasdwE8DW`_M>u#VU)CP!$Uaa~bkz#*u}nz7 zZ}f0QK@cQ_Q8IIOFc>I6Fz7Nb4B-(O&5=^Z3td29#EB{CejAwbQ|3pQi5ZaY%P+mq zSYNlZx!P9mvF9dM79~%%+AqwvUEUgd^XAICm&YD&w!X33^~)#QY!{#0UHj!*XMgwp zx!=8i@WrFm*UwM9b!qCI3!|5(YHrL{U!3q>o^H6l&~|mc<;qmegVmN>^Ys@dyceeG z%d%p7TdEiOYd8DK?#@*`S#9{?t+_8>-}=c@es+HT*3QqKZ2#Q{=l}50#h<*o^`Aby z`ulg!{_^SWuio7M?K|iG{=0X=zxncP@S%Zpjl3Y#5lT^jEobovBFGPrtm^|il3zm4U=7$ z`y&Km=t4gO>$L}hn`vZZq!hm$A+5SN^(TM$l%g8qSM{Vs$S7q2Ew$K@FIwHcAqaza zHd!v^taPisQY7i9Sz0PiUiU?wstaPExonBQ85JJUjk$PC`g#tnt-33C7E+V`T{5K=paY?LqRw7K*`uPOm~qw^Ylgxyr1~I6i#qo4 zLX|{o?ihl`7hNPJ42L0!iAI2TZ{RNpY-E ziy$^+Xa($xfQh>3Kqv+y^Z+dYlccO%h}=rSqJ?L=01mn=QIu%b9a~{bPL4bo zVf;P5my#k*xC_!Mi!;2XIj*A2!pyiTM{Yr8yt^oUpw&G$)KF2DZ7)i<7p9fwrxfNS zWv51^Cxj+Pok$Enijnxxm*+a2udKG-U2NPRsyG;QuJpQQJKbX~HvN+(SD_GHV!T-Vu!?sE&qum4*=j6YbM zsdMI5mlq@_L?^_>L`OwxGMHf9W^|L&jpyXalYUF)@9~+(QU;)-qM}ie7Q$@P=+fna z*M3b4%$@BU4-F7fq2&pH*05qiGR!N0V2DV#L$h})2Bibcv!v3@%&hS6aEu^qIii&X zk^;&OFtvoqUBD=y|5!>ekEKdWb8>RIL+H**B*y*LJU{_N3(b)Jg-XHG>N$V_pcy4v z_(~9Yn5v{{>FW~*(X`MAph#EH5MW3ZfR<$lJu^Yzf{aw9z%eb9R_-8|J&G+dWE z)>t&r>e!iTKRe&MKijo4)wVwB8}&JRtMi8%isyT)*C*NrYV)T$Jc|SM3w^b7J=H72 zO#Hr!NlK0m^4fDJ zx~oSUZ0BcuTcZtY6YZ>aXcgLbY)>uiz}Cq#0|dHW9#!~F1Hmfv=+?y^3QY@Z}yfgwi%yXQ}bpZ0)&;n*E7}UT;=;USf?if2i3x<11WlFStDAy)@z3>MiAkb9c~ralGQv zc*T`T&;6B#SC;E;&sX1?^r@@D-aHhkt$y9AQ7&_Ym95H};OdAinmX2ubdH8_mw zqL2W75r)Gk%fq^4Oq2c(K_ID%f;dGecv3SK%^~2h{#kO^+8C zX|C*Ru+Q|@T{+WxZ)@P{T+_t~@6)}WA3k3D^x?+Gw-W%=KJbotj$cb@F`U7K&X zJXL*pvf|u`>(XTPxiRm~pzG{t9q)Za;oV42VyQ5hMjhF$f?S!W8?J1uh?8yzZDUJiPn>Ek#CY zr3eR`f+7*r#fyp{j}j9hrX(=}WKh8nt>Q6LGzcpgy^Q_qzx<1^)4@@pCri^p>k4C< zN|Tx$X>Fd|>f)60+}OgDu(ZfyrJ2#aHMY9al;nt`VaLB46?(#6knXZ2+Or}WoS7}I zj81RfU}M>6i?h2bzdSp-rXa4nrfAUTZmq~0Y$)ldE^e2ardug*>kt+wZt=bv__c@If7L^0By~$ zKo=l}I+5@yu9tSfJh=G!m;*6ppQs?PhIe8xmXSGq@YM>8$`>s(V4~rRBLTq-!~ixG ziR=TI2wMaQTeQ@zbOa>=;42rH-_DmVDFi|>V;Myt%K(n}Rv5JKu^9+Br~m{k zj+p8KBfbFmx#l4eTC~Vp1T7U)1uUjt;Shd9CX^}gj~$MRFiZ0FFATzAR!#?>%1BMD zcNcC9*R+?XwYk!3ixb_s(X~a1b!F*IiJB$ni-@MAAXt90h&XC~&P#b&2Qr^TO+ z3E_Hqu_PnBtuk+=zv`8h=DSM`XUDwjedPg6%QB|5=S(NIsB|Gzy z%JY+5`AIyoI&u@svJ+@av*L}fzDfu;j-_HxXU2!ojSN0|>d13ZVZo6RVayTvYOW#3 zT63pTi`E)ra=F&H?pOm{fVA4IAhdL8jpg_)pbPw+0BF{X<$g%WjyY%m*Va@*0DN(= zQfr#HTMvVZUF)GG&* z7uH7>hJDjLbu+#7Bkk2*dwykEuHBZFlNy^IADR{unV%=~&9)aKh=SFWVTbSnc=JxeCfkb&TWxxRe3&P{~#9sP;IsGg42TJRwjf z>cV!ZdoU$~(7lJ7G|z>Fg+!ZDv`j3*n)1xM9;2AB#YkdYYjz#Q?HU4WK%XxXHTUmVee zR(6Wbuw_2u!X#5xEg)YKfsX*R)-KVxMlFex zKEM=;0`V{x1c?!q6eu;^0ST*%Bwnn^f>4}v#UXygUVP#C6UUC^W~NSdSFepWotTC>twvf5R=(pkLFUb5Wn+#Rif7_ZNrZ7aL9Jn+`tvv+oB*YuuA1+!r(GJTo9ytc4mX?`YFr#>SRHE}YN?p&sv7k<+uYeT zMe+3|Np-~u&1Fg5m02S`$53ZgNoI6$R(wTCR!LUObZ^7_a7RZ|O>vs0pOiQ z$XX(jKp_AB7ybz?dE|vWB?l0f!v(Nepx~uZ4O0&FWIYZ6m+e6-KbG5e@ z>uxX9-d(DHxZ3n+z4`S`-;=GD*EU<<*lB;T+IVNV;m&&3?fv<&&U#;!-CmTNm6-w9 z>!<*eYfZ!-t(9sBm}O*GDol+Q2DD}hu)L3$$Jy-3(8kVU?kxxaV^Nx$u(4B^fAbVc zMxnJA0JP_QQ=7-A|e9%^y$;w`gu5si;Kf1T5>Aj6sEjb zeu+@9g24qK3`IgUSY{B&5EU`_&6#EKQvvlvl1CtdvF1yWD8KfNb1(OK_s46lOjm#J?)+O)>{c98Nogcb)#`u@fb0ZadgJs5FFzB`K4LUE3x~@!CzPa6gVX}5>+&9zTSm(&% zG4k!R1D{-@GvW>i*c>jh@Y((xrAD ziJcG5G~ZfiXe&?esdrSDrVZ5>T$^ut`(WVd{@~+{wl}ugo^H3lvRHe2uKLM(^OMb% zJB#&uBUKmICL3G@j-tHW++32?PS@UI~E!k)Tct5E8~FrmXM+ebQKSe4SHeI14hu1@04c8`zmZ+Tl`dieOpbjGbc7X_GC)LvCOz&w=Ka{kZMbh z%}zM&$V;ww6|{J4o!;Ex#=?$@tS(PhPgU+p^}QPFccxcTHxEe2ml}NM1qRx#4tigK=A-Z zWf@3}Ry6Y)IBKM1b{PUP2owx}hHnX&N`4wV)0M6TD;=2%q|Is>=Q83ylOP<_u}o5| zPx6I^V?_ld!%(1KYe=wM2&jt>pi%S>m?~yO1|%S+Mgj720Rfb?x{OLvx~8}RSrg#< zsQ|#V_{dwPs0P>Lv13P55~7>jwyL6JpDU}bG{v18?a7NN%Zl|Dr}2nbmY0&55N=D4 zOOKC;j|hr7eLOn!cyi3?jD+xXu7&83#Hir>w3w{K$n2!Z!i+eFEyYukSzVr2QI_p- zT~U}aQlEb?=Dj&zcVo6@f5bE2X&-4S z9%v|St1PHBe~GUsBi50dR8yK+XU}rmlI%J0#hI}snQ`#*Q={`!qcY+{Q)5E162giz z<6=%9iwt@>Au1#;D(uLM#`_~_YOYmGp#4qzkFgDz8zx&immwT$c?Ygupjn_5Z9z;y zl7AH6UjLc}YdRPuBHR*yqS9)VynvQWDLip#4F`vk5XP~T-QjQ>s3>>2Dk>^EIy$CC z`sO-ZX9jD}4AyZwKR4fXdAa}E+VHj2!RxC7cQ*PTY;BL40{` zY=tecw>mE^=2TuzrvFH#wAAVR`dG^8G>)YjDhj%*ZGE+cUDZW)q`p4MF%Of>V=06Q zp2tec!T!j-mR7eM_c1V^)7^SuN)=+MX<|8{TM$l4MG?`)(c@$|?RmDS^dZw4WV8u_X z;sB}RQLYI_G6Dj0B`^EPSeKu);2U=S<-dpuGd@C?7#UQUmDJ$QZ?3RS_tfmq^=ynb zuJ*atdYxyw$`;#-7Fr9I+Kc&t-Wc%Q+nxIG@wGdCOW*$_SBa0 z%#p^T9&dJKUbHJW=EnZi(r{gCMNVN_WMs&(+GG3W=~wn!ASqvQXlb6i`D} z3tbhHIWlYDe*;%pupj{yN&*mY7==K96;5$52q92Ce2GASA+@Fr|0^P`tf>n@3y?%t z76fY+0-5Zs*he0k;7J6_ghAvCDOrFbwA2HEDb(>5Xj2Fj7ELPx;eQ(VqQXRiaUvl+ zLb3q!PeJPb&YuPb$@JKf7mIV#oCWFSxp95ojK0c@UQc?rC%xC3IaHT7RGT~8V4G@l z&UU)SoAM`{ZChit2eU0}L)D`V#;=!7H|3Aj=ZrPvp6Myu8F9BblWOc)4W43eVf=hY z@y?KQtFLUiqiC_cXvSyT9xUG)aLl(BPWuXPF4VoU-g#@e?aFM!<+DJ(|CToa=EjFYhiDw;_O)E`ha_PtbV-3S!>U(t0-CQ zuRk|l_3C=dC)Y-Pba(2VgPvD6j6Wp*V72keOzpkRo;w@8J5$Yzqiw4z%iJtNLqnM? z?xx%qpD7dtXGqoc7dilpYB96G*e*;B0}R1o8S}=-27(MUfUsz^C^!~aqT*X%)O6~9 z0|ao4)oj`nM6)#oZcs0oe;yuS1Oe>J1tFO$?i-67CSDLA66B8^I~E-sjVb(U$O0B* zN+2G2H#`R13(&Pb^aPF{J4RR-2MEiHUZGLJjx58MyzJ1$I0RjomO)igwBgK@L|sM{ zvjw^U7pNd$aV#)|7lnkQLth3?o;-Q{@MCU-iUo^C40+PWqly5O2wfQg5adh11h0JQ zk_R%lCK%)u1_Wi#%*;$lNl8jdie!Hc3E_6nJsLVLE-pVmpJxCF0>BY|0a^gpib`cM zOJYoc2qUG#co0JdNu>sjt^%;E0dWNQ#EeQzObn5b1;I;9D#*}MKtN!0%{}JpYX=Uk zIH)LhVCkwW&;^KD#-)N~EWm-FOC;^>?G@#YGF!$#OXc=V=VEvH#f7#b>)W zAMSU)yWR59h5lbZS^w3O&A)kToA$@|&wP4k{>S&1-@iKh$(^NNzOnN+@1FbZyXSxQ z`p!>Z+xhafozL!X{NR%%ko8EAu{X%4fPtFHKbw z)uow+W_Rv*SKVk+@s&yMN9TLr+-kcuTYZ1I;nnrl`)8W3O;z5St$Jgt_5E{wZ|rpO zKJ(`J$?cKq&FSumq3(!~V+nC_r%s(>PAP&4tBO$&=1A*P^Ggedd1rnpAT%=2aFDSU z1Cl_C1Q})!F%{YBJ~O9SLszq)#iRMsWC3UtxjwMZl9puwJ}m->VM?2iEQ^L|0U6m8 zjh14gD-{S-xMOlR)N2f_ASR<|5h_}&c3dkRS%67bA<>cxUBU3k`@FdyA}=5Sq@~zk zN*;o)m?j|or~JC1V-Q%Ons04iBQiX!I6o^h{`B-vb5~<|X?9$4#IdA^6KOF)NfE~j zGvjNVd9|e}J=F!xuAFvn!9ZhaUv+-FJFBZAv(1&!Rh2*2Q)B#r2zCvm;gZytb<1x^kPVIJdRVJ>1jMeN5r$L~v>+Ig9ewmemSs>~01Zdg(~!F22yl>;DQH?9Sn&3aWndoK_>ZV$ z6Lq4JDFvx`fNTP}vpA%Hq=e}r57f0}M3{m5y$IHjASOUvc3@iWfHDFQf&@qnCaGBj zcqTzO3}J-DX<3G2ROj&M2M$BX1dhtSAj=jl0w9SBVbhwH3`Ge8OGbPFvlifsK;5!H zSCXP>F-0yisICP`0z=dEB0{jbTG9#23E}p<?^v4{`hwrk2G7Vw!Vn09w-l57#V30wW|;7(!m^Kq+Wv@Uy-J<5-GkAg9w= zQQ;|fx!i7deSLj*OZ{kL;cS+2&o*9NXHcivrTd2g@nl{3x1 zdw2i;{KcdH^0S9uy?wT=B4fUzbh5RyzoB$_sG&G3er=-T=FaT)Y~PU2-P`P$8)}~( z?(XmMbv1b_OS9RU6T^|wL56X!TD$L8$=?p&(htvGlbK}!nygv|Lba=?=Q^(R% z5^KC}NA1{Q~IRFV`;3m*aQ(|Q(E01R2sBL!l?!NF!Cz&u7e1T@d7 zDDqff24ch@Fr8WxnrV^+OtbmHEB~34Qu^kxR2tTBO?UvBTto{-l!u1}7RSi*@XQE6 z06l`xwMI#VuK7f6{42L0VSpX1kpiu0#sGX;6!m~5j=SumS)OSRg`k zii`m8qGf=tWB_7;v-bRR-;E4AedLAj6s3gK7RJ>S#Cme0vSLq0hrFDhkx=h0YIJ4* zszFu0E)Uc$_Sep}J6Af2FOF4g4Y-!ujSrq|^}BXQs%P6B6D?(fwfWtijJ}$@)xoNP zI$NhFYpAhgX|Q2+q-kZSajv)S%vi_GvuEb}8y;TY|M>04@4R~F&i=~ITtC<5xib@c zi^EfGFL^;6d7-3ufzTWUwz!i#?r;Pk)D@udf*s^7sPYiB z!ZS3GN1m~GZ{+gSQWPW>NdME2BsN7@oIpZOzYTH}pb;Y~P4sgF4ce)xqKNxnd^RC!ZaDB#m?@ZhE#nziE9ZxS#E_OK=I-Qs1THd@k_s*TY zJ8L~pZ?4_m9o?I1zP>rRJJGP#U%uI2etx3n=9!L1`$HF}8*VPO?T$CtQo}1sbLKnj zk2gDi@^Iy+uW#L3>)aixSZptzY%Uycv5)mMkB<&Ou4SF7U<5H1jG$QtEFM}jMFUs}4-dx(#&xBr6!I=wF<8-J94%U$Lcm7`MGc7$ z_@A@@gqQ#tN2p*N%i;*)%anvISZP{72FvUjs8Dc!K8GMjVoOU)W0bCD#F(~2ST$6H z5ZGjA!;5B();h}?z&I%Y0)Q!bsj%I#@$#_Cx+RO0loTG- z3JMB*KHorZm%BK#rKy8e?_mVR_^>GOLl zpWRu6_}=x|_pi+S;P&D#Uf=rZp&AaD+{QB-&S7sh> z_5AqG%+uYjixZX0?M0J~`5S$X{fYYC8e6R+dv9sv^0?>mO2hXr4S#xL>dl>ww>Fy} zEY;tcuf4Na|8TYW&7HQl5Bfj3Hu>SDk&6?a3u6`g!>;XN?@FI%tf_cmdNd;~B_x=& z5Twe`QYcM2%Zx>Nv?1hIIKH)qLz zrWpvtu!DUJVp(PdmVpJWe_6(bZhRuJfMon_QwDYp%_*NykJG`I^IJw?9CBIB&eZFd&s40gA6 zHhXKFHr}+0vl85e>AY{d3exhDBU7S-mi?TKlKnuPm)GCYdE_--B^3TnK z6$l-&Sfc_4WfodPMjR#rk1c@JwGM79phbk%)Bq!h!`CPo7ogQOvNHWj5*kSf(}kc_ z80Pr1kToD{h>5n007;5zbtML&Tm(`JOcvUomy+^Df^9JM9Zu!i^GsO5)&;LK1_(FMZnUsXh9r+q!OVO0ZcQ7N0NnL1+r)6 zr$)PSq6^a^>WdTVOOs17qLU&|#)KYEiw{qV3W*IpnHCpTQIsAZ5uBYAl@=GCnGjK9 z&rXO8Nr^elP<~o$wLLpKCAPKJzBt~pIo~}!++1o)&&`O-&q^rBPO@di7v&`6rp2Vk zho(fGOo})bANq1}Zc0yG@%E7G?o!>8&6fKs#wYy;8%jH?3cbbYE?aV)BfG_8t18Vb z%Sm+RCDoQ?@x!IpQck(A`5tgKA- zRW3SXFE$^UtV>TTN}w{#1w`O-1>y%nLuM@vh-1kM@Tsa!46TCGO2sI>IVoallrF+t z{%q+4X?dZACT3Cq5T>_p!1QUrIF>3cEpwP3m@+@4GF6Vq_*-)KrZK!6czjnN> zVy3HVpwW3{Ywr5a{MK~W%2;btb@}zZ<=v$*UzNSOEIU0hIwtf)Qq-y9jF{T8jLO1f zdy#oUWFD!MmD$Y?Oj*ZL_Kf6sSE;SuTb_{=Ra97LN*d51j(M77e9)<&uu!u_%N>OK z2tU@{g;wQ&Lzlw&kEP5KI2=yXj&Ur-bFFnl5}_L{G&et<7uj$jcqX9qFy%r(7)hYj zW7;sDU$Foo8EeQqOA-j-*<&fiNeh&hf6@*Y69i^;GvFCT)zi(pF09_t9B%@J4;ufrj67vzrfCTiIf=6_*V@X<2H*g4fy1M5nFMtJwfdF-YqeV!EmX}6yls@t3I+g}`9 z9<19KZ`qz~-JR{-TNvD#?%W!0T^y+2o@&3kHgtJ)2+rn2+sa7G-s12ZH}?7)9m9>q z)9udL4##9;-cVhBn>(Yex}>Zq=U@EK{}b!aN<_<#_V7aU7evJohwONs<~bOe0$NZd zRUEpMm#!8eLn^7JRluE}It1laspSqWjL-tP02)FPQ-M(YenTc;;!*P`8R924bY%yQ zw18AZBVgGVKM;~JF4RNN)sW;RU~#?;MFrHA3U*XFEi(`(^G`rx7W~|Q^{=8sjy9Ae z&bAZ`*JdxZ6)d$EOf}_=H{|qq(%Q>YdRT{z`HS7bbbkIb54N-jF-f zls8tJ%|ach${4QA8mrHlX(^a(E1GD^pKh{k3|1N+q-rjyDU8pEJJnj}n(gvz^_E7YRyrSU54>@93w zUz>gHVD!pj$Bm8QAHH+%>CKII@9n>FV{^INd1a>VV8p#USiarwoNFt}PYo-{NgQu3 zxint6(O16MQ!(l*9qn%D>1wy-<%9&CI(6zK)nj3>ekdR<8#pg`sw5o1T4GOT>Y>FC z1S$wHWUeyf{Sa$R4IGw=m|Bq9Lj-mqrVL5M#L-5CBz$96I^6njp(TwltG0g80nebu?Db)aR7%F zr?hw>291(07HGM~DWkECS|?NHzgrwXevIVA0jS7@0tQN4mntpx#n+8hbf8(mRHA@J z;#R&E$d}=mm>8vo0FYlnVi3xjQCy>fWt*6>!Ud zgEeYJ1t=Y2tj5gD%!Gsl$rCD&7g~WJl`kPt?W0GJ82_9T9@f!P-|Q{*+G6*{s(gDOGhs(8ZZ8p8W)&TKzz45iR#v6-GcUC*TcWvfBe0u%=`sJfvy>;-`g^4>WZP#XN z&yQ8!n617&S95Q%@wLs)%hPqe)wbEOzOk_}()ZWma4j(%ECY4`=7`d<0;!C#dJZol z>dc%1I0(=csG$XnV2V<+MbK)N~7`vaCC!?spcgE-;^bjmHlWL`#|&)FK4df)r4sg^6Wi!hu=Y^t@aw>r1Up4@Ct>GI|bG?ooDJA58nYfbsw_|ToJ=jR6+o7}ca zyUkTvP?(wEF3jkxE%8+rRhH&7y7N0~N~-NSwdDnM?qYjhO06@mI46mBW=}~@Ras6+ zcA~2w)sdHM&rPl@$&5XHG&WLVy zzRv(fS%9{Vr2+|tSc(KA3o;0;VC3bQu4YqWw9x9}$RZRoUC9X03<(GT(He!YR7DydJISOXR-$+xC4AzJoz7%OOEBp9j`KbtS7(xYKsF;S0;xhzcdN5o7c>&PY z5HK|i6)d2on5`j<8)+QE3Pyl~B7|%L%b+X>;s7LZL5r3=LW?f~VN5~4{L%{e01o^q?oY0^n|qd@Z{)_l(_KB)P($;tfZLm z)VPS;wD|nASa(rIZ*%2vN6kQ+r?0i5Fgvl-mRgjToSP9>oRcu*D{~d4 z)Z4Ra&7bbNQfFRrNmhJmw((U{g&DEA$&oqcPi8_`X;yqf#HpCDlgV*W+*`T0xO|u_ zO|b~AC0fz63;~!HR4(cUt?B`F#X(V^t5E)PJR?Q<*V z&Wy|rw-2;bUfGy9Gtt#jRo2&FZ}t>aFjb|Qt=^)}>LQ;z$5WD3R-A7gsRaBUpUZBy z+p<$ibCVo-Nw(C8CU2R`S*D{L|0#}fnq+*|si3fsX=4X8ZghwD6)r+rpy{O5DBC6P zB$-*pr?gZ7!;E<>RZvivn3%+EQj$P7Dq3#9+^T6A1?;~t#mBXTwJ!s1%zDD6MS$C< z{xuZ=fEIJc^BG}l7L*Nu%+1YjuKpn{?`D#Fa(|LS5sd-z{702~d8mJw7eQxcZIGc*J; z#%tQ{A*cofe7T?|WP}BowT#07$jA{b&|{NYUK0D!bV%W=>@xg6Xg@X;nvmMU$!K$s%+J*L_{qdUZ;mWPS ziredb=V#k)toC1D8@#yGdw#xiecZP_;oF*M*_vv|=p|fugd8ET}8{fq;(} z6#<$WN`_X%Gq9Kv5XdexG?X2ts4%Y}Ez(<%&|959*_b=uYU5|l{1bT7&3R*WIb(I% z%bmq%$2~WeTfThv`qL|mH_r5)pYiRC)~pSBS2|0kn)1gQY_n~pvn_?w&9>Q=g4G`T z`AP3WTk+nAXLqD>zP)6iDzn3#=FX3Aswf=txq3aRo83h>7MiY1S8w+gZS@wP8+M%O zDp~J!T$-uBzdQ8Cg^3$0T{q5j-(KszH0OJKe(dgA$Bo67yX!q~U!MKJgY92`|NifO z{O0!`pWEzn-db+Cv(oZttNZOs<8NP?8g0m{ER1ifDIM=^>1^_LG}WZUM@C16#l^+3 z{aPyoFu!zJjchC$GMAyTXt`|J-l>u#EofaKqq)-}p~WT@h9h->snOzxz#uP;II_AB zv_M^eu3}S*HKO8O9a9njY=8s?2VoQm9v~@sBB9k3YtmUEEJ75`4@m@bm!S@6X=$_= zu}T4;1?qrh_Cr7bw2F{T)co;pmH2{57TCe50@IK{7ba|YNMb~F!-XQ3FzOi5ykHX! zIt&Shp+nG>O=wjQJI`dH+zC4-CMGE<>6rNk>ETGml9ZT5!zVT?anzY9d;!IPJIg76 zW=I*qmo1(?mq$Ut381R#)C4A8O} z2xPD(0VVDqFky9xL92rGK&H|nW)%~_5rJO=%zc6NS# zKFcgMHI+vxvS2!Ncqd_b#Ig#jf@2w`hVTUeh(TR5aQ`aR5Wqs{>C?fdjwi)NOboP5 z5BMf~Yp-vQ{P6Mi$2aG;`yK3N-QFB;acYA-{mJ?1_b-mTx8M2BR?8dfO;6UFpKdfi zSgw1x*80Oc^B>(@`oZnRN1Hv@W*go;H+27u@AciDPj1cr?6s|*zp?k5x6c0b)r}uN zTL0xc7yjWVuYU3B#*>4gn@i0%=IdVDY`wEs|JjZ4C%Zk9%|#XY@iT+1v%OVpefO8@ zo~}1O-e`Sez4@J;)*oIQ`Tf(?w+;qBygL2yt;HX|y7eEwxcl!uyZQMmE1$oz{G$hF z-aI$*z3a12_Xl2CZn`sH`|5i8tD9Xnmf9~abj|g+6k0rS&=Qn2O zdn%_|%jP;=e)fx%wWs^aqC*;Ni(d10ojFr%_K(`8F7&Pu2%&8jTTcI2ly^HUx9srK9? zdv3BJ;3(h?JR>nOBR(`e=44{{(bULeamLr5zZ@H498QIucrGgBSZL7k7hf>`xR4?@ zp8w1zKo*HrOu7_=vM}9T(ePCSTGFI?sw5msUFA}JtjY)o$dPKO7LEnK+~L8Eb&g?m zL>LDu--KmZfL4&SB4Em+MbJtTcZP2h(1!jYU%`t8QW3`@MAKS)0b$F9_=X7+Dhp6L zfl$6=q%#7G5D>s71;>cw0rIj>ngD@7FAO0AA*SS?F$-Wy#thbs}+G4%tFxq(?H(u-B^i-9NfGXX zG+TOXLS!(@J}D+NH#H_ZIXW@=bWC_qQp{;*QBGlYD&4fWu*{^$67w>tvS&AX3W{=) z9EEB2g4BZSgo5lucWI_ABPJ&$GCMgUCHiDy#4&!7xPqdN7o|sxw0p14HQrxoygpaE z*5_(qo1UMP$)|%Zb*iQXmHy5{Iy~ zR9+Pv1g-(PvI7kt0!gXJh0Ll8WR^GsFLp7B(}MVb006|F>3qlGaCp5{Zg+*t<*qbQ zS6lPDpMQG){KEb1fzR$Pe*R$XA3nMCUw?Y{51(BA^#02IgYj3kdY1d#GaZhl{;H*+ z#*MM&dpo0VU0r%~etvtVdwZtm*4fotXO}N-Ozy4D_BJ?X`|8_k9q!^Rw$w&vR&7~k zog=5-kzG@o?yJaablEB#MaGeed8YEsV<|^Tei|=P+3~>{@uxeQsyyy;OVT*YF;0_= zL#5*4Vs74Sm+X)1gKU(*+7ne8?Vb_C$r*$oOy|*S+VYd}3v-VzFW*=nxVYGTFx_%)w(a6V=cT3Ys~Z!0(=D50P3vR6m7)6m znYM)le zXq`Z7S|KzM8iFGuz`8b#2{s|8X3dQKi%}|xJg^8Yeza)iON5NmN*F>zR`3u&W`PL3 zfI(nZqk({F*`ymNpdhVi%~JVq4+5^0Ai7ilJH!L9#t;Hh1kkc<#P=;2woJ&r>ZW@7 zB@Pq(Hjre|a*f7E1XY)&54CveT{c&Kg3psb+3A^WEt+kyEwtK}+Y6W43uc@1rke7m z8gsS>9Cyz&y>Wi{XYXCTvpH~ny7~HY=grlggUQD2A@_QpYqig_(O2d6hRxGp?ul1B|^*h$OOXph)R(l*B;d+}`NEzT|tjGw|NEx$j+{|NQ>yZ@+irXK!DA z*G0(NR`bS&cZ=D}~^TOEet%2>?p57L3rQ6uL6B85T0$d|TYtF3!6oF{uqoSfv4+;v3jEqc3NT3?Y$;ml6IhmQ6p`oFy zA2WOdSd*>_MR?lW@TgEBR4DNkuml)2Xj4W&1}IaLG-L=>VH3Y(Xt4uFxdS4>rn~^l zqiNNE_zDT2jx`h&Jir=8!o$OrCXWGV!B=qtB`s)3MZh5T6}jb3gtb~2A^>QGp@1ne z(D@X52(M&1DWFBh@@o;n!NFl+VF(bvD#MTk3IcF}3R3B@@+1MHA{QW#78DX-2)_V>#6}l`Y(%uUgHQSd%&G$s5fQ9C zCL%pOJuWT|J}FZT*_T1t|2D9O7_CYNL9}oJwL}ZVgXOHO%%r%el=uiP|MP33GacpS zS>es@Twg_Qdu7)4Sj}g57JhJTG zXumRDyU}ak8>-mpFS{_|ePy-n-3y~Xytnd$yDRTqnSSG7`2B0Mzxv?H)AOS@7aGrx zRbHI*zH+Ad>TKP=lkz3H++0~_zxeP z{liBWAMf=4=>D0Xy}t9~SGRug=KkM&aOIO*OW(ga|HD^SKDxQU=JxT;`KS8>_g9+l zEY{yyYP!4ZyE;>|GhqDL&{xjRRh4GsWf~tYV@}DPmTEAS%q(jOLe~Y*6kA<@08lY$ zDJ-R9`mm!eK!C|b7>n3xNownYSeiAbFK_jEf3bt_EZ}$ zv96r4){2eEuKD5Cm5Hu}k#_Un^&NdaZ;!9Kz0U2cELj@zjdfJ}JViD3oVKcByDh_2 zoKsnn#oKR1QCeAUQhj+|ozwWmJ!o%9X1OiJnQy#ryNh!QGZT3&&rXWSNes=356O-@ z$*Xl-=#lu)BMG4|$DMvT^w@VpPaO?C9em=%@uSI3O7*8N77oZw+0hvO>x3UJ% zl#Vr{YKu>aM97pXW4**$e8ecMtO3+9!Wcu6k)ld!y))~57`~Vmc##GW2w;tsU`(e8 zbJD)y3;SyEf;E5^z$~=I1ZD`|fW?1?5KIvR$}!Ld%s>GP_*H6F7J_+J@W+8L@uMh% zD8f|y0(^BX#;1PEmQcOjdCI0_P&dHVsM zsXTG~XkJEQvnRi&I-eIVXLh8wFo_qa^f=?-DIqerC^O!c5tkSp5*czVHuP9&UTRKi zY-I3}sF0(Hk*C~6=}uc}URrEvUP@VEPL(sivMjqaFF7wgHZ?vxG3r!u^r_U?prpv- z3E@YLW2uN^$q~oWVosIjr*%|hO*R*-54f)_Hm!7(&9s(Gx0a4H6gHJ-)!8%Kyaipg zB`w~Q&E`4Rasq<;Vwww%H_wNo0yv%S&|iBV*ZY8QASK^OmKM6kyFQB z2njlI>eNYAEQQr7GS@1kL2F(#O>~h_m8dW@d|J_lf+=hf8m0A@`0%rbMxg_y3^0VG zK-ZiB|HTDIrl1*uAUt*kLk*gBSSR##V7RCwHOx5wjw?&#?F`A7N{ALV8hjz-IJ(dD20v5V9FYz&@A;1$V&j)&VMUh*zS}`HG zH$$@(vX9fs0*XBP`oDSIAA=vzDJiM=GWJUocxMA;&XfW)903{*j{fMe6#vmBBLu8l zFRgCRqQ4DB_51-)H16kz&o>ZCO-YHipnQSU5f+CokP)@=4sb_O%7p}#5qz|iI83ct zma;~HhEPyjk!zO%Xv#rH5Ek!eJrL%4JiB`v4U+rXP*JD3F!051RmV!#WpQm8`!`IRt0 z7}tma?4V^7r59gFO^8a15BCOQo?dUp-l*sNxM!`S zaKV>1)0{g|pS{srdVQh(&PMmUS7&!dYxXDVAMOl4+8?{R&~|pbdVjojZ>)Z^-?iFT zG2<(oZ7W{uuh<)}*&C}_?krvDC|d6>In!0LKjNY7uS~BiNvbQ)<;kGen>p7~u+m3g@{zrJu`s`ko!)7zJ)fAGrM8wW$5-d*|8 z{nfY54&PezJ=o~Jv)Xxmx#RkozMbi|j+&CezMiJ0CSHcgm-S~#KUZLg1T#|mEsQCgI zWc0N8`%PFwUQP`|<}R>|MVfnH)iV)W+29fCO!hAm6oaLO zJb5t$ftHvMfq;Vm1TDp<>buLnH_wgSI@5V=q2=Oa&6SzD*Y*Z3PS>6taqkV5?~PQPovfK|E1vJG z>8dTOx2Mgwm%h2z^WnLk&o1}==xXmL7dn4%W#HA#wjaH+^uK<7=eHkRe!MgA<)gLV zymj!^>$^XDviot-u0? zgIS;%3A`di2>4=@!kbq8lY$BhL;E2vWI^)CV3SeWXC#fAnRz>-l@=|&a3LB=9!1Qc z3}BNX28Q{f@JTlVL>fFV?iu|71;_c~Hk zX3tP(Q%kj@y}{Gf=;^F=wt0&On;g8^x(d_l%55WUm1X&9m1TL=j{M5fY)@%+jU(4v zmTi3JR7IgPKdsuH?JYG`24Jt;)1;Ju+!9sL`Z?+lQmF%0@Gy3svAItg@mG2E?@}@dfL<) zpk-7vx(GwlGCS-!m@tM9)p-Zj+pqQJthZw0b@}jQ$|$r6$pF+bg>j++M5}=DqC^C_ zz#2f^dgYd107u?M0E-S32&9cTOc~jcDQF3pg3m%)gw313|J>#O9?&8q^1=(c@@u#^ z0Szn{z&u;i*564G<{CsN6~N8E6PVTf+W4 z{{#@=($7eYtSL*cv!@T$7j}DdstXeeQo=LhLo?#TO0pA*vf|Sd!sEhE#Yddv#VR4< zMCgg=Tw(vx@;+B+3_`Hna%FJdS{NiAhjebj-P@w)qa;WCe#$DpQzd$_fEDJcT{E#`<%1AwY*f1cT}#8G*5I^FAg!?~B^li@#o?oB4b8&0;%uH{4Q?1AD$WO6n$JW_1hTE#vmuB91^61*dgWj$V z>qy1n`1)AN_+xx!Wu6Lmxx=o1k;~1^HP3Mj80RiJPcnWB&w(P3M{G3QX0+FESpo>^ zV&07WkW8xo(^BA@$5I6aY+DGRg)Y?u5K@$`45|w#I`=>8HVnN3_@{S_|Yt3aYSXigXaem)0nJ zr719~vTF*khVU~$*CG^~;t>+&AA>JJsnOYpWP-aZPqqt_;?Xx7b_D zQ=9E64JC=SMe#L7@pZ)s4J8Sl{Fuu8*!r^6^1OtQW8V!v_Fb>DsI97KxHj+hneNAz zmLFYMxVJlTVZLLb!#UShvd~ew+*7{X<67t_Tj_DPmZ!Cqr;gX>O*iHDRc4Gd6pl97 zj4!Bmruv+z&EC@Fgcza?+$rcPHKv9%&E;S~bt6;FJFx1h*)eK&2$%q7;Kb2N82TAd zJ>1DVuIVBM49BKAkWFG^6c>1BI;2ReQTRw=!I*=?qb`|+k1iJ!FKpbsG;x0v7(|$$ zXyjc+R1g6g;Md;|*clWdUE-lia3BbkfFbB2j4lBHBGuy@F$;>p-!T!$VY??s-W5^7 z4lSlMWCZaSe-RvXDm5t~Eg`DKncm|`?{KAbx>CmLvIna(+nmWIsUdkOk*y8h@|@^b z_J;3o_b#^=u67hIwA!W`bC)}c*Lq6F8}qL&wqITDzP&N{`0T`+7pGr67(YMVusd3_ zGg7nKfpS_&513eR*D?HhlF&pzj~jn?Ii*5}$% zPS-edhnmY4+KQK3ZD%@)jlbsJQ@Y$%xY$~-Gw3=Paz5JV_~g#=`?ppuOgHQeyYHT9 zdu?~%(q#36jqW$jj@;kuy|>Z#y*ry9KD;#DTi@AS)7aRUkdVL|@`)2CD6BaZ28=qI zp!if?n*cIMYEKSax>`RJlNM->5MYH+UI_^-;?Q!dc(njjL0Uykv4zPw1xvy zfL60F3#b!JWMm{S`NRxCm&GHqmLy<)k(W*Qh#_MwC!h-f;^fJb+%7XRGW3C|w6rv2 zFpj!RS%8T(fGYeOj1W5-I{_6_3)lKx~+Dxm>Ny4Wk`ZTf^Q* zn_VAW9Q^6M`7iIxe0Fu@vnzw|Z8yKW+y3RF<$wI@!T;;;zxSVic;j#0KKSDPnNM!a zesXQ%?n2G&CEu%?-ESWZJlP+dZ7o@BE8gn2vyW}}*=Jkw7upJzI*QNqxmSnl^OD1Q zTB>-#m~P5>WwGW5S4O|QJ^u5%qd&Ph@WFoDJG*UP+?o01>l=Uj-uZw0;@*!Qto`*{ zd(eOQ_}c&ei#PtuS5JQZ;hoPP?|*Q8?*2ya-blsHVEOK_=U}Y*@>KP!TRr!dn=Vgy z4u%|;#w%aj>ASzuG*+KmW6znNncUu3OHWPaLZK#15rNnoizE98D-2-G7X)GuID$r3 zw^X#?i)IL4fKm8#We2me1Hq65IEvW<+aZF4Dkuh^Gy#NSkTnQ6NQw_26dqAQ1iFTR zDZk1BriOqSkspWwm}Eg0zsT!t4e+eR5EbT9%}R~0b>#3U*y_sasmkxGG5&mwuROi4 zzO=ihsMe9&R8_vdFj-$&Ugs)qsd4qR)DE>(drPwlGvi&wIqh}s!4{9Jtk6@M<1Wc9 zFDtBamo`_H+Vj&ID@%J@s+@%xF7qqT%W{psP3A7nEy_vZRXi^AXiUhX04+cfdCMs@MnvEjC;$dOqnffw9PxwQr2FPSy_6ar;J|A}cyAdaziwb%X3sJ$wiB(2Ic)izoYkT1GLi5Gxn(MRG zmnYn<&g6mm!iAp7`5tdqby2+|tEMco)}C2in&Bx-rQ7Jr^_FBf^OHP9sm}Zqmo3$0 zODWEX&5R2v&5A9_jLl34O^gaoj*B>P%=q^kW=|7AG07MD+c2m4>+>ni7l0N=ih(Pi zQN&Db0~!MU{x>00z_e;8%AjRIe1hb{*XD@;)*vJRBnvk4~ zmnZwr%na?HnL4*R)m~M&JkoMyYxeGijhp*R-m<*eftI<^?&;yKOPgag&b-Dd=fq(5 z?%Lv|gRR{&)BCGaeO)cqk;=D^r7|-!LqdYJ?sb)+CXIo6%?gw(*CYs-1JPy1<&Yu1>(7l zjoW%w@JpLU5DPe#GS0@VW2vH|;;gJJ_Dym|7bD0M1Cbcpa{!Dz-h3eYr;nwGK>;8M zpoxK&y9ix>=qBhMiuqqo#DO4Su5(lXApztG4?Z%qN?Bc*QnIoj+AN-t3&Crl6Thk* z9v+UQ@?uB?Ug0+1l<=mq#G&fU$;Q0(0oR3vw%ytGz4`7puP?oRdH&kQ(9TT9`j~Hh z+_yT~v@+bZKGCr|*S|m4Gu2r+(roXovH6^7bw%+Vp6vRP#OW^2+C*z*QA%5NaZ`D= zEhQo{=;egS;L)Dup;phOwXwHuZSRcL&$Sh954yGo-AkRNQ@(9(?& z=Dayy-big$Z)IkaBh{W8Us9NN^vKKFbF^O&yedrkv{V4Xm^>2}tqPDPEz3YfqgA0q zAjW(FsbI>Yv7;ee;MZ~uAhbydaHImv!uuf(b`YTQGOqc;JA8B1_@8V5VvMqSSrSOX zk$sH{ii(g>q&4C@y!L4kkUXZ~%Mp=C!0JMn0UCTf$_}k+0v|&1jGAs)IsQfdPrwv2 zqOxc+jKAP*nF|vaO3?TKLsWz!S=$euDY_t9?#~0d!@Z_v8`a%mp|WXn{Ba;*5}?h(|Kd9@8|xJi*3%Af2OPK>}cg$SJBytntK~PukH+7 zo%bCKyDp5n_6Hr?{mzS%RoAAgE=+jW`(0zrC2ckKGfVSDg*Fx~6<|6@8Bi9|7brUg z;r*Gprsd6+eF=^QZO9gw6tyzN>>z+Htt2&Ha$zipfO8`F5&+CBMp#|Az$34GY>8TL zI_5wIgY2AmkvgFw0H0U=#Kc5y99k!uWgHoH13n`_z6uGTh!?FQfUtrDn3Vudi3*QN zNl7-FEzMfr3QHZx1$9}_b%Z)V01g$PC1Cgpn;{}6N9AQ9uq!Qq3qm4C zg-V39q$7lehH_!)S`!o)F{=xK1?*rPn^=aRi_EE0r*x`?L54I6GzCCi5J&?o7}IYi zF36^3fvzA$){m-zih`jIKu&>#{hdQ7cOYM)Wkl&<8T(R%L#BCoc~nUp>?2QX3hbW% zlIQ}al~QZ9pa_Ss>FR(F%g~fmG5|5H7MSQ_$4Db!5|zFg_H(>HyPc);9V3|LEeEZ|=T-bMgLG|HbLXndbb()`HER zvTL*TZ=N4pXf0grD&6XL?({qM2b^m?WgER^TLbRtHb-Sqa;vxC&T9L+XM5h>_I{k`^&&USoo(DC|4>pN%rp6>NL-tPM0E35zC|L~K4|LOI=`{2T_-rWD`>wCX= z>-<+w4nDlK^5q-*fB5vquiid;Yo+tnYWLl>t~<-kH|FZEPFG)@tv@^JS??|-faM;S zJ1>T}lnSb(YGK*Kkxb9mw@J_V=F)QXY&RgREhHMiwwA`v@Zg%++hGVdQB{;_KTngfaHbgIa(Q5eNXhXeC1cI0(p* zAlFiXkBs7xydVyV0PFEaInweP1~dx3`<=gvkBMxls~Bo1ne6mVw!5cW%ND!KeXgwj zy5ich%+j2sma5XCtb~@z!kz|4TXku3MM1eOwIDsVFf+lPpXw?|tt`p%)mBv43mgUM zy-lv-thl1|$h?&B%!IIUWdpqGxkz}{;-n<*WoK#tT(C88$K5Gu90 zEF0#LrA3#S)e9D=gC+omM9|8PY0rP~BpPAp|A%=}rY?Zc@d|{}K^HJ2 z!U7!A*f;*--nSuZf(~NPrScSw28D(KQ$ z#(|6|Uv))11MK`!_}zRnyZ<}*=l|R|I3pNxCtvn1)*(T19lr4VbMA7-Sf_Vkpn9sy z)l-#~mvov-BR@5=EH|;Y!Jd^EmJ$;ZA8|7L)Jwrf{wnO)b9o6tEc>{Sm%>jz9~JbX zadaDUBs$n=(_(_*gdF|O>0{3!A9~_>RDxgrOWG4JfA{#27lTioNQ#THWyBX{MAR3@ zx4SbIJ4&uhc`r|TdG_vfr;Rig4mK9^Fx*m+SC|&%%#Ck$WmlJ`R~4swi_;ysNu}BG zl_kb+5muFExojyp$q}isA&$HRdv0QJW?WuMRC-)!LimXyTTXOT6gg6VO@{!jDGr1= z&juKxw$utjUFHY^Ez5{0=s&AcE8xf+_X8PpHO1HzEwdUzM)u{7R*!S6JsC82O8>hv z!f^g-m0qp{{FxJ-LL=M-~G*-uUuFgt~%3WAE>pBwK!Kt zn|Ee9S4Wz!Y)o!VchNq*bN02H+ii8_z0H*~{Y~3*{a5*~q3p)S@Z(F%7uP1{hdbsb zhNcEu2ivMwrg}bm`|fLZE)Dmz4feF}uFhWHo!ws=nIG+JuCKC=RP1)+T1*zo&Ay<4IjdLdI#3 zX^Mt!T6#L8XaW3wTU{_rAO15Gw>pBf2=3xM-C{&fQ7|nPwb+E<@hdaa_~vyZov)9j zh`~5ZI(GD!=8QzJ5N`fqZ>Ci-U<4>rf}}DTnVDZ##t-A`rHYD+Gcq!GU}ZrVx9-Cy zP6)*&f>yM|X!R7xO(iHOh(~H3Rxm)sgho}X*qnrvMgZ@IoPe06PTYqD*oyK17{ zy*$`3(^Iq1Uq9Phw=mdrez9+PsBw9ub-u5bXO!{I>SlLdTV?)Od&O*DZC|6k#hp`M zn&QrjElLf`PYyL6Su*2|-@>abndq#X?QpL4*caQ1rke5>+6tH23ujww>qFk%iH6zc z{F&yw8e4R$x45CI{JFpSb6%&YE&GUSt{DN)NAPg9#wSts)izXyN-9T7kehE_s zQ(UB6o+pkUJ@&$1y7J?z3KMDybpga;3D` z6B>$QtBVqg)52S;O6LZf`>FtQL5#k#=38ycoh2)sC9Ijb7TaoX`I(;bi?hDRdt+~$ zn|kBY?3e$?nImtiN|>?d|JJ4|WF5O;n#9b{`Bnjh|uHcAtH% ztK?v){Q7LojfLi0E3GrF#hq2Q_Bv;GQ$vdk5X}r1I zw%K34*=OJEDP8R>Tx!iMIHyma<{rU5!#2fo1-kGp8bx)rp;<%lnQQFh6fgz2)^yON{#p-G zw=Cd@>q2vl06|*9G9q=fA|fIZ5)x8UQet9au!Cjt(&W-=sUQiUt)+z>bTukKt1ALX z5;4-D0>ncF*vyGdbrU3seT4+*>b;I3n8;uRb*psHY}%Mr7e1g1AT%Tnvp`oD3uZAz zvEfTbTZd&qG_WcuMFDlQY{sQZ9aM8BrLr?X!H%xWc zj5p+69QQm}s(X98<@@KmKEFQvqx;Lhd1v>_r#p`i26qQttKDT={pHKtE8B|Jd!73u zp7qXxy#f2#;qu)9CtKoVWBzcRZLqn#v(C}zNPBv5^38+3k1zH8^!CUPuMRxjXnAd| z`HiiX56<=e=#|BP{OXOr{^0tL9&UW~!<(t<*UDX_v#m~U-#1@11FzZ7FPWq;)sCD+*Kk zs&Xz(*S)^i|BI)4AKX|xm~CtG7G@{MWM^ek7Hve7g0gGn2;vKjQWok)0Vyw_>=ck$ zqlHQRDKC7@3udW2rAAByE$YVfn=1HH@wH6}II{TA;?S~NBBn4Hfk%ZYb)j%5HI{wN+$$ z3zM8Vag8pU)0Wm%=jdzp_^KQ=?vjBPudmAPEz7m%CELbmc$-Z#e!|jXL*qh^M}{2FNQx=VOXb~|pQ4PYl8ngGjEK^V zsI0i4;?&UctnlKL;DpmJC5FC~8gVo|>NuuO9(_JC!ua=NrC{BHRTdCPQyi8PONg37 z(;}?tK#|00fl5Kks0yVLQ7#Dh0<=_cVQHD~!p6%m9E)biB4`EPivM}Qr*aTr6jKBv zc}qo(L|~SdA?r;ZBa#$TW(CapDf3uIGM2FAno+t~wgdq3wBjIO9=1FSbOmVSu|TPb zpO!?>g+ujZ#0t!?{y+YYT6++Tk_D0g0;u5d6|)p+Mc_`YV$hIm3Yrc}MNH8GL)Iuz z_m4s@{%M#6Fra+N-MUW^2_P3`iZ5Ek*g#?6cjc(LpbSpLj0p_;Udc2iL|)Wg=t~7#FJ$i;bmDd#Tl`-)TsQVki7U)1*zfXxp8go zjO8B3-bCH@h<9(alDD%qXKKA8)BGL741PQX$qAd}nZ0N3Om|miGO3}p2xu8V1Q0+dAfUC@T5AmuAPIt6YcffuU}{++ zOJ-GfS5@Cu)!j39=H8i|*|T5v?EVk?bAJM!QOxSQv(G_VzV_Oy&D`DG7zot3j9=(0 z%}dTtjq(?z`;1RJCKYEVmE_q9vr^KNVq+tXO$C!{&Zhw_TENU|HZ{KjOmlv|1u`%h zLQIQ9>f)G6L4yEET5&8>SfJGmLRfwgfzYUcA~u;L7On0T>gq}d-y0te9!q&VUgMYe z%s<9gU0vPV*ZbGM{`r6V-~aiqe)7q!vr~h0_NlJQgVoXNXJ)T$Pu)8^eS2^2%zWRo zn|pur(~p1g#f#P&cTaO*xTAJ{sO8q)?B&hzPo7@+{Kc(D*UnwsUH|mmC(Dz)T@9Yq z>AoMn|M}jf~sSN&oJ$?wr{CcSh{^Q5v_1bJUmYp6s z+}9EllT2X)X7GoJLo?=ykZ~+!o=myj)(IET zZ4_9#7BIpnf$_iw(CX@0&T=uMHlCCS%R4H->Skx>C~?6$mU1|pWX(J=skBI9jYluK zWQQ*z#07S&8xwCeG8JMl_^s#s@NPgPiW58L&$kCL_yTa)pwKd+T_7&lsj#0$olQCA z6_Zio0qSbA2$ZjEDr+lQTA;N^M&=?9{*ncdur@;oYo*eLLbIs~Sd)tu@@C8iEWd<7 zS8q3B0whtPwEz=IjRF)+4?(kV@C6NFW@e;@K?p|SD-uBy@%n4uPm2$)FV7xt^(=L| z=DWSK?PasA&Xqp@xtX>L3*8qMdM~XG-90;VWo>YExN)XCFyB|bHPN;{)?yq*jkj)1 zw(rh%Z^D`EKEE<{d2@1OvZKY9KTz)+ZgLGZl}&a9Mw?2fyDFhOtBM9&16|b)Utv;t zZbFqaqsd=bRg%%>&l{{Mm~AQE8S*W6m9F=D&y3e?kJe2#IeMy#3esb<(^FDXlDUsq zw&F!nqY%5D?=IK~j+FVgI*<$=z zMtuX+PG9M2SIOS6_sVSDC>HW-o5bCXJ_et zcw_0pMAhz~=h9@=&4s3`bB&j$YHlnv-dky4$B?UAbKPTyotUBHzy z+*E#kvgy`R+rd=r?s)A=w`*^t;?i{8dQa(@0rz@$=|Wr4bZg0YXH9*1p36~?mzS4d ze)p=+shw3k|Do&q1ZJg7cKCL5lUese^Vz}XR+l0woi(3tMHY8a^x}ibC(cO#| z8KC(S`;fLQ51{D})9M*5XtPu!ig0++5!CX)`i1;^N};u^MH{ z{30wxS{VUaNXW=VC|`u+0YgB1Bvlja!{i1Ifdxhx`fhB}f&)Q)R4y~i*Hs^Y1(@Q~ zQZb{9TU_o|pq=M@SB6&gfUjg!F9zhToEp`Z7t|7<;<3KW@5TDps186BVAYqM4 z5~k)6j}TZUJEkK!Ia$kwL|8>|2wM+C#ZT(Gli@{Kpa?;lL`bH}mzE)9kd$jh0_frq z5vCrR<;^J38exS@B?P+4f);~{)~u89?ngYtsi>q*D=0kV6(kWNuLy|>KEMbxqeKfJ zV4^GUK&J4Ro0~&5umHq-1u}>v?r5R0tRl#%Rt_!z9D0OpmFpEqh9O0WuHq*o6@-jC(_4S{>D7P!@q^!f zdh16|_dkDd_TxL7pWa#j!Q(SuJ=lDrWSX0L`>$zUWeLbj?Z|c;z`|IsGo+8!O`v zS2eBVvBOPOfEM5r1%8Ry(v>1%C=w!Pjj^NhhypmAr*jt8O68%2mzCp1hxCMUf7J6b@OkiF-N%>$#ves!KQNdc>UFR z?f#r~5@Rt}2`CZRo1=23+~2c`5dc_|lw&N@s@0ZYxZS z$x1k#7IPvq?u7A)598O1j-Y-V^C@xVMaI!pxjmz*ys*w|uPw_h$xd+RCwlS| z%X8z(b7Jkbh@8ZeWm!?4oS5W@BiZrCv*ST!oq7;C&hg55n z&%B8NW=FN6XiO04t73YmMP3Ae5L6s-WFJ~yAQ-|0tto2=7|JH7A+4!lycJtai)Op~ zr{*EczcG(j08E0EiUbfAjd8+LMiP)aWJDt)-iDI-x)M%5M?4qjwXrmR*VU}Pkwkl+Yry@RJ1v_`}x6d@3ekx+xs;!BY( zw2T`%Az&yJLH$35V5)x%C}LTwi>%GXWz>NpaEWQXDGNCbT0A@oq;AKLzF|v@ausGa z`R(mh&I(6HUP^do{K@pVQyB@T`ALmA5r6vigzzH?VQ=sgANEGv={I6dy&iGwFCtI8 z9(DRyblAzXq_`YgTyAPqL0YskCpj-YJ}Wu8C?l>cH?AZjqS=)kuqOnHQUb-Pj*O`M z7+g*~-2JHFYI*XS|+ zHeY!`sv|qmQ<&;6PWKh1mFFjCCq5{^JyGF^ zI|FlvJ3*$tH!)%yOPS{v9{my@KULM$?d|RN?%ephzy8^O{JU>He0FoZt^CsF#5;HQ zpI+O!b8hb48*2|PENo8qUfWyz;rkDN_2qlZ6TOoIZNuG7GlOk+&MmySbMDIz-umdB zCr|EPeR}uWZ-4Uf!PeYFf6L~=*o*tu=7!p~7e?kryC?fw57wt@%X6z-IhAF0cUg%Q zjQM+fL3q8s%*-tID?AQKgZo-i(jPsRGJc5-!YVt?ptSkeLs*3DNF9jDBh%V@84BjhDok$NxE2ROD!QmdLu6$I{~(~5 zjd?m|{vKa(v4c5dzL|UGj6|3-O)wmEiIAGenl=zQIk~c9S;HRxsjJV45Q*^s4|#*g%z}JnE?C4T4 zZ8s5+LBuqZhzUl=M6hq(nB-LH;1njU(hQvxT2)Mu0D?jirueiB0cdHVE?V&b8AOJF zEno^yJo59?Vw=k|W?LQOjYX49MN9ovi#`6S=3-v3&&_x5&2(N^=()W!@$Blx+c(eb z&Gjq~)~}B>pPlWxu++OZN85L>Jg_#_wm#mvIMjS@W&HZ?;>LJ$PpxyHu4uT?IoaXg zV29mbb+9sYW~O_7pkZaQZ@AIb<*Oa6=GUI&3nGNpjPJi}Ly?v<*teyW^E)6m~M(}jjC?Ylv)L()x0zP zNI9$SfeOHC+h4lTTXKD_=JIsl%0kPh56^yd zZT^efOFw$F@zsNk53etL{q)Q?@9zKX+1?KxZh!V*=h1fGmAR(dtDSG19e#3l`1W$^ zlQaE~w|j4|v|U+h-x>1XTxz{K-?TGavC`w~s&O{^i{|_5udei7n5fzssaohLS?hM~ z40<GDTvAfD5LngU+LY+xlt_nCSkRrH_^FkyM-0k7l9Y~7(WbEe!$P3M2z0KuB;%9BUASck-n1Z$emxsW3Db zvX6j(ybx>tDL}jcx;P?!a?vcvh=2f=;Se(xjOrYMc;IAaW}wR`cJKwCR$vs%ro-Tp zARd?mhE0JufoR-`5JI~O6@o}m2Y7_mzmq{IJ1qb!Jd0M{n2VB^KQxuN za$=T8TJD`0d%oBI;laS)e{}A@|Kj#PeY*FHhciEWIQQaA$B*tV{O0|OfB(h(fBf@4vkBpMUcBuiwA)v$xKCb${c7YfCS$um0f4{#)n9UK~ule|_nlOEWhY zo6nC`U7oJFwb<}Ft&G4@RDEwLjl%d3(F<>3Yk{ z{lT}-_TO1<@E)c^4^|xA} znllSp6+o-Y@&X{}nkD}uz_JLmv?K)09W8uDv7qO&%<7pav$$r7A}n=F1|jDGB+-moVj>ulu*7hr<;o~s@u86+JN6;gmR``C z8?hzEMFq+WXZjnbI{n>Mg$=HBemW})iqaxI1u3nS#Xa?9P2R#Le{oe=L0LgsL3%9j z$*$~}^1MW6c0y5Rd}(fSZfbN&^a*`kPQ>xoQesc1C!Eeo3U}rtHTjFGN;3u;%ljMM ztrbPhzQW?nxQb$1z>(@NOsupg7Nmsdr9`-L;#}FWDN#oYQo>TA-i$LoHu8Ob62p%a zWZB~5V#t{kjQ83Qke6AH;HTYH5Q;<5CSS6%L_)-|q^J`qapCb%VY%ta z#;?s5rqno7JN&to_GCwTR9@2Q%(xTju_tPa6H3y zAf?ig?k`MnWN}>^KZWVBIVn+bVMj9(BAj_?B?TF&v8R*bBEwD_@8jGFwL}3$&~(sR z5Z@B8XbWOm2y(x}2f91~1!oF0@5VHnW&e{u`4b43;#)%kOqQ|MFu*=WV194V_@Z&+ zK*a6#1b>OIG5}FqTkG}uzWU(7KmF$GkDlM(o$Y#Z)K@R*Y7`i=fTyp%cEO!1DDS%Jh-~MzcKUd{?*%;cQ@vSb{B^~d3NKYXSW~U zIDh}j?z8(hnrr+Ou0mIyjdFKY71xy5svId5#c5t=o^_bw^ZCqQ;tL*2Wn~%1QhMr8 zbaw47m&=Sicr0a{OZj~IRX(uwTTek`cvT2!G>cbmXVWHhjC3p^HL0uw862C-iW^aI)b&;DpkZ-~IW*>lAfi6rW(S>H4 z$S6P^4ntU=6dFZL##L|uzsv&bn3lv*WLHW&y-H2Jz4JgxN=O-)U@ zmFu2D8w!Rfh3Y^BbP1@X9&lcPSt_HjREgccIH;?bk`W{cj8d8q69VB^5E=t8#e-`V zs0$2p=1vqE6(%J(8Hdmuv0SkUZ9${Rqe~Y8h_L1tpd}Z?AW3P30@sR)DydKk2^H+n z!lZ>M0cgx(M@tSMMmN;Bx(s2578UVBfnUbbZ7EwTb39Yq-L{dM+#Y{Mw>NF7xp<}5 zyE+h9AFe+;+j(baZ_IsmYw;(KH-G#2 z&A-}rr5jy34kD z%T~KfmpV&!hdeh|+S@7$I_iBhgKhoQd2=mA%N@?O9{1*8< zpiBLkEMr-iz%N=@fY9^-bOG_m0$Rw>ML?k<6O7)BAA^`hCM6}Mw6v5=37$J1VK5|j zBK{~?P8i1mPDv2Jkt1>B8cEZ?L5LO+3M37fw{E(GM~fr@$QlHIpoj46N&lWrZguy{}bR8^L7hcH73 zTb4Bh%;f%8gflZUF;3Qus^+u|5fvOf@}S3yHN^lK1*S7HT+k&RWT3IBhcyDMG;&7_ z-~ut^2~vs}6bBVxq+uQsVahDtx0e7;vBM}vfJQ@u(d4RCaTFM>1x5i;scU*Ou2vw9 z2qLE?Hu-{pk0e(pS2_gsu>!ysL@>%jAb@aQUS45g;mXR&+|*cepk%z&{pifd<+;Ya zVef@e@BR7eTeFq7W&`&ZYi`U`t#!MuO!zl?%SP(#odJ7iqrcsscVQy%_D=izXS+YV zIQXA`a`*rJ5AXfs7Z-l{X#T(c`0~#l%>2VA2fzRP+V4KP_Pfs?{_>p*zj*i3?>@Tx zFJD~y{a5$Ce6aD+wZ-=?&U|ry`=5XE_D9zjKe@i}@?iX}-M(kLz2`>!XNP^~$0~0u zw?8;HlamrY*j}?f*19!RabuzJt*zGgb~|2dx4*U7`tnTsy~WyV(}8PKfg7{cH|Ohb zt+YSd9l1Q;I@e|VjkfFz+sPBhdDv*p03P%dkTs)jup-}q3aB+BP*`1D0Bgudog%B? zbah+S^#W7thgOg-U{W-9fNpR&j$S&XwG!Jv!>cO-{jDS!aRWdWcf?|@NUghFDp zqG?eV%yHwIGJD_ND}d_2C@NyoB54j9AXDPOBjG7)#i_E;!jz0msnw8F1WAT&?6v9D z%NyXejq9SVwPkLscc9tZT~){)vcD?7x;QB}@svA1vDKgNFS2DPN0t@kxQnt1)1r;v z)Jr^-pL{wi?nF*sFSb9N1pUJ^8(J)PG81gRZc@mQbl1rMuwZ+ z6K&p+dPkc#tICn;ElBhgBvce77pFzmxU$`aw#N49Thi2fDIjr}QqLcyeqmTB04 zDh7eDSx%$i$cu?Ou*wJ^R9k4BO^Em|aL3e}PW}LzaZM!zVu~5Ria#i4#%9eU1o+o{ z{cAwp(uKea?pXQUqNyG+;8E2!o%{i$r8+=ZrZkFiXvL{?h#y)l21Ougme9yf#Scx; zaBv7DX^|A)bnkx)&WTBx7$3AQYHfBW%SCpHYV3e>Vm=m@3Fj zEY41H71$OA8x{xZe9r8w)cEwo=#-dK@nLU7o_sy>^s%_;i1gGXk0ZA%Kc&`{+2qY} zq(|D*B1^O5OEP22vZCu9N$%|EVq0Wp+=;~SBPo$bJ-M;=)Nn3CS9UB{khds3E#CM8 zmua!bQ)7;$#~z1hD$m><4cuC&d9l-ec``85WbgE5bog^yJvmj5be}!7qBt$!%rZXt zSeWXw+iFTP8{IknqBNg9tt2OrOET)@8!@NeNR2v{mmF4Ti_A?rU6dJbON`FSNK3P& zQYMOE%+?>CEozDd=AYZhUSD@6?Uwnx{heET)oN`%77w>;? zELBreqm!vXpsJ>(wyv)J?YsNG`N;<_pWPYjt$li9_t~}04GXtfyk4Kqq=3)o;{`ww z({iU{!)JY4xe>a7;IR}GuN>T209PF#VOm|-Fi~ff16D0e9$h@JWy-XoV<|62OG-*p zQc|_)L7uCE=L8!#R7?ZL)71E%`85rU((){)71II%sC@-^*OWt;AKD7$ZXHX}bvT@C zDRh}Je-=~mAamNsR$^s2Dbk!8b#HfNa(T3Ed#dAL zsqgmQ^!>f5J7*Ve@2}rEzjF1=+{Q%5%5c-!`TpzMGaZ4VW=~dEb@5DZ-KEu$a|`{( zpB?C_SnTmF_xd+R>i1_`*ZV7mYH~Zg=`H1HUB1k2UuK6Vy}3NyYfouwtjW*I`7^UH zq+r#YL;zVR9jk_<4~!}Q_E_oLz*(W z(t^N(j0gtY=`m1!tYH|k<87_=}h5Q(6!B^(OEQ#Ax) zQ_KoDl%q>VU2LLDOJIT(0FWa*QVnq|Xb45#va-@svJy{?*4x**oD;PH96hB zw29`@o7+S0-(G&_>im_}{)cG~Wmz>IM@K_tTSdW{0q?{0wx?Si_g0#2FVtV3uG}B>pC9$#m~VLR z($wd7SAYKY?l0dx_w%>U{^H&Jzxv?fPaki6c5UVd_m=+g>wDjPa`~@5zwz0Ft+&ok zet326{AdLpm)eVGnhKXX9A}38i(T%)24_!$d#J0a#+fwVR(y4P>hi(<*vMdgU2Q^q zJcS}<%A%~HNu0uRD^@XSxpMW&ZM;bz-md^dKzAxy0ZE=FHk*x?YG~w96d`#j(n?+i z;SdR7XyPEy;`y%?%iJkQ#Uq=Bt&r(vG!z&C>FMc3MMd1Sxx?U*ymTRGRAN?FKmfB^ zS5`2@fG!+dhlPbHa)1~DiUAqq5ugj`T4BIf7C?(%>f9V~Ct+jdnK{BiMbiPqw+I9< zqAV~a;GOJX;z+*Wh_7H6r6o2M0U3r=J;}?sfD5kQC=#EAn(+ZDS)tY6dwW( z&k<^#pP%n=IB*IdGY|{`xsW8lI59wAK}=dy#8;6`!Js2$NANnXP8UF16;_ZCqzPau5;KWlcJQ%4Yjsh_4jzFF3It|>A!P?G83^pC#R9Mr zN0KR~wT6IJ6fFXZ(*iR^f`x^JwCuGaBEloWPnVZEmuAK~>&m9v%P&sX?G2XgkGOXR z+-FC8XNNqCt%W=Nu8M-#@xJEU7q`}iYred*^wGh<`)9j8Iq3iF%E&vro$sCR``}>k zXHS;@pTB+fUw(S;|Mx-?=F3w+B?)l`_>dT8$ z_t(2#?2liWZ`q%$y*O2KZLZ7YkgN@Gp@v5_<6<4RL?=95bUF$qQUUg%&^Y&){L{o8hRbFRP z!0+`WB_*ly<|G)4-@JN^B`0XgKxh|vs>+gxj*e#Cs+j0nRfWc^grRk*G76#kheCV^ zB!L;ox3>kR7+(;`XtiJy7u-y^z!j>wH~ALgvzSpt1<;i|fKY@o1%Yvi;ld0dc*3qx z0D&-sRAdc6t1Dp(a4bi}!yQsx_>4lpv{WDrTV{CTsB5NT=&}csy1Hz1c~28~sbiCm zh1i(r3TIZkKexk|)#c4>cc=Rc;+x%B1NEhKp1cBEl;4rzFG?*)2}_Q8lb2yz^if`_ zV@?`>=RWe(n?jTinp;le)BrKEMur5n+gB;{QiA~UmI^IQWN7K4 zs6vUx1(GTt9EM~Hd6iMe5J2zAxUdi$_(LFrE(R4LG?LhX#xi^j0eQhMOG}FZj#MnI z&;b4?Az#?1O5EZoAT-96mt`M7n|TBs0WmFT)MBDemjo?Gy7Vv(9|1X%B!s%qN}QG< z)8x0X{90WZ|DT6BEe6oV0;VXYad$BPAr|idzwrMxNI>ce)m%Qo+XAD=FocVsOA~be zm;c+pee=j0Q4wLW5yujuPDO>EijR%SOt%&0*vj&gy!o+B<>{^d{Ia|xS9UCyk0&qA zUyxYsuz7N0Gh&b1ZIMmx?4ibzVq1j2(D=MnW>Q2}Ql!tGnv)cs9(z1D=`@$8JtM*R zGWEEync1dnhPD)gId{|C$q%$kdlb=+cpH!Tc;K)hoY6>(~mDhNS>OJ|b6?uaVj?RF+ zBquR8{8-q@qg)zPLx}^5Ks7X{g0-R`z6(ph61MOP$D(BoXdYE|n1UQxw1AAUfXp?o zi6g@AjTzr9Wt?JwDg)J(0rOkWYwLRZ`aXU6?C*a5;WwW>`ta???>;>E;>p?P7pEVd zoBGAa55N52+3$b%&2N7C*~iarzw_wk*`<-2J5x`tY}`DzyfoVR?B0!gm(Scdx4gGB zJk;X3c4qeM($H9EO;>H%XnSQ(O>sk6W{ba|v7)#nFSR*PlAD5z9X^8;%WW<}25;tIeR*V0M z!@UVHYeq$A)~%@(SOf% z$`?uY2N2kVh7S!`67&20*0W)3wA=|7pNr6 z@A3gd))WvJtp&PfNrEuqK0E}0#2N%$bTLA}#6U|5n5AWhl*=>Qkuq3YuruUmgL`(g za*%`aHH+_A3a(7|i?uE63)#3BY!&i0|Zk$~iX?As2<_^`DEDqG4neLcu z_YBq*^#=0z8EbUzPByRh`Da=jqqX_Hf!v8!J&>c8ghs7=VFD=vi-~0`7zkQ5 zgEg&H1y3t4K#pjMBRf5%+@4-rV(av#P1NV@^q0=J6t4HW_owR5P1Zl$8T{B^t!YdAkqcXg)v`b_oB*{b~!&zXU;{Za3Yx!MPt-CsXh|JBR0 zzk2WdH*cT&)jQ{Y@#5^SUhaQ&fAzhKlkeYHdgt20%j=78?N2>DH~HzUl`FH2yz*@i zxHtRUTm9~{W0f1Ull3dZ4Q@wnM{~{c%<%5!D(LF!;=PEPD1B>!$Q>pNPxo63ENpH{ zadB~}sj0k8={|-GQ$R}>NRq3S`xVcKsHjM8W9E->H{(`@qNRl-1YMY@&}Hs$ZOsny zdeDSU5HrZkN>{Dc0DQ!>kg$N+%*;&gU;+VX-hmd9XtcCo)P)a?Jnz*Q2i6b-#u3I8 z(c;%g*vw10NEjJ70vx*7#G|4DG6Ez+0Hg`i%26Jf3teR*EE)l|mOKRVc)=!tVM@M~ zi;5#cK~fn26Pgw=*^zw#n-oDGd{ZLCX_>_oEskKqQ2>IR(%Njc{QUgF!a}wUB_$;} zIXU{Kc|4K}_XoTnj|GK+apeLO4?qBG@`Aio1Z1R048W3+I)rGW=w{5A(h#6a`q|mp zcDuc-tPFxQsT)l4!jzR4kOhHJ)r8FqH9?ZF;Upv^FoPh>{FOIWeuVkEtLF5+35QFD zofV2Od9j2k7pQ9?0lAi6S}O(>Ar!%A%$qYnQ5J|FPuip93U*G?`kFWmx>6s5NO}w?${m#Ydt1G>0gVpC}TK6ZauFp5z zTyDL&(*9tx>%B`;ch@?M?sDs;$(l36m2KY4Mt9a=W9f3A|6sQ1(R$m_I}`*$D~&ECr4Fi_RcF#aSCEoNQZl**)gprnS)&Dt!Ri78%!q;2t(je@xVbq>VQ#N1k?o@MNBEM0W;$bsuM5-V3bWS+jzaI@iIw^){)o#tS~#Z zyS{v|Hox7IQC*bSQl8o3&9$dTXD6PnEXj1`C8oz7%T72Md+N35Q*UG@$CTtIJJZ9e zi<8Upl3RRv{WS%ytf;c=Xm4I@gEOhupD|pW+u_Yt>eLA6@JtFtgbl|g@m&{x)G3naVv{9mCS*YC2X~4=27zTC)0$q$_nKX5& zVipc9O!-0vFLERTm1Zly0Rk#^-XJv3M1Tx!oyCvoW)JvyjFK+ZArS% zo?Mm_TjNM-^Q5=9Gkt~01u0>rnURk4h`glJ1*s9Ptmu@eH#6f;lw?M84LUO8O0(nL z1u3O@$r*`}d8sjl>9LNi_=2?P&9lcG=2W+p}?MIK9xcr!ijq&+>R z%9%ReXg`>&dbHVod!@Ct+*X(xmL7W|J2AX8C&5#g;>?cEN{&p7K9v+3-dIsm=gqHo zXSe$Ex~huj`f7$-{av-L*270hb{!c@M!1pZw?xKRP@}X4F&Qrb%m1!0icL*LPGGH*Gb06N5@j; zr<~Y4S@#72S`!RHCm7I;jg2$x9R8RvO_|mb6O(wNlQNsLBS(x4903ym1W7SOkSY;S z;(#Gwedi@KVYBPS2#=!p_;~ia+7SXw38+(Z0wzre5(g++Hy~i;rKH3J)?&4Cq!kBA zEKo@Z6_7{>8{@AB{o2i1kA)KVDV{z5{J;N3D7b~3w`|Pk<_^GKxtlg zAb)ElaDTi1!B*dykxI6VYdxi#{hsqvjk{xYOT85{9iH`}+6TK6cXq~aY){_ZUwL$8 z`@zBL!wU;Hw9#(c;eNt<2q>XqaqvjMn9k)!VxR1(U7it)8s@Mo)Xa z|I~@2Tn?m3`qY!U0hL`)Sq^hIUMG~kKxKlI2}VsZqeQF()eWFdO<;z0fz&NAI1K$! zNI(d(OjunRWTLg4G#A8AQnaFB;>%hLMtX;v7||9OMMgt{rd2Lz@rx;017=*`MnVk8 z%LuIs2p@SZs_&Lj7DUMAcYz&Ehs?f$$jAs=a^mTuuho|2wtKTiYI5dV3K!do*1MfM zgPyzVT`wJ?@>Ej>U=I)Wq20;-Z?Gn#RUP zTBp-VF@rfDUU2}Xu6JsyA`38qUbDGjLhEH7Np4WQ59=Kp4!5kt#6-kkB8IR81idz6 z5Mfjh=A|7O_;i_Eg~2po3Ok4~Q(8QLDGOZyx;mJ8Xj+EgFoX+U7qQ8xX50c@a)b|% zL>{nOWEMLoPo5x6jhf5KIEtc+mX;PANy3-9GD03GDghc5oNB$vHI5Vjb{Hj183)KP zN}Aujfhc`z^{Pr1;Ny#YF=CC%5iS6}l#YUgkGzCsSx|Wq&`AoDOKPZFHH08qWGs$A zvPh~j%qg=U8yg!P9nB1~VbFSD88C_$Qo|x>2mn*oC@nNl zFc8=Th|x8bfWGRA^yRhrGNzWaI(?hDZV9>1k=Dj>6p3 zsJ+GEh5p*n#^SL?$7n}YU%hK{u;T6Ao}b>C`qA~#zkaszSI^dd@o?#vkJtYGqk~_) z*!lYDnV-El|IIrWe*V_(*H5;;ezf`3-PNz|Z~pp&>%aN<){oxWzqdDaesSQ@#nl%V zCNE9bof)n;J5haoq4Duf?~TRg+iRT%v(26UoW;S$Hh_tt>t!esT0rPhP-ifi*tS7sX+-5;;m zpQzm(39R*b$6LzkeU8$CG+Rm{vp}YlPBk=^+TjzQT4|an9c7_bRK}WOb0!VIM}{&| zE&)@tl7yhOpe`y{Kny?tI2Kc8A;gp&I0R=!$mPJjMFiIu7pApEgo!SELP85MYhwd+ zF&frF)}#WEclhWUF&zd22gsLT`K4tD7h($V;aKjlBc`P&o6xklfIwbGP!SD5*j7@a zwe{sS(gJUlZytFgFEh2KJg>Pt!%$YI4-^xUe^qB9EuWoJfc`mJn`yje6Ya zH(tLWLIE^Tnig#hAy2EWfGJ8u=_oaY zg|=!42YGRTT+6av%YiItNTUo{&{2g2Tx;qjtVpmA)0%y{IK`k^1Rx|V<3U@8kRwHc zF2*q>BM@3eSQbZi1S9%Ggfc9HB7nuGH6??hgeTe(qlJSnT(ey9E2kEWN|~tvlBK1K zJYdwcYCr}-FiG>EO}>Kt!(%D5FoHYPkX9E6-l63VnOEXemllLZMMxMCFoG!yp>w3L zEnopyu|ad^Nli^@2{=a@or5*Go&HRJLA?HIP@6m5SCHUHk8owj*liJ+aVN6kPZ*y` zj5(Sae=;ZObaLcTdwOhXPGU(;l07paH#H_LK0G@)%9)eo%uPy-JDrynXNwOv&ZJ_) z(h?#w68VWpi$9$jbJ7-bJR|m)CpTuO!Et`J_3l>RXp^%rEvhg*&gaPV*i$Q<8C<;8 z&a?(kUUgaSaBD?JwWB>y*jZ(7^B45hm9$kB>!;qG&sALE$nq9tAlVXdR65eiin7yE z;!hki9(J1CP^bSJtv);7du?~& zqqiTucmKkBx3=EDv-9%d#sB&@U;N<3)sLTC`N4blUf$W6@2y-OX&mdQ7-}v*Gt)8H zTt3q5>aTaSR~EGUb1NKaoz=zVg~o^F26|fl;?Mt#bclw%#o=K}Il-9Ud46~-<@IKp z$5LcSO0+!2GC-yQyWQ?|mSnP%%gA6G!?TA?N_1o-w{o6BboJ0=>09en&{e@k%{&q^ zKpBjWOPQb|I+jA0CpXVOfrmGn8wfppX{}Ln!xKEQG9P$63xf|}f#(yjymKw_utzc> zAt4w6Fek%2nKI6j*f{Fug}fm3P*6Rf>5q#Ge(*{^CJa-6ZoK(@DC|dhy&+COF4{ZN z(hd4BD?`9$^@6`oL7Hq~i3dVp$}q^TSHBv7jD(dw>O@Xdv`QR~6)k|4BjIq!Sixuo z7wjKGtC{7i8y1p;tr7tO0Jv6Hi5LYs1YKevJf_Kwe|<3U z?v=#{dlNUeMz3uQUtAeDyEOFd#_rQATMrLbo?cmdd3W!@x!EhLLpQc39_%mN+cQq4 zF0Kw87{9MKV0`n`>frV5sr{v)jnU@$-m1PDd#69E&6CmUPVe+)EOdFs8j7adTr(Z+ zj*9%THlN>->2?<8=jBm1>S@;2D6R;rAY?>d!3<51o$6y||Lu+w+Nv-ra9B3f>J>;u zGC|hiS&W##aC5j%1+R21VT&0$3a!aiI#x!QWfj3Ea#}4a4Jla>3`q-ELxQTo3IPfd zcQOk{-Zg5iE&z=Ht%PYQ5iw94t757NL$mK}4vQmk16FsUlH9bK@jQr)<8I}#HP1aDc~*m*6-8n-*i zz~o*5NB1l9))B@XjF)z7T6P4wSkSSQUV4c~V3uL>=wSexL1exZNhZixWM-V2EX_MZ znsEq1W!Yc{vv3$yv|0=nB#*EWfeHN5l|fyVQjrBX*d!kO3eY%0hEWUBl_>y6En><@ ziXfDRKmc8V*klSjfFbHhgfIyYVQj+0yNn=DoDg(X6KKsNFua0TvaDgMzgrjN2HC+NjK+_G3 z;7mwH87XlqFj_dk>JkQBRah`;Vg5T1N!e^Rtysk1NYVnrrfmb_5EVne37A1vQ1OS9+jEja)B+$5%M+{;X7gPxXj)Vb)Vx~w9BiNTbumXdlj7S+8rozS! z)?^c4XLNM5rqW$joKxd>jr6w8b^GtFG{4;K{ODZAmj~T1Hk&^<+x4r*%m4EEmEV7U z?O%R)`*&a5`G=o8|A!wv{_NJ`t>w1o=SN;%p8n$g)<6IJ{r}JZ`M>?kHy?feC-=h+^uo$0D5$w}Cl8Q2=BxwF#p#m%W7-kE#8 z-Tq*;<F*Kdymc1HvIlXVy8+xABMmls+u z%ou-1;@nu^_FC7~g_hf^9kk;OMcskiTCY7nCnG%Uv@#8@*TW}^v5ZVmF{9Sz#Rwqa z7-csvC^$N|vZjdwN*<`%M$r#JS5pQcgrFz$oEN^O0tebqVMYk-@F`4-B#IWzBb%KJ z(7O#6pe7v|Ja>JJivYkT zkUWq)1OXt71?iHD_Ow9iw9ssE+22~={TcQ6xL9XSqBA?b&=!%Oe9Dm-?JLQ(XU63u zhZUs9x{ET)a$`r@ebWPtQ@wTTqxG{rmF0N}1<9vN(j!VUB6!)h+rqOGPCC*f+dS!& z&h(Cey}R1M3vF##ZnMwc|piS*RI3S>_@I=UzAmf-f&uxtNARsRwlqp4+>H>`d zXiFYjBt<+#A{97>?+}E>17ymuXxcGNep|gzb%d>SAaJ2eLl*@tDZ^(JQ?!<@k)auh z>CjLYjj%wWuqH550D~gnm}UO9n6Ch97+1`+$k4^~; zNs$E^@x|GR*(os@Nl~eBVac(lQ{%&-ZSmoS8432x#GKTati+DOjb&{W1ug#khEiK^AaAO@e7waq-014AF7Bu-YVzh+I5O+q`F=+h zZD*CE!BfB`Th=(F^;9Gs*Ep}s;a81 zufKlz;(O1ZzWwaUqkFfqZShg3jzota&(BWp?QCwXc2D=#oL}mDcwzpF2Rr}r*FXBf zd-v`itX|m|y|F!fdvEH(>d;h|f2zat=)!b&P0?7Jcc9VLT2a_pSKi<)7;3Nby6iko zSZ9Q;HN>_ccrIgp&6D3amoko}AiQ3mj-^yqtv{odCZeLEQ&UqR$Q%Ji$&mB_dD7*j zz}S|ZIKi$;j~`mVbx6ww%jtAlAG|U@FJ*uj^o^=|4C{GJ%sig8!P2G*0fuPdoW#co z^OI9>^vHef+uuW>#T{Mz>M^VsNT2YmZ(dgrz?c)ao7Yjipd}y=Fa_vxdFw%|QJ8E) zWko-spv$OAM{y`VO9OSbYZQTWpfPS)gC;^T)g?_fwc0TgKbfM-j#H&j9Vh{5Yx`S}g?URf?kohuUYr2%OFXnPi#r*|5s?!N zSs+H(fOL#0JKTz?RW9l(ebkAH@c#Y(`tK5AqiqRMu{@HaP7Jiyc2(KO8wv&hH`*paDhBsS&*(_(S!m3 zOkywx6C}bAzO*b^1~8G)e9;0)LNJd6X4K+ef#i|F0>Cd_@ujOFT2s&f-r+E+2nilg z8P*t!3W7BzrUk^TbZ~*XOo=aAU=$0i>WQ(@qTIB;hO*n6gDYJnt6i?;&XS!$_l5C_ zb0fYh^R1uUS^nVW!o%H>7Y9=x-dOth=JHo}SAY0m_0wC6A6=XO;L7Yf7bfnmc5V*` zp6*Zn@WJ}$cUIoHH2dzQnHLu(?`;oVTkbeJR<+pfSnG9NpRa$i+4f|k>E?XR!9-_gC1*l;lQigD2zvLG1?a1cC2%W!O_}N^&o)a zL+gIcBVX{lkBiQ?j7a_8Yl%X68BFY6Ou#?jB=FC^j} zc`AUeb|hSw%rf(cJGsCqVyJMpArff3pstLNj==)%={p&k3fBo*+pFP?7&3os6`r`awet7k7KfC^uC)*FV`aiq1{EO#j|MI0SfUtJyg@WQ~0GaV1tS{|;p++S_GwbuK?X9s`#qZhyb$vc1l)q~%B zc;)6=&(-D5^D|8=ecqYY;)SmAwSNERV8!-u<=Kh48*AMcXPa)WwB28C-yaL?j@3*w zJBC{QHU9F~zt0Q?&-#H<7DyaWSe;#(Mdeoc8vj|d5DGY&N^6}{RcKmhKy5Ws)Leu> zS3@GCXv~C3OPF{h@Cq~pw2jm?2w1=@GtIVAv!LtEvL;`2O?L1WM^^zr&_zpptXcOT zghc=m8Uh5soehE(z_-M(iAM;!GKd|#z?4B!&<+-8a|_-FIr>Dkr>M8Cc(mEsRaH=w5u2Y97O*GOIg=|36Uwt=N;0B~)50C;5yiIfoWzq( zy6I7ljF{4_SZ8KTesXwSc}{C(QG+MH(OWRy=Bsz-`HC|=MVTeJDS^`58h2rJSpl!U zWd&)CzM|snk-}gRFHaL0G{9%d&#eQehOP zszD1aYqVIFah$3v+KL�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 @u)Ca^>*2Wvj%~SC13G5TMI5STfiI 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�_u1>0nEeEH=Iy>eY*RWbr4s5Iw|aBkHR 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

    ;kfWHTs{Nsd+LL{>R!t6phP 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%0AQ1K8xX9zzJ)c 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

CGT{N!A+RmJyP6hNY3wA)n3HZbl~133kz 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 w9{QpyI0|M=s_ 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 xVsP~iZP-Tch+Lo`LbuV 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%0DTCSC$#Hb6^$gR!# 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

X!G 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%0Az zLZC_@)Vg&@B=96l3bG0nfhXQ2EiL9&9!o$GfmVvH7S|&wLaC^dHEV=bVcWzCR>d_d zb4!b|ik2m3rA9`F$0x?)Vi%__O-x$2ICTkWnZ-wkM>?ZoBXM=Ea0jNKMx!P&*6j?p z=?$Tpus|cm`mt_&{)`qK;`pK&*_E=#yZ2ODPKmF1R&%FG? zGq1h;{JU?xy7R49-+bkTci(vBy|-R_^~Gmje&OjiUw!e@UGE*?HTcf6y&IVXo;xM$ z-wCb~aN`jVsQQsi@JKkqiO6u7(AD|V#Boj@Axibt-j6^3XeSZAw{l^aNLxlal zle?=U2fjRe;>h8BpPgnVb>g!Jbd8lg>%%%(zjNj8}*{oj&o+0aSAF?1_DQKH9#% z4=uqdQ2FVjhv{;zUcSOU*Kv*HM*Z{&6cqI_x(TR+U3Z}#H0ILTQ zOgG>v(G*i@g3MzDMahXM;;GPEqe|sg5K3RREHx{0?t*wX83WpEE}PY1HChZNo5^6- zVYr9^VJNTEMhh&EH|P)y3&jNwMuzN0I>>C&%JOO$&|0l}QnSKQvN<5l5r@Mh##wqc zF4l(ng#^qF3-Q&21q27o3iKDD1*suClqJuq7=rry&kp1VAK(x!ZQ`UD)#rZG~>FbC)s)?{KBEUQzTJ| z^BaN;9#ADhAdDj(21IjvFKQr9LGC$(9upoAj&cTMQ@DTt0v5a*^j4@3)Kf}?Xpzbk z=!{j)IPEr@#X@>gCcKS!IgQ3pyTfQS;@d>i zG=nzSY@~P6;V{!ugREm^wHWL+Gd}Sym(A^VxZO^>gS4(NyF@lpCUBTAM-v4rm&=0L z8HvMav+7LxV3Q%ls0-Hf;(*v1ST_nnd^R*7EW}S6>aPo<6%Rw%Ya9L@NJ0bff27w0 zA{z>#6ctw@s6m%kP@r^iqFq%~Bz)QPws>y%b@6_AydJ3X{;2X3S}jl96PNl?+#}v~ zie#!aOTUya3RbF)6&n0gT%{lxHAv!rdr(M{7pqbL)r~SwG9 zL19a3U@G;iLCM5HDgU#e99FCPPv9yAQ~e64lHkEr^XA6bxlgf}dFeeu+KRVze93~y zcO$tT_w${JEpwb1e(Y+UKaF$n6%3-^ZAeuL!qh2*%yph zR|-k= zkR&unrw`NWLP=R#abHDwXf!}es}R4F#6a;-0I&c6|MW>jK~!>nIU9W|xiB=+jYZ$> za9SBx&8zF}A=RoaTiP(U+_FX3Q~Sn^q;s@>Jp?H|+qSKF^wF-ZTOrtGN=2YbSe1z2 zo>i)WUIRNaZ)9#o^hy>1WP?G0TtuwcDLbTTU;qV$`>gKkqpFB}^@uAgVlKQwTpb$# zLdu$&R`vEGad};B2`eJ4RIv`LL3LItP^P7fe2uqMv3e9C9iD% z_>6BC5AL`vXe9FBs5}njB&9I*>Tnh$LeOC3sc0v2$l?a_q>gr$lV__YQMt-vttCM) znPp{J6%`5T>1miekgKUWQf+If$BA&eND0f!RB-ufRMk+`(Sa*1X>2TRXdpAdx;iux zXGa_GK=W0zL;+j_ z37Hw}rkzBL{#b}xkul)1d_=r()$*mw$SM0m)wxwdW+sXwl9-h_KRqoWBRvtj>QQTS zRItfNLmr2H#62VL7&>Ig-NWu2ard3W?;byG%Bb;UM~)jae9S$!4IT1NfB56AL+%(h zYQ(USBW@cqO<3U^v)5(Cp~ZW4^N%`z~~9%?;167 z*vSj-0xfUP%fmAF(z4Rimt{Fz)_Du!@=6M`m*=JDXJr@VC1<8AT$-4XpRqV)@xtUq z3sV*?PG6FelbV!~v|!1Cge40Wr6#51q^IU(#U;!|%HmYgKZ=cyU6PTEqZk$&3>s%R zX0g_&xzTZn@fb`y+_ty{bED@*JDs+un8@W7WsMjYv3qq~g%BmgA#Jz`e7#5!u0)uL z$&`rfl5hkWutinaHuv<9nIS7rNjmZn|3X1kqY4ou;%G~6FRH>;VO5aM&f?mt+|r`V z<$1~3Y0+^}^Ah71r7T&Jp1e3MX>r<;*!eM$G2szWF7)mHKnz+CDql$swyj&mz9aG4e8F5loVA|6jxOh zS5{UxG^}oEY3u6j>F@3C?`iGq=<4n6?CI)T)A!h;+q?UEwr$<~#N&@V@z@R_RxiKs z%!|)Gh3%)icE0-3bMLbgWcP=wm%qPq>3deiLJb6)j(+{s-jBc8|M}Nn zkx#3m2lsus`@=(D?mhg~=ZC%|7gt|=^1d1jFj*wc}$De-iHZE%4ryqUs@dvwcx8Hev z*Sl}vjITWRcT0iuJ1KmwbLJNE-`t zBz`xP6hTxn%@(-B;&J5;@pdCcuWZfrIa#VROgC{s9H9d>_G@xvCuA~C7JJ<8T4b<_ z{6<4)Xpm1x;GD2fQp^nUpB)k;MpFL4!9<=9&lk^K?!QOq0rATq#ERYrWaj)Ht*D=HfuB5FDJ2DwncA5} zCU}Z?+ROxvK$UkRrJbAsIe&64yfD{a6;<%6DDM*9WWiNvEefjK#KYPo5t1oRj`H&p z7A_#SQ%#*2NR-4J;w%Z&Qn-gM1X6)iSOA5;tgDc$O3U`{! z29z~nu16;7tii-_nhQ!HO$HS-fv13`uN8y$;_degkQRD-D^flBv7i zZa0TVIBkd$f@%GxSWXnP(FYIs~@43@vaIlMEi&hLx zw_urocwzK}tN0P%meND#TP=6~x*)~t%~2kx`b_B!lukfI?O5o&lE*4f*3&_Gfhws} zgdQs!1EL7ZqACSfF`pvg-uVAEu2M)62L(s{N4QFYQsy@Y<$P*TE{TJ}nQjcqF%C)@ zH7KcSPzrbjAyxdr5 z!#(kz9iR*gNE1z2RM>A8Ey5ZWgbT5n^=^DE+zyAs8WR`YynbNq6HoL%_GsspE$y2& zb!^!J>D;`zgB?`$Zr|Rubt|@g+qY8+!>rbg?1G&|z*F-eNh7;m7v4b}iis8Nim@J< z3SO6bcE>K6o7k2R5rRaRp>5dEv~C@h;(}C`$rthn3xjwQoZ6nA(x%4pmS$SikJWR8 z(a6!29UaIZa0h~2h@dNMg`J@RsFTi4j;IJ@)v+=cJHzS{YE#CBfwX)c`)pd#*icFf z5_4o#Z66Rt*y8xh!>I#pknm5jJ2o)8^tbKl#EXuW2}r7D{!NV8_B+}h@4o}A`wN{ z9Tiz17Ks%kd#$2+YHCQ!jMq9O+rU+;@@uJn6vs7+=^|-Sv6>ZuDpj=#r_NxH>4MC# zO=AKj5GuX2G^4DH@K!|yvLQtTamr5$S;fgk%OR*CyRw3ga#_)+%CD|Qp7fI9%(7Bc zl2KZcQ%Mfp>5PoDNC}IV0$h-lIX@#kAu~g$(-Lt_#hO#%!F_QqD^Ib*b+Hg!l9!JZ z;#1jKiCJ0kX=#x8>FM)QQ|G3nAfA|+nV6lOkdcv)o{k!l*w%>YNwDVGW z>)01NWDV<2^)dbF860e1yQXq=-RkyMNKwU#r1XUeOXBCoM@L0FBO;w{%)XqKMd?e- zRzrBCGc7kgue2~dKWk}5O5&2l#3c)oGnYn0x|XCRC1oZrNJ>atnz%S^aqPV4=(wo( zh4aaGRbFOPTvXir*ab<65m9aoXA_nrCM;d(j&z}KG#Yj8Xm@NvTugjyc$7OLCVbw) z`7!h3Ft&EO>)igIL3{D(ZspzUxbzdb=N#GP|RG}+l-KZAkP#qo%L4i=b+rqd? zke1*oIV#Xfh!y2zN`(v}%{@JhU0uz+z4aX(g%xEP1v#m?ndF%(VJ-yCp0_Z5?t-~X z(wD|9h>MvQjhhe=9gfJNw4}HM(k64dZBcO%Mq?QHjx~fv#JKTU#Fv7;s`T3i8wO&i zttHb2m)kDJfF4|RgRrudvfdwatCfw7mF$iRk+Qlva>3rvKw4LgjpeIXm)6#jvK8yy zkfj)V&Zc-t35LkUD_54))U0Z5YVYalS<~CMw!gQ(x1+nWr>|%0mQ6Jc^;@@Ydh+o{ z9(iQjlTSRlWy{9r*b?xCXP^A&y|*5JZ2McUzl6wpZ@>Qf%P+k3+Djk5|MqiFKe1)g zhPPjT>Fw8E+_(3W17GYt@a5;7Le}lt_A7tRF>}UZb=D2|M&ZkIC_DD-D_uOp1Fsbov{J6>+|pZOzW5` z^?V_z4wdqRckOP6L+!~5SV8wsD|iY$osSps=p)kt!kk&*Ie?cpYTnc97uj9@FLl0p za7r>7h6?~wHGW<+a${qZE+Pkz{Z-k#9^FSJz<-SYo6 zp}+b0WJNze=rofND5rF|e+5;OWRs3T^>CB5Q=y8+%CQz_!FmzcIaVh0II3wj+Kk^q zcYC6+L3XxK`X_qeBY=FS(!Lx6Q!LT z-Bc$-6;^gpR!5g6*4cw7H(ZF%nlnfCuqDuN|#)?lEk+%hHvkP)~!;`sIHv*-W#dx!RqQPJT5~n-zDE}zd_gYWvE3N zGDH?jeDKu%4w*(4Sk6bRfUir4`;qVo9Lo?&rdKBp-^d>00b`^38WeGFFL~CKk}w4X z90V_xxn{J;CycwnYJvr1$dWqJ!jjAbk-Diz(;9B67F5k_X1Kn^_>O~J@ADwYyLSw3 zh*)R|K2tJCJj8as({CbE4j_i;m< zDR{86pPZ3`tT3Dx>N-`D>O7Lv0{VF(rH8B9mzSqV6oJm+IKkkwEdC5Ozhq#OW87iU zT6rLD;X=KYmS&ZFa(Vuc3S4=mNa&l|kV&RqB{~pk8XislM9L>nrNx(FLu{_vHmK`S6>s;E#YOe4OMDKTM`X5>^b{X zR~Zu%_^1!#l9ZS{p^CQp0d87_XvN1x_CyoCpF`5#E{VpHFvTab$gW6`U ze7Ubtl%)hdsR36QHpe1~6oykX3s2fq2<%IU=)@Eq6H*Wt7k2{Sl37cYQJt=L0A+ff z(%8;`1kM;?7VBM+h3#|(2FZ1YZENPhhCun?d0k>h)Ea*#wqd184BIsO{j zSg7AyKC8(^H9Zghm`ul!W*t|!&Q2PVVN|_{>Ptoo*>9mH-d^UEp{mG+cu}DnriBy( zBIjLXAe!!i4!_~kg;Zx}1pWmu3m25YVrW#2;!Mmbk@&B-)6{@_UbU4W^lwWgJlomx`woT4g&5Vd4<1(g1V zRyL)f`l*zz$jR7vukTG1ZE3=*aXq6KL^&dP>K<`GyB!RU{`866#mDFxwc*5CGj%Yp z+$NpO>$_QZ&POH_FcLFB4Uaz`FE0_`x!&6V#m0IC1lV?^6&WZODUGchq&2bo9E_%b zSgAgoS4SP=T36oTHvGcFla5E!^F}zaLFpdgp!;4TWQ(u@SJX`Bgb2LLSfhAG6?3B& zs!_E_vtk_+A=*hjO?B^IjQ=~;8}F&olwt8kL)BC=(wZsC$q9{#d7Phb1003YQjU>v zn}f>g(3rch6~kzcPs6xwmg+5RR1xU#-?eqZjM>LwhDqrPbgcZK&d3!*CIICOKb!z@ znu#Wi&*KZc8@hg&`20vMxdp@8{IW*w6O%8nqECuz!=suj@tU^g+WX~hq+W+HHe1AZ zJSFnefHWl?r%&KpzwX5oJ~{d2J*!xkr90tI37_tUA|EFFh=dh1a<)kc#18uZT#^Xi z{1?pHuM4Rv++qGv4cbD{DUTr$^aijf4>6>?R(BPm;agsRa%FyX{ki;7E}787)*DQW z+ENq&e`3(7_cgAM+{ni5VpU?X3HP|sZY(XYU#bCW+}qRDvU<@{c2H`IZv*rqV$Asj z*(JN{Jmh{fRL4Nh?;zCxDK5d`Q^o{CfTyagpP8MuJSt733SrrS{f}XV&UJyIBlZkZ zoRgtNOTh_qK1ufzAhf;ygonI7G!c&xPdE2;#EwHtZkCZQLwt8N!Qc0z8mJ6eg z5Myp0=$|?EpzfQ$+&p|VAmG^pZln5!# z@A@~H7r*)CC^p?ZU?=lo)8A{X?EY8J)9EMRnd9QMVa-e6{th^7>+#!J2mN00jMbXN z(l=N})Z~MTRi936nZJ%bY*l)s;`Vml?D1;{Jm>K@a^#8z*!&~xGTC;?*?nC4V;k8A zn0CQr!dJuBgMX$P;{MBNP0ILDHOwuLt`ef{HHt9sg=KL1?cu-Im_GeImAi)jw?wH} ze7X)R#%_AM!V&ZZ@g(6>d7ReYUmV340RQeE+Ci7wHCwiLp19ZPNMRLW?`v=^^3oT; z1spq?iclwT?Bn0Xoouw`1WInDa-(|HRbG+l2x37|DFZ#5tq*fpo4yxM69MrTadsOr(*}Y#6G|&7FL&%WlBBwb4zWF1F7BGNc><39w?`J$B;nN3Ecjp&RgV? z7lBv`6LR30b@dRaW$$@Sk?~Sh*Bs%juK4ON1-!!=Xb<%#8rkHQ2k5zSjeSThe!)f7T^w5V#F&zTWR?X-r_F0hE~^a<*k`J<)Y#Y+SU5f)KmjY{G6n48>??kOT)W zj+0YD`*ZrZT`udoyjdw3gX}pbZ<&Rj_JH(ysJ<2{2{yrgIm++3#^3n@LsNEw86&(M zi+21L1GWMdW-?CEDNr)IaWY%m_p07b1aMFqJvkPH!pEx*gYRNGup6mWLkR{Nig8u9 zq$3Ox-vt-ReC4Dv{`XXjQIRtr%fJ6#K9q@_nuP}ippKI7OQPZ83S}?#UdtKUe4~N{ z;qlRiyMyjOc>HVE=$rUyn)*i-E6ZHPRjTM{W}AEGuoyY=`Ikm*LR3|aq~5P3l=~x= zc(5-uHA_>GWA~=2?wKj+(B4o~M|Dxrzkcw)kgC6WnidQHe(kcrQ|m#h$hzD@-h0yS z(Y@s>JdcFsqaWBIJWpNI^S=MhIXU_xv||@ zh6~=@F;fen$?wZni+Mw0s>Trw7vJU{qE&F@|2)Y%aME6t;2juVhG$ddLmJi`GEPMTJ zOzotP9Z0l{v4}6P$4E?O#0mbN6MNs7@ccj}5{G}Be2-z-fA{CjH`==|S()dp+&6VA zs@&JyReoR2mXfN9!2vdJ6`|r_lz+V5O0YppQJnu_oE&>9V012^q-X!|j15#zm^C+KPRwCeKGY-Po8uGrxBLPI4LJ91lDuNNG*sBXhy z{ZGyBL~o)Zr17#sA5jry+PocY^ckBIOiCWK!@9-W{@o#mrp!blUqxDb^{bA=<97sK zTzuAcP&GB@3?2x6E0XRwp}#r{!2``i1>O(G#x4&BFnn;aYp(V7j+A>r!?D3Lp*OM~ zq2-E@0@YIwX`!kOciH z8iQDe+*5J@vSE2@3Ke9dG%SqSX(GL|0b1RTz)WmwTjDjm9l5G!mS?EPkkn!|tiA9g z(gLU|!h?gdbo@OdAo_?-$TINauTktbmK%$-uXnbP|Da??+}@-7qpzlkue8oh$&3P= zl-(%A>2m@A?@Th1i!=V<1dp0kb5J2m3CuKQ<>yIAhR{i{gOU=Y?7o%MgEi}@SU>_lfx&=UCq@KWDD0Xk+mf0|ge!YY>#gW6jUs}XNhZ~XH5 zT0__7EE5-n&n2P^4A9E*Y?3K|Xh`gR1h}5K*a?9hC3SEZ*L8qHv_iV0fXRteMC6pa z+ER}m9Sx@gIBvT4mN%u@FGl4JzjhGvv=}L1?%@3qv4(^J)lKdq;b^%kM9{~I#VxA0nt-a1EWK+6-qkV z4Glod#{B%?#U)xZEpuSU#Y^~aIv9ZEWE$T&a0&eYMk#D?ft~Md?xgm*?yMMjn8EMBwj}pRLYYH~V<;0JsgU zQ}VM95D;Ga@1<&N1|1y$*y6)T1@kZ0?ePEsBzl7~@GmU9w&!u(zEkp9Jx8!|(QWB7 zPB&#uHvC`Qn&;sCT1k_TmxJ(+ij3{v2neN69Rhhb&8M*vgwrpq-{c^LW^OGZA^3yKYiE%*C!EU_J-h+NU{g?N@ zjlyJ0Mv8)$OB=~vN%*M(FGjCbX?5U6JG8{Kf_vG!?<@Ct)U+xFmqwN)$&w&buyVie5;-{aK{y@jI z)!dh&0XUqCK&$Y(O+CtA?sTLCw_Pji|J!q!ws@G@%s-q8-DA-!r%@gT%vp?< zA=d6tOz!E#m2@f=*FsMY#W4h)IqKBXBAR}1hL3IH&uh}J_!m}x<6)#)l!tGh=+HjZFrRMq}$yHIt;uhSoIY? zY3*B5FeYnct@~BoUfJAt6sXq-^YhZ$nK{XNewJ1JEcEv^cQGO1P4*fE2>}uQe$_%a z;54Cg!XEW09r>)jlE*1h5R%0nwn&`-2z)#1`ik~pWX4naSb z`>qFfxI^T4Gy0V%G}$p#k2F+*PG}nGehwI4v;YxtF;3?P8enX{Wq&=c!lIQJw*K-r zIFs$|44gF|DbX=wS&&rIw*pT2mY$|8>|mDX)K&X3m`$I|wHU2jDC-7O34MAVW_#Yi zx-zu{ODN4^v0cHPdDIs(#9-u%eY{RftvAUm5IC3jaGxir(8&{m%@BP}7X*PHmKZFy z*es#roA=x2v%00PMMhyN7AB={FlCnmQVTGe)XcDQRMe^eNqBPnnnRiCGYqw=>t!h^ zcst5JS~W=+t+?JL6r%OfXYIPq0f!}kh{D#vp`(yy%~r;hjFVi8 z9c@Va1FBv=eDXf^ys1w)Q2(kZDJxYfq&EA}{8PKr<2xeSK3U%FD~ zSMS4DGK00>-L1aI+w^bnMEN1g27%FL$&z5LQqimWmosG#Vy+SCYR;uZfDXK zS^32zcXQs(YDXLEdOr_YIf_b>Mcij<1lHe$n|0pKxgDF7{c-&J#^g^pwYJ^VHka%F z;ZO*4lFRz{7BZU;vG>iF|N(9Z$lIk~CBh}noEiFmTB8cUrn%A`dy)t+=xkYC1S%D9@=s4{F69r*I4YL^ zfZB7deuVEbxvS=--tkhlTrV06ZXonx{_RY^dt0(5-u?{rBx!>>d zmX?v{L8hxFZ4rKdHR@EKv#L_+@CgQsZfL+ZpB&>KWk%Lt0Hzwe+u~%q=qlcN(ZtQc ztRPX}@IT5O)R-tm8SO^r-j_4gL!-2zRj~XHgVTCaFTGSN`%@4|C`xPvWOK*32>C!y zcXFN;6#*({9ZHlAjV7c~XvJ)|eq5eOE|=tr{_H&xz-zDWdlmf0PHgDg+$zwK z74*I-`GBSIlg`>(bGwZ>8K_hQ{j3vp?RjnaFUA#ixnpnLl5kwlK(d?4Al?>z`upb_ zI%!nR=&?7V1Ap<)*z6M-J5rGb)2D zEmwjU16!PVR%S|4ZUY~$ucfw?x_e-tp{0?TpVchn5y4&QMCq1rGCIngkxe}!5+y!1 zI!YtLxQ)(I=``thIbwuK|9rjT32hHA8F%kcK|x-)xM(9$%O!i*f_Dz}`z7+1&n3z8 zDl@{OFgR8}kGt5rkUG#OE_BFuj#hH(kDU`S&Yw$2Uu};3jLxuUe~uA)*OuSEMbH9J zEz5CLI*B^rL=TZtl;-571*g%_=Gxl&#$=k;S2a^pY%=GQ6Diav9SlbtSPc62>e7V) zjw(g!=-9V_fYfVkZoa#>#owPaCW=RSV-y!HP3Py5!nz*J9Ll>Mx0x46EO5rA2iN2G zXtbka#T6Q+(D|YAkJ~yzGETm*Q!ELMkDn3G_$8mAGh(t*NR9~k2Ls(2Gw{|*JG8sI zraAQyKe++y>KeXf9VOh=PWPiVxajVm6llyCNyi>sC$xi@omq?f&beMRN zZT|T;47hD`adX=)e%K8B)11EPcTp;6{^jJ!K5zMHv5Kf__ui0xfyU9o1Xvgd=GHAUJtq{gRX`*H#EfW_h)J!%td^R+)|Nw$+a7AfKGB1 zjpjY={-2=VBl*2QFU^Uqsi&G%2m!P0@INkzIG_%#!+S*BANwkSV^9 z`xU&c98q`tqgMc1uy=mWcZ$!=;F08YUAq;efNHJ}lTBRvq_s^#<4~ATM%mNp|MZdx z1h7wlGz7j|hArlay33lhnA4|u9d||_^>)fW>nZL#F>(f|PU=qxx!W)U|o`fVZ z;S-4VZ4(7pC>R3;Gg}S?g*+I3zL~r+y6jzF`4JOtlFPpZI9P;67BVngWGo{g;Z`Nt z{^i!DM_`SC!3@JS6dek-Sz=6^i2^^K2wFeY6NjwTVL$i3u{J_?fP3eEI3Bp1Z(95O zXNDzs9BTJGnQ19NO2}s9ImoL`Ni0Q=_4y`&A@$_*NSw{>KK1-?)0tn91)Bzj_V+H7 z>IBF`=q3{AAYugV4eUK4e`A+e$`%{~(ZjYSGbbDccT2?H6Euqbh7X0W0C|+hq@Z=F zs#5u5X}=S71im9hGDDa8eC*RCgm<4F6J`4wP7P{~B3ZbM&Q9ucnX zqWc~C$D~Hx85${y2JKUp-ZqJ{d6$FCF}m!$yBJFjWaCP&EK9*^WCZ17hn@x>Fn1e- znP&Dqjj!1mxT0vh@iw`?sfjeA=zwzBjKbQJ3h3du8M>lIKGdzn*jZ=HS$cQE?xRp* zxkH7oY<*_ZbEyd{Ni3p&6&$l#L{Ak(KI(EoX(rfoYp`ZMzN_aaRjhyGb?VhmV)QFs z6;lhi2C4F~v{O!2=&CCDA~%MB_<=8Y|Ld@ie8E=CHkCGE-*}3UQ-mZ>+lKcOVc8l- zmZ$%1?bZ|NFex=GE!3QMpHXjk_w_vrdu2RW);Buv#%;kz$qd(T=q9Dq<78{TRqizO zvu>5DBJrZ+~VHFiwBhQ2#2vr=d%KdR^A{j_0B(&bXtE|`-UODTkZHW?ymyn#byhJ`#X_c;#~1E z!TNV^zUaIzJhbfy#l(wlM3#ZR1g^BGk z@J?g*uWn#Nx)>#HnI{)uBTrwF>NBWl{FpPaxErM~$) zpoC>%kwH_n2D7w+!X@%6pAEoRX_B>gD_p2hxes~Q^4QsPl@D0AW>pbpQn)<41PvTD%MG9Lk#r8z!a^9#^B|8icO*J2$k@#0JgD|1-D9?K~eE*b5mR# zy~rpdpUumBrB1m)$FOX zy6YKp5S7lZWQr>&=w~?#Ic7=^5reMo9m-8;06c6#Nd^H9o+Rv4R+dF_oRgR+l=vv` zVq=EEx6u^EmPT?B81N%JB<^}_9vu!`&dpS$-#PX@SINB5T8OgJb-$l)G<}#@{7#Vw zMk{@V-*6MI7Fy)!nO)%oDo2bawM^QU(PyB&p2JI**(RgLviiox%1%-oTzQL>d>`Xw zE=_~fZI)r8y2i%B#>Vzm!Pd{d(zB2Vht@Ftn<%x2SaUwgTMboYZsWcq6hb26y%qzE z2x~{#f&uMf$?|yF45u=o)e;9{Vmtf&1A>_9wi zUo80qJzg?WcKtby`@TiC{P2{gfqC(7cVH#C$cFBw`_z9Uq>4z_REK#1>mSWcI;CNX zsl5Ku-Q#|#!t!MD5lR5vHese!D_W;^ZjhRq5 z-s|Uko)%>|-DH^+=>*83W%T2L>y(K^(BaRI`ZG5`HoFre^y^9Iy!v#vwF2WP6=EM3 z5OVw1?fzz%w?uzfUs()IKUUezd%t(6<~Z?b^r`WD{|ukT;kL5aym%$N_xU_pL*mhI zYg5MD|M`jW*RPfP%T3c?-4BPXu01a=#sC8a7^yg4?%G*l^cMR!ZyoQl(N@;_NiE37 zT1UoK&CA`^HnEN+aHz;a&U1DzJ&HeG?6(VrklethF0vnd(q;I0^tVihq7h8Oh6yVn zvG@!Ja)MOE83a-CaEBfg=K5yq%78LuLXZN?&xRBz8R8QN>@)jib zCQT!iSVA|d^n$2u7F?x7=8ABhD}+%KUAwO3+4GcN@k4VByv2LP*R>aJYXFT6=E#+G zuXpF69*tp|GbcUyEyLXSf}t@?@10khlcFq^MRR6^=f{u%NC3B2>m1}G0lMdmD|Qvn z$u!tXD7K&Fp@?8$Wxw|wC2Cevc!PY9VgXk6+vf-@REp%}$oCPam2kz=b#+v+0(^@6 zRNGqOJ1lAr*gu{C;>n9nQ~WXbDG`H8_|5fw=1H6zUiCGN!cB&l#;M4h7VSGvF&l+K zv3CJ<@r=D>NlucmbK&Cg+XY7Tc;kReY`>rqZf$!4!z16Q&k=8S-UOE24IMC#h3HAa z)uVG>h(QT3wpUA5^U)?1*==OyVl8olTTr&K-$-%BD?EnLSq<1z7ZtXcTY}B_siwTB zx4^g81IHLyT+YZXpFcUQxci0Oy(@`OYQK2Q%78r}Uo)q#?O-y3ZNum6xJj$^l5g0( zjmSBwl233C+5Ai+94>?hFYFp83(6x&?N}LPn0Dw?3(yOflO*|NDi#33!~#a)rQ1i@ zl0i$sOs?43u!vp@t(F17#85E}950$He3GxVq-wnPg$(2?ubHrH5JPt8U^TWj!*l_K zDN&gUN!L?JGQBbin=Xh|5WAx2;2ms%c8>);g5rl5AKfx1Q$*lnvA#Ip^nu4n?-9n0 zN}KZTauQe0Gi-uT^T4+tw8|iYRVlql!X!u9j5 zr-NC-SD+&uM)dlvV7ly|k>;s($ZW(v64RuDl&5Sd81!3y`Dci9$zMBciTh-#uP9Q~ zs$}r$N}5Ss5bdua+R^_V#)UD})KzR@<7*E~72rZ3DL?~O_^*ys<$wyK3N@Gv-(Xm3 z2TUe5uLQBE%tt!7img_DhnrZ~)g{Iuux^FQPb%}FR1B`tWYntkF$R!Zk$yPr-e*&7 zQ8A%1Bi$WXRfdT)xIEa?C>YaWC^e{kIcT{lZC6yEqJv@iql-)p>JFIbfiQWrdCUT=yP5ba?5yDRL4bd$m=lhQ0^B;JZXFwz} z&UP5P9NGO4OhVI^!O#ZjpPKDW39o9;GW)Z~KUsf(A8Ynb4Q>fqAv|>x1@TrW$AY3v z(^#Din$h1DgJzCl7TNDfe_)Tqvq~RDYrN}W;%MzIYiz{9W1j`Bwshq46;e5qD%C=L ze#YtDs5jU6S`^s6`Z*!MQ5&<1>f;V}gU?gRaE8m`KNGa)8p$On&gjyJ&`ype#?GfN z-d`?n{yQ!fKkx4j*ptt}T+wvKn8~ETSFn3)CWJPtMJD|<#N(McuK` z-KzHjCODH}Dhzy!n{hHXn!un$R5ppqvb0W9%`yJ?DBP?;`b+|g+#dTR?Nw-mCi>aDKFK!R;MH8+CpWotJ0hL1h>A}M_FVv5sbqk))ZwFMK=7SR$o*P5 zO%C^tfDP%#@4-TBP&?WPND-BH`R*wwF z9c=d|D73nP=O%EtR7}0PLRWn<>BYau)XBPyiWMy>BR6){4H;(uEKC=WbmmS2gMHG`8A;PLj7YdqRHxC~KZr7ELF>Tn{S}c-OZ%>ARkI58I`GJ>!yxXq z1=sV5VI$~Y8!Wk8g75XeN~`a2{}+4l7{d|I{FS|Obz*M2I{<>G-sS`S;gY@cOVDZP zYRCGLnAdmU>We%kvB3H7LYZ*%PP{}U`>8DAZNcl!5C6%z&G51<_oL}+9Y)E0UZlkT zV0V7Ak4g_}+5TGrf*T&US2MH<^|e)BDBCz0I9%M7m6g4{f8QJcb<6>%(dUUy@Wpp# zVP?#9UrUeO*_aYvl={0bm4>20?k~Gd!%CS-?et@)Ec(?I>>6Ve8R^*RZFFyqjj~q5 zW}tHi4Q%S_IlWXIGy_r}8|6ictW3FYiw-#=qH_t=&fdD~yUvGYjp)S%bXsv;G`*jW zwO*PWv$(D8_sd?ev3E($$=j9EU9Q;xx}Co-Xg;<$;pAU;ANT8uN=dt#RV(9{A?tES zNyE>M{+&0Tk@5DXAveB}TUbNu$G|ZOLr+Qm{?7O_^Ls@V^L*K?gxR^d>4j8d?WPP< z=$Nc8hC#EEy+@@+CB>p^xbW?W!+v#*A6K``}nrxMLbvsHQc|BxRzzS@>y;zcby4u(S zim4*c{7-2jLBA2LN?8m{m#Us`AIu6)e+Ipt<%{ns$qMuvZ<*6ai(MxLUhdBTd9764 z7l2%s;<0-Sv>yIbYGOwkJ05L8AY8-a@K%jgsDesxruf>^leI|IT= zQ=x!&sR<#!qmMKP<-8rdfQedZr!6w7Zm5P2`R2n)KY(~SFMjxaz8bj^zxCy8u+{v_ zzX^S_FFTpe*@*dp|3P5H{>~S#Auip!ZgNd8E^2o|Yr3GyFWSB_Z(XOW0J^U3jv~f91keVrF^5P%B z!TuI0&Vfh!NM*u=UFh<~;T03%w|+&fg5Hf#YHs!mN`i_7ctoUxbc4kz8X)<5&j8qE zFI+ct-&wuhQ4$c~lMsy1MPpjpR2Amy$~0N_XH6FX0kGNL+R~DJ8P*qD`X$Q!T5p0K zmUspnNle#7d%C0_Eczpv1DUChQ^@$GjZ9C%*(o=NdU?DojNm88_!GS}hNgxZe=$WZ zBs4G-xgsGkFH5;v_LzE<_draVPZRat-YvJ6Vbr(V4V=~$3jIt3-%aO15XgJN)Z6Nb z+5>DNzzb={6V}iu7ZFgK*v@?LqVDex^ebMpn6)ah9Q2uU@va-dA0pqOJ94n=etC}z zA|(cqQ;?IMxUI&>=PuZJx5MmvkA?O^q93Ai(k#B&&K`SFecL@I;WIthhKqu~d`H^mb3<50K~@jeF53^N!RMmTo=IyR;9KyAsF zu;Ri9i;uJ6MiU}cN*{HYh$_t!rD#s21Zt3sQ^43nOJ#HLA00*`Kdhcpd6bFa8T(cF zet$o{boJIt$Y~(sSU@>^JK#2q*cWBP4J_7b8fu1KtHAv4@rK5fFmUK|Pz7?nZXPF! zq&b5A>x<{QVrk&7(eC};s49GiJ5q>r_TNUS%3)R}_H8OQ7#_aW-2+nTODz)pRxJ{O z?5ns`p|Y7&zltL^!+mlAStmEsfh+oGeJ`axHB((w$h$P4*YE^1PPYMntrDQsLI1(E zDf7@Wg|)Y(uyAt5$9iYq_1npC&AALLqsK$8r07|N@6(B$Lf-i+o@MYs6%&c_#r>%w z!Pn_nky+F4*@@v09UgU}YEX;at1_#zX5fl`T1v|FLv@(GIyMmh#+?}WYj~)Z;-R#nsK;ArN$?)a9|H*_=r=dz!DNie|Cn!z| zPDDAHU=IB*W__yRfVNdEq37=S9G~T9e$XNSi@&^?Jj5Mc1m*a_e2#LgC zSi7t-YI)VkDN99-nNm&|-`7ziBRy};N=E?}*=B%cELd>u?}#ru@h(!6-4t@Fl2_wy z@!qr2k+_eVH*}n0sn&I)t=`uSJJLB@fQIzMAd#KAo<*1GzShP`cV(tN2~?R-7(<9e zXR`49v4l~52=hb>4qkX{%?O4AI?=$XPih$Yj=v{0dkUq}TwwSXc<}vuMdqc3h9Krn z46Eo?1yqzb_q*Ku>hi_vxEI$7XPr7;z%@N5euJcHIB+> zw0`n5RCna-D1n=8vsu~j5!kb1kts2&o)8U9!{}&2Yz@hMfskl74S5ZsQJ}k=wM?KI z#)-^z*4HupTIp|)4iPXhlt%xht+9~iZFN-C_ze#*ZZ+1!=Fy<87fNhPU-1^ab0Tx| z5jv-$tnEwwz8-^)haPCI4kwgAAf;nyb1EvDV&%B@)V5XhPfq|>I4O-?#$=UtZJdXP zQ5Jv##dmvBcRSpl0;S;dsGE73cVJjp7*k$Gt{PP&!QU~X6cv@fC~2DVjaW=lZvWA{KMbnb0-{WAH?I#H9)B)&r%!<~2@(mv{Su^0 za$)cDeWbGg0LI-|8kGFrY^dr1$A6izibnQvtmQZE$|YY<4zm+KKU5_4i#QWYu#fXB zKWXXcS;lR+#N?6U0QMM7(o5Z>IW91xCCV?zPA^(&voLzFQ0i+d$K0M7J(r|?%ahbN zS7c3l$exj%k#gLWZHlSWwnl>El1)mPoR$y#4#&%Zwu&}nX`^bbusoBF0H2cN3UQ6) zX;!OhHW`EQ>7pa~Lf57>RhL#;1`ZKc$#DNc*Uj}_+p$&WH7e=aPy;PgUSJVLLTEXR z;w%4fga&ubsf9R?)3A}I0jR{Z4b<62Lp59g1%@{Pdo5G0HY$OD)eZOqVc{ zl7R#$Mj0<1JWOi1O2g(B8U#ScPfRR>hFR;8@YPt69SQiWpx+R6!AtA&>nk(!GiDo_ z=DJ#1CWeLvdM&Cs#HlGMy5K~f$tcj6ipod51@R8+GrV}`pp*7;Gy5&@ukQP2w20oD zflk++=X0I--oH1u0FUJUG8qQx*SJ-52Kab8|0fkAN^(A1Orf|-fJlM z_166F1ns{Y{c}G!wtd2Ozw0%$at;44H^;y{MbFB=VPH9;)U(v&0l-HlYkW2zPv-!$aqj?Y)6WY?O?&?xRsm7zIT|p#u}^C( zh*5KKak<=MyZ0Q-e{u1B!K-=SjC{@mTp2}CdJINMuwpL}J5*~Q&sLP>M42lGH9_bO z@Go@?nD`axY4`>e)K!-O>vp~%0&JO7w#yQUoJn)shXa%0+mYwg9ofdoI`@s_*^&`( z;$|G$PadO@Tan9247P_>B9~7)B}jpcSRdbX4wZBnq)KxO#mOukRfsW{YMbHdM%XCA z6tUt_eB^|mC|9gLWjJwE4O_N|OfZZeO^AfAjaq$5dTM+tV{5m_@UmoFEgvI2NK5{% zWc^rV**3L-)DkP+L+c2LS_`A=j-3VIeq^I5%fZu6+Pv}R_ zN^5yngMx;MhJi}s2a0$SlW!zi;H@b#FB@F8OBhG+_qBaL^lJA92uzpk5xqBXF7ba) zz+VT#-$hX8MK~^1_R+@IRR8vB3EDcy$?-*%a(h ze(WRi)e%KGl{g#kp$`ciZXb_hb(aH`tY8XKvndd*+&nTTn8G;f{J!q?D=mS#7N6J4eZF-_aY) z5#|)1y&vVO<;jd^0W_7$>U0nZXx&wi+XArN`tM8%_HYKQyas7#RwU{FcPkgF@k+<^ z(*<4mi8RFH{GYjds>iwH007n>BOH%!EFh%`(w@gD_*A&%NTi6;Lv1X1y-h^b79|n< zw}*G6NG|3rOhDqjLTI!b*q|<-BE&;g%OE{Ugn{M~pK(d|j#cFK)P?^HLB9}fP?JKO z!TEluB_TOpn}RQrPdc+9x+X2cL0@XRlDmdy+xXIZb_jOCx56$GE_c>&LaolaD>75l zFvI!ANL0j=5L&)lp)g2JR--%C^X%4bMBa1ZY1)PbIfd7^j5fv@=&5=KXvYbbuVnDk zt~zgt_Uvpk@aOVt{cpK6k}SN@5sX&*u%x>i zL)6lIju5$cZhhO)vAIbC5gKyW&6?Ya@m<}v*jsJBkI76hSelbrj*dl&oacJAJe9qF zpU?oUO*eryQfQ_^A))9rETyNeNBhjX`_< zJ~unS&9K_^iC3S|{yN8&b#$9sywjm|FZJI_KuTQrxELWZudKCd6&k*p5PWLb8pm3m z#x&4|+Dt8}T#sFqWQt{db8H{ELgj*-iP{jQXZVrzslw{4YhYpE1pkxtlykWP>~9@* zrNc)V3Od{-$MWa;Fs@sgx-gOKMJ((o#}9>nR5yndL1?aMvTdnEZD9QqQ8PM^nno-Rq419JLqcLFD7>{*zw?fg6*}V!- zVX*4jx;M-fu`D(>sgs+vbrVeNFc!{1`hC5mQcERk8DF$azTIAV7ak5u1zu(4Bs8@D zd^GF6bvY~2jC2L{#q`7#s>I4_wg%L3m^=lUQAHAimBGr2)itA$erT00T;HRocCYq) z`*39yI{KV^C(8X@oO5fD@XYzRP^>$#6xbM4%VGj{2H z)o9(kDbIF2Oj-N3Deko2Hscdd!S6Y=kzp*x_3_7a=db5MH9_it^?9XY#@Nn}^H+)1 z3h_Yt2@FWMP>R?rU+v%l{1Nhf!TbI{7aaDRH;~em%ILXt*{Rr!ULgr)TIN8h^`!CA zmEkd9$>E4Iub0VJ>-Wt%;4cBSQjl)iemWsQ0XEF(aOmHC^u4t$*@;oA_8q?REAiqV*GMmDJJwa-jOk<#2JNgx6{%g+Z(iy>NsSzkq|a zvjtN&9B=}clS|X>J!09>YW=WSIUt+>%uy9O&vqfe%f3i^)!*Ov1FeKl`yT@i%#zC6 zV}Z}G)v|)&zF6i!vkTjy3}>!P)U;q!8L+gjNeqaEa00NcQ)efx+~8j}lMGDSKv$6PSq05J;{cN|bQ=rdqAE}Y;c63QY;5! zpsElZK;DYl9=6^DSSEz!!xW6kTz95`P!qUWgVxdhc+nRt?DGzI4%h@=5L;?nJtI4M z@*e{K(o8`B7VsmmVLN9r0L5!AhULuOC$o^EVrc0dF9g=nyaUO?>#!;+qqU*v^S6jZb;;s z4Rnoqfp)-G*u^dDoWYlczqtg_o^@*?LExrJY!S|Xvm5@13&i^LO|-3mJBhJK3Sa;2 zpO9bQ@n7+*IuW$tK4x-=b`qTYo;a@|U6o=oHj~9uDXWI!e5_jR~oV zgLb(y=IK&|G15@uABCn>@u*5m?qGZ|U5(~hYaV`GoZwM&_P9sZs3l8k0(hODi)V0- z9Ox+Orrr0x5)~ug388G5v@k~xu#8yEdw`jS&9gAD;*}LdGg&8Me7t|o0o9hW`L_fc zYDr03fHng6BPzlT;>A6>57@htZc0D#o*c0 zVMem2IdN{oAx{zZUR(wI@?%oR)Ta@6Um{CW-$b7%NeLN}ayeN!NNJglokj<)U=8vv zq>}%dP<5&8oC{C=gsWLZb|pM)m<~>3;?HMO!`!QazcmBXRWOekR9*5M`6H!$DE8mL zTKfj@dk?{&0E!-~hEy(Uuj*MygVrHt^kmYwX?;oq9+WG!^%lNFH<+_7|MEj<=xnKD zH%@JIE*3u>A-pK1FbXa!2PVG3) zAD^gcU?@AG%9;na%o1;c+-M!k@QK|(ZdL*0ZmnN!l%GGl&5dmD6*KO)z9n=_Nc}gH z@x?ybyDNZL3N|3ww%J__aNJK!B8Cb+W=aU}DoWaa0JZ9u0Q^^6K&?9IXa6wozd>`J zgGK@1-?}goK!~F|rwcb^mM=-J8Zq^B~Gz+%?n(zP2t5_<9uz}pK zu)0)-aq@KA*aeKW0JuCkDT!ID{g3r@9u&q?zJ}h)=CdSy@<-tAU|NwAR4%oMN7DXH z`&+_+ob5&i8ap1fm9ac6->g5J>i!ZOs~r!BU+Ljs>u)$8yeTzKT~>fDB)&HBQ(c7i zBiWKAXkVOl)S8QY`sY7@IK`gdi=o~xgv*78p3!5Ne~bL9XooYntzwh8t~W1`mq|Mr zyx&MjzJil1AH9Z_nu!u0pJWYg0CPFk*bkHWdK*E7u(ZZBlj?HC3&4>}4Hjnxw7bMo ze3+?3xPZS%$H&<5*9q3~CG<=GoeJ;9umRSyV>%e0P8?*BD>*tLoy*r==Bgg0@nZpn zyKCIuRdy^{wxFFmOQ^ghmrn4H7kRaZk z_F6vg=mH;LzFc2pHW)RBOsIs-^?Q_DrmbCG~;tT1#9ur{#HwEfUDe{h0rfcf&mRb7gvVDPQ2d*#z z-0cc}X4(gM^iJlbej!QS%5XzW6Vk>)Zh!3_@0C$)={k6onH7+2jB@^`iiaY2Jo+Eu z!lB!=`E0EmY8e%ewh}umHWVfdcAcGm8c+#Nu*0)zujZCQ=IVt!?mb3d!IEcX3u!j^ z6-=7JFK7iZ?^iP__99>~moOh6pKw<}jq-!qCjFH?SW_}JHvYGUJhDplcv0iJY-^r`Y2VkXtSEm3xc%(ZugE1LZVF_(Z32WqS zMO-qjs7hE;F%C9%g*Ld4I)FC3Zd=q=ynt?icqKN(U5cZufH%M3KlbloKQeN2#_mra zd1QhZ9j(+6YG1m*Kv~2jrr}8)02ZQSZy`Pk$2>NXmYu}S!sX;GG4RRRj%o^_?eg%X zl%9j*s}K?XR$Tmc5_6=ibXI!Wm+T~dVId*({L{R=f|r-T#l-@fK%F6o{!i(pFl=6m ziL9nt`~D-aiM%|Z@UY|j(H|zhxHuh-gTHz<48)da93HLbC(`%pJl0n`XmxI_=NW)A zOwelJW;&iaB9r~sme*ei#SGS)$~NoPM@66JLsXY&0=s*FJ50d!=@9cQogc7`#k5I8 zH9HNR`n2Bed5~m%b$ase1%C26K{i$`vBtM`W=L^H%yyS05QHK=k?XR~^^&Cwq_84F zy^_)HKkww?|Kgxyc9PPOu`gkBu-NMxSsK?1Sh$_7z+AIlGzg5xDo?ng!)33dVNYxBMPMuQ6~Y6#+NIgmh*X zEt#{v<4cblVmvO{^kETK9WFJC-1zu6L2Hqf_P}c;D@RLL*JdW~?vI*KG8`vti!(&x9JHukDHg2g9p47DwW(c zTp~=8A1>O`<1!@tHq)MC+H8E3T*hxh+T{`|RXOY2J!p24!TH=feSP^r=LYE4!-d4F zKrOf>9cUUd1RrVZlo1lvP!*p%(1T)Wq4uK$2`K+)w2;Ot+qLLJnzw* zcfIarMWX;aH=9XGVCU9uHa`I@;x-;Op={b;Rx~_>A0J*_l>Q@xoOnLp+Mt}YdA^;X zYOoCR|MnrPI;v;P`BwH{Xj-L8pY&chB)kp;cv#kfGI+kR5Ul*NAGniQ{0=7(F)?POT&$^ALfCE0w8S4EVk5OG2nIZ zt9a=Yw-eRSV99*g+gQY`|4q8&b9h1rB2DfR@;cj5X2+(aIo_X&0MNmDZE^%)07f#{ zV9@5c31q52mk;v|NCa+XyIH;pwV&4kF)k6`1xyWOl_ZXBV}gfl%k8y=hS=>j&ODeYMF`{sw*O zSGL8LN{#+Dv>o(V{?hW~My$O%Q0c;6xao6B`>>$=cqyFX1#5V3gu?IupAdO4G_uqe z`;KniT(ef%=8?LxG0_&c6o#2f8dL)U=HMYq=}^D29p=qEwPiMpEQy(d8?!nYkP7>Z zuCjuis`v{1$ghDvv*uHWtdFPz?F4^a%X%%@<9nU9)E}zM5Jl|sWLnjB=9bKrkv@gbT$UHbmkUxVUiL$frU;@<6n?@KYFXJ^|1i{M5kk!f=MR3g!lt;3 z+4%hdY1_*b0Ev8&!|_3b(SVt*s>ADidYrgQ6^oi(?1pJ+$>Al03X%-k&i!_fb-jJP z;@}>2REH@-JS;aB(gdBQ#>G%`C8o<;)RPEe3g4D7jb;PPM0yV}G0imOqW!Vio5=-e z;wr=F`cUrX6ld=v&4rY*l8<71uZ?_40UPU_yBvi43J0 z^qa$EYIatn$}wxELNXIOch6xX0OOqo zAl@~~(=p8@B@0q6%~0n^YveA_6}{mhi+Oe0m-GZk1FTGY7AZbjj_zI|3b@8Og&%&6 zm~saZ+@_4f5IFgoQao0QwvI#UQX81thIcs^8MW)k0_qDjWy7iMb{yn68$}(LNHc>n zdeKVQe=-{L z0Oecygj_D;Cko-Et(Wcx!}%3@6DRb3Nni(qvt(jI1V1&7jEuzLu-LLz=A8}XupNbb z-b|NVQrVdv9(0-L{pek{a1)Ic;s0q5t<2~>sytq9f(Tzb)(@Lb`cM>U2`xU$HW6LN z)2M}|F71~46AvX$kutd@t0=l9vb(*K344x>D1tIENKPUXzm5JT_h~Uou@rxmgx@HA z`WFx1sVT4q#Rgce)qllPd%onc}eQ6Dj zgA#rVlH-*J39r-5OjED4E>GhfQCw? z3|s8BDstN1&dJ3OF)>QWgs>QtM?WT2>0ijF{w|M#=>Y0g%C^8yBWj44~-UGm-?s*5NLUFls>dN$sd0%=$68Y0o`Yur*mo&{7(9Y zCel!nz0}Jc*Ni|ZdVu9w$Qw3NNV>Q+T{ykC7!V^zG2DwqXXr!6ow5v+<`Ae>ki z_oZZCLt}qF2CEXnU}24edWM#Pn@CD{$ry#^iZLqU#PuhlRt1h6xLPBn6Bn07L`=rP zL92#2@GcJVcz;Kc&A>8Dmr$IYDmRcBaC%c6R9*Fm<$f zSUEWIn^Q>DxR`XM!m%qgm1h<-XQrx+ZjW}GmuF`e_SDs}=H?Q%>FPEb6S%pzlw?GF z8MvwG?R?jM`F!7t2>n|m-+sT=c8>41f6*2k-Lju0y?y?L&-13>GGyKU+3NjfQ21?I z_;owR(B;2LY%^a{-s`{@{$9QVC^-N_-U^4|%Bc&=<94<+0nlxIC{>k+BH}P#SwR1B z*5b9Gw56IanG46h!tFR@B^H!(RRjEq-M&)B&yyW^ju%tOiAYEB1wHGszgA9?eEUoh zleA-zAt)}bR={+Inams#X4kgTxbTqj7`|8MfFoz0+=4HyReBk|H%Q%AxMzl=mdHG= z5E)`OX%L4dAUuF=9WEOpJt4!a0|w8k8T_63*Wm3n8HB6{1+{R;5vg5gGO9g$%3nht z<%(JM#-uX@Bf#=|p~l%t*2YH1$LD#ep`fxK2{CkmTyF@APNkFpTp@+E{4L43NQ3Fb zT+cR5Q;%Tl@=lbMtG*CB4 z2bOP7fWYAv0L8TfDQZ>6&B}k=lB?@U&zEk2{|La9nKndEMw3~30>W zzP~m3yxzax+PuGYRTsiJzu$MgA{M?M3;*{8!xiGS zo_K9GSyy%|e9i8&u1CJ$7)bW-UV|BEmEK%6nRy#`ozF98Ns0>M<9W5n>pU}Jk zJe23nqg_A;q1zGS2W<1{Up7YyIR?A|x@Wc2q zG};h!ba>3giXtfWna$OY_GH*%ZhsL>ufc*WUJy&p8!${ZE~u4>pg~g}RvAT;?Kmrl zp2#nRZlWPCtsv_pu^`>TzCuilc^2iYLxl6fa*S-q@0HU1?M)Ma*T%jePe)fhn7LdW zS>lAR$zA*Sr)Gk+D%>MX**GI30InklEvx!~2!-QyYZQU*Dxam*qTt6tc(*g$tHPH6 zwmL@w?df`i!gcjuXoQUU>OMZ}i(l(V0Du_!P-hvCT>209D}GbT>3Xs_w)9!oaxfJF zePw6v_wXgAD zB-*(mas{Ptc7w_1FXP)S?ZbD7l4{K-42E7*)f-s(xiJjzJrg2RBsZ3Ox?&et*F)_w z%kmOGGF94osOeIc?ga|uZRZ(n=TYSMQsk}NB$9c2v(F3?bgfE>iIdc8mqMec7{N8_ z^BgH)OC7dJAf;hoP(17z@=9bLo6MoO2TRr9^`79!O~ugs>!WklSA{vJEJOc!v$IN- z(oS|f?7@GmXb2m;m@#KgzJ63LCEluLYO2Z2P$b3KB4)=AlbwkKbxW2Jsn)@0%4EVi z1+6q%_G1%_O4$G}{^QTO3w76k@sxQZUShJOm-J4i?^NdfiYE{$?(a61u{2(xl-PWN z9}Fd_p&|_(sQ_6YFzoDJ3R>GJuS>hlU3n&|mY9i95v#)}+s-Qb`T6~)UVY2@--IU9 zX@D@I<%5GqPUq`3y-tKxvJF6heSDNg-i1=6=`INUR5k$K@3w~D&SRTx;%~@1NNL0a zCQ$ZO2EdTm41h5LILY8#MbWTsdHmv{dnZQ`D(Uz8KPEFPP}cT(`D&u%=Zm;}FuVtQ zf85CpwFUpIwt?HE-&*vQg1_ljj{dnotTah1J=DZpsvb+>0IQh?BQpe#Zp0H|L)jm0 zh%YCh4K?duhSqceDQVXwEj42MB*r3f%P~a58clF9?7}yu(8jl75*gtL3dpCKUywIc z2p{-0+e%cF@>8Sv?};;BuU?WZ5)G?5>#rMa6=*RH}{9|OwHBd8xPHRaFY1g-R zK2ZM4Ucg4L;&CxrrRYB17<1VaANzE=ZyVN^KWmF_OojV z0x`S(hGm!m3Psb6&HL4_tJ( z)mAHt&`2AIV3!)Q5g}J3rHJ4McLpU=sD5WNI~`?VgRi^ZV1iiS^><*RLMLsGA*xB; zXkbB%U;R@ty;dm%pokQ-l$JLHG8jf{?;L~)n#GD6iiyGV)teW=@u?RB8WscI1j|58 zrm~7|0Ja1X=R}YUm54Qf@B_-Aow_A-6-rd_D42{20Q;U?UA4&K6l3AURNaJyA<5a$ z5C3SDvYs80b5=@Jm1bTLzlA>xD8tjv#V^ZUN=6S zBPN}s_6(divA|U5>M+%?B#ugYIXw}S`A6NIvoLT8pm3K#40GEjSNjJhiXpw zSF|u!RZR-E$H5l)+44vt1+)?ZoXUSDYoG=& zPK-;l6seSsCbNuBDl*X1S60z{nw?RZThR^MAIgFJoTUez_pXM9Nn#>%StWfx@-Ooq zb#hvj#U+GNVA!B%j*^k97nhv8xKDrD@ZY9ZBmk&$4<5xUUoD54f5i{Trwdx{TmTX5 z>7I^_p%X-a3=p*v^Er%LnkwMi)5(qngIW%7Nz&+Mn<;$?01)2{L zcpOKKWG*j-J>!oWS)=Tg!cN5Bo4P*Bhnu%Dl~txrsTiWm71^0?nrNC5=~pqRiEB~u`_Qdy-V z>8?_4IXe-i2A#X`qFzev8LX;-3%?C{y1SdTvf>km0rF*L8J%`o zCjgUR8BUh=uiVJ7l{8=4{}~@2_bj5CZ}l$aVPT=KC8aw^vc*oZuL5acaRK)83BgCb6O~8e6P{JCs(!Z+yG~ zsn{Im`=v5H0ODC+n_HM(TUwo+UPe9yB3G@y^MkeCy?_2}@Ppi++#9V|)#@OX7`^dN zvoM8)CbK&o0zUm=0Q_%h)+uGPs-)yw<9?R+766v>ekvVY^WIK$S##Y5zIDGV9R%Xm zV}BR@bzm$Do4k!)TYsK@eimNuxZg(2a@(4I^>9I~Tza1N061{B{b#6M0ISy*xca~8 zbrGgnZesb*W(9anqlsUxMiqshfRGfi{=<5Uu#XQ|uu4pghyl(*!|fY(4aDd1{{6M< zO&FNouz{+=tNY9PJ8qQ9p3mcP*V`>i$%O~3VnCkMahO^mG`&a^@ruja4I2ngIdf2& zFCFhgobUs%SR;F7S@#J>0tydecD2lcrQa$U_9w}qJPMxfUg-RcG!|N(xr+4uTgY9W zlmg8Mj9dP<@j{2=~Q$9=Cdq{XW@7I`(VJn3X1Q1vp)~E>AIVq z;1Pa45CW}vKDOMixjvq17`UE=N;X>Kx!zq82{c;b>CUgu|DBziYp*SWG`D|IlrdG^ zDn-zN(PkU*mC|j-HkD5pvP;VG0C|-%s@oJMg2zw9peU@6)Te(O zxHga<@eI{QYd{;3VMD5Oa!3t?vr~aNY=>jtkhtmz_A|^k*SN``PwnK~u&oY52H1~U z_t)vW=fVOZxT8^Fp>fON_t{O3>zc@Y4)J96YFQ{*ylcLkiC{PKQX@QCe)ZJU0F3sM z_$lbgN|e2vXq)ib+}pO7w0~!rkDTiHrEc zW0OA8sxKYG^m`WtQiKJUqUBQUb*m*dyQT4vT@@9Y!V5Aug;OSlWFnHZ3t9~jr#_;n z+5{X;Y8wAoUWP?OYR0B>@F)TLZsRi3LwR2{evUu}&SztFllqj~o3@Zh($ZL34E%U< z>$>zY>PU4=DQZUbJdFjaacUvA3ihK<{h`>65?BBph7M$_iKFXOPaI3R#PqPq*6z|?I}JcL3GKe+#+fUU_dNB88NJ; zhSrO%__Pm9>wJMM`)hs{{Al^5|7UT)mxk`}D~+a1lick?aQK@Pa%q7BftVt1(s=S1{L7oNKB+BtLkSdmO-oURF;EOlV|fFiOm{6eY|{xQQ#v*jr5(s zU#S5<=5TtDUN;y}y#hpGI)<<~4Ms(JwHJxd^Wwmk7U+r;lEOr+;4 z#{jMz3euHcOzjZ5wN65#v77wjOvXPGYzCw4AA3|2vLl)Vgt*vejX>7g$C81Y&C5cL z5Ko^kg1hCsyf+cuT`-ExYzhY$Tlb1^cX(H$U}SNNnMTKTm1A^NQosqg0xUrpI)#i; zq0wwMQS^(w>msNU98S^`CHT} zpYG0MO-WRSOxQYKbx!<+64Y-Dz@@38TM^M6sX{T(%ld(L5-dT2uf9O7$uPe)kG@6Qw zKVHquWV`^$aM_VLgN3;aJ)nS{#|EnjK98xktpQa{;PU^WqY2>0_2U9OH2)@p_3P>9 zs*Z;--%00l_x(sk;g!eXV1aCRK#XW`?(=>+4)j3(I*GU@W`(ECv{GQzPa=}t=N+sHNwEnjHj;?gCjl|=C*i#c9OL_E2C z<=i>w_FB&pbWgN`R|c*8(&P6yTIdGWa~BhvRbK_(Zr^~S?)|1f6^YQp?mn=~oNlu@ z0jj)Z9VEa_-l|5Hhy6YwOV|CtXjR9>*tMe2e+W4jOJd!oqNZX(#pbe3LnoN0of(zs z__)~*ffDe)FqFjo;4s*AoGMW5HsKR>|~+G*&xXoUJat->@>nAzGPMLFM5a`MQ49K*i!W;dAzbMIYH*5BbV zv^LksWTxJFC1#mY8Pf=J(AL6;=S+Nv-oNaGq^*$ZMLl&2*g|#xS?jq?;ne~}WW*W5 zo~f?QuH^t9TO_zhZI=QDdTPHU)4HQC%r{8fDrKA&de-&^g=r#zsW-U_#Z>&<$S!y*yS%1E>oBuqKk>xpXY>(l2!uhADz{L8~3?A9A3F2Ge>LB?84}N;BT1Q1FKJXkh#WW%g+6{0Ex~O3?N-4jp3^?nB5i2?2#Im17z${5hLLo|&{A#f= zilp8T>S20REMN+%pP9H)H~AZM5Q?L+9H*eD22F%?qz5V7#KAA&EtxDrj_@4fmNHQ} z_Sn?xQMv#lS77)}8`E|PSjFCS+!zf6Iuy)}55q(eg!XZ=z&NA;~%o$^0ZCkVKF%y&r`+CF>Alz=(K)^ z-R}+8etMpSN4nwCkuT^Q^mEyM5{m_fM3mM?2%KOKX0nfMA<6fak5X>>S=qS^=##SI zLl^_nLrkUocHn%wV2ep*aSOe$P`szOMtVHbuGt#R4mmNrp8l) z&0DBK-y;`MCLEj6O_@70oo&@q}}?on|e#g2K`LU40JHe^LE%&@wO}r z!ifLoJ&~w$v`3mhtWeryYnffNL8RL693Tg|}{y7C20BKGo z{^dGiZJ>DndKy3v$IX^%WXU;I>+SWo)rmW=QFy%2nFr|aANAD~UUIZtftS2)iK2cp4&^>)NgN8Yv(2e=* zxxaGG;jz-8O0&Xq`nJen76={0ck*;`v1pik|2&4kPPqT#v-muDK_6wcPUv<1oY9e7 zH_T@Szst$xFp(xBMZTYr4~;P*%4bH#PR_R((GC9tNr87C2@h$2kEyCbc=a7Ge;@Sw z@@i>6<9YYY2)IN!f*fV73YA&Ba1PMszU#c|`8q6LsKBiBI(ID-2 zq8Ar-t-tuaYtMKG2wiLPM1zOQhsMRnXYLxwoqvs0RqeN}bkb)VtO|F#cBfli4E5dB zD7i<8Tv&wyC{$_sNUKbJOt?IZQ>&wj^?df$r)dEQ_-xE{D1DtS0Mz{_Jl$}+oYlltS@!ePdr+X6qgE;}~uDZche+eWK zAvV`PQ)C@as`422uqSrQL{0Cfb2?|u&y^w+!MX7|)@`@KZ+F?f63B|_u{Gpo{;MYP z!%|xD=`GwYy^wK2oC>YR@4In_*QVbDw5vTg|E0#~GEQGua4BR8jVGVnQZ=incuEiJ zBUy0ljc2tPzsbGmbpAYC!oE&o(v43~)Klm6dGw>>U@sa^<+ge3Nkuf%8LQtTDjJp0 z4wtcFEuoQ@l}+b!oB1a_{3~>7MJ~uSpLwE0W0NW_;effS%3`S|-)(<_TI-|j@m!JB zved#1eM~X`Du`aJAPr+NOh5#+;RHkT?~?ZLo*G7`&>sj$NyM@gt9o{tYz~|_J`Npp zbgWTs5P2@(G2DK5U0f_L?@zsPwQ)pcIwqGbNC8Ds0le9pZXBpB72G69|D92#4FMA{ z=M3l6h*8;Uv7PP-qYrK+ZaOZiP%E+%aB4>)kmULlDJTpxFyzx7p4>|k`(R`Hl?5oG zR|40ty7Ju++JEj&T+ZRL<}nH@6l*+Pm}}{9c)pv+6lgkMYN@a|SFj{ZCm{andG71w!Oy>BeqFKclPj9IpOH`gqgu6s8?OnPy`Hq=(t^|BKiteEY( z*TJJNba{gbxXI>XB~gUmPvS{Bu7U1{V6Zs}AfkP?$#UBtlg;+JKtUig@Vr^WCFzO| zV##tPr~r6!+oJ|q9a4e^z2{ZBM(X{s^RKcWjh>^s-esU60vSg^C9V6)!N8@7u#efK zh&{2fhDc+cQCFAjzHpcQ<%&x(OISFGk6^T3*ULjkH9cG7(;h}_k&W`{7GIGvZitZA zZJ{j#cOAd1RJa!^-N{oSVz$rC+T-Nc9Q^VfBvLX zl_5IpQPpLC1$;uw;=h_+uIh45Yo3(_kbp;}`*3PPj}NjmSrU8Q9(U_?Hutf?XIy)2de~ zIB8vik7t<~Ora8i!YZQ;`9!)yaU%wcUqbgMgq@d@-`5=n&WmcPt>kjm4m&|;`sro7 zFt@~W)k%C;km@1f{RV`KeDf_W*K^$BRt)ZzdW2@bE!PDg+J@jbUDFiAFS)`HEWxT`%b z9;?Dwz8OJPy|FBh30|@|C`eJc%!s^iA?)>IFV_)Xrg~yhEOV0tv&V)gOy!5G1u8#T zCeq(o&~6`6_~DZI=amlQ|P?VlO1nD5PSvvWcUT{m>|4>1RImQh9XUB2uX9$*M7pR9b?vzc=F- zMOgX*1x&GM9(*hO;TBYc98dvy9o-dzqs)#IwTW?fPV-06NOH$xqg|}ozVpxSv{;JB zYX2T+0mWl)d_-|tvIQyyQKVhs-$OLS&aS93(vc0c4JBXYU4C6Ek2cxwRqu2NFU&ie z=&^0mGejD8ChixY=J&JUhkIMFOFd=5VQaz3bAG|UW^TG?UOLhv7Ro^7$M~Mex7UJi znHKT2=X=tnE@BwmSW=>;tu!XV!gS+rqACQs=?PvwX$90M6-tF&zsq6*gka)kt`y_{ zsVzCgWmU-{6m1p6KnOL#q;x-z6ytlct>Y48-Y5eRN?W@zW5g;Z|JZKia!LNfi$hAo z>!6-1Q8k34&>`@ox9#HwlK(6k}5{F6}%*1mziDpA8Y)=?4#Om= zp>eN>%fw1oXG8q~B^cs`t-w9Bp@` zR8?o^kD5qJD^8R`7>yNMJ+;UxOJl!WE-YIk4l1#1@+z5}o*JD|21)g|dz0Ynvwi3p zoM~(vsH|MdG@erHGE?lItAGxgqLF2W3Wrz){0U1>t8Vh1XZBN<*|%B%FD`~!-8NdG zU0&t;J3Ei?dkt+I>>7>rS9+?5uwq7m`(Qysh~DIe=c2|X`={+&n~heE2di!7&L^}c zsGyJxsK$q_W;mt!{YtIfk(2h1X19 z^FdBZNM|oBDv2<6%Gf676#C!2aq&qCzkz7@bY3>@*7F<@5w=)#cc&By>>}l8WJG-I zFPxSq3)9`*(-L|K%D6UlTMCL1k@&d8OEyCrymfpsRYdrLhN6yr%^_36;W*_CbZcr_ zbe;$r#4hUAs-&>$S;Fn^-caIwgV-AwpTLBR^a$gzG!r2n8XD<(6$xTPnxz;jsl!p; zsU{|V_069ab#hVCWfHe2#QDv_>mt9TW#&~RW94F}D=EWz^tZ8ARiaD|3|w6mA_b|l zVQZ`E1}Iz|A05z#N0P>mpE3D8#lJRm47Rr*q5atv@!Z$(rJOH%?t{kKA0UvRrOY_-r3o z;UKpp{CHfzbUE+yaw=@o@!Hr;5qx_x&%?+)7s6LQe=1k)p@QidkD*#zG@;Asv0LPX zsKKIF?Y=k`=)hi7teBeGX*^yV$bdVkCFt_Bf{)L^K2szoBXvbt{4~R^f{~l>xRQdS zm@PZ~cb`d*)!{7SS6wl)ex0NI#M2`K&V(L&vVU`Nk>V(;4iYtHpjoZJSYJhiHX+kx zlv^VgAap^3+OSpp3~hYg4VK(JIFb?E7AHe$e_suyyS z(ogAHhRe-f0&ckMGY|`lGAkR&cVh+Y5X;#m?Zt%9WChXqOmmgUoz%0?m#6;I+RXd?#YV|J~ZCbv<|ixmQ%&^zSO}~E{z?& ziVyc!bwLqz5oHWZP`V#j#6%o(0Njq%q<^YlyO)?O`=^xY1Vbu8M)%#^qMxZI01?Ji zy51@FcPiKrAn0Z7FzLW)Uk-{=^|;?A9YL;^(neaBu3DGoDu|eftj16OtA?EFEZ;ky zu65?uIe6?xWiGp%uhqDmS5|hk-JLIceP2JT6cRY^y8rX$<#Fe78szBgY&kZ{u%r^F z5!1!ZV6j>xZ}Q-@vr|4XvXqdl0agX;>0EET1}hNxT+OOZicDmDwR>6EF3$3JDvTe@ zcHOxMK5xIg8s4tz09n9vUX0ZMXu8Ar`}HS)pu7g4n4{OdI5vn~FHefIfdfY%{Cy*1 zVtnW!tjg-V*~LBYdOV_H*L~V5bI5+zOM)|ge4WpJAC85*F?=g;RfQ1l!dkXh!aT9pN zTmtsw39l$(rOoA0T!07@++))T5CFIDr=jljU$*{MO{k1lv1APqr|gg;AqNy#b#_ra>xXmAREk<4#a&E-Hlg8nZS8(fgL2 zkR{$tK~$w9hOtLIg>hL(35}h}q!0&|G_G!H3zL$`H&8}8C@dg(5>UG;iAd8WM=s5_ zKB7u|e$Ht6>B}>GDo@Sxt!eU9#y!cH(c~|BCWg8}4;C(WqL2?tA#WmVe21zOtLj z6XjEy?=nDQzA1sW&iFty_qaQ-Imcp}1S%*^*X^xvrTYV8WIBt?ptO8u+fDL@gssH% zn`}yYBcGI&5Bd?QmeHu{PoZ}_Rmc^kqrZAgS+uV(#d=65Rwp_SRuZLw{G+qy*H04( z*C*7nuaZdB^ak)2Yv>%trS+-bAkf*%mNRWaJA@&605jQ~Bjo~mtHyB|E>0T><@2GED`u)Z zfuJ5rSfXkEuGgX>Ojz!ywWFq!`j2*L!XI;keC67~@@6xGi>L1X+!DoMzb6jtbylni zp~LWQz6$2)qp*Ch!_Rp;_?0PAyCB+vENQln$DU|3`0c=;7LGJIMlaX@q#}p)h*5&8 zjl_I`DfTEmvYnua8-E5?Q8-(J%4Fe~mvBv_oq*$&a~xZ&(651%vscm+&3^zYh}K0ZPdw+km6+a>zN zzO_jo?ncL{QLi9RIMI!wpqdQR2UlCUSs$&=V`!3|2-)bCeUO<%|VX| zR-h5_BI;QEe_zSh!gI2>rOZ)bA1+~>Nm<*=ZKwrf0*?W4GazY#gfDCYjJpZ zaCx}!T!v|7Q3S^8gm9qK@BDVz4m>gX@yHZbb&r7;@Z}#}9z(G!IRYqlO{)Ejvh>$1 z9;lMuFJ}hts#MWd6Cs9!)jxiuuVaw!O)U@S+QM3&z>b>>YxCfi_f_GXDM>k+3OX_Z zvGe_Vbp0&Eu@n7dZ{EM;XCFtg7MQ@OgI&wl+u*3V1U&L_Lo*9y_hY=>n;8FI&HR~g zSCnrmq3NKt)J{x9CG`xE{!GK^W@6XK#fOr_q!H|SG(-I(V^$NQkSrFKxOGr2+clV( zS?;kyakG-YRIWzeQwMR??qnD=Qx&Kpho;vV7yLM!ojL`OkK9ydW4>%L z+RrO}&?aW8eA?zBU5%0!F$Nt4eQ^*;N(P-s#KX*K>MLg76FTXf<8VCY&d`o%!DZd_ zJy?7Ecji5Lkxa~cjM=uFI*Xn3+7H(m9KIG7*7RqX({vn`MfqB8NUN*;v2uk2*mc{g zIuET`ZU~v&iwky8=$fWZf`L>JY)Y`KJrkKm#z{sg8T(yQ>!ID3P(?g!#vW}mFR<7+ zp|YANECzRPxQGn7$t1U_AX>3*={zp`HC)d51LK@bP7|Evt1a|ZHf%nwkW+Pod7)Tlr(e8nu$px4b@t^ok4J0+p#lOWF)s1c<-_| zv-Lhw^-Dd!vBy$V!28gm#5dsJRAdocd~Dd&4nz3%-cW3S7uD2XL=PgWPfaCeri2A7 z#O%Ohp-e<_QEWU@xVA2R?l&d^cE}$)!%pMAWQ6x?N$Sifx!T_XrT~9<&3|#zq2u&F z#n5v@iSsD%WhihhU@_+f5uThWr4+wQ$Hpij=jjPl+}gh`fb z`g8~>*AU@zazk)al5+*k&#p6~{xFT}cX_QxrtlG2FlQ#kAIQtPnJKF1by^(Oqrvbh z^*K#@DtG7l8|f=P1FZorM``s!%d5udx$E6SSIaSjcBj$k5m&s440gxIlhB5J<{Tc^ z*XU%v>A z3scMVt&tbl5-^(PB%6)4&mWdS9r5_WQr;)#G`Jr$Axn6!EXeLl%Mp;9fFwp|jLPk= z$7Wgsf3%iTfnnYcj2qOgHs%W}I`1u2a)j(3I}bJJcNZG3t*z;;<&rqmbCjbN_Z4%p zIjl#i;^KPM)ZA97RA!3%ldsKuH^(;AqCO6!k!*Vq~76Qw|2Flr(Xf zH*uxhG=bfl_U6GcRpU3rtV` zbC$pfjtN^0Njyc|kz#R`7nKoA8m**nSO<)(=bJJ^Yds$_Z@9%aftMJ2f(VcL> zc@@B#%9YsxPY*J{%%-$DeC}(MRO`HZ@{u%(6Qf9@I#bn>RTO1~(d*f9)LRKC@E{WS z7gwy@k=5Y-^| zH52d0dJPe@3k*KQgUC=w$pt^#KB9uRUyB|aYk@iYrn9S-U zgF^G+bn5%nzUah?#L$=f;iQEV0Am^Fthz<9v&USBU63M3LdP3S#z$Mu_e$rcS zTPWBFm6a4y93yK~7JCBe4?N(n3RC~a7#@}Jy(O=t?B%WKKz6}usCWbUbeM~OiA@oz zf)HYz7S6_WBojge%GLf81~F-J!zH_44q5Ym3x8d5pH&#_S9C1-5FB()jkMQ?z&i&{ zfMnyFh;P@(?bG)(w{sm%KtItZC0@Q8m<>)-koQR>{FpQz?ulerfx|v-e@E5YB^>u_ zM^;`5czWHAfs^Vxb>=tlz-l3xELgX$TNx(Gv3t>nd=n<+&s;aI*S+y7w1fBuPlj5K z?Q#09LFhDoz#}meI`XuiNJpueFAV6$Tq=k49QGdTnKsl7<-OH#$yt^7rGusEt{%e0 zis0|*-RW^4Q22JbNWpo5uloHQ&*z$<0Tb@>X(CS5a#OE4IfZTaHw6jKX2v>t@yfUu zZRrjL5tiyi4?(p#*bV=gqAx0%?JbJn#uXbKoB|ID z69RIZ1HN2Kf{c%90RFlIHHkUeQ-+7{hGg}z(qquG2#EjjR|OCNJK3T-IaEnhKc}gb z7gPPGtS*}@~#Te_> z%|Ly{2#_7Ki>rc5tCc`SSF{KkFIo9V7IMaFuf@raNjRW#anKSN1z0erF8x1TWcLRR zzK`rGi&7g3u>oV!_!A={pc-Er7IQ_LTu#hZm=4?V#+qmi428f($k-ICDD*>v;QEm2 z7$}76XgawFb#?E%2gEPIzSUL9Fhv(+)H#(w4p9 z7BdAAtsr%-YPmqmPl&AcBZyz$`zG{1~(^!Dn;K7NOfag+&y-;=w}$gOXq9P`9A9wGnD+zoD(^O9#Wl!)z%GncLbGg>vgN z^@m&naNAs88|IHSr@$99TOYpDy!TgngnM`86;(O1&Xf!dd7IQ*oKLV;H*i5ehGDw*s;;#INiAN2_jBR*Sd zCt>d}l>#h?i9LuxDCA-`1#fo2qLlMlz;T~D!d{7O zQ_7o9k}3{@8|Rabb5(6Z^L~pWdqdZCEzG zO@+28CVzp!a8i+xk`lz54=KA4P;H~zhwtJG!00u)veae))Bvqely^3#cRoXK<13l+ z?+@t2L~J7?<1u{@#3TfPHfd4h5S(|iS!xm)1vxW~`Eg5fB@2^&Mw)=>;r4?UqpRSJ z`SP-4C9-aT1ceFjhoS1xAg0ai1}oErXEZyDCgZ+dCKJUdp6SQ0QNx-Hwj+Z|3f%Vk znd78^Sv*Mt3l!xvtY2O%hev!kuUfn{C*^M5$w*xfnt$v%g0A_sKjRq2J59DkT;FCp4L=Q3gsHYWH|@pMj0Q1DRSJOjtdKom%UUa=M0M zsyEPQb(Cd&xwk9MyqwuBK1~xgXfd%L$?&+HmTEhEZ=YA0Tb^tF-5Yg1-o(t613%wo zOVNJ;-wvKsH-jlwp%~lpcZ_BFXrd3t+I8b<)8+N z)+w6USxgMS_YhFD*tDMp>iO7~xY=!`5Mkqj?q%L8NZ7L7bVt`j=M@KgN-rjG6PF<~6WIXJ6+M)3hJGd< z*>V{Ov0*^+9 zNPQB-^-26=6w5cf&Tq6f{Pu8Uz=6M0@N)(J9fq+A{TmyxjO}v&Q}W+cjBzdHK=)i; z^wGMPtA;pXAX`~8;eR{w*W*hHCL;XBF~SrcOw2OYD?W6ewbIYz?zN(so#E$zM#zSnTp-W zR(Pz&cDJ{LD^g#gpgB+1-vIAhimOKt9;*8HO3H4eI&$x1=sfW8b=Am-moZhxQY7Hq zw7$+~?*?DxD)Vd2mU!3YjGTVSqH-Ru>rq=8aD2F5L*_rJb$3=KPWb94B?ht2RUHzB z`{_!9>G6;CRgAOsHdj3)2X_MlcXO~*fb;Zp5a<4k=kn<@(h8Jzf0QXu|S zp)>s>K{GLhL8CBxS#SV>sMdY>sAde~duGrU1E%`!^S#7lLgG&r3YztM%`HXA3uY_p z2U}-c8~L!vaF$3H>w%T68{Fspq7RIi&D9i`LJLM@Wt@S_+j6rs%h@!rZ^2+fb^-VF z7@C|=Je|)H$g_HA1fXmjz4g@i17+o#HX)A=109O^UX1B?_V8tZk|tg#^XeCs@RnNj zoSwKNX8X&Rsr+t`t!csTEKZJu(--xa2v|Bq%y;NnkcCDOmxz=MU#^*U7Z)=$u5xVF z4-8Xtmh@-}hMA1)My}I{n-+?j7WFORFh*-(^}F$Kn5%=2@*3?BW2#HsLd3ITpwEFMFEq}zsG~aB6Hb6`O5vHr|#5LJ_SZw5rtu+)~>$# z9s&a+)`W77i96QT>FnveQtpkfoQz_S)#WRJUC`;+UWwv?(E|##7&@jSo1Q2pQ zFl98d`&vVbgmd*oiKLAO+E!LGN7hQPkPn;^C-GTXCR3eLzkQ7;phnD}qmEOrH zqpnTVNE$d&azHx6WZ`uXd!y!#@8kA@<<%*5K}82dCB5w0q}$KU)uc%YsoP_yK-Gyd z%KY7L)uxdLvFOAc%?wK36lYN($gd01-@MN0g8pAEymZ`V2&Fa1!clg`)^~4!1g0m) zzPey>Q_1D4-vKmP%y~asthrb0=4`Ki`(o{=E@u66is5IV+&wM8~y%oh)~^Y z#z^*`!;9!6V7%<5hu9Erqrc{Lats*a*hl9(;06@r@aZg9Hwv}mCg zD9EJNyh${pKm@OVV`HJ*qUfi}u1c8a=Xt6L>iAqy+?ejUHPIlLJ_G~dbawTkgsoTC zO|p`B5I$~xhchAX6Kh*!CQJ0zhXYw|)FI+eQ*xj|K+GUE;vVG#4OdNN8QQi_i*yY1@WEBZ62?<@ravdBOf?9-x z(P=CR*J{hJjqmFns~DvHkcAa&7phd%{)XE#`=cZ1dQ%iTHs70t(>0yJ_e;19-MMoi z$)6`ze9pU8&%3+ZV6gIvy5aLFT6fjA6l?OB-IJf-Nz@&27;<6mZd;Ac;TgYDV=~!{ z?YxFV%EK=)F~z3U*lE5^*keS-5|CgC`aLg^zC3QMcihEK7s*5eRx&5NN}}VSTh~y9 z^9qGqCh5x)8tG>nuc`ZMf9AqgBN$_-@>9fwwafP*OtYROA_fbxH2?o`zLzImGx`Yca}-lc7j0LB3%1mx^O zgA-8L>B=?*v^Er;aHIyw*wOv*R&Ge^eeJ-a+7*;|+Ad;8AaK4mwIe0G# z)lDCy$g97E?_`Br$5Ao`RNVd!7$BXd}Vefki-_(1g@IIlwAKEGQ=9x&Kms{ zU*M;sgFb;a?v39}mw>LdzelZdh>DF7*Jxq+2#t$o9InZ;3!qjOwQ$`7g|1TE-9vF(QUB%^So@GM9XZ@V)FRB zJZqtnm7JQMeUiiP8o6$BLG2qp!B*YtMrhh}-#NAUnJyDi>WlHb!m*r_4in-SRD-5W zIX72rc}=t1ol#B(sTmZrJ@A_8d1AHH-W0L^#`;0zyOKH@1-AxPXe4U=vj=!aViuhm zuY>8+QoU=Lr2P=f9PMY=!UEI*NE|9D?RD~g;oBki({H!f8+&N5n8@R^KWlvWg{L?w ztE8l&OsgW=GGyB#aPeB`iMR1i!%|5>@rF+yXB-4AUAG8M{1TeDRiCMt>4xrRJ~tq7 zanmK7mTHJsS00h!uPn!oP`%9trsm=b8rCtH7jbo}gDhH5P1d!+GI-+dTZ*MMYQs`#p?_}r0=phEcY_oTp zuh%a?edgx+n6>+2K;~TN-?bV}!1GyF`Rzmoem9UfWEBqhcS1|1|Gb@4GZEl%_>2$W z*4=;H_cX{j9QgXX18{*~`%->=NOoHdc=IaW!)r$+O$>Xo|v%9T-E%cM}Mr)qfV z$TGHhqB=0GT3?WLL0t>*iVvUnd9NQ-L?r(_F{Y{A&w6SFsAeNg2Kqj{6Qe`7lCniG z;NEbcoQaC<4>C^`}FywRp2@(i3k0hsh=(TLw0 z2qLly`l90Rt}hz;Bu#Bx&I14I=UEkE-`$Hk86aSDyA)9tE9mmC;KkPi=*ZaL#a5Bn zE9IOr>#b%UA3@(ozHe}GS+KOMS#3n|l)1+-<2p7--jqxjUSMl4 zll|#}P;w~8jZXyVNqhL+Qnh0x3hlxjG*jQNMT`*84=;@#HeTgfG;P2~lPW9vGh4Vw z{%lMQsZzD~pj;l9%G0zC21${?(G03TD%8$aS}tHr+gc-5$HYa%fFdHYWj8SDFfRcM zaEZ+?8k8p+=m?RrRZ}Wku-Ta(U0E>GEHMe|vC@qC6cJl&4sU8op-N88C8g=#j_%UX zUcfjqYZ&;wQ;cwm$s(3=OO)zOqHJxNnz$!sJ$*$NzxFA`_i5-tr1OP=|~$R|=I91tcnoKjfn-#&)&3+oX&fLa&f_jll$QyopAMKCGOZaJN?+oftehw1{N(@ zYr4}Rxt4Y*!;niKrRd6X2X@<2k1IQBRcbXRcW0cAQR}*8RNfC0gziqfNor^b&D(E^ zAyR;!EG_d}t?Yuy%Ou5iSOv4$i%IH$Ftu)gbyVixH)bpX>VqNl%f2GpkfDs9!xGZheNp-VWlI4eq`Uy8IImC79+u+kb!B;p9qG1Ck1(xbg{ z(u4Wv4gO0X{`&@V$aVM*3jvcOEWk?wV}qH1IsCLq$j09<6e#_&e@sWgingJ z_Zg2$G=jp~!m{Yux5XUb@}L_o%FL9WsoX_t0QU@4>= zRm(s-=vFj3z7ZJT4_`K9edT>BocEc$Cu3_sCVGQE{M#aUAjqltqv5$qQAAW!OtOe{ z#e7{W=e12-oS0!ztj6cb8Nev+{RMnns!*)rqYJo z&CM>NtcN;$G0x$M9dKo7|99U!@nJUJ)wkOwOAN^a+|geG!x;+2t!-`ZE zLck=GRHgTeK&yab?$Ge%>F!|l?o8M}c&BhMB=nk$+YI0^Hl?+T%bh|rei3<)$ublwj({x8K=?-k$1Tqhc0xe|Rte?fn&+GUud|#5rOO9< zfT@uR)qlj|!?1(x%bU=1mQNUI@6wW40u1b( zv0t1%-P1?l@Nn%dENmSkC$+1Ei*rPwYW|dAsHkGz>RrqHs1IUKq*xon|Dg9)PO_AN z5yfJJr8xsjOHA{VV^41{*xMWS_ivp+LQ)d_EyUdX!<>Za_2GKpaK5pr3>wMjddp2= zfCM2CF7ri>=N&#bKdU$39&Zk2qo8P{ocvbVJtn|KDrGqZ&X3z=<2f9bhif`f7L(~b zrW1v2w%nGFi9!+dxyw-&A|_i#^~g|3|K*y zH+D7)h*q)r%^5uHcd?Hb%f15+pX*FYJ(sMVJr!NeLwK^>2}%@>Z4gA}n_J$81kW`$ z%{Mn=xtkO*g#V;p8DO77QFD%FuvWN_@PAPy2ybJV@vExCl`rn2`2#tK9IIrbTA0)1 z=BA+hS>9P-y#6O9N{cnC#qD)YCrM)#%aXNUn@zxfw7A%;=Kg-kPTH(=EL+h1wlVp- zzgSM#C=%aj+=89g0ODAPEnmvOO~KCfwg$D+xe>=nh?LAgn6A}F$*<9{3`<`MKC%Fp z5Nv#W2j6dPS5Z-*Xu5;vffAC>5n2g_GE`U4Z~X)V&}U`})@69u9v!XEJW{`fuPldE z{XA)EDrqnHQ4p#KYxeNaT%2$8Y&_j)BB}SBoIpAg@|rC0e`@zw_nZXka-HWvPZ;j* zr_z6xb}-1iuX~WlTEn#G;qKOafnVjPTjC$*TX1)zUe5`AKo;>ckK=cov{bV{W=WR= zD^0M5dWgf4XvWPkkKKx9Ysqek#$?x3?toWPf@Af*2p>{tlP!o7PL8SHL@oKG%%#i=?A#_rthsE!CtLpQAF~gLo z{qAm;!>csQf3JXH?0*NG3-$w!t`U0(eTAj-8$WIKf=@{ACpZ5+JOOWan@-_m-6=P3 zBNP)taaOhceIF>4-&o#I52^n9J-SEMU7&q39HF>tV}GK?@6d-?6!Cg z-_2TuW!!&J!XiN9JE}t>1Ctdrp{5RBA|^svLIm|;jnoId&rc(W1yH5KX_1NDK;B{g8MlZs;LQj z^x^o4D#G6~gfQzJ#Ix*AQcAo;Eg+pvsN{Uo%6Mm+==K^2q(_2iLUu!%oUyUGP2}WD zyH(U!5A$72UIkH(Glt=R)X?QM{FzjeRd#A+vWPZ-gil*79D6H?h7VY9u13=|u#k^L zk+lx(_agtats^{)OH+=D4kLgYS)a6ST4gq4HlO>#I{2ZZPn@RQhYMlJ0#4Co$3%q= z+hP%~J|So@R*n~~%mbU|=n@*99-coub(wx&ZrZnF+81Fc6*@S*EgJ%3`&J^yq++$R zQ;4i}2^Aa8*Y!FGxro0^FcwowAXmdo&-hMTLglG-FC{rrwmM3zC9}R`d^^!(jljQFoz}wRHd1DL`%e4icea-vE->M1j@zRGptj#pv#}jTrX(4lu4>$ z;`$*q)c=G@WEysw#4F(SBEFQw#3eeNlv9e|X7lT|CSzhTOUhGR{u2hbHKkyM$`9)BN_S2E5br8EWw4)X`NlZmf(ikBF0!Fm@vDkyoOf{EStIx@Y(Lhe1``kztt4U>Gc%f2? z#!kren3##wzEMtYB0m|ZU!_9tTRCZ0KT`wc;*1Z3n3h~N>&?^TJwi`6L_{BLRFp22 z@*I@pqU#6>om4dZzQebS+Qhc#5Fb|L(kHn)q;2dhwB=xDl*OWwk`WW(7HItEFZ)S) zY5NIEHAlus%T*4Pt2oIJ-4xL(6Jtt}m#dPC!?+&>rSo`J%858Eu3IlI=(+;t`nL*9 zheE71%dx8?7TZt$E>!3KaI;={_6Ck?W?^BWlEztH?e6L{l(Oj5`~Cexy-c*2g0nwA z|GVS;mr+v^rM$Vq!3<516xqcZO3-%*jBl!jOu}=BL zl;lcdtARH#?ap@@(g{^$p&eH{%+|d~Db30F@Y42Ck&r)oER)nKqUTtGvV;g<)xN{93@S`Sy&1!GLO%$pq;y_) z(%{7dd;E-q7Mci!>85?vDQ_zXX~hMbW-;|>mw#jaSlCO0Zr+610cSToN z7eg7+x;X%I#@xI-0~oVJ;n7LTQz5VZGnp4=eU{C~&TpUh!`}focPHSx@gG2v7fD}} za5@3Cm2Wbr$DeEe83_4`0u5$|1OeacgXOZxEzG{K7-Dvxwe;F>)dsnp+ZD^PEOu|{ z@2t}~nYo<)XQ(Yh!qzTVV-KJ8Szy1+GX$CaucGObEERLRtg3&RXEj)z6^~Tl!N~39 zSLQMZBjg;)`l2)FaF}(~;}ubfxdoO-N-d`3SFd?cvLYxt+1h)zDi$l)nwSS9E4mD# z%RUYB*sX&wd8MfB?Ss1L62yONluI8(`XiRGy{Uy)=6d?3htgOWuO0nUG8sZbVnyd% zIXnpc@uRZ3y0FgqaXTv*x+EaIH@^cv@PF@83bdxK48nyj zFZ{5Tbhq&gpxI==RSys({5vqD>GC=oS1aVdedwAO(0}G~9{8{fEN)+p0v+PV+bb=z z%j@~H?w4muA{K+!)3m&Rmxr*;fP!?$J7{uMNYi6YpuS2)b<)|Ce1XB}$KZd@FXzB2 z_j~x4fBmVDO=n(@ZPheZ!-u2i#ogn(J*|D=uCY{&%?qp`EtY_XQ*#qApiMr#ET*Z- zULSEFICs0KiR)`cO_KUwCp=-0taKc!E}r?`ogelptu53QHB=S+C~Ym~?Jj2% z5DA2vrNgXOHsOl+fWgrjrH#Q!SN-7&SkjNTrj{Wv+Z}Q6BQ?p5hnB zuM%PhocDrq<~MoY%k$+UG_@NnR!#_Unn0P{oHnR#EU)4&!L;QCeml!xw=a&z0@P}zpQ#m!(YY)o5y&sx zzQtRo2)dhy4pFpZIn)WZlzU_A&*!v83_mbZghuaIyD&b`Q3q5aCSapqf7;Yl=CD?; zAE_*QL#bGKk?F+CtlTnwR6DgfY!6UlMtrj90+`;blg=!q&wNP3(n16`YT&?4z;6VF zl+{BAQQ9|+?r9T zx6p%{CuuYsA*5w~)eF4c91q3IO7Ti8tn6)rgZiv|r-b|hV1apCdv|&Ch=_EHAPVfr z0cAcZ38y6^yjE2BlJFY7qaKZK<-sd4CVi2ufdE_tPwPIm;=<}+5Tu}xl=`KAwf%T>F`^G%hYLw=Q?m6eqlpGyX>(0^r4Q(*kfP@qOfd+X*ND)tT>TyBPcWfs;H^;mXr;(JE{*W;`vQd7-h z{zuW)rO;CTyRVB+2)D34QH}Gm(}VcVwwtn6_JE!8m6XlA#9%Z<%a7q&WCKCwQ+yHt zBBh9KB!;3R*bfW{2^08pMr{a%jZeb!olX11A2CP-z2?Fr>ZY-GOlTx!Bng{7wlJ@h zzmJU|#pEp5oa&(r9x@i-u<{FMuuxp;m+kVoI8f_CLMP@m>0i2-VmBryzpOLum5^3K z<)-plz{4+@$SJyOy^zho_TQ+`pc&5+fYZo3QCbFrfznLxVdPR7YfCjvOY?VRoDANC zHte9p@85%^u_&VTS|D!f_Yavl0+E?OV6TA`j>baK1dG~9{!xq+ACw~+-y<_OV$3v9 zuskpWbu*P3D3#~v-p1nip13gu?-`bZR6&j&!hD;kgBRvb`&H_41w|I6PFDto6iNFj z)U+&J)*9TqK0~Ph*4DR@3a0I=`rs~Wv+7BuQ4LCozqY)7VZj* zAriv!q;;cUc{+&S(oSNhy%2W>+ur@nL3&t$*8l?S8|3AuJd^@n$EX#Eh4ThZW2bHMM?)lKZpb*S zrY;I3q~i#9?U1X8c+IAOkfHOFfoEbJ_}nl)sPFqN;ncq~L!l?M12R&~k42HwI?eA{a41Axc?)3qSSt(1%|ERK}B1r?Ambz3aBRMtU z#90H!SobWFvQxaKL4%35OBy>Ze)snl({&ig%Hbg7w94v2QPwF%Qw!YEIOp!hSvy3w zm!UoXBnDQ}BjRZ4ErZu$|I!O_0^8f#3I!HpMf+A&aWOLkssY)7ygovxq1*>gh7*ex zDIm`a9v`=x((JN3J*xOj1IWkzuUDZB_!Ak)x!VfYW{SX)P9P$SZ17}8a%Oz;wvw_! zHoql<@V3;B%d+2y;T4Fg8!;&=6~mKPAJ1h!=@gsN{NG4Fmphw%=pKey-p1f9;Zo zrEeIUffvBSjfhjN?Y~@-_)|T-tdBM@D8ne@C`dkXggRcSygxFsKMtlU?kE2hJxjkp zKOe&$SonktJm!irhH_RFsUA0m`fMtd7YkIkD=%G$sqH?ityZ`WO7s_KUs8?$e}+uB zSUM3lO+@Ks4<{^;CAqrz<2)Rqb=0xyV?cDawR@S(;yw<)UVWNEC#*uzjdQV3+-@cEl_?gLz9!0pK=Y+Z;(=%B-ki!EUp|sYt+p*-&#L% zZpYF`Z&^Qe|4liXT&Hd3a(BSV%nlZ!-2uncPwIuxbf3w zsz-gf2o{XTmaN*F*0HJdHRYtf(y(`-altSwLGHZCJ(?Y+%U216qCVro?#I;;$@h+a zXFbxp?}Y@$g!5)k>s=0T!x5^6-=)b3 zGI(GRQoFbM(K;1$1N|Bf@P}b*du!wIzP>5OBdmpZh^O zX>N`Z2@GZ3px{BtxY=H~l7xw#O84a$IXRX(*p&&vfPRn!;+MH1<_v!|O|R=3 zV+jU3O3M7@P${YJQqu7nZf>04d$pSwAlhI_FIh#LfnpqN+s;F06Tp!gg4ZG(Nk-Mn z;YQzAv9z5M)smCF_7R-OzlhIY8jgS-MBk3S=MNy-?TQClz8kOP(=sw_P zP~viPi$;BaG#Ck*RM5>V2uW*h0w>wek>V_zuYe`ipbZX-EF85fZArh?d~a^;=_;tP znd?)`uEEfW?SL_<8%b;~Y6M0(rLlKTtfHXSZ0dbuI$VF7WYldf9o&rqjf77?Z~b zQHDto4le;5#4Z6yrd`O3(B4MqZ|p(fpU^#RR59!v{!A@#4vdzg%RCm#x$ci?|M1&* zbZ5LUg;vpH%@Xy<*=b5iMw~)Hye9n3p>_otb8{ib-#X~=L1~S}O9h=@+c&rf9~ZbmSkwqx2m=iEBo+S@l2H=smF$Z2TKK9Hd} z?ITpW$`B=G-%?@Ey_TRRCWcMXYi-<-(1#d997~q|**?*6h0{~or*q!q%7^36q+YYL zX@LDH-mA5pwe?61jL|wVT$5Q(*NX2QvIk}}tY-4J>OqE{{6SV~>NcMw`I#wc4PyAF z0XvbQ+=YAi76XFrWmoDF*hD#WCo-Qb!bf>f6*bER27~i;^=6%B++c8m7E(lg)3b-> zcd8%YYj!Z;;v@@o1Use3vaD*0S>fve8iyu3CTx5Arwk@eq^fLXeSPTh0`LUH>wJ_< zkV7Mm8#Qh32E%UP#h1Q>N{|+TpbJ;&Fzit?bR9Yw742M zd78O-A{sfHnp@7+nz~H&WNc-QbA<#tZqKS6ZCdxIUOjYQ9iO_wfT^1Go274eKwIXC z)b}8$?~cspYM4?*@Nr86cz2Q{6D#!kp;?8*o8Ss4k0=ZJUmuua?(R~$yOD-Xhje#$cb6a`E#2MHEg%hov~+j=x8M1H z!Wh6{zyS}ez2>^E`Fh55|J(N^@{jfDrqBz(iouNdXy2{mz@RUtw4wgmfxmQsGBwxO zkANPa-d{O20_5KSPMO9J67qWmtjW{a#Db76*;eW4S4lno$0Zz+&e!YE`ZS9XAt&7a zn^6q|gz}`1$9IyntxrYhGYEhEPi9cgiG(~)<(&dSbu-Eu@8x`XF}z0S^>R5)eD_1| zIhQ`~{qjCWalBCEIEbGGyswlm-tqfP&PWjpUQGGM3wfMU0OQwUQarEzBbp%TUTC*f` z7pfIg>)}&H);DM|RCqx!zX>~GyaqY{OKN+c4Qn1EBT|xJos_GKn%Pa}I=pNqEDhhG zeq8vlIB-xjOA|U@ZJ6Y836Cy9gt?hjJn`*Bwx<33@rK9LSGaw~iv5rg_neTrK32GU z<*;sLmP4$@BCux`aq)yzA%5kL>W|8WdXqRG$VYu*2>QEFmrJz{j9xKP^2uB{}18@;Y@G`IG4mgpDC$J^ep;^gINH>ZH=cn^RewjJE zq@?r|fM2xzxYcMq*UImKVabGDIT3bSx3pE8#73GzofbO3U%$t17d;afgN=~VS61A8 z>usao%+Yfw-5dS$ka7~s35wmQnybg|Z;d*$=qJo*B7AkDpk$+(mWs$oJFS&bnevyf z+>%%+@~n=i3xpIBW%=ocE_T!aXGow5oD;@G)Y(hjCV*Q__-!UpO<5HG`U{F>kApCd zNwPRLhu@X;dGOx6>PZ_9U61J9HrG#~jdHFGiPq~tM`2B@cEo6CNyK4Zp<42T21^X2 z;-^IEWYjZ)Z?r~`-vk`D1Q7Tta--`%KOp`|g^^&!lNS;!nn03S@=Y!zE%K+KW3vC2 z;`QP}aUz1gNg+db@TG9X6-<);Wi6oVg z98Ad_MgO;D3E)DJuI4~em%|r9sz$XUXWLcUzkH+Uzw3rUlF^ZjXbtrEJX~j%n6_-}^3dOk4oX>JaRp`XYZ2bVN5#Owqh#V@bFxrVldEGfP0wTL zhW75&aBGKzzJ(k#5Vjx`TZPc)8=Zu)Q93idSpUbw8FM)_!k5Kqknb+K*w12!F(eUk zLp=52rx}p4v=nUYrz{SNHM`6%oBgNjL+TIODg55pO<;GoTdBimJr|Xb~&<}Ohb9i8(K)S|N79|znl+XKI3GlZv5=qZvRRpQ;~c8yhqCaxkq z8NH&&6$)nR09T&J#;T;K{=u|uuPN&|f9@!+Om<%C6BVqm^7ORR+VJ^LT^3|6G))C_-MdtAyGDK=-g&^he|w4Y>|suW=qA69(_u$b1>BO(Uq2q zaUV@d&EzsS)U>gp{1H;FXON?+C8J!Fjw%wNf366N6VCjW8D{j^a9gSHoLv8%<&W)0-ill5|?QoGCCu=c2mBp zvVJcDDjTr>yeOm_Nv5VLGNY8w$cmwJHIfbDnvU%eVx}giKMN`-%^EL5 zSV|~s$a~{iS7l@b7A)_*N=lilE9r(XYijelidqA~{i1fJ&aw_4FW)lXiVn!4PZyi) z|9o3*cVlPgSo8mrSDCGI>w4UJJN2^su-tb`WMyNyR_pu-nB_T6PJZX3^DRZem*1*V z-~4y?&Wq#LDWEF)6a~(QKhfk!jFkTUCinujj&XuFqwj}Kg&MjWI$Tuk>}2TtT9Cf- zES0mdh5CLDLY`Be4Ia%nSTOL~NL8g-^WU07`QvpQYM#S8)p!W58e8uMig5&Ax538n zetkltyVYgmpE2>N&;5h{{Xo%Wj=$^8%q1vJnb0tZik$f%)-OZ?;i{55Yb zm882U_+sBTjID=fYl?gB)Ap7739D3Po74Hz&WA~((_)ei->*is2K~(mJ8#cn{`gKKWeE2Wc zJ0EX>t04rAHJuqUC1u$N8qgu;m9{CwL${BXDwpQ!q7)a>X(vwOR5*xRnr9 zhaV&-ieXdw0sVO-mcle1#%j%p)>y8tFl)SYu_TH+Wr{)QYY=UUY)s8lXi0%ZWKel7 z)kC8o+BTNS;4b{|dP-q04JW#)Mxdb_> zdHLzdF`ZY3&mt2_KwQOgrLj1CmOJbq*CmRMj)Bdn!_Jlo zs}qVLc=CW1Otjt*W?S@I*6mga442RkRO=&(6PV}8)NM+u;>^8sNp^ofASIIRQuWi5 z>I&LVlZTI)HQ~=5;6ijM*HYcmR(Fc_!l~JM@b&*H8#g9PV6ocetnBt17joe?P$#eL zI6fp{psV_H6+#;%rP*XzE-`e@Rk*gubEwikq_{6$xkb-g za-jmJGi9*{#?n(1V=+H+^~#B>mL6yDMB%wtWr<`<6nQPK42<&%dM9$u5Hi#F@yFH( zt7(LzsaZngWD%U=zAbs{QGiGa#2ryGD)mbzns5=7fBS(qU^AVLw1^eYHl%^-ZL8+M zGhP=KxlaEy>QTyYol>frLegUJ);Ng#rQ_*W_1ex4-?Un3NtD-NQgmD^(l@#=WJWua zV%xcaJ>vUc#JEIjK4rL@Ll(B^{ZRn40`xF&nV8#s|IaA-PQy{<^W21EDmN55glxsQ zaay=VRw8h)pl0AP9w}qsG*mZ zQ}b|9({xeuP&3g~Q^Q3oPnRySKR;OX;9$y(0uBckT>V!sTD^`3?p=)j)kTb{lUxq& z1}ns#C)53Bk(K@waf3Sh_4Ppan}a3m_5b#w4x^)UwbS%nA1I)TWG@~Igm+<(qORZZ z@X{p~;_9)~puT4e!a=Mb&C@zwhACaGg(7#XIB-9e>@u7rexsveunyORWz!JqM|!6@ zI4kGKbhNC~?o5O5p1@MRt@rz2()<^uZ5s(pxm*ZcE8Z`J0NRSpR0LB7rHcIIu208R z*)wU3GT#K8m!k$O-|zNo$MlU*d|+PAJ!P|)O0P+%MKcr|j5`ph@&7{>%)xvZup!1$ zd+{?pzfR`?iHI-{B9VCo!r?z&f3tnxA>rcj``z8K0O9q3CepT2=>qJKc-X)YNP{s5 z2`ptVLQ0HI4p!SWUS9+rZx015euV6uNq4rrPKg9d#_n-Atgo|B^f{=acYL!{9Ul=? zH438Qna)a2=e7=`FjkTFVT@aJ2Pe0C%3kv6+8i!NxZ}&%rlys{V=J1+RxEu`;mCmBl6?lyf- zS>BO#>jZa$PxXyA5Es^*_KzAQvKZzTnI>34iQI&;z9L3Gzp3JHC9WY_RapsYCLIem zxe-J+hL=FL*`|!rCs|J`(n*_2>Eo9Wv%dq-RP(9p^yhDM>nvvuf`WL;H4IgLyHEXC zdwvvyMI_;5CU;R&QgU!%|K3?Z1B*n=ljXxH6$cj=hp0SoL(E6_{3izwqY*J}Y++-a^1K+woB6`1uc{P~Bc^5jX`;!taitj} zf1ujzP~FDS9RZi#u)VZ{Je;ChEFrODy%<~|2IVWUrQzIdS#e~R!%N6$GW0-n^D>&| z=4P|Yp7BB$o_urCpn|9+H{ftm{Ul{tLEFE z0d)ga!s}%L(Bq}xq%rY2G*pX$3llFa&Fh180Lp%Ab*wXB%RWM*x; zsV**z)E9ryY;_quDzyY$h$?y(bNi~Dg1q8|2N9<>_7`>7{#iDbr9<$@9+{;i3sj8l zI%r#N7YgC-!DvkDH&e9NcDtmuZqB7<|^dAysrYqDl29uvu+=%x_o4uZ6I2bwF{C_rF z%Qze*3pkl5TnDrE@lW~5OnwR)N+(ZGWn#ZhezBR6%`->(Gr95 zq@JJuqNZU?u&!>T3?mXo4ym1khq-fCpfUiC#We}1Q&?eD}0&D z+SX%;L!beZE3F2`}Ty0&&}mzt?@bU-H8Y+)jQ;)N^2XByPij@O#Br-zMIoO zIx9-AV8jEl@}ER05}%V&8W56h02`s_LqFT3kn_>kf_NgKo4a}`67TC-_~9|IJbONf zrWJuXT5jxgejWs}p24gR-8Y1VKy6hX%afUlXZO2Y?Hd2(ZutjU_HqNiCt{=z*^f^PIbG(1{buUpm2g6}=d=FLm$!#^v#w51RVopn zQRVgV-=0y(?-3v?FHZng4iWGT?gOYwzN#L7coI-u3xS4d^Ciur-oGTTcgG8~ue<1> zb-h(%f4hZuF9EIsMo^*0^<%InjI;t7_yHLC9sqtV%zr;V4LYwkTaDudt{27PNxE*=0JrS&?-10h#(LpJfY06LaB+S~-M~Oc zQ@6p<8TpF*S6%;OJbVgh3)^Xn6lRckV=R(q;ZmL(bFcRnp1~n6|N7jPN@)&B8qHT& z9^Mhi-$W~()I^sN;1Ot}8nEDYXrva4d@xtzU8T!LNT4c7T?DzKNMxkRx+2I|$->_2cjEB7iRU^xKVt7EI>yi3ql$L7l!hT$H@bZ;Q^e zusZ6sfIr#kEh?`wwE^m;yk7$*>VQ+!hXsy`s7djWdZkM{r0S@v5mxt&w~F~gHf)1K zQstZEOq{g%k{|S|_222^S(PwNWgdBC(b|1g$2h&>MUo`CfDN8MX^>rXZC=^iwEMl8eW+zyP4pJ>&_vwIwF8$y&gdi8S1W+&bNlF{Mi-qe{3bNCU zxw37kg_w>iKzL6g{4aVADt!VR3s--YcB|9CRVkiHpe0amDEQB9V2OF)6IITg=_n~8 zyG!n>Uzr=~Wr>#s#ffxzy!m6?xrrVTZ)CYsgKuH_u3VY$#DcwHPYJ^lE(7B?i|n2Y zvE5>gYQMO3Ry|5CdR>$QmY@;NPmE+g{JRqBCdxgeEu8-229J?_l&#Vwvw7|cuM!Au zP%?&qU^N9x&)1Y~8MzAwId=**y81}O#IcfAc|aCJ#ZSjG4-w=iCQ(Ttkk%WQ@0`m>w#^XkuR zrL99+FU)~htHsWC*H^zfkL9M=m||Q%tji!@3x>6ztUOoPdv?kczSbI+AWKur6(F+c z#nulp8|6)bI~*=B+iCh4r4Z^Pa^QAs^Siydrgl0xkZ$tmD)h2*hMIu?WP7Q;m*c<@ zZ3B=bN7K!xQ?Ti zpiMd(=2yQy*ifs@P1`SUm0mWQ(uE3q&O1@tOKg3cTd;@(%k}=RFCb+k;G@?qKv?LH z|AxzNaus1wAUJP>kHLzD6=Y0Kv|qX(z58gUz;?&4ohI z2*$P2I7#Ba=&x!0RiZm{Ffjja6SsFfX%vY`uz7(BD0k06w-!Fpa9Yw9++G^V$(7LC znM{QQQiR1KBjNL#ndFE-g~t-Hv3iKccliQf{E*AUq59?73x#mX{p|Da=QSu;urx$R zVll_#cj{lPQTnYLMY{XxE`AJDSUgG;R)QoH%vJ8V>!=4uXU(b&pukRx5Q?;IhH>N2E?ES2-S zf2)~>4U#jX5x;85z>l>Bz2*Nk#>$3Mq0M32^Ar+;7`s-TZ1J*O zZa@tFMqb06{be>LrJwQxby`dKwvR2x-t{>y0aHgtL8cus9WnZu_kW3CjI@ZhZ^?Ok~S$j7%HE2t1Y$$I+^yI1!l!y7t{TMuN;2V+< zTnW>%r&3d#a~T|k`laZP_J*11G`kEZ^5;OyhF+J;YLpC^V3Ru6#JTpN;D5$g;_a*c zqBbp*%jTFf3$4oy!UqS3*VL^s)Qt;&rKMe#Y^KPJT+`z+?{-Wh+}mtv1F@}Y@f!|s zX_F;8f{v-{2LiZYFk?W>499<77a;!K%E|!-S|c$K>k&SQfb^4$E5~Tj_eF?uAw5e? zSqW_cs>Ylt2S=)Ff7w9>0a@cjEHD^y#3IStGF?x^5@jE+G`Y`n&Yv#Tmsb|pKF0kF zes@E>*lljGaFWf}bo@u^>+<(7FsQ?Cw1GY0;O^j-BJonI^-w2pT%YXI#0fr3ff0!R z{AwB}PUw2{{iF!k7Se75fsKKn=Tp(&93DV1FDMB4@6LkzJFlQGI6g;tOr}Ns93BJ0 zv_+!O(t*0|*xGi}Uy_!?+MwRG33|UCE3SE8R%$5z!ikJ<46Fqyjz7>gtsuka2@S02Zs z-}Ct+_)2U~stU-DL0NTl6FZnzWHnbDp<1IfVWFD`nnzgCmzOa`0K633QTkoZr5!hS&F5B{Dfph$%bh39oiDy{n|Xj2DNMsHlkpJR31-93XK9OvRCvwD-k z=kCUuqzm|Px*nIuK(F9K_QLSs!M~*-xIFwIcsncelhAiN5CbIiPd$&{1TSjDYuZ4` zp0^{0JE$p`2Eb5DV?j}CX`Cz`( z@r)xkBk6RC9A7QQq-z?Tn6tED=-O5H?bObU+F@t+lnk9O-$ zZ8c}o<1u{}CqlQIyhYj4M#Kg{``FuTpFQ`-s{hNov9zY?E$i*CBKr!_SfDCe19ytBG%$jWDp5}| zrK^=)YN{WxXnGW1?LbWmQf`^Iiq-FgnnT6U$ttr*8Z!2Ql%cXz{wny+D$-cRuSB}Q z2po2Qxr-YqTpIJh-HBaYi|d6pD3v@J#ECp(UE68IJ>U`X6|;{TU){r`M_oP`xdFKs zq82#ZITw%@rA}O!O0idcXksQIh8{?d$cw8>d&K)VftJszVj`RU<)tMA@f8v^NJ=I` z%aWkQF~i_S1O90$$N%gvbY7%Q%85xOS8)2m*{0W!E)f)NtkL>0=2sh*LNQibvd4jl z)}}j8B@}H7!dKdo-zLUb#0pjZXe`PbEXsy4vd4AW(tO#O}gfMy{8t#RKA%jC1KJfD?l#PAZ)~wWW znP&0|$dR$fTpnk7onAL2oGzkjl%d)h1IV~6HpA)4!BVk=AZ&Ko>lZ1IM8sorlGAiZ zr$$z-pC%LWg+(D0hohjR<#n?0fIAs2iNpv~#N{HR7d>>Ll*`07{ut6fFo=u9+svkh zwKXcO_>E&GWgRIhQZyN^l9!g=XmN46Ac!VC8J!VxMlaYn7U8S#5Rm|VQimg=`_G2TUL*?}Kj>CSbL}@^D`(J#w_nPU2av~s(EG(t0+JEf? z2E6Hehg_*_ya)CWbkLk=7#VfDJTD8E>P7Plysu9c9S{4ck@0zeqS2v2guwWhlm$l* zOCrE|4){D!nJ+*@92Q3;;Br*5u{E?V7?;Iu2-4+6SM$kl?l(u%*21stUbns2x9qw^ z@hj{u;}++z1C{6U*=-hmVG|IDDd>@vAR~5SsVuXw{}4hQ{|APd?_GW`)#zV1gG_q* z8mt-mFAqjHk77hNp>UsO=>wJaXqwwHG$FQ3agZMx1SCb@dpn-`W%rYpu#wXiCP0y2V~Zw6wf-QL#n(wRNuxM6 ze6O)=Tg^a4HmJ|;yQvBjtQ;h773d2Y9PtK9u<_)55Mdq4wNN1R>^?>o9uZ4+I;mf^ zR8++bGfl`k+ITOZZ7k7Pu~0=dJaF*|Mr0C*V3jq;m;=Gx;o|)LM0G!x5;Vzx3@Toa zO5=F(6x0TN_a!NQ)x^)NW|tma3t<9vrb%4^^N}aK_h#VNcrJB4i2O}x;3n->=awrz z(z!x0UcLVw6y3fIa`V7OVQM!bVeaS&yGSGz0fKJ_Qnf_d+_CfW5pJcLM>L*`qg(Tw z71xIEhKnYrJzd`29=M|>{|-T@%FjJj6U8lWYr|E6gd)y~!(%W=aO-1L>BzW3JoRi{ zjm1oT^&nz;wyI)c*3PQl)~W=BMOCe}MFo|<*4}!?eV_m@Q%8rl+4lHgd3AcpZ%=sP zrE2x@=42Uov^dQ)tm$$5r0FkSWBpYCRoo<(u*8p_}8C%ZpMB10Ok9Df><*Fh?2OAN9F+-`)Az z0E+nqh;CjUdRqa!>~b>`@AteP4pxh=(p??~{zHdQ-(HU>Z2a%S1YfRJx&AdHbEPqp zDsC)(Fh~H6%4bCQ;Nz(v5Z=k@ewExCRm_c$yl=(Y=GBFPKQdB|NHwy&zWqbm{rYeT zM!Uz$+XVZrqMf&{N9EfAAwr(bnQrAy~2IrKq zJkQIXxn|FqQIZwY5P4(uTW=N2)}k4y70o1wAk>#xWb6NerOP`x`Y!u2@2gcrNBXOopgti(KcxK=XQxfy1 zEO7F-JA|4tdm&sDuZk#RZFTNcmug)ZmSNh*)8qACjKVTHof3JZ=o!bwh)rQaJm$VT*w4kkP?l2i^9WrIOI z^JGrSm#mchOiDGSk8|Dd;8c|4vm)0gm5sp=y#+Fw9=Rm&NllFrsegnE)3Xd2B6oE}`MU)u<5P)`L5z)ni-kk^ipwv^%gV?b^aWad zAZ%zLEEEh^zN zOIKxd!&cB4`_S^{6t!AvZhr&Rr1k@fAk>FvM&WP{3R9&%mu5cJVweWc*5Y3b% zz!!)PpL{<}5HY3@eMG|hU2l-n1uzSIj;9-9_gex^Zf;JM`w2b*vWtwV^J|twc6p|tJRY&B~$Rz8=!uL zNd_LM{Bk#{KQRBSEH7F-xON?2nlNp_BwYE#m`O@2-j$%sJ(7T+@=MeNLB~i%US722 zE+1`9bY}t+D*7`f&-h2``rX{`{KLRRK<-s|a_1ROlI2&_!io%=2G$Xw`msm?!!ju4#seru{@2gsY$4Hd#G z;-sdeNPlD$)d(pXW%Z=$`L76_QDUy;oek8t0Kh*h$jC9E*XC@VL1v>g5c}O+?M^Z} z_?IOH)!*b<^;ZJs8mW$+#{3`%#?2sT?l4wmC>|bP$ZoTr@3f2Hm;L$=k$-2HtB*g4 z1zz07n3~tz4)p}UaYD7C!&%6pW{H?p`P{br)%xm&%e0rK8**b@T121W1tmAXK21tP z`r`0j`Y<;{E{mR*oRyv5#>iqgWCK(@pZvjbIwWc?m;irZ{u*v}8S%h;E~{V!NSB4x zvWkw*>azBTV}-?7iY&PfM7jc$Cr(VftqI|US;uU;UPY`RUA;6)po$B}LPAPtT>8qk zJDI_6e9>Y09;Z^P$zkpn2%RT1KQizLXxY!>o&Bs!qKJooC{#XHs4?cPni=F-uE>2xDc<=zGMBd6kF=5^;AkzhRTQfBMOW~By9|BC&b_}plsdTJH&dM6FRdiJJAX)|*GqaldIywV_0iflC z=@`WOwzezFYm4*0pe=2yEN%7jN+HAf5{>)w}KePf&t;Ok@-oJ9Zg+}k!uGL%O zql4x4@^b6j8=`DbsD~oxVDD@_*5&I>?0x6(NoVXmK$L+waZSA5_d%q2yrA1tDFsjno|IC=^S_Qyrzr|PUTvXt1N&i`0n_gNLX}>oO!9Tbkv#X#9KrnQO84zPfTRx=6T!vd15n2J-1P8)61v^3+qDjt zZ{y#Yea`nm68*gYcnTU$KtuEM92ob)j{(T?eD%!r$Hz6WF9&qvT}Y%*T!KZT#r2Lk ziLdKP{b{xC!_LsD5|TIF!yHgrgJ`%LyaA~*LmZ4HX$PL zE80hSuiJM&fwWnCrt2Ah=;2|kUV}O7@#Ysy*5u9ycg@AY8WJJbr;+fJ)z?L+TmFY1 zdGCn&${{(g>c;6haHG2=m{dD7pfk3cKcZy&JB);YQLDe9x-2VOlHa4P5TMuL z!MhsNusMh+MQ)xuVZ{izS)_$+TCs9AQkpW7TMu0s2UU*AVi>#Q>CZ-9F}1xV1B}z+ z&Z1D?BQTFdd-V+4${_>g`Bz8q(w8ReiQPxP44flRlet)S%gbmR=~b$u`z#7}_IWFp zDiOHwAm@%7(`Y@)hUp#9Hm=rcIFY?6SFybk! zYsT<)ks2;i7x8Y#uSut2<#w_aQfUY`|tjtGN%zk$Hz%i1H;-*Q>iEFNZBueZk8QE?**-wWPuS8Z6)nouqL5-TG$)V0 zo%%TaSN3X)UORTxluTE`2o*V$Nus!JkFbHUecnc?_5v=J^_#KUeuY{|81smm4)w2P zZm0L`f_q-raV~N%EHUMKQawMp7Dc}+|}$#YH(N z_^Pj>{jyWY{wS1<`OPJnG96y#jl@Dec~L~Nnrg9v6(XydC zQH23)qIiyTNxdvhSJshV+HeV~h_2;Yrwv~T-O#nsgCr%9&-!1U#7k*;Q+tN-=FQKP zYa5In3IgaWsTG2`*oPw3h9s=E3g`rLpbcnNsI>V*2{Vt)s#m_PE5pjhB;hg$*p)Ac zVM9vk;Bn3MkdwzOWzJevexa}0@rCizDtjbaH_~^sZsqX}&=uY$9FXiGXr zu&AZ!yO;Gl%%k46<)F6Z&9H~4ruk*tY}b|MIh(_Z{omS+jRpAyofVa-9G7NJzRPWm z89@c^YPPCI`DySYMmHhxA?3>}pN6|*bo)Z6;CaeSZ)ODyPO1&c7@wq+ph)0FU6q{y z)pm#^;Bw7>aZ0+A*Yl^GhW4_p`x+0g$x};2LJv^i;c z&Gz*I{DFD3$g^aqLPR~DXX~?mu#|E`0YFz!K$VJ|=I~ua4e+~=m2n3T8OtaDZMUHH z^{D6JJa94d4gyV1?2!xu;tdh6UCc;YLf2=(Z^3I&@2-gD(EgmBtQ1RicX8_~$%&tm zLA{G5X5r*7{BzdBeWKUtjfgAQzvqZG&o!>y;bE$8=f+`J@LQWIK#kargxU4eC(;0% zuS$;FuDU92=M<=P4bt?vgew_DD-68N*qoep)D)#<9lSvXv^eA9;*s*+2}2vh!STkm z3rCC7E$$znxkSAN10AGBmzN{PJ~oST5T>EX?`qSc)qfx)N_DKLK!`eGuJSpIqU+_= zQAo9+WlE(z8vdA1udS!~Be61ywER87mmQN2D_OyaIvT0ca^;Pop&+2Hk?@1~z5F_| z89wOk1&uJ&lUbIZ6zU#)v@18*l>9px?|-W9};=LWb$8E5=`CBOOZf z#SbStn`5QPP-jiSERwRavLsnm>#KnV&04jKfEKjg217zK(U1X7VW@Rb(%ZP{xWmW{ zad>O1sLXT-2j`cMCFHCUy-jLIS5gVl6OBr->l%7QS`xKbklim#(3N))Es_0Yqhrcl zzz7bpI~mQ&0wj%?`t~;CV51$bU{qzkD`sP5;Vd?zi3RREs3 zCSpH3(eFGtSxPRjK+>!8a#h#YCtEu`BGa6nr99l3mU`k{Ubb3ZDPLJ09xp4EA=fu# z0FZc|h+Gx4cA_!qJJaH%-CeJ^C{U21sOBrcY7udP??x|fHt`(^45(S`JgzEU7e@om zAQKg`KJTz}E~b&cC^9LeG%utsqIsmI@=ES>i-#1bN?aP9Io59TAop0$+RRfH(cmK< zgqV~dyLo-x%t*g(_`R1eS4|yjbpvLQRS__Bb8ui?Uo*OwK5P^RW16-v#Ep54jhYlZ3YR_FCO6 z*1k8?7ELe`Fg%`_X=2fzp91$Eqg*j-y^ZZoqCaGLJdTe6bN5=&rNO^*NsylZ+sX1W@Bpx)^|52 zzw3>y7fz17-EHk{?QAUVN~)^HKhO{N!jW!=Rx>sAz9&`ssUcP$1lwqd5u&R`*&wU% zGi)NWR)WmZ7f>=9j=8jNC9}{HA0-^f0!q?3;PL{71I01b2O?zmmlSiw->ya}<^9KK z>9m^X*kTv1bRd?nZ}wSYnd0zE)X#kl?&{rp3c4H+frI8cMEaA4uQR&(?OY?FOn%Fp zz+26sX(K836d{Z^D_Jm~y!Tz`;ljxOu4t<{ex!1`f=wru8VDK{L356v@vrHav|gix zhuBg&iCOAi(;7{Sup_4x56-GyLQM=3%aCvOy$#7vWG?5^+7NMF69-+F5_(>KW?ud; zY4?3_1>;#;#%i@_86I+l#w?Ko78P?dMpoPq{0Oiz1rF~PdRB67dVUWT$&8AY;yWk= zba1*Lq82@16u}l%LAg>=4o*WupJ)-9^#w&k^kD>5LK{t-X@uN#b$*K&$@qOxFe!Ow zCTAfr9uXgxjAlfI{-4#VM4(hmV9kK1EXo^QD)MpBk0Qc*k-Ze7SbNZS4f`$JQG_W4 z7BC8=q)v>p{ejX?CCr~~sD8^1r?fC9oxvB}KMh2iPv)FnamQi{+(R8~a(Ko5{4X~6 z8)12$jjQJ7mT{!w5)*8JLb+lQp_=Ab>2KYAG0YwBKG zkmEqLryB{cphmqjCb6N#Z|6ju08!tPoQ5UiKJzTeoVck*hxKD(mz6>BvH=q z0Q5)~{n1|?Qol`vN zzgiit8yRABWUmVuIWwnhF_mtp;p|4urfniGPi0A2etu(7O;uA{L1mS*^~_JAN^du@ z4EIy3KMQkh<{D!sdQ7xS?eA8;>+v1B+f<+I(OTP<+Sr$4r_Zgaug%Nym&c0UB$#8A zFNMa&N|=;L7{-+Gpf;wf*CwX?S6#WtAYP!!7`(VvEVqX>G)^BnKeVe6lCy{mSE+eoApaZUqcQyLEd3lw>8D$R+Y(``Nd@Q9v=&w=TetP7&@B^*SBeMApbTW5| zg~i0fead2Ca{YPaCl(%q^d31bmXO`4A54>;?x*^F!Gm$Ja7d6L7&Nnk=kAwFp%otz%1A*t|iONenV4ZiQU^_G$~s7JBZxh;SPWbj+75B7#S z&sTlzHq>*FEBtvJ!Z%CQ3>TA|zGn?}i3Ltmp8PH646gs<=&XX;Y}6q9w}n!qcyM>uV#VE^;O<)7okFqV?ye!YYfEt` z?(XjHoUi91lM99+Tx4dy-FNqSKd0U*5+Z**-c(ad2Gm=ycjhnT~u*R}P z)<31fj5bVU5m&zT={FyXfe)>n%dKdC$tNXg?d-e*&ftQZMeJ2*HYNv$t1@Q`Rm&a! zV;J~YTSHeYb%@y$k&Kx5T<%j_Dq?O06XoF$DY3Hl0q@&7f6vqtl1;5kM z7EU&|*RFLWXT%G$Q=cXK$&!|a$W@WkWd8RU4B3V1MRxb%*X>s6MaH*4G{&?V5ZK)R zrfbn_Fz9yqy|%j6X;fx581Gbo=>aYb(?YNU8@Am%i}OP54i68&){Df$qvQQ*&FzpB zKo=+Ts29u3$luo7D45+c%AkM2!>33Dw8MOQ{@<39e{0`qO5wzE0awgN|-R;XNO z*+p%@lpeqr6Ic%?yEY%g!j=Y{Oh(~r?Cr`V$iItZ#0oDVB2hYOo1jUw*wo)b-ra#k zAT>=+N@-%_^&Wh@k>#@0Oa`cji_gyh<4@%f6SHDqw6Bt9I3+{3lJ~Uzs*%_JY^G`~ zcs$mlfK;K1y-km)xP#W6)**>ZA8;t6R zo~WsCulbi#T?1O_Vf4FvclYwqD{=0A<-^h95@k@5vBFN%A9OKrPwUx7lLK^!@%AstAfal?IT0(IlfExUp%0*5&BRiaw`h~NkH%Qto ze|VE6&DN_xykw#u|6=uv<#|N-&r}>dHUT>0&7SoOVc{*RpTz9u*8rbVG8&hI&!ana zJ(qQ>FJ^FLjQPU*)<{PU+z=8~9swy2Q+Xi#FWhKmCNKK_V}#Yel8m&Km7|%sovgFC zo}HPfudAwwowKv3jtz!B+2@-KG}#m0NDG1_ja>2$uKqYT>8 z0xjw&fR+^vH+A-cgr{5(A&ZO z0${rv$ZvBz9{0m7qTNnbTpwFX47^?!QVh6XpV|A7*Syyc$YYd7ZrGVSe0O^RClk^0 zvL;l4|8DvKW9)dT?h4pl^gK$MvH-+h_eIGmzzi&RwW+JE%lp8f*MfcsImZ;At^7MO zy4vh{weja}$|*3%_xZrv9&L^EtcB|zb8imV=Q-IU_6K5cKs_RR4ls{Yhe`W>emD%J zPdUHnUQk@~I0(t}$t7!%1d(JvLuMyLq?_U6E85Khiowa~bL+7taZ>;kA z+!X?OWlC1>dhIiU{yU5WW*`3oBi?_k{CzK$i<~i|UoKM&*0)k}e6NA6AiwL|qnwVn zTb-)Rp!S!;gE<4A*X=3AOn~lU!z}RDCre#+J`y=E@YF*-CV0~WtVmu>o1pwFkq-iw zk-po&KXts+0DYb5&Ym*t3z!+|jFQMiUpv)Mc zEf@c~B8h=vVpw5QpA+BLzw%Atja27`*`P}XZn$&Fc>e5Q;uGQimO%YF_Ki#u8-~jA zCsDkOI1#&NuoCWCq}LWQHk%q5mo$ws_i4lWPX*D@;HJnA%Ml?8LL(J0Meyz>-^9B$ zyifDR2NS4Ue3$?!*qva)ftL%_MDh?BA?P)LL~*5m271#Qy={Gm=iG5kJa)i(W5&K? z>oHN)@X?hA`tm?CKeB#$G8X+EMXY~#|B(athF$%Pu^8 zbXppIkf03#0W*$)8hX7~kIT1B7e+qS8c3A#*X$oTbT~b6`v;jspSl7fLQRpThJyCn zP|A9>=)yK=+cQrHn%3dmL)&i~HdjiPt5^F1qb2C@AMWLWQI!yRwm+*E%f4lv&@)+&jIC-3Yk8P2l!zj(rzvdG$!S5UQKX9eot&{y3}lzvAQ~Bo>m^< zXV>=yQDII$R^V_2MEPz#7T;hiRhlP=DTM{!*k~Kxv{e?L?Wv1+6=al~3V#)5P{U%n zii&elmF0d}cQM&p@!lVe`6gGZQ8py~m_k9RLLHl!{Dz>BzRdu-lA3-Sb#i z3u8=Depyl}VIsvCqNW*G(@JG)*|1wN;E;S_rRo^UE!vT~m>7T%0@p_pOw)amCdbv< zNVb($^-Bz#kU{HWA!RJ~8q$Qg3a$gYzi3$ly9-ii6-b!gDx&J+x?vNNRYhHI>pSJ@ zjttTq`ja)sNH~fxQF@qAoO?@Y+Q{L+cN0YC=>WY@ZPmzS{xgmH0#72SPYI6Hzvet% zwY#}$re{M4IFm#(@~}|+`SVkF1VUs4QsgJZXe4T9y7n`ZeDeH)?uP45NdZ1iPV{t~ zA&&MD1UAQ-3CEiHNrcObV~wzfcaKfuGXb0y?%tWOMU+W54Mkv(&fTfiawpW}Ec*oR z*6#c9+FVN&#CdJi?x{6)&Cl>{R1^;2xvX`%D-KucLEGG2kB_XE+Dbg{vtB5Y0xNc`j9({;7BHp4y2mr56Fl|iA=Jm0ghKT)Y z2d<|5NUU?j5<3*i{gZI>gRd?M`c9Bu+@jfWZlb;-vwN6I3U; z6Mr6&i5!Lrn{E!*><8wReM6CmKikOlwFXG&52gp9nw7$ka&?EK92=-TxpqirCz3|E0`&zV9@AGDlThvqdgPHX2JV8 zLO41Xxw>AW@T_R&M(?YY(o)qHuy`o*)MBGRAV0}2kx$|(B`k-O@9SVRga>Zy0a2!- zq@ZTwD?L~q^bCG@5Xm)t5Y&FM-|7P-Bjob3TCdZy&JdV(x9+L?WDmls7%50s^K?eO z9Om3(SWIp4z!3PRpOzAeZaPldIPL7lSx{Obo`w(f(DPBD0lAIjhQ66J{?_#t~2Fr0O)laTb zMOy*Ml6OYBQfQ^Kd{pxdX$*RvnofGvCLMsAom-13g|Q9KRT?^gNwt8lM^|dVVwam;0Pfr^sXX#5Pjjd=Qc}4~?-{Y({ zC$qz!xJIn3Cf|d?zTTX@<-9%Q@IT!W5q=RiV=?>|Ny@=W4h+CKO*cCV8yO8C;qlRY zVbitYOwUq)%tfNHaFhAGcN3S4K}?&6*stk)>$sU+vTtj1ANyAbKb>=5AO8oYA?CKV zTzmJSy2-uEZ~m5W-2ao->J2`(%l`a&Zdj@%QZ3rVM5G3kuA+irV_n_UR80ep7E)E! z{YS~bU{JZT97j9c6*zK}pK*7YZfFP(yEEVjwJiyOUEr4ePhH%E{4iy9wsOAOd^G;S zIhjGT+G+5Z5^tOwfV0Q9=X^7NSU%7Q5~ftCMHN<53*s9M!nTI{xhjI0Yc z;{p35#uWNr^$u-9yI+tgySkR#fkRgbXs;D(zAkpvpGcIi&_4uKQIS!R5fR8Jh&ede z*hzZ26!ag4H2$dby(7Kv3^WAyjz9;VBW(1|bOsWhOvQn7Od~BTc@t4zXJwcu@%Fh~065Gqz?QiG`7G}B)ib+d z=i6=?U~>APOM0yn$^8eAp+!ROz}rGfwR>mHD}1L3*<^Q}$d+rOCIAkX3WADQ~32=QM8zo1z9 z+FO?cuw#Y|{3zap)z&T5F~<-4?W=qg_Yd0){O*xoo?n-k-|nC6-yz=sC7`PW+70!0 z50YH|LfzmwG>AV!&1D+Mwxca4Gn|x1Y@ygrc~eEVk9v*~~R|@HTO9OxxM@pHwkd(a_T}4vwz0Q_&;N zVa;LC)eBMT>eI-IIOj^nS%I#~Mlv&nh;$~}ltSmD*6I=H_|p+Jk=E&4n0jPR^@M_v zbEz6vUz{C2B%RLo?@pT_2&nWv zi9eTh4`bU7{R9wLF8zC$U_a_bLMUPqdd`DHrzY&b)E%17PzG%c!ONn&QwNc#8-K^* zP78?LNz4q$an6Ga^fEQ?6(N+_DU!v`C3fq`>@e(Hv9nMTPn5Br&B$$7Z*kJJQ-BN_ z*UvL@reuwj*_z|`>tY+5iTBx2%OtJeilk~T5Mq@Ke=Hg?p50KsMu+6{K_RCsxSkIT zp;6c5F>{A*arlNJK`T377An5xjBU8;EEt7UWM*=H|E}>Lh0T9Wz4Erh8?p|R9$A<% zA>A+-ko@-H>k zA4qsyVFX7p;@XaXjut;^Pe^~v{^~dV#=J>av}zzLlOZVcR@?0=edrFrWxh#oNc*Q_ zs=IusSCQeN1>1j`rUWWBr=-7PUReh94~V6$W&uw1w*Ykw3^!Lu?zK16DoG@!l2ZPk za-DuHD4bp|tbYUE&Z%jSN3&m{g+jFc=u|g*|61G>AsUXY(VF3bGXT051fhu#1eMJ7 z?SC=-ZQ3mvCTy1w3&x@PXjjo8(5bwQ|(8c?DqH_`SI|JB~eL4-XKD+w;93y+fViV zgxu7m0-d;A)!805d;e zIXM@Yy7FW1?yct?xl2iyovX#wBJgl6ZG^O z`sL2`W$@%uRsL8y2}lHkT}}Z4mEF)8-DtXm;`iGbtoaP$fzXokyeUp@As@RNjIfBe4zuRdevE=mHEf*(y zSASlI9L?1YDjt*vwI9f0k7>8~Tn2e|(&9=_mB^>FFLBUeLx?+ATYI$v>Z|bPQWvJgAuemC4|m+jsP&DrqCdwYr_g{Jvy&?WKEg zkO2JcEOuvOTbD!$sPlqVuS^M}@9$^sI$AXlHUS1dD^+^Cquk>J#`n-@LUsW%-90yo z(bUG)+yF9ZFqjqJnqd59Atf_^3#hkkn_YKCcyO_$49Ns%TKM~TVv2;$^G ziz4d=(^DxM!xvpk2v>blGr~sTs%tXjl&mI01`F5Bgy<+6nNhM?rmE^SOdc7!5p*{}gTFxjov(HwbKz)00BlV%e#vBu7BB{SX7axEoXI!_(lrwiI2 zGRCs7!XINQ&x^@!8+z>iR+f@*_j+I0CY*p0iZ}Zt4nsShl?4AQ4^|O=kNZW8aBypX zGPAH!f$g0okSL82&sv*U(emtXkZtb{HAxVO+?SPFigIChxi-T#moF^L%bo`MAu_0; z%7i$PxqEtU?@%|Fr~1H$OQW@_++&{HAP!A9*a_q@4Ok<$DQp^ib(mOexYDRfZ*Z|1 zx<2?A`W@@anR|q&Y0(ys!_Vi;&-d-h9>~BOmrf5o?+D#j7JyNDR$+|IYp;SS_>02g za-_%D($es_xD7|gEm0A&%}th}{tUSdR@Qr|X1Xsf)A#VAl2L~M(h%4fay&X|T3Oht z{CCa@*v4&Mx6O6^D@|*zdjPuTqDjY|v}FfNZGS;B^YfF@8Q|(WK4rNtJ1s%cSXr@3 z*zFeUgD#ymxO-d<59wGXF37wv`y;eKd5~|-GRGy>+BzXRc}hRafd>GYW0e7MqJN>jiBCzy}qa9AvKd(vZ#>GRnSRg}@<(v}?z za<)w*7%GlRIXz|KvQw9sQl$M|^Z*CG%U5I)K*4-z#f z6#dvOi_tjR%1hr(#H4qeeOZ$YNF-@7ZiICAZ|FMzv-{{L`KhYQ}`za%y){&*d z5aE+iQ5@Y#NlAM!NSZ@oh;0o&;=17UW$z8`U9FvUxZm&u8|}t$@|X@+w*;rqZ%X+tQ_+^lYcnmd=Kn%9?Nfs(POQeBV<99x4}I3L7p)E*c{(6f$`|x3&9QWcLP*&L#F>Ye9gO=^*UJX!nK#g^W`67+jW~P~&-d}{ z>s>Drms|r?Z?75y%(2AT{8U3f3bv|IPWhjAXPcTTRXuJpG`c!n-Wd#M*<@+($jz)A zrBv4EQ0clpvj~VRDiU@$Tn-$NLnXBjV`}SXPwdMe0*=is(fQD+$AG7yh@pr}w#j(s zx=Gb|bazQ{3CXk7M&~wrrCcG|!g~CH=yhS8Tp3*3G8zIo%Thsm%5S}Gx$bdH{nvX@ z- zHB{xOqEE8DLB+u`OJpzK(QRrFup!En2DyilIwVTS0(OM-VF%Vvu<^L{^Q=15K;m8T zqJr40UovT~lXT7Zwhd1LxE!<*1`%5MFFBJ{8A^Pkv7PWE2WNK;7PaO7==18dPq9^! zoe6e>Gjq)CSV8s&9ySfNsUpfVB|Z{wrXYHQDST#cSU(=C(Pz(i-#i2+VvCW04jMt@_gJLu)Z#u-|6lmEkH!Gmh zb2i2YcTtAbAiECxGUo6)wE ztF*>;k^}nP^K~%PMU8uy-k79){1mO7*OohrsLvAq&Z zn4jRDU`Z2C6ZgomP8W{vhiU=*_L^U!aaJAzOFnBk%P;GC;ofAY9l<&UKrRhtu7u2Z_4!nk}ek)_SNA%jtfmXmijosG6&+In|iO zQKxjXjolLV&q`WaTV3r>*0~UJQbNkmT%1Ok;wR63IHG5OI0CKP1L=)t}y?A0p@ z6X`TgoYGEC^V$5u#}m7Vb_8F2TBjiivaxPJ?w{JY}5*Lk@u5Sx%zgg=!t}*;fv&=y6%xc7L`J-3(iS zk&v{PmqL}0i^IjF^rgn2$Ac%QewS*=j3M;tvYw8(4Iv*-v|~AIq@2VEsYPUKFw()s zm`v>iG8sTObZ!%+G)+mI14`B%tkM0qZL;1AB zF2e#RX)D)OkJ2G&%{nY6=bS+IVCy?yCDmf(;BOgpW{5Eo{vD5l`J*0TD zNfq*`!AiQI6*@;!hqraP?*#>pQwR(V{IubGuk+^-B$!tWWV#IRHNu_9GtoWO$iLol zW|AGK&dpQNlCRKv&~J|t%giTvJ;9Ga1G579`@^`3;JS?cpZM_8i~Ti z;H<8V)VmubWczyEvHdoByv64Z&`grHCxBohXgywY;C`_k7>^@=LdF^Ikc>fTbv;^z zSlngD60Nkl6Z5+rcbg5X0~&SFxo&M1+J;V(tV&T?7I-Yy*PjpwmWi0KjS!%smQAFi zM@;J(k(*v_wXqPIpLKZt+Gvl6gko^k0DpFU)uml+cn}0uqIvJDZmZkoF>_f2Q-bw3 zoeQxIt4h1ocq_e1omtdxHU2>x8g!%L-2u^tYW&q^8TL(%lsVboHib?Of$>86w7xq< zMb4V6GO!i@BA268JyJt}8ZUnFu}e6)*oC^N(GYSyeuIx(B>au@4V!Adkiy7H+;B8j z_(7qOd1q3MT9+W0Yq-&#CwO?Or&F(d~n%b^V$&w~Zv z9m*2m2ZGL<+Y{gWQMlYQDW}Shvi8n&yIi&=LuB_9^{fP)8@6=!T2w7!nv{huA}#Fo zPVRS)ASE$GLjyxn!%~qE;kPKrWFP3;$JuKZ(btI^8GSma4>DUGJh7SeExR0EM-DI) zi3RU>`ctY5_yCCZ9F1Ut_vnZgbvVo8F#s-Y)!KzatgX zWPe?f!^OcOr7QTP9zrEn?Dqsqri(c!doh29$TR)=W7HXTb4z%!B_9g$pws(MQx@`KBwLN-x#6kqeQ$e%@;zl zcCM;_JCj=v8+ThH;)52;FZS}Nuxknm|j(DfT; zF-jqE=ihP~lX+OQ7pd-6f=5gj(d+-vzPzKHM?ibva*Z`YngAn$zGENe7y8$xC5@9t zkzFgQ(1u_QjU)Ju>Tql1xr|$a6xejqmKE~yiK}!^*N=8VfobdU!I;tKbrq;iPs3ylK}! z$UX7k_$rj(m=P0`V0?D9Z+X$UHtWU(Ka%zsg}Zkm&;j%^mH1|F-Fy4`UV}8oT`laP zp1C-dafSj>`|8m-qI&c-K(0a{qt39C1xl7cY^2@GVrGZ^iIOCeMDl%S7_-4~2#$?R z*bt50yt>Bk8@BXec=KRB+yz{LO`8&WdZdc`Fk>VMJ~7X*KwKzCB7R6fTp;R108bcb zML}XiN4(XphcQ&A2@%3}OFKT9ajq{{Rb5my?7{6wB9Q#Wd^91cA3sTWPqO#6_>K|95lCcxr8+09pXoTsg=4`T6~Jd%1d)}^GT22d6!r^OiiLs4JYK3k)2Y>pq) zuM+z))X#syCmyhT=au#ybZXsLna`_BOZ}o?$bbYMbOV<%?{Z$cl18@eF6!Ft^q<6o(ea<$NN=Q`fyV*UM)PK$K#bon&Xu^etJtV z3&sguI!MBv_dmdlT9Y=en%=dWq==&sMGtw;NgDo`-y)SSw)i61BeVEhI#EjREwWjL zqHJ~Pz`X)NS}hqhku+Q+uFwk@-;Cc+B$b{IPY}!CmKJ{#i^p@3Mz1&wg2cj9YIpfD znxm%sZewz-#6ck}X0bI%7*I74$o677?vUtoi%S|KN3dlJ_ zeO<_CP+4&DFy$3xNP=#(hTC9%#PUzr8mB^Z+mOH{3})Z_U(Q)CxA5YFgvSeKC?c36 zPUWBRHCg4G%$8`pla_@ceLdxFzcT{0qg&$hl7?o)BM;)u6(cl?uFoC%)Q*lTx)aN1 z2D0=x2EuO29V~V54>62wOpFA4FSnTmve+K#1`XuM9-JmI5w_(cOEh)TmaYQqpp5&1 z%2RoUa;#iA-OMmpvzYo>s7Vjkw5YO=Zy*lG!lZYE=MwonQ$c)KNnTlAHXc&)FM%%& zPj@rNkn%D*rXl8mu}ZrN$b45-esOtzF<$MN(BId`#q!n64)BTh&CJt;XLM3C_}4*R4YhMI2K+}M#P@NHk6V(#ef2OfsIPo%im+D=7+ZJ zh1JZ9F!LT}CW7Qn=u6?Z2@99{F!7xZUwl(%&H2TE|GGs31MzX_@`CLOD2yAdY)S)E z#VX#vpM`7xXrTI)!;;V?I5b!Hf{Cl|$Wa@6c?Cj^=*fAqfD}Z$T9rN$kF^A9HGNGWVoR3v2G7E6tc8yl}}Zl0l`qCSoG)Cr|wpD-iz^mUrNLPEm3xip8? zQNq|kR2m|yYKCoeVU|)!@UbBqs2M>)QX)Yb54LGFmT`Ww4EszN0yv zV#EJ>4?s_b-+-w>)`K;aNvP!Ao#6fY%eNJQ{ngJvA7z2!3oeh}v1E=vr_*t29=U{% zm4NSZDDh`}4(oNpy49C~dF@?Pe+OBmMuoIS_~KRLx!=(^jZ2rF*p_=H5rLx zb=4J%wwAvxju{)ro0Y0Zm_%3RLc9$P4FPVf&c6xL2)xP~B&r;<4v>36D46(e^MRWi zY^qhxa}U8VXqk(3)MTs|pDT^IDfx&8KgT+P?@w3SHn)@$C`d`Y#)#b)NF<`%oy+sVmTJ3GKODE2Xg zp=wb>UrSkAUFM^@nVH9WA{N#*2iG(a|FlnaS!LO`xA4YU^yqHC$N9X+bl-mp)c2SL z0flQWN6;0?l_^tTcF`f%d~H=0TVd|BiqHMfa_M(pYq|_tPx<#0*mjrK=^ez9v(;vw zr$x%d9KK1fixJ0LtmFIJ*_$@5N|$W@!K4551)QpB+1VLQb())UnDzHB=m53ZUeDs5 zz=bba-IQYB;9xjEJ5{16;CFs9)sN!m`|@Y3NT=<3ZM9Rl(jRE5HyO|p z@NTDQ^pw+FZ4GMx+?<=6;W_4<*Za+bHNPj^{+EaT6hXeH*NYck!44k<`T1L!ae6ZK zx8I|_ZwecwFqOvM^rQm`&wE{OOMnPP)KOLzV~l62IQ*wykH$p&f}d}v=#hTxfckt+ zHe2lN4FGw0bvqMX#oVyA&&OQ&GCeU`M_t*F(;?+}gtA_sNpSug-nhG1E*b^5m~O3O z4Y8(^vAIi{0iQs7ix?OgM*cD|579G^j*ZGi#`GgPZ#SN7y!$Pzl#u(JAaQa)n>%Ap zqoD-x7!;(@xL5xmBKp0%o8&z}H894fr_nRM5t_zKCt5_8y}U#hin#VURUPtBJ*N9~ z5Uey74D8wXMKEt>#ON6U_Zsvm;?agBbztlwNNN|sRrNa+eGihW&pc1Ikrk$pLXp(5(8!V~QK2C?$73MCvt=mZ zo>%A}=FxArgO=o>M({6aF2o;wFekzvF7uFeuP+(LO$DEKTK6A)($bQn^cTXHl^wRi z%yV5#nJV!U7G@lw&QQ$yVi$pF;d_alBUgM z7cMn5UK%VE8_^a7JR5Xawcd-(aSA=CZhGg4j!iD0W!F*@zSw>FYliUZdNwHyU07j^ z14JXVCRW#h<_I73-b$vuAobz7iizfZf*s_Zl4&*_IDBtv@1o?_jXb4cJ6lG(;|h3< zK|;ISZa{0+(~)iyl_s}&HCxxyHE5Sjlyl%Ev8$06B}Dvzm_+JC+Er{@Hz3`WXdmQG z4RTmZHVpk<(c5Dct@^HBTHWuqi}WR_;C*l=%*y#RSqNG_n8%ufEoo92>M}hMe-vDr z>sC{$o5ewN>NT`K^9=@?So(dGmJhLaFyHcs?%849S5iU{hOHdEwWNCx%ky~BC>X(; zN5_!%0xaa|5}+>il}eoJN3ArcI!%2@c7xMj>kD#@Ri111Gq#Q}df7F>D-v|aaL<%f zhfgfHRFthKQQdmDjv(a{rVYr?pK^Es`+?pVT+lcjBei_Sa7(jaU^QG-TolD+&|4(r zRX^SVjr#Y`*ut?N6kuQK@D7!Xw_fm@oi1e_m1w-oTQ~*BemsTdjbyX+%Hj+`^N{*r zV=l~3f{OjFo}QH~%$_>C3m1wKV?Up-O83tCc`@>kd5$r>x{ukBnA9mb0Qd}H2tg!S zRpA!7-Hk{1L2EEZvS1oD;eG?2nMp=~-fKCI8%3a|2)qME>Np^~Yjs-{R!v^U$I1(~)OU zQR@eeC|6hcn<%LKXGVFNKsBOy1AVa8`xzqxad{J8GsZN7Bz17S+8KTMa)yR}yq-#; zp7wjdwd~_`x7QLj6JK4u9GQ$)E7nLeGfOiovg#F=4uQRBX{moDk;Q~7B75Jv8q_Tn zF>5efwDTz{NH2Cxl%~-rd_+o-W+3vfDC{Ae_tw?b;7Eizj_DQschKbMmk6=WjPO*{ zuMxis5tn+pyEPjX*pgAPWfhm=WP~hqRM3ShF(W{fG++-EV^j0p(P_0nr|QqLa$@rD z8p%Fm>7Zs#+-_5Z1(+FE89L8LYygk@xcm<%iy%DWGZ0qe=$O5YNcU~xw%uTN9y94r zG3{Oy*Hqlz_5Fe1GwGj0-5x6AdE6mVAB|j2xh<{fItL5$$$Z3g@SGX6dvO-9*lC?U zAepz(8JU9yhr&6G98DpSv9X7Em!2_5@Qjex zCyrXTK^F7l@v3}QLNC^0JS-MW=zO~?#9@4?)&!0&xUbi4p~iPg{qplN1s}}9uc3hC z=UF(otJPRn;XugCi@NPX?eda$QPr8XzyGHlUmqA(ZDPy;{@_m*fBqWjI5JF7Bky(i z@_y_Rps|b+gf-x5)IK>HCT^-&-jv6Q^qi$LAZD9JKoZNbal~Y<>OGpxGbh>DA>e1hc4?olHQ}3)Of{10h9jaLJ`|)9{!4FE{sdVBmbdDL&FM;i zkLmV&jfp@e_r{bW!|@3rD`RVG`SQv%(P=s^kq59RILr)`c)m?`tr@KPpM5`F@wz== z_v#KFE0!nZ@OzF`CYSqoea4&n_UpI#JU|@re)$+LYH+8||8#xy^a@A(ywlN@>vP?6 zfk7>gCl~qhd4Hl!qv>>I!P3Ss2JoEX4UGJ!NWX{2rG4&+m59aHAYH_v-OmhbbvAa+T+@0J?(U>El=^rTq8TRn{97uT~{-bt8@-dH)_8P?V$?k)X6A*ag_K1_m{_3goxSaC^S#}j?OijA9n)k? zY)owI#3ZbwM9h2#f7jl?mn04_=;IZDP7$QE$=7-6LskP;Hx2LZmRjm$(mQM#J8cSmWueYav?7!)Cc-#(!uw%x( zT=pJDOhT8sbLTefRzrV&_sQE8c18M(2(7B*_G|W3bW$<2l=}8-i*+wY;E zjjL)-?Zo$Wdjb%M4>u@d+5D|bJ|8zoSUPu?$&ZdNW7R>33}q;*%qB+Ze{b~9&z^D{qrEo z7?Hp8)@2f6iM>m9mpAlkw+L}SSHQpg>KNWfp3owi@Ec#i+2QiVpMDh1Y{3b)!j@A_ zn?Dn?Kaw9`p6F!`%WsKF86bdS92k^RR4855QHjk+%Z`Z5Nv)+ef@AL54=tPT?;j}t z#3)=B^ti2n`C^#dJDjraUOqWssU@TlB}3kS#2QjINqb>3_Z2ez zHAF;O(C+!yjCI1uq(Fu)L9gxjqny6q7Ip>m4AmovqWAwVa2uA5(@IqHf*9Go@{qqq?W;56x$|=$`h^ zv$NF?R|k-Y8Io`5lUmY5RnynAEz2fyA;E(jK25|>Na*&?T6AHQA*0BB3C8I{*h&-G z*S#0(A^j<-)oI=!1Bu^ym#03Es8n=pdjdTnuqDi^<6c}?)Eb^aIBsyR7S@Mq*km>+ zI7zms6gy5FE?*dgHIPe^lar z6shLcwq=a2fR8q!zbCjO;?*)0r*8zp73)G=l&-7;=y*cZLRBdHMKLJHg|ck7k=5C} zWot|07fRKlO%?VHi6gW(1KJmjf7`1A)CE9Qe=S zB~|`EA*=G}PY;sP<#tkMZcH;<6s*~TGAdDTc@(aXZt=Ic@oGcTWD)=sT;|_vB%`&q z&^=+Ez8W)rdL*_`MInE8O>ti-2>eE=JHsJu_ev9vfF9(<8?JXoWpzi4Mjx(#8&4un zCLMbKn4$lFolyKP7j*il+x0C9K-d?;5C8bDF_rmzxuL0hD&>Sd+_L~?Dp=(-H@Aer z^Q}geXr?ffUW?jjmSi`opDw%k+NB=tQ)c@fOC1Xc2vbZyg-(fm7g-!4IGKMpj{Fkq z%=UD+H5g?jm1v0VNj`aqqK+!3@&#S{zZqds`v1x^U9B62!vE{4>swjzoMmv=H%Zbh zUeUEW#2hdvQQmi))ci#FzQB87`wQct=(W%tUe-4WjDKMfod5CLd$ZXvF!oJl6!Ci zk?mKP=9~4rWc7jHyUDY~eY=mXtuLSDU2i_a9Uj`GD^E^ps`}@CB+fWI#5=Oi#h8x2 z{f}o{X>Jj?Z*s8t^E>%*cDHr6FTL;aCCW9a;fZ!1>O?Q>Q4MDJ!cL2o0}?48E0Z>eW<_&&4)!GpQMEAfR4Wl4)V8jqD$QcOG z)@CZ})zoqes^zgf*~k=KX~^!8Zyk`LVo;3d+5=YFNOiWhYUsZ(AwR6or=so}1Wt&R z4N%4w6v9bJA{K&1Zq;K0_V;sBHT~IA7sX*BvR-}M;&pPEC83)!$D2)2WChOV8FOx% z>N;+={Y=K1WX7$Us18e<(Rm81p7}7YFq0xpGcTE) zM`XTR@QBEI8c;x}t`RI?2+JCaR}O(NCE~l99Yr~+kQ-dYVz*y^*&;EtsESnlBs55o2%Z_{7R6JuGI%1`)95cjbVh1Bkq}g((A3h3jC={<;UAyg!B=pR>nhfBiT4 z4-{fvx7wtcU`2t4ZlACE=1{X*<*h!)hg8;5o^Q)QY)uL{jU0q*9^>bEzK?g}f-By! zNveRZe7#)tCU!Zx^=m=_lq$c=^d}?pnWdf{+j%7dJo(3Tcmm ztSl9x9NuxUa}a(t9T-3pmH3JC#brQtN0rUF#@m0>{)GX!xdVM3JM5OR7fZ;jSA=$)E`sWIA`g9 zSv)L)5WBQl;QWER&2-)m4`wzR4B9o@5RTzJW-S)?jrIovM&0&HdJUA6G-nI4I;W{t z&`9+zLpqo9D#P6Zk#h<|>fOwH3l#p4a>ofK-5RlvC(6{JK@oceL{+;)qfA6zcMGRP z&V0IjnR^V`CDdai5uFvz6Rjh+vGiF41IzOt6@e)~84kuCFSw!}P}ce~EQwOy z)m*v1lMo!F0vx*eQCuE-uGJSfxb&R;SDCD=dS4`_vUW7o7s#zTmZ|~71+2_Arl-C`(_#2kYi(u&!>fWbl1!~ zNA6Iu+TFbKSvrQJiivrYb#yGqya>2l1Nv)TY*9jgw$Li-tM7R}Kgs&`C9(X&(eKG4 zTF?HedFWB@6wdkGJOrp55)=5mlRBfOn;Vc+*-^kVuR;YCAzo5N6JZbHXrg61X_ql( zXkffIu$UF(cg`o|Ut_l5smwCUZfcw{^Mxrq+sv@KcIIBwIkvf2qHl; z(}B8ZMlEg$N2r!nMkA8tvpb(3a~*WDWA!WFtaLF!Eu}RHX>s#o&z}pa z*gGf04o{$$su9BePFBB}%7o#IJoy`Z4HniC)eR=t!A$84F<@8wbMB5Q=uDKmu6jR71^IQTomuil6<#9L`!*US6Jr)wiR0(=F8trTouYP*kx*?z}=IZ~Cn@U6YcZ zs0dVv7LK1PBgcOnpOY3VglOAfVx0lH4Ijg7obmb%zHcP?;CMyW@kfq_#5~p#sx1xd zFlqzYH)Ct5!?-0ZuC;LSpU?MHQEy<&vM-)S9;2B|&~x8u%%r2Hxv{B3V?`-NZYgJiw zW%a7DhPG?oi-e!6-&M~Sz7Cs8%X0gQ8tcksZG8=+&KloWF+0Uu2(I%aEGY7FvQQfmlBW}VM}b&JJ=D3Hfcdso z=Cy$J5hHx*ghByd=bco-FWefb7K^{ixKc9FOx@u~*WaQo1s?7qq>!j80G(CKQFynW zO13-&H(+ad5f|N$-_947fJRWknTrA%r{&7WZM5-os>N*|r94`sI7fqVg)`t*f_-Hy zuDcm|l934(b%+Y9G|Joq0(^1pwIA*)SAHN!?RF3ZT>@FSF;M&)pK%=tMYDYdT+;Ur zDCp?1kxM-Zvk0kDgTuA(1=yJ2if@XPrfNjJYEXLBN#w$Kp-)?($e_Yxv zPLRlG0`eXNf$=w;W~Q{%{KLa9!?s!XQ-js<@3DHnG?~ZP$4di%Kk=40@l#7aCm?$c zlpcQ{N6Kfu6aG?C^85+$mYSl-L-au{)idJvTV65&&-+> z68^cRN5EJ(n}S)Ypc`B8xglksa&VIjE8e3~a7S(xX5OC77d|1bwwpYWPd}aER6lM6 zpNe{;5}FG+#S<+`+@wlrpb^^5rxj|rpDp5i;y^_mFA5MBk~uR9^2+~G(?ur==z}#F z!R;-{LT)NLslexRBvk+VjZI+ci;&OeU&}?VulZn3Fi`ybjt+8~57>C)7LFAQ3?oe^ zkEFK%<3nbAR`G>Wn_?alsQ{6F@41QBBFyPr_4iTN)pDcCZ@xqK3jcQ|=d#~vL93z` zt6_`pNKo+ywNuV9_lf@u%@wx^Jxl)QXhHINf^oTBS>`l0!*-YXAVD^AwyQ3^{jE*Z z6zqzU3EgeJv6$Y;GBRF0!Lgr$(*(se}hsa!#R0hwXi`{qC8KQ+m5{Y8;#cT=+Iq11Ks06P_aSTt`MOr9)QZqKJ@;y zanyBYlx7xDIkdTj)GgwYbD=fP%{|?wCgTFzPMTWDyz_Iwdyv3_rpM)e{&txDk{$_q zGfzV!-)YU#7zIfk>}sVP$DWlynM~O4_k{+4^_?u1p;>w4qBEKC`=W%c(Fh`nQt zgaQu#l>!}&}^{)FDDzV63iX1UHXu#`H&1;w_JQ|&*`0EXUUS7Ni<|6XNryM0%I>fyP zvJWMhd){js7O-a~yHMH*M^YmEg)BIo45|EC?_4I&pEdF*hgq|(9ML#A6fhA4nPjg>^Nordpz;qN6PG-Ol@34KmzqOxi{1^}{H}qrb z8;nvcF!0?vJO}I$r3$zRB%^=U>-@2?Z+?9pDN~htR(5*64Y$BmvZlx^qGLZ0;YQZN zL|EUm_ISW|0F6zifKH=5OdwIZ|{wP0$01<9?axpQ&{C;UE z9jER`#ut0uxg{5_CQq_Po?O#`4{voRr{^>-3WWWZb`EBcwEZp?hj4$`j9TK39!9CC zy~|H|OVon|2Qp!xt)o(bqhDf?RiU4^-jE+AgdP&Iq(^VaUDNQMU8-S*R8v>yg<$JM zXNWwv)$x8o&33~x)nOs*#!TQRPwRIwB8f&k@fHYHb$sVp=Qn>gtf?KvO6B-yng1f{ zr8&%9EtTtt-v5^&mb$A9G?vE1>p~ALG?1N#EC`K~k>>dcED1}fsSDW{xVfPCePo8? zst!UaQompd1l&oK#%c{_T&@_o-Mvjdvs+Yc3~eCvhr!lX`w+IaDrSzX^Cebdya`gY z=(UH3jU<1)__5(q8~&}-Rx_#zp+ibht)dQ)FjW@j39IGd6c>38iCl7GFv!#&HVg=J`Q-9(Il~Qdo1)m=5n6viD z&x?*cgmxe>?g`}-$(>+}qy3XOcV3L#<@s>&o3vZ?-wxpeP|?J^igN~Ip~ZaaR~`8DG6Yl{C6ix9XgSG&gu0!! zTtiuXYMr+>5xlOTJ{G{K5c4`fi?-XHK)ZA;-(O*i?IW8={2$SiRrDnQ$g+V1T+S4f zU(y_rA`|yQtB`_v@Oue7Zv9vJpq@(M2B=4d((-c9MrZ;u(KGQJ(2{DKx%rwO)k)yW zq#m=aA(YphjkY{Y@(90i)2oK*lAKb4bz*yZ=GCd{UGvHy4OVQ=;zJ|z^BJ#o!PW@u z>mA=1L~SD!Oupp*Wuqd&W{!+j{;k&w;d-avG%So+T|jxHY_17hv1^!z%hbqcj{P=4 z^#(6?KS_~x{mW?mCSC~>X-27F^bD43wN@3!78Acxays?ubwe~%Zm&|qv^q<4dDSd5 ziksDavj{Ra3zp{zY5MG_l7~XmBVca_#1$nfxqJgacs=UU1{EYfnK|}6=do-0P#C9d zWx>i)VU8OZ#WFk@(Nhq)fZrr@bZozGPIiJTz$ikP%q7B_mEDNd-b5kla=t$$EuXGK zCM-w2j|W~_(!(Hg5cI4qudBmf?wfp*aTqlk3A4FHHigFBe7bRuaYsDFn4O)Qouv?% zr2L0y%Vb+|3*=Ar0Kbl_olKCNwv(2!gHN!Via!&y!#lSK8UP{Ma0&c?$T_RI7&&+Y zwMmn=$Xo-mjIz*(2d@j%{DOMgql(quZFW&VOBCT23(KM1Jvw|`BwI$L@5UCECyXpg zjI0VJI>!wglqd*c*#5rl>4+v#*f!}SgBtJCp@!5H2?^wxnan62PGy&>v8v>NTJ!;r zvdt=}tmi1j`j@e{QFqJ!_)U$&`c7qGz#QzRs8-M-1`i5Kj$kDNWrHc*zABYRm#9yF z{Y~Dh9=cY>!KrqygIpbAh&vY*GZ8Y$;TdlgMV_vM1w+|cI3F(Lh>q#_h>hKggF~o{ z&krf60ERlTcY5ov@4^f7GOVNq zRh2TrIqMYjh70j3@~OlgkEy}XN8D>B>R!h`)vU|SKH$p8=&Fup$K@ZcVYBhja{QDe zB7*nQQP1{xc{Vi5>Q!i{MVOi$h6J>--Fg%(iz*SHAyUz(AJF)nvm4)<(*x*^Rb%dY zB{FC@B?VNYnNK}zmtc@3X^!KnV^=!cuBuOovoihK?_vHTO? z-nb-0g(GcE9xpF&*vP9V);3@_X@G_rKx&WRy>B#f5*pzj^-zf zTTM?dcdxW6b!xpEl}exP>wgdW-EZzA;{dnGMcl5-ObX@E$T?Ts_AzHnq`j|C=L)rd z=bOnX|MQ)$ytsovuZqs@bx zgv)%qKVqlLQmEFFBH8V1tx$eF5DxGP0d07Dk!I{`;vnW!ySR@rlzDx&3{yGtKgJF> z1nf#ceX0V+A!2&QZRw-mWQTSxFqwHP16}ib%0S&;FAeCvYj^J(dietP^c|gpNMf^k zQXF3TWDWKgakcGcf6n$i+ytn2=D%*5$>mefY4uJ1*SG|Tp?v$?F1pT7j~h;A^ve4) zHI8>Vq8!+y=w|8X7em2e=zg!kckMU(vC6X(j~2G`l{(E12ZwXQre^$4Pvgcve)^Rx zS9)<<{?0r&EXftL94x?71mK**!_8x{F^k(EBJRDG&DO%X@;s-l7=yFQ)UjiHHvI&kkbIy2>tDu4R$xhaciaa{e*;Dp=!RQy0QElAivwgX^ZBO=B`9C9au=sZ3suZAiI()WK^cr); z{Ll6p0h)ZJ+x@v`HS^BV(8u#^z6wSL0PDy;*o9_hLDJHEjtR$Ad=886MEMxtySs-c ztMV@*kTFizPg*=T|Fv>^I2d(%JPlqn&0EHGJ-_rcv*%2se5)}Q^YMK>Wv?*;>XeI7 z^l=MJhiS&px;YpD_1+`w@A~UF3`NYx^L1eR>~y{3c7N>zAi+y^5sXEAE?4;hA^H!P z@_ZfTL9u6ihVEd^X2A-+2~iiGhQ$gYQ)Y!(jWGm z7a%={S+3WM_&ePlEo%z{9Qmf+kf0HM?a9i8G(84CpeTi%%MLh(s)c4%>$?l!L1<6R zwoG7M@a2!`X^q<=I{G5o&8P6yPGM>~@4MLS<>z;Bc`Wvq7mGh7E2(<%M?RoHK2yq; zqM*`}Fb9k0{e;}_54A+Hr0AS^!(}df1Y=U~fb8QHi%_+3@S;~n(}#?vR)#x1Lbq+1 z+7hpod~w@A+H~2fJM9H*!4i15D5XV{E}_YC!MgBn%Ep1!0=}0d|8?J{k%`fH9H)G< zqx8z1r={RLv^M{q?VA@)3zRpwR2e~yd1U@p0@=2=c2(p9Zp4aFSZjm1^s(O zA4Ts!DT^Ady=xN_K^wS6(IXV`C-Qa-Tr6NaD=Hd2hv9@wRaa^)o-2uC#+Es^4j4}L zkG$FnEx?#82{7S&c4fXANu8nB*Tt^p%2fv9@KRqfzooRjnXV#GEqwr=`(=@J1DKMP zvwzGeK)J={`EgE;nd~I&PLqZ=wI~0EGj6he*C5d!c7b3W* zi|Po}GDN?di`-?(2A3p{BrD_IY1QOI-tESIon*{9Rx5Cy8iBZ^XfbM!s>XI=SNFT#po5z3fit(w*5{Q?eh!G{Lp|wP!$E6SnZpG`z`9x8Eap8&1RErgkn$(!HEg- z-`SEX(GluYhb7dtSr(eFOB@%}b_17xlHT`Cs`bmUauGwp2Sw@v){PDS+H(GVoSg(t z=Vj-6wYDD^x`Fqtgji+KLQzVF@>61a-9xKLhf@&cd!AWb8?}pySy$2r1~wez3M)=7cKTpf_Db`sXu)R zf)HiDZ3oitH=v!_o5}b2=m^!=MuDLt@`=?gktEY)_iOh)Eu-nQJ69e_@Sbh7*79lB z4%+H-0n`d;FUtytr@0@oogU9Xk{L3Isx!H?<%u7y?!W4rCEAcA!k4wt(v)EzbVtDA zi@eWht@-IA1c8kF@vlO~ACN*(O zz~4o6!%SSngxdvRiy@Gb#AO&BI_@UMOmV$lX@ae$GI1j+XkY#_ z9jY7$qp-d$v!bi5qR4SoWfcp{uTtG~mByxw*z)-CPsksEFLHa=Vzp#S>{$BKD3c27 z@akB9fGq+fepDCaSls*X8^3K(rdHN~sg=)N8VdKR{h`3j_6m(Qp{3vgXFx5*qfk;bh_`x;(LTf~8 zWC)q%n?I=$SB13aHo5cq+-aw1p0ctqvQ(|;>*{NCbu-m-h!=8*!&*4n8weA1r4qF? z_LiQJ^_k3d&vw)aor|IJvpq zz(WY%XYtgUV8}EK$*h=+al}fB9NOx|xhPmhiG(Hdh6d?&aL1fvIrJnUb&iIl`2OC0 z1rIz)lCcpUgz4N-<%_kBf;OP4mJ}*k8S@#ZhlbA>I7*0pg*_Q_ONXV0LPt`jBZTS7 z<^~%7)qfB^71}@O?SKZ-FBOoIHHkpp=T7ePjGE~`S4HzuquABQ*_uLmHe*LlVo8>6 z0-f}zrJE#VQoXGd_2D3orlMp*`81F4-a8bET-LwA=rT4zwkF&J(BBGba}mqq4P`zlr%g78|#Lmyb_` z%7p%uny)DmxA!zqre;A3g<4k|nVUJdIAvJlqdV0*GZ1aw@5yw+WC^ufOEElLB1XHK zcQn-T1lZVkpz*?YG&E}BN((w5T02WcSk=^2K8w|Ev!Bn;iELPBCvYQ?+w#HXIcxD4 zp8sc2KzG9S5Nu^d2@#DLFdgqz#J=-bjP@(!0wm7GhYuf+WED!o)o?*JKR?fyn8|-f zBM}0cmX9u3o5aWI}*9IfXNniAFMADxRNvw?;qDeY+h22*(o( z)9Ll`bOOjxU zr_s(&O5Wc$7&=4X%xc6s5i`C^>RzrAH!wPlUB=k%`87)Xem!>oIyasn?s_o_s^9yi z)8ad|l@j%rEek4TseMxUP>;`|FW}R|QanBN%diw$!6+rP6`)htpyC+Eur`set*9TjAHIEvBlce5Pp%RKZ#KM6rrFT*(*#jq!qVb z56DJ-VSZsYYZX(li?WfjuI|NJXYm6-i=>KgDYM^Zg5%TYGZ@hZq|j2Q4AWw@IF9jii5YaCthRp^mJqqgR(#H^?ZJ z)z#ikuczCHcgCUtE*&SI|3bONyS*>|qro2sW`JCKwacH#@Ofz6A7Io10A{DVj((#? zJn;djUaA1;_`ieTr|#$L!?4o0T;IE2&CNCIZPOS3raWqL{9d_hnC|~wc!&eTpndg2 zy(}Mslo!U%@UWPF6jMiAglmIz=JdtBVFtqfTS1zekr(GGE)dHVd)XZ6OJia0dOdw| zbo9s){CaR45mg$OBl`9H8tX@$(28eXV|ClZ&#u8|Jo`_LfWk!AOeHI0sA6IrS5jmf zR{js+8BKf{X>6-`0l6jaEi#f=O4$Y}X1N0CdLy>h)8t zJautdUr<12D#(^e9_V@0F%hu#S^dbymC0Pg%eLdyL-?*W#mvd-I(R$+&ZpEG_@axh zI$*&iETKht;>l_EZ0EN{Pg|b_XYolfzmP#j~-vM4JV~c zps3D@?6Z;B%U*_=hV<>@9G@c{{I{AYb|JQTAvuu(x+WQ4nIc!|h<v z4p*a^frRI~3F5_8>xKlkehG9Uhg7rYBU-CRP36Y$@Y&1BIA1XZZ#In5!M`(|A(I!C{*xB?j49rW5}$=Tu=6uWh<;Y(jGjABCnJolct&eMC*;v6I~t;R5I|n z`8IubMs`qwtTk);vS8R&xmDG}ZKHF#qL#5?h-*~W;HnHKylc!xJ@o9r@WiCm>jRBr zJ7@KsMN3P?CbfAjd@cNjh1@E%WG;1D)tSJmA6{h*c1+Kf-#UraVu@x#gDPic6`Hh< z(MPhE$IK_~Nq4!tC8vaK8}uNvr-lR**Tx@JVP=nr(VPl_$Q>)#+1NV>d*7cYNQVJ~$U-YiD@!4ULn`Fr z{)aNsiW<_c!QZriVm;88fSgvXdF0h~RToFhCRBj!uI^IzlJPCm;?400kR4Lg43f1B z(v8%UjnuQW3>xUgbH^)xa23`M2Rjnz6Q1l%YPJh>LF{62otP30k0<5AD!sG7g*%e`6+$Eql`fB=Tl`^2M!BtDk#8Lw7?b&s4aND ztr*x9{-__$XBTCqqbCWI3(bBz60L|7i=CRzz!FEPpTCFYfKy_!vl$*osBYye(iGBw zn&X}C?A+Ui@)wwODC!{`FYF!o`a6egWaP;A`5iS)Gkv~4*I^;o#D`s_66|Jr5OlCm zB@#Xk&OWB}=3X`2!MSVL>~lywHO(^(^(6c{{jKTvJ8P5AgcyquHM?>${jVq2G0{lT zv2x;==DuG~3oM?R!k$i-pw$db9$DsSGWgQ>dr67C0(kjbTv-DpN{-0S7J14tB?3lxU=hY2b6RE`H)vE;w$F@T z=Y$63-YMqOAwMAlDmDUJQ|F+MPE)Cp@<_&x<%>%1D#kLTs|(=k*(<7UK~0U*%RU#t zQ5-%8gC?&l6n6HWTGg<4{IHNADxg&9T!|~7=n>g?legLDeRmSY3Z7KS_4gCszwI%8xg-eE67{)0 zu$->gbHntNx|l3CMoB1AE@O8<5)qvi{H*6vn`yYru4=_g$P z?rm|T&8piu>sK;1E_mwQ35LUifC?o-CWwniBPhOVsmhNu1Zo}pP=jR~tnj4n8A~Y6 z3cyzXj;jun<^Pa+aN8)&NgD5Q4}~3}cKjJTSUmh(<-WOl;x&cQaT+Fn65HDumTRMg zN(3=s0ziE`Gj(;-ndt&lsvT$`MAOvtI!9D3Vt9zYq}XD|oW8UaR9v!yzjG2BrKq67 z%)~a%I=o6mmYtLGT|2(LxufVu0SiC7@K+TnYil(*Ejg*_oTcZd$fyrsFv^9mfU4n? zj(*JF!Iz58M&74$TEW`xAC*P5C2a-e4gu2kyi8f5YxDEdlLp2!n#LN&^)&?@JD&PS z0JM`>@NZ?MQu-Gf0P6_NYOYVKE_f81~HRNSAZ<L0LMsW6Re8^ z3q{N-6e~UtJDW*}cV!Q&nesm3t)wXX=rjp z{+)(duD_mNUjQ5MIbtnwYlMWI|1J<%(Zh2BJa6yU{R{Oikd`+9)S-y?vGZ*C;DtrGVu+TGbKDXc;Z%e2uysyKq(@*UTd z!I;EV)x7h5@UU}NG4R(@3X8G|a#D%WiGn!!zBFTLZ?;p<*IJCpeSw6)@`@1PC47T| z{t+r8n}Q}~3M3`S1ki4U?yDkc&)30q+-xJ){=}&6*>~wNUp9@ zF3Tp<7s&ksk`J}j{q^$|1XE^@6`I>kL?u_HZ@{vIKt^80S8tK@2GPz(c4g=ajSrhN zFg9G;BTzDcVQbP&po`f_)xg`CTVmfkLNQc&8`Fw94=+l9rrh<|f=cNp^`OG1HT(JfyiI7zBX)f$4{(lDQj+ZAc1y(kR| zBrnncRHL3{l^$%``JM@?{yqlo=BC=aSg+cBzU7ybyR&N!uVw0*F0)gL7EE*ay(7Zm$nV6{X;pmX~y*AX-OEBR&o9ty5TXhV-`HH{7Prh(PDbiEq(Kl-v?-vPD-yr zRdT*%w(_SY1SUbRHmek1^HN)~93ZdsI>{(*%1R*nZeVJQdo_mayrE5o-Y+Ojr9UAp zug*!#=1mRcqU$^6F0%WPpI{uQRyqynbegl}eDiyg_2(qIZ7!{DB!uwByj@DprBjXD zQ6M%A?R@55nR1w0u_AoBfJ|FD2)-Db8;%RR8vB)IGxHPa62n%LZ?iNuCu79-NJniO zhZfP7Tv5mNgXccL6=_#66){X~*gm5xKLnValmBCO{whd)dUgHpg+ZZlU18cmI`JbO zeS{iO;%CT5>`HGEZ7PM1$eH%p1B|4yTZhE2u8HXyKOwCV%@d7DLkhKaRh z*b3ATLmeRUd;9k7%gYN)tLi6Dnfm8xs%^R)++z-pjSB^h&}>kXU8K_MZ!6XM&i0{T;2OdF-_a-wVlN1c2a2_FUpre=)q$3Ek^b}~{#0$(2 zh!@(d7$6CjlirkC@Qi#pWBry<*vY!6vZ$-C4;V+|(fxnU<2OL)`F6t>9IBhU(t$)- z_M=vZ{o1s>+Kba3P;BPW1>JlVdHKjW*_F|ei2+FIOoeFyjWByo_pI~V=|$(4EolAU z-#J1adpp2I3zb}Q(;(zZAC1Zcw$aw zlCip5*~!M#fAX}Er;(?L+-7iSFZkE+AAa6h-uXX#vnMsM^6FKU?~ic1b1AqfMc9v{ zYg?n8P&^9+U^&xg>~a*@&;p;}3oagtRf?WYd~#Z5dL~Y85?NX{UQ!C)z}TT$gZu4e z)X2n|h7Q9wH7QAdQ^~htbUS~61by)D?k3HpseR8ds>=mVzojJ;>tFfnNNZ&oZy_Q} zwIWxSQJjm?GG!Ft1pJbNQB6E`7YViW$(I+XmcfKk(%D_1IqCFd)x#>a9exZo=xl|Jocb^z$3~=jZ_~XqGodvnPR)u| zQbmOpq7 zg4X`j%n}k9dhpv9QX@_E@-OE-T@+D^=a8*`?kAbS9B-l)pnJXJC@Izl5`*du z7FM7IoLI$BJ;L8j_6!CTxFM(z%y~$Devk?k2G-bz>WeG=gY9~QmY2=+a!)v@+v* z5sLQVPu0NJ?`eOC#n&MXOB?u+6Q^esxJ0eltQBABKnXsSeT;<{xWH%}*T4YQpT1^u z9Zc2Q3bL}14n`h2IruCtVimPtEdpjRf9K?dhg(ddbabo`u+(b9#!u|2aKs+1 z{tZ#Y<#3pshhxDZVq}~jlmbOXKs~}#y1V-1Vu-m+`-khy)Jy?trpS6GG=@mj^q6p_ zCpavQcsFm#_us=`rSi&>1s#>9A3vPjI7s-SNgus$Nk4z#bH;WDqW79RB2U2n40Z4U zlK6U+v;WqH;EZg4n@e+IW0r_!UFnWZ#pjfXLgjo24dv^ds!z(+OVa|=iMm+etis&azXzJo%y@E<$(m+x#mWqnJ zeq>3dc0yr%;@Xo%?AKHBYW*NM8f=_G4fPN~h!PkqV_=X>sdaHNH8R4$4-V-;=8LQc=X&do?n&PmPAG}Khb1omu z3cA+L{{9XoCPu$rMq5N91_lryPx}<4ymNTFy8|&dysT)5Hnz7A?USlCU`zaq@yW|5 z+*}H4Od~+{s8!`RJr4H_mb5*GWgNv(IP^%rpF?lt!NuK~*MyMTRR{x%nd5bRRcO2b z;gc=wTvXNivJ%mBJ2RwAAv)`Py8~q7{51w0YhEwY4;seCU7mj*LFT8c9ijiKY_tCe zv6I?3NW7p{!df_6pu&%>H~VagK_(;^9zsMJ6?%> zrb$I;`S5&g)!TG?KKmf8`1l5Tkm$)ygqipSm#=u2=j9cQV1EZ#A*$J@5q$IV_=sqp zBi3;TIG{nD1v_)xmlU{E#r`Gx+WocU0Ul>l&%$wCt8=hN!Rkw>-rN&$Q6vnGib0=ccdz_j|hy8fzxK13U0WN6e-)4(Av+}Xj<%)!qM zs8LoBCpW7gm&>19vSrF1ed)YtNe*#7%GRnsz zr6v=%X(Sc5q5n>nY}53edK>rOzl*i-^>(>JN|R>E4!)%73A)sDP`C;sS(drEVF46e zBhB7lbsqc4$X{!Q^dzq>NgKD02|Myn;3Bf<#tE6@M!N4gsT$}YB^Kt#|cE~@zxsM>0)@Ue7f3G)E@8iX7GkK zu;a;N$4pwN`>pyBwiIdbevHOQQ85&`@ceC(69CmFz{f?441Y^1lGqD1-1%-5BC~}V z&`|8Fs+Or{z*c<=v=PI=?@w>Np!+#-o>F za9T!vBNN)8Tr(x@Mod7EtqjmT{5csp24B4`8$YmK$)C?I>K3aBA2i^81=nauDNYOH zsBzsl3RqdEypeC9M*HB=X;d{=uKKZ)k#Pdqdr)3vb{H&C_$^}_b$4uaQMbm~eX4DL zPKcEij1&{+&hJ8A6!1^=n1Fs7M5MjB8SazmrsAWBxYE~OF&+V_bEK@H`bd>h4rJ*o zYc07{y~m#qB6qj`MzCwGlr5lmxpuZ8&26%0RU;VFSZiS!Am7EMLr`(XG7qGba1Hkm zGwl2S-SSlzFi&U`LA%eA+EY$dg7Xlgdlve-qk*x>Yfid|i~lCpfpz>tfccqwDNW*0 z1qz%%kbW1J7!v*>pY&5HAhie_>SQ<_)|><&Ix-ak3h5Oe%A~OKQ2raXEN2F!=DUvp zIsc!iyDLn`{zsvEB*Mc4fd1ii*nPPzcKB#|k-BsuA%Og7aFzjvsYeL}(4{2&4(Z%J zp`jh&iwSEz8RW1IB+5NH5gN`<@je{fjv@rsL`Z{5>87f{r=i8z4SrFF?_T=h(2op! zMcH_xY8oSAex3xDeQJnyy0qYdtSB8k$e^pXvhx#sbx^z-p0Hw)1tUp<4Tn5)cDRxW zfx9h@Yb~7?sF|RQ+1bt{-n8q>?zc_BB_cROMxcSAN0qd=tfLb4`LKTkJEy+BsrV*%BuMEqOQ^wqV08WD z*ClCX~MsaTW9@Gz<+OGY1Kvt`^PPl{+r_n9W%M2UZ>*`^-{{YR^kC| zh0iMkxAlKiPnJ?*V?S5|U3&lP$q^iRaK7p>Y{6JtL&pfPMQ2@VTX#R>V8QyTs>1Z{ z&0Mc~_Ciw!;m{fzW85K#w`p3b1ZS+l$*0TuS`b}5i0+S?f)*D?wOymwVWSKUy+jSI zL^aLy#N1|jetJfBenxS2PX4rf$X6*N2VWyL*&=M^057k)R>A&KtCXJ|Eh2h69CX6M zeDw0vTDU!td5J%jfYRg&2RBnvh%V%PJ5FTyaWo9cEFpM}Ef|z`eu;DHFTfy#mG!~P z6tWM%z2`}ov%e>l8QGMFf6KoI*$v7n-k50O8bwyswNNec*efmtqbw(mkf{(VL7k4T zFyG7dmkR6%UglqzW8>v~>N4~cK!pKuy^l@w1RXV5|7ro zRDKs{^7%D7(}cuS@v*FSc(tYxz=IU|>~tFZ$z=LXjR`iodzXEt9&cuCwg+$CzHJ~h zR*k19*$#m>;Q&=a@C{?3j4OUR9z97h6dHm-F#!(ze0i8dTDwCa%{Za zD0ZTC6|1tN6+sd>xFBlk4rys^yQP-FWuMa@7H!|TcYro|O=Hr?`3nLW0#mF~DH*qO z(8#x!RiE4Yy!OvZ!6A$@fQ89P0mw_a$x`_^z@79rad2?3v{d;}dQ=Chl4Yale>?l6 zihGqKEr(9Q=bd~oN!9sud$Lw0C*3RgZ_F@tGX4YSPK@<^|Ma8n2j?WPr>+=QBpV)0sj`Ah!b#QH)#fA z$wf^_n}GfH=31^&LI}4ZV2^V8ys(HMoKJju{W!^NxYE$eXLH)Sc$GRnCk!)Kac4XA zwn~}gp0YVD@VWvJ^LnS-=vMB$*aFp&R4s6EaLNP0EwFXOmH&g9dp9bsMCCg?-qex} z@m_!ydGe&T7ZtjZ+1e6m9ErNE*MRq9T4U1c%7ZI4pgJK5C8w@uW1?pA)ks)y-Z zXjaE@bme$fN7hP5*7f+cU&^k}7?|lcRqK?Mm1Xqz_(bJWvxl*TuC?_hFmsfGXYr|l z^5kVH!>H^rErp6654WE|A3*g8P^g-}b zblc&rb`#c!%@-N>a~b`y##mSSWj)Hj$_?&WqFy&!t-}0lAJE;4pO3$rg>`lMZC^sU z`Pmu+{ED|1Hnn_3e6|>D);j$kfTKX0B%V)?yUTyrL_0j%xBmh62wUCnj$r(3#=d|j z3X~+p{hVGO3ePCZ043Y*Xe_H~huUDkuqIPEUqypJC`1qIQBBvFR@cuU$s{H*5)HTn zR*;Ou{I0Jz{jRU}UsfqbG!N&F2vq)y)q(xXv81z8le2aIXWch+k-;y0uJ4uDt)V^I zzXO1)@Kc@3>#GlsFTY?Ir~c2s{%8X&)c&EN^)*>?`k;R|iYGwh^YI|evMjC%mo*Bt zk%7ISf@EO0Vgc=Zip1b%gFLVz?2eOZc>Adt=nmZMXX;~|t@R5Uw>q^Y71mNXh^XpA z{A=?|8mk{AEOae&O`QF|su^h+Y3XTsyL^=cYk7n1Sk}^LsHr_d?a%_J5iG3x@Umb3(#FR5AX9>J zoA-AT7YR*4mL>#Iwd)BD;Oft~2a}=WBrKrul3F|>s()%r7P!tqawf&NyZa&NRHP(} z6Sk`*pSbtNRgY4@F$VcAnq>^NZR#{hjK^fzc8oQN<;Xk|fz4Ek%$IL!`|!O`^z$_^ zBd15_h>6zP@^fcwIS^q5O~6`FkkF2!>?`5ma$|9JOlxOMD~-{BU`JbRos?_CK!bD+ z8oKA-5Oi_0nW*5-#*_iv3k*%gUPuxrfv(c)JECL&M90?{78`KM_-}^&Q;y8rD)>56 zMdr@>QyAV@3}zUvPZ#s~E(x!%`T&}n1X4=v4XK4pejZ0C3T8RK%AO=9JNw&wCl<*e zc#K5AFvnn>XfQ9VD8{XqpB&}Wa47DS+so`E<{9n zA7LL``tOB_cQ*N>E&JEi-m`zE#nr--Y_gr%)f?QijS9c;i+1K{Vq_~9tB>T}lxZsW zHh^oiTiXr{4I7Cg^@^R`=RPa$qo_y|G#bIanaaKmco2UcKDx2lGTxz++Eep%n|?i; zbGb&{{SZlx%afhTQl&cc3-Y(}kAPYH_;A^e-h|i*DY~$t$`ODx(W|o&YWRq5jtZGt znj-fG;VQ(Yk5`KWoej!Y@^|{cxM;`Rs0%Sqjc&bVwNW?v-J1l}zJV0B#oX`c^n z|NB)bmTCLGWUvzBv{Em3D3&%+Db}$p?=~78CZ2^3M^)$dA2PqG`!44{jZr&%8GdbV zK~boO2J< zZaknN^{VO$eZ6ezU5J9d^P z40$GJrN?2BDzr&N(P~^-?F-Vt()_k57ZAKJ`ekf$xW&}@p9kjaENXEpzhV0L#Kb*d)a)PLo22H#SatL2Zcd!cGp>Kw zVb^-yJ1c`@tJCSUy|hc8%)`wy?%I&ux!}|E{O_Ak#ds#E6D*hS83mnA+qC=T7Jx9d z*}dF^#SfJoqZI7!H8ijjo0pW^+Hn4HsX0B!?UO)hB(gxC{)p>^$QY8pmt7Pf?cl|!g+?KPp+RIeADXB8nqI}&{4?#3nV8;$}8m*aem!vpx` z(-9y+6|Gn>jqX(s>W^hLKw#RJFbK_jz*UXCC&0q*Q6qbVwo#B?qJuKdHH*sXqNN#T z{qhAF|EsvTq^zu+vMPE>UR`yRzmtQvj5D zZl#%9%Ke?S2@5tcab_xQZ#cY!L_R!VpLs-ZNfT+H&Of!s zr@9`@dODY zmCKu~G|vuO6MmGj3nf{tw3x594IIxitu{y{kVnUfoqQgiWv{xUtp8*LN#`(b|8e|D zuh}MY0^8S%wB6-#Q?}Xq8tL74tDe;05Kr58sJ%gLCP$ajet28(m}6p!OQ!NN>n zUasr$;x->k<7lc@M^0(1t+KM zge>MeEw#knFN;I^Ui=olZcaQ7KwnBKQWEmEp=5mnUBrG;X?tih_Vd`B$4ww&KJ|}m z$*IOcR6H&M=+B1=a}a3wbm#m5m@yJ>coZi(^ z&la|HK3@Z))H6QXFYOOsNdUiT|Fgz3vmeN?;N;b&zhw%TiwM|!P8Oo6eh>)25iTt( zZ#3%VtB<`}bp1uf>5TX~XoX6XZMA10k~5*XyO*0?Z;*sieRbBRd2KeT$vI@4w0!bd zzsHo?ZTGkZ`x|FW?~BBFk*kYq5p1t+qoNS4N#aTpf!9idL(u9?X}ly?L(avZn~PwO zADMqK-0OY7%Gx9GM>q1~*HFP6*3m2;%h@NkSkJo?dFgOz`6xp*tn?(fu!-SN8JP$v z`6xL#%JXhM&p>C06N^$A=i4%xUJoscufa9h(((!sYw;;@v00hP@#)#xsyZ5t)nuex zwACc2k0&c9AdWgjRdzLZz@)CMoTQb7KhI)OQU*~{!phyUonUEbs_1HJ*H>3Iej~1g zZs~5_6nyqS5*JpVb!LOShc5$Rw3g4OrLeWDsIqVq#85CA#kaW2hC;LXWGB^mU*A07v%{ODMqO5ET|pzM9gg5~f|LA04gz@42_xa4x#rr|_DE zsOEIvX0_#RJE9nzrFy(P^e8Z8zh0a$bN>U-P5T40XySjML*(mzdzDP=`>@LvSefVJ zcG)*G1laC(S0f@nHo+U-NpkxeT!SyNHy&BeSqi_tBAN{dn`GA;>DsvL9xsO>`_(|u z=%>=)eF=kSrSBNb`!@2jjOb%UInkQu)5co7?YS_n`l`>v*x0$v`or1Xt*vdWmv`%P ze{K=rx~pIYbaqu)*vgqMt^tC|$&Z!MKN&v~e*EFXE0v;^0-YR zQ5CVx^TmIYVECQtgndRXHKtA6;%xjm@uiFhWy@1_P37v&6lAIfN$;m{^AHs&*7E$DCrp zzNt%j*=?ZRc{Z!5>LoW_nugFvTA34;-#nb+&e}>n+@akghUF3@!|e*g_@Z+PhW=zm zJ4)pVK`;^%bnk=9uNcJcRxuuYlUACW`vDOPaqedb`x@_b5~~wzDh~;h4J$rw1a6qp z559=byZ{4bis0|yL?ieY6niYL0`?f5IwHCVn~UYBj9gpNc4J^gIVM_UJsg?(h_zj7 zt{mqgkI-MmUm&h3m#ZER=SiRMRVdR#wtT5skjg^MK4h`AKsWvc;p5s!@zuh-kHP@$tWPsoqUw6%k-M-r#fQk={& zE9LUSN}zRM{X<8p#THayBwc84PvtL8#msV*Pt9LQ!4`v!{U?W>ZNPkJbzEFow8$-2 z)>6V#ru7G=NT{MfZE{}sX0yRh$d-Il9_}YKOLnWA<>+pAugDgfX*RYuirdeh!deo% zuqH)U+WHe0kfqyv+x+O5%h5`Jb;q0q-4Vs&YAm=3RJKHG%9`yH4YY+txgZC0Iu8m1 zRZqGY{Sp+2RsZsDm>@6b6!tm3DFsVFJQ@6ADYYf_-xfbxa(Z)JewtriIT}uf(vVIb zgwh+c3h7?e3{ZSumk&^W&ZOumepP;A`lul#mH{B{6Pt9tzP`{^OQ9h&wT>>(1+7x@ z4a-^N%826uNMBSqW1SOM!jk&>v^ldJ8&i|NiZRaN>W{jXm%no;{J`+Z+%jy4H|y-?)sbtBu7r4JU^y6J zCW`58<%Km(VifEC_)W@gRtm1;t@7Woj!(ROxqm6nW%w#1)?Ys@5++PjUoUiQ$-ChYCs@zvuoa-GWSVIY6*#?Dw#vwYAlhcmMWPikS;8E)pVd_4TW&hlhy;9hcN4hG*|j>5Z~g zf*GW`Ok;+Dy*=e%C?zTXYy?R>x0&%TYYuu|6oLI!0VPaOl463}TWs*;Gc!}rLX>~@ zHxAmTm78nd>4|DtkhPNy?inCsa?$fMaa2|ye_tHQT@O0NvSwwObdhji3H(&X2{YSd zf`kq$MCcSX6-*iDts<#oW#ELFn>Q@E9;zDyn3><4yIV8}oFtH($x=nZG#v(MtKC>) z<7{<{re|vE0ha(PDAr)~p@l6==k*`$4i_`+nSgL0?+`l;cUolT?=`qk*38U8N=mpG(xSmSuP_MYu{D?|;hm(+ z%q?}COh@tb4;P0Uy5Wf6l&iSwcgz2L@WPr>MCHg}4j%lE~%= zi%c<~`17VK1|hMQH@>_ae}@7$BZCm+ngCKubHbkt^i7H-w5lJ_EE=r<<hT%F&VPLDS@AT^3KOoh*vgu`Y@Xl|GvRmtP zxxBy9>*)c8V6)%cwoHFCYhA`9vc0Bl1z-7}pD=1Y&O7hde7nuE^`PP6X=h3hw{sW0 zIKN?hPe)zzeC@n%_r7?6KTm&;w^cIRGMZ^=V=G`kT>ye5r{Q!#Shn2LMg0T<1E42) zZ1sc2&|g$`R=mk-&+4q0m#;ac0SMKe*YZT1^ooNOj%zoc`j!Z;M3k8&E@lWd}MKGS)A+vr>8$~ z1-=3F_4#g)%hq=Rn*XUT%^!_$IG!_L9lNwTtp=^`gMMSTPu!(+niHilY1O)c>QjWe51Vlm zd;{$0oy$%3M~~E|#>S1$qwGKks8#Od)DR>{-Z=1%gO9tCkkBeu-VOHQTv{@8p`JR< z)Kxj|a}60uV(eQfKa;Oi1;rBfFy$!)1ttA3Rv%_&?h3$NX)(1~0XQ(--J3!3J6ud% zC^9W7{tE10@kw-c5FtZ;78+SesilYzL9uUoJ~l4$YD$JaauBiGuB(idPYJ5(kcKaF zd%OEUI3%E0Z|e&YGZoXc(2}+UfcWonz>%JQY-v$OUtZJPRtLE8Cfdijdrwc$kYVBh z$B@=pP?-N7*$7hXc$PUm6Ro+W^$Dlv6+kP2wLYLQbvieGAXXsy)(MJ9V-uO??Q8Cv zb8HT99qzkiZQSlRibJh41F-J*w(BkSrO)Zr)oZQxyLK|qeV)zdD=o4&`)6aI-jvPf z^U%Z54617{U}e7Ud;i{}%lDZ3YJymx1vH(2ms06r@%id#_q%7atEjluDmD@52#zev zm@^d&S}oLgdp`6GLc1>>_K=dk2>CxGWeKdGm!rR^axS5TckyT|&t zXdJ>lk?930{Q&Zm#nMuN6z5vN)*?E_t zj`Kb`ocsPDxSn7J#Fv}(72spC7^?hzs_&X5ur#fxqBO0n-sx+5xwiFhtD~Z#Vdr6? zWT(I7PeI@g-zD=@dtY-9EDY=uESw++u+Ne65X?zwmU@h|bpKVfpDY`6MpC^7;jDQ9 zN`Y&$iI6aisp5uYHW8X{!pW?2=zO@^LdPP((uzZh@zTgdz5$G}YKW%OBwZbKn;+GJ zRM70g@57@H;lX}(V#Iy^i-^L@Cb5G> zl8zD2`&(~{BqtopvM}QF6T21KZxkf8TgED_RvSVStPoFXqab)@5&F0I6mteKk$QSg z@5282KSHrkY^m*Z;9>=nrsZ&PGhe;)|NMiR{%%?Vfh8kZ`hon4BAs2ycI&qxvrmDD z9W41WhP9F~+0)5VqEJ$WM%5ph1Vt~M2I zXHe=4;aMyX1!3C_bsO{0n}e7Q=nY?xw6#IRdLt_lJt`28zlRbu-G7-Aefrx`?`$b6U4co$<3*euf4LYSVy8N+)Y>#ZnEq5 zm)N!1tyg&z8~&qLr<11dP?=ryC50_arY`Jke-O4}n2ptDT}ZonsJ%Q|y|g;|OoZQ3 z%c7knp5zDa+%;qlXc)?ye1lkzGcwKgLec>wl7Ne#^)6?wS@H^|p=# z&%MPQzy6}K;UBX2w*ACv7&;2-TnU%=uFy;^2)gf7E8${pSv#0A1ogu&NM>2^%)GE-5NiCwxMlhNG+wD_-HN=E+2*!Cb*P@7Z%%|L8;a>s0 z54F1qjclokq|qOm>-u-h$7RC}G8!X;f*w`B^h-?%44K@yedUZ5OJrLtHNvOt9Ei){ zzewrPoOxZuM6_3$uXb8#nRW-%I1o~8bxu1Rz*GPDJCI8C2Aa0L{szt9FlBVvonhiB z*E&P?2OMKQmUulQrD{4ixw>RfOY~Z*GwPpldfx4nstiRnfh!!3l3N2ukTykBbX8m{kH#i?jz zK$I!+Gz)RC3b3&$SZl*aM*T$1Ob7Q&sO$Q4t!$!5)Y=!f5bMY(DajZZ_yw}1Q_!r9 z{cd@5uu_FEY01dFJ*8O|zfksrBTgton1UA4rZ{ixkK&{gcWRoS7MZyyaHYTnsVd0dfra3(d&d6oiaJV!AG?P67DQ8J&5+(LIIkKoE4b>M$c@r323>3eT z?^77F(vlZFwn@f?wvo~I%VK8^F@#c5u>p&e)YdYxnDRj--;qEl&C1O!_ilPP%L}@L z%9EVr>fab@_I{_y0LGE)gm}1wV$d6=F9_-bL-`y}Re@tTf8Qtzw7Y)rXW@L>B&S2; z7kO^sBv8fGhP_1c19t%VQK8?0baAQaLa5^s@xGT0ZyeB|Xkv*ZsVq0;)(QND%cF|g zYGm+oT$q#77U2j9at~I)WJpl_R=3JLWd`JITi6{1qDHD>EyJmh?K7}I4o3c-tDN;{xy75jXF7iln)WW&q{dV<+ zA|X*kT!0PgF9L^(%WJ-YR^LOw;XPckx#}5vP6})A>i45{xWVFJ18_luBk@gb%!;q< z{<>Z5A9Mf<`|}ta3O+NYCp=JO0`Ppv<#wC%`BxUZp8yR7ZcClc0eI=}Eg`o9Mbtth zbe^LXtqS;-lQ8a^F`>+;glrgn$FuW0&o;zP=TpXhskBcx{>yS9$b&UgBj78DQ=fOf z`hbLBcV=QRTR!xcxFg#3yIg}Tc+dW7R1N$FO!04@2W4^Rfl!mE({mH;y!+KB`{kKR z;juS1*>Uz@gqYxb4B$OA>l_Y8xrm7Bb-ro-9H{5pYhloP#3C{|W7XyT+B&Ao>nr0n zyoIF?hOnExyAidPBV~p39F^LD8JdTs&!FAyvG|neh%=VjX>gY@a1AQ^27vy_ZPo}h z)r!9{EgnCy52UpkG|h>Lg#Maxx$AAkuS7yc;qlO0_!|;(9vZQnm_j265fu)osS1~q zi8v;^JUm3i!<%MjqvYqJC1r@@eH$OI%)%-fczbg)%J+>{vsDvz0QMVDuD5EoKAPwz zCZ=bm#bzZXDk*EJYN_d{sw%1`WXB|gR^})za-|;Pee?V+b7Wa=X;~&MgY*u`A^ixI zL|;!$SzQIvS>4g}RbO6@y{*k|Pc-6lecAH5YIC=Zuc@{3Zmr1J(6SbQgU0mSDXQo? zKEKQjLYvsms(QZcfW*24J&UEjG_lgD!&2&Zv6ouCD3Jld0w%7uVyb|0b*FbB!Ra zepqpT*$FX=KKJq7T^evyAYOZIUiT5&1S8VtyP4?!U`AQcNROCTJM?YUd zN*G+p>XoxncZK%xqpn(DyzF`#1Hr^10E4>S{`;G(K*Znj_ZHARrvy~WaA+PAxAH%< z0aIW{83{_DE>K`@g7ED1db+v~?n%8~$3a9rbNu(9th?n7oM#D=x)NwpK`@n@&Y7#nvmNlVVv!9#pEo;bC9^HZ$~)%U^tOi!ySIW zBT+Xf<|2#iG3Xw!%s{p))DAJF8De3%V0D@S9eeA*ymFcriw;i@)7tt|!?;CIoOjM2 z2eobnjb|z&Q`?Yakq#HFT&SQ@hla-HW{2LttV2UTWyqh)HN;;AtWseaGL4=VmQ&sx z)48BF{G1z1Q+3_azdJ~hsVG|1kTZSG{=sqC#<)qxL#Ec?K{8ZTSC=CG8y2JL$!iG{ zQA;lKY4?iFGG}6Y{w+G3;`H;R7=oB{>lxY;|G@6CgR`QX;>Y2SQRGnS_KK~uvPF`} zEf%{^xAb$M@#w+U)cZ4BaCWKDh!?}=^Ca;NZH`|{qaCN!fVCiv|2dyM;h{1<34YU- zg>)yLJT@MtH0JknU!};wXof+nntcpm4rmT^;sMDYo`?NGc5K_VFy$Cme=%NK+#Zz+ z#dH1QwkquH>YDu+sp^xreH1x2{e_7F#_{JD&ld9frS@`EM=~=`oB>tX6~|1SPqdQa zG*}AlF(Bqc*l5;CmQKUuxzl9gFkZ}dVT*a-dbT|MJgAy=D(AZ>i@fXGmO0(o5!7Rn zX5q2(TiQL5E`Q(Fa@0@|f$kQdMLn6QSL|RvC7jwT5l%RIl!BdxBT;E214Uy>$7UI% z6)7z7D@~YmKRZ}DxE+%YOA~WTjXE+e(3h%VtHYqZB2e1Wbc>3bM5cUN`&R~modAM- zVD;)lrSJ=~dYElGqYjRlvi-H7Io(g>i;$MG-zH=>pWikj25*f^P;bE-wcwRFk|VHg z(8W?S|8ofp?NrWug{s168A_q3yLvU2!e0T*CP4WFv(-WhnrVU50(M*K!-fCBno6H} zTFU4PF%DgGkia7U^-D>d#j8{t9bQ~u5wNuH9A?WavxtVV`R$@G*~ND41edWOdsSyiYL_-gpci`q! zM@g-v`Ac^NXLA8(bp=eEwpN_3R)$_mHfV}uWT%5BR7@seav~NeLn)A!*KIpE28QT5 zu`ddWG0R{C^aciaX?aA?e^|-N=->+*tq6snSCI(^$_Bo*MV|m0MFV}|O$teD2munI za|y3XoqqssbZ=s*l$Rb+J)Hw0rld>^?Md&?N$4n|@!HW5hhH1J)D)rK$1oTHXis53 zZj6QaIoYXF(6O|D3Ov8gjudE!-mTZ0S?a8ye9P_Zk4eGZA)ld*;t7_Ei6Yks8=qQX za!?2V9_QyOKVDo%EJX@;Bh-alnQ`zX#2m&OC~&s*JW1gS!hW{G=%6)l#atFq`XJOE z*pncztnqlVu-R-$EsY$M;J-21V-<<@!zZr7dU>y=(nLutC!FAoy=ZnOPe)UbZJysTrpPL5M)Ko3q$L9U@F&pA-|5*u@173X zQm#Zrrl@W^-4T#fjWBBXP_=}KVf48v4yw5tHE#hDAXRyFOL|OKi$JohjJJBPW<$yn z^dnSk;9Mof)%LQao+rPaVmNr8i0^Na3mj~{urd}2Ho8Z$ zP1y7-yqnxYV89$^Ppc0rA$_v&h8qaL=- zCxRobVyQ!Fe{-$aR(})i{{P8^o`s^%zK5U^zm8BF3;eU&$Pvn?mQMjqsfBQjJwSi& z$Hod){NutZ5&88`ORe`)8k!i(;S8ug0ryeLl}7;BwBvqWuv$1!${&mtSq8QEZuRUn zKH8=~Z@v&SyCAncJ6)NCU&%}030RGm_!ME1AtnAzeSfl6Zq`h+3Xeh*NF+O)QyMMx z`T_*+$V6O#ZJGn}aTEcE4Y0wN_+28%Fd}FwrA`WmluR@!eOGL)K75mbgR=TNFzLFF z#M9V~0M~M3qerKequ?W~Ikiv_$iOf-B9DGO2ktrGq!v`ZPzg+eZT$*dnR+45vPIf* z>7C|hTM!vtvzE~e4#&+av4|w5EI!|+`f``4a7sW5JGL9M=CGFrO?BygZ?BZi%@f8kF!_>6@ zRBAz6Pgz4pQ87hbBOzNqCfOf5=uwkvF?CTBoRf-)!Is1%XUE4T`bXc;h1jpjslEBw2_b;wDBzz8X9Y`Ai6T%a+d$8i|DMD zCkSjUs|3J8|G{v{^Pl21m_vf|(o9~Div>~#Xe;Xq9sq$#ysHP$(8e!w&RIOp=X1B^ zg!>bjoDQAWy`|*v69haUu$|ljhZKQ;*Y&Rf;62hg<#esQ7WN+N0vD&N9bT7bk@WXA zdhO#>GN9)k@~@H}Cv1baFzvz2Rd09yJsqh2nP;i#Ge+v%jouqYSj5t{+}9hfWY5 zHqPcz&th0Np3~L4TkRjm8^?L(xx2cYUc~oX%W>rOxjj3sM{DCl(xTYs8`aEs<^+?gBO!8IsOz#k-{G%g~^H#rV<+c zFxMtqecd!OBpF-JzB6a>P7C%-kz^Udt{0ka*7P+|>7p_@WZq5ziWvD$H8cED&Vby_&y{QqbQrNJJ`i!i(W_$dhj4waZ zE>GOS#Y-_Odk2~5ddHJlGgy>jK>Mq-h2ISlMZd!a;j`c(3NARxKSSl4iFane<0mqlEq+Z5wd*sr^ES zOU|v7B%&1$)5g^;3264>(`=?0LdM$+NCRBqX%sr~Es07ng~Fuo-Va_d2#Jz*aafgV zcUkwVVL%I_!w*Q<2gCp`X_*rpb>a6pvGVECQ$p)Xz_I)$CkT&jsC!(YRI+R3Ux@Y_ zYH4}dJhPGUjFG!j95ymIKw~5$<75|!x;fRR;KUrO%EluU;SN=IWKrz&sBFr@WSp_V zAUmQS|0y;iLMz{8`X~WS3r^IgT#cu6n0WH-ujKOf`n6O7l?C>2?8XG1*jqonYM0!Y zQ;W{}U;=2V1e%cGpkF4&11m^;2-P^bxJWs{%UMu7!W=uppIi2G^+-iHc<~_UB`gSd z7)BAo2(JN>7x9|(8E@aisSPq|ZqU)%lEk6eiyf3*GBB);2LBDQA;mU=K&gj03rDtu z2iY)?mt!~v*;566E@asoc&6RMQ&MR&uKm5dtbu|aGT8a#sgszI@oD#k264q$7DMfk zi4w7|BeTH!f0cZ&;unbvegJOGXQ?=D4<1BG6Io?i>e2&!1!YeW;6(zTvB#){DG@$G zDvP0z9XOoONbFDIl#(5eDVX*ZE%izMFVL0_`6j?bdT>a!x2ry6v(!BOZIMPRe5F?d4m$(BhsS(nO^@vrs5C_3onx-p@!pEwFE}^F8hpyTx zfq2ON!gq*FD&obct2NTMY^-Mux)EVZ6WI+ckJ(p~Hp@&?Ocsv{TQCl;4+(kqi#Z-i zkrGboH7I981@i)xI?9oPoQ2+zovgm8E=BtIWjYC_mhrpm)<6GioiUrp;B|cJ2L&lGWzFLB zDQGRN%B^iGZLBS9ENyKpjU|Kzs+F>;q8CBP>C4el+OM>u@U*fk0C=JQ_3pRKyI(Tb zzh#0VA>v9x7Ctr(dh*J8@yZ9THA9xb$SqYfI7RbRAU;Bqgh~bx7Kio3Ep)+f4 zAIr_9!E_1>6iKN^Llh4BNrS>;dNE~eN!wFaV5h1qWkS(I9+ky7MZ+J+$^EvGg5?1z zGGc(V$!dK(cHY(97WIC$@dI_#Cc0}xq?m1gv0J5Juz74r2bUGS>v)|byjVAjkICl6 z5rG|_)iD){Vk0v}zvHnQlMAvAF|MSI_uIF_`5dA5P1d-iCeWU+;h;I0nielfrGA2S z(9Z6snOM!_ep)MrRa?xk_8?iLLFR(BY#19tf&=VB@D;b$`r8sO-l`!LRUM@P)f4#o z>xC!Cp`%3`Ig$Qvv*14M23;DA`g9$GR0#*`5dvd-bAOG5vQ)?BBx4?GW;gj28Sb2$ zUwiJaTlMwb($0BE@B7J{6#87MrgW%(9Pk*PTHU7aT$H?>&W_uyPVq5?=iF@cwp&Md zzL-=t&mYNsREi{3C*i(d#6QBr^+PJ>u+eC=heiqP9eYc2>7-f;hL)5@^0BLmfJ8qS zoo)5)n~m-3;m!yEhkoRC*a7W#FuY{_$PF_~^Hb&i?A-T42rRm(70(I2s4rKnVrB`)|g7ZpClwI&wtZ6+vgcUb!s7$ zBli@DG=rmwW?c52Dz=jiq{`lF?s=v+K@4O5g9xRyB*Jp!F`mgZaK9la}^YX`c$qX6o z=HsKStY62{5$#=OS{*jZDCv_c?sS^Lg8p99#)efF&_;KdhcfMF^9IVh(&`QF{%1+b z8-|?cU8bD!n@#CxN!c|Gjk?#bd~F-o-5NBr}8w)!La}Nv4WcO=vLE#_;Re?#-5Y=gJ45W3@GcNwuFPS=rIwYj)dq`4p z64w6C?hekLAx=R>1t$knh?|;{52)sYI)2<%FF@J@t|+KI{iXYDQAQ^%6Co|FsIjK% zn{y^O+p`CER9tW|oV%CMkTBTx3>x`IcjtX~51V^)!O-vF5!5ryEkVc|yt@JV4j?w? zTXU(aydAylD{(xryDoGrMq!T&*#M;Z!L~GT2tejC3vyev9x+-51*K0zFAjM%Sg%I@J>1Hz`K zh1{m3;N^Ml^Yykn(Cjx4&C1Swl~`8}M#sA1+=@T%a)0tOQum%Hf?!m&If^_$KV;2}3v5Vo>%+BqB6?I9Hs zA{BZ`fnFq5L_;#vCHup*g#s7r^f}6V4N`*t=X1{|WIsOx|IZ>D$hq`=jJ@z3iJ~Q; zaJ`hLr^=6!HQe`e5_1fN`876D6@U~(5}+L$JR(iy9QC2cTrFigK1`(Xc-=NBCs}@DegVQ^=>@Oj0HfAE5` zpz6XFX+<|i%;h$+!?u@2|>&G0wUPag~8WXp3PLe~!2{)2Sp z3W~dv)b2P)SGyJV&hxCbpvf~?lhYzZN=7w6HA=RHr4=UGe}Lq^Ns5q*pk_7WN4~XB z^1uEYmD-I6$zM2!mDm;Ug}d-CDkm5%(mDv2V>8~C4{?P||Ez@ww|76_EV&)KbovIO z-D8sFB&JNZh^}aDb;T9EGZw#jLPl(QH!6Wr|tp}ov1CCSsVhX;3$T`!UPJw+3I#!Mtl>h&-U)LUMnizwgg1q)>$awkp z?^(?tTKUSF=K31=);?;_GwXj1*HcDRXTuU zKpw8}gr(Au=aaFjKrI4r4ulH(mndip^RdF+ufD#mef_h3Jqm5uT@~Y$j$A;d(SDQwA-bnWk$G9`L1%TmYQ^LuTh4hN~dGVoyehZ``>QVbuwd?Nbpv**GARS}iRYk$*!+4OzP8D1M7h0q2>0du~E z70}QBv-D?SdSP;9a#FUXtgDpBA*c3EP{dl!+gi?8*V)_J{kCiRS10Ulp*v8#Q;KQs zAZx^=Whciarz4L{0B-Vnd~$M3{D<^Jtjtur9s_evhiQ2vOtE*@=*H629+U?0p}1o2 zE+{EUMZCh@=WL>WL`5rEg^L9%VOHpd`-n|SC^8&Hwqd>a1t{k_e0qG-#e5PFn)pJa ziv69=Y6|s9l+eT+hle5$%5y(98o1DrP_STgFBD=MPINVdp)@_2vwNqSDV4s^8@dOc zHu3Fn;|xztKD(Zygj4lHljaws;Qm3+3Aa2$3=2bCkz-deS;QnH?Cn`<9vl)0gy5u+ zY!jo`!c{MwxWF6A_fv$%#t;wW<@tx@BcNN`I~m4Pawh*&KIlnDPVQ~CT90xd;P}K3 zPzb-B7NtvL&!iO zPOHH$L%it!Ud)`2|55g`%$F>V`&}({cp{OgnyU7QBbu-o4!U7K1kHpU23E<7z6x3M zBU;UL2%?$?6}>%NZdN~EgN93u%;M~^I+z6NPMX81 zdTR7Sy+AkdA4JasH;2YlvbcXY`@u?I5$0xspYZjNn(F!Q{ej$9Iq;hLo;YBf6x6NG zW+qGyO3?qCf#NX}u-IJ~IECs4(BB?evKV~EV`eTPi|z*ECS#ph=%A9Bi9a{-0HjaA z;R5n4?raP?IUF*+=x?aHsSkvOw(C+VML%AF^L;i_ow~qHqeIak`^9_8QL_{_%Qe|%&8q99Pbuwg zXR`ko0Dp6LI_NjfgzgvDmpFGDqH*p{i?uj+nC_&}Y_O>Z*!+Da?FK+N<%-zL3nYX~ zR&=WvxYk{{76uXfF{74YtOzN!6~ z%*fm33S^%VWKpx*e_gxUJ?l%Go(2nDygHWbUlwxr^!2(uZcbOJQO{q2?C5@d?fG#w zVn3P~WY|pw0p8dD+1|7MJw45WLjLAKswN(T^DK|+DKawRVjDw7f&xu#ItMicVCj7o znZ3EZFR!j{Uva;5koY_BZeNeL(D^B=7Jj{aUtwv2!1rq71sn-%3LZQHe!d;&)zo$n z)PGaYz1=&Wc}8!~V{ZA)wXt%bj_P|@Rv_%OyZSG;!ZedP&AJm!yWjO!(i5(O3tBKZ z7D4&-68M-kej*4FsM#)TaQDd-LdtIG8s!Zo zh`d~)SR8g8?HZIy2vQ-X7skbY$BbH?5#kk$WqXZKw16D|ae-2w+TwL+g{B)exq%8( zH~phzxsxa232$jq^E*jRB%P`v?}W=Pv2#a#m|ew6b$}ikXy56z@FtNaIWGwe)Y%$*eCgll>ZC zd}3)|7*Zl~jhf2E@V22)Utt4V`$tT4`e2oZP~l#U0Em6oFbe*bFv72mLn(C$f!4p;CCsF~ebW#fwolmNuQ9^}Ij{QWFwiwXvDQF8vk3v8f zl!l@SP}uB1rlx0c#2FnL%l|{Si{C0;ZD>PTKcM@T5(+7*T>dz3=HLrTl#4^5to)fz z6jEYu&zg9?%CWAqMdWmt+OZ0aIVo+pd6nawFzw7C8wGb_db?h+3SEvxsp+s_pKw^c zUg1NHj^s={fd!ZqqgwVkSagKq`1ey4GI)!#7ITo3LYAf;Vb35Y! z%PG7Dp&CNT1?hP1EI2uk`7o2pRhmsYd#(emi&gqAGpQI3Y<#;!vDaQ= z(!FcE>g<1mPiCov17b>{*q7A*Y@Uao|HDOP6fm}J&>^bW$4Sl#AgNL2=D5Z!(9gb* zE1JrJ0zbz4bvfm3-#D1?r+QJWmZ(@rXGA$npl}@j$7zAEa?!Y$*=0Tdw{FH4SJS1m zc8TJLIY!Nfm$t;DK+42WtT5;pI~qr5b!zpg^3#P?{EJY3%P;X!Hqp!lbkvy-RG)%Y z-cCqbC0a>RW+mKg6#P6Lb)pM_A7LMNG^58;w0}fBb}zeHU^8;;5-kR{62nbVqNOvEtE-tS2k-mPQo}XT z5I3cmq>K9chDPS%AXW1z5r>nZk);}a3ZzStY<_DN=1*P>E^2dgdpA>1)hKE^&nyF`zkjb}2>LoiL2uN&J=RBL%Wzh|V*hD$3S6l+1MQvj^K_#OPL)d*HFUYmDQNeH zEkK4m57Um1kB%=ga4ZL4na*|$j+8V_?nVDI3nfse(|&)S zup#|`+hh4Jh?)v`k(!R7mLj z%W0H(U`45Yf5t205AUD33b>=XG8ul8EXUmm_F|0S%hb?G3YzQ` z<&gLeN`bDE&rS}`p^P{rfpkMG>-&@tfihC(W=?~!zD`Do!iMYy9s6&Lf0Ckn_lvdU zxb>#ua7V^CN9XbiL#0#AnK6FC4Yy0!U8eAtRKOZ<1sf?WhX8l}eGMTa77*0WR>cp3 zD>)g(f4e}IYi<**Dw?dnYL`X!^khLvo-PIb3pOxPIEI3rhlPoOftwcg7i}Dlu@F&2 zOUr>Ft0+-4WPsP9?iN7dX#{N2*5vtL4BB%Ku^}5sE_2^w9J8Y*w8E`+Q8iCRj-jhA zcQJf@RrQE*Yq)5Jc_`#dw2HfpGd3viM&MH zy}X+OgFQk5D;7KOs<*)tqVMD2(y76W&+t${y zTefYR|KI;b@4EM%>Cq`90qUTO8yuX3|`!XD|KQUn^xPM7Ds?JV~9lF zw%IyK{=fdyDv|J7tNTv}G^A%E!cqXE@>>6Z86-3^>gnUl;lrFsg~ldMQo#bD_W4^r z9#U>wg52_K;V_^K%Icx!4>TMKDbG;?Tc_kZw#f60?E||D|6UK`|9z{x9Ea1*=Q*2z zgv%@O3xHl!b}lIikj`)Ke2H#p+IPddw?N?-GkN@we`mZ2W+S7c^cJ{U5#|<=X=!7l z3Uz&>qs%%+dYsM~t8Uk8&S&?~f83?aG|IpK%jR<4U)#^d{-^pG0udu51c%?w1x`BS zv*_0N97YK^_s5Wn$k~h%Og(3m6mp?){}`_*t+&YKz1cq&3;Of+WRti{Fr6b71cy$_ z8O5vz37(JgbOtn1Zkw)`T5MVravtj&?Ni_-R(cG_G z)^D<3s`V@`9!WOP!(6QKoo*XD=GWi-`;&11Rf*W$cD2D7m|e@LJpG}dfWmjSLL0Ab zTpY(h9dn$OcYm@8rAbn|1*JJKo+adZxfNogC8iZ$W!UQYx->>yO89-~u#|6Fm9w4; z8R^>T+BrVnUcbX@cWQQIzvlBV{_KP-&n)Iry4`(qbMvC2IFk)j70!BtKCyD-6juE< zr_v675iTko5jG(f78-#^X$>7m0}UOqZ*F)!Wt>xp|HQM>bPj<5QlM6#54P1@%G2r- z&7-ulfrhaitu6z@=#SFsvQql0QusQI`+oD~CtNX9reQY{UP)+n05& zE-tOE&8%s=KVF5DU2O@ip8n3NOe%zx@=UuwcM=)XjA&`ZGFF#d0w&-NlOSFb5-NU_frc?%ge z@O?SkUcRr+_Pf6MsJiya`=+3J-_M?|Uf1<}ciUUW|89fzDOQ@ed_<7grY-&0&YhdX zMw7I8IfLxRZSByOVSKD*-TU}4sNKVGCMfhX$7ES7b(<7DE~N=ub_Xu^N7*(xRIS_3 zf0l2<|FS`KpSkefH_WYDmwhiUw<=|@sh}@o9xP)WVj3BtA61Z*Z}WLM=z@N}KLdto ziSdc?2tU4&jF39IZ1f1A^+6c=N1w5?X++fvj(fK{0}(dvy2=7pq3{PTN)5j1)RUA$c|JY1dU{u{*NK@|$8W2D2db?qDkLq6ir@-VEo*c^^@(~TIJ_H! zm7}95h5TbngGqCoY4Hus)T;8)R=BUc3QdYbk(gO=W6_09n0Bpa*{!9RsczWVzUr*W z+74ax4(HvP>+Vf#|y0%FpX0#Bf6oXyS=@#p&=Uj<>#LzPPcsG$LX!PxdA_+ zs$_CUk79D+()+Djz;?5ae)5YmqDe*J6c(^ZIK8D-W-~3gideS}j$3T}arBsMC7Sjy znEJch(A_q6D|NC}iSeAJGgGQ24Dk`7dq%8gAdapar@~6PqTY&xw6rws)Qn+VPH#Hz z+6C1iYPa1~QxkdbFG3v7OtOrmPGaE^E!0A|9;}?q=2Tj7wuuXKO2$3vP#R7kPGl;M zlyC(x)eG~vk})U&*=J?iZt3s)M&%Tx^iC8X`sFC`m*b!)2=lt7BbfL3@J)+Ua1M>#W^E1@$mYk;mV_<=QjM|ugR|yOf^a*Ka}y` zS<5DqBi4dS=CMp!eN=c%`rh@#xW^uvH`HP<4XYpaB_yxU|4rttSBhu)L907%EwWE9 z^yd424CT9g{I}iRK%%|;^Kl6I3MG@*1On#QbxGqqYe`g9$7IyPeHVaYljxrAnNa zIV&-Z0a{MV0*e|vidY*TFGq3s#4y2+hLQf19RX+G3v%;zQRa^qmrA#RKv_T z3tA%-u8kmAgDHiO@F>k>p01Tk!W661gj3T(o4Ym?%lJScO##nPPs}N4bbLt3Tw+a- zU;p;uZS~9j8T&`3?qaf=+m-ea&}*|8N!3>PtO1Fh;|le8Ko*q#EHLQ>{rv1@f4_2M z1>~oHSlgA^{PJAf*1E!`q`I`aysEOYqKdV;im|+u_1`}wCYIsy%E~fermm{I zw6wafF|VzzA+MsNEw7}5x|v^uNrX@0l%AbI_|{8zcy=a3%TZCDlCV5O7C+uTyTfhw zA!%fQ)$p^|bYgS8qon5CZ842X!>grZukwf{sK6o&V*Bi1bwRotJy-z z%ZK^TJ&E}Su9GqSPA^M@Ty0&40Jt6x5k=5f@U1sO+ky$K)&7hU;d|QYkR4<`P;DrZ zkPb$ph{@hy0LNkAC0ykBafV3FM4i!O3Q8rhr!rj5FxXjUDO7S@L=u@?wrmefk{~#S z`e*ef6_hJwfd!nX&lYMu;La$B<@&Ptm0V5;!qPR4P|-NqW$DEN_%pz<_AC5dkT^DW;I>JSNnRT0o1~0SW=>96leol6$M2V(o{pfP6`u}A z)QIRyDxTjT&NntFI3388!QPaVVn+6P`GmB%m_+!*kkk!g@jovJ!ANN0e(HfQgR(!> zW!P~eBG4kDQKOgxT&zK~AW`6<^=K*m=AKLD4IlCnqOoq2oEBEUe?YOJ+IN3*ngg z{ZV8h=39fn=2J8Yhuu{0p|hoOhOkXk)14Jd>uJoC;36-pf|wn?s2lxI-SD$4b)mzz{D3{MYpb?B(L~Sp))N#6PUdR{HX~UNf{{ys;b&!y~$NH z215Ra-D8QwTGa+a!wO7{gTEcOy>xY*Xcu)l9bfxzXBu`I8WJ03c4lTW2oD)r7t<`q ze~tYcVP#^aAN|K*{CMrenPFY7OKfxPTwhl=f+A!*Xw8dZ=c%k@A?wp-P^o{^k4#t@RiB#Z$BR$zdkvljJVHD9-5Hi>K$}zjgoT-PhxDkw3n#Cz~1jv7P3O-X*)!%PEGRJ07nt zSyZz{TAr`IzMGz0nOVG{ts&Sub~a!4<-hHtKY1-@WZ&H0HSzFhCb>1wY2od19+s^w zld@>^d6GuY8nE1YELz^5cX;`rYvfXP1WGSnjMaZx|3n$~bA=^Gx(#VexNZ6MV!ZNM znAEpf*S?w0wRy&!cdlV3aW(~C6Mr{x*Br;ZaHn{Eu)~w)a4U^zUnyJI(d>P#_o5^` zr$(j5A$U6A*tC~}LC(xpfWTHC)+E-ChUXXgU$aDU5LHjA8MfsteK$=R_e%!RZ!A^* z@_zE~ShKwl+B}CY&bGf8Xcf^(TMoEeP?8}`DdpX2JWYYNnLQ{Qj&AbWa09e6Q24#j z+dQ)?YOn#E$px-5afFCJ4hfH{ zX@ib!k~1=h+MU>7qG|^^KWq{0kq5`dbZtTp!mdAfI8h_?Chb`fu~S6AC19HWWs%<; zgsR4<#L(Y8jSirx0As?Jl|UaMnD-}11q<{a?Nnm_tL`G2N!Z~lIAioRLHooZ&c}}$ zb*+ag*S9WD-?z!g`n69w$UQ1lepQ)r93hL2+d8MweylqWkAzCKN5h7%0$X0n$)<*0 zGgwu&axlMjP&_Y=;ww4>v?Mu({&Djk5}kh*mKfEMYO}J$0}dHEQUY43 z)-~}M_mW`}G-)MhvQ>dvBcLU2BA!X(aPW6Ik?gu5K5b6yWxAK5Q=gvV8 z7^Y6$1JlCUfD$`0l@M=@#`pJC5{2>|d4u9W42Z zQJ*5jb(~+)(b|ZnpMM7PL{I)jk5-PF{g5EZWekS}U&j9`SV~|#cS+c7lOrJD;A-;D z&{>Wu`TqHZVdQTF;|}2)Qq|T&BCUhZk-ON>z_%bVQIofAG5YskC7XumB$VP96nXDQ z6fdmbtm4Sj&_FjPz8*dL1&7d-efr+kuO>Wtba%{YDeSx0@<5IA- zP+OSO&)AM>%vh7+3`}bJxT^9M{|=&v%CQQ{ZD9;V>MrOKbaYJn%rsw5Y-Ov4$CEvk zXjVndl9$+f!HGyih!mda>WqC(gp^i{Nr|^(;rgpAVqW(NpJM1BSj#lgw zbQ8maM$uE2h(L80=D|pW1%1ktMNT0zOPa8uVJw%! zz{XLwpkL}n*`IGDnqvBGWxrgY+Z|6k6-6}+*@pC1PjPQPdbbP7z{ja6@Be;VZgF#s zA9EG2SV|WqJ;nLoN?=`4UX8y|1_n=EU2Vm0yH+nUW_CO}|C71})(e=tHEj zM6jOY5N)U|sZm+TGh3#JLeZRT>hVRPJbc;*97+@Gb3b^3vOeTI@q!Ef;@|{2S*u86 z;~7>4YOKUiwBBF*T?NT8`L47Ju5Xf4u7Tx)*-zhNECH0o9WYN%wg0RS+j~Ua7ox`# zimR+KN$i;7LrvTl9KSW#GRqOl1W{4F$QD*;jyZfirDOVv2``I-Oz1&oNYajt-CBWN z)j<}@>e!bLL(vv~M@Dvh7PESzrSiic-;a*9ejJl#bzn>)kgvoX`3|)h zqlH4&d=Sbvh*|h>R+IwfOD{{Qnj}Uxk{cqDlLeN>ik+8{zWz;D5JwoAv}py}3Hovt z0S+-X0X8lPIWY-7{vRO@tgMJwV{GZE+u*eo9(F?ig$2h-jb#(5uCS0z`5FRlaw4zJGQcgajEA`IJe} z6lbJTBiJ}UI^NzoZ5-)Y zC3Ova@ezLU`5gp>*xWq`^N=qk5`_z0DYM4NjI)@@Yo9G(d3S+HB^^anDD0Ox$L|#U zWywcvP;MqJS7Jah9q@9!gp8!H0QIe~$1#HrtG7BD`WAg<^iOeV>ef|p$LZ+`89dHcqlepciX`P+N;VaD zskKYa_-tgAg*M$)L1|e;eas2~bh;kd za<+dq;YL(NCFD)Cm50=KP9|6=WHcI)eS=|;2u0n-n{%8^`}F;3WzmD%v)|?PQczd0 zfH6GV<}iwCvFcK=M>!w>h-UY!0 z`lKn;jCnv0aVvhl%Q_Qs7&dHQTkD$acdR^JLPa~~t8~3{Tilbg{)y7;g#h2^f}6 zcI7Rr_5XNX_m4Fs?%d4GL^S~AshOD-nJXtN9Vb9?>g6S~>{X8Ok$cM17t+%tdL#0DHX@|EO<}57?3?CKZ=pj^KzNfLe{4~Qd{9gF%`1R%NHosl?+)&v6@!_+b$REE+eZ$wC zx7B%N@;^W!K=JvXS3tw$WBcX%ym?yOynf@x{hpO3{{A-YjU&1D#aDRU*X#X;vT5b+ z{qg?SVEcNCGJv5UrP|sA%Z9;`*Uk=WFwnBSt4H2mPw;Rj%bo7$e}p|-b+Rgfxs_df zwr>x~hXnD8H}}=+fIj*nwm$9c{!PUDhQ)pJOPlvU$isya{*cCM=komQ+WM-}=V!qT z@_4ZuyOph3vXws?nHiIshOX`Tt?iAQn$D-MYccUJC&ODW0EUyTo}O8k`g^^jF?vcp z;CwW*PrJe6)49F+DiT(neRuElyBoe)=sb5%uk!bgXyMA+tms)5o?TR2DIOZn!q&q_ zLOw40Z?dgkl!sG`*L1O&pWOiSkML#fgB;OsO(0hW3?FgcXNOg#J1ud%Dtf0kn6K;&d8`+mm5036-wvC$Rz&DX-ep! zM6y)7MA5epcT$%xRo7b8NhG!6>+>)`Q!+T8!tc}nIK988f@ylr0}ZsQ7@5jA|NMu< z`*V;XPEd)Ey~ftIl#+MgQ(7{O7;hAUj>^b4L=5PjP^+TLq5ifm5yJBizgTcA4Rull zj`YT;H_3IUv5k-3l1r|cvnR= z5$nw^q1uqn3G!DtH@G(>jL@Jdxgo(mCaIPcAQdKFFmU>_CXEcuR4Z72d<(zSF%#=s z(k)XD$C0ZQ|9CbUSpJ;LT#6UJmxHRc1wCXA`m~#@frFA@B0W8{nk+erWA%4^sL#ow z6iJAbPk3~+YNS`wNI(|!(R@gNVnL8WCw8-g`i%+!%3^Q!5~zvPlPOGnSvmYfsJ7Pv z1d5Y4L@O@@9{joAf8iGWvKUg0g2vot8~ z2|l1`9d>ik5QcKvKIr1aFtj{)<>)WdBb_#G;0M~*5eMABxM5MITohz+DSymhg?B(r zB`FtwU<)hv!-pA^L)De~@+B-ZRGX)GWU@s|5<9GDg(iir;l#oX!CmVcREga> zp<{NSz}wqlC&&=a5=b4y9VY}aIal;8uv24Q4H(&qO1Q+O-Iup z%^>wxrj#fypP`hK244c}T8ECnjOLPsoURgwq+d$Iqp9%D00&h=3(+j2Que*uSi;Zu z2*}sbF-YK8bm^vr1)~{q?6J(tKA4=o!NHosg z!O@7|81ax2fkcMaO(GIf+-yztkcRU@VCV;;}*0V zcF(p+iSWPNhCvWn%A#eR7*0Fl%tRJ;HsWb`kU++QQ72wmy!M>Z1HV=+EhKaA91JH##pKq*k2w@F1H& ztB}R{{+y>b>`FUJ=FKV$}2D8=& zHzmGcc=3b^@R9JE^rkv42`13R{NnUni|;cXh@~4UcR znq3RIBSoxukSBe`jae3BP)*s*%Sy${Nz`c6%t~fdLj$0y?hMy$0et{dTQ5_2FWns{ zFPWo9S6C;cz#V^fx9=11VXzussf7#wly%e=<$*Jy@n*D=lJNF4lkny=6CEo53K{$$ ziGx~got+E+!vnGDcwRVcTlN-8Py2DptD2a{pLbbamg8)BYnGtz(NZJR1MPgZ!8qIC$jDgh^z`j^ ziZZ!j{su5()tB#gL?_s9tKP4RDFL|Iro-*7v|oE z`Q4`E$nM9%5BnqQ(qpTN!|(Qt<0BP}~}LAN}le zyZ^qd;lG~c<`ydrf34%yaSI-OjcHw`zZ&L`X^)3|Tz2}cp1Uuz*Tu@D!X7spYrYYV z9FR@Qu7EYaKXz;1^aUb2Yy!GWYoNk^mgP`@9ZZ^gp97Ae+Xuq|&`5y0QwY*-*Y1EVaE#$V)iK!L*-3cg}sZdDMPfCK>*T^g{)Z|B* zM*oe4T)U8&t(#5}V_Kg^m=XZ;^y!U`9?Hh~4n=fGnHAN@M6C^~;iu>fzhJYg8xB{{ zAv{daIMR#%$V?@F;q>{f<%+G_JY_~=I1EjSU#>4C9)Z*d)2la~!bAQVzO0m--d82{nV-*iZjH*P)fUzkeNYA06%*>u;z?SE}W&_+rje zC@Le#5TlI=)h&u4$xl%j@XLcFf`q0k3Hvur##en>8wwLZNsZ74!NHpq1D*g?Om~Em z2FqqFd1qQZ$z?pxaHw)~h6MQ?q!loZ9N`19(3f`CjJaij1zkO+L?pr%^x|8kCbzjc zqexp^UN^ZKC9_6w1aweP!iW@-1r-5GioSKOdLCI|`CnGYVn4I2VcjZqIa%_!TrC;N z#sb@LP*j8jjjDi{u5A-neV+m~5(%DE&7w{^BQDk_&?YmiEJ{uyxD{D4Gr}q&E^R?t z-ib$46gRv}wSvr~h@e*|p8U2+7h*Mz_IudE3F{D^}snGt@J00=rSR2X zDk)H)t>4M~2+*nFEW|Mlm4zJ8YT_}IEYQkIs6=aA3S&i3*p}}&#C4<*7~O8h>zHZ9 z%4z|}QD$w-Z?wErhm3@ta63;wNB7!#bs3tvu71cF;X$l+ZC;x1iELMaX$WIcE zzX+Gm_^_L$R0_y!motY1MI2vBP#OM|nkUkSO#J$7`H!r{;cdcvYDt3TOZ7LJ@S~^3 z{Q0UpemjWA#gr8HKrJI}uZzX{V!ijj%-kZKW3w|-13~wg9!qFP4z%P`5#_S*+MSn} z#0`ht3v4Us;a21EkZ&w2txBowMP}P zKtu*gr-bk}>|OVcLe>DXwN?#qJs4|)@eScJM^a9V0bHMXqpm`*lU#!Zjg7@WvrDc# zS0p3D$QmW%E44H#?hLw-7qPuI^pZ^#iui`I$diI2Y zYkPiH%ZrUwwxVxSYzu~9dQde)mN}%OuV)QzuyfW(tr}&C!B3=}lG!=qjnkDD%3}8` zX0jU}CCYLYjeYAdy6cAJ+8ZYo@w|%L>}jAoh?<-v6V|lpJ%9v-#hI5>|9SJ8NuAuL z#rnW)G9%-(UtGxpR4K)>;7}cvY8!FSN$5)Ar)T+`qw<@tQ$+I-!w0Zl)lH~}T>9-f2rTA<9798g%T zCUT5>!t$55>6A?zlI||P=Bwbn4wQe7o|f*a6%-tmnS0>ySO=Q3V&*A(!92mX5|ft@ zDvQz7Cfmn&jdHCD{n}B#%2g%weU@>(dAo1Ti=N9%ib@%7Kr_;J7J?69u4p#EY)8$H zX=$gsX41tuI|{v%40k)-&Y|zC(qRCF3Rc$lDFx@hJSo}$j=AD!oB1D$MxArta^p?c z3$Q;Sen}0or#@t4a;P_}fvdFla7Qma~Dw$1HzFM4MtaRx=aqRyG~`pVhqy6(FM8$)knT}MG>>z~5h zqW0fFXGl{;0R!ubYC1 zP*LH|0}AF=ATXFZdbI^?9nAm;nm#-gb(095>OQ*KavDx{0`%skVc<}+^~4yMcEku_ zYX4JKQC3mH&R3qt-&t8&Rax8AT)(?^swaFpMylwVHFmrDLs6J?%%Cz__*Ai32v+MS zPV4N_@}$1rSAEUYWqI0J@9Y%`Cul~`_oKzgFR#?9H(NvP_{wXYUTgEKZ%>c;TFPf4 zfZOzO^|-xxY0dxo<*UEFyWaKy9~^TGlhp^=6nC7sU4jl;aV@SSz{Po%A zt>%}l{q60iqhn8p=Q+|S1^a>DYvVEfL=se`|HP9F0i$f=;%OK|o9zQ8+U)GQBwF+J0Si+U|C`V~^yP9-yfm*fBc@RRyKl z7cTi-e9(Y`!xp-R(e6sWCl@g%iAZx}5oXH4v6IHDU}%V6nvCw-*D+D7$U!@S_3&c) z!Cy$QRG+mDd5? ze}Ds+))5O*+8V;4N3&3!&HsI*qJR_g8FnU|o%SkQ`UxqR1GAv9e@14$*P(F`jJC{g zz-3xdv}eIzWeVZ2EE_1|&##+i*wo*<8L9n@Mu{d;5b^qU&3cD0^lSccw)*etSJq+O10tR0?Q3m zFdD1i@I||e(Ge;2jVSPPvKa?O6T${~vdl`b-)~C%DK4A0G3CDU4M#d`ML_BIaldgd zV5ih>EhNBWkKP!8v<^D=%rQ3weBmfGNg6;c*3;6p3br5dWGTN2EDcxeY8tuO;_%v> z?#!j?nm`t&riP-ft~CpvJ%pY+$Gz&Jn``|CF&Ci5zRLH3U43Oq^#I=nAa;Hbb;-ZqPQ^aoC0A&XDh z%OlGAe<;I%DFDNMEK-I4r~v$^K2=5~eLz4(_(U3Di9K9Hp?(ua@#zh@1xc*rvRTYZ znG{Cyhz&|sqxM4Rs41IHq5z%t}uwQDs>jJ5N%HdVWkgFUS z*_-w#R0=KV1)bO?c>oVNI!rX2hztZ}gV7Xta!;)vkTbQT=Ba!14iJ+?I?{8yh-Fu&ke~yr_%#b{tP2K|QChZKQ|&gK0?SbltHd3>%oIE^_S-+>*)h*q z>yOIOQX=0pq46SmZxPD5?q9yPD~qB(Wq&@|hpPlUs%uo(C#yi%;<$i1oa(v9y8vrp zc05XZwM{;GUUpPYv_eo%2(cXW>!)ILBkJv}Yh%)_s|G46PjqzS?d>d2W6~@SE^d-J z4Yihrinjg-)`A*(kyv$^EAR-Ijc%Ra=S)FW`Y0(8Al(Gkb?UbCbRS`1R2LqWTNAmf zki-nxMIAn;I<~^%tPa0Zb}@B)G{Zl=<`rn1xy8`QJc zxkv33d)QN$Qbltu{74Pi_HiZaH5O2Hrd`r&A(H+bn;S>uQFq(~OX+fr%@=;54lnY&a` z1hzcX2D4WK5HH0dsIhkYP%`0r6K=5Yi3!@i3`)>r)jN*wW_&)FTgHH^H_gj3z*1e2vPyQ5{#G`g;p3BO}^>k1|jS5FlR)|{bWHWI$vGUOe&h;Kpxl*}~9DbBtU6Wrqp6~m}7Ra+x zF&Zu1cd}PKb|Os~uh>25^Gamw;ZPnEQgOfUa73yX5EF<#;1oW533k>7>px3LxBTS0 zcDTQw8}Rw~6*3t5ve}LenHHkQhz{-VgOiea3JVSH?S%=t1xJfT8WR+@Xm?IvoQt|e zp`k8r9-Zv%$_}Ww5gq1G;RJxUL|B;z-PbQ7YK^kXZY}%ZgBR9cBhDL)u}7H6&Fm@DJm{`eDab-f zdF*|+xqQ)Bnt=Ca2kc17m|>I4NE>38xIA2R^@PR?Tz3V9qLA~NjFx;| zqF(2A>liQiuJ$(Y{y-iC2a)&<2%V_p0wy=wl^oms>ES@!AC*=y?UU=?Xlo?CQkH<} zp3f9UCco?O%pzBVYkv%3d8M%5i3|%?kZx6bzc?*d%Fv)gQbu**p_VC?7ri+)P7Qb=P76}cw7MUYL7Guxq#P9X2|t` zayq}$Oo_3F`zM0WwhM!p5?@fh@Sa|7_bX?IXIkN8iGeX+`;GD%Ab>;F?v$3Z?hNl> z`(%5wW$kNKTsTegozflu{dUWF&75)j@pu+ldsDmZ@>$(#-w5u&YqZ|H{Xz#`21K7# zw|x?E6q?h1q0Mo6yb>$3X-t*~svWvXsX;uj8HD^4(i86EHIdzo!6a{6nrxB!wLO+( z(f7uxyDR9~0nfy3PT8=-;c2Tca=z-DQk&c5QWAi~D+;X;#q^&#KyDt0J%zxwChgJy zQlj=$Ig{*Pq~^-##^$9AFZ;%|Q|o`D3hh3(SAYW`K@A`&KOP~WdH`L8gtona_-P7T z5+44JndQ!|MH0>~?vA;oMNvu$UJ~B^{=S7qB93|@o`rb<@GHqFIMnMMYqLw*K{Fl9 z;zea6 zDoMv&H3~zbd3N3H8UeHB^@j{y%aPOZ!;SJLa$wmBMHkZ)>qbX(1 z(LTAT|NEtoD(=h09l40_``K*$KKe7{;lS=5NL~5)z3+`(5B$%^oi7)=W7l8S|2&62 zV*5mc$k#gt$A(~HKS~D@$e)?7k02xC(@j}iU4DE=j43QC+ZuZPQ;hxu_yZnp-m(C_ zb#e%J_y-NC+GP3&sud~~R`&H}K z!_x^cfEN~t zTq!T)cH-dLM--x`#lE&t(xnyD-p`0nfRKkj-~``~{zAFn!E;UC+wvKsg|p6OoSs`S zT>=rxzMm5#@b5*8QH{e9%6l;X!QT;U>y1xj8imGp+Pve+S1&INX-{Z~lxwr=zw+rQ z(DW|qi12VA0orhNn~K7<{N7#*)vj?2y%epDlAwC_W_C_s!IKgM(JeVioV%N2)Pv0h z1T>O;*q)mb5jU{iLcq1B8ojv`B73j1{6mK2=G_v!7 zqM{=735hDc)q4rd(Nu_AP0q|r%ucIq?9ZZfevss>2t(Hrbzl#d&Zs@`S@?c1&UW*J3|uK`UdPA-m0ZiI&^*++{zQ04(|^|CmVSH_>oEm~qt0UPv?2yGbj7>d|K zhe-QjfXJaw!AP|D0z{+@#w;umQoz9Vrc&euWs3>ZAXJ%nV1Frf=sRQktNdr@P#M~Q za@So#4k!g48CG@V(QkA-#%pa{k+Wv_Dksw*r!Y5{#LkqXs^Q7t$!y5|bM(t{%D-5B+t#?|l8N&=189GsC_wZ-`>j5wrw zQ5qs7EsQ8R%4x8WRZVzk%DYHv#U-G!&5Z-mHoPzW9X=!SymxfQ@WNNls40b)Y%($q z7KK@S2T>e0Goe>fLhn7=)586Vv)&`U8AtN1&$YJ_+{gdHI=*cj!{4E88 z>7(@1IT8xOlP?Aag)4^YJ4W!pJABpCI&M{6Erbh^wtKwRjhziep$+VJ%fm@U55G*1 z%f6t9IyhZP)+A_KqFq+w;}Dk-!1JWPNH78}t^LTgBRPmhmpQU%FV-fGNgGF#pp9ju z9G*lo{n6|pQM{sij+M9PD56~7+PG2_)QY?#P-udjHiLCcJ6wi?#oQZ%#(QUkeo`TZ zQm*RI0*=%iqQUFn*P@nWn4zF;M0PR=u*>mYs6@TdI&PeShwDzv;2$U2eFIR8xGdXI>} zaqE^4`S(n(QrKXJK5j&tqer8&Tf?qu= z6N$`u|A(nUU(0`ajEUkJFixj5zub+V?~(4t7pW4(Q#{&(^Eu3r`aF>g($cO6d%{5I z5W>=$*JmA?XUP8G?nnvs(L|SnI0Rvr5+qjqN+0NzhnR|8k&8`A-G12dofQ!lRDv84 z7NI@H`(P>p(o=>o3-0YlLULgavAO2pD3`&CK%%(!SjJM@>&Ji1a9HjX1ErurSfG z5O;7;BHZ4ywI##EPTLRt8jXMsjzR#H&@%>?VsK7GH$Xui zNv4Kla-yx>^DzEslyQjzN@v5C=`q*wK+m4R*L9#=Dhz@%Rf3sdsRWdnzCDyC>@(}~ z8xQYHF6s72qrHPeD0{+UvP$x~9AC5yUs0vt&Lh6{+Et>OCW*?v`X0= zzEceh!GaKmDhNdbCoqi+AZ~01zaw{Jm9W`hT$e;x-d==S5ek{0*+KZ`!N1_4go#Js z4Zxc!robPUV{ZZGY79{aSK7>-==6l4KNHQy5OL^wj{+`Rs{SY^F+Ss;j+qP}n zw(X>`8Z~wr+iGmHvF)Ty{{5YE(J?YIa*^EhUHjQ{&2>Y3SM6Xd<#1|c+o4L+;HK>0 zwcTs6dOW?!RkM58Y%=MK)fjSQDMeX#YK=IW?!OQ=&TeL%2EoYzcbW1y6qzh&hP9f- zYT#<#{~W?^yzEKD)A;gwCm@wb$nA4K23&Dxav}42z3(h_C#ILu4x7``n$t>vw>)(Q z3Z2<$>3J&ZX-3*vTB_k3T@_W0%{9%`d{j+!osAv6Wu1*R&CL~styP6(jitS1#6l-i z5pExegbH#>03o^nJXolzrOL&@Ic{|a9v;FB<24wiVQ6WkrD2}9tygzev5GdjveL=H z#lg8U>GK=u>HJ8~*4512-3gD900abbarZzat7&2)7 z$u#0^9q4$~J}u7@ZUuZMeJcalf;@(&9)jsBgk=JS7B8okWDF|H#J`?aaD+Ynu6=!7 z#pSh?4V~Sky+6h^1SF3VuTi<5fF2f5$oGA@AK%PWa-OvKl{Nk#MP%6b3N)?y0zMBX zquOQ(AGa?k>@L1m0UZF4T#5PL3xdAh{)?**F9k+GYwL9HCRc{`tAsrF3Hm45>DLDJnU8V-ILdakJNv3m0n|LZ3T5bgA_SMz)74&tCGjy}Fv=fSxiVCv5uAd9pXjY2&JoQ{C z)p?nTtB6>cd4z;|Uf19bn=N(^E4A&8UVwezJQiYNeS4e0pL@+7lEt|O3SG#Z*%bB>j_}q359#n97kj&4`ITS8?R>O@^)QOL35U$#{VeyqI9RcI z^=Z8!A^6TBFVH#0JrV^xKodq=-!OyJBvizaq-kS{ANuCHd47InUelsnbqzX2?N6PA z>B8qw3|4oiD21BNq&g>SX^XswP_nH0imLN*2`V*+pA$uT7F#L57;D!IKUnDL+SDzX z8JPjTluPSy`hbRH1}Phx+cC~u^txL4u0pmBQCTl>D?3RsKDXP#cq%&NSujH*vRn;4 zLkBLg4j-#IY~+;uvh6+X*rj%%=&_D1wgR;Ni`rzV%Jl%_1tjR33)*{W|PRkcdpUhx$@ z8TtbkMs>V~oSjX9rC~i%nlorXET%>tx~>R^5$c2jGdr0cR@|PTav((+qZ4E_ zO2<=cgKzDpZm8YBk7PWrh=i7{3>+sFnmM$XPJZIV~0zXyjKW&Z}{n zkSrOGWZIrmnpeTEBx4f-SKKPjC>pYT+;*x^>^#A$D

((yi2zkmh(+Wn1%eVOSVaOsKh_XmP<*BH?&^pWO2yu+ zKn=DJWG7P$dOh!Kv1UybYi#9Sdm*3RE?bAcQ6oq+mQ81c5?O&Rc?Vp(P+uYCu(}5S2?qf{r1`DMD+z-v#c}*MJlT zss0#8Q%)K|@*pVZjcf``)c~plqLQEhQGX6pDY0)+Dg~En1O=UH2?SJ)j0i&1N=;me zP@C^U1IH1}hyWYGY$P!Bq{JD%p$a)jX$iPM*ElF`A#l@5dZQKTj9h9aHp@1H(jLN} zTty!ddDGU0wGyXjO%e%pYASCD@FYcA>ulsy^0b6zA_7YN2hG}Si+6T^PjS(o!n(*P z)j6hqRyjueq>&9Ih!qw^ETwzk0@+4ypCKwDMyUvRLWTSZh*YseIZM6^2~fpqT!LW{ zu*ERe@!Pk8Pl;ygn}}RmrrKjEC8pI$5a| zF;izU@oY9hKt7}Isbn-qpCB^1EGbxJbM$Efb0Q|wbe8P?NXHd(JL$DzTBHh7sc5xc zNoQigfZOkLMk4-D(3>r!Qki%-OxwFw=1cXph3b4Mi?%XxtP{0*8H-AdxAR-tSjy#7 zNUX0cAYNaor?Sb?Txn@@1xr!6T3lLNTHD)PTwltSGWCt661tsBf{L|5p_CDs_uXIK~SpahU@f?fB*ZZfBb`hs=xhB2#KUo#V8d@$tsISO&iBBN`*&_=TFZZ zkM#cj=!bgHTOqEJt6N^hrtH;Om@s{oQh$Dv}%3MCFIe^#a zO#{L4Lok4>2*#A8U-l9L_Ee+-k$AVSu26(h1QFZaML`mGS$IGm%GTifseX2tg-ei` zal|RQhiXw45%AU}aJT3!*m`iuJ3G~ljpFihVQHzdzAmPJt=*QJg?PVvc`3fAgz$oa z3%q#ujx?(9@2ntZG9es99|@Lq=mbvEGt_OBE!nw9s~@T2FWb$_;~yL zY=?+_;$B^02oP@4kk-hkmQ}HE7Ypol7?;H01%x=#(OXDs)aQn{h@;#rswyokL}M{} z0_*D-0ta_@n`fu12m4}a$aoX)*NIWX2rmW;s@*<6UpqQ%J}!{dkLJ)Wfl!3C?XMnC zSxg0(a`)LP5Q7(&mTA*K!n5d91}0-n(u9)2BNqb%!(`|3a_{DP|Kcy`+cdAKoJc!mTSDGW*>#R+HZ4u!Vf?c-S5ZboTYU!Xn$%1@X0SWC*7O?wE~3 z6XSzp;}(x6JwNXVh1B}la5ii4(guG&PVRWLw!J;B)%FYyGQu_e zrmOQ!XQyhGfTs!Fj5**L)v7!D`;dW5`N*ex&)D?Tn0AUB+_bm1b#>?*RvRR@L^M-h z@TXJJVj)_{$02xcZ5rKfJNZP7+atkgn`um|85kc$&hpMiu$T>%G9&8Ao}r;3m1;z- z_9PRDS~WR87bz9JsRZhrbr6EqKRPmFx3+ippu?V2%pMMO5B3jCj9L9Y$kn|P{j}xqf`&#ooeUiW(&VQf4acZKt9)RmF@rb z@9q%a7rG;*D*3tbo@`yvLPJ0mhTAP|A4!BF;2*%B5ZxZWC71t5r<-DzYADOEB`H#^ z9MabjB;wt}3y&8DZzh36tY<`5Y0VZn7z3UlXfcNGDYAj&!WrK)wRVPnoOt$<_ZuY zqBwz8q+^BUk3Y{~dBrRW5)Dl(vIH06mtxgUMDSGQIio^p1yi)l(v1%fiqrIDxeVex zF=$&1A)G3^WMEouU{&Y?DOfEp`(iPbMuYW~?B5lzse?WU^3310%yjGt-@ z_Vz9_(ga$ao+1Js`|#?DKKF{B4Y1JsmGSi9;qv`^@N%M8b;rKduin4E`S|hj=?R=R z@({oG{(U?VwU}njWN@dqmakZUTVUWaa&O$MsLjtSKfiUq*Td))R+E=5?<U5$zo$b!KzLnUo?o6n{ICp z&(F~oL06293C?x>^rT=?@85&&K74rl@nduUBB7h_i~*ZKm8fDhw5~w7ggP%D9|cD{ z!|!r_PFNMIQwdN-?%o@ERTppXR<>3l0u(BFND%ea#ih;F`Q?ShwWXzv6#}ZN`BXZQ zU~`aEGLoSk$qSWgK9@}hw1gvnfTz8oDs!boGD7fB*cbFUB2jWQ&Zd0HSlAcv*i-3f zA{7Y+TtS~Rl?-Rn(PTUj3A#ba1oT!}697*ryolUS4}nT$5Es%Rt_34;Pm)I^%B zOgy2W2RXw*Pr&a=rlP4-48jx$m7q3=X#!LQ{Z6z_z*f+MvgFx{b*b3yPk<^m7>ttL zA8Kn5`J$4}AR97BI_iNWC_t6p>+ra2Ag|jV3V3U^e+#Hm0IHVI#HyM=)zTulQ5R3@ zOLaxBN=*M&m!b<*Un%cSB>o7fYCus6wI(*{4}q%2>Awc5FhMz;E|)Xxw+CIukk>*l z0D2P)l8bc)sw48Z z_&*8KP1MuX-Hkexn?g{oQwD+FNap2;AXAj5C7=|QeW4gC;xZL}`SL#&H`WL?Vk`;E zp`cVa#Zq^HxmBzJIYl5U!ly99vKka5F)XFK5HQ#^l^{wWEU2QlOn$78O;9Svxn#u^ zpbCW56tv&?b|jvLMa_q5ySb4HiI9^sNQH~*Yj(TYVKaN&jv%JCD9y!~yab7tshKUY zX(EfqgULjgCd#-1R1vYuD$JXh??Sw3V3d8I(_~79+?a?%sdPM(O(LaO$zz2`rfAa7 z=92M57;`Zx)6#aT?o>KbT_{!OOZhxF6!L+E=8C24++wX#DIt{ zSkBj1>nq!9wS`(HldRTj3{)**jxNs?lj&H#l&vk+vW0Xc8t{5BPz}*U?B>IVho)1i zUw-)xrTX~WZ(o5bL8*TD;r{by@oaUDr5cOnyLV@h5LhuydEk&4AR(}GWiXT=u>N4d z!MLxVp4NAF%gmC3Ba9ac;KslUE*~C(*~KL>$^*ME(kV)z2;>~ZA!dN@7bz4G>cPISF6GDg7IzZB=_f? zygX1G)?$^=&y1lKvtD~#0 zhl>x=k6R(9D)KYM3RZ$iRT;xt+}c{%-Kpco8A~EKiLVk+ z#Ss)QFanilw^OKA>LhI`5bIcp8!Sl_A6O`hnwKHWY;3IT?NQ?TI)3;1))u-Ux=45# zPT#+WbOiaNxV((YGnEP&!ZF3(-w{C~HOF!kUIQYLuUI0&semj-gw+ zOC_X1x=R`fiSK#8f6Q9U{F(Kf*=O&4Ul+(h%0}{S;ltlQ#_U(}_!J%`>S2+w(knzC zKrj?@W6In(Tci%?_%VE(ZAjWF#h(og`9_zi6S zIi@0`Y(edApMU(OD_*Ai-cKUrhX6lsp~qX}hREdu@+_)=+4-pNqI4*@*f?rxuDEx1 zIJmcw868m#FAYiSThc~;v&+lt^L!31H&{0s*=m={Zxbi%CagTf@ObvRZe|DVR#i4abtzTLFW+qTuLJGIOt=R6Qw#JF=hv6#y$tR} zNdjS}vkFI~wdcnlYuvp&a`Mvv;!F}#_m*(WK=R4);h{;mLge)#=%VuOd{WY145<4` z^uiu=IpAq&6g8sf%l@970g}|gI&>L1)mO)%x~};Amu-X}(T7Sw7rL9IquiZ876Py! z#^)Q!*3&DbO`=p_iFfP0FOU65OwvLfqJdy z>FVL|2wotk$0uW$Q3uRf&&fl)H6iC3#+E*BUi+!-V!v`B$%T{iU4%}hgNdw8?wo0=F>QuM7+!z11? zGY_eyee21ZIbxo(n>e*EgBXs;{@&PlEBYISc9>SO&o<^O!o3MREYizrlHB#>-t+o$ z=TEuDmw@}Nvuo?2^B&)JU}!By^HIwGg7e^@(nthu9S}OpAt14YJ@+euh_Ltfm0uEt z@cxP#35J-3Cvr4Nm(PL-ltN)uE+)Od&4f?~)>YY3YDfm66zQ`S_jG>A4ed4l=1^$T zvYwkFvnscJ*IO`Z#Yc7vNNG@7w&wO4mpM>UoKWcQhcjo-5q;EdXjUDanT|GU)ZUHVXem>bYpFW-6XC^Z1 zex&cJgogy7VVP$@gWU_0fk^8lUF;^&>Bg-91wvtUfuYd(IzVqj{efdf{79`SUpt%a z2waLj>|o2}&M@7?HCORe78Rm8KXTm@dChh7FjGpQ8O@Ei`H+rY|G3_3*KRNz+t*Ra zu3~@xNrmzU9yv&J$U-`jaqq2jR^Ip!=CCUM>$oMiA#9hhL5i8UW>Wf)b=2Z?mr-7{ zP!`R3C00G#z_%pyX?Ko_K4H`$WEx(Y?a+mpjw{U1GKREh?QWY_CSaOsh$>Qk9OoxHUf+9c;;{*fuTK2%tKK#o=KHCaCz7&kx$j*#&%#1Qs0h2$O-`7R_Tr|LkW5A;%5kJC)X)nk_R<9x)$3`b8qGmUzL4Cj z5)DH35)TyEm>C_nzdl=7eI$)JF@7X$D=V6(lG6R#uN8%piOhx>SU6o5n-2sDI~ zDR8*B*>D-fO9Hd)gLPsx{DDg(FcZ_)6vWdMe>VPnSah1YjnR>T~4hBby8%GD>HqEnX;kaC6&My?HrZMuJJ1 zD)dVPU;ltqT~d86LsHP}ftzY-0w!l521#J;>EkQL#BP;Pi4v0Y0KqEA=0X&B_qIZA4k9z!;s%@N&*h||w11fC1 zw2a?Fixf{=syMW_79Zc&BPJmus6$klm%k^=q&_Z9%uxQV1C=?7$z+woJJM&AP|5{Q zOw+}|g|JH?b7gfP81&K7OS%)gHjvh@|K-QHH1wU19yd8d*Jq#W#SCsKhulA88T>|G z0}tGoIY%k;vrGMY*omJOEcJi&B}d!Wq4pPi z)8}4rQf8eIL!t>!hpDIt$dQm9=;@IP31zgll1Nih0?W{reyy@N!)zZv#o&>5y~Xn+ z(vb)*Rn!j-)T)zxQ(0R}LP|2G5m1_3rHkB9RCQVa!zlb1=2|DLu3koRq0?xOqJ_#0 zHereoWz(S-*kg(GDnU)l!C(T`bi|O#6z|Vmc`M1ndawysY>TV2eJc=-IBttQ*ufdO;h92tkB@@9^$rWt zqMTOI#g*+VAjOWCC5z%J1?k`+aZETA8$mEM5Tys%?gh#NAdxv2+psxSPeMd0I+yL* z%Tzgqv`z&Paj7%L1U9VZl-r%+Zg%I|*zA=N#r{Czq3FmwT&Q{nO=8gliKWUL^;EN- z0H2toF#j3f;3S+QKWkL+A<#-^yEMJCIhpz7vV|(jIXxYBFp_*=ZiPbX>;90o*G<*0=e?!Pq8cti)B!>cZNF^^Gu9 zQlMlmzmM3gRTBf%LT0SR?21A88aXz(xO(DksO90@e|;UHg@xz;#vPHpy7m?-5Dn`|`g#8I~!_n|D4B;$o*8YYu#x zVISPDw}aOzQbgwe&NC4xO~Bd(bCb>3y6G}VMKe6TfV!|AOt(<6(moI)?IhD8mr-u^ z$nuHMMBXVW96vNerzZw&h7rH(ctXeE6B=LG)6-MzK_KN2W!Ote^f06{bTMi~Yp{w) z?WGeNncZENNuO9ZdgeREAC%5URm@S5er$fR2-ldQCWVM(bIT78sx{Ga{h3b6zo#Op&o#hvrs^E_>FTL+HB{pX#2i{#t*8$Xh{nQFB_)+4a1!y@k8K zf;c!?(GY!|KE?Cg{1C4Z0){RjVZ!Yy%C4I<``5dd=ZSI+57P(W+W+_Z;FE5?q#V;` zdR?8$^}MA-8rMhdFbJ!%Bb0+W#(L~s+Mul(F<-yUbV0r#g%#jL|%V)I$!%LX-z=Z%Kg>MTe@25bCB8ij&$ zJAdCU!8wxX{R$m6zqw!SaqOeK@fy3BCdK;aC!sjyUbnc1>**Y}%J%*VJ=E3J%L}0$ z?&s_9F#g6Q9rII4%6v`Dd>poPrLK_BVq2?VYnulyE?prSncR);r3x~EFF@0l?w3na z<`M{kxrk{j_;hsj_WIqO0TMpl>S&_sd$jn+{Xx|J64v!1!`s{DAnhnJ|y3d_c4%a@^p|Zo{lwX($ zS#DSkm6&Cm#)RSZ7!R*}PJwozOeC?xM|Gcq6bxeWyGzn%G|M8#C0Y!bxhrI)(_lxr zR%QgwBs*eSE$~`kg&eNbaS{w^KKP00w^^Y|QsRdvlO#Ln*r+DamO-^|Umy|e<6$({ zukgScsWj3x98YSx-fVuDn0x-{*%zok#LjyG>MU= zeS0u5o(6;H3eFK{lCX!hi0#suDX2r{PasS8{3lexS~QiHVs z#E$u3Po1=q1G=KU35`krr3U+-I0;2MSeegZr zz+lE93{G44(>LP`op#vVU>ZnKPH8h3q+Mg0Ee&Q0asfNxD8DEq{&X$JE z7DPufAVG|csV`^(FnF1n7+KSX&`Zq=lnICjlzm-_1C6l06bjSnsG09#Uagx9KH`Ro zRUDjdnfZNLG!yEiB1wqJskF!h}WWQHdHD|F*mwC zK$QY~{;8sXf{H&b3 z2WD>K$YM=*xgn;dinR5G3+WvSv08qSZ6DRj|hMj3J(f6sY>bZQrTPY>9 z0XgOxz1a!|>WQH4u_26>fvd^Km*M5#Q~5NM#}MF$Ar1r!rw6Y8z0b_7^MkmOrcvD~ z;xBpQ1}}TpeEtI7`_=XCt5TI9Em=I^F=tAJRsQNz5HTe`vaqTl;U*&Z)>O*$c!3#C zSo5fV8Zp6^3LzzH{o;%QEj(D@~@8rP() z`{Dw0Tv9A>8DJYwt;0I?)SD#dJi<#$=% zaNsBg3a5Xao#Ce&VU}BwOQY-U`5%)#G>w^*wDX%|U47ikt7(hInT3oC^^0((n=FnjR&pY?{p7CDh1sntz1sd~?4w4GG zF4NFG(Fg57FmnEiX}Q&>(UMw~O-RVan;k`VggTDMX~u-K$fm8d^eX*8chIGT_!^*c zc^FOb%($35*x#2*gHmXAed95Y!7vz21e*zLg;6_ebBX9gFH$x-?DV&_nW z-YO1J#s!PU5@SYY8rPDi*xFfHIa{GH0D?VNnJVas^{AJrIr3;jc|bvNr;kkWFAA)b z+1ar{tB|#)Kjnxjf+QX}?pNx;_V2`|MfrtcS!8+|bnENOQ8&N_BM@r__}a+Qqo$fC zV+=kU7odfYDQmihnHypvE8>!<_;)d+WS32R^$VN%VHqeI^j-W*Z|nO_f7E&UP|4Q; zQ-7a@T7*Rw-+#Yu-D-`{G9CXZun51n@52{ z4NIcFrClGiJD%PYg@v>qICb8fX{E(TcH7yFlY)Mgt6P`fx}v5qDuTEPSMn!eIPzO$udxiT z>5wc2I*sX1xc`i|0!4Q{cI$w z!6vC{(SQVo$`F6D6pvkr4maitmz=QtuXK8J^~-_D5kH{6Y*OpU=nDq_gY(CPBq^k& zFiOu*H2JK#$KD5?Qx+UgrNWRZWHjMm3W-Cy1$Jf z#p?KBBWboEA;Uk?BEbwp7?q0yNV3*!1f#!an-U^;@-r<+RcBG#U?;PZC#K-T&Y!i> z-`xHK>1D&S0iRD0sXTCT!DGP@yU8PF!Gb&1FN3EFm%Zx-I0B{vM)UYND z#UP$}Fc;MOX&FPF3dGGpwtA&Aymg~Vj5pwTxtXPCWCAwT%R*NX-CXXyt8rE4_+dm9 zc`=fl4|ysLtq#oD6_a}47VUded#W{eud^yKue_f`iUwH>@({_aHRc1m7m#z(?Ig$a~z_hM|=EE*W6 z;{OA^++Ila1{Xj)!*OvvCq3&EWo&nRBO|d3FoK!%=P`u!)}>esIGB0-7Echg=0O!9 zm&miLntp~>)2PTw&Zemt+DPh7NY=O##H!%qAtuJ?KxO3qAz2<_ai+X%c_Wz~eHt4C zD4t>>y}Y3QYAFMQuCPo|;0=yf;51jQ3qIB*d^@C^=IlI1g!l;h=d9>}C6|XUJM<6^KJ~VJaiLPxcb56{w^#h5-TnNZ-##< zL2GUPH=i)Vg4egUUfP}Z?xy0VPD~?i2Tp$e>5=yoZhu|fT-{<-V+&1RFAD4#Sam}I zRuWQ`_u5|yXd&gUetCo@r_u50@yz68+4qn2xAcg+Z|Sw8;h>Cy(=;xLOk=?sH&Fm0 zn{<5Pi-)a?OI*TrRaML0N2fXy^Dee2|1w2H#pWWiWBSb_Q5o|pxuLhx9~dTtvrMn? zGzl$&D-ge;ijx+^iA=rKf*J75_eE*Dj&_k2YnHpj9-K1a03P{a?k4Z&xZ%QBr^ z!S5BM8m;JOcXIS&0^wX$zcCCI)^44el*5mDhT=~%$P=9yc1e2b$?p$kk8hHqv5|4m zub^}Okyb35{n*u=jRc9BA;*}}mpwVK-nEX9m!>0kqMrsY{AqvKm2TR7tkFQbxpGzk2rU0wucxPt+J^ZtJRqMnzJ zdwx!CMz^?vrIPE=7@rnM@d2F=_hiRZqJLGUKrrg;`{1(3Xo*|`a&jv-4XsXA?zx?o%N(bU&B zQ;>a5|9RcBovbc3csZ6m{IjQVR-wE0^psL07RFEr$>;XWmP9CD?`O8>pnhWnkge;4{EfQc z3f4|e_NP`tE6}3NS3bkT-0PMMh!Jx^Mh=JCNsTn3M=Z}0-q?yi5=@M%shfw!8f7}6 z(Q54PD|o-l+Tb@*QxzN`j`ihBY`OE~gNy_7Fn(`rr8YM&3F_Jv6a#9D*&z`fY&){Y z1{p3}8FXd&3qm#Jr)7l;HrE}>WcW!bcS2hNxX7D4o|vo3YPqpM91i<0N+`-D==EEb z-KD@Frj{T!jCq=CzAsw^6!K>8O+Ay-Px&{-rX*=uS|MVnl~fsh>ZUWG&GSI_s?3d* z>Y5Y^(yJZC2QRC1Zd4huw_h}kHoKx=!YLj!tN#tqtC#=K=xCt75fG`=R?`5a-<4%8jg=dr z3Ly{Ds7IrFGM8JIPP_1NYH9#I#xTT0yed1VY~n=$3M*`AXkeQwkS@}#duK&#N!jf` zVmbGo(-OC0wvd?P`ylKR0A}X}Nidi}F*`G{G}LYWNh(w-_G5gZW>#&5N4jJ0;xB|G zBnTsWut>nxgD?L*J#3BA;?o6`omOLTcz0x8BXvw;JEQ2WwEQKMV@`@prs zL817wAzxu0)uL)V-5L6~;7d3f&OhkFRq%A%&azf5Ku9{o#QF`TE8ogj@;GTp3&Esr zI*~rEd522XN1`i)Vn~6kchkNGR{{D^U z<_6r8nM0Fjsl=6N#OA~>T}I4u>sYg2r6{IAdxZ)Z7IjKKp8c?yYY{Ge#Hk`Eh_0L$ zOMKJ30@vt9CkNJQB7oqq9V!u4!0P6!V&-L-P`yeZoT&%j@#yzS=tLpc!>-YPPh*IG zv}>2bEeBDnmo_dVq0PJ#q~uO>NqnP7VCIvg*{9~O7;THjRtXt8ck9U2?VTdm2nBtT z(xh);XyZKe7_kU)3~WU}lCQ6pM{H!uN7Ka1BG_dfCcTgya}F4W(f6~Kq6YhG1iEGz z;pGlsS>YSX)lL8+MllV6Ku&~gv<7-|PQ|74d?Tz`cYTnSa39lePRIrm3(4L(|@(X)*!6lm9Gr6*4p^uti1~((&K>vagf#no!}CXVz`wQMlG0Uz84;Xjg9@h#~naNgi=I? zD5bWE9;&i!YgDLEFmbhn-7c3Ut&Gm=DqDf~QYe9*IxUrDctk7hayJ&_7ugU-X9k33@!u(gH}VLJ}7+oaZl< z5HsSzmkT>;NkR=BCiqnDdyG#7Lzl;o9VSN_6fwi>C)6FbD}u1f1QPvgAdm<57w)F& z+K|-#1+~@VW21RFqTiZ&^>}&%$qP4;YOeB$6Q@L$+d!7QSkr~;Z%5hWR!Sw)p~N?3 zGrWy!m?=7aNQlr%2uF&FStnY$+VOxG>m;`Bx5t;sL_Fz$JOtDSH3TNr%KN^ zx3aZp*ZjFqPj;Ce&~DEB;d@cUAxnB_;9`=Z0!9VQq=s{zWPt=D&6mUrXg;Tfb!yNO z7XYs0T{Q34le!|v?bG$t-KnFo0Z1A+=Rbg-s1~E|T%{{7#N>NrLEtDfO=LC*9#Z7c zk@H(9*TKO-e;MHd;zIg-BtYmi`W{IDjBtbKWu$1}(3O!F@*j?jlh{Eh)iMj>Zw(lU z6a3KPKt@cTGw*%=Mon%svrRsU&lo&1xp5NcEY}dz6QJT^lV_S16S@!e0LoqULtKor z^Tob^5Q}h6TobBB{>(3*gUS5Rw(tyaaX?dv?1Vh1u?pyNZlP!<&RrI#Q0k+1_IK~Z zgic%vaq%RlxeQ*VtxO9rj6dRJfAfmc7e6}->gm7Ka@tv0SibDY6{I;n{)4QtA|xiv zFCijQN`DU74TDvA)CZWlq9xV#d=5%~i7tFhhO7QN=^pFA3+H=zC4VmU8fpb_X2R)B zU2H`qjsBdSnu%A(=W(Sb+t$_;`#IWMdYWSqoAQ*f}J^>e)VG2je*bC#L7RMntmx_Whs+$BMN>lE?)oPUu_6`7tgrV zNkM4RMrPt{$Q6eAc$t-rs-A@F?2T)16H|noiG)VdNl5CC>Mqg0SjRZ4bB4!=@;IYJ zia3WgAv%H5fW-6RbOSFG??6YMbs(-l{jpR~P?0ySId2O~gQ7O&??8SEXwnzEIG?0$tlR)LT>REOGMdrK7uMx&l+#NjMIX8pvEF%sQBY z%!t_$qmd*XU3XWkUj$*~d1sWm6@T5zdg(psZg;jR@=RDeV?p#K+X!2Qp(>m3aG<#F zKawcXIKPchv!6ePU3{d6~CRABjt#krDZXeAB ze6+b%L3YZMLi+_|_2$IvhAiyQ5t7*#)+w!yeQA*>*FdURq%i-8k~TLpcOes7XJpxF zjo)zbt$n=yG&!#A#K`H4OtsM)AF&;ZiN1SbZ(*^wygVWZ_!JgYI^tGcCsXwK03VN=8@XsLT8YFASLT() z^Xr4_a1&xSD6g*D)7itt<<@4<;o;F`C{=}vv>>9G*Ig`;99p_IniI;fCQD;?0JrPa zO(^ZB2uNwIL4JH7_^B}%Xh4Cy-zTCa+ZViY`@AkwDJ5HC7Ol-1L%&9;I!+SgAojmK zAcCKKdqAbA9_^ZxN7KRH*~s9$_uYSqw&S3}TTa0WdUvzx;gK(vWL@N#nVtPL+lNd` zycSjlS3w}c2w(kXCO+CkO<2L|3kT9+>8a_qijxyAW~e^GcW=uQ)6B8E>C)YCxFc#R^}Sdn5F0|UW< z5#w#K86$ap$C+xK6N?VLwDzi0>YS&hcG*JoqjJ?;={71Qu$*m>5r_71Zzc+-ZIj81 z>L(c)#kV9@PXg$u>hQR7v%xPOHLXaDv`vWXcm22f6<8~d15RevefG8Dsg^7$(!w#Evdm6%)2fy{b6Gj zg3eV?3T!|0G`1QFtuvv%-aB~&ypHt4lUeZCo7Nu{9G|Ls9p%pIl;p2&q+pXMPz>QF z>gkzY6IFEl12~}n0AA(m{pI7I_w^^ELP9B+O_fK!cHo1Uduv^iV6)zN3|_~d_B0ym zAD>M_E$H<6fQ42;xm}xSb4m}-YOV|>vdd-rvZzbC7_T{|5kJ|G?t)*xf}$?B`h)Ve zq>r_~a#;BJP5E?2L2qwe0Y|!sA5JO-B{dnvDLK_Kp8<;|thdg`(zDNwuidw{zyGDS zHa_Sj@3LX*7yd0U3fGn2`Q^uZS6mq0g=7x(yqMLIlX@Q!@gAU52Sfkl<=6+N3{kYT zgpCQ#B*Y84yZ@bw|;69(3) zDbh|mh6Z(#6hz<5T&N)XXK$u@)@Y|BVJ#Zsv>m~J6h#%jCx_~Ho=0}f#< z7ufoL_WJDH$|E2oz$dAe&^FtCYAGU_ro_mQR41$2|d=`n4w@{?S1V!Z3I)g0i7~ON{L>$_aJ3`cn#KFT+O#J zJyX9J+fuM)bG%V#Iu}2t1qZuCiGl@)IU*|Px3_cs4Kvl}VQ?ox)4Zz`NXv=ag>cYB zR28YTA_y7=#4iZS#&LU6AVu7mrus^<{~S|L#5I5H?CHi7yED+tLUA2XCIc<{V4>Yx zMz36oH~#?{mZ}VdP;j;Rznk&>%OwQ;)=%)dZ=Vo5z5S>1{v}Q3trY|VgWy>tbx?sq zfr%9*w4mG@{jJteMFUptn@J{{mH^Jw&w29M2f{csqc-C6gZf+cY6VMs;;KA=pd8+m_+ za+I7#rH|zPZCx$WEo_McPr;8sD_S00QbnHz*1x=o7lk|4!>P`Y%Z+ADE7BTsWYrBC zsvoiyn!*1yOzb3Ae+IsA1-&Fo6hamkvqwjN%L}lBp+QI^1C_xX<=iF(Oh4Xd>;3>R z?am@KT;;>(9`f6(X;W6@P47p$0q`er(mDDZb=q>AsM;9SLEPxzS0gah70NIeZ3~KtH!O0sq0&iNZZ`ZTSsx)qo19Tc3 z6ggR6a||*kH9pRMy`QrO>?r@qQrvB=oWU8Y!#c}Db5C=p1h+mrQHo}@i3&dSFP0+v z*KZx&oCOoIkNpt!f$bH2u&#b)J3$6ac8>8IVeN4mK?mp0MpC3Z(FazplaLL9cnst2xM+IPN3^ zO*X_eu(A-vWIP-vNPNE0?Ieymn=A&$utw)Gt@0CnF^90$#rM!sq-%QRFl}ds`u1p( zUkkEmX*v+i9nsHv+>Zvq+Jz`!Xp}dpC0u>|aw!wP55|+oy)DmOg~3^oIpP^|6sb0L z{IO*QeRBZ>MUzSN*>+S%LmaO)jnyY+Nc}Ih_A_uo`h8sO&n;H^CVwZ@TcIW((AwsE zeNQQHSOu#Js@8w^HzROv2P5mAO%u6@mK{rx*LEavpXhc}5;8y22zQj3%|i?oD~_lv zPn)u%I5x~{6Kdu!B*<;WvpqTPH6o0}owW{ZB>&-vD8VEB?rs5uZe&y-NJaOj7>tFDmEwnm zC;f%jREuRh6MovNWRs{=(=sFdWBHg;WY-}l+78;EayYg%%`L?>W6LY37^T#hfV16eiX48OW_!F>{)QB7Ja9La0y+Qvgm_p+s(it9Z zmz|ZjFb9D^g_>IoeAnl9Qckamm^K~G&nrLMY_317&7~j+xHsb(a0<5qt?IyQ_0S0F zg^q=V=;N&K9UYGg3#~8f9SbDQ^_5jkmBqyY=Dq_vGS~EBzRqSecN88=7Aan0)cGFP z)_41lSA+jNUT-vB?*TQ;kNkihfbsEkd!i@#d^7d>-1~YI@NdK9`RO`a@|9e#PSRJH zS4HK;fK45 zqg_N(2gq>StO_Cxbp3hXxQNUui`F(8J1W0(bCcf_g*QnV=X?`fus+P6BumCnu_cAh zEC=3+Gb+Y)GQ{UY`1FY@{N-HbpYAX@;f6$U@h#wnv_d)#kTnJX__Y z9HzTKnxLUyVZt3BeWnGvI&!Hkj`1omGj2-hkZ(7C4MiqY=p4BqlpAOb&zxf@hgR&K zVL;NDebb4#kM?L8Q@<^c@^Vz8Dcg>Rqz=tNyuCZB>e?F1Iw&x|Sid{DRu@<ZBz9>>nchOQLU9B}GIcRYZH9Ps?e5soE#tjd&#>UZRSv1?(mtbrl!W; zUbE89!^7dzCqEybf13rn85nY8ip>?1(drBMEb5GgdJzW)|5#W?Gcput`eDtH`(3^d z+G#Ll;W<(%Vnx2xD^|@?OH(LbHBr8|XCE7JHBv=~%+pqoewwHL)V@wr%&ZEf3g)Mn zrXMbRKU{#gCT108*z(hyFTC^6>J`V8+))3+993HRy{#Cvl63_g@>lv?rA?T!kn0j) zQ#K~a_L{TJ#k*zA_-zL43$l4Hy1irQ@uWxl#f)>wbcl0LWu{bO!H}?2cAsmKfeppS zj|oF7kqd_J9X)VE*OiBlj)q8-XB=zcjG4nzAc}x|gESXT%1qLx4z4JyLhN`He@o>r zo)ML()`OdVn{lDSH2KubWc)vK>&sQjMY6*~^Z8*2^jU?#NOA6ubLXK#F5^N#0E_1B zVm*vNQ{e5_?EGRxHv}jq{PdMJKq7>LenNtEz2?I~QJ8Nfks!o>UQ|s+_50p#Wggyn z+ZTHN+_`pQ=$jg>>t{ehWPOCP(!Gm@r$fWI`3)4DbbQLTx!w#&;_}lXuL{#XM}Ka( z_7rDH3qzrPzp&z7J5K9@%0Hm?SH6q}!8$rR>UtiPd6|(AKP3CzC8{r#p$R5MdqZPW z&7j~_+aeRD5(o{E{bL8(wV3x!+|r#^gmT+@3VXB}R2Lcq!XoI_1}efXvDALqSEc`o z!S5l>n6GgtD$~q`@UV4g`lSxGf^K`@;5iWdfH)i*^%9I(dV|^c5s9=@qovXcAdfY& zTHvf?Hsw-Uulh&~oKjZe1Z4z^pt(mZ@7ET7p+L>@A|MEbCTYotJ zG)djvu_HjP>8P(0mAC@A4F*8X+n~@gv(T@}NNb zmPy}7DC9QIs7=0mJq-9K&;~b%qmUbQR?l&-1r#A>M`akmkIX6W}St_?_~8+NBqlZlB=G5v{N zFcK%Yxc*+UudZJ)<>ziOWmM@nM1C-h z!s>m(zi0HH{B5nRa9i(esErZoK7I_NwslYMyq}n2C})Lg6-SThY3T;BA`FyH)uwlr zy+KM2TMbrZYYJyE-qngiK0>f3Pxm{76cD@-c#o7F*{Z1*d5=l2s1;gKBF41-9sRPN z01ZG8Oc31hZnG*5SL9OXVHA~Yex_4Le_ITV--BjvF4V-eDrqzs0l zlG3a}FsF@N%t<~Q@Bz8>H`msFP3?yK;e@pKMGXxkZxFr@*lIIYdYBzCZK<7rM@A8k z9lR3R`)5Zjs2ORpz~}b4QxuQ>xYp;xs$q~TpYUaXYbA*EGd#Mlm7iLedzZ;j)3wVl zqgrcE$ED9_LJ5+z6lBerA?-#y*}VU{#2FZ?-y6+gx=(2WehpLcem&3 z%l2C5b=w#2^`1^3$bB^!5p#DAcnEzjcM^d2<`xb_pvtHRt58Ua`x`urfI1-7GE8w` z*-?z=&|FQ4uQrQdmK*4eHgcik95K=l)O5jWQa&;{{Wp=&U#+=s!^o`h&&Y#E=@>l% z5^xe2!Zkn?oM>ag6pnM>f;9`2cr}qw#)< z=Z=-gv7^`fNsm!I70eqmkJ`%(?)Q`T8<#4JO;=3e$4@g2EGFotR`7E|-=V*Rgb zr)-M)eREC{6|WK7ybpT+s>>*<9E|yHYwEqtSpflcpnW88L7=D9)#m8DotUU7Z@{i{ zbb&fJI9Tj79oym6n%{_56@9s7Y4kx~Snc_R|An7GmFbVfhmA2bW%00|n$W1?5T$e!GV39N^VS{aX%Uf%j^%vd^-sT#lxemX53Z(K+gE;(6+)XcR4|G`G7* za!sQy6mZ9EYOf%ioIHB@23WU_IrNi$n4T_4Mn=Z8yq@0t{Nw)FS(30acY7KAUso3w zE=OW+W8>TyyLsO3%nvkqxs?jU*Jy$A7E)ScMHZEvqVmN=5eUFpQUno(rXIH{3Ttm3{%IA%1X42# z_7t&;4nt1F&^hRPKT{!7^jSCZX9f0@VrukeDsrx_U28{e3YC1rIwcwqvW1nqP^YcJ_1%mzrmB{2u^rL6N?y44+aehowGI5sCtp zLsUwHsFX@TRS}{pp;RE7-EOg1AR4=@!yfC1%QS!=B9ctHyAVset8#1GmQBheaukCLK!Kpq2s=h#)G~g8J2#Q8&Gs=UOMbP3} zN^vNKoW2MOMQH}jtU*)ss^(Oz3c-M>ilM8ktG2EVQrJHT>QqFTBoyHn{4u>8t|}+N ztx&Rbs^LpeNkb9qVNkpWK~5#>ssU69R;3sgQ7Ta+J`e+PMW%>A z$!e-=Css|YolL}O(Zui5QBW;nQeqNF0HuUmT^ZJYV14#9E}|4pK{NxDZ3K_e0QsPV z8?EkaI~*3fjXtV8ZX4#`V9=9LqidH16EUV^q{s&W7yV4dLXjx<071GLuPuVW8rbCz%YVGtvBXE*1~@F*yd@>0Bb2 zj){RVJ+H^(p=j8j$)(bnByGr}fw`sG>G{Ic?BvvJK9^4=laa}p{45rp#cA#gIF+4U zo}XJ;$WP~E;QdT=ArV{?6-(B8&bMhAUX%Cr>Mo*xb=p(^&Vcs`8u1j|g&AJ|hCvP}kBy zR~OCgt#wU}Rkbx>ZNXC4gFWu9F0m7r8p=m}|2tx~LtyZ+73lgfaq>E&g$m?N#O zE^cit;m2KD%R^>hkvTe0S9lA81a}Xl4ise-NGzgqr4i;A1d18N_*6;YDv>%2a7yth zLlnWKlGvjHk4ifft4ctX07=w!0--bD#}YILq(Bu&Qv{s)jOI27Wa3UO49ThIWIidXxX!7x*y^H9Q+PQr$*ajPu$93HvR-pU?5VHsf1F6{>)@_~?I zG<942SW!w`;gibi!ee6WKt#t_kRGV^K19Jt+U(6u)WaF|;sUjy8936(6hVqSt|>7}(}*@}S>m7)x%8>fWM*F7laq?`^{G#a0oiOx*9c-7iHJTzdQ2<9`Epx@;4jyfIfeZ8Yj zd-uq2=U{)|#F&ZR&HbYeJIX@BD6Fq79`4&Cp`P)P)}F4)y4tFS+Umyo=B^H$R@K#2 z)z`Olb#)HV^Lk}{eQirKkIhZ3z1^s@rm+#HxW%AlqI0mXvbF}2@Zi`OWaIqOB6<;D zwHRO?y?k-;;r-o@Kfe6)pI`ptpK-kT?z<2F`mewI$AA3gzx}s={BQs5U;oel^N0WS ze|`Ixzr6hAmxmw!^zhS9=LD)=9ld^a^7if3x8J__<(HcuzCU^M=Iq_Oho65wef##{ z#ls<;Qqjj(9U`QIhX*u(4yweN`q`T|7w_I(zI%WE=Izyo z4@x&!(SG>h`r}8$&tAVa9BI9HafG{IOcA9bXeBm)7j(5QeGHGLv~flwbo3c^b*>bK z$0%Jjl+gE9FcyRmM~B2@j@4mqQ$EA&Q=LjXDi< zS;d2};t-d?fD-K_B2c0*rB2gxCH$!9psKL4LUk$uk~j>Dr7$W9R2^`)1Pl;PBQgL< zh!jcIAi<`Ecx%yMA}A))iQW`H0!dVn?om)Um z6f8++3A|ejZLk(Q7sRUc6As1;YUX^!s`v;TL^9;jem;VjKcgywP)i0}RgO{-F_#Gz ziMWLJi%p;KBs0baf3gG^Se2R+N;bnb@YB-3t4sOCC9YyKGb3hmg`tdG-`3UD)ZX^2 zrWy;PxQyfyi8zhoaau#9skWiMzNztPRTZvc4dwS9ET(m}b`+$;HIcw zKQdwDF08KVo_%VUum|o}ECF}V&X9uF4t83BDzfN8;QCaZ>Rw5JDvdAgtYv0$@mwkx z4ce?Gf5;a}MnIu>$Z9uFm@t10o6KV_uVYyD{+lq3SnLxPyUAi1cRH<+L@=I?K;Q?D z9ZyFSnOHFDw>zyg{Tu2Z9wwPgV^-V5_{6Yo9XLKZh@;(YvpFndBZJ7`^w{lA3vS`^ zxl9&Fv7;6n#MM#eA08MT8yX)QHk(Gnv9PLB(XtQA$MG>p;|f%13W2JUj@22RtW&QF z9eZhM9<;cK$kNJ+VpWG17wVVl6cUPhp%PsxaR|jt_s;byGjpr++->p&Eyhu zSmzISW|!u;!QWhAaw8GO&rD54=Vtx$-1V=x)8A5v zx>T!?^_9qHK-J&Ir;6BWe2WGWPmmdF6AiUq#_s!Ax;XF!!@*ku{AjrHKQhvIRU z$75hr5)_~M&0ye3#UQW}LpgGUpa9Sp0f~AQ*^u8T`FRiwia~2D55@%vM$-5=>O@eO zsT^r41p-%PSXHSd8uV0fs!u@GuOX-Mpy`@NZ&3=RQV2%wVlW^p3Ekb@b#-;+0F!|| zNsu!m7&bJ<3Go`n6%`VQilK!2XeeIQIKwxeflbCG1j)(p4RI?7i8vsl#M2UJ^{ZeY zM0&3>`t2ZC(kChf|)a6}D!6-MhA7%67MKa$@1bNXE@6`P!$!n{dfbs#OlFdpjO?}v7bhk=<~~t_qUAH@%1G3& zUY{^WV^9-&B5}&Y+=o1&h#y51diP*v^g7eo;u&kWqf4Qvs^Zz}Ab=CEqPXyYusX@b?hsPUz!Vl^Rr@LE0EpFKnMWBkO)1Sa8lJtty%yedUMiHeFN;L!d z3Ni+18K+3ZRh-U3-dI_oE)@hb2qaQU5UwIJRRpKX=`(PuNGi-2a?64tkSHO}dddjd zROS(}hmy~%s7)>7C&Mo#n3N&!XsnUM=ca;i~3m zag2!VZ6Zzk``c%ynAR}pL~Nr)9=oErpu)YVIVIMDE3(NT#v_g@#ZiV7;*F$cJ>psL zXt8Vtr^th<&Krbd_lrcD7d!4RsDnx|DBbBsGMdHQXowcJwYDIDC;2vs}Q9(yMLYUW4vqAMJNU+4AcuC}K zG+P^hBjPKN!=>Qb2{9C!^@*((hTHn-3DIOxiUH}>(%96|iXpsxY3%IA;e36i%2S6A z563TGf{q>@4g{zI;nFVVKy|*3B3G)ObE9fLRJ^(|_7FsExFcFi^lg71a{}aTbSl-? zfKb&pHUd$sy|1^Xxv{motD&u}s=mIlz0Krtn|vN(Phiin#w26msr-ItMKi zCa>%HV1L)(K=0Vdu+2K+uy>6NRW;Vvx3#wRcK42tjCq_j5SW{rAoMo0wLS+gH9BJV z`zM!|@iXBU!Ar*b!D~5(1oh*O4?q8`^x~IaUi|sb4>uG^L}D%MHfYHnnSKH^o(x zEPtS>k}oPjg{Ia%sXkE)7;~3kNm>s_`t~+jg}W1Rllg%pa1|?*r42a^5DK@};V)DI zrwBPo9;Bcpcx03k1j-;5)UriP3Yk^WiTIKDIM=F_P!BR=62KT2b>nM9FhI~q>Q!NY z3mT=kIfjpd;|hyoqC*PWuXoXBM+B!upo$c?I9TGYzB45doaX}T)a&SvK4M0tu^ z4VH3(46KUF0d=yFlAM~dc|0B6-StgPmDSaqy}gaCt^Al<@r3)32neNSfQZ*NVHu_G zs+Q*+H4XKMZ^7F{@?7Vji_wC+zn2uIH`KJDWSOvbPYls;yP8k!S!?BB|u&;h~zg zDMUrBqO&u)sXFE2qKxLWO1&8|t$=%(#oqVR3rw zhzt)8INWxej*bir5B3cX^o$M+c`d_=PA*v!h;j5!s3G2tcX?7 zy?PO`Le4cTWS;|7E9>jKhleNE*N|(@@wx=7I=i{KxWB)ActBju{cuV}Do7UB;?!KT ziOVYDQ+UIWXfTC}|E$xyI|FGd0#($dQlP4cQkAeOq?f~0Afj3VT9Jxa71ghVE*|b7 zFF?eg=G0VnacwC#nJLUpLZC>cqSNz}h3RZ66N^!2in~A2;rb-et7Iaa%O~^M#O!B2q9&>pu!C>1Z(Ig|HJ0xOg={(?4Vmp=^N0bXdnA zOu6hP0j+$IkUtU*2vFtMUHp(9@Vg*qK^hA9Q8{(2JT4oAGN;`P0g5Isf=~GbnS#is zYE}YcS#gzl?9?`(19iGfcLcl+MX3;>v5VOHf!Hv=`%9oI$gKmtZUR*}+AL$ZFX|Vd z%8dGXN4Fyw@D&P$U!znS45X?o7?9QHpcPIFlgZf`@BEx^L4c~oa-eD@vPK_OAvOI| zIO%VoRG;vvzYb9;{Tiq$p;RTH%I))kY<9cZY_^!k?WRH7M4x%2i;i)^VW-<|U{rq- zrTQY2V^sRHcBFufP5p%aDRK41xqHj`Q0P zRWY3zG~h%^F;yd|LGGp35#$QiCPkq$;`wPLOh)l`K zccSW4V)1tZ8Q}5~q`(tVDv5*kFD{UiNY?EwR?TBkts-20Q+EpMd zy5&@kQh})cBfFpAQc3+vHLBR8yW2p(?Z8auun>>;I(&XtG#--a*n>zk8o)8cQ!j=& z$9tF)TuAmhjV2=)P(A&8IRs;zR;eS=nx&5xQ7vx3A zj>rx#M5$zJKmJ&P-+^U0eRw#8&;@21(gFlLtnrZRE-oM&gIOfMC|n~1Lj4d5@fCb_ zN}OjCp_rb|&Ci3O2iLxgtNY?01B|j9L9?P}g;Qci5N^TuA06S8*pPe^hR}udY4GA; ze+55U5HO2$cnD6N?7mhAN#Ni>`FNZ%4psv~g+Nr?vu|f-5`y=}26G-B>W65s+PF1t zhk6Kmf$^2SjkHz7t+uw1Q~7w*toH&33~`r&%{e{ts{M$_x)gLZPKj59-eu7`At{q> ze56hVmM#Qr`6Z}8>bXyo_5|K0C@|NDRV!ymxEKCOQC)uXR*`qkH8fgx^a zZ6a*c(gKF~o5zoyJgca#17lkG=rNJ3imGRowbkD|dEC_2qNaRLo<6N_Zf@)9Z0+o* zZLC*SDX`it9qmYIYHP)KMjo)#;B;F%+MoCIv^{^`B->`=?oXaRX=rJzZ)(&py{MV< z;-hbB8|sHACc>F)G?$BE)g=NoL%tte{>+R*RK$SfJGQ2P(FdhxrfJ8wus}<_Wy7)5 z%qnSmg^sI;LkY};g44^(^Be2PIfI`Jm$a1F36@CVC(^H=E1cpM`mvoTn0(Ji&g?v- zk)qHd7K=o+P+V#Q2}~oRR}rOBuxSmy&yFl zhqpBNRp6rhjuhsL!as#o z(VW5?LtOJ9uBaB`AfzL+<~K6ns_0K~VA72145zEdN1UKo@OYiLmAJ1uKij@ghwId% z0U=T%4B>sOJ1<_8aF7!NtGeG8GeFg`+Pl3KjVhv4s_(-~m@{9z05S93EoOiOx}v7$ab;yiRaIk0TfceS z8uE>KopnvkPcX8Zo1PC1wDdf0XlrTeY)5?9ZgED#^_UPk+MSWe-0rSD9PSz!YVGN2 z@9XY@{N}LsjgO8vtoCToosRi33123zwuIhH0@CuJb)wHS&iuXIjqPpS!vp=}BWRmD z6h=oS6u7g4*SmjvgST=0-FFW^{q*veUtay=KZ0KT@(Z!5pMJXg>8G1N{pt2ke|krk z>i>58{rAlC=RZIE^yBRhKal?Pr^}BYk6*v0V$|&|&H5gQSRKA3EOqXe- z4)Mc>`{NfcZod8Y^8Gu+52OYnj76_i_?3}?Uthp8+}t1?J!I{euBP}sgZj2u2(}e4 zlJ$$kjw-rT{AJPo*!PaL`{{zHP${Q+>9OdO3YD^EMT;;-#4Y3Q?ak4v7nr7W+~I|D zsA5jw=%Yh%fvC2Z_NauVNEucNBoZgW3}YxRiAA1xt;#Jfa$S>kgliTTGFl+&;KF^8 zhcDgXzT)8acI)g6aW;En18)h0n$Zlj7DwC*^P4t?izy}n z{6=V)m;~xeV0(&$xK4T{pz0IN3l#w=M36xg$HYyQXxb_vovVoeSjdnNrK(Um-8(eY z*45QFGSbr70XF?nMMYCb8?~OFRy?h$tZi&)Xl-upY_D%=B68H&(A?hE(bp{&f6wY$ z8WBOZs@m$BhPo$}&%P1=8Z@`Bde+$1+&wga(TzA(YSc4io*0^#7#JJx9vEn7X=#1l ziDeqM=pG!1=CT&I+vIR`_V!fQ)z&vRK6&;Gi~&}5ez@Z1yp_p(o{$YDy~D$ulN0dR z#BR>daRgJhb#%0MeolT{nC(jpE8*BnY@vS6eDU3Pi0qsnWu~)Em(6UMh-c!-d@2|T z*lp(ViP53KJ}Whw#)gObEtZMYbk6255A=2Q_H+&m5Prf`=YjkmaE*-)n8t@(9-G}^ zw%R6wQJ-mI)C>08Wg8tC92prL8y&LREg+l2=8FWz#)d|Q`>5 zIKeDIvQ{=WX#Kagw!F5swz;{DMSp8+@Az1yn+qHjle)Q~%^l*RKUI!Zo!;CiK1Hmm zh;7jlP__j;yttr>mUuu{A63+-di}awm+B7hAIGQjkxUI{z;?CF#Yp7 zAg?)XCVHfD+Z}c@Z-f-5H5l}j>rxq5R52)4^_xL6C}O3dP)N+00c6s`XRjxkOp@VpGBK_DU{xQxaX%0Vb) zLqI`Ao=Bx2alHkLOC@?mi)cFQlFAv1_>n?Lid$(S>GL41kf4n$CvApaMJT2-D9mIe zGf|t3xJIOb5;T)sdMeJ~xipuQzl!alMpb4qiLCh+ssxY1B&K)ar3u_BgbKLSTn@i=VvWa*&nT(=TG!mFun3-Eyn4Ct* zGOh8u^xWqHvC>8!h&G#cXsCY z_GZE9f}7vkO3uzsuC5{l1a3Y(HwU&J)fy<((UBHe7EBE_qaIbTLOM8LoboAlx&1r{ zQU?SZybv1u2q2~4l#qv-;rCxX`bOrafB3^6|L}XFR{v00T?N**s;;J{zOJRcqqVc6vZnfvU(*BnAHMn{ zSk*?c^84n|H-G%b2C*nLc zwt_M?ftp-`K=L_IHN*BmvO)#}TEZ^^0ZdRQ5F)Gl`#PUsZc)Mjp+cyj-a4`16hmVf zKP$Q}4Np)ZME%Y6Lpn9bt#KE~KahOTsa7xwsG3CkL3RU?ua!7>KAW5RCD{f+Bolsq| zgjI?4)=A0P5X&kFo>e5njd}^LDhH}gU(>7%k;8`vqEw#)Rm4q-ry%4Z2~dUfy}MhS zA`cp{E-vTsn0OXE=?s4TgMI4qTwOs_Zl-thP74-`RCLVaXnNlHxT>Bp~L;;ESMzHDNw#;y13o;w{mWmFhrQ^Sx>2Q-g(SUHdM`UI`>=Fc^jPDP9E%>Q#Hpe{ zEu_PP)nlTlIBFlzQm7x>101+q_-CHX`;*6NT z6+}~sN>xRmil2F8IBPpugN$gsuZ&Oun`9J&5E0WnvC%Uo0dBO18c-Fd7a`^+YR2)d z^&7RR9;i$g80NT2ct}4O2*g8OBwYwZO$kj!9+br`I2;ZRFq`el<_wym4~QEHd}eIw zhX$aj=#984(}IB7`!qo2G=)h9Pp23<+9oI!W<^ZDn1nIm=N5@H8Q_#?QK|kE2@zaX z+dzS_vJ3NSQ7HHnp{vaNEQ+Vl{)L55D%J7)dC%bBh{e)9I8a?*hqd*w_=l>jsj3q% z>CdXU1xkC*^OnwzC(oW?xvXn$tgf$BD5{|qD=f|GvFwtq1}pyP5f)ZzGPbmg*{rA* z@ygojx~4{c9DekO->V3L)wlO_H@CO9baZs~_Vf-9_K%J@A!LTbcAwYccJ&Mn433YD zSj@wwiJqYWGy^%oBksudcHryCMGLbH+QR&~x3_zC1_oPA8P3EW4Fq=m=Iz@%-T3d@ zZ*M<*c=^K*yO$?(8(5vEQd3#0Z6cBghoS_k%oC#))9A$b@aX8E)n<;QW8)JeiOG~V zl+>(pvj?W%w(AupMW$vG&VZq3-~q; z4pw(|@N|k*Z5`d@s>~{I8P>D_m71;!s71%7Cj%r$Q|L?%nmPmjtR-=4O{>rWdBC7iV&l*}~k^ z`?z;xajj`;rP166`m{XIa{#Mm%Vs)>HT3aX5EPvuo}{5XE^yV8r%$=86!9Yp zZp9*$C^ev*R#%4gh`cH3C@#njB1XCvQaA_~Gzf~spkPo@eWCBTso z)x(2?y#u;z9=Dwcl;2GqRG*7`vc|cM1*Teh1oXRQ zOIKAH6|d)*TfI)s!k9GOG$EuO7N%yIe4|l+z>jLVb1LR^x7~yz(y=z+E&;{7Fn5PB zZ+MgGSRx&b#zTp8OqP}m)|JVb$?5s&rOg#8YE7oonM6DurVU^wk%)y5$>mc>OeUku zxi~YmFkP6R3Pt>&L?)J+Ohyyo{9GYH2UT%y&Jy&TzIeEP_wEv6z{{7^_l8uaifmX} z1;W#}jW?-Qli(vE4X%kx8W6ZiFwGG2$bXA_8py!3>Jn@sIW+|)54`)z(b1A@+Xn() zzATn~H0~4VYDvAG@6y*SPUl6JNXmM509nL05_IL@X28JP|)AwplFPh6m^SStB-Z1)`En55)iQlM& z^6G6$;U__$)XHyWWrcVOfhww8sbSz3Kox}ig{`f%gM)dcD1I|%lf==L;8{ee_=|{@-=Y9jM8sr+zjeq|_<_XQ4yT&3d3?Mf-}WVi zN3;#ac~cSX7Pq(5Zxkw26$2#*V5nC8RjI6nN-)r9)v~vTbPT=qBRVg~RS>dqBw`E} zP02(mqqqp7cm~-|nu<%vOhHZ%E8Jb1gm;Az8cnCQd3ZUHNY_q|*&7v^D*2oe!(I?3 zPu%eYLjLtN>Rf~z4#G&`u;oKZif-q}9=^fZfOszTFGTGNyD$;m zbrFc_lCGvmVh^}?dvo|ee@4eI30H}34jmgQ6mSe6jcV3GViBYMAn=IVUw<@y^f1i50&t7*|E_Ra{e@y?u+H3BT#p zhYv>rZ{fjp0>`UZKA;`n>LI(LECKXIMUpQoIHHG3hesbqmsXNNA>TIE1fo)46m=@V zq}bEq-tO|@!RE#J{=)-?Fh&G&;uwg<@-jAcR5GXNLt%hu*F~MBMPz=P>m9~EYM5SM zn_63*Y5XM-xqB(a_&$t-~}h=GhL0uh}wa2L77E-J^6=hT5Gl4X>W;hN}sibB)e z7SSb+XnABMJ>>wGX#|7_UJGg_d}b(B(Vh{PkcbGHr1?pFwB4=qGcXt!*JugaiGsPs z#mxMCx}^F<{AfP6xS$%Zlbp$yippOrm8o26%XsC#g*Z)Bu*c(|#pt-iUrs7Z5zK=s&Be!g62J&_KoK&W`4eb}Ymwg_XL!tE+3Ezonz2wy^=lYa8n8 z8XIeov$+X12jlSra4BN`24QCRJMMJE50;`)1&*Dbsy=*B z>%RwqtCqG_L$RR8?~Y~?HoMv8Fb5#>#zHn5y-?X47L#dgd~De6vU-9Zm)AjO=a%t! zHsN&HoKCeR8Z%9djF0rYz4k!Z>koOriw2^8hs%l@98PO69vmJSbb6dF9}xnY1e!)I zwh3G{nMP6n$ne1U#E8Xivf50z*XYRL=;)BiOegNcLw!SoeP~83m6%&z+Bi7a6yRz1 z^ptvJXJ?8)DNv>6kV>jWwTn4fw60JDggiKIq7p3ky8Yk&{tjw8IyyK#1sz{poZsGF zy?AkjmnNR7PSnFXBpm^#7{^;xy(+n+@w3}oWFUdrhNL6zs~|L~Vw5_ZDq&S5M1=kZ zT%}flEG2X=K-JvREKT{6kxVu@voKSbEr6!xrXWPnV|pS20VEy|WhYZ~Xq$>6F8lEX z!a)y?@pupgv-uQclR(&$NJX;wL?#m@$`kcb@Cjg1^2XxgZCym3crpyxCn$PJqMAg6 zNYts2pWE}r;z7tzkbNNa1bl8pC{oEMf5fBFAhLmI)Z%p@T{Wj5QaS7sPAW{9y&k96 z?Ql9Q4!g-kUn@4R;906vg}7fFw%}L-svw=Q8G@aGkm7Y&c`DA-qhW&-s0w)PelNER zq^=fjVW;zALCPS(*}@@z38*qKr?Q}Elp<5e_C?TA2%33nDqTXU=t;c{sKRk+-alJ# zCnDqifSW+l=UCO>2C7OZRaj7}68##e(#`%9q9RK5E1=3eF=`#_bz4U~)?rGxfq>mf zQ{Ml9@c$Z6g2OL3qs_*4m~DqS*wDsgLt2AtmCU%q*B za(C+`(j*E~vY!QQ`uyA&f|h*|e<~g0_lKZ28VO)ZO=lCF(-UD((C-O`yvD{8qHh%t z<7yNS34R}q_&6tWVF;ztQO?WU&W{RN$QF%-s1FqlU>3minn*@s@et+^q)*ZD;nd{J zByG!Q@=NQ>m}IcJq_fFfK9w(IGMRWTmn=+Wr{^Z87pBvh1aeNzPfgAiV##PM8JV1& zT-;omS)K`oeT9YT>})F>eS3QY6Qhm6~%J*TmR^s=me~L&xnkCAX}&?^l>!FtdE~HCn>?@T;%tn;OBR zM{~J&p`aQ`;N9Z|)uNh22T+u%D3j~i600w zFSyU5(CYraqEQBPC4{R=REbipDEXK_1@Wv{C$6ekh)as z!*NG874;U6sEP&RRRLMpCq*DchoPh=Jx7H=ZSxX@NrFU_01bgqT8rD^ore<% z%Ac!rK7}rgzDl1vQWb7NU`Pnf2H}n%-FgDEDBHGgw3an1N>xO!kg|S613gqL8Cb10 zj8u$pHlTp2g06wsf;d=20EU!{(X?}Uad3M}Oy~S;o$A?*F>Pv`I6oxOc?`sVe?t5-*|3Ek$Is96cd zN6S`p_0`qf@=`FH8MIg?Jnjjv+vN3l5-~?OXz_VW9`~rj-aj^K@%si%rV*>fkL@g5Ni}U5;>Q z7{VZ!)M(V7NMPiipz-(jTj$)!6%TU$_U-j|-`@Z9bslozb8KRqXALf6Q%m`{zn71dia?dSgKd0i70jb-FK=#b^Q7@jrhcw`pKKu2QP?H zm53IC^qWpYKh$vj?YE~i0HhZ%LyJu{q_9p2P)On_Au3U(lim7G1tfxK3KrtwfpfJu zP**}(Oyh?SRDZ)MXLT%j+`y6hV6Ge7pF1fG_LBimZz%L2$zy7|%6N z%i=PiN-%L0*}1r2W55+)WMQo=?l1^apUf1ofLaXOu~F!oDVTKa)xBHvE~Xc&u>D8`7A`qS;og2+gj_InriB~IbcQA zv&UF-g>lDX4Z^aE6s*PklJvBKF4${o>KYrH+FGmYY9Wd!Z&26NC^r60NUXvNPP@Nn z4K2-R*zm+ec4nGxn2wLZV1tX^IXwk!931SOpDQPf2${8bU&w2*j@fMVM&%E>J$|RtZHuNOE|1+Ca5;%pjX7M_k>LTedE81M%u0=&i4l{T zd-*|d9vd4T8tj!zn8ijd=JAmcQKvGGA=_YoH{SjD#7HuiS;vxnc*w^T5Nhx2>_E2s z1MMSzaRI_3e}PpIs5(C0Iyx$u1R_77tNs1ejg2*NslL6xkK@k40qF4T?ELQT3c?Ov zn%eY-;}Av?6l%Q5WP}?u z%}6bU$EF%J*msx>9R_{*+T>)0_AnMoEE!v z++o9FC8y$>g$}A*;*?7EY8RtFTK|blDVraXl;}@^f_|zRNE}P3vBzI1;6?_+5>SW` zl^@w0M5#Q4x;(PepAvy8%ec#7^|bLZ&jB^RdP+qeJO(_KS3E5J=*Xs|FpwXm_Yva>e3G9OKZ<7u!I`Sf%?l8U{0+WhT1h#f|W(1AGadvxqW@~F|W1~=1szRgyb`z{8m|X#?P&vUMQO=^B zf~13(O$z40`+`s1+yrHpms4OymzR+~2`*Wx1?e62rdoVS8m1Bjo)Ls*L;itCV{GTA zrhj-#=z9WD(UwGIm?BVxCY993P!CyiHPHeyjk}0ELxKz-l0YPzdEVDcb*d-gpiX?$ zVQArq0S7*qiv44w1DG_&$NPqdTH4!*TXj8e>1eO1tD{ja@;|KrliJxs)vC6x&bH^B z?cLy{s~cOJ!L}k>EvUY}vYM{bm2jg+PiS2Xdi?ZB9nr2M;07p}LqS_nnBC(+ZV zeM3X;P$-(qrSOZ-(55djRR9?fRnc|20Z|p>lY&MO#3`anAVi2O70vhZ+(Dd0lnltJ zh*eD$w*_3-+=ToykKc>tb<4%FLSk5l8AHSIt&Q;4S|zFBVnwnw_ zYik(DklP_umUnVKniN4xa8ywl!yl6a=U8cy)-1v*OCb-%LXiw1zEV0Z*#KfpiQ5{L z62H*Pz>#K0Tbmr|xT6ARGC!b_z3VHr*uvd6&rV5@tcoZVjv68ABwANE#Z^)f&!QK0 z@koWZLJ6o@C!$qCRANO%|LZ4e`nPdT=W$yX7u@pinphPr`)J%};2;NOKvjv*LIPNr zNMF9B(VrNd31W3mKiL9Qoxgp1_V(>LB7#+&5TJRvcY8xT#Xvm{&~5NeAoe33FBAsA zV>uoDrg3_qa#)(4x7D^ZRyQ?N*4I`y)Qvc74Xv%so$bBjBb|f&)sS85YkjHY{Qlm6 zWugzVn#~TLI*`pqrV2QQ3zPAgX>KN1D1>vlP%aml%%|pOXSO$KS0$!cxGx%mW$_3r zf|%D4Y5M7>ho66X@ypLtr=r8DpYDF7BdQy*=DYrmK$Rd?-(P+AEsjN?>Q8$0R<7Ru zK)b)2ADD9a@gpIsH?Pm$zr%Z=_jJ58I#z#q`0|BnRDm?2-mLI4FJ-$xoD`jfSJQ16 zh9#xDyJONI(%l^!AT15j0@6qikdl(_*ys-FkdO|gySr2H`+a}H&e_?X_m1m!4^kNI zcsGDej*_*B-xW9c!g+T|cxM%|o0YZB`jhFaFnJe84rVnq%A6Ht{oU;jv&fe~=?~Rx z1sZJOL%#=FDUuw5`ktgeGhDw%hU2l{yz`K0m&HQ3cDO#-33$9$jF!gurouYwc;D(4 zRk=Iu-A& zDOONL{CBG|uE8^|@&d$Gq@2TO-x<3u3B(IK=`juW~_CIP;b}PI4C_7ycJ-?qXPU!&Y1gp#^9P-*11k(-|#nx>; zj?fiB6C3k!jSSwC{5hK~m?N^>#h=8`rL8JJ*nh|>EB^P3z0|rt5h^lgyfRr!uo;Qh znw*t`Q>wFNa}~CNLqSIQ@!X??AI*aU#n*5MrpOj*sW`7XA!Y?rS`=-6V znUp-CtE2e`j%8~}8@vkjh(qshTggvA$6qXosHO?HYAC@d=lShsRc2qN81@4;B+(Ax z``hI+imj8eXeg~&4u>Co{AfKWRk5{>T(b|DsEyID@8E5Vhaw^#v^2C!;=;mhZ6e5i z{_b_mRWRtlmmf)JI^C}c$_dh_F~BB(Irx0bDem9p_v4d$GMCkgY3YE-htCEp68ap3 zn!7V}MN8Rwk-uyjHNKBoI_J(fG~>0ozt1*hwJ9{`NY3U=xVm0M!mnO(y7E5pid@*J z>#x_24Cp_xG?UIxk=72tj%jo9a z66ENQd@v+9`DbNq>8-##t!Am<6lIJ=>n%O0xeZ~33ZpkV9h4Go5-zvRln_}sdCETa zDz==Jb*Ls7r>hfy8P?WzbaXa`Z%aLDnHI8XX0I)ue*^Lj9VjNN zYj2D_4QHzm0WFRyC%2H}12+OZ8BMaoM|K@n29|Guhbf?Y+$cAyT*H-I)=WFS=OyN2 z2KydhqqD~OuQtr>n_i(aBmorE{(OSvYIdp%Moq!o5Pt+8rbMZ(I4N)xD`Ty}t0+9p z?M!j`Or_BY?2;CvWbu?JW}OcJ7q209ia2>KN~BP`%dA}#rG2?Q{+uL?g6QjgEccxS z78^c;u7|ojrPO0NU(-L#M(OXg!KGFF6(8slKP&Wp3aFG4WYMl3rjy3?QM5_U_Au?3el+KO)6#f;bY#&!G%GEUj2e&{dfQIsDufMYeUzSXEOx&2on79qZDyS zx30n@5z2R{%ro`)?Axm~G(%Rz!+&q*ujMB_#tPTLK9e3{mvtd}0U_lo(lhu1nZN%w z%fj5T*_P(#m0A>UTXpxtQMs&DltU(Y@Ma#w=n|D;UqR@y%Jq_E#8A-@nHR{R@*A`& zsm`onx?>X_MSpGBthsjmnVLlH+AR!<=L!7Kd+viUS+rq0CB3R7bs&xhoFcZmG! zF|KH)kN*!~rR1PpIrN_uN5C;3YR%0r5*GS0$C<4V^FPq3Bl4C<_`g5>tqoN`oWax; z5XybCeF?K-;NySS+FmR6gC};T*Mln)C}gmyGsgyxaEg*{F%w z+K}TSRvtvu?piuCURu)510dAxR|G2IXn|>*6${>$fBsM^Dn3r7^log>@4T5R*HQj1 zmE!6SE(P*mCLo@RtIf=;MP+k;c{wH|>|N7sg`LYDUPgvdag!+S(-Z9zyI(w;h1{U? z>JYXuXO}l^0_Yk<{;d6HD<=Qn9w#TkW5u3GOkV82#1P%-B~{d&oOku~>wo=fO-UKP z@ua%?RyBy_Z6;k^X36}vkk_tNWfqUJyKxIfkH)Ujh^vh5UeTYZ(bZ~k5veGPtf^>) z5%1*@mP!{_S~$;5V|&A!7@|vqQj2((m7ZByRsHcOaCPC&%=E(4?Oz{TT*h^?o?juh z0eZSCfUd?r|Bvd}AZQIbY~}eQ3!&>B0eb0-S8j8VRZCU=#zDPp?AVyV^GAEc_^12f zt=%}int_QY-$>s2r3#iGE1T{&*tnsQyDZa;ee3xjDJdKdkEBx?-(owB^_8F}_3>H= zZXB-Pd;c3kEBkC$w&kO*Xj{rn0pSFlU;Ldy2df_l2Iba(t}!l*&CSIwcIA`_e~3S(2qUQ`+Sa(W9PY zl(>mBl92^<@-PnATJlCz3ep-l$OuJR$LR~Gr8-yx8}!+1EkjdO{pJO)a|<*`9J-aH z8BX~c+r@s=N@FQi*n|D2y$;!F@Dz#UG$((&nJhHGg%_Iv-4J@*r*CDBcqTeaQt}!7 z$Kms->%S-m70ZI>%LJ6os7GYv6m8Io_nVV#KEq6FnGCgu;;~v_O<_(XjhI+LYBk>- zJsAehU%LsFJD@7l>1S|9Ev8*N2(H?79iy<||K?c9k$^X2L8C2WGhyVA4JgH=pqdaM zPZ2pjg(yIi`%r$r7nN8P6CLoc+D&K=W89Qk+9MTUY3nSINp*aPWPv5bFW4NI2kk&b z^5M?1xOz-D8`!gEjIUH$D)>%;+RI32R$M^Lq4}YnU6W7Hs@4N2 z@5aUB3`;09nVT=~2>6K!c1`SFZIbqX?1>K{4g9;ga}$Z%yaqr~Q3E!E4p|>n{yo^j zwVn?mkIp(dgLUa3nFQjnv+B-gXtE!m%5Fa{xo}Gcc5lTr5d~;dcjc$h#$jk=cLl}I zJU{tm+^?)oqd)&jYiH7!`Rwc>6>YF_z5aXNUYicY5HWZe5kK%a(T#VpcmO?2yzie83yZM`G6*-aTCr13d+MpOrD}sR z`Ywa1OKwHw{sCeMbDfOMZES}W0UdXUp1rgMG{Io?fU zQ9efOfsg)I*oCyro(>)Z-RQ9663AqLF3LZ zKAR+tM#hP!ryPj>hbR|kmrDDx>aq%C+Gq8Ft<(IM(~Xyi-zD(2jKPTP3f9h$wG7~f*FZ>Xra-qBN)yXy9d{^pO{^X&C+~5a37YPUz0_9bKyf#0lBW;n&VsaE=h@##t~2?UpGIS@2?paQ<2;! zWb`6+|C#gDSb3A1wlo*BDmjeuVWO^>|G{wbTFHxmR_0xWhq@syD))EmC5#teA ze#gt}csH*td5ML)k%F6tO-NYgGkaS1o*G~ljlXo##H@%3Oa6#qCC-c1gkKIUr01)K zC&$EC;wyj0ApsyV&7MZx1#!fXD%a#uKj0wjYHV(9lJ0=Vo}2)k@XGA$v6GX^6%&wb z)Nb-21i1UOd=5|JzRa#rJ0V?AxDhiMA)AT=-A}4S@?tF{2C-;tbM$f@2>V=W0kgTV zF<>Cz(Hr0Fj@^{&1K#FeAm&Z@ZNKncq*8r(a>f@m)!waN`x4@Rr+d2M4K6Fr790_Wuf~XDfkF?~&LpN!H5S;%- zmXfqYBiF|LFcIdINECIMo8jT za}5Z&!^(9TuK?{V}SfxS%gavu8h*u1y)pU|oAO%u#CH;OtvqC1!?7Z81_)a{$tULPR z`u=-O%x=#J6CAj9Hpt?_d2m+h$U&U<%N~r(X0MDBYq+yx2MZ9|Xt1VEz*?h~4=Jw* z(G;4=z`E#|_4FMCB{~OW)7r$roRS;1cacv=eb$PV9VmsB2I`n?|lxys| z`v!v}Jd4ioBp)Iwn)K!k=F^jsb^_*GV35JRygaGEJO!be9ZDQ`5FS3eY}{666P}^X z+F1Vkpn_T*F<71Ti2HJy#<%d|Ajj=3G5*80N9gnv3eC)yf}#)Rn{IL#R`giqrO=q+AaY}uQ)020mIO7!W`fwFag#$Xh_nDJQh6QCP}S{6Pt_Qh6?HQ(*+L-Znq5BEWBP0UvUlXf#MqpibddOhXn!-a ziFLXbhnN{*=la<1YK%5IYv-<^$B?iec@egdl$$Z^l)2fq-mkhB*D!7hbs`M&-xo$q zrS=!3g}67$a%kYF2iEW2C^b+c>FMuD;y1vV-m5cf53&by2DZtelrcCLgTQ#gX#3C= zS}0#co+Olevs75(MSwUf_w38nPbJcNv#-zY76tc}jI%m&Mnd{|?@rGw1EsJr!t3`` zom#?RNMTqpMoaxs-~~9^TAraz=Qk$>`b=e;4Y$~V)SSVRQ`@{<)&HGOetr8e&rpgE!k&%>qW#JkRs+2nzBJiqDjJA=*e^ zBw>ruB@vs?CI0swIUl*Z7s436$dE0c~iO{4n5$7-^28JG3*yrN^wNmQQ zHgx_@%TSeeF9Qrpi~*s3VYBR;Q-IIvf5wK~4`##x^1NGYq@#mvMaq?qz7;6dK%w)>5txQKw?a;1sMO(mxZ zqwKgrQAus>Xa5FUkFp0JMI*D%o|eyLV_%AKaEedBWI3pGTKf3*z7P- z2eZcUf6UQbV!vngRgBmQN3`J?HB7?9Z27f#FbsTi4>JGU1wHBx*Tp9!v1ytF{acx9 zriIZn>jn1bBUb^r)&i58lje8dysw@=%fa@&4#%c`rTu7bHqzH$diTfgZh#XXr3~a# z1OQl;`l3Ji{Qy=Wgk4;H&o>b~E)dQR8M$CHzCb-`8}Ap1-buj=MIerdmLmS_r+^M0 z>75pJ1o-)vwq-5Z=)ApFKn8^7VkN4-{jES_k|Gxq{ZhG~8&fY5op#P{h=Ng4ANW;Q znW#hTTKwCp5*~R4g(2R9=Yd=`qY_ApSmbIEUzHxoIn1Vz(!AnB>f{;_!v%-?<&PB` z)l6XaW63b<;Nlx`$VLzIA&E?kpWY7akU!F_^0)2x^|70ht{&dJ)!?<FI*+Wte0`+FiXl3~Ag4MHmmam~4 zD*!@8&hG3NEyT+nqWdOS<$?sc9qgns#p|n|tXrwOMAuJZaU$CUOG$Byv3{i!6GfLi zyyI|o;Bad9@xZYf-gjthv^H(9w#>%jonr92oX%C??JX8|?1Gc*?gb9k(xZrPSVh(2 z;ZZfns(KYT{D@qR4l7*j9e@_DgG;%Kv#-uWML}C#V|k&AM@@14NxWH*iT1M7X&ppwy@LOmvRZ0xcKYk!k$bBXPMT+4m!Egpgd@e(y|J|GIDOZE7#CFM z-#k#G5Wyc~F%GlZ9p!Ni187?yDb1&dCjX$S)nZ-%q#ud zcja~E?zULHnlBTvL%DUaJBxFWQF(E77ciF?Qza6Ufva`D@R@03OM+qAuH{^#T1Z1{j_>jem_#hVKprG!RxY5!GA)MVn|W4S_y2*o(bEe`lc9`ORA{0X-eo*U=nUlXD6$CgBHr$zoKxS|_CC#5 zZXrl^{Sb8|RJ!&%o;AN*1aN9i2^zMWfr$|b2s)Y^Bx*a~HuBPpZXTBVb!1+wK&dJN zo4m_h-_;Z>6Sa(!1Ix7K)1j!$c-30{2Rwep%TKuY;RRWONx$s9gb)5?`9d}`Fv60* zQF`JTqUa2%1%o70rKbuIr4zcMTV8Uw{bQZA$h%08$T4K?2>dNsKH-RwXvh*MvyS65ZNsJ#99qNLg;NwS3|1i4l;CyQ`T#*pR#lG zlhD6rT~Y^}d<3|(CKp>+DUm(>p?~z7b?Yz)5(qru0Yjbz8sRr}OtcpA(o_$`Wz%&T zxg)xWoFCk*-y@W==|oHCjzkMFbfT1KABmfrpD9-@I9l} zBplMG)rs$vu`L)dpBU)5yKv13SXFjn6?o>R=ZH`xrs+wCX4OO`jAO%KYB4&qk(VND zP2KkJ;$f#1mhR7hKfJ9o1NgE7>5dY_efISH9YQIiEWP+ac#wg0tyr_%%WGw^K3sis%q4;65DafgXkQB>zfexR!r;g;-{ zr7WRkhb&TMfnRty1$8eqMtsJY`R|&B4657PQ!dvswk1ivubYDLgWImxIM|IqIW6Xc z%s+sh=3`;*(NJDp4Mg|y(@g~@zYG#@=S-nepU3Ay#C#O=kIXv((2Crr*0AGg?C71V zL`T7_;jsF2CBZ(`f$SG=0jW2Jp&+_&#?5PMJ)QQ9bl&UIguPFyQdGA6lemKfLd8IX zdbG0o6Ou|VY;Vcd;+sOUtsnZgiQl(;k8@m*0wwR^dty4f4T2&*B{M`E8DDK5gPN{G3Xr9cb*5XL%2+Ada1L~7;qh(vvgYpSXgS_Zk_q76q+yv}f4Epo zN=gF9%&$i5tJ1fl$AaNznadQBUfpoQ)7_*wqqG8pErq>R)T}PD{Edmo;c`)c8H2@ebW!vgz|# z>X+nK%ncNM=Yxr0#0nP|FPAE>grt{mR%fmH4H!fzxumwh#9(Jo(8ETD6qvTU>-qN3 zsEt6fxC{QSGz1c?v5JSnpGPt^GD}VnR{HZzh&Po|u_Hp)+x3rjE=N?yE+;2dE+6fW zj(~aIF`2JsM%e1RQaN%Qg8amzwu9n;Z1Ey})t_gN_|4iD5R?ZR+~xRXu>}6=v`jq? z5BEG%8@k`VtPDinHE*8%-F-Uah7sIcZ1%mzdw0;s=>ON7*^UVN5xMwr+Y1Bt=7Nz= zD+c3X?UQ0xUs`{@my1gj*M_G!o}Y;SgUqvz_LEvHv)SaP=GbG)Lav=YJubZ%_;PdL z6x*~~+PhB?7q^94T2|Ys@Fl~*?DBJuOPDaZWVsH0nU0~jO|_OQhT>n>`(iYGlPPxM zKP-Pw>trfb_37c^6#X8__bm6XVF`WGsWKjv#=R3^DEL;(@)AmRq$VX^-|m|?Nh#jn zGs&YSdni4e*S}`JJ29I50+YR<9t|VoK+dLWzSg{!R7 zThZZ{eH(k)1^6uG#d}W}1!qStEWV(3wiYRX{*O&s9Q~<~vY;L0pEc zy+Pp6r@nK#xucce@bF-jkEc;Q%B8QUsR?mXR}Xlefy2i;S9_u^Y~RjlzIkJBY-SR! z8tcRvTgjPHH{*OZlrVSn_D6PT$wlfo4w29GHoC!!;_}b1+W_K}39Y88*4q5a){dk;~&W>#A2MK0_% zESl)WIQ3f5)GxARag~ob^JOYJ2@;ZNNA>~tnO*H<0C9d*B0{<6s0B?n88sCxf+)Wb z-|RcFd49n~ms(9M-0M6#JCC9uyBZgN|9&f)cSh<$0A=r+B*kG2>(+HdRc<$mrwEZq z2-MB1soEe#iCo}S7*(*Nt!;lL@-QOrznx-36^6LKLsH(D1Q1AYr@$<&hbax^LKU@qWT4UDDLgic zjh9_S@P(*2THUuLWr2|$0S_3O>Oxf9lzPgq-5r{c{u(>1{RW-vkywv68z2I8A{3W8 z?LrkfkQn|Ax_?!IlBrVBIdg_C+o{)gF&zHryyw7pYXYD);qHDjBe;8Vjx~EKb zxb9dQN-$ia58ize%|P6t8$2sIw}`i3oWQhD8k!k497=?eF!q+-Cj@2t&bZ@5m6QhHzUq``>E0# ztdFH|xNZ)C%;{T8rO0qX|4E}^Mk25(ufvc#;822)d`V^m{jQhCBUa5Ee_ffhqDA-p z*F9zA(x5+!vyOPuM-O0tAf2S+jd6gLp`#{uUw|h2UghAu1d2KbBcl@gESB>7qtdz* zG9?O>e=7GTfmI3FBLlj%TbUnEpIM{(zaL4reWKM12^f8nXOxhK5fS#V|NdoC!C)XP z2g9(+18<5(l>$*uDfVD>9VEsO_?Kq}6%+*(E6_Ov8Qy(3oaS|I0M)H6FrZRfnp(+T z?BsN+ctWBXRh*?85ZmAQyHEHREyDK9?mHq^EBa4-1r)dsvariycQC?Rwou2=gg^OTq?i`n<_9hMn`z`Ah943%p!|Cdt3cv$H8}!j- zGi)KEOG`-~KfXVQh8T@W)p52ZXM}iQE0FiX*|_o%e2?B=6jf0`76t~eywz*TM=L8P zuQjFK$XD>Gs?xDkRWl;-zu9DA;1#|fQ-=yLCm*796ay20)Zk#c<}ye0T5=s`vd?lv z4HkZOOkM_|c(Z?q}d> zjpyEb>{wdGzp0e}uzFszupIjl927P0$PDD-mndU}o?n3V z$hcEyEkHBT527v0Z*6UBy0vF+o_tYguTQ#ga;mB-AGrT_c;wO<_*aR_3M|mvSbz#J zcQC^5nVKIkZTa#&C=od0IY5)Q%gQX_PYgvoVL!^-E6LwT+#1REeF3PgPX zno?F|9*#zzGdCALHkQ)SF}7v-^{z4WIh=FBPV>4FdC4$$ZC;9oxnH{e2*`^(jN%~t zENdFIB)Wo9diH8k9tmX=KC^EM-Ou$Wgefq{`-zWmUP8>m$x~uniM!Z$si>vD$NiqH zotnG5-F?^MCR!^vj7p9x4Ey1cr(%%RNVH_gv|Jz4g5jBbgo7)bnVrpbcBakIe^sD3 zoMSBKCAg3+l}!0iBbP0JYZS95FPWPyFG{aE;p7C`3B zij=LLh?A&e_u9#_K8BA64S%F6Brl~%7t2eWxs2&s&88kR0@)TK5&}cjR||UODFm6x z=t*MfHulXprxkpaP)TWQ>?_ zDg9B#Maa*HFZu#V{f;$3iqyH{J?bh<2XeK<1tI~@8LP0>j)99hG;Ma1fO{#c=n=i@ zD7=mUzn2$k;)>M{@wZ|I9U=h2H5{=PU$+}SfJ{6!GfrJ|0qN!CqBgZ^FE;xG*l9a8 z5a??AmX+J6C}YVr_-b3CG+V;TArTc`xI! zB-F@549cd1pX&Q?xj*-7>yJRRRa5iwjphbOwlR8jCdz?c-VD+7cnVWS+ndt+;k7}v zS$j98*Z^hVP4sUkuoa>0Egh0b@*1Lttl5Egq+wRQK>t+aYo^V2E3KU(EnR)g4#OQq zm_FP1$qCV5?+pjBAyfL$@FRWl;!eq_narchfs&=-QTB0*QxOe~ zUU+-6Jw^!R&n>anef=YI0?(w>cneHkuV)PI_vIypN8#1rKYuY zQbA~tnGr^m;$vngz$4SPXOFr2qGLznTxv;+UsOTmdL_NA-7W`g5ZHk5O4xg%`gff_ zbP6VT38cRuo6aVM~ zpSP(^r{jwysHgvoOrosYnrdIjzlZ;f0D7~o_yDhy(WZXv$TPCfAniG-WnssEbx9RC z-yLd5hW!J7>_DI)1fu{E5XKaB-IjuZ6^KFQPsqS&Jn{i->u|Nbsq# zn)KLppB9CJ%(_o5q#qmKS6J#DwG8kHip`6P%tjKmRZvh;QJ+$hA8u)X0cFl0rVd(B zkkisqP;~z|rlvWhrKHT^iOt8hL;7ye?jnWJxhZ5+8XI!*tXn4iPp@Gre-blgpdSF*iescTahr1Cf5N@++(Ydi$ z23@h$HNv)U0Z91Lf*CI+rqeWdIs~VH1Q>zE_J(avJ-rL)6)4G9sQkaGk#Mqq+0K(W zK|HPd>49B=59a6&3=HIs4<=nlVv@g}R_CM6B)EgjV1~oejRkYV_7S3h6?-IlMEt-? zTyKJ5B@kgG$JU;PKNr4oZ^C=K&a`L--c+kSL*Sj zVjjj@ElUUAHoBhfGA3X!m~QsC`U@zGK&$veAXoM33^t%)HO`$sI#@X|*R|t;^A7p_ z;aMRb;V!l2Q*2bIwRkk#`*cIBEpRMN6)S zsMaE<&V2igDp8(;NNz4?miV$+NEGs~z<^lmS246Jo@O)pfG68a5c2k0=0!^S)`e*N zD@cD)m7SDEzsm6xQQIQv58n{og4o9J8%Qt+O1QoRSZjO^{dx&H1r`Ma(Ns|455u|; zF?`Q?HRon*Sz^VDTw7)W+FNuM;$0@Lb6pMsB^Ji8^s?vee*83^y=WWVIv&yVOtnFt zl$p6?Tw&blm0#R91nsdsOn?fDFdQ^3gzYzaYo2 zC9&~Co{OM>+(5t%1>Bt+rFJ}%A!rPeCv?W&!3Se#$y<2cPMcH6#C>%34So>qWsh*q z#2pScAV}5(N(0e6>`p>8rvO!5Yjxu9ss;L*xq{8jUbnYjdQO0**V{}(AlriaS`Fv5 zx3w$bs*=!mHM!{n1HsHJP!UGB6oUkh$n@m&^1{r_I{_gJL2S*hpKtEo&E(~^!YYaV zIq&VC%P_g#^YYcySDH|BPAv7%>WleBmwU#>4*j0~Ey%<7t>2=(DK#e(7_LrqBpEc2 zFk@JFs+LlfipoRtg>LF9X+z;e^m@$H?EH$kM~j7%Kim^Y`U8j)>H5Rz0s;As`{Y<_ z3;mLE?4rpItL1vw(N#ramyr_ri9iK~AcgJ11rnC7@+C3QvGiNAmF^DvE>Sfk+6W&l zDMVg75|3D(f_~MIiQHITa2Clv$zX1d*^bguarQNuca%)(D$X21!s3d_N-65h?Zd+O zfH1O*hgb^PLQX*&NtifBs^5=&8QqWNOj8oCq`PGcc8gv`{lv5%EW{F&jCW4WNtdn$ z!fl~MmD7z<;ELB{KN)4)jTe@-{`xT0m(d%3GC%Cr5B8FN_biIwis2kLz8E2!@>1_Xk zw9_Bt$|f%Eebl4VTdnRmLf%)i&_}JVr;Vqjv(6tx?;vR*m+Mduq!AzBHri2zlcE~~ zJP&N*3L;9G@w+okvo4ADu0gTT1O3lGi?+M!Luvnz#%Ksp%aUB>4Qwkj0Ze~JDhi(1 z=KtBR*M9`xT2R2?l>E#wHTQWfpIlxZ9#2XunM1tMlzG-!SPw#3kxK(4iVOBtqF}+PBpv_5 z{kb=I1k4&bREL{=PgkGM68;}WcTyLqu>(3O9~HT2&VOFN&2j7NPb>Ad=Qhof@(z4{ z+&oz#Bq9ZV&v231nCu{5L*r-+`VPwV`%CG(q6tWNVU!NtCo&%W{DJph%&>(MLjq-z zF%;zmV_1R>@+UvJGSNYf?Ts&sni)f!Ta{QpE`3@uqVq5uuv6)?x|x)M3FXP%;JSJ6 zEaOyex;&qMnL{oPnPLn4nA*$0Ky7+DjuRhJk-B2kaB}+<``*<|K=ur}8kcHWlSdws z7RBuq+|iA=L1NG~3raW=ZDyzY+z@e^FX~CqP>^4>DVhbfg7uzE;__mCD0BDCr^}jRg$9K z{_*3BcYAsB-Fr_@6J1#+*#J**>EgDMpTEcBa(a4l@_U+`eG@;P+LgmAVILiQ-)$LDUT&uq zv9xh4R;&_+*vBKp8zG95sg{RdKX7`r@Z8Cp*$B{2fbs5FIm+dp^}mmgs0MW_D^8tPe)cCXkd5p!18l1}#_&vK3w-9K{+%a@m}Y_5V0x_26loCryNd2awsqjt`*>KDefG|?waR;a;8kkv=wa?yG$Fu?EaUI*h&P9G^OPae+b_RoV2^$Ug}J{Xvg&8W)I1OC5- z-44JvncLtiw(sG|j73tY!Xk^kGTcT842T6@a|Z_pCnqSYl%|XhEo~xQ9UXxWml(Pv zt9v&$H!-C8h+zD3f+I;eS9IZcZZ55Dtlsf~@TNUv!sP!W;=t4F-|31hkjS&_<|_sj z_r=sNgKfOrY<%{d4>1BvRKy&uAOKF;6b!&PvDGl^rEW1fF?-%`{Zs>q_X0Ig!B#%`ksw2LfSOk5A(-~ z#9=dyt(k#_Vzb3Ef&~0RoXqNM4zWJ=cdrXDQjWK|XzJ)feA>Yzj4I(eY@2Qw+P??Y zkor@(%o%gsAA#gB+M&%G31PoDVA;MGBWUM7-B@rNbDFf?{JzKcXK=T!b zCd{sNgI@l~3EG)rpsOqb>}fqn!&zT7UVMusy?(z-42xy3-Sr0QD6R>nq$H7>rv)7-2%dHxbE2U5sLnGxiP^JB6 zKRJrVRwk7q?U1M_c1TE9JfDQxlYk``#Rehg3;)Ypq)eE2d-HBK_^}P`BAKUfP%{Vb z8UGbpsqe>*!ieet@m2))lni|)^$&P|p-}_^>Y>KGy`?JA4-x}iXudEd1sJ!6B(Boz z53)V8fSVsgEIs~hH9P??=TgZSx?-sa4|1WNr{|A`@o;{~<5$@sWi3!ehMHt)nj(Q7 zsk|n#DuapH8;NiVEi0q~6ZB$4TlOkEqB0$|XsZ1A8Zx#NDNfYt61J~weY9vKUbma_ z9OR$o)l94TQ?Vi$0;NwY^YchQxqa}ed-<-H7o;t2-7Q|BBAWDUi8) zloFHJ=8_+C=KC@)Ka(q(&rG@jOPZ8QASiN}+OuRDIQ%g_hLWj@5=KpKd)PQQyE_Qx z=Bn*s0>r!JZI3`;!zE>trH;3j5;yWIwqD@}GZ1xl4!0HSjDe)w!yO}T+gtv{1!M_e3(fYsMUEZ6i zUHMv!NDhtX`VlS0Tifny9(Xy}sK|}yE}<>u?DYl_hxZ&%NVNgZTQi@J=e5{3>Q0;{&*DnemDMhG z&JJgXdFgijPcMg#x z!p~nn4~B7yD$=g4#~-_P^a7eUNuFN@Y0X|9(*EDIb@_LYYx?pqaR^fZ%o$enIEB|n z$neg8ao5?>Wk7AQ&#^!?JaV%TU>Wez0-*^B=;>+m8>2J)y~lg}DA9NCmE+Z(fI$Vd;#5Ps2~cUJp)$jkbinN1?)0a#N<# z*0gWol^?`+W@;gD0Y{tDsSf^xjM9LWl7+(<_02gdUnAWfK0p0%kzC!x2C&P)X;Eg_ z)f!)8YSk>62=;s0Srcl<<-cR|)J@)bguzK5_CL4!Tk1kYrwhea3GNXpd@<6vIYW5Z zrG;h=FbDRUv1U`i$X^o3e_6OkP}UdO+VV!(?+6t%ZxOHv;31Tt$gZilU^7%Pg^da^ zNP^_X!nR_3wh01i>mwLc1|0A={GG*cMp7r=SdEWPG2t!jvtp9#={2AkZepO;dgzJy zMOY`F(hbxW?z2e3?8{tyR#&GNev8kpt#zlY8(OG+#*tS!w>sa$om zQE)tKg5Gq6WNBT5jlK+etC-mf!IWL4|iVgWCU&&Q-)v^P_#X$`KMuK^d|x>WUm4Wj19 zjBZuxcj*c<4;2}_&a^aek-4dz9rhx0gnSJ-2nM@cp{wtw&}3QZJXZk%lx`V(2YFzf zzMG^L)Xt{HU0T}zt!Bhr+RVgcB`*o6UvN(EvRr1ZEVJo_4_yolwAyKyY+9R|nL#r_ zZ&AU}Xkq#1k#jKfEAl1AxY|k7WC#TIO($hj7ek-k6xcK_YZD_yXGqH&A+otjpw>x{ zaK)f6Nf_3&op~TyNx5%P_c2hr-TeDoJ|<|!9&hKJZx5AM2=zmy^dlAdigy^)q8`cd>*p!Eg#!Qcea%NfjR~GkqmDVGhAxE%OUn z!I+$XbCJPgqZ2z=c_UIV8H+pHSCI0Uo>q1jIytszFpfrm2I^s0vtEDx3xx!Pp>W6r zVuT2<&;upQ%U0Pb)xf>`X>ml2xx$N8dZgkdaHE-1LJ-(fP~;1-ykTSl_|jK)?+bta zKS6O{0Pi9!1K~ysq=X>q1aXq32NJu&s4R6{;bL}eyAPg|aR+$;&_!1 zixiaNFvJ2dtnpGJB%wI7tRU2Z%1)o_eV`2)4Ph_2Dk|s|;*_nHDt=<9QO~%1BhzgH zE|Pc3P!CO%c46Gm9oqq8Ev{>B#5m^8FxvCD+rtO~@X^4`bue#GTzGI(;GaJRNaNPo zTd*=YY71q&is)Q7Km@jubX4fqC62>LTZfJ+n)6ndnG~C2$Vo6;70yk-?z416N)ste zbkS8%5dSGcQ2J<*yRu~GLtiP7t9^YBg+yh-k*3N*l8Iwu6jG8zYHN{MRNKI$Jgd~$ zPc!5U>a*npc_7uLGb&;WS&3E(&Ef*+xj=6=2i>1iKJ?MA+BSJfz;sENPP$`A#`^;M zaAp9k=pH#sH)r=L=|D{|y~k*jS=auiJtyzqj|AKlVDJopF<0Z|=457>e$Oz<85qHj zpJM)?(@@T0Tc?Yuy8x>=W+GGG(`kh{2D0R44$BkdgXyX9ZW;KK_+xRos;Unsq=A)< z^Brd4lqI9TY)S&N%VF1|AOp?w>HC8E({{wwNg1$I~!-GX}g-+R3Tu^-is){HT#B64e ztGF+UK=f5v7j0NNIG_fTfJ7jaB4Pz@8~L}lXLoi8PJw|&ZMu`7x~~F14W3wq=k;|o z3GyN2VSb#)o4LC?hHN8*-h!0f%S!^Cx3}nQs$hagK>HP_BG#s#+(mA|E7EEqPN1FO zn862wkNo5p_aDfhUO@5EVhF zB58_2#UdbF(%R5}GP9rDR7uwo?W#G(`E9)DkqYB|{qS&Ma}%c!Lby2~cM>E}CB&Q> zCvpUNN%X2pSQW(;kP0fAZTZtSf<*y_HK4fORDmkgz)FOWlVXerLJD<(7SIC)T@vvI zvdzMz?3F$%+E|!sFl7SW?RhgYI%8)^2EmR2c5`zxI1Tz@o z5EO};2~eeiA_y|xtT>j!*wH*he^i}HY+=-!SU8==+eSeMV;GMZAO=n(QX)$6Mgs2Z zBnjd~D(F8^C((T%PK~i9KHV`oh-68djq!VQbaa2eb)_mT`I_?ygDrE%3uZY{oAbOr@+|Z_n`Xqo)-WHC1&@O-R9u zLWjXX!!LqI-o3s)fA>!DuS@YHMSAxR_d*H@GS8p>^zq;S{p~;h^X(5mTz>p`CVTdQ z@D!R;6s)LAB?f@sQENBB5HmhnK(n^6_8)^}|2^^UcSP_uqea|NZw@@88n^@a4-b^aoMsJAU!v z;@vy^G>i(P(=HTb{h-|W>)Z2RG&0II(!lRUI7c$W9LPn?#>63b?`+aVX3lib|scpjDd4u`eozIHCp&TMS-|Q%(zV6@!lX zNhnC;Tx9t0Z~yxCAOG?GyYH^>>%4e@nF@Rn=Yb=7uhaaDU_=+ODxBg$bcE_mg?SG> z5LZjEyDD8`JmML_hH-9Op)QinHpa9g10R_+MH98!yqf;WcMGhNN=*3zTH@7t`I5o; z7Iy*Bey}*1W1?pLZ091Vlt-`fE@hP~{)I%nRJtQG6zv3=E`&h`T0J?zkKzjWYwBvB z_w{!45I$j~mtLzLV9hy_xGj6dwRSSOr5$Iwup&0&sZ zV$n=&Y-}h|NZVZ2k&%H3)0jKpcKKcYXu#!lI$X9$D(ZCE=!lz;DwmZ#MyJ>WEaBO^NY?NNB%%)M3X{4{GW2nEoue)QgzuROUaeD0|!vki^ zxXod)S|=>#aUa`bN@i&Kr`CLXr>Brd&cMGZRt2d<1QUg#6q7>wsi0B3B)+2bDiTrf z?CuVPQ`M^ip=Q*he%bdJa%!xxU~QB#S7J_A}LmdV-d8v6Re70mH<@;=clP` zJd;o6rZV{g#0u{27Yuq5$>`GN%F50vq?>@xkJT78po$T}q-d$9Sd}=aD(XWqKkK0lBe5zP{ZXUJ=Q4`$7G|g2B&T96NLxQz4vMap z&E>G#ttKadDzw3jhn*>I+xG=l^Vm)7fjj7%M zr9KY?qKbeNg8*AbycjeaDtRn>>aoruO7&NPDz=D0+dwLw>LnaYKo|l`lxo0bX|{&) z^iNa_zlk(`nYl#8c4?^+eGz^aiH8FrpD*CS^nHri8M83vVk~&_aYjGa&;SsN;yE|x z0x38}Dym8$MHfyQpj{f901~JY^DE{TgTbwnlX8@bY?+8yI6|%idju8@augH6CW03f zm4p?@JYqouRt!Z5RAKoML=3BPG#<5CCY*MQM;r}O6P2FMUD1d?m5SvGnRF%r5k8%c zW1gk2sB9AHh$QK1J*bMTnCmml76!#)Axw^9BTe%_8e>O8Q}a`)bWA<6&n!$uqJGT& zk)Q|DK_VWaKSKGwkw`}JQ(4reI;)99cxrYM>qjz0>#lS<3c{@;m_)QOxkNbVEzIO5 zXY-lK^wh#ses(gJjKot>EEthku&_8iy)+w)VqWvC?yo1(;pxTct>Z&HyZQn%zNbkX zFQ31KU{!cgc(HhU5ZBXFQ?&RKXG5u}sm$!`6y#*^$KauhxC{kLVe!e1iz^MjdHJ49 zxwo{N($Ue9C~=U#mmdh+u<-ii>B0X|YL%MRZ~FAcMnP=-Xg&bG7Gk!bRO-H6pXa_aDCc`YX&1RB>u;dR9ZA>gz|3s_JTM>g#J88|s=G8(Ny_``k1E>KW{>ZD_!t zeDdrm7|=?p{ns&GRn^?yK5DT<(y3rFVR1QohXz|Z+8dgis_W!qZ$$;zhxtRNv5Gve}~O{Z5y;yMTeRbwUE}tD zkU$KuNu&`aB1c7?G ziBoi796<^>ArDmy@Y}!q1%m>ODaq0c+zs$EF2C9bJNqiU6^Qq-V9pxBl^qYPwDm;eW-|1^^3wZtU<1NJg46a*F^;>uJ$v&SjaMI4xJ0~3T}lbqgeF~o`>n!f z>Q7xa_>)F{KnB8C;@L`-s^p>Q79A}I5w{Y;^Ky?xRiV1RCh4if5!vHwc|dVwR-6mR zn~xtKe)!?;+i$5n_3G8d`*(L}!*|~uKRjT5rl+dgTOycOwDF|Y*oznV2`=8gJ;H;( zrlWd=rARl|{NY}_z>m0#9|AMHC|+UC*Yyizj3yy2Ljtqvkz+)@MrZ`T0(yvcC+R9w zxk9>NQin(+?!(O-sfV>B+xelO4p@#{Su~M%;ns^hZw~e+7OWT>B%)36HAlYg?ap zv~;#3KT@RBvnNk09zU&U?r3dnZ>gw!1{VBDMMY(8HP-PeaVy#Syc5hoTX$#oV1H9v zD;Ntf5~v)R5y8^`MAm&Q?qD&&ey?tCukG&co}GaS1izlhp3#xUH=Z=@eIJOJ*ddwgtgf)LdpU0j(*C&q_C z$Tl+AJ3P=kHZ~|GgnbjHQLEExbJ^9C`uNx|Ze%izrm~rxC(&B=KB)oU3w^W&<%I`|(lBN!(P?Yn4<^PgPh?mzF?FtERS^*QMLh^zZVr)It_160xf5>&q7}J^@ulLcByosRXM! zzPkyPR+m@~3dqH(TQab6Rk(;K{SB<@ zS3p&16TlKO^#y62f30SZ-*2c5p4QI5{L;&D4i;7#2evUYD3UV48?~c6@wNrLRtD}nak59ly3C- z^D*G+@1luFAn1)IBdc5Mm?$q_z67ZmAXd8*!9floS6t9(I!VAO1*#Yqh)NT&YEpUX z;(```0#qG{jt?>@N>#2-g*d?i!3)3?>i0khPGlTK#G(u)f|d%sV6)1BD%6a1`sD78 z8dX?dY5Z*G$AOTSBz~r-Vv>sC7>@}Y&6Y*e}j@!ixd)SxC#4(u~DqRuo z`j^SXQuK|5x!y<5RuP&Oq9q{IiHRPI4HuZ{Tw#7Hk&a`vz%LTO6d(4bC)4Rd#uxN> zy!NT3LV7Zh%q5mK*N6ZLN(E8{E4&S);Qix;rYEVq~oY!0}{dS5*QNb3S=l`i3S#O(pl9qP5cOfZEY3S*VTR1Bsf|D z!tfv}kwW5y{6j(L;Q@TVvi=~Vdw5Hbe6Ft0kxD?7ijHK#Mf@PXCe6T+DqzJp*!o~H z34Zhs7*Jp1k8{U2kG=sz2|iLd+RDcjPa0a9YwGLko0~g(dq*u6cPJEy$E_ZB7x%iZ zMG;IrC|gnaw6U#47~IG0UC*6K^E?Youd~%G#QmhI-tk zrlAh(GT7OniE+En(?2rY($P`Z*i=c~M$Ka|*CMKep3>}<{x)8*MtUw+H z4mCMR*HpP2$$+a!aWM@1JY_N=T33ossSXt3p`v&|NkDNc0f}Z-R~NUpSMU=}WlyCJa5kW?RoVE#G8Piu0)MUXC9N4P!QC-J@d!GF;)r?Gm}W)E>r+JZTQN*-zWo+MhBGY$V>S%U zD^vO?5*`*ug`z%7m;8*Q0U{w&R3;ff74EeQQQ_`x=knr!c+C|-CE`=E1>vRaszD%$ zyPNF_WlHL2p2BP}R=$HJ)hYh!YM53uYd?AG|ugQj8kW*})Hir@$>x$))&2$MO7~ z09A&u-rF;ra=*V1)Q5Wa?&Z%v-+cESuA+$glR6f(NP#oM+)q)e@4hn>sZftJmDrr@ z(^qmh#V5VxPKXC!1Mnd75(Kcj!Fy0bo}#aM?wp9zgL~#jPQ~o-Dqj5b)BO)WT)%&R z_UaW)_C%2luNs7z`3leS<_&&v{-9#xkEhmbn4$#}BtC`T6u&I;DB_6@vv+fiBl6=C zW^!~A3=OU+GJ9i;U=VT9kq-=rV?M{R)Nh#+<3fNcRH!2YajpV_WFf-zQ~7cx%iQ7~ z$AVUi)e}PxD*`GvdV^+}-T^gZAya<_Lu2|S1w#yV5HMrvu z#NfAYuim}8z&pp!ae0Y`VH~l|N`n8g!LnZ`9zhk%IXj`-pxJ^xBd()Qu__eA5n~NQ z3=;w|EOAK3*=BQdX^%#WsCky#{~41N2v^xi>6RdU1Zji3hoTl$iI8G|O{@CxfRiw$ zQ-z{X5Hlp|L=45HZRlS5fTmn{B zaJ2+fDN3b4m60fMCN3;sQNzmHJ;=Ru8(Lbx=+`$lwRd+lceYp6*J0VMZEWNYyq)dh z{E_a@aoXI`-qhBHOIY7q+S}C|I*Ma`ADS2&wGsBJYitBR(E7ZywG*pz16J*tMlRo2 z?jeDI@2;w^Mg7(FwGFM!vIR;_b4Oc8Z+ByB3o?L-rza6n(NdlsaTITR-s$jq=T}zN z_xH(WUtez>9f2p`J3j}DuHP)x81PiQs_&hj+3e=Au|b=|6iSBki!&~_!{v2EQqfp8 z?)2C^ewW2=nlO!8Y!hz3YjkuF`JEnz)9Y{t+%~7x=CGQ~RDFu)Q{IrrY#n!a?18A? z?Q>3y4G;Ep4fJ*n4Rnu>4vq}>)5Vr~)MOs9SRr^0jt=(^5B81>^;yi|gT^MthmmJ+ zpl6`Jd%`?!v71fSiLvpKvC$!m=v8GW^LwYKJ4Z)EsfyNo=l3+k(<5!`t_=|COmwC+ z4#L%v$)0glkS6L|34WwlRXI?F;}(X)+S=0U>dMB(`u6t5&d$d6_V)fhvT5Z8P^A?X z5vz;4JJsG|3i1e0rENe4w2*BOB(_VUsj388k&5wKiCjF~t?zH9 zv+=@ges*zsYHm`E{wAmMX$UOI2t*GE8scr89(9odq8O5j;B>OUt(lMqDZzj%81!Td zY4Lm#@VTu{+XUTF1-S=$7=lkCEYJrn1f!IUVxdSN91TDoffVESyMqDQ4?X0E1cdy^ z5Q}j$I!H;0SSXWELpTc2FpwLjBeUAv;RxBM_?h1w4soA8ZYk)a0iai8H1+k4#uz}A zs6>gmA1wq0t}=isRDzt;PZE?$OGyTCyH4cmlkuRSR~Dz;grnPOb=VA`D(Ls5Q%QxQ z{!^gpZ(~)T165-5C+bv1jjHIX_^2XKr7!naaMCCGuLD&|3RL}?P^aB)x7loduPYJp zCL*4Q-yR6jeU-!MG=QSt3JM+}2-d`)DAKQk;!5SgxbRy*m4Q(egC>@4q@}cy{}NDT zWGV~Bh2Mg!{#p?Hia{YKg_*txia;qWg;2_`L9ZHFC6rJq1E^9o=eMXdt81L6WdIH4 ze}jra(|rp8-{m9zCh3cqZmJTvm#hlwSQr#U>d+5~XPdeuRjo zvu5O!peb5Vvl&4z|7Iwb{Vac3kSt#d;PwP>vbv_awzm3rnaNBn8O_g5F03ye-&|e2 zeyu>&`HL4=>bUr+o{sDqtC-ZbcthV&PgQy?dAV&LaUwC+3kSWJ zOp~dod`#e`s<8+iSSPs0Y7p^MGFF(*ClX=xBo&VZ5XX!hPef1yN@a5?F$E7M62!bP zv+L}i;_{G6#DlaGjQDXQfvC7G1!1fh{b8Xoxm+R^@lzEuic?QC>d#MQ@>AJlI*JOh z0%dZE+*D?Ab}~1e!wP{(%;$H3qKQx-Mw?`6zSUMU_MdntQ6s0Q-OT&mvj5M{iR@Ky0 zJbR{}eEIQKKEQ%e{=cdF&*ny!WJ?rnv3CiwsI`^=Nf00a0wlE7l3Hu6RTWFu7Tvr1 z%n@T}Y_8q&;k{q`)^bmvxK+=Yxo^hohB=dg$jHb@5gzU<-8~ZdJkcD%dY}^XQ}e=t zVKXH_RkDIrF{-){GVy{2SubEOgS*qqPaXZZt{;t+*4O66O#`|C3gz=PL*yE2gD5A4 zra{~Xst8^AK#S0AHVo7WHQAJaN}9oe1gbU}cS#|tDoUjv%+Y>c;$c;~!4pvtlCA19 z2H3Po?Fi*cRFm+kGsqM{CG?G|k&voGIEwIA1*n2Tg+YYTbZ~vGkQ31pF>qKD(*~kH z&}K0f@S+MjL-dLY=N>Ao9x$Xa^}33#g^Z#|s^$@*s%V}>C@RPlh+{_x>LR)XZl#{E zrHzfXvs2m|N`R`W8w&%k$cu_&spjof!lfS_fxEJM0$n}Dsz?H1lb2px;2JSBz)>;4 zF|NM?&={mL#@X8{Rgfua&axMS4%dZ&!xAz2z-WTPTv3&&^J8@HUR~lIp1*rX#-f0@ zkU$S~cR~j+W{Ftc-Lf-cIVB{Bx!~qIC=~2z>*9R#{7k_q)*+I0iSoS)NR6S5t-|ZN z3tQ}>In`^!oC;fw+l{>VA%40M(WXgBt@wV z&`N+9(nkr1VN|i z(|6w~qNETQ;jk~CQGvnH|MC~?efMAf%iWJZa<7;&5x`Om>pNOY-Tf$je*#ybHIy*? z*2j-%3Ph_VyaQ@7CSV-z)$0dz9(ArieZpNLbVVpiZi~?Io7V?-cf8?-of_^;zT`ee5+7=?<*-dyubiNHxjl;mCI)Pn(txkJ8TAj4@wR-!}& z+3NO!_Hy9e&g$g(jJ;7P_Z?2E;?+7`a zoamfIJ4YHeq5@+k;94;Jg}spB@QT0z1k!?FuycViP9z<>lwE9|p6p_jRgOX-NVyP( zHYa)=_ySkqq`0oREhEa6;!{;@>nmR+(T0?#5Z=pg1GtA^bl|rY3oP(kWsgg{^o*wC zA$h4dN(<*y4sRSncx$ZyO>vo!6OE_DeyXs-k0p2_sHQv+ys?T;RY`yA}Q3JZ|nC9&GLEZ0+hmwc2{l z+LKPF*=il59TB6U&xC@WNZ8@^m~Ga+;o;WKj#0}5X7-VZu>sQvW@Ob9pheU*HWKz~ zY-nt0=7J{#!f>K)!n8oCsy+@?PJJ!(sJ9HqOR+*(tt{JDpIpvQAo$e{S)9Ug}2O|DZJTz%Bn@0yt zBLicmLF=S>a?1s*Twj-RkNl`!H=$9zvc>k6|9Os-@Lg+O+l2j z1bf-Y?d>@vWT*_{0C*zn04gGeU3*Y2_Vz$Khlj}TV(OHP!eklnXke#$VUlJHeZH*eo;9&Rx(ZXsD- zC@ieZmF5f3H43F%Cd)7GSqUvtDCg#v%f)goA#006i^&(#T>dYg%H$HrCsWZtVAeb9 zOr~S0Obj}R-|O_wI$}^~l2HOo@=YDO23jKk6!vHHX=G3VZ9<0dxG=gPRuamJv8DX@IV*NpTtXdrT2aw{ zil~zURo>ZY#i3}K<#94VRmGMn93*KYtn8ohGy40i-#hL1ptnS+(C1m#l*jGx%uc%r zRB<`@R5HG}xcGZ06;c(bLQNne4gC()@iK-JDxe0w9hx)>;CXM)j?0#(G1 zeiN>$pi55?C`GCMhd|YD6Iu&}+%q#Smn$6fW|M(5fvTAh9z!sQa>a>$ovO%@CdH35 zDT?$zOj=nFM^oCYflfV1zc`m3Wi%mJm7-2a2JG~!WbB@tRA5V!QS?6vS1Ia*q>z&V zHT^uHTrnx5sw6Ez`aP6tczC#{r>FMSD+B1Mpg;d(Qs72ytg4_@1*Q50SS9!s6Y>h~ zXd;LtMpZ9!v^`^1D>8H zqnaG63CGHOSA$+-(tGs^v+Jv-#)h`m=8lfGp5E@hKB&Ase<&}{<>w2{TT?9pi~E!0yzmXg*nndpfI~&niS(HbweXcB|nev?l7Se*n%+n z1f>E&Q-Xp75lS^EVpW1tQQlHX5voq*CnPY6gYseU=#Jmsp-*1DeVfcA>5c4ms=IY6 zlZYq4(A?l|VCcyN*Z8A>6+OD?#}|)<6Y)qY8R6=CiLjJ}QpqTP#tBhnb4f7w0NAKs zmcs~hxj@thyT?3%X#kuwj-w)hd?8ihIvT!2f~#PlCRzg{2Cpy9=L>T=iA5DD6lu(b z77B$_c_E+6C+An@7SyP-hUqZm>lBjL=dMpb8zkNO6(|Dq_OKTu`} zhpn&YAlk03;w(J1NXgg*Y1m}3{87>${_uyFwKXql2u{ChsBdg-)^)7GGhWoxjE;|c zLZL)HpP8FW7K`zG9zVyd*4B;=jL-U}#@5dEhNece(A3&8FglD;Xmh!e#RBRFlS!A~ zKjn7Yrl;+gT|6GVQrO$s+uP9G+}YRN-QPQAowU!mhsVY^rt9j!fY4?`OB4D~M?b-u z#->JaSv>Ue>Z)Kpit=#5M~dn4CKy!l=@SDhF|86?DpI+G$~aK5B#@dl-tXP)w_2SM^-lICM5+#XT-UFIbh-rw%E~p(0bN?_taStgYpj z7E|RCG-15q#dW;uG(W`n#XG53RaOGQXt(i}qUWj}<7I|Uh^tVmG4uqdKv$KKR(UD; zEe%vJp}x}AiApTlFLsgf(zJ(26X7Ri6jcK&F`m+&P@xSCT&zOmD4I}d3pgAZFcSjD zkB=80J`hu27%8Gx*o6upoCwOZet{5x>3WA@(TPD2K42tlIwOPD(I!qIhZDULj6m(J z2vUm&*&*f~@$Kc}o&sA-IXw;02PNbcv{I}JbobqNuYdgU_Pg)S-@m8Tm7-A(4C7t3 zAtDO%Xkb{1QXz9Hu74V5{i5P9Xkb+z={ZOe3nL}uQTgEhp4iGUu@$@f8H#c!h zan(4{C07z8Aa(WmGi{nA)>ZXHm!Cdef1yv`1A}4xg;*FDO&rlEJbnE%vJbi9;Q`0;MLIv* zzP!LIy12Wyw70J>31$ScbOCk=En%2!ZY=D`dL0;d^5St~!i*y@tB`;`vhbgl5KcP4 zbjddyvy9Oim=Z>uz{(q#BB2SteT&Xu@M6$Gwo%Xr!+}tgnBp?l8-|G@I2CXTgH-38 z#T^B(_8Y02vn)b7{;Rj z-^zIuMZ(!pjU3yBEv;||RG?DA00d!{2fILhwk#R6rYIQil{Bsl6L*y?7xw`b zcwXs)LC6~`PAqKG(#n9Gv{&pHX>Ma3+ofF`j+?N(yhFPx`C!0r1_ER8%K=Fk_1q>G zpiqdaxTd~-m<}-45b#0;<#l{a`fWp;1l6=kEvhinsj+ZIoT+iIz&r;`qfKosUH!fN zBSSB1i3HWuy{d0+>germ@9E}ZyB!^kEiJ8`on3wX1LjeNrfP4)M319dySh3>j_w^A zv_cv4dMyqI8tm@xtEYE=W6#jQxZP&9T044rTH4z|n94`S#<~Xv+Pb^iaCmQT-|%o( ze_vB;YeQ30YiGxRX{5ay6Ma9r)ZWvDd|P)n`cvQB2w|h^ zi$&-3lt1F1@wjZ(i81rY#Dr;ba@-Sy>hHwQ(UC#3X-L=XvrSp1XPjeWBc>4oRi=@C zi9aS!Xzuj*h`eF(B&Jw2&XU%MRf$E_$;}N; zad>`yba8?FA*RBkBcfEt$2*6IJ7B_ldz(8u23!TX`o7{qD8Z+QRY8(On>ROl(o0m( z4k%W2f3KL@?c?J;I3c=$t}0gb;e&!x50wQ0nUNq?k6*r=-dtz6a$i1QN|)wy^Gl_& zxbl_e3dOlR)ER6u*#rtpb9oJPTbeIGD~a=aJdK+q5ETQZN0ArTxl}$GON9L1=}6R{ zFJ;S%<#aX~3VEZ^K(@%By3kzw9-qQMX$ zByS{yIt-hY790&FLH|sIvCny|Z%`?u~8K--C3N-6>q>}N4-w9BK zq(GIXUtm=RI`t&|45$)_3R{o@Rhz5f`NC{GVh=?Ab3oM-q^XKh5vclKz^ZTx0i@h+ zYQDL2D4p=d!m}Yfj6mS`fT~|3M@R;AB*{R7em`k7JrIqcHKXaDV^v!6i*xC*n$Q%{ zCP@b1^s8j-{y9*k$=Fdj)_|jaKN+x71*pQ$0}R7}{bl@+2wQd_FQ z!NC`b1PS`1$j)z))TFR`z&K(2C{} zG`3QpN|7l6n7-z<86JjLhc-ugv7)v8Z9?gwYF1 zr(@#r7fRB2HJ!mvItE6P@lb*$QRKX0u*$CusZ1h~)bS8nlg<=K= zVus*^kxhg{M5)rL7(uRdyg1KAVH1f^G6l9y^D9gz^NYp#rDAy@j~RuY=lN8EVF>-m zWb(=4LSb%oK3C3ivA@Mqe!h??q~qymG8<3k62XwiADAgD6$^{S!g6WruC?YGrSa02A~O!I(e-8yRLzYId|FK#YP) zO436E3*+GeHt~!4lU-Gy>S=6Ug9Q9SxdK>FR}`qC(o#W=pnc)g)S5)?(Jtv(@DoSz z^S&rWsEOAD?>XOaF+{=(k7E^hs**OYV*zz`FE417aC)kzL%G6FylV78O7OCQRQ*%J zORJ>1CDqGqLm5jJ3Ns!LR4FLNSv-j4rTN_*LR7eRYMvYg#7{*_RIT+X;Vd{K#+0;4 z2n=~0v*fYDY4sxkk?5T(|2lG^@g#-E5sn{ZwT(3Neprjj*@Dx58u#9@ZjN&wn(q>6Ez9n zfKJ{%9z5LRR^S?`|L+s*!=ud3&4HV3o}Yt{iBS^W3C|^vmLN)EoF$mo_2-49{&2*cmMp)@BigrZod1D4eE8heM@}m?ISX{ z3E%&>|Mu};|K;^x|BCuopFZ7x|J~ca{q63{7qCsdA$qUQabU$H?F5%EclG%7YdmE& zyxPCJ-MzU+=I+NI(1>wwKYhBDu;>KH-oLx~^7-RG|MS&{562H=*GeZiTo#1{;ejHr zKf$ZV>SA3GPrM;~MGp?}Zs=TtEq>w^RfJauj@IG3q~lHyDBS<* zyDf%JJ6v=RQxc{IaZ%S<2G0o71co7+!Ze4+gd58j81m1<1JAp^j~5s{0ZRcZFuJsF z*eF%TINQM%B|0|Q0fC&*6htEsdXCYG$%~+#7y{$YU{KKQj>bpEss-re$^ijlY>n0w z(-9s^5_Siwpw-|2j8uga;dD409YY3NB{Tw-CFl}~yiQ6`hpa&ApiOPr$cS$>I)M6w zhscV-nj}m+xD(s?3RID#Swi{B^oY)L@d{+X*cD)61oy94l^iSW;HSb*O7t!S^XCL) z)Wk{ACax5RpbuTzZ)oskZ4K?4npR;5-cfO|X zRZC}kdr!Bx^>sG3G=mzrK460yK{vIx^$rbn_4PHk^BYyot5+tgWo*id`FhA~MtNOh zqpAuG&CLU&BjZyxw4gEo%5kEW&W`$~M(7W(>gxv0BP|`YrD|+#88D4va@PfaF|*e< zH=zT_ylSYcsbjRt`sT)DA-}%2w|Q^?F_fYRf%@ZPsL6#Br|i~Q|BP)4TICqdWi}0?e9C6Yl?un#*C&Dvorp!%<-@}z z-hYVzbtR5j7}wy)KNkbAHXBbeW$0# zmDueEm=ndiYGZqQUBatx?dc~_kMNM_O%jovt}4`es)|A&F983C&J?0in2+ZOaX@OZp_KMEBp`b83)>Z>Cj zl7SmZGC-hzn2f4|RiPcUW;Ff(exOPLDWhH`X(3Xzz5!D`1*%@Ye1=qoetw^{jsQsp zc=YX4psEtV%7CN((}}97U_+QtK-#_mR7t#JOhN3VU{9LZpI;~4CmnlQS=&ca>`4>5 zYGi+jQX!!b2iDL&_*Hv*dv|wdPfy1{f7j4J*T_)M=y0!++0<_~4S+^R`bUOP(gzwI z=ounVRY>LM@{8-siyONhmK2(jWo&r^;_xD^|Ndck-i ztm^}!1+=3L;_yN-Qz+%=Cx}9cHkHc65{a1>R_tw5PLwz*QKxL7Qq&eB|NE>~PC<;uBuDjG#+GO_%8E;pCWlrn{- zQY;fsm(pwd+eD^t2h@;?mfmkp?(PmS-CkX793C#Lt<6ECTU=CNBDc5*L5-n0sxEl) zU002&Ae}=M+*aEJQ55+UB+LyS6H1K71SLV9g+2}nyJ!k+K0&F7JwZBGl~NQ@)IlM( z$a5D3ciE+C>gg#YOYW5t)e2Plq+X#NR()7h3+Nk^bQN7vW^AMI|WJ1++4#WYCD9{K%E!HN&;wLaNG%o%z-0gkc9pSK^a45aIv`6p=2_@yiBt`+#hIhV(v$EOQWre_Js_GgW$YX z#Sh&h3WifuP%748;l8p{<*`)w#UGFyRoq}P9MEm(|C&clHKSNL5Mv57D2n~!E(SYQ zYaN)-QFWw)FcLxJ=V0Knavxd~h=I%Vu@GF{0IJX?M=^dH<;q*60_%ubC7V5_{fi9G z3M;@#kLbO%Az{>cqDx~zz`Yv{Qzf=k*9>U2dqoUONkA*Qmkp`!+WzyJR6r=Kp~zdOQBmJbXdW!>Q6d{Ph!ahEk=Z;y$F08m%a3@Pcu|XMYr%AC%syp?;O=s}gTYunk7s)I z`7;g#!vy2S7{sx7$|%>ztsFoHuNH#9e;7jX_Lhj1_&nl@HckZN#`J^^D_FKcw>xc+ z-L7C>i!|L5%gWuapcvsBS;-XbD`<{^uUM7R)6VEoMr+v0go{EF?iHisi7&PwO8N;0 zya=7C;z#sHUKgN>jS!_GLzZr6Q#cDbvrGi&u$WeDlxQI(u@o^2AdhyKF^sm*zEMr> z5wjtolXHaBoZV1VG;JWyl_WtAXQD6Fn(PtZ?(fGL-~kq9Q!XD^;hbn|A2 z($Ana$Vz{MW)r6Vp1}bP5Lw^U`0^FzdIm>-SzCk3n8Yy`51K|hdb*n1+v+h35A+Y2 zxN1s!S697YRj=w9TMCmnCi>PcM!dqdy|=riqrIt(k+5(&)TwJ^07`lSavhb<_MUDr zr|N9$>1t?c67%h68nwN);Z-b?-a0zkJv-Y2(*_S0qbdm75CS)k4;Qx9OKVH{#koX2 z9fg& zn`6@HwtE8ZS-)GttNT5HSx?Z57EGo=vw6sB8=taU#0PL-e2h?()i!2#PU7%M%b3$? zW5}wh33On}J~=UAnt&)YVYXPt><%k>VzHR5wu#9}2t*e9lqH?Z5^KA@KC7TY7x(vy zOkGxNrZmjC=0O*_#^0MtJSh~)E*!2=t_&B#+gs$-oJxsCRhanB&q0cg9h{$ow)XZ` z*Vk9pxEkR4#>VE(&hFvi(fPSzRcB(HrNq-|uf$sFD-`wcaQF5tw)gMeJ-mO9Eq-bR zY&B{XE2A8HKYUQQN)fAzhr8vimEuC7yi_VJ6bf_s@?r_<#`4DU>h|jL`Xcm*OgaV~ zq�Jl(NZmELTWDmEZ?>22c;Bv&qt20SZnuN__;%2=$0qkm1aO-bge=kCS+atMy5k zsuXI9*B;u*%eQlCOk%PWmN2`bH~FCuY19;GNl=}jF7X3@oJ-5aqJAh%(03%t3V|d5 zv_VV0I`;{Xgl!~j#Ja*R-K&t30#yX3L_0$!B%Xji4_5;W`esl;d%^}mgsX^uu@N~u z7?}0@7zv9p+PQR~i%u}K2%GVGT%H-njB9GfWp}&m@px2mD8-}d88QYpeOKjhI?d89>#O7*!jq;Zh+$h)U@{4^%xtsSK>Dy6d;-7nMP1&FA+UK$UMM z9`PoipGLev+$kS8!0!T8zebJ>?B@yk^A8fL=}|~%0ZkG561eIqM1}O5=hCF7Loyou z9jwaOR{^SwgDZ#YF0E<6QBMFVGg{KJ~nM-YWe(>9M~~C}yvo z^ye1|<*4%lC#|i)wAR|%($?D4+1}FA+1k_D(%02GGT37t?H3E&;c@fe7{RH2l$b{P zO{2&RfM}&FDAnjtFKA@2_Yb*Jw!BncSX(MD&7Is_gKyq__@E)x6{sQ(0%7-#QPMFN zf({`?i6NDuRQRb7)sY}mM68ezyC;HEParC6p%*Dir5_KGhqAN_85EO*Xix-71QV$$ zRMe?ZN0cZuf|gGpE(=BjTHW4?Ct_kz#dS}?AEOa}EEXhSFXpM>gJ5S#@!d<(#V-N2 zo)p9?Ur2$c8$gv}SQ7P|>tZCrnOrhgNTV{DrmO`EcAQSf8CEa`MUtV}Q3nM6PQ)q| zMIk1P(n8*Vv64}ABbAD1?88hhvADK?y~X)lzL=(^)k2XV7tSur{9zl32h;gvN|yYK z#zUD>hEz-^bC@V1kt8^vZ()5|AIhn$u6X|D4erCC+-Ha{%aG4jR>~0I=4nm^kq)vr z#A}M_BD)i`f{Y6lRK7eL>Y~^tsFn_udq zen8ZkDk#<2<0A=~*G6cnV^p}m=dxn*7AZnX_2!Hbvh<$JZEu%0HVSKN#Ht_=i0yHVCE-%}o$qYwPPEnD!43O*$R3;gEUKGU;%*F>M3_ zf*n zMm1HU_)|`V7T7GbDJ`s6a)D5|fj4KDD+#XPymEF{lS@#&3xrn@FF%+JGKw9jzDG9} zWY9?=?Kxffs16Z&!{w7}ou6UIAcHYNP#)}#9Pb)T61#NlC{U#+63+5-%@Dd1-+c50 zw;CE$Zh09mJb@})_3kcLz(k+7x1n@F*8}c3^xir z$4OO91+5)1Ls-o~pAC~$WwR_4!r)?Wg;b4StQeaxFRH%mP~Nz_=rD1Z*{?sh9C zRB9N74D+l;FGw_tycTYpo`_eVI{L9Pc*2TA9ny@l0@{S~bo*<^gt>`o2_i<`bx8-Y zJ>pQeyVne8MdZCg+k$ZzTn^pCEC$`<9YcEG|M0`Zk3U|2{(L5olRCH^y?!l=+}$fs zMKi1SG-x7(q-Il64q{%yGaWsU2qZCNm4RCwy?K2oF~}7yI%i<=w>X8~8N5pb4lXXh zg0gdEJVaaq+Qf*50aAxoEUB$$|_Xl^iwvMj>|5DGA#G6bCJ-{X6=c^q z9T^%ASCmQ(WA&sc)bk41#KJ0p@9AC;PKs$OBVSxlh^b$kKa|0cyF0-2W{U zfV#$puKvEEF;n00AnLSsc69Xiw0C!*d}wS8^Kx?=S3VgS85tNIg}{JaeItWi1AP#{ zTe~`1A-{LDy?piR`O6nIb+t{cE$uyB9lhNUC(sUNd9(uo1Lu8NTLZ!4&rlGaef#27 z&5&s{Q!4F262k9wOS|Q`3gKSgK4^39<*woa-#MsEx6a%ZvB7kPAZQN#qS~xm6 zIc|5_><;t?QVu~Ylz^semg#AGu2k4NIXO5xJGr^h2Gtt!-@3 zt_nQ)@bLKJf$}HCI{HDM61%EvbqqwGC7>0K zLS+N1`tU(BXLmP?8%w2y0@wRvq^k7XayeJbKuwrmnOj_&UtV7*&*!sTK%7n<$#kqx z=E{K3K^TNL5zf!$=a=V-b9q_O&l`;e<4}Ag5ET@PR4$dx5siW_lT1YNr406l#T}1M zg_(FP;tL07u}!C=$V7-1`JxQ+%k}h$P>R*L6Rzd`- z6ojgf0aX1QtI}Qn0C)mb_g3i_6~0m=62Qau`DSJ?^YH$s5}_=W++YY#(d(Udxqbl~ zX;Sd$DRT5{(B~f{t)_?ISTusx1g9cU^)zXro=Z=Jqz67t+8~l~g5OHmtCfvbB>m!8 z1)+YO6rZXlEmTbE*GcypReyzQDN2Q8z*N5pRK0jXZ0L!>ltEA6p=#l`-+ue2pF=+a zKvhx&u_9!Jsuja4{e?ecuK{pXDoa9z7cXD(T+$zAo}_9|zLF%is}+8g^c0%#6LkcZ zs;!e1=^GkeH8s|?wKjEiw)XaPjAH5=?lq0{jg9t?n@AJp!O8LA$%zrr#26;e{xK5+ z9fAa(QtBHS>Kz6R(gzSf{~-8%xwu%)m-AZ(yB81l;Fz}`J{SxCy?Jv1xf#Ol?Jel| z)>sXfD3todflr#hD`tS#h=>C$|@IFH$=Ft=2WMFZ$|P}bw{iF6Ec^{Vi_49A2yr&M}`>(y|c5fv5^8U<4M&+ z-2CQSanpVN>`#CG6UO*zLdoRBl&xp5AJTA3 zdpm^S0VqY|<2YCU@K9@e8;vy1 zogLJ{UacTjS6|)zK$%LgDoFVRjG%Ie;SUN?0@Vx85kK=1wzjy!nhGJ&21oMnwu8lC^;65 zpg}atL*%@QIw8;2sQ(ZJLy0=Y;Jtz(!~>sbchsqbpl6~fI`;|Uvmvx~e2f7C26%FR zhYUuLBD~;==Z|ktesF!YcL_C{K$Why1zICaL*-CMkZN@ETQrqQm5Q-k78xkRMcilH zcEL|EY>OM~cp(`>4TSrT=PSKk*rBNc7mUYMOV}3_QZW;~j(1GF|DGzP*s`Azt+{IR zg^Ut70EP*MJccI*rfR}U7^*s2(H|)JW!y&GSlnc^Bg1n?#@GJM^}*e(pj`&$#j(Z_ z2hE?cnJVU52Ev63TjvI(r9hQdBY!wNSOy7Fu#B6AcSigQz7PgFs|HzDC`xe|8dw>jsYn%+N{}fAu{ylJ zKe#7qLt`$nz&foML!HTrfyb4|RtALhNcTf@Y2)-1?`A&6h7|7Hxu1-?-$vTd}da;hhvC zsS5_5dUOB753m37m+McTz?0A3z5VpB|N8Flf3MnA9b$}JUx7uV@bK<-_sV!xa5wNY z@$|X(?c>#_PbeorNDxaaJU9@lf#F}ie-9ZzfT{=Fy3I3AUVPT_0SpXZc{|=x1Es1E zVJUfC2~Npe!xG8kea4%{SMKnDt5u$IPUPE2l!{QPMsnP}z1_LKM$2H8@j}5Hjkb2Q zgYl~G*noL-cw%gD%se`2nfCjm^YDOIfv781-iGYeJ2)T+Q7i43#FVM4ucv2lpsT+hlXyo@w*p3($MK*sp<~MC zYQM5_Uu$Q3M{f_R4Vq1zy*;P^AwfPenHkt=%senU(lbaT3++I1K>OW;^clplpgJ+s z!YhQv6(Fm5Rol_i)709Ev*4t4O*msc!~?1YkRNE-{SBsm%;{^pyX*V=ko_Q;@138m z@9)lUtQ3~Y^P9`_TPu-NY+`(L%1#p}%fzVFVq)C%upe9J^i(_(n|9i!tm6**S6sS6rSnrI4CE(Ppy8FF* zN0jRA+uJv99^Sos^YP<@xc*%~JSbL$?Kuv_bycvcDxKV1&MlXh))%28#9{$Zp_GAw z2K7PWhvXMl%Bx!|&@z&Va3-6`6*Gl$Hl3xfUkb`gHd&a<(-fBi}>OZpKrz<@VN+eg&0Q#6bbuj2_?{y#F?T=6oD#Y zRkWxQV<;EYA65`p%247!;*BV3ooI84Rk1Y!SST?7FE5RWeg;&zrU+EU{?~yj#iv#( zX??A*y-9HDDg9%hO6e#%_Gvqsk)sR< z>gNd+)K5{?`C#;OY;{S#wzlT(?vB1b%z>azOq(M^1gFfSeU=HzMC0ZGY^|0NkY#+> zps`^>RJ5)d7&oI17vLQo>Qj6QG$e$kMuvO;P+BY%=Zo25uDDQ2=MtNH+v@sv4c_|p z?G+?cL8;Cj9MAlnti;a?NBrb#0#uPj(oz&m zjrn*K3^$O72Ea+dsY`SDgaB1bD+>!tbMs4OVakM-Kw!;ah3PaM^uT}78dz(K^lF3NEm_Y@wS4<3; zQ8L*icIh{SaM;U91&5@gxpJ<&TrMsaqlvKB>y9NN*>WzCO=RZ_bL)#cr-yhPXPCL6 znN(deudbFbziw>ILAYF4C@e10mqZ-vmLRH%R~;mB2(>7I*bOlb;%W8MF(g;qXWaSC z<73`==nNH<3O|{_GZnAEwFAax#vxQzx3?8PBD5q>6t)nrAvg1+f>NzWBqgB>ICI{Jp~qAb9NEq-pOQHJyrr>4Ly;i92coABo$<$_v0OHi$pjJ!XeKn0dj9NXUG2BepDXPB?8S3k4GD?_8W+&*n*EhB&~05#4ZS?5PVxZ+n(3F`13b^#?PL?eznH(MWc9=Y%bUE z*jWGYux)zU>U0i_jI?%ibaZ#s*4BDLq4~`X=nr3ks@2uP(h@}TY-PPannx`xh{@F| zJ?8cp!WIg%RxaZ{tS}%Hb%T`^wXsSuG*v0PK)4FZ08yds?b0guqT1rt7Ha0j`2v~% zv<^d;Knv)G^ki;hotlYYParjbQqX4uPaF@lf>lwoQY=YOCz2>R+8}!<$d@QHhIN&; zMnwyUNM+mvp-r@g#?gpEW_oHgzOrsDNWRz*&u<(?K+5 zQPi9G6m2k3vd%_iYETm!%ttbh9KU&ecz>rBH^iqdiBB=33;zk2rFaK^vYL3P9V^%b zZ3ha*=PzmsL{#X_Bg*&hZualEupMas?rs-s5a+rh#ADFi-QMjj%0UFG9_~-L6yUpa z@gh7E^DDJxLSCUOLQ4Wv;kFQ*+S@}T;Di_^yz|hk9^cR?Ny4t{;WUq;BjIbBO$iW2 zs^C^AQLL)ESM9KLML*P$xKVdX)oa04?5e~*>)qR%@3_byx_$of_z`a)?j)xe+9HW_`Yu6L!oF%MOKZe+!s_u%0nzr36%7K5oIcrt~~nisDc>zmu#I{SJ$`g=w!V|^n- zbxq*y&rm|Q?j9Q2)YQImc)b{jTNmd9C^t93mcdmpu@WAY)oC?=I>sF*L=H5=eGkL| zxJ3*aLt723Kso>oHb|CbZ~zck7Kgc@(wHvS505sEIJ6ay#v~5HPsOS#X8{ipcR#ji zfJ(ekBybzCmKC@Mhu{ulYk=nBm#y{lEBL8cRb|=SO~d&PjHp;?N7*df$K#Nnnvpya zu{i@Nqn$6O6$Q&G2kNodqRleHt1s*6FoKd$(w|h&3&GrkS&Yk@luPLL!sZ58H^hVE zo13fm?{SMD0QlmuzTv^f)@IDM9lhO+tu2`D2}Lm|RRbpX_MXnBwiZm~5YI7pV_xp; z?`djl)c{p>40HaftG~CShxSl?LqkJmv(xLfduE5n%O$nZvG)xX2*>&>Hs z{L)-*p)|j_0?I9x!ik8*VzxUbr`>jk(`ua@x4mhg~moL+wF73gvVqd|{v z)?yj6+9n(h>%`c|PEs z7jD8ZKR-XYzP=DAJ~g4b7BJ|tVrF#?eME>5)$7;zNr(zH6{`}9D&kWDNSz68#bz%q zXbc4|A(7OP!4`QfBn|~0a(YUz?DUjCmAL+G@9%RRz@wwB-Cbmka3ES%11k-rC2_LU zmg-ibr$2o7K+sC^uRnZv^Xb!VC5{y%tc!IR9UCPsJC7ANK+y5!d2yj|aCx+_I+sdE zE}vRjgC3GElrr&Hh{#UJmrO;Y;_(-Y2Gvq& z)@}FuW+G60Qjugj8VdQLcO(*#aM+iEA_D~^m&94rYzo?6IOGWjW|Q$?Cd&XR`Ft{; zOJtx2rDBE(lZbHbzi23(if2;MR3em&2hyn!6s3490BtKAa0fh&klzjE3z`o70V_Zi zfhSST6s02R`hDW-=krW^&|A;60$8fVfutJU14C+Q#X=fefsg^QzSvTUIhDBn%}&p{ z9iAD-tjq3lSYy%9{OO&(&@t>CbAbUEQ6SA=`&W28M@v zMo0S0rhzf@pnRGcuvkW|R|RI9D=SoG-+av0N#;b9}%6Rd3(kzJGuH_U$>uO|X85 zvtm(2ph~bO1)*qfEM9&G$UtPgz9tj}t>E+&+kJtSa0v1!-&I>GL7K2tplU}fcXqH# zT+Fu5xYFDfWGQt^(b!cu{DQuLXbnfus#KKbROMVDpDGqJ^NS_0UAp^a<2mr|C_fH>OY%UvWJl(g%9t2( zg*4`XY&KCS<hh?C(pz%kt8y4`WQz2u|zl)4+R6B0;ZycLVhlvo6Bd*xnv=eEoV0lcX8oY z&{f2i3XcX4WqD&`WlNm?mX->OiJTG-o8ck4%r3-_x2q5ZH^Ayco zwQERBDAODCJ`q2RbVU0MjtFIT5oqc9zHV}xU(~jBMuD(9V z$}R0}Hm4I}Iw2uwHBbyReh1!!`8k1^=o~?$iGF$O^P3x#{+E_O;u0wFswA9BdTvgF zrZa9ji160D5r16|rzRjifC~~O7itnT1Vi7z>!;vIg;0|~m3$}XE*e{{LsgKdQUU-8 zA+yS_`cG}C2sSBJh09@6P(0A4s4>ugsz4Q#D>Nn8RyA-HkJUo$gVEtlE@3W2;0Edn zI1<yuL{GBS1K3F>y?p+ z;YLv4_7?g-&Wj4-c|?W3dOEe2Gr?c zSE4eiV&6f{RxLrJ1nxAH6dgOYza`cf5WKTdtgw8c@AT2W0yi*w4b6ml>t;K zR>j~}U}E9}NOVK&F7Lkk?(uJbyZQ3vj40KcBZ*OE0969(?BCs?oedr?7#WVeHLR!< z{gGrIzRxHC83eTVyi7Y`jqBWLg4U4Qv(1ayCV zgZhesRbeK!R>h|t9`?k{2X&Aq>Y?p|>;CHy=Th^pEv(5aeYaUDPg zYgZ3P8gS8n5Ou_#k#%TpcJv^t``zE;#Ri+j?YjK%;pWq)haZ1@_~D1Mw*>fb3f$OZ z^al+2EslM2igpN8-SDHr<0Bp)o;w~oryjyg5;V|Q=aI-JGALIh5f2nw9EG#s0pZkm z)`YIE`RFM{@HHT020D9uvw133x18OKIS99RL2Q38#!DL;3RGbd#4bDqoDL5Z4?-Wx znuJ9o$t#VUhWmh<5B`I8()087+1dWlk$#9&Bg0(-{Uerf%d}%~%+xj5*FD(RGd$4V z)1{!pvlq{s+FBvdy?9wu*Vx$7(bm=9XPcS9q=R9F=Z=Skk+^oSk83%{4S#q*A2=}) zK_lt7LuC-yh0ed2tg*#C#MM>zf^-yvWMXBky6rQ5^P_ksf)iyYygztL@0h`BzjJYp zdxe_dOBkmZ_#8(d3>k5^+&CeN!0p0KD+p`CsqwJDE3!+A*~P{DvV@BQ=d7?$#fg*z zQvd4Hr$q2buqQh1EgFqzK7%<(eiFA@RU(F!C=@7}l{k^%CxsdCH=I#Is)H2X!nNZT zVXof*KiS{kySU&hDsd7>y7=!Kt^#}s5%=Rq5H1-{IZ-S$wKO%ix4t6qRNK_nGGH2R zYHz7)YJhfOXb9pufuE>QTW3u7O|31R{XH$6?e)z~{i8zzqeI;TeK@vzpx^29;#C>5 z*`|HIu_@c|xVgQXfvYsK70RtHm(A_Axm~8oNwd{DZl9X4+mYegfsoFX`+`>z~xe?E&=QnZN7t(V%Uo2fxfO*p0<7Mo>!!X$QJ!!sV2!(nweCTF~^ zP&^b#M_n_{sVR%iI&QU?$4oRO$2b@rCQvnIhMF-vJ~lc&HiA5^W@3EAI%&4qpyiFY zJkwU&gs$;t5D_cfl}Wq9I%TuCT#n+xJX8#792jv|SLb(k{8)~MCBf7Uph|EkqEr%j zO0g=XYMx*g*o9zKx~|_j4!OId<&@Z1DQ>lYdWwuhSy&ionwP!u;}FwvbMyqA92?&@xg{Dkgy}BY^GzP`Q6O9I_TqGhsuN(SE23iJGq*$=DP)MdC zF^29%J4tF!P=N4;nvnFtf8ijdenB1-D4_cNeM0452YPD?BNWMnHPHNQf&Y6%M~K$W6Y zAevKoU0nF@2~g#kAy75rvQG<8rDznAflfV1T5iBp|L+B=0s)t#klz&xx#JN$$4ESr z!HNF20#!&_8OLfPib)AV#iT#0jaQQ%W&HT9q!oTMVJ|@`NqSNw{fWKWXT_C%k$%x< zB>nl1lU(b68mJl?s;RBTT%mXm!~hVc54CJk=t%)1frKjMzXw#IK2al9#-C;kKySgPy&7`LeFAuBD~9tE+>sR39y*Mu&Qa2fIcFyD-I>N5S*^ zhWfkvy4$-uTY7sshKG8_#s()QhE1bJsHutZ;i;)HhhxI&wAiP{=<7$1Kf}Ok40T5O zCdP&YpBgle_Kytp3=MP*4M2v1B-N#MRq6vcG|=;hM4I^2>h5~JoG;E72~=SU7p#hA zv_fZK^kN#I7F9<0MzD2A`6v_OleE!S5nqogr@`F2<{3NF{cv0r@x( zMIPIHE}73JBmz&ikV|IMELXcK9Fi6%@Ion5C}zO@7gy(Lgq4VZ=Vo)sTrQPNM!@lr z$KFCQi=#sR*?24j?w>29bSB6Z(#5#~CKCC|!F4e*xkM@xjYj>6WH?t$mFDw{>x*;C zWkye2EauADL@E-A^5aHvp_tC$M<9i=Y$6g11%lpWK9!%(FKjGtogCuYkFKvz?(X&> zP44ZjZg0=8tjs}bTwDZEdlyY$RXp-&odii&5G#nbkmslhiZV%+@8UvLS>z!oE2gt` za-uS>y346{jVA&PK@U{bktmhoP$DZs^jF&lMZx&9qSF$klFFz?L7c)gyM#v2nsKbE z!2)t|x#y;c5jP3M#2PI}| zT|+$vcWr$g2(l~&{mWN1AZjU)Y-?*fdb``YIvL8Up{}{T$f|LkqtEDrcnIPYt9yG}C&y~{1kM8`jVtl(Dl2qRaN~;$iIIF{MwA@&k} zlJ0>tz7Iw&2QTiJz*PzaVDQRMUOV-FunswqfksIlCE7CfqCU|m0W1h2fG#dJXpLn6 zRYagLr(iz1y%jqhD%c>#+rB{kGkS!b5rEjC{gkoxA91BS21VMFINSuVh&K^Ex%u+t z{>L9KK72TT|L%k^6Ju2E)4}Z)$AWgQueUBQHZRm5%V_WbOa=@`UGs=TiL0Q*w>r4L z+rzm8y~0mLg|H>y#h_G2xLp`)cu~;^t{N}i#_0)~MGNO249`LI#6X(R;p?m2n`<17 zMilcpe0VqzYpK248=M6Pp1pr}`RUWeN3rLUWdXkeRoBVdES z`qzgaf5fS|+92-d15M#@IHo7O14av1SNgv3RS~cWlL&^A&M8EDH@SMInp5GnW9YFb z0#xCB!%>1&acWbfjOe6zyBAki9ka7N0|Vga?Y-Td{k=Vd1D(CSU1I#w(%Ie!F5OVy z+}?^^ZQWfpb+y=XH8(NLfxtC5HVWZu&}^OwhcKJC0)bdQkN$uO;2LqU#^)lLg*ira zAc*m@!I5<6VJsUXjw4##mU-3ksR>tv$!`1n3}Xts3j!5>Dpm!igbWxI=Xb%%$#(Yl z&>H%HMsWA^Zr~8q!QI12@n(WU;_@*wVv7!A6l27pCt#QgPLYKQTjtLy2_~h6QOGc+ zo)qSnmoca0mX;Ks;zXm4nz#;wQqVnz*l0NaNLu;^>NepUMT5p?_M6CtWkAMd|>dHC|>>h0T&qoYJVZ*|z~ zWD>{oYVYan8Dc0&Jihv-Cbg2rt_E5A53_k&cSp@D&g1n>w6{XOrK7E>wWX!K4H-<< z_03H^gM-6kW1xZ2k=~)f;c+wG78+-DL%P>s>NupesjXF^D-*Oc$n_3~)in)yW0LEx zOhL?OY;Ad7!*AgH;`RJlT@xb-yr`*ZY-yR8n!>HvghYg!aC}r)o-eH~<`&DbOnlZq z<8V1#v(9mg*=n~iSd~PTa*Gq6%|1EnV=OAiv~|Yo@NZ`P^vD?wGVrj!oIdJ%L%<)P&VKh87%7+n8yHWFE$WrjY>#R=1AZtm6}7 zBc_r5vGGxy(P|r?7&lobq5R>zQw}F|*hy^dHjBer{V&2uq!xGj^32UZKJXc&`*5oS!q) zIz|mNozv4@fv7fjb~d)Rw|95^si)wA#U{xcQO^t6*Ev73gs-+isD>0lcAGGQjnv$ zrE)q$H6fXb5tT@ULjiAjc|MmcQZ}DTBtpK)<30F~H3y3)tzuaq7brh-z6|pLhz*sI& z&`%6YTF{VH6`+a%s$4Y4B0lBxd0e!pnsIXBKbPI*w8f%fMWc`mbm~dcas#IN9iVEp zk~Y?h+nez!IQ0~(+S-V%KLx6)A=Q72o?=X2=~qzH@6pqv^mJao-z9;lqM_Mz+?S5~ z(|EXvxIYy7UjV8MgytWjRGLsn5g!GQv>m~wnDi%7wPhr2S(BC^Vec=JvE#RrRv<3* z{}`zHb*rs8m?AP}}yGLiyG3O`lDlUFL>I0L4Vq|F!y z{5lB~rHT2cNee3=m$s}4`I?%VhQ`L`)>ie%X=`t5Z*PTY)7{k$p=NNPca&^=c+z5; zvJqy|z~_v8K1!cHey1Di9qR8QR@Ko0>g{P89Oxby?jcYm23D4d5vv^TuunMcR))u4fA>Id=U`vw&_EZq1AQH!Kg5%fY$;O&*UP6f zh4j|Ju3A)awh%9I##5JB|3nOo8Ae@nJazg59YI)xj93Aup3+zJN?<0)ltxYLs?>o< zq$rijMid+cq9R-(=2W^x1+}_TkqhUgDk!qZ{L0dd+W|i12U9bwMu}C$MU zTyAc$l+7jcg>3k2S}Y=8n9tGYJQK$hRa`8_(c4@yl}jZu@n|v{j)w}UxiYu7xq6JL z8XCpL#TLX?sOXRsC5HN(cwVL zFCKGvJP<%Ty1OyRJA1mJy+Bv#=;`j3kQQBieeGSHjm^yvc{_T#I(xgD+FFQS(VLF} z)L+!R1pWEjZ)kqiP!FLKKWpn>F#-ko%eT)ZI0dz!J}!@q!yyDi8U`WL+SLJRwZ5?t zEf1SVZB7SXwRE|>uthAUytY8Wyw;M9{SR02gAYyUkZDh$vi zB&Jnid8vw0Dd;n2*hX!v?CvTcr63WucwSU0o`6uN=1;8t4xHE#e+3?>CqtcqaM zlR8yWluE!jC0b5tUhDI1+1_52mHt4>P)*qZBTkl@N39XfEPhqL${4)#XyW; z7P=vL5bCe&?SeKA55dGR-0*f?K0boyD4j!l$D4+C?CJ`y<>oQh_}hkPE1I72w<7_q z_)gy5?Ok4AWI^|nFztJ5hcf6yw?uEz?QE%>Us!~OhAYD0;t;Di)hZ^XFq4w%-W*Ch z+XU>;TZut~A&EnvOrml02Q46ja_F?;6-Y2nzZ2-F*J>E`1{jSCsqg{Cxs*8Sr7}hk zh#Y{HO|q;3OK?&GXF9Z{Gt{LO%tD2)?MNthIU~+;vUSEVJsYQtkfkl7S(F&~RE0Lr zi6ba&o}Ci7!Q4T7igCD&nSxe1=b)WShOEMnS5LtG+nWP$gL@Kz5~%C9w|fk@P9MO7 z+nZx35AWY!akaa*3aK2wemGQ*Ie~I^Z*F$*h$R3PO3(tKD6n4zs>I;vM6H}?igo`K z2HLy5VK^stK-})cR1KGa`;cE+#Dm85;=bXPSU)*Ne`w)FTCMh84h~5ig$0%-g6;BIt)IrKOh{qeR;WlMx>8MVc_bxdx8hyDu_Tm zRDw?l28TSMD=urut3w{Q4qIYF_qb|C1HAh1;q?zcy#3qX9)A4s^bJj=$d*aGjmXoZ zO#)Qm#u8VOJI^N~Q#mqd?da|vTNd7Mr9b5PfdQ4JR|1d`t3nI7K-?LrX~eG5j}v(M zoT2dO1+Nj4s3Y8ALYA^t2HwMEMkOcIOH`LYD&J4MY<%s{Y16HZ7$#kiKp<}jq=-D~ z$MU%`s};N#+`F!^v7@)AnQndEZCzc>?d^>%E%i-AD;Q>|r5WNL=w)pU@vOd{#uhU9 z-jP9*ZNhAu95S0b`+8eCI&fg$$gsmZnP9Pb!Sgrx+e zR&W_xVH8ks5*!N0vJpnYI@vj=tvW_Mc2UaGp)Ds;yDikjPaVSKGr|Ms zB?eY`gJH;N9wnBurFB}C5fi+=Mk7R#q*|5A;K>5|BVSlv<}9A7-t zX)!0COp2IFz_*3-FG*BEbQqjdd6ae=TXdUwjO+9B!>cRC=)^1c`n5=*U#;v>f>+{F zJ|QSFW#Cf^QGNP!_xba^(8G7%z5edIhc92i+tJThHe26NkLUZcwzg3sQN9wtyjKkk z-_XGMTRcQeyV&A2=pP;Kz_i{zgr+jhM$q zrW})Y2h=}vAQJHSXD8|LH#TLr%y^vBE+~}~jH(_Dx@H_olapq*hcVP04y${{5sU>K zPMdR@q0pyn6HceqJv)sC?RJa9X;rdVOylMehNBv1bgD@UbP@(}m*t#>1l5AVH##{v zHZg9R@wwT8o$WZCQ%?J2zF5#D|DbwYVV)I7zpFQIsEmj$)ujMKM4be#qT!Wz?P&=P zB+hkvtA!{*J1o>XI7IBKv_3M}GFX+MR17;Mb#N?77-aqY+`z5y%0VUB-(TO@Sl`^- z+S%DXIM_crLN%O1?WC|p$8O)eq2J&8_jh7Q_4>mH&FfEvsIK3-NAtQ`bz~_d-l7T9e zrpAQ&P?yqNB%N_l6s{tw752r#-efF*U8y)@coW!)g(R$17d|sF6ZicU)IQkKj@_St%^hcp97GhUruT*fWuOD>48JC^wzq=U+28A;&hiiK3 zH-ReScO@Axm82?G^@|u)>uYmc8=39RxWrQz`iDT(Q#k2=n*Jd;1v1VOHe$4U{eA_Z zqM_MT%$tsRGl^h07WD=K?wJ|gRZRv=^}hkALei$HNeipZ8iz@eGcZ+Kc$&2EHC?#AY?yr^f6y5P>S|#IVgWf~|$-RP_5Zk4kHU zJ%jy3ruuu@`?_2Ey4y%SB)a}_vAIMfo{Ghjk@cO;n|JRpJ)A$tQW_P4K6VW05UQ7; zRM5T@EdmjHdIC|=dPUsyNLnsiRKp?r0#Sj`2;~p0DR>qoMKz=npi1QusvkI9ku0f+ z_W2D~&JJPa;?0}#(gOGqc#|&u0B#rwdm}+lDjkhQ{ot5%?pw$wKwMf{ zSYHQ0zNA`+atP?+Mh8;li1NCAk`)L^bwY@KbJ)DMt$~BT0pauU*&St zfC3$Z{Eertu++t`h}KnNMa4G+I-#gTkf)&;5~#YkK)1CgI2YvO?9x(ZaWS*BR1Kh> zTUo)+zTx54&d$!>-T~9783LUR@}gsE2D6`MYQ{~Qe2ZmtVgjSKe`I9HY=U%#?VxGY zWSL+jb(9Ye_YCxdx}cM^w?gE7{*s=_P*nDwJ^XzI;BG%YhPw0)eVhNdit8A=0x8hSMLk1xV^@HlXdfhSn9%NSZf>rCfs8(HZ=bw<#7nzzf-z-i zkA?y%`YJLk6n&LrP=+B!JxPEn{ye0wkd9UYNn8kw{zS;&@(*rquvd|(-Ag)OA7H$Q zPKX|2(CGlzajnb&O@YK0k9h)23WN!9SP8&~E-9fz55$)3fGU6&3W-M1!|Q_DHB@Wy zy`mYE40fUn72trjRJtIbAS_@+6}U$aA*#hg9GzouoDCO-V_S`FTaE2(+{RXuHZ~gD zwzc6lw$a#0W3+J^8~vX5oBU2@XD7RJp8K5py5Q915%4jFHlo&1m<%>qpKYKdIXOG zatBT^zf#)oF+851AI=B>jOebw!1s9e2%Fh{xO5l*N*J4?_=*v+6COF70;RHnbI_N| z&PiP`Jyn}dneZ$~D)6+UrqVs@{aH*CdFgQ{w2THeJmKrn)S{kqGfpYRH+Xes2MXVn z1TG>7DXff%IGul>;MDHdoo*a;O+&Gy*=iP%yvc!J4ssIioPUp_;;&Z;fv*b%{}xx* z=6QJg5)!&ajo$nnH#euq&NDgsat(yn*L|N-c7|_k95?ec8~0^ZRsCIQ;5vZT?Mxq( z;1iERT>aP+V51JFR~f{$X0*pL6iHIx&45K5*{B#Kt%>qq)}W_B60hbYkYnsOZ!bP~ zHAX@~9*k0CY7a8iIhBtffhn=z$Ruxp>kUoWA-;MJI^2;l45{C1Lo8QHVWfjZB;&s= zbA8_D-#Zhe$s}ZOgH#WQV8~73KlfF_r%N@qVX1K0BHs0%y2>cnZY?W|EB-Xwm4u3gb#+x`Wt|Cy_!feyzYtVuYRMe$?(S6CRP#hPjk-&z78=%h z@+K>A+fzAyyH5!keMKm7k#0?ZCk3r_vv;nltLhio0bf<0yCf4he&=`yvEtHq4xVH? zt8_X{+hwbI&jqiG!J==U=DVmA!}&T#x~>tZg)ibdty#$<`~fn=Yqg3gVY_gN-}i#& zYPO~ODd}7}jxZG^4247|Q%EgZ_ljrDzlun4%6|N^UFAFXU zc*IixG`FLpB$ur(zIV_v;bW=hntHJb0s4@v0Z1vz_u=|8(=)~@3B72WA{pc`VoNe2 z2Mwu0C5M{W@25K>J3NPnFNEAVIkEc9-QA77y@76SPA)D!?(R%ijbG=aKhLS}YtB_F zg#ZL-AX$5g0$}`i_iPwd#5zf{bWXhsCCzWOOL@)nQesJH(jUiu) z0~-XweaWP~kS&rp+OgynEs+NF#+%xU&^q$+v+OK$F~0C#FWp@Tq(FlJ-9{hq7uF1C zw7II7L1lEM;L~lboGO!jRi!1AUUl)0Cx@N+QrbPHSii5H@O)983?YRqZvV~RVIt$luBkVGD-=m;_^l+w)H!KXmk9Fd*o{r#8^9B3cuk;P;)tAa@- z8-1f$Ao_e-@I{3*(K+q&Gagk-X)RUAo%xCMq}1qLmHuVODe6Yj(s?qX-+%#D&*0lP zn?RF8(?B581Cl*o6LsZ4^$7`+^-I$X@1{U=^Hg%bAKC?l3cN+h3Yut=vTZ0?b3tldVP>DOTANRLU4v#63vW5lZ_zD;XM_IQfjp@ zItWU1bdwXtn^L_4ic57UC)AaKCc1^=hg8qxQIC7h9R>^KOeg9i!N1&^5|x3C@&Xr# z9{*<b90VDMJXVuN0CW%=e1YKR z%UFr^uB)5Q&!67fQc0z^II&bhGgdgOr!y1kRK=J^%~uHpO(sr-()a^PXI08&SUvK% z3H&|VsQW2cv&b0?N4=+Y8_LV753z+2fsg-l+yLP2Hm_NKR8st2DH|UTLD8^VMLpS? zSJ#&ICy$^0QtHusS4b`SAZ?4S!y%p~Ci#3!?sEW%2G8D-li%v}8-xxzBil-L1}*HK zfy9#m4z+VqPr#QiV}#->D?nz)Ms}X~(PU|*)!iLEr1MurVZ@Q%@;!TUf&1S^5`!Tn%OxvZ4Q83L zB<79Ctb&=AK-2AEVNA=MjgIB5N@HmNCL*X%8$};KJ?`-+Se@uV+x5$rn^~R9ACg8@ zt1MTs_%;$uML+S!lRk_^g^gjoX;icHR}?B;Rp7Csf||n~Q0f=9*h^Fu$zU{}MNNd| zBv4e5sl)H*M7!Y_Uyq=sgZZO~$SAaqlf}loTW19cv9ZfiaF;Ao&vzJ%EzqEs7A~bw z%&q!#X0Q4J`=FLw;e;`%m~A%+QN4D##tAizRHEIUq=H7^w$?_CZ!J$#i()h=O7L@0 z3}aZY49&}sb;}O%4-PWh_^)qV!`}Kad|tXKE@5@ z`z!T7(T6x?KG^aot=d&x_r8-%O)&|bSx((_ch!m%N(oxMCPMpICH z>wWoqy)a6{1s1l-r4I(J#$0RtHd$!Ll;NRpBJU!k5H}tNd)Pk?K7!08LXBM7f(WpM zU`#sNe-T8Ye+ZL|FmQg~g>8|+x4IL~_Mg*6iJ1Kt?@dE2yl=)7>wbH{H<%kULG=t( zTur%x=x4qzTN80r3v9Q&Ms9B0Hx!eD9&{Xr>hQ7vTwzD41yGKu`*!~gZj+`-4`Sr= zkRGmalnhtU@%H-kye}U>;&t;3Y?%eb-_j%(;IlMMznE|`;TZc0TVH>{&2N^=94OJ- zqf<`h65(^WqBQ<@S8u**CBnx$Y{9j^y&ZD69r&<0bvVN)^F@TzJZg1v@6S**K*=!{ z>B8*HaLAfD4Z_&5EvQe=O*JuL7I&s(-gg{2=1dTIeS~EvsK0$()(!A(|7MFcuuYNp zK87yn=PFM!=!?Me)mF=w}1HHntT999$_mQUIhf9LViNs}(OBv1(6BAbi#O`v@)B}8dDFobB zNULUmn|u+r9!h-NGm4rKc-?)tNd2vTXJ&d&9a zx*RozA2`zcWFYMi3m%{NAlT5@YD2%H`a3yg89B$FJ6%<7-Z^9RkDKH|(-0+fx=WGF z(7AI2u35zwlt1}>XElK%$4x>u<^FTu1q4yusqyZ9m9sX!|FUJa&LO2B`s>-@5Y!-$ zANPj5Ox6O7%{Oi$dPhDy4uKn!xzVOW)Nnwev8)!d0yEA>fS5{%FdkF{hAqRa}7 z9jHW(k`oD5LgK^*iZqXkT`Gkvsh1V37z!oeS~hqvhMF2id;+Gr`b=GY^~4jGc}L20d8VOK=O)^%c;+;E;y(Ta!vU3A zRVki_c6h^dbsX{)A8MG!SojT@wTzSC9tA!O29!}um5q@|+m%YG%4054)`qXa+#Cm3 zfSs>!fo?;6tgUWi0EINj4vsx>Wna@ooGQb{!)MLTU3I+>ZMrQ_?WJ^(9~&JJ{j~~5 zlkDf?+s$o^k$N0Bk$;)TUg~Z!@q`J~+(XKG@CJwinC9`KhZWKa{t?xH^@X&VH2h9h z7}Er>GVgrIl3&SfXgSHyJBs^%NeJ?u-l%pOBCy|8-+n1XIexgz-u}pg^@?B=} z@bJ9whq-8W;tD|`IPORTh!%UZVu@WwOgzaQQGVS1Q!i9nuL4FR;k%o~%}v!Nh40i3 zNdh~xrOb)ilI59hL}FF1hv3eF@1PB!M8@a#Tn|-cLaXijvrMc|Ynh*av9+}s0}c2= zM?<^Cz{HG=y^V|R&G%ZB>~)|x`a(f|L`Y5x3KMxdd;W;vvku%ULe4Mf-S}45`MFnx zxEDo*H%eq~$9YZp(M|b@$c`z<&xnp>!^D0=$cWD1i%RP|0r024)Az66Q+~{Ex7h)y zL%K#zrtN38L5mXql8{ZoFwl#HdX9v)QOTeS3fEe3*b1n?yYvFH-G$#^{P&^D@Gvzu z$;(GQe86?7B}VV7Fwz=ZI$idM`KxE{OMQLXJzN|Z2q=`zVsMT`Ry)y;WdIDXUYnAX zAq4Ik0tb@t*QS?@#LGe}{*8c_69Q{lIY?;E&L`T0*`7lAp*%ezVt$}&!Y;>sy}MDZ zz(#ndpy-t19P9_-)Ki8hQKbuZy=nJjPg28rnXxjj`ox)nmZ3~!dlcp%f{#hya%D&# z{k&7e!|pqK7%%^t<<cPeuXQVGGy<+d_a)JpeF5;c!eMtCS))GM{>Qz6phx@|2QhE6`q}Y`zQWR=ZJy0{>Q-qX`3C zSiB+iqB)FH0qWM4WOTFEkf;nJtJ8t&*CRujm8NSh(+}pQtcyIu5q~Ffw%0}-UWbuQ zx~_hF_6Jsl#|hucO|e$@+y_X4R}^1jF|?>FNN4WALGz@h-F^50eI3!_ z{Hv10S^E9`u5;tm@Si6Yf{BJ-B7(xv1&#fM6bT{(jlR}-#uusUqF)=)6B4A!hmRxm z6XJIkv4RcO3=EF&X6F{yioYVwdK4}JcH$j8)u}0ujOw-@FliwQ5&Gn{*bK~3I@-n( zxxq3j^)NcI7y6n=Jbj*>LuT=LtdGkFI+2I*#Dg3h+CtTi)$6Z*PVj&q}C#AzzLH%i@z>o;b zy${xz@_NVGC#$j{&^@XkSZ6oZ(4C7A1wSL*$-~yis}QKPo*GhKNPI{$S>gPRf_#pw zL`U0q%8!InkoX$Wl#Fr!eB}!8k9Q zp8pqlJaYu@@!v6NZfd8m8fv?!D&#!Nt7RZL~g~k!)KwpKN%xreIy@UZ!^=%9Ue_=%q#PL%3)gdg*QBA$F`43*>QoJ}~^`q&Y@$43D{ zIc3Q|N+;pa-2?n#_zU&`+knQSqJlyl9uPl??cuNkiacy0?H){ut=HQHIx<>xEvDgt z$QseeV=APx-#-Vg;|D4DvraFX1jebK19H@|O}J*Kc!J%UcBMX^{d5PMqyk^X z{P*(wUea&GBze~?i^RywX5q)L>WcZAq!qM{9lU=%`s}1p()+r^etEr|`4?N^cLPLn znBp7$PcBz~H7dwNeina8E#~KV@`J+q-XFC z+}xRRx`1};dH;Z&h!dlSbt1hH+PAtK$5evom(ws@(2ISuYMlzCc~Tp{*Oml}Aw`Y7 ztt8wQCYUnA(?MHna_qDb*}%;oPZ8E%!hF0DzE8rR7}-%)erO_-$Rqh~H$;P7pnh`= znj75V(Fk4n8ib8{1TE`6T@B6Ix+eshKbM+gd)p;WwQQn)|CXh_petLPB zs%F}vD97wrGxnqFQK1i__=T7xg!Xwe66qo#e$AadCAv1gv!GqYh+DI@^n?wV81-?N zMSD9z;bsT|N9Uzl*8v1&Y9G3RK8_$}NV{~@vV3`TB-!RX6N$J+yj^iySFGZY2-n=k zn&!%<1o`r1O?O_8uL1YL2y@MM?p}rdCDOG<=g*|;zQXIioyI+2|MzQnWnvP}k2e)< z_xpU03j%@f2kYNJt5hkzdL|s@chCz?$~GkVJGuUk^&SqODQ&KEE zBJkbKvsN8uaU*?rme=??J_pG&7^X+5(Nm+!}p2^pA%!Jx&6|HKV-Vk2(sGR_$@}K=#MzDatm6{ z^T$h({zdnxFv7?|_bKqs{qi9}pMLUd!o>bV+lE^1oLxa~mOHy+4Vhx8>wt7?YX&AJ zrTfD|7xAY&l&w&-mP(bbD7dS$p$ zX<}}%sO=rQqr>czCuyZ*RSTCh@RaW9<>lt%gVuu%$O*c;v=RFNo=&7n)Z60behIXZ zV(8t+)Gl9n17--S)-1}C@~u__cra$6c{8s4kC6KtFp|0|yJi_u6QC0uqLe*J^(0Pb za6>+EW)VB{Dc+aw>1u^oR zAZer7%3axh51>N(hBIS{la$C2>OpI)lM7kWLY6y2uOd+*z%+6zkXg)#1eHbO`d-U~ zG&<{Rd+!&0PG#7itv$LzbgTrk1QiO)CS|PZ7`k#E;h$BZXe)}ii%*q^@Zj_gAC4>^ zx(6k4UBjpqP1oeyYpp)}HyUF?*yw;mPf%vQi^WAOEmYdfnR|Qh^JNGHoSzSOK`0*JLQBEFliYBwrXOgBH z_W*igsA0+8LoH-fO(>5b2Yu3e$ddXiJh60`vs^y$*~QU?eVAXtmt4imi9U zA!e4jaGp9H&(*6R6>^Ktc-_TU6SM08Kkd{LG*=<|y9s3@(|AVw-*DdYv$6; z)sNyV9BgeB=lMhtp3BD>4Sq?941mtZ0(uxc{}WV|TU6psov9Z3qYA0%PLs=sxitF8 zQVdrb`JMo^%8;M@Qf*<5gA>&_S0xm+3{8+D12q-_6pUc?c^Sm4cz8ZfN}odc=mkiS zx$7j=>2Z~d_;__DWlG*v#FD0mha*3vG8U2ujdTzA;UXH$&?i?h(j%xa@5l<$ro~%4 zD;_4V>gY2cjth$AD-5Hembp=B8M1SHt*!a%=qRbO@$2)i4a3c?EkVJ)+HiZ-G7a<+ z%6t?`czsdsV(uciPS6jkIkPJ*WPEMwKU6R{k~p$tkz-iGRkD%hQEW}0o77#QM97%> zVT;-AZQdeO*1A{)ad*8!9U!X;Usad z>Dk}R8gR7V?)nZIFN}+1?v|_* z5zlRp{f>(`mI{eJAt|`72-+SYu85e#WJ%x_13fM{N%dDQ`Aq3xkci+=;xFE)pL6Fw z%zfO19oSVe8-a>*mPFt2ojz$iSM?Iy`;pt4jdgCOp1)YmdYmHupYD(lGEq_BS`s*8 zujGMiK_cgoGp!Evisa=kov@bv?XP1pqh4Qc&v1VKiC*iIz9uTo{F=VEJ3hCkvEPGC z;3pU^V|*?qgv#;B86vYUe8Eek=rxI4H7TJ(FfpI-+0xJ&el|qwhw}$Nz|EjOq%_3C zMdR=)1%cb+?&gVKpayo2Fk1{CtD-%Kyp|8f|FWMa&!+mUM|Gzq_3OsA6q*!q3lFmY zT=C@tQ%5Z=T~D(=hdfZAL96FpE(86ipT}E5b531^UZQ>84SXUplm}vBQZxfGK_dm( zd~6O2)5;Kc$HZ~`RSfN~oOE4k_;4r|szKli8JV*$?_M{Lk^F{)9EG_0db_cHB=9qu zBasuM!#IE+N%`QWO{k60un(3uJK+8Halxeb z-$P*FGW=-Rf-Dm8QiqBWnr|h?dU;hG}Ig$e<;r>+JjUPcAj^N@RMP8pXDu-)rP(#5kpjS-&>8v$wasR(09> zEj@WpV0&?KiOOVq1Ip(KMQgCSu3wDPvSH6>t?&LJM=ojCo{+=1tH$>Z3?au~>-hL& zRMcHtRa71B1hco26 zti>3B4|3#SWecu1ceBvkztpQRg)UEXC)`<_K@KC#H|5*8G%dCCUtbrI={k#HiA@P} zE}Ak&^%(z&H?#LUwCgthJ0CewOK$w1{=5nEuuP|ZW({cXbc^hCS*p7y=3~teO469a zu&Xhugcb7OVub{R-fk*iNpiS40|T`U$zD^9;ee~mqY zn-MgaQ3NSAOfE49DQJW%$`l1@Xx}=f%+uD%(!8s?;uPRzd$AkAb|+Q={k*I1my5=H zW3L7#dMk^wt7{uT!)R_H4lzRDce_l%P{<&z-~FDqG_JT|w|$LokjL-cJ*&!Z_VeDP zwa3MM9ACanre8^jB!9=sM4EZF4uOCKu`%S{whBkj^Udjh=XreG;F*@;-^F}+rTQjF zfFc{Rzh6#tbVK!xl30OY0iv>j?(V-VbXwp%BM6`ptNrJN_MO@)5D33SV2wrdvn zg~+4f$<%U2#c?BMNv_~apcfe?ExBGowk8d?K3o?MG)=@C6?u*A7u-Eszfl#4qrtE8 zi>m%uXM?L4kw3$z-V_tE%5hRzr>9qOJIV>-MpJbe;FFG!nF!57&|O9*_ItA4;A^nV4u^@F;OMkpM z^PO3?DiO{0drM+Z)6mM$yJ0=JZW~|=5XeVJ*UxPOADW;o6}}|-F^Ar z`;o2bgPyHT~yyUQD`PemA!GpeD>c zw)BiJoCNw_yEP|?^RlolG`k?YxWdIfYejxuVz;!~H?#_H-i|V@{Jb2R3O=oxe%Nj3 zuiFh`C$%L%URi<~l|vknYZKd{*sHRoCR6>R)z1CNlsX&f!=W;YHkUAds&K>O`npBK zadb5q(v5H#f%97kfxHpMKxiZ}r7Q}b3rrD)qK6$h8zCeV&Q4PY)GSFSg|^27W0oq_ z;1~Ro4gIs-iM0dzkL!)8iAW0Bj!8fQ3++TrIS*HZ{u72o$kJ1o6eN+BG7asp5i$PR{2#hHG&I)%5)GRQ20q)cdU&kBK*@U$Ze_o#)Er+^E?dC zzda=hXl+l?l~7T{neIzY!j*+du@XlPhd^W^Cwi>+-EMOxPK4_fvv@d5esfabFW{ha z=`$X3w`((}NRX$1dU9vdP_v}?4JOmm5BI7*wdAtYPjfidJ4zjGtm$uWZVC$*Ga~C; zrdrE`TY?sAknN-1;UojXdJyvv|AY$~P$_gQZpZ|NgxY_XDW)jykCswqR7yj)rd5xN z@p)W%9A*C7NP;4zqaqTC6*WqM>P(=)S|yJhP)b!@S)zNZc~7KNUzwMv6{Q))(Wh02 zqRAbwCrjtkSXeZrWFH)o#J*FZ-R>6kYm8KK8_(xL_%|Rf8XNaRw#D8dU`pj*1pMJfXN#t zB(zhI?X0e%8W*4NaQh&=dQL%%Mvo&@Ny@?!lQTjbNDHH*jG`6nt_vJj zX4qWK>}_6sX{~B6ik85ZOA3!EM@}FqZNvI$L6iBR{CW!62MplLZzj1H#zr_T zPz&j`aAE?2P!U4VG&sb(guxAzyHKq1d~!Y`(p6XqIuZD8fHSQoY$=Gq!b*AgRw;_H>`;ng*d4;dZ{!!i%KKbh zy!)l1xA)~`+m8J<9Wn@CSuBKqMJZ$`nMJ0LfL!Wghv#CB!$Lbq0r~*#cN6{{gSRY! zqE0+8*<;!{a*ky;(eKLR(JgToKd<1gvB|LpuWAQ1Z}>9_F*YeHcKyOJvTd9JY_(J# z3dkx`23R)Hd*!<5yXbYn4!lNnVmtlTD}Xh3l&P9^b-=I0=@{_6e%gLVfB60P<-%EZ zb(rKa)Js4CfKV$}z?!xAp~%0M2KlOqu_ol#WI_@7^Wg6nI!=6H-yLm5ZH3?b$iw<# z+sQD}xN|B0@Nks2AuKXp-{Y$vEH+z$wOQHVKMC`!83ZD#r+&5&aYNJmycO@^@!-jj z@C^_y|2^CMm`kQYsln<~oCGj)4mnI-uhavz5dqoE^P#u}b)pqJCyj`_Peqo zO9B{n;!Od6=j!hj;BvwLQG)a6&DZiWg|oQr>}o*+o?-8dwME%)2*#D9OOINC85=!g zG?XnX_L3+u6^Vd}Osfd{PM!QO$JV$$flKs+=Ok7oPEE9$AO0zG+3AD59o_qP7q-y4 zp}y#d>Z~+NN@??K#=5%lXxYQb$%dbnEviybqoo^Ln@e$r){Q&fQ6iTxm>*`U+W|#X zZCOt{GG=9SV@XdHga}2(Kv|lHyLL5f9IzgLB$Vz(yg(+m^>?)}(%J{Ev%8dMOgLNE z^anlMCgI-1bSBGDvTSkmzfyiykWWtfT<^Oqz$5B-gJ3P~Y+I4fv@XM45KB7{)@3B$DesZX zI@vw)=wj&LSBSdmDy#Lxe}0xB+?YI6RJD)gjy&WmO%q@9NOPKEsVqDTRZml=%$sA) zSTa{8n-=8$)i6!$os93o56WUI;P^7aXGW^)1Ti3Mg$Xwm;0PiU4dXUf)00d#;`5C;!fJhU=bAOpr(u*zug26bUN}h|^>Ol^w5q!cQI$ShAE5 zOpc{ilsi|Nms<2jxfM~>uT)6nw<7)ApAY`Y=s%CU-%4A1lOutjoL>f%aO`H9u~qeh zyO&Du?mpcWvfSM(LgJMBts zB+zP{Y%n5YubCewVZ3`-BNo;YOYjuSSnD4*1wT%L6|G*7iMj4Arv&9QX+`{Pe z&%tI~2n52WjoGsT)j&VP0jYCUK|H7dy4d3U2*H5xFA2#pgD#)&WrPANp>p_*Ydc!` zPe0~tNnCFg{{g_y}?CFW5J*O6y1eTIi=f+nIjvG0m z$%{moM~2b)V=kPLM5yy?b;D1rAP%=!N#5lrR!e1y>S$kJf6`4D9){j0rS2LYqLI?+ z;4i5ABm61xWt=gESG=`0%D__F=pUg>;$7p_o*{cyY^YSeX(Adiy7^udgVbE4coLe$ z^3ROPxl&3Z5~5V`R6Ye z9KOA|o=)2EexGjCiLR{O&@V|Z`{ME+xfO+T5rx_~P59pD$Zi#3o151M<@2xi{Mt;F zI)WVc!P=$EZ28U4`HV~;_-7&|_;a2K2NTl{&eOB+;?F#kSs?34jI2$FWX8lp#8VAKM|HOt43UuJzhE0Ne7 z9ob@_7n5bus6ljNc&9OCX+exSPIQnI^C3^R&l~2qmH5nR>#KEp!?;Ljo#UrpZgO%M zp?52P01MP>x|Qn8j7%-;O8pOn3Z^9~-8VNDL6v=^9%||u(1%M}C00`UhiD_AdZ^#p zs0Eb>CC4Lw*Osj0L#yppxWzuE;_NazlwqU>QU!lzID^H+7Kw3#!%t$w=a9jmh2!8{ z-o4{n>|Ka>>5g&T7z6|;_fiqRmmI&2OC&0&2Md^;eHY}1kM@~&9ITgzVv-H*C5Ly{ zPS~qDc2LMcLc=0!5$*x2GDU_P3G$89V_cr24$8oXM3xxHcgH(tdnWO##kay6?i5yQ zuZz&>%7TC=KJD>>OBB1>jt`xEjey{>5htw}?5{=v(gs{1z#JjDt zX0mi3boAuup>v3fTq&b`&%hu`q=BYR3XN*g)dBDn%*Vb%LnEQl!I15t+@W+9R4~W(LAP zkKU1sjwJ`~tws(yQ&oE3I{kYdrNHl_b_!n!-~FlJ=hU^-REw+WDQ+H&f~tGLgHnwv z5W=DekN0Kv*5Z+k0#iX)^KDhWY#V}mxlv#Vhfb- zeUE4Dp%GqcmMF!Ctuq?8=LNlQ;j=hK-S++Krv}6(e9Ix#xS6)Lwx(lz zEHeqY8Iwh3-zEYj?Z{kkes-(Y%EPQeH_Uqa1r^1 zgqDG_mM=@bSY=U|MzuX{p%}SXzB@13#N=Fqc#^91;dPZCw~pn$@R zk&NPkjP#6xoV*~PJTE`r*w}ars1sK^X})%~b-$tLDL%!S>a50eQR|LTm5d}fyN^tXy8n_@O zm?W5YWdWAkbXAJ#9TLM%Q9+(XSF*6XiHJ%{)L%nWQ6jpcycpU3lA(#=V{+6@9-`W@ zC+GiW@Usc(U3Gd!G&^~8K-=eFnZoL@Bo!3 z+IeGF}<;n=W`jhh-w_t{KUWuM0x&v_#Bp23x6*Va?MoA^3{g za7c*WF8e{R}E$;mnv)H+8UF}=vB{<$#DqoH3$083&aKCkk^(Bo{Tx0AVpt&6!OPQ=F% zE4yAQV1gV(uEUsW`If0sEsQv3GULx1S*+dC!t(Z}F!wB<^~vb& zauoJ0G%uf!Jr`y+g0CE6$K+u5emOLZy0m{~lyO`Zf|vaS<8*wicj&$0o6%Hvo@(KH ze)?`uJTR^5lAm#5D#wCDYo0ThO0|HTE<>TzqHOp_-7Vq(sgs|pE5b6GkC&kQ&p}u= z@YipWp#_wGr56)3wW2j8GrxQn5I(AE4#Lnii;6`X^tlGpv{Z?jmkv4H(n9$ zKu@J?VL5RVCIeHG1=4259bF9mOhuR-M<@ML8!qo^Qt(yG6L2Yg;K}miPKl8(3Ai+L zvB%7esp!(qH(+Pb)ToajU;8CRZ!(<*SgTHzQBRf2(w^FzhX>5L#4}8`Ha75=h&^Ku zXhF0?KcYHvZQa0uQr2PVFu^?)orT0^%3+}Niy&fHq6}j%d=PRP)uYr&S$ZX1ap(1C z?Iw6EH>1ks$FO3ry(_;x21}39YW^hGQF!L@ad+XJL2=%(Q1IE*9bv$5&BeI39bc>TsQfh z)l`qow#dI0NOKjWEULdWo7hP~I>yf}t?(FKH4dcFmsl7l!DDx79((^>J~EPSy-3Q7 zp74tvQMH8a{M@ht+FsqpW=10LV%GHEAf=R1P?pjnlEA+zoPw898wyWvXEFtVbE>%n0EgVryz1a_}y8eMI=F@|h~Q zB$((c1;ycn)jdH8j)1-A2M#u)*Zcd`CpNiS=31Trf>G8rY(wNGdg9}HWH!z{wEWJ_*KG!d}8~7-X{#Yll`!IfV3tfJVQwu_C#G2r-1Dg*|Zi7c|N zdUM2zTWpR?gBe~-0#2S5gng5y+*j4F2%I6pVz$4%BCkCH&sjV*)m2$%T**GjusR#|Vt9YrrPh7^`L-cX-_yGM>!S25qA@GPH@s(Lm>QEj z(nhkBTvWc*&R4cx`uaR1L{@~U3+=jFGV4j09WEo5MGDdB+g#8Wx-}0b!!TFm-aqJ) z2;v%QFHB*Twog`}*#pBUAlXR;4mg9w_LsjO&onQQLSx{ut2KuXudf^SV8<$)SVj!h z6F+WPI(SRd&Tzh-jXd?APyN~_ak!FMZVxU^>?&@%0hH0j7!(v7=jQTkUwD6HW*h1t zMV!WTcp5<(d#Fjn(Tv?inUKgNtkmcX5ijK+U|1w7oCtD`e*?<|ZQ~A%x0(c=Ax=*f z;{T3kwgYa8Tha>z3dDVvKB-){nzpWY6F&RIUYmOud3bFJf|d4C&}0hGn=<*&`*&N%t-mB+Jl zgE53etUlxmvA~Xh*H3?M4o@*DDE*DP{FPry)C(>TEMf|xUktkg>mL_$C<44*ujJ`4 z(BZ+BVe-kuI><~B(zx|Z>{$7U zw!mGdACpj{XTS{M)rZ>eu$j_l9^F~sw`5bf-6<%u7@qN6F=^h#9wt=w^_?Gn+rr9C z7ONbkKoXS{Lc+(Wujgu)SvdaO8#w+aSYh^~;OwZ-3f%G5fyVH|UBsTylToFhaqfc&^;U?jzO~u91{ct@e3=PF2lynWapTv0J_RXD+C)tu=_ zaMLt+a@Fn+oiHj8Vzm5|D{zb?I?THJ>kD2J4S1G^ymdl!YB`r*AoQ+Ek#U8G2jeAm zm`}91sl|sisMwZ`PB3XtD`RiI=!plJ)t$Z&2f{2_l_-RbD6wYz)7V^*5GI&$F8yRG zhb5>wQBrY9ECxNggyQ-GCgu=$DD*^gvMo|k@wU=6&bsV>098S%zBXLf*EH7>BQG3y zdU<(pa#vBFU{xr`_VD~0DuHvmlv&zZhv0cSGi&7{MrWH6VDx&$&`!Kw&Ud07ae(lqN511l&{ z^aqrX8+7+0IjoK;OD6q42C9frNh*~}MM;H9LcR)DEic8_Rzqv6;VNycMYc8!2f+0u z1E_imJbeY5Dkznf6L@+;)xxj!1>vgZS^xKeD%Z@6-RZR3r-ELm*KG@U9N_@(-mK3{ z085}KO$I>q1ftTUK$Ru~ta<`hX;L)jAEc+%6!EE|JV=U9RTE0ESMeYu)UURHWb~kt zj8aM3el;1TPZA2B;!T1z{VW+fDsYvygQP!=eUh|(wf`nbzX?=n>hA95XDua#t0d8? zs*0_ z0i;GDO1K>3&MC8VN-~fvY-Y#Qn8St=v)wv6IX*NoHZGI!|FA62hx{;uptsZ5 ziqtyP-!U@OWgh9VP7JxHEi==TF2@9VYcUN@;?y_`F{$B6S@>^kq;GVfn=XDsJv8Yu z4Oqs9#!UVF-7USHO?}jPl9F^_410#g7|; zQbD1*z;yn=!0HA{1!+${#~na4feIw%RFsV%o}QmWX;JKHhjDrNS&W8165AMx88peG z8-}UEPc_RzWhJ#ofYxE?ITe%&guT>)q}(_Qq!vsV4-e~mJ1(cy<+S*k!(m^(oK2?V*+M#zibkS=bUsy>FBawtxw(7}Gt_)> zetmg)ccZXa3Wj|i@5~;AIozKLx(7WFTh%11C>11rXf@FBAfRgrm7jfj8&TU7BO|JX z2M6j}f}eztTrai9X;Eg$d9rDAH8L zMFWH?LY!ig%Vw80Hp-iu3pky`R!=W1v~_niv@|z!aq+I!t`6uM&`)Y!y?Vuk{GQb{ zG+>yH+ia$ZiJpP}){b^)3y?2+2Kq3XQ6B;*sIjH7w!T&}O5q9a!a^Oq zBxK;-`hDo*@E`FPXvcRm0(ODR1l!buysN=*b`>Zf1w2m=|o(#GK-_z9VnL@pzGesu*! z4(ccl$AM%@5+CaD_HO_BMqgS~K(hq1_Q+(AYF`Z#hZ{vA@U1yMIa0-jsoc<1_cfj%m~`MH~@m>N+akG zH2EqbfS<^tTv-Y)SseO^2hmbY{fYK*LqxG8{)Kk5DOA?+%e?efD`;zISwRG49q6zQ ze*p@2xW3`x0TC7jbZ}8%HBt>!Jsex<7`wy_8Yc;+CKU*m2-ZeIMy?A4cJcY&{`K*v zzk;jaDM0JK`|{=e-~aykU;p*(Pd~l>@yF{=pQz{GaZNyhQG}_oS)wNuyoNuyf*#I@ zXQ51w88Jf>um(3%O|sQK?C)S1n+on$(HZ#&^S)F&*dq3X&^i!-UqS8Q=kgR9^Bo6 zfuD*u8SV+53*S0@wTNC_Tz>d~ajG|P;}nwx=Mhvxp}vrK+#sAq9=c&T%r{WpLzJjr zs>%#npKpR-ANYxO4)1P3=rEovdWFMr=W%#An;o}Lb@cT#v^EWmkLvns&t5$H!yo_n zhd*FL>-=w?efz4Zp}nWGv90;#s~U-2#qXuxJR`lRec9a6`t0SiKY#P*Km8e%Ib{ru zjX}_Z0BEvJ4vdXzAcvlz{`MZm-mYz^=f_h9JZh+GY()E*M=%GysHth`=s;n8Q&U50 zOQTrgU|uj;CZ_#fA3bg2(Cpi~I@`KBtgdOyXvNjlrOnNKXvhLKDKK>L_AS5YKx`94 z2JgATL#S}~`Lo(dp_-QCKpX{9WCs=A{q?UP0jh{nJq4<&=2Wcw{ym;1UL=s71+N62 z7sN9(D|P6gr@UoYJu`gU~%VxDOpp|>ZKI55YO{Z;g!fcxybJ#6nIW^&QS{-(1o))WhV#;Q* zPfc>AKidTM5~!MGn5t03zp=kd;7QD>6tNH69Ll{5&tIOQRO3JNgM zTTq?;kP&Q%=1XF@q=g1%Brbt8tr8qcf1Zg=7WOi5JKiOnR4br9WX_6Tp~7cpVsCYF zaj}1Nw7b8*cW`iYc6NAjf}e+{r>MrGq$lWuhD%3=XTQDG{#>gwpjuZ!xV^dDJlvUI zo?BR3qzfLS+2-=aY`&C3p~S9@mF5faSWp5#dE+sEEb1-I=VFO)0FN>n$j{{?QGY1t ziN=B`3bt22C%Pvvc$LTrL3>i5__&Z#JLIWMb5qV!=W& zEe2CzP(G7LqRp@;8k!}AJ(*M_lM1C0!Fa?Q_BlbRgfE|qt42H#yB4z9yc?3)U?ZLx0&oy zX4+n9@O4>zZ_G4knLwQZY$q+^JUHB|YxWIvw+zu=5B={NAMKl(G}*0V)^TD|*iM=U z?N*b^VR2YZ6XwAQ)8P2%fN7|AxW8+-uX6+)6A#4E;hw&(mj3S6!9FfEXdb~0=@DPT z{;^TUsES16!9+S1O+K#6#Tqd^QU%pFk#)P3H2c zOeRjF*>pUaj3iQ#LOEOFCk{UvBv6GjCWG;KAeoM43Q26^i4Zc8SRhkKB~nrJKN<_A zvPn>Jp}4TVR9r+8xuxy3++040zLj!2XQ#yYaG%wBNOVi+hY-P`uVSmp8}$LvB2>6v zmT$1EBjI51Q@`Y63(XcP@tj0XQJ_j2(a-oI^wW@vjVqWa8X5|5YO1E9a%c%O2i01u zJ%PGK*hnI4P$i?e1W$qUQcaZruIQ4e9MUXA(x)g@g(y&}6~G-=@*>^dq9!`PGm18g z?m;c*Rmg=93&V-TY7D351@7*uh#$#jh9}1Bn;W0k)V!#zscUM4!hpO0RkckmEs!I7 z2L^`6%p+rC{lmj;U0wB!jW26uS63(UFKS-Wp^tV_^cJjdYEbJcB2W@o7ozH`hI+=N z5YXzy%a`O_wNOaf>KYpeW7XDT7b+lAL&w0zrj}-?I_+IuG{{2V2){!Pu4!s*?i(7k zyWOcmVR35lSNqJfoWzS<}W62u@-72iOV z8?6y?BI*P}gR8r{n}>%O_`A^3@k|d7w{-El6NYL+eiiQ$o+%!#pi!WCy6K@E!cq%c zTa~cuhVP!jK#E=|P^B3?kguXpN&Nmm^ards{jD7w5TylAI67L{lamUdhCXaTUc9_K z1qYMwpo*Q`C-$_CVIo#h{CP;A z7KMsTp-}1n$K8K+Hh9`! z_pNzvX07{i{_NY^%z_*>W5|ew4c(H#gfbv!lh7Ffj2(yf}DqxqrzO zIrXivccpy{ zjH{>dEfbUhFPa8TzmRuUm;f@BP)tK;85bplJD~6c+C&u@x$(BLWUrXf(epDchVh`* z_N_ovWH0DK@gop=7eZPSsG{y*dO5tJ>ubyeD6wE5(6pf;Q$5C~?b~l(|M=sV|MuVh z?Z5x`zx*Hn$LpVdeE$CZi3BD;eoe?meB$r{x<-SB}dK;4G%M&M|$zaMqX}Iu#i!jdnU1`SthTp+`hXbQS zcOTqSk~IMT^v%6HU*GxWtFOPhbMG#(h_AnT`1mm@GIY`K@btpG4PtgMU|U(4n46tm zoS$Bt8y+8(pocV}0^6q;dyflLk4!Mi)x_)!K0qLeR5dy|H|K!L<@1J8$#}64%jf;^ zIC4CpU?3jL*K3$;_$GqUz54$9cefn(UVr(bkPy+RPal!E!6SfT{N;{akXTBS$+)A^c#N`C`X-JlDJ zJjMJE?-|)jIug{3BT=H^Rj=@sm{uL%T;n5BY&HY2sKx1=U0fKSp2TFp6H#NRB?lp@ zl~B;Jy5b23A#^TSEdwLN5EzI(;R9_k;gr+6I=5t=heqSH&o7yW#~2&{-*kN6@mNPE z#-9ugL6(>`EzT^==gK(<-j!B${n^&q-ez}ay|c64+Uhpe+l{qWYqJX~)=KGoy40++ zw${qcN-CSgVS8u2x!J9Co0WDwUn?atiC8KcO@u;WA5p4wG#vGN10Lk(%K2b87|$e= z`E)#+^oD&Vi^=J>yW9?&)x2b0a4p+Cp5<^X7!3P-{*`bn5RCZg7?_Twa;a1T#}mmOU#@7b6*1JUn!I+>A(tmYq%uBdM<}(;3j^ zpnaBah0xW?axm!Kdb)Rdbw%$#v8bY5)vH(fH~G0lmAaI;Q8-k4D`Hg=932VlK`8UG zZ$G6`%s+l4R`u>35}GD#)HABO`S8I2!laDiTzzDUFd2H6LlA1|7zjV1n6yBw3U412 zoRgE|vok_e=jW#v7bnl3KY#J!^z!oj`r2r%*VGmEVqk>^`#=>413SBZ@$~d?dw-`| zFE?5hs0pP~u8>bx8|Ai`NAbVyd^(eg*6PJd6=^6S`Eog(PDi0%lxxLAGLkE1GTB5b z9b<@XMpcg|;z1}xx)?gr*=!u`pv`K%*jcN$JJkwQk8Gk)NI_T1$-;cOOcMJ_DcfjN zYSluyn5{$W;UD<~o^qLJiJpL|Vy`f+P>0&VyjjnpV zo?Ac_wm$@_`rB`?D%}hOsJ98K^V`ihck8TzKDV)++neSq9)yxwMO!d>{oST#v1wu5 zjI3TQBs5<@r$5H3G!vVa(el{z5SwvYHk3C;{A=&OKLo0#r>F1VzyIjbqd~fcLz)MSo1I*kpEjH4%;s4JGPlfw>~<5#=^)vy^H%e;WpUDJom*KpyPPJ6 zb?wJ%MB9F`f!(#*1LcG)(kajEDJXqmN{rmTyT_N5uCX=-U<0z|+_$i#S3kY&bZ zCP!wcMnMa66V|0U*Rt8`wflVdMmgLJaK5-qBP>QPUv?}7LYN1PbZ!v+1kE<+g2yFEr zDx)rSHpYcf914;p#2uCXA*tX{6(NYN1h6Oxu`Xm3h$Fj)2Y#;$Oe!4U!Utes$wVXr zUdh-#i6Vr6O1@q%H(Ov_jFMi=Cm9O8lxa3f?RKSB$(0JpYBg7*10cT3QN{w4D1hPv z7;kmKt4fV#1uc|InPMTG&nD}Qa(AO$la*Y{l|rRbC>Artd50wTe$mwpdJ8s=0czRBx6W?J5naN|{V1R;*-`iLh8yW%y}HMDoQfr~!#( zZ>zD^&KGmFP6IMWA{}pRbZ}RpZ{t?rhUneKEusW3+5*)W$n=5`;gC9>1i^v23ylJz zyrNXhhngWM71Sp+aRNbWG61IM(-t?h_D3Zwu$sx;jT$g09C<_T({Qw7V=CN2kKR^5+j zC@=!Ip(BOKpdz++cQe(hePxB#PxQ!mboapn{Zo`)7>^zze`I`Y-fXrlFM}Yqnyl8D zg$0P1qZ1RO^vQKcMG` zIuha#2}aE0BItKf29oa37?%Vh!ZkcJXIhvwEsRf1j!#a`nHLw#rqy5|Td9|m9ksT$8XFr5NEu7-?d~#q)WHGviV7jeAYGWx@Dn6xMIcEE;84-4mSIapM?Vd7 zt|$^QAV^~bsxBE~{Ok<-11Oo7mq&PEFE2Hm)0O~F3O052dLiC-c3LEcSEqrGgihZ+ zrm>P@TOfiy2F@jRReSW*Q!6K;X{by0x4rd!qEzUPvt6b%>mJerk#uxKuv?bZ18bt6 z@|!ngM6!w>`Oj-cMZtuDCX5M5C=(ZWiv*%l`>z9ysHIpHF*PlG@C=8FM(wEg-?8}m zQBM|oE6jgPX0iPgZe{>gn#s9+ef{j>T<_S%)2HiudwL=08uJ!2mTyWAsA}(ukr(kM zo|Rq&kJOSOaqT}E7kvBq`MbB^34EQ;pC8>^{UE$XZEYUG81f$%Qt+l|(UCa_;~~S5iZ~=EQA4U8Pz9y|P5Z;oKNIGbh&fP_ zU;p&e>z{sn1-1NdfBW?JzrXw2-_Ae0C)T5Xki2?%`bPZPdY*>IuZ7fViN1A2WDc&b zk)uXKXV7ra?2kXb6n!3jp*n`4KotsO*lPzg$G@7~wne4}540b%1KljCz{6BKld%jH=0SX|Co zvuSX2^y_c#+`G>|EzsSad-om>4nBPH1fPJR(UHly83>Hyv(uxK6H{|@5M!NQugPI| z`n(Vbf~k}z6ogz-6QftK4$LvbU+?Fi`}F>=e|_`gk7^_(0Mi#7g78dVe)rvLao@Z7 z_S>sZv~_y<9c`@W?)SH!u}5n-L>Vmx!l4>fDORQVXa}v)2I>Q55#J_0YXP1vKYqlt zIlkea0Z3>*3LDf*Yhfm&9SVnnfg(*3ODi052EKU%mSueFMKD0igsy~;0|D~++c)R$ z#J~!Ys(1o|6uMGVGLAvIR(z^Y>Me-9mcMxa4%{0b!9t_qaJ%g;7i4y;i!0&HTb4|A zn-$toz#q+Kpe55qs!|H2l6b`U+~e^<9a(~Qv+8kpRu(Ll`6X1bnjE%S^WwC)@Gm*+ zE5X1@z;9W0I-ptw{BEDOP%Y-m`Ftr?hB&&_UEAAiZ?9F_^)#r6ZjcjcYQl>b=lE)i51`^uN<0({i+~YGuqwr;6hZ=BzkREilpdmeQb9G@g>ZqEsl5iiZrWN=^}|qU#@lD$s49 zN{}gZp1mlmxyvx7FOR*%Q-T3)hQ=B$=kn^j_&JIqd} zd3kw>#!B`@i+RRknsV9~R@@AQ?zAn6J<%-4X`8c|r=8Z>Wvc*H);YVG0G41_(@q=l zEc5)hX>QCkKfx9H<`|V+BcKahH99*vGBY_mJ2h%rm~_||+^!|`;$|;gi4S`l4ZG$& z{C3&Jcxn;k#0VW2n~8Q+i!&ApIAyoYfl$TmG`pRPF55hMw=PcF%rh?g;xd{t&n_)Y ziU;2qMrEFxFwaj~adnGRCW*g}u`SHfatevLDLVbl&x|h4j3UQEaB9LT_F3kI3C62h zocdF#k^|=ggDcmHl}5P$_SdYQyturLQen>+Rf1CWjjB`wBwQs4$O?*>U{7lW(a`oG zQ$ByLD3yX)r(%Rfh)Ns=k*_$HXl^X5iWViyp5;FXLam-(s|cN(xp)K^WiHD<2N-iIo2WM`t#++eFM==UGBmTQNJPL!qg1QrYqdgWP3&OP zQBWb5DCEJoqp5fh{9VzgYPHbn)~mGwkMw$CsshH2SyN%7= z^)7t|OZc1+;o_%-Uzb+9ie@vJXtBi4PZvVT&KgeP^OJ}N3dK|+8Yorr`9dm@2nlqU zf%sBsRO+2(wN=j*v)Mux;)wjWR)s2#yP-sVSS-#cuPaKWW=(f_DuKmMrahO zh$4-CnHKPfD%s_wo<+0JTkw?e=<(d~d{updrUz1;ihs01;gR*NsVmAf;M|Zo!(qrC z4Wc#dF>(V7Lyn+SP?d3|qQEo8b|jmfoSlWvaR1>$32{1b{}Dr_J{cYwnHV1#A0M5V zm^Yj7;?iavf|%E9ce|iJ%q+|gjgH>E4;|yl#OyQ;vhLrz!(h5kCg-MS7UyOKV47W= zw=6rR=4J**hQ%51A!OMnP)o!saBPxL7cw6Y4GazsL2nrt9-IPGnVm*?Xgg1ahS1TX zb!lPAJa01FT+8m&)p#aT?sTeaYpty?QCyji->_#zQl0c29FwyL@l05-;A-tZ7Qc-`F!P5>DbMo*|p4~3;(Tl!Z*kf#X>5zlo zagEq(4la|uNF&mnVozeY+A|=+>wwl+{*Vs>wHQ20LThnISH{|2c#rV<=nISLc&8Mo z5>7%J8N4sIY*kKn&p0*^PD#`!zWCZK(riZ{0}LK%Z5Fo?Eyzpvtb?n-ZRB8#c91~% zEv{YI1198h(5$}8MtA6?XS<|1pzSl7VPat1lb_IR6Qr;O5@>;dh};k`2TTAcsGt7! zH>mMYq^~91GL-xe|N5_Q{_>Zb@4vtN^yxX>j$SFCqYw{T5EnmUUN{8LQQIPgu22kv zJh=$4f&}eL6fkDWSCy<)u7U#= zTT~JbC4E9KzgKF~@?5O0^sfS3*W17R<@^8k|9bzopK)ogfBFeI3e|xjof2@2ExZo;0)m`k_L6s_UE?VOyqNpNim&) z%$H2eE7BQ_bI~2H_gKuqFpKay;1w>mTAol4Y#Ho&f*yYiZvF7_ldrz|`p*4(cNutS zaCCYS0@UEx@Hcn9q4(dv{L5Fee9xV`cSk11Cg*4IvAFl(0S*P6dVuc*|LPFCSMc-U z3EJRbKP>-P%$Q7`NZ1_=SlzCf#l@j9nrq>dSkyk&WdYIe-FtV3$4AY}_MwTfDF*Pi zLqeQhTo{?0G&vmJXf&FIc9`ovdq&ad#S19*YC@$^rTReCyTAP9wb(|z{_>@dVIhG- zO#2&&8>L{=%kQ~tpW08Mg-@Wr{rvG~!c{2D0^&=E0&f`5iqWY+Xyk?X3}T*~y~P_r z)^RQ$XoZ<@ijP>hu3}iffK#`KnLRTrltD?%Ixt2g6kP&oNgNWc5=&UlVfl{}d<=VV zS00KO3HGi`o@?xgjTMb*dqiWa9$cj+R98Jn3nV3Jdxh4(>Z{%EGISoOcHyu;7K2#n z_WOO&Xi#kRlf`0+vRysjXrxLdZ#XnV+p8(;7j4!B%M#>@srflPdOT&!u~{<|mxV>E zWqEa#4oiu|O2Ds61H1jcSRzua7PCbttBGp6T5Z*8-Da^~F4oHJ?Tth#UTKNzU!&aI zXh&n=a-&kJ6D=sWs?}~ISI&i_p>Qlzte0HNHkZ>Hj{51E7hFx|li_$Mo=#-T`BWiO zZP!z|R3Z~k=92Mjys_1ZW|Q8Kf7S0ZSG~e7l(c*!fvG9 zE`vB)iN&r!)d?OYzSl2aC@gh$eT^A@@#+=V92a_ieXS7HSI;-UPz>>^Ox6qCkNa6I~#jj z)mpJs&Xp^LLLs9bdCg9}-mK6Vs+O9r3^O5?3uR7UU0jQJ0_`6?4gIIaet$ zEH9Lud?udH#`))cHV(ZhpJsrnVlI(ON78X$Ar~oRqY7O?V-kpp=2YoqI28{G8Wm0& z_>}CG6sS_~zgQ?npvqVdO93fGrU+CCR@JB5Kowp8B7tzw8;}_4w+S<_(gUj2Z*6^` z>K~a?)oQh>Y!%rwtw7c0MuHB2o2i}c)GmQ4BTN;6sw&>B9z><|Ym^Ff8=oQxZiRd; zb{nP2GTQMkSXI9r)KZ|Tk5&1DLB(+V9*56u^?U50pf{RK2E*Zh1XTT_P0J`egiV?? zHUk9uBZ#WM86|E(MZbZ2`WrH}!0n1gPqG;!=xs*s{~%EHPkP6uWpn`jO*64+85CA< z4O<_m`a^Rnt7VaHarXIT`@+hy+3hqttn-$Isk!M1)8eenW^%b~63*P=bl?*~l*+m^ z=dhcc&ZXt$B`3-|Ovqs-;UNWG*2VfspsNMD&4^KD5sNCZmYP_c9W~94*)6kf=i=(JX~ntdb}V?7%|3~i<+7V> z=2?&l!VqjOUub5p}J6N8FR%}!xR1Jh$qW+sMaCWhzfNI15{09BKg z#VM9MIR$> zB{_#;rPUWlo}M1Z1M0j7U|sP%nM@o{1YfLdJ_G5bR4Wp(suUov)I#ZPjm9E#%F+1-V1qo;^iLFpCUk0{mdE)*UpQ7DXj>OAttK2#}`M0ssl)dN+! z&9=%uYX$m78W3=H|_&vB?PyS%rj{{SV?0D$0}LK@@vDFfhd6xT8Z* zUZy6;r>3UnX1O4s(=j#S6@Youk98 z!vn%n0x+%ZF<#Y{xWcKG6Nt#s-d<;ShXL0mMwN!C>MaGh2C8ptG`BX};w{(}082qG zw6=3}w2vE$XD2X_5<1167EG6y`pT<4(JmeE_McVSk8p$RG{KpWn^lVfP+n83tt^hOybT_haxO~E_(T-Fv86&)|j z;ft%|o9ok8#!^}6W#{zF2*fTR5$fXR;Dse#hBsFT^MCI-9U*lYc=A>GKL9TgU*uE5 zKzLKw0)s{|;5Vw^rs>tO5j<D#xbZ;9`4j$uj*uR|lxF2zNTK-FP;Zx8bs!^VZI?LVt_JNn-MilK3K z*Bk%75Q9>o`i0>+*v0FECyUEJRuUUk+-hNZsLtS700|Gi>lVpI0!>f3MM{q?W!|Ms`nKmBy`{r4|__yMGM@70e#{`kND@BjMW z|NE!E{~aYc;2!*>y(`<-E5#f`FSx@y;yQ}6Mll_mJZ?>cb{RlTXNBRr2f~!Y+{62; z^y~tM1i4TERnQm8<2K4PqiZ3)6zB4MQ2=i)i0fv|&x2PF3=hsOErQQKqC?i>hXVuO z+_^I_Hmsg^gJUC)hMtT~PogBFRDJbloV|Dd{>UW16sQZfk2L?@kUusCM~A-p>Z?aX z1JmY(MZ0x;X7cO1cZSDD!RiTPO-@eWJF?>TM(_oRIJ_QLz-RZkrx)fPK6!lS-o4@R zaeg2Mo(ztTJ{lZ&JT%1rSe=fsnW>@i(FLm|md_Vjt;*UOcm;043-R^q155@94*UME ze|`JYPk4f~SHgq)%U_TK(o=7K{PCrD_I*GON{XeG;7~N1`k-*t-~QHb6Yb*^s@#05 zQOQ4CeWtAwxDBQX@ou4WL6`6f5NzsYD&K?n2MMhYPW9m@BE{lnh=k%t$VBy%mp5#x zM}4eH>mmnj5*HKM&*)C%0qsloAaHw}(x%SeQB3WNiy&q~aFzdAQ62lMj~_9ZSKoby z1iq)KeBKuhav z?Q*PmoRLH@o{Fq`oS|qao=xU!C02}wR#%ookw6x5Z?jZxSJn=8>YJT-F6HrgR=jSn z-?M0%o0*xMo1I>mpAmB>r!3^R;#*z8FvN@ts&yijPiheKK!9)nm)nl|)44<>8t}O7 zt1FIB$cwW*H$a=)Xe*5S`Bbx6tyT-U3|&&7*Pvuc z0;iN^t#c|wrA)byOh!D(m@gFzHa=jbdSWj$iBzMH3N|*m5R<+9*Rkhy%Rf;Ytz@+pmlLDmIzQus+X1Cjd2n^Ep}Zh(CZsJ|JA zPH!`Edz)q|-1CQ9zlyeObkp0kcil8ci|M8nbu+Shn`ZWVS7hopTYmu9w0wWlOl(>P zh5IO#0#&zBD$}jaVPEpNEvs&eXW8Uiwfnt}RkwB7zGzvPUYwhpof-ozEzK@3GfI@( zWg!w|U07bWF1xHwC)be2-sxDf+ZHWLTyal8r4jSuw1jY4Tya_G7-*VOyDFD`-tAnZ zquk=;()>8cYM!*1CdCA4(kjk(R`Z<2JPWc~=4?XZT{ydlmM4a$#|LMp(EgOmxwN_p zR&1tSmEE-LSaL06ct|fSJBYs7EVI@nAsGoB_ZFut3zHzLY0BkT^sm~2Uc2983wRyj zfZM<76feIy>@ADarnzzR{KV4Y6tO4l7pE|QTUgbw(9rz!$o$Oc%=qB+*ud<>@Z1y~ z2@NYPhlv(d453#q(Wt6XE>sKn8dd6LFy9*p6Oa<{T^E#!Oa6f!%NHGq7vS{}0_5AT z2ow}TNC_ad^nn%x#T97-s1g$@4Q~v|fU2YX2?jzLXi!w5R0UEkNZ=2MwmcLJi)qNI z=jSL78HiGd1VMn@Sx{CxYO%olaE(sHagfn~s9BgO!WJV1g?K=8}y@xhZad^+vf=%C7IM z*J>p+SgRI0T`ntItrd&;Oto6v*zTfyxsofDv$<>n96Xf>zMK1uWbzx~~dJe2>W`4;$zqGVy zwOX7`hQnA`7#bUe)`VIRVa5Dv7#%%){221?*yO~j-=8WJ%I$V@b93$K(@g=PAW|RV zRzN7nt0bV6`rS$fRq=f^B36fE_i@Jo{4i3;DCNTZ%Fg6T8Zi~KL7$MRq zi7v=mg+wvC+CITm^rAb-6-mwsdPJE%RD>4rGNKV&9WRh2kDp#%JQqU-yiEU>9q<7qjLBH|U=rF{1#VA?Fcj0}M)ms=l8xS;`q$igf6s3A3vPFdvhW_eV7a+d_G>jG(eUs^v-^9h>mvE%S?#u1zeGP zweu37>izrEw{MZa{>8W7(zb}h=0c_ND0LM=V^rAVV!?&Li}1$bZh$bKE3MY{37Dj~ zEk8dKIuXCZbKVnS>AU9_+h<}HdL%0$DprNd$4x+kxTQx-6SPv?N(uKL)9LJN>-5Bc zw0is;w+QzKL&c*%mYeYW-P@O6zFdF)4D}u_3ohYILUiF2VXT)dql80+v0nZ7SibZX+!;Nzk3k%vzneZxh3zM&d-*wh3>$gycI*#?%5c7`X$aEMR9-TQYX zJq3o(1%7mipF7{&y?^iF-~h@@%+4&@tjj*%N+{?K1|R@Jh8>w4<2pch?_iHl&%K8a zFc|Z)6QdfRot~H@ycJ5N8e3a<4at1=_pd*FQi$iJv3MVYqks54P$f~)egjl}`0HO$ z<<*xjD5KaG=#!8}PyZl6sT8-uo&lzJ<(#GMYn@ zlHl+HPVs+JC1t!AKws1Z;qXuZeK291g$xNf7KCA_8z3$LWh&h+-cYm6^7zT);jvNY zswbRIMKhU5I*on0T&``bgCO%cy*YYeTkA9vsdzer z!F;utNXNsGK(>?#_&u>i1j9(CqT!G)U&=-qcHPCGRDxA8UX|NHplaFXb~}B3kJslx z!s)Q0O|O5|>swK~DirH(ZR+YwhZh$VV=gWXyDB`d%gf`73nO$oo>wn?73lot<_bE< zD;iZXG?j#-(&$ugK7W4o;e#405vY;?RT{pEV3WkC>Njeo*RL;MzEnI5 zhd6a{b8{`&77md>{`vLw%MV=9k0968)#>FW+5usBr;y1Z5OqtGm$zHCmNaGSXUab~n4VMx|USbk^HQRBA<8 zk*U~d*U~A>$5gWhx|noNdc5kJ(TLMf9<#o|P%=tdU} zc{8bK8p;S1jang-jEI($$cs-OO{nOGVmPDVuu{rVODg9;&}a(Tgv3+NKwXLjmlI*M z7J-TcJu4LtsmC9Iszf9i3(_$qpDKhn&?e}BoZ<>is%b;){sQSG* zm4Q*oX0t519JHu%I~G98_64VH9z+0rL4v+NIMa-2ZgOsNWNLI^dSZBSe!{vmW4Fya z>@=HlI?PMvxyAV@yWQ+rMW0JtQ*UmPtL!b#V2=U}9^hP}eUlnAElyfZlXlCDeQCyK zp0=5$ZG@#r7SptOVbZ)f<*+SUm*(h8Xr8s0X3YyzsB5R!9_^&8rWwn^)YAMULqyF@ zI_!&Xm&LPUTX9*I9VS`t&mtaw^!~Hk7RB(2K7d5BoEG=8b=70{uX6FhP|y|hIf7nC z(C-WdmIFR#!0YsR>>iheW@Q?b$~5P&EUd2B9o9vfchMVhY;l&>RkM>L0!xjU=O>Uk zH#IyzHL@^0IzPoQ?I>WH8@F3#|CG(dayf?dE>#PS^;WIZ$X5!bYUu^ICq#<(?`ck@ zuoRd$KIae`kO|4)tzk|DC0T(g#j2pG;`6T-Qv0%OJY@wzsSH`6=kBKjU2Y$erT*a$ z@e~3?PgL^cyA7tX}n zYmHJVD}N&-kOspo6^K%m@?g91VlD+v4OUw&(aefQu&A4oe+JUgX189h<`roY%h*i0 zn61?qG`(2J)EkvTAuSMCs#4B(H`|@{X0=)bf3H^Zjb^#ksh7*SOe!YWSpg`%*tF!)eW9MkA(XP-RvtDYhx0@TCYP$}Rg;Gni3MnC1E|gofQnOlY zR-g>`Q7Tm$arYppQ;CvD9I6aJErE;+jR>cp4^U$iP|4691v65u1_><>9RsQn5-5PC zL~UT3*sF%1eKCD?MMb*T6x!E*Q9#E)WlWGVjG?o)r)N=ER92d7phu>AN;veQ3z0r4 z*Xp0Bf>Iek6$D?=DxoQ%cMJ@@pf6P;F#xDQXcPKdb9=kJx7U5fMfz!*(=(QVirCoP zbb43ErlzJB=I!9`e&1?1>EnneFyPi)D6U zVRCkMW?_ELWU{;6tD#UJ77NB=foL?8NJQ}w%4QRVJf;g|Vu&F~V4ttm%I%gK77@x3 zgQGPDlcGt{)6>%<=xlgWxbt|3cpQg^o8qsxj|Ycaggf)>S!ah!0cuz)P;+ymp(KV> zgs8+Tkp6&zg`pkP-Nlm?Ldyz)f!LAYR_y3dmjx8-EeUOoQK1EluuTIlHHl*T0#q4R zTBK(TgN1Qwbv8vKAlAh&)Uazq5KPPvwkA1f9K}$WBtVtc)#}(|E^TA#o^e4s@FHk6 zP;W4Qz&gN=4zI7E|BKm?fkP3*5yFL_BC8YnAwmRVF+tOik2aMERN+1o9TvL}efyxC zi;)rDO>}e&#t01`JqmEY_VgKE0dxme2Htgab=BJ3#6=M`J3a<8Bm&E5YnamN!9=*{ z>G|_#7ZL#qihb`8?IVGTC?>P|nL(LmdVOKrHDHP2muO>^$S5pG3{1 zB#P<9^1i)z0S<8U{dbCn9KEDv(-Bk`L8-)Ahf&OFG$b$(2YgE3H+ugG)I~U>XJUia zp1*zb?ce|Y{^y@x|M=tex8Kqp^9>k?mjVnT6iVdL`5E!6#L=J-oBxXVA zPS_)RK@0SNlaTY^MHuj*Mg+(AOKh@!LA7v;WKzKU^TzyeXx$r>YP zMa*Yj0&?839+xzk*x?4Li)^!C3UXw|aI0lJgfEqF$p1Dze#Fc{0k95m49u&;mp3ne{1J`d9WOK*HkS(=n=4v8 zdGdI0@bMt_1Cw*JgCjJ1`R4B3hmRjmo93q$=bj7?-nn=8zVLbe8}Z=&y@wAT4nE;( z8-oJ_!$XWhI5}=|+9u~`_1}ei4<2fG?2(D_M*~mp-oO9#H(%pJa9>)!_wXSq4v&wI z(_Uq6YJPrdZf@3Wnuo+{S{$96L=^_cnwgnhTwJtSrxxbX{@jvzB^U^&Qk)(a7vNx! zb8bF;dM81t-u39sk3VXRb0j|WT>oBu`TqLb&&W}5>K78Y>b2laD5m(7(zpNiZy=`s z_P0+z|NOBRNnOFIn_C7@YTu-XIEAhmyGlZ>6F6gZHWt&u_=2Ckd5yi+QlQF63v>ly zVGR_;e6gVx>FzeXrG)gwyZ2z@Alwj^?BQ8R^z5gE-ZHKKPvEUrCQP1;Im5pY7}*N7 z6e)vPd;Rev5kMI>^1*EL)vCwuAD^6j@aWOh+$^3&D3wf?%f)81*lJZb*7J=zGRLN; z9z1@8N%BPe_wn2{s``V+4>6I(rYA=y$L~GlA6m#97#Ttu^9OBWDuR$7PefL6kQBGzOv1Bw9_J<<= zR6Z35uGYHsN~e}7WviWfu9A;SBz5HEYo%m18A(L4)fJ8fBZ;tU#c5icv)jzXSLyfX3kJOyTfo1HL^Kvkq@yV=QC+0# zU(g#0NrZKVQD?;TK+r3(s2py$(;x5#!~PYI%jvMXTn-IZ1%i0h-dI1vXBx6S1X?5{ zUKL0UsZPYMiddBdt0KB2c2C&TDoTJS?E7wX28mG>a&FWT>eZ_o4Me3CU%yt6OX(aM z%H<`2Br&RDvjR?CCv6$rorRME5ww7-9N zcBZyhM69Gi`T%MpVpnzg;$mxmx4X68-Rf2QO7C5}{%#nMsF3erS*GbebX6Lw-*O_}lCQz!;?NzTSF8RMaqM8rqz zNkUL1qQN9hqQWVX8b+yAR3C2=>H}4RJ*fvD(rRW!7>iW`XgL`Th&2|fh?Ah&B8X9y zc+Ui*;XpX(Gk_}b_*0*DgV1!T7_E}7@7OY;u%D7z&t?96v9X7MeWn-Gi*Q`3?Ijr+8r^(~8th%gzuM-sVFGoTvvB+xB=k%>u zeJeKaihYHaSth$>!Lm55F{;>t35{?_*dx8PID?B41Z@Fn)7+$Kc6@PWY++_}erkAj zVhDTF-1wjJxkRCmELVw)=*qa2CY|KL#IHYm!2X32xbxe$8np`2lG;)+Ox0_y00>g7 z3aS@vd?08-=Tm!1+*$=XzNtU)+E4rUTj%Q z#kAqDT}&%Srn_}IR<1Hox&c&W;^iVex52nIC{+_e6dl1%#kW&ps7;)x@LGULr+$_C(*2+U_-Ju)Hy||=oUon z5gLV|vWjZ)ivlKu>QI@q5$vh;^-wCP5FqAL6{kjl@>J}pXBu&ip^9M7>Y})^cLBwq zmx7SS092uc@{F!gOh<+BAIZvGw^1sUMD-tjN}O*PSCty37{#deqE~^Iq4`k%p``|w zJY&c$`S*TJ0y(dX)l8+^^#p?xv$IeeCdIHHWU|>@VAJ97ibOe`H7zcHRX{*9EkeEF zVm7O*PLIcIvyM%UL&_W)85x_Hn4X(6*{n8~)8cf1qbyp9K%tDuVzD}%D}G-9-_m#t zGDW^t&6La0bUK_&2BJ|&b2OR{1|bLgBM}gUK2j*eV5IoK;$s`|qf=irvKk7aoocrW z&9*5^zpX!e*52WAe#CvYk)V;(+TQNo$q8OMym~vh>SxcoySwXQ-quZ`axn7w^Td|Y4szuKzkBv=@}-Kf?~Maf-$W> zGkp3KN~1X&fvU~M<_6KjogKRDiANzWL`|QxBhpddqfp=#aa&WXC8UiiQeL}L(kdJ_ zW&-qfDPXjWe2Kh%`kE0;pp9dWfs^b#$K>P;G$1O)aWH`10)L7_Deau{F3CJU0U<#$ z?3f6(pvo^KUUhgo$mqmoM^qys0$WGN=nD;!o4t5}F-yeyeYE!U`~veFa~|b;%DF7+ zr)j)Ra%mv#S4V=$PlFUm_dy~I0BJ=87-LKDS)5WlsK3{Q7UpXxFZ=fC$>t$i;M*j4 z2RVab=mh30@IjwlV_-PNG4x*HUbAdjGZmS_7`lYgI2gQ`T(kktk$0OY6{|>OBD~Q@ zH!rDqe*B30pl|vdHrM2p1s2l)rko$%q4Fyv&F=uU7evPyip1o^@M zbdWkuEyFu}a)KLzJCLhXFg?J~I=j2oP6v1L0QxiLr$oQPCChktz2u*?jiSjI3AY-A zmhq-PHvp^+JaGZ7klqr0$g_lvNIC{O(<$ji8751HT@r}#w&*0Qfve;K-@e0;aO-Gz zC65EQi+4jtrPqaoB298j`Iwl`_Ak~n8rSY_b9bkOS6;v=Tt1#Y`Ln!tgt6rB5E+0G z^j+@2FE&&9KslYn9#9W47~DOK>g5kVy!ib2{KE$vVt58m5O-Hh0KVe~2aU~5i6suwSJb3(YU}R``Z1gb^t9y6u-FrANFgiIgJdS3E zQGQ@#_~GNnV^dR8^Yb&N#YLNK0Wz@5x#V=>W5oY378gtoTObk7HR^>%V{?BWFU6Z5 zet3V&3`$91DMq9cz(|2Av8ej)=DY9ImdYTFW+e`N?|%9TRo?vgBhrdhefw|!_Wi&A zJL&I#2YvVN|Bf7-`XChs*5QdUE(b|_YA*Y$K>!2>#jLf!v>_{XK4*OG?cqr`mdRKxWKf$SDwg5S^UM@8%)piY{V6jTdm2$~Ug2Ao}nM^(n zN@n8mM5NrRgl*Y?6*6uph!FfsRTMO7wlVgF%3Dz?+HQPj)x1Cd^8pehrA%a zcLkRdjfaC_zh~9W@Sb8z`-A{QUUEi!;b7csde) z?Nnk^DFAeKb)`mC>hz~T)ioZy098si;zsvUmi+4@Rxc$-@un9Nm+A_0MgTAV2e0-` zXcjt!^nydQOt?zgN8KCg1!MqK;uxqFQWys6(x?g}7i3NCzd%n94)&fsdwO`de|-Gx z=m`7c^K%qCIX`DbB^eS1c6#+PPv>f6f)&XzEYFr!t<$ODT`XoPOV(cH(I59J|6bF0;|qw*c%FX0$vv=6o4SP z8V-6QRFS;Uk4ju>JXt70K20TPzU0s6lZAXTmyQ;5Nvcb-W>h|#DiyMzatWWT0`_@{ zqryMk6X8rEl&3pvOq~0A22jMLesSE3NBr?f;C84f!c_uPsgYC?Q&A8ohZ5Qd~O@|0lz04kNcrw{0^wnO#vz042-I`A;%~rb#H@2L~(B6IDfe5+5dFY zri^y~GoVV#XqEqT)AlivKF0K$4f(f+YE~unwRY+kjsJn0u7hcREkzqvuMh^ zFlB_PT9`tPR$q3Q-89ZJyO400SDZ`OJFTqFCH5AkmrS(4vfCD1%S((sV>f|39;bKJ z>0Vy4FU?pMC+(J5hn1nY+)k5cdCBLo1$@hqAW^D#)Efz{g#F8bRmZB!>V{@)GhtM^ z#-CXtyPG&9@c~>Qsi_yk#?z^gVY##<27`PQCbTy-@~28AEAjbC)mE)s$G%$cHtTDx z%eQYBPaS+&fGRL_MX4Bm5+8Cwh!mxI4i^9F6%r@-#)$nC)GBDpze1@5$x<*25`((K zKvsYP30+q~D2SD!p4~E`LXH3;I132_!nJyfNu$SZn>OA{>IM6 z#?E?Yy$Oz7Z&f$;HrIF8o1J>I+h}wf)ymOS95)Jg19Cj1d{wLF z(C}3m69q$c1L&Dd(}clTP|wgAL}%tRl73ZfP-PW_*4P~#RT%WQuT!x{0j)S5JrvU_ zC^KjTga)AwL8d%^|Nc@0Q({#gbs-*F`{U8mB1ZoChr-$KQ5!_#ic%47kSk&r(kcJ6 zSDOy#Nc;PlN@aX{8X5xjqmz@+7RIL;6AJREKNbzAlD=rfvEsHk>{h44xw68)2qWQW zIu*-g0 zy}7ePHSg(D29sJ}7f(GRR?W?g*48HU8N7FDRJDbRefo6!@Bs3kdIb_te)STG69{Aw z&LHr;;lc=fkEFoy730bsU<%=J*{+N?fbX1w+C$y9f7v-C`CEkAm~HKJ;ADE zZ9(xjRA)o=!9->srNST;VA?q{Krw<}m}!_@m}X+Wgfs@D@ErE6a%{kA=uQb;;}Gr8 z&Z}2gY_(V(?L0ewj`_p?)x{74yag>|u5wlgRz)aBVX_mVU6@x!^d*`3ghcVOU_N7N zNfj-;WrSGLcv1$?#`#ak^-3fADpsXT4=tdszCIXRwcS>OINS|%fs)rWV0p_|?D^TV z3%(TWS|BPh{-R;jxO9Zu={LR3f^ z)XN0nKJbnm>?47GH}Ncv1@@vXm0I73=bFGbPcP2Fjd2^vdB|SCLx?eHQ-YltX*m?2 zYM;xAwlEnaG`^x#`l{k3MH!UD;K2mY3+~m~+c)4XM>M1|oVf@X5oa-2$Hp;3iL)-c zkcvFp1FHIk@u1bV0*weD#qSF`LXWsE-UMNQ96YfbX{Xo7o`!Fic9H6bUbb8YuY2+NGiFY;+u3=3 zwtw~FP|TW$4Jl*q0ae-phoo1>5z30L7jzY*&6JR!R|;Smq=hkZv_@u5&TRNCBB7%~ z8C){Pj{)$>>N_HZ<%#psa44g?=3U}LC(FgCI?tZ9_IB|=w@!}rqkt+nOKyCy-`#%- zLK)i7;h|#!iwPCZVvp*))lwdh1CIuE(Gl(;#y}9tz{q4sFJGcCfh}4~@$-Qyc%T^G z%O8HgJ?90=e=5urK>`ip%>sKw6>S{1y3$?q1cT7CX;eEoIWaR$%M;{s=8<`j%pPd<*vNv_{CJRYuNa4DaA4N7I3de!a6Q?|0IGie#n+E$k%X+m;j8ayPWAHp?|(t5 z{`yxjzxt_fT1Bkt%NOiF{`~XjfBo0*dMMSG|M(A3AFDD9tk@UhRViZiQkMLC^<598 z5}*oADH(o(Km4+EAPR#S;!}R}*>Dv!5G%o_t^}yU-T8h(E$K(;UJS4BtguKf#sUvP+~7~SHtftO)V!+e3ja26$7 zJ3Ec7Equyds~&v8lf?pr2YiL|jYhgsaeBRTOXjiZNlcO_LjzxZ{q>(2jsKgw5AN%9 z!h^;HAXYUzxM*F%HyxRG?%qWK!9&L|A7rh-;dn9%DI*l}#^T|4GJ)lR*=jn93jwY}Ef-q3henS45xO}2M78tZLHiP=IX5((tXxm-CLO-B7ee>4#- z)Qah1cGbV?bXvo)P^HtTw(Id!%;)zc(uq=|8Vvg*@ld{!D^v@mdP(DCHMcsQy-j~$ zHJ(kxvI$?<=LvXdt`+h!_`BcZ^LbWRmO<`i;!Ti=Vu?sN1gHWLTzm227;@~{*$H$Oh(>}{8Ih_au(}dm1$!Z@6h7NI zc-G$Ng4Xx8%GKh|!Orf{US|_ey#~FY3hkg>2j%nW_C~u@&V!KOT5n~t3Fr%zY7r^} z7Z7h%YRxhP(s;xh4!A=BcO>Kq`Q1K`!?)`6dK^K&I~MW9qjZ-;v1B5YPH}nkXviB6 zdkckRp`e~6Nz8P#oX@3-`HTWpbO5Xrs?{R&rd%c=o`a!WI$En2P%A}SDxy>ZND-(a zMTt+v#f(c6Bgt0g2r6)mvnEy$QwK~Om4 z=c<3cl^#&#{x1SmzYnASM?h7%)if-sXjIjXZf+#DHkfq|FbBS(ZoO9FaQijASNTWlx~{SAEy>J z+U;$ciLKv=*8L4ih0Oq{dYjd};Ib`vTuUp#?o6Eh|nl$YonxahP$+vur}9 z!!l=Cm^95!%ukP-7H3S0)AX%#E?JgloetCT@{+>=U2u`sOpIf-sJ2uN8!;oAL^+q- z%T~9`x@;#_<#sNuxGW%tb-`wyQ$UJdd$vVdSIv$u%#NEErqG4to9MwuS3c9q@{-48 z@fdpx25DcKTUwZ2n4PdJ&DpH;4!Zl9+{;T|uQT9t`MnNYnw=5c=ba22zu=yR2CBrsfeSQ=V-8wA0tF8A~r;YnJMrdcK%ZkF)w(>*5WAsb33LrLKPjs^m{6 zwWv~XN}(d`PpJmeW(s;Tl+0s%V-#0H0wv|t3AANV*!Tw*Np5HfG5H@g1%UoNIVE!7;H3?B3xB2XG_Hl z66s{5#PuxFIr7|ifxg*M?70+RC0}cl^4TPAOR)&Hkf=9{t+i&YQ!Q2UI3K@Z`n9vTJR0Ga^ms$yfbCLK`+kagdP zA&Nc#y+WG>p$jywts!A(XwtP3$0Ifcs${YYv72M3S65K{_$MlqHvy_3JA#nLY@xU* zIzO~H3=b8lrHIXfUYZfE1*)%TYe+yZqOv4L94J7=Ms#ulRWsAGX48!L-%T&fFFEZF z&kD4cU?LvNX7H^J#pA(PEF6!=(`o3F_&8VE?Y4wQYHe)PI-P2(RcW=V?RKr(E!OKw z`C2VgE+_CTOQjXRe|BNsWHHao&yGz^4Dg@%hYue=vN&z-fOpQk`0&Z&M}tqW9~>E; zo}V=dYz_r!cx-fhYLeVycIvLgxtN@u!g%T%8^uX6N`A@6-_lCOkU%N+2iDde1Nlq!1Eva8?be#N*FcNzf=Jm=5tKLQcf0ly*-}ppp?jlRv<5 z2xhW-dfKH07W+bVEvCJoDMfiW3=HP!-sT~F712HjjnmAK^Z#uB@`Ad`D`?=?*kkr$ zwiBu#5ws;@rM1+#Pv08MF6hsKx#;1JAVCHl8-`Sz&vc_Z(!zKtz_N&>zvaB;U43JO z$J#uSU|8xAxwC^eAJYkkxH;^56A6W7NPN3-QG!z8N_jbFyktebGzWVW5a{G75_q}rhAN(-Xu>8}moqR0b!-sgtLUFwft=!(HX&ll!3~a6<4X#>qnO#zU83NVBJ# zClWJ@(3PM(zhG4ahMv86aq{NPB{Mb|c0_oxQz6t%lh`-@1428k-v^kM_ZG`zA$%S_mf@+!eC|z2I_mJh%xY^+}Zb zfJ@MEa@dkUd9?ZL1x;TuFh!sUbs4A}o6>%@NA!-8%Ja2TeG!b_iJI}w>lL9p;*Wc~ zP3ZI6+pS#&0aW-&dH%);u9wDi^!VfDAJRip;)v~>KSy83(Dy!n2I1)|yTDYz%tViP zgU;W-$2$uF0AK%`@4v@;!5bn76b6X_)YjLFP%pMN;g%}mTrk4%g|7NaV)h`IOR!NVs54<0@K^Pm3(^mu4+WNKn?bmY#x zdn1z*qf?Vp^K%O}tI2M^_wXUTzek3r=4WTkblIC*G7pc9-KBTo;|1H&;OOw(hxhN? zzkB!oeRKpta%_4M?LT<*aB6{7X1Eg1+|(31yTWq4?EerC~bv8^~m zAz#413cWfS3su^+Tq*nP{BUD`JD!evy>7bWRSKngxv}2r?ruN=M7q{(Hn+OXjdpXh zyRpApY1NYHM6p`TR|r&<8s&1Uo-O8T-A18a4nzW8zo*!&WJ=jsGU^X_6Pd)$*5sCDPGiHNXCBtGU@h_10E5nurt|B}TJ~heENSKkN;JeZgoToQT9T3C}9D zIVf-@tHtE;EW6zf@2U$I5{?9d0dFds3I=^1_p*E0u}qsO2Z+{H-W5iza*%v}54v`{ z>?bI_cI8>nOADL6#2C8~nsa_8&O4V+KyPfD- zH@3MR-`PqLrP@w!b>ro{H=PbCAY0#XJ*b!*dn6hOs3RD?}&97TDs5t{nlW}N#6SQT2( zO&e4w>K|=d2Aftfn)s)ic8y^uCZ!nD?G2gzL8832{D-~t+tG^uDNtp%5%F1dTm7qC z_D%_hic-1ki}s~i%ff_xX?kUupq10MU|E=+n;MxM9hjLMH80YRiEIC%Bta#UYuW0w zFS?d3j2N{{M?3|pXbdG$q8!#mhh^SrTa=uoWjk$`#FK6gXP2E8Ih;1rYH8YOH!nNP z1hbarY?e8c_paJkS8R$jA>nq?#)^%YX3X=G^V8$z#c8L*wCb^~t~z|H_F%vj47hQP z%eHx^b0f7xQbE&JpbFzjrQ-2eFp+>>ABcv$U~S6X zl4Pl2vcFUW1m>7dMO$ml?q<7I=l=sF@w-MMn~G*rkzz5`>Qw8EQmL4!RP%*Wwp=SV zWQ|zx=sH6i=DCuq1Xk~?H4FJvv5>0QOQ_Q7*1H?6iWqG*+to}umdzx<+^e#-o86BWdkdH5qM$g0=J|dOJ<4^icIc)%1|SAu_3ziLQ&iI&nZ@QLotRPMSWOwD)fl!%GGKvA0tu) zlZn+(Xf+rNM57QxGnGoNUN5#<)Jv@~UTQZgzTZW?*P= zV36_A$EGGGXQv-Ne*Ab~UVj*4 zD&3A!ZLKTo^bu5QOAz$6z1_|IeGMjsw@eKl6{tFUMc|l!TH-wtJP4#f6+x@_?~ksp zTH6d>&IZLz56$9G<5&qI##I7A&8Z)o}6wUi-nYeN6%=1g#=-XzO|76I)eLfs9WL{_$!i^iy+JM zUr;T)6wr25zXGSiyhV>7++M0xuU|hqKVN(Hw6nKYZnf%bYq&+|7mZ+emmfZ0hGPu+ z27wGOKlWu{WXO>)RTui|foRio3#dY^zTS?*UID7>$RRo-evbNvY9_87hx!&P)&Rnb zvxN&6Uo&MIMto}}!3&gQD9<4bbQ|NtV?yK79WD^0_|&>0m2y9cE{UlZtBBnefvW2( z^o2|e4%~rz z@e^&KL6E@cY)zm*1DO&~OnF5gyFr5R5H3(`sXqVx@1Oqt-*3KrQNO>JU%p&?_&~cV zFeQeUx;%aRhVj&IZouv~Pw4Ngmn=w)&>`jtq zaHV>mcTdl7578s~!daQ*CwP(Z%HxI70r1o*pR7VrxQ$@%40y*sBsiZzIEyEXb`+%G zHxZ9p<{_Rk3asrDkTqaa)CEU6Izl3z%gvcgV7Y((^PlfMd@w#c1y-y;6_~um?Qr@% z7MF8sVSe6ho|>BjpTBeO-Zyt?goX6P>F5BGRF0|XpN`(ON;UUI<^Z7G< z{r>t_g^E6begjnXqNo32>-7EiNL+uW;nJHQ>4Nv>#~y36KPicm3%TazN+^UvuPu#i4*=Lo{OQ zL071P93fU$pbC3|u4piYl4ujB&=ec|_FLrW-vDYq1+EM30scv=OyRU3%8IgB1d18| zbZ`AYMu+jOADJA(qyOg4H}@Xi$7lV?&;Y*sUw!@6pa1-o_?b@O(~pOa z1ZKj+Cy(zvcrY?CUR#6MT}|bZ;fUYwUzNjhBo=bH2<{~FsSuR>RJ_!xHa0uePE%F` z>~{AyHxG7m#awH1tyC+gv#I80cg3?DjR#|iNHiHko0WEj*jBv~2zZ^#cBrnIVixT{ znC$Fsa)rULKLr7`nD(r?s_kkji<-e?CRXcI3$;S7n9bzV@pLQ@_Qle%WG( zy?yX>^Vx2_Q-|;msx_*ma-mWyN@%Kfd!w_qv)*2BmCN~Nr?IxZUa6N+IG0ZqikWgX z&p0QkIMkd%AydL(Iuh`?iWQ`D(20URSID;ei6I{z(Bv>(1LE-paN3=Xwx#-w2INhKi$wT#z2fpHpQ53Z^-Nq66Lk!KkTL7lve!D zEvl9lT=oTz%d)b(WS~@Pue5A-TIZH+3vPPbnO2-;WV)R+YqB%u)Xdz}=+x-o#K@D0 z(ZPlJNt@d5WOC<65b1z#wc-$_-k8j0oTU~Wx@3fih zOY_)!`A5Q%#XMu0pHSS#8}c80OJol7|MxNRPn&FgU>-)UQLSQgMS#_w{N?B>~} zh3UoF3FxUd+k)5Yh(=bEiC`*)H_jUgu7v!{K93!jgUbZTbyGhT2^amC%wp4We69X&aQ?Fm&Ui%N4u-aHb4L-T$ z@kb5$4Uwt7ZVagc+OkFpfHa`k2T_lne83zWY8t%$$_Pz`1`U)-3`5i^Hk>8M@-Vxp(^fS@gi?ne{}duRes z|B$8!z>yx2D2(m~FjgHU@V0iGs!v_x^J%r3UJU%+NvCX0RcifehX!{-cjPC6Vu(EyffBs$ z0y^xr_V)0;)3Xdyi-wb@XK&wtXdNc*ki9YEd5P(k+&aO(h+p8MFdww9-_VY@1S+xv zo&z>@356C9^xZq8`woC-vg+S6MwL3(&`#6D zkCBg#_Mw@}-vFQkUJHit3xCE%o$5js_>|+4-@ku$b%kEkMoj0Gj!nxSK(~~jQD{Nu zDjosvwiwxgd+;s8yp8s43&t=`=nj*oV67TsTspPa%C}jtw(I zurdXz(5B8qZ4-4_Q6@Qqrip2r&PgQl^?D?oo|>BjuYUC8@!k7(zxw*Cdk=^>j808V z%*~8VPk}}zC!P!qNhqTGckkVMJUFP9Rui+cL*opr{@^jKWx@GDXw4lAgwpBNaA+kI z^hP7WWFnMGhAEC@qq%G>pUc*3*?N676iOD07zrlr)8k{vS|0?WqD_-pHvQYbefrmb z6+ithY(VVL1_xI+@mzQGt^iq8Nu09$5ed?xX;85So zT7d#f=^o>u5tiUksEaB$p9yB63OFkGCzvWo|II=I%=T10`)+QIU*159AlDUCO9?#^ zGW#XwIyf`AG0LNHb}9k0kbm(G?TfRv*i~WvU?yYc;N@y;Z!g(w(QGzXuLYCI`K6`D zPw1GBul9q-kLcPt@EBkDhXarAKYV}*bBBS+?jjS1kQVTLe=;<1Up)RsC&%$|e>^ZS zHicP4he3!0>0%aAccBJRFOw_hlDTBMkPgQ}e*bDL74rw7aJu5@I34#o%}T4@SnssA z*IQd_)pk9bOXo|_T~nES8u{f$B^36fR<=@z#6pp%KVQzL^O-={zv5+}sBAf3YE_E$ zQn^(N$AYPBB9;gTL*7_2lFlbXA+O)Jf_*d=j3>h3urCz$MKNIu$wVfeDP&T)6dF%v z64g!}jpVC^e65I)C(`kBAycZC3zb4R5=f?524fCILy)sv%XXU;O5TFmgqycuwV1GH z+60Zo!hnQPe=dejw5SrSN?r3V1XsF}U{b`Y#GFc@ zA3{`uF(Jn=trFWPR8)Y;fSJT=4}GZ*Ab~3ND-?4lw1d6ERcc+OIXJ6^S2`Z`N#sx^ zQWX-Qqvy|YMaVh1xWM7T>FLw`{k^A8pFVr`?BL+w`1ttw^XFGr+UDNjexuW@w;G$z zcJhVH=CkdM-OYNd)?RN{o0Vp_+1*-O+ga~!uOX*Yf<97dbQ)ZACzmW&3W{VQkxeJS zSNNBFI+D&tQ|U-D9Z4iZU^$s=JQ`XJ2UkF`h>wf(q=^a%W)#GsfI$KYCBhjAmXb}! zp#;^c#cG9%m}@j%C@B~KPD!BjAVX8pafI#Agepv%sc6{OL#c#%KvfjeEbN6wCeWB+ z8%69%0;Q`h6`JA#R$!2rbr=k$C0Me zKE`yL`ll3!x=k9IN~2R5bgPj_G#Us7{l3+p$G++`d!6QRa5a`p1S1iTAWgs72vGGl z1*8mg>eia(lh5n)dh9DMf>s_k&7+)*^fX8FCFjzr$FbtJxzslhof4w5 zV}wCjm5)%`ihUKeq`J$FHW$P`%Y*^rD%@g$WuBW{TAa3+X3=0U;7%sMBK%Q06uW}H zWl+HD2&_5+UT4tn3WYqrRR>y-#r|dmGFxynI=fj=xmmk)(Mcahw#*>z3)9PXt|Z7v z@Jq9dT7|wAXKc893oXBpiCR{(SX9ybuTg4ro7G0STrU+W`E({xu9pwb&lHMMkH0H? z^&tV^V=q7zPst%IG6XpyN+lA2(l02LdLAjp1bJ7S{uF)!AwfV2B*s(7>7!JT6(~}? zG@=Y>BiL)R>{o}U7FDkaRK;RoTmDFBH4%q280|Ab`HO%+RW6&rVImrk<@~sWUm?du zSc~~oxtJ}N7*!o?k#VVLFqJ6eljTyT)+iN=x?(Gr_7iie6qpZvhjYnBt5T^k+IqR1 zZ+9D@TD_dlr?U8**NT;Dacz5TeP_MdVLqtdsMc|_+x5;yr`9NUx4LWFJd2X8wPv}R zYjkSeo%MRV-dt}LAqtf8*+Q14-StYYQj8{|`26SV<#M~edj|FUx_`$AAzjJ8@$wh6 zs*#!rWk8i5mG~jPBaH&85K`3?kPC&WbE2-8O=%`kD(OWH-}+^s@-cxnd%84K5fJqX zQ4v))fJUTB6moDD55 z_c(-(3S|`nWn*iry}OH?_TC=$wBvvtyS?oR1g7Wa#%HD{=jO&HC&#C!CTFJS0IWe% zzRe~pIFr}AU|E9DG(0wX@BaPa(NP=iEFClR^G^l`Axc8%92yy!2V1h+$0jBOsQQMn zNABN;J_9jyXmoUTalzqn`=j_KN3F}wDJ~{83`OP6-FpunK7>fBku2`syZa3`aRH#0 z-}EF}xcBe@-|v?sX^d0Dix9QMo!Qy~K`Gto1$9!*c?&Z~EPZgQ z`^+%B!i+V5Dk#-Npm>NoLy}VjSp-7r6YiwoN{46`{0iFC>1*;UOkE@}X?c6)CBj*7 zFz8VyH`lxz>3aPcp*NI#`Q>{IZ(TxA30@{ZmAtAtV7zX8>7LX0NZ&Zw(<15FC0@)6 zMS1j8Y2lS}LE2i(Y(l(8}#NtdE zznvyy;kz%e0$)#oY4oPCuA+X1J0S>fv0z>T`3c0JSP3pcnH2~xJD3T%nFj6Z0YHjV zkO(@EkcqR$`0l)Wcl7dxTtaNGu;(Dz$hoYjh@lGZChUk~5D-vr8e^+VFCfA_LVL2z z-x0oC61?f)n*Ri#qvKbvz?#kk!QrXvtFw2EvWJIGcBeoU24LJ4#=6qR(RGCZ)H#^W z-X0zSdsi0C=Sbj&Tvt}L13w2LA1&x(GNNAz*whEAb|u_9(#Qwx3T&jLmqQFoVoUYI zuA@4tpkG|tiChTi;=_lNH?N<)xWuEuD~36S@ti_K`}W)C@84r!xa!llZ}+dR(AtJz zMra2^#T>(Y#=PQWlV^duDz<)HiBgAwFAnZDxr8jNflU3rV2|g^9{Zq@Oio-T2dT45 zkTr~7%k-d61FOOz^3jpJ3%$Qv#7P|ay}~4C-bCIcoRa&VuE?KVV*m0-Z^ zu-(0X4~+W0gsFNwG=R^?`0UK!*r+bqc84ex!>eOII65*gGV)}2=+WQ+IJx2%_a8l) zHJJj5M6O=X*6W2G~FiMYyV07=)H-=3Qg_)7ptDQQULZaNN*18SItKmoh z?HB8%Y&p+3?y*of8uA8KSG;c5iqq+`yFJU;JDgU~vfIA0y1c%-bBgDPPvqq#4XMPa z>RjxVPA)DK0D3N~<`GDG{hBK~3FM@plA=g2B(VCmU{b$eRT5-MUH^DWgH73$~5?>BWTy#>+MRTTyND{Yb_96E;>-s@>S>& ztr`@Nd?AB$qtn2tlC0g7%hJG#K}+)SLMffjMB}kQG8ryabMdG@5?l#O;40`iivI8) zeZuAuoJ~Z1iKrhr*>o(MjzZa?2~{aqtrQDTb{LJ9>i}lcwA+%B1dj+gF=9H=s3?i% zRK%y~phq9QI74C)s1mGd^%tN@QK~4$ApR}}5wXgouqP~KED=ah42MQoD>1@Cb)r;U z^-q8*E<*_ltOf+A3i?)Bt>&6+3Q=Lx!+-Ag_xr70tEfd)w-a4oi*2mO*Vp3f-Pjf_ zsu-r~zX();^sHh`zb8H0r?gTJoKiB*N_q4cjzj|3e5;{VyKi|Z>~$qmiDW(>2!|E= z5eVp)O(ClO_RoPTY^c(QjedjU^r4*orkU7K044hyD(a??kZ#&6HXT@hGjjg{P^G>9 zW;1&I2PhRb&B3OFL=|oA_K^C$^xOP>YnI+-;8i`u%5Gg+p=pwR)oo>va)MJ!ZV9aJ zw9dQii#SwMCXbvF!z;_O-L$l5EVpN~Kmnaun46fM7?~a)nwuIiEle}uly$*jTd-Rf zY}R?FEXn7@;nE!PSKT&0fhq@@ayyq+#f;1CSX#E5Ju6PXf5qo@dE7SlvV~w4$Af;Y z{#6GtCRB9W(1O5KR*X#=F}pM!%;?S!l7W{5U1cpl2?evFo7r{$MraoTC4Gb37dSm%u^U7EuwG02jz zTsE#7_@`nin=hm)4aTUdwW?r?`BDyFsZzCgaCZ7a9P9cJl_FCLRMC#<{d=b0zGV;` zG1;J35ty=&e)2&`Lk@so0f7J#z^{y?Ao>d+rG!i>DuTJNfS4iB7(@)RP@OV_v`pax zy-T3?YkY)0eL|wqYNS#zFv>{CD~LO}Faz}^4WLRxN+AJmm`TU8Sq7-eiDNeM8A)Ai zrZN(6s$9;ZJpHtD$!e`omQ^r_YH?-OR4$uTLK%Eo=((LuqD-@0tK-wsC>IJD@TGdQ zitk5vYi(Q*5ue7S= zCdL7l6wem3)lQ?*X{7S$U^o~}#Y^ql?%AoTG`M>Z%~c;p0y-^ZES1-(S*g_(1b0!5 zM4IoV6|oZVh$=2JMe{@gWr%;tUyG^$gZ8n92BHNd&GMqJLaB!0r>Y$^F=#AMxuIR? zfBV#tRC|#sD2%buDnU>x{zv-ZgBnsPN+q(XfSU?bVdjX_AF4xLQC$m)G#yW{-`|J6 z(caq=PY?;OBZL9e*47|pJ{cOKj~?_2C=!n!4UdgZ&Jw6H+iZ(gEA)ydLj#WnxJ(Zi zhS_ePnw@>jMaSu{cmKhCNTov~Bhzzps4_S_JUBdr{lFj>?zwaK?%>FXb$J<64IgLw zikoqBr>BQUNAEMRE~M3OP#uElqbH9wc=Yhe-~fhUEd7JSp+RI0j0_Ep4I}g6 zqep11*laLpx}a|$XgG>eWvkVEyes_4`65_UjTT zU2LXKc22meAkte$gvO9VSnBk2@09ze&(HQR&JSN)9t-P$s&M-1<-z3zN|eR_FsiAqOBtA~#>apiM!* ziJ>r<5nYVYKFi49k(MEyVN^1J6FLdX)7N2OU|=lZc+#l>?)0sYIK1=cPX+rR37Z91 z)B&G^Q^|r4=$fv7m;+8dpH>iR}@K}Xa9$;X&B5>F9 z44z)1O?#>Q|M_&Dc&U*OD$Qw;q2mNwZ$UQ{*^xZqWbhV8Qwf$^@ zV<>QpR|YTFkwkyfKRA)Bk6Q?{oh6k&2=NuxX`}O8;7;Wj&p&=t3=SPt*49imn>*k)JM3W2_Z~bL z9v_{UpQSm~ojVVo&^!C_;Gq7&FfcOw;K}2`v5|q{A$(0F^7`oX!aVAFBN5_L>+5K+ z-0c=xtxToD1%|7Ya60V@_*a6VQo92d2hM!+`SYire+Chy`ZtmRRNZp@Q)EgJD5duj zH0tKtZ}}Ph^y#%kNk=BJDj_whQWWVeLsQY32~}_kIUoM=mybU)fgGHDComS%JxB{_ zw5d60#6YHghf*m}#R9zq%F{ebK`23^uEY`wANQA^KO<9tDzuCQ(}Go9fBw`DN`)Ju zK-I;&x0mnVUF%<2;t#0*0YF@YtO%y6(gHpoWUy}-E8zK?H(b=BFD||}%&d@q^6~~^ zBm_tbs9+i*i-Pn&QIIx{7aTJI-`rF_?+=Hp%T7Ggk@0an;ctB6&JIKk*<5Cb3;KuE8xw`nOKk0dfl+E1-6r}8OK z5K3ss7fr^J&~vNB+FEP#=;`*+ey!7}b(@W~RwkE9remdAvEHrM*P6}E&i2u>WI7%U zdZV#0!<*u4y*u>%~Mm7Q%REh-Fd$phHlYv!z{7C3Z!dEHM1S0Y!zJAZIuCx&)l;K{=-zWrz zDlcE6eeAUitBV`p75Wvx3xhnlxWLGD%t|=KfKlKSJQ<(+XU`6fjufamIy*xqTHZZ) zw)t#l=jhqS)2&vw(dyFKqO;zvH*1wfrP`>7YEY?E8GeMJax29u9&4pgmiQsq=L?xE z!%HQQS>y8J`D`|plSTbfsYoIbDps{KYp096F442vo@u0WMyRgqL81WNNPQ7Qseh8FVBVoS;@?Q-G zytJtDxv_7z{=l5-e+HwbGZxd7WpT=CnsHhediWHBNf{^%V^J+E zEut6$R6!G6GR-c|PRvdctD2q|S)8A=E-|P%idmN!lH5TYXVz+(MvlitS3Zy1N|PnK z$?Ks#msm*I0)f?NEadaLFc=Jpa24ZZnO0mDzn4H&!0Yh3iBEY~Y_zVTft7vLW#u5< zR-c5g;%Mn{m{pR-#R=*j3XJBY*)%M%N%Ipi!mOmqw+C`Oa`NrNo_0RQw!L_t(8mvd>^v1GF> z{HfL~7mAroCf;0Yv^Lr`@WFbiP%RWHg~N;IT=EYrTixq=C>3p~B(^&Cv}uA20Rdg~ zOvb?h%YMbMIOmYyAq3!K1D-B_a6w|AO~=Ir5h$^*rh|{#RY?Mw2bY(SJa7tyAw#Hf zmLgLSM9`EPQi0H>f@nIJSKog7`n&Ji>+N_v6bg6*+V>euu*du8!B@_L<>hjT0vBFQ zX4CO(icFc_e}#-erA#gpYcz>BN%+7N((ScI4R=O>D!TP$Q?hhxvcNd#WhB5%@tr^y z&2|k{GO1Xxly3(jc)D9_8#^1tVz#|TpbCtuP{`u2+9>mbRHFlC33tAjmQ_b% zg>t@tFOY=NEH`V-&2F{RsCJv>P9syw`-47A!}ivu-a2Ti`w~M+)c|BtKM|A)Y7Y*P zFKVsWSc%&mwM5a_RWU)y?B8=1U~H15!K^kE)jJAi3CqpY^gvBQ9;yJlnRpp0;Nc(@2IHC?V)q)G#Pu>(8E{uWYsY&E2~YD<@}W=FH{=%hIfAaRm}!GU*M6 zk*4@~@9w>a4~E7@=FE!_Mh8bnAV+@l%{Na52No=*hmRiVpP$Ht#$vMD>~1bvV_kO5 zo6Qh6hsVdD&qUHGv)wkcI4AJaz@sNnTo{x}E27xF`}ffo1lGp`Po@`UtuBY#zl!ot zh6Ye_a&CHJcIwgKlY0;EKX~+DbbP$nY}VG++B-XhX^h4G)=RBcq0yi@m3aU4fT~Wl z+ch99jZ`I=j#?YFX!^wbt-}MneGtmkehT*o&knB}5-20Sa_b;1OejihrX)a>tS~6H zR7xx$)VbwwrzjQD+VzHn$`Vh*^QX_xc216I5Oj7%4sd;S`tnBKVlWUqWxU;IU>fh< z9$vj5`~CiAusw=xJits+xQGmtsddr`cNlAK`c2m6@MXosl!n>U!) zc-@fRql2N~N~Z*g&?$9wv5LY);eKKoV?Lk1d&dySfBPF}tl&h@>Opv4`1&ZgBQO(M zFnkhEaf)icyu48OjTfJms&C8z}QY0q^Fq~lP9)u20Esn%j^XaqOv`RU#{*F8MP zi_d6u0D zLoqd8ng$w|HT#H_h*6JPFkz@TMU+bXUtec|h!$SIK79ES`(w}>?w>BOjwIYPhOXQFimGzr30qcuEG{o?`C zLyKW=LxD_Ek9O`q#p45X=`G{reYWv!t&U0LyLS`~KSy!h4h?p$VF5<$P zqdlS)8aa9M24lGS@&#Qi+3imT2k$?4FfcOo;4x8#q0!NA?%V-aC-m^}!N}zJ!zWKh zCdLOxh95k7G%!4Dve}ZQQY@DXCKHvlwRj;POeO>I_-Z(e&%~4A;jtMo{8@J(aQx~O z@5#{-WGzLh6sYP$R5YjR*-{y(lMvx5L7Ms~5{Rgf09A@2vHV{Iv=Wr+m8`)>!=jHL zk$BUCv_Ag)*Ux|Z+uI&cb=!$gk)|8*#Zy;70k#N`VVshXjs%}FKr5qP<|t@|j?jpj zP2GI^ng2V!eXCKTka-)Z!r}GjPdB}I>ZtYN;|F{f@QuKL6}l2CTALc+v{KmjkpRkE@$CMWn6_8?4&Or^5o^)4(? zez3S5pjp$x=p>g(!RMQf{ASZU^pg46(W!~yiLrb4??Ie+H1HUr#p9uYI}iZw-McU5 zRF4J*Fi)Ng4PiP#u9!71)YjXd#DUo3G`=jiFhI$@OdO6vpbdur?ZJfDiRL)a>Z1sny*4ZC}#uym2@rvc)p5srBEv+v&m>Y zoP=Ut$iy-BR4kEA;4qm@t#5A~OE@af>8+Li2q7u%1DQcgt1fPbkrJaSHF4_4d%6@G zrI%0*-n{vhC!oZcBJk96092p~d#3T}xw+{#!ioZNp`BNPa9zEAO{@z2UR|*Zy`X1EHIU{ytE4O})#Rtzte zG6aL7{zM{JEN4^cSR~@h6%q`u9uLIAt6@KMOIJvuR)KIBrHvJ^DvaxbG#YpWE3LSdZEhviMkp!aR!hB*;#r6B*a#r$#akaXV zG>R!oMFRq^BpA+!vIe~@myV@-D3zdN^i?#lDtZ*sjEk0BG^z?<#s>VWp`b5}sqXjS zu-$GO099}M=Rg%U1DcY}$g0;HjoMl_vA!1H5TI&%GfCP??dYn1+nKFytPfNXV-iHk zu!Oor$kYOTnCTCxU*?~XmW-!T3RL;Mo`Boxb(;NdTO=HaB$NJNP~jeI2K>|86r$42 z`$s^PZvSh6Dg}dd(+08Wc(7?l{Y}prrT+-1GP>z)M)&^!rNXB9D1gGh8Jp3^9|2Xj zTgIl1^fzr;5i6Pn8EfQOh_=`lX^6z7?&i3jor#WYv>387Jd>CR(GO0or7R|{ssdVK zASaSpfseg@k@}Y#bukxX<1lxEd{*Jz^cQGv(|-W z>w zoR&GY5wkCe1(||b=2=!*wtyT~)1T_?YNcK(*NWw8q1q@{Th&UlT4_~Fjq?8Uvlo!U zdnlDcR7!-01g;`V_4e&^aD0hBbp~E67Eg*&5wQX*M-?%yK7n9*ey-RPDtT$yI4(P-96r94-VtCd=v zW_PpO-sm*MxOaVbb8UB{wb91SPb8zEpeGvfL0lk8Rm?TkTg}Z*u2S#^yrFO)o=K+h zi7FQg^>V6^**-p`P$g3I)_H>o!V- zhjR4tCDb!iF*J&!Bj^}7#WtaE9vwmJM(=Fr+*qg!GB+9riL!b@y+||%w4*JcB(xMX zi1wkELabygiBF%@s7gKlbb4G$wA4QO2F*?NRcLpr3o(N4DZ{8Yc6OROJ8DryeM$6B zy^wOdJvKQxIx#UmJvC=GFMC%dxILFM2_#}mPW$BS3F!;W{PR~|VYK;bHD9STWQB5# z5l$3oeZ97}R_S!gx4@}}L^rSBGNa@Bt+yJrvrK043I=j2*<>}ekF+@*6u8B##eT&!s z;NpUc!POPsWxT(5i}AQI{nV8Y1buiD4^eEXHV+t@N)p7XXd2dA){r=it28FQ>w-*d_z@MR9_y->U(%D z$U#NCXkcQPqL_PV87~O#@Wv6UuvQ-hLq+VXtyaEN;!WGzgI;v??YHM2KG0JPuL_OdeTFq3>*!_rjCUq96KQ)8e|DjVzfrY3Y-UH2Jbq!zB+zI zA46JE31Nh^36gMHO6US5IeuJ`EV{?>3;WtWJ;iH+o1@Q8o5dxgJWZcSjNGKR2qah@ zjhF~dA?NZEZJyvO`R47}`*(~6h5e_GC-2^2kUP(xKf7W;dOQU*f`Mt*{A1wF8ze9` zUJ;%YLq0K96doTYB;GHK2c-7|j|?nbKh3BslZtGdWdtrX?j91F#vsArWu_?!k|mH3 zW)u-v8s+VXF(8J4MrbM}w^!muVUBVB7$hi|k{qgwHxV%f9~G#=US~4S;z{XzlZl66 z9Bmxn>F;Op4GG5=tV6D3w?w;Uf!r{r&gIN8NWn{`BE5e^pRSn?)vJBO%o4168Pn zG|r+}FWUOQVlVg<<5gjJB!R2m)B6u&laUBwg$sNo;iwd%QsX9k0+3dq3TONHR6lX? z{@wYzw-65$)lwTP5OU7ny(6?F|7${QfWQC|k^ga`S;LCzJ?bJ;37I&h(3JvJXh$2w zDG>7oz2bj+!lN)zF-0@gYN64XS-?ks!sM_)e4dz@9vm4N8XFxRAA9uV$vp-v)8Li& z2S$enMusP5r}4NU519O zQaBchrD9(Hs>5OR`aO|kBwH;evZ-)1lq=`!Yh0BZVj)AJM+4oRwM;gdO2znIOZQt4PM9tv=UK3~3^t+XnYW~EX`U*%e>0>vSdO++GrY$1)VOSMwI zl&iKIp|C$34kRFQ7t`5NCK?N-a>+~~lZL!q$UwP{#=~i7?gfam@qC%lE!MU+h(kg6 z@5POxxs#wjI6S%JYI>kEakx7d3noHKc%}kWDZm7xgP!;RzW)6A<{e{HA$|GsCBddQ zZxpDaQI(iPDWMm_QV>LYmRZ=p`uGuvYa~8=cq2_QAJa_CuTTr+K?YVONE!AR)rsI! z7~vVDf^&SCu2GoCnqXD9uA|e_!;_Q4<72x1K@|c&KR)bkuQxi4)_S|vsL&*;R)l6z zEM`lUVzp6it+iWgt#Y+kVkC8H4YdX|j&y6SS*jLtxdff{vWf0yyI9KLFkeWfQ;|r} zQz&J!xkM})NM~Y&Vk*nf>Aq;#o6W`|0Z%;QjfGdj{^e+pUOcg|Hzj_5xvZ}Jmne&t zluI*SRW=#TCL{T5yjsnbO6g28#0YzZqyklhrJ{^c)w6QqI(?EUK$Q`TN=U+@Qz6B6P)2R!a+0=J`pdb&)1u1gfk~yZKM0O1=oH z6$+Jnp_D7vOVxI*(yZcBcXWBq=;>-Xg%3Zz0bu2Q>fuD#6FkD_AKw`9@*_AUv>fQ^=+Bc`ngfD(1@NJVUA%GL=f9j2l?MsT95qg?y@7E8%m}S#K9< zHkHF3g>ksHwYIjsPRrhn?&i~-R=3&RT3_4QSld}&-`i+(>eWUuosMGg{I3b@D4QtO zip6>*o{HYX`gg>h&YxV`-}*=nvEqjg}2z3u+QoqtjE!TPUL_6%G}o zP(_H!5=4BcVUn*}1Qa1CIr^tP%Fv+W_!y_4M?v#J0)^26N}^M$G=htvFP;(w26YWv zDiQjTk9H{hiKd4^Ld^p~I#eqv?p68}Ns%6Zm;lByJ>qyMBcX>&FFF;Crw$I9J3E!N zwdO7tN{2?OdI&~~F{etUS(8b;Gad{K4=-3OzDOjN$t-)ljCVdd3K8?cLxvz38Y2`n zJUR*ilqOMw14APtqZ1Ru64V@O34Qb)Ja{H4yYAi|Lq`b_tLk=1f>q&A3FT3ywY^0PsjV#odomCx z1BdGF?(T{e6(009R5CHtq6w0a0!#`&p#{QHih{A_9wN5>tM1UO+EsO=?rrMq5vY3h z{P_uFN>NC}4C+kHtn@Xa9I}sugju>(8EU3393+6t3u(099var{o)4RP+Es z9%dS@1qvs$)~AY930}5K6RJ8cLBJ`+(HdJgByC8bE4(1Y#9zO9c5zO%_K@gUM?434 zTf`ekE@V%@DTSyEODpWRkB`8$@J``fP>>5PV8TOB#v~Lg4>9DqRR!15SYNMpI#7L~ zU}NNXVNc$?!Ni7=FUSjDG=c((Pl050LhADdLS(4=sEdwpxOF0iPCY0}h!}*Jy|4x5 z2!5o*u?cX)mqoBMXzA=!!U?I}N*@>KYxUBv7{B!3D#8|8Mf7~+W1NB!7~mA?T;6&T zIgddSr5mJrpt30>PJ14{2Uk2Lu5k1|CQyFaUt7>Sy?b|X z%>e2I*DzWEoAfN{rR;@|p@6y{ZXE3Qx;`NUFE@mQx(2p&!<7WDm~;B>ExN;ya0xQa z4$nV)ID7YwlTA1+PU)@2IFWMD+V{&5H7!@8RXI<|<20R*c4dR@U+oiV!m&2ymGVdhsTkr1iwhKfkPu6feN2cJ3 zd^_ZQQ9P7{#4isH^H##BqcBE}nTgE)1C<_)0+@=Jgm@pdaU#DY!d}KzbL#d-)qA+N za^w}`yTe2EjpZA32!;TT2bK$gAd%1eV^NoHbu}CcL1D<}5)cBaiv>t7Olf(wX+q(Tf29SMpi~5^Xa%NwHM3HnN>MO^Xku3-R$7Wx-LOH@buSVnNHL>6 zp(79ylmH>)NsgXEEnEnQ(!yIV&ZB>7q9pkFEue~66%u{;345M>%d?V0XY&^yxbh%+ z*S%4NvDLXyAl`1g$l#WRR?F&ij*gEHjg5{?Pd%Y6)!^9F-Pr zk_9OO5BkBQhY%IUrY9g3j7?9f1L?!Zj|WFa#-}GikUB6cR(+m$Dv>E>lewfn=nKcg zv2@JiTd_MV{;MFLX>0&k*4&^&YxI-XG2ABWsq%nBS93Wk0DfJcJ0d!o@`hL%uCpVys8N2Ad|B<#aJ8lwuF zfT&!`lxoF%Ig7%PXds!2<_eiwtD4Eg^F^*M2bH1Hti%(Md?laBr_;G~YqOiqrPA4y zcqYcf5nnK{n#pH!rCb)maJ3XqMxxOWsw9#z?6ZYTJQ;0uJ7+ImoLybr#;O#qBKmWA zd3=7(2<3uR5vT&=6=%Rpv4;Yw4b+ulRj*&)ynFZh)2CNZ4c@=M#(cQB!KpqeuB6sj z3Rj`7VpvzbbpvUE_3j<&B8{dL>O$j;P9^47hFz6fWY+P9I;sWEp z5JNB$3PaO5J3Bf(#U6A9>H66oG?#L%DB;pul}54JC^fqc=nMQan}2CH3dLL|lg#JR zm0A(X1+Ux)DrXg|O2h)uus2^yW1ghbv2-eyN^*I=SlFv;NreL| z(U2z*^CjcHRNSA<7(i8+{(uICMWD(cg{9Omsz+4KXi-JK!dN;H&ZgNgus2~bsE?H}4tmE~pYtaE9`WtsDPSHiKF z*Y8)jM>hijl1&gQZeH0GmiqmsXHg7Qv=O)4{ZDWl&C#<01pNU@rS0gZgZaZv3mA3& zGoZ@oUba4XbbHfGoYnHbA6|dc{NHq;En_o|Wizs*M|9zGm{**OF8jRQLUSjvdz!Ng zuC&sNPKAWshz^bdj2$jcaI}uFm}W`lxrMojCDV*mP%4`RIwkUFOmmZhSdC(j!Y-%D z<63ero6(omG-WeS+u7qZ(pJ+ndvsYmE4EXMYy636l>${f z>?J^IKh?*Q3`9w)@J}s#@&$*2UZ=>^34~yz1)`#^DE3n*Loq_+42l#YSU|`?byai~ zv{H0Tfhvp#gS^34A(xpPCh+^eD;i`PP#40&d6!*Y% z328Z1ENAoiRJC62Zmxk)rBW^7RHedTRSHx!J579hHlJ>ntHoNAu@cv|*EaXJApxxK zuAv3L*A@dtME~Bu-ynsq)S8{D zT|Zzp4xwU+iYvMw6+dVo6zieq^Z+JRMfxfk)IW&qknf>{;1rZ7oPtWjM#Nr#I-6P< zh)T&Wgs7cfUZO4pebsP`k{FC?cMu;%234R61UZakKcNjwA-h=z& zQxqA8$3~~;XP2Dzk%@^%PaZ!R9GsY*T39ke7#$uPxi2gDpxEf-II8?vqE0~QTmtX& zdKPUKRKIus-jkt$!4W7VjBIu9!M#UM9*s>+j7^S1U}aEtE(JL7@W~?(%HVKjaSojh z3=Mw$%{M6XWN^S@w`a<IgGRX4>}g(canVfdHvGZ}*T16_jHjWQJj|?$f8#5@o2H z&|2|Wg)mx_Kf1z9evU>MG3^2~p9!V~ghi+8Y9_|Z+2+1?UA(BxjXFlYvklD?$~h+L z(KQ1+p(4~#Xto6Gc6VAJ@fJioC`pBxM6ijq{>yq1uF$;(zCO?wNE(nJ)fxQ?s8E_1%NIss| z88{fU<@fIoZ*Ig4iqIRL=>aa}`U=CtMKR8l0#5?{^ZuZ(!vmDZC1ARu%GGz@fiYr8 zc=U%aU%vd|hqHI@7^zBZSFgYS?u2mag$@}Lq(^K3!kVdWI zloKmL%we4y>)7Lw2~MZw(X3t(?yBA&++==Al-r}2+&TfIP)q{1GgI(BnXYkMmy;lhqoG$8m4LzRqrL-u>{ym%so0 z%YXdG5C7Z$_Wj@g-iM_=s+V6c*pos?N?IHiNv zw1i`)N1<3wT|;L3me|wP$B)n7FnBpW_xSoNVDt+h#WnlhLpHei{H+kJpEUo)hxc^! zdrxazNIM|@`2k_FCsm%mW#|Ayn3VYFD1be>0*hSq-7qe!iw3rHgp3=5Mg zTdm^3nXH!KQCd+AVLvv82RgMdKR!J@Fg!Fg%H@3_E#RTgEY3f8^ax-4M+1*XCdZ~2 z+H8?2qa2EbR{b7d$QOtPS3JuE zstOse&l5|S?x3$>#am4QLL3Z47HvM1buF|)9rS6 zeJi18(Bp9h{Hs2%+vT(_JFRir?|UI<%8GsvGRtT)8VevN5b(qj;dnBFmUBhw1t=U2 z`xA+99wKhFkW5AkB?(*6uGQMLNF)$TMAErbu9z!S3K#%a04(QInM5=mf;65=Co;KI zI+M&7bJ;=$`ABE7$#gc6O2=cdaA#xfLadNze1vBthE&fb4MO_(;^OG}bI{4s&Onp{2RK##mzIeo!N`}LM6*~GQLzz@KpO06onQAqg&&D!| zV5yL(l+uM{y%kB7yZFA7dcYbl~p0!5|i@{&%5*^2;GVq2iLR0?B7vqnCRs^p47v1lj~rr%#Q z5{O3W11RyTyrH14+wE@3_MZY(|71gfX0yJrmfTp6Z*GX+AD#YE8bI9 zQn%^%NYn4BU*;c?7GrdnWHJy8`h31s&x)I7GD}X&ym!?diblOYpTa%583@qt%&D*` zEcJ(5AE?5HM%=#xs(!QSDTR9k`T1i*D&4f%+naHsw;9!b2UHoI^)>@Bl1(wG-*0*r zg>R1#o3^Z*k=46EY}$T*Gje;IW@@J%x6Qw5^R8G|TxOSpSd4>?Y=os&S8TpjhtK0! zbra8GzGcpV0s`eYY$m&P(Qa9=37O`n%nQ?2^BmH48}qH^*`>v4t_(OowJ<%7y-lJ% zxtEt#TwG7kO?#yUr)}P9o?cp*uq>j$tkb^ec3EA5MlsTp!?em}0U3hI?IdvKTeX7% z{^dy6lZg94@t7|f_Ry6t=nnc_9@mn~zOZbabJ-R=%jOlwqSv+L_t-$b6&siNTV<51 z6^S!to|`bwPhzNcn`y;uTUp_1WQ@8cfSqD<;_5h$kr1fr#ierD7a3i?7YS>bnX?Wq z7br2RmTkBLTsqLY_@{EMm@8(JnD%J~MXEHb^|fYadku-5qy6WvxHifq81XHX3TZW% zQizI}lp0S-4)G~PuM|rX-$0GCE_M)%U=W{2YxV zEqenUlf<=1E!=D|gh^cGlC`$L3OD2Cpn~f$mI~?kyh&}757m^6%SNI7gW!B z&9WE4q^S0&3my)oBr*+@>fO8Nm@Swgf>K>efGQ;L#Fa2Hh*iCLLjy6f%tAX*ilAZ< zH8?yJzofl}Sk1I{ck58bWTijoDxKZkbg?)-HTCGpV@Q*bBP|Z689Kwn1SG|8?tb&t zSAXW(OphLZbN9~uM-S)Ciz5>dI;X%$@O}@B4Bvb3;QoULgCipg7W1NY3DW1ICk&W6 zJ~IjC0ipBG-8-_5&)q=@M`Clk=FFynp`ih~4L%+jAD>y6M}ue<{K>wuJZGZo$K>qH zV_EzB;S<7SgTq76VeUVC@Xa^hJb3tEXmogXVIJSx`uaLlBVr=5$K}*F)@uS1RoA-J zE~$@Cl}T+4R>d&JL}WGP*w^v#9u(KJ zQ-+=DLs0^j_0cF&FKGJK(czW`s5)d|bxAOc8p`9;?&-b-zydhNV9MtK@oiOUtvGVT%- zegohTXy6xOe0Po?r`QWYjniMErxST(z^@~|_ySK0LL~SU(@5|xf$d0;yQ|NiaqISp z%MeZ?#@B1J&&0$ljjn<^0PUS5!IFrZ7}h{yCPvdCF$6QLhZu7TO|iOE;b1N<4#CIp zS^WI@^3x|IjKJqNhNGVtMu}~d5ZEKeV6Z{y3-?gjHSQ#56&|v&Kx2JA+J4 ztv<%27bPS&fe#&-7%lDwtIKTRQ$9Ije6%y%2Lt`l=^^)4Y^i#td~*MJx6ux+SMQ{H zbpHRy`wzB8mStNMU3;1~c#kjw2?^m5$b0X-gttx84jO3hr&)IIcYnbB!EcO+lA4}o z?Q_n(=iTpnx4xjr%1T#RS(y<-5s|1%N$W!47B=JI2u@@GUVJaOq{7tMgT2SM z2a-ImQMCbGp<{JiAs$bJ(b7r4yK)PcN*Jzu{9Acwuv<&zZ9x{2|k5y4G9F7 zyu_Qu`@-Cd$s|!IYz70KXc*$1ClWSWt-A4RPk*1uJk{ObJ7crrtIt#_M~@!8|K~qn z|Mb(lUw{4bpa1!jpj1EqAO8mkfiM5{U!VT9B1VSq_w_64F3B&H zSo$yDzGZs|MbY=Ux~wwj{ripr)HC@_>)BiGV}NNN3k`UlbJfy)eyKWEC{S@L5Ymv( zyfWOVYxalNWJ;gBdWm9DegIQJtiGpYWkL`@;V2N_0(cC(Xs5@+ol?fe#_3{gYI1fK zG-5Ih4iAG97#ZghKRIKbvCs7m4D=5T>E)7h9phnQdU|ShcE)By*tWPZzqGWlva;^+ zEG;i?xSTG}rgH-V+)8<;=?QwBZl^cw_XK^2iDeUkNMLn!X=7u}?Q!KQg=jMB3%JT# zRr2cPTrv|+3k{@3k1VnkU!wgmUFRG6s3hDfoMFO%qD{&Z!{K4XA`k_I02?Km!x)2 zDF-1U5b%bhkRa&XHWc!wM3g`{o{Yv*QIFdh3i?#OjzvS6e3}kebE%Aws8)q4_3G)P zN2-OSm=3Y3HWc+3FAi+&YW&JnPZ0 zmq<`Ni1dX*qF793lA&10or?K#=}0yOnJ5NICqkuC8iEoH421|YMFZi0JK%MOsin0U z4$-EM`ct&aqZJF)sr)X1s0dWizE3o#qJ~GRkdS&$H*}_0Y}nt?sKT?bI^H6N6-Rs` zf-}-Y>3TR2!N>{u6r7?ztf1ju-S2gIJ)6yDb7yBqfhxtS6s5vZlS6?j90n-$M@OYn zs#UXFt?>3%nCev9(OpBGN@zE>zZ2W4`4h>IB1eiM{TmG_kdfw3=r@UfPnryM1;SxB zzGuQo>&~^6wY6n@>6@+%kKh0Afhs|$co>LO`*68jMo11M_%omihaxqdLnD#E0Df+v zRN98$99nGWFkHYuW2w@q5>TfsIfQoXbYQw;uF6qfvaq zE}v(W(A$d5xollqvJj|RwY!`PwA5R+yVe}8wp%Maro%cpXCAjqjhQD$>~m8K4(kFU z@n{0Z(U{RHn;TlE7O75USr)7c4O^8aQI~3dcF8`oEIT9$S=Uz=_=C!#ZBekQzsNR! z2`Wr_Hw%?~b*t7o+&#a!$QHA?a_->lgt|*YIs&A%(HELN}(uRGMOS%qW#nf z6Q#Pmq_&j&%ms#9Q7RCa2`~*0!9WOCq4<=Ns!%BzTtyoT!zChdNuxioS#RGW^0~M$ z$d~dSH+LuXdC>2h0iTN-qxxOcs0w+r*+e=WLzrr-u~06Xs8sWybdp#V?fWu`d^V9w zV``?>Yc>-nR)w`WiCH^ZspOm6^=hM%&!;o#L^>7A(_*}m%O>;rRI!-BIgMoXQUSe3 z-&MKR-uB+feyv%pw`z^;X0cMp7r3;Su-H@zQh;7}-m z5S0LAD3<5886e~?iVBKYN%;@)a>e2gM0cm6PDO(P@q$6VQ+P!F3Q8uDTSTL%14xM? z5w(Sf6S{eZcq2RgRSyo-@w1{-yt}^-CbGM)cft%F(dk%O>FMjI`={@|`{BnQ?)P*d z&_6T?LE>Kb{U7f9*xlPhi;S^R@Sxx|@7%q6_ujp`_em%Ow?@XtM<*u4(Ur-*yf8X3 z-Zx0aew6dw_umbVjV*6%cq5Tzr*qBYvM(>Mxm>|`JP?n$LxB~ia{)80bDh621^s5L zWo*JUJUT+COO79Y_~Cxn{gJWJuC6XmFj#Cfsyj5_Q|zX;w^!cUQgDhSSQYUj!Kw&R z)eV2@pz`*1ZEv^OA~Rs-^hY|=~VL)5*WQ;8WiKRXegV z{Ps2kOZFtODp~?k!Afv6>Pca&LZ&4$CGMq8PtZ9i8DseL@`7GbZf*{rJVt99hli?o zCF&|i1i4O$QlScTFSRY|^+KzeZ_-W^m#K2u;+P*AA007`o2I8BzK)tq7%HW$7AnFw zg`UBOc6{|5VSG^da1D z-#7`vIpusx>?lWJ0=n`!5?@rOv~to*2^fkiQg$zH5kV7}NuGu8S{sivC==O{3SMC;9K+w>zue`3?Q9p0{>RwEa|uFC%sN}G z29t?(pVzwJxO*Qf%bl*?o*^tN(-Ymjy`e+`Zy7w#^@k6i{`t?Z5LKHHM$G5`{LfGS z`WL9VwfXJST*7QGaY=?E)~g}`fZ8l^zh+rR$xmH0t_^UE(C=t@y4!IcPOA-f_n zh5_B%w@<}N4omQhFGjJ7Sb?-Oy`*|nTd|9JQWBurl;BVbLV?)GFJA~q2_~iCS3kEe z1^EKK`21P1AvQ(`E$J|UyXiAVHim5OJq?#0dE8|246Zx-Nl9ebfK&!ku3Se z?i}o^u$PbVslIqYW(kwP<;B_6a}=eupkDL_SrJjE!Z3UE^5xrq{uAGkD-bYEPWBA+ zffK+S4wigjeciUSw7j|D^!ePO(1y=vTU>OkuA0oa>)7!75EIYm^YW8V4pMKmnk*J0 z$z(7V^F<b|0K9qo z_64$ImBD}%<3S`)^(&%LidAU?+F%*m|Lhs!H38xkrFtT8)i+p`;AM}VKHc8mt!*_b zjS4pbZwOlciO2x|6Lb;MJk_r%QGTBtAR?gU=&8HwoL@<0d{GRn_$iof(0`7P$kV-{Ti4cZKEaZ-h z>0dS#E|utBuUJUsGO=tbQYvSXiLfF{2~lo}hW#iZosdew&%QmSlQ(@DBS@gJyJ4~VftHx1jod* z1PlfP-hdw!`9eV-wG+IM``ie(TCG0>s#KloHc+L90Zn~-R4ch=BcSS33RHFM{`PmH z>aVI^^2QTE1*#1C7JKU8R^LSa33ULeKO;?sTKu7q%kAFS*jQU#TCz{CEYJG_KB8BC zzY~$S4h4gpatK1j!+@jO$8S(797u!oniqwvehXCn=1}-XaV5o=wCX=Rw9L+7#LA(0 zacEI`XyG_ek-|frLy)L{cNpn@rxIn9_}_t3dT2_cHPRl9*OGl+XCw^S&bhJXSY5Dg ztS!)C`TBx*F}I5b(;|q@&Q~3xZ#AFdbJH~Uvrf&;;Bt!Kly%x+pIuqD z&)a4YDT-7xD@(Qo`z-F-W=xi8y04m_n_648sd^MDTCh*sEvC7dF^hQwG&?;qI|UlH zOpk!(=O))zm{{CtSyq?k&@kD&Z+&BJ-sN0G*t5Chb*}{d>m=WLz_a4rSXf`Sx++)mFBmdoL=2*;W?qOY_`q@Gt3X0&`-%#MP)=FKGaaT&|pJ z9d4gpKIO)Lw^1rg#F&mHKu$tXDvd!hoSzDuq$m|H!LoNyDj_uhBoBcVsAKe}zkP|0 zm9i;x(0&W3!WoeWXah7JtKv*y7elO(3G{;@`lF?*b%mA_6 zhN)s|*z{$nS0#Zs4FK~=Or~@tm`mnz2~6C@Lb~24gG!}bE}JSAv-w;arD5L8=2DHV zT0Wmnq5M<~S+dzgmVOYESW(I~?ls%oX*RYRLD< z9QIeY>e+m{h!uakktt+j=_uHae6^V54uIK2CJ{+s5)4L?v3$K0Nk-$@Wb<$jd>A^= z0HFk>B47USp@vl+BLgR{tSA7tVJY0ABqopb`$kDj0*O zSAv|NVgSm-8DS7Bg>={UOQoVU?m~nELH-2)*CDW{;E%x_Qe94mlWfg{)}qbeEVcY2 z$a0V+AYe#)wjVw$@9ru@1wx=EE>2Y7X&xRe&~?;`*=p?{8vKzS%84iusQQ6G)%V|j z-#;`kHf5SHPfg)7nj9Z7jZMr&&WaGZ2emskAyAGd7!PdTM-X(rlSsSY38w zQH_LGHaC!da%N_1Vq$1?w70+iURM|DGSAG!#m%;O=|0{&J8K*qC}sqaRi)O-4t1Rh zjYhUw5#q*wID-@o>8M;G9&9nr2qSNGcNZ_>;L)S{{(eQYp9oYb4%K#lj_O)RN4x0c zWARN+aEEsVelm9VQ>yRnQH4sNE@V_hY3rB}67r&iLok$(qVdY8gFwT#uXzQiLIAfQ zxgqfmjr&jn;U`6=K+QvXs@f93u0xC$tgVxbgj*+slTZ}S7%c)+QKPD|%jVVg_Z6rD z5m(y#dMPo4;n+6O4?=-xHU==kTrpw8XvCPrWOa6ZjRB_OtAbw$P)>gMu*p60A<%Lk zK*ilqAbK9Jvb?hm@dl%4(lTqd&zZP06os6@(UIPP0h4*kvAVSC+MwFn))sQ1d<0(p z_19+~-k)AyaqBlhSTL|v#?}U?5(*oPmvz`y0c#^x+6)BH`4~(5E@-YRPz&K6?j(q> zl4;OaZK$h`at`-v^gk`a`Gb>vT1BZ{mEvCpMyB;5Ml?i7^|zu=TblFL(C?HOuNN4RwcfBj=Rg0? z|MT_V|Nh|S`smqH3`>jzJTk`5V+cH-K0SW*3ey+ny6Z1rp1ysHz^lLg4Fw9M^&E31 zT7^j)^Ca4XN0YOlkfQD+6EFLmpozRVbW3M;#iUKJ#z5{2v`Eqzke>ooAl~W#RYDR& zBS&W8E#h~$ln&&}A_66V4#JIN{tQsVr-AR{L=h;e<`JkOct=NpZIV$zpXf&*n(T>c z6%uplxx#}JRFcMHGG`UH2E!Q$F(4LhsLpXPprbm^qEI8Mro*r6tH-bD#vWy2{X)l5 z?L{;kS#n!-PRcakMJ<-imR~#cYsGpY&-E4dZ60H3V~lYrvkl%XE;;tv2pV1iS173+ zwP2iM01&Ol)FGoWUMP%Aj17zqclGu5^!3^n7w8x7^z`8D?8(*h5C8c4=YRd{r~mpd z)uOr$RDHPxRDJlzKi~ho$~~#MRky0h%5BBfBoxAai)&D9ZZTi(N8}appux~ zslnZ=pMO@9OE47=o?jB2!Y7Gal7*IoH`gdiiZ!q*g}^Ytz_eVv ze~&pI;=3yt=<4hG@y?yDo^E=ia?CqDo=7^KDwPUi5l=hNS}k3vB#XsFp%BmKL)@M% z2Lau&x{NuW%l*B3-90@R8$aH?3o@C;R@Rpx&<7LIcrm-Su{Jk1yR@!C=H z`vV3%pim5)XC#)4B-626DU$-LT+CEtH@a*-Q?6Gk%}SwC$mBEOkRJqrowj~ph70K& zB#T@su8ylB!AvfNLLy->N}*7|o6ICq;FcRTHKThXwtgT;6OYBj?;LLjg!lF2$?2m< zbXN838Di*@q)nwg}0^w4zC$-%}%%#}tJ%9cBF$xq!Nh4|W_xd%xQ@wuuQk1Y* zg4hEhyW&$%udY}iM4KDBY*(a-n3Mulf>j{_wW!30I&n9_q;O`+t1GS1NQ?rnuTjqN zqqEvpy;v#KwrZ(#thv`}?zX6^mQU3hW%O`;yI$XEP1KN0q3lHqvNr*3lGep|{|!*pQLR$? z7GwJN)B&Xaj5Hal=m1q4>nocpR-bFZ=U(#qHr+no`u`I^m4V{?zYnPLxYxp=&7j}u zaxRK1DBJp~V`F`Bb=gicy(OE6x=ZV;;#nLq4x8CFJ7G1CQ~Sv>VYg1q&6?(B$LD6o z?bazeK3}lR&zY6%*6BG>q!QocHV`$fEL37bdh3kIW|>@am>1`#=jSHu7L#puT!E^Y z$szN^pm}mgfhz0Fm{h?t60g$Nm3<9FG|jfL?(n)-eV#Svnqz|sQx2bNIUI0C!&o0y z5q3MdwI9-WHkLNm7HIcJtuX>sV$TS&IP8{r`|PaQ1bKSWG-5#`=O!KVGY)!x=PrkM zb}E!nuZn;a!s{#ZP878?x3XXnxQbrk7wxl)vhkk-k8hc>nkW8}$)~ZxRazCSI)!o; z(^)bTFE`57?OJ`WdGh%DQv5(ET&2Jhh?s)nM+jrKeJOs{5hHgEU`sahdUSR52rG^J zilr!(LR1gi&Z-_ckent6|Mi?y-R0P?#(q1 z$h9uWx+~~+M}l6=&R`Xii3sOMF?&Wp5T%4*Rq;x-Anw&u^gNYIq%id-!rbYln$Kop z#X`DJNZ}F*GU<3OlcbfOx~7udTPw9H5`!P4;BfBOL6`3t@S%nzfrL7-$cV*up z49IWSV8qFVi+BUhTcsNC+=k7Fpi~fFD-h19Z~^J}1PQ>V^A~2yz%8WzQWj%2cBel#1*lhKjgo0hH#DS?ps~pb^_F_SyBoab_|(MYjJbbk=-&PNckbOC zpPX1&TXn3gAaYfO4ds#POnqoCoD zkw7$>#oD;F)jXtj56&GAC*W5DBv_{K8yq`taKmt6%V2I*UE<3XHvPEIiJ6h&e= zkYGnYI@vKm8jP75#(?p5fB0~%#H~X;j96LuGEJ*x}x1|x`M*vpygU1g-L>^ z2vElgc~O*j^`fp52MK8J>qdlv$ncE3ER*;YRksZNEO{1;UJPd90%BB)u?<-lLND$r zpo2=$a(qe%@Iz4aw!usmi)Wn^;cl(FA8x#lL=;*|Zd2)7U zV0dV7bY#jh<5*i>-rQJRTMfoz<((bK#!uhBC!+D_{OI!HkOot-pPh)%5U{1$#F7XS z5hs$}_uH5qF($kPkOYtmpEf>5{p9f=0{uv7#twjD_eZ&%nj=Oz{P0CSmzjZtfV@){ z&XP$;tbI~PHyS9_ZP4nLMwO~H5l?xn-njWKi|PspwGa+?c!qdw<- zRhS%TEA;Bs>D3jUqJ=i2B`3$!=n=&(kj87tcr~o_DIMe;3D!f^9ztUTL~zC>-I-&O zyt;bw_RZrrZysE8vs64R#>UR+gTp7{hEITg)cfq+yN54cps6Sg<>Ou8(eO|@S>YLX z&mJI5_wZtigy{}bna*Z-1;~QQ4UNGlLNB4s($!RD(k_y|BB;bUmbI{U5CVpEq@e{S zXpSH<1momE4xhFa!Hiu9+3ivkCr_pqLL|Bc9jkqXGqSMd@^b}VC5Hr^m$6qBslhFR zJ_=L`Y^r1cRf26%FAo_{j`1py7~O@ZmS!{8!DE7J90P(I8pLKB@$%H{1P!Qi6Pk?} zB*Rnds6d&=_%39{5g<%9g={NNp=~;1**3wUM03i30vRd#U;Iq)y~~$t)FnDonhUq^ zYMMth_roQ+`sDKB;mx&rSH$o`C$nRvKczWC>F!t2w&WQp1pb72C8@_t|Sl@@^xp5e#4cfo0ZEdllP_AIZjMAGr~O{YH+Tm%1Zx2~)$CkmNhJnWAIg0T>t zRzNsU#XUZ^$LsP1z1&>S?+HhPxpJ=9C@0cU2+WC0oZIgdv*|*n)T}1+=|DK(5BcJm zxCbn8*aw0%>+(3Gsi@oM@`wE>e3cqi%WJEP8yhSBpeLG$Y&us%kpN0dWD~SB^b@Nh z`Q4$AFAqjE8O;_l<$5U%cC?TM?@fiNcsPRA2E3u558-$+77qLAcD> zL*k|xU@QcQBawQ`4+$gY04m`oajn4QDDYO7Y?X>K3x=8LJ? zR;|)37s@%v1qxI(cUxPByOn08+^Cd^PZe@`?f|GjRlb;kG=XqB6OSjtA+g1aMT6*S zh$OPHI}#_Oka|+#L?Wn8qXaqfg#)gj&&jiQJsI<7=$9&7$R`ppKO~@ZGLlQj%6NC_ zXgq58lM=v-PSC}s&m9iB1*P(IT&GioD&&ROMMbJGAu3UT>Ht+lsRXDB#3R1AZYd~e z6p9s~N-lqcPmwx-NCM-B>Qq#!ieWejMI*sTI1mo`G5msl@7C5gK-KS2s^0)rdMG~C zIXXbqRx`A-72dn$N&Rp?j&QT;&m>mE5vno;F!Y7~0IT{Rrr*F)k#8?SnhfRpf-#_v=1b>jZ)!Q6`)EFg=zHA7y)qp z=lrG{x8*RheTz?Z4y^)*)~N7M=P(ed-yO#7-$7LWQ-@LU?+)COvKLmC?C#B_fPXz0 zaC%)U&ei$VCEMD{Jh#9T|K+R8Hs{)cbIq|tYd(6Xnr|yl&CQHE#J4()<7OwUGu-%Z zf!pv|LDZ|V&Cuv?ZrV0G>9Cn;NjGPiot1micP=(DpX)%w^ zP7TjY4$p{E6(OpbF{^phY96u8jydKg7VY$vuA2s~uh=)&7hF#I(gL~G9qx@qpL-<| z!u+tV;FN290T1Y2cQ{vUNRKs2EEz3}^JuLNL<7b-^W5y@>@@c=oCZyd&X`Se)+vX0 z=F)utQRCwLj02I@sYUzDl6_{;W?rPj^=b4Bp4w)aw#-bfyqiB4 zi#+wPt}xTN`coHsE=8u)1!f1ddIZ^{L!y2~xT=j(>G>IIK}!UyQX)_#C>1K*KRHgO z;>4=B?*n~QVd{*A{fUH5aC8S)%%_h}j~<*qID35F+HT~siBdU74O_9-168VpbSjGY zVu@}G3x%}$StpE@O=eQ@jCxX+%XFGrRHX`iSBYQ4d<9e`4#fp#yRmn?k4sQx`Nnpm-m0~BTg{zj5eq+>mx`rxsYo=){eV3i#d;pAcm~`+t6HcQan6G+ zC}C;Jq)Yj9xsWPm8vDD7Kp9+`@Lo78A4W`2bk;PDvSnb`D0{c11+fDX61E!*I*}>) zZJ+ypL(r8y;1#6;qgI2UPT`9319^Jcp&#W4cS!9I76|TNBwLkya8?2D$?MmOQt>BK zygo7gdn)WQSVR3?7b8J_^EC7tPQ;Tsn#ZC9t7@H|5}7(UsO;^56t2P<;$l3Pn_pfY zF^&It=gtqZ(cYcAcfR}XJK+oO^bZY=PMW&=dvR-EcyM@Zq`QydyZ7&@C)Dn~zI$E# zvGm^k`vb$nrs*lu^z`u9=-}wc@c8J+#5m3<>hAsfeFFm{<74AfQvzd+jhe>rVL4Wo zLG#N?Gq$<0iHZKfL2-$7r@Ob;G&MQDyf|&KAmg38ckgxG9~vD-14hP2hen1?Q&XEh zZ?;+~HJkOlUBzpvJ39);5MhxsaV7C_{#&4`TFq6f9econpd_kYg+NtojtD;hsEcQ5|x9Rh1IW zFIIX~7Jadjc-le$m#SJt%_&g{l(tbDYwLviUu*+J?o-3uPvJAj@H&PyMll6Qy!dc* zgyU->q$L9$d2ttCM|o!law#SS!sOu~R+aJT$%&ciu_>DW^z`>($n^~lKxonJq9$j} zQ&t3~MkgmQ-sTn^Yi_qE9Bv4F1Nm9)ZTAJ%QRNpRJLnw9#%--7ZJ|oniXz>7lS`o_B zsfKuv;zYVD0-xoWJM@VzBq~L-@r;;=kP_cMQJ(8-BnCnLM>!BaF+V`4W_){}2Le)U zEgpqqPzau#&&5|J4G`p!0EcS9oSqP?-Q7hpO^;-I(#h1E5?v?s54-XB7%e}2&Ww2V zMC%0d&;)E414Ma_F9lDRE5xa3G=xu&#Iz9s~snBu9Ko zpc9hzhV~oEKWN)6B2q3D;t`-qfXJ_rgsvVd5{IyYUnot&9i1k2AgV)pkPZpNa3Be8 z*hY)AZN|?J2uK>^U2{Onm?4BJKVu+_0nlzaUpE`3V*rhRW*~;RYuswTUoE^1uBlp? zyi+2WEKP7aMLF3peFXyK@mCr2D({Mh8rrX|;@B1h7DXxHE{CxUY$P_?(0+W7^o)#l zEP{NlLw@+8AjTz$UhtnN#%GYYbw>hygu`dg@GT%E9#coc(fRqyPoF;h^Pj3MrQXv! zic|*u*MAYH66yd|N(xlH6NRa3ad7@hfU38mQH3z#J3!S-^>=P;y+;^J!KSwzph|Eh z)n?M4h#rX@9Kx57&qcpUQ7RCMB19!RS;V0fazc$_?njhL?jq(kJ_SM}RT+vP6x!T& z;(qf`MR{lpfn&3#2!KQDPmofqB z$EZK)f%s~kJi#S6kWOPdH5x#bqy)!;IR_&O3o91c`K6_~g$1?f_s621P%sdWc_Wck zm&*?MWqoaV!)aSw9G{%Tia%k-{Lg&=@7%k0zq|YUAIO>D5)4UKPY)Ia1g2)q^Gl9- zhus_UuQ^v27wpc>^>iig3;8$P&R{GQ&!zl9Uoa91#X{nFohCoTkNlowCQ+!DQu$;c z;7+9JuPUC3MdFcIDhBe0eEy&}UC2Ze5T1knpvUXm^oP9Q9)r<9Fd7QS!*2SzS@i|n zo33@|#;V5n0-i`B97{ty4uv9tVAzimqVbT&?S$YE3i+b3P%<3{znVx!sU8)NB-07m zf-o9S#fefy0s+4}TgV_8(!_Bq5(Jlgh?33X#^3-}y@jM(Bay?Cd( zjaAW;x}?z(kcPODWM@$rFv$KbR)qv?fWTN9`87=&sG`1=*Z?98ipAai2gj|0?fOo$ zTq|XA@p8RL7xk4~eG7sFWsn-ggnh^ot@?JOEZ(V#`RPAm@cD5ooD^|6)9jTXn@t8Xp4sZl_=zj^T3M;h%sjptxZ=qBq zNsPk1e(rkU^SVNQXVC5NZ`!?{Rj<$E@_IWkkU~NVQQ;7T>bJU7zd1CGrtg%~fshQG z=GLL{3NvY9J+$iEhjHU~hvwCC{_rqrx&@F4Nc2B<7&-qZ52NDtVZ_S8G8Y#%*Xc>! zy}96VEqXSW*16H10aUFCXa!nXvMn!K7sc(=(t_1tGYe2fm`R~4@i=Z601}XzpIw-r zam<+=wi$X=)@l3f#Ju={qBE>zo5MamH#^?8{u{Ne^pufAP=Py_}uxwPfYWTJ>!R1TYQoV#36BA`^ zr+)hM(et-&pJR&068`%2vzOmEP46I92ACyug^3<~$%hXJcknDEetdKDP!y@K@GB8L zdG?Gk5=mrA@F~h6NN`1O0_3995>S9DLK|WRsCre1!I|n*@}nHtns@JNt%ld*3!AZi)O2ixnB0~i;H8aY^_nI$#)^0 z%cn5QBPNrMb1^9A2~?%I*&il-I-<&@>A4X7mQQ7~iCivOZIp|}4ASFnty!rxD%<-z z^;W&!tbr<(Vy#|o?GT@;h*$Nk{q3#2t=8UFrBRN@!>LRn6!v>O8?FudgU^?<$y79x zPnVn3QlpZ`GFHl^@)=O3T*y?4nM%HSu#0XatkdSb6p%W6^oSs!II71j5CJUxX;Gx9 zuRxW^1`ri+R_Tsn9_={D<+s4lpV40lAt8wRs!j!7zb!N4jErA-eNjjOfkCG*FAlJ9 z{_34dP%6+fu!CZEfY+*|V*u|R@}x46eAiYd#|et zoaON7=;VyqY_-xOdw*Y7Z%=nW(hQDFj4{idAMf73hh(D@6V?U#U!O2f^$&s{odSD0 zZLv&DPlE=AxmO^*G!!y3H#fI1Z2|7bW=9ZTz zC0rs|(LkvT(?6nAwHo4iOYkY2i!CEi!AgB{LP!Nd*Xb$3f&m?=8j)Z?RCgkYh7=;v z0D3oj_6&4{;UNZtR4jr3DYzsv?o-(cjl{VorhmAF^ev)Ph^Ol-QG?n?0Lcg>?e4O0 zLA4Z$LVE~NNvpQeD#4Fhf*+9(BVC~-ur8i=N?Y6{K7$9Z)x?oJciqCnmc$PihG=zf zS2yHRDxzo5lj4Y~en9ga3a$!=ov7<8ehV^UJ7AfhJX9Bw_7Hy&T;{>)(UZsctk4?@ z(;PfHM+}BKx(>CYVevvCluE66J*JsyvyGOgBc^ezUCVAK%}61c^!9+p=xBd@a&{Io z_oQV8F+BtQ!{cL+XAnO)JiHkUCJF_NY6{z8Qp8W7jU$M7{8j44Be4B~&amJ3X#6l$ z8rRR0BAI;qVh{CD&dh?RKo!h#N?Z(It4;zc+e<~P3q|Q!`av!w%o;U2YHTBVOexqF zzFeJTbbi1*0Kyl|sYZ|~nNP%4Q6>`uvN@ABKYa?x5EH@!I^kyHF(=^i>f?t;uW0s# zVindw;(b&h*bM?`i4;YY3eCgY!Q_TpM*>vgUE_%w_{3yPB7ii!#4r}b4bz=IGKxYL z&RtlNWKTvECBp{Y@)fwz2UNnP62hFmFdGX{B~F@%Rh>S6j=_V^1b0y;dJG@03`?5V zDei;zY&{^MPe6Dncv&pJZ4JkY9*fH@fp~Da*Y;13NWNA<6>+KRSL_){MuNl=K!KkOg+MoY=|4k7VXY--;q0^{3jzr2&MnzD)&^_$uY?YxB^a&M+W| zcDvtw{V8;Xm=5ryKoxH(Qr52G#h1^xi$b&Ga z=wwIZF;}3sg<;Ssjux7Xkw}Db=9hSJfe9SUC#Hgqra3OjOiELYt^kYjQdkjH>O4Q^ z&#SWiA665rxw>)i;OOw=?6i5#vg};n@Oj;#AZWwqb9%i_pKp0{V{T!=Y_VD$^J9|} zT|I=Te*E#y5BwGF$G$=E52oJ10W1*X(-XJ^TQV~{v*~ktgT9ST=ca2TUPy01Tv(dl z^lnCy5Ku$mcqCgXghdBxeSIYm_ItgqXd;rY6|3BAuP9!5iaOnYh!X~dC^c715#eftBdJ1k(FsVm)JGZbZDqA7`$rCD7VHOqV>jbKV z6sWpTPwH>q-o~n~Afbo`lK~;!+~_UFTwUQV5*t{RT>w`oPU5jzXX?cwsW#yX;c!4a4hOCR`Qibsa&IPDM%K1aQgLf zeXCJvRtZ$qaI1uvLNQ05R@Gv$n9XF9g;EZ^ij2i-K3hohm+xpW9HP^xWFnj^q)OF1 z3dhI_2Z&6?B0jaqOT>byM3}G5=|&S^NQ6T zN>ddrs!*Xi>QZ@PD2mp6bbQ{{-ZF5mWfTuX}!KF^A0)3Ld3+gP)0uFo$o%q}ljR+epRtM=6u`?Bapfe2AK ztTcZUpvpEgq5j1e=4VJYv))py3h_3}gg9BJ(Huxss}$-&Jk!igBOp3f(?pA`Q*&mM z)oij`rWWUC*4G^3uib33AaayIm6=9=HnIK_plZ}^8M9l)?Tj2-v`wun%&sk2LF>yl zr?}SI5Z6?mjm6D1hjZDszGS0I^>u<)>q~PhXbc`?c7kM?v{|NXR`bGw&0(LlS*PbL z({|g;oM2Ux<0IoEgX1GZ=IKex>@>)1o|rI=KnSKZOlzXy!NGx{k&%I+A&Auw!|!)> z-MfGP?!9|=WUc%QrZf6DOh!UMFJ{SXK1GOXyRMGaPoF-z2G=4)v%a<=9uX+Pj1;9J zm?e1D6=r!b8DKcxy+gdJSzW$;t3VZv`)+P->-Z=drLdIp0SGg})fEI1YTvwirMakU zbIT;~$qT~_kT!<$BiJ>#7H~zcUNv{N;)w_*>vSfbOhyil4_|-&{N~G-_rLr?`uXP% zzyA6K%;Mkv_VL$WL6tYmKc& zV~a+AxqNp2^r%!R6pGn$9SckWuOku-`U4)H--Y!%FP;>0!goRX_P7DLn^~1SVM?pkHlQ!$(uK7 zIzfC&NSI^7RcI>0luO0Mm6n6%pRF4&hAC#I)+2l`Q_V|8iGvjLj5&&@9{PR>kQ zY;(R)5MpzgMt=lrD%;z%;H%e*&8EUnMOBp&%8M>lrc%k2%h^hW9=k1ltb5Y;xdtEzju4LZFdL`7JH_{D>r z2d4%aMWa7@WGDDSoiBl4v{j;kMfXp8d$?2}25lC_F+LaG8r!zNkE#QS_>^UqhN4rG zeZxa{=#u~bz{v2d!@lNqSsXUCMZMqM-OZgJ`}&85hQ~3Bk3&l78|d%p??XnE&^JKy zK-1*py2pcJ(HM5f;elGWLDOpcQEk<}NK^dW?Q_9PKc(NM!X735C)XXlKd-u8nNA_#<3 z45bxg&JooWq=)dY-sSLIxJ3K$Xo^+oT!i$P5HMXp_{21VFl0zva^nchcvo~+M9CBD zh4{aNu!`Z04+O8iesF*i@a*UTRxQFRXh(L9#O2w|&6BrpQ7Iaams=4~7>$RNd-Uw- z!<*|%*@yI@xXMC|04qd5kOhQC!0e>dnFCRgA}`w8M5#!WmQl#*bAnc=qTFgBh6)-- zNBE-A0Q4ap*n=?a#o3uaD#Sq)@=-ikO5k3&rDyf4%wq`5ENx z_wN;`QpicMr?-FQ#(zjgbm`}x)hLgVviF~6S6oTqC&jH0e(~kY)yI!06AQ806@qR) zeIicOPNswy)s~|2lxSBO;FKy-sg<9^TzAa+K73HzN;4|_)S-5E1KaAPK^Pnz&Ug?s z05J+nF-;r8!ucA_7F8^qF)ci}dVY3I16#Z}ydAQXZ4G?{G^~n^=QQEO#PU^xn>?p* zm`n^tR3Iw(@HtiLK;mce>=_0&R_Aq>3#<9Gbp|}c=!9v_?ShmX&*u`wd>|h4L6S@) z{PEakz`wY*Has@g)zd@H`~H18sJee2tity{`~bRh_io?NfN5rG*fieL&mCRt^R{fY z6wjnq*H$(?8!M}e^YhkuyLHpMS=z40((!aL8;k@uHr4{+K(dhW1-yw&qP$g46|?b7 zJXg+wb#LsoD%*81jg?l7eokw}LbZ_0CcQpa5HfWay$=xU#b7bgo8{QGdW24EZ4pN8%Bm&+YfSeLhzJf_-2kH-^m~xKR4Gx_NIall zVJN;1ssSW`| zP_0BFqMMJW)A4vL1d*py$*0mW^e4TNN72toq=|%l$wVj?2}ES~y?8W`PDN9A(Zr8@ zi8$dWYBog!S?(wmi-kP|st6|$!{Sf)nHa)?G#Or{P!x^+LM#x}Huoc96{cS*?#f4v zs)(PPS%tg`R1u>33RH<-D&5qN0FzK>iAO^>p#+NbayLUEBS*F`otpr2B`WI5ULaT8@ina z6jAy^xC-eb5s$~?a=HATwTN#S6!I8AmD}r8r0F+@f=~u1b?eZ0Jv60(E!{$wZo^5p z4~@s6$&75@9(t>D7#ZX+O8Fz5DLstXKRJvH$D|M;n zX~bv3d2xPrb;-8OjRI%qad*~an+Z<_|8kmbd>#d&IDffmHWy47q#0;EToI1{~^ zot!h9EK_4MlcV;z>7_->>WXb;Y0hq)w9bsrNk#M4Ni_hp%@C!+wu@dBomGK0R_522Y-@{iIIpkRR~D_HA-5`afh)LbOYwTlo?;h4lP*-=i z-ug?i%y}&y50z^9WHOR1q#C=8t%L2>{#LG(-8((H`S9WT{dHS1Z4*CVF-IXtz`= zX0xf*{&s6`3)NwX$`h`t)VAxXOad!Cmhjq6y;Lt{i`jgoK%Qf(9*zb>(O@c{24|43 zm*bg4eRo^?2MpFJL=gcaz+gcNQizIYfhzR8CkirPxr93x*C&EfsYn1`U-2pWdjgMs zehzt{vb&4OEwJN)5VaJdGJfb5fvpWxfvpD_A((>6+lH>(hp zqEv(<@zO=j9xX&h%}WLmwTQHahJh%Vh)e?cq$28Fik)dZMnCw!A2HhR->0wB?(Ux6 z-l36UE9M59WyCZ#I65>oIX-Qj?H%kN!S^#WJvwPZVo>iuA7VzvNAGucjhaj&rtyK{ zq3+%uem`P1sGKEt=@ah~eFOc2Bg0@iP1Dodqk3j$WPBW-+{Es**ZMLNYFP9qIiZkB|w!Bjr%Buot}a;&Gv}^A_oV1 zXAh2_(mfL{LE;+=Wg2#fkmnT(qY~5h4k|_76G*~Oo=_d^fSUuhL^Dg3s!$*Va$-`) z^iGAa0#!tU)W4FrpaLlrg^J|N2QgqK!MW&pN+2`TOK)6tf>T8F&>_u6q1D7Klz_W5 z`rF=y{Ew$bEqK7K6QWLa*^*C^iSMn0J)Dt6TZoj3oq;f%6rZY!qpPxjWeUo)`(zhA zP~O_wrOwNFG@tM7AAmH{J2=qY$6KS!G~k7?O|0F>i;Uu(E7lUUn=mr%L74G4-2JHC{Sob-^#rAs(x& zj!!`4c6=uIWcXEzsE+`oXv82fF7ZzBn&j2v%f)9!L01ggY67Q#dd1gJuvlf^%eNDsm@g3t_z zh?wvp06%{7M&W=RQF&|Z@3W%QQ_L98KYiLdIZ+4+CE$G#=n*9;OglF}|BTrNRqvmj z9X)!4NfPtS>E*LWFQ~Z*K@?M#q8B{koZC+C6eKBkW5~L*zP?zB|vk*?CgAj zU8KRHu_ZVT0}`g@8s3f|j2vmFVrxmXi$g{6BLr0O3NNVLT7?}sbhR;@(%Z8-K`W_L zNfWRx1A!&3gs0$u5wr;7L;x}a5krh-kr#1FXirp}G_pMor3XZRN|G6BfI3z&)U|3< zivGEPfcojvb1{hH0{Z-tc&IF(7{iDJ%YjjJ^n@xld<1Qk&K3O0gxHyWAgn?j0V&b# zm>yq#{@g*SZtGRGfhuBEzX7T~wAHB;fqL`nuU8*GqLDAZd=W2E22iCoeMp1!2rIaw z>Qtb2x3DT)Dpo~hC;_un@d}YQVyQ<}skZ(UQK2tiUjIUMEhQv-{qrxce){>v=g+Fv zbp46mtiFO)U%p&_LJQwg<4H89^e)r4p{UzHl~Gq4|3V1}>n(-_kixT|snVX0;4L+o zCSaSXhec;wctLoBVl2!b=k)tRB))W#cohJr!Jj-e25h7-ka(>+8<5EaS1B=|4u*xI z@F9Ts9xpC1a#E!dmgYIf{NU&?ScN%96QghNiBcVTUn9%XHF-~=r5^NZ{J5et(% zP5fjBVXg?>-B=*Vs@%IbFfueeJ_9A8@DhsbIvvvbx~%tfz`;mj`0$%BBm_dwp(?d&9N4uA2ZtDo%pw%_b2JhW(*PAQ1F;-RmCLI;sdo{oz<35)a{S zAm9mcU!%67Ni+zdJCTe(@8$-`@!EWW)=2^!V};>7Su4@j0c+ zRtTt46>@I@u8P%tD$4839rc7{ttA{QE|uvaJM3@p}G zy#ltsRfpKMbG#P`dy}bXsamWzE9F|DRLxiFrAnhxEEkfADBUx~d3XD8r?uOR#lz(q zT~@`Tp=cyfC}k6ga46v6cIVs(&nrf7M2@0#6vbVnDCK1nv4|hTB#K*pSIF<8!Cf?v zOz~DW6IW;FDe5tWlQ9sLt-c~nf-yxxUIVBKQ@ct~DgsqB15}_YOq2?D5oUGF4iX)x zSWpYmcvXWEpo%0QR1i%85IHYfJ6^ zn$4!z{QX}8s+xZQRPD4vwURFw4*ov{RJq-51*&2}XV|kCiG@+=|1wae$qabuTY%{| zxKiiPcpRF{$ocJ|w>pQB;g3)%90oqrK8)BuIgCW@!vK^1_W)IzUGXU#^K#(7&%5gP zu6i~XH`nbOYx5gUhik*(T(d1N&d$%#fs}wm<2H+l#(MMAiXz_Rur4oH#UxPOJP~iQ z%}&fwJBc(m%ZzsGX~9Cv!Fg`^=inv7ouUw+%PO-;5G#6Nx6qz$%se@2ot<3d z{(9EsMS5_br=k`Wtn3yfo?5U?&08mIv*YuYi6y&v(KcA)YI387(;nVP^$Y~U5Za(l|(!PU0r|47qgWHW;&Wfb6OPZ=v*OP zsuuF)Ty48?`sC5ghY#v-O3ASPdrjw17g*6>zPxz#N?k-@X?Xz#MeGDY$Yt07N-kB2 z0-ZglKXuRpfv7qt)wyT@fmDTxKZ1#oAkN4I)`8%ZKvcX`CgYW128hNy!8)OhdHwpu zhYwh9UVZxX8ua<|doW}_|NQ>vpQ%M9C>6pu(*_VMw{q{|*UcpqDPRH|wY&M%p zBqEsg5R=Ko1*pQLRm|m5`Fy%i$P^3NvRH;QWjvfOWT;)0OI4dyZVOn-7m7LDDj-?4 zh?G26i={H-u`FS6sMovzY2yjL%hym9K29dvH zfD{_39Opq0ML>EfXPeiHxM8g-Q`P6U#W1oz6srLrZXpFq&Q2 z-CcA#`vwMnynE+fcUM16{DucdMn=cS$0sLE(^FHH*|Et9emBE|V-w?jgZ)z$v&lS# zn4z%|u$%qEgE-?ZJ{5c?L!*rB>g~C6_s-oeVpUx|-TicfJ&cbHEarWDbOU|&y6%rp zP7IHYj!u{+XUvmkGZ@oNzn{+3=d5EU6L{9e^)>s_(zIn3cfo^F!(YD7zJY#xly-+B z6pQ7sK#Ex(Rgm_GL}V)ERH+C`mrCh!nTS=jT4>afMu|94t5t0~v7#Q+?hdHFx7$2C zID~X9kR^mqi1gx^oKO+Mio&2GCG;wUf1)jTp_JcF2sjG9Q{M-h%YFUOHUw%YSr90k zw~W$68S3y5dGX>v$c}hKB7szTh)az@1GGAjf?2pkBvB6tcme>a*&ym-Z-_EfRg{(Z z-rLy`Q`+7ti27KLM3kzC7Vgr48qUaA+#-0_I6R;p5L;s8RjAA8vAtc{LXmszDG;Vz zB&}uRkzPD`(StkT4{0!xX}9xkTgxn*PS4nE7%dnf7&blqy&Of5N`{Af`>7`d`J``X z0K>9(U;vRAiqqEFX^UlSauPIQHc!sZ43CY?*sRt?huLODf{}3(2CZ#r$-cZy1-*H@ zZE?XLiwRzK0GV7cKK33&bbJL$l+{HP$G1a-#W1SkFu-fokCZ@_=$JrC7fJrBn;vAr zho&QeMTtBwVM9@iZvi9%Ijci=iNKFaksg-_qcqGa3X6a!>Wj0UHsnEjuI34i{vg{c z+^~K2VE^1OO+|qmP7v%dY5((|*PlOQ(tsHG=p{Gy!Yw3Ii~xjJhS!IB+3dDXDCecK zGqeGcDkl?}m$0my->726&68IYM^WtA_4U&?uTiq5LQ0#U@@H%Fxg@h6{^*D|N0lEL=2}wy^b~u zh9VBX2uKOO!#8VS^yq3LAlm16d_k#D7aGI)milq@=w#H@HtIwp+5(!Kugf)MOaH_WQQ2fN;&VfAta6;X^#>*0ndvi zNkLV#N8T6xbDv#ZW2iiP`xa-ti#|cWp#T}pJG+NA;qc`u2NFC>g`|udLszYn_qt=bk#QNW0?YJffy+$m0mJlaV|lu z^sa2cCkBH|iR_G5giDblf=7Zn5jLVnDiXD;#CtlSE`gS4z9)3^nOaUaYR&iI{lz=o zt?$G2r;kLSRBcLAilUanOfS9|$drOy8b;L$qG__%V*U3<=r!6Pksy@QvHJsE$lKw| z0>^kGo+ZFiiYEcYgF48Rl0;H-N+WTJFmi#9!X=p#IpZ!O^+Uk)h%{hbaK`w-JiOua z+7=x4r9~|F%Ny&qr3LexW!65o>fV6#Fbv*fY7zk?u*}b!rl&_uj!A4~=K4e$m-!^74&%er%Q)4f4A>WMJUwA%A*W~)V?-{bYUBFRWJ z36V97OE>QL+`(w5w!fXoB*mFjI9tq=8kO4KR<4qd#6ppH7?H_r+#mF8Y^;UjjPV8C z{-8S$MhTlsi}ux(g_V^B1eO-(*VZ8iI+m9gR@atSSC=3VZ@M;|>#Hu8GaL(rqd}kF z4GM(3e!s`(a}%f%SL^X~JeH1m{jSZ;RoCXK*SqQSx%@tNI1-E{qEVbhsVWT7KIjbw zxJ_Ho@2NIwj|2dEB&K|qqLg$4nd0r+3%ryoIwMzwsi!wLPs9?CSk?3AhDMdBDS`9v z08CeEmv?i6fEx7at>LF;t#8XRh>V5(%fw|cee>wHOlqvda06y@KvrAtBq1~yH+gc z%e7Kf_6jdoONm63<{DXAbu@Mw@kBV6&mbOhTr?7h$3uxkI2`gob_j=jLBBhhiYDkj zj3`wq6)lu9g;F-l-J-%V?t31Lg}vc`E0GYpKe6m1gd}KGG7(NCqaeg1dmBsgA*G;H z1iugyiv$qhHhdAkM$&>$w&Wv*g)~w-Nin9FYG%<{6#{4*ONbzVVyRIjz*8_5q2?6Y zfRY8VilhXm6Tpk+egb$ArD8Z1rukjS2MPr|v1q7X19xUPsOkV!1|s$6$M3N!0#%I= zsBQg62UUtv;k?}n;d2axgFXeSLZRD0)t@0yN}ap^CQXNKBUTzipvvoYyWIirM#R4w z_AYsy_E0#0dJ%6RPro}1XzJEs-1zTwsXB*3OE`>cIW(n_vwdh}=P;7WVH6?9A3{#I z4^5y)C;jciNY@6HeuF68KJ-@S(Db(tqaZnqC@E00D>#M2-aZgqlYQ$p*6hwz8@JM1 zop-J~sGs1VGp2dlw9PuH*prPOsSMjaP-hpv#+6jh~`7p*Hxb4v>r z{+2D~fh)@fyw%atqS>8Ay{*sA+h%ZSoiWW$jajC-Eudw_v>;pTi6)d~!8W~UHzWJ< zf@RrZS(=}9&?&pgu6qJbkIq|63v-i8^E0c9R>D02<)W6K`eQQ zRE;Vo6s*dCtJ*+Srcy7KtNB`sd(Tyym2$l#JDV0twPK}N**iVD21D@1*!Yh)5vF5I z;%!|j(DS!%sZRC&{mq9DSX$`Q>Xx%A^?go6NpzryJ+*-Ijj;U+~ znM4R_AP_=4*cY6OY`s{!P_Ti7CO&Q-i#-m`3*?fHfQ%9R{a3I6BPj|9X4G3;T~68N>Z0*rcYiO= z_qy)Wsf1~4aAc^buUB+rxc8rFdQx3Yfk|C+ZLWFTo>0gY@H=N|dV1Uv6pNM@zt3vDq*% zBk_IyRf|gO<3P=W{oT{kLkL|L7hffR2zbP#xGx@oA%$#i<*o0FO40Gr&Vy6rLV7f# zyv^O~N-g3zsIhr)u>0T?0}O@Ze5!u>ub$(BJ(gXQ&hYVGT&gi0u^!Q2LcIj7h>KBM zO6sCI5=b8LdKgH5kN)!1vNZO6_XA5q~u5i$;^Bk~b2W zwpt)~V6b5rj7<`b>>V5sAN*qwR}h0Chmon;RsFJ?XE9ud$Hu5>wYW1)5Ey?}R(+fhcvig>cBy z5RdWsC=vWc;GCcp6-n9zF&^ITEkjyXpw+BXu=OVPe4-5@&~CVD^*uC7oQlC_)hP+jMAW;09?Cmhw% zej${=w{~!drs7f?ul)d0B^srJCy&+HHi0t?R9SZ(Ts=Q|etAxmif(8Q9@BRcgxklj zUmssy2v)*p+&-gqGv+sWE-F}vy&EJ| zVJzV3RD?*C|3uxiq*B%$^@&D7zCJ%>j-CQ z9W4T$wu!eS0m2+J^hiZ_LTD9=LSg}@IHWnuh>8+gQeu|&+voGL8GK|VTy|12v7{Hm zCDD0IaUhOceFUR#c^9?gkmQ9y8f1(*^~pFX{M|GooMDHH|zidfwOtu&^SMp38tfB*ZNUw^&+^zpU2 zp!$_=rw~BAdcVT?{onuA0je~{$on_CQ8$39pMH8Fno}L@i3pn9rOwnXQdH>WPd`yH zN|d2GU=~XF3RDRZr4su=Ebh-gyuVU?tF}SkZ-`kwe=@MDTlDHDdV(i7rB;U$W;{K_ z|D>0%+d$Rx_lDgcY6N$I!3^RLV@fYyg2;X#&<3g=zm#9gj7R~h4wbp;dn%BFK+Z3QztCVVjNSPsCDV7&m#arfR`@E%wrx~ZBywY0jt>E4KE6Y*R! zS;)lFahH1|6c6F-4|r4gbgowN`Mqw>=KA`|+S*DW94NKw^qwB{1|a_@!r>@ls^wNS zQ_AMRb5`<+OgtFz2gANZCKe3&+#aVt6xO*AXXn@N-YHh4;0_4vJvE_T zym%^@5zbVn5}*oMRH+I?KnjAuYkE%y5vyuDN2g7nU{#N0zdr+tlI{5nY8&q9EybY- zEs6S->P($Kefs#~0%7LWG(v2oKxRl|v`S$qc_=hhwXrk{5fH%irF zzL?!V-EHkPWhe1MW2;teRx9;NrB<%i%a9--P^43F{sc|{s~nF4P!vHPPbp8!<^wnARwWmKVJGU82wSm73v zv19^Ok{3l8s!|3ZB^p(U7~1^RBoHMeSd{r&yj-QE9LpbE!t zu&Un!RiacSSk-oPyBVq!@U3CM8(7tEfU2)Z(`|jI-xE@H=r^~%C6*(B4p0^JZ$^Xb zAYRLij5koI|L(XAQQ`Ovz+|9Ge|{M0~`DNV@`ZXnU@wU zYxFN}U0boQt$w+^JYDa2C=%g90lK!vpEbKP#?W_faHwsTv+Y3s~{WtuLlxB=h9h;_y^H)}%S zY~->{4EL-n3)a=eIpSaTnFSj+-E+)M*=Fdq%05FitA)AgC7XH4ZeDTBETi$Z>3ME4 z$dc9l`SjHIglTkiWN2`(zpoeTR#$IdZ+DMjucyEhR6mJW zuBo^=ey`s8L;6d(Rs>aQ#rjqiQy9XvRuxlQol|6`+N$iH98g0F6SpW;bxcz*8)UJB>?ov`R@oRcUr{)JHIIZD&=V z{{HvR|M&;!3z)@!{u6Zk@RV?VjOw+VI%OixWD+1u*0~yYsJCjOQI!?ADuWpo=f+mOx!oufGFWV?jcSp$eyAsq%cm-ha;aKKXX1%O z1pTi&q~uH4?c;5Pi`7!Dlue|fNwguGEMmFZZPj*~S+X64csfyO){h=PI);2Go7X@L zLpL6Yp&w;DNE#4JM6CwAHJEIIK~K3I70!qO&wcdl84WsAoDh)%XAmR=^#BDTDg>DU z!h>4>wZ#>PJqIX9(It^cshjiQ!T!UCkf6vT3M_>H-Xj@AMXAK@k0=!t9Eeh>{uf#W z*?_GQ?FK{q5Jd@yhu2g8jhAQ13uL)$jXy?sa#8z#aAt_D{~5!7L(7lu8aFQ}{xB$N6l*MktqJb$2{OG#dy|TH1V!@|^TOAo6pPHSu z*zL<38%tm+H#WfFuB@+n0)bquhNm!alkIJ)@Q6)WwpyhkRi&J*5~V6M8bz`4tM1U$ zt|^*L^k^=)2{M8ZzxUw5$k~3Fd_QP3P#!RqkTY!yXc zEvHkd8Ye1sT7|G;RjhZPfEpr;qS1yb@M<>vzKI$0jBU;n2?vt#MdvzRG!`Wggph&Z z!Jhu!!O@Ws(-@LrB=iptQX1*)xqF|#E%XfzBJaZ5>dNM(V{Mf?mybeR85|fH9-p4H z%-gJ399NcCT-^S1abpcJ)7DwUfa6OQ3wTD1kbJ$40niZ3wLQT{@Chq?z<{DiB68z9 z(y(zUxAxEJMIM)!3Lv8Egg^*Dft7ROS(rNHGyJNb!otrmMVulMVaoguXtnq71vlQp zNB#8eTZAzoXqoile{zC3fiZ%f8`?UL9vP_m1)&zrf*Ifuea&3$J;WSBpl|CoY|HK&YMQ3}!ibaD8@Z-h=H^K}H1P;e&{CA|sc$3Fq`8*vjt1^Ya%kA6#GK z=^7oaF$Jo`$rlKUrVnpT2Wjs5iXnZfC zQAJEj`%^M9ue_j-Nq}3Bz%lWv zL!#&O#`R87s>}E9FW$Wqpi0&VW+YIBM=&rTw!~N?xLC9a<>M}0R>>@_3yM6E0U_zs zP3(z&tf=(IN1!ehQBLhuBtsgUS%tuJEJ}eVd4mE|woyN^Nz{x|1P ziEUH8JPsJNSFz7)vP9-#fFsEfbuJYi3^$ry6Tj#jDi6bJ!aY6&>w5>(u3 zRrmJrMX6s^gLBYiUM;&o2eHLXBtx;WKUC&$Kjr`T6rJvG^lm zB^p?0(#^+@)Y;ccZvj=9g%AVMfC5!GKYqz%9dJs0R58q3FY!evBB^;FivPRgXVhCn zJeU?#L`^Z-h)`8`H+{a*@iENpqm!oI0h)gI^!E?RHo>4i(Vv}}pMxN>yt%%-;lzXw z9>6+350-$OI(QZNF=KRMd}MqKOTf_R=-A}Mlw}sH!>n!2?y$u&@hEu3OgxsR0*pWC z^#{C$x!+DR6b*U2E{|u^>-PpDp-d?s2nReqmp|kSM+3pIFIUNx!OU+r>ieyHt&q$n z6X{qo1Aa2*3%ChX1wFxtZ_~Br+<@5USX!K4T(mDO**DzIwe^*yrTK*g`||3dC*XBD zSJ%|NddRo7w!FT!?D1^)10J_$18pE06$_$yn=ay6>uXCJ8>?>jhTrdwCc=?eFcJ$z zV_~e8!GI?~l*$wE(UW>G=uKskM-R_lfBEv}r=M=#zb78l_Vk3y7Z^yGmqbJAQqA{X zi2)swDTE~YRu|w&L@^49sS>52)oX6sN35#7k>9mqRjTOp{P~4cL`N2_aq|1c{NLwZC24s@HcK zwN|ZA%AH-D?H=vcTh&^l)M(XPyDi8I^5b`oKWXP6WzeZe335R`lg=cvh{>k1`84FU zY(ANYhoaFyEFMgxqw!df9z{y&VmX`3@fNp-O2@@?E+jT|{!Av8&Bnt4S3Dks43bJl z<6@l$*(6Eaig-{&G?ikJkm$h~C{@t!LOfE^#4j2WLqC$LH8Cu}mMT?+g9NHb46uZV zc&!3)qd)<+2r~tdw+&QrFF(3Sk4Fht5if&87DO(w`$PMq)V)HaCPo8LGKxZhsXqa# z{?POfk)1|sDm4Jy-HvQEf&{8U0RmM)8UX$wP^BnUhcxmwsZ!M+((j?G z+d!4agYR-9>R*re*WK&$!4Ng7ygr{x4g-$*ljHwJluD1^KvYJ$KQZycVPHak0#S7i zO`}<~9HZQJ$(^E*xPvPhkkYL~!6t#KcqjN+i2SC{Qe z3RKCCfs)I>s;HKQT=cMRrgD~TX5LD$Op2v;6&hou6RQb1n`S0QXD3IdO+#p>!#+)4 z?~7Knkmb_|5v9@B)zbXzqTM`inZy&#naAevP}Ac!^SEVd%xWIDawES<^VHacX>@F4 zXk>V3cz6hZ{e!Xv+5P)>?$VVrseSw)-g1ls0`#3b_q)38iI;R7J$-#3ngvQB2vgz~ z8$b|K%B2SWvbDdpbGWm0u(h?{%48Fm$jY^1E}yJz)j*YIW&3dVN-X$@G+}O4luF?z zQL{39s0&I(gs6>Dy#yE10jk7@6!M;{wv-Sg+cVLhVnDR37#21H+{T0F&&hd+c_897 zy(U(TDl#88)U;C5zo+1hPzx3qtVUv#{tBFp099{)`U&Tcic*1rQ=saXUphdQqEw*M z$LFaOb*Yl_%a2Tg!B{MaWl}@CSF?zG2 zL#rC7Tq|WV@qB?wRciXjeL8C8<_?x0S{gQX>hy|*yNz-<>`NrVjontEoJXaFaxR{X z6{|(W&<3zpDpZSwTB(d;o3(U46N!b(&1$Y($QJVto;_1LO8(?4@}B-4PB{}&#L3B# zh*&DX@ONVfFv3zZaDEQn9cQrD6bZn-3!lwjiRHIq@MLue`65CX);cItrAHAMR8FHF zjqLt*AWpI%>VQE9DIf)+5G%jiD@uhk+Kd+sxs*U}z95=Hlwg$k-SSyJpNNr(1Nj@X2*` zcaKd>*c^_PwKd471eo>-5^+yD!AGjHd7PkB+}BUMQ_&L>6K`!b_V;O3cX(JAUs2_) zt#VuGX$NnaGSw3VP?Wm*remqyT`|EsM!cX`20o?L@vR*nL->c>Ra1?m7V#-XzFLO| zhmX$n8^ouF?-x8hK4g5(_^vSz=v07j@Z{ndHKf{b60spcqY$ZeDc!QX`%2PIV^cqx z<85!1wp)T#k;>a!;!;YoBfW@)eEWh}kp!ixi*tRHqreS^jWh-|B2s}WJZTF8B;o~u zLKrby5Nd2ld0JCsY0jxyzPFqv51+`t&au$i^nR$Lpdkbl*^Iboh2 znHZ;WXm8ICckW=244b$!RCiw=L>CMU$S~@)3L_KJh<$l!-RoKNxaSrZaCc&6ddf00 zJ!i$`2BeNuB9hI7l1V@2f3$usdBae^7`84{3 zLlG?D+1b^XFGzg(>C@YP{R?MIDfpHZpQ7oXz|c?LyaC~pKa@%_s7@{~4xZ?CX)F+P zK1JM*AD_K_gE<5>Y6BFz(fJAu6U@i}VvvT&#W|shmf(8GBrFwt)o>o-X;-LvM^V#(^=48AbzH#ZRuMfihd4T1B z57>^xa)7k}0d_b(C~-QbPXt03FGYZ3!E~@ps4f*Zf0XRfGf0mxij@(|^+iXomY~Ek z#TZk@AxZn6dF89u0l>glMJGC^S9}U*&J2QC<5JYt9uT3pxkfqKS`22yYiTWR42l=W zmMDhE(L((!qkL*{(v==(AuN~D@&~96?Log`hC$o#MPU5zo}4_szNYSy`jh&NUezs3 zO3$6U40KZd^Pg{ip+70Ssh2mA@Fp2yS?}CjTnKPh*G_OkM$kvJ~|WYJ4O_- zq;G&KvGNn5qL!EhzW9s;OoL0+*ixX%Ac4tnrY@BzQgzD2`38*<13=Kl+qd8`Ft=cA zli2`&s4NGV!`C$B11aCAq?eMCgj{=P4>0v%3c@YKV@ARkO5{s^V?+5`kv{mt7cVf9 z1JUTr+#Gib9vtkI?TYTnkH(nuaoIn_A0CFsM<-`#+}A%mG(I`G>~vZk4ztxdX*Qe8 zX0vr}$+?b2L}+u}>s}STY{%;A3C(ko~Pb@I$cQTtNBPQn9Rhp#dM~ail-uO z?`9$!kEf!6us52D=4(Zl+qtx8UtU>QbuNhqcZElNb7QnH;{_^D=Mkd~=XgOVjnSb{VmoLSY$8)vaQ&lOj{ny5xdWsW0dH$RV zQ?gs1Vp7k==ahn09jpqM2xvKqE1{w*$TEUADIp%0O3y^~iIJ)>CAb*QkHs7Mql*iK z*%-7za41?Pb}%W7MoELjCuE&=bjh$w>UaD``w;+gtO?&!a=V-UJ*V^9S z-aXuHZZ|6RGGvNMwU~x{Ayg>liluxi6))Gzw9Lq-Awkqy)m$-?FJ`iZR3aG;1wG>2xHOjC25?cr+Lec_JZCEJCxsNZ2pRO`$MV z;qcZrL1BVTgrbNOMVN+=R*=Sb3do2mmgrK^x4J(P_62+!;@Qe8N>$XWB2XpRRtOny z168O_fhsCYiQZP&Pe3gipyOaFSaF*_5E6_3^$=b1hy17=P2Jnu`yTY()bSDMyCFd{y@_z8ubcL<#nwGJ*%;h zE9i5g$3wS(Dm@Hb>eitUl^zC6B|w#dFv(#+LI3tJlK#=530B&N!c2N7sMI+W73v%c z58*Jb<N?BGfYDs>J;ngpu)idEq-D*KZI3A8jEC`6$t9M<-M;F7~^ zGmp+p3{8y>O^gq7FF({b*@luE4sCT6MnG(I~u zMgzdG8qo@u3C#^fIw3njFs4A^L=E#?&D+#yU-WN^SbaAs`P8jE#?(rX~l6 zhx-NwZYxZY6rcJXDNqGbn{bujRtA`b19|S=MLAe8xoCEE;S$M2{{9{}d;9tj--Ek7 zJxKPK`c|z}$!D_(Op)1qGM$Oxl5l>jT4~a;_x^+9t9S2+Hwn^2ph^T(hB32aVR-*u zfvRiqeW*YcmYkPhDUcCD?8}$WMe_oIM_5j9zPW*j@(`1_O248u1xA6F0#5OlF;TF> zS;b?OkQL#gUe(Qw8VQoy5H%}0z{2W+H3=j>s<6oEet)13;xzsJFTW^I_4dn`&*19* z_P39URS8P<=^y`i`^zt9Pao?J>Hd%cSD@Y>FCHxpV=`L!SQB^Z5+7 z3j_mE;aZZ-XL3}qO63dLa;;RWmzz82$}*Og#&)BzUB_jqQb>#A_FO(yDCelx#$EsN zrCOn}+sesyv-@X<$yB^lFLOhXW;K&frBPj_kgt`p<$N-mDmE&`dZpB?whs3mif8&$ zNQ0_WB^Ea-no^i)s~#vJ5+V~AX#P4a;vblPGWsGgK+pvfPoV-_`2Ie)a6(ikCkhQf z27r{plp=(n5EM=s{`h$B>Za#bWP8nGRs?geV(WqiB z5rE_7RxwvlwvLobt!dx3?i%`)u9lBh*cf$Lby6SRKTmYyMuUS z*?aJSUcinScKV}Au z7WB{F`NJn*_rH9>RQ%@ee)ra>8;1VSW7(tk(1H?$PF{dF$5gY-k#N{?- z356<%R>*5@V(<&bfm`Sh6rzv>2Lpj5HSRlqaD9FK`Lp(+lJ)~TL_oCT3$_rXwRZ@m zAv+#zU)<^$V@zC$V+N}o?AK{^OQ;>SqgOHBsyjRAG*p41Sl!*BwiF1HsuDjX*nFiAy#Hm7)P1$n0E!ya(taNiXVDg7qU8YTRjKlv)Db8pQ19A3t7vc>nDEy9<%J zL02C?;_+XJK_Xr*7m-_baGimKnHfZ&N?X)*m6-1db*xhfGZCdaJZOocDCa0? z%nq{~8dd0Ij4`ZASdZ9sXq5m}Mn$*Yh!Up@(ZAzk;{9Tlzzl{NL!PTsHJSPek~@1idf;+&8JTtq(428dZ zfu7_qphDmbu_Pft?&8G@HS)z6Mi?{6ZCDC~NaZ#ky|@uYDg~zB+D{C+YZJ>(YJl?-o zm`MqIzQRnGq7tR36C$ZmbqkO}fS}bYTKruLjAdk(7-UDr3xTmZSk67CRCU}l|WPmg~I{Co0JSiDgsp@UnJ-W`ZhvT#UfB8 zmC9a$w}2`T#4ZD?B1#oXiaHhbvrv@ZDdvh%JPTr2ucVBL%d;@@iUD9cmG})%)!Fq= zp{UNGF}DwmH(;ttrB=%msA~NQP*o3<^Pc}lfGR{PP=#JiMLqGbE970nYySUZpb7`F zYk{}R@05vL3N0x(^_xTSrvGuE3U~hyrNUvrR6Nw-)RfgcHaR*lKG;1z)H^$EqUGJp z*qnv?by;SpjwG<0bQJE)4EM}9cSZfvR$~P-|9djmp-+w(NwOr^R2h zjOmifs9UwYlfxS@vZ@u;R;Qv*C`{jaDH>Hs&@uW`T`HOZA|7`UFZ%|n7xqVB5yXH9 zMAS))hQ8ufieY_Ano_fnX#oEr*p_CbbDU?-&Mz+&N5j;QHRI;pyO$q7zW(&-?Uyg_ ze*XCbShrt(K|txlufKi*CnrGFCop+J@4>qL`s>TjpUy8YvRNADVaCL)mrO(57ahWW5CWG55y(KGj34LQzxhL4X#-3MgD=+~%*nn}*q{d!@cJt7 zi^cf5Q59&(|Op|O#n(c#HiGx8$xes>qr;{zsRY8s!Mnduwo|AFQF zFgQGHou6NJIxU#!mX;hVbWSnna7`8ipUk$MnY^jD3G72!Hx0(kB zJEteaBOq9woS=lA(^J8x9;zcMj4LH^M@98Fnrq>6lTQz0iJQkg;O1EekIr!^Zpgoq zVpWPyfja1wLR6rtU{V#TB&ZRe`ZXt3C3o&f%K@-CdEj`GrKy{x=na+ra3-FpOnDV?Cv65-QGs|=}N^LiGb+_>y5We ze`hn(CiC>@#Kg$>_`2Ke4uw`-F30N1w3QgvB$g)gBxe1wDHEiWp8mdj-IPNnXUua8 zj#byD4}4528B8X_=~O6{^2cK+!5t3!<8fa!>JA0L9xgi979j+SVRp78mTx%brjuU$5&UgV@`6v+`Nt1>p--oCN|HU5Vj4 zlJNjp{rDMoc!YeexpaO&pU7Q$+E$e)PAQl-&bVzTQD(Z_rv3s5U;P7o__8M&MhHqn zb&4oqS~wBcPKYrGcSQ(%cyo;sP;v+QVO@fPJ$u6$Lx>>4F%n2FrukO0sXe*TtWU8j zOc5LmG9GZoq=7!sA%QTSj?*0{69ZP*Qq#qoo0~6R&aSTy(Hp3OzMq~QK7Dc^yWp{T zPuuM$j3p1qtpEkOdPc|Fm<$QBa|SzZ9uuh21~f1fMZ*ZUFma*h@$sTF(cwBErTyok zR7JHNJcR`K7C0x%8{{P(R-h|=>TiiC9@FbgF3+f8KE8mq+Ye6BX6<2o$ar7qf4sQ! z7cZW@dwc!)(~F;ex_tj0mw099VZIl-z^4x>T^eX!Duj~JB#=JT_Su8h=?R_`bG1CI zI4{#IXm-0L3JjqE=xUZv?C%2QqY!B%(I1q6FRr|^Q`*_qeO=jjz9zw%Zvj=>01#pb zLbcJQPIXKss%jV;g5Pm96k_=B$zu$AtU(t7z97JN-ToCvo20d{SglCVE-6_O$l&4l z!35GyhN|%*(9bv{tPjOBX#D9ZmcO@x5WT;pQAMM_4oY>K{`s$u{~-3nWF1uNpZ}y$ zo}gX4C3iIe0}51$(iTB3?iKjg4{H4T!IJe-t)&Pt_bG|uB0;d;(o(tciSe2?);f%q6RXd)|+7}k) zmzS~1gX~NE{a}1*64O5Tik^W!(CEY%9Sd-?-~scTMRl+GhiD8A_Wir>zo%b<;URM8 zJ>7SNoA2%KqchE6IvFrcnp}QQDxdKOed%I01ff6R2}J_&Ov340-P~OB`dmR=f_oJH zFqKb%z%k~k(lTloTqJCe%?ecE;gYI?b(xz)A z5cUM)0k?0%8`vaJwP?e`t#7U^uR>yb#{>CFwKh8r=$pc#Z0KB#Hv8=-gUI1)ECt=fs>vK@I=Vz=7w1$javDEI#`v4iBbt@#Q=t=f>UZ# zcnd{B$)sC)TM8|GjmMIAd8ts;ljqOr>m470=yuU_mSR<60Eh(V&z>QSESfMur zt^MuBcD+(B7ApnOrP_hWP-~R8_F8*Kd)0b5lTJWhs8kCG*IPBn5fCD3ty(UhY3{Td zJI#DCt7uLv78G41n(U=g^n*^gDi*|LshZDbP)-CzQC&NiES56aEG+?Ph{rAY0!+zE zPdLQw0)qiJC>-)BM5UzhbT~zPif1H<$T<}7;#R;97KSBsP^uVM8+x$v2mPC&0D&rG zXD%T@sgMyh3Q%PzRgv&e$vBm#XiFIJhXd|Jl)C1iq!! zJ3BjDTU)JGOM$8mR`u@>#j0>L>iMl^ybV#c9aIS+2Jy{$ppe=0|L+H?K*Xv#a8)!) z6F)gZ0e3vK83{NeerF_V09D{g_4qwjWdKxi7#Nit{|i9X?Ze0>hsFqqWE_G}{WlPm z9tKL(K8)BuQmWFUQ!LVSpe0473{*)DjlnG>&_i&le|I2_fK=adI%1i z*#@qk2od3`$+1Dulxf&9J7JkM%~_`?6PQgl>lA3-W_H+TaGq~_Pq$kpWoJN>%`$;V z$K3S1b;>?FA)5f29Jc9>A{Fl97Ge;#8xGW`7idm6qh-!nrsz6qV#GW#GBrNLW{eF@ zn}(++hG!;6%m^@MU}AJ&d~A4f!ZbZSH90jgHaQq>76sS^5Kmo86 zu|i^64!)!>_Kr{Vui8~@Gz!dw0#b+}Zy~Bxng9fL0SpkS%^sZ#P<3{3@#yNR1E0}N z)!Vl(KYo1m>C+q0B~~q}w;g9y;MhdR>f_)4uJi%y9n$>r%RBLmaPsIpm(SABI2^z< zl1xUk*;GECEf(|CjVk6#uu>}(OSy8Th)ZNd zE(NLzrCh#{L1OeU7N=q*SE}Z6#dJEG$Q9Cbicbeh&N}xIMf+@^f$AJbOoOl|N$&3k$9e93C$5 z#u+I<6$s2CMNnbuQ6Qu#W&IVIqQtVhTWzCb{KZ}Yh!YA$n*o3S(9qrc_j>wzyZd_Y zcHP6Ezt?sDes>o>fWD!D$yu}2F>jf-Pnf6sxGi)yZr#0i_dmY-4s@T+(fhd%;K&ed zwfOn{fKLK^A>E}9^dX*xfg{7c1N{TTgX2>Z+)BYbIWkUrE>)zucmLjxckkeGY;t1S zGK*VEqo#4Br!Cm{nC|s6YqKq`ty&#+w8U(&gc5POooW(=Q8lsh))r#G_%;R8sfgPt zM3%Q&YTQR?X`j%NQe%&bKS)#E-fkTn96f$q-`i^gTXl82t`Hb<5!*r*MX97%oa?gB z9d)b(vDy}$IC?sJ_Vn!eCDj<^lf;N3k|+p;5(dlxWY-4|P#~mkVp|Uxzm2y>An8E- zkrNlwXHmkXMk0)=m55b!fU0eF1!B

liuQiO)-F_S5R-Q-D$LX7%*mivx<1rj5%=YclP3B-qAL@DIUI3G z;rRac(C9vf1UMYMQEYYT=jJ}JYSu`M0wnoCzL2eK1yF{rIsudw4<6(c?*+W;(d{b@ z(DU<`te!b4dA+Ol?CTdbDj-`U(-j{M_*~?$$L1rx#{9<07x}RU2T^rW^heUxOTX7jq`h*`3lN zI1f>kf?FAd-)Hx;OfL>ep71p`i1)?$`8>q9SBN)?wWRyLy-rV51xm~6&!iir-?pso z8XCG;@cT-i`qH1rEch0Ti{S+qV}~X&)}7I%#D{5Ll8NlNK3&yK2~!bk22zd=Yv$!; z`CM7?Jj~VI&+l>v{-{m;=1efMOp$@Da4bZjPGRD-Wi7P>~!29Ll2HeSq zOh{9}GTUWsL{|v5Qq|Kr#)L)(@g+lEj+Z@ObT4=%l0s6N%yctO8MCtfrH?Yk-)7^_ z#ON?tB8n3_4s7B99w$&2=!rf0XS4l>{T#=JLgl)KJ0D>LqL-?$Lz+UF>2yUUmx=yz z&FiI5Hk8-TQI>b6y%t8A@)Btaz9N%!z#EeUlk;9~B6wBs6qxa$1if739-f0J7*7GL z#^(oppHP7{zhZSZ8Hoy+n=P$r6Sw{&Zxwa>+5;}BWX;(m8xnrydj#Ist*Au$42^gw z$h_()U6MeiNgVjg$0eEu7S_+VfBe3vObwE)cq?nBYY#~6WT*RWCq90s)~sFQ7Y;8_ zvVIwxLYJoOb;R{ZbwSF2lcPRj(^^N0^;Y`l00To@;wYa_HalhTDyh^@h)WsWyf+U4 zfmiZxrU-3=8jlI`WO#H+oli1$HTr~bCCLWlnLJ?dT3Vec9unLXvsO}bAV5WcWc4YM zO@0$^v)=-U;KseONpOH@NbtC_wpkweuvo&_3_u@qc5}IuI!rLe@UpGM%$(wG3+C@U z%Cpu&DT00Zwxnw%E=JbY8pB^0*F}}OvqtEPOx3RA!PjnkD|VuQB1>Csl?Eu!%!`rI z`D8-ABo*wcJXX-E1T1B6$I`celny;cv*l8oHqb_ftNJmP_xGz0jaM4q<|Qj9TCa4j z)tORVTEgCQG4JM0I+~nMn!EMiU7Y(%?iz8I=B<`~%E-vfkks=!HJhY1W7A1J;s5u9 zUqsG;Iayj69hVZ2OyVpQp9H1f{aM*d{Ha5Euj({OOR?$Dw>V7(=~!uL;f) zOr6GJ=B6I-$fqW@!178+0p0V3LXyFx0QXB zOD9;XoxZBwE`C!Zv9&hm6FZr%k;ToD9d7;B*!jL4n+W`CVqy3{5jM1qA|%44Y`U8t zIwn-__1V~#_H!V@;C9?GuH!$GGp25b&K{F0boTKx`;pezex0~jW_fwe@bKM;wx4r( zQ;i-i$?mG>bB4Slf6DtII;=9Arp*E`MBi6kybBeiJ1$NBZpMxRd&YGd0`-O^gn}*A zoS+jf-v?c3C0$x3^rKv()xzfS){3Mu1C!+eUiGWCcbv*nztCoJk8Aq2s}$%EyD3nB zCeFtJP*JDKD)>x)B5tpXWU+ORD}K_dc-U9Te^$R2!xsN>3({jeb-kcjoGtX&MxeKc z@fY=Df$$CgoyWxs6b9i*0%#24Jt)L#ryx28^~zLov1AZ0#C67w_qt3k{s#>3HQks~ zLj{Y$o*t)Usbc*&iF8+AMEe%_6+T6O1qE!{>K~yp#ZGOKTL0;);Y{>z>qL%4M09fA z+46(Ad(1Vww9-*TT{7YghEiA~)IMg7YaXsA#FMGQ}OXCFWA?dXettwyln zt5yIacybA7{Q!@s?Qb#vzfSQE$<-6H>^#pf@K$}}VylFl^t$nLNWFwyTU}HGfBR|i zrrf`WcJR@lThpb^Uqs%*qaA-QsXG3K^S1+-W~C% z#e$FSSW4yok@ZIszXuZH??*VCr%PEpcwnJN40(?(impo1*NzCy^T;-g8y;l1JBxi$7$F`%)jKS834( zZh-ZX=QRg-@1F0+Wr+hERE3u}cP6y7>&suN8`!%r^-Yp?%Jl%;7(f@_w!QGY`r+$; zDI}C^*%9Eqx!49M|3F7G6Hj;i$G$?3Cjop*z(!v!8;8H+-`)DfVhey4x_-iFt&zI( ztMI=HgUjy^?!$rq`(aNQ?l#;j%w9NDR8AVCm9G}y>T;NMkInHKznSL#vXsL1Ph!b%pv0hxrqZr#{PXEs(T4J|tjCoK8?dh0**EBk{d}ujgL@Up zbI%ut;sapa%929iQY6^wtYYd-AiL2H;@ycfkVKfPU`1}Yj$Q&hYiqrTh(ch%YrMzC zRaj_(Qe(CIq78{z&Dc^2k)CQ-{m9ttg2KvsToif_Eq*6FvrcFEsw5$Oc@KO^d`Otb zJSF$iaM^}AP5m`(RD{wIHH9|Yk@lazX@5e#rR{NU+Vv$OI^ed;9c7ModOTD1dsYR- zEO{ZULDbrs%&HUA)-#BEWMt2v#3D>u%=EA8E!mingZO3TfkvRC-NHWz;Zw zJuofIIKW)h7Eur)V(jfFO+X~y>0-%60o0N7LO6(oXcZ+pB3inHAW{REt-y?>U;M94 zmX{N5c;dh8CO>CD$?zF>fMW6!`fy%~Wsr@tI`8U1r=X96)28*S%&H8Z#W~e(t9|(1 zl0*jumuTbW+T4?P7$&f78AaXP?a#oNKfq-66_=rsnC!OiOSF}zWZ>Y*PKaVq$SX1# z*5B&MDn$(G70(j9kGz2o<1l{Lt8Ku=QRaST&B4_Lh4tLNUeMu#u=RuMQ|4W~5UPmGZoV_DdO>6bHY(MhR3C>;)37}urE zGJY3YswW`?*3{y)sl#x~%0$mCStjR`k5D5Fe|rndhioO&N;2`cD3*OX&Yn0j(02bU z#o8$y$tbT*|fnyfKPalZbif98VB^gwS7^D7r=n{;Xb%-xhqZG5YxORAQn# zh7xh*`3}6IFkktbl?JT5-ilPxwkzrlZ@S_yyKTND#_8`2rnRu;tp>09^F{;pqPuP8Q?${y+Rf0oXWjXkxuq{gc)oW+^ak=2>(Z*+h z=igPyi3I3%eg^ZxVQWlPzdG4|m)ZTUt;}DU|07{QgaOyYkOy6+P1jcXFOVnq620!E8X+D{K0}hMm24ZBz5C ziRrGJ>sdqN+^2%d%KE9PBqldehV&M5cUBoeAXg{n=Lyu?4^bSSe1FG}BwnxaG>@So zA~=4`8iQfUM`&dW99C9-u4@!a>K#ha{5<^`JlOu8GR2x4EYyU$auE)9^p5*NVe2Bz zm0Gw)jYjd7%mnF4%{nCxr^cZ^8rfn%^;n(+RV0YW@fUQ^1p{9)>UOIsQh<<`mjA{d zG8hc(h_M`{KJ%m$0WNz^ksfecADZzqvmb!bU$eiDx#B}!`f6xDbM&e7rjzaQsxV?Y znE;MuW&B~nrq5R_fb&C3uZj>oF!vS6^#mrFJ%n28$wAqu_&Jx&p3%@joNP2yXf#hw znY+=}W}yC(+iJDeM2+omW#~#-xu+;2goBwvFNYH@lBbc#kx%x*391qStB$hO?xqP9 z5@Y-#k1cm^lVtp(6|j*Pn#7V{+p)NIvsYw)w_X*}{TO2ry6HO4`m^h1ud8#f>t;xN z(f_syxY+M`kEY~?-etMB%C4HXN{C-gIZSoCMht491^;9@KS!tXbB99>la z%YWlfrpJlvutdeulp|Q*A;Hzm_NeLxEH@ouFWe&U@eFf{OI<5cuUi>^P zfS=qbXTO0;Vh68QZ5P7n6}lmmAoA$Z?uMV+Zoij zT+pJpjz;Ko%u9*5F?qaiYu>fc;(c6cy0j0x1rOU zp^3eT(;F9&^j|IX#)rvf&iyFFVW@>X`C%kbeBqv8($v(}6nMR{(Kc7;Z1~5EmTpg6 zY>H?>+u4sOG6Fxn|CN({OzsD(j;8uw(?-sRE(h%w`JtD3K0ZygEyB%#KW7)`n?oiN?bhOI$?@A|KSVi_4Vpj z+&|Oo8hDGm?KYk15MceqS+UU;{kLLCylpM#=z2r(d$<%OBoOnS_?>L@RGOOl9lUDsK4cKeYIN-H(0Ia#nltyj1*#HR zC*fvZ>tRnm2mdYb|3_N)AFlY~FlKjY9skLfwlnSyp?0qffQkUarm436VJvuAIF59lb)u;Q?VmPh$KC=UuDResWBB#qrqXJ%#uIQCq-E(SoWjqHbV2biHR??&7i4ka3!hhy zfci+fBm{MwE~YSlC(4DLtq9L645Q@C@?DS5iN#}}233QTqGmP5Di0uy3C-;c5(T(a zCkB>n=W9`pfRVf`Ga}{%9wvJiWUL86z4;$WXBE)&<92aHx}-ZKMvU(6k`Nf%=#WMP zq)S4O93kD^jBaV^?iN95q+3A1_xt<57rWcl>e+LibIu2Ar2gdyXl#M7pjU~O)Px-! zy;VEOMShY2GkE|zQuLJ@Bkl$7_#7XWd_8*t>5(x3JVxG$wh)GbMCEF|OJd?H6&IEy ziWUF!nYeQFchDgwf^kJK2HoZh9(eOh1)J06<%>j^&Ak-}N9{jE!4okG{6DWfKkxfJ z#e{oZa^W%}wNNXUa^evSSQZ5g4H{YQez94K0Y~!?CX*HrxE^f9*_+IgaJvTx*qp*w z-Ll$ByD$=s&NE94c=)AhMgPGNxX4u{yy{1RNq|LBizIINZpEhya4+2k%V(L)2*?QpxhXZ?K;WfqC_h-y1o zNOVQ265spX<||tVIt>F@#~;fow@Hav@)CWGqnammv`uBf+n`=E@s2U3QUx8Lg^&21 zW<9=`9_tQUQV$d@wU(o&_A99RL*-<2`Q;6RGFqrwJ&BEA3gJD$2~LZ3 z*F}lz8vJ>?uE${^tS?Dj)mN;#=9ul^!$V_X!bj)6fkMTrVQixx+tVvk8YbGlAHFhM zHC|GAf#0(}AO1Ld5m8X8H?C2b@?I#(i38|xk3z^~B1lNxqwEL0-$vitCA@B#HZar6V3*cx%H3E4!xg-JX|j?kCkDp(MrSP^L#+EfARU%o@*W z0j$1DBe($i4!q(_N*bvY%3dr+$2MW8KQSOE)N?+=ewzg8chZ3BkjR>7=|x+#6kmV8 zBV#GBK^6@NE$n+39v-IUcnFKs4P4=_K274!uPndXD08$~&^H|nDP6XcrR@94E8y?s zy2*LcSUz(1_AMWcAz~knCaw~vc!R$GNbZWG^6%Pk8zeJqk?5wTn$$8lOYvBt#y3+hmSeq z<9D{d^ZMl5Q&m$yT(#tQ>X6=npP^qE z$L36GDGE><&DC8>G_s9RMr1XjtA^VUDgXLvAq^Hpx%`4ar(_cL=C4D~TJUQgt5I0AhlZn{U{o&^JIN>lzh*&Bg!mbhl7W=EW^k!>zZ>s@jS^|9#n}SBy|im;+l~USlskC#Wt`G0-N<4 zVh|W!`J}^FJeD62{~e97(Et>jMx33sl!n1Oy^c#V_SX|x$B!Z{wXbZT0Ne;065=7< z_}UoDh)96_Af?%zBztN+5odk-ikaVmNJ(mXrCdzO#U@|+4qb;KHBtQ)hAz3T5+x1{ zqP$E-Z{00}4*wyB^+-^bk)4x~ospH^>!^M3=ZuEkBf$C0`P@xqibUesZU#wG)wJW6 zYT7IA(+%r^-CVYJ8wSJk9L49)!ZVDhzy5pwp2J%_Z`N*lWzDqR!*c87c#uV@xmN*V zK$%&%aWFxhD)aF6dJ#{O-}?m2F;+ZN+uXIdvg&wx^6Q+vhO@=9Idj!$fR0ipJ`$9( z=vlFR%v%heL*Rj!s%I<$)gwilqh`(|pJLCKla|~F|4;;cbG8#ENz*q@yYXRC>k8GQ zR4HXF?dH(a#mBD&mCD$_QIK&i9sjty|4G{u00-L!IhKPrI`}{_$kEc>?;j zZ=NLHav%X#fN@)3?sz$!G|)~?W3BCRDe+UzrZF&5j)-~@mL?YAI4uhDh2 zJp}D4tM^GnI#ny4_{wGt@s#!6RIRZ6`DkT1z@i5Nq zDA2%3f}}ADohav>k-@@Y9UcfDj8UifT8W+VQ6AwKNK&D=g~!fgoL_1u`Hiu7I!x8%u6?6p9j% zFF`Q@rsQls?F}sL>lYrVj}N@!%uXs}Xry9ZQEr85gYkdMUQs)ghtre6&MCiO`Ag@( zTN42d(3|wcZt0BE{B3mjekh}!;u&yZNlPL+x5TGn4d2MapeIKbeJrI_Rf@T z3O}lU$8YcIwf>n`yT>4|Rb)k{uuHX#)WpW>OvCp>S+$lJ=zNPX^Po@Hnj!;6!2vmj zl%RP#QZ1|ZEhQH8B>_Zd-btN4KAU88grn9}Rd2!p@XkBy1+WIIeH6^;Ivep~urpEQ1T*f_QCiYOXR8 zPufHRbokL%J*~H75bp9@zLn|7PlP2Jg$%pZqP|HwgejwjLAhnd)=-vVd{HI2yr^v5 z$Ud&ZR(*3>HpSH}THGjn!fhn*^zohZ*V^QsQMjcf_)Y_%*Tz-Gb|Po$C47^*3MeOU zZ({w@`(77fJ$V-F-mtJ77@tLP~f?L|2Nnx zabRz_I6K}3A#41O7nVw-a0GJD5RmJ;sldnUrQH;=y%aXVE`T^0Flsl%s>;;fv zHx@R^9-W+LK4)B^+Cy5-V45p*KMO-87QN^6cei=O-7n?eXsDs7n~%*$cHDVqOA`el z?+k*q$$|>bwqY@<#Na4SZIBK02g4ubeT2^(!(G9;B#zY}NOWWqnv$krP%ly1>=xyw zSYD=pud9?y34^fe=HONqY4P=LhRwPC$2{E7>+OU%w0Qs4@J%|C+?4C{=g7l;iPN0C zV2!OfaJyhkxs&11QJ&!a8$Kalv$kx=6N5oggNVi(c@_2R@4Du{i{izb5;3})KRiud z&CwfxOmEs1;OKXp=k<>Ki>kj{XLGX}q+(IerLm)4@~dlWXZzgumFlV*h%s{J*(oZv z@KAN2ckC=FwstZnB_aG=nJFs1mX*u|6N8m(7s$P{pKcb}x(uEcK7$AREF!-vEF>kUhI(K7i#h$mkaE#58(Von-m8|EguyAo_30S|M_7h47M{<#!nR~2DkM0 zA3l6ESJw=z-~O4*0YHG9)?1ly{y7#93zrhT;Bep9he2T1AO9#40WaR+Qq95=u%)9S?e4l6LLnk;wA<{xzTLL&-`UD>F_bJ+ zJv!HBCAflh9bOi1)EHMJOuZVa;}@@T?Jiw-FV6Fz7cA~*@V(~8X-bHxk&B%}bG_p{Xe2b!)^yV5jO|+0lU{XEiUX zruAUMuf~S?D}raet7bC%)pX!GO39Lc^@nTINwX)*v*c;va*vhfF5GNGJ`TjKoOh4! ztn@;~hx;4S?ZA{{MTu(CDH9=ySZqnrf0;tc{Fc#QM5&wh!Zkjgf2)7->u5`klw5O4 zBfdn*cwz=iTPX=46FRw7G5SQ{#vBf`U-~DRoS{7+s^Q0ZzZFx{R0%^}Xy(8)(Z5~v zv3=?!8B4YrJwAi6oPe20bP-Ga>!mzQN7IM;G0uU4S)9`=690Fb4x5#$*!XWg^%k3B zt=DO*90QEp=|6s={umzMFDNj_G2e)O;Ka{LaGUWNSR4_;-JhNu1Mx?@mL-n$zIKn+ zfmrJio9l#M`|y%sxn7V;47O^6ccIsw)b{S;aodqbLYeRfv^!t=KBV#Oh*)S(nBn9z ztJJFyY#2spb+xty1UaN6qC#|kxy(#TA!{%q4^>I@IKoO&`!+YioHV4WTb^B1wUC-! zM4(a}`9pI&G`1GZewQ?2fBBV}bel7mUzM0y(Caf8M@5QZz(T!zJ9?m$hBg=|uxlMh zUDb)7e-QNS>w!xD8(2w)l5=M@J11n)&?YOS+9CHpfioTrhDTy5Vu#uH#5HAR56<@M zbXl3l4_WQFlrB+LOPU{7O#jh49_Mwm6RHq?UtxrMwL`zxoKt8E^^p> zf^AYQI+}dlnmzY)pN6Y>SU{ISsLgZh!+{5g$zKVNBdqVZs;)t17Cz1 zJ&I@+c5ijlZ$hTb8X3hmq)RbouaBLJLg-P!{d=Ef%h<7(uh_-Dqh)HfUfP}u*4N~M zSX;5bd;(sM@IHy8iNLBEewkpq)KI>$CVk54=;%C9IcEii#ga!7S3_kE7o;_!U7q*> zg`5Qo2Kfh@-0Xl`M9D6E;zSmJnDUT4!Bl)~4?bD)IfrqTf5-=u+6^^z?P9uNRSBn! z*pE&nkk9p1%5A!Z+K0y}v!H^cftFkEv{TRNQl3xe#S&HNjQ>*ERIb^yYKc&wg%moIPa z-_%xD;<@@9L=L-@6H0YloTsZ}z8Y`Vi-9df+oNgh5tY#Kyd%VQ>Wr=c7X|6##G zBhR8OqncvHHys5Atbb@JRJQ+p2}4=xQQo#WkQhze459}iWAO4}+b1n`GdAuEmeNY! zS16B8O!)bRQTJPU6gxJy6T-F0 zes-FllpksFg021oKf1r6+*ASVhA4V4HR40 z71zeVpNEoF5b?-wLaj8F_~wZrGF4aP*8@yJRzFmpBRL__NOC|fzswE1oNv#0ZO2`! zNH}fg`@hLwToZ5&Sm%l(2ktEM4gi2mNoSOm=0KkP_lC2WC9{t=KCbs4Z(8^AK6IWB z9wm^s;01vX4mi3Wz8^NI!=Sd=* zmWc@r^KRcL7Wxq)N>6a+7JKyr`13dOVEyj9KJXebbDikoUCAiLBvfGt7OBN1IM3cZ z5+#ec%mUF5icYi}OB)eJ%ICzTd;*HqmPgA6_DAYth|c;y1I5-^5)7-{hzqAsSgHQe z_;8t41w$V@>jy8kzPyb7fnA#j_{4<9gvJ|9E#KgPs@0jcV@A^|E1TEA;7fk}K9Sd@ z0!he=rue{pVD|Gq*+Q2ZTP&Aqgwr-GpuhM||y z81QrSBIdofKCtE&zQ@S!%)U7hR?~(a{;@xNPf~NRIB|0l8)REM$6dn-^czRde3B)V zQQL-%@ge2!vRKKoU!v!&eEL9?N_M67w?p8mIQ`QHz)^Q>6m0X*^;%kHd6k&30tm_J z4$PFJ!Wg<;E=%lyGy2-!Kfp;`uIXmi#?qsytIZxC9l-Xs*3E3?!Csh(13&PN>s?Z9 zuGTx>o8E*$w+$m6s*Hxmkb(Pn-@87h=8^6(B%K21^Yzad!4=H&;ww5*-nGEkPX^BE zPctf;f4sgKk(jo5o!%F!w0oW2czW4aj4kXytR*?Wpzr4CC4l}dm#LjLhN_ZMdtfUr zIOO&3%L6-U#|hZFa4tnucl+7$X~LJBKIHH>WY0NrcpD*0>ib?OLSzBFF!O8y_?TB0 zh(eX%{FH_XQv_O_7TG^uxOuMu+Xt$F18g6R(V$?%RJVc zCGQ{cmB`f0UOIm}LN<9i%LMIC5w!?#s(yt_rm6xr^Y&Z9tl5z)L}5oJTL>mB-h))B zO08T?FdLVZc*Y$YPwW%W4fj@3xhC|J3_%okXz&BcM|O?mTw~vt?8yT;+ue1pVgGO{ zKOxi8e^WB(#-hRuGDx(QX3CGIM%?y(A5J~hOGK?*UbKePfa@wOtVwp#nv#@kf7nGT zEzAER85>|sS<2fGk@8&^64+=Sk|G95;`e?pbtS?fFYF5s5_@Kci|8hop&d64o^l9S=hP(>Yf2FtDL zW~{;@yMr;Plt2{=uKXrnUVd7UBA*(UudJ7J<5b77>0lg56}$H9JCOIM?5iT&!MC?Y{|1(zI$qz4Jtf{kzH>CxcpT-(cz_{@%2HPL{< zUB==_@&(h?L`3Ofa#{Y}C8b77qdAZ6?B~YdoZ$N|W98o-%%bArFSSw2sB+tMDcpe! zynRcIYnBwWhGi5qo;RNC(zW)Am~~ezvL2YDiOEEvk{=dku+wo{QFmPgmnwf321Mf( z>g?#iIG8m|dX|Pyn!h^&y)^X>&TJLnbZESr*=+6`G}m{*&;h@q*SfGL4gMl4;CQ~X zj7RRO-31p&#b~t=GG!!}>HJw;9W(N~#$nnwa2!db3^b7IMUY*LBq)EyHe-4;{m%v0 zyr^%$z}eJ^7a2(J^Uu+VDCPV214bTU-SH|+8@{Q8(dFjFC8(i`z01btkMWfetR8rp zGCDxPm6EHNCsfFXA0v|`(JGL2F2rxb20RsNN&3yJMvugYIPUpg2cv=sV=R738KBV5 z>0ujb>Z%_x+X=99mqN88j|;;U*lf2rH&yK0;jbS053?c9uEk5HKac&Dq{A)^B})FT zDkPITfu zFrey1nvi0}+If49T!sRB zc<5B%(}dSgxsB+l%ZDhQuCv+HuG>*P;K2cS;&_a+vVB5L{^?K2|CIh{19ZdyC`DbkU2%pKn6Te&HEXyr1b-T-1p! z=yyPjmrLR}C<)nOq%cZbGqBp|EKep@(6ZFw2&cO;dq*f5M|!@SRfk3C6UDQWL0BX3 zeb~d21RH@MsFsCBb8VDZLoK+RoixqdoV>60Q&KW3Yfs;b@W` zx{V%6x}%pbt4SoP)}PkzvyA{^9#Cl4<$E}I^Z9S8v^QX<7jk9j@GWkx6K?aZb=hkc zqf1flJ1Jh9EM5aVr+;SYXxjpsyzYohtKLaYUJP%YZ|`wHtERztxX3fL^HL~|`Hukg zIq6elwr3Nl!wAG?IS;o6mrrdr-Yv0VT}#8<&$ZC7RPLBRe=t6NtUy6lo0`}fAw4`F z6Zc^l0MUZxjku9fRZPtNC}QSN=*-vHtfs2ESy-f9LSk&Gdc-1dOt0p@O`S5S@@Gfu z_(K$D!^w~TTJ26Z6h?6B7+D4=`D(v^JbRn#|LA$T)^~$=%Z?9Ka>gb-S!;hdV^FJA zdiq|dvLthF_jmGm@ZR3hBb{xb)~xq^?VN?~LO5HqZw(VVbo1QSUBY`L(O0T-jpb*j za_2m#qT;~$lYOXts6$N#UUugV+njxpoy)h_kV5{moXW%%n9nqm);HaT*FEzU8WHvO zO$D11CBy;+eod7^hvKGb3$C1rz0KMc2oOwpi3GngXC{i|`bYhTf?v>go5mqon3n0F zqXZw=$S{R3_P;LjVLXCTS+{7j9`ywM1K8&vFJL@Gs?h0z%d(qSl1as3Ydv-*u6}ud`pf4%?599Q?rmR?~?YpdFu6 z*1GgHGszd92AW`mB_ul!7WV=_=ynq}jO zU*Kvrb(>|M@-=bj(2jObama%R7OCZ3pEryQ1ls7H3g`G9?OKiSwXWvO zm)7{`41I6&qGuAxa@`AL8+qgU-yfH~>Pvn>ev1;HdOvIITUhayUy0N^ida=o=UCf9 zZ$}(bwaB;HsV#?hNJTP>;2W1kCVQ{Id`+5`-iX*k6u#^m;+g?@Z=`a5<<&VaoD0yq zEhXo}{L7|Umq~`^J9V(P1@1IC3@ZBH@Q-1?Lvmh{i(CUmI0DxLib)X(3D-rN!$nA& zt~FT&L;5(bX6(<^vmgvve;-AsPcc-Q=GE0~YxtVTFX+kFZ~&*9tbioyJL6p)>b|W2 zYU;>fZcoNk?a56$Kz5!Ryx%?jo|U6GEnl_cvaBR5iPLl78`y@VPO0f@zS8-1C3!9N z#;^S#V=5ttd^4;+6Wd%U6S+w>7i5e`dSgLtv()_>qMG5`Y|4IP_**S6bc8GhH z<3qW&Gb<|Y)b4)F_YbU4E?z}15x)lck0^@ff>v{h?w+yWW$V9`__IUpF)r!mv8g@o zE(&F;>??uyBeSBJA;cV)jllKa$j4y)gMCyuVg*_PWkAK;r zWQ{3R%CUVHA-SqEa}kKu>j^k~Ua+IUSqwCR%bpWPI+&7ktl=f2nM`bE4jUO`t3!uu zb>OWd?Vfa98xf~91Z<=8PS7g|oI<6?Y)U#*JX)ekQV6CUWsWqO5#G>>n=^Ywh{L=! z%!&S(^Ln4W``iNu<^yce=L1vSSH(QQ^%}T}C#QDZFGSw8>IFRQefflRvx0!C1KpmA zS3pxO>%PEH?l>FYlMX-rZ#q|rnC9Ma{tEMXx)d(+&E`Uq?V1McSYyD>EdouohEMS@ zB;|hUEc54F)CT5;W0Guu0i+gg{wpx^U-q$eH59|h!rZR}lR&@RC$KyWaJ+0Wy}nJd zbCN^Ro1yYcGJmCH7wMZg@D!mjf((=|+-FH;*sJXC8+x{1n2%mSY0dH4 zanq{E$f<`Q1w;sW49`}&c(J!ay1a^1<_(&W%nS+B-H=4-d_rE<9OL$f{gVMU8m zfz{n$)4@G5n6EK&XCZmAxO4X=W!7mU^66j0A9~Fcs}&#C<$vfiYstk;`?CgZV7MLa zsZxJb>9yORy%VkXq=u!72FXanPt4O4_~T*wIo2Z2Cq2z^ZJ51m-!`LW3cRNgnB-iw zL;u8!*hxF~nsoVd=1rKMyk>XgEb4#A(Q^2QuKPsG=k{?&Y;Q0sR5YOW3R>_HjbvBj z0NNFLE_OP6bcHD$JPgQ}05ZD6f8s$+J+QOGXsZ*hTWxI64V2hk z>@1#e`)Hnve@ckQZl|zMw0zWN{l{6YZVG<=fNb_DmI>A+BE20T2O5qNTw#%yB)&k@ z?rJC1j{Fl^{&{cb$JFk>Yn`iRf}YLT>QXL9eoEMHJRDehl?{F%J$2KjPRsOho|JlP zaap!3yt5?Y5-8UG&;lr0kur`QD6c@!QafoB)ubjQWRF+YehJeA?o2irw7?w5HuswR zVwvTN6C`B2t;i5W5yGa=WyBQ@#nNDl@Pl+PM0>Dhi_Cq+Q?m#E*c1!}@a3iSfm&O2 zUzPKNYkRnR06(P5l^JY=Ae?`gj!{}Eav{=LNk=uJR!_Gu&|Rz8LXBl$nIkeq@EFLY zD$bTW^AkoWF$4I_m*LnW#HV_nP7&K^~(KF*cTb@_Ij|_zfDx8)9C;`BJvPh zPm{R6p2yN%;YYAor+q#DOp()lRw?L>u2KvW8k1Gqe#_1p-Ub2pe5%D{Wsv`nZ^*TH zm^6o6;cQ@QO%B21FPjA&CyAnpy&c$cz@{{o@oVEFZI2zK$)v z0+ZJj5yw=D8RP3ssD5~BCQ^otW@|CCVTKKp6CfU%%DUU{ADPn3DsYxTfscQ_sf#cC z{4o5k^fxt&i+_UWp1z9Y@Qk?KR#ur=I6#>~zU3!VW2HK_9)W?2x+ai%_Dr>%skE+U^XRE>UciP(GFaUM$JgQ0{YR=ki$ z@r~a)89UtoLCm@Ruq}{$#=IR@kRcbh52+|!brG_JhId*$}3?rw$PzJ0=B(tGA zL!c;OWW6ukThmMqz{fTn@=nI-Hd1e`=B}w)b(^SsYd#AMj)AgXCuB#t=_Z5;ZSD9q zukxoz7`8+rW-G&SM@>jMb`z3`G_%>rAH0nxDbt?JQy;4MRU>q21W zxJ{>I;P-j!*uDS!dtx^1eI{~N*fL&GlA}<<%`3a`XiaLPD~l5oL!&AOr?-NgYl0tX zU59(4oys}h&CkqAw=8u!SAVTfs!mA~7jwxYXL^fLBlO;;CE0NS(!)KORz5?MLlm=v z3uE(t*&c?4lUOdToHu5vf~4qr=EIaDa@I^NBoL{i*W0yF93?zpk+%&u1pD&dITEnx~^sgfC1mjQG@^Hs~gZB zdcVIN8UI_=&fUh>bzR~l+kfx#ANr3ESdmX3kCyAa)+M9|^A1Aw%=~W#QgevEAXnZA zb^#~&FEZ!bnWtR>zq7N?G_)psP+@$F_tF3pTB>?M#`I~p8AgRg2~3B`|Pp>oN~`g)AziFQws+tJ$@3}PL!-e)F zULPK2sNbYU*>@s^>>E+u7Uq;g`Z*pe!Jr>aXH|=a*S%o0P0G&L@AkiNv^J{8q+p2m z74{ABjv`~3hig%LtK^dle>~4tdp_9zz8JWlT)aqDk6ClPkU91+?+&#PqrRJQ(@*lTmR@MBcR(W||-EdiO7tc)j93~L%!w^xe=3nVSQvHO4(;*T3Xk zkzuP}I^&ar3ew|ar;Kg;<=vhU%~gvB;7o6N|6Z>eC>2136AV1Ab#=NOF1AW|EsYnQ~dWYxiO|Sm^v{r96hV{=Lnmv#l;H6Ha&P7T!_DT+t>9ykyn7!|~vs@AkfP zA(z-U#0Q=g=oBWwQ@%K!TFnl@?lxEb{jG;jA%krigJn@&VoN- zEx#@E=G5>huS|aOi;v?Wx(QW?!bM7Up_#D>(qnp)`;%PlfgavOVE@}77ZeIIyI;Od zi(~JFH)EP_S1|gN)#f-pC*mzRIzEP)A;j6oJLn4VmxyVHd4Yz= zI%)ofMnou|UlWA8a?6@FUG|1bxtOdI_n6D~S9+;BP{cR4m>g*MND_%P|GDu?#o68Wel`3exvU;XcO?K^8_SbCR){_NJ%+5fcfhuRQptsh znL$mbl0~oXRh&uX%P&z2R^)Xp=$njOI{ky|ioJV%<=S9^~h* zYM%%Zyi6oLTJo`Uru{kyn)fjS1L8f9fqHL>GDFPpL8gs!JF9-f87;O21-azFjfV2` zm*FaWZV%fHiMjrs7ex(pKUFg+M>;gh5;GaGcwG%SsZ%ue?KJmNq>|hs^2!2Q@qX0f z#iGLrAF`+U^Q|PaG$T|t#`pBLath>P33D6d(1Axj$O z>#n^+_M9VF?yp#pRcbg0w*6IiWWjKFWL*cvql<{|+k0{Wd%|!1y+RTmhwd>y)u9PPI@R;5KYkdZX(0gMQM9^SV)!TJQCsjWC4WVjRH7^+2y(E7KHk zz$1o~wyF!GX}*LT_KTS6$vC3qGklVVOB@C?`doMXs>3xUGj!8QcQ6NT!t=r29DQ$T zO1w;i=kP9fMhp9NL-ud&a$LkbyZs8_yyC}>akCOrO+CJBf#Dv+Qu0e`!~SUtA1PD8 znPeo%CR(CjCGMN@q_GN)v;@MG`nfWN?a$w6uswQoj613AwF)-uQ>SOpq-Rj%WKr}Txp><6y7Z(*C|y-AYY7RU=+YfN&inC}s|k zSigi7zYYpHIu31MecKoB&n!T_M*}C!mL&zt3H5nQpdshkigWj5Wjw#A>14f?Hm3^7 z;)N$l>SkrAHEUxC_x123{|J&O{EvXySIxrA0?hbbeV;M5@zpUCb^Sx_L zHTAiadJa!SMdtWjOl)mKgnq~8$#^CtSU;gE@s-tgRP3^g;ic1=dSLYTVt`p z^l<71e~$GZ4*U~hS}Qo2_ogMoO`F9Zj!Y}8!TM=ZA3eUt;PWfy#+OKDm4(~=v*qFG zectBV2yGdi;WH^cBaf;zZ7LzQ?t0^O;~ED? znDEk}gwaGpd+{~=;p(h{9pJzkcm5Cy#5W0TNT(2E>1k(;@hoAmvC5`<{tb$C&A)o#laE)}X zn4lIBt~PnU@zmS|-#vmUH>lCw0;aXj ziUkJ8JS1qk-v4lMJzIje7UkK8pX+S_k3X^{_DJvfw2r(l*)=L!}X<{kFG~(TPxmy^w2F*ml9J zsHLy?hgos|9Y&$Wif!frCtd8Ct8mA*xG&Tz8s(p!TV}}90V+TQn>AZV+^n88!YBF# z#NBlL8+V(I*k{T7d1i>19!%?^`5XubrT(2E=jg)4_abuzZdzHS|qLqvf}^!SzrqU{YX!R7iu6&fe0) zd7~}Au4g=UvHRG|$GTg10mKojlpi*o76hGa#|dLGh{Qm`c7Mta1L^2w}STXA{V z_Li)LcIe<-?E8gs%Bf0kO{{nI+poZYno54fT511t9fWHQ;WC#B_U^|~t;M%w5h-Sr zE`Fy9e*?yD-p(#MOi@X8WT8>>WQc+T#Am`88Y8uodUw_YRSa%@&Y-BqJWSo!9BRU; zg?g-$Di>-dJUt}U+bn7X2O5R@XyO)BpqRfzqC2}PH?@NGG$>+BQK)|++)^%Qk5b>A zb5gEQ-aIGLz9!K1cm|71gUh+ULKi~?oHE%aDy}0W7sIb(eFiPE=qbV=sf)Mp zf9qK%E!?hOW!%3`)l1iZuw_BJ1-|%AZ$LNCfzcKvBu@UWPJ=$W;{H>7U$i!x)coft z>wYDC#dsHOtK}Lli|7~DH1F;H`LPL7Mq#HjsvuwF9k3M>F$MgzCAOr`lDyksW!03; z-R`&^7iTMm)AyD8&t&a#8g+FuGjUk$}m|G4syQuGfOZ9f@Q(fhgK ze{cA?J0)1SEP+1luf*xwa;ARtV2=PHLNOw3AyIGa?m;GlWIUvzlNv}|VG_DH8{lg0 z3MZozzjZ}Fs|;C1`0v12OTkeJGh;0;Q^^QTkp3h`#oT+n4E&gdY=Gj?SMWSiXC_%c z#>#+G*fquz^JP+#{kPi1+o)9aWjre1dPCJkaHJahTxIyB4V$eZwix!ao`>8Z2y-ru zRg?2%L~2y6>Qcr2=#BWGD-XP8V3?X?OcP%BDgUlvv>-)waWvANeXSBA%%QeYoga_# zEJ`doubHaxgzlr^O!q+zH+1kyQ(z%aUw&k(+GF)zhrD#Ss`?kUzZ%$Z*t*@ZY3)__ zi!d_=!@pCQlm@v8ro%;y-VXXEgGve1dOf&_AN8_%+CR;m6B#OXXP7dpC7)L`X61fS zz+@L9wa!PNHfqSKLruXK={jTrBcWCf45Wq5-837ecBU_>sYrOz*bOzi2>2SF3(>;n z=BqhojD;bi#T5e)sy23!6!vY#NM1y5Qe{);+K=_-+xhQQis|zvkqZonBO}x5s%l{o z5q8|TL>;)UE~bg2ld!NbD#ScWJUUU#O`0g@Y!W{<23PA1?iPEXr;RYhSt*ooTnbkz z`pe72aCvDPD#*A7@9M_UZ!EynX5($`TOf&B%L}y*fO+bYF?|aCfb-WXKf$I=aUY>@ z+%KRWA~&ssihb#LQ$5QYa1hxBR;2xA3ENTCd1hDM9BN)ve6*_oM`WAh_ZU3B>%+q$_PifDix*__& zzny;uZA#9h7__f1#-=(o^02uI=ZL4E`#+%{=mNb^!l!hC!B`m$M4EhM1=xzFup|+G z3!4P+dV0E#0a@HWsTlnP;Q^!H=X|!x5AN<34q2%;nXj~k7$5<01Qjn#VFaym@h?cm zP~dYU!lFPjr6RtgtY2Z&LSvcVTOOxQI6gG@bxQgtaO~egvig>4U9h)_6DxaGFb8kS zzI@v=c|BaD0|p1W?OY=CZ+_qwNspkkJ<$1GY47ZgX_oKM5I>Mz3z^HnYl4(sIX)OQ z=)=q7j1HUv0tC9}3(d@ue`JrFmUh%Fwt5HL9qcT&N*SJh_)uEg7VY`MYfSUw&iDVu zv!iXh#}g;`y-2mC(a$xfoHc>rZ2Qi}E*tLaMo*5G4%pAN-^QY5`bKYbN3kBND@Y5M z;F)-B>c7Hjz&({z(sC;zAu=m6 zlbUO`r6s&Q_Z};=7FDV!GQng&C+n%9>#P!6)#i&~K9HBPc*tGhC zBUjJU#f~t>%L2wO*mm4N`5ZgB1QdK;AfI{*&!_EkT6u=U)o$kZoUmXMSJz17Lyony z(vz{*31(KkGwF9R3IZF67N`7JGHmn?x4qfNzsH@l=es|}z&$?i?y zo=k<&P1&nHhyi?|No~p>Z`ILO?BR?Cs?gMw5KS>8g&w6SPE&0-Oatz{9$#Q}Q1S^Z z6(&KUa<@^&R`r+~X$_axOOi6_t5Z!J3<8N+m1D=MS&8A0?y1>gaI0l1QI@k&#AQ|0 z7Uy+)M~~>~$R>;G-1UZ3>?+9du$BeyzIYP*$H;83Fm&!gMNLaf%U~xYEi5f3!|0MP z9;`!{>so9=-^BQIbOdyf?)SvxUZ?3~*D_bbFY+*6;C4}9C*&s8B7HlT^R%V0H$OY5 zS&JEA!Oc51Yr(F_UI-)W$y8HY?l<;ut#aXa!TfESergb+bPdUD7Hj_HVqRGnqy=>X z?TW3cFRd?NS@BXA&QvQ!qr{XTh@HmZDZ&B0&mc=7$^$AZKs-YenLlcxL{coD5QYlk<9k&t$6MG4vH<&?Ho|Bgl!Sy@Q;Dqo$PN>lymzaAA|)`J&95E*jIk-SXChkhNgH z6=TF8^=nPGdz`a5%}rXtCJWS`NHml&xt!8BuAY0m36}edAu1TJE^6-Ex9FkI7(C*s z4+So^E~aA)2EzWX+9VF!c!ZX1s9cgW3T*P=Kasuhg}!s&)2 zJ|s+5odW7R9&b-tHMc0v)tFZ;cnHYDW$zi7DjL};U`So1!mjzyc~614N)?>ebi3uu zXgM8Y zwmL&jF8-t*-6hHwEcjRNDJ{#1rx!xqQH%t8DfCXDvtNfD05*(3mj>9%X6_oXe)yIk zTKngJ(jSNe^c*f{63XYJM_5r%+eJ|=Kx(Tq*1r{KLm>N^4s^~7{8fmpKv-;*@cJrNBo8b74I9KPK8XST8T>Z|w zCz|}tg*L~pV0LziL0oG%Tad!?95#8Mp89Y!uIS>IZ;9yxzxd`N%H!;^=EZ>_OpgI+yD*@L+sS7_%*x&vk^~bROGhr3 zgM-Vd^0`4kc8oB_1s>)KyW8ShCa5m(gJT(@@+K;WZay(GV7P(}vUC=hSrb z(am(v^wdnp#P9w6`S&RU}oy4v5-n5dJPbL`y70Odp-)a3h<3H5!1?0S&pd0OKe#N^n_3x5XFRfEa zHa{c++sD%Z)`71BN=ke~%)x?6T~aerZ^Z@Wn^6v0!m7DJua?AGE#VyZvCiqji6rb&in4&U0d&y<{+NYDN^{c@G7gYYuFRHG-`pWeR<%+spM zj!%62fJx0$tpm4la=Ph8)N|^!*i2Y({?z=aSCyQc@*D=An}cw2B1|V78l%+IVvdfs z)l%lfnc#7&fD}DK5~M`P#o`YKy3{^7<1y^lu!wp56M=%q^J1s-?zwznc`nD7N4QtV zBxx3;&$BvxKOaZ&HaM<`{R7DAKdbVzF(~7<0JAq0-;c6Nw5$qNL(8B1r$oE#*O*nI z=SDkTp&_NqeOZLg)5winElq{PYlThezf~hOaG#Tr_$2QG6)X-E7gW9)NmG4oy4=)b zVV0jX$xo5{8al*C&q$hF<}_G$t{+^Xe&HUcps&`xSfz9>5hIVC_*=@$UbDOMNSwoh zt>4K1D*u);XFpxI2M>>H1y`eRMJwHjM5&3RGCy8rds3%H|{l}(|mLI*5X67*JZgCjN@uuEh)%gjb3j-nT;aB2tp-Uk{N zi4i4ffn_!1ich&t66FeHI9&^g#e@7Sl}?HTQniT&T!6?2CnN)N&*00VVe3RR7zs{> zL=fYlL*el?x-f>r(ry!ulXi|;3#WNe>%`e)(*#n_%)TBafyX*HmD4K=I2r8DMg4e8tWm8p)#x2^!r z=io>!OtqUs##Rj?>Jq-fC0@BKIv53<_C0*6JL`eLYAT~4aOSnkL+LZ_lZE#}0u(s- z>d`dP-us(U5D!dLutQxaU_w*=Cnat{``w)h-Q)U-ai1D8h|G`|ugRUw^TdUjA291k z^R>J0{Xd(%U*HYviarc@hW7u0L)H++R{ZzX=bn`N$Z5bp)a}pYNk59Fdx`%0cLM{y z(Z!6!>3dgvJA;LO_(kyWYw6-(ydJoQJKkvMZr`3*Tq#RGoLo?gUM}DChYmlCxDVBc z+u9x1h$gSZW&RA&hXmuSayL*0p)Fd;dA2aZ{!GKVwEeTRbrEOcMejI@f{h6X+tF<3 zZ5iEH@9DBd?+u}q8qV=7fsk(4|)k@;j|jIn?llas^$v*9&l?3KX zag-OCpD{N4;L{z5W)=NY_z6b9jctw&oL}?c$0m~$9$*GubVeHwU$oRINlB4sz|EtG z7W%N0+d8CtKd^}XiWS$37$nLollymP>hUp)g6yA6{MpM{w>?*=lki`BwO)Fk&F6wT zOvm71z4{r0W*_LWkPF%9PyR##_R_%gVy?ZSH??wYWQlnc%{m4&U?)P3p4XW*5Wms| z^T_189>%{+zE+&7AmIHycii^)6Su1EZe@g5`f-@EAlvS|MRsg&PINCY0vDcrj3k|OXV_$|@T-ZGjd3Xl}S5;r&AD=MgF7E-+6FWN8} zR#Xg(Xf0-Yi_|pH=*^96!K5H!X1qcz4()No?wo1p{PA=}yDBg>DIg;WQuNqB$`&Eh z)n>DG*GBx+-PdAFi@#|9{-S*^rpRM`m#sdoZcaA#UdKAFr39eBb-0$;^&tO{jh3Y%4900;&+E>T>aEoF9vYUS4XiHC5Yl2%x0zKDUTYtn|Fh8~~@)K3^ z*Qoe+w^A`wC*y+j&)JQ!kW&p4++8Xn!`zRR^jx6_89RJHnRSLYF`h|9OPQKUk(&PI zt(2#=g`b7FY1#ZhMXro;h0nF}|Cl)Tow=w$=QX4E##%PT2WFI+rhECEB zOF0^uV_$9wGdYa`7Y_x1<4lW;d)Mt&s^KiD>Iz78;wxu480n7`OJ25cY-CWWf_6=b z+fUBOnVvDo{Cn2c8I6N0D-sFCv-mTloE`cH3O;PBY?92B@sDwm1jZl?}qTh zf;Tu5kS|2=DHC-APY28wJL;|_kdj=j1Z#;6jpqpBlbgUba{QZu_&!?&<1&m0iaJ7^ zDV)4Bx9fJk&zBOpkzkq=HfRu8nX3#azBKO{GSaW~1;d-C>rcn>VI`W`Z?>Qw0N`YZ z_kvrij~zW@t7Uku8`bL%-!kkA2a*syv%Zn3$$(zdDO*9TwpDn^Y7rO}zjvFItEVu~ zLSqSNxf6BkwN`KvV|50I>S_py#z7@Ss!XMEE|xp?TJ-G2?Zta@ZRCwT1ZOjLRbS4;6< zraW4@dhDQXeLue!y!e{Jo#HmUtKeWAOQQX&N7L0u0;0E(V^usD@J$^u@9MmXBgxPH zJ77bR1NWn-fKV~}@VO9iMgur~5fv3>P`L>;4EsFZtL2N9$LSXEL4Vgpk3vJZwF{{= zC2cfvf;DpHY7E7wJj|vjV`~e_T(OTrn0m~^3j>TX{fC2xE2|nMn&-jC;A_ z^$B|#Y8C!3L-q&(ZFuBUlLD)U=yETZ;;9%jdC@k8d6klQngrLgmi-B^TWJ#;Q4iUL zEywY+KzuMICplxE@qa&dria9o@r%VKe2Ss-mMmS?02h6rmZe`Bh_j=%o*6Xqa`zo9 zJPQb3L#mpLQDe&~Irm zWM@sTusfh3aB#-?9@!L0#-q+vxIwz8H;Qo3>KnOSfA{U;Ukz|5pQz144o!+&{pjI? zMqdR>H}w~O{r9cX5?r(~MQm+RL#O-2Eird?iE38-RXVSC9LE(fKb~JYHg&-v%SqPD%9C(1CCDV;sqW3x0#`0$`WHDh$&3dGzU(ZYRK2}j63MpM`r zvE^{|s6rIgFe6d?W!fwBeYa30aGf(F7(<)UB{-1s!g`jW!#Y#xZJ<+%+#i^f`t1Kg z%sVIwDtO5Zz8eys<^7k*68VsUi)HG6R6hW;mmXcMU15^jJnIl$ljK3}_syHqW@q0W zj_#%OmF`y$CI?tSQg`T6pOVYd;-6 zt7^NQ!=hLBvMJta|6j8CGR>8!lq3L9(v9==#k>Vi$W< z+M8?RU~kbo&LAbCYJgJWAKJ=%x0#6?rv0M~qK3sYZ^X48_ETarhkE%Dd#iX`+Zm2H z&mYBG$#w&I_cet>aX*;xi~HR@4KbLv38WD>28WDk2R0?-yOoi z0^HQhwDhpI?Km#z?h)or!8XsxhuTE=I?4QCJUSgrHdqzu_8*65A$P;g_RpPN(TSg( zweH*6Up}`sH86GsR=5GAam>=C^%onpkHTQ1j3eCL1Igt@jn=yA7x2c$^xaFU-AkO0 zob{`pu&?9`<{Z&uO8(xZ)s4&T?$F~plD1KL|4t6W*xXDA~|n}L*issXZiZ^|yH)9v$d zzSY@MeU?$<57*1fPeR)NvLsPvZ2^w}pzUksHz^swGk+kXl<_7TW|}==D?H|@Hee=n zIES{bl{Lb_b12;=rn>Nn3Hiq!2k)4+?gVcDXtmQjc@EHGZl;hs1#XdC)Ufzcy&+4I zD3klNN`Km0B5r|mysBq|5AS-jwZ)lqatYr&g>UKg9jXGPhrWRr2gx+)hAx7JibGvf zN61*6KMtqjN*VVp2miZQtQ%ck(PWrN6?tp8Hg-t@uB_qrw}f#PJRxe3zs*0Q4uWLW z;m%#87nvGEmNxuUmjjFofW6(}hFtC`o&f#d5A)>s`LSk%{sIapn__Gg)o~7DevU3U zV@W(aNP1<`jea&OS6URss9R5fHg=VnwO~hWpJDw?BxFBaTKE5#S>)rc1h$o4i92~E z&bX+dN{pji4$jdN-xRyirhEYfhv{G|67>nD=}XYo-=jD7+=FjOTf#N@`(5>uW?5W< zqfr8vJ^^y2+7vO9GItCp;=k*pbwGW}#P(o`>PkBP6uURKw#(-T8m;Z{_arUX>|Zq_ zF543s@NW|4LO23VNGt=<%8-*txy&Z`HNX6(px@Tt4xu3kiu_7n1Z)mX%jOL(_n$w}Z6$};-7e89 zcFt7CRxh-EepK?fJ|sYT!LXfOoJS}8FKYu%H6Qod|6LucHV1U-gT>pig!p7I_X$z? z{UJay-h<~0`Q&BNM2@QYe^rkcosL3Oqo{I=An==GK2&$ZvBj-_ZS0G%ul|>_dS0L} zNA6c$vLPW;YOP#fvlgu{uQTOMu1SGwTr5VShr^df35NB9A_y%K1eUh`bz@u(i+}B%We10$_@7D(Y$~ywxWg%pQ?hZCAa&xZxdz4@O)5zRPdUrfDNiC0_# zu0D(Qe`-HmU}7b1bqviG=AnwF*G^E?=N=#syCL5R#=X4+WDhmy4f!;8uEAt5ZuAG* zLM#%lPEFmWIuG!`Kp=YdOaMAu##ZxsUy`!T~^{`V#rp@fdt`mOK+fR-@le=Bz z3~Bo6EFtMsa~I!(%4UaJhr@IuEa==|4&u?Vg4)<$8KLh@GMflOUi)c=+XH4SN>k$; z;sd__Q5f4lxSl7VBo^LoFmM~9?fI?<{9U#u2b#T6Dat{#(%Yjoc6`EEH*y2~X1kaf@K z0J^hZ=Yu~0dH28511F2jU0^3YB9P9^JX80w?l`+#J`OnLx6&003^?N=h)Y;8TZinM#ggy`??mj( zeAvmBp|GIxIb@~u{RFAHUupTB?iLh5&N;Nn*3WDJ`k4r{_~{S*u6V)wsHb-@t6tBQ zi{qigIQFzJ=O0MGF|lXsJMEj;`mS9 zc-E(E$>nDEyf5o3!}Vph@zJn~GaG8()}*ml4vkI$c_P#a={TT@+2JZKoBevPYC_H} zMsW;yLYBP*={NSyYVYH48_)OluFlr>w$_FKDDbAjddzcqSfjpieml}qyM$&x6N}cc z-Ou}eA0F4!S>KY6}yxtVW>SxW&MIt{QnULiUL>~>ejIVmgfayKAwjr@2u zM5M}ulk4hKZPmDn$r)0i8|^t_E9}i7lMvxkpu|zu@=5g_%Wtqz#o%xtaVeJ7OM=q9 zwoR%ijXgZ~Z1zyy0)L;03G6dm)*I3g|1&mH)ubHQmpjuwbM4RNaBX z>vicANw^#|TvM0|zpTb`lPwC~3@>)j{pWF+wv_UXwqJ-aFH`Qd5&MsPFZEK=7x09) zCcj9%)c~Y;sosc-s|c;joU1k^7h_<`_#>8`xr94ITe112EaC5O7Gf4B1gs3`V#=Gg z(B|em;<`rxMJ%&ohUNk*9q=I4SeOpkl?#vvtKeyzJ76z9m`XEgK+|BQgJyyfsV+4~ zjrU;FHK&zz)c!s+e zV=P#e%`x+&zeYvJF(zwN8`8gm85Cnhxf>J{@K|_SR&!D4t$*}pMiEn4Jq5R_6p*g# zu*>DfawQ{73Mb9suG&bi(UfrC#E3L^S4@a(H`>9#8LUd2;cicg!<9`zee-v#RFj4r zK;!vyTmhk`LkW0N3Pvn$yq9ZfIB(-Hc6uuV>OHdTQ8oxU=jUi9ZZvLJD7|JsMRn5$ z4nEbgy0K~k7p?`OzaH#gJvBW9%I%|oOM8DAbP%6{t z{D*k_!+Yyl4}2C~+@Uj>Z^{omFmS!!dK!GeRQ9B=G#kENcMVIJTxlhkVoHCjU?wQ{ z{kyOLzamP-AF6H%4DKAFrs}7JM?YJ45A7En%2plg4U_CWEZs>v`(;^mK9G=H0I~W9 zvSD__WmJ^12*Z|DpLYCbw5_W=REP_)-r-khtu{9|pqPP|OUtT$ar@lv4OR_%CNM*`*Y#U8%sq=-Sg2s z7Cn1lE8F@D+~&M^spe=y5p>`PQrm)pIJSBaG~RL`T&*8`!C`dkJ`{o^(||u~QHR+{ zj(^;ij&oZ+jEp@M z<};lU@aHDU_iCr%c~%mhx~QTtP=-%!=vb;_Y^0&51_;H+pi~#OrsOXXWQUQ;@bdS? zXvLXQ(JJLLrJBqEh8xoqFOrF_VNOnkEDAa3NDJr|iwL!0@)SOH^l5Z$&}i6ho%E2q zUt6w}*#)#@uEa5W6so(G*w<}5NR0<12vKEa1+nh5|5WkfAu~`fxr4Cgf?xYFdgsGj z)Ln-aHS)Q7BMCu4Y?b;!{=%-Q#L>fN;!627pcI_vhPmgp}2laU5$Re)3F@i#BBxm?0N9m)@v?zTMq&dOs* zq=Rdh7M{26>~8J{nKR|jS4w;o2s?12eIQp#ff~)J2M!&&BNe&`I^;UgMgi26BIa z|M#X2n{t|VjC$cQlOIbDuh7l?mW?n-gg5r-_eu1U*9Nw?c6OW zDDw7Z{44zzzuWT}nr5Pyi9?$bVhBqUgr?L|uc6oW<@BhtXGv+bsygpiWii}YzO&MJ z7uNuaqFm`<9Za-knl!bBs^UIbvW2c<2dFptO%t7ks)*i(lAOk97(0ctb*%QXeqFdS zgIHf{Z&DMZO&7Gg5K~RH!HZayrFD{wR^z5&ClsL?P9HJtN`xXNREjl0rmV)GiuF-I zu=z&l4hjcmA7=OP53As0QaUP*CLuDV@~yjM4abaJlENn1*V2(oKB9ZY9>XCgB4t#c}+socgH<>&6b)x+|HsVs*QGpA4EEv>OD7o zcDrxLN@_M{U{-h5^}0I8p1_@NUmLXS&ukO+jwy9^=VXfxKla~_a$9ZBwHQWJ!I@jg zv<{Qo&xx=XSjBA0yKMz$rVax;Z(clT^Q!|racsy)Vw71+o&UxDXIsw@{}seBp+txSKSke+e$7*{1;G#lmA)kR0#5~yQBAHIVZR{`whgO@9xCxTo!*v zzo|t#v|D>FDV51K&$86S`IS>OQ3`yrg(6Bmz{9 zj;S-h!d`^*v2Pc32lC-EZvdr3(qxL{_^)LqMjpppF5O{mQBtrUhyv?3wb_W9y~V|9 z7uR;03<_yHbW@FHX}CHNccKr{0T1WJV$tIQKE&YPYmC5eCt=6p@!mXE#QBBva&(@g zGuW&wB2=69TVXk|j85HM^sP$F^O7c9&^~uk4GjqZkq{rGj1}vvk{8wdB7Me@fGcOv zddR0Jj%NPa!ql(*C+R6dn2 z3pMzQU7&-sEFvlun{S_U3Sp5($2Db@=5Io@*UkIsdl5=qT9mB~iB;pO=M^A|Yp z=)3c0WsVjq3-)F!sdS?gL~<+?tWG#|8AT{wE7$FX! z%sL|R)7OMY%aTpQvM@$RdobPn0g}7_ zn2%jC^XKA!lV18ZQ98-wwa!Vu)t4LVP?xEK5Ollr?OB$zdkA_BBmk-~5z=*JO;1@} zfeeyT#UvR`F0m|ngyX3NPVyFYeE8={uSg)>yXQK(vM=b{L^pXD$b24WaS{sWZ}lcb z1qXfhe_)fo-{Wn%JIi^bxw?q2uFi{(A4;QK8Tns+q}sgZNVhH72?+iMqn|wr=3yzE=8Q?c-nihY;!dqpyoVAZvXbw+I*IAC; z*j);V7q58BMz|%@e8h5eT8|hMZ%QA^$$nhCEWYxxbrhbC@hSX9U_oaJmVw&y79PO6 zova%BAoDq4NH8?&g7nXbmxRw@S0Rv4}NnAcYQ-ax_^Oy)(<=k3@RJS4#>lo(n>G6wXr79BnTdlpnXx)!U<$>La{O-Wu?PdI+Pe zFk$i2TH?ogI;D`Oj5AiY3p)~@Mmrc>@`3>;BRYT(3SRyM@x%GSSgGxSj}1t9pK5D` z?7?wG8YsbIV`C!!j6B{qG^<9;`o495PBa>3zkk0XD99%w5vp2a!2zuNV5ajsnEdEa<7r~b8 zwZFLg)BExMO8Oxj=r*f*`#4<2+jg1ND0Thb-N)6-?;M~99=AsKO2sF(4(qmL*(iF; zA*smTTW@kos7u@OVVmB!u`Rr2{FvA{eEe5h(bOSe*kEgFET{ZS4)R5Zd?) zdHvP}s0AVd<*^XwapFFU|FMzAI?tvARj3m4AeH5ey{`RIj&h6{&DZs(>$u57zod_H`B7znO%3c_lR_B0@AIZ;^WBh?AmGZSnOSp7^|ILOX&fEvDI`{Qp2Jnyu+|;!4 z?@_hypOxY5krA=2DV9`OF)|Me?fI%>=R!L0!F*+2hv&`dR^- z{j<8ft-cRP7+M>ha@u{bR#saV`hw)j8S0E5eqN2QwX0PJWll%tKc;F!f2^gLS*Z0! z)?eN1&R*1S3~QS=ryO{4k)v6+b-&iow5C+Ry<(*I1v1_hm=+{GER3NS4(w-fs?n|- z=D*|BCDH`NXhD;l3ngbr`m7+mS7rp}@VdL4QY>4dw~}QNyJe7VbqaY^`2la1a9%s@ zEWuKeuNyNvNYO0s#4rekN7grz*hugmB9}ge2m&29b}tfhlGx7Ahd(+vajgtbaX_*( zM)0-8+{Ci*zU9F1YAGU#)&sr_km)rMG72E%e~YAQjG1>tsM><73Gtu*bs&u6QL?*{ z=3QcXeP?OCyL&hJk}@=yZmnDB0k*zepA(D*DmATIb)ft1M#Se>>*7(`;Y+!Zh+EmL zynw(N+~-&tviMQe%rm8(&MJ?64&bmyT$6$w zxD*M8D~(JD*;*2mpb+?nh){;WuYq9PAoj@kiK`$m=L59&$FR@rodCBOi-vlvtLLS= z`_KqEwY5aTE2(v3Qo&MZ15A0=)cQPWAd2k$&xur1I%={%OaVFC(Eivug z4_ke6Q?Y_3pX%NWbwbe4jxMv~Ywa+iYk`;0^@@HhX78>;p-W_s>C}Q?QMWI5U_Zwx zkxCcV>l_5>6&oXRm}6=I3$0ZyOF*`l(3Qm)qs=AB6C9IiQU5R&2rdg5;eC!Sd|nhM zL2J-kT&4eo427fA-DNwIqZ-4x2W3yJaeoP$0Q ztMbi=Owjf9Yh{i3c-Q3-_X!N`)F&+lAa_ET0TWFNabu=YpvUCrSr^ zjBUQ)e+$C>dR(V=>%5iT;LO|@{lmoL$YU|@8q#Dy|C~YVLi2Gp;M(c&aE?qb;(V=R+Zz!Ll9+UonVknj4kFydo@WeNETOhm9v=SYPrFyIfZAp6BE!C_ zYTYW_NJBi#-1?Xp>3_SAe&#MGWmO$Ow$Z&w-OGNt*4ckH0b!WFmHlD zuw5Naw)cw{&MX0^YyneP=t{HBhs2x*Qt~jPy|#&~&kujr`WCU2mEOmt1e!D-HY1*= zHj`9Kw!8hlx&bx<7n`nw?&q5X^KDLDUza`pJI>1JDau~=+c&{5EQynkal$DQ3IwgIg4=%I^ z!TcbQHzoOfeqtrO=)D`51yqOZ?@U>-y!c!BgJ-(Xh~)6M=D-GEe&^MkYGg8((n3M0 z!=#>rQwVY^DygF)GWFIvsEf=vARMp%reR@OAy0~(bmPug_%WUa!D!ujbhqzXqm54~ zF|PP4+6}h8@qy-ccb@%~-@;7ayJ!LX?RPoJT@1;540N<iCbv86ZUr@N4;3)*!&T zrlRo7OT2~3I*-M{c2p-4HE17LH!E-wyr-v4e5)KE_`IN|VQGbxl!XQjwww9H3$80r zq#(2YsLRxdTa-YvKUZnu$hqy0fS|` z97{_!bc%)GGZ~+R_t^XOPueI)C?_)ka?f?-t@?MJq=cnhbvOmHNwL>|>h(0dTfN>m zhAO?MshB)h7SBnXiYE_LOzDcCeHmtkX3z{_7=>M09Tfvlge%l8NIl_9Grp0O6gKU0 zi6Yi|j`(ZN!Ql|0Zik5m9<+Y+;+m?=4D-+S6p$oP;KYUW@U?KlwqKmB@poOHr(>B;4R zwJ&!kzy@%;HxNtfdszL!sqH@bIofm)3;wJ?e&Ws9XjIjg-DyFamoRS|HtQ1hqZt}+ zLH^RbnLRrC9c0H%;6#XoRRsXx+l0MgVC86XLXx23qT`}92-6rLEQ_VZtgO}xSwOlK zu;+v_F1}R#PL#-WNNnQzG3>5za4k}H3J6anWsywbdprC~N;u*}sm50|CAW_<{o0|4 z?|I3Guna9D56zWA^uOZ1&*w3mj7uXA0lSWGblIhR&$2ABQ11^?!*36M^^CU#_7u)M ztS21%IdFYd?5AmksSY}{%(WdK@w9=8P+Xm;4xMYYxpM)`{Z{gElk1-;*Cx4*HPv$~ z%R}5A^}2~#PW29#Edan@?@7`)ec5-WrpN1czSeh%IJ=nz)y-ddigaGD{Px_JT+YZ@ zLpy!~Le|s)Juv*{%9L3P&ZBfDKCF=hc_B1Q9rx~($9y!pfbXaX`_P)Ob;$NC7 zRJGA^Rcws|Q^Szm!$slC7DfUt{9B_|KkvOE-6CwcposJ8RqebNIMUin_G``#4GJ^SqAF{~A&O)7lSdRV_rz zR#^)m*VF5`dJ8G{|L5sulOY2ifV@M*0g8IdBk6kM;W@PJ4A_d~=-SfgUC8M0qECHI zO*EM`9LY`#*NUbTPjBv+A#y!r<=oE@u%Q<5kK&M%Z7QecSnemB+H#7BQ#K&wZA#N1CM zW#t&99Kb=HD$3#JF*MMvVQk@kbtZ5RLJ!4Hny>IE^(zr*qs_=*;_47<^GhC&bs{{$ znrSAc9z!WM!pLwuD8VT!*+=__GH z%?{*($u5c$H}|&mSrw7{M6w_s@;CG`cwgL4&sBf-zLwe^91Fa)G-oo`6j38?ZjD8L z;FxajG}r1Af4NQ1NC7K#6x*HyMsk75k?CWB^v$$y=T+kH<=YbI;LPH3!13DMjafQp z&Pe4nrw<|O*5>h6`eFU?{FopZE#3dJd3J(-saY}r;L#;M?{+GY<9S`hnUwF&Gh&^b zAGJ{bo0(s3{KxK!@BJ;d&JX!a{CwgCd;^AX`uG2|{SEIUOM^C#X-jBlrB`~YnLYsI z`%gMFZVzy@avx@khj8yV`3`AinZ|iO3j!8^{gGq;&$gDB9(B329wndYVf@b(P5yb( zU!5!vy0fzj5ZD2?(>eK{zqrZsB>be8)B&Xp-3Qh1Em%CG+F}PqT`ZmY)aV-YX41s9 zdCiSd$}*|xml(#9x}Lc5_q}$Vq8r{@&~`odnn?^FuYHWy%zOTiFD+tg3?anNb*Rmp ztFecAFG3wR+Fwu`v0%(fDZ~MS@s%h?HoMmrUr8v$@|{(Y3ciD+j5}&w;BEJSZD}pk z#eAvUYOQHEcjxs;l8Avs7z5)n=j(jAE}v9)Suva!>SLo0jql2Ip)Kyi8L{*EbyN!$ zGHzBJsE-t6CZx9|g%O%W`T3~|W~@U@AEWHk3oxdKApDlLTZ%6GLE?VOHolE<%)1@jY1EKxi*gP86jUWjblJO z{gvz_O)korlb?wf`~q&Flx%C>366LgifJMq9_iWGxa`^9(U4rBYfbh=o`fVM)hIR= zFFNksEtz%jQ%$itpxx*~@PhsM6Do80IP$>^Rn|((LS`lqTMlFr0=ownvv!!32Zc1yF^|yr6gvzgbE{Xm)8i&WG?HpjV2r0UH`DK&^*sZGMw9#K7t` zx;)IAsrlVH;bnh<522g*=nC_OrYe@Ui*7J7T4(B9A=jU#~XL zhjrT)v-X!5bfb%htW;$Z!rO8do<>^gFuzdhPUYhFXQW`pQwbzrHcG{wCxB{YH|b15 zN29gY`LopbMQ95~{^Mks6doOZX&Ff3A_0!>HxDFBWt!*S(UmLqQgaCh;G-SgxjtN! zYlO@!W<^lA&Q>dJ!RlxYd6Hq3h1yMA%cn*7{%rk$o-g_Md}HHyfH(b-VS%opiQS=t zV4c1FSlHqLscy2{Nc-?yaq|qo5zJh9x{Qofa9#1388&;?yRG~E>%IXnfGxe`bB)#( zMLRSQ7&lhyd$V1nP#T!yoa|H^pGh=T>kmJ%n#$I92NP0ceS}xE%530MG_f6&ib#cUA_vmJ#wMuBw2NV^>h84E;=tW16PaQ_CHjniI(g;UR&D)z}-abJY#Fif%+0J7~x*~lh-fl{= zhH`)H6oiIQihg?4sPzY4W~HRJU1<01gLPQVuP!O`-x%nP>t`vVv#vy~TWJVsKqQb4 z{8*l#6}lvMiHS1IbS0n{7oq`gN^+@lRo4lQP*C5@{GC9VC4a}v3nvXY7hj1xE$7_I z1g&QtkYW#(mRsJqvZsdghRUZdjbhys{;`g(oANh3B{)LH#krOJ`v4u%5GMbd*c41= z8>Yvcnwn14pY_2NqjNZ-6ae*I-I-DOGqC8=>$QIqe5e|hGhToDEt&zuM}k7Q9?Cx*_XT6dgpv zmVl1|enR8-iiLct&sExd>nSV7#e;*_)2TZn@zR5iq0(OI< znjc8Cy>U6MHDE50>k67g z4l64C=A3#yqCb-eiI%j4sK(I}-P%CWU$m0c@&2{Z$KeI|?Vm?T4WFqE#e~LwTh7&N zhzVp4-%08&^uqW(Xz%wDC80QUga7+igma|RHREdwc*ONnt!>izFXy7-=nmbaBVVNE zy|P&|2Z-4cCuZ&OURu4ea=3E&$^UkN_Q#W|j=O=!OFq z_bwSv6T)4+#2)wCB}I*60A`?(>a`Qsj$JG$bHYST{0i*m8iIN}q2M2gx7-idJ$_j2 zye;druQ$X9S+T@Pzq-j>wJuXU++#qU-rN&BgZp>>Ya{Fz_ec*!1_F9j?_tGKIvn(G zA52)DfDD)2--i^lDV|z30c$Nq(+~Kl{C~K#ACC<;^*e97x=Pd14n!SSS~d5!=0(Hd zLob;#F+MXcPoY(S_nKCpc0qGPlAZ9K7wXdt@vLj~sWwp}u@pf2e~$s3(a@BHx*@;3 z`3CJV^Yg7u?ajJ#t%hweZrup+pm3kb1s*J&(DzQ9b_;ufgAE@@7xH^;W zXQrD3v3Mey*3lb9et~DDZa>Ta=SNnGvD@_=QiPFGN;ELRQ;+PtADDP;^xs?-&j#o769&tBYqf6EEssp@V8 z%toY9#XQmw0WT``DjWZSrkTjF2ubs{`&87_U~FhMyUd*_8g`tQ9!o*>6CO!Zp7h)V zYDq7JFE~Ou=iyp7C4f=FD4}@M$KfGih3-y%gRViw0tqowsNN=o+++ABD3TuQHon&e zr`7!9x-?{1quoO3x>w(N=J~#FA9rp{>$89(LqundfPWVYBIlg}odZsty%T6(X5pK8r*#Gat zhs@ypg+xuMn?tu_zw55QGrbg2zxPyse|iB200HI~M9~)~Ly2qtcM&OTUT1yBZTRhH z>tB0FHZ|Y)A2ySl-d=A-oEV(?GXD7hV3cDd-cX>WTQ?mX@h{_)u*j8|FD5$Xy&Cq+ zA_AhHq*%J}^<~V5@4Lu-5<$|%0r!Z%gi*Fc9}1oYdC3*O6m0e@?+sHWoXt|gV@$@Y zD3=)3N+D;pXttyJ93YPgGV0)Jed_Xu(`#E{2Ft3z&@foxb>bBoF3= zrN5=Y!pJMw#+{hDUp8A~3AZ6fx5!46E%~$#Rl@6Ufh;#0>g7K-Za!rO%S*P04oRYO zf7ON>(y!AS7(L$?!+!O}L^(&15MZos(c!d#R*wX#oS^IJ$0v;iVEU3s3 z?Q4YuB15145f~+Q;(*!GME~c7yX;1T{WAWk9zVzqok#!8>9q8K}u4(^Lu}u=RdfAy07)jOi{@hqm`KKLOFOh!1oOPhR;o5m!I#Js=MM*niq zaiA@Mk;EwF4aKjLo>(kXQk2%<5+}b1mXdSrNf=ZprgO zq0k=Veh1mI68odiK&hMNPzj9vNBc8O(KnO$`aW^JqB202H!3glwyjnpA}`zTEFapI z(kqv05lz`ndjy}{J1FT^XfBGZh87XCPDHY0P-?IZzK*^~`KPLIIYFgNoPn^>W;4Z1 z$UE4&+|?#7C#dIK+G~Lu&pJO=rD?@yNVmO9xl}?arSZ ze^o2DHCa|%ZIJEgs0xn!XY4Dh@!wzEzg3vqt7^(Af!QA8tH?Y1waOeDU2@R6CKH1j2bds2k2 zu0wHgWMm{E;G{5yf_J5g^A`U~2D$4Ye!*do2Y#NH??ASGe9cc5gjqKGweTHK=0i2a zy3$AT%PqH+LcnrRSR_x=n|lWe@H{Qe%P#N0vzhUp--B{mAt6}1&Alz>>c>?JkKuKk zc@V{9o<+j)59Rl|f&2S#`}&FMYJW`yb+~W_W4^i)?e|W_qivJ<0U_!MbCaFA$vA^n z?PxN@L&6l**|NEC?^kUfE46xzI%Csf>b|~22}TrneXGz-eq~_9nrcy&7bwplnUQaudovn7|&$mO)q&k$?j6cL+Mt!x4&OE+ffBCxD`}AOUo+rNkSldk186pF+;Fzy(*!2zbrcV(X#jDy_`|}OGoG)mx zru!a<{-I)>}r-#oAxG=b8GJw`V(ZY5^~8qU!NFKE4h%gUFe!xP^IrQuqRb4V3^ zwBRQ+;|em;34O;82fuq<`DzCe_b5|fM&MEdiC+q!k|%LPhW;8PQQWN(4Ai1P#nu|| z0R{pkt+O&Yp3H6>`xDte_A>L|2h+fIwx!=h6Gc=;Fa=%;UxXs{@jYNpjD3&bU|>p?@DkU`z$O32B=XJ_ ztZIQ0xa7N~sA1gla*KZ$8|2D?m*aX{f|TE07=?-NY8-GhpKjgg)invYL8CtVZWZgA z1o}I80JL@An{FatSC0Zz`Tw)!?XBx31l}Be@0nuTW~i{m+d!*t|A^FHUL5P# z{F48q)_}fjWl@5bFrIsa$lH2M?JZCeljkhm2gjO9CXHzy{7Bc~jgX5#Hl#T2V!a96F z$l6^&h0mI~h8e)WC<<5lcT;Vz{k>K>-IH4}<7rNGxv1CkH)1jXPod}Avd$CoJBuu= zU(uXdvsJGe8WF$a4azL3U-<=}FeEX-i@#2Da`Ub)RM7O_B2$|$)ng8zg^5EM)@6zN zbva+!u~7<2z9s2tR(At63My5Tmoy&F2tlD#4&~paUsJEg{;e)&mD03p3N5UIP+61^ zG!>!QTz%Al%H=Vtj8-c6B!>z4b7MSX0#tHo9t9}&V~Y-Ra>?+(#>$$3!kz(NH&v7g z@XQDIJ}yaG(d}JRWfI|xzXRNPNnRo!rB9-~!zc1G^Zkx8|R{uk`a1zGpf63Y)fiwcE{Js%>;&6GjHDAmRCz1OPO z-!YY__QZz5X;YH<0n>}2+aFoTjMJa(p&A;&E6waFexa0F&BDptOvvI{JL63x0|+@% zg^hVxt%s_Man~o}PTk5kcb7&Gi?S#@2SvX@YsO>4*<(>>1O{s{ab52qMvp51wmKJ+ zE*_5m@_`@o?ps#HjMx07h(V7c1pCZ$dr=Z`(x*>H#(`7k-9gWLNah}2j?zTo9~4&2 zU?NCvlbl+VUgZYk?8!u10Q=r81DX~Qwe%e1Xb*~zG{}DSRg^-n{8jT{%65D0&+=&N z^gsXs+fn-M+kfV~`wi*qz%0&O34oSURF3%Bam99DwSRv{C;kM#5pWwXU9;Vv1>O$d zyX|z`4-?$~HkFaSp}X5Qz3mMYzfZu0{kNcRmIWS-Bg%4P0`~h&ZvnX<%D`KCvzTx{ zw-rnk+oY;ITBUHEx1q^2Q&`{L7g0JsB6grGX05cXoK^KY8i>Hj|Cf6Ae+)06yWLbe z-&@Mf$T=MwZ32$Y?RP-I{+uqKW{( zZG2l*_J<)-Z|40EH1yu{A)Nilo|dLHV6{&p;EJ?K`01TQ$90S8?I9geeC!;1v{9)u z`sk5yp4}g!gGc+nvsO>wq8=$}XWg}w+W<7yg}AVyqUwHL8r5ommEsp9*)S&KMPFD! z0Bia}wrv^C(^9Ngp4KwVVbE0d(yWnHSrU^}FYtn;Gg(7L0iV^1N(6}AW%n=5L-=)u zx>>b&e3B0@-2_Izs0@UyOTU5thZbog!fjd zJIYRFN2uOWRR;OvJ?MvS40TzbHd|wJtUX_ukth^YG2=co-EbYD^}Tah+^D*W?-E7J)Z;y z)p`>~skJ3UMx>q+jV3kYuoH1GFYe8-)PG9Q_KUKM&9N3kS&Q+P2ma?`a!!x-lX|Yq zR0E!+Z?S}+MZ=oEc*5za2ues9{Bn{Gd-c{n-jfaIMm|ZxgZ*VJuy|te9pQRr>DGp+ z*P%pJpx05)z;w^S+QmW7+@Fh0!~IrQpq-`vU}?2K{`KXW;eOjWF#Y|m=c>~dy>^O4 zmV7QN8ka6NSA!ClEfQXz{fglYa9a`7-*+2*u65omRy|K+m&!Dl{ z77~{Vz8)Qz8^Er(5>a0c$gYBfl1E|F6!NvHWct+vlJ*hHvv7605MkMC%%u z+JBZXTv~YLW9*97H8LEn;^K@mu(F5l*J)KbINDZ}{IJU_Yp8|))LY#&jz+~FB~=BL zN4M;`F$=9_Tsn9iBnJty^(%5H&5V#4gtygx4_y+GlyJ3kvz*@Hs3`wqJ=66zYG3!? zZ{uH^%#l^~wY34K;NC;yCdN?P(<7_=V{;v#eQhncxw^WG^A@k*XR8a=Y0kJbDjPad zG4{Ky<-C`I8YoXSX<;SQu_cz~h(29)f55;99YK9(X<3kbl+PpaeSam*)Z}ZR={9h- z@8$t(FHsnXK7DRovxEC@1AxtY-QS(XQ8)46JjndV8idhNEz_Y?o^h=xk-q`n4swmg zdF%HEYi#fln=&hFxMgnVhaY*O?J%h{4iK(t^*vc}x!tR2gi4vFiAS53?ohEqTlkq9 zg9d%nZ?WD}4l_*;a5jbU1rN(xT2!PBhynUO`eJJJYm}A_poKv;4cL(%^<#frtM=5` zi6-N-u8IoBWeK-g=p4-IX!;=ub-yNVSyu5hr` zSXO+cPuq7}nWQwZZUuxr*GrjWg_7kHE~tCxWf;#2lqUh4NTcw5XiQbXcJMHw<~4?o zRdI2{)DL&C(y%l}f94Jc0M}X4K*EBlBv=o+9u-X3?$Vb*P*a(es?DV&Y^CDQub$Ax z-;tug5|1_4ywnqqQm`S5YChC1DYuK!h%SsMFR~kBJL{2-a0boSK1p2{TYtxqufP*9 zjq3hVZn|lXtDvdEN1n{p7=jGRE+@BP-{1laiY(AZK{NpT&Klz@-C~pKi8E4oj!fwW z(ugkWrAcy@JH&cO_n{Dl%58?;8eiw?T|!XV0?#D76HYX>R{nqp>H35$DEjz!YE>f; z{)6_Auuz^TF$t3ND5U^qIhswIi0f)zQ12DXYC*odAKy#b?9X2JCtE~P$l}}VnOpVT z2Jn-aejjCFW)iW-*WyA0i3ph_U%e*^co~S{Ek;`JX99l{%|o093W;td)~4l~Ce=#F z+RKJMoC40iwC_ZLH#31Z3HM8Z#~XoL1Nx^L3r_dVag-&B%* zK}mDs)h2y8s1eY)4mbnF_D;GB3%^j&Qg?rN$vwGlaykx>k~ZmHY6ELrFYvsO?D|f$ zpk8vf5qP&DlxjS*Ub7DCEhd63&kb&E-NEnKPl!Zf{54q+Et=2bpH309dX9_lQgoC~ zV{EHn;2%=cDKQ>YS(dbMu@V>U^y=$_ytIf8~FH9Ll!6ArXnVd`Jx>5V>)dq=7YO!W{#{KSVu ztA5Hza|)XH2Y5wfMLr%a7XkItQ%)tvj`kH+BN%4r8_U%S?J9Xt|Dkjz)5ICxBx|~H5o-BR0LW2_3&Bow}^b8bzwHCob0gq#=u7l;H@MDm#*Ll>hN`k zhx_yt)!&fxW-q?iY537)na4bQ=~f}nQC3679jVX4`tCF?4qs!DIXz623{_(1{D7XA zWdV-Aka=O^f)93>Sdj45iDz8mlo-gQU8F?k)0O(O`1p~PKph>4*3<>y3 zIDezmTqfP{v3er9E~jS{Uw2NcI5oyPN~DTFkpdoO-Se5pqMGb>6~A*+Io#sl(L*9> zKR{zJl@9Q8^Ev8GGnG2)A=Qw+-UXoZw@3C>Ih2w>*00IN)NiXv*Tj1(P6Qi9T-N2` zb5yaqA8=jW?>ykj+jcT7INpA`*8+t6C#uKnYG;%+;Q%tqW9K|g6kQd(?5UgW9xq$G4?d!X?%P_yauAgnVbO} zE?@dIfpB;#K3T>eutwAi_zg zV>AwVXdUYXx5Y(w*SN+uk;el6j^0VUNn1m{DZ!h=YXnF*fZk0!Q{xd;a%jj8Kv)@Q zgTMwS&Y?_<=Nte~VQl-A@T;JC3EmrB!JltK+R6^Fv^WeJGCu$)iVx*Zfrs9%o~XKJ zbB~{MfVEx393i zzG;dZcOsviWtN2pST)sETc0%_n!oHg&#Tm8?0}h1c8G$CPVdy?68!!Co@kXa#bIm~YdJHf9?&miD zYaka`s$6xUCdN@l59^7+56Lt3sRlTCdq}#QKUYh43y&~kwY(t9OO1Jw&+dz3>S0q_ zpXgV?QFm`BUTDqV-spJyzncBG*8E|pXbfD%g-rFq5o*Y^F8o{pC!i&OtuJtUBw^NC z{xLS`yMMQD;-#7wx~p@s=B(G&=Cs0U?1boZBfr}UQ;S0}qBgbKW$U3T<@NMx}!qbM7ST~P<&c)yu%8Ek&OIj1K2mcf_*EyL%RaqsHLHf$pX z(xP2q#fOa_$*%>WVp!+m4X9EX+$Z?W(VEKi>*GiLg~$01#6Gdw$~gEF8w^gf>f=={ zDP3Z|dh(Ne&d#7kmw*7aaQPa3XB@jq}NK&HC|H zJ#D;x^J2xq0rV6B&6SebM_ZS5D9QoaU^|=mEWd`!rAV8lJ;4Rk$vQ>Wmty5suaU|8 zK-2lZOQfR~I2lpgvYdjYf5ncZhOv;bWGcVga~vI`dy3Ia8Z0W=xkOwlYq~$s;^#}6 zdo7YnVs4eEnnx1jfn!}AXH?6_C6L;)Ml-}_0&`RXPf11Z_G&-~8;dQTOE{4|>rE<4 zf_{2^%%K{b?XYdxBsHI;m^An8f?adnwj;)OFl^{05PNPg(g0Xa&QxR@zdh2XJCCR} zX8_NCsEYo_A>eKBSgqhC2-aHwRY4$qC`(C9!6Jab@}#71@wNL^p@zoiiw?%p7cY@y zAF;gbICNhO7Reo(aM)Nr8bMB>HniO%DsD1QOvy?y4y*ht`%N<~7a>f(r|Vhj5^k28 zxnD5*x1@l~`1>xoBSrDUc|_tijs?*CAaP$0-0_#BSv4|>H#bu{!#%o(m-YIpIu$KI^0UG{B0kbOR=5<*^3<9i2dH- z-lCjgj%*R=DMZvsp6{}XEMHUIbfDtoj|xJoaOf}92cHPe_*XZhlguOGwDL*5iIVd#p3|0rqx-zxc0m{qwZ_~l z8dZXuL0qpH25A2mM3@)1>tOmtyj3Q=%N6WxU`EZmK0%1%{>s4`%OITb&I{D>96;pr zG`;258=Qs=A{asy)xW+hP?mXXKMhn+K2ztyQJEx1M45MhM@E6;was{vMv$#<%cx2u zLzl+WtQXYO6&2hrMRp5PP~#D-^E00nVHVlor%m)Vjj~9G2~I}G-gbj@{8XRUZ6@cT z!MnPz#6`sp=f7vK{5CbZE& zeUnjhn}|m{xqJv4fE8zdctyZDoQ{PWD*kzvI{!~I9z0UA{VGU@7cY&oZ<9;jNd>iki7aBTf_ zN)Vc`A^H~CsTI(AlY4;v`konKO=(ILf0R7EMa=z13?m9^_R<2v>n@zge2}##pM@#7 zMGlRAG)URA2dnvJYR&*4+L>%m-b8IOqLkUBdLyIBtTaK-#=~x~zhJB4+%D3K!L{r# z&flr^iu|?{^F+vi?8_Ros>9XK!Q%=z9C)vwQMvxh3J8qPVK1~hgf2(?^oZK2{p!cU zc*hmk86`+$~bm1)MCSp&_fQ zA*+S|P4lf8U1g+oAF!-)0v#4$z+WF9EY*=-GOB9|K@kN2M<);Td{JU_O z&nj0uIDzPS;T%QmzX}s-g=IKjZW4Zrn+wwivu~EshuJ8qutovHY4RpZVd4JDr$Xa zD&F4g<@GJ{1SA;LY8e@uw79f+9-4pft!=Fi=lP{BG14$Zz4J9^rBN{eU58uFNKiot zfFl9g2aEhG0ZG0$m(znekktFE&yuhCg(DjU$wq`?=;5js3EIWobNs z_I%JraK5+fA^)R>?xA(j3De6lbJNi4&mwrsr-=Be^kyk4`SP zz|Pm*NKgB))T(7*TmpLFOIr(kV@#W4`_x!Ho+@#rok+F9?=`jUc{>)vs{a7>MGw9? zRAdfqkc5w^!&wzB0eZ#hL$O-;n}W*}gjS7ar)XRYrv#k;Qw=-(aiCBPj=^aa?9=xS zhx+o==q(y=7)P(4_Bh7sXB_zb7_ze0CD5XeOs%KdI5ynnN%xl@>2-`|@iaB;tH?gf zA>}^-$`ipHFvg4&%c26s*D?9u+bQET`%Yj2-=bzV-h6$Q)WXg+K>}f=U^0V@#Yl@x zL}EXfl*@26=`uWICp_o5I`C!w_L^TxKs@-#n-%D)MHlKzy$mQu2DAZXgDB+TkB16G zFiv2-koL}}NbqoQ*l2!1OQ=-nlP@FMCkv~jl;Ql9z*2TS_$W}ZiOUbdNtR+1-*xUL zaV}=TB&Qslar7ju+cgZk*(^0n2ru9#3f6$Fj^4C_FnXhLQ|9smp9f*wUhvvUiw*(0 zl?jOE&trI|+4JHW|IA1={%izu3WR;~p=PhLt*LMwNyvZeVH=kDn>+{tX68(_Bo(H~ zmJ~aPP-kv2m+6a;tl;8hGsH$-jFS0SJ>*IYvRc&>2ldZ6y3v`dECx0@n1`LGEm~ds zD-v5K`^XS4T6UrU03AngX_1~sWy-d8`7$B7SUt3yKpa-S*Ac|HDiMiaOr(|1S5&a_ ziS_afKedJuMDae+gpA)>uHLjr3nIE3)6dF4c)scY6)qO1FVXerq0<8I_7z~&Lg}(u zA*b_fY#IS}WeIe&shTfiG-y-1qa03Y@94#D23Fom{(J~jr#JCF5chgWn7b|UTg3T1 zWwR?ku~Qp8mIo1dC6VD=-jz2btJ*>S?PTZ0Mh7+!R#1wTohf9bOr_6KnyvEtWA@sQ z9d$12BQH4cfmNv~;orhPUFp)ASE5309~)>`807uq*5=~6iB{NN9K0JQ?h5jogz6|_ zl2fx8KMrwJE`e2?L7@@M@z2^l@9+K#f2$bn$0|ghZX6Eoq0_JQTi>!b{a# z2lHXKc|%sU9XpO|km~7y*@eVlbVJmsrogE-Lok(ZeagRvf?lI+idBnnIA9VDqj@@a zsVoCWXhBzy+Rgd|l$n4F`=BmUA?iAaxOBPG1>zp`_tme>R(WU6h(Yc{O+(hP2Jk8jwm4uz%GN<^whrC5?6SX1O-)Q zqp5gEbj{5Le!RDuTi`UV>Q(KvWuW6t)6|C{^K!gmR%puBAE15&KMKz*M`~tlxIggE zu+-G0n2b_j0gY1QjbR)U(MG}}WeRo8)N#_z7C3#!^jj!Byv~oLy6YpT$1|(TAkiI9r9dr zjWThRZetRho7X}v9lU0Pm120i_WchVNMSH*fBlEPWvZ{sKsJ9aWEVF#y$ zyYET>iX=R7iS(~UXxTsv{$u`WZ;{SuOXEwF8+UmL(4&3p(g%O=;QmBKUKaL>c7!=f zWh+I-IJ<(&k!4H=sHjx2NYjUlr>j5z1d-RmTQxtZ*N~@zDP(9TmdnGc2mC@;uIF;V ztq=I?l6dMgt9miPGJ+q;ptK-eqDw`%)I5zPu?M6rK`^CDaEtriyqWnwWXCdN z#`D2+W+|oyxjbB$SlM0mL)u=$U>(4T>5$k8#GGo6U3m`IxkvPOW6|VP$NC56y}x5s zGK&3S08~vU(;F74@wNsRM%)2(!Y@ylWs@y&w&{yVaJQ*AM_-WjJ`i@tzqKbz_5D}d z61HBvvW?$RJcAqyb48xMnqIIu*QqqBbSM|`Xz)$rsTPF)7H^b+bico8`(C@w7`B;ks1IO*9u z$QV3KE@ZM{?TfHRJ+UcyT*CU8l}%By_D-#NP&EbeD>w9x``A42D=NRnx>p!0X1U+cPIqAWk2t*7O`CrdI7s7TR~bs~Tp}>m8k4(NncO%*z1#LeQx# zS+U9P=DOiZdE!U^#M@X_7kB2@6hC$R zDF)>RK}+&e@ge-V0;kN}H~o3|o_sg2Ha@lW>M?(cRZ5BdR0Sh6BxSO=5pB_&_!*eV zD1*<%#_z}h+7R+#%-}U+mU4(Bh7v}ck)#B^?u@R5K6^ID z5L#4ySgk2!mpY8pDf{IR4V`%?-}}(saRcpt&oTIUZ0G!6#D0`2?8i_@WxCEuuKbNy zO}rHmhnYqfMxN?6k_*-Y0T@1H&0O+f$t%;C7aGM~6YRaBwAq6e+dO3Si0|kjcCrJE zDi2<1Ql2EjZN*u7cyz^sJ7-@8>GP<85nyrv z83zFhPq01qf*vJ#4uMmA7Qc%EJF@%p)u&`318YBWRkg2YL}p|xj!@GphTgD)qTP$i^g;lWI(OP(9;0xeD-PY@F%%E zNG8qoN38S!?+S#+IW=w1>LV4U9eOqdq2DL2PnHXG58w%7n7oi#=RX33Ib>Ji{#dJ+DD8MziqMPQWH2@@>wfam@zQ?#z;=uSP_dL; zr)^y8fGk6uEgkF`5orwZ^wEQ+&$4HpT8S=}-`cObne*(NKLt1$QR+6Sz@;&WfKq0u z7GR%tNVXw!+rPV&@Z2YSn%GS?QTAq5Lk!!$|3bC zWL}jW#U?81DD~F4KPy%?hDPLxLX3BA=I1D-lCGeryg8ZbfbEuz%ZQmGO+gayL{AV~vB65= zJ5y7`vZ|`ah6Y^gfB*0@f`L^V8>ORbZ*LFxHPqL~;~d(WNKDZ9EXpr*0OYnpprp_s zg@LM~+w3*YPw>O=vQcrCZ1b>ZhzhwdRDDWt^qc!3JcH?~*saR+Vtcr(E+Aw=S7@v} zD_ux9nc%EM9K|LI7A26fCk229&o+hUC<09SD1`B`RZ*AdnlW%=G<+8O<^jRdG9pOs zp1rt@oPXL`=NTqLPn}JK^UaTI!Q?Q%nslYtBW6C>6{5WG>}*Wr>p>o7h5)skx_7Kr zE}Yz?jgM}Nh9Pfz^P+!tLmnGK!6G7K@yJeI6l#mc8!HrLly4`hM^4=Lu#;i+In7Ia*mF_B`q!BlZnSB z^8}Zu{xA;=jY#Lw-;HW5(7VnXI;$%%@%Vy>Wy6spj#%OUz}36@!KtI==7}yg4i=1iQS>8k)NLXuGz4&%Pv94L+(K zGA|<|pj`Tv+aV`qSP=;YZBN4o?AHr|6AamiIHK-i*tbeCBRIF6uY0wJ<22kvDVl5kS1@vUOuqOT5Vzr(Jj_@KTMqdIkC& zm+UqIZOM*1diXQ&Yj~LEgAgx2Dg6AL&x|j^mc}mTL<4MUr+752ykT*%HA*u9n{=<$ za{6YG3Pd_yk7{IQ@~|+hC{}`cgL*)6{pZm%&xOb{t<)xFwMyiWRTb6+dIs5*Dz)vT zs+=!O`kbxa*g$af_h7=M2qI;RqmM!*hQie(XO@Eu90d>?8_^vEO0gdlZapfmpWN0$(LWPWuJUmW2btn=#e`e?y{6u&o=iAbp8u* z`ED~8UcNTE2<-e?b6V1+SI?TSSc)8ObBgc(n)+9y{Oh=O7cHqeuc~5FlBzijivB^! zroX@Nx@KK>idQ85BRGN_ub7cv?B^36B|Hr}!jpVsv)6Siiw6grn|GQCxEO~VDw;ac zlx_@-k=3h(Fyfg2G1n693Inm?fWw%b*{X#k)Y)X{m-m-6+@TgBShu8^)3@|0-@ zE&);k-{k5CpP`(^O)yCva44eBPn_y|{k&HXX+jO-XL&MfzHj8G^ImS^G?r5JqEz^? zPsnXZC-``|zUCFJBDKq7UEw4%jJ22-kH^o%{|+TJO>&k4cGbTK-h~f4ZR%$J&szGl z6K+sLEN!#TUR)JGw1N^_Gb(kl^p8FTvp=fVAFryAKW>t5inOTrC~IvZ<^_qZ!nNKD zlMB9&rYm~h1*0$P8M?Hch)qQ-x2p4h1Y5=Be_|6v*{g0sO}-&5N1E1=6&K2)enF?9DlCfz!7J*F-II(c&#F>8)ll zcrSq#bc^#)6)g#;iMijujmi5tAH$2<+E^ApEEnxsu)HH^sYfCaRl52nJg!F+kc8g& zr$S=89$4tLZx?eJ)e}&rZoow5Vtz34ob@t>!1Zub4jgq3&f@@-@{{fGv7w>Vt_K8S zYWC0>NPv}oI@ttg3Csuef#TVDeHqfHaX@YjbJQ zHJZJHHV_3CvyI~DjL^~|o|9PFg@L!87r&D{_ z5DE(mdhAO2nJW6uH3+jLcllSOAwaO6H*)p&h+)}PzzyRwGzdXYg%O-UQD)3%zM zBQ7SuFC_&4^TPfychYA)c?-znqiSzg@~u8ODReW1kTnU1w~+SU>KiFe7OR%HRy|>g zMF^C*lqjbMs{6kF9Oms%K`Cx>9Ai|x?kj_992c06SFllGR;24 z->_lN3h9l9$+b|zfWuT>EB!Nbs)fzy50tR#vNTccYF`Sgzbncz(NE-=^jBm&P+dE{ zMwz9g-pSPjGt6x!c%d}?3(Bh3hvtzdf1j6PcSJ^v-~$ zT~&W?|Lr?M4mX)J)&Vigo@6a6MXnV5^XjWb^%?_f2q+^i93}VA;K<42sy08!Q_3r_ zM?#|gD_`{{_4x!OFeG_R>(%yYs8GG{o{_tMTZjZvEvEQ*!zGXjg(0B$UgL9lG*qlA zmj*Phe&bel4FCFSSrMkM-$@(w95ljX(nB7R%nRzj{orhZ8Qqx`5%X=rGDzk_<1V2*)d4{YI;e)rdNB%$V_VQ=1jwBYr>Tvte=0Qpq;?fZU_&r!U%ajlbx z*f&I^Cm6WEJ5$a zPk+{QQk=nM__+mE*cmEToa=65MSR^5ePW+pZtxvzYVmdmYLVP@#B3eOg z)>CUBniKr2YBNnmYwn%w0co>yvnH5oQ1gI(EXIeD=O5`52BZhs<~ZQHN%o@=5M@mMk^e6wZ?bStd5Aob1EssdXiTXZi}Ow&Fqt1E9n%~}q`gmOa*3^> zNwegTp(rchW@5{SF~-tgpiL#)nX-Fd7%_httlSL&vqD#h6cE1(9c&eZAX;ZuEf84_ zg=%(?AV(v%G0WtZ?bGpxx1a4*vX1olwuqx~3fe36epE8Dk*J5RI5T?wKlVoKOe@;` z+pHEJ*-pw+45haJvtqfHR69aClbXwPCBUlV(i+R~e9HuV-fy znds&(BDWwS2QDJ;dB^rY)rV4 zB0!$8x|LE>z!o!;+0Z7!O&h(_5n8BynA)Nnn#NjX>ueeNxohqskBhLL_p#x19>jqX z_DV-YVASAwtbl#0ilJ?nzFnRp)Tq{*)heZS`TEdyiww@=pZ0}Ug<-Bg{i0Msefu%V+SSJi@A8;OOwZ@F~@ zBX%y7^bG=J&3WPxcX)$cspcPi+T>8AA}2vn)q<-QD8+DTG54cdK~z7*-;zf$wTXFu zz#U0Jaz4TiK%L`JIkb1W@RDYuxS$7~xD3Rdg$(%nRU;=teRHi{91>n{fY z1{KszC-_<;Q3A=VLjfsPfI%`}uElO?jbYRY3{>pE)G!qfuu96_vn1bXKW61TFiB>b zC7fr}b@8OvYq~$?fzN@<9|rCh83a#k{EkuK5vINyIRJew)bno$Frv3JYyx)-m#%(T z^h=5PZ`XDP%`W-g&v-8S11kBF*Z!@>c=pST%+T;YC6fB;z0`wcPV>!Tq##AdY3H``>|>!ZGVfxJ{2@XRkd{WERvc&7DtuXx7p8|6f`DX?|=N4Q0e%CQCl?7-S9=e z#Y;HfA1HJkTWay#8s@D61~R#Ev!})w4mAo#I5gV}Ew!w$I=i-+pjbEojj&d4gGp0Fx+U$hvKABY6 zUSz?`(nrO)FK5e9&b32XyYJwGI(Tx20)bW)_`~?Ucq^n1i5jUVH4pPk-4>_8#VPOS zhL6#9=yV}BF&z$2HRoUjQ2D3#ZF%l3RL*U<1^@isa;%4&GezATyX%mwg(8dS%0H3M zj6+>QK{eCPZnEgBv^X(K<51tBl5lcV5j15FT!yov1uM9a$cnu#T*kgrW6yBT%&yH- zW_>LoEkbdyEEUya9*On9EWs=!>Z>$4Nas}xpR_PPp=zKI<3u0;qb)_oZ|CQ2%LtqT ztXN4Et&?2O03K8H_aqOJLmMdAvz)HD1YuQ#C?(BjDN%idvF(&HT+^}&0iSd|?(5OV z$0@X|2(-yj4qu-j0|4XNa6Av(3r%>P-k21ylgm3tC#JGjypIC*sHlO~-^NBzPq3La z`ydQ|He{Hd45+1vc&*_PV7q45uOGodN?Zglqoh-4zbdsGAjrw{c_QF= z0VJBeUj{qX;=kBWu&4E~*e!8x)0YCAN4=p=4dLQoF3t5hnfQ5Gh&v@rc1;x&H)I%h zekqcN-z%OQqn%F!WY~{xQyBAxt{&e*^1zfga2X^n+;^uusaD3t|`Yhz`jD%Bhot_rvc|Jm>?UD=$p&j2|tfWA(2fM0Q51 z5gKt&tLTD)O^tk@P3fUy^;q!;zuL z-G_%^e_mzuF{vI=pdCv#!dHQ3%VS4{NQze45FC`RC*y?j(Qnrt4j73u@WmLFB~@?P z+Oobl(rP{#fr*M{MTR4M*qyjax5RE_oo4tEtww6F;ZJPD1e;(S>V~WdIi4ugnY!w~ zx}E2HHWmwY3%$flFb|d*3A)Klh9<)gmNR4w(LnUm~K{V|d zm7S1={fNTx<4z9R7DX3-7X7gZw-vydoY!HAe&_KMFs2@D+kJ4I8k(tTS@^Z+=LK>v zOLcp^3OzrX+W`C1k0-z8(G`_H#K6zp=e~XX5n^i4WyFshPw=(|4rV8t1N5xpi}Ul! zwo+8*R@w}&sYmQI2TEZ1h*^fIgVl;eZsbk*|YAel+%vNs!ocDQ9ip3PVI;#I)SsReTA> ze_X6}0A?i+-8u&Pw}rXb&rf71yY8MJ8~|!-TaJ&jvxkSRd4|^9HjoPIBRy?@`rjd$ zr|Yh=>uTJA+#7jdVc@Zm%(L!uI`;G1%a^A(m_GcRmm4KHK+LTEf3h{cg;KOaR5aUD zZQt(*QB2RLD9l)GR?Jd>-tCRAjL=DoXM0VZ%4!cB%&t*KnKhZc zO|daA>u8b-vyI7xgvt0jR?L0jrPWnj4F`{k2 z5-yn!gAvJaaKBRtX(rOFnk!Grh`>z-V&kNkh@&K=d9#Vja#AF6Gvx7H&B~5z{V+vC z6S<<>cwG6YR^3wfdvVqNKwF$c)7NE}8amBn4o*wfR+cc4X@sSRWlDv$_2; zZ_&4!$+%q~t6pZb#zDPI;?rf{yuTR7@iu=A+>%R5q}wS5;2f9;LHx+KKvG=gL*jr? z<*0i*tGzZ6>!0sU&S#tFA#a&dS%LGO#XtuFrBCO*lEKzGcpEl+plx}R2EiQob!>rc}d2= z=KE|3R$7_?0(vb${U+U}C|iA;!=IDSLW0mSK5>4=A3Vk_*$O^PsE+VdXHJTeLAPSu zw(S?zUJOAw(_%;_5GfO-4$WgQgfo-T@k<}n`T*rHWI8`rKklb;0{r@r_0)ytfOUZ) zRST>ym=OiIx*i#%@9EUc0uh~ij7PsD=1C5<9XuTEjXHl@i`lzF@?m({?kW?`ekn(- z!O!R^&fr{(<4->WIX~>RQsS=M-c#TW>9EES}8dFcOB866`praM8j@*%cqU8$viCM+8xZw4Ccz{8zI31rJf64fB~X#LW_d*gxe27iKUVs0{{uS%HmR?PztJeD2FJ{f z%;B6fF5&O>2RE60ExvW)D$(@}n}U-gn9?;Y`X^M)K;kgqj~=xIWyDAkZPxb{C3U5P zJKZ*(+k=jul$o|K%ZYw`8u`*yn6tFwtOZb2U~1bOTwibG%bo8{9a_W?iL`WSjI3Z? zIH{IDF_KbEr0wvbh4FMK(Y$S2OB+2GTc%9e7DAkf%6DzA@>U3QG-K)_$T1@oDISy`6oDGQ_X*Ev zxVKh=2EQBq=KgeK4F7r@Gi9V=)&-ohfL_13$VygonoT7Tlj^dwzXq-#xcpfvlCOvV z_l~+6*?em5fHhwdhf0o_3uuZ9FnnduqLohpd8^cj$rAjT_&*BFcuYjU#@|a{fK6Tm zF%xmU!pP8;b1F*s2jfs1>Q*pBLPMEHyp!c_mtH`!IOLPN~ zY>HmCM(FFo8$RE&%Nf#bs3)Mu?9$|vsR<|aK1QcLny?o&B5S|max;{BRea8`D+P1R zIlGz!HFO%R{I<1q;Bj}WsdTW97!{2SBv6GY?0HCA1VR*!QB{{(fU8>hVDutuj!2i+ z+2%;dTT39t8-QRHFpBR=2G?%3A2iOv-={MYqo;Oz&JUMae^Flq(#BwtBCUB5sBg<+6p(afI;Ew8T`N`KjbXR|u(% zhxgM#uv&E?Q-4iW--Q=%xg;i5M8*=VERK15=xJn3+C>q7wG5JBa4=!K9Frq=X84~^ zhbVd0jHkk!VN+QY#K8>vq5y&SsS4(|@U0dB{u$|3^K2f$pBrfdIRyOf@HR+|@IyRhz; zDgNviDTw&)b8F37 zxe9ejt<_gXiGp5_X26p}o&@OtS`lu;3H0HjFt-1SNbT=k~1GZt6G!np*p{ns1Ee6C+%gfw;{IEW*D zYQNpx(aZX?^X3?kl|Q=tbGbb=cDbKr;j{L3!+?!@?~Hb{C3ZSHS|aTgjK#2h(c}~Y zlLWwRl?JV|zn38_ABob`Hg;)RFwhdv=66ODvLhhv`afLIlL22?ll>Z4!}SU|FjwwP zw%OeKqZCyHR~4_C!7Zrg|x^@0Ws9tVRKZ}*F3uHTwKGV5nx zYUks59XW&nPmi`rE4AyUqkR3Juq~=SZqa6g#@A9ZW7q46<79cFxALp!NM|e0vZ+J7 za%9t$PJihFgABZ_Y@vL~3k2F#+))Tm$Sntr$OFx|m9JN3>$1LN2fY~8xHPQHVEh%~ z$NNqq9LrO7LrFe&!9`!a2D;K|@fR`v=JR$+ zMtx~GRKkM)AT13>kva!6HQzA9#TmRA=l z7=AOOdQ1vbui(D?=;g{PX%`g)CB!3*rm(# z8q{p>y0^v;T{fq~`rSskUscG;}s4(%*O1)&82$`(l9v;*^JIF2Ra@oofci3Jn}eZLsz&#wP`&8L73MMp#e0GRE! z2doOE6< zWt}g+3o!iCz;8}2eT9sraKo`!}0D$Ub zc*GZU#*yuD>-ok1!=(fJ!{!UBORoecvU0!}Bu2}ROnodbSt?>$ zt;qYz5qg1|EY7Dx7N^&N@xv6PsdjFI%tr*DdFWTum4jd?t%SpSb*oMDR#G*YaFhP8 zwX+fe8{B@b*5%>Sm(IJ4A+qTiXEy1MN~x)2LlBSQQWYguX!iGFSW7wM}o+YSMt+unB<>oom)lK2%VI)sJR+?L0a@uu% z_nu9+{L6P&Bw%msh6_#nt&8IOZd$p#A|cgY`sQ<9DsHleCi*0`k*PM53$=}_Wma~IKGSgs3b{Hv{^2~4uIHF}@y})IG(4CvAv~ZsOa{IgbR#JBRLoJ-v!##G>gw7SGA9RbrQRDaEqTa`(lH7Ui9t9vR5Q|@Q{I7hZ?i#sCU-$vyy zbc%lKIHVU=fYK}Gz##he-z&m!HKWx0e}saISobo3G27$j7PuE*4X1NdcU{CVZv!c+ z$6ejQSe&R>!1d+lvODJV8lJQH%qGOOaRr#buwr8U_9~m7{g0l)W5L>PYvJczpWP$J z6>Yg0PY8zXuQifwDmp_?A5P47cXuB;LkB5Hew-$2C&RVjt6-_7jBU(5dyID>xUv9V z$l*24J5;B?xoGGf9xwA>7+p4bzWdwxB_=&2M8;I(YGmH|!KU2Co#PA6&7qsW=fsa3 z(~>S_KcspWP@Q}~`oFTmU82qwJWT!b+bVnePN%C8hsSG&e`AxryUksfMK*`!nFh@^ zqkB}6Qlf($J5s}~HbFoaDH3@Pi6IS!4W(e!eSj%49r8{p}df@u5S1lSb}$M1ORV z5D7f~;sX~e4{66!$HZEU@KIvdnoC9O>$$TU?o8sDv+eou>EY;s>vrz!TuIvsoi>4s zha19JiYSLw+tcIxn%XoTcfxxQpk~a(Vp@P-lCRT!*)qW7-|ZU`pZ<~Uh85N;e!Sa{ zRg4?dp8r?^5%8{?jFo<;GL$tB7Y?#Mwm9f60zPIXxu&et_l5v}8e67>U2Lwy`x{v< zM*7+sg_V1ASJ%2Wv(5z{`>)U#+rY+$KQGvMrFQ?EZS{9}4^Dp1ZhyL-o+&|#r6BLR znztKJYxc+#$x}r^FnlNApyL!xCYA_~UBim0dEPuU?0Pt9OH-1Ok-=-P=E^j(mz+yn zf9UvjbVgr+;rmK|L$=ph&~>}$1$0Wvev2FJXOHUp-#*WP{!`G_wPLO^_meV=rhv4! z6CKfq|IQ!!D26U|HRq;&>fXN=0iZ_US5({6Qim#9E^C~QI;7D_gs&Q`e<^)ce|ceD zuUfSLO)Im0y`;9GYz0e}*5`gONq{rKhMjO|G3+*El>Ck5Lwv%ih~nw=3&c=iAZKlC zx9{ba+KPD}_JJaV8#wF@mb2FTi_n0m(pkLTGQpS3Nq-u0HR}-K!a<*UcI(dcxXEHY&sHO(dxlXv6+P4v{Sh>$_`+3H8&3Mq zXZCZz{k$-X5S6LiW1n3NB%-!K5yhxt!*| zw7giZ@<%PP)lR}t!H?9~6W5sbqx!owqm zTB3PcvxlzjrtN>P9T_HKB@da2WIcJ_JC}1;IR`-S3TTbt`As0mS`YjZ8Qjgq&_mGi z@|;eKdXzC!%axzI+!=}}B#9mliesY8)XvUR#mDyMNT1~ zA^nMbxWX|2@+C}jkw4v)5(g$nDv&NTNe$Uhsg_fc3<2jz3k=K5DxLoTp@b0pTLkKO zsiAN@=ng8}BKz6aD&lQp`ZoM#m#A95%QWcwMO}Avq5{jXeb6;G*sF;3eHQrVA*did zX~ZhAzwuf{J|RZDQ31GhJ7kIz*%5_2yM zteYgbHgb8&o6Di(3BN9-7IdMT{@Azls($YLfi+MaJG-L_Up9OEEkTWvRmf!NTM>_S zCQr7q#C>K+Ys)(w>(ieKoVhezV8(UFHgqNJ@d^g6jBwe*8V83qy{;XG$Xyu2wl`erd|l zy)qqJwxNp?58bx)d}_5t37ag@Htxi@_o=R0)5qb&;RFEutp z!i{y0KnyL2-wv7<1$y-W4sJvb(tZ#H-sIQ{#O&5Oyx(#P@TKQueXgYC)<8kj%qL*I*dZXv z0w^D^+s7%{H!tZYLg`9%n1}L>yuCdf|GfRS*6w_VTwa#`JW7sk@^la`Fj`D02G=7|A z$rtFYn66Aj+NvF?q#>@K?K7Tk!3>~Q`Xn{N$nxRRPNCiahU%#M_^1)$Y_jGz*-`G}5xVOj_8N2tQTPxM7lS0rLAd9V?U7Zu=%X4@5m`9V90XQI^5 zV)*ubsRHvLA;(o@B7Q$?7GD~&! zyRGB6A2@=T*i6sr3UVd~m3%r?fd05mS%tv{&HSf__P)ZF;2;U~r*2$*l~K>vqVHO@ zeuk+|6Rt?tW)pbh;!*W5w!O>12zkt#vPyPj$TV0QXI7;O;^3In%p1kM%Wvli=zi*a zw;mc&yDv38$`)iA{)O_#Ghj}~s50IYP6Z`JY{GH9mviyjHB(Bn!jrQ$?Z68nf&@U% z!$F3a?z5`k)xD3o4lMlT2P?fC)+JXZst+uEzTPqvI1nKablZmZU#z=3{i0 zKOVMK{|(@F=BcD^l{H_xEe6D2FZHFCd%FZU)GmtCU14+{IVqe%8RJIp)zFoxcf(}> z*k8n?jSlS2m-P`>9bJ>NE?J3j6+2|5H|xtDHap61w!GutU0pvb`U}G=@+m}wJs<1{ zu5YZ`&>Q+NmsVB|Pfj*lZvIj=w7BC0z02}CH_iM3VwZ8~2w{vT`)?^2IZ$sgv~K)Q zptc;Z3J{&~%q8KIIg}#ap$R2`EPx|?`{&Oz&2P}Iu7Vd{C;5ee9q$ni> zsVdk0fe?md$ocE{xlP}6Aet-DyS85u*43k*ZN&46iA|{1vlOpb`CiU{%8q&M)f}YL zIQO}vJ!9GSL#+6waZu;7^)7_Kv;$V2{~}$T%UY*Ie}GJDx)k*y@AhoYM(XiB!VIsN zU862;bZakJm0-DEB8NmsNEud+0UA10W-@WBL=uao5d~krbDeESP#uTtNV4J=kw2*s z&u?Ayu@7UKdtloD4pH@fAHmGUxba4Fl`XK)FqRU;(WN``h8}aYN2_iObMtiz!2pQp-f~xoN(5n*$wO|J}Ub-*S z4n;2f+2iI;e2M(w5;=|QlsnpP$BZdoS(#1I=jztw_&@<>;!Jrk3o#HPMHF7XKoed< z)mOsV`HqcZBn7=^@fWnG;jJt+dSV@z5MFW_L7G(uk#`wkUwul0qnEO;yG>+PjMNQK z>lHD0{8LYl!a@YM|EZklAcV0v(bE4X?py~3AFvMdg=L#^f;k;y=$H?D5_G^;%ru5+ zg@M_HseBP2&j^xP8Tv$3UxFg>1e}_8428E+FA!t=O1}itfivfcI@I+=DV`kyLr$HW zDMKJf_lup+^GG8T-BRs~xWv_(tPfV`s$$$Qyy>VdvIrUcCA(l$xxu3852TvuFLk!w zIM*qs+W&g30A{T{m3))>gSl}V6+S9a>sQgNb;+XPN&(aUXW$5cJ?i+M4e+Zo#@jvJ z=-71Xz{Af@@3cc6>o;UC-=5{rm+JK5jT@7!S1Og^Z|6!CehDFE6>Lt(3TYa9K~DQ? zu`@+|!koyutjM>u@Zvc8Uf>0M>fG?U!nU{`e3>AiN1>-wDSi>6Rr2eID&XSOY2|4wWOlCS1z1{ugsz4+o3p-?YYBrP{e;aZgY+uwW=RVj;3}9K*`TI%Ce= zycg41c|Y;J`cSPPedi`I6~#{h=567XDnXR?g+@i7Iz(8Tl?ozLLxt+{5!QLmMv+3# zXl&#0#rn{*9w zU&b1*u9d}=gY4e{Ix=W|2&6QM^3Nv&69*nE7$fVPu|ayw+f}7}o$gxp%+f8@k=!AT zgH|e|5@3@1TIe>h_pxx@xcB8F7VQ{=SPkd`>6h75l55nD=4G5_hO?lI)QJ@c#sqW( zB+vJ^6ckrQ4)Rk_}9@#{KYKoySeRMMdkrh_-pji zjNdKOt4n3q4-ksg*DotqrC-~`-h1d#VhgOS9P=Gp#x&xmSZM8v^%b71uLBi!fDZKu z-bCnrGUl*~r(Q-vsE)z04hC&rW_HP0 zUin6b)D#nYz)A2I6P~EPaVdT6qb0Y_zN@nY`Q_WnV)p%1Fa6nFq-#D*i}won-&gKN zEGsgHTM_w0h|Dd>NE9uw$dNHc*h+=M8c06~oN&1{sZN+{n`R}mUFv1$f)FFCZiI*V zO6te%N%oPJfENozIpJgD`z46o@wccy^qKG-8)@kUViVlN5!ECYvT%jkU^#fbM>+_^ z@ zWR31TGybl$loio_x7h!&@4GKvc0`g=EeIr4C~lX;^Za(eBv1=X94r3)&%DUv>iSdT zr0+@e;lg^0b9%=eG0gYm3oyvdQXfW{$_)*4|KY`?N$8PkYE=E}5xGV4Kc)BE#Lu|} z2O^YxHZ6oNF1o%PoLlo^R0j8G^6>Z_Ecji~`|nza{2L%86^<1UZGx@+Ny((Fk#j{+k-r$P|4 zH0|c^YyT?CzRa+@gz#}kOPZEOT#Qy~DogxRI6Ll8p?oD>amy<-75e1~!UAJ-sS|Ho z;>Mf58!u$Oi@&TB+|gHIGiv&@%0f84Wb1Y~zg8e)$=CG-ZLqgQnds)^SkNP2EP8M9 zl_q*=ekoG<`|oX*$Dy~eR`KWnz!42=3iHmr^ZCmC-)*duYs6r))}OGuIQ!H2%I9Z4 ze+L|E1-gD~P|sx~pSJyXc20%->wZj)!=+^ ziS1uuw{LcD(p}*&k)`m7BUXT;nc_%Q`QO%`TNN$fsubO{6}9FyTJ;K7t|DBPJ66e2 zw4Mxn1+A6nucoK=Z%Ak3uhA;5+v;v8y>^&@(wqGb`=XWj&N;DIQ8g*11diOiUj~6( zoGE|Qi}+tTO{&K+<|#>c>QEVq#BlV_%9W5m&DNz^I;j995ZaAVHh@D0SEQRjE8AEz zJeiP0jnRy=m(~#qD~I)2A>v|-6VJ$mS^G_?PTksihKYa3nHWJvDDk*nW!t7!Wu~cIn8qdIb-O$dGoL!YZKNh1p>Y zZwK>omy1_AzT*r<6^w^~Fe)Yz^4`GElW?18TM#-dWsneQ{?sv0SMo3MGNdcpQIFjl z59?a}WGn=0t|~WQooot;+NyOd5nx{P)2Cz~~KMd?H5%A7dAjC*i zcK0rpxRm`HuS^-LxEy=r1YP|J+Dn8QqoD2&X#Z6#4#H(MQQq*TwbND|GE~S-*j77A zMFsuG^%bJ(Z(*_b#}plwO*B6_F-%;~^)aW*VOUR|M!S6HEncNZrQzEPP4Va6a6jrX zFw3~p*vx4T8Pml@E=GylcbDB+@GH0Q_H?@0+cn7~G@1BUz6$zU9vY;q3&o^3WfWu| zUu(sPrL6w<(fW&l8Y;1yaCTQ6TTi?O5{X8p9C#2ZLl56POvhFuuTKNWyJ5S7f`!XJ? zu9W^UD?^)>S)g~-b0E$r-l|!qa+(=FGjoMtKQeNnuKFTZkUvR3j388nvMGj_?T9yL zBj6@l=?jR5&g4%R{}bg<0W z$2b}5KuYzMq5LH9ViRBCxxISibp?B7Zq3vo!*4W&}Mu3pG!?B+#69ym>km z*uYU7=BDe~l&5Ff9v-q+^_dsxn(fC=es?>+Wuj&t7!7AUJKf&gEavds#ZmR9nB#2Q>^;Z8GO@^ zea2`6|Is@ATffE^E!27hw-2z? zuqcTc_a|^)2sftEh7|H4`0cJW$MR^(WMT4Ja8CJ&fFYSTuv)5QP*_B7(cseQWRz5h z!YACfeKg(RS_njWAVe*1iV~~xK`_VvVjS3t2ORvKFShRov3*4@>O~$7yRLLo=NCR! zRvKP=bhXsohcKlsw4d0J+KBvHn)EwQlq~bhx>EQ5wN5PT=`y{RmdX0nw$UHZ!ZX^6gyDsaNDQb4*A~(= z0{8G?tT^lOpU6ymO&!KL3w*n&Ihm(r7hA3FS*JdCRCwj8lnL9q|DoK!{hA;3`xF!k zC%-AyJLi6{;!^7RY!%;}T*t&{ed9NWDO9dv`}?DPEmu*qY-Vq?ZqSRcf#&D;C!K51 zb&z1#ON&3djNr#sp}ib3ylK(&U29}n_xgDn5$rSEB9hF&iA>vRI$i5`a(lSmToVfO zxmk2lR=S}OTK0b=F6rIcx;CB$bf}3vmNAD5PZMsN(yYE5;9}dZAp$a(^zQ;C0pXtcRDU9!r+0yYit8ctO z&);5bJHd1-*)^WCV|b~I&DXsDioPK@ej40`72d3O^^!#}BZMDS_KCv_3^xd{3P*#0 zPjA+|2bFVTlw(!|R-%^*g~@sL>hC@JPW&V~V#{%y0Ne$m=^GYTOU+K}E?xWC_a^7J z8&VH?8 zO!KgTbM9jHOVUH(MJ$htUuvMVAiy_=W&}S_qbh$_3fTv(%_>V!?C?b-RBgjv?X;Bk z4I76Rz1u^m6hf#CK`iRU|G|fSSmC*!kkc;g`mC)&RifY|=H2?+b|)8zGfUrP+ITQt zttB^kL?TP_+w~|FM^LQjZrAaKYWVji(^$rf;YdRJb29McIT!^#OVJoy>fvPJg+jAqtAYj-;=3Rl_X6gqPFm)59UWBiH^qm7yuzrToc32Wb^--%qGGn)45`)$muzVQ_6S=wf1Y zjtX_l$hIU(Q_C4+bDiW4cTl|n`EYl#LIc=y?OfS0`2#{73V7V3hJ8i=tBnl%DDY^# zV9cb()xjHZN#PVz(vZ@(?Jcc$gAc{A8pG)x>llF1ZkgHTL*dYTVK=Co-N*n+_?cU` z(_-szFV0rpmAPXs<gY5C1 zSU~+g^Hb8U&f6ezA#1}$H}jY;?9m8B@bw;TNlOZs+{;y}C|Efq$?$#4<~@_&T2J;# zy2G;LXP0#l`oES2UL-s%Ga}n*5u4m4jT12wkhat;`=Z81MWQ@vH12$L*7){t*S{Uc zUuhO!>F^7EbScbZrZXFPuXnz?a|=7C){9>vC}5DO(@OpfVagl6TA+q(s{8b!Ac$F< zKqB5tc3=rlIu-E@UWGXll>Sv!8}3B)HVp$|o}ckmX2}f#1=ptEt2EW6iv;)0k?rof z5f$euBb2_ z45KT9azeCKpK5Z3?WXf34>%K+_uR2nt5G5H_3JUt!w`Gj%oyNY$ev03cDV=VPOqd) zP4-H=Y<<*yrObpFjWg zu*>zR;+8whD%Ap*O*tp-!}G}(?9tPueCfG0%g5r1%;kT*Yqcp7kAJt(-^zV0 zQ?8tj_c#+Vt&shAG4C`sXOp~9!<_>nkp;1wc8S+h$(t3eOYx-)?iiGa z8qH=7Sr&-7^4lLD&o)_DerSSO>6;LBiP>0C1Acm>F9%Y#+g-*ga*@qJFiebf#u(A)rz6AbI^@N>#Elsf= zM4Cc;HDwS40zMT4b_VR9Q3ur|P{U=6IVz(qF zp1l;D7eJ_nNi`YA!>jk?HLIWR_xx|_yDmpX&hWRNZUD~zIY-yux0?D@HWa52=9vpzlUbOi;JAD2InV! zI+2^=(NiafJ3YVC;=#tIT4}K|2G%(YcAHEaQv35;nqA}cx1P2t{e9p1u>%4FL}@>= z6$cC_5Pw=q3zvPDuB0+c50pA?ng){dkz=ncmYWhlslp++0cmw!@AVV(@ zC@u~y_-iC_C(*2f1BNMMnnp_oVl77MEv4;_4~p*yXmg?G!R3;s9%fB4FOAgPIP8Zp zBN;&2I(dDjaC=P#icwN8SI((#PslVB7+i)xnf#ZG#4`RDi`u6@Yq#^m`@7NHozM%b z8%Ijo<0m0IPVk4h)4Aro>>%G?8{L0*!`b(3ws1R#DpyyHn+vcXZVmQ;W_BBbiCB|g z{V+48L^r7(QxQ;f1zMBFlR?(zo61{3-qr$KW#-LjnYUNVfA=jPCdd`+F9ZnW$d^04 ziRw7el)q=SUtlYFKRiS)RWx?2W=#qZd~hgfYm2=5(ye7JBMNGJ-XIX)y}kRg|Mx&0 zxZ=^kS3Rzew(l-7$!JIDG~xmfMC-Q$1=YTGH_yIfDQUmK4eGv})*SC=__L`A?{Xq$_-~q7?M=8C+h#p)P=2AGGyulm;7xpUsj-s%^BsTaJtKygToH zIL#6C=lISF`kXg5^yUXB0H3Zr!r@pGM8~I z%R80cmRM>W-+RF_T3=OD z{<*ubcIUDYXY|H>r9AF226 z%Y0a)`zyjrhjibKltDEZ>EGT}Ao}XlRhT1aI{$QQf#WC5XVnl|0SO^wN(Jeh!WXz> ze&M{GU99Y%E{B4!DB}Juy6zy&}#U-HZd0Z>dxBV_pe}l>w!gJhcIw` zSfY=HVKNW`M@xbv#_V1QuLL78^QncUv_=9;xu=;^J5!=M4=&nk>!3-hHnd)?HtSV(l%H=1=TsX4X4&9BY%<6e525=B0xun#n4I$Y~^Maa2#^Ly=shFXj% zp+aVY3S8D!f>+oN%Pv`;TsTGR&r5M$otruUMdU-BR#TCO0MIZvPR!kmlR>>&)s?M$ zY^W8on!68MHYHOX$up)xKtc?fIrq^b?-c4)SHEi(CyH11zC##N|luA1;o<-;!|E?ESNpri>s*Isv!Te4KF^T&-*cb!uRNrIz?UU z?h;iMJrQU#Q9pY@&;b4rPIk%b!q3SsSg~Q0k^LgtpgKaPdALw0ljO+{INu!~#d#*p zxjXv^3JXf6o=xN8GIYbqsxcB?ZxS=Gml1x0QBnXbS=`q$l`H5)iHE|It&`q%Urgq< z*525P#T!#qB}k|sbcVT*khOop>7TbV0r#~auDms&jv{lEVkAO|l*!bWy=uJp_(|V{ z8$=2~TudE`uG>J&&2CM=rt zAENbGJcznr4^yZJVx`X_C+ms=M=gQ2q?^AK|K3x&U?XM!5okmNonC%B88S^*FdIIo zPMGFnZ!M0a0tJ;|p5K14*#U z5xGd0XHET>eO1gs8vl3aiVO3cZr&sFaO$--%rh732IyNsfmd)j-_Ynnm>76XO^C3w zmEJ|52;ze9n#p@u{qSGoDghu=5`H`#>L}XFh#>;6S4~ZeLUBI+#Kd`IOuC~aD$Gp^ zpTRV5RH^+W7pM#9@nPCT#vBa%-}!H*J5-NYkn$mt1;OxPkfL6{xgN9WCjx!!YE1*- z4jl2+eR9V?^i7F%TA<{qw(TpA=CJ+Yvj3P9ICGtB|42y~Iks=)NmdAxANC4calVUJ z1(o}|c-#b~cJw|?SCT$$1<{4bi{#28AKH@7O2bY~sv|!xY@Zx=4?CGy)OuX1kYAVA zTblg^Nj*6HZC#8t7MxsY5S}8ho8G`fvGV4dhVL4v+QM$MnFQM|G>A0s zzu+h)GH0nC-p$bvK08+PLb5W9jI~x*XvN8@fY1Hq8X9G8dq@3D+IWV?{_0AQ7g@En z-wi9j+NDd=Pdr^j$6%~GrEqY}cOe17j;r};T?eW!K!1Fi%BnHiPw%4`_r#~?lg^v9 zEx^F`zkxlzH|gEhCSH7LQ2pDIL5qST9fAEiM2AJajNtGJ2~2C}`t))bMra^+%LaZ^ zB2apbBLZfEU=KdWZ4l^B_oxxHA$_qcCOl^oROiqr1wH;feWUdGo92!#=y6%o(U$vj z@50JXA;#}&_>J{=xNf}idags%>#O0GU&s3$N<}NI@4Za;kpS3+&LkVNU^#kti1;$D z?Am+QNtRnHDpQp(QLPg9^Jm^v zM`;Rk-7jAvhda zzQU2QRvz@>Rr0>;uW3=BFGx3K&XFU$uqq-LHP1hQfu+JA2}&FLgJ_sJ9djT-!^(=8 zi^=42O;*DnrU&dUA+Df9#-?;3z z0#j18Y%@48!%xmE5*b6)drB1c#H3;Q){*Www(%tKeFF&hwjtt{d=-c}EwG}4xD?sx zO6wRvVuZCw#KLsB3WRo24U&kFb=5Jl<4h}sTR=~$#IhodPG6@q{fF~3S9OBBL?!%3 zLUfAt*HY#MK`~g|U&h3w;cPwd9xrNBn({R7ZIieXz3^yX_?pn@rwH*vCXXptoLHU; z@a#Rni`4(T&Nl-%x%2wa5&IEj-Q?nVdd*s_d*>d%gcPsa>@ISDG3_UeC)?tgzRbNi zxRUta;7)i!dlt=1Uw=Za;wqf3Sedt-f~rcj0XKZ}JxzuM_#6~|mXxl5(LXGy9s}O_ zm0(xqGx|TxfG(X{TdXYC*q-bCW1aWbTRfpBf*DZ@Dr_a?a^^9x&aRlooz=sFyVD1V zCAun~RPG2n0uNWjS+OkM{CUTm;ovF8DRj=US`X%2ped?*tStr#Ph%U4gQpXk%r*F3Q2 zWm%0CWsspzRxURMo1N3hjDnJKtR_QDVStU1SditAtdw1MnWP@EO2PdtkyrQSLA{f! zFe6UuK`1U<9?;JhtQiXYI#(hXq`tU!sZq&M72OBtLtpu`MmsyNXGWXA?aJdKHD=E( z-_fj;TW3szVpKP^B|962-yO5DCsk+ynY7%v%2RurnRsq;&1MT?lAUz(O3r;T^p1oI zWNpN2DLAdl&=y6*uq+8y{dg!pg_}JYycpl4R)1w_!0zyZaYUVq2H=^WeNyz)v808V z-Y412abVHRl$s;?U($V%=|a_&il<6eW!$103{qJANvd|@4qYY02v?iCa#55KUik#= z;Eq8>Krj#($Hm;pf?(r5GV*xdZH!>hLL3XiyxHC;o4e8Nrl1rlBhwe#5^U|T2G*ku z8LL+q>#Kn3-8t$UyD?P~eotcz9swlBwRwSTXqzG%bil*~*HA=Em3KsCpCL#VBuRp; zE>)t?2f(l$L7dyA@BzpD@ZjpI>JHE2k@xeXXK4a>*Clv8hy<;MFm!;YwF|>?+N62Y zPlov2>%GY8E)XY7VZ`=ZK$vV*u=}2b_E#v0h9=1+MkQUku~QVnxJ^#tYMIyEW-dyV zu>tw6x?^wX599~G-G%1KFSo!VrTRtA=D#$HeYfFJ2vitbIiy(^S`wl#k^A(33RBH= zQ-24SUSJ1djoJ>V5oBYeOQvHMI6_PzMJaL02vZ%<#~pPjqd_6By4(OzFT7LVQ#s@j z;eLa!7ZRlfld2IYzPqA>6}nJx zcG&&*RIl|hnJM-888~il+hIJKn#a4 zbSGTG18`{|N$SLmS!!wYA3+&^!oBk16w0Yf3wF{Msq&cD$zq0I;qg)+IwK4X zt|Rgjpm}vI+I{VW;;8Z3ZTIGsqU$2-(ecL3X63@UTKC8;V)gp5yW=_9#EiG}lo@b@ z{8*n^^yXR5kH-CU0XQZI%nutSr6Q9eyY=RCpkA8<(!Lx7dN}sAC{>n=Vpt+<#3?_Cw#31V?(-Z)^?`rfdT$gOs?0d1iT|8CD#afC%Pcdxls5l_Bn$)We( zzRj#O=k*7np_J_Yb~>G=*>)22Ib>lg;rBV;{&Qy14M$0^|DuO@p!9LvTXlC3^!Gb| zyz8y@yRz}Ww)hrHF&8RPG+i1y*zxqV>w;)n@$6+VZsa4=_|_|4NytQy|3j}>jgc!e z*+7{Rv%#JSi;kWi@WQY9>}Bhoc0SzR_~8(V8&s6`RUs)z?KbjbJMZCnFjJ5I3gnW= zy^O=ZX-c7|AQ90y2|A5$v6NRh*T~yQ=H1G>3cj5Av*trLhWGcDD#tf*)phi_O57^s z9V_$8}ZEdAk577Fmo8<=i55g~PRr`Y@zrq`v_keeRC9F|tg&52AvC>9bL;VW~ zt7D2db&4M#q*K4*tyXztB$w&XsunBqQncb?dS=#Z3FkdT&! zp<`&IYlco~rBgt;ZNQRPQckVyY3dd5TR=H1z z{Q;q=a-(*)t6k(^GLK1{eLT{yE zgi5Z60vP~eT7uHpl=gE<$H%cgyunjcHliOyDE&!%U!qj!2^nnbS4_h>;4Nl6G5B!G z;@j&&(EUUC?WCqj4s4sT6mTG1^R1BdgB(hbN;%M1%VzScLg|`g{zsQ-r3S#&25q_tB4+=T6n!QIF%11MLxNc6nOw`^D*R;puMEFKrt!`tQ2WWj` zXo~IPmzTxW^~AtW(cTa>k0{GH=KY-~Tt?BBPUQj_Za@&uw>s3grF%UZkZ>7BR!;Tfrm)6?>NMVG#O8R1=?uEHNt@AyMUZ_<-5qfbYt&m(&(Q!=k!uyal!N% ztFCL;+82DGueak`)kVSw&b9@xxoI$qg)Q)3^dugGMDKBaY+O94Y$<3M@=K2JvQbF>~vbH6zCH|7`vr&b6F~%+fLxu?$I5b6h&cOS-p$Q z$B;(OakadLHqL9@v~K>YM}Vg+4AV!7$=x~siVkG!?AJop7__Gs^8$N*33{9f*!9@w z#>i7Zcij8KcUJDEehFgAe-whEW3G{=6+y}kyGjkR#{Txq-C&iHnQ5XT%cR7_v}dIS z5lIzU7Q&1mSvb!G`$SW02`LjQQC|%=HMi{gbO(`U!4mBKB-iH-(eI2apO{^xXVBM; zCt^WwfdN}#8!HJ@w;VTn4+@j_iF-b)lF9}lQ+kn_+s8>(EZxIiO8_=EJ$Yu)48Z~W zf9WE}_3Ze`k-pdNb#?mT;U|yJYA-;W19RO@B1`PsIrBJ2PTv-{5isZPcjz9R5Xu*4 z?WY`)4}55p9BPu2*|Wg=3GvQaUd800NFHrqk|#)*~uj!6t;bu&VZo7CG!SU0VlK}`-M zAjhjkTA>D)uMi^4+76BmA8qWrIg5pvZ*^qzwRdzYC}O_4SyGd#tGi~P{B*We>_$Cn zRLAP0`_WFqPHQs=p)k3#EL{Gp5Yt=8YjKmiutKeE5#=x=EAMyvo{N)YH3JI)R&dG&^S{J7$LXH69v74wAe)II$77fM z`HUlz5N6wef8p7b}oPu=(7FP+Z?I-f|AR2hB4W1J= z=%XO2GcH=NpE!}v&%AHaZ_wItYih<{QSz+NqRweqOo?9sjiUu`PFyFnYkoV{S!wZg zP@S_IgXT?bG6j1yM6%(y3F+m?T{&c6#a>E~fodW-TVT6Pxq8%p1>n(RW=iuwpG zmVfuOK!~Rmc!5m9RpepLSMkhPa29k^Krn?ioD}8%EnQpZN!)YZIOB>pRIW5RlU@?VU*ja9^i07`gGa!7sV7L2;chVi1%qgCejk(_jNKJ4 z7Ol(WlY;X$P!YAS%-*gd_sHr*@a>Y=K<6d|#R2(XR}-o(s$JDLY=%ddWY)nE^RECC;Z8cYc?25}MZa6DM9{ztcZ!cNlVaan~o!%@jR! z_xTo_?q(D*elRysuDjf!oGtg;0w>AHq;V$XY89?ccnGdr!0C8Y+RmElgQATDh>;l3 zB8v?!`wLHKcSq)PuT=v+d`bnW+uu;jq(8ZC=Ipfw-%K?tdNlc;5IvbC2i47Y_Iy%V z`CZ2s9c~L=eDyoZR$9j#Brt8WITvN2D(?Z)S|v?JoPi3&cge9AVT(BI-CUgY97-+v zxEx>;?t{U?Jdi-2*d0THgTTa&LN?rHR9VP&*CMeLj=xyXx4YJa<#h`P+%nzvsIy;9 zJLVSfQRVLeaJ!pBUxvLGtq;>0i;K+HrGQL3<~*CrbFvgIIpTEwg4avp_<@?EoUu0~ z^z^_gXC6Y-G*FrBK!K4mccIyyS-vC8HRn{4Ch#)CKU1${exP9#t+8K^IFOqw{!_bP zM=qR&vbE0Og9yX1j1J3_n=_}({E;c8!y)$i0-}YwJF%%E60|R0;wDuGgI=C65t;>0 zCe}(>`R+~KUOEKGliX+QkemkI`P{1Dlz04AW-OZs>BReX%aSlmvn4PKXRzwIO&*HG-(9zZrtU|?*pw03i z!ETTEQD$oJuJq-DKMM6Q3x!E->{h_v_YB)YvU>r~LzM9P;=seaDoRlJ@*_>%U-vPq zPtNv3EPd`VgwDgBae2_Os_C8mBSEsW1MI&|p*R2X{(OWT*49d?@3{}YWQ1Di1WWSI zYw{*BLc95{V6)OXO3iRbfe78QIHK&Iz50*$xN~9aBq_b2{!h?$0mT4dCQgKCX+Zmc zHToSeI5de7n>C8zs9&Q>oMp%7GFQ?P-$uZcA9))XBQa&a;7iVJ@~F<=YLvPx9r1KU z)IJK%Mucb}3vjf(sdB(H4wxwxO0rV`f8SRQ*^dco$@$7!yMgzwyxGX)yUWhB-`3}c zV|)|m?$tJ#-^nVCYvCNUN9yQz5{jCt|R$e0X!0<_E^-IO&!-SpwxM6T-)vv*G#?J+5+6)D&UrPO7P!$kFKIV$UR zT!B7-;*D7NcRZp&55s^%#8J?ka#?3N;$QM}UPiql;5J)J-0$#$iizWO#Z&3EVxiI9k^c5%^KQGNbYRb1Y2)vJ!PX^S0i&HjZ7CtP>(G~R+=Dxz!qx`@ z1We#}?>lqRL%Nr0M@!!%zYDeb)YLTu9>E^|ReF6HU0BR{v^$O~bK@*Xox+M-dE0#} zLMiaq4G_B(cS-~w*iC4L&}t266aY>h+FPGa2EZ6bNm!;438Axz2qKw#_KM_^#jL=s zxwR$`7aEEBlyMSLlrQF9f3)}lpqvA-t@X^AF(yCM^mub;<2@S%GR+i*N=7mNla&*F z6OTK1=xdMB19c--Q=p`52yhXQcS~MF!_s+q>E`+hI`7c;qgEty)dzikv*Fe}YL99) zwiMS!F{xN1eb&RuYVqSDQM!KF^W;hL3%L-29@ftgLhXxlqWeFyboUG!dNDKI zF)GEJUjI#7iQ7L<6&T?;>)SgCo8C%t@CXkF@!w6Eo8E;)o}TR=KK(&$+7A?J1}asU z6WF|XYd)GluWgHFCxeR~oJ`vd7xsM0=BH+p{|h;wn345*Z2Y`C38h_})GJS3pTUQ> zKCUzPI%`1ZqO_1v%Qn^qXyz4_eZ!OUkrMo`b&8{9*aZ3aBJb;Vl?z`?q~-uhDK57x zeI7GD1rB=lCQ6StS=H3kpv(fPNtM7F&IhfI4KzzV*Jh(o>zW;shGhxwYWKn}nY;CBGyS7s&x`4Si$UG#mGxmEZlgBl7}HfO1vxk&6cjCcVO8@w z^=0`9Dg~&kgK7JH)QbwO@;lD zudEn4xE@S1I{FPa5t3v`atPdf?J-z3VL=V3$=qBE5mDsVulVdpMRGjM#aC)i3k;mb zlcj+C7_CqV+#~`C6ub6V;FOYqKEOBFwHO2TRuv_c%onP2)AruG7YuU7IQ5n*!KwER3q^2IFY z&$MYkfb!%Wxl&(rpPnNVb2^3H0oE3)3jQ@aRAoA1PiSD3PK`g2x%tYK~*48Beowx2za^i4i$ zPCESQ;c5IUI=2Ap!+BgbfV$Twu;3M6rO3l}2;_7-G`B2GToku`C#4F*bZ5h*kgqs5 z;biEJXYs!l32MzWAsuoA>BqSkFkFRIXF@-~giv*(ovF zeZL{P5E%imDGZ8a`CKN7SGOZP@0cX-;~>}r9_VbVO0h}MC|RETur^@NEH$O^jUNS+ z0l3l1n4;t~W^m0lWKhOU#_tsCC*LjuLi9-N^L~opZsQ`p%=cx;a%x>i%k&GCMTKb> z*9o3apUzYCl_-&h=x?asSbo87Po?Evx}Y3u(B1!i^!BC z`-sDYGDK@{L*+BH<(`&)?*j~{QT<$}r%W8EHS-g1%DhPVNyLo-Ymu& zfGdf@ge|tU`fL$K_sx^3Kj&&9Bov*WAKs~zph}&BcjiPRC%@SL5%J>Rt4j+%Y{jWgSl3p( zxqoJ(`o>CT%267H!~b^8uw?6Dcjdh4ZiJV%XC(m} zky^dWRrBSMq1IV;Qy{^bj!LD9KuF#4!ONHY?)6TnXY9Hl*`nMpx~>X9klz){T2Y8p zj}}=m2{GDMuqz0W3Ty2v#RCgh`@;p)yYS@ac48LpDhtijf0U-^DK5Bp2c^KfBSdJ- zJ*sP~hf8tP7y|!>3Sp3f5y86L%I_nh%DRq-fNv+R!UXb*7iC7u_D1yt6=qOXL6?Vy zDFkSOag3yjkrbU~YIUGzH%w9{!hfDQG(MHE?mTMTox5Eq7;L{bXg`SV_U=#QL0($& z9m<>zqV06vd_&V74NPf&hY=u=!(T{>bOfiSeZC2dYy#+bxbBz#`|_3V2+FvI%g0^d~PH7x>SR5)ondE*rGeE2fua^{u&Q&p~fNE$QPK;vvr z-qhyDC?S={uG9AptQMl#6{*`HtCQ^^a7K-)^#s0T@LHIZBi1u)r{A|}n z)5M;<*f-ps$vQDD9^C+FmnL)l-O&muO3jYbXPE=yF5zNsXt(mNM9AtZz5T zq!tUaK6?*P{Q(N{H&w-<2W64{7+TAZ#&I_JFaNwI289*|Y`P!Ca{%-9%Z_b&9h%iw5YDdk2m)|7Nd55SKiT#DHD{?pYE?I>^2y;(6_g{FC$Z+Pl_Dd zznqXYFCM)4GP>#a=x~3(mONt9-YQZK>AOr3*O9= z)d6~!x=d*77n&0k^?a97c1S34|F{~Y3Z%{Y(m7wHRGG7Kn$acL~sB0)juye{@e}!#_ zMiHgPFmv-J0$vAKiAkAd+impEfh@X39n`~y5dV0)kNA9tDfP$heMl?t)>3jx`oz?= z5LgE!VR=iy3ha;Gtt-`xW?rQbgfkOK@F#uOd4hsU-~46YVBY*;CE9nW4} z3;{twBO3Imx6Cw=vYq{3n2|p;SoklkduqvkCfhlDUc08!OEzf@shiyZ0)*G1gxXIx z3xski=vz;aLQDS!(vz24B73XsZka<^%R%BUnVOI?jU%-pBkbb%QCR+%f?B#tMc-qn zF7nHRhzeQ;ql{*yn3)l2WEWb^xB~k`vc@{zuKpZ^=BAVrd}7$gQEA!JN}}!R$rZYd z;Cy0`Bmz%U^p7fz&G_1xj~^V6Ya>@g{< zwQ?LyQIYp9h_QG}Mu+T200xY!9|KNi53$kLfa4>~l;BQHLnxULb8<;CDq(OiM*Y9! zXhQ*ql_P_)qyfvb;Wz0)`_J=4l}lo|yA&0EWBP1V)F)c#GE-{z$iz!os3>X%1nF<} zDQrH^7|Q+JU+OE%chs|LeQN3jDmD|hWU1-Pg>|GDCt%1bA~IF2c1lFxoLTb_^8Ta& z!Ea_tt|2OL-Rhqv0l7u(>|^62Kd7jsr9QAD!*nP0njzLUvG|rXIXVoGF_P43OQC;D zQpmE`UAvsMqCAbGF?F*?F}jmP)497$$g8$AJ+2*^a*{Dwzv65>o&@84kNDLfPP&q# z+9US~ifgs`hv(}p1!us-RrvB?@)VU++fn`*!xIOK_ixqf3X*Y3m&l&Anga)%)ais0 zuu-qLWhZ-xhSmK5NOk;`7SKAhyB#9DGNnMi5L3y#sYSD;RhgK;>vUlAoFhS0WG*Zt zd%(gVngk*~Jb3e{P9#NiidjQ7+_np~uOh>RS((xE;zJo#S@FFgi|$Y!#JG$(QmNWl zc2GC?^4{FDpet@H{IlhJ)LVv#af`(;Ys-(KJA?VRjV`+EIf8|Dz^LTk=U6k%nGSzH zJ5nB8U|KPAL=mCqG1I9O9+>yHy3DF=eA7U4X1XGc|J=U0Bw8K{gr}f9J%oQq<9Dn= z^d_~wv=n}ac~&d2A-wPOqY|aCpmP?whwgpIn9i(($wxh$3r(`V+`YZR zbq*ysI^h(`xS{&*?|K|P17iDD!{5mde_Whv^YQWrrA_Eh=~}Zy#T^|TgmWQ_=X&R? z=)a=`(pSQgol3R=VJrx;L@dX*x3Jg2dsBdUS|-A zK;sb>?ft4^F_NWK1vsv%MrF0bZ#6$m=WDw{G_uFcI9+w77V$&@@Dgrtb zE)hXcF;^yyE+O>XFb=hWz2?Ev)72Xz^A~n_Z{ffnE7)hw|8ns3s#YS)%)4%xtDYM3 z@*)rxqHSR`>G&$NS_-6iP(MhK_41KM`XoD0TVM$s)v^)&qzC7rvgAkS$s1ui>>Ns> zoh5uqBn95_QlPP7Y3_c8-|U@EQ*jJ0Al0b@l?BLtRBZT0HMCl#ZiN67D(}IcT$rMz z`1(00RlZ<#wX0WmU}-ZZ8~N`pXI7iv-XEn)Pqu^zx{ZtFp`nL@fZn?|=@LSRf+m&BT zJ{wX7Tv_anO}$6YR&%S^XlFO*8q~Y@uss8|{GKKg+zr;3Yn?yeGwFu60u`-Ke`fdY zf#*3Ilxb#h7>EV=4vOd-M)pqivJsK-x>Bc&YhfBJ5K&AxTRs-^6BU21hGjd#!B2>6 zimWDFSq*-75%3S@_Yq?tfisUdd4^=@3@7DqO*e7j6N@LCq)|U)!r4GxTd9c%DbUrU zRcCuF*|;JVneI;r%S~QBy4j3@q1T3)ag>pzfmfui`Ep_l>RUc}(Vf8F6+jg*>7OzqRnH2z+mA0;=B;3g( z=Jg!`Cgx1)y=JiS@p$YPTk#jsgw|A zNxbpBjAWZU+YBdioF9Mf^%nHA|1IcTqp^Ss87Joe_iKByq3nD_Q znpB{ysr4Igs`Z_33v2*}w#0%r>T}sqbZevizI-{qz3Pu3mmm2iCA8#w!(tLFNYk}* zw)K76XmMRoWoGA9G(6ZthfjH>}=u4~3+Tjz+k?JNkPr z6=V327PJ{hyd}W`{nxm=-OAm=GszwR7thLjb8j2ch0ay1Hg$ZGqA^fgLT3R(S}jtX z$H|AZ+#Zi-jcmF`Ng)G%Y85=u)3Lz|^5#reT>m`g0!dP2eI-P81{jVfSfcu0WvP;# zt^-Y9@|yjh7-_>~pK4Tto;i)WToIC_6NVm_8M-^HUTpz^9{=Ir9&mMm=hXaH#cogrd;+6Pb;OS*1=!rTUH-HGXhpj$}3P^#pASCjdp+UNFT%en~*_*pD zD?jNHVNGOsvHd$#8YTBjMk;XP00TSu?;wJ)sLzQ?Zg(#f8K|;TRlnzp$#|ob+U%L} zVYmeW18GTvTjN`7$nY05U!UTB7Vuc-8Uyz|Q5Ve8x6%aS&&YD~g2Wq`izuGg{mS`- zkRGQzhG!#eGTA>gCOiu#%GR1vCrXvsX?aYih4OAxfgqW+proX8*-ABQD*Zg94+`N% zlazWN>u$@(HZXE|shE@s*fzzy1aVJ1o~gxa0rIbA*0Y!`1@Yj zzpGl9o$*?(#S%7a2u!AAT`P25MkAg=J(Hy-Q3{z|Jk6RQ3y7^0G`WX0OLV!(E5+|| zV5yf{DkTuq4J<7^K(nAc>#-C^eXQ%Vz-oxwsg5Ii$7;EPom^>;jglH6p{T@u>cFwM%%C%OqoX)k`OBm7&} zFRU^7`9K>b2aViEK_H@dSxVbTmAvRYiFB7}qN)K#sO5Hnuh4v{Jd)(}$}!@rPJ4pG z6yLKvpYQW;mMVVr1_Mee2lh_mlIdRpb_3aBEgpvZ{551r142*!&j0I4MO)FlczAgD-j9yU<~Sjt z%AvTMHdwmwRrQ2f@%w5GYBBY|M0x)Y)8??E$e|$~)DL7zBmpP!l zu)N?Ifc&L^y5_DXp!h&ua#Qu+T0GHvIuZ#m1A6pPQPg6v=(fg>3*(}Ry-FKU@L2y@ zxgRwB&HZRkiYg?}|Mw99y$jtx<~{G+JnprfP%4vab7Z3kYPbqyCSrJZ<)(b#HgFKq z0k%qaLkATY4gVl!pdnfoE^Hc*=e4=x z-uhf?Fz-9FV0+H2D3G&L*uo=x&48rs2o>Q3l@+bbk+2d{wLrxLO~5Q@pvLet=P|cZ z7a|8lN{mKhoRq%hlws(}V>YoKd~w{^(2_1e9xVCS-gw!tJ&66+(Q+hkj0zG;JuR$h zT}yEGdp-&I8BfK@;a^=%iC6AnIEu0}cTEt#*PeO>H#V3zod2XXdTt@e6!Eyvm^LGh z)VYzLNzdc6;t$4g2w_9*j+=viDWZ>9K8Ml1c0-dWi?{RoFrYkumFD_C8*h#iVL z)*{KiHKB&xvs_*S4X5zXG*g<#n%f|H99cF*YNB5EQhGX*Pse6scNr&inGi-$Uuez`M&OM+XTz&U*AX;J)JMl*(D$r8yM(>jtmQ(lE8; zv!&awBf30^8hjrufP!jP$SBD=6X*=Cm@OqM*#`xr$32fm8?@~i3q|kc{J^V0MZF3{ zDHMy+nm-{m<@;}8HS;DKp1C<%KWJFK?-A+|`dCkff7(t>&{u3L8tjRU4MekqZbwi8 z6!l4od`#EP5n#fy20(PUn(Ns?!$)y1EJXs>YP4BQyS&NWZo=||Pk_|lBlF*#1PduD zkwAt=mb;sq(y-OzK`%oWKK6QjTv=kM<&c%@!iargjNDybUgw7qwJyZ&Y)xR1Is;xv zw^KDV;I#Qas(M%F$nV(y;G8v=B*ap%l>{10{rY0btE=9)En`X4hHG=bU8F~2&oyeS zQjii!wO&-}IGPSolRsK zWVZOc8Ks$dxj(o^3dVcZ*I41Wjs`v1yDG)d66!2(Fwk#!*XB>!g$PTTas;78EeNjJ zIL$-4>?2JBJ1tfsH>)RkRG|c8zx*U%oTT(&U z-6(w;Lp&yN79QqFRNhFv-Dk}4k)G?q`PRd^7PmX9Dd_qkwvq4IZ{#2c_1^UKbnMls zPTOryflz1{JDIDmM%{j)UkzciO^$4{kTJ2ooSE}Y0w zTrpgTy&BTgm_7_|2cC%1<)j)e?Am3t?^+LwrHpu$FkFTKnf8?grlJRz);Wmu9o#pnOdA$?PhIKY?F-c5&E`=s?kXa5^fOn8ueA=Fw zvZlKf7SI#)CX>*TQg@|-estiFt;0qSKI}fF)ZxjD%fJ|a&I>rRXAklS(njCTrDwKx z{!EUaP>LrxiD$bc0o#_i&>*_dCbW~#C!TPdo%YUBcL zZYS%2{za0T!V8S!0F{;OiESMPjlS(xnTayh&?F;k5<%W1Vtu3FRnfwFR^D{=XBY=9zYBpl*7==_rNUo%iaY%sP2u1 zhVQ|Mm>)n(B*4GFpb+^pMp7KGzKnH%e&MWd(#$;tS0-VpbFsxenzTVqW-n4sUguS6 zG9uaeJYihecp~nMn}eFVE{N9!?2V4;!zF#`G4GRd$gx}Po5M-?KeMhK!o(L#H@psD zonhLfzzuq&AY9#2>(F8-Yw&yJ4{q|;WpYg#95GlWX&OIX9J^$osENfJ>(j5)&@)H% zgl<*QD94eg1CNsFC{$Mw-lALExSH9D#kRp!=?q+I;7hTYqF_2%(@O%~4yGG31IkM+ zfj5TSJsh@2JsMTh{SE2ej?_hL>Xb;8&c1{-3fFl#_n#@)M`P5r7Bu%6wJ1y9Y-J^Mn22LDmfKAja%~k~}E0 z`Ym7!Na#mVFgTbqZ2f?<6pM;TT@h025*M3A6#cxHh^8nLNQaANZo1eKVByK*_r#Y< zq;B6yoEB$RYJg5yq9p}7t-ZMjz&HdRh6;0$L`0Y{+@am$_Dq2PZjO)@&uXr(+9bqu zGCcDDl-ZR))^Q0tWvQ|4Bxllh5Le8FW(`BHVJl0U?*?}q`!k{bY$a;b9AW946m8Hv zspdFCG|EF=rgMUkc^ovUT@h2M8{+gFI>)2{_0rr2dh zQL}Gz=JtxeE43z}wMT#0_AsE2<&(K}BL#LvN}D0J^{9eLO>H5cJLeD^eM_u@4k5;5 z#+Y_z2@S?4$oF<77^s16W?2-3d9W6g4VW%9L8lr(>usr0umVfBwg&r(szFs)%zLdb z9Asn$kfphpjQc*`*l4mOv#UJQ)95&@Xf@eH#83%N-S>tT?)DGEvMn~lb#0qYMsqXY zH_ys~JE_M~SW{6vZZ*T&x*CC&u4vt*g;PM=%}$2&GGD9-ADZ0L$wpp)IH}GG7-{cL zQldY&#EGvCN_vhni7Dx_By=c!eW=n`b6BY|o}#9}i{Rj-T`(TG?zt8<(7}aNOCec* zglJgY$#8o~7XrXkr1>Te1E%*VVmL2FeRd{7o(#INc7Xqenl^cGYxcY;F3veZ^J;bm zFm^QoqCX)mH^K8JO4!vW$T{Nu3q7y60wk=_hc;&CTK@E(WuRot%j|&#yx5dP8)a}8 z!oGz0V*q4sBUTqwN8BMRuKX6XBy?-^sVovT@!^GcOcVAE0Kgpt1z4CAws@w`e;pX` zEQ|SWd6=iKcCFZ14zc9T3&jy1wf7uKXGJ1j@`(+viOtxU-w#dL*_gpSX=>g`ln0^l zmMpyAe6I^}4>#8!o?19H={AX4Aw>xu-xrbCJ@&JFwf&OT&4Y?&={qm*1Y@NwwM8{L zg`{pRwI;YPc|5c~9Pv6#eR%C7%xuL^B{18Bs%a2v{rtgsZ|YYd_BP{v;QBd`c@p}u z)%A9NmY5DWbS!yn{qj0meE1XS#bdJMxs^!`2(*2!PA?uI7a(K%! z&S6L@-^Awi5XVVqdCGo?5o9mpntYX**?xA|%sTSzSq$MxFG{tyu3xwNd}hyC;Uap@ zM&}x64t)lzOS5g(>o}h*rp$YMYOVG1vQP2T4A0cF;-Md{P_*`|=G86GnMFIA$Wy7A zeF(i^pRN5~`{(HArlc-)Z}GHgj_x!d3T&;BfIH{&b98B;)ns)5uMOP~h{G+AV~!PE z@f*hb4FcoXMskvo1RDychM6OPGqp@fwt{FQ2=}Hl=Q+0gh<4v_Yk<; z#zl|L=%3vS^t5(GMYG_vppdq<&T%H{ujj#uuCx|zd38950p;6nDyz==rOT;A#!O8% zUi{{fc317d&z!zd#pm%e>fxpO!~?;axLMVf9qbCPo{bb^)L_I42zOl14yI-!dTXWN zitx`@x4nWmnpV23qIy@b{kQVe{eA@0RYN zeV*suq6E*m>s>Se^X&JBB5{uE7Ym4oouB zxmX7r3hEE1esRv*)PDDpzIW+a*)csP-b}m`V!pgTMt?W;$KNnii#);ze>VIF&lx5 z5}D(Rki4xAIO1h#?%kt!f8UXt_0&S7R$mg2gP9uqnQT>Y?Q^HiEQhqvc$C$-j56TB z`Q#ev|D~R&{qnJG9NkL{y>scrS+DtKu@K6tP?v$ydS2{Oqvq%%2hL9n&`qdWHc2@H zW~flY>4$NWQV4Y5Bgh#T%E_vjczS-{o+HI5WA^lIW~R5aT=^g|*C)2YX3DDa1*San zj_YEiFW!t7!yAfpr7Y7fTw0S#cjKIS$4fWnqNE#)I>ukqj`nu$UJ^8D!-<&=#x=Sfs7Y-3UveM=G+pHKEki9j30UW1GZ3imR1WlOHYM97A#maAX z6sw2HAE&Zu=rDCGQ#Et&j6TVLF!er8-Cz@-bb(~2$JFXML6JC>0|AbURN?+WFFUn{ z;sP6^mir<7Yx9OS2dC>7O0IiTG{gBBV}N*~%^ns^5QNnI=-$xKptIuwSp-(`HeZu> zZPV`xC8z{?%yGE7)79lVp-(FFWgOpk@S<3r%hyxU(ww`yt0wZLy6cr9aNLo*1Sh+X z4OKIR0-rqA5ElWB5zdcwuPr#^reB9d$MJ??6iX|I4Hd?I6zIaPoUsif z$`*da$drwmp--_4fGkiaC#D6VXRfo8dZ{8?9%>Uc2Vk(Ic(g5>1>FxuN?kbVfbJ+B z387`0>IrX;#&1kDz^?z9QbDbNxg-5LSR_Q$Sb!uO3U+#C$VRC=K<8$TC1F(X-X<|t; zk=@fBV|7q#^TGDbCBvNTo!ar`G`q}>=2F8m?1tZ0hV{DNA8BNIb@l%4NNVhP50ym| zheFK=gX^^G(m2TOe*P$&uVW~L(>CBna-zYa)!qb-L(<%=H|%7A5JD61tHCk+4k%D) zQL`~$`){I?VG~s zoVc=_#erv{@eTJAct>U5dxU5_kSfGcsKIiZs{n@uV_EcDS{-k`*X6--JxQ-mg^=56 zA@Y|})T!ssHZN%?pMpDmEoY8i9v;2%@m}kmj|e5&o&Wp_`V%ex=43{j#ZrZ(HSppvg=w|Dk9g4pii>^^1SY`|SDsZ1;yi zqF3D)Zf>Gql9m=Hn~gB(CRQqInj@&u>P5B{I@bKvAq)T^KC92wYkRnFFZreNVLkjS z#BiIe{B+5S^{9m@dlvxoA1hwVU<~ZpHo#A{(~qD3N*PPsvHF z$O>eE(^E;o_1VFAja-8M3mqf!;#9-=alP_X%IO!w&%CjP47qXL->UQMwX_cH4j}Dx zU5rR1WIy3Obm!VTz}1#p&U=8-t0OdZiqhvp71#n<-C}FJif<=f=F*4hE!Z@Xm5|xf zm_SY3Dn6r!AYP}erPf|Vca4yjLBSn%o1MJmZKUHS_yxRSTQLlb?Z!eMqVqO4l z3Vag%(l9eC+0h_9q-NPBKIRIh8%fxEXH0w;k`&WCKAnMyp|NTF?{Opsb(JjA!FK}# zUaOo9X3eN}DEu{}>-6mtNUr`Vtp6yC>*}BqEJe-iE6(W`e!Cw36Lcw?vWk3sC9PsXgl@b=Y`!5*9COV)S_-Lm zhX)1kNJA~%n%VlH@%ddX6s%V`{j9d^saf?gPvE~$N94uvrxqj$Q5CQS($5eM&!(5r z1Lqgxlo~b&4$5ZI+3Wb;3*;V0ky8n`hy}Um*a%6MGXR`t7a7to!h#-it>l0e)4?zo z<6r2vzYM@9B}N=Z`*G@0lVFu(px6VOm0WBDr2++)?#fT*;^}uhub3bq2uKp1kl($* zL=k?wACtVFGI>bwyZ5{HyYstm-;$b~ofkB*GCw-_4@2MmYW9O{cwf_Pkp6F!{~G^z zd-d?o?_TFYhh5U|`o!YD@r`dObf0oyQb0FH@0K1R%Zn1fpRCE=J>K39B$DjXP$PU9v~-`2re*zneMhUImx&)wnikBn>_-Q`xw)}w#I$=gNnD&Za)5sOU8Z6B zT?lQ=)D$5hk(f6me$VX3Ut!ZZ5Ug%z&ii(qS1GNG>?wr9s5zvUHw8g1?dV7hB#11M@S$U6@)42nygUd>RZ(xrXt*4bH z+x0+_DU2HmE3p?1z#g#0#6uTQU~BjCLWe?UU%b-S(2AnM%+(w;xU$cVeV4R5j!gV4on8_)&V|6%A?M9ca2;c~M9W-EG(Skn(73XuY2DHdUyG zPC`=}9|Rg81qYb&33NC@TIb_rxGpauK60Ha0)=(+NK>&*HViUfoaB{x?X9%(8%W0H zL^&?}D3O5+;Zwd(%?2z2GZ_ea(s^~RN{VK$RKaunrq?b=kn=Q zH!5C{%!z|jASR}237_SKoo<1A2io{=+VUPArqC0EpZ1;{nO(g4kS?TVy>=8ww}tGm zY5zp2U8e-hzJWOmP@dRy`txRv5`JAIoYVU5f+s9HfqV7Dpdn6~UW_OggYu=_jelb>rPo<0PC}m= z#L-6|a>ZEUt+Qaiy?lIIxBTy7#QU-)>#o4$zT4!k&g8Ca`F@zk`-IMSXRzICN3}Zl zv=a8dL1ib*`G4&E=^0x}=w&@>+os(|2et`P)n2-F8CH3D&q#^@tzLEAhSWqL??um- zY4!%gF2j8d2Hk36g%Ic~d0tdYIEAcAjQsRd(rjBMitJZ#f3C2Al3sHlPCQxZkJlSv z(Oo)PLP}-gx?Yv;3EW;>mWG?ZK-@{!!pzblGV>l#oPG8(cncC$G8apmlt?IfBj_l- zxy^;h_w6${njI_27Nb$QTM4CWySu2!68D-~UUV3-N;${E#*W%aJihy+OC94hfgR{v zq-8JoIVA3PZEg7)4u}e9GP}H8YP~B`XOFy2VExWk4$j`)j3EDS#_KeMPY$~;{d~3n zfOOhUcA7YOIY3A@ODgXX>i8Lli}!ItGpHHW$r^JLdV@60da!usBV0`28OuuxM5sT8 zGxFvS!0XIf^>^ynSrYZj&qbqVWgHqvhs^g|40}u}QRLJDm|ARwQdYW3&5Bt0QTmN~ z)7Y)0g)FCyG7MST1Hvp3m}YR-)4-k-%s?BRx_D`kSvWgoaK=qFtYGW7*@W>0z^GXL z-rq=Onr9OyIc5%#9x^wmVjH#^TDHjw{q)>~!y8%8$e^O9A^tw-i3Roc*{T6ePZ2&H z^W{GSBZI~B(FW)7H9hxc==T*Tz!?2*db(1$#m(X3Ivv2%E?2)d&^l9Z%4H}zZR(dSS$xx$Fh}zw9FLuPvqqz z*iy;hNl-@EATDZGTNolG9nT8z<~g`8coQ^ni_Q4Jd6%u#M&Y;Eo*dXZ>Bzsqd9Q|ficSV|@EJ&zT>GT^Xa%SV) zSnsPMkUR<;g2ObcL_kjOZXcZxCD~K4wVRwLxHvv%G@R=3V{8ene)_(|@Ym}uUZ-dz z#`%omcFZWFzx*#|oPIT{teCj`RsxQGnz6Vc#8FoUo+92bd8eX;_-4_-f+ff=*@BeE!7||MxW{mEvNp}sqgc3)H?(eIjIfv6^LA45Chy}t z+$VWvoTOO4>79XK>TXs``5qS5yaRRnP3`~F;xObK&^L|FD}C;0xl zBB%Wp-5yY@B>NUQy>;{7f&Ad3-%ab^rO($-t*TRR{vHiJqi^-T(wufRg$v)gKO6#8 zFu(7xiK?$!hGVuB_z}?-1eS5^;~b+J&i=*8nGO1L;QH_Ri?mbN=HYjVHdEjbPZ$R_ z-fWqnsP2%IK_7WFZk|~niYqZ0zu!|JCRnurR2J(B60OEJB|f!^|EVdV$AtaHL=Xfa zcfzgZB=ltCeCB1QjI;q_Qu6p-TBX-%R+Npfv?OQcXe2KCwvD3>hB#_)Q(Y$i!}O`q zaT>jyPqd+F5N3R(NfdFgH;Ge2PJE*n1D-*s*Y1~CK8QvE#q@X50go(@0Slr?Jdq`EKDmM!NB)K_>AbG)7(SIkYX=tI2}%vc5M81O z&it8JrRS3!^~Kd+6S;C=MMc`wG^}RVL64m@B4f0yOm*YoO-5zoKRbpf2;<0=z`aX{ z+~v{4_WjW3{*d}DX{)aEM+hByVqX6DW&)z(6F05H?|+a-7`r8+U0&bj`Iu_d$VJSl>7K5npKZ;h7NyyRz@LGlzS=YLAwmWPSRau(&_M9m>sVy$-cS~GM2zgU{3|8Wt9 zEN+2P$%afL8x5l6wu^T(M^}Q0f+I~eJPyW28Ij+={k9Yxrc%WKye>F*>Bqky@T)G* zf}i+uUd01$GTHa^WO8MaG{@n4S;4t`|Nt~0q6%V8E&!hvZ zkZk=h#!mB(GCiPB)WH!Qoe8TR74gWHEAQTkAOAAD8JtcQ))AH$R@JA4M^Rk^4cBV= z6&l4_K)tQws6&!34)Z1Yxtv9Xuie9kI3+;P{Sp1b3GkN_^IS>LwfVUyG@yiSzJ^&e zY0nYnqFdf~OOC2CkdZ^LR$)v1{;dN{dCur3r1WK4^Z8K=FH_AY`psrC;Ftq-3q*** zlU+6-=QU>yA*lY&INraMZ}b?B(T}18pl5?9djMPg!6$AdkgqkM9%ydkubt_gL+a(I z>fe31==Uy|MoyFg!TP@D@;T;!VfSjIAZsT)wAnaQcaGZ;SoXiIn?SaD_fXzTT zTdG9`I~4YRNl?}HAx%=N^MbVXcWuBlW)}A=w>}7$3gJG(nnYapWn)^gyT%~!aM#?|W8WK^;KmD;wv`O1x%s99HKh+^%0wwYw$-{0{?Wk8CW z-7tnd6vc_6`%u-q0;F&^F|H@xLHLaxSAt$QyWK7OB+#l~e0$OI`jc&8d+Ok7&eckh zaNar)17GcR)Xs@%kTBW5icq^~zjYPQ{it3o^;5GlTyzKiw;2WJ(xNB|1Q99G8rc67 zYG0f+>z?_Ft^KVcth_?}E|t3P@W2z4VXtN%Ki<*1d1fNpM^em~A7v-d_*Y zX0bih_HU*$^Y=Tsm!$1-Hn@K2bTefgki?2aWW0|3$BxU?yn9yVTvhE@p)o4|l85GS zPQm2SR5-~lMwV`&-i6mbc2Ke$i1B3XZ6tB#X{|(+;c9e18=4tfMq+gOKRgZ(1U*Lr ze{qH8ih#mqtqY)HDD2+Q^|DxQ`r^XocjVFuLft7thp{9eYm9t_<^+Y3DNiU#$FoZk zBk_&1K>c*vXWOQ(AY@;%c<3aN+;)((OQ#nw$A&U2%s+4v5o!%cKsP0 zA)(tStBm`1lGs>vLC(58Wjj87Pt*TC3**X2-(@Y)R3FVBd0k9BJ2@7@P7vwpJ@C0QIelX{~2e3B= z6^gDYe*M6#(W3)jkJA7XXLsfq9N6OR?ylC(@2^&E z7`H4Hh?QSeXO?Fa*?Y+-ud5kkZsEpwH7zk1W{a`esLzrs7gGB{VeA;7)*4OAzc2>r z6eX7}?oX0@Fm~cQBktl6dXt!4eWY1va$(C|Yf`OeJqF2pCo68&%XeLl-0!*RPs}TKwWqV|FrEHvP_vu?(HA)~<54 zbeQFKVT5eMHmQC&&HaKs9~In;1`KN&qdWRt&dCeogsQa+^k4+sw%@5N!=-{k>UYFj0oc1lHxdt&X5zC#n;|}= z{5H(oC@fX7!m$90e~2lHSX?AgL8i`kXhhm$*H!3~j1EH*cFDSdbS8wIq!#I^nf(+K z23T?}B?--PmhYeGK4`#7*%l7sOk?xt%H@KG99wFC7|@%O;QoftqJ$;#K8&6@bl*^k z-Ff8Q+~wW){jdRk6pI_P3EcW`kayO8Qw>H@p;p-P4qr?7gYeEf7;1E0_T<{$n~JO_ zv2K*VN6E0@Fd>2~g4$CDfEPQV8i*C|S-~4x^3+&Vgb=1XNZedQ1~*`RUk=_^Y#Ybv zZ1D*SZB|A-hnY=9r_?xD^d6eeiSbKgXdm3lS!-Jt3<9bo>{8&l5XvEvKW>Z>Ivf>s`4Cdk@k^Ir?6fZLjZB$&B>(HTzc2aX>7@G`{rAT3 zn-i~Wdc*de9A$cM^XC><>0f^}GkJ}3zLqbVwO3?@o^j*pxo_#}-f?$5wX+?`M>*82 zNxKhqzZz{en3px8xC}Fc+a!%x8tyc3H#kVYEq8EJiDU-*58jtszDe?yqpxzc9X~d> z@Eab0(wu>bRxHhVs28x&nTc;J4T#f5p22wl{$`@nohy_!k5jLaEc$50*v6-sD{piq zC|z|bQTU;S>oi?>D&cbB!-N0pS9!vMes{oa-uPve&|8)FH;KxqU;eufcgGgS!0q75 z+naNlB1FQA6LJ1N9m8Rx_UAFG)3|nCx!j&NFD^~7T(M-*Hu>GFC5$7SIT8Q;$}A4! zrJj$+olFJ~%K?w~cdr8@2nE5?{W#9uS2Urh#lWCv6GN}#nMuC*WLQRKkbLoOjYI(! zZ3PFLb|DJjMXLCz11j z1tfNJ1>*RLXgtoY8umONCl9pMcP8>NuetP`Zh9m<2Yph_FJ*c*F?ZamTlo@i{4E3+ zqIk*4l@szQ12@8@k~u=4pR4meLe1btZWzScRtn-I6mYJ>I%bk@^rNOD4Y7oZVE-sE z0~R48I8j}jVHffdv)=pytb$MKx5a~YurCBpN-bv zXan^<-71%2AO5<4R`473!9P4FF1|M))`J2hcz9(w?yi(%r33@75!KJl(+;2Mg(6_^ zfr6dg62cYDj#^(-*!Ig+!MxCimz@$lhh3xg~xBD@4vmaL`^c@AecN zFf>|E&jmx1!~_%5Re+u^YK4)U{JjeW-Ps%IscDWvn6^5!wvfA|yh?dp@#|T8?)YkF zn|U2mR;ze5pv+`R1%ysq60TTEs&B63IH5!Z0SuJ)*ZH6uSJq3i z$A5W6qs1ru4YV1$Q6RQ|mTzl-+#0J_SE$kB zHee8ku`}+=A`E|xSOxd{8_qGPw=w0MmnIS8i{$l}^Cy9bJ-CdpQllS)57A!w)vT~v zT9AM>P<@_nbw}>%%a!X%=imU6)D04M5maqN?TL1yZ1+oP_8dQ?##EFDYMnHz=r@Tv zW?%Sx*KaJBr&ep(Lx~w(g3yeDl&F_~H27gd1cCDuBI%+W`pR5;3kYFDjalXdshm*h z>IU}~!>{1{2+fyd9xagMs@?JB!*qS@H1~ez`dS|TCcsDSbb3s$KAWfvWH*L(<0MjY z%lBJL6aGxX+$x^^%C=_)ktCE8tt97&oQBe2;?;q3eL_DUE%ydTE!58wpT6@s&ICeR zzz5|A@hC5UFOaoo#?H)cb2@>r>_C(N)- ze;(UO26RK5Dto9M@FCab=X7{3AF@?8M}T-`#k%O1y?scahYc`rQ$G-kclNoJx+|C3 zpV@i%d`euI`oxtrNth{-vT$5j+}T`o`GL4JDz^UAi(Ut{O$BHDF*Ju4RM)0~m}2}0 zdZAaQ6_vhXnb8DGjewKXgj%Sllq38?dh`iU+@2LzHH>4nTMhcDGDwJNW3>vEUd+~Fhs{$a##V$=@h$R=XLwJ0|)S{UE&}VIrmKU_9 zMV?Adx(LVgB}{_gma`{Hz6%#R?Wuu;q%wZ56Ml-R%9Xb+Jg=)^%DV33X*4%*i}CYu zzok~O+aPOd+YQcLOgX~%u>tS5FCzAKFW-OyXZGn7#J^zSuD$V4@5(jE^-R`_kL@?h zydBv>rC~j-#;iu73m^AewACd6>jljO3Aj1184ncY>RO73f0|vceTlA(_gT0W!B22i zmUth62Kq6WY#%BZ8gS34W*)xe_g7qZ_CL;NrPx0ycepX@WLJH?MU3pN>16u2dIWpv z^lFiuK%!R)aMjBbo)0?T`F*mHMa^}O0a|^(f4w`M^yhoO`0mtPm-kiY6(9YckjmMm5;AjI*q?^CYER_YWx?h1_EC+FbZsjK|0T*+cn*G-qdcc87_m~l3j$*MNzKU5` z&s;xpMbEqf%yWRYV`zZxA!BD%|2_ zBaSxLfXKor8dLJ@Vly6hoX=tNvW3;>$vrTk522TAYk$SpKGf9z!M83lJuB*O(jzwHSKs*)JTu5LR@0cn6sz647d0y~)`29}AcaOg zOVyQ7#wn1N2sI)o<5bl9n_z_{@q5umyd`i9-7J=u*L2{!_f=^7HB23mgw3v?SRCt_e3#4s*8Cu)@3P(X2oEF2h;dt=r>sm9w3(}m@g zcU}0f$iU~~vsZ;+-xI~%*Lbl1Xq{MFp(-|B-#X`G#j5sKA67r@n>dT>L;b_pePe^> z+*cCIVfzDNq;S>1=YkTmj-uVp1dwNv*%``ZfDP`nzEPcl@a7sgD6BT^`ak?$>vaj( zHxSMHK3oi-M6GPl*NDSlgS9i?KOwK2Or`Tj8W45jghh}=LJ&oLD)3C8($eO+bSmc5 z6@JN|+Tr(pfjqP0?av^+ZmndA!Vk9<|3SInPZ2t&j-K2%TifvW&@DSLQSq{zAnB zb9t}DJzM$58nJ^ppC+mg(R==y2VOlTk}x)@a{b0O5!4vtjVg=rlw^r{iy>&UzCiP- zj`HkzgeFpXP+>xPhS2$q?oi=V_Oz<~7Hvd4n55pV(r|~DZp*(VT?x+YPa>n)T!_^A zbsTPnq3%N7Y8~qa7gMp`kb;z7jo-ib*%Y9G4iHV8JL?p>LV7SrS@b zU~heV9}jg);gIa*4h4J=>TNW*z_5h`^oM#dO14J$dIt*7UNow{Sorwp*zpyBa&zwj zB3QA0y{O@%HfNJ7I@z)wLo#+W=Nsbc0Iu)Pp>QBT{rEEfp+CmiU+s)j=Ev1%w7}_1g!NA!0^OvGG5tD^I>Z2;{54U1CFX{JAXRrTi zHXsDjVT}!3uPkVdvf^qRWLIMf$QIce*6@XiSo@j9;bl1}IM1x&PsHZ_tf9(x{+MSE z#@FQPZP>5wzNkrvO!K~av%QH!k>AtfQta6)Np*Y3Rhag z^1WiKG*>jCJI1Csj8Mv`0_A83xJ^qqWoc1}PIYJVAb<6d>{1M)Cpx35=1!-l#^s)@Q2_hvbZOs3< zd+nt_OkT@m2$=VbdGu*K_cpTzt(Zd9y4gn=S%at8(eD__x>e#FraL8M;WTN{Qd$W< zG(6IA*XOkm7b1u?TtIQHZZdZ<{pp;OTfs-@(!lNZEoBHa?Yq${+`Z|@&{E`=`3p6~ zV2ud{&R_TsCJX-y01_4G>f(Q=?IooBxpTx4MiKWH41aO&UL9R+6Trpct>0=bGKbi3 z$oj!D97W1Ph6WU45M1?dIMZoK=m=~^g$}oY26g+0=y_Pwcz?_THcsNZM}N*$X|t;|dCeA3!!1Uy;Nk-@m+c(24hcz;a% zjE6@f)^&1_@k?!adqbqjP7>qH(&ht|$1A|vCSm=`6W_AEt47PCsdC?ip9+flWM*G7 zCsceMe?(M-g}2mJ8@D)2QmUsa`X)sehPh*xi_yT{-}i#>cEb|>cG#8bn^YN~A~(5_WWoWGeFJ)Q`(nzh<|)6C@I6yBiW)-o>>ywSi{2R~P2@QifM z|2o(^>t!-J(ve`L?#-NEjyuZ>RH8|2$!mIpp7bGxkvfFtuMIWq@(AFXoEStP=%5Pj zmgsA}UbT+U%W)qnvTuiWp68-|_F7;27#O(vzT7OSBT=_t79Uq;9YES3P#iwJvOAks@QjT)?KdQNHd5moVYSO2mE zU3I?BIUGNQ2qq{SK4!YN`9vU#?UJJjk?0S5W%J=m{!i-dW5z!A==Iu1WN(>C&}pNX z0o2gmpB9n$-?@F{dtTt`1ytQjV~u5Xv-@36cS*FwYypXgkt!G=2m-o~Wz>RBpLf#^ zsr|a(AdCf(ORi}mE^2gPPA(hzms`eoNbO&xnB8y=!CawIGc4HDKoC$j`a@6M>tdnt z3h;$ur(~BgU@2vMj8vUt9q^PTjapCrp@TuJzC|4xs`c)B+2KTlIm}FNrNTzv3zr)n zc^76A(-(JQO&HorrZS(uRVhP||)lDQZLB5vx=2rbbiR$AmGGey|E! zM)ejkb8Md^(FDiZ=5dSlKjOYX3hk9S%%0}I*wPHVwS2Cdc1mN9oJZ1ieqCFE2ysS82Ru+!!9lOx3iM z_X=58qYatvUv7sD{dx(+^(_@A2|ZZ2wGzc)jz*29TFgC~%H_o)(mIYjGB+Qt0N2vK zNVsB83V^lh)ufG6s~K+NJuTYU7_g+1h2sOLU)jbr{Ahjz7tK{|v8BMXePTa^d7hx3^q&7jKEl)h#Q$lV7UWEH&miR!Wx)@KK!Qdm=^ zuGMFe=gkf?koUKa_6urWb|Ky7?Io8V%&FiMxaTJ?on-md7Cy9J9O_wcxg4_B01X+7 zAW=bGd7lN}Kec3Sd3L%%2Dc9wLB1x1pv{&zhyhRZ^H@#?YsM09=D)K&-qD za3@(B$(+n=d5*HAYHxOv7QRuzHaBGNX3GBV*ZcJJ`fRf4BWj=JlPjkVbX_5bW?ru$ zqRxtqWM`PhfyRN^JW9z?bTHY<}j#(JK8aTip&<%~j7X7AE zx>Wg5)LgBnO#VOoCXRXqqL?~EOTC{U(@2!#6SM>GIWj_)0DZ$&z;J8+O)n(x|9+MO zB%hswBzKm%TMbmq>1;6HUQ3*$mccMVHxV7ED@yjgsbx!XQtdC4%u>T#31(&N?+Ub* zBS7xpNGOfI|MCwrw&1h^Ebur$g%m#2M8dGQp7pu zys5^1pT52qee-+3t$cAnC+@KFC2S3)!w_dQ<~s|MiDt3#*Z-9Y-3EO&GF!O&{tBm^ zZY|dIiJS}YJxk#1dZ_F-52lFxBMVaTy5l>2p37OV+#R<8q>}F9hC8d;+usQb0m;4Q zrsk|OKOdLs*3Q@)kE?GXhwa3fislF{TjXcFD*=RH>s>9$EWn%Q&l6*6XJFYR`f_|f zoVOHk@(l0$`!xS-JC?|A;!e$Bn!D7>ujDFMIhq$+?Ma|~S&GdD&W+)NgXZ#9vc=|s z43hxP?5OMU0T`z3C;wVo?l2KO%$@+s>lu8kfX4s2U=s29b>Q{+RZyNPo4JfX=+%w3 zOSiAvsM)75El}MTo%8knhu#;<%dc{m#*E&K9Hz>y1X+^HOp|?g>~E9U$z~N97NOuF zXY8#oR&cN{FdqF~tWxr$#=(aUMxBI9UQsLK;+4tC(Pe+Ryu^6-?!Le9vl=>YmS9+l z#s?u1ZLqbvWc1#(M*UdzbJ#rB%-z|Icta-}9lv-C-&XwIhTAC3AYa@%VoynE`fITE z^MDCDsJRHx9bA-(1aG2 zk(!>eq4s#0cjTawI#0!NR$a#Yk<@_i+oRtqzPv_vrcYM%4A-m;^~iAlTF#S*8p^Wh zL_4*RPF4)$eh!NiNsfQ}4K7*U(pL&QpC0HoFC)|j)4Q5Xrz)1n!wV%_W3DK_|LZZ? z1SYAGfKs{gFAqLU8KJ!5p9g*bQ{lzJy(HN*o^y zRRs|$-@|ZitwNAmWKECm`6)QuT`u{G2f4ZT-|`-hffUo#>&NLw%$xp@)n*5dK84#$ zga5~iuewjjY_Uad|K|O>c>L#5O!j4{NE$hb!8Sz$SL?d8c|7NMBxC-}c{j>y*3DX_=86y znmuOiyPdGJOI-7Bp)sn8zPq_wEJJlLX}I(5s{5wW<)*nwS>5X}bN9Bn^ALOKVP!P! zzm&cq`t97~tqB%l!L$8EFRfzfq+__*<9goXnPQ0~zC9)^V<#%~?q-0$i>rwcBk1I) z9T2)n?db4C5emZnf z*nMF)h*IFZ>&1;!mIH8KG~QAr6-)$}WW(7=;T@!-Bs?RgZv1^_zN`p94>6Xb!n6G@ zVKmBX-%xGR9_er4BcY6(V?JLPFxNI3Ba{WNI?Z`ErA&RyetH3FeSpIaqo2V@Jm#%c z@^GV6NIDWjl0lF^ns zlhUFI;k92M4t`6LYPtC*cyK?9-wk?znYrA-OpNJwI@j(Kr(E^xJ1!hHbgckXXn!U+-%4!OK+TDn-CSlR8FVk>UbH4}>Rd@q4n zi|B<&7>mPGYl%NWw@rYs)M)s>2gMu9$c}%6R?`UJM3u<&ChR@!T(>VR*>LG_+sIR7 zsAhr;oc)#JK+mppM|=v}qNa zblS3qW;NoJXUCl~Mw#bueA;s-2CmD~cKV4V5yO?4Dq7w&%Us)fSK<{Eyhd?g!mdiT z%jf5&7z0WJ$n?L{e(K;t-@PH%l>Yh%saie}N2rz6bNvFtaCdze7vfX_;YFmR!E2kA z&e4i#I&~B%P*)9}*L12gY|)ZcVk}%A(lYj*C#n_+)-n(c`g)A#d{etHD5CU>*-)~u zh6ho|o@$XlByHqq(ZBh{`H9X_{_p8c-e?-SddfelQEjWl@P z^G(hv6H(Pm^g`eaQHSc$p;`5D$)uZXmth;kpC`1H8${fs8#&lQuSp&%gXI-9ryOjOOe zB0RSNB%{a1c+*A!+_bTS1HKhr?TYP{o z5P4Ty@pd2xjbVi_Y(}D5fA%6BO(Z4DX8$i}=BVsYD3og4nl8ih4FT{POgHFKAEE-S zv(%GdMvs?rG6xAfALc{fUdddGCo@s-w?#9s{m3E1Ng7)+4e-Abm8AuIV-7HOu%1um zFC0#GcYXiUdE;MG&$F;dwITQC_mjchHCkRlVd^vHSAtUc_CCNSr7bmvbS;kghy=Go zF_bN*fmS;R334(#`{9>+l;zERMwy}HN)W3#Jf<@fZRHwo!;m3)(JVLOB0?rHS4TD^)8k=n$p!ZJ`K-rJX*Iq>?U=k||)K_zYN}#9tHr?Vw9BNhsEi zpA1u=^v|~ZVhd(YmUzy`1}>LOOjR1LxRVG*>VW-{5|nwp82foL;?uR50YKbOz94Nw zD0lIX3{5MoxqnsPD~%s>99Yt-E31TL^7p7wbzJzCy+v`!^=UC1$;ljEdWo^2UGzDv zlQ;TuAz*cIteVSj>OyXp-6a844Nf2$6MSIwnC(A8`U%QE&iAOgM#>n?Vx)T z`dV^XK-JjGTK%`Z!K4Op(Su3kIL{rNH3!`RDX3Oa!lOUC1}bI^Veqj$kLxB@4{L$o+FFzY<`B63J%5= z(bs4`rBD-!Trg!mR$x-kwTBUfZ+|ZlDff-nBl(2%l^)9kPN$uheYXmEYS4O(E+e&B zUK40jiV7o2ziS!)vRFlSOM=4)wXNTy4D}bmAh(ucr-9<3t09LE{Pm7a3vws|QT{);cuYI4-)w4-AULtm^kaBp++ zy8-;EpJw>lFLI)8i03sG4%rq$)P@K^ZVhIn3~Xim&JkKPyuXWZkTt}P<81v!^zsiG}D5sctPp=S6%?3|DCRCvyV^P-3MZ)&S_RYaA-}bC%`YGc;osK>2451 zFc$k5p_?%^4c5kTdKU48cnN8}iTz)&c2FyBi^mS6BBL5ap5bqqY#zFNo(KkUr$Dv| z`~4M}3*9KOWSUeW$j%g24%Ea+P6YhgOR?NR_dKN66c77XoWHtp74HRqIjVa4oMG@QerhsJ+T0e- z^}mESt;k{AkD~kqq>~RZleXA$_Vl%1@1$zpTQETM0|PfbWjh8 z9ynt>zyPWfPm#CZk~}?LR8Q7R89ZL}Y#qvvq*s_1{rIe`!svz}w+$1?novYd1OctE zQh+iiwqevbgU2h}K7;^BpHPbB5>#xfjW6R$Rs^j@5dIMz@#R~l+Rt(zE>#TWpLNKT zo9~Dehnp%XBi=~DbpLr6XWt38M9o>fyVW3jfiR!2$~4!j7&&xzasC}tr7}@rV$zyA zDCsCv%J#@u1k`#74yz8_`ZC!?McZ)3b^Lh=CN%;&?2;nurY$Dzssa8eq5bH$MMWPyAr~SYT@7^P+xzb6X{Y zq4{_@$&c_R=kDt27bgG~C|Ot}5?lZ2|3%ry1urc9$rX*Lp=%73cQN4a$EKSP5C3*{ zr|;$BzRWKlZ@)XH77mO_Tyz|fmQ~;|q4U_d@fb5bJUpD3z{PL`Dum_%_RY+|#-3^X z^o3<>_P5*mWl{hggM#;!1@IQOzrV!hXH-A9u55P2%!;5@)A2hN0s8wAc$x(jZ$p5i zG0+*k1bCqa%_aNuM@WST1K-~{EirlK;Z*ls#2u}2zu;NS57nDJnJ$}M%MZ?Q6_|W) zG-gM+{T25UGFXERcHv&HkcD>H*8g5aj~%SoPfq26krXLTcN85e@~N`Ymo-_{uNUZR z021ln+qV}CJ=$HDzWRKkU=J$jIE|^TYpQGe(%%nl`0_n@P=#Q9r}tnP^tmU}7eYfH z4fX76W}{XlKD`E!cUGlKW4cq;i4fm=w6j|N9b8@szm4v9_3>%w=7_bClansT#T~c? z_@R=0NZp|;bPYXiSYH-ruoPrh-~g$t7qQn+RMHh%9{g);q@iT}34HV3#zCM%9BqMF z4KP(c73nKr57ip;bgUMl6?pE(X(q&)g;2MRhC9>*q|RjSe0H#+CNxR#pFF*(Kuco< zQ$g}6`IWa#n`nRe9g79hmT?qlCyfy{Budh0r{`@o-K>NvoAFZUNvlWF_eD1*|HFTo zO*mB@ey>%>UqZ&IXB06xB7LX5E_y?c?1&~0UuV&0uy<;&DxpdWCPlh zM87-5abtY)m|l1Hx(@)jF8=hU04s_2`Y18RG>OqBQPR$|$(w;Wje%_{jGTn&#!!J! z)QZV3C|-HS5?p_7!BCIJl%$eVD$Pg)CF7TOR0V#~Rl0n?D zNLEAeUzy1m9Jis{-C1inIy(hRxta;ROtg86#OF`+VmW5~Ha!>i9p%ml$-HYB8ZXDQ z?HreH5)ZK0u0&8g`Fk^k|9P74`PH{(m3fdU6#Cx1tU)wxg5<~b@g zM%uK&4OYDHUPw&;#y9mHA#1v)aB72B;5B&$YTUc~z;!9o-e7gAC}}>!DzJK(mj-J> z&DOJjt&mo4NzP*M>Eqyj3RQ3UN9cRDM6xkUCC;RrT4|$rf<>10>^5DB_DM~EvdP-ppR z8sZtc_m$RYSRhkHd|Dny*221gx>vS4m(Fcx#eTdq?#E+mLHQ3hawJ(tx7d;QD8*ntj6-kt5manB;sxklI4cqe{e zwXd2;ZLTJ!A?cC6Vmd{xz7LO9lo-jAv%V$N8X%35uYp07Um(ib2^w~4;!>mJ`iT`N zNS>u93Co{Z;}4!27^E7DKFlj13a;gvU^T7`x-{`{Elafi7W*-P)r>rN0_STE_O7LA z56XK&n(EEO)D!t8`QRnW+=Atk)-xpH=cg)H8PDwBlG+Gn?pAXp)VFU>Dc~2jgDe$J zHKx7HKV5XG*MDWJ%E`%{>;DP@ileG*zeE!9)pJXb9HYI&xx4~O=z+P6(&3Z(6wCGq zIG5MmjEqd$+iH)ZWc|w-9(I_ezBgyuvHA?(Ri`@5oB?Fu>8c4vtCct1la9Z29pBcN z@>wVCS@O2|h4`bjzk;O*9Zo#3a}RhL=6oS>CwC;%Cw4F4W|)S0vNloyVgmwc%#78a^}lKA+%)6GuKlLLm)9ZBY9m_rO^C5HOyW1n?<4_NRWk{$ z?>}8N474fy(^8ETh`b-)Gxx0gsLD^$>rL7-umafm%$GqQ;oEmVpERkGVG3-O`Ri$z z4xdn}TXATNZGBFH>%GbW{}}k)kMX1ixKNc5!Ci@}@!ZaNkniAm z1L`k~q9vwKFmqF_h(argE=j>eDkrf_>HVj-+wbD9@K?-cu(!_f&;7-yniY&%L|8?qd;9d2WnPiH+UBm#^%9oEbce`*qLK(;= zl4aKj8`Oy`($bK>*de|BtmQX0^K=Dxynn0`eT534L0(7C zLz=QE{K@2JlZ_Q@6)OxE6v6yb-!9l5Ggs9};RL5o&-)7TTkpd|s?;Y*u)jD{f1jW6 z^z@Gzb_K-hP5_me<>LJZ_Y_F#)_Xh#y0}z-R}B&%ELoWUCf(5DgU99;ic2FF&M9&v z=I`6HHa3iiYW_zQ8oE&)NmO4PA{WQV?;JnOlx4enFKR7J^15s)q65o@XDm>^*&$}| z))nCi;5kJMDoLquT3L3k=j(w!DX!Acgq|9Ju}z;<4v5+P7}`T(n~+^ZiBi2^@)G7k zezs##x_!YXf%^jKgJN~arB*yei{e;C@%@M6f_Q(l4Bchl{YoIvi2GWk?c{uS*uVw& zV0XCQ1|t0abo1|;)Q=)LxwzMBzlg!j+{fFlG|3h7c!dnB3G3$=7FhEG5g++P-B{~%18#&f8Mmf27J0>qzP7zUAB|Fy4!gm-;%l&TduAFj}Xr^Y6 zXS%|a+@1}*x~z_g;8HkUltzEz6ZrZSz+}RfTE&&z1g?5HtdiAsWFit_Y}(ZQlkUOb?eZ|t2CO}?w&2hK4CAe_zD!tD6H z%r?oOkqB7}17k$7%hG27{ykMQOu}?8hCyY5rS!xf0t1 z6wo9j$r$baE`vSE#zGnLK<^aRQ0%l@iN)ZyAtl+w?!zC~PFc>4^ zp2J_4Z0+aHYHqw{Hge5VZSbs}STCD{c>JUs9j;^#*0yopc$a)G5~~5OyCJaKJ+ILI z`SbaCb^^mYdIh8-N9*kDnN(!9pMf_|%;s}=ng58YVPNKDuGQ)j_SnxdT{v|mbX*8J z0#mxRD4UAHY+%`!yrHzO)M;kelcy+mYWytgQ`7(MR>Ja2aWdq2N@>3O4jf@9{}Uy! zg?vUYMX19Fit7yG)PppcQa8{#i^;<#&r{&K3yX95lgOrE~!w!=5}B2 zu;qDod1zEIo~}7A$W4r1LTJH4rNhNT=xa%)7{c7kT%aUb8vjj$`bobe$e|zb5@SX4 zHX)Fn?YfmyG`a_Ph^zOp!^PdrOj2v|0O-5aTCzM`*DgXPr364-z9+E{XQDhYucgGX zK*w_Xni#a!&~WwmcyNCcXQ}7Cig}txDQ_QH0k$~nU%Cufy$Uc1FzFS!6rtmx@wS|ZvS?8K7u`9o+i4< z*XH$C&q~Fokp>ONBu>P-QmguP+A6RS>gJNfiqwrQ$r$YNpc9qMk`j z1aPfv<;auvmixX@CHSfFgmaZI%Tv3>d{T zEAC*#=FHFndEt~LL2#CtHabZL+(`fvL*n_|0Tl)(W-XmSzkigXfZF7UQed#HT~WRU zt8sii7xB$~LaKPm=r`3M=t5g8{|km9=uwzfhu2Jw^6ZYPYpAbyl#a|3CG4UIenFBv zARENQ#fVlZ&n}^1=p0i6WAJTAhDyL#kyZuZez(Ed3?5C`1zfn_x$kuTazfj}L#WG7 zSV#nD%G55~IF0Cmr7(NX;wt`S%UWrLFJ^n=U6uK`%r)~XC23f3ODg%-|2O;_bIbqVTjZ(qzFr%Y0?v3VicHMRp??8_Dx{RpmD zWJ+2)Ir+9RNS=Z5@7lr;3oR;=)Ck=#T9D++Ri9Se@_og)D{;)l^>X`Xm(`Vx!+%Fg zGf-M}M~yIdZsZR_?XU&(0;G$0Z$M|`(MdIHQ{L+UuL;=L}5 z#IBfh$ndg$QnC^c!)$C4RA|n~SRk>~ok9lU93iiM5AfNj073Aq7*pq{C?cz^J~xU0NQd;0(5Dm>(1zq<^$;jpL8_%}SIs7+wUB>o8iYh4M?o_g6#1}F z{_xw*`QwovF0x8VaB+>L5cuc9_#MEqBx)7tD1u}Z(1xeWXZEJOZD7Z7A{og%1R=H# zVk>2F5IDCg)nf^>sL-HR*&A(VzO3Mbla~}~GQmyqUrBKtr6V=V6J5Vj#0>@dle7Iq zphpugFXer|u49hEoJHESRZ7=WLbv8`%QGF{f^-$f8Fy8)ijYZHuR+tx-pJ)B?a^9& zuo(5Zn%c;;f*tq32y}5@7HPGBQ==`R#Epb%$zR)6N^YXyN=;O2?ggAQmUlU>CFD>N zPSuuVytJv3>^=3CbH{3#Z)HfCCFNpG`9`V?XP&UGar*|%h??ows%Q7!#n~>$juto= zk)2<6uG1?pCLrcQKjj&Wvm(7xh>w7l1ct5WSuHpeEVW5F=~}crE{+8-cf}w6ijh*< z0K5a>By6IysZj8(2?z>)6XINTlq^w|gTT9{)WOTn4t%}u6NiXjbN#;Fc^QJ=wyyND zgsx1IJ?-Sh-Cg4vr~Z)3b-=#y_oz{Yijj@*?5PN`EKE}O^(XR=663Pj^zf~D`w%_& zYdZB=XR|Ov>dR?MnOW85y>eMLy=u)H$Hc=1{r1JAMH_r>^t$G~O`$`>vXtW{!E0E~ zK`{X7EXj6xtJLXSzRGghHg6r0PtyKCBILAi1UdwqSNa%o*6>X}U1lv4e@6xZw~X=f zk$zn+Ioyw1!F`2vcg)Ge9tZPsQ`1&=-2$SY8m8VAK;$L0Wa=lSS~B>`OaptcUVd86zGUqfZpatHoOdkd!j`1*Z< zovY+mbB!QgV_^lK1+YQ3h$kzjvC5z~7r)88+2^lf<7r#5ls0b@QkZ zXojQ*%Eb^Xr{MAhWm^Ky*Y1AJL_-VJsxYUJBY?C*dI}3Iau}K|?X`=>0mbJ@yikon zE1t_w3mRo0y*V6CnQW`AzB)~WsEMFXR3Ro+x#K4NXSY;bModN-@AJm-oKAIxNXyQTU*G*yZah?b*<{@a$P?ZrsXm zWd!&KlajyB-9CLt!OfK&5fHf*(G1dHooyl}Woh$o{czi0W?-{{b7Y8$-%Hf-m*=*9 zk~Pz7_x-FWphKQ+s>E2LOXDqi(oivvcZYUET{X0#>@fV6#g{?R=h8stO!ON^m4ajm z)g!(sC@wu}ANvz0&dH-1VuyIrhm0&o#mx+*cv-ho*?L^8^$aBP5|GmHUmcYE~J6H&gmfm8!k5~Iws;2Xoqq8$ngQ$cz?8lFW@x3#ewDyI@yn8t> zvcu(&xVd(Z$Z$06JRzo&(z3x#19;KAr0CP)A?pc6h;bLns`A>Lz5q^cCc1i!KUs}p z5-0_qB8V_z>}6mlP(&8a!une;SBNSM0%TQ-7s}}H z5+A1mu3tI>N$>1@%D3NY`{3<%whvRImNiH6{#WFv*y_PJaBe$$$3$VY*j#zrfVQ_Q z{t6*riRtRz@z=q@_JEOM4-!b4k`PN8I`vJw1I!$0X}upEH_P zJ@>Ht4*%_urU8NhABF1NbD!NGjn)U30lXjP8q?=U3tHROmT zLHm=Cs<|SMj2~O(zb=X!EFHN^62xlS!_eWXhk6NX#VN#xdV`7jzG8fKrd;8JX;Cs% zFhcrgsm`U&@gEf!RMAQ~C-w<3-sKKG}!)_@V z4qu&~m-&a~D`BZ^(?%)rCC@L@-$bSMd7h1!RU|k)iCl-hc`a^LwHfyL;(Ne5*D#@R zCmPMJ!I^RqmNjz+;mSap<@4B22=Q@j7=MpjbNK5X#%YHlx>A~W9m&`6PNImx9;c$a z>c~!u4uB|q{=U_KvixTz@%02I$7ROn_Lhp#+ucW2RwiC#*U2W-`j`oU|606LA>C?q z3X=3Z>p6qbW2+yqX2;<-+cb7!iJfncmKDm?`tMMJ)keJQ6ltC0{&#D?FQj|c>;-b6 z7k}3=@cZ_5c!}};`@#0?Ig-fyN42l@>{K)8)=C7zG$`r_Il^l|e~PQi=K~pTwg?8PHQ*z@pNy z)M?vPUmN{GTo8Tf`6Y{XW}wEMaP5OVQle*tv7#!Nv}lZmeg1y^~Vnr;{M zQgyK%i<_qn4!yz_dq}Aln{>^_y|e)l1~Ng zsq{;FT*l9BJoppJ5V!9v)1!=vs*v25e1Kd`c?x2FE6DNU=B3H3>4~-Vp%;I__w5ag zSG6g9tV4m`10*i7$`hs}o`UhYk@>B<=GJJvqiu?`wcOdoxm{*vni~bcVbk8_CH}NZ z6RKe?wrW@+e?o^-`q6c|>()1vPZ=aOdou68art=gr3kgH4;aezj-gmMMqDF&cbro! z0T?I#Ii?G#f~io^Jjv z&`L$MwzgJO2x7X@wwz5EWBEVh#GDTl0zKWr!X7IVTdYjAXhyW5fdLS4Tx~p@M+n<# zGF44?lXz+TO4|Q?SM(h(4OAxPav5{~7n~sbNpNwRhen8*G*}OYJEOKtK_S)z)&l{ZZJihvc3op(`z1qYpStND4Qq9)nNz z73HWMig>3F7JR*%sxMB$RYGA?G1U-FUEfAm*2Pw@vtQp=?{9B`s3{->^;?BNzatTX zo|6w3J4W*P(OsuBg$H0~&Wi@##F{F>7?Q?`fWSeK!A>k&NLjJ*cOV&)d*i>KFN8a? z$@DeC2M0^c`i+Sq9g;52jlZw~A*xR<3%mXx2x+>wIpi30>1Wh(!%E}w5n_EP35;0% z48ensfLw0Hx+p=AHgQK{=GbhaPf!!7?MRB0O>^nV$Y?HS(63c9P8LlhdtxNqNX?QOJi5GF%bWv8LBz8;2)gA0;~FCANrX zZG=v1ty-A-2+kBj&k41$u?E2EUWXSnL4~1Oey>=%`wno(z~dlPs6P49jc8|2AQe8| zz-p)(HvPe-4uMJt)+(F zYKOXDe9YzE<2{eOVIvd4`s>?dTb;<`?R&8X*hI<`C6JE>y<;HROP$+yTuzhUiWYAF zd%B{R@DY36x4eCygc=HA5+rmiwbxnvmG1p-AZ19b90&eew~)d=O&w;-z~!);V6P0a zoYGz)G6ruF@iwa0#c-Ix(EYz4#Z~eU(N9MzPrw>L>XUZiq3IS1GBeUxiZ;Y=Hv%nSys0I3EN!xbViErVEruQ?V zjD`Jihf_mX@3dJ(=Ai`fx*|h?{G{X74RanqX)+a3hhBTvM{SOT``;J8dNp>u?cnx5 z+@{X(b9Sg+mILxzq2ukv8~#cvs^I#}a;8EHVm@`6ORBug2Ss+gR_3{)v@Gw8dbXk7 zwDAIh47)ReqFxMdfBoSL(|)Y){qP$Bt#jMUL@uU-|HAPZ1Nx2*R$J&k9i}-xo{8?d zzb7(bF!Md;c;)GXiXZs(xD3BC1jrlCs;JOrcl~o)IX_eN=BG2xzsoA?1;Q);9Rynn zDdFjOn*BqQd50S^(q1Z z!Moqzdwi@B^w&(9BC_eus@S$o$CRUKm-Wb6`F_ue~;(SW$D z?xppL+nn7FSTOp^OD2!kif^EE;BLDrAEgoF`+J6fBXjWPdw*R#$tND|zPkLpC`LA6 zrC`AOMis@CixQ!)q7O&f)WAxE3t*yb<_l(Fl9`@w2dM#jj9ye44T|GuaGO{~0wl&x zqa0eFRBbHu06vwiUxujj2sO!sk$v9tTtF>5xK4*&Ux$u-{cd6@zzvl|N%nXex|A%G z1QpA*(+CU?Jo`(8nmCz)^>3qw_&m`)$tWx4joh&v#u(BhilROwZRtY zY#Nd7D`bzhCSG`BL6yD<}%wdxSUgS5v?W-MQ3B?Z=Bvd|Jm4TfVaba=ny1WE> z>xtB-w;6hn{dEiGXpst{v`+P<`Ni(GFwUM{S$XH-msAbpmmet){V(V>@xs zhPV;^)Md6Q3Nl=M$}Y#h4xWi-``k>M+NydSjWE{9Pu5`YVsNh|B!|nedAKCz#AX!&zIS zKf?b^)7RHH#*Qn=i3}^yNx03QOB~JRhPFXcok34|X<8wZ%5F&0XNV_SoZ%Fpcl_ES zGmF8f55|##CEX~L7zs99XXhB%KdO(B$TXjz!W9z}(LUk+B*zdL?l7n!sEA3YjfmrM zC~7CnOTc^bsuk;8ld8>K6V-?P3zRT$39m4+?Ce2^6g^#`Yl4ea2So(6u$VCE8z3z4 z&96`*)oJP7n7*~M7Fr*OyUbBwdFyWWp4VtNZ!ycD#hA!d@*rGG zD&NLeKwt||hI3@D%!^dN`)e_f>UOB&i!ecbfyG zEclA$DhM@{g<)?#Ie&kE4-R0iu^B zkiwSJ{YjP5?k=*|GUkFJX;elU!QtX#e!QNW-zHR{gb17Z<6k)HRxA#&E0=8-B6}3{ zCb&Ev(=?{_`6%kRbFMpysInzQ$K zQ;U{=^3@7EXkW5uOmvYvZFgyytaKd###&F8qe%Fj1hS1Qd|HsPvk)`YTAlunv=em` zEV$7f6gRz&%UQ242g*ikj`;q({5*`Re6gtVokQ<5$ z2L#3g1dt*1lQ}kSjrj3`5a-OG(pP|xew4EGG|fns^2eBGfKlch0G$)jEGI_l)KPNs zMjgY{F2ity5Z%M`JiOqAlvt`>oE77$_m?b7Ljyu%Eg&4{u2*S88Ecqeei_lLHk{`Ly zwtsjCm<;2)co`7$Knv>bXe>m(vfqDH?N~b;O~KXrS!^E1=zr}jm3mLen60-*JOj$| zQK`je2t%U5fZABhtaiDRi)qO0Pr0A2&Lg|Ej_+O@U;HhL(mFf0iG*;QeC{Rt@Ze?Z z8=z?ebzM?!RxD+`Z%xA>Z2_4ng7EQap6U|&dpk{{M#2N z2`a#|;9=nUB70+l7u8!&0S(t{_tU{cN#TGUdQ^3jj6OoPj2o@ms!vOw4VM_?D9C-6 z>pj7GivFwhIKWZj9%hy7ovEkp!@c*sj& zO9>AF;s?>^xO8!NFwz2nJ2f7iBLGD~RPGtooSCDMhFNsc{9cFWa1KLfYF%Mw_eiq3 zA!*qakt%tR#?ycMHVi{6rt03ws}Y)4QE5qTWq;t^DF0y{1_b&z+uD8`oXK02Xlu}6 zlt5{(4EDguLhNwqJXtF|o{;(0&Fd(WXEFc(%GmnspW)`k0{Dqr{{ZvwonDkv4IcMu3<-=0i? zFk)^{Vf5zI7TNs$i8b_V>XPgG${AKKi(+NlrxpQktBR7xUTl8q(G{Nkn+4e+3`kv` z95;6%uFo{$-JAd@FDdnJ34}2U!fmkEm1801USYEelo?V^f7a;cehs(q2$bwea|n~l zQy6eEe%%fgE^f)~j^;cy&kkpxrias!f{Gj$TCwBxRD+|R5|Hnq6OkrxuOKQ&n4 z%ohng2SQQoi7OI%XCuyYs~#X_MUwkvuc$CBp#%MFSYT<#o!zoXy)y0LAx=kX=M-1y zG7M465}IloY0NNI0ScavT0=gx6;7lDq@CX3hhU7>MvDEf1psd@bA(xL+#^%y4|`_? zraBEm?dFMy=grlWq!m|-uT^s5%9TZPHb$--62I<9OYKWtc%ByE+;B^~$PTI%sbVa` zX9oMVs(G==cIS|oRd-P(CPc%_`iha=8Sb9sPHe>I;sR8|-Co=#qIf}5Ml%vIILDF( z1spFg>d+T2j6X3Qi1P+N>e3vvj|NqlirITl6NBE3JMl?vZ-uoZTG?|^`NmJMHBNjc z{Hqdk9p^1|&9bDOL-AP5%Bjn&AF>=AXKaUq#`+Aga1i?GE-|yC`q> zkPmU+-gJpRg%l0GC|~KQnzX8FUMB<9Ctx|4p_>JT+&s--7gyE1z_G?C7yD3uh)AA+`1rIa} z7v0_Vw?NQHe%pT-t0pb?`dE3WF zni*9FfQY+vJ&}x+(Tx1FiF3o9Evo;%ns(d@cKp?8!x&AxAyj($_ltg%j_#95KyIWS zjH#QFriEEQ4LeTnHbacFcJZUtWi=GN>|s5kc^2Lo`kn6MCv0OQL`<>YFJy~slr1%E6_dA5SwH#Wm;UXz|PVy&9s`R2e5nXKfNCE}R{ zXGuU`^5{VFW%EsNP^mH40~hP*$&g62rM&oGZy(z$SzfvKk+`}`)a%>;FvoWI{pI=I zLX}nC#*V3V`_*{t*w+4ftZRqg^{?8|;kik9`g(E9`dY%HpaGJ~X*oeM*O?H@0WR+PGZf7Fz17&1V;gB%Xl|Kb08 z%G=F}Oa4f{<0lJoT2^gsyPOvxtcHDhwcXcN37=g!m$*-jq_a>5T<(-%XAr@d+uw9c zAN8U|yNX#8@vN_p!v;B{jRbF*#DQQ$z8plswguSc-ba;z{qN~uBOhisFdVDv-|w_l z%6de0dD$l+GxDw)2C6}Lx)E=t5(;R5`X80zf2#3dA`R690B~@@g4an7g}i>-yBStey`~(DZU&yczz_05o;;8 zu$K+UO>VKyN9)?Zd45`K|8;-%;4!hsw0qT~jC*W7#N0Zt!$kdeOOCMLsKaYX#yW(p z!oAySR&yx%m~D$YTAApCf`HYw_T9nFlm5(!m>!Ni@UT`T^=#Zrin@w%%rcPC#DzO|4|3$myeINUZ$|E7_lB_u z_TM{0e)MIkGjJhSO0KWW=#Bd+uOJ-I%LFBSf!rb)Z}^0=)3S2ggL6Xo>o?!hJB|VI z$}@Pqc%>lV6tP z*9SG#)MbZo_Q@k|xeywA7w8mAF!MZ%_AUsu!!8Y9$kKH*w9hFn{{CnJq=1iOis#Rj0cALP z96v;5@q-X`DUETKX2a}{bGZ;3@{x%wZVfCX@t!8Dfl-Id7F33|owhB^G<@>G#|2zTD}!+?^hw1*FG7GBm;tv6)Vz$qZdz?>h`A zr}}UqnugjC9}oJ8+-wR~0TD;qBQ&P?bbskk@^c$)b4frl4b<^vP6z_W1yuO!*w^{q zz%({xPFV{tHs&6O5yC_h^PlgQN|O!|ml%^^Ilj7$v2qD3F}2%lUOs%gT&0Z8p+M*I zidJx#^i&2S7|(PHAr4(HfET3;lhlJ%qp$GfC!YmKs!?&)*P7i?XNLbC1=k0sLf?vW z8rQSE)}noq{B@teAzg=kGg<>=Lbe|c8!v}Ecvc|k>Q4v zMYbq)yg{|Y05Xth)-_ERUrBIzr^2J?HS-{&tCjJSigNl#n1r}pXGbn%OR`Y(0(Svq zV)w>8Z)tb`;Qgi7ZCF^=y@KD-aZ%SLMtU1W&<^NM9@T3-d`5nV<|%M)jGi;}yoogB zAJ7z>2K)B9u^+_%H3tlKBep&OwGrXu08PJ&^}8H#Do+j02xwZdSax?fa%cT}SD0$4 z+ucTEAS2i3&!7MP{Tf`%z|3sp^ZhKGAobD>EZp&GG-eDRNKI#F>%qasWXpdi46Xsp z`tNrx%1kkx@{7yMLUjv9{$e|a2R5o|im~S+Gs|tD+>a2^X6%VY7*TTOL#4m}Q?sC6 z%)DXNT%v=odjFm-y9F|K+I_WhcQ=Q8a{_KQB89U9@6SIsx`Ir7)NHUUU&wPQiABj; z*1i9YWB|TRo47E&Vis-fb17F|d(iEFRFyYL4-gR=)BZEe1W2kRs50pKK0=A@AqG%H z0M{$XcFNry=cO)k#7e~(^k_rvPcM%Wr$ISzBZ$1w@%}ezz(&dB1qeAid}ob-EE}&Q zmg?4()umRg%R`lZrfMA;9D!c5;LKD#zF$3>a9+y)HT%D4eiOln7GxEcRCGzPl3ckU zUoxu1iG1UksG+`LEEtXqd|f7NgAFzlgv$Kqq=rpqgK)kv=VD|wuZTAPa+0H=>ZTop zDa6w%mY0UIzvbtrn>fS1yu%6E>hCT~`vGYE8FGt$VO5J%$4lvO2p@&#JSrA)Qz0Ht zaS3(()wY2@ct2UTp2Eg$XHqJ87n+-5#M7e2UuHXOuU7_~D!(NLL=R1n{)i-`Y>aQz z-~~<5aC7+)cLt6;A6u0N5m${eS`|X6yAPk5q1nmDwAht%o*E*5hM4zaNPg znS-Dq^JW{I3pbZEML~3`M13%2D7gNy&VQur5P&9@u5+Jw?#&4EeqHSwwhIBeL>l;@SNo2e5PB|l+DMqU^drF66A;?zz3G6naP{FtN`vT(Y~s+0f4MdjeZVreN*H$Jjq*&a&14R1Le zpMGt6B0NssNj)opQ&SCDgPQ6!BP^|(KaGBjdj#1~e~+7Ex@wfr)OrS|uYBQ1%*nPj zh~Aq|bP@V`z1eB4z5DJ3??iqj(Mo(P8Z11LuEf)}JVelD)*>oYVw40PEGy?Kc!~z! z$DG_(50lmgvPOy|>gnjN{j;Dgz=S{|YF%)UQEW)Gi)7&R!4J&hZah0^&ah`78C8wo zwh+`}MA~N#H1TI8bt;$s8Ypy*rwBHd;5KcwT}B(^+H*3@KWF3@PTo9s3J@D6^Nn|! z%NYgn6sVU`cCD364wCq!1@M?u0ZPqR9J`}Me+m?(hC&BJ>|2rZnUWV?POS@@BaR;= z2Vx1D$JykzRrZyBZYd+qz1!2(Y&s$dK=0=k9QR#bJzR3APdcdAowO-5k3#7742Uc_ zu0lTf5tIy=M01p{_YHq{!6IXkx+mr`R>Fz*h=O#CDOd>EW`Ytc!j2Yqt=mNyyim{G zy?BFzwC4f-X5dhLd-9%gXnDS5nhi|w8EoK2|AcSLr2kh_*XESzaA{NWHs}xccOW|_ z7iAEwfp$@gP6-E9{^*auP~ZMXc5(SkoOm3*>sj_$B}59RyGAC<7Nk{<8kjoU(y!zB z&&xBk?Z46pY255=xVJ~rF~J|T7zDa<`featf$rP<`K@Wy;f1*$9+KtdPx=b*2e6ilKOWlQw_-!3tsQSeFcf0c^Qnxc7al)eDw&jDZOj{+ zFpVU(+)|mOrb!2~$3NVKBt(@>@J-!R|GoS`i0CPh_E8PUN37;b(I_u7UdZ{o!~#B> zSfxf(o`D(kKiU*;AW&z|{mMcz?9I|w7cZH+y#E5SGJ0@fSZ*zyR|tFcj@zE6pHC76 z7}Xt~zKE5_(Rl}ug+)27O?tQn-HA=>THKY3IcdosU%>?4bsg+|7+VuSoWo!mQAjGz7gDyB3td1)u!F8I-x58h!T<|TXYHP7BEcGT zq7kIi&>a-&&|L!P(H2wd`jFmu48hk^p`TSt5`R8NInX?r0rFT&%M;|-=cHz&j$_Js zbbGdDoc;dT|2fPW@%5T-m7CrvlxG2b_&svCsyOv?ZkK6)btwGEG9RWZ8DZE1DFS~r z5&Tki3Rn=lr$CX?bIyYxfI0Wm_1EUDKO@cxu^3JcClm3e*yeZTi}Y_aC0n8dhe4Qb z#O}#s>*p)C>Pe)xA52D`DxQl0#56~4v&Vz|=P=qlQo zDE!rXSQIFo9%%0e3`QEEhzHoF-NT`j#^ZTDI>}iLk}>ybUw2{R^1&Va75kpRTZDAfO5>QX$qra%_f=_ z9cW(H>nXBE_Psy~CqeQ?N@>i0fz1GQ=Is2Nmb#wK$nFnaSakwjOSV5`xkYU<@<|`T zA3O<(I4)as)k*pvLI%d}F^26`)Q$kQwy3kp6)Pp zh#pY&b-}&+Ioj=?5t185DssALE{*gLV>dR(_XV$mGQea69kFK~bQZI%}H9`Anp1vH1T}38Y zOh<(dZIu&y2~}<4Do@`{x>pWv`{7RNzPDW3^`f@=H6hK)ab`={Bg{0AE(MTaUJd*9 z04uK)?#%8F;^p4IYXqp1lYj9fN-+)oCom8mL2H^ez6B`a4;R*950fZ*EJ}lwa&$e+ zm-Pl&BCGRh-efiW;gm_-AnMO6<#j@9B4})u&`}zD^=r-vjHJ-0G{0uOmf46INV82x zLoIs8i+=%V3DwIXIT25=-`&|~Fd_U!+7GbcLhmSftb*9oW3eeWTPbH;rQsX0I@k5JG-ACL)XbdRK33w*tX!lPR^C<@E zgV(3dQ3RzX3Jb5*04o_JSKeZHE!7#J7NYm=b)x4b_5VixaYV*IuUFqws6&`!o-K+J z%ZI#S=UNs`SXmRCpX^bpr3 zPuoT8KEOk|`-Zfv)ww{0(XM9x*)#Q(RHu>ZfM1lw+x@VzxTg=0pYQ!YyexujB1`UX zuL|u5&Re8{0$zdlM_*Pqoxhm)?k5SWlJsoYTgaGmku%{_OY;<;!<3klb{b~UCJ&yN zYwXK$6g`+3=6x0R-P~r(_2>vh=vog;-K!(s*qhazhETlur!|A5sX{dYN0TRCx=R?C zl$k$3V8A@dJgpP9DV`^g2JJbK;d@*P&fr$ppez-mX~JrcK~$|ikzmD2mBqFqL(&x9 z;=PX%)R=+KFBv+QcG92jf9B}VHRWK?Q-2H1MGX>}18n0OtaMM&+BmS?^U_hvv+rai zqsl~u(mQMTQ=$wuBZK{HI+6X<(Eylw2HtaMogBad`S+F<_oFPT{YGCn`%l zKB^6;yKTVdq zOx9X*A(K?-R}a7Um{}&%8b1{!EedPSNeG#fP&rg*k{6<`+58Yv!;_0L#UJ1^7LXhQ{k{s4KwI=LNP*s6syf-l{H+75q{H&X`aqh zd-DszxYtDd%sFC*R;7$fRG0R88*3| z8G_Y?cR-cxm-d?D0y5jy1&OPEWPglH!iDAjIEF?cs_t}cf!3Kg12}R1_c1K;(w%`E-AzC_ zGc#4`=O_O* zRd76f*#qaOvHUWqUXg!Gb5l@65!-7>AQ>^GYX{bv5Qau&pv+P9C(^}_6&{q6v+?Il zaNzPYotHM@5HBb2q_aWBALM@tXW%(qmWB> zRSG8bihpBvvXt@UC)#_TGi9Ci#;+qy&!Qj~Q4SwZ4!3&ide?Q14m^$rA?UN+V>H{f zl&a&hfX!HtZ-Dg5=_tvIcASJw$Zsx0e?KbBo=>U-_9eFq?gA^OwH%hFOS2jm#>M`q zfyB3TPnUH7;nUF#mxg~w|HBG!3fOUTK6-0bDb`XwIDe8dxgw5fG1_Ci%8Rhh{Nd4h zuNvy%|01L&42lNO1ASpH1$d8cZ^LF@}IaN-2>{#1(nJm}mJ`n*bMm_BLU&};3i-aZo!?S@y zTI06<>Caq3mu)O8UsYOnxI}dx_d<5khVr?LUW`0DugJwt(8tXoAgcx?7NuYnOfc_O zxRzsv5?P8+D1xyj90!>#FmJqZu3mPitM3E^A#)A`Yhu4R5p3eU3(!sUyzH0^W+LzNte^nzu|2CyYL)PTQTSYk5MHa=PPL zAjbHP@PcC={0wOHm`Z7QqkQUlSpwtXibis&L5YF<*>X%)Vky7i1VTaOaNNLem247enn_#hl^r5ZIH<-KE;o_Y9dR9gq3?ydX z5|Zi*7&tcM27@t>4Pbw7D3HtqzS{1dc=L z_f`>Qu$5&9$&I5QBt6=`J@m!9-^aPlty!#RV{8_M|8n00Ij?Vjmc${~ZHkxl{#bpo z51u|?GiLM1^#c}ryY>b>iXX2HBG*d2%!4cE1vL>KOk7d2G*vWR%@P`Vqp$E(dvrsz z6(0?}48$uTM8r>82kV!y1sU(C$7wvfq8x_S@>^4tbeE{_Z)$nMQF@f_#6`SU2#E}C zHOTUoVY-c8vH1qL|HsER#^<5;e}66se_Nf7USVzi3vAOKDjOHhTc5KNar*=bv1;(Brg|zq)AM`>y+5XLv@;UdH6jR=I3ek|vE_yF5!g z(yq#QA=AF~z`h{)xo@w1L3X*R9U5K-;Ag}baXQ4AsEjsyhyOS3B`W{A^>%&eknrJ~ z0M~|Tj&~3}=>Bb#Bb1w~Q;!7Ooli_Z?41e+=HOWsf;ht+boW%--CKRnicIP9F;gWms$im1p!))i<0Kv0OZ(DYpG ztA1Tv;-@{EJl>OZ;>@*z(|o@8RAoMQsTL1d71a+ECwa$(vKbm(kCvJXqDmybsfO}` z3OJYs2mqCgSun<^GZgkPGez1M&=AJKbD__a*ke_v;Ec>tS-j}?lwL~Fb#YIh!-27* zePCc)>m&V(3*M;~4Vo{+Ir$?a*<|T1_R46~b1qM0Zym6eb)xl_;E_w+7FiNS!Cl_Y zH&+3em;NA3Ik+D|Bmz$@o`&d>xPN+LK8WcHatz+jRdA}kmaq8L5e;XD>2QCJTvL3D zOZtY7V5AweE^_|hn(UeXrlHgdb2b$Z~S5510sR0pBwG&j^ifCRFk#0qTVP{4Lx`gC%teZ0>5!N42ii*KghBC*6sNacpE`f0 zFfv^KDbRrFgXRusN47V|`gupy_^SS`5;IR(2HlJYCv86-^HAPWDjUPCBq*47T9wGqi6X^1$M@g3QF8D5`NJse5{^d6 zAa;8vPMp56k3+B2j2ICTACE!Wf6^#M1{a0v6|FUBiEc^wFA^;6sADJfBpCZ& zg>B4fT^ONlTNbd+BMAqZUnYa8Dtz)SwW=nZ;h8asStc#B(Nc`t3HxFo`?A@*>|zpcP>!eu2p zGaEhy+0vH=eFKYKTT0djHR$I_rc!CO@dYfdhbhjGGazi(wQwrvyooA1<7I8}y<R$mxs7`Vcr(C(+MK{wjkI|f7tsZlEwR`SY z8(|D=+N50Jx|)dhIZS%~f6iz=6ILdiRCprOd`4K#7W}N3X4?<lM@8PL#2 z*AC5ekc}FM5XnummDG}xtxe`mUH2ExC6}#-?ejAvC8Z{~LtE+54LuV%fRNXK=5DN>PMdK67Svk zIH`?GJby%f7e)<>*B6)Lhbv=-Mu?WVH+{Cs@Lzg-_8ZE@ZtTRx)=8{x57nbtu&T1C z$gdHg+p3o)#!wOEueGu3n}NgI(N}x0Vw0{Ll}~~)4D>!+dV>#Y+0;r4QESL)r#aPS zR^swG6Vq7}eBjIBw2t2~X9ze9L|@B|o-T6v*`bczUHN+MQzp2pw} z+58fqOw78&A!3Z^VCmvx2xCja<&-`!c%SqWuAaN?pjT#LC5BavSkj1!Ab3liZ%d;Q z5EzWvGEXtaK}r&{D@m155ml;Ar@!&{U>+?7Eea|I)DJYt(v!x--t=ijA5;w5M+rZ7 zl-S-sI*%cX-^pR3)$;e-p}{y!<&$6mvKm|B1$gbk=o{_v8@&7e@()XrlF5sNS5@Uz zs~IkTZcnqwwv^LFMt}6@qtx>3W@MjtD4l#(47j0rN6AfXyRt7F_2H$P+efR^ld(sF zJw2?fcIjl;*MRu#K6z*^K5?_tBw6;G&?ULbgZv$p-^#ZG};NG*tC0x(FL=vZQ z79cb1`pj6>vG>jK2qQwpK@H%wsuUG+dT)0_Q*1<|MU?t#I2DRSuwL-{jLjdpFJ08XGaddYX$BEI#CC_K^g>+`- zG&h8;;EP~LNDZ6X*Pj?C+qLqe!x*!!tSok|3M!p_$jM*h%0OqBM!1s*MJr_UtfT@1 z7S_{>!m67nY6w0#ds-b9l=_R}zX?p_M=~i2C$&_~M25j?1e#twl0kfQFlA@}fuft{ z%KfC!$jhEH@>{gk{K&{9!iuItlf(GN1E}6cA*Qn|WO8E;Qz5-}gdZR_f|UG0CSz+u zg$pxYiYcjLDz-|<3R(z=uqrZG9*RY>o4k8o5&=>$I?i3yBF|P=FUBi!w0MD!JbOMt z&iTQ9%;5nxxf7!c_RuePvuqiF0-L*pxZFq7s~lN0>0iLe?>Zh=4Pa9XDE5#F&W*(G z01mh9SnyxGaV>2{CGDs@-jmL#ACe;J^u$#5!_xZS?VG{;$sBIJP7Aiv9pBj0t#F!2O6WOGE)>S1DIeFo=9K_+ zZ;-;7x9Q3eBx#+t#yYgw0!{@HRMFf3KgiAZMk7Ah@F_3ahiHWu8+En>F+%9wMcoYYd|`%`d{pkZ;4EZpWcY&7A&UlD#pY!HanCVP!N zL0N85shC!`@x{`=jNfWf^j7{mSw7TF%c_XvS5m@jGgWS>AY9h3J0#}4p{i4q z>wK$Nak5#L55~Ltz{%h=BiP~SIY~fz8d!e2H*4ROyjyP$(8CN6vs{*YGY;5lfNqw- z@FHef)ln#{HZ-ta`*f==$9^$$^g|dBlq-cNWy3K`adTx;2H3_Ub*g{1^Mt6_4Z|we zNaZ`C+2HLas&!;!4hOnis6`<2E$ep$Q_D9eZ^&?bHMr)T!0_*Two*IXS_}DtMhnK7 zxJepmq)iUnzm9wh*uR{a2(VV)i#ll>@7;49(ByWdcq8dcZ^#3PkbsnMmV(Hkilnn739xjb?5FK1!K+;9LU1_*dfjHZ2NHl zkCZRJu8v6QAi~o&6C#3#3kZbNph$=T&~Wcaop^RJhU}wQ^ICmXOSV|0uTiJ^2wjY? zPP7(Nv$_}Ys2ZY~anP8;}929uaRRdBXDLxS$)+ZQOYGW67 zjI#)jKR!OIMK{#w#8OVNGmsFd$2|B|QeFwE4`)dhY2 zK`4uh?73}{>4V!p_c+MZ;^+8TU%IY)lmf8HemF3&gyYt#@ViIfTUKzwYK#Ur0WmCd zBYvem>q8M6kem@bZ>2(n@p9WTvXsDmvLvwFfs zSB0;;@o1O12F1(`6g!FBT(>$rPt(}~*kJ-=t)$Rn&#*P}5KORREj zR#7g_d3)pM(#HJkZF6gXXM z-1Xwl5fb^2VN z&&PLN_Iw6e9tQneaEQzB0A@Wg>D&K}Tmj*r6h77J6vCKxX1EbYBeZC~O0}7}4n)hD zB=KkGte=2chn&%)_~O3sgk6)cM$SaII;@stowFu)v9~vb7+C-Yy6y#K3&gN#OxxUAzrF)d49DZ&Eu7f#M(w z1)0Cgo*+piE@bM4;ryiZWJyZJ!ayyorEqw(O_%9;)EW#@3w4IS%5ToqB!Q z--wgwGfd((8&t%2MsUx})`2cK?tCa~Fr3^7c>5Lmz=gamZa%}VOI8s&VS(iDGe`@} z!AJ`rv{OK}X!w#$VW7o3ZzxoiUV^+3bVYzje2W}ARk?pEr%9fAZq4ZHY$JxPO7k|K z5G6-Ka+XsRMaM>$r zRq+yT72rXwmObzF1eWj_^j2XfUe3E&O+dp(CRcn{r35euO{fMerG$Nk(_Jh4;A57hY^|(UY^1_6#u#BXUk(;3hvRYa z2PJJhpo~;jqbnVkezlB?V^@&M&f>Ae%j*%`6yj_ef7Nus%HK5iOiHi~N)?ItvaMp6 z<&W?d)!TDv6&%H>B5NO>;_i@{(GrWcH<to36a2GezQ3kORI#R;p}lxCb+f|ZLsnzwBuZ^6tG z4r`(k(`?+|EE6N%t}@+nP;3;5lWHh(q{ODEA(?gT#jU7S@V@-V8|W(jq=d0sk1{x< zbX|ioVRaW@*G%d^djhI*lE}!&j^$-ur)doV%-3<+K=ipUsTtj%NtFcksw!(Lkq#Zq z_}V;NwGpak;QYZupo04FD4yuWU}WU>CgHQHimFNpx~G_*8cq^BYHYU|?&yRxMlrp+ zVuSG$%b$zOJGA?Me3$J@kajcCFj%%4B@n+wNJA?K5*}h+eD)U>h&#b{G6_YFhqs zk|Ypf;+JUjwd3JCX$&}8>N4yj8>gVJP-gTx8-?rs_+Z<;)$lI9PyGfZOjQ7rWG1g_ z8Re5d$?*K9fa%{QLG4&z&{K>GVG(rF9eB*@Ywx(yO3BIugQ`Y1S$dMV(nzh>WTHop z0!N0b{D~jt21~EctD=!Ztsq8QjFmAxB`0owIpQ6enk?79r$uB~y_^lMA7G5V6?Vd_ zaKSve4_{%b%7n#MoS8VR^(GTn-F9V*Tm}d>%F< zl^c++7B8^POe`WSGuKkwj|Kpg!+8j=vvm?{h!SZULJui4!1yz}^p)hbxM)fhL(Ds* zIm}!a)$vf2=AJM0te;5j9a(;*@Dg<$hNk(Cd&k_5EXS1&sTPmLA1mCNN?I;I25SUS z4$lR%MKVQ2I8=-pLiqANV_rI?wr-vOkeAK;6Huu}PpT0edd=SzEdYmA34& zczQZ17HQPkeumf`apiUT8f-b>6vu&I&hJx<9+}gDZmv3Yoxa44)k5gg06?vWX!J`XOJn6}(N5RT5p59Eu%G?}Ym z;1H8#I+1I`l?k{PKm0?kWRcr9Xc~C6pXr2a0Yto24Ry6go1CzLOORY?c^-lr!DMKc(=AX`lnZ!*BYsbCz(Y~<`j9G`sC0TIxI z^jYJRyaM&W$lWmF=p<2{`~BbxzPHLJ{mgZpSB4m^ zNxxUJEE;fdco9a1yL1l_!63c*NkAyzi_20^`o?Xkb4miXlK3j{i>0NEO`ns@(j>~D&=x>l)q+%< zXWJFN>i@#;3~PPd0wc&OxM}JPy9fcbFt~vQ^YG&#w7-t7FSwq<3i%#xLS?Qm{{JEN z%@BU;VxsotOX}Bv=G1}URO(y7T0M~tUGmoYpE(3+;4Mh3Z9d}Js_X2)cijfj@U4`F zpL%K$#{Oxk3RR+WomXlhAnf?Rv%>1T9koexxB6c}Iw)Gak6_&NrA;$>>jls6V6ni9rl zzTd687^P@GHR&tXO#OG|Z;S4e&U5ESB{WkBEcC>Un^DR@uTSkVa9~|&Gbo$#(s5WC zmo~GI|NHYj-?iIx=y!c*6HSFKAaa#!Ur?MJd%h8+F7oRux(zp~T_Q@2xi{y9lok1A zt8^gLi}1A{onKFQwk|2Xp0c-W%|3C@vYG4Ilq-i%xEsd^4lJpt6SnGxDqQ~cb)s#M z-p>3R%e8j25M$=&X|2olh1&b>jIq@|d*nV3bY&d-0|NXOAvci$}bJGXbf1HEd_k@;g(*_E+4vFT*Z2!IOVa_Nh z5gjfMje>O`*y;xqm%RK;BaUh&$~bPl+LzRW6z&)Rzd7@_Sf7~bc7SkYsI%auLBO0Fsjd(^PV9G6bACSnn5l>u0QsV(I z46X{9oWy>g_(ZAOW+d!lVOWKbrLMk4pZ3ZYR<^~!6#75HlN`z35 z9yUsAl%Va>z;#4#B{NK%6EfS{+c^;YZN9;FwsoaZldycB{$Tvin${k-Ach&-&xGdC z%=t{Cu_&a)je)*7VYVz{vwpvSF=+jsup(ug)bEN@E1aa^SMG?8X-TMh<b3kybsm)T(5TZk|7QDD`yrLz%2MbvmWwGxzl_rFT| z?Dx^IFE~Ccj}toeE36AlVqoAzNH901@3IE!eku|~)BULa@Vxw{oy*(l&V**mKlkJK zpL{fcpmv!|(+cRz^p+-l15y7RNlTk;bYRk+upqycJ9X^h=Jx9J#a3@eUT3PpfH%AJw80q`Vl#0|G|8uh9wuuRiPoD?||4nEFNK^oO?c?T#j^(9aNBf7& zxeg-9vv&9~X8vIIHb zAOBi7{Uf$wruohcmhh-m&KjK=rWO>w9_MGCr;CxH>x9GQ)&U9$#!s=>j zV_AXTPGlqwh>4}4r$0<{oRh3IuQ2r`mm9boF-Xyd!2_xVkQI;E?2uZZlbbi4fnvPA z57DJ5SQ3SakFu@1OnWUkZqD$6i1pPAFmhjuBwL;N`W?Ab5R=Hy{K*0(+;Y$eu45Z? zzaqd=5X?wX?BvJFDh7BJ5jKow();gUM@Vp{x+mg7d1^tnGC}0kv1G_KozzsJ+7H5J z&LJy*8@a*AQyPvQ8olrNrD2fh46;?w*hBia^YzdV$$HRe?sys!nI4sxO@bidRYM^B z*8Pz}MF$it&5$%BIT5`*)l#%8&0Q+{KO@JCb7~RDJ&Cv3$4tE^=_wxZV*~Y&a4j|l zc4o~#?~tsVDXinH#~=R&0CnxC1xONT)-k8Rg-)tNPmjV7SE`{Udi~%1jpyBsFxt1OJnv6?Dm4v{ z@QpLimnS^JmsV%8KxxqDXv%5VSuboD!S84do`CnWC!C*JY7~R2@(`tO0PQQGRUKz9 zYUt+MzOHxTnAhZXn;z8oDIfyxN+`B;h98f`~pr)y7aVj||`?i;i|NRcQ6vi)vQ zlnX<1ko%1#YpiW+uv>gFaQH|de?_1lB>k!q2!j=KQGJ;i8S)cUHI=4u66Uur*ZvkC znIX$JXU{5epwdCjon~GU(UpE-sY97BM&%LrVoGp%58C(bQC0Kz|840e*!3PXIsO^|#k~~_)5LpN zn@Z_G{^fR|w;bl|=JY&cLHBj~ZKS*Tg6KtGQoR#s+O>C>{V}iE1LU~InFDuSveFi9 zW|o%ZP0b8L%5Z~i&Doj}8X1stFRz$`#^s}q*2e3pk#mNX=0Gb453;@6ykE(&&)gRD z8j=n?T>2iMZcc4(&GS+}ztv}=rt%uaE1Vnv+hMh}h)cHHouk92)V;)9Kt>sBG|Yg% zN-};B9QVziA8!0A9u->rky@BoUmG^McFZnY%K96cvR*tmioIcx6}@50CljFq3>C3O zwPNGD)=(08<;9l?{5q^@(G;hYT4Q-)LNG)hIfM`cnKBZ|8sN10Q2;^#_R|7;V}POX z7}27!rJD~GOjp0O&|cFz=CI)GO4sq}c^nKs{QRv~BZ$>=&qDMal0vW_4h34_z(ZUK zKc6hG2%YvImBEVUf|_-|?zwmO?F%?I-t&O)q`in54pvg&YC99@)Dpt4L5;(%=zfP$;C z(Z0*JFyJIc6+D7zM7(#?YG?(T&^l|a4UH)rYyg}|-p+P`ESVJ{dW{lht`W}8m_wvH zCo=c3$?3gQ?sF&l>6IWILF+!z%D43Jl2<9e)zS{M5}KifIGlXTcH+>XwgO`Ra9t_K z?TG2XamTjqOx9}lJiqZjHQ2W=J3m`T^u-3Z5Cgo&QhB1{z_SfJhpRyxtuS<4oK4x} zvavcJKBr$?*1vnGH5w-qD-dvZVFl7>a~+__FU6$*EqpX!!Qgk%b5i zEj_d8zNbL670nm968V*&Lhbx{HCWk|XWLuKGf%I6x4-Hf$T%co2{5#69jBQ}-)&_+J6f5#q>Qv`B|!ItI|lSP26*$dmoe&V z*PxJ(VUQ4zkfh%+77zy-sq|l4V<(67m87ex&R_s>OMYZ`_t;`h2N()v{Lz=Bk)_NE z;q3hthTffH{K<8sXbH)s4gCOD?`98Qg!Q(E_k(ntn?eIeK2$9ap+&KzM1_U2FLhk` zS#M9IG6_yD#xCkt2UpKbjAynrzltrKB4YyGb^%gWV^gG|Vef&1<$$Cl7RDJ=4rYc$ zzsT#;$$iDe^~M~^I;W)IMoGhYD@3WcluVqe*w@1E6Q@*hOc~mg;Z|z$HbliZyk;iL zEII?J@`kR^zad;@AL^z z3Vto&CkGZnl|)7YRLIyJpK8U-*{IOLe22kCg-6vlInfEUQ{d#m;y#8UKn9C`cAfwp=Q!a?J0&Ba;c}^ zdO3~FcTlE$aioP9QCC#*gyqlP6nrY$js^F6?JrH#!;X@R=zOg;h&YMB$;tW$*gvtG zYt$OBZJR64C!iL4CE&+hOH3rbCg24kE=?&j%v^OHj${jH$l7frIq(IncW09M5c=hS zEBj`H;WNJ-6VX|RKkS9h4YV9&Q4rz1jKF!*vB)x%Wl1znG(1@aUYKex3Z8ax3lg0w zFRAWad%p(RH=tz4f~9)z9{Wqou^$V})i_XxmCpAhL9K?Q`$q4OA@H8)BA_Bo9>qqdH&(9D*CON{@~?&B zD_vgdC{l~}2|m&KDBe;?lzI({Om(b^(jdd2RrEkah2DQ~P;b$!KMF}h?uUKbO#7w! zztI^x@$zGDZQa8QfLU&1fenj*QN@5PtBa@@=;MfpS|yiIj)Qb~6%us1bMU~ZT++Qy zaVkT}v3@#uK_YaV6rtfp?eOj(+2U#D5*frVBQBz64HZ-lr%iR)2aT@)tO+1m99K*q zt_FIDj9>VbTC*&pKQ6uZyeka28>+`Fk8r8FV?Z%-I;-jEghA5~|GS~1cvP>pDk;W4 zf;mqIFEV=s7)0{9;&hQ@Z6G_~xw69w+pJ>}iD%9%^@qoa0hQt}H7qFkGxHzq)<5}> zl}D!W#@3y5iL1bXGzMr~J1(_JZ@h|8Ue141G(`Hi^brG|1~J+kyr~$_N%`KWui#_0^mb2TS9Mq;;I%4wGUj#h z^uet9IJg?-c&;HMv8gJwhQ=prBvCri?q&RQNs34+Q`7#~*nv{@f%VhMB|PngtT^FF zhyKRK*5Gfya4h#R0Ly*>=JPfrmoW=s1G3UU4X4bnTWTr38`)!W1J&k2+=n;iD+H4u z%|O^k$NU{~qArq=iKnq_EuYl8Ap2&2Z;$2^VJ6Vrq`QE&`_c>L1f%v#nmZoD%x(KK zzRY?ccr^tuaQ+9=j!xI*$ZzkOmVd5TSIM_d0%cLwzEwtAq z8(_`)=0kG)KMYGR(X#VmIAkFtP_X*s2HtV_MT>FT?jO-V0a23fKf{q@rQYUmQ>1Qk z-pX3XT-?ym(!RU9yCWJ*{ra;#I#r>8yWB25K4Jff_uq|Sfu(n{YdE;sZ-b1`d$cQl(mc+}DCzj+aY#nWmw$WZ1 zO)-B#I~Nfyy<0Y`4lg8K0W1&heV?05yE-5KRitYXXPC=l4Ean~NbXU7s>+M!N27cU zU49pjLi1jZi?Pn#Y04<#32+0vlj;QGbm12Y{Uk?SnVLBX48KC3S@QSK0f}KPwv^qC zDHbesxwOOOH|^1$*P)jgwV@AUr+;4NLjlcpLB-S4-@c)eWQA3>IJS);81$tQ7aIK} zZ)Ob|Tk%8nWq3#>BXB8q<55wXTM2>kKAzDxv{!5h{f766rYTI$SW;3f{qRWh;@|7G zwgLe)=5n=!^X@sglUuUL{hPM?=mpYTP$jFs9e?^O6g{90Z;vdNcRvLSzmbc^R->Xi zJsZUHGUAASY>#R z`}k1o_6w8OIancO6T^QwWuXagC8KD~64Zo(n5cF2Wszvs&S3IFS-lr;a$kT?Ce)HHf;dZC)xJm8%O+W?sm{7U zyxfSO{k#QGm9DpFxwRMTSumik<&mn#q$<+D874?IWPK2RORW|Ra=m`lB~uJ-z%NZV zR2!^(`c_6yzr!3oPWBul-RgM|3B(hPl=`!3hxosSFDinuskp6>(ELIpIacSvEQ3K& z!Ewf59a0UoSGi6|gIZY}6=M!HiYFLcnc)uLSBs8(9&7JN3dxW2Ih+{X)0{m6T0#vC zC4r-_tC>7M{yQXdw0>q!2DS1eJvNmxIR*W8oz<;%X3W5*9@_SeWp!(i2z&bNwTA1Tf#5a)mVYjD*mR2fTaq0Hzgvv>p zi+EhroY?b%V2OF-7-;4QCf)dNS0bBGS1m^!KU~b}*?;MhNJ3KAXzLDsdL;~*6E9sU zGCAA28Nw0wtQ0s(xYX3oK9uUE$DXd6)lT!OD@`elr+w@HdcI%HP@y~Bp@Ery?I8(_ zPon#SnI0U|dnv_*yK}Kd4|ZfCk2z41@A1W8JW~c`M%=N!3nr4wj!}4I7?Lk`7+7RA zt32Lnk|Wo$<7>lnm6n7(4+%fNx}_$d)A-F}3?aHlj$n~gBupeE3}Eb4NyU%`n#+T- z%vJdZHOa?mXcSPYI#b)h(XID9W!@qO1eOvA{KC*7+miCV9-V49?{`Z#4!{tjhJ+(ir+3IcBo2>`_ zP4eZy!2>bEc;@$}AS|F(UmLii3v{e@XBApF5M*w#=-TouEzt4JtB>zqn?7ayw$MP`|NcCG7BH0{xqZsP*pEM%NLZ{jiUT*=MiD;YG}lw8O{vNy zm5`eFz*-bIM_?;R0z?z4$E3l`?yTV11B20V=5Blpl#r9hfK`ti2L~!^uEHh+PUMu; zH7HKdBa11o_x{nU*n_co=LtG{_JlNVq*L}WW?!TL>PZs}@=y>D1}$Ns3`n2pv%`U0 zszUisUZ4w0BPby(WQ}o~w0s0rflkPH!zo{^N79BkwTJdkl@`^cTM>Jh-&(pQ@Q@u? z45iq8;hb#^2$e0N_&j`(*jaYJwFvQ?;ITGN~Wm`{}nu)&(z>5)GnT4e1%!9mY`3&4p6tr z@a+)DUUMZqM9`fLoyUt_vKXD8pwe}gtu&>Ef6eFN`v`ve{>7;dH4DHl7=o@g2fOZ; zG&`?%yZ_|=3c4ZpJ?p2q0KT4SeEnkx#`%xAQ|W{l#^cMvZl1RL<@F!CNiDroKb@rg zJg;wCei$Z}Z$a1A1_v!fFty-)jPu)o6NRjMq6O3VIC8q*(V>5E=^avsjV@;{|Gre- z5NJ|+$%U{$WuM?`yKJ9H-Tu<&27EJ-r4Tq2t1;a$nujdB(3}W$doI>UnxTaUtZX$I zjyXk&Ai60oKoi9#>-rOppWuH_EgglYG{Prsyma5eyhK>wD6dB;u~A|v*m8+1IWP{h zLXeqePZ2A=Wa$zr0hXGaUU>FDK zVrcgVk<3uc6fRrXu=A7V`aI?>Vb%y)g%HZa$?4#XMIe0_JWH#s&pE4@XLk?U@UWE! zv31h2mXCl=3TL+QON!Z`(|$vUZIV=-#Fj{LlsQi@CMG;)&aUN1qcmY-JdO1M8#r2w zQ=kL@%n&G7sb+=czdC&C#f!&4_#`w?Rf~-+spyOFFq=BbE~_dT4>JZOtHt%DMtaDa z?kfb)Xr@XLv=SZm?C~=2*DgHUH#QdQi?c{F5^_GkzH#kuIaXSpVn-~K*nAuCT(5R7 z7pW=xJ!UAbSOboCmMEeoXq-wp$;Vh%tmBM;J7W~6huBp996G2*Xv)GBumLhSl}{i~ zfcVUP#8dq4CuEu~*ceMGe~pJf*f0gIKwJHVL8FD?!c4wE$S=R{5;f!UuU-p2e>byr zy9n}GS~Fd#z?jK_6nRS1k^Jr*noqM{-y^j^+ixud*+Rm$7>BWt>IdzGGdVPN`S3JD z0;_}=KV#;Wvlg#R4L-tR6DJ{&rlv0;tA8P(r-HvybgN7mXlW_++)DqlwR;|Xl(|_b zaawtaUi`ry`Z9G*z=g&;uT)1$y67k2@pB4X)aR6IFL7gBOr@=Ym1D%w$5p5ru%>+f zx=JI>3P(E+p`^pJP=NVPr=kT?X0|R&-)1!wdP*hMK+N{KpFW7SzoIAqJRz)@nTE@c zdspSNGo1KyfOP12@%7 zGTV@GQdrEo`bdx{%b;+?Qxfqs>jug(h(-G}f0OT&6-$S}70aih!R_7V%UACYc;?-+v?91!gX`{XIWm zFUw?A^pLW;mMZ-?TJ@x6s@7wGg-9FL3gKL(;5k|c?64gs#4?vkg}i}#G+O;G3sZ?$ zme7y|AG||Idf2Msbw!19gLc*OJuF!E35dJO1&*q%#K_`fGd7HYF>t2DQG4?6r8l zQr0fkR;!t2z(!+83$M7JX_ah4H*oY==VfTIwYB##+}JuF6T?%0G@{(*aT*a&2N?z$ zF3wOQM&P58r;Ko5-Ijz`QGZK?d{t*a_?^5t0km2gAxib`ng9j|cVXk@cEn zpPDv)T*Xey7(SE*EbpE|6BWsVK@0cs%#f>PON0Ia_{Q0v3$c!;7$fN>(ck@=a<_51 z<%rp}bRFvhru|{iV@U0TXhRxraj+HIN{daRi8XH)$QjOx^;B9zlDZdTPmFl;zzT26 zAe?oPc|YuUK7$C+Z3^ZBP4jK5McdG_Mi2brLq?naK7>UXUoa?@NvjB3OHm0%6tC>} zkht$y;=Qt9>>0UKv-;E7IgB&1PwT=?tYHWYoA0(g` z>%;swe{nJ44EDTWc?F7WM45xF>|87-6mj&qK5=oCi8_|AGStl=l4e&LmaO8OUENkM?Ux|M^zju~WpJQH_0jdB5T;uKRO>EdCP< zrQZ5B6bQd9{>aK$NZL{zi%g&9Hyu{L{L6GTDCH+2@wV^V;>15sua6}_HA>bvP(`2F z4a;3w84r=mg&_;ZYv{c~z?f&MdWNsj)@h?rh0ItG^ zj`^~WSK9U(avCHQ0^I8k(AHY2&m#VtQ+Ip1QAK;>&aOnlkiOaq-H0 z|MNRtRY`^C1|r@r$Ojzv_kNQJ`Zq4>6m)bUeKo8}Uz^5oxck2~-0fP7UppS74_2pt z^jmDL$S|L1{Zx8}Ug_&wH{!3H%n>(N8_7ED-zoTFwUGi9a#wgX5V}vVK+JH>+ybpU zGH}WugXA4?hn&T~8y0D{MyPl5&z3q5Ux`7;T6ag6OkY@#^XIoY#7iGPws~`Xb1Ff>0|%gPF+MHuY=dlL5e?XP$5Z;2Vlc)zI_HcXos6U zr!NqvsuSX6_b*YCttBlpH)4yA5YJ5-49kZy%dZIm_~r0RgR=t0fR-4mm1n8G{x(#9 z754FJ=SFhn&q^EEgtu_Eb_xY!dZvrCK&urg7pIbJs|v4&gTjPM5&cEGysDT)4GfeW zW~b`Pe&X}8m6aj=k}WU@=pBKo9^Aab5zhszcvK^-DbC5>AhHqS{}EzX4z8OXVRm7< z0!`#6rut3B!cq9O1yqlDWxQojAMXTTb_k?mZG#n^hQ8OJ*?CiIo`%~a5)^$gdO%xYrL?2&@bP5x1AeTFv zt^M!oMa;X|l3bI*fD7_YFTvN2>vc^|-%RD+k=204DBy4pv)T|)4a)rZ`Sv4N!g-_B zoED^Lc=xP?r%0WK*Z|^%W9ExiBu4L^We+#^>9AvwJx^AIaktasff&i~w7D_PL-g^9 z<51=;faRo}@~W4arc7mWpfhj+N-N(|T~w9gf5ok6Qk4pLAY3Gfbis}@11ws32_CNt z@&&0NvtC}V>rB)e%DoC@!2`$&Di<`bzV7B==*d=5O;<9*b1lfPWu;7&2HH}jTd&E{ zmUe-D{2XY?E(2zsTU-1N&7BDrh-8kzxR-=m>9xX2@|G)<3ben>j}Q~JO{{hp_9iDE zk7pJpzfv)Wnw={$eLq@3{@@zI)gVDA)JG8`HxzHoNzS*Yn8sM25jNql%z8` z-ejyj+D$a)E!OO9apzBFjluXUsiZRU2vp-+B?Vg&F5_ui;mUCKa=A0P_`8$WV4%!N z7K8t}BYF!WIqymJHTr=ID9&@z)&lhq&kF!tQKQ00uSns#Nr24=Kr4u@v`7Ex)cY{# z64$%l*v88Mv!otUmxTvUXY-#Qq@{e4&Gq=@SYH&Tm&ujwGRh#8KQ#pH5_$XdeKfJh zM@Jy43F^i4RU*irET$sh*ni&5CfS^xK%zYbME$|Z+(12%!Sh0%P!R5u0*e+x#aAvR zgB`1`<%@Gni|0TO^H3_#r|GIy4KxGNIF^iWexPPcLG=5ux7~;bc;|+S)v~6y5`;P> zC?e(Gk?|`3jnbfc>#`4+ub9VcQWBqp{&1jvOZ=e#7+N(NS|b<&=7F9usP(}B78o$uol`VQ! z@!XEOpB&%!LUjiJIDAx|3HJ07s8Rnm(a8Ty&b-fekG$UJ&jjyl)d-!}LbE&UxxYCo zgPz4RsJ-mi+OqcZYm?44KO7OF?!h>Z0d7nPC!G8Bad$$GV^dQT``F&b)oGokbj#_^ z|5`6|rBNIP-*OV4{4Ud7BlP}vJm}?P(fQFd=Mcg6Rm{Qk6;u;Tq-yNrk)nqD54_RJi)bFXzYvCb_0rbiV z{;ktLqQ?_}CxW#c@xDxh+iWIL+Y;Q%DSo&f^z?|wZ`C2jQ5&l8mho@(OE=JWfrD)@ z%qDj5Ne8}p)G?a7__X##LB__!tRU7DH z+jI>Qq;hnW3th0M(tXa^DM`%ryka*(NS{?R(kT%e3V6LW!ed*@1^IUGAWks=vXM_c z;`C`|5o&`cDOD|e)W8>q2mc%6TkehQc5b{E*GN{m_o)grPYoJz+xbg#(pX#M^Pwto zX@9kuaL+DqF)O*2w4Wek!+HWveB|UDWc5!m7%RVu-SYXLOusI4=gCmaUR`eVK?%;x zp}9k#k=;J_nP?hZnWT2xpkQ~4U@iPZ+;ROrc~_4_LPul+-y+{T29sL-NZ)wgJ{b59 zHD4%3k>{9`+Q;SZ6^ZMPqvFQ3D7CEjqxp)qdwudTC16*0gfwGtTlPO*df0pT*Yt2K zb3gdvDeSz1;^E@q&%@2s(yvd4L4-ip52Ij;Ggqk`O+Bf6h1bKG>HY1u2X@ZLz>{g2 zJKdmvPL}^U!R*B5BY)FdOA!c;+2BE4Di-@S$tDbWQ&m<9d_qr?c$JJUJO9PBK7|_p zzP>okeYjPYxpxtxCc8Thy7?vTcmH!{M6?I^?o93O3j6<>c>HygH4i`Ip(qb=`c?;> znWis4#nGer6yrUjwJA}@L4X$22v;(iJ&dL9E$vG8`Z!(b{=J(CZLfW@Zy5iy|5d^i zOh}IxdsI>LwL^S9YX}P~A%W}b^-h101zS{`17K7iz;8Fg*B#X=m~}3B)oCSvzo8%K717QGcRqYas7)yYVBy%G0-9$TrNbYU+P3l| zt&}w3>R+JZHz`bqixI`gE3>nUeWl!8x;Px(#U|j955d(~F2v=Qi;AMMb!00EDIlsr zc;8aWDJl3Pj$gsC#qjM5ro06{_$D@^K5!GCBxnK8yfsjW7Pp5VAOeUb)vqE+A)k3f zVtecqLSWBdytwi61LDF%nRiIP4idQUxo_z&zKfgM{F^A6S19ut;l8Bb8wx#NC-I+! zM@BLq-xCz;lxf@uFYO{mHDn#Ir2WLU-?P7>#fTem7a4x}?yZ;o{;z3*-P}S-A%I%I z%76xZnp;`oeEuv0p8OKl^q%Rj;W)IAsDBg%ZAfwusjZMm`6NnSphJuXz_^&#Tx1-0DTj3`|Jjpk(ojEeLaE>9yn}Y)w;Sf3Wcn-~Uo=wU7 zm~@H6LQ}DAyz7N508H4+X_+OBSou<@)|WUFZGzoynXu{hXN0YsYbZeeXwLFpMS4)v z6{8lLID?%B76a5;@)!`{-nE9=W&gML*no1o9cD#P34(*dUG=FTt3%HCn>bM96?Ber zG!H-Rzt4+kkS@2H6iOU za_5!!oj5L3I~^36?0NT!TM_u&lWV>sa%7uCP^HF%TaRJ(pJIMQYXWtn9PTv;^P?^p zDL&d!Cp2(^g~?ayk-93e>;*Ek-M8$oPJW$t>)rXxk<&V8Ocx)`E06`? zRb21<{xiI^)oSqBOJ&5+M`|BA7fWXl#>I&UNG^AEh5nf=L*7L>lENetxHa_G$3$r~mye z0PtNakEF_(oE>ENwMq%Gli&4RbN|3XY!j1u4oOEVlD zX%f9CQKqfk-5RIEleS7shpQH00$!9Ac@?#lhgpV`!^$CLFnghs z27|bKfFPUHTqm6NzKqmo$~h7@agu>tpwN+`j_tL8{_N-py(-YMV1AQa7lPSw2gW8S zun*>`DO=Muvr=U~`JKF^N3sOtQCq! zFNh9p4AxqlAEO0fF`#wT#BXIyCrPX-+qy}AWvt!@Dd&MXX03o9WZ#2U^6ZxJG58A& zc}F)~pXLF`jUE;ZOFyjrB@>AjN?^JQ$ckClCcO^#;8q{}8Bw3oT~X_)e1pB#%him^ z=ba8R$-{`y%5B_T0IgojmLCTDeNPTA9%A_O7b>m^T>K=jM|M@K_E>VC;$ng_4dADHy_ibL9U1KKFM2qf(@@GU>-%>R?P-mC2OUc37LRmj*MI zRmS`J2`U)SKURb|1^j<=G_7wqqx|pIh-v40g1_j6?H3LG2W-rocfst#QvCEf*6^vn z1{~FE7nL}7r1DZ3e<@s_VtnbG;tDWr(|DGBXwXWzwi)v-SgB)y6cd7yE0`U6ezRGj zfBNACUH+|i`i@uOIk@##wCLV8O@T3%;VKyKAhGnwQQ3|Rn(tI@LS~2=*{bKK?z2NG z)Y0=&XeaG?QA=hX^e($+a+f51p%%Q775#N&?MDYH*L`)4U#k7SI!*uR?}q^aIHSR* zxiF{Sw;^VYWC{z|m@bs(eOf&c=q7UJi{})WebWl9G4q&?HRobuG^2K=_0S=VuilME#?pT=o=Pz2) zQe_o9HiV9kmun3XmvW@HvTrEAp}0Eq!Bg9z+>J%2Y^I3P{#CT$dM8qGLV`N+Guq#b z)WOnwim@4$$qbM(<^3j}k}BqsV2p%+(#qhh7;K z8J)4Ne=@ni40_NxQ7aZPi(6i`f{62AS;P~cSGj#w#B(%;?S{lepHzH z3SQQylt)^OnO2>()2f;0dJ);;N#my2I`yu2@?ecffI2MkfD>y^u)C2V=B3>Xjr_*NLA0AABKrRjcqc}$!Mr&}i*UI}W=06c#T zh81Ngw#fbK!NqR3$MG-TN_q>XU1h!YwALfZ28XBh1kJt2mlmd=(Ijqd^@!0!9zW~5 zY;uZ`$@`(CZ3B`|q-3SS%V73HhdvPpiS;vmw`J)9tdJ`?pE23VuNLl|DAKHl6oDh^ z4M`O~OTr$5(*wKYqkq80+M6H1!v`j!s5nxdxj#JN;0Y zY(u40+PlUANJ3O}e1Qz%XU4It^uF&IvE2J);=fr{dLEH>Qz7jdMCs!j8wZw_UYc;9 zD3ptc4xkRt2N~x~iI*!GwzQp-LzI-7NnZsl?1i2r9Lx)i`Bl9OzdG^%n_y9KeN^YsrTKr-e8YV=6eTr81W|y<@|41R}TZ@9}j> zgz)G?H@|b4{c>7>-}C7@Iop7WS>+(oBqFTey@&XVu@yYi9p3 z&N3>hE)1iBv><|XcMKsZq0%|jFwD^1AYIZZ&47|aBONm|(y0j2N_Pm-AV@cS_xr_< z%YwCF?mhRsXFvO)Zq4wFWmHVxm=Dv%Tlt!y){QgrVpSiy-dpNLc`HstJy>W`>Y z(|en|-52+54+p@YP%-38F9hhGr~7z6vT{4Zcz498c10^?>mdQKQ)^yrxo<)~{jg-S znLO|^EmRrL5(~Mf3_1Fed#8?0xB|wWo;qinUw--D-FG|R_L}8E!p(@92REmuSML9= z+;8_ur^=oB10UM!>uY7kph?FD(~jV?`6R;f`IVK@6Rmu$4O_{jgND5svHf#Stz1JF z00vEK@f#m^@<54<*PWY?wcQh?i}Z50r{KW%5`X)r^PPU`godJ?=JZ~MvX2YfEw^A7ofJm zd84H5CzRy)Y`hx}l9wJo2^uq;%Ka5lzQL ze+!E+@|o2_P&OP@d#w#i5PQ066X$oX)ZKDgyksCk9&Qs! zq02h?zAx=tFHlGC>1avo;UtJ~p?sNJvUC zFwk4TW3WqCjjb~xu;Z+$OvYAL=cI-X&Tb$5lC3NASafr$XwA_-vdrHbD!QHX0ucTO zMVpuWAFq!b@zplwH|rZE-X1uy>f~tt%S}3b2PpC6y0Z2fcS33mqJ%0r6lfnBs9_B> zKW1JmR208OdYSYn!3oh`0%w7BP*Sj>HR2gLZic0lV*d180)gK##&8lX6S#XWMOyQH z43H29y@beqD*73S2)qmB{v_NBA2a4KH4QM5dS^f2c;XtKwI(xS=s9*wmhOt8d97ZQ)qx zQzil!^}x!)7$N=82B7qgQ`qOaklORZ$iqj_xypZ&DI#k~C$G_-Lv&3~R zwQUqCz|{X&s6aL{{{Ul2OLOc2r4MXrVJG5AA`UFOMZEd?KuKC7tZt6+gnQFKt!|M} z@WuBUD!ro}oWt;DekFLPO4+-bndK!HC+D>rc+RJx!u)X9FYj0BoQ23F>Eur-YMn6B zmAP`-Mp}N(`rR|9aLk|jUcK^JkE(R2&VIN4dSZfu=90P&!+mGgRq_bl*GFFhTRWXu zUjFfVVqqoMoL^3P*p{xu5%+|-L~3rI_~h?IDQEl23b(SL^5(K#E^`<){?gE0rxV5p z2eecUbo5l0XToW-ZAq?LxzD9(_D~)Z-6OOI7%%Fky5p|*=K$RxqnjI-oVM#qlFjqS ztlzYV>k}y71m2wQq?sYS$wj{cwPApJ@NIShaDW-(eTH~>!;07Y|6W)dr&LyiQYU|6 zE)_T&aW?^Ch~DIVz<5h~r1T$?z7kAabQ>(E()949f80q`#iRQW&%?h-hzu)yvA20CfijFqHXj1DZ9f^}zjh^XzSx-&rIJ2e7C~ zx~ddgOw=(W6MtwSWcUWX^wzph;#A$~h~5tK;a>Mnxq zoz3!xAsOUU3jPkTjO~4le2;!u4Y_5E{}ewKM_6%xC9T|YRVO2TbM;Hw1Pd-MYE7^* zptaIo8wzq9#$QoA4LUjhOEl!%ezh;W_j`2n{N({NT}<@Fij(I_^}}^_kkksWVx3-} z?SdNRC3v1G!=C z5hDL@mLIb3(Ma={uN0957{c6y(Q20-)Vo=#SH}|d_+&BqiC0thUuEY`?gL*=IH%bq z>lad3xFDTG>+Ve3O+V^7n02xJJ<|IKS3}wIO*q)L@zL4Dw+wn2(-4pUjl_WK*Pw{* zHMQKyj3Zu?WEeS?b~)ePPji6H}S{8~Jk^7yUh4YGl@+@;U^<{G{* zk35^&(?|Aoe^%gy^{<8CKD_vtqd~`=eNq!&>|vw+YGX_CuTvYGf%rx_>dI7X!2%NT zu%^iau=$2Wq=~4={nNB9s@)w)iR+jNvsT>^kzMfuw%$Z^0g&M~{4{zW#J&D!1M>rD z84F^QZW`kN7fy5TQq#7#?S)LNg(J$!At{N<=T6;hbJUX6q;)Pi~h-m zN0t65b{MT@-y%lBD%rqBy+jTOE&294V8+P7a32f~Z6r#gk9bkjG}_MQ+YcKMwfnG|fy%s4ad?o;Ac7(bN8 zHs0#2t0|Xe4!JDU=qQaM2|JZmr}XF<#5$S2C;wUgCY7NBOe@A}gsA@nM7=O9&?VaR zyjSOd@?(1%7>$MiL4tz|6VF-hVdK#kx-jWx_q+K>XI8SBD9n3UUB{O%1KPKF8tSjo zuLYEsy5c3C`(ID#0i(xpX>og3*LN4^3ftq0MKOB!FKa&ji0AT8nLj4>{5??$RCY6j z{BH+5THD`H+rGT=tanu}wM=0DFs_zf5&7M+T5sFuq{6r~j1?KLRJ z{$i!G7iAoZW43rmtS9pSFwF~;I4N2Vbw^$9FjasVaD6jJQ3Bl0p-Z9Vac=%`{Df!# z)xyyt!i3i;;AR+vyLk46^>i`PHBJO7Fc!TN!xmBr+uG;EFBbo=*l%f zqCZg>f$$C3f8#@oRENAuO^5T#-Z04UTB|Ik%>$2KdHmb)Jg~^7?_a=tQ3BUJ)0gv^ zr^`XSzK>%kV~Aa<@;IHSaOBUrLnh;7 z^}kboZK-Vtl^DBU1Fnz3v-pmO;kVx+dV;|R-})Evmm(DsXRN_4TEi77w@2!5ufQP3egc5 zmEG?(Jg$X(RXUJqYz`;)MVXyqs1iy1+@vCe7nGh?^{&q-2@@uX|47JwU=U4~vu6Da zS@gh`2TG11KVJ55ke7k0(!xiIW#J8LGGBa8TZ8^Y;iOSzp2%AP6x$$Xfnlf)1@*0h zA(kroUv^RI<);MtFz?el-X-KB)zZS+C6w!rej6=>{fUThbkZtVX?orjSzOrKN+Oo9 zP;w(UF4oA#Q_%fJO{wKRCY29O;XV~ondkV^D;UGTd?Fwc9#L}C7IOXKVJi2IR&7P1 zOisdagc}{Mt{PYlFq1cwkKk%_cB*RsR5UeSpp#M;m8eGBV?oAAj)gS5gyqT;nQ3NK zCmo&eW{i`kfzf-6;X1(7e|~ZKvtDid=c`N^Ec9}Ftw5$CFkm?WNZzNn;S=l-_9hGZ z5YM+yE}jAKa`yG(5AjvTes|YrA(zAttJQov7atp;$kEcN4YTJaj95xF-5hPcYmdQne6fTP`Z?sbkWxy zls0n359a(mgEBk@8C<#%3${1hvJOJxwIJ)}@P4vtne7+rglH^VWA=ZtfJHN$ypsV}p?btTz9>f;E0ZCj{C^mj!?a`QaopEbzZSYc~ z5Av*o=d$u&m}u?-H4(1Ij&Db(n6xgxMZ@CqN@bll9DpT7Xx0PjZ>XX)56zFV4=v_Y zw-M^)>Cj@@2Ct4xt2U4&+{pxq)~&((<-PescK|HW`{_d&cx?jCKOP(igaZ>;Y0Kp_ zG0Xm>U>4iqOXJtF05Q<~Pprou6v(It?W`GP9O=NEvs9pPL%IPmfn`xY}liEojBSKA4tY{ls-YU7Kgg5WguI5D{VQLYfnF#+6<^WN_6qfIsO+(rXG5b!m$ax{&K-g1 zIH@kS-(!sPd!4L1!H+B)z0+`71yl+jdBB68xFfPa&*y{A+T(2|g^ePRpl;p5J_V;# z)35T|8OS=?-`jaKwo&7_|yH@KLY0SG4roX5BQcWq(L z<*2DFPpYiR>rN(6E5Q=OV_t5-JOnotQ7q-FHt(0Mev6CCyzw}_7>dvrgx489Jf@Z5 z0^cd0tU^gVIM?)?-qvsAPSkFmRa~_*T0H8y$i4k{Gm01@8Mce+>r0mya6kM>Kkqt; ziSB3HJ^G`3xcq;FO#F2?AkI}lH8vS7EQA#n(u+()!YtJkEsB7NqaVw(*67g}yMl>$ z>CUrV@*h14uq<^p5qON)+4C>lWv}UUe^?P1Ou5))YJ7wDTN_pm%*~Pfun>UV&;B$MO29g>d3$?0QBtgTs9Zh>bbK)hX+|=xwq?_|1*-N4+n=*ffonBW-z}~)*D+jX_=nW3Zx)qBQbd6>%FcEr6OjJh7TpbF}`Fya_q4rqlYQ9&T zLJFItz!HCzWgR&D50bD(Qpp4I32n~Q%LD2#ZfdY0`XJKHp`RVP34^xbq1k+1)uMCg z0Y1_mp!9*}X|{JQ-|{4AL?h*`9erthB-b8sbq24W&e*T-of%iAZY1nxK)H4Jw*(%{ zSsX=1n?qwXpCPA0@hyFeIE*MVbS%DFYBM8-o--3^rn@5Xk%C3ziIeO~$m5$oJOs%s z>(*oAD3T20n2O=(S`tB4XNd;3I^S`Y&%Gaisf}DEkb`3QkncgUeB|>JD>OYluI=eU+ub06AK*;XOG3!Dz4X#oV5kWC1(;C$yd2B|0Vi( z0A8nBBx+h2`$ z!l8s7vhNryES_nks4MUCjO$(bWbkiAEIhO3Fl^0GgO{NoutJ-bXJlNSH8v%Q&+bGwkuFKkiY^981q z8Rwi{ru;rSNej73y9+jRky-a>yZiQg`ToA^=H0{3y^C^>#iZg9V_eO33flO&7}7mQ8$rwCYk;*?DWeDl&-X?cW#23x;4 zIA#o8#`*>Dt_`qp7fI5ZuB!B)jb#G5P3K@mrm7c`4LOy^PN5)TXYust>2fYYBmtnx zaGBM*XhmthT6SWy&*}o_C0y7}EIV<)SZ2D-Yu~FEK~ocUkCfg3hbWwd`jw>o&83;O?mo8Bb&}+S#|i7cp|8JjjP#rr>1|V_GqlMk1&K({B5hB$gRUOXHz&G zY@Xctx+M=;Zq}w`o~e%YoW5onfRtHvvZl;!wk>#7(Wc zG9k*XGKiN!KeQMyK%p7Lq{ ze}4bn!p_dl%L}-ncTnjz7WzleNGugc35aGf1dOVkFJFt%(dq&Jtffz)@h7cIKHgR% zxvJQn8NMA!d){?)AqcU4#^3rGanvyHxp1@r-D&N94?yWdFT+I~sUsmRy2A0D8U#8v zWG^-+&Onq&;|(B9od!ftErQ(PMVG!H^`S*r&;)EOlbba7Eucz}Qiu zXOB@^EuBowMm@hVH;J^IunY<`Xb83om9o@pS0LPxEV`AcQ|u6hC-??c0#@CmaxI4g zj^S42YNj7R1_|~YiYee}3BpS24dEuhIJofyhYHAs0g2?q5whO$g1-+UWl-iRu|5cORwTT_p>_28n?e{m+~{LrN9+DK2jb+xYgW^pgLS`4|( zNSEL#vdOZkvv$F$&!|K9=~w5~CV*#rFJ#5fTV9-ZbaoXJ6B8UzpF1QDx|l-{DA$!) z=E_>Y$>6)(eh)DcQ`2A>(H>a;ZbL( zF|`*1#?H*n`TM&{z)vd3Uq`uJ(#8`+t=oS7bM_m=4Y_}(?6se)1!1?3X+PHo#JX!& zVk?2Se;8R$PRpwkJ}}g5kSS_~T>QMemc{ylWhHp!|CK*Hex)M-OZAjT<9|OPK>t9O zg3bt9N4}vobEU zYE`PUj*g>m7@7k_kia`Er`nOpr%^CYv#wX|oJ zhG{J=lix!Fmp=0Hj^u9VEE?{x$3~jWbP|Q7UYXv^k42$|@62YQ#O?_Kim?ho?G!xk z3Y|q#S=?fd$QHElg}#8}+P6~`ZZ8uSC=O17jj=~$$rs>bFxMKAcmaT48ct$*jAkNR zGgRmlaH`a;kG_x0mqos&+1@e#jF)QRU`^*Pe3`pej}Ja6tluW;8!%&|FB~>L2 z<09sbT0_dbC|l(Hp5wtJf{}TM?eT>s0$43S4*a%*9dfq$@%rhLGT>IWFx`al+wr2; zX!r`h4 zAOo+MoD};s5@MnHM_-(`38Qo$!Y5<6qms zCKWDH5q0ko*z*=zF=NNPBud7S?)vLl9UC#Q)dHOJ5C}^pq4SG2V#DGs)t6eJ|p8c}Cxkh;Y$qc%S zoL~U0-)2|~q{YAo@SZ+!UrK|Uvh?}lHMP(a_(BoET5C||6dvZTLW$KxxVH=r6Q+81U4fM=eBi za9N+H8odBUKw8^CMy*Z)FayiK<15ReE!^=yr6zGTSX3k+(g3cFL1l>QY%-}Z2N0eb zK~1~J5Wwc9=ZF#>Q4kApLa<8vc_4qUIhCVghbvT4YGXO`oFAussT8a_#(In#Gmo1) z{OKIHGgv5VF*;iQB)r^_+ z-SH5x3(F7ZB7a=c2Q*~8xmtUYvN%(;!@$N|2C$94Qzk93c6nI;X>%dPAA^;+kff}j z#94U8--l?eH~FJ5%*x?pxo6}gJa_#N;-{~5{t=G55wO_3`KC@WkV|K;+hiXlkAD8K zPR01PXLzvY{|!VpcP%Fl94j3F3<=X!C?KMCPzoU%O&e=!$TM;r5?q;MjQSdoXx$@T z>vZUd?9}q-8qha*fkZvf?YkTzIWGxlt)9N0dK!U}Bt|m{6`^5Vzj}6GmkCuMFkvyZ zNxwm#VKxjLMl->T$riORQd^58779reG)Ex9P^az(kq$lmr}4r6FhHY)}eVF6;Hi0w3MLr%Uj@60)b0QGYBTmRd zVOx{3fneiLe6mU{n~&lL?~a(LqYvnc<&r$64p_4P_W+)!u}^Im6h;0iYMyKXHhDX* z%jKZPj)H(^BPs6R=c4%zV8E9xv}0fUn;8sm)C2qY+*$Fp+#dypTp{gpX3wU>=Yp&}eOFb63W}NXG5xlK{qr&n zX`R48E_>s!asi?Y;t*yZ->lT3uz54ae$7N9G457A~9D5 zP`YG@>k2X2O)*=}gP648P6*=t_xjAIt>YPZiBz4Q8s39HV)*wQS+3_yORELIxl5`E z-ZALUDdxL4YSg=Ie%POz6}prnPze_suL8#`D$(O&HaePg-5v}d`W zhJM~{3}dfL07HDwN?xSJi0#(;6X_9BNT4MnD^o@p_y&B@3o&8?!=Q=1`lsihFAj|} z8X|j;#+3~fc(Hw@y43sjJ+o||i}K=y5iH!Q(6uQKv;ig92FOFL3r4N%>A%8H?Iu9* zrB~RiYBF~#smU=@;DlBcQKvl_Cq*mni9N1KRifCEjjj0s86y4xFUhVbt`WDE2PrlS zgns4bwiuXyoFu10ZBdIS5Oc`TcC4YP8HtPgcVxt)%Zy=L0LVVqF0ezU4ljUux}>z1 zXaFr^r-$bNjX(*L%7tzmK_iXlM$(td#MNf9N{tUEY?hs{*9oc-1am4ac&lBHA4H2+ z&HZmGYDLS{mFSFuGWQx!Iy9@~O<(T-oS}<0)tP3jIP7^TSspkH?VlP7O}sE`G*EU% z>wZj&MfsD+bz4i`Rjj8 zU~uWm-;Y>#z{NaJkt|$1hoCgsQVoE7p2ch5p0PRq+lp7@CX@8Lt?eNH&YMkIKnfv0 zy(+LaQ49nVqUt4(H6Q|G#RxC73^^^-xq08G>HDfTV2LtDMMs2Jgeu@@s+ux`^3`IS z5p3!BA4R>P^bP7QB03d_;_F?Uy4}3jLNuBNHWX~uq(DLpNcWs_83ernksH?cul(8@ ztO9-so?#3v6R}*!pp76JTr$xq^L4WxD4(jDa~}RoN9#iAddt}Za3VeCh-TzM%c^@m zBAWaYKQ1$9h;O99m~-k5ky0DF&?b8UV_~30Y&;4t?Rm| z-ywwyx3==O^3K^u1J``r0Cz`Kv_eU}Us@--(7wkk(t&&l(C~ibo&`6`7InU>S(#fY zR@rr0rmEImJW78&k^U`U?{c*5s=LAsJ z_{(Lfo0lyTmOhOIi_u2nB`c+UFN-~U?%?^QI_uC)B0>A-coGYWw1^{6EN@-)1 z*n1ODQjsflwLUjvRtVNck44knDHTG29g&E=FyvFwXKQif;aOddCVEU|+A+e^6<233 znG*}GFVx(8AEQkkW01Z*U9NW_eX~EHXV!5!7S9lJ)XN$PCYJbp9RyT0+yf*=$5rXW z>C)ld@% z$y`A|akB?tEnweJeK#OX`U8%M_POHDyPstunfUedpZ(V_R*VlZtwf33jTxjQ0o_j3 zA5x>-C&>krG=b)ydro;i1rIK1v4YA0IWDjVRZt8Zw3GvO;o)s-v{@^(C)~`& zY+>bu<-1llKR(n46atND3c$W0wf6`T4;X#OJDreVKW zmTwzBkeB&?E40+~0Thu)kqpaV`};y2-K(hju{e1Rn#P7*PT@|Tw5BA<4fR%qe(d}R zM=2d@pdExVR=0P;%M=J;CUk|MEYldAkl%H8g*-F=;+R=Ey2V&Hc%`kYPJ{Acgy`Ut zo0TpZwF+<;h$o;9Jh+vDD5iM<PAL^ub|jmHfl}SFi*;Ca?xo%U%hJR3%Iz;*1NE|0UbKQ^ zV2avJ$eGxn9_+E)OEtPJA^bT5UgknJ9tXooOk&b9 zwo*qd{tQaP;up1f#fEQ{CpKRpl$+l%m-*jqj{JH!)l!wDXJA~>H#xfu47r@ho!&h= z$s620E6pu9@(%11-%kmY=9$|4<#k=&b-8cl~d>|2=4X`|{FG z`k@6+jWy->ZZqy;j7ZJrH4lB$jPn~@Tt<_Y|FH{TfA(Argaktm+$8UR6W_}q?+0?3 z4n0~@;FC=R7wxdRGQZ~Xw*=;@0^Tp<5!F$cPE?A~;EM7^?&EnY8l=o}4B-cKN>>7W z6ZoS81ts&%NipUqsvpoO*1|uNIba2J@%W~QF*i1W1lMvIyh#kGiXf<;Fspr^N|p%9 zJxR1PqmlO$=6NgZsBVh8X(E5vwsj37mkvPltG%lB~c6Q2~?$h zN;NK03S;5L7iWD2mYFi9h?m~cq-I!;esfiz2w5ev2U_13nuPPx6{O(7mr`_3}B45kevS6Mnv8@2%!mx0KS&%elAj>ayeq0AFo*bY+>G0|7+wTd5@$+6{3)h#u#9hyD5) z25%M)%56qaIQpP3}LIw&1{SwL!$^O8Uz{{_vtk{sJpsg2`_np9Hh4*(=+ zS%!P(;&IAq1aja`8Qk%fU^>3{tXP;4j(B}HdiYZonZVtxWXx5{=8SJ6l*DNugEUZN zs&@Q{rRIJw2Ud&?*Nx>us$8a68}b3K%N2q(v*yECF%sl4Go08@#epW;`uo+XCw_iz zR_;_q?eBqCL@EXODmhe&O0kpX4cgiHV@2vqE>rSeop;gIxfpQqB%l{-hR+AyjUJ8b z87txXo$?;U0r4pft0)78ijlA)qEeIJWKCqeiqsfz78Dc%&GroGe)m1ihDiE^tjth8 z>!bHEma&;d7%xNeeD&P^UUO=s&eKJlIiFfamL-9ug~hK3zV=bvu&UqB_4mEA7K}EI z1SVW;3`byJ7`Q326Kh!MT5VS@m#287jaw{;aUYI|J0IeM_rxAnUGI}a{>49xNng6& zuS(zFU;Mwat#tYK(&Jm*lX=3rH`2)k*`)$igo|W&KF|3aEYap>d-?ce0_`H6UwW%T za+a39jg4*Qys{mVKDrksQ;kl_hO&8|cLn@A=fmk?LIQ(67fQdTsKC->hnMVe{;hNB zQ+q9%rO`M`E+tc7F`9m-KR;DaLXM_pe*r;+WdOT#g)Jnsj4)SDLhpZ1?e4x)e6brq zky>(!N{Cav{m!)>BdH1i^p@~C+B|(dlWsKZ-A;k~RJuF4LqGu6=lA;}b~00;D`p+0 z&y=NO)xAJmePgJ+_A*00bAoXdMPCADa-cB!u}$zMis}oyEgv(bnyPGUEGftMfqjvP z>3f}mWoyd~7y6@1Bd^m!ygfr0i^yPiX}G8N|1_i=EfG2#&TZUF%gV3PW$Hgbkx=wI z@e%il{iqzis8JD2F_?2l)*Lu-?yZj>igBoHp}Qdkbc<)q%~E;77*mRBJ^gT4Nu_S(( z5uD3UA6Jf76vtz(v8Fw(z~j^16P&KU`nxAHLXN$7mmF*(3rs^>bnke`jp|SnvcFbS zOPaK1awRq}dHSDEKjTC?qtKTrMlQN%?>>OgjWHddMEPhCfeEsFy-Ihfro^LivE9KH zqBtjYF}9pHs8Q(HEBR@4O4`Em{ngjs`@Hop%Eqt$g|ysDpwa)n!>1lX63}HD$Z!k^ zYMubt&dp08swkUGd|HY(qnvJQ-zEp}Bf0d1R|fHH1s* zJ)#UtkNlN;bTpXY1QSh~ZeGPpZdX$GeQk86sa~M2Hq~pma9sXzoo%k~)fp2jMybfY zf6=UBZ$P+yZ$R6tQVxGg$~xBX)Ph-=+nJfePl=U8WC9ARU%i=4W7v+{4_@2j4w+ z7wL9~cQ8X@ciAj$T9CYWWu4*nYxq$#0)6LxyYq&cVqz?wt*CraGPd%;(+jy6C}ksk z;dhfig`|RZwyh$9N`JVYl(H4F_tuV8C9XP|xfXn3otPNec#!N_1}{E(6^UhTbK^h$ zhP|PHbO@!-jLRNNuZk}PkAAnFY(k%Lz;bM<2;YxZg`r^W3CPh+8fue@;ySrZCM7K` zFS0d1K0TD0xnX71IB6!D$w%K(B0?I=doQ*~XBAimMEdxJ20md*#-NIklfxz7Ta(P$ zkc8}O-}HMJ@xe7{Ul?IEoqus2i1d^4cP{lF>nUk`2>Ud=2j1!S_4#RopP`Xq7C|q+ z-}O5SZuOS}N54hBz6U9)vFI@*CkWm-cM(?pGbm&%U_U!!{Qwek7kkH+hd_=YtPz%; zc0=8=Kg!4Pafk}@5GrupyE`F=okPxIV6^sAD@EPFl6@3xf~mn76a;BZm{D0L_0Oh& zFJ5t0`DKmHqBt4WxYKrj?=hi$O1klZI9G?4q3z?Bg=~f5kajt=&Qofb)vUuS3M|szd^G(_=zYVeKuB#teQN;98K0UM_@wWR$KO8AUXp>kK5+;ec zs0?!x+Kags{2V?%pWStQ*xxUUM9BqPT3MaVH?S+h`YX&8rf#SCVpOmNJrAmQ&-y{lCBQ}m((CvIQfldn*;rBuDu-!E=XFselO==P%djI+$R1B zy^IsK8b)nD_BE9&O@71ocR!CVg7lG^mHC+QTN5MvTj&ChA*>ev9i>TCNH_Xt?z_Gw z(#Z`>xFz96I%KRK@uu14J1izeAHTrk_vGR(x_^$mT87g#4=MRrlb`?7uU`{qT9z;k z&GYz=XP@Fy{uS@;CA;nLj~!N*X@-d8*Cm*V;r8%LK#0ag>nv%>O`CwP>miqmXgZ4aw;^V;gLzqMk+iX zp9HC~j~inmSlg*l0?U-ofC`Q($9DzEAY-8oKHeh5q^0eD`?RK2$v|Rx7Wf9xxzyd8 zF!b|n*>5_ETMF7Y??L^rvUW7+)XIhj0@JihZE8FH3 ze6(@kU|IfZE{?73{Sz2{nPaDp&T3RS`r&~Iew2A47Y(#-F~j4 zfIn2_5l|28xlqGeHt6p9LeYop#_uuUD;YntKcr|o2vuWJqi^baJWzLI*=7n53hi z7fR5ah)EfaLs0;O0lRjELur|}Gs}>tupy%^D5m`vQ>0iRPO2Q9@c zlcww*4tyj8C!FPf=xmwW`Ri;j>H01$58=s|;UXxBMCiP*4i`*>@6b8vWK2drQN;I# zo`;j7!gf-p=h}mFI(=D+VIK9QFxm8_-m%xDINH8_>k-u9YFXgwQHOi-H9!B;hY!K88~)4%1qXXL z6HSa6w0}rfF(>sfwHn^5K8oGFP#)OT&dLf(e$IzsX2dm1dOFk8B=>jB?G4BNm>W|v zf$hXMV@WX)2o?1%4I}whVQu2vlBXx7Pn2FN;*V7?{_soXS0a)?`ajVk+9jw(Dkh$v z1f>+kL^j@v$ODOuru{wC@bWHdi%m#}ocT=r02%DFm08xHfoAFDjQE|*Abe{PEO>hY zQSn*=@Os???J@en2mt{lKK8o9sO~yjGiV3)*h^ZQ(bK?}sY6QRsOVX(;^*|(Fr@~2 zj)+X&c$*3L+f{2QW*3m>&m{nCUPVlxY5X57iPo>P<5XXt*;5%Y>vp5#r1PXnPa`lB z`VJjV>Qk@%|B^*_8CpGMas%5@%B67RG(4!Jr6|n-d!;QqPXgx%cr7EE6qc`wy(}kT zk?K;M9}CZ5fbCBZp}EA$SqeaB=a!n7?t1#<87bKCL9{w^Ww}TgLr)dD`o+rJDpB+o zh8`x3r&S)R?YCqwhgt6wl?pDcEML6q*K(+yGp*@E;bsItfqpAWL6A(aXSd9%!lCHY zMqAOCZu&}9-()(V2=Jf6(_RzF4b+C7k+30tE|f=LANJE_q8B&b6%lmScL`yvU+w*R5Zn}pbM1)B~ww4v&(@Pp*vzEp- zmnShFKMstHBo-HA4Cm_U>S`+&ma={cys8UNYz+=FvQlwgX^pU;$jDh}`nA--Q#&lm zb~WGd_Rrh5K~%BzQTY)O%P7>^wtbqRUQ9`ee@SUTX{q+OgwS|I^;|dR^$L)d!kb)b z+d5d0ey62-y)YFgPL3{I=~a$r63q8M-5v}$H1WTsifE&;qi5G!3A#8a1qPFUT>(kd zA+P}DQ^}*E3!FZ?5%}R(-(PJtNneG3LlYwW4?Fhw6V)x=p43;#-P1_+@bmwGf<}xX zy1nFg;{B|wO*nO+_OC`wknTjYvSdr{Ps8=z#b-SE^Qwix<}blgP)k9nj+|p; zQ~);(g#od+61qFD)D2wZghx%Ni=+M81Xy*fCMN1rJpc+8DkhR5N9n3FUS zDEbOvs_v&McE&MmL#l;^6G2wVrY6VLZ>U{k6n7tYN}2`euuVQYZTeC8Ic1dVn^tI5 z&)F}SCcFM8lMwz`#~yuI^~->^AOi!6gmYakVhU>#nGg>0ew*$b`r6OXBDH9EK{e;x zN-Ur7PX33*ZIyOCV@#c}yWSntx2cWO-!j2YY{IY0zM)&k!|q^pU7UvdaTlpf+1h~X zS+8P}dIyvM?`>;aTk5qoBNnQ)w8PQpX+@X5^Re|02ml0XK6Z9b;|~$#Js6{w+-DZ~ zA08>%$z;4UK?-c8E6CD%d1yanr@|A)t>YY_%3e>Yfza&oUvqzdF~iJl=jtdCp&DHS zvdiEUmagsk!1Ezg+@W@@BJ9rmB}-Rr+tZ^o&!4L5#-tk>^--D90X{wfS<4~K)MpwR z-fv;v>#@GTK>?$QVdnCpLQaI|mI^9?WDj&kotUsI$!+=iEM^M%xfUoToTecV!43Sl ze16@SDm?O$DBV_Bt`o+Ru3?9Bef&KPGIP1zzk57CvX{J&_4vf|%|vo>j9|1bOr!|p z_{h6hn^fe@%nDBnD;Xt6`{_A39oY%#n$7Hr6P|va%7bHP)5Wv0;lRZN*X&-f;ud zf=$741HOue^>N6rkPf#vS+41EYzDf;^5u!I?VZPI8 zs)_z@%xT`6s6XzB#)s}Ie8r+(RshuSni`MM^-?`8;irY<>hfvfS`tYd6)_ymI0am1 z$6q#F^4kgY3?S@EaHJ31$F{pLw16%V8nf6&bBbU-^9rO;Sy=GIf9& z_&K(^|NcE%UoT3G#5Fc@Z(-qQy$GYU=k*jo5O|&9ot@VfDr9u#jo?hY%Jnh^QnU>T`3At& zL2HD{pfS}eA5sY9n3o@@m?4ap#Zbg69xE+#$0z>It3sS;9t1YS6)a?eg$LK3{|P<*~SlR zl;iQkz2q=of2Z0^I+k=EBg;^^xITn7B1vzd6ptQM32FNMJHG9GML}63Oua`&C6ZKP zAf+`)B5&Xkh_m*Y_iX7mInfy9xhxH*J-Jb=?4J3%k5vXO%>MwN?DxPzaO4~W0;DuwO`_a5*yZqosXPr`JLjDB}8<#t+ zI-JIFIDTre=;_Owr(kS)y#H7_%dn^#XbX#!poGBCh?Kz42qN7z)G*AULpnqnL|Rfn zBnL$4oEbv8Lup0{X(^?Y?vV7J@80_Z9{9_{oPGA%?^+9cCs8B$TXPomWE_M?;z>B} zSe-XT;H8A;S3@*hr{44jP9~YlurIUk5CfHj;HEdQ|5)6<;jyJuZu0D>r&9;E?zwWleg+61`tED_YxKr8-W**Tp{=>eDx4&(hYJ-bl?nngoO=lH+|}F2M^*&G>x4 z0aeiZPQy`d7WmwphYY1?IM}rb$fL+yUhR4M05Ossv3}k7w*Tcdm(@4S1asJ(SU*6l zqM#jexC*O_6lE9gqW~ab`ZqF? z<{K4H+MGKCsZqT)(xb%(NwJh6uYTZobd`U^Q)|9oBq}0 z#mj8{Clu2gFC3jt`)KFiG6pTdM~;!sHs!WK^J(V@pFPd4B|OEG-TW_THs~zVG;8_+p`rBpI*>{daxt{YQ-jCf?Tcw5aRh zx856ig={=*&n`(Ja|D97xL};sa}vd^M>~?sYG%Uly%?YP_wS36Qnpvmaz1Y5WYJJ# zlat5(`k(cvc)FH9_n~=}^`Yz%l#oOOFJEyJKrTujKg^{0`YCiDPo)*A0a`*8lGQ8% z_u9=^L$8K2tUAti8WTHiE^ffOk&AVXty>x-)d735UjSWxKL?GHht*|c781oa8otX| zzQhL>J<_)@0uTXgo<&=vG?iv{V}xj~mm8%a{keUe(I#ga>^_RbWDO2IU%1Um5bf5# z@3Jv3$!6%n*;>SvWR0lw-yFrRls86uMVBD@?3z->c&e8WT9x3&aq!D*`l-RkkF>t} zv`9_vxXjT+Fz(&RgeE%Q zxe5VB9Z&R9tVIJND=BdLF@|C#F>|E{-A0Z^8B3&b547EKCjfpM1rCi_WpdMkJ6Ik( zZ9y}rxiTSo8Q6#d?~SWcgto~19yqiPfK95yijxVVv_;?=>0PX|my3ZG|%J9OH zUh;F|qqBOt%mpVW8Fn{lSHOC%DgZD=4#GlvE7M&|I_lSEHd<1FNboOk$ZM-{k{uKW zVP=5&9&!dI$qAst&7TeikD2~(Ng`CEWdcx5d>Mgx<}p~i=Z1q8rJE{l=4*X=dc4y2 z8z^x}ymSTO^FgGdLt9&f$de6Itr@`wZJR&k$&uH&B`%|dSnQE9a`LG2lUVdcM_wE~ z8sWA`km)5sFO~NJRdKafwijBty6@-RIx=KGFZ%pE`8$&B%pR1XC+kzFc zlTy zc?|}xZutvo_!irSiIo4SCbwt+J3aG9#3~3M5fRaS)qQW|Qg2zHZSrB$jY1luXW_3m}b z;JwqA?-F&~UW{1~E{ldfH~QoTDhHUmC1zTieeC5p+!xJny zdLjmPZBXBXEqZ2!SQR}wmB|d&^{<7j{r*s36NV18DrrpFd?e2&UsFw#>I1^}$sEC$So3hechy!>3nOM8fUv1f z)pOPak=|tiW>T)@8OSBZUo1}y$4Wx5azD+#?cJ+mhvcLl3og@S|fD5`6OLhy<#cj z6mT>(jf`+rLwf~?GmRqn01F5d(Mq-$M);6(uwl+rfny*NQ2$0;r~XpgcdV`7dtxls|)4fSnu75UQvoPKN-n4 zvWFLgM(w2bSF;~XJ4}dRMtg>F~JKY0+3zL(<0ICprc?tJL^Ue?!j+q+M92;Y5GpK;#dHaZ*S#yxd z`qQn6?$ zPCuaK&ad;Ai_KuW_q6=qUz>q@iUS@bom!jo>i;^P@3p`Dld7kIaSOdV(3!@CDPa}^ z_u{C%Sze`?bJr=cIA$<3N}??O>KQ|9kr;hcWJyaP-Q3*)wB3$;8?EW=raS#%VBgMM zk&##b7pAhCg}S8hs`vw|w^doJ!u|%of?wykfU78hRqpSh6!m7$6RXKa=yD0UYY_Ddd zqk2FX<2np%3b6QeuDt5M?tJ4aSz{Jfum3nKNh#*jKw+{V5Mna{&< zeW%5(d#6*zT)1O#d+4b__8 z-FpwsUS?`8dk3l7@@TwJ`rp6tAJ->o;<+`mp>O(zi`7OR#Wb8v?fYSsq%q0a$8TIK z=36zB8@wQKqi|A_N(KQ%owH`B-x+^CIT|zV?8hsakyTkxrM7EW-GPcOnTjrX6mK*S zzENP6>#y2(TL+{c=Y;J=l@`4OmussJeq>G# z-9!vFGtHj9eQipGI(RU^P=}_=T)yz=y`m`H(D;C>x(rGM_rZ* z`Rm^Yg)zDh-0%Elj0kbvYRfUG7$OUCw*_DENkHwc;(L_@$|=LcC`Da7v4Bs!8TWAI zYZ3mdUciFodx`@1q6FhsCM5BMeEXxq@(Rp0PUw|ddKXkTL&C7V%Y z8l>>VJHrn-l)YR3qzhVft>S7x!-BusH1E{yoC$HgER_lj(?c!~m?|6~GLFl9;yzDl zaNCu)5d!%j-EN)HXYe#m*P~@4A;DQDe#M!IVk<*P!0KtI*FhJyaP8=Ju&^1WvcRwi zGmZV=M9FENvLTU?u!@TzO5ASnIONr(d=o zDJ3f#>lgs4xY&Urv9K0`N-x+QY{~T0a#WD=^RLcV+4c1eX#8j1pSNOFgD_1J_lL+& zK@Cn6zdd_}L;367;M#Eu>cVVWj%?d*ct};JZ6q6-2)0tVKyBOmJ-JIEl$Lc}fmM_c z33uYk$4q2Fe+n_gmmySV5s=z;uIdCt@8J)BN5y=|;bsjtkwJLw#1kl&Ue9LewQqUmBdEHLg1Hv%g z^i>A-=K%pAy5_+;CR57Jo{kUoB`}?`;JmnPZDebEL}yG-%+HKYz<(Ntw(QpZHP4a?x$3Dd>`!b9Uagw6o}5$vDR*_6uN?C;U~AuO zKw*6AIUTFqe8($;0l7YE=?6BE&3-z05FL1ZP{8x&LB76r&Lk9#$}S}0Pvzx18XAJm z4@seDRg^t2I#prjXpsjif^W>X2O4Z`DSLZ&A02VT$K%)5%2HDkAc7x1cH4r!Mb40K zkVb%;1*cU~q=S))ss-GDw=Z3ZsI~QMFa8`-XoG=F{znD;J(-q}yV|dr1+V>ylsFF_ z0ZdB8Lv0+MaTj(X5*JqjBq0qARh@cKH-hp({;EgmdL|&e2<2mkI%s@qsI=(zA6E1? z;YC3dQ5t)M>_G@vVN&&^MxhELbN0b^XZiYo8<`gv?dHBRDki=d#E|=o`&vWg6@!N2 zT42D}$^)J}7e`{9so`9!{sl7G!a48Fi&8_ReTYg{(K-wlo0|p*xVd|8C}`Zaa5hu4 zn1hgqaT>a{LZ54h?>V{oPO4x{O+O%s6~eK}nVHr>?i=_|McC~6VK0&|7QXjPw!LwR zX7|pIoOs#o^FUG8jrWL(_cfL0Rb#7ez6XzNeHfd= z!@H#(2BYMfCHGEimMtRkV5(TcYSuPp!AhPQ_J&C;vN-TsRwK zA7%#V+IWvoTgF0?jDH>%#15H|Wkd?;`GvxxkiA&uO*^X25DkY=D?`*S(hMqrt||Bl zwz5+pA!fCM<7|7@dSCNX9dUWMeO`8`4Q8dkY)uInjR3-PNO$mqc^*h9lsH(}zlEwd z5MVc}Hbq^V%>dtdo2ZD2YW_yiavU3Mk|2&N5N9zYP#XSGFZS5{U!++%0XiU#9?+@S z8QNL=?PrBD?Z}Y1kwt>}Ft1#sd08u3I0KXQgq)2RK!DA(9S=K1=Xw+~d-cUIH#rS$ zoZs8(K35ZzG!75ATVDomuB>kEs3uhEtGFmhkN!Os{kx$>&4Kgh%&g#C`e}(FMdUpk zliBRHTX3qOa?}$cUFb=%%BEPI(^2}935*n7)Z;_ZD%7}m{gfrjY@Jx=y-|yuAfmD2 zX@+Hv`CD^{U>?Is_B|_d=#1CylSXH!{qYn3BtQQol(p>tjya_#X~MR|NCxsX+#WBI zG8N58M9_Sf4|j&yrvQC)k`tKCB(t_#&m#d(k$2hCGk>?YXQzH09**L0zsANsFWdaQ z3Of6y-9Kae=kHUH>ME=mI2*XrkZo(*I~cpXYUgQlTfOzsqa>1|aiO-qT_d6AM;Rd} zheDwzhv3h5m21FXzINVBx?2XGBs5a6%Dq}vvF*-0oeJn|;$0}EgL!>goYP=92oR^~evVYY)KB!CY|S;g zDMIpK_O98?qV`STqh z>8aL;FQj_$Jm5Uwu7kemFt-vC&0KWT2*>c1!Te(TS?zQRdXU(eWPab0miUA4COlFt zFeFh^q-gUS_oT$A|J52Ha&R_OshpD(g4Gm0(H5ml96izN(jR0GlZ2+|p4;Bf(x{># zD@TxM;8zyLX!G2UfQMJeGajmk=SRLb#OOnCy=WXgg3GqUAAMx=_0orGke(!&5xG0(Oy0q+ zmviTlj#J#l3d?Woh?mFJrgg|^>o%DYVue*Pw}Ex)Nu}>qVVtojFyPgOyEqTVk0mf# zdQBSP@|NG*XSOuw%w;q+{^e&A9K42u-~sfl6G@~e)e9ZLX5T){Hz4=g zyzdA6rM!-pKLmHUuG>BIK*RvQ;213a`=<*BhZYg-p`m<_(`}RESEsuc8>60_MLm(E z+$}FDWXCnY`Q?Rowr6WpUa%Ob_cyJt%!WlGrpvGhue1lXcYS6*DPK3H{ND|#tn+$@ z;@?(i@OfjW?9Fec2khxezxyutlpE!)D5;+F_qW7}HsMT8_HGMyL?beja~tVd{=B3g zO*)u3XnyKYOaF%}0x!3bC_@7?Kid@a<8SPWEx@lDrV65K#&MP*X&xXIM2VxDTyXzR zq66M`n3!yk#pN#6X6%*>)y?=H-(X9)ylP^Qq zQv$%IZtWMe^)xpOss?;2KqlckVSBvHbX+r#4J4DY!bw6j>w@+U|9(c5#mUOz(?cyN zaRuz&elY}t7GV*cb2Fp}e7@?>h)4E!=tw{~08M3B>;d~rV?wW=vFPMaO3Dq<_(Pwu zq>3unM@ij^J4x-5E|9|0#Fai=GJushNk*~F&S;zPqHTz>!7{xitL5ENn;1iU4h|dL zwW`66)&!EIewtR9C$`mfe-5w>*sU=ME%s;%r32&;8A3IKAUVqLV3C~`w;^QhA&TP48 zi7x3QBCE2PR(PxA9P7vaO6`~5)Jx?KJS#anrp-={{U<4wVS}wHmZ_YziOA-%z_ItQ zTkP8{mJ_OnZ`z4*kLM$9ne1t&h2T{roo0&i6*r=mg6xJ3IW2e$SsD6+VBC z|K0%|ou1Ku(Ddr&s;gKlb#BgfYiq^KjH9fKrMo*SKY#w0LP?{93AC@ZW!WMdUND2& z+#NnWgG9%~udL)4AA?hnq~n`& z`grGsK(fcf48R9PZC)&Vw{;Q314h(Zqsq-jV@FL~r#HJ1GkAEtvgv>)jX{Iz2MFQS9pevY}Mk0vhLSP@UQY&EE}Nz981L z)Gi~?So)fpadNYtuQIWxH@%m7$3Wj?MTjFE-co1PmK1Ln>8SWcMT|0$VEKDeqz2s| zxr$F7u;r4k7hy!m{M&wyYqaLdJVYPpXj$_p#$(?Q6vst{Q%Qhs`Yx&x*z~2A3L#Pz zOc7imxtPUYOg~Mxd$J%q>aKv|_{I}0^2tLqTCe%~2H8zoi({0?pIYNF#lZWYl`|GX zR@qyq7Yc^VYvZO zF131fW?@nVBH2A-n@h@SSkdW~_ppWQ};OUp|$(YaD>qA_UcVDHlmy$-WJrnifamn-| zjk3e20w|_DLZF5`k2)I`j!}+}uR}AI>O)LWj6f`N4L-x|V)Vdmj<_b+!2JfA1tM`v zU~k{!?6X2gZR)SjN_d@}DmhV)dh~8rtdlqu8uG?? z#fuLOg;%&{!xZ{zQ-Q&)u?)3;{SWHVHEMv*1@${adnE8&Kk7m^`n;x&{66GTY*j0e zN12bAg`UUvC0}>4iVMdT7~C(plY1{4tNFC&!94xIf6PSEU@)GB>sJHe>Yhgiden2G znY%7ji8UP?U7GxMX6BF%`M=>ym+4;N7$$`^&TuT0Sm9B~_52_+TD!OMma@SP@5)6f z`0Q2wF~Q(|dC)>ck|*f(nGBO!jC41`-bOaRz|eSAr^*6R{^eLKFlbmS7N;>l=C;i? z$0pRrUJ4THKU?2%Oz}oQKfa8gRx|Xyg~n3xG4p_ZTg6??H_l0AH<<1o8mrrk*0wzX3Ml6u81_n%EBa)a7cU?xpf~swFw!jj4)it9E*bdP_?>h}b|HtbBi5s@wP^*Tq@x`-De9wIx@kt)p(P zi(C0wg9PEVz*3%k_Hn7fm!Nm+uw_8A3R_@`gg9FO;Ak^3$(dW=DyT`rff-Zx$|ulq zq9s6)K2)MuG$zSt5UI0u=ZTjGB=k7?P3n_MtK7LCyY%Z?eyfShftUNq5?f}QAFp5B zs0`%ZQS*v5W@FJ-U17oayp$UsPu}4BO&qYCov9(1v;M6F7G=!#LtYl7`8Y7^16}1C zQ<5C#NJs%l-1GdIP%Uae-cCUd(Bt#82~1tOJ36{K5~qI4Z*B&&9)?HGbhICi%S-ak zVK5>VH+tzhK3zzLr$B7`9js_^0XLP~>8q^|OkkMJE2>b$``0lM9d^udezb_-g^i9J zJ3SGJnOxRwx{sJ8#go6OFaF%AC?g_`sF|_Sj{s18YH=-#R?`FU=>d;FNs&f>u%YL8 zWEfre1$@ufi_p{b#{@k|(TRCH2$y0jhXoyrR%aP2v3(j2 zUaqHu{ORxk4`p1o%NH4Mm*Bz-6k0UUm0dbr%^n}|VWsXS0<;aMFCIW;xsX>@M_@30 zao~Ya!d`YM#^zLhy&A-Z#?m*inf%pLfV{gL6+(_i>=z+y>?1zKv!u&%9>-Zm_Q~CSAzQPb zD|JRlsJe7}VsB(%27z&gxR4f5nZPDz$7Uzy+4)qTEIXjfvE(D0tAq2)Gm#sQXZ#e2xQd>Z%?sbRb>P9u{KOq8 z9)1~4WMI|o)f)zVYvBejP6Hj^5yY$F5{se#vV}T6KYZL?EfV{2`0x;1v?2hqp^-Cf z-4tyyA;D7}JuMmEZLoWBf3b_aENRjVR>) zF-N8AE%+>#TLtQ|f4VEwZU1Wm)q-{pH$T0;Y(D!#MviSUG!9)Z08xRdnqi}M zUR1l!&QQXAPx%=ut=gJiZ@u=gp6w(Ao~oJ@A>WCo-{SoU`g)NScd)K~?+u*q@gH24 z6(HYj`Gn+>*uaLnYI2qhg@M zSB@jmSxXNqh261-@htRy7VK0O-t*v_zZ=(UBk)DUWBs$;n+dsC-x(&6Bre4#yo#c+ z5Pt>@*8yED6~&L93)gpcEoGX&t8%*Pe7O9=U7Db?%1h51Sj)iw=^ALr_bwK?gS{b#+s_%YtkrA2hxP&l2%A(q&x#6Y{<}iaR4?#k->IgGOvhc1hgH_7 zm;*#W;Lzi;;+T6GKdjbtp#ZQGSmr=#VK~&BWBK#@(G7NeX>VusSu=wo3Oj`@liD;4 zR*qO^Ny&sRa|B^^Hy~`f!T346y$+-#5YToUf^f4>j>}`c%{!!(4`wDAl9L4BdRn|# zK6s|=sEF>irP}73<5LOY4>r>WY7)3mihk2l`|ze3)sU=oCT+rZskp~hj0CR>6si;$ z&&+nJqg^)Jqd;uI(LYL-{l;#(wHra}M(l8hR|1nQ_40+f0cOMd&u<}%53L^7E{={i z&!79-tCpkF)71=(RG&XDgq09zI6r_8Wuz0a1oGLzU(wgTK|y>pJn0zq^Cx?L|DKqd zIv#$PW$*1xBYQNux%v0vf>Y2oa4z@Fbo~>FfY~k64|)<3PwMKY8XL0QTxBL_JQ!K2 zf14<3kK5wSzi5q*MTk5ewW4PkBqO6$i@wXD+?@Y<`ynj)@pbzEg@6EQu2krQ+D9(m z@qmK6bX8xw?4u0o?&tBx*r*ky;h5WlGKoy)xzIJM1N$5c*~XR+-hcRZ<|k1n-hOl8 z4j$M|Ya1mEHKIii;7@3^)j68&+W0c~*QANGesokKU#gchmOYgUOL3B8*c&K<5w3dU z7i-9E#GkL6ug;7u?_X^nMuFxGQLN7yM?uOcvPtQiT9(y>NJ8=kY0)^n?lWx}-++HR z8b#O*(0&5iNDdCz`YTEFzZ1|NF*BIMfGVWFc`Js{o&kf3&>| zO_B8t(YJH_CvsttUYY(FzRBtAO@Xx-qQi(_D4StA!k3(ac0ZE}nUFxE&Q%mpT6r-o z`S#m0MOi#wLWNlUs22_3jVKKJpt=%woW}XK#a7>55t2|;(6=EJrOlafpx%8u$E&Mo z06a@CvmoTt-d@@+DacU4G{t;;FUBGG-X_qgVXPLI+8~m89}WTI0PwLv555uL3}_B9B%TMU8<7a;R=q?4sL>T6#ZWc; z&Z8v!_7Bsh99gV2*C|l~SvD*U6*PMNm3MO9&bMwCA!NWORi)if-bJ|u$_t&cg0JzI zkN4#|gwHr0x}g$Sn@4(GRI}li+caEX*Z8EdF-h-x0jUf1OZm>qTRb75FG4KH;5L8YfXeuPqq_E+API`N#(%MK1kinDl zn>41`7-{>WV^~6kE|n3Bw4Ys&=Mt_^eR=qFx0T+Tzl=SXyT<<^hV0X)4P1bAob(HwC` z`{tWcuv$*O*|5|6kId+cVHK@vnK5(r@aZ%7w>lCEwhx2`9Zwp)tQTFtKlt5tw3d;3 zeex;yW=)9odP8sT-_03%u&}NSycL>Zx%J8+s5TGNRFUY5_CUJbpAva6Eq-)?DoQ#> zDq}jV9He5?e+>wYl5)tXIn?`GEH0p$Vo0%1KAGRAhOUos5oOgVz@SePoi~U-e3X<%wAz~ z-=n%ye)_v2;@9unurkif=1_Y^dKQRB30;`M%+0I2d5LVFaOPNC*P{U?w1_>h;_VH= zzBY7Kg#mb_cis<_^2BI=kHgI(Kos!9#B^g90(#0JTUD|0gLrU+Vm9m4AQFBVn+Iy$ zccQ@KnkZvY!K1E+${#!QHa$~7w+)cYu#?HJYGcE9TIFa%$T{Wc&3URu=|Fuq8UFf2 z#}-_+hDfmcs$CKZd88yi6(TUqaC?KD>9I#4Yzw>@z0~P3QwU-$TDNZsj110Rvb7F29lbI;D+4?BF3hwN19~%$>E|Ng@SlcKfu>MARDQ?JN)k&=~*wXo~x!eS=CoS z%4lrPY-zy)?nXv5;&p8@RaL@ZT}{AB^dv|OZ8f?HSa!&S9xSg853gUe5Hy-vIt20E zztB%MLwQbuY6TA0)7J;8i-*cm0j+*7mX>=lJ1=P7*^1Uyi!?WDiU`R(4`llA<45Kf zetSn^u2KG+2qAOh79Zz>WmUVp<^_uhMI%>xiz^;eeTMIQdLUc?#%I?nN%MZoqmdzr zYw;qC>gyv-ynMH$fCBw)&i6ry?y&f%_5Hoh(^>a-4?^cyDINrD)jzV*;-O3QE#f#= zQ4X}N{lt}}QxqtjT0FnM3}VN^DOv&S9X`Ag?X^?lvl+XBb^+4kvMfvHGVf!fqh3Ur zUB4*Z(z~avQ*PPP6mmkU8`n&VpJ9B-+nq0HQDC>&Me_D$Y*=dG@w>spsJjzm=SO#S ztFV|8-+7dpFbOm3-UF5>VFBiDZfOaL`s&w>y&voWO1^80U`4t|bSvdMJHz>38sK?9 z{x~08M#?nQi}}x*DZSQEU(9$zSc?JICh3`Jak()O(f3T-U&-#2LGO|Iyt^0oGgqb5 zX5A+?$C92I{*>$07a-!gxg#e$(r7QW{$HA2KIe3qQpu;7JSZj^J0@G~um0`;ThOe{ zBamOBw4tIs{kOZaswitlEh^=}pUu(mdi<%O6T4i%frc;xS)3#=4~I$-734oX18-ML zNYVFiGzrS=Wa6Zj>3QCTB<*90s_Rl}(Q9c|UHY06P&K_jU7;@eQC;Y#*O<1YusrHq zI*J2GEsZXcznGD)^@f3)Ts%cI8fmBZftCINZAcMnFu$n8fd^y7M=Ya%ObNcQ-a8V^ zya;T@D}Zl4H79vxo-*(SNCyUyg^hI7^oP7OEk_^|R*zOP>u&R*i`p=sDm<7l^Zn8K z`-wFGFB{=7h7F{tRgwPnsqPFb$6t4*gRM;}Y;1ZEGr)S$0KezoG*`d{SzM*bsf}Hj zvm^ovXo->aq@XLZi;UD(K8I!E7EIYtT=Umaw3N(?J*m>i1)Vv4FD_zRS%c5g zv={ze9VOlzmrCabc^!3A?1fxxLe|L#CuL%~C04I5k&@yZ0{q-c~axdy`(_L4~<{IA6c1L9C#RF9#R+2aC=U%yKtGiuV|o1={ZyYsWVyDij~ z*?vG-YwNu7j@s5U4aK2Xwi61xV0mEK{yw;mxpm@JK?&;=VkEy zkVa_C_lxLo>smvjmz~QdS=1TLWgL#Z(yJjb&R0b|Ee@`!ws#Ykx8bu@;wTaQ^1S)> z7?Yw&eIBmaf&-5p*u-e8XK}uXok2r0Z3PRt$D4kq7!OEk z)XV-S|IxBnziWG@QxeRDRtm2FRwj&90xyZ|l{Pk-lM<=1R=OXLw=xI+q=2s5i_12A z{MR18oFc-ZucgVsESlfnI`VM$6(_$_b35tU`zL%|-{1wlV4)inb`*dm$Lm#Exkmz{u)2E&I>GnY^Jx?OAr|15hrHOD-qJM zj9Q)idsm!kpV-jI=;XIDV8w~Wh6hdyFkeV3Kq5PX0xMa00=epIrg^cFrhL^jmtaJC z+FhiMvSue6uMpc3n*47swyxDPi3de%jnF+tKWNkglu4U%ge=?;X!Bl1|W)=^xp!$|hW#l=Sj1^g{a_SLBf!+QS%b_coV z)0GD?0WKTMsB} zfAEFIQGUDsYQOfoII4(u%x6@(GyM~cB#f9uRn$r`46{TE1dkYw54E+|*Y$Z>q)>nZ2 zVXq%Wb#Ias%a~@ZNkLi^^oSINk6kB1Gnjm+vY5vw!Sa_OIE2h8bfJ#=AS|De8prq% zq{)@3cd1AR(#&E5^JIp=8VSkfpxy0=5&6!4KOFx92%CMMvqY4#hmgl^F_v#$MG)(S zoV7+RENIRf2oKwS?yu@>yQlNQ&BnF=%?nS|$)$8)e-FCl@33?c(rEIR)1T89Z`qQ1 z45kO@?_uPgN^tYpmt9X#!qU@;CK;-pO2t{{zKawqvdQ8d1TDPE*sq&s+zKV9igwp13V%B+Zss`o;`+-x) z`3YgN-GUFhv0_d9J&S*GS8)3DKDfj>>GU4XRaht-j1Gq6 zqwZQHBN*UopxjLFn~&7eN{x@FJ~~>ykdSbcUAcor-{)STZ3YPC5hW4UCckJhK6@9u zrE6&s-jk5|wV?pvg}kC3VdwUG^ZtO3*^hboA%ZO<0X2X3&NR;s*3cdvWdSAtmLAh8 z*YY+(b^ov%08|gxG$>K61TTJkoYiZNqT(a}9bVkTmFtxWS8Q8(6CKl=1!K_pu1TN} zO(g3p>Vy@|w7tB%HTCF$QcXrrgGPxExGec5xi)HS#|7aYfpdp^^Ks^>cpi=sSelD+ zXYBBb!`>?s{iy-M?}H)o$=Hqpjdg)sJ)aC2s_e~H1t7HZQ|kmR*@I8+GQrqIcp?<; zo3$8fe(0_T2c__0%6`$b(g}lbsNtiI`}c~B`^kc_3W>+to3-JHA9q7Yf80gGUx-Vf zmmxNl7p%9iZ_wz{dbHP&{MWQnwOyCM&5bRi37?U&imXC_tjw;A0ca37J7ukmi?_>f z$L_UMK^XzI`f3+XWQ>psz&@|ANYr`Vfi>!=9gaL=pBG&{D*5~OO1fU;H#o7yQt9!1H z72xC+*edp9GhX$haDV!YT|PK$zK<`CF8)sF?>cwwU-uZ<_9^M)mY&IFNkVU8auC?o z_d9z-WXIMYH+F_kPu}SL{1rw56PH0Ue|Or7z>j);)1_e54-dui@W8?m5b2GJj17U} z*49Wp%yk<24u&GH1+VW=l1zt7H&n#;*0E~$TMI71*Uk63jq(`}leObKF=EjHV(;I? z#^l-Rs&aqvK(Om6ZccH3AJ@@*1c~eCR70_YRsjajTScmXg6z%AV~c-XgH4P8NinI4 z@?z3YzRJ+o{*NrS_cE-$lVE+=t^FWI$;Q9|?-xBmn0?W{hEp1TDOe4ch8mB2QKpar z3Qq(G6(t&y`(Fw5B~fRq2JBPipejDi@}TdONmB6>{iI#{IfDL|NFduL~N2STh+ z1KqlXu8YsZ&MahqD{9BH`qERKz|6cT9ID>3nA;c7kMX4Sc~eS7y}K|2kkE7ssJ=lluW^Z_ zp=5rF9$sV`9DQUmuhh*OTWF;}?#V%7WECMqeLH52!#_La6BI-2?Sp(#w7`G@eVtLI zxk>LRR-W7S+03dCvCEl?p=y>&x(^sAA*?p^>p^w(>uM)gXU*G4MaBykJ7-L&Ly038 zd*z@;i#HMVuSHD_bpK|&Hvn<<-G#Z}{V?{Jf>BA&6yLSh>p|{5mJvuc={XZ?h(CBq zT0B40a?J!$&T6;Y}9?#^Q^YCjX44oY2Nl6JzD$2o)+jr_@yA zCPz{6Q_b@398cP>5%2FLg252ti?2?x^RdC~`M0-f1zJG_I5tYVyzdbZ8v`fSIR*W_ zh2LI^{)X`{>4#_~{}r%brmIg%^k(aX@&jeVO15G_E%}t5d4(7KD;z2MzekAJWzh56;>5sBlQ`fTRTRW{s(GsqsOHM-r+6FQH{hPo!%iO)B?o_8&`Ls3|p0 z&W$Olty2j9=jNYcn!5Q+)T(kWFI#kQUMXr8D`;zGd2p&GHZVfn=b`scOi%;iu>wsc z>Ko+N3pWX8EZebOr1~@h$}CJD5IVnky5_%#l<$_;|H~6AFD7Hxg#5=k;yVt-oYi!a zs9nu7?$5iA54H%}+PQ#oBa9bGfPVX#A62gm2Us}Rs?#&%?ccwJ<&_l=XDix&@P<}R zc659+)>M53s_V?Z2EynO9d&g(-yODq9bM1bNgVZ_h^uAnVt;vgb)7JOxktX<(Ek3Y z9JU~(NL-Da7*t1hZMEV3L#yp%$^dv(R|gx#m(ellxN))pI+9k=PWE8OL9u5v04YH1 z4#?0Ds_KA}T7z8T6Kn#eR0A{C314lptfuk1UG>r)|K&HJ8Mo!|K8hpC15DI zR{eMvC?q(VadzWXPYr{ClFJwqVyF){_J6iMv z5JU~5h~Y0@)tuAQNj% zpNY9g)C9-Yv&33 zhLa`>pBj+OI7aZ?k&~Iiqhlt=!Po^>Km70f@ScmVZj4dWPsht z9<)lK1?QOBb`(hB?~MM;EME9c0+R9Vaz>t;TflUC1cL~q+Wmqkxvx|E(+tA;zb=`@ ziDftSw1r%hE@?70u!*sQq5&jvnv?D(YX2uDML8t9Q5kBqx9S*T#D9}M%8DBPl z-Qt*iv`?VDL8v_iR28*8(oBF_p5<~~ux&!npjRp5`KXtuH%qw|a*=Ppf$|ic5JmNB z0IR?)Aqiep@*3Tcss${k4d+H}Zz~5Yd{Z2gCn#^ke1#`=)&B|s=Q?pFqN1k|B@nAGVMoG$$0%Kv^P`Kl|qHj{Q)% zF{rHU6PTQ40!(N}RSCu@nOE>r%OPek;>2 z-rk)`@Qg^2^B|(Y7|8fWy5{Z?eoD4=uBmF;LYdV5zKw%(Q;i1a!E6)r)=)e%F3}r~_ zPU?cp1=4^n&Z7x2wqU%Sj*vv(1F$M7LbnAZexC+?#6$r`Caa8as94v4E(#x+-)lMLQ*CewR-PVj{7QKb-aEtfYr9W}h6052O@1rY&?4dNm3 zeu8}gy;iDHzi=T&&RhY!0ZEX@E9$^iJQM~VmH=wW%X}(#N-gAqFAI18&hu4-&;Z`O zR7S%ECA;-K=HOi5;OihKJ+^$8Fd~&az)I)M=K1HpuJnEStyNW^A=b8(m{?ibT1JG&cTn)EI9~54SieYWi+SdPAbUA7TNq$l1KgYY?X4zkM_473!Pn1 zo;2RJdj^M2%0q7YK~9z-*G7sYdN;r`GJ`FwBWk$q_L9W=yG0F5$bNCBp%NuivxhU^ zg#fF!%{*W~vn?SDrOevb+fFI}+XnSCN923HIp0sK)Pb_;Z;0R6-a$MX{9_`+5T==k zvh;MVf}nr^@w^wGJV3<9ajNNK;}bQ_IUlL@94WAezU;D4u6_z3)qLAj0~&g_{P@wf zA_``dysuc9$tlvR8dtKOuiiobi3a}R?**d~E=ymuQJTh0$1(2uZGDL-Jj~Xhbe8Dr zeR@-dWwiTWy>hl!Jg^$S6dQf}0Kt-ZwGHtA;7_4=38;k9g)q>p?l8pVv?osAZN9YfVK+|1BItI;#36m8 zHcArMuw`n5d-iL;-h{olS2fzNoSg;+(0mwO$QzQQLFVRh*f6BNBmuOc{iA!CY;W+2 z*op?Xm?_j2a|kfiu~RFTsz{B|U0~=jSPV|@zjL~HeM6kL)L(u5UE-SvHm{z6LJ|@U znlS6l4!>KfFzE+wfQC~QjZg73weT&85I8}vnD9Q@*aUre)+2a-a*`PaQfK9mFZ1z5 zhpen=Yoq6Rh-SP!_A}`^8kt_bv<7m%ljoI!vw8q3+%jXAg9U5`vv#Qek?I3|TLc08 zq3=NZ*=&LRVT zGc}YbEc2?FV#?2j}d?=(%(SSXDiAVkL`ZXHFtPkTi+nuPzUsJX3QBU>xywc zxp_k*z8G1?Sj3p0AChx3JC+Z&OpujBgC2C`ktpsMZJ#-S(KPGEDzGEUXQ*00a;3lR z@uvDHv?Iz@`cglle1yoTIcuS&EYUIQ;J_zS&ERJ`JKft1{3igD6QleCBb8H=fJS&y zBY!#2r-IaYEqp9%}Sfm0tJPFG$>xWL+tejL2YVYECl?og8ynz= zWbf(e?3Y$BNQ&_c+JlhQMUw7-IN z1hJW30f-SbPahHpKqp*-&c5!W&WR<@T}R80`iUclz7nuni>$MAolX;B?=+{SJCHTr0KjU?`#}0$)_P~( zNRGV|MWY?@IYW0W#c8%0f$D)W>$kK3WDx&H0Bia@8_3E>7dd)I6bzsoRqP_1QlL=9 z5+E6cgR?f=5n>14_=^O6-7#clX8PU}M^v`<3Pp#@W4?bdw0Ro->~)jFgUYw-BwYqV zh*c}2Ch9+RaMnV8R&o=s3>tKx>OCZ#eJSx>u_wLaEfPQk*Czw}ee#?dJby;=BBJo{ zTS7N}=p|F?Km&uyk;QmbqP#4I;#6NyUsmtXGm&UrU*9oR*O#_`bpf8YQ=(X)r2zB? zTd6g=zLK@c#8-fQ6pmdlGLCpoRCyc8) zlHutJVqKEVdbmSF5K0KraKgvc-;)Ui2HTB1!-_*Ssa)u%lm^2Mf0}~Mv)&Jsmq^4; zNypg)H@3d1uN7);Y;3L8`V4Z|eCyD32&-uM`(*ZJxqKi=4r=>$uwv?`_kK?N{TC>tsvwF<_=_VI zeNKkiJQ<*h*Z}}Dop4x5!|7JT;gaO#u*5qc$!gkM>-i{E>$Nd()q{cZ9vSq~(z+ZR zlxh27kSoJe*H%Ns#Pz~5t_=L`0$_oh@f8P$&7_k)X=vElU>jeY&7y5s5W?=@F{VUq zgqO()`(GOogKR7}6tsK`I5(SOXGw6<8p;NAL2{hV-I4^}Jm$&bnRfgbeCvE%B>73R z2M5iOg1nEbCA>e*I^I>b2d-b4;2z+XGia&hw*8z~)ryoC17=kBvd2~5yYq7IpI$;s zX&OGVJK7+UU)@3cA+bNEaxm9M(|RVnH5}&T=tx*wB#645`Dl;3KUIIJ1-5=&_b#Eo z^>EqTQ!b)MQZeB@ktu(pj}%ae95D|F*Oz4^##ZDTDY{n0)nQ1?0@T`+Swh0@0uKj* zDlMlZ(%#{gjms6A5%Rm0h|W~R}$f)5IV zInfPK@~bynZ%=y|L%l#tQ)xR#L-^-7r6AIRh(OUCfDhg!j&oe`1){|v@@i%3dz<7n zkbzo}{Td1Btq-s+6MCHvoQzC#yi|dNhz8uB{?S^6<#@7t5FGe?N{f$u1rZJf_!KL83`RR6Z1s>} zx6vc~sAm6weIXh9XX06Z*1M7sNm+eq6f+zz*f5mRd)bc{PDiNa&iB8MNMF)GGz;}d zq_r4Ut^{=v8z=F<{V&8WK6Y+z_(?K*;p`|&`={s*pYIDM66T*TKiIXQR3Z!$mZez{Mc(e1Z0wBZE2bvddUmsyri zo;;qZD#${rKus!aA5twCm0j@6ibf$rTrLULXBH(hde`;zh0{snj5>&&*`RpCVc{U6SrWtWNz3*)Go)5|; zcO4o!K0~3&K)ckY#&1XpIW(0e{iJJFCHoJYGVx-(TyBg8h3BbU4-j_;BQ)fDt$SE3t{{-?vuwGY^-uL1CF#BR>_B@TGnKmOW6kxdwMJF4o2E7PAm%#gM3+*!$ zWsy$#yD4}4x;FK5ykC*_aK_g&&sRl^{Q@caJVt#}^V1Hh1V;E{@m6YZSk#4jagQGJ z@2#eU_vYpwWfcNg^kwAi0_ zq`Uw>p;t$;&(jFFegvh=I608qB&arV!23A7zJuOIZ0`S#C_>o|>-rtrdDNy32+xk9 zY7Q>{=XJ3O=H|B<#XR?=ge03SYksPwQt(yPf_apg6k5_ zt^v0%SWPSY`8nb|8WW!s$1w9&qEr&iE0V&WPN_-un^5v~eQqDTd2R@|)2(A+ycI4* z=4x_cs2Cl4-5#vE{alPUx#+BOC`)YdC`Wc)$N3R_y;b?+A>-nGfXU=E9Zo%3TklAw;~91-_SS0qhurpSuYeiiqk%}l z>Ux<{w#lU#{iE0$>j+5xw|Fw$Y{&mnG0_F9Em?Qtt_x^)Y_*gN6HYh|V!Vr)W)1mB z&$@%MRRVyK*mZ|n9=D=U_DpjOf!(5swZ+YtY6b|$S_I1LN#^_#UFRE5`(n4i)@WsU z?L>Trc}khhh{#6;G?-q5d;kY}iq=RpbUFK&plBD|_& zSs~i>CG+boYSzX8nCuzKAN;ZmfLr9M%E6$_87bWl|A0&kDM<;tGfLglyre_+U6Ook ztOfx7J5eKI9A?SLqpy=zi=ijd9-L@}3242J@~#x{sm@tJ6wsDi$oX99IgyrG2L#<_ z#ZsN@_Eb46)UnU~9w)Cbz%sWZ80{BmYBs4h zOY06G)qqO7kk605Y6qThBxMI3`fWFDg?tu3*Hh6&FG7Q&K~zR4xQdhvtpiyoeGUAv zcQoEf-zL#NuFo8=G3))#9M}X{7w8!`FS?&rl~j%>aTBJ>#5pr6LBBlDbti&&f;huK z5S(!NFN&nDXd1ZOaT+e%Lj zn3zmAtca^Rv9+WQYF!#zmze1R$3WybW@Z*AW|zOHR)#u6PI%S+h&>-jSmhC0J@AW=zOZqcX_eh z&r@D@>i1BF9nfM;g%Mu8vEh!(6j7az|J@pwOBmn)nmy_Z-OO#$UOLt$oqnD%X(f}-#8(iaz>ythX@DhlV*r|X|TE5^oH zUfNLCR718fhg)Fe2@04IfhHae^zr{Y){ubU3#)k%0F*K*eSI|W=tQt|iD43m!amQF#R21XH%=dT?_|B1eDdl=S(9vPMG?KQ*h4(0s7QU-%9}=E^_$!E&f6EYhU-v9FM-_=mv~7i@zyP;~YgnPj$b4 zU*j>-R%F+Iipre%o1Ets4qnEAAonXdHZ=-%; zDqMZU%Ej(CXCrEnTjjy47Ma+W#)klEkO5fWYD4>OW6jDJ715zZL9(Qv!hAMkY6~&X zn*X<(VXevL=weDPRU4Lbw{}rj1@b4;I}>5mVdfKJ~gCfa*~h zL+kJ3pFpkEijsFvdRYFtpmF|8-T#Ki z3`38#QnjMYS-H4!to1#>TEoSK=5+i-UHzV-i2$f@6FIZxWgmH6JWWiX1_1*@eHVI7 z!9#hU!f%GBkqeztHB-)>jHt-XlzJ5(YkRv$eiVh1lec%^yLX2j5gU8cW{ z?C-DA2sz{uTMw=GlnfMf2uk5aqcM3CScTh5*0?XYD)PBWg@i-`Rwt`1+Ri#E&4Z7( zVV&Hezb_o0oD_GI6NY%^E>h$8ul=l#{vo;Rb|U;E=uE?Hkp5_ZCC146=2z7C*Wnf2 z-uGI-K=CeQjPQ~-v3W%~aN&zFG3MoFP$NO#&-Q62TAI=otG4ciNt=$=yQ=f99i|d0 z&1_fHyWJrp#cgU@T>N57NKKzu*W#o z7*&A=B_*kSm_L?vb{jd`@ACIGlY{vr50`5&gkC)dLC5!?-FU|-Y&JLR4^yWzw4_J%HT5Ca!pYBR`+FV6U1d^nSK ziA+GkRdNjADmalHR5X2`#1jNFo?^-VX#Ivo>f^N`16vok6QNA;9+XNbRdoGcX}|FO zz3ILdINTQ2o70HvWb1W)q!%Jn-2*&Jb(9Mk!vEuVn=KQ$GE;r7*s-JyRQ_Ev%36s2 zi4XT$kq*^MgoU@(SW&NZdLsE}B&p5m?MtBrrvj)*JNjUh>Un^*l%nYf`An zdWrP?tl$V{2+<_-aIjoPI8VR+VD7iV^`@=tpd|rT5+Jg)F5V|~oFiWsZX(J1ODOsol1+e7<842Xm(#AS(@64QAZf{Wes0rw3Up3++D(pZ?Q3tyOK#!Qoz{4SK zsUM)_OFk+Bbg~fa&m<67C_G(XEE=prV3m-fh7Mt!PXvk`y2ARaixRQt7&zIBocL!{ zoQu&62$@$BY%CQ&Lh)R9@chex4HKkjY~gN zEeGROv`&}xuw!X(K~o}B!})@CF**+Q<9+2ZqQzTjpq6vac}Whl>oB|1euQ>O1+9UOpq zFRkw9dU_N-d{-}l6sW%9r!Y!8 z+Nf{`4up6K5Jb|4WQd}G>@fUyiSxGCQz)AHWRoX*9%gyCyct0!=P{X=Bl!*-zG${E z%OFR@CWR}Ej%B7hxL&MTncUIE zt~g^oaXgpn9sBKALIVsON)R*Uq!^Da}_9= zt)n-cDn1*Lz`60QjD{$ak!>8tbN{*Qdw;jYY>|F0kxE#BvF2sEm2YhV#{ zd~5H^39{KF>_>~$(~AXIsgTFj)v6lQ&f+30D{CwcS4llJcjvYB&DX{^n$=6aYg2^JtX-^pcl1K7aV)V*l{4qdQg&0334~R93vD@P@oDeGvOO$&xL; z`;PCt$#bhp7-)oe9-XN8W`EU>3V$2;m;yA-g+m^~sn0kNLNP1O+!z)owg^f>R&IN7 zueF|@IOz5}e{OCPyUP*`&ZujZ?_zV&x_uARk+a>|Xvnh>T2P+tZ?v z2r84@kM*^e-}&%3xDJGE?L0w6ke>6A5`P#@nZ(z2LbCnEZ`Ij!@RV|Q0P&+hhq z)%CBGCg#A~>d(H>*T@3n|Mt<7C|x+mE&kw^&du)7(H<+xv1#RqyYH@76ZdLnO8M0s zo^jk|)d@F5eR_Z_;FRc5qoK*o>ohS_^vzgFP9X`nZ?O^7txL&#(1b4w>u7(@C&n&0J)1-WMA=QR6`$ znk-F5$OTXNrjPh|3JM1+3MrAIx<^f<$WzOWu(eI^yhx?jmP;Zb?T!>?R#gWWtSn5i?&n6&hWBUf|o*4co0>H2X*>T!*JZ5F+NcsiAT^}X?uOW^s` zbTIQ+xw<8%?W<5|q@ScO0U}?hUR)NM6RF4+Uc(Oj3k~2}g9<070qG@f?%0hnndl+D!t%^)Dc4$ju^AoR^#+lPBU_=f{Fb zB(96rAx#7L>^|sjb)#Rk14a#Xi2B-}rulej*WKkbviOroV|98M!i66^eBkn5)hSgo zy_wLVXeMY-R%V$KhePks`sSsqr{_JunN3PED<~*BK0fU4AMZjt-P;}-Dv3r!|F`59^=f~$ zKshz1Z#Q@yOdx2Gb)^UN%wjf|1_$;84{Y=*<3%LSSA5i;2|7EUJ_@?!u4h-a!<2k; zw_6JM#yiiSx)qqP=mQLgB7tgMN5wr5f0eFwcO#@{ZKS*8TlJ{Z)}{s}(5*6-GVuAJ z*_nO_soKVhYv&Vg@hL3`5XNORs{AHJfCoKzK%g4Q`bIA=ge* z9OE&ou5&S(EfkZ8fPxFc13B*UyMUIIfpk3%#9R^(Y=sv!0#H0cIF6<)&_iTo0xCE@ zZvRRMgas6+>KqvJ2ewYH!bq5sSmeFvZBsn!;2~l|IQzCve^#tIJSb zh^=yvc7@(45@*p}f(BLR(Iy?Sf1X9_f`=eFkG{;IhQQuJeUaR$6{qz%W$)g6XUoZd zSp>*25M@{A%{oV+oIV$%DZnRndcZ8ny2(le8-`g35M^g0E^JkcJr9OVec~3jYD$vQ zid#C3-_q(=kjCp9$ZWZaZPa@}i32v2uuDJ{cY~DP_j;bFm8Pa6ulr8}$y=5?#3k^S zs3T5aX=w=Dz%D!S(fx)&6brRGw43Yt7+UK_`R8ZU8k=^1)9*{r1%!Pm0yqQY&Ca&NumH~l`E7CW_I;G!8qFpJIZt#iePJY!ny76$ z2v2qj2AuT)E$`m{NB#0fPF9QWPi%OVOD9D75B?v14&Lg1V%qDDKQivlg`(o)!i=&L zu?3xwx6Xw^;^ShXh~1Ion6K)_2Z_u#ANc5SOA_-SVHg_ju#AcxJtq&AWU##USPHfY zOcSo5T+{546Rw&1QIE(Il=?N|&Ld66^kpuZ4vaF{lJzN+w(|GTTa z&M1qAsmh$7!)ss%SF$9NJ2SyajN$#0UBa$$9UpD!!pY^htr$yLRE}X417{53+y$W zT$KFKOHaO)d(eBAB|#qncbqO3o9->g+tpg4rNZbKlZlMqgoJ7wX-+={!>pM+87muc z>m_)?oiwLrK4)NMGlkRh?~_z2FjuLI3+4Ux`>Km5gk52cryn3x<$)NE?(#FdKIppqqn*L!0KlOhDPO9^|`<2T#Gw97w8bI^1Hw3>v)EdIo7QxYu0G@M@m>i zLR3T~{A*OMlWn1plzI9$_Ah|2`r@OdUS{^gHT7;Dddh=?qL48Q)0GT%mW5Lrz^3VF zFM(^&;!U!6UYF=0a*7mh@pk_^kf`OxdAz@9SY^1Xe7u=jez;i4dGOkr(3)Kb+N28Z zI;9_ufjYy5>vdvxQV29nA1HP(){!NO80eQ5DycaP9yGCrzOL$!)XbZjHEHm1G_Wgo z6dSf^4j;Uzd&f!!XGE2A8nCZNn7q9vb0x5a&Y{5X8f8ZpwGK+U!og2dD4=3x*flMj zjl7QgAXs^OHGe}je@i4C}6R~!CC>I*sUf)w{ z*Ws561MyeC8Hdd2_eo1nmwe`n%;d$MP4hcuUWii^REO{Z{CJXt(RaBD;D65Mv zmb`;NL`%T>ZA3sXu#h%@bHJJ2Y1*|UE{X0-M5CN_HfrAHW5zH12$9*ijh06)~VlngtwXD*OtN`IOAPi0A`@qpq`ANUni z>R`%7o+Dk@#XcIVIvLul#gNU6+K`UazegBQn1WCio{vwhm-p)y*?-C4-J{c#W@Gtw zCI>3hQ^6XHHwwZklMG;b-DhVQTuwz5u_( zD|Ri(`T{c4f&&L3-=?=FQ{@4vHNs{dm#0}MCmbjgk#ZXr@-6sPQ5Z_R_J%>Sz)xOJ zPk6}v0y86g4l`I+Tz-c6RyQV{XG;_r$=sqDi6ZahG-B5dC|4=uj_hs>f6$1d8b4c9 zljm31ME&0BK~5{E#YZ*vmCIsU7>F58){zsLh zoF}ye2A_+w`q3eeDS(IA8SlDy?eiiv^+ifb6|Jc;OOM2?}=kkYHjx1TKM$B1h`q5w?@l%eB-gOHUBe4n#m&cj&>5eS$7({aA1NCL$>P^g%Pri)K??g^iwmph-x zUHEIQ9Y-deFV$}*l>D40I_O)E^fzI8Y9Ty4hy2g?-Eb^sm_(D#@g%wt0)uM z#VzR!#`?N6PUk8;;nkCasq6t@>c~{0IwKU48j#g($k}D%XxYx|}}90A!1i+JPa;1B zODd}P>5CHX?eA=oE5681x*^gs_BR64r*`ZHsK#3gbyo6?X3pa;4&$2~HDJjK*SGz`nFFH;~ z9>tz2^9T@L*yVIp&`lv+8YnRHGW~?#y!m$nk)%JCSx?{f;TKVOqAvIjSB4mNKf(r zVu;DCe>{}Sty2-~%;nCk?l6u4IX|}|<0gXwSDxGTB>cy}Q9zF%mZaZb%iGN%Zc-)V z&lrMK=QLCnX0&GJWFj&PcKZ5!s8|@M@??gHizBEZehH9aTl8-}0R0@>`Y&t9$d4g! zLNm}^>0@K9A;N+a@d2Yi@qkxyF3Q29#=!|3J#{6jbb@WxfcEGDyq)nDRDRKK?63Q@e#HO-sv*Ev9QnclWn)PtpuX98a)I zRFJPQ5MhogP!?h>GvyDmkm<^tHa|Vflzs?2QAhg&^iA?LN_+CqEi9&q<6qzor02+KX zV`;^zVvnt3CX7(kCJtwolCruBy_9o{5fcsjS}qjiHjDo$7F_5{W5iNFD;H}el- zOBq(gDmO-f_#rtocR*)Kvili_&PK(;I}*7xc1T4l)^>#-_EC9z1SxQy8fAJRmzMRM z_#Kr@5sXE>I5Eiy$8V{GK|`hNy^O&51-LkpH3gyrV${hn?CVNYA3}w^_y{5q$ddz+ z?(REBI?2F|9!A1Yp}`i_rBlnn>*{UKQCtrQ1qeYJq`ZZmnY0#0y_e}uHuni61K%TI zEVz#E#JvD4g0p+25@m+Ms7)&3u7Wpo)Ib&>2jdtrT%e9Kkq*U;k3nOZolA9R29 z3SzBeSJ(Prk-K{|{g|DLqO%CQpP*cUIMHq7YbHE}V*H-8;e7uh0QVgCWU)qLmpY^A z+v4R5sA%Qxjx6c0qlbEhBu$6#J`6FS`ZI;;gd+p_6sl{F{Z0%*I)NU*DVk zSy(xDElV}M-g6JBQgN2wuFu*5-ZUf1D$d+NjFatb%);By~|_?E&WSVISG3Y+_mMAqU9d_laNC6ER@7~ zhgMF&vBSvyKHJFMCOq{^mY7fLN*Ann;^0`jFad8faS2j5wjA7gn9N3qx1nc7+E3l6W(-kx-%3iMI`Mgz?nHn5SXhvLWXj<=zwzNq$eE)>x5IB{nnaOzyT{ms9 z>m`7pD)Pz(6HoW{I#48PI)`t3`%$@Ka2EZAZs!+*aY$0Q;KqNp^2Ic?6jmeG!-kF2{=X#F?EMp^iM_q?R%ALr2B!=p=# zXRFVz?oNSQ70!^0i>{_XH!=c_qod<`F}XM$bvx`iqRM{xPey%UQb7tY-3 zv$ISI6U%GP!-~??hRS8<{`15@2?2qG{I_Ny4e(z@GB+jiA=_k0dq(WnN#Ae;6Kyl$ z`O@W7n%N}bR1kqcN>B~(R}wX(u}SW4A1v*u1rXYT27%!-$~0oZoIR~xCmQV&-^nT3Vl-Brh@7l8T2ZMiw3nvm&lZ5Ybk z`@WOxQ)gktw@`U&Y40^);Tja6hHJ*LpWifgFc0wZo_MqV{%t$!TQ!_8-F=rc!?m3Uaik?tNky{oU3n#$t?o!Qhx;AN7Lyws55y(L!3*p4IPWUHln^w10ob_6=J9Od)mafBbwV$6$X#cj}_Jov>T%v zV9-eZ{J0H{Sn5Mn6(N&JczA!+xqC~$lj}~<8gRt)xBXj4(`91`z`oP}stCDn2va=a z7xg_q^8&t%lED$yI+L?T+q=8Fhdk$(@z9;{(NLGzP@)0 z?4~dVW%$@o-1}r#e^4i!gnPF1UK0qGSY0ciP)jcnjD~i}gqHcf)LUs}J%Sh8eRPpsIPEf>68x{2>yT>f=6NxBiU+qY>Q^eRO5C0+Xg%y!Z zslZ+*b$#-fRPCECwRz=-jkoIu(!Ji6A~G#<;KzMf3g1J@8L%3poi&fBjC%EBM!x%x z{SWh7mKV_ngAx7YJ${|&I#Y}c(`>p7fj+|Y%h|aDF@dPN;`0JdsLhQNaf)GwIYgZ9N2zyhH-8#xaDQS?(7oh<{E>Xyb-s(dl=5j0I;zS9q2vzRJ{x@bgU%mo5icE`2pRuUkF$sA~j15 zDy{M41K9at9XfR$au~woyym9u9(DkU&q%mcpx(fX$ZOsl$pFvL?e7SIk75Vq<2BbM zI~~l`!8r}IzZCpNINi_HVG9%)4gj2#dPpDd{-OV~B?EK6>vNHi(+gPVkDGH|bH9V> z%C_qPlU}?m=Zbf6=zDV+k}&OBPHJAVXK5ciM@^QOXa-pYo=dI-0{?$3yS3vA)0d#a z4y0ub6XB3jpiU+4=6QEes4ZV6tO$Ia4GUE;5SJc>Q?n~#?*O-~pn!=yCN~-h@4~V9 znNjoQZI=rLbc1g3@$Bg3oahg7OFh4P9L1Yps?k(h?i}p4PDZ3b@?DZ$?oUW6B?nbW zUUMHD4m&$z7NzHu^yY{@adKXhdIK9C(Xzr09ho$`!awhRsvSU}UsUrIMYjFCv2G)U z|9g$cRdV$E0XSPx`tlqRLqW%zsKmGUA=SRNtRQiwRiU0Tg^F!3<42i0GqVWgzl?NY zx3?{P)cm{M^`d;*R5V<;*1rZVr~i9`-EzDyC9oh^rghrc_tF<1H%0pk2kxGl{4B0Q zher8Tl5=?9k6mj1vPt1Td6>Rf@sY=5m8BQM*>rCv=C>K_Svz4dM4Yb2XYo#%7?WY3 zH0vGP=O$A38AeZ^Cfqj#$OU4QGSiBmzR;vz=y*A_clmhcARTbgv=w}P@(VcLZYJR9 z$UcWg$jjU5M`SB2@zuR^bRO@1k`uB~H@zh8MX{D)2QA}B9jf4S(~$?QXbj}pHg{0$ zvg_n2q&#}IK584uz<*7~x+JC5+CZk{c%@G`?1d^@k!^KTrAkn9m}XIK%wcdCf?0rs z8`ULI*+e;lqj{=-mdhIKR1K680d1^?c_uihKGXow9iU{*AjDNHxMMlN`~%SggiX+v z60^Ifv?bEx?8j?*0{`}=Mt-e>YjE}+qAe+a;#5Q-3zcAA7)at=Kc>UpWIEB)u4`=z z+WUm>8gjJ)IL4JW$0d&T0S7AJg)@e@Loy9bGP-E3?CfZsOSzJjmL^fi=<5R&8GQfA z0VLs^IpBs%$C)t`ELZFr>}^@R*mEo`he4i4@iKM|U- z+zUoP@m{bBl9>noYx*cL3`oRcvz$E;*PeBg|HHWctIGJtCI`&nmw+i87)O%V2X6F1 z_vfE@+Z%8D*@PkmZvK4wzoz)$vl8i`bLofP>Bs5E^M8)KpY)G?S9@qCzRp0Gqz*c4 znZ5#T3!22^Ts~M~9ANfew?uFVQ7YIQAQ=(DpezUhR)~1v#F17o;^TXqT&$^blU26p z$VS3Hh)?+di5R0O-wYrVm)3~>>DlM9 z&?sy!ec1msgJH;pM06iP}+2bcFG-3Ug3pr!yK0e8iAXnUkbs z|CE;~+EXn@#3L^x&seZeZSxERZSF-sMOY}h#fQ(YW3ImL{1jbYbm>S%qV3Xs+sug)hL8nKxMscvM&1R^=mbxli4E|Vz*B?Jj{VA9hLO}Y#cEAuz;A3 z*`JX^8tX7w?~=Y>uG5rbLp{Bkotxgk7+;radSz-*YOpu@Ab?cLWy6<^o;EUMo z?^D!4UQLJe6UadUFv6hF@A~Jrp`fP%)>h0Pl=_nY<6sa5G5>Bb1V_UfxIx{ChWYZ|1eDuH}2b?wD9at1#-%wE1|XXdZJwKFx) z%D1uKJ$t&f1>BbaJ!CFlh+{Kecelx7PGi8FxpPhMA$eL0S+2rCX5hmgf2Uu6I3aJ!|o4KJaPg>~r?szw0s} z89{bU0Gk)RQ&YVSGI{Bp0O0k+93~esxWBLVtXQm}LoB4gViaP|Y$DvFMga-I)zhoB z7&Vcrc3O|TJuBC3_i}x@+1K~mg}^mXzMv}VS|~VMhqt^evb&-RU2DN8Jn6}UW=JBM z&E2-=VFAS&CO}z{q202g!J+n0#_tuS>=knoavYE1)0P&(3zGo0SgFy&Mp0vIhwI*O z^($tA>H4W0TM^%uq6*frrR?xbLMSLU^<=w4J->B4CsOc{wAN4SZirSKISJ)u^=|DVOqPf*_`UTC($+4A7??OPfxu<3hCnSX66i~k zj$~))8qsEF)Ux^EE2;injnEhU#56s{{jR<&67Z~rL$2v7x@|WX-b$ApRomNr%9H4? z;2j$p)MjTq@B_E9u|V9vo8dAfsk1XW(+pt9tPT6yDo=Iog?CneC;7Ji9|J>O{->#1 z5$S!(dA4(0;|ZcP><C#Az-fh+vaJOcLeZ0zi*( z>;g{vQRt+@k~O+gZMeb5DZ^OP8T_s(a{Rxj6rtJpt57^xgv%0R+`aGEOukHl~BiYU6 zgdmR?DPMB9xPHPk-6}QeICE0e(^EBC{yG-lTl9;Ak4X;nkySW{1OO@Elc6WOY%Bxy;V6aN0yvU!lMSm8)kPXQu4U)P=pzC)WXsk4O(Q@D9~4|(xcwc32cU!%2JA8LZu~qT=qE-61cTBYEYj|tw-n3P5*S2$LBFW|X-+&}1b)FU2*Ly#R1!IsR z!pO+NHa6*N&%$)N2kk3e)|(2 zEpJ~7ETKeYAf2-)Kue8Q7%`8ZUkNRbph8muhr=cI)# zjU_5Xrpi&UHS^`mddnZ}pOn*~28~~o;$n|^&omh@BRiukLn~Fx@D^(v(KRv^)SJKb z@VQ3YIDEuy@*$td);$cQqUbC#H!GUWg$~hm>bI|{(b!rM+Q|1hrp{@0B(2^jF34ofqAW89?SrcJbDL!!AU}sOKvrh>Q66` z`7nYQbTN!1F2AOsJ{R4c2|-2fcWPp{ie$}{q~YlW)~4=Z!B7hs+3omVU`DbHeJZM< z32%S6LELci%jWMf+RGf9@ozr80Bs}=&lDgdoSQ2HC$rHz1J5Gv$3woC_E;Dtjo=gz6~1yr zFMVbDfrCouAxLt<9gWYE*TaIVS7?{u)+E18NP=3%`lSZLMU}f*0lW=oPx29HHku=4 zdJF8%xCc(+?UuEc!=M(W)sZxM2RWMV8*L6Q9v!rpE$(^4*@)&{pzCfo#_HlH-^C>notk8?1tg`4|;fPk6#*Y$P6VbwP> z*O&eMn87M^8-fDG0)jvC0m*p^=ru>aw5+TN%=P{@Q~3I6jQT@|f~B)Yq35S-XZ?q! zcg`1O+6Jg`+SZ!f$UD7b5+K&}tqK&IFXq3WO1t(FS|3yLkRkZJcPI}AeVABdtGv68 z>8b3zn6e3rr4^fWX_;N79_fFS_Js>{T#|pU)FukteG^xtz{#qz@0?eBm=+Q^qVZi+ zV`Sg)#w?{U`FlHmoBnMlYUsW?_EWmD?YdO(dAs4XPd^pj8_x_;V+Xx&8q@mjXT9@4 zTQ5WO*-|)jW<)>kpyhkCb0Jr91noQ5y>G`oEBd@&6oOAtj+{S9PySy**axls?aXE4 zMv?e?)NU$Q^L`0?ej@FBWyZ`7Zz({3GrUn9E*Qzu6LGf(r~+oj7=oy-w6w0-Sz~^5 z;!J;SEnsE9Yi&KlD0E)Fy|@T$!Jve$%W&sCr_-6FX5!N=2Vfm@su2#qudnMUrGYqw z=@`P4+q^5OPj!X}Hb@=8q$R9jLeKcDzT?h#`5D@5E?4}ww0i#d<1`PUYDF_CUQv!D zOpy?qh+(BYt_xwU>aj?1oq2^2WWTvI6H%s=V{GuIcM;5VeEiRs=ARTYpFnO2%*a*h z0KGc%9FN|CQ_+yCAbAYp1ORRP!|ZDy__@=wA@IT63= zF!lV`W$4Lq&R)o4Emov;7&#~IM)(T*bUX?sS_Uko$DW-tr)K>_3N^*D+ zf?h|rD-djd*FY)4U~+IzuP5RG@=YFT|%Ds_rB4Y z;~5#NHH|>)HG^wbw>MdZ|}@dmlN0$`0koO(C_affDk~o5{ENEbzBV2x*}64_u)R+qBgT+FShABk>o7 zy__dNZ?mVrr*NX+Bquhltu~vZ(t$+_*Z+Qz30{Vj_sR?imHjEPrQpO362P{m zy0@}Y=x2M@DD#wv;osL@9&RX4@FzRg0Q83jTUZOpw5G-)O>C7g{$jr4=TCKie=P^D zV5Rq{iFYC*0)m1uR2cq|!1sA5vROBE&94hL7LR`5_Qc@p5>BSmX;jD(UU*TcqcK_% ze;eHV>NmpVXn>`hJn92pw=(AHVlRhhl%Kzp zlX5KEzIq9oEZR_vjmohxQb32s1B4VopRnwLTqLolM-5#pdcYkV&^)2YVSM7?} z0raY9KM zQMeGXE?=C@l=2&yp`IYO5BQ4X)zjILQVgXgH9nE7i0HLbLrV3CWc6l)hZY4C#4anO z-|`Zs_}xk{KhT;GfKEXMCwNkUix^y|Cdi6)t%|C4H?#YQWXM%rKdAg_(Mh<(>_Y45 zrw)xmtGyqF(tY(PsHJM8COm6ix;Ri{z%VXDa6hV4-{j?#yDD?3_iwB%iuH+usK#7~ z{sSr50PvTZqFF8r|4~?{i9Oa7^41!z5Q7%}v>RaUO{(6YfB+Z=s z7BAwSZ*od*az$fVJfWW@oRBjAQ}OGd$3kGbAq>V5PP>>og{(ETaUU{+OxYVZqMiF5 zNl+4=6ujtes5J2d%1ag&>k6VuR8qiJ$VI^VjmX58(W?GNlM^of3TqCNo&yW3tv}p{ zH|!!@R?nb$L&UyD{47blp3}=>C-9mumcMN17sWI`ZL5UL7w;C*b=s?(&o@TyZsz|U zNWObcW4qkh>2kjF^~A~QW3i1%zOzr;8-7M(bV_QNCO|;Y#7;@MCL`;^7<*c2Z}5mQ z`}$X602%=zX1LqaxnAecZ=$<^M&{5_D*b3~yRAZ;EE-5E#-?x@NR`eyZx*||g%>S^ zM|RW0w3|FW?O&hAWC)fM8>RWPe&tOb>e9A9elZdf`o+YK`!e|%BxII^4-9CqL)N3n zT0@^0d7n;V8|`K|bb7XIE4`+DZeDP2#*(ZWdW!nMbTHcccvhy4Z&z7PPpU(L=_mEk zYwy<8J}K`vGo;Tj$EyY7Xm9%1D(_Dwr^}W^t}jrb#LT;~FW-H-9Lt+l5zMrGT9;WS z4s0H-G!nFXon7XIrtksW3aD`6{;qtAQ-@3w$65r5I_h9VhKF{4_;n-}i{`gp+-)JZ z)|z{5M=xKvkMzV7=$f`xg5l51p=Ur}sy7q&uxhnrw!9oz9F$a|EHO{Gq!$saEIV6S z@%Z?W+W9}&%q(D&Y*Ww%eH8oh>L+7w0)II}bxlpLwVQL2X!yj>%DvsqZ`z9R!4+t{ zQXTbxL`3}RZ!k_R$*}6)Fy{P8+&t$XJrE(Lg7KIZ8|rpT-9tvD54JHwwu40i|EL*K zQQC(vd)TIFRo6hlb7Wg2vcYYDdVSCA@j3igoY=zrruPU2-6{}LzY4JW7OjGhJn`}e ztAphw5Jj-a&oV7ku><}Wt5Kuk4}UDOeF>fme&KW@i4wZLrg8vAQV&~cz^5B&7Jg?1 z7WX&)HxA6I+3Xi*IG>&N(CoHW*|lw#e50YL*dc< z%Q|(zrOGf3B3u!IzXuxNvnfaHu3gST$=c!x>Vx@yCR6~x0aG16m($e)m&?g1`~~Dj zi>?p%7k!ZS+jS?#p^;>XdMgsQ9`u6Loi%e8F4Q~-#g=0|9i0b@F!TA~I0i&0p1=(J zPu8ZM(2D%TI<)V2=$JV{+WQ>+qxMl`S>tGUoljF`W)S-ui!5_;jb@1|dc!F`@Z2x7 zxL(9w-bva+T>(D_{-O(w%<0nL;C)(JUPwqn5u+`m%k`QWtz2I7Tb^dA!Csk9E+p?c zkTnLg|G}ru<34J#~9$1sN_Mao^+L zgoeiFd<_%h4aA7Yw>0@g=nBOMqLK5UXwRZII3V=O2*8Y&Tr;68i_}*d`y%Wf)x{oq zFbQvC@%;S#`&jUw2r1*#_2d^UyShzGHjg4-(Nm;!Q2&K;)%XnA9T$Swkv07qz{c9+ zrpIXR&?s)YT?g_WDME#&BLqfHPvB%rbg>))&ZM} zr76HoDr_Wg#$FH5{1vwO`e32?!z~=9d$LN#+UgEa8xJOOuxF;fW%r2bEDc@UM~%Q>3H(!j-f}*5L+u z?O;74rbT|c?@rnv8_Eka9^$@j|8j6?vqeI2e0U_f1>aDF^NW@Wls_=zV6V*5-rm!9 zvr_`D!(V;@gNsiNZ;8u7P`Yz-JI5%#{ZSY8c(j8pFis0d*5G{Di4As^!g8X1y&|;y z6s_Vf4n6nPL9|t*r-qgiMZ@dqa+M3!F?2occ zqZwhrV#4Ck>8Vg|#<36Z_S4hF+S;PDG@|StP0cBXCZ?Oh#x)ITYJ*(&7$Ar z<7wjUjidaAx)lpv04R7p^c(y<|Je==;+wWJ8tv_NAF0j*GzB&T-8M(#j}`*~%=LAN z*ObzL(6_EM-%^V)tMqS9K$Y_*U66s zL=tob7~GKo5nYp|+v?ML@0Ywzzh%5vr3G?Nx`F#)akLk`cN~&&;xFS|&4Xq=+Dll~ zc5vJa^`w@VI+^DX4pG>jSe6iWcsFsGLf5CMepg93cY7hJhE74~R73Cm^=TvT^&f&N zg4x0@m-T|nKI>yE)5{*G|AZd7?0|HZ9hJI^=R?vaA&QQrCYOh$Ml`|?i` zS1zi!7PV|o8nDNC{6!YltgJ5TJPNR33QEMQ;6);}rzs}6`U8=XCWZhSus1V(aSmWD z9rj39siV8nC?f2lnbll}DF&1zrVDeXvF=GHa1WZ#SpswNg&Z)FtK zsEEL{AS}S`3--wiyORJF6Tg9|r#%gNjP~kHMPuzPYB&YpyHNkWM z2R*hELS}fmt?GY0TsvxVlazB?*HNtyjehfwH2Z=xE*E!>81^&jnN+EXY8=<^)R`-< zC&(UO&}eYXxk=X=6o^%>GWRJ+g|oz^vsVYs0C1zkp`kn+z`6)4B2jwrrS=!C4SG$c zg^faraWD#zBnw+lN-yQ*$1+GzqOYu8>U<1~pvrB!r+@-eE4&{=0b;7)teySCQf#;f z-*NHzIfsMYr@_wBI9l=hozi()zi>5K@ z9-gzs=+IVV!e;U1Q>Q_3L8R11cMo7(9=g*Hr0lTm3S#EV{y#G-jnX2E-Jdm1_?i8=i@jAiW?1odgcR~z2j&d7< zb8)3z4!_~N2}l#aKjL{|4As?s@mAbPm7U9!=%=9AQk1yf?Ppch@e`a^_}J8v0>Vu( zqd!(gpPfDwWo2dAOph!z(JNx?EavUe`@yH~=f5sW`d+_2N!B&sdDWnW+sxg-^=?YL z*YKMoncg3f@YVoI=LCggQaVqP{6>hkp6NwVgTV`QUJVA^THZ!JGbsNkk+lcyBKnMw zm%N=UMu8*(@p9&e&>=~pl3E#*lU~4SxD3CvTgmPtc1~awy{!R-Ad=x%qLI)?i@tp8 zrDKe;Jqk~%0<=`aBVCjgB7h@AzioQv21g-Dk5o;q?H$y~KhMLo+b&$$vQX|(5qREA zGDTHqR=SB5|9M8M5(jeClcU1PUX@ge0$SAgA6uTTm%P2;t!pnK_Em*?#FyfNM0I)! z`#LQXEO*`~Zzuqflg73GBP2tS)V2E~xX^^!5gIfpnTxI+`x2X_6dcQcS0IT1G-=eE ztSlhd$V7gTntU9KVS4PQ|HUKSrZAHoy{a1o~r%xWqvP+C`#X6pwYj z7me=jN@U{a+watSnBj)Qv$Rm?lWcTPo%Oi`qF#JtD=1V)oZ%{jYs}*X_r`b#XUKrkkZ`Tg4{+qS&fHXfLB!pP+ z?3F}{)2{WU0IutIUS5cgnw(|Xt#8~{x+i99SDPAZeswm@yc3+}d&icG%lCPE`*Tsz zEFRfEL+)FD!$&YX2i2@3?d|c+5qfc8Bd;t)bM-9j>T%Y+fWQ_?Fi)?hM3&!c_0igw zOxvZl!7&(Bx=xEn!iA=p-b8eNetIZo=R&>KOi}d8)#F4!XYM zQJP%;jvo=Y5Ab4%0IfF`oF&y7l6z?*zM-}{ELDjsj2=TmK;Mg>zw|pTN;SMZcksK~ zHF`MtHu!3vu#=fa#OD_3&HmyW(_BFplfRzco8K{E(#@Cf@a z(0+7EW(3SUxPTp5F8|Yv)S=uRIN~>2i=f>#{~l(l_b2UI!=ddyBXsJz_@Y0_B9>Ov z?^20)Xjha_^)(eCXv^Zc)up)E?I(Pv`lE`|J z^bEfVB$}OOJy_<{J6-ds-zs|uAV30)pt7(vC`f($Kj7Zq^d-5r?l zpM~nHx?z$VPYEhkVHi$9;HdnyP5Wt|+)Ve_md)or>8T|?<*)v+_W|!{DG`*PAFH|j zVfc-N#Ur3rk6^f5iKIhkBQVV*5H;wPb_qn9K>T?;+_?MqFl~4Rw`VvLQRmeUhivZ) z9fNO&%nmfdx7|@(LnFZ1Uu$%K(oFk6J_|f>E@A|i_g*@RoRmG!El_uGpdK$0Y&;Z-7`$T%XJCtVPb%Pd-3%=PV+XCnhQ>U)*wY?Pv`2 zor#}OT1XRCXxer4%E%My<<-7Q`d(ZM?N<{>8a2lY(SKhAT~+URyc3|L@SZ+n)Z*uu z8dGYL-ku~Y<+5;GmihI5yrJhp?blW`PtswQOdIJ`oHsBGwq(OaingpB(8{%%$> zB+)!eTrS%HF%o$Z~sib zkNek|%ZdZ={a=g^OrOZUipuuLD@-`!6YjKz9e>V4Ig-7AxNgQ?HnGAO zw1gi<-jUIYwwxaikju%XrVdO`0b6)m|IG;UGv=X4NiAV;>X#fV^J0QwwfMt7==tia zB_ZZ5PFHt%qoO*9c-8^pG2uHMnGlg4MN#N<=O}=|Q++r|jk~`b0D5mvwhDmC4lwbe zoceRTHcKmM=;HSO1((jofmu_mL9#|%=ha5LLuWf+n-WPCZ8bOBIH_{=`ERuJIbHiL zd6f0(9Dj6-+i)-W_vOdjM?+Gj>ppKDj@M9bZHIXKt%{zfTr$|(qgo52U!l~bLMN?Dv zTi3$9C5Ddb(I5bvDJoJM`EvQV6SpXI3{A0wH5~Kx zGlV!Q>W{US%?}hd8-MU2Gq1~k69&d`uUfk5e1M__?C(MCBLFIuw0`ASGj=ku+Moe; zBl(i~7y1fy0DZ0=;lUN)GQDK9CmIfj=@#O?p_3WTOFaMtrjuTUY<$DomYvF0RR&ZLFu;m~TGRT}60bhqFLq6WY$xOL=jNuQx=l9{I7g+FQ zZ?~45h1#h*^H%hZW9P|X5n6>Hx;zTc{9eCmN~Uo;RJS;4SI2S2+)G;Ve5ZYlf|Nw<;1vr=BJ<&G8p?wjaN z&x;S<74R$eCy_M%%Zdk*0ZtD;`5QgwUZp|TDgEoyb>4Qi6(n0bkI%r%E1dSld8%{` zLgZYo#Bp5Z)ZX*gbf}z`b`>!KtOSy{I6b{n56uoA&-3)M*52@D;5G9!zU7mtUctN+ z@T55%o7$g$=YD9iRO5BN69}BIX-TBTlS;pPU_0VOu(IuJ$A+u@8Vq14>!{Axr>PBB0U@ENzl)) zSaHcKdCm6%^hX^5D4w?Cns6zMl?aLgx%bnSXVbpE7w0pLM#FeNXJ%3x==bU=Lqj5x zhO^E}oY>NBBKEj8IW1+YWlmme3R`^&0zWP(Tksi5$WS%THr1D}D{s{=mawV$0(+|z zF=A}nANgM?KAL=F>Zy)-JTc8*1r!UTvVduIGHczsuw7O7&@dyrth&dWesXv$fH42J zd;JZKgGQG;5$37ldy>dLk$j(}K`v$}HPt`T2DFy#xpu=om>~U(wy*@FBOp-5|6+C8b~>t^f$q zJ{;GYB!-CjU9WQaeHP2{y_j8YJF(6f2vWfFO8Ux3kh!B49(u24=*z&!MdTil`a{_A z*R%y=iVpbVBN&NA%9r0EcA%Tq&@%U-+%X|Po2He49@Re1TGO|WFztrYio zy1E)Xcg6oRl^?kll?%D{IonG7?uU*>T1o+!1DmI^(2(JO)(hZa0`${vSG0_L|3T~q zfr<|R?ZmFHZMFs-{MnQuvjbenZ!iD6%klHl`lFq9TR|NAvX#ZmJR1*~u)RQZvj&yQ zqcYv))@0DUc_=!n^daGrcb&!Be~i|)X;>(vV*klXXxPX*8}I3d)P>fy}u+n2yP~}O+lh>E|v}q2(1c|+Pc2c+7OFTw5jrn zw$NHeb~2#Q|9yS^%4Ako*ghm!IgvQE9Xl!?T3-EhnZD@t>N0Z}j(u?4H~aQ-cA7vH z{+o5;gofXWnn{IJn~GP-Ub>p=z@xpog2_TZ44q`hfC(|O61@l4b&y0vq;)(_Otm(1 z_V9(%PrjTTUG%BcKDbVYD|FOdj=QRX*?dd?lE$t+QhHvIq&s{6mw0!EaLo!nu3DZx zCt{bNR3!wWTAKeeYW;EjcH#Qs_b>J3?(VO@63OMt%Wyopdq0>KC{<2P$!Thtw{`%8 z2wz`E&ols~R|dJgPlm^=K6Uc;eyUpGvC~)fm@oK!TvbSe{W2*rv&hd?49ZiA80LDf zb98Ttx=G0G?bT_&6R<$r%!moe!XTS$elD8X>hFI($Dcfw5*dz;RR5V7`2tsuwU=`+ zxu;|ycj((^&5P}28FejaeV$}l`kbDj-*%tT{i;Rh^&}Uih%(e>W>ZmCDnrxZ17}NLuS3_(-4H|uz2c`?+{{IS**VSg{eZ96? z`$=RG3>)^e)a$(b&%n-n230%9fC{yk50FGOx|z)Dscgj59euMx9|LnJ180E7~FDxY=u(R)Hue+>2m>-I_t;r|y8Ig#-b{{l2 zI6K>#dPKvVXpe8_jRASzmmyJdfH z(0a2pE3`a#a&&YQK0M_3{H7=kt1LE2z`Nx!e8AQXO;@TO2VQxGn~^c!S@US#>8eiTGA=pt0JbH`f_RQTQmu1~IxEv2QUg~A%Pcsjl)08u1Zo#^`6k=8tT8XEg|Kety^Q zxA3l`08hG&Fe$d4JeV;Cr3nZbL;o=pvcrKqDaV2Rij+|7QYVo_7!^oSrBkS2!jnt! zDVdWWv67u_k~JwvAap5jEct|}deWcCMS2IT8b4g9_nc$+O(Za9k(L=$*Z71r-HJvPbBpnHJZZ*evgh-&~qJf`tFYSoh`}y~>cw zVwQ%O6Rau5v25C^et9!Q$865SP^P=gMjBn0CS*2Csp0l6bSR!HPVb5m9%Dymq?)up zTRB_zq<=T!C`|%4Lm*O2Lvnw)^YH6uI^-{2ap5;|jd-P{g3I2|TOJ0PrkvPa(~U8id9ak-ua&-(?wxJF`2bByt;o4;J5UUhXH zV$E$LpKYw|Vj?Q~c_zO8HZqVEU(-072^_OsAEr*7#zz^l$G z<{=^$R_}A>iLA(O@T-AmDGd3)EO4%$#Wq!E<@qOj!GPo!d~o!+ONj{$8!S=%txQpu zFXzP12>#;iUnx>$+yS&=BBLvd(!dX@8J>l;5WvL%R@V=4dI9s4fP9p8Eg_m6qN~=e zLKSdNl)eKbvdn~ppAgDaqkkxc)-RKjgeQedz$$FLO1xN5VFXV8FCj4u)x1Q{&q;xI z2EBVD%{>-yn(Dxg5V$crqidj)XOa@_URNS2SO4L<76L7s5LnXy(xBM4pSvUj!3^1w z&tViBb;c`GReiSJHDm~)lA}J`@xHxNyWAm|s3*_9%drlKw5O=8Z;Z9|G8Pu9INO)Y z)Jl$dzSdV)i|4hqV|}=5LqkzP^AdHEvnvSEG-sWZFtW0+vA2V3lIIhNt*e29knFk) zk=L3~keO;^PGEb8YfW`~c2JymH;IT|X%)6HFZ*Ds?A!b*WfiI$PjyoPI+N42L#g;R z36Qz1zhZ$;?N7KAz4yl%;_jj@_KOHvzCi>WPo-)Wsd>hPXoQj%H_WiDJHtCBqGuURXh+2b1 zMSh1+JpSevnY{kVW=33C>0WDhJCW@ziJBULq8)gT+)c*F??E*|JY7WAmR;20GEkB} zjIENc2-j4-{Q660L)y4{6+-d-2-i!|w;e6uYClEA7d>}S34liqNexs^Rf#F3&T-0r zKe-n{jJLb1dq zUy?xeRJKgG)KmQ_P2HW9^-O);_0-@xD#j|Ns!_pz z&fO(GFEvCKr#IEreOX&WUS96Ex)Z}>`}$=2`}QMZ7KzE&n!u8haFJee3BtMF*G!uH zuw)p?M>D39VrJ45ve!&|%Hhiy8u4&-gUqCy>=$I8mCfrB{N*u>aK_Ks7ySnfEmOsF zDgFHw4GmpOp$!rm7T?Ft)_8nxY1gzT74GU6M1J1ZTxtWNW~9s$7Di2O4#!5(@=o19 z#Xh!fZYIXYPF4zu-&op-pypX<{WrLxX#9$rUffb_MJs$d#$I4$@)_uabs)P5@*YeA z?MY@~;m(Ml*T;nCC2qov-+vJWz~&z^Juv9v={2lNagh0WQc!b_NQw*wGh)^XCx#e? zoItZuM5&9or3SsDwL;+ihHX<$@}wqVzS#}o6E^B_lIV+2FRc)pkJ#7|80s`JCpH4- z$o$u5airmq;gPum;Ta+arkf*zfQhcb_om_HJNLb%cGvj^U^w-xb}-zDapm0& zekl=zzuXEb1o(l^w#vXb@At?fSD5ncYy?f2a5bw5>Q`-SiZejpfEAezrghDMf% zR9Z~-cYatrygb3Vq3WsAJK-xm*=ris0k7`4FTN4&QW#SkxnL4*N#mD(T+OvaLhE2V zQ8gG&nn?_RjzZs|xuGG4EA<0$;3?#nCjuBS2K7A|ID{tsfN3)H27-1=Nu!i?0o%WnHIcexhFIl4Lt z@)FVFXougaTCf^Zw(*i8QTyWDv(^6oX%10)k7w(R+&a%{bEdE+TglGo)?;7}z`FT{MI zj71ifh=NEWPAi0+cT-MF6GwbVkub*PvkT)#NoV7=?W@3pN>U_qEYRW{3g#f8PeMa7#}}0`o-%H5~+w znMs0>KA+ZdYMRef<>{ z+dj39u)2gcSjM%w9RZq?T31}$dxzvy>7|gHt-Y`BRdHJw?wx{dZgFvUY4DS5k>*G}y#=1-4qtrto<@h9f%bDfhn4f*7^*N3$I5wAF-q8N zpHfS8vCZ@NXMrg|JIxf`Jy9P_`s2uDBU;F^`q~R-{Qk`IVoB7+^=t?vR`r~}#C}mK z3^rz}7y-g{A`r-FA-*DUBSV{8O=w7fcCgcd^-VU)5R#yZ4cr*A$ef-_R&4D|K;VQh=NPr~ijC-`tz6qNo+O z@8*MwvW=)0DTPxZy{nRjXS5rryYJr%nuz;2Zfa&C$LRvoX;V>ydtNv7*2{lNX3$R-W9*W3m+Ww?O{@iw~PA zn2*NNRzB@0d_xBLl>Q>%eX38AMA@VEyk+s-b*Ppyn|B~4{p`ec+20U@86|>VF^(MG z&XnEJ4Q$0~w)uH>m5kB~LA&i*u(2Ga_?91yVBkJRRQCWJ{fVCgA34`xHy`^le}CS{ z-*mUMvLjUC8`e}F#hj`xwC_y&i9W`AEeQc3kv8w?igJgxYUj-n1587Qwyp~5qC^5_ zEZEgX46%yBWt8j(5o+^rggUvgs@VE5NobM4&~m~D7LP}`*#bmt8joXQj1fOFZ^@04b?b4SEvp7MoyU_VMHKn!-Tg%=0yM4au_)L}KQ?>04^DM=pwd z1>%>t&caH0i7odBt%Au4i`Ty&CvQ81U|Ze}ir@b!dAN+r@i~2lYxHkB?%L>n{qMuy zhiASQ1LFDZFF4J$*EHg(UxxW@zSQx({eoE41#K7<@eZPCL>yZ@4wpRfN=AMcXo!Vi zWSZ?Xc|D``J^j%`#zoUTQJlE^lskI&L+r{OdGUvqAK)C|=5R%_F3lE}?*qjmG{x$h zfawavYH7NZ;2tA?p)jTEM$yzrC!T=hHRVQ=i?imQFoi7g_05uEqTNB<($%p-Kh-jN z1E+3q9zs%WYCID6-g1R|%GlGIKJ?B?nZMp&vIZLR3e8QZWo)Zu(pLr#tk}{u4@v7* zVgRSSl?>nWSvlj#9m>!!)2(h(Xe-@fHm_GLp;CDvh9vq#b6mnK#a8*Gcrz?B4)n4B zQ{HM*<=4y~{YPjKp>>;A$UrkPTNA36lUOhvcQE_ohbJ(*@JqhTLC#R|Z7E(*!xuX@ zo>mHXbVbL~6gQNg6c;Tg2fk3{cWVTodS;uTxiu*Ip*|N}Rz3a@7lb}4(7W<}JN%lo zn-QyywC?V zTz6^o`c7V~r;VT~m z)^pzhti#C;gD&en`uOi{FWGUkaq=#UwK)zacv&aBzsk?g(*!%O`0hR|_Ws=#pL+=O zeLvVo9f{0b+s`Nn!=vTBSa00bTc@>mKE74RJ$u*F_zG9=9DKafVQP+mPnNeUzlth< zqEh!GvzR)`dL9S;aVj;=P`lITt`|6`D-8{rfyDlq6+M(2KbAHpFfA|Q*Rj{uiMg%l zHEhT7%4YlBE_Z7MmXn&0lYltS3*UOgHeu-oUjQ z`C*MxG0#L-1>j5C8sk&2N&OrxU8t^xAqCQoX3PF14f}IU%A4y)cXzC_Z@JnoR~0MU zhzN-_re?G!=XA9Vp5;-4Xgm3M)xRa1mE$s15CQl5zW(A(vyId>#*$w1^lTzyw3+I9Tgi(BPZ8rbpPB*dgRGmWNbo5K`LkZ z8KX<#>hnG8uVeao=Te%o!)D>Y40%>M>;ty^x1QD2&y#TSNN&2c;+^6B`Kl<*QA--5 z1FX~jD|M7om~|sg4nv)~5MvEiH!E}Kd3kwd#>c!7jhYCI0L$F7A)L}|9Q2m~h}6Re zEI^}30R=@Ox3v1kqF+GPSHR&+!PSf(w3;AOTr8jSB~5JT(lI?;`Qv#MaS%8qbl(%B zZ5dfXvP__4MM#le);tN`nudx?Nut5W*PAV-aHj7dNl<%yrglMPA&fm5Km|8@H+sSL zXBtd5cjp`0fu>Al+X=3{dw7Z*bD#?RkxVk}TN&36x(pbD2<-QAZdO{rBx&{~;pc9u z%FfsdZVGv=^vl5j@Hcg^q+&WeYwSH8-b$1^oiUu!fn}hZ>XT4^yJRP?(*4xf#}hRc zB8DXf5vN|TjP4+INB5^hQ0sYLzt1AFYB6ig8G0*|24Oy7_2Z=}O-vD*>g~PV*@Q0(FSzXga9@&R=ykSrR<1{0VG&FHwyHtE_2~Egk?S^x9g6-ef#|UGXLkq8Ik|Kwl-R@V@wAcR&e`%EL8+3?`R^z$ z8sDpR?{xTGmeIp?d1Xf+jkJ+}%ylcRKl^9DV2wChqnhnsT&qgoO4=Y(r?%3;jUR&U zS-fCb7QM^m0Qj2MWq$i9ZMu?=aQ({-2k!Vla7h9Aq(YewG(=(SdK9<1hWInFVA?X3 zkiE?u>nr7CmG|HTsvXzTtI4kG9$u@Kr`LFl8U!lMC#%(_!x`bKp{>ox^v(y$|8cz* zUA=9kF(nYH$J#O%_nA^!aO2T=W`03M6O<=^;Rj_NF0+OT)eA%v1^{$k>|(+}@GeR$ z=@Vxv!z}5fp3j)~U&B2))e3Gdu-4_1df-4WQYa+lRZ`N}QLoIGEz>9rYCCQ(=PiL% zj|!=vyaYlb>bAsfd@&F#ZEoye3kS9x=-2duO4N!crh^&Dn<1#D6m^J=#?P(kfN5tx zLgV{*o&34I4dM8ajf=ka(hCi<=Ez4A)PRpm)uH_QpQ+{#M!NgwCVnL<(Uz@wH@0?~UUJ4ac;X^)rC|rJgZ6XiI*E4_>b~>Stv{{FE&g!lTac1I zCx}xLF?eN6nRS~}P-Wk#Y;1A9$k-b8^4dS|LMNpBUiH@(aGCm>x7O5@WyV+)|Yv2t@A;Y{8iVBW9*Wp6`mKt%4eZ z0%z9>9W<9>GXs2>?A=L2->(_H-LqL+&U;E@Qg9YCullYIyY(BH(B-~YdfWJE=R+6q zZ_QH><-CO^>yF#ZB)=^kgl_^`-dQcoFD12iHh<|QLqX;JvWlb z9;-|9t&`c#w}kD2_ZG1)GerG-4tk&d983awL1u84rh!Kl*{LMkL{lX)R{OVCFQDs) z9-p$pyS^wEMWvk4JQ0OPGA_u;xy^K}euwSBAAlG&_x~{kkS<{4Ut7>Z~>nK1qcb2+VHQLxBEu89{&8j*Iit=iU%39hA zYYHu#)__Yswi=Hz;v;i{7U|yTo+Q-#XW}i5-vv8+*yHctlbUn}IBrf(db_)478ZmK zY^J9ORvz-X6@5^99sQW<6q@VN)NYE<^))qcN?$h+1VMBOq`-d~Lkde{;c3dctlZz# z(I7=su#%30g-Y**I0|60~u;jBnK_{y#jJE9LKgdkAg0(eM*7(XI?rs2ejnm0V z!~P6?uJu4{`8)Ua2Dk(qVy$aR$6ffeZ~H$+Tbl>JCvn9)e8E8-2u{YL0q)lJeGcCXV4+cj%M#bc(E=6McKWlE zH~)PP(u@z%H0IS4oq4@!<&CpFtEpbmzL$SuQ^;G_{s&5L5~Jntn?#%fkz5}WfF2wS zsjt^NZ2$W&?C$Y*QIJ-w?RH9USJ0s%TTHaRfvKQtZ|@s0qZw8j-Lm|97HZ-B4|-e0UYf`)5rZj%A>Hm_3Y3R^BLnkX+C@|$x45{lprG(OwpVdte#v?M z(Tum8xskjHzGrE_@VEYo-JNAKNp=EjMPmhAoj#k>o&Q7BRfRR#xP4IpX^GLHG();U zx}ycb)2T)F>PKd{zeQNu+>X&3^BuQ!WEFa@ zGhBvZD+eBW&B~^vSz|zO@sakC^OF&=B8V0X@u8Idiq={bq(M{w^ENu2tn%*vQqkL} z&L-k}xA_yaLB}s=@z5#h0@8yie)ZC1Yr+8WKo$B-;O8mtfBn=13v1rwkEBhM(8*7H zeINao#L%L#Olq4Bj8#Ax?uM*F3+eDSWdp9jOqZx5jbg}GD87!~um5I&T?*=t$~U_f zVS$$Hx=k#ze@AUf?!?+3WZ8O~M(-Z%dY(?RI|4xhZAc*H6{M zRyt`dZ`o-}(&jR)MLexaLV0=zApT(XKILLn!=Zwf1}EK7G^6=k(R^gkBV)hj?8J3C zpquPL3=AL`8SMcAsYSW#~NF6V%xZ%gIvjKb2jUj|iPUG!0y_1Ck#3_${!R-TmP z22N%f-`|1t`TPkiSJW(@wdP&(3fGN|bpS?-XbDTG?#u87_^q~B6+nkrF~fQ_6Z+M@ zi{-s*`i|l7{f&s%_R!%*FHbmbCAEmh^>v0z&TA?mS8eyRLybwHJyMT-5u4;|1|(D_-5;n3GZeKx-j zkcT;Rx^Ko*3#jG#e6koDu1B1x)ImXpv#Dtds}90Q%qILwDj`1pKvM^Yr@lU3ULheK zzD{pbyFhbuJ2yAqwa1Krmgzjb`Ol`ruzDKw5S zZWX0)o7>*}{S-NGb4y!|zl-hPy^#$q)^IgpHkv|J38iq=cNNrBq}h81R6%IygM(LN zaVq2E?9}>(B3&(>qqb%sVa2g(b@`q~%6F9Mdiw`7RHURdWFnmWT%!D3MN*Qyt)HDd z1Fd|WY|RO-8b9%z|F|prJury3K4$J=XN`Z1@2mnI{1+elx0fkIpzE_;;M(Itq=LWL zbhujfoL8H0dkuHDzj~-wr~j)=Bf~5snFp}(ZmM>zLN{bLKKp&Va|)qd+~$(o@2TNW zX{Wx27qSsZrk_SZsyXd-fg51={d*YU$F&r+1Cq28p?5UKhN5j9p8hxMry&2Y_JbO& z4N;%_xLCG4E=kGNZ9eT?lO0A>6L*=ukE$A}Ew+B>ne_0l$p56}GomDLeaeM-QrD zK&Hy>BK=b2&M_?NtX^5U)(8h07S|~FmyT!a3HuRCnQdIy3Tuu5W}eD=Ce;tbo_}31 zUo4((!4o@Ga|qH{gAt#0)l+W?nTXZ$jC)mTe)EZs_w8q1QwsZ^Zhk-C{WYG$GnJzG z90Bl(p5Np8pw=X^MozH%gOe=h9_j>iT)PnhDb`3#2zQvOi_D0XCLS$Vlpz>VE{*Jm z_LH^#;o?ekJ)Lar_rY0lw2GZou#L>{$=JbxS~c#3fn?8KegkNYe~dE_UdXJMm#~a1 zKBV)0(HzY(A*t!{H5E_JxSReE>)))I^j ziDZzjdKn!i7&#CVjIg>-n=QBV52W@iPcO|>3((}D;m8vP{hJXF1`n16m*Q4Z@#$lG z)afd=5ZE(ch4?dvVkRG2WkA&TWo5t0$}n_6C7 zFdH)B18_TLCh=VMtJMb)LEwJM7JXCrwjj8C{TbnopAMN)uRUF9*cnUWitvu?y(G}- zKsXHoH^vf5f_z=9gjj!8W74*912+0%v;hps*`OD(LEl)bI}{Zg9e+8YLJdrSe6F?u zxi+oXnE2^G3hR?7D56s3)*odHTEG)iXZyf=yF3mkmYSTGTK(>-RtT=H7VSMQFQto$ zER9q8CVcW0^FemJJ#iI^xXsQqc)NF+WHvjqp((9)RyJ|Si!42%%@>Zil~O3FiMt;f zg)|D?lMj;p6)k^MvHls;v1xvuTk)Z^NBhS36@n5e#k5DfmR`$D5j=0N1y_hN)h_V(#18SSkG(B81jrjwC z5!HL{eI{2<{C<1E zLaCD!f6(m;(DDX2{jbFD4mU_lOhJxL8&Hp@^Pe>Sr>GB=t4{!h1GGh8BX3WnhZ;K` zP6usnPJVE#J&ZXYAr8n?V;0H*9BU(rIr~?P(N|3tIDtHP6CvWYrxAu1WjjNK>_MkM zL+t5zY)>&LbVLNL+!*UAG8pTSu$$%^i}-n}gf#wnVgF^OnI#mOBl@Fu5t z(tW1|gzg!$i)2#!YE?$tMxax>~O>R^vn^4#<{dF1326qFP^6^h~Zy=9#C-l0k@>8iY?UpveF9I7?5x^VI_qrb}* z%=}S^wnapjPldrFuv zZfiF{M?dJ5gk2(&{P$mD7R};#2!%1+Ja^6h;PS3-;T0m^83h_>;k*X?Y3ig*a~ZVY zifa-)z2JwfIcVL)-k?2@H(`i0Bp>t*uL&rN!GrGuLuv7KgtP%5L%w`eJ6=ub-$iF= zk@Lne+V_qxx!W3F$O&GJnSPV~K_~y)BZj|cj}pP4`=x1p#NnOQj7=wSN=Vi|0NnD- z>DIY+h2DFgDGcN?FFF_3_sOEH51nA<6c*lr{rA2T?}3;(J$(}s&sy=8OQBD4+GMZ$ zeA^(LBy~8bh2f}MA^x?-GWByjR%0?%sWlaLvG)_jsbI|P-(&3ipHU)FDhRx=0TQfQ zYO`p=5p#NdCTOL->3E@&M@)=ZQBie>m2Gr%xHu;xH8DFQM_X4TAs3beOVgWFU*Vtn zB_uY_$2B81wf24jwC7mu?2LWU;2w{6p^QD-#HZan(@R--U}HydbdZx<>RVdchDW)# z+)cAT-&}3sRu|w_SJ3^G2ABg5@$$lQKcDu)i?@fix6kJ0ekUe=J8?0!d1XgVZbwP! z@CCZOhBte8IeYnU?%%(;i;IZ1b^&mG!^NQZ&G669H$NQPJ!RpYxC&q!P{rQn{@Hz9 za7)YH%xFsRS>ep+OnPS`hIf5NxsYtDl?QC>A!oi=?P`s>_Txu6Cu>D(J99-Thvn7l zmd>r{=^Tp(zDgXZO5^29C7)wZ)bF;;I0+*id)ZF`vP#kl(jIzRDzf$g9)6~q>*QLD zDpVq#5_!t#DtUt64VC`GAv?WY|J?heXb8IfU96=LfF}cH%eB@|XLFU(&RwnkN6S+g zJb$lwfp6XI?V`M#@Zdn(z~EANIG3ulV{b3qfr?zJ)yg!#75GPyQsw9x83F#B;%(Vb z4r-@6c4HYI4Xv*{`?1&7nM}4Q3423{0pWOR)WX~M={R?R=I(u)}N;b zzkZ5&yZnB9;JG?FRVm1or)P6BXG(An#(JHTEzIY4M&GtMIFv6gsamF5fL1N z+!hwM*5R}N&yf-}T;%GcVA_`Q>Yt;3jg9}wRLLwB39)Kku2A56?;aT=;_waS(s*jv z4-*t(F=l`F7UNJT3x#mGHFgZy^5=6!%XMl!&?>jFUPz~MMIL|AG9UY|%bg!gRYnGY z)nblqo{95)Rrl5EpQYw7=zd={+|Dd1<5Ze(5+0@kXl97?=8{j5T=V)%(YtfCNR#0%Y68xZ}6d<2pS6=E-gDh{R zk{=x%d&fNHd}#NVl-h=BuM%E8Jft{iO9Ue+D`sTu8(inBe)GxBBNAXJWFgouxK7`^ zvnS0z)|VyRSzoA6f5XYZB?)>d?Mif2t)w&^j%!w7+^^f&g}a45fW6orVD|G>lp8SA zPl$32bU^-9YrYA(ttMMIsc!xw97SqJa9z8iP)#b4-x5%D#d6ZCx5zk6+YA<@I)6%3 z)5{Veg!-Ej+A8yfXDqTx*0ZUxY?AcbWG_;JwA*H1l|J6T7fQP@{m-4drQTH>)UOt} zaIGd352hqR&rEa?|E?((syS)>dNTY&22o$769@n6A}I;zxjj(OaZ6#~B`b3j6S3T8 zfnKjT%g>AL*P1a9Vf{*ePXj3CiRJ0@IZLs&&NNsu9;}1rUNr~ovhOttG;N-hOX~pM zK6eDcWLngOog2YrU8Gvq*2aa=D<6${%a-&_Fr8?Fh7H4MYyre+nlJ(s=JhduiqP^^ zBJrp(E~s|BGIL;2teEg$QJ86G5hOt*0bF6w{V_L08X~D)a*Ud{kuIl2-R-im*ZS!^ zz2F3-ufI=0M%IHa#={e8kl5ArfJ92~+4`VnGh(nUtBJbB6KlEqQ)UT${ZE!D z2B*Wq!=M0WX{VzdMot;$qDUQyg%8o&<>=Vl{<+eLCDaZ6koyq+e07m(SVI;Au2}{i zO=7w%Bf9w$=2i1}%&u4-JXLGth+2y1W}60eTiOspvQZ$|*~LD%zw7acq)Y0b)-9!q|Tt;ik=tZ+$5!$=+7{!5Y&D z>p!7xuW{Ql=Xcf}wQf%!Ztb6OdSkAJL49u={bz+b%{ev#6Kk!`0K4>7tl)E~x-NDm zrqL)ra33?ID&kS)e-Syh=V&aTdDycBAF_1Gi3W|e_Q|S(ZO+}h69I7 zxbDXnc0t}wL~71jt^8(ZOX)nzZ=5{ZU*i3}q|pT7Q%ITMwvYnSDKK_pE7~d7 zVvHU`W84|lNiixx;zeTwQz=me;gq5wl=pQif)J(Lm0HWD3MF&vV$YEDTILkVP+JPE z>MZPmo;aQAxbZQ$zp)YX^*nq$d_sIIe4?#j^{mX)?39-xJWVYfF8;P{9{I?YI{IqC z=B`dxa}P05p2kn^`6b=RmNuf_Ru&&6&bXRq_&oW3HS&Q{NkBTpznb_PVzK>2;JzFE zG><2G?|yb)n_HTjzxq!^evAU`?-%#|w?HF)RYYR!@49rfg750;XMUMsg&1m?-@9%Z zg0J9n{-*PklmENgE>M{NPF&2)*`2pZURM6EB#u~uXwUIWh^*XET*Md80!sW^VD)H& zBZ|A~Tdiu^ty;v{nCSReI~%&%%B$ZDt}x%H{h7nt+xtJ$0MC~nh;Q=Zez4k5uhad{dX}@4E{HqqcpwaGV&vvr*GSjo zc&WSF-k~DE2HslDF)=+ov9KU4I4>lO=@ApxguO04bqpLLi{as?Iq#oN-rD|I?2mrQ z`{Q~bSF}B}$Uwc(<(5}8{x@*C=37ew!UYut>gQ#+RKeKUQWTfg1g6D-$~>9qn7jU@ zYwXME#@&Gzi;Y_XPT2zie~aXIsox9Ut$)AG5rOv&Q}*1=dIgX+eUGKEk#h?tly>GB zj3<0szVp>f+hWIqNkihv7Go{yQ8g;SSB~ z?rg!ghRVY!6I_%RK;?iLh@{c5#Nq8XYMi#i*EODrM-oIMcepCpoNabNwV>e zGo`Ll{j%6lsNq(}zmWV9+~@9PQd!BjqaJXJ8gWK;-(OXZ?Ou-2QHwBxY^?>uENDtv zdZxO*j>fNrcl$P&7arQYkl)1CJD{BzFSO?m0dKDrFd)*-&Q5v@O4S|Y_#`IOuM!l< ze8%!`kB+u0Dt2}H5eFE{=q-OoIqQ6K zHn>xF_RtD2){vC6<&w+g#TJRIC0nos&g!<*wuN5wn`z<0RKjbQ4rQpMp8C#IiUg+y z?q+w)@$f#_X>QPEDazm<4CE_739M4aCMLa?VO;m48GO2LZvEQ1j5vu{k>)sUo7JZ& zTt?X_MW{58$QcFjP?wJQVE*E?P&klMUnp={11xqN?;k~5vPh4uE;-v# z2S$M&$vZR6lZI-wz;;DNGl&Xi(bW4D^)AV?>O!=~qiSI0s`JnYUd+M_vlz?{&5FD% zi;XXG=dCIb&Wre|O0^zn!Z#M?2F(+kB?BIdvu{DAzpZy5OP)uO^R<2ggpf`^+INYA zV<}e*8Sht!_&FN0VWU_sB{553u=byRd^~5#>&QFcph;&f!BD61@^T{|cx+)IOz*!v zmnjKFNBn>ZZ3ZS+k9=d?{Z@i``$;2CZh`!Wpl&z_94O-ib3x}%r`FhhodoNZPB{$L z89C@7w%|sapXR5U4GYIR9hv=fbyQ1$x_9db;MZAe>jQ5469s>I z!^>ui6wfr-*l~Z3Vjr&IMQY71XK(i#=t^|Ph$E4LQ3o>jN!bl@V4C-D;BF{i0N2yi z?cK3-v)KJf)z>?GRR!!fMuoh_cx@q-x4uBw>aj$gf3VJx`Ii}VntYm$5$$$gmAtpi zgH!hh&pX7fpP@6r32d|J)Y2{g7J48EWcqc*fe=6Pi;og8>uLeO6`wNhDhB8NlmVNu zh^se;0F@=n6iEJH@PeguYq_*O@fC8qOy|ZT@KlzT28Fj6emha*5wwVh}NWNCUS+6lamxd=gdJvFS%0NWw~4jxK1%?EMP_yd1qBj!=Huh>b3{W>0@a|Qln_?` zry_6PtdT~H5wg5w-Eb z8$^Qr17L&HU$kFc(*Uk04WpYs^x47)9ml- zsI>?$jtIQjSxLkn{xd8TCZy++fuT^#=ZG_G8~JC!Ru;l zzTMS$`uyH}XnI6MP8g`)CIk=VxUH+bGQW<#xj4VP+QQ$%$nXj5hZ0_;z9r?RlA-cLryXZ2tEb>^xEK%1&N0-<8 z>fEzJ+_buOrqAq-4(tz)oXALRXsC}!$$}QYeqAis*myw4qXs%}EfwG2v41dkW?{Xj z#Us!&4tb6;c5%A3Y3Y7{{Z3mgCsQMs$M39|=wg<)hJNTGzrB9+oC!C?`#C{$cyq{$ z@)snDuQRCD_&jBHH>dlQG<$C+2(so}G}fal4=-o_E)6=b5;;p6J_q{B05wnFSk@rO z!wlvgldJUuNGoEwl$O*5RY{I{hxHbiW_I2%`VQ=bjJrNRQw3>YkZ5Usg{FO6`2zL> zeg-KztU9jW+qg5sjK+x)wOZIsQtzCd8cDi_?0cPdlA75ekKmcbUxXm4TEAa$qV3It z3^Kb!yTr38B|FwKgEDgs{QP+Cjo9w7?BfkMmnpNUzlkl0Qh%fSE@h(Q_}RI>RD?o| zii8lGKeC<&iiW0sA9(QsT3Kn^>Qn8w#2yHhD&M4SOh|$yW+o=(!ZLF+l2VAWbW*eo z^@3U1c?61T+bb=KyQ}zK@BMN3bNt;@Q`;bjBC6-CFu1N~?t4|m;Y`$G)M+c38FbXN zuy5oo813OS-2H}a<$=BmpQZ-Nsd8vyJn$e)Rc^|P37_(&93}s8aKLIe{0dn|86_(C z4m48=yJs=paiI9P(Gtv+FmpOWWO`!r$P%Fucu@%a&X5yzn_#iUNd3@8i{58{gizTe z<>S_2$hu*yTP#{I2nXBZg}2q}Ci>3Gh1Pc!@WOwzW`nDFi4o3sWls~9YhF9oNgq{7 zg4^9l*i_b&!ELf0i2jQlMZ~+70vqcYKHkF>igUD7$0e`B#m<1;@n5Jse-Vf(V6lJgYk|rkvZEq@JAD%>K>5(?Q5>Z%E@AL(FnUtDa) z(@uzfEu(bnvXNiR|JH|i0ENo2HpWu!!nYrV$YBrEQw$?gic1NxhER((D`_C-F} z+Y{cVd`)a^oxJgxT&5hEnD2Sc&t(tmd&bUT(IELWZ?v8^fS2_6`kB!2f9n1hMq2S; z>BQB~CYbytAY%;+%!{fzThrM!C~uJ)*g)pB`??nde41{fdn>eyua{E=FWzJ$P*LFZHf?E&Gmx_!(}J8lTB z;9mau>QgqD5@NQgo!j!Y-6?K~g5E_jtd2f)O8&AEoK2foILiF@tE+R1^^F4UUm${X zFE7HW32@of%qnUx$k9F0@2Tm*p1r$E?mmz5O&Y34P^wBnyn%A1(R@095cfCyBd(Vu;pLavAJ$u1*!410?ruAA z@z+w5hZtg)PK8xqMh8Kut7!c+u^FNZwA#|a?KKRkadG_VA-&R>5hFoh0OmhE%`EtS zmMRhGYHRGY;e`fOeZp0@^1@!y8EL9DrJ5qH11Y&MOB-A)Gv}_Bx;X})HMQ~hB<0RW z!VWMokH?l?I=+M^;3e^Ygd*M)7GBq?Q`}-tGgd_9N4-G40a8Uxa3PWPpaGNrxL-l$ zgBAxFbt|$|jyz=`8OciS{-y=cmesY1u|`yFD141OOYb^1MeN>wFL1Vk@-5_CX^o?0go zAh20bUWbnsb!_|+>M}2LLr?4w%xkURabk2snu|*#au`F;M~}r;!LR75Z$M^%=`c2a z4G@CQ@XxOZE$Xbz>8fYunI!4F!8;il8dBguA}j0=l}=UmM~**PN2}}|;f{`Q2RQCU z6Z)-i{=dYa+!uG0@crD({WHngu7JNIi2T2P|NhI8>Gs~}7d^$m$H3UBbY!!z5JS>d zxdlSAz96dDP2d#{_R&geeve@!fv3?X9kl^|GKQ2dw{98*RmvK2p<-scp|9bvVKeir;qW46d35ytu(+W(BEkp& z8zYBZ0r89e!H+CEEU;3vJuA7Nh;P}zT`5ymxUb>?>!%;lnD$_VNG4D8Iohsum~{E? z0K*+Ks?*a+G$lYj#Ho3FxL}nsi}8x@yi7Gwxe*Vq**1d4II=_^4UN35O_y#D(cNv~ z-D2;6O>SV=*NnTyKG`1~9Od%HpW;-uarA>a{!dA@7X-RRyqHP8yuDrqqDkI8^LFZS z16O9V9jN_wQ(p{RBdJ7%LBtDQx+lq&0!$=wJCj8*0>w;e*K*}~L_GOLDC~0CZ&lM( z&B9%b;MK(R8i6fA17jBk&XOcF;$O$beH#LI#{sk&x9jFNf!L=zjiN8J{|Tfxj8i0( z49NwYD7)NH$J9%cNfy_21$~4ZL91`XGG@sOWirz5^8{r{rsmQ+el>-UDfXYi`kkBP2A17+A4I)zq3Bnw$bG4*ogrDM|t-qu0^m?DQ}B6C&Dv zD1n2NIv)!FCUcPaV<4n*5HAOnG2lsCXM03y-*O4QC(!XZ&GK6NEeYzDyT!gm_vMeu z%D(TEAqF{uj|dK9^G5(-?_7JY5FSgSdATW`gT+tqw#)m3((=V2gsGV4|7!E%sRUh) z#&bNDNz7vUbrD6#6S~1--o5xZ$a4f>Zez}C^}CuG%hC$RRbl6d=U|W1R}WiAwZsgI zEGfZoFw*~T+s7;dnyc@C@?NZJ!jBBBb>OtR{ixWN#Z~*Co>h0>9W{Eb;4zzoPb7LfteiO$_i#nWf^w6oRoJK3v|du`(Qgk zgAdEjjZ%9c)b8iThgH@6exB2R5_qZQAyAbRy}#I)%x@%mPz!#BHO*YAv`nximZ6MU zZK>AsS^IXY?z1{BUZr{F*P0)7tQu-fHtFx2b~5YV*ac!(&kb^ybTxdoAGOc-=V38v44du^q+v0DzGaSzaV>vopyo;a&jD{L!flMj99QR zEkI&tlV4HNTGQ}O;H9b%%O96~Oz!kyg-C2NLLaSHC7SmQERCmLcq2}Hp<$3Po6;6t zO9dQ(+KlXiU!T$qDVXN&m`qh?!QNuH5XY#Djw1EPI9liF(v%T^+}1Oc6$GUO9McAJ z&wO3&0YcBbh=}Mf)RxQV<~V(CQ^0#VVO+l~psHdewD3Y=sX?zGEyYsiW<_;|3dJ35 zm69f+ZZImeD+E@YR>$2k!la$M=fPmWHs8aJ#eS>A?U^EjX!_y4`y$UV^xgUydC@O<@0OH8UsdKv;s)fFM9!~mgFa3 zif0d0lQMVmPzf+G`LV|g0@4*I9VjW?^A(FL?C9WyCLp4$q_a&Wj)$`wlcV{1`OT!w zO|#hdPd!)$UWeY&=DbbEi>+*6w~v~N{RdO5>_{*cViSzM%yly^Vmni|<0ZLQi!5A7^$xLiMm46q!UG*33L^mRo`3 z!nnl5x$oZrQC)yMI_66#Gw;<^b9_vLnU)$JJz2#YU9tN5Yq55JOV-_SwyNrLRuy@s zAT8BYO$^(@^ORul_m4GGrw^@esHnX)doIOND17rut0}(plO)3*HTyKp_-Kt*2Hkbg z@h~&$RFx+vt3(VHTS|Gq&tZzuTt@XUMaJ)tvPT&-t1h=OL=fw|tin>!3OfUE;p-2R zA%O6x;A8gt{ZsbsEvWg<`WswJT;F{nRf%t86JGA@-uT5T~oF~((CLy8Kde0e+ zJ5=3PTI-A_TdZxL)^A~~lfnuG)YZXl6*W;mvIVY~?-qwDU#e}H)CVG(T3Pt{g@M#H z7QVMaqUAMpEp3fm4PAAJlCGAf_wAe_-4*#B@OA(>Zzyf3tuOI&%eGXk%L>DU$@1}W zWKDGc=KN3ekEp2SqGbf4gDgi^_q-Lf7^Em+CrSXFhYU$q3` zw8*LU&r$r(Fb6)I(2IMCIF+ELzqCeHrd8dq&bJma6We&y9LgwJq`DEm0@uQ{qwvc3 zUqC5Xah5jsl>rB;F68#_!!T93>++@H){JzID#l-Mu9ejy=&ke*Pge_ zL4>XdN^MJEPbTHY6RxG%DtPv)c&2d*HkQwm-ff<{at;k2Q)0f=GD8+%9$B?>TVgs- zkmy18HVl709?=fgH&_kfJ1Si;#@WgQjUdp%!|%}1{eUV=KR>3A*6gd@pZ|GsE(tg_ zj4!wLX0Zl?<7VMR4erO(^tjqr$G}`A*{W0rD;4P`aJPaAU~@&*&-IN5-hII}ay|s_ zeJs8Ifsn8(Y=dz?{ zJ-!?zISeg687ibM8!FSy^i~_Qvc-=y0rQL_`^#*o4la{+RHtC~%aS7DCPhhmOZIQY z`R8FnLEs$unn*vh7TjR)j+T2aCZG)BriA!}@ce#G0})c}w+*v;b!o%-UKk-J_q}9| zQEO0Yt~ZRYPxP_J_g(3Vb+j#hTe_nf8q`pE*194J%j=3{x|&@uL1>bxMazuK#;(5K z6xDP1*Wt0V=elu`D>0`I;9lw z*~O5XyX!KmGJlTDsBX<)(6vXuzx-K)sF@JIECCc@mk`n_+Cn#T71FBA=4w@}L6vcq zvNy<{nSP9zPw9YEZ@UGSY^6r8-KY6BBFgdIta&i_RP?R0CcZd^wXmOdb^?r@Y@j%O z7=uqLpR!HU7esVu`Pr+T1V?|d!8`)N`S}N)x^VR;yFu1cA95tG7pl~x+bZ)4xwe8$ z*h-f0QcgLYyDd*B^)t;L-<20Jlo+u8 zF#;S{83UAecA!u8c%k0ns_HLBq$@ONF*ELW-9YAM+ep&weqHHe@IH43@h_+qXt!*; z_#^R-RqD1^OnilLiVWmGp;5bgWS`xiWg#=DV#Eiv(Ej!4AdcP=r8CYJrL;MA<6`j? znZHIY6XJZcr5H05!XgH@cP|10m}h>(V@c<1Z9T8#C9V17-q2WG-P+!+My=_syB>E1 zB{Hex`S_uN9-y-@UcC27!qqxMRA~|bB{Ar`pSKtJP$ZaCp0k+0>CJ*qKzUudAnr8; zG^}mfEEwiI!Spku8~OvaGb;)m*;U3yK$Ul4n_`aN$@+b7_{XCa5!8d{Uf=d*J#LRy zdebx=q$%?M6<^QTUt3 z?C)Gg+s_$QzEtj@ep~S2S5+cZfx>X8#f?u;C%eprOy3u@{EP5yBmQv8oCV32x78r# z{!odM5n+)}i7ZBB?KStu-5(a0fQ|?jB<$~@WcP!j&49cu3u$m*f8mM_!kJ$LM_`(i zsqpba47Kh?kkzsSOb}jy4rJQfQ9Jed=u{W55wWvaz1ilJ(=;>{0tmqCJe!4 z2(Kp&`#>RxuhAM@0GZdphe@g?_^LXlELe`A>El07YA_zb)vt}Uf);DkNP`gwI$FA` zfdSmOn3^O4MXSGr-$f7kA%`lr3(Xu%0(cLHi;b+@V1%>jw^J6n0|nFgr*h0trAm{3}E-MxF%VDF*qo~{ah)o0&{IcfJPMPqw+~n zHPfB@_;cfTl-_f-m6o?cgcVq@>dU2Ou3VaLFN1EZe0&^ST_K(Dfz;IEihM=83j5iv zS?H@|)Pc|cY}=qVJB3d#pWQ5!XCqT$?<`tqYEu%*)x>-N#Fggr`B?bp>)yNWJ1WfX z$F$Ekvp|sICGeX4{7`N3bo2A`we!WZ{6Vfs8BxK;l%jxdkFBsZY=9-WH%9Ex5H0x;OpuR>w8TGWRUdIo~pWu11W- z{(FTT50SP@k(95;SurqdW_DgzZV83E*MWsXsaCC?>5%Wx!&X12p6;TPoRVA=YKGX1 zi^C$7opN$vj z@X2zPU~qx#`FWf&hEbhS0p&~ROvk{Q**6_?S(|ApR2Mz~vwq8Eu^n1wCT#`VmM zE}Ybn3FYfcXcU|>k6>d0*T~g$F#m62Ig>&u2Cu1-2)=1wZt>nxs5GIHEi=t2p{&df zGw4U%aP;+3I4+m{o(!E}Vcet~@fN3cl2}Aj)jkx6@t>h8!Wg}vQHBo(HLHuOD&t7Wp zw7H!%pM~bRFFtC2t}X*+uX*Qp1B&s%H0cjwaNo>BKfI_Mhdna4ESaWS6ewj{m}X@~ z1WG>tGglBHMB{C~;%ApvQF|lFw!f8ph^22Rn}Z{&fLm7`RQje$Q(@19`M<(7015U? z*5X|L`2srbqbLEobj(*=G+^9G2y$q=BY;FUD%{O+v!G}Kv@k7PiYK#r?FFRZ+rN1Y z>DV}<&c&I9TEDA*aQF%a2A8_8wVj-*@aRyBZY`Swd(Ek2#REh)9emMD5^5AXJK;-m8PMl5UsdbMJcCr;dj>6{$LOEkkknto~}HxSg#;*_uzltB;hAk?Vf*M{hRWV9ArMF>fOyh z(wPqn#SKVO8v9iF~wRrkQ*c@s~H~_{IlJj72Ep-$$^qd^OJ7_@#sT6~Zgx zK^$`Rvr!Y6B#rG=8tYcLla5iB%k+GTNS1~^`?a9q5eXw>g+N~?Up*rq6(tp81!G?) zYZbrzuKE(-7H#S*=;BeI)ihC0HJQ|1nV-I?%-`S9F}^v<2Y*4<)$@S)JqN3dCX+Oc zB%#X65M^b3PitvEEk#9tCo@%TCprJ+)t2k@sN0e3;Oy-g8J__Yg}}i*Q%8eO`OWoy z=Edb@(#t}AOTcoaf7c$8zdr&?2G1qvW|&F<7f$^r)8=*J&ooX~fV`s{v9qJG+`_@Z zQC+>&n=&EZm^dNUS3LPVhWM?@xUZQcYnZ^Pmmkb|HbNKA4?{b-M56|3Qz8*_T-5g^ zNTEm@haQJW38T@o#`HJLJB z+sW48EZzMM{exm$f@xxNBVi56K48>VcnacGZ zI%?OLn%bn7{1B%p`4lYygHbApOEYR;Js?gVIxfGXJB#^y-xbBPcV7~t5f?zn9XqSy zdsUnnCGPTP}-cPks|6=%cUtrWP-9Q-Jfx3BFwukDFoDCtC#TUf}U8G%Yi2IlyD4H z57P5?S}>3eq%QHmh5egyxHebYaPc${`LRTvmtRqHNNK z``v-W*l9LhD@7ZN&Us~iRLV%J7Cz*rdm)-Pm?IQwCZVmp69V4Q$}~38d~oCNfB}F} zvO;;)*+C?dku3w$&RQ<`(b`&$^s3B?@L5E4o)xqY3Z(Q%l2TPrB5B1n4FM}CcZFgY zf5L@=Q%Rp4<=_fnSH_4Agt`|OlEB2fTNKcH`F3CB7%n%|X*iW8Kt<|JO{BYq`dtit zbxxIMqNDmop30x~fJ1%Pq7|7zA2TL0`c)VvPWIqGU6%_f|2%y`FtJ-gb-PHAKx88y zx8dYU>aWH0n{L2^nh4na7ZWN*#6SIlC3nM^?u)1YHQ)M)8a)~l9Xtu3LX(t@Sf(0Y z0Qk(r_mFAQMi3|2fF;Asur#E~I6aLpz{X?k_4o0H0AT=|Y2-pvFD?k4I&6u3tk0~E zgGfHHm?&2N9(62HtOx7zg^O z`Ab=9x=9)t-SxfHgCac;c1;-=yKnzs$JFNs+ix%L$6MKJ0%bWqp0`ZJ~YCza0?*Z}W0ugDUY@FG9&3^%9x zugS@Y+1Z(;rR6n_^!(=Lg8KT_YPC(2@bD!x^d)rkcEH$LU76G2GyMbxY|_-IsBbxn zAu(=7Y47*wwP!NVii&M*PmHRrZm zcKclc${V;0Q($p{w@~>N@vX@$rDo5i3*wsDMc(h`Oj0E{4%$)p`%M+Tf3owkgtL6L zQI=4kA!RAACSE`x&f=DRJim?0K0pkSl6oCwPkfW;z;`on@2Qt<7JRu{>L-gcZilw@ zC6G}UwC{eyUB#ly(vsf~GY6D{%t ztl{IE%#o2vW<@(eA_w&V10_2-MSm$}b2r1Q>u2m!9Z4N^wCip#y{S!OjjbN~)_(0eD=yJ^bJUqPJn|Fa zRK;4!{$qR$VOtSGMf){sh=m z3_?vE(2>UNuCsr6eP0cqRF9Y`tSIUUL*Th@ghHvuH<+GW9&KM*QG`keW8giFn5@)%)pF2oF!l^fVn77Cfaz90!|nx(vl!SVDX+)fgfpKB~&F z5g1P`3DoRTi+9~$pEh2twgYZVAS2&!Z))(2NL+5;>~bT`B=F>JP5KH@{XKrn>wG|( z6x^Qz1$B>Q;+;?JYXKMG;`t~4JN+Kd#f$D&j|0OMUxmd#ZqTTE0|5$OSMUBh*G5tG zrzy6>ETPApUVm4-BEPxd#${?0>jXZse0X1ZQp+jbF^EvLRnBYm>UU)NZEnukVcysD z*ux!jU{o~}43>oKr^@2%xFYY(3#5XkQ6^y%@R~J>WmBhc*T?%ebV9%F1(K4XIU-&% zc`qUc)@IVK4zNf{aA*qHhwVQIfyyrsr& z^DU2+lkQMUfce8c0yxV?Ho#@B!kT}GOqoIdN78x6Q~kbwT#0frGLAhW^Vpm0oxRRE zb~ceMWS31+;aG`dbIu_|Rw&tJ#gQ#UviHjP-JkETM}PF69vtuceP7q>^?YhlCBMwI zl{&w{@qyy3r%XXi)x}9UMF{t0Q5ghzUJTHBIRDe9+hPTzw0YXIo-U8-+mukctu5No z3L*K|vR&SU2y@be|2iVx_N|VHc_OpJCpU?2x_7AH6Pyq{C5&wE^RjTB-h)+`?|i(p z$qvsbzl^#}aPj`^)?SYV2n{VWn@|-gBGn3JE749E+zb0Fi!7{Pn;>Hw4oz~Ag4VnV zj+Pe_F$c?{0zKMG&~8vFDtOjU-yOfi)K7INy*fm zW1fd_&BmbNGtk`9szBdO zyH86+K`(R@GgbuHw3bMu^L2uEV=HC*=`=VqqLF7`O%_{gg-*vbHh@KT=}iF|vcm6S zX7D>}iUnI}6xTWAaIYLvAERAyR|;)Mdb`BL|G2oc#$$6cC25YDsa=|ni#5YO1Zioh zsbd^$92WLO6Y1`yg4A~Q)s58Zd0^{rtEG=7FLj(YG7R+6^z*Y;(T)h$G7UHLw+Kh* z>#BKLIogDps+sA6-5|QXAu{lzcc9cQ49*m_kM*0PWH`kMDP8s%-lIx$5Es|YxxQzv z+=H?9IvkEC=%*&|B)D5MrfGzj9!*17o~7kq9+WBln-q>X)m`n%d^pt>`t#$vmXDir zt)4%H9=STfO+rju9=d2aN+zG;qHrLb=}NbvT(djEtEIKAt)r`>r=M(?q(7jiucI%3 z#R}kf2cPxXAX06S<|Ed&_;L8ijM40z^~jIcX2!XB`KZ*iH^#4{@#h$mF$&@D!fvFq zh1}&)4@wiNkhoiAw`69N40d|DUSR2jevwaf9+QztJ_#T?JIlFAoU_ATSKoB=s-A+Z z{@}2lj65(U`M|(n%gRQ&zPj%^BDns0b9y~!dr?_trYWA{zY^%# zoC2J+CBi26a+@Z{v7u76y?AU)$JpguSi z{0tO=+;%w~&Na{+qY zUBfT+f#)Y}B_)6BC0#H%=GM$#1|+`so(6wMF0$X2>wFG#T^P2mp^EOA5|prs(WbQY z?8aD!8!@i_u@Zn!VD7^5O^mft=#w=p6zlyq=sBGw&~-INU<;)Aq}s$9Dny0FBWQ0J zzu^zIfA;zVS#sKIWA8YUhT~#tD;(@$Tpx7X18xE8>H$uGxIZ`j3l$ zW)Q2jXAvwI)4$SH*6joV?OYm zbZ8*)188+zLkKNFFEFb)#b}6g6{O0Sp9WtAl;e-t4+qTY8m<^&!thnYK00$~2j7*mJ-1{u2|vd`m5cE1K`ow2rcr zaE6nTdrDlF7I`9kjUI8eC?#1LqY|~|(S;ALL}mcfkosjtC$(a<|Jh#^Ya*7kWG-t| zodwLKvYHJh(<|I@v|xCdgtab(-8UcUNdnd+-!eaS5|c+7NXdn0Slp#s3alBKD2MkL z&V&GR1&}`+#&h^VhQhtTcW|pyVhw%=?iL!w6J0L z!BV;H1bGGj=0JAusm9mJpseYh5*(>Q#^lkDsiwd0OjiQ0PcgADDjB-`fOB^!bh&!o z{ZTnEQGUZvnL-81ZXo05_v7qt3j4t>!OO{!Bu~;>_Vis}Aba-tPOP|0Lyl=9#EO+s zCZ*-^hTD2&MmC&N`?&J^p$cgD67r>ndH1tDVDGcn*Ajm$d6AgFDB!15KVh**PGpK2 zrLM1X&^@`|<|qQb<`LK?)f>ZwggnwJRqv@+Mer>KHeO{af?K-(e)ru$#)|!gE`Q;h zABCM%E9q%S9T@(i;e+}@VTX5~d;qXF>>O>bQ~_LuAN4l_4dQj4Hs+O!cVCjwk5=C| za1=WJFYdDjY`QvxFG%BzMl#5$rJKCSu+4#$^$nrh53>quYHEx_k2N{Ddj3HFAf(1Y z$fC@()M>dGnz2F@V)-_7njvm<0zWe`o0`jjzk<|!BJ)i36 z2Ojeqhcz(0Z#plNCz>AjjE@Nf)7a^__!;;<1jGbz)ka3pDmE-)ekAACiRqU<95=Tb zoiiDSXQpQ}zNN{`%SX_be}nZ2<0^UGaBgec>}}Zyh#Irw_4&cuq?V(RqxR=kC{;*P zW5D{!;d-NB22OL0Ha>KIrL7IjR{yO&@{d${qoNiR6yPt8{Of_AnVtp(76rw*7H?an z(uG)}u$E#&{Z`?Na<)6|(3`?GmI!IC5RUo{fMx&i5jZ<)%49-R!l zr2|jN^CGPqh(~d0*7zqIPv4%H`>dR#8-144WflCv|FivRtY!srP`gUBxr@@cfI*SL zZQB^ex7yYi!4*#8wZ2I`8vOE`1_lj5*{ACW*|#PY;Kf}{ewadFNdPQl`Xg;;8Sntd z0wwStrSX9h(oY(s4g=s)`1G-Kx(vEMG%NV}hT(VpTJTL+1B9toj;$m=~`kUMZfgq8R@MCt4t%J^PCKF}*` zH2h%ta$zvS%j>%IDnEagK5|Ish}s0^eh-@p7?=$AdMqWoy%J2I`g5hoaGRmx0G;7T}rrpfJM=DXDBMEype>Qq;XFHd^_3c_* z3^6gW3Q7U-MW~JD%MIssvZ5N-^@*3Ew^d7V9V)2Vci}lz@^%NEIo_y`nO;y40G6M4 zHrsqe!{m{!5bx6?G``ARw@}lI(d_QtL9`#8?7pR7dl<6wi&@h~gS|}T*1C+q9xs#< zWdxu;gGx`IT?@YY68&#{oI4|v2+jvg7K|3=&xl=J{~c{_XXkFb%iT}{fD{)OCoghp zAz8Y8g=_-lZ)MghpRho*;q6X(H=s-5P*@@yUrC|l)P|vmxcc}0YCZA->?Jv}F_-7A zeel@5_VaJ=fnrqn@^AheAREkGY+T*QQ_nCL|G-w#9+8B-!5ZAy zAM{I1{C3fZ+9;owD(*@DYre!hi#$0zwF&?o8xItC@uCh3#S)UliCpfyi~A0D?$VL& zvP+?7VPY~dIxOybokzy1ed!?OL4Z&c@92n-5_0)Kgs|3BRl!e8(BD>vn@{L{f%}NE zOm;ETBDVZI+ov^Fj^ z)WVL5zYdA$&5>Na;uV+~Dl;x5OGw&#V@e+Y8K0IGnjA+|Y1Y~Ii0p=a{LVbayar=8 z%{d_?CXjH;$K4<#h_b(XIwn{JF@as@HpFq(h+Ud?+Jkc6FJm8>fS-PakMXL!B@Wj$ zz)$6E|A|#_V^ShM+v=Us-i}mqrv{WN35|3-H&5Beda|TV-JdsYjTsme&Eb zcN`IsUWLq6sU(W&CLpF7D|G|(TI#H_T%Ql7(37<$PBJmjH8h}c)t?IP^U1OcDwI^! z7nHPDR+Ke0HB>fYiYu@s;pNzp_SUu{KEZo@?Go*UH5go#JipTI6)-n`7=Q*14o**HkeE2l z^!5(u!&}Xon3)HJk$&EMtf2QM|f82`tpQ?;Na$o zx>V_TZ?i-u>XouAs&>51)*1qxf5{bQxWgqI$tvA8(Ap|UNa%TTCnS^!;Dx}*S4-0} zKCYREXL_gRNzhFZE@qi$Ev_>hL56yy;Gf=-?Sy-hK0=mj9GqK9NRXFJOdCt27Vk;P z?);M!lPqylwr`Avx^M}RzZGBW<{@rXlR9(~?S$WS@GpPMX{7Z^m0O8stp)+S*|j{+ zD9G|r>MTmRS` z+@-m^9b^6Tz2myYz*tImPnE4!!?!1oXrNv) zqcgQ+ix!}I&-?Z<^|or)P%%lgrqH!U0hCscT(xt;hj@q7O_j}0&VAwADEuXTEsa?i*8 zg8ljrlKZ|7@M2&U9+*l`3W>uyT13VJj!#FW%7)W>6=|wPI0QAfsLfqTo4Z-O@jGt$ zveDT@$Gcg{+&)$mfXXgsWi5f-ePl|Vv_n>t2{O2g^PqpC^B##-EsSt?d- zpkrU61%Q$U0a>#I8B>rYN3r8Bj4V2|x^!_wE%gu50$CIO!qdq-&<#z6FKJp4&g3h@KqjpozwIsB;t% zeZ_S5#7mxef0soBqap8W101dkepN=vX3$0{v|Mhw*^1*Zlt%YAo7w=xfbJ_+eLDgRi^+zM+>P$e&QBxSg03zHcXz9Hef2uC zB5#frx!Z+=D38Klejjuw*P>q3rD0&ezcVh%<0= zWCQWnBH^~DAnLlVEPkl*~IBVtnB3zKgj;aj9N1__TJ(FGDL(55>^!D+F^_|>sd7^3T z_uq@R4|Q;yTBt6>4aD_csotQ1C@0mLFi2{4@7q_&2SJo?47lh6;sw@4AN5#~F74id z(%yX3=!5t8a4p*9YMT_(h`u%ybHn}jv^=JR7fP}4zxl3o-dd^d1ag0FqeCZ<>SJ{c z1%@>3N7qx6fG6mQ$w{Os3V}db&%d4<%bJ|Gy)SP~c^%XFPUpNbhp85lbR#|H8SF5o z|NFo|Z{H+uK0-FW;*RXhl4rn1w+zBK#F`DQ%>J2(w`C%6Z4T49ou(VMWESvo=NPnsu2G(E zI0O(7R8Y5^p=@C;NJH&MdD|Ct$rk#2sAt9de~92;P7ah2SsiGUqsdzc8R_*84vX5S zO^Hg(Ux+_MAjAfyB@hx`EFoySi;nNKqh{|OrC^lEIgbRlTURF|_FdE-`>R+OtGKc2 zY4Mibln_!g?7BYsf`%h-^)pBb}dQwSFPDGln8`Jq7Y|9-8)Dpq%cu3)RH2+GTTaX3j z{%CckVLK7m&xK^8zr~HbB1gNgSJ}Mxo(H3ztMk)8`STw`8=hfW_jtp@pGJ59f5|Ay$?@XfPBd^7Y7Eef%#h$B^F)FUp7{rnL4!vi>!k!2uCNxZyRbPu z9idy+se9x8^H41oKhf)Lu>&eLQL4imqNy(!F5k}ol zSYl$IqL~lgw%cvtjmBHU^q;-VRkDmISg0EAZQfW6A|x79CWcqA4O4miI}8X>Re90a z`qgv(B@>VLykhKrQ}8|j6II#0*Ucnf!X|i+%(kotZ6!3Mx6w%`;s$Mb?QDIY)fOj` zBYCMES%!OvbhiA3cV)R6lYXeLcqE%`+%EWBsoKbVdvpx`qp38arzdpfOSC@)n~5u% z{2iVOteNkgjJ7YETqu$k3d$_bp!q3SuXzu0tH_pqG~VsnwnhTgl|JO;oImF>)eEmJ z6b2e$FbhXxI;F6`%vTmfqm6~Whz^eX6_XXb_9g<;*KM$?j$JuG$}<-9aV$^@KoLq@ z%j(I30HV)FVZ3fU6L03U;*64pj|WN+olOz8dLjl6=WoJW8Q;97f16`zZo0pH9RUO! zd*2w(;&u6j7^j#LDNAcw>Yb~x1^@MPZHyk8TO)F^=%;6Z1TKcWi~RzkL)8swo!+R_|;9!qkS3Vp}J9tOQLD-tF^kQI=x3+ zdkN6*S^B&vVIoAKi2CyH8VnaVc25Px1M>ZbplwkLb0wt@{Y9eWJX&}w3N|aTBt0C} z@=a^<=6_SuErv*wA)BzT%KFz;!0#~h?~gQP6hBt5#+V$gqGIHH`*o4AitG_MI86fK z9_k^gmNXm`{aM2wc74q$)I`|1xk<}`9QTpWlP3fj(E%7p;^mU@#`EtrtDj3!)h6^G zX$DdY<$cJA-cIoDM+IQzk|upkWg~tgTUiFS+MZzlNhG)3F5gS(l`7mO!fdq340pDL z-$0m2u5N?lQ)srG!Y1-~)`~6SDJ6Bh16>DSlc^sX((M0ds%5+FblfTpi@oRXPiSg- zVQTu6B`ePbXFERz-@XKX^Uip$POB*WQN66w#7&b3B|%}M%*@%O z1YtPd1qOvjc$F781MzkWuBasstQJ1Ss&d+J`N!EX*KX+Kub#|H@ z)@1lkQmNONzhwIFC=sxDaqc=Z72Kl9j?CRBI2)oedg)iI@Q%s&rFMJmyltrSQGM!B zF}(SO3Y@9qV%3r>1>VSDH+27PZ_FNzk#ppA-~C&0)(qb_9SB}E(0|{LR7MGHaC+D; zZ4+RoLYn(SLUoAa`Qy4VH;MZhnZ!dwbvu-Sx>XyfThWRi&`-sUN+e*U#>W3SqhO<1 zo6@~#UhF_aTw83J?!@SoOu1NCKL@O7)=Vsbpf(RV`rXVq`s9WIUp|#gti5GqpdI^z zij=HdD)xwKSwKWqd~yqU<99Bm7t=Wp@ucy{UR4Ufq~>c4=8D#`B07r4jM(u}o%+(r z=CL|HP=9!Z7PPdu&BnQE7cmb5oTwntyoIa@x}NrzLREk@-tE@bd5r z7lFH=e;B#|tFb2$Bn4(;V*ygfODUca5z2T&YYniGX$#cQdZC2(AG+9}YoB?WLz|h6 zn4(#oYG<2D2OlZeSBy0Q`o*;aUWB{Kmv2DYS>&33vHL3WQ^4`oyOELiUbAN}Y(dP5 zni^bG+4u}c4HJ@IYU>yd@(m93ew+Ca8rqr1!t1)?s=56#A!*Lk+SJm->LDPd85yU) zree#imVS>D!QSN&lxwZ4f+>m$DM%On*Wjx!D6YadhE>;=6f{=VRyRw05Ge~T=lQ@Z zEqad&E7M+E;=AzuFJgd32$yt2of1#EET{GUp+dw(bId=RmhJ?l^GG7aH6_YTGXR6L z@m~LBr{>BtTXFrYynYHGa|;TNMvTiHpVa9tT{iP@hj8=w@+gQYz1n69ix+-!7)d6cs5465B)l^z^G44X8r-(kzX&L~>H(jNB_1wVE+iu? zmd?0AwfHacXahq2o2!n>uXrTvdSaG@4HKGccKA2*To^Tr1O69AEgnrsFC;?#s{`0H z7gq+v0fr>(oZdlselniISbIEB=c3ZbtLLvrN#ewE>uP8xrSBu=>o-vp*IM0R{I>>n zEZ*E-=r3ft_g*-n_-U6${5Oj!-aKxs81~QL!kxWr+a?Y{?TU@9*ZW0J7KzCFgon&J zTCq2b-LBp9)J6mcs|7gghHHl-d_6U6%yjjwOnvn&7~0aFThgG{#zU<0Bn8QcoHg{r z!>@y100B@cgj6*%BS;cQND@y`C~|nL5$q9RVN^d8)4k)ZSt#Z1)VjCFd_6x*QRu#+ zm-qFmcM}^?xtNvavy@Vh{%Je`WCQbLRr)B%H<92!nefcjBi7x z*6tGqa|Qp)pe1W;07%!QEPi`#NVmxa35)-iAAMJ{IPLN-R`n7qTJIiq6PU?Ss6t=l8R(p`eMS_e_XZKWs}GGq2=)q;+rCKJ_MG| zc1o4;yMUpa0HjgfFxCh8yXA~b)UUwTlJFUc#MtFmscnwllH3|DDC5lHK9DyK+~(E$ z@ie;nh1|8O2nyN4Vujx9P@jHbrZpPwE4_}8kBi7JCQNfFZ=_y#hp3;^?Zmd9javmN zp8SHWB!DsLY}>_3kyfU0ThOaKmGvBLn+W^|v<|^&YbYI?f@*8A@lS!jSyu6@@{*GH zpkD-IN(u@h;%dm)z99OH^EDW^x}L%h?Q&CmS3JenunOkqg;kHxYylvOa|%}s-kJZm ztve12cbNy0lhE_SpW7El4Q%I^$J>`H(%z95l1L5P@Wb&;+qtWa525*Ce#dEsoO~_N zqvise|BhCs?be&JR|3FOU(_()9e>ZYoE347TeZ|M3b+QCc{V_R5>O33X)5r>)4J5t z+u{P-9-HEq9e3~yPz$hqN`(5N-V!Ct2^P;lmfDM1#@MKmuW0P4yC25tf8#`+YZDN@ z_bbtlbFR!(nI=R~-MY@NX@L^8x0?kPH7=Is+15E9f$j^@1H)T1H>mse_}mRtpvy4r zTI;=lKXw|Mww4_mQld)2jXEDNYTu0|zuZ`(uM;iiPx7M-`{H4mXO{ke8s7JCa4C`c zTF^)xQXQUtn}8GRfX=^$$TN~{j#N^CMqh@lsdF!{+)6^-FzmqKRFzR%>&OzWL9lED z3r8LQ>n6-kHKewN8j9X?Jxjh55aUu1@DDUz~wXKuEm#trsQi`X~WBL5rssKfv$F|3cLgo;j3AxZrz zb`d731BFu>k0^Z$8Y#SmxnXP}H+~Z#fwU)h5rCnsm?#HnKh77$mX#6?B$&?OdR#yK z=k)r*t}Q&dc10({zmndR_%_NpOZLDstcBSKv{S8Q*%WJRNwA)@(fkew<6pa${CNloXq|bO9amC zv_)9lH62bg!rpW9Xf`x2bgM_{YI$GO?eDIItn+~2>`ihRAZ3MiU{>Lh5;Ti&XF`JT zO?`tmT9C`tru>Ty*XiSp#Do{~Z9I#obhaS@>*KSj@AwtP*cI=y+Z%dVTl=ZHyXfd> z>R5NoDYOKE{0DalcW0+2up56K6vn^?`1%LV=Kbz(z5?ajjKdl8( zx>fqirJq#`rAQOX;QJAqjBArF4$iS|7@%FOjE>fS`gU`ZY<3pl*#|Bz%6lIFnJ^#v z&8dQzzr1LC`4DJL{;}38>!dha(8G*1Ta92`>L-4M%H0w{I;?#>+5^5e<*%R*|F&_y zd3KU&MS&v|Eg$P#nmJwmbyX>n% zyf~Xrjm6~pFLFp<#8ao1e13d3QF9SbKEnP2?Y_2ZoJ%UFWp@5_x4&ZnYc{f(Xw{&1 zS@HO1BS~2e#$sW&G~@7j^6E8bS@1zt_xAJUv+QvGhNU+Xg0b9N;fgbR7_v8Fp%}}0 z_u!Ht^J20uWasACH%KD+E+MX7^^*-4C?wq9Vki;dxasxFVfdBqu49&m8 zg~qHUq9J>HsBs#ES^L4>w>LF4V5%AfaKK$%T72alK51_$j+UR7Q4A zPF{L;T3$LJ3J&o13u1UN+mE~$R(~Wvtpqgx=WRzIy<1U_AU-2v(uZcS>;_U>JmIx&m6m0V0D1F?S;Y#mPY<(F(J)lGgbq!S|5$xH?M9JnT+5I`j; z;HH5mJ|dsYU)L{@bV*+LeVu@%q!yhNE23T>xOjupxdi?rwF!?kHG)U()!VI+!UIioH`yF;uwV+%!J#_a;Kz z3HXx?{ueO_x9f+1xG{I}kKsUCLi(qYWb7&3TKv0DjR_3n&L+ovcugY>A{A78xmU!= z!aGog+yVGGrHcdLIFScFlex3A_0atAIL7pOU^r2{TzUK7#55@KV!ff}FZMkr>CXO; zcEwiMdCgteVYcdX?0>c~kf<#n3vpZkj5{&EJMVw8l!yG=hu@s$ST|T!y}E^Q;#iu+wKi#RnVP<9^Ial+vcED(rrNq~32yaW7Rr(EUqd9! z`R_<;OxBztWQX$^^awL5tMTcZZQT|9mZCApm77mB;F`>R(hroOMcU~IN{uGHHF8~9 zlDgWNemJZO;!^p8{QH&G(<* z_#l8|PHdAT`ffay#;<9({SD#G&P?zsK>DN@9x;=jCS9p);(J0~X2I#@z)1h*(#Q~**HBrV?vUMz-tS%It+`F779w>QCJ-a3^Hj>V8YS3N z^tYD~f&0^uVXcP}@<_A+l5F#@mF8iJv0Vp+Fa9c|-_Q21e^D_@0Af32fui-zF^8`r zq?%0`?nA9D@5^E1<0PIpr&bhvNm6!nv3d?RykEV)q7dU+hL~b?h>1cy) z=-h$1y5-a8!6M9#Hm*NHEDrIvZB->i91Xd5Z|NWX8&|@EUX1xt0!R>urBK6teU!Xd zGZsF;qRR#HInp4}$XX05$QB%A0L~z(oyh8TI=7q|qlO~17!C`8YqRqIIVc7c8)ps} z-GHkyl-yng>hbn2AljfpbOqN4$C$IJDDC)40JLyDjZy_F5Oz3*76%{J-7+7O{p5rs zRY%4?j`erf3QSID0-smvexQ|x^q2W;$Nm$UF}!hq`p1v7G*c?Sy$>I5*Mfi8>vD5< zt^9VTML`2n$O8?N#~P$F@yI&zqbH=t_y$SDxS3?2wDfUMvfvQuz}91i)khnU2X@Ax zj?U=PM$C;2pR0}U!;2hF=1^x}C>WvHETa*Y5tra9dICT_cQW5(zka7{q#@gmIZ8}C zA~Qg&>_$Q`QqG9bv^3ByW>Y+#@fU90>mMvH?`=F`p?o9!>EH(_r8I^csyl^QJ6+dX zJyG!8O|0ni-4(6b4gCP|<0v}nlVM;k}|j;C)bMr~Yc^W^e4N5vUyjS~Om65%w=T3BZU{;wV7kFbMxdffDF8Zz^J_ET_@A!A4Q9E)IBR)-m&-A}v=1}gGn?Qs zwf9R!^N)Vxs(fkYj|6!!9K*}M(JsE5yjyR!<*RO$C_PEE9MfWklr)E(-kGc4yO&xK zeNweJ9dU8Cz;8B8FwjZ3{##q|WXP%G2X6=Pbsn?b@7(vLjEt&D&(sdp?-4TBXJ;I= zU+y4c-kLaE?~x$5vy6X1=Zo}64)1!=PsJZ5rXKLE|K09T2b1W+Yn|L+=u#9{VJg3w zJ+;}XJ(XEsyq=OwX`_j}K0~}t34ZmOnL<9SEAoCaL)MK(1K)wY+VCW9+LfZBdxb?u z#V(~8ZrE)PzDhyxYQt9{_}3n$6{Vyefzq#EK14VNK%p=3 zyCk9-&@Q49qF{}tf$(?qPVUod>s$^sYOE{6KSjml>YwbX-zwbuMr$^L6pe!@E*u7& zRs_4aFiVdzmJbqq)}Fz!$tS$YRg&*r%HMe<6GYxpgk8#`zxd;1jTNX_+&)@J@9%#G zn~u7|2&74%f1)b8%N`Ksq=(aX5gI(e_t!`@;#KpW3zn$RV{vGU0z$*pUGuhZi{=unwj^-Qa`I(2R>sOqgKo2>1AGQxsy~A1BTvJtH9^{rOMy znxOD2L4lp%NXKvAzBV?<`Y3Z;rXy4o($cabTXwv`3&`&m&uyCV2Atl_CjX%YSNA*4 zqR=|j@I=?NC=3(mvH*lRTlgXVVo0g%Hh#MO3_okA1VtX6{_ze!gu3sXfx9N7;^A&j zkm6<5`>1ky!gAlpV)&zE*0~zH_1XDzVufMx^(EjK+MNqEliV`o1wRLWWG5m6VFNeP z&;c0Rd=N0&<2%z%6tS`};z~$TJ9gIBFHve1k;9+WKX&z+kqO;jX|ig_y@d(W0ZmBh zjra#Q-N9;1y$iumH`sS`x_TercZ@Vbt>%;?-G<+}tIt$e z5(eWD!8aH>Ff>qblJ2dZ-MTQcKjc)mN6`+v-ng*~;rmY+;KBqQ7tr(g zN*K!=9zD_h?p6De>2GOrQ}b`$Zz9D~iYlsMwK!ONbv3#?ApuietWKkeJ2(7%6EP)w ze@0A7X*(Bl+&K=zdlKJNDiO#8yl8_x81Jp%Z1Dx%7HwJPA< zHBpa9G!OCELjJum0BZW&^b+SDp8+q(y6=@h4 z5vb$t;HPt4uXC)f_++9y88>z|eumqqdw$`lK>anq^ZDF`W6{3p?2?)SwOVVM+CaFc z-~~&xI5m)Q1#G_5R~SGH)RWl=0x=h0_dK6F`f}Q|P{Q>UlMC80KVj4qkHpPE)N$)i zdzhloJ#kT<_r-j}qOz0G(~3QS5RWs(rzu1830C>Jxt8MrF!@zps230J^eM@~G$kdV z#$N8Zg0jiS*_L~Yi|}2eV6@`<;=Am8ZH=W4-gl^Mtj3-w(;7#AH^E3KBHmBLY7szO0WJo z&Rhm2Cxb(CEa=G%iH7_Ag5Wx8>BYwI1^d+I5Y$b`7Bm^8hh^@x*_}`|3m4zA4Hdoz zRom}<%XyIoyM@^S5yRqAc_p8XiSK=B{u3gq2Z%X_Q5+2^@WKb;nd!(;1?6XDT- z!QL~&zIUzt@usP=8n?BC+hxVXV}&1D|F71m9pHv;FRH?pG*{NtHhl!O+IhSsWqI0g z`^UKMwxiPLc|ah6>u*8^r$Z#WBqeVkMiLWG5h_L+v2XZnU$(XeJ1>J&v?W~6BiPYY zGvacbMeg2GjEPFFt1^G3~=w{6V1{YR<(?r(Wr48vqDlwPF36vAAjP_19QZ1 zJxt(?f;&l)^X?B`&`de~A#X~Pi15)`>~(Y?t#;ohOF-Vd#e!UL~gZ#sG}!b5;Z~To$wfI-ZetoxNNX zViyc|V~WJedK$7@eWm$`cQphyVS}odrshnh+sAIp`Kdm zEw8j}i|OMnN??osisWM-!uQ@@bDyCIm8uy#+nlDaa!p}X@Y(rwvbb38i~zmO)<$Cn zrZl$rqis5*q{6JYY~pFqBNyV)Yh`{CTE4>i_2D;V% zZss^$bpP9yGYUA|Y|tnmN1FNM$ynuHUHqdVBKjTG!YB&_l1p}EldSToS+Lq! z;+hV|5&>HDFr|7f$L|Gy}x50`5I7O-$EjnT;Lp9Wh*tK%*ih3Fi zCnz;*iIy4`Uctq(9MR+XTsyG#VK#gnQY2-JtzTOiMa2s?&qStLqA!{PUZv)cIbZ@3 zu!|a9K1w>`CIgj~1M80V?4=JPsmeL#3X@GyNs{smOE!|yJ;UwB0Lj}P*|}emiU0z1 z+Rd*!FW6@<_f&lEqpeGd;1jXGw2ekw#DH}!Oo!-HA?7)3(}~Ss$Ux{$zYAU6*d5i& z&(GLHd>*Z8S96n|RbNZ|-VKo9-7}e=5?}l%+rEiulrdTsHY|jfzBl^b=`YUXevw!0 zgR+|Zu>p?I4%!a`R^~&OBRv1j3-BW&)>N+c|g`cl@ilG)^d~-5an7A4$=eHqL{A6jKP}T z^=qE1&0IVyDO-KHasAub0By&IbI$5uR5D%@;c{J6v0M?yGSt&OS3OXkBGw>C~kzUG^Wb!()W2hO*1r*}UP!dlhK#wFR#Lg