Skip to content

Commit 490bec7

Browse files
fix up image and view usages everywhere
1 parent 89800b5 commit 490bec7

File tree

10 files changed

+28
-23
lines changed

10 files changed

+28
-23
lines changed

include/nbl/asset/utils/IVirtualTexture.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -514,9 +514,10 @@ class IVirtualTexture : public core::IReferenceCounted, public IVirtualTextureBa
514514

515515
}
516516

517-
virtual void deferredInitialization(uint32_t tileExtent, uint32_t _layers = 0u)
517+
// TODO: refactor into the `_impl` pattern, and always add the MUTABLE FORMAT creation flag
518+
virtual void deferredInitialization(uint32_t tileExtent, uint32_t _layers = 0u/*, TODO: const IImage::E_USAGE_FLAGS usages=IImage::EUF_SAMPLED_BIT, const bool extendedUsage=false*/)
518519
{
519-
assert(_layers != 0u);
520+
assert(_layers != 0u); // Why the F have the default be 0 then!?
520521

521522
const bool uninitialized = (tileAlctr.get_align_offset() == phys_pg_addr_alctr_t::invalid_address);
522523
if (uninitialized)
@@ -543,14 +544,16 @@ class IVirtualTexture : public core::IReferenceCounted, public IVirtualTextureBa
543544
return x | (y<<SPhysPgOffset::PAGE_ADDR_X_BITS) | (layer<<SPhysPgOffset::PAGE_ADDR_LAYER_SHIFT);
544545
}
545546

546-
core::smart_refctd_ptr<image_view_t> createView(E_FORMAT _format) const
547+
// last parameter default means to inherit all usages for a view from the main image
548+
core::smart_refctd_ptr<image_view_t> createView(E_FORMAT _format, const IImage::E_USAGE_FLAGS usages=IImage::EUF_NONE) const
547549
{
548550
auto found = m_viewsCache.find(_format);
549551
if (found!=m_viewsCache.end())
550552
return found->second;
551553

552-
typename image_view_t::SCreationParams params;
554+
typename image_view_t::SCreationParams params = {};
553555
params.flags = static_cast<typename IImageView<image_t>::E_CREATE_FLAGS>(0);
556+
params.subUsages = usages;
554557
params.format = _format;
555558
params.subresourceRange.aspectMask = static_cast<IImage::E_ASPECT_FLAGS>(0);
556559
params.subresourceRange.baseArrayLayer = 0u;

include/nbl/ext/OIT/OIT.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class COIT
6161
params.queueFamilyIndexCount = 0;
6262
params.queueFamilyIndices = nullptr;
6363
params.samples = asset::IImage::ESCF_1_BIT;
64-
params.tiling = asset::IImage::ET_OPTIMAL;
64+
params.tiling = video::IGPUImage::ET_OPTIMAL;
6565
params.type = asset::IImage::ET_2D;
6666
params.usage = asset::IImage::EUF_STORAGE_BIT;
6767

@@ -74,9 +74,10 @@ class COIT
7474
if (!img || !imgMem.isValid())
7575
return nullptr;
7676

77-
video::IGPUImageView::SCreationParams vparams;
77+
video::IGPUImageView::SCreationParams vparams = {};
7878
vparams.format = params.format;
7979
vparams.flags = static_cast<decltype(vparams.flags)>(0);
80+
//vparams.subUsages = ? ? ? ; TODO
8081
vparams.viewType = decltype(vparams.viewType)::ET_2D;
8182
vparams.subresourceRange.baseArrayLayer = 0u;
8283
vparams.subresourceRange.layerCount = 1u;

include/nbl/ext/ScreenShot/ScreenShot.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ inline core::smart_refctd_ptr<asset::ICPUImageView> createScreenShot(
155155
{
156156
auto newCreationParams = cpuNewImage->getCreationParameters();
157157

158-
asset::ICPUImageView::SCreationParams viewParams;
158+
asset::ICPUImageView::SCreationParams viewParams = {};
159159
viewParams.flags = static_cast<asset::ICPUImageView::E_CREATE_FLAGS>(0u);
160160
viewParams.image = cpuNewImage;
161161
viewParams.format = newCreationParams.format;

include/nbl/ext/ToneMapper/CToneMapper.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,9 @@ class CToneMapper : public core::IReferenceCounted, public core::InterfaceUnmova
198198

199199
auto nativeFormat = image->getCreationParameters().format;
200200

201-
video::IGPUImageView::SCreationParams params;
201+
video::IGPUImageView::SCreationParams params = {};
202202
params.flags = static_cast<video::IGPUImageView::E_CREATE_FLAGS>(0u);
203+
//params.subUsages = ? ? ? ; TODO
203204
params.image = std::move(image);
204205
params.viewType = video::IGPUImageView::ET_2D_ARRAY;
205206
params.format = usedAsInput ? getInputViewFormat(nativeFormat):getOutputViewFormat(nativeFormat);

include/nbl/video/utilities/IGPUVirtualTexture.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,15 @@ class IGPUVirtualTexture final : public asset::IVirtualTexture<IGPUImageView, IG
157157
const uint32_t tilesPerDim = getTilesPerDim();
158158
const uint32_t extent = tileExtent * tilesPerDim;
159159

160-
IGPUImage::SCreationParams params;
160+
IGPUImage::SCreationParams params = {};
161161
params.extent = { extent, extent, 1u };
162162
params.format = imageFormat;
163163
params.arrayLayers = _layers;
164164
params.mipLevels = 1u;
165165
params.type = asset::IImage::ET_2D;
166166
params.samples = asset::IImage::ESCF_1_BIT;
167167
params.flags = static_cast<asset::IImage::E_CREATE_FLAGS>(0);
168-
// TODO: final layout should be readonly (if there's transfer necessary, then we start in transfer dst) and usage is shader sampled texture
168+
// TODO: final layout should be readonly (if there's transfer necessary, then we start in transfer dst)
169169

170170
image = m_logicalDevice->createImage(std::move(params));
171171
m_logicalDevice->allocate(image->getMemoryReqs(), image.get());

src/nbl/asset/IAssetManager.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ void IAssetManager::insertBuiltinAssets()
363363
info.arrayLayers = 1u;
364364
info.samples = asset::ICPUImage::ESCF_1_BIT;
365365
info.flags = static_cast<asset::IImage::E_CREATE_FLAGS>(0u);
366-
info.usage = static_cast<asset::IImage::E_USAGE_FLAGS>(asset::IImage::EUF_COLOR_ATTACHMENT_BIT | asset::IImage::EUF_INPUT_ATTACHMENT_BIT | asset::IImage::EUF_SAMPLED_BIT | asset::IImage::EUF_STORAGE_BIT);
366+
info.usage = static_cast<asset::IImage::E_USAGE_FLAGS>(asset::IImage::EUF_INPUT_ATTACHMENT_BIT | asset::IImage::EUF_SAMPLED_BIT);
367367
auto buf = core::make_smart_refctd_ptr<asset::ICPUBuffer>(info.extent.width*info.extent.height*asset::getTexelOrBlockBytesize(info.format));
368368
memcpy(buf->getPointer(),
369369
//magenta-grey 2x2 chessboard
@@ -389,11 +389,11 @@ void IAssetManager::insertBuiltinAssets()
389389

390390
//image views
391391
{
392-
asset::ICPUImageView::SCreationParams info;
392+
asset::ICPUImageView::SCreationParams info = {};
393+
info.flags = static_cast<asset::ICPUImageView::E_CREATE_FLAGS>(0u);
393394
info.format = dummy2dImage->getCreationParameters().format;
394395
info.image = dummy2dImage;
395396
info.viewType = asset::IImageView<asset::ICPUImage>::ET_2D;
396-
info.flags = static_cast<asset::ICPUImageView::E_CREATE_FLAGS>(0u);
397397
info.subresourceRange.aspectMask = asset::IImage::EAF_COLOR_BIT;
398398
info.subresourceRange.baseArrayLayer = 0u;
399399
info.subresourceRange.layerCount = 1u;

src/nbl/asset/interchange/CGLILoader.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,20 +118,20 @@ namespace nbl
118118
auto texelBuffer = core::make_smart_refctd_ptr<ICPUBuffer>(texture.size());
119119
auto data = reinterpret_cast<uint8_t*>(texelBuffer->getPointer());
120120

121-
ICPUImage::SCreationParams imageInfo;
122-
imageInfo.format = format.first;
121+
ICPUImage::SCreationParams imageInfo = {};
123122
imageInfo.type = imageType;
124-
imageInfo.flags = isItACubemap ? ICPUImage::E_CREATE_FLAGS::ECF_CUBE_COMPATIBLE_BIT : static_cast<ICPUImage::E_CREATE_FLAGS>(0u);
125123
imageInfo.samples = ICPUImage::ESCF_1_BIT;
124+
imageInfo.format = format.first;
126125
imageInfo.extent.width = texture.extent().x;
127126
imageInfo.extent.height = texture.extent().y;
128127
imageInfo.extent.depth = texture.extent().z;
129128
imageInfo.mipLevels = texture.levels();
130129
imageInfo.arrayLayers = texture.faces() * texture.layers();
131-
132-
auto image = ICPUImage::create(std::move(imageInfo));
130+
imageInfo.flags = isItACubemap ? ICPUImage::E_CREATE_FLAGS::ECF_CUBE_COMPATIBLE_BIT : static_cast<ICPUImage::E_CREATE_FLAGS>(0u);
131+
imageInfo.usage = IImage::EUF_SAMPLED_BIT;
133132

134133
auto regions = core::make_refctd_dynamic_array<core::smart_refctd_dynamic_array<ICPUImage::SBufferCopy>>(imageInfo.mipLevels);
134+
auto image = ICPUImage::create(std::move(imageInfo));
135135

136136
auto getFullSizeOfRegion = [&](const uint16_t mipLevel) -> uint64_t
137137
{
@@ -203,7 +203,7 @@ namespace nbl
203203

204204
image->setBufferAndRegions(std::move(texelBuffer), regions);
205205

206-
ICPUImageView::SCreationParams imageViewInfo;
206+
ICPUImageView::SCreationParams imageViewInfo = {};
207207
imageViewInfo.image = std::move(image);
208208
imageViewInfo.format = imageViewInfo.image->getCreationParameters().format;
209209
imageViewInfo.viewType = imageViewType;

src/nbl/asset/interchange/CGraphicsPipelineLoaderMTL.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ CGraphicsPipelineLoaderMTL::image_views_set_t CGraphicsPipelineLoaderMTL::loadIm
680680

681681
const bool isCubemap = (i == CMTLMetadata::CRenderpassIndependentPipeline::EMP_REFL_POSX);
682682

683-
ICPUImageView::SCreationParams viewParams;
683+
ICPUImageView::SCreationParams viewParams = {};
684684
viewParams.flags = static_cast<ICPUImageView::E_CREATE_FLAGS>(0u);
685685
viewParams.format = image->getCreationParameters().format;
686686
viewParams.viewType = viewType[isCubemap];

src/nbl/asset/utils/CDerivativeMapCreator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ core::smart_refctd_ptr<ICPUImageView> CDerivativeMapCreator::createDerivativeMap
206206
auto img = createDerivativeMapFromHeightMap<isotropicNormalization>(_inImg, _uwrap, _vwrap, _borderColor, out_normalizationFactor);
207207
const auto& iparams = img->getCreationParameters();
208208

209-
ICPUImageView::SCreationParams params;
209+
ICPUImageView::SCreationParams params = {};
210210
params.format = iparams.format;
211211
params.subresourceRange.baseArrayLayer = 0u;
212212
params.subresourceRange.layerCount = iparams.arrayLayers;
@@ -306,7 +306,7 @@ core::smart_refctd_ptr<ICPUImageView> CDerivativeMapCreator::createDerivativeMap
306306
{
307307
auto cpuDerivativeImage = createDerivativeMapFromNormalMap<isotropicNormalization>(_inImg,out_normalizationFactor);
308308

309-
ICPUImageView::SCreationParams imageViewInfo;
309+
ICPUImageView::SCreationParams imageViewInfo = {};
310310
imageViewInfo.image = core::smart_refctd_ptr(cpuDerivativeImage);
311311
imageViewInfo.format = imageViewInfo.image->getCreationParameters().format;
312312
imageViewInfo.viewType = decltype(imageViewInfo.viewType)::ET_2D;

0 commit comments

Comments
 (0)