66
77#include " nbl/asset/IAssetManager.h"
88
9- using namespace nbl ;
10- using namespace asset ;
9+ using namespace nbl ::core ;
10+ using namespace nbl :: asset;
1111
1212// todo NEED DOCS
1313IAssetLoader::IAssetLoaderOverride::IAssetLoaderOverride (IAssetManager* _manager) : m_manager(_manager), m_system(m_manager->getSystem ())
@@ -26,28 +26,28 @@ SAssetBundle IAssetLoader::IAssetLoaderOverride::findCachedAsset(const std::stri
2626 return chooseRelevantFromFound (found->begin (), found->end (), ctx, hierarchyLevel);
2727}
2828
29- void IAssetLoader::IAssetLoaderOverride::insertAssetIntoCache (SAssetBundle& asset, const std::string& supposedKey, const SAssetLoadContext& ctx , const uint32_t hierarchyLevel)
29+ void IAssetLoader::IAssetLoaderOverride::insertAssetIntoCache (SAssetBundle& asset, const std::string& supposedKey, const SAssetLoadParams& _params , const uint32_t hierarchyLevel)
3030{
3131 m_manager->changeAssetKey (asset, supposedKey);
3232
33- auto levelFlag = ctx. params .cacheFlags >> (uint64_t (hierarchyLevel) * 2ull );
33+ auto levelFlag = _params .cacheFlags >> (uint64_t (hierarchyLevel) * 2ull );
3434 if (!(levelFlag&ECF_DONT_CACHE_TOP_LEVEL))
3535 m_manager->insertAssetIntoCache (asset,ASSET_MUTABILITY_ON_CACHE_INSERT);
3636}
3737
38- SAssetBundle IAssetLoader::interm_getAssetInHierarchy (IAssetManager* _mgr, system::IFile* _file, const std::string& _supposedFilename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override)
38+ SAssetBundle IAssetLoader::interm_getAssetInHierarchy (system::IFile* _file, const std::string& _supposedFilename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override)
3939{
40- return _mgr ->getAssetInHierarchy (_file, _supposedFilename, _params, _hierarchyLevel, _override);
40+ return _override-> getManager () ->getAssetInHierarchy (_file, _supposedFilename, _params, _hierarchyLevel, _override);
4141}
4242
43- SAssetBundle IAssetLoader::interm_getAssetInHierarchy (IAssetManager* _mgr, const std::string& _filename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override)
43+ SAssetBundle IAssetLoader::interm_getAssetInHierarchy (const std::string& _filename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override)
4444{
45- return _mgr ->getAssetInHierarchy (_filename, _params, _hierarchyLevel, _override);
45+ return _override-> getManager () ->getAssetInHierarchy (_filename, _params, _hierarchyLevel, _override);
4646}
4747
48- SAssetBundle IAssetLoader::interm_getAssetInHierarchyWithAllContent (IAssetManager* _mgr, const std::string& _filename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override)
48+ SAssetBundle IAssetLoader::interm_getAssetInHierarchyWithAllContent (const std::string& _filename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override)
4949{
50- auto firstLoad = interm_getAssetInHierarchy (_mgr, _filename,_params,_hierarchyLevel,_override);
50+ auto firstLoad = interm_getAssetInHierarchy (_filename,_params,_hierarchyLevel,_override);
5151 auto bundleHasAllContent = [](const SAssetBundle& retval)->bool
5252 {
5353 for (const auto & asset : retval.getContents ())
@@ -60,10 +60,10 @@ SAssetBundle IAssetLoader::interm_getAssetInHierarchyWithAllContent(IAssetManage
6060
6161 IAssetLoader::SAssetLoadParams paramCopy = _params;
6262 paramCopy.cacheFlags = ECF_DUPLICATE_REFERENCES;
63- auto secondLoad = interm_getAssetInHierarchy (_mgr, _filename,paramCopy,_hierarchyLevel,_override);
63+ auto secondLoad = interm_getAssetInHierarchy (_filename,paramCopy,_hierarchyLevel,_override);
6464 if (bundleHasAllContent (secondLoad))
6565 {
66- _mgr ->removeAssetFromCache (firstLoad);
66+ _override-> getManager () ->removeAssetFromCache (firstLoad);
6767 return secondLoad;
6868 }
6969 else
@@ -83,15 +83,47 @@ bool IAssetLoader::insertBuiltinAssetIntoCache(IAssetManager* _mgr, SAssetBundle
8383
8484
8585
86-
87- bool IAssetLoader::insertBuiltinAssetIntoCache (IAssetManager* _mgr, core:: smart_refctd_ptr<IAsset>& _asset, core:: smart_refctd_ptr<IAssetMetadata>&& metadata, const std::string _path)
86+ // if I can figure out the template for this, move to header
87+ bool IAssetLoader::insertBuiltinAssetIntoCache (IAssetManager* _mgr, smart_refctd_ptr<IAsset>& _asset, smart_refctd_ptr<IAssetMetadata>&& metadata, const std::string _path)
8888{
8989 asset::SAssetBundle bundle (std::move (metadata), { _asset });
9090 return insertBuiltinAssetIntoCache (_mgr, bundle, _path);
9191}
9292
93- bool IAssetLoader::insertBuiltinAssetIntoCache (IAssetManager* _mgr, core:: smart_refctd_ptr<IAsset>&& _asset, core:: smart_refctd_ptr<IAssetMetadata>&& metadata, const std::string _path)
93+ bool IAssetLoader::insertBuiltinAssetIntoCache (IAssetManager* _mgr, smart_refctd_ptr<IAsset>&& _asset, smart_refctd_ptr<IAssetMetadata>&& metadata, const std::string _path)
9494{
9595 asset::SAssetBundle bundle (std::move (metadata), { std::move (_asset) });
9696 return insertBuiltinAssetIntoCache (_mgr, bundle, _path);
9797}
98+
99+
100+ smart_refctd_ptr<ICPUImageView> IAssetLoader::createDefaultImageView (core::smart_refctd_ptr<asset::ICPUImage>&& image)
101+ {
102+ if (!image)
103+ return nullptr ;
104+ const auto & imageParams = image->getCreationParameters ();
105+
106+ using view_type_e = IImageViewBase::E_TYPE;
107+ IImageViewBase::E_TYPE viewType;
108+ switch (imageParams.type )
109+ {
110+ case ICPUImage::ET_1D:
111+ viewType = view_type_e::ET_1D_ARRAY;
112+ break ;
113+ case ICPUImage::ET_2D:
114+ viewType = view_type_e::ET_2D_ARRAY;
115+ break ;
116+ case ICPUImage::ET_3D:
117+ viewType = view_type_e::ET_3D;
118+ break ;
119+ default :
120+ return nullptr ;
121+ }
122+
123+ return ICPUImageView::create ({
124+ // .subUsages = // shall we somehow narrow in-case the image itself has extended usage?
125+ .image = std::move (image),
126+ .viewType = viewType,
127+ .format = imageParams.format
128+ });
129+ }
0 commit comments