Skip to content

Commit 8246891

Browse files
committed
pull master & resolve conflicts
2 parents cde9e79 + 31c9a61 commit 8246891

14 files changed

+1060
-90
lines changed

examples_tests

Submodule examples_tests updated 44 files

include/nbl/asset/IAccelerationStructure.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class ITopLevelAccelerationStructure : public AccelerationStructure
155155
PREFER_FAST_BUILD_BIT = 0x1u<<3u,
156156
LOW_MEMORY_BIT = 0x1u<<4u,
157157
// Synthetic flag we use to indicate `VkAccelerationStructureGeometryInstancesDataKHR::arrayOfPointers`
158-
INSTANCE_DATA_IS_POINTERS_TYPE_ENCODED_LSB = 0x1u<<5u,
158+
INSTANCE_DATA_IS_POINTERS_TYPE_ENCODED_LSB = 0x1u<<5u, // this flag really shouldn't be settable outside of `video::IGPU`
159159
// Provided by VK_NV_ray_tracing_motion_blur, but we always override and deduce from creation flag because of
160160
// https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-04927
161161
//MOTION_BIT = 0x1u<<5u,

include/nbl/asset/ICPUAccelerationStructure.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class ICPUBottomLevelAccelerationStructure final : public IBottomLevelAccelerati
4747
return {m_geometryPrimitiveCount->begin(),m_geometryPrimitiveCount->end()};
4848
return {};
4949
}
50-
inline std::span<const uint32_t> getGeometryPrimitiveCounts(const size_t geomIx) const
50+
inline std::span<const uint32_t> getGeometryPrimitiveCounts() const
5151
{
5252
if (m_geometryPrimitiveCount)
5353
return {m_geometryPrimitiveCount->begin(),m_geometryPrimitiveCount->end()};
@@ -79,25 +79,25 @@ class ICPUBottomLevelAccelerationStructure final : public IBottomLevelAccelerati
7979
{
8080
if (!isMutable())
8181
return false;
82-
m_buildFlags &= BUILD_FLAGS::GEOMETRY_TYPE_IS_AABB_BIT;
82+
m_buildFlags &= ~BUILD_FLAGS::GEOMETRY_TYPE_IS_AABB_BIT;
8383
m_geometryPrimitiveCount = std::move(ranges);
8484
m_triangleGeoms = std::move(geometries);
8585
m_AABBGeoms = nullptr;
8686
return true;
8787
}
8888

8989
//
90-
inline core::SRange<AABBs<asset::ICPUBuffer>> getAABBGeometries()
90+
inline std::span<AABBs<asset::ICPUBuffer>> getAABBGeometries()
9191
{
9292
if (!isMutable() || !m_AABBGeoms)
93-
return {nullptr,nullptr};
94-
return {m_AABBGeoms->begin(),m_AABBGeoms->end()};
93+
return {};
94+
return {m_AABBGeoms->data(),m_AABBGeoms->size()};
9595
}
96-
inline core::SRange<const AABBs<asset::ICPUBuffer>> getAABBGeometries() const
96+
inline std::span<const AABBs<asset::ICPUBuffer>> getAABBGeometries() const
9797
{
9898
if (!m_AABBGeoms)
99-
return {nullptr,nullptr};
100-
return {m_AABBGeoms->begin(),m_AABBGeoms->end()};
99+
return {};
100+
return {m_AABBGeoms->data(),m_AABBGeoms->size()};
101101
}
102102
inline bool setGeometries(core::smart_refctd_dynamic_array<AABBs<ICPUBuffer>>&& geometries, core::smart_refctd_dynamic_array<uint32_t>&& ranges)
103103
{
@@ -337,17 +337,17 @@ class ICPUTopLevelAccelerationStructure final : public ITopLevelAccelerationStru
337337
std::variant<StaticInstance,MatrixMotionInstance,SRTMotionInstance> instance = StaticInstance{};
338338
};
339339

340-
core::SRange<PolymorphicInstance> getInstances()
340+
std::span<PolymorphicInstance> getInstances()
341341
{
342342
if (!isMutable() || !m_instances)
343-
return {nullptr,nullptr};
344-
return {m_instances->begin(),m_instances->end()};
343+
return {};
344+
return {m_instances->data(),m_instances->size()};
345345
}
346-
core::SRange<const PolymorphicInstance> getInstances() const
346+
std::span<const PolymorphicInstance> getInstances() const
347347
{
348348
if (!m_instances)
349-
return {nullptr,nullptr};
350-
return {m_instances->begin(),m_instances->end()};
349+
return {};
350+
return {m_instances->data(),m_instances->size()};
351351
}
352352
bool setInstances(core::smart_refctd_dynamic_array<PolymorphicInstance>&& _instances)
353353
{
@@ -367,7 +367,7 @@ class ICPUTopLevelAccelerationStructure final : public ITopLevelAccelerationStru
367367
}
368368

369369
//!
370-
constexpr static inline auto AssetType = ET_BOTOM_LEVEL_ACCELERATION_STRUCTURE;
370+
constexpr static inline auto AssetType = ET_TOP_LEVEL_ACCELERATION_STRUCTURE;
371371
inline IAsset::E_TYPE getAssetType() const override { return AssetType; }
372372

373373
inline core::smart_refctd_ptr<IAsset> clone(uint32_t _depth = ~0u) const override

include/nbl/asset/IDescriptorSetLayout.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,16 @@ class IDescriptorSetLayoutBase : public virtual core::IReferenceCounted // TODO:
147147
return getStorageOffset(index);
148148
}
149149

150+
// Weird functions for exceptional situations
151+
inline storage_range_index_t findBindingStorageIndex(const storage_offset_t offset) const
152+
{
153+
const auto found = std::upper_bound(m_storageOffsets,m_storageOffsets+m_count,offset,[](storage_offset_t a, storage_offset_t b)->bool{return a.data<b.data;});
154+
const auto ix = m_storageOffsets-found;
155+
if (ix>=m_count)
156+
return {};
157+
return storage_range_index_t(ix);
158+
}
159+
150160
inline uint32_t getTotalCount() const { return (m_count == 0ull) ? 0u : m_storageOffsets[m_count - 1].data; }
151161

152162
private:

include/nbl/video/IAPIConnection.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ class NBL_API2 IAPIConnection : public core::IReferenceCounted
6262
//
6363
enum class EDebuggerType : uint8_t
6464
{
65-
None,
66-
Renderdoc,
67-
NSight
65+
None=0,
66+
Renderdoc=1,
67+
NSight=2
6868
};
6969
inline EDebuggerType runningInGraphicsDebugger() const {return m_debugger;}
7070
inline bool isRunningInGraphicsDebugger() const {return m_debugger!=EDebuggerType::None;}
@@ -74,21 +74,23 @@ class NBL_API2 IAPIConnection : public core::IReferenceCounted
7474
virtual bool endCapture() = 0;
7575

7676
protected:
77-
static void loadDebuggers();
77+
void loadDebuggers();
7878

7979
IAPIConnection(const SFeatures& enabledFeatures);
8080
void executeNGFXCommand();
8181

8282
std::vector<std::unique_ptr<IPhysicalDevice>> m_physicalDevices;
8383
SFeatures m_enabledFeatures = {};
8484

85-
static inline renderdoc_api_t* m_rdoc_api = nullptr;
85+
// Even though the debugger variables cannot change for the lifetime of the executable,
86+
// making them static complicates delay loading DLLs.
87+
renderdoc_api_t* m_rdoc_api = nullptr;
8688

8789
private:
88-
static inline EDebuggerType m_debugger = EDebuggerType::None;
90+
EDebuggerType m_debugger = EDebuggerType::None;
8991

9092
static bool loadNGFX();
91-
static bool loadRenderdoc();
93+
static renderdoc_api_t* loadRenderdoc();
9294

9395
};
9496

include/nbl/video/ILogicalDevice.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
4646

4747

4848
//! Basic getters
49+
inline system::ILogger* getLogger() const {return m_logger.get();}
50+
4951
inline const IPhysicalDevice* getPhysicalDevice() const { return m_physicalDevice; }
5052

5153
inline const SPhysicalDeviceFeatures& getEnabledFeatures() const { return m_enabledFeatures; }
@@ -358,7 +360,7 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
358360
// Create a sampler object to use with ImageViews
359361
virtual core::smart_refctd_ptr<IGPUSampler> createSampler(const IGPUSampler::SParams& _params) = 0;
360362
// acceleration structures
361-
inline core::smart_refctd_ptr<IGPUBottomLevelAccelerationStructure> createBottomLevelAccelerationStructure(IGPUAccelerationStructure::SCreationParams&& params)
363+
inline core::smart_refctd_ptr<IGPUBottomLevelAccelerationStructure> createBottomLevelAccelerationStructure(IGPUBottomLevelAccelerationStructure::SCreationParams&& params)
362364
{
363365
if (invalidCreationParams(params))
364366
{
@@ -402,7 +404,7 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
402404
inline AccelerationStructureBuildSizes getAccelerationStructureBuildSizes(
403405
const core::bitflag<IGPUBottomLevelAccelerationStructure::BUILD_FLAGS> flags,
404406
const bool motionBlur,
405-
const std::span<Geometry> geometries,
407+
const std::span<const Geometry> geometries,
406408
const uint32_t* const pMaxPrimitiveCounts
407409
) const
408410
{
@@ -412,7 +414,7 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
412414
return {};
413415
}
414416

415-
if (!IGPUBottomLevelAccelerationStructure::validBuildFlags(flags, m_enabledFeatures))
417+
if (!IGPUBottomLevelAccelerationStructure::validBuildFlags(flags,m_enabledFeatures))
416418
{
417419
NBL_LOG_ERROR("Invalid build flags");
418420
return {};

0 commit comments

Comments
 (0)