Skip to content

Commit 9460e24

Browse files
committed
Fix vulkan_1_3 incompatibilities
1 parent c44bb49 commit 9460e24

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

src/nbl/video/utilities/CPropertyPoolHandler.cpp

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,28 @@ CPropertyPoolHandler::CPropertyPoolHandler(core::smart_refctd_ptr<ILogicalDevice
1212
// TODO: Reuse asset manager from elsewhere?
1313
auto assetManager = core::make_smart_refctd_ptr<asset::IAssetManager>(core::smart_refctd_ptr<system::ISystem>(system));
1414

15-
video::IGPUObjectFromAssetConverter CPU2GPU;
16-
video::IGPUObjectFromAssetConverter::SParams cpu2gpuParams;
17-
cpu2gpuParams.assetManager = assetManager.get();
18-
cpu2gpuParams.device = m_device.get();
19-
2015
auto loadShader = [&](const char* path)
21-
{
22-
asset::IAssetLoader::SAssetLoadParams params = {};
23-
auto shader = core::smart_refctd_ptr_static_cast<asset::ICPUSpecializedShader>(*assetManager->getAsset(path, params).getContents().begin());
24-
shader->setSpecializationInfo(asset::ISpecializedShader::SInfo(nullptr, nullptr, "main"));
25-
assert(shader);
16+
{
17+
asset::IAssetLoader::SAssetLoadParams params = {};
18+
auto assetBundle = assetManager->getAsset(path, params);
19+
auto assets = assetBundle.getContents();
20+
assert(!assets.empty());
21+
22+
auto cpuShader = asset::IAsset::castDown<asset::ICPUShader>(assets[0]);
23+
auto shader = m_device->createShader(cpuShader.get());
24+
return shader;
25+
};
26+
auto shader = loadShader("../../../include/nbl/builtin/hlsl/property_pool/copy.comp.hlsl");
27+
const asset::SPushConstantRange baseDWORD = { asset::IShader::ESS_COMPUTE,0u,sizeof(nbl::hlsl::property_pools::GlobalPushContants) };
28+
auto layout = m_device->createPipelineLayout({ &baseDWORD,1u });
2629

27-
auto gpuShaders = CPU2GPU.getGPUObjectsFromAssets(&shader, &shader + 1u, cpu2gpuParams);
28-
auto gpuShader = gpuShaders->begin()[0u];
29-
assert(gpuShader);
30+
{
31+
video::IGPUComputePipeline::SCreationParams params = {};
32+
params.layout = layout.get();
33+
params.shader.shader = shader.get();
3034

31-
return gpuShader;
32-
};
33-
auto shader = loadShader("../../../include/nbl/builtin/hlsl/property_pool/copy.comp.hlsl");
34-
const asset::SPushConstantRange baseDWORD = {asset::IShader::ESS_COMPUTE,0u,sizeof(nbl::hlsl::property_pools::GlobalPushContants)};
35-
auto layout = m_device->createPipelineLayout(&baseDWORD,&baseDWORD+1u);
36-
m_pipeline = m_device->createComputePipeline(nullptr,std::move(layout),std::move(shader));
35+
m_device->createComputePipelines(nullptr, { &params, 1 }, &m_pipeline);
36+
}
3737

3838
#if 0
3939
const auto& deviceLimits = m_device->getPhysicalDevice()->getLimits();
@@ -86,7 +86,7 @@ CPropertyPoolHandler::CPropertyPoolHandler(core::smart_refctd_ptr<ILogicalDevice
8686

8787

8888
bool CPropertyPoolHandler::transferProperties(
89-
IGPUCommandBuffer* const cmdbuf, IGPUFence* const fence,
89+
IGPUCommandBuffer* const cmdbuf, //IGPUFence* const fence,
9090
const asset::SBufferBinding<video::IGPUBuffer>& scratch, const asset::SBufferBinding<video::IGPUBuffer>& addresses,
9191
const TransferRequest* const requestsBegin, const TransferRequest* const requestsEnd,
9292
system::logger_opt_ptr logger, const uint32_t baseDWORD, const uint32_t endDWORD
@@ -112,8 +112,8 @@ bool CPropertyPoolHandler::transferProperties(
112112

113113
uint32_t numberOfPasses = totalProps / MaxPropertiesPerDispatch;
114114
nbl::hlsl::property_pools::TransferRequest transferRequestsData[MaxPropertiesPerDispatch];
115-
uint64_t scratchBufferDeviceAddr = m_device->getBufferDeviceAddress(scratch.buffer.get()) + scratch.offset;
116-
uint64_t addressBufferDeviceAddr = m_device->getBufferDeviceAddress(addresses.buffer.get()) + addresses.offset;
115+
uint64_t scratchBufferDeviceAddr = scratch.buffer.get()->getDeviceAddress() + scratch.offset;
116+
uint64_t addressBufferDeviceAddr = addresses.buffer.get()->getDeviceAddress() + addresses.offset;
117117

118118
for (uint32_t transferPassRequestsIndex = 0; transferPassRequestsIndex < totalProps; transferPassRequestsIndex += MaxPropertiesPerDispatch)
119119
{
@@ -124,8 +124,8 @@ bool CPropertyPoolHandler::transferProperties(
124124
{
125125
auto& transferRequest = transferRequestsData[i];
126126
auto srcRequest = transferPassRequests + i;
127-
transferRequest.srcAddr = m_device->getBufferDeviceAddress(srcRequest->memblock.buffer.get()) + srcRequest->memblock.offset;
128-
transferRequest.dstAddr = m_device->getBufferDeviceAddress(srcRequest->buffer.buffer.get()) + srcRequest->buffer.offset;
127+
transferRequest.srcAddr = srcRequest->memblock.buffer.get()->getDeviceAddress() + srcRequest->memblock.offset;
128+
transferRequest.dstAddr = srcRequest->buffer.buffer.get()->getDeviceAddress() + srcRequest->buffer.offset;
129129
transferRequest.srcIndexAddr = srcRequest->srcAddressesOffset ? addressBufferDeviceAddr + srcRequest->srcAddressesOffset : 0;
130130
transferRequest.dstIndexAddr = srcRequest->dstAddressesOffset ? addressBufferDeviceAddr + srcRequest->dstAddressesOffset : 0;
131131
transferRequest.elementCount32 = uint32_t(srcRequest->elementCount & (uint64_t(1) << 32) - 1);
@@ -137,7 +137,7 @@ bool CPropertyPoolHandler::transferProperties(
137137

138138
maxElements = core::max<uint64_t>(maxElements, srcRequest->elementCount);
139139
}
140-
cmdbuf->updateBuffer(scratch.buffer.get(),scratch.offset,sizeof(TransferRequest)*requestsThisPass,transferRequestsData);
140+
cmdbuf->updateBuffer({ scratch.offset,sizeof(TransferRequest) * requestsThisPass, core::smart_refctd_ptr(scratch.buffer) }, transferRequestsData);
141141
// TODO: pipeline barrier
142142
cmdbuf->bindComputePipeline(m_pipeline.get());
143143

0 commit comments

Comments
 (0)