Skip to content

Commit 67b5181

Browse files
author
kevyuu
committed
Change get shader group handle api to return span
1 parent bbcff69 commit 67b5181

File tree

4 files changed

+15
-17
lines changed

4 files changed

+15
-17
lines changed

include/nbl/asset/IRayTracingPipeline.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,6 @@ class IRayTracingPipeline : public IPipeline<PipelineLayoutType>, public IRayTra
178178
};
179179

180180
inline const SCachedCreationParams& getCachedCreationParams() const { return m_params; }
181-
inline uint32_t getHitGroupCount() const { return m_hitShaderGroups->size(); }
182-
inline uint32_t getMissGroupCount() const { return m_missShaderGroups->size(); }
183-
inline uint32_t getCallableGroupCount() const { return m_callableShaderGroups->size(); }
184181

185182
protected:
186183
explicit IRayTracingPipeline(const SCreationParams& _params) :

include/nbl/video/CVulkanRayTracingPipeline.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class CVulkanRayTracingPipeline final : public IGPURayTracingPipeline
3131
inline VkPipeline getInternalObject() const { return m_vkPipeline; }
3232

3333
virtual const SShaderGroupHandle& getRaygen() const override;
34-
virtual const SShaderGroupHandle& getMiss(uint32_t index) const override;
35-
virtual const SShaderGroupHandle& getHit(uint32_t index) const override;
36-
virtual const SShaderGroupHandle& getCallable(uint32_t index) const override;
34+
virtual std::span<const SShaderGroupHandle> getMissHandles() const override;
35+
virtual std::span<const SShaderGroupHandle> getHitHandles() const override;
36+
virtual std::span<const SShaderGroupHandle> getCallableHandles() const override;
3737

3838
virtual uint16_t getRaygenStackSize() const override;
3939
virtual std::span<const uint16_t> getMissStackSizes() const override;

include/nbl/video/IGPURayTracingPipeline.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ class IGPURayTracingPipeline : public IBackendObject, public asset::IRayTracingP
7171
virtual const void* getNativeHandle() const = 0;
7272

7373
virtual const SShaderGroupHandle& getRaygen() const = 0;
74-
virtual const SShaderGroupHandle& getMiss(uint32_t index) const = 0;
75-
virtual const SShaderGroupHandle& getHit(uint32_t index) const = 0;
76-
virtual const SShaderGroupHandle& getCallable(uint32_t index) const = 0;
74+
virtual std::span<const SShaderGroupHandle> getMissHandles() const = 0;
75+
virtual std::span<const SShaderGroupHandle> getHitHandles() const = 0;
76+
virtual std::span<const SShaderGroupHandle> getCallableHandles() const = 0;
7777

7878
virtual uint16_t getRaygenStackSize() const = 0;
7979
virtual std::span<const uint16_t> getMissStackSizes() const = 0;

src/nbl/video/CVulkanRayTracingPipeline.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "nbl/video/IGPURayTracingPipeline.h"
66

77
#include <algorithm>
8+
#include <span>
89

910
namespace nbl::video
1011
{
@@ -84,22 +85,22 @@ namespace nbl::video
8485
return m_shaderGroupHandles->operator[](getRaygenIndex());
8586
}
8687

87-
const IGPURayTracingPipeline::SShaderGroupHandle& CVulkanRayTracingPipeline::getMiss(uint32_t index) const
88+
std::span<const IGPURayTracingPipeline::SShaderGroupHandle> CVulkanRayTracingPipeline::getMissHandles() const
8889
{
8990
const auto baseIndex = getMissBaseIndex();
90-
return m_shaderGroupHandles->operator[](baseIndex + index);
91+
return std::span(m_shaderGroupHandles->begin() + baseIndex, m_missShaderGroups->size());
9192
}
9293

93-
const IGPURayTracingPipeline::SShaderGroupHandle& CVulkanRayTracingPipeline::getHit(uint32_t index) const
94+
std::span<const IGPURayTracingPipeline::SShaderGroupHandle> CVulkanRayTracingPipeline::getHitHandles() const
9495
{
9596
const auto baseIndex = getHitBaseIndex();
96-
return m_shaderGroupHandles->operator[](baseIndex + index);
97+
return std::span(m_shaderGroupHandles->begin() + baseIndex, m_hitShaderGroups->size());
9798
}
9899

99-
const IGPURayTracingPipeline::SShaderGroupHandle& CVulkanRayTracingPipeline::getCallable(uint32_t index) const
100+
std::span<const IGPURayTracingPipeline::SShaderGroupHandle> CVulkanRayTracingPipeline::getCallableHandles() const
100101
{
101102
const auto baseIndex = getCallableBaseIndex();
102-
return m_shaderGroupHandles->operator[](baseIndex + index);
103+
return std::span(m_shaderGroupHandles->begin() + baseIndex, m_callableShaderGroups->size());
103104
}
104105

105106
uint16_t CVulkanRayTracingPipeline::getRaygenStackSize() const
@@ -152,13 +153,13 @@ namespace nbl::video
152153
uint32_t CVulkanRayTracingPipeline::getHitBaseIndex() const
153154
{
154155
// one raygen group + miss groups before this groups
155-
return 1 + getMissGroupCount();
156+
return 1 + m_missShaderGroups->size();
156157
}
157158

158159
uint32_t CVulkanRayTracingPipeline::getCallableBaseIndex() const
159160
{
160161
// one raygen group + miss groups + hit groups before this groups
161-
return 1 + getMissGroupCount() + getHitGroupCount();
162+
return 1 + m_missShaderGroups->size() + m_hitShaderGroups->size();
162163
}
163164

164165
}

0 commit comments

Comments
 (0)