Explorar o código

Fix linux build and some warnings

Panagiotis Christopoulos Charitos hai 9 meses
pai
achega
c4ecfcc0cc
Modificáronse 65 ficheiros con 144 adicións e 123 borrados
  1. 1 1
      AnKi/CMakeLists.txt
  2. 4 4
      AnKi/Core/App.cpp
  3. 3 12
      AnKi/Core/CMakeLists.txt
  4. 5 0
      AnKi/GpuMemory/CMakeLists.txt
  5. 1 1
      AnKi/GpuMemory/GpuReadbackMemoryPool.cpp
  6. 1 2
      AnKi/GpuMemory/GpuReadbackMemoryPool.h
  7. 2 2
      AnKi/GpuMemory/GpuSceneBuffer.cpp
  8. 1 1
      AnKi/GpuMemory/GpuSceneBuffer.h
  9. 1 1
      AnKi/GpuMemory/GpuVisibleTransientMemoryPool.cpp
  10. 1 1
      AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h
  11. 1 1
      AnKi/GpuMemory/RebarTransientMemoryPool.cpp
  12. 1 1
      AnKi/GpuMemory/RebarTransientMemoryPool.h
  13. 1 1
      AnKi/GpuMemory/UnifiedGeometryBuffer.cpp
  14. 1 1
      AnKi/GpuMemory/UnifiedGeometryBuffer.h
  15. 6 4
      AnKi/Gr/Common.cpp
  16. 2 2
      AnKi/Gr/Common.h
  17. 3 3
      AnKi/Gr/D3D/D3DTexture.cpp
  18. 8 8
      AnKi/Gr/Texture.h
  19. 1 1
      AnKi/Gr/Vulkan/VkCommandBuffer.cpp
  20. 3 3
      AnKi/Gr/Vulkan/VkTexture.cpp
  21. 5 5
      AnKi/Importer/ImageImporter.cpp
  22. 1 1
      AnKi/Importer/ImageImporter.h
  23. 1 1
      AnKi/Physics/CMakeLists.txt
  24. 17 2
      AnKi/Physics/Common.h
  25. 6 6
      AnKi/Physics/PhysicsWorld.cpp
  26. 1 1
      AnKi/Renderer/AccelerationStructureBuilder.cpp
  27. 3 3
      AnKi/Renderer/Bloom.cpp
  28. 1 1
      AnKi/Renderer/CMakeLists.txt
  29. 1 1
      AnKi/Renderer/ClusterBinning.cpp
  30. 3 3
      AnKi/Renderer/DepthDownscale.cpp
  31. 2 2
      AnKi/Renderer/DepthDownscale.h
  32. 1 1
      AnKi/Renderer/GBuffer.cpp
  33. 1 1
      AnKi/Renderer/IndirectDiffuse.cpp
  34. 1 1
      AnKi/Renderer/LensFlare.cpp
  35. 1 1
      AnKi/Renderer/ProbeReflections.cpp
  36. 2 2
      AnKi/Renderer/Reflections.cpp
  37. 1 1
      AnKi/Renderer/Renderer.cpp
  38. 1 1
      AnKi/Renderer/RendererObject.h
  39. 2 2
      AnKi/Renderer/RtMaterialFetchDbg.cpp
  40. 3 3
      AnKi/Renderer/RtShadows.cpp
  41. 2 2
      AnKi/Renderer/ShadowMapping.cpp
  42. 3 3
      AnKi/Renderer/Utils/Drawer.cpp
  43. 4 4
      AnKi/Renderer/Utils/GpuVisibility.cpp
  44. 3 3
      AnKi/Renderer/Utils/HzbGenerator.cpp
  45. 1 1
      AnKi/Renderer/Utils/Readback.h
  46. 1 1
      AnKi/Resource/MeshResource.h
  47. 1 1
      AnKi/Scene/CMakeLists.txt
  48. 1 1
      AnKi/Scene/Components/DecalComponent.cpp
  49. 1 1
      AnKi/Scene/Components/FogDensityComponent.cpp
  50. 1 1
      AnKi/Scene/Components/LightComponent.cpp
  51. 1 1
      AnKi/Scene/Components/ParticleEmitterComponent.cpp
  52. 1 1
      AnKi/Scene/Components/ParticleEmitterComponent.h
  53. 1 1
      AnKi/Scene/Components/ReflectionProbeComponent.cpp
  54. 1 1
      AnKi/Scene/Components/SceneComponent.h
  55. 1 1
      AnKi/Scene/Components/SkinComponent.h
  56. 1 1
      AnKi/Scene/GpuSceneArray.h
  57. 2 0
      AnKi/ShaderCompiler/Dxc.cpp
  58. 4 0
      AnKi/Shaders/Include/Common.h
  59. 1 1
      AnKi/Ui/Canvas.cpp
  60. 1 1
      AnKi/Util/BitSet.h
  61. 6 2
      CMakeLists.txt
  62. 1 1
      Tests/CMakeLists.txt
  63. 2 2
      Tests/Gr/Gr.cpp
  64. 1 1
      Tests/Ui/Ui.cpp
  65. 1 2
      Tests/Util/ThreadHive.cpp

+ 1 - 1
AnKi/CMakeLists.txt

@@ -1,5 +1,5 @@
 set(ANKI_SUB_DIRS Importer Core Script Renderer Scene Ui Window Resource Gr Collision Math Util ShaderCompiler
 set(ANKI_SUB_DIRS Importer Core Script Renderer Scene Ui Window Resource Gr Collision Math Util ShaderCompiler
-	Shaders Physics)
+	Shaders Physics GpuMemory)
 foreach(TMP ${ANKI_SUB_DIRS})
 foreach(TMP ${ANKI_SUB_DIRS})
 	add_subdirectory(${TMP})
 	add_subdirectory(${TMP})
 endforeach()
 endforeach()

+ 4 - 4
AnKi/Core/App.cpp

@@ -6,7 +6,7 @@
 
 
 #include <AnKi/Core/App.h>
 #include <AnKi/Core/App.h>
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Util/CVarSet.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Util/Logger.h>
 #include <AnKi/Util/Logger.h>
 #include <AnKi/Util/File.h>
 #include <AnKi/Util/File.h>
 #include <AnKi/Util/Filesystem.h>
 #include <AnKi/Util/Filesystem.h>
@@ -14,9 +14,9 @@
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/HighRezTimer.h>
 #include <AnKi/Util/HighRezTimer.h>
 #include <AnKi/Core/CoreTracer.h>
 #include <AnKi/Core/CoreTracer.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/GpuReadbackMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuReadbackMemoryPool.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Window/NativeWindow.h>
 #include <AnKi/Window/NativeWindow.h>
 #include <AnKi/Core/MaliHwCounters.h>
 #include <AnKi/Core/MaliHwCounters.h>

+ 3 - 12
AnKi/Core/CMakeLists.txt

@@ -2,12 +2,7 @@ set(sources
 	App.cpp
 	App.cpp
 	CoreTracer.cpp
 	CoreTracer.cpp
 	MaliHwCounters.cpp
 	MaliHwCounters.cpp
-	StatsSet.cpp
-	GpuMemory/UnifiedGeometryBuffer.cpp
-	GpuMemory/GpuSceneBuffer.cpp
-	GpuMemory/RebarTransientMemoryPool.cpp
-	GpuMemory/GpuReadbackMemoryPool.cpp
-	GpuMemory/GpuVisibleTransientMemoryPool.cpp)
+	StatsSet.cpp)
 
 
 set(headers
 set(headers
 	App.h
 	App.h
@@ -15,11 +10,7 @@ set(headers
 	CoreTracer.h
 	CoreTracer.h
 	MaliHwCounters.h
 	MaliHwCounters.h
 	StatsSet.h
 	StatsSet.h
-	StdinListener.h
-	GpuMemory/UnifiedGeometryBuffer.h
-	GpuMemory/GpuSceneBuffer.h
-	GpuMemory/RebarTransientMemoryPool.h
-	GpuMemory/GpuReadbackMemoryPool.h)
+	StdinListener.h)
 
 
 add_library(AnKiCore ${sources} ${headers})
 add_library(AnKiCore ${sources} ${headers})
 
 
@@ -36,4 +27,4 @@ elseif(WINDOWS)
 endif()
 endif()
 
 
 target_compile_definitions(AnKiCore PRIVATE -DANKI_SOURCE_FILE)
 target_compile_definitions(AnKiCore PRIVATE -DANKI_SOURCE_FILE)
-target_link_libraries(AnKiCore AnKiGr AnKiResource AnKiUi AnKiRenderer AnKiUtil AnKiPhysics AnKiScript AnKiWindow ${extra_libs})
+target_link_libraries(AnKiCore AnKiResource AnKiUi AnKiRenderer AnKiGr AnKiUtil AnKiPhysics AnKiScript AnKiWindow ${extra_libs})

+ 5 - 0
AnKi/GpuMemory/CMakeLists.txt

@@ -0,0 +1,5 @@
+file(GLOB_RECURSE sources *.cpp)
+file(GLOB_RECURSE headers *.h)
+add_library(AnKiGpuMemory ${sources} ${headers})
+target_compile_definitions(AnKiGpuMemory PRIVATE "-DANKI_SOURCE_FILE")
+target_link_libraries(AnKiGpuMemory AnKiGr AnKiCore AnKiResource)

+ 1 - 1
AnKi/Core/GpuMemory/GpuReadbackMemoryPool.cpp → AnKi/GpuMemory/GpuReadbackMemoryPool.cpp

@@ -3,7 +3,7 @@
 // Code licensed under the BSD License.
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
-#include <AnKi/Core/GpuMemory/GpuReadbackMemoryPool.h>
+#include <AnKi/GpuMemory/GpuReadbackMemoryPool.h>
 #include <AnKi/Gr/GrManager.h>
 #include <AnKi/Gr/GrManager.h>
 
 
 namespace anki {
 namespace anki {

+ 1 - 2
AnKi/Core/GpuMemory/GpuReadbackMemoryPool.h → AnKi/GpuMemory/GpuReadbackMemoryPool.h

@@ -5,12 +5,11 @@
 
 
 #pragma once
 #pragma once
 
 
-#include <AnKi/Core/Common.h>
 #include <AnKi/Gr/Utils/SegregatedListsGpuMemoryPool.h>
 #include <AnKi/Gr/Utils/SegregatedListsGpuMemoryPool.h>
 
 
 namespace anki {
 namespace anki {
 
 
-/// @addtogroup core
+/// @addtogroup gpu_memory
 /// @{
 /// @{
 
 
 /// @memberof GpuReadbackMemoryPool
 /// @memberof GpuReadbackMemoryPool

+ 2 - 2
AnKi/Core/GpuMemory/GpuSceneBuffer.cpp → AnKi/GpuMemory/GpuSceneBuffer.cpp

@@ -3,8 +3,8 @@
 // Code licensed under the BSD License.
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Gr/CommandBuffer.h>
 #include <AnKi/Gr/CommandBuffer.h>

+ 1 - 1
AnKi/Core/GpuMemory/GpuSceneBuffer.h → AnKi/GpuMemory/GpuSceneBuffer.h

@@ -13,7 +13,7 @@
 
 
 namespace anki {
 namespace anki {
 
 
-/// @addtogroup core
+/// @addtogroup gpu_memory
 /// @{
 /// @{
 
 
 inline NumericCVar<PtrSize> g_gpuSceneInitialSizeCVar("Core", "GpuSceneInitialSize", 64_MB, 16_MB, 2_GB, "Global memory for the GPU scene");
 inline NumericCVar<PtrSize> g_gpuSceneInitialSizeCVar("Core", "GpuSceneInitialSize", 64_MB, 16_MB, 2_GB, "Global memory for the GPU scene");

+ 1 - 1
AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.cpp → AnKi/GpuMemory/GpuVisibleTransientMemoryPool.cpp

@@ -3,7 +3,7 @@
 // Code licensed under the BSD License.
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Core/StatsSet.h>
 
 
 namespace anki {
 namespace anki {

+ 1 - 1
AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h → AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h

@@ -12,7 +12,7 @@
 
 
 namespace anki {
 namespace anki {
 
 
-/// @addtogroup core
+/// @addtogroup gpu_memory
 /// @{
 /// @{
 
 
 /// GPU only transient memory. Used for temporary allocations. Allocations will get reset after each frame.
 /// GPU only transient memory. Used for temporary allocations. Allocations will get reset after each frame.

+ 1 - 1
AnKi/Core/GpuMemory/RebarTransientMemoryPool.cpp → AnKi/GpuMemory/RebarTransientMemoryPool.cpp

@@ -3,7 +3,7 @@
 // Code licensed under the BSD License.
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Gr/GrManager.h>
 #include <AnKi/Gr/GrManager.h>
 #include <AnKi/Gr/Buffer.h>
 #include <AnKi/Gr/Buffer.h>

+ 1 - 1
AnKi/Core/GpuMemory/RebarTransientMemoryPool.h → AnKi/GpuMemory/RebarTransientMemoryPool.h

@@ -12,7 +12,7 @@
 
 
 namespace anki {
 namespace anki {
 
 
-/// @addtogroup core
+/// @addtogroup gpu_memory
 /// @{
 /// @{
 
 
 inline NumericCVar<PtrSize> g_rebarGpuMemorySizeCvar("Core", "RebarGpuMemorySize", 24_MB, 1_MB, 1_GB, "ReBAR: always mapped GPU memory");
 inline NumericCVar<PtrSize> g_rebarGpuMemorySizeCvar("Core", "RebarGpuMemorySize", 24_MB, 1_MB, 1_GB, "ReBAR: always mapped GPU memory");

+ 1 - 1
AnKi/Core/GpuMemory/UnifiedGeometryBuffer.cpp → AnKi/GpuMemory/UnifiedGeometryBuffer.cpp

@@ -3,7 +3,7 @@
 // Code licensed under the BSD License.
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Gr/GrManager.h>
 #include <AnKi/Gr/GrManager.h>
 
 
 namespace anki {
 namespace anki {

+ 1 - 1
AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h → AnKi/GpuMemory/UnifiedGeometryBuffer.h

@@ -11,7 +11,7 @@
 
 
 namespace anki {
 namespace anki {
 
 
-/// @addtogroup core
+/// @addtogroup gpu_memory
 /// @{
 /// @{
 
 
 inline NumericCVar<PtrSize> g_unifiedGometryBufferSizeCvar("Core", "UnifiedGeometryBufferSize", 128_MB, 16_MB, 2_GB,
 inline NumericCVar<PtrSize> g_unifiedGometryBufferSizeCvar("Core", "UnifiedGeometryBufferSize", 128_MB, 16_MB, 2_GB,

+ 6 - 4
AnKi/Gr/Common.cpp

@@ -94,7 +94,7 @@ PtrSize computeVolumeSize(U32 width32, U32 height32, U32 depth32, Format fmt)
 	}
 	}
 }
 }
 
 
-U32 computeMaxMipmapCount2d(U32 w, U32 h, U32 minSizeOfLastMip)
+U8 computeMaxMipmapCount2d(U32 w, U32 h, U32 minSizeOfLastMip)
 {
 {
 	ANKI_ASSERT(w >= minSizeOfLastMip && h >= minSizeOfLastMip);
 	ANKI_ASSERT(w >= minSizeOfLastMip && h >= minSizeOfLastMip);
 	U32 s = (w < h) ? w : h;
 	U32 s = (w < h) ? w : h;
@@ -105,11 +105,12 @@ U32 computeMaxMipmapCount2d(U32 w, U32 h, U32 minSizeOfLastMip)
 		++count;
 		++count;
 	}
 	}
 
 
-	return count;
+	ANKI_ASSERT(count < kMaxU8);
+	return U8(count);
 }
 }
 
 
 /// Compute max number of mipmaps for a 3D texture.
 /// Compute max number of mipmaps for a 3D texture.
-U32 computeMaxMipmapCount3d(U32 w, U32 h, U32 d, U32 minSizeOfLastMip)
+U8 computeMaxMipmapCount3d(U32 w, U32 h, U32 d, U32 minSizeOfLastMip)
 {
 {
 	U32 s = (w < h) ? w : h;
 	U32 s = (w < h) ? w : h;
 	s = (s < d) ? s : d;
 	s = (s < d) ? s : d;
@@ -120,7 +121,8 @@ U32 computeMaxMipmapCount3d(U32 w, U32 h, U32 d, U32 minSizeOfLastMip)
 		++count;
 		++count;
 	}
 	}
 
 
-	return count;
+	ANKI_ASSERT(count < kMaxU8);
+	return U8(count);
 }
 }
 
 
 Error ShaderReflection::linkShaderReflection(const ShaderReflection& a, const ShaderReflection& b, ShaderReflection& c_)
 Error ShaderReflection::linkShaderReflection(const ShaderReflection& a, const ShaderReflection& b, ShaderReflection& c_)

+ 2 - 2
AnKi/Gr/Common.h

@@ -1108,10 +1108,10 @@ public:
 };
 };
 
 
 /// Compute max number of mipmaps for a 2D texture.
 /// Compute max number of mipmaps for a 2D texture.
-U32 computeMaxMipmapCount2d(U32 w, U32 h, U32 minSizeOfLastMip = 1);
+U8 computeMaxMipmapCount2d(U32 w, U32 h, U32 minSizeOfLastMip = 1);
 
 
 /// Compute max number of mipmaps for a 3D texture.
 /// Compute max number of mipmaps for a 3D texture.
-U32 computeMaxMipmapCount3d(U32 w, U32 h, U32 d, U32 minSizeOfLastMip = 1);
+U8 computeMaxMipmapCount3d(U32 w, U32 h, U32 d, U32 minSizeOfLastMip = 1);
 
 
 /// Visit a SPIR-V binary.
 /// Visit a SPIR-V binary.
 template<typename TArray, typename TFunc>
 template<typename TArray, typename TFunc>

+ 3 - 3
AnKi/Gr/D3D/D3DTexture.cpp

@@ -91,11 +91,11 @@ Error TextureImpl::initInternal(ID3D12Resource* external, const TextureInitInfo&
 
 
 	if(m_texType == TextureType::k3D)
 	if(m_texType == TextureType::k3D)
 	{
 	{
-		m_mipCount = min<U32>(init.m_mipmapCount, computeMaxMipmapCount3d(m_width, m_height, m_depth));
+		m_mipCount = min(init.m_mipmapCount, computeMaxMipmapCount3d(m_width, m_height, m_depth));
 	}
 	}
 	else
 	else
 	{
 	{
-		m_mipCount = min<U32>(init.m_mipmapCount, computeMaxMipmapCount2d(m_width, m_height));
+		m_mipCount = min(init.m_mipmapCount, computeMaxMipmapCount2d(m_width, m_height));
 	}
 	}
 
 
 	if(external)
 	if(external)
@@ -128,7 +128,7 @@ Error TextureImpl::initInternal(ID3D12Resource* external, const TextureInitInfo&
 		desc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
 		desc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
 		desc.Width = m_width;
 		desc.Width = m_width;
 		desc.Height = m_height;
 		desc.Height = m_height;
-		desc.MipLevels = U16(m_mipCount);
+		desc.MipLevels = m_mipCount;
 		desc.Format = convertFormat(m_format);
 		desc.Format = convertFormat(m_format);
 		desc.SampleDesc.Count = 1;
 		desc.SampleDesc.Count = 1;
 		desc.SampleDesc.Quality = 0;
 		desc.SampleDesc.Quality = 0;

+ 8 - 8
AnKi/Gr/Texture.h

@@ -129,7 +129,7 @@ public:
 		return m_layerCount;
 		return m_layerCount;
 	}
 	}
 
 
-	U32 getMipmapCount() const
+	U8 getMipmapCount() const
 	{
 	{
 		ANKI_ASSERT(m_mipCount);
 		ANKI_ASSERT(m_mipCount);
 		return m_mipCount;
 		return m_mipCount;
@@ -167,7 +167,7 @@ protected:
 	U32 m_height = 0;
 	U32 m_height = 0;
 	U32 m_depth = 0;
 	U32 m_depth = 0;
 	U32 m_layerCount = 0;
 	U32 m_layerCount = 0;
-	U32 m_mipCount = 0;
+	U8 m_mipCount = 0;
 	TextureType m_texType = TextureType::kCount;
 	TextureType m_texType = TextureType::kCount;
 	TextureUsageBit m_usage = TextureUsageBit::kNone;
 	TextureUsageBit m_usage = TextureUsageBit::kNone;
 	Format m_format = Format::kNone;
 	Format m_format = Format::kNone;
@@ -193,9 +193,9 @@ private:
 class TextureSubresourceDesc
 class TextureSubresourceDesc
 {
 {
 public:
 public:
-	U32 m_mipmap : 5 = 0;
-	U32 m_face : 3 = 0;
-	U32 m_layer : 24 = 0;
+	U16 m_layer = 0;
+	U8 m_mipmap = 0;
+	U8 m_face = 0;
 
 
 	/// This flag doesn't mean the whole texture unless the m_aspect is equal to the aspect of the Texture.
 	/// This flag doesn't mean the whole texture unless the m_aspect is equal to the aspect of the Texture.
 	Bool m_allSurfacesOrVolumes = true;
 	Bool m_allSurfacesOrVolumes = true;
@@ -274,9 +274,9 @@ public:
 
 
 private:
 private:
 	constexpr TextureSubresourceDesc(U32 mip, U32 face, U32 layer, Bool allSurfs, DepthStencilAspectBit aspect)
 	constexpr TextureSubresourceDesc(U32 mip, U32 face, U32 layer, Bool allSurfs, DepthStencilAspectBit aspect)
-		: m_mipmap(mip & ((1u << 5u) - 1u))
-		, m_face(face & ((1u << 3u) - 1u))
-		, m_layer(layer & ((1u << 24u) - 1u))
+		: m_layer(layer & kMaxU16)
+		, m_mipmap(mip & kMaxU8)
+		, m_face(face & kMaxU8)
 		, m_allSurfacesOrVolumes(allSurfs)
 		, m_allSurfacesOrVolumes(allSurfs)
 		, m_depthStencilAspect(aspect)
 		, m_depthStencilAspect(aspect)
 	{
 	{

+ 1 - 1
AnKi/Gr/Vulkan/VkCommandBuffer.cpp

@@ -495,7 +495,7 @@ void CommandBuffer::endRenderPass()
 	vkCmdEndRendering(self.m_handle);
 	vkCmdEndRendering(self.m_handle);
 }
 }
 
 
-void CommandBuffer::setVrsRate(VrsRate rate)
+void CommandBuffer::setVrsRate([[maybe_unused]] VrsRate rate)
 {
 {
 	ANKI_VK_SELF(CommandBufferImpl);
 	ANKI_VK_SELF(CommandBufferImpl);
 	ANKI_ASSERT(getGrManagerImpl().getDeviceCapabilities().m_vrs);
 	ANKI_ASSERT(getGrManagerImpl().getDeviceCapabilities().m_vrs);

+ 3 - 3
AnKi/Gr/Vulkan/VkTexture.cpp

@@ -130,13 +130,13 @@ Error TextureImpl::initInternal(VkImage externalImage, const TextureInitInfo& in
 
 
 	if(m_texType == TextureType::k3D)
 	if(m_texType == TextureType::k3D)
 	{
 	{
-		m_mipCount = min<U32>(init.m_mipmapCount, computeMaxMipmapCount3d(m_width, m_height, m_depth));
+		m_mipCount = min(init.m_mipmapCount, computeMaxMipmapCount3d(m_width, m_height, m_depth));
 	}
 	}
 	else
 	else
 	{
 	{
-		m_mipCount = min<U32>(init.m_mipmapCount, computeMaxMipmapCount2d(m_width, m_height));
+		m_mipCount = min(init.m_mipmapCount, computeMaxMipmapCount2d(m_width, m_height));
 	}
 	}
-	init.m_mipmapCount = U8(m_mipCount);
+	init.m_mipmapCount = m_mipCount;
 
 
 	m_layerCount = init.m_layerCount;
 	m_layerCount = init.m_layerCount;
 
 

+ 5 - 5
AnKi/Importer/ImageImporter.cpp

@@ -777,7 +777,7 @@ static Error storeAnkiImage(const ImageImporterConfig& config, const ImageImport
 	}
 	}
 	header.m_compressionMask = config.m_compressions;
 	header.m_compressionMask = config.m_compressions;
 	header.m_isNormal = false;
 	header.m_isNormal = false;
-	header.m_mipmapCount = U32(ctx.m_mipmaps.getSize());
+	header.m_mipmapCount = U8(ctx.m_mipmaps.getSize());
 	header.m_astcBlockSizeX = config.m_astcBlockSize.x();
 	header.m_astcBlockSizeX = config.m_astcBlockSize.x();
 	header.m_astcBlockSizeY = config.m_astcBlockSize.y();
 	header.m_astcBlockSizeY = config.m_astcBlockSize.y();
 	ANKI_CHECK(outFile.write(&header, sizeof(header)));
 	ANKI_CHECK(outFile.write(&header, sizeof(header)));
@@ -944,10 +944,10 @@ static Error importImageInternal(const ImageImporterConfig& configOriginal)
 	ANKI_CHECK(loadFirstMipmap(config, ctx));
 	ANKI_CHECK(loadFirstMipmap(config, ctx));
 
 
 	// Generate mipmaps
 	// Generate mipmaps
-	const U32 mipCount = min(config.m_mipmapCount, (config.m_type == ImageBinaryType::k3D)
-													   ? computeMaxMipmapCount3d(width, height, ctx.m_depth, config.m_minMipmapDimension)
-													   : computeMaxMipmapCount2d(width, height, config.m_minMipmapDimension));
-	for(U32 mip = 1; mip < mipCount; ++mip)
+	const U8 mipCount = min(config.m_mipmapCount, (config.m_type == ImageBinaryType::k3D)
+													  ? computeMaxMipmapCount3d(width, height, ctx.m_depth, config.m_minMipmapDimension)
+													  : computeMaxMipmapCount2d(width, height, config.m_minMipmapDimension));
+	for(U8 mip = 1; mip < mipCount; ++mip)
 	{
 	{
 		ctx.m_mipmaps.emplaceBack();
 		ctx.m_mipmaps.emplaceBack();
 
 

+ 1 - 1
AnKi/Importer/ImageImporter.h

@@ -23,7 +23,7 @@ public:
 	ImageBinaryType m_type = ImageBinaryType::k2D;
 	ImageBinaryType m_type = ImageBinaryType::k2D;
 	ImageBinaryDataCompression m_compressions = ImageBinaryDataCompression::kS3tc;
 	ImageBinaryDataCompression m_compressions = ImageBinaryDataCompression::kS3tc;
 	U32 m_minMipmapDimension = 4;
 	U32 m_minMipmapDimension = 4;
-	U32 m_mipmapCount = kMaxU32;
+	U8 m_mipmapCount = kMaxU8;
 	Bool m_noAlpha = true;
 	Bool m_noAlpha = true;
 	CString m_tempDirectory;
 	CString m_tempDirectory;
 	CString m_compressonatorFilename; ///< Optional.
 	CString m_compressonatorFilename; ///< Optional.

+ 1 - 1
AnKi/Physics/CMakeLists.txt

@@ -1,5 +1,5 @@
 file(GLOB_RECURSE sources *.cpp)
 file(GLOB_RECURSE sources *.cpp)
 file(GLOB_RECURSE headers *.h)
 file(GLOB_RECURSE headers *.h)
 add_library(AnKiPhysics ${sources} ${headers})
 add_library(AnKiPhysics ${sources} ${headers})
-target_compile_definitions(AnKiPhysics PRIVATE "-DANKI_SOURCE_FILE" "-DJPH_DEBUG_RENDERER")
+target_compile_definitions(AnKiPhysics PRIVATE "-DANKI_SOURCE_FILE")
 target_link_libraries(AnKiPhysics AnKiUtil Jolt)
 target_link_libraries(AnKiPhysics AnKiUtil Jolt)

+ 17 - 2
AnKi/Physics/Common.h

@@ -19,6 +19,11 @@
 #	error "See file"
 #	error "See file"
 #endif
 #endif
 
 
+#if ANKI_COMPILER_GCC_COMPATIBLE
+#	pragma GCC diagnostic push
+#	pragma GCC diagnostic ignored "-Wconversion"
+#endif
+
 #include <Jolt/Jolt.h>
 #include <Jolt/Jolt.h>
 #include <Jolt/Physics/Body/Body.h>
 #include <Jolt/Physics/Body/Body.h>
 #include <Jolt/Physics/Body/BodyCreationSettings.h>
 #include <Jolt/Physics/Body/BodyCreationSettings.h>
@@ -39,6 +44,10 @@
 #include <Jolt/RegisterTypes.h>
 #include <Jolt/RegisterTypes.h>
 #include <Jolt/Core/JobSystemThreadPool.h>
 #include <Jolt/Core/JobSystemThreadPool.h>
 
 
+#if ANKI_COMPILER_GCC_COMPATIBLE
+#	pragma GCC diagnostic pop
+#endif
+
 namespace anki {
 namespace anki {
 
 
 #define ANKI_PHYS_LOGI(...) ANKI_LOG("PHYS", kNormal, __VA_ARGS__)
 #define ANKI_PHYS_LOGI(...) ANKI_LOG("PHYS", kNormal, __VA_ARGS__)
@@ -109,16 +118,17 @@ public:
 
 
 protected:
 protected:
 	static constexpr U32 kTypeBits = 5u; ///< 5 is more than enough
 	static constexpr U32 kTypeBits = 5u; ///< 5 is more than enough
+	static constexpr U32 kMaxBockArrayIndex = kMaxU32 >> kTypeBits;
 
 
 	void* m_userData = nullptr;
 	void* m_userData = nullptr;
 
 
 	mutable Atomic<U32> m_refcount = {0};
 	mutable Atomic<U32> m_refcount = {0};
 
 
 	U32 m_type : kTypeBits;
 	U32 m_type : kTypeBits;
-	U32 m_blockArrayIndex : 32 - kTypeBits = kMaxU32 >> kTypeBits;
+	U32 m_blockArrayIndex : 32 - kTypeBits = kMaxBockArrayIndex;
 
 
 	PhysicsObjectBase(PhysicsObjectType type)
 	PhysicsObjectBase(PhysicsObjectType type)
-		: m_type(U32(type))
+		: m_type(U32(type) & ((1u << kTypeBits) - 1u))
 	{
 	{
 		ANKI_ASSERT(type < PhysicsObjectType::kCount);
 		ANKI_ASSERT(type < PhysicsObjectType::kCount);
 	}
 	}
@@ -132,6 +142,11 @@ protected:
 	{
 	{
 		return m_refcount.fetchSub(1);
 		return m_refcount.fetchSub(1);
 	}
 	}
+
+	void setBlockArrayIndex(U32 idx)
+	{
+		m_blockArrayIndex = idx & kMaxBockArrayIndex;
+	}
 };
 };
 
 
 /// The physics layers a PhysicsBody can be.
 /// The physics layers a PhysicsBody can be.

+ 6 - 6
AnKi/Physics/PhysicsWorld.cpp

@@ -487,7 +487,7 @@ void PhysicsWorld::update(Second dt)
 template<typename TJPHCollisionShape, typename... TArgs>
 template<typename TJPHCollisionShape, typename... TArgs>
 PhysicsCollisionShapePtr PhysicsWorld::newCollisionShape(TArgs&&... args)
 PhysicsCollisionShapePtr PhysicsWorld::newCollisionShape(TArgs&&... args)
 {
 {
-	decltype(m_collisionShapes.m_array)::Iterator it;
+	typename decltype(m_collisionShapes.m_array)::Iterator it;
 
 
 	{
 	{
 		LockGuard lock(m_collisionShapes.m_mtx);
 		LockGuard lock(m_collisionShapes.m_mtx);
@@ -498,7 +498,7 @@ PhysicsCollisionShapePtr PhysicsWorld::newCollisionShape(TArgs&&... args)
 	classw.construct(std::forward<TArgs>(args)...);
 	classw.construct(std::forward<TArgs>(args)...);
 	classw->SetEmbedded();
 	classw->SetEmbedded();
 
 
-	it->m_blockArrayIndex = it.getArrayIndex();
+	it->setBlockArrayIndex(it.getArrayIndex());
 	return PhysicsCollisionShapePtr(&(*it));
 	return PhysicsCollisionShapePtr(&(*it));
 }
 }
 
 
@@ -581,7 +581,7 @@ PhysicsBodyPtr PhysicsWorld::newPhysicsBody(const PhysicsBodyInitInfo& init)
 		auto it = m_bodies.m_array.emplace();
 		auto it = m_bodies.m_array.emplace();
 
 
 		newBody = &(*it);
 		newBody = &(*it);
-		newBody->m_blockArrayIndex = it.getArrayIndex();
+		newBody->setBlockArrayIndex(it.getArrayIndex());
 	}
 	}
 
 
 	newBody->init(init);
 	newBody->init(init);
@@ -595,7 +595,7 @@ PhysicsJointPtr PhysicsWorld::newJoint(PhysicsBody* body1, PhysicsBody* body2, T
 
 
 	g_physicsJointsCreatedStatVar.increment(1);
 	g_physicsJointsCreatedStatVar.increment(1);
 
 
-	decltype(m_joints.m_array)::Iterator it;
+	typename decltype(m_joints.m_array)::Iterator it;
 	{
 	{
 		LockGuard lock(m_joints.m_mtx);
 		LockGuard lock(m_joints.m_mtx);
 		it = m_joints.m_array.emplace();
 		it = m_joints.m_array.emplace();
@@ -607,7 +607,7 @@ PhysicsJointPtr PhysicsWorld::newJoint(PhysicsBody* body1, PhysicsBody* body2, T
 
 
 	it->m_body1.reset(body1);
 	it->m_body1.reset(body1);
 	it->m_body2.reset(body2);
 	it->m_body2.reset(body2);
-	it->m_blockArrayIndex = it.getArrayIndex();
+	it->setBlockArrayIndex(it.getArrayIndex());
 
 
 	m_jphPhysicsSystem->AddConstraint(&it->m_base); // It's thread-safe
 	m_jphPhysicsSystem->AddConstraint(&it->m_base); // It's thread-safe
 
 
@@ -647,7 +647,7 @@ PhysicsPlayerControllerPtr PhysicsWorld::newPlayerController(const PhysicsPlayer
 
 
 		auto it = m_characters.m_array.emplace();
 		auto it = m_characters.m_array.emplace();
 		newChar = &(*it);
 		newChar = &(*it);
-		newChar->m_blockArrayIndex = it.getArrayIndex();
+		newChar->setBlockArrayIndex(it.getArrayIndex());
 	}
 	}
 
 
 	newChar->init(init);
 	newChar->init(init);

+ 1 - 1
AnKi/Renderer/AccelerationStructureBuilder.cpp

@@ -8,7 +8,7 @@
 #include <AnKi/Renderer/Utils/GpuVisibility.h>
 #include <AnKi/Renderer/Utils/GpuVisibility.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Core/App.h>
 #include <AnKi/Core/App.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 3 - 3
AnKi/Renderer/Bloom.cpp

@@ -16,7 +16,7 @@ Error Bloom::init()
 	// Pyramid
 	// Pyramid
 	{
 	{
 		const UVec2 pyramidSize = getRenderer().getInternalResolution() / 2;
 		const UVec2 pyramidSize = getRenderer().getInternalResolution() / 2;
-		const U32 pyramidMipCount = computeMaxMipmapCount2d(pyramidSize.x(), pyramidSize.y(), g_bloomPyramidLowLimit);
+		const U8 pyramidMipCount = computeMaxMipmapCount2d(pyramidSize.x(), pyramidSize.y(), g_bloomPyramidLowLimit);
 
 
 		const Bool preferCompute = g_preferComputeCVar;
 		const Bool preferCompute = g_preferComputeCVar;
 
 
@@ -25,7 +25,7 @@ Error Bloom::init()
 			getRenderer().create2DRenderTargetDescription(pyramidSize.x(), pyramidSize.y(), getRenderer().getHdrFormat(), "Bloom pyramid");
 			getRenderer().create2DRenderTargetDescription(pyramidSize.x(), pyramidSize.y(), getRenderer().getHdrFormat(), "Bloom pyramid");
 		texinit.m_usage = TextureUsageBit::kSrvPixel | TextureUsageBit::kSrvCompute;
 		texinit.m_usage = TextureUsageBit::kSrvPixel | TextureUsageBit::kSrvCompute;
 		texinit.m_usage |= (preferCompute) ? TextureUsageBit::kUavCompute : TextureUsageBit::kRtvDsvWrite;
 		texinit.m_usage |= (preferCompute) ? TextureUsageBit::kUavCompute : TextureUsageBit::kRtvDsvWrite;
-		texinit.m_mipmapCount = U8(pyramidMipCount);
+		texinit.m_mipmapCount = pyramidMipCount;
 		m_pyramidTex = getRenderer().createAndClearRenderTarget(texinit, TextureUsageBit::kSrvCompute);
 		m_pyramidTex = getRenderer().createAndClearRenderTarget(texinit, TextureUsageBit::kSrvCompute);
 
 
 		// Shader programs
 		// Shader programs
@@ -92,7 +92,7 @@ void Bloom::populateRenderGraph(RenderingContext& ctx)
 				GraphicsRenderPass& pass = rgraph.newGraphicsRenderPass(generateTempPassName("Bloom pyramid %u", i));
 				GraphicsRenderPass& pass = rgraph.newGraphicsRenderPass(generateTempPassName("Bloom pyramid %u", i));
 
 
 				GraphicsRenderPassTargetDesc rtInf(m_runCtx.m_pyramidRt);
 				GraphicsRenderPassTargetDesc rtInf(m_runCtx.m_pyramidRt);
-				rtInf.m_subresource.m_mipmap = i;
+				rtInf.m_subresource.m_mipmap = U8(i);
 				pass.setRenderpassInfo({rtInf});
 				pass.setRenderpassInfo({rtInf});
 
 
 				ppass = &pass;
 				ppass = &pass;

+ 1 - 1
AnKi/Renderer/CMakeLists.txt

@@ -2,4 +2,4 @@ file(GLOB_RECURSE sources *.cpp)
 file(GLOB_RECURSE headers *.h)
 file(GLOB_RECURSE headers *.h)
 add_library(AnKiRenderer ${sources} ${headers})
 add_library(AnKiRenderer ${sources} ${headers})
 target_compile_definitions(AnKiRenderer PRIVATE -DANKI_SOURCE_FILE)
 target_compile_definitions(AnKiRenderer PRIVATE -DANKI_SOURCE_FILE)
-target_link_libraries(AnKiRenderer AnKiGr AnKiResource AnKiUi)
+target_link_libraries(AnKiRenderer AnKiGr AnKiResource AnKiUi AnKiGpuMemory)

+ 1 - 1
AnKi/Renderer/ClusterBinning.cpp

@@ -8,7 +8,7 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/ProbeReflections.h>
 #include <AnKi/Renderer/ProbeReflections.h>
 #include <AnKi/Renderer/VolumetricLightingAccumulation.h>
 #include <AnKi/Renderer/VolumetricLightingAccumulation.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
 #include <AnKi/Scene/Components/CameraComponent.h>
 #include <AnKi/Scene/Components/CameraComponent.h>
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Collision/Functions.h>
 #include <AnKi/Collision/Functions.h>

+ 3 - 3
AnKi/Renderer/DepthDownscale.cpp

@@ -44,7 +44,7 @@ Error DepthDownscale::initInternal()
 	// Create RT descr
 	// Create RT descr
 	{
 	{
 		m_rtDescr = getRenderer().create2DRenderTargetDescription(width, height, Format::kR32_Sfloat, "Downscaled depth");
 		m_rtDescr = getRenderer().create2DRenderTargetDescription(width, height, Format::kR32_Sfloat, "Downscaled depth");
-		m_rtDescr.m_mipmapCount = U8(m_mipCount);
+		m_rtDescr.m_mipmapCount = m_mipCount;
 		m_rtDescr.bake();
 		m_rtDescr.bake();
 	}
 	}
 
 
@@ -113,7 +113,7 @@ void DepthDownscale::populateRenderGraph(RenderingContext& ctx)
 
 
 			cmdb.setFastConstants(&pc, sizeof(pc));
 			cmdb.setFastConstants(&pc, sizeof(pc));
 
 
-			for(U32 mip = 0; mip < kMaxMipsSinglePassDownsamplerCanProduce; ++mip)
+			for(U8 mip = 0; mip < kMaxMipsSinglePassDownsamplerCanProduce; ++mip)
 			{
 			{
 				TextureSubresourceDesc surface = TextureSubresourceDesc::firstSurface();
 				TextureSubresourceDesc surface = TextureSubresourceDesc::firstSurface();
 				if(mip < m_mipCount)
 				if(mip < m_mipCount)
@@ -140,7 +140,7 @@ void DepthDownscale::populateRenderGraph(RenderingContext& ctx)
 	{
 	{
 		// Do it with raster
 		// Do it with raster
 
 
-		for(U32 mip = 0; mip < m_mipCount; ++mip)
+		for(U8 mip = 0; mip < m_mipCount; ++mip)
 		{
 		{
 			static constexpr Array<CString, 4> passNames = {"Depth downscale #1", "Depth downscale #2", "Depth downscale #3", "Depth downscale #4"};
 			static constexpr Array<CString, 4> passNames = {"Depth downscale #1", "Depth downscale #2", "Depth downscale #3", "Depth downscale #4"};
 			GraphicsRenderPass& pass = rgraph.newGraphicsRenderPass(passNames[mip]);
 			GraphicsRenderPass& pass = rgraph.newGraphicsRenderPass(passNames[mip]);

+ 2 - 2
AnKi/Renderer/DepthDownscale.h

@@ -36,7 +36,7 @@ public:
 		return m_runCtx.m_rt;
 		return m_runCtx.m_rt;
 	}
 	}
 
 
-	U32 getMipmapCount() const
+	U8 getMipmapCount() const
 	{
 	{
 		return m_mipCount;
 		return m_mipCount;
 	}
 	}
@@ -49,7 +49,7 @@ private:
 
 
 	BufferPtr m_counterBuffer;
 	BufferPtr m_counterBuffer;
 
 
-	U32 m_mipCount = 0;
+	U8 m_mipCount = 0;
 
 
 	class
 	class
 	{
 	{

+ 1 - 1
AnKi/Renderer/GBuffer.cpp

@@ -50,7 +50,7 @@ Error GBuffer::init()
 		TextureInitInfo texinit = getRenderer().create2DRenderTargetInitInfo(previousPowerOfTwo(getRenderer().getInternalResolution().x()),
 		TextureInitInfo texinit = getRenderer().create2DRenderTargetInitInfo(previousPowerOfTwo(getRenderer().getInternalResolution().x()),
 																			 previousPowerOfTwo(getRenderer().getInternalResolution().y()),
 																			 previousPowerOfTwo(getRenderer().getInternalResolution().y()),
 																			 Format::kR32_Sfloat, usage, "GBuffer HZB");
 																			 Format::kR32_Sfloat, usage, "GBuffer HZB");
-		texinit.m_mipmapCount = U8(computeMaxMipmapCount2d(texinit.m_width, texinit.m_height));
+		texinit.m_mipmapCount = computeMaxMipmapCount2d(texinit.m_width, texinit.m_height);
 		ClearValue clear;
 		ClearValue clear;
 		clear.m_colorf = {1.0f, 1.0f, 1.0f, 1.0f};
 		clear.m_colorf = {1.0f, 1.0f, 1.0f, 1.0f};
 		m_hzbRt = getRenderer().createAndClearRenderTarget(texinit, TextureUsageBit::kSrvCompute, clear);
 		m_hzbRt = getRenderer().createAndClearRenderTarget(texinit, TextureUsageBit::kSrvCompute, clear);

+ 1 - 1
AnKi/Renderer/IndirectDiffuse.cpp

@@ -10,7 +10,7 @@
 #include <AnKi/Renderer/Sky.h>
 #include <AnKi/Renderer/Sky.h>
 #include <AnKi/Renderer/ShadowMapping.h>
 #include <AnKi/Renderer/ShadowMapping.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
 
 

+ 1 - 1
AnKi/Renderer/LensFlare.cpp

@@ -7,7 +7,7 @@
 #include <AnKi/Renderer/DepthDownscale.h>
 #include <AnKi/Renderer/DepthDownscale.h>
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Util/CVarSet.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
 #include <AnKi/Util/Functions.h>
 #include <AnKi/Util/Functions.h>
 #include <AnKi/Scene/Components/LensFlareComponent.h>
 #include <AnKi/Scene/Components/LensFlareComponent.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>

+ 1 - 1
AnKi/Renderer/ProbeReflections.cpp

@@ -57,7 +57,7 @@ Error ProbeReflections::init()
 	}
 	}
 
 
 	m_lightShading.m_tileSize = g_reflectionProbeResolutionCVar;
 	m_lightShading.m_tileSize = g_reflectionProbeResolutionCVar;
-	m_lightShading.m_mipCount = U8(computeMaxMipmapCount2d(m_lightShading.m_tileSize, m_lightShading.m_tileSize, 8));
+	m_lightShading.m_mipCount = computeMaxMipmapCount2d(m_lightShading.m_tileSize, m_lightShading.m_tileSize, 8);
 
 
 	{
 	{
 		const U32 resolution = g_probeReflectionShadowMapResolutionCVar;
 		const U32 resolution = g_probeReflectionShadowMapResolutionCVar;

+ 2 - 2
AnKi/Renderer/Reflections.cpp

@@ -14,8 +14,8 @@
 #include <AnKi/Renderer/ShadowMapping.h>
 #include <AnKi/Renderer/ShadowMapping.h>
 #include <AnKi/Renderer/ClusterBinning.h>
 #include <AnKi/Renderer/ClusterBinning.h>
 #include <AnKi/Renderer/ProbeReflections.h>
 #include <AnKi/Renderer/ProbeReflections.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Resource/ImageAtlasResource.h>
 #include <AnKi/Resource/ImageAtlasResource.h>

+ 1 - 1
AnKi/Renderer/Renderer.cpp

@@ -11,7 +11,7 @@
 #include <AnKi/Collision/Plane.h>
 #include <AnKi/Collision/Plane.h>
 #include <AnKi/Collision/Functions.h>
 #include <AnKi/Collision/Functions.h>
 #include <AnKi/Shaders/Include/ClusteredShadingTypes.h>
 #include <AnKi/Shaders/Include/ClusteredShadingTypes.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 #include <AnKi/Scene/Components/CameraComponent.h>
 #include <AnKi/Scene/Components/CameraComponent.h>
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>
 #include <AnKi/Scene/Components/SkyboxComponent.h>

+ 1 - 1
AnKi/Renderer/RendererObject.h

@@ -10,7 +10,7 @@
 #include <AnKi/Gr.h>
 #include <AnKi/Gr.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Resource/ShaderProgramResource.h>
 #include <AnKi/Resource/ShaderProgramResource.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 2 - 2
AnKi/Renderer/RtMaterialFetchDbg.cpp

@@ -7,8 +7,8 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/AccelerationStructureBuilder.h>
 #include <AnKi/Renderer/AccelerationStructureBuilder.h>
 #include <AnKi/Renderer/GBuffer.h>
 #include <AnKi/Renderer/GBuffer.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 
 

+ 3 - 3
AnKi/Renderer/RtShadows.cpp

@@ -15,9 +15,9 @@
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Shaders/Include/GpuSceneTypes.h>
 #include <AnKi/Shaders/Include/GpuSceneTypes.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 2 - 2
AnKi/Renderer/ShadowMapping.cpp

@@ -12,7 +12,7 @@
 #include <AnKi/Renderer/Utils/HzbGenerator.h>
 #include <AnKi/Renderer/Utils/HzbGenerator.h>
 #include <AnKi/Core/App.h>
 #include <AnKi/Core/App.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Core/StatsSet.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Scene/Components/LightComponent.h>
 #include <AnKi/Scene/Components/CameraComponent.h>
 #include <AnKi/Scene/Components/CameraComponent.h>
@@ -93,7 +93,7 @@ Error ShadowMapping::init()
 		size /= 2;
 		size /= 2;
 
 
 		m_cascadeHzbRtDescrs[i] = getRenderer().create2DRenderTargetDescription(size.x(), size.y(), Format::kR32_Sfloat, name);
 		m_cascadeHzbRtDescrs[i] = getRenderer().create2DRenderTargetDescription(size.x(), size.y(), Format::kR32_Sfloat, name);
-		m_cascadeHzbRtDescrs[i].m_mipmapCount = U8(computeMaxMipmapCount2d(m_cascadeHzbRtDescrs[i].m_width, m_cascadeHzbRtDescrs[i].m_height));
+		m_cascadeHzbRtDescrs[i].m_mipmapCount = computeMaxMipmapCount2d(m_cascadeHzbRtDescrs[i].m_width, m_cascadeHzbRtDescrs[i].m_height);
 		m_cascadeHzbRtDescrs[i].bake();
 		m_cascadeHzbRtDescrs[i].bake();
 	}
 	}
 
 

+ 3 - 3
AnKi/Renderer/Utils/Drawer.cpp

@@ -10,9 +10,9 @@
 #include <AnKi/Util/Logger.h>
 #include <AnKi/Util/Logger.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Shaders/Include/MaterialTypes.h>
 #include <AnKi/Shaders/Include/GpuSceneFunctions.h>
 #include <AnKi/Shaders/Include/GpuSceneFunctions.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Scene/RenderStateBucket.h>
 #include <AnKi/Scene/RenderStateBucket.h>
 
 

+ 4 - 4
AnKi/Renderer/Utils/GpuVisibility.cpp

@@ -7,12 +7,12 @@
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Renderer/Renderer.h>
 #include <AnKi/Scene/RenderStateBucket.h>
 #include <AnKi/Scene/RenderStateBucket.h>
 #include <AnKi/Scene/GpuSceneArray.h>
 #include <AnKi/Scene/GpuSceneArray.h>
-#include <AnKi/Core/GpuMemory/GpuVisibleTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuVisibleTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 #include <AnKi/Collision/Functions.h>
 #include <AnKi/Collision/Functions.h>
 #include <AnKi/Shaders/Include/GpuVisibilityTypes.h>
 #include <AnKi/Shaders/Include/GpuVisibilityTypes.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Core/StatsSet.h>
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Util/Tracer.h>
 #include <AnKi/Util/Tracer.h>

+ 3 - 3
AnKi/Renderer/Utils/HzbGenerator.cpp

@@ -118,10 +118,10 @@ void HzbGenerator::populateRenderGraphInternal(ConstWeakArray<DispatchInput> dis
 		{
 		{
 			const DispatchInput& in = dispatchInputsCopy[dispatch];
 			const DispatchInput& in = dispatchInputsCopy[dispatch];
 
 
-			const U32 hzbMipCount =
+			const U8 hzbMipCount =
 				min(kMaxMipsSinglePassDownsamplerCanProduce, computeMaxMipmapCount2d(in.m_dstHzbRtSize.x(), in.m_dstHzbRtSize.y()));
 				min(kMaxMipsSinglePassDownsamplerCanProduce, computeMaxMipmapCount2d(in.m_dstHzbRtSize.x(), in.m_dstHzbRtSize.y()));
 
 
-			const U32 mipsToCompute = hzbMipCount;
+			const U8 mipsToCompute = hzbMipCount;
 
 
 			varAU2(dispatchThreadGroupCountXY);
 			varAU2(dispatchThreadGroupCountXY);
 			varAU2(workGroupOffset); // needed if Left and Top are not 0,0
 			varAU2(workGroupOffset); // needed if Left and Top are not 0,0
@@ -142,7 +142,7 @@ void HzbGenerator::populateRenderGraphInternal(ConstWeakArray<DispatchInput> dis
 
 
 			cmdb.setFastConstants(&pc, sizeof(pc));
 			cmdb.setFastConstants(&pc, sizeof(pc));
 
 
-			for(U32 mip = 0; mip < kMaxMipsSinglePassDownsamplerCanProduce; ++mip)
+			for(U8 mip = 0; mip < kMaxMipsSinglePassDownsamplerCanProduce; ++mip)
 			{
 			{
 				TextureSubresourceDesc subresource = TextureSubresourceDesc::firstSurface();
 				TextureSubresourceDesc subresource = TextureSubresourceDesc::firstSurface();
 				if(mip < mipsToCompute)
 				if(mip < mipsToCompute)

+ 1 - 1
AnKi/Renderer/Utils/Readback.h

@@ -6,7 +6,7 @@
 #pragma once
 #pragma once
 
 
 #include <AnKi/Renderer/RendererObject.h>
 #include <AnKi/Renderer/RendererObject.h>
-#include <AnKi/Core/GpuMemory/GpuReadbackMemoryPool.h>
+#include <AnKi/GpuMemory/GpuReadbackMemoryPool.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 1 - 1
AnKi/Resource/MeshResource.h

@@ -10,7 +10,7 @@
 #include <AnKi/Gr.h>
 #include <AnKi/Gr.h>
 #include <AnKi/Collision/Aabb.h>
 #include <AnKi/Collision/Aabb.h>
 #include <AnKi/Shaders/Include/MeshTypes.h>
 #include <AnKi/Shaders/Include/MeshTypes.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Physics/PhysicsCollisionShape.h>
 #include <AnKi/Physics/PhysicsCollisionShape.h>
 
 
 namespace anki {
 namespace anki {

+ 1 - 1
AnKi/Scene/CMakeLists.txt

@@ -2,4 +2,4 @@ file(GLOB_RECURSE sources *.cpp)
 file(GLOB_RECURSE headers *.h)
 file(GLOB_RECURSE headers *.h)
 add_library(AnKiScene ${sources} ${headers})
 add_library(AnKiScene ${sources} ${headers})
 target_compile_definitions(AnKiScene PRIVATE -DANKI_SOURCE_FILE)
 target_compile_definitions(AnKiScene PRIVATE -DANKI_SOURCE_FILE)
-target_link_libraries(AnKiScene AnKiResource AnKiScript AnKiCollision AnKiPhysics)
+target_link_libraries(AnKiScene AnKiResource AnKiScript AnKiCollision AnKiPhysics AnKiGpuMemory)

+ 1 - 1
AnKi/Scene/Components/DecalComponent.cpp

@@ -7,7 +7,7 @@
 #include <AnKi/Scene/SceneGraph.h>
 #include <AnKi/Scene/SceneGraph.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Shaders/Include/ClusteredShadingTypes.h>
 #include <AnKi/Shaders/Include/ClusteredShadingTypes.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 1 - 1
AnKi/Scene/Components/FogDensityComponent.cpp

@@ -6,7 +6,7 @@
 #include <AnKi/Scene/Components/FogDensityComponent.h>
 #include <AnKi/Scene/Components/FogDensityComponent.h>
 #include <AnKi/Scene/SceneNode.h>
 #include <AnKi/Scene/SceneNode.h>
 #include <AnKi/Scene/SceneGraph.h>
 #include <AnKi/Scene/SceneGraph.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 1 - 1
AnKi/Scene/Components/LightComponent.cpp

@@ -359,7 +359,7 @@ void LightComponent::setShadowAtlasUvViewports(ConstWeakArray<Vec4> viewports)
 
 
 	if(dirty)
 	if(dirty)
 	{
 	{
-		m_shadowAtlasUvViewportCount = U8(viewports.getSize());
+		m_shadowAtlasUvViewportCount = viewports.getSize() & 0b111;
 		for(U32 i = 0; i < viewports.getSize(); ++i)
 		for(U32 i = 0; i < viewports.getSize(); ++i)
 		{
 		{
 			m_shadowAtlasUvViewports[i] = viewports[i];
 			m_shadowAtlasUvViewports[i] = viewports[i];

+ 1 - 1
AnKi/Scene/Components/ParticleEmitterComponent.cpp

@@ -14,7 +14,7 @@
 #include <AnKi/Physics/PhysicsWorld.h>
 #include <AnKi/Physics/PhysicsWorld.h>
 #include <AnKi/Math.h>
 #include <AnKi/Math.h>
 #include <AnKi/Shaders/Include/GpuSceneFunctions.h>
 #include <AnKi/Shaders/Include/GpuSceneFunctions.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 1 - 1
AnKi/Scene/Components/ParticleEmitterComponent.h

@@ -9,7 +9,7 @@
 #include <AnKi/Scene/RenderStateBucket.h>
 #include <AnKi/Scene/RenderStateBucket.h>
 #include <AnKi/Scene/GpuSceneArray.h>
 #include <AnKi/Scene/GpuSceneArray.h>
 #include <AnKi/Resource/ParticleEmitterResource.h>
 #include <AnKi/Resource/ParticleEmitterResource.h>
-#include <AnKi/Core/GpuMemory/UnifiedGeometryBuffer.h>
+#include <AnKi/GpuMemory/UnifiedGeometryBuffer.h>
 #include <AnKi/Collision/Aabb.h>
 #include <AnKi/Collision/Aabb.h>
 #include <AnKi/Util/WeakArray.h>
 #include <AnKi/Util/WeakArray.h>
 
 

+ 1 - 1
AnKi/Scene/Components/ReflectionProbeComponent.cpp

@@ -23,7 +23,7 @@ ReflectionProbeComponent::ReflectionProbeComponent(SceneNode* node)
 		(GrManager::getSingleton().getDeviceCapabilities().m_unalignedBbpTextureFormats) ? Format::kR16G16B16_Sfloat : Format::kR16G16B16A16_Sfloat;
 		(GrManager::getSingleton().getDeviceCapabilities().m_unalignedBbpTextureFormats) ? Format::kR16G16B16_Sfloat : Format::kR16G16B16A16_Sfloat;
 	texInit.m_width = g_reflectionProbeResolutionCVar;
 	texInit.m_width = g_reflectionProbeResolutionCVar;
 	texInit.m_height = texInit.m_width;
 	texInit.m_height = texInit.m_width;
-	texInit.m_mipmapCount = U8(computeMaxMipmapCount2d(texInit.m_width, texInit.m_height, 8));
+	texInit.m_mipmapCount = computeMaxMipmapCount2d(texInit.m_width, texInit.m_height, 8);
 	texInit.m_type = TextureType::kCube;
 	texInit.m_type = TextureType::kCube;
 	texInit.m_usage = TextureUsageBit::kAllSrv | TextureUsageBit::kUavCompute | TextureUsageBit::kAllRtvDsv;
 	texInit.m_usage = TextureUsageBit::kAllSrv | TextureUsageBit::kUavCompute | TextureUsageBit::kAllRtvDsv;
 
 

+ 1 - 1
AnKi/Scene/Components/SceneComponent.h

@@ -100,7 +100,7 @@ public:
 
 
 	ANKI_INTERNAL void setArrayIndex(U32 idx)
 	ANKI_INTERNAL void setArrayIndex(U32 idx)
 	{
 	{
-		m_arrayIdx = idx;
+		m_arrayIdx = idx & (kMaxU32 >> 24u);
 	}
 	}
 
 
 	ANKI_INTERNAL virtual void onDestroy([[maybe_unused]] SceneNode& node)
 	ANKI_INTERNAL virtual void onDestroy([[maybe_unused]] SceneNode& node)

+ 1 - 1
AnKi/Scene/Components/SkinComponent.h

@@ -11,7 +11,7 @@
 #include <AnKi/Util/Forward.h>
 #include <AnKi/Util/Forward.h>
 #include <AnKi/Util/WeakArray.h>
 #include <AnKi/Util/WeakArray.h>
 #include <AnKi/Math.h>
 #include <AnKi/Math.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 
 
 namespace anki {
 namespace anki {
 
 

+ 1 - 1
AnKi/Scene/GpuSceneArray.h

@@ -6,7 +6,7 @@
 #pragma once
 #pragma once
 
 
 #include <AnKi/Scene/Common.h>
 #include <AnKi/Scene/Common.h>
-#include <AnKi/Core/GpuMemory/GpuSceneBuffer.h>
+#include <AnKi/GpuMemory/GpuSceneBuffer.h>
 #include <AnKi/Scene/SceneGraph.h>
 #include <AnKi/Scene/SceneGraph.h>
 #include <AnKi/Util/Thread.h>
 #include <AnKi/Util/Thread.h>
 
 

+ 2 - 0
AnKi/ShaderCompiler/Dxc.cpp

@@ -30,7 +30,9 @@ namespace anki {
 
 
 static Atomic<U32> g_nextFileId = {1};
 static Atomic<U32> g_nextFileId = {1};
 
 
+#if ANKI_OS_WINDOWS
 static HMODULE g_dxilLib = 0;
 static HMODULE g_dxilLib = 0;
+#endif
 static HMODULE g_dxcLib = 0;
 static HMODULE g_dxcLib = 0;
 static DxcCreateInstanceProc g_DxcCreateInstance = nullptr;
 static DxcCreateInstanceProc g_DxcCreateInstance = nullptr;
 static Mutex g_dxcLibMtx;
 static Mutex g_dxcLibMtx;

+ 4 - 0
AnKi/Shaders/Include/Common.h

@@ -423,7 +423,11 @@ constexpr U32 kMaxShadowCascades = 4u;
 constexpr F32 kShadowsPolygonOffsetFactor = 1.25f;
 constexpr F32 kShadowsPolygonOffsetFactor = 1.25f;
 constexpr F32 kShadowsPolygonOffsetUnits = 2.75f;
 constexpr F32 kShadowsPolygonOffsetUnits = 2.75f;
 
 
+#if defined(__HLSL_VERSION)
 constexpr U32 kMaxMipsSinglePassDownsamplerCanProduce = 12u;
 constexpr U32 kMaxMipsSinglePassDownsamplerCanProduce = 12u;
+#else
+constexpr U8 kMaxMipsSinglePassDownsamplerCanProduce = 12u;
+#endif
 
 
 constexpr U32 kMaxPrimitivesPerMeshlet = 124; ///< nVidia prefers 126 but meshoptimizer choks with that value.
 constexpr U32 kMaxPrimitivesPerMeshlet = 124; ///< nVidia prefers 126 but meshoptimizer choks with that value.
 constexpr U32 kMaxVerticesPerMeshlet = 128;
 constexpr U32 kMaxVerticesPerMeshlet = 128;

+ 1 - 1
AnKi/Ui/Canvas.cpp

@@ -7,7 +7,7 @@
 #include <AnKi/Ui/Font.h>
 #include <AnKi/Ui/Font.h>
 #include <AnKi/Ui/UiManager.h>
 #include <AnKi/Ui/UiManager.h>
 #include <AnKi/Resource/ResourceManager.h>
 #include <AnKi/Resource/ResourceManager.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 #include <AnKi/Window/Input.h>
 #include <AnKi/Window/Input.h>
 #include <AnKi/Gr/Sampler.h>
 #include <AnKi/Gr/Sampler.h>
 #include <AnKi/Gr/GrManager.h>
 #include <AnKi/Gr/GrManager.h>

+ 1 - 1
AnKi/Util/BitSet.h

@@ -297,7 +297,7 @@ public:
 		}
 		}
 
 
 		// This could be a simple 1<<(low+1) but that may overflow so...
 		// This could be a simple 1<<(low+1) but that may overflow so...
-		ChunkType mask = (ChunkType(1) << ChunkType(low)) - ChunkType(1);
+		ChunkType mask = ChunkType(ChunkType(1) << ChunkType(low)) - ChunkType(1);
 		mask <<= 1;
 		mask <<= 1;
 		mask |= 1;
 		mask |= 1;
 
 

+ 6 - 2
CMakeLists.txt

@@ -211,11 +211,15 @@ add_definitions(
 if(NOT MSVC)
 if(NOT MSVC)
 	# When building AnKi define this special flag
 	# When building AnKi define this special flag
 	if(NOT CLANG_WINDOWS)
 	if(NOT CLANG_WINDOWS)
-		add_compile_options(-fPIC)
+		#add_compile_options(-fPIC)
 	endif()
 	endif()
 
 
 	add_compile_options(-fno-exceptions)
 	add_compile_options(-fno-exceptions)
 
 
+	if(LINUX)
+		add_compile_options(-fvisibility=hidden)
+	endif()
+
 	if(GCC)
 	if(GCC)
 		add_compile_options(-static-libstdc++)
 		add_compile_options(-static-libstdc++)
 	endif()
 	endif()
@@ -224,7 +228,7 @@ if(NOT MSVC)
 		add_compile_options(-msse4)
 		add_compile_options(-msse4)
 	endif()
 	endif()
 
 
-	add_compile_options(-fno-rtti)
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
 
 
 	if(ANKI_LTO)
 	if(ANKI_LTO)
 		add_compile_options(-flto)
 		add_compile_options(-flto)

+ 1 - 1
Tests/CMakeLists.txt

@@ -5,7 +5,7 @@ include_directories("..")
 anki_new_executable(Tests ${sources})
 anki_new_executable(Tests ${sources})
 target_compile_definitions(Tests PRIVATE -DANKI_SOURCE_FILE)
 target_compile_definitions(Tests PRIVATE -DANKI_SOURCE_FILE)
 
 
-if(!ANDROID)
+if(NOT ANDROID)
 	set(extra_libs "AnKiImporter")
 	set(extra_libs "AnKiImporter")
 endif()
 endif()
 
 

+ 2 - 2
Tests/Gr/Gr.cpp

@@ -10,7 +10,7 @@
 #include <AnKi/Window/NativeWindow.h>
 #include <AnKi/Window/NativeWindow.h>
 #include <AnKi/Window/Input.h>
 #include <AnKi/Window/Input.h>
 #include <AnKi/Util/CVarSet.h>
 #include <AnKi/Util/CVarSet.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 #include <AnKi/Util/HighRezTimer.h>
 #include <AnKi/Util/HighRezTimer.h>
 #include <AnKi/Resource/TransferGpuAllocator.h>
 #include <AnKi/Resource/TransferGpuAllocator.h>
 #include <AnKi/ShaderCompiler/ShaderParser.h>
 #include <AnKi/ShaderCompiler/ShaderParser.h>
@@ -390,7 +390,7 @@ SamplerState g_sampler : register(s0);
 float4 main(float4 svPosition : SV_POSITION, float2 uv : TEXCOORDS, uint svPrimId : SV_PRIMITIVEID) : SV_TARGET0
 float4 main(float4 svPosition : SV_POSITION, float2 uv : TEXCOORDS, uint svPrimId : SV_PRIMITIVEID) : SV_TARGET0
 {
 {
 	if(svPrimId == 1u)
 	if(svPrimId == 1u)
-	{	
+	{
 		return float4(svPosition.xy / g_viewport.m_viewport.zw, 0.0f, 0.0f);
 		return float4(svPosition.xy / g_viewport.m_viewport.zw, 0.0f, 0.0f);
 	}
 	}
 	else
 	else

+ 1 - 1
Tests/Ui/Ui.cpp

@@ -4,7 +4,7 @@
 // http://www.anki3d.org/LICENSE
 // http://www.anki3d.org/LICENSE
 
 
 #include <Tests/Framework/Framework.h>
 #include <Tests/Framework/Framework.h>
-#include <AnKi/Core/GpuMemory/RebarTransientMemoryPool.h>
+#include <AnKi/GpuMemory/RebarTransientMemoryPool.h>
 #include <AnKi/Util/HighRezTimer.h>
 #include <AnKi/Util/HighRezTimer.h>
 #include <AnKi/Ui.h>
 #include <AnKi/Ui.h>
 #include <AnKi/Window.h>
 #include <AnKi/Window.h>

+ 1 - 2
Tests/Util/ThreadHive.cpp

@@ -64,8 +64,7 @@ static void taskToWait(void* arg, [[maybe_unused]] U32 threadId, [[maybe_unused]
 ANKI_TEST(Util, ThreadHive)
 ANKI_TEST(Util, ThreadHive)
 {
 {
 	const U32 threadCount = 32;
 	const U32 threadCount = 32;
-	HeapMemoryPool pool(allocAligned, nullptr);
-	ThreadHive hive(threadCount, &pool);
+	ThreadHive hive(threadCount);
 
 
 	// Simple test
 	// Simple test
 	if(1)
 	if(1)