@@ -134,7 +134,7 @@ TextureLoaderImpl::TextureLoaderImpl(IReferenceCounters* pRefCounters,
134134 m_Name{TexLoadInfo.Name != nullptr ? TexLoadInfo.Name : " " },
135135 m_TexDesc{TexDescFromTexLoadInfo (TexLoadInfo, m_Name)}
136136{
137- const auto ImgFileFormat = Image::GetFileFormat (pData, DataSize);
137+ const IMAGE_FILE_FORMAT ImgFileFormat = Image::GetFileFormat (pData, DataSize);
138138 if (ImgFileFormat == IMAGE_FILE_FORMAT_UNKNOWN)
139139 {
140140 LOG_ERROR_AND_THROW (" Unable to derive image format." );
@@ -151,7 +151,7 @@ TextureLoaderImpl::TextureLoaderImpl(IReferenceCounters* pRefCounters,
151151 ImgLoadInfo.Format = ImgFileFormat;
152152 if (!m_pDataBlob)
153153 {
154- m_pDataBlob = DataBlobImpl::Create (DataSize, pData);
154+ m_pDataBlob = DataBlobImpl::Create (TexLoadInfo. pAllocator , DataSize, pData);
155155 }
156156 ImgLoadInfo.IsSRGB = TexLoadInfo.IsSRGB ;
157157 ImgLoadInfo.PermultiplyAlpha = TexLoadInfo.PermultiplyAlpha ;
@@ -250,10 +250,10 @@ void TextureLoaderImpl::LoadFromImage(Image* pImage, const TextureLoadInfo& TexL
250250 TexLoadInfo.FlipVertically ||
251251 SwizzleRequired)
252252 {
253- auto DstStride = ImgDesc.Width * NumComponents * TexFmtDesc.ComponentSize ;
254- DstStride = AlignUp (DstStride, Uint32{4 });
255- m_Mips[0 ]. resize ( size_t {DstStride} * size_t {ImgDesc.Height });
256- m_SubResources[0 ].pData = m_Mips[0 ]. data ();
253+ Uint32 DstStride = ImgDesc.Width * NumComponents * TexFmtDesc.ComponentSize ;
254+ DstStride = AlignUp (DstStride, Uint32{4 });
255+ m_Mips[0 ] = DataBlobImpl::Create (TexLoadInfo. pAllocator , size_t {DstStride} * size_t {ImgDesc.Height });
256+ m_SubResources[0 ].pData = m_Mips[0 ]-> GetDataPtr ();
257257 m_SubResources[0 ].Stride = DstStride;
258258
259259 CopyPixelsAttribs CopyAttribs;
@@ -263,7 +263,7 @@ void TextureLoaderImpl::LoadFromImage(Image* pImage, const TextureLoadInfo& TexL
263263 CopyAttribs.pSrcPixels = pImage->GetData ()->GetConstDataPtr ();
264264 CopyAttribs.SrcStride = ImgDesc.RowStride ;
265265 CopyAttribs.SrcCompCount = ImgDesc.NumComponents ;
266- CopyAttribs.pDstPixels = m_Mips[0 ]. data ();
266+ CopyAttribs.pDstPixels = m_Mips[0 ]-> GetDataPtr ();
267267 CopyAttribs.DstComponentSize = TexFmtDesc.ComponentSize ;
268268 CopyAttribs.DstStride = DstStride;
269269 CopyAttribs.DstCompCount = NumComponents;
@@ -321,13 +321,13 @@ void TextureLoaderImpl::LoadFromImage(Image* pImage, const TextureLoadInfo& TexL
321321 RowSize = AlignUp (RowSize, Uint64{4 });
322322 MipSize = RowSize * MipLevelProps.LogicalHeight ;
323323 }
324- m_Mips[m]. resize ( StaticCast<size_t >(MipSize));
325- m_SubResources[m].pData = m_Mips[m]. data ();
324+ m_Mips[m] = DataBlobImpl::Create (TexLoadInfo. pAllocator , StaticCast<size_t >(MipSize));
325+ m_SubResources[m].pData = m_Mips[m]-> GetDataPtr ();
326326 m_SubResources[m].Stride = RowSize;
327327
328328 if (TexLoadInfo.GenerateMips )
329329 {
330- auto FinerMipProps = GetMipLevelProperties (m_TexDesc, m - 1 );
330+ MipLevelProperties FinerMipProps = GetMipLevelProperties (m_TexDesc, m - 1 );
331331 if (TexLoadInfo.GenerateMips )
332332 {
333333 ComputeMipLevelAttribs Attribs;
@@ -336,7 +336,7 @@ void TextureLoaderImpl::LoadFromImage(Image* pImage, const TextureLoadInfo& TexL
336336 Attribs.FineMipHeight = FinerMipProps.LogicalHeight ;
337337 Attribs.pFineMipData = m_SubResources[m - 1 ].pData ;
338338 Attribs.FineMipStride = StaticCast<size_t >(m_SubResources[m - 1 ].Stride );
339- Attribs.pCoarseMipData = m_Mips[m]. data ();
339+ Attribs.pCoarseMipData = m_Mips[m]-> GetDataPtr ();
340340 Attribs.CoarseMipStride = StaticCast<size_t >(m_SubResources[m].Stride );
341341 Attribs.AlphaCutoff = TexLoadInfo.AlphaCutoff ;
342342 static_assert (MIP_FILTER_TYPE_DEFAULT == static_cast <MIP_FILTER_TYPE>(TEXTURE_LOAD_MIP_FILTER_DEFAULT), " Inconsistent enum values" );
@@ -385,20 +385,20 @@ void TextureLoaderImpl::CompressSubresources(Uint32 NumComponents, Uint32 NumSrc
385385 m_TexDesc.Format = CompressedFormat;
386386 const TextureFormatAttribs& FmtAttribs = GetTextureFormatAttribs (CompressedFormat);
387387
388- std::vector<std::vector<Uint8 >> CompressedMips (m_SubResources.size ());
388+ std::vector<RefCntAutoPtr<IDataBlob >> CompressedMips (m_SubResources.size ());
389389 for (Uint32 slice = 0 ; slice < m_TexDesc.GetArraySize (); ++slice)
390390 {
391391 for (Uint32 mip = 0 ; mip < m_TexDesc.MipLevels ; ++mip)
392392 {
393- const Uint32 SubResIndex = slice * m_TexDesc.MipLevels + mip;
394- TextureSubResData& SubResData = m_SubResources[SubResIndex];
395- std::vector<Uint8 >& CompressedMip = CompressedMips[SubResIndex];
393+ const Uint32 SubResIndex = slice * m_TexDesc.MipLevels + mip;
394+ TextureSubResData& SubResData = m_SubResources[SubResIndex];
395+ RefCntAutoPtr<IDataBlob >& CompressedMip = CompressedMips[SubResIndex];
396396
397397 const MipLevelProperties CompressedMipProps = GetMipLevelProperties (m_TexDesc, mip);
398398 const Uint32 MaxCol = CompressedMipProps.LogicalWidth - 1 ;
399399 const Uint32 MaxRow = CompressedMipProps.LogicalHeight - 1 ;
400400 const size_t CompressedStride = static_cast <size_t >(CompressedMipProps.RowSize );
401- CompressedMip. resize ( CompressedStride * CompressedMipProps.StorageHeight );
401+ CompressedMip = DataBlobImpl::Create (TexLoadInfo. pAllocator , CompressedStride * CompressedMipProps.StorageHeight );
402402
403403 for (Uint32 row = 0 ; row < CompressedMipProps.StorageHeight ; row += FmtAttribs.BlockHeight )
404404 {
@@ -431,7 +431,7 @@ void TextureLoaderImpl::CompressSubresources(Uint32 NumComponents, Uint32 NumSrc
431431 return reinterpret_cast <const unsigned char *>(BlockData.data ());
432432 };
433433
434- Uint8* pDst = & CompressedMip[( col / FmtAttribs.BlockWidth ) * FmtAttribs.ComponentSize + CompressedStride * (row / FmtAttribs.BlockHeight )] ;
434+ Uint8* pDst = CompressedMip-> GetDataPtr <Uint8>() + ( col / FmtAttribs.BlockWidth ) * FmtAttribs.ComponentSize + CompressedStride * (row / FmtAttribs.BlockHeight );
435435 if (NumComponents == 1 )
436436 {
437437 std::array<Uint8, 16 > BlockData8;
@@ -456,7 +456,7 @@ void TextureLoaderImpl::CompressSubresources(Uint32 NumComponents, Uint32 NumSrc
456456 }
457457 }
458458
459- SubResData.pData = CompressedMip. data ();
459+ SubResData.pData = CompressedMip-> GetDataPtr ();
460460 SubResData.Stride = CompressedStride;
461461 }
462462 }
@@ -477,7 +477,7 @@ void CreateTextureLoaderFromFile(const char* FilePath,
477477 if (!File)
478478 LOG_ERROR_AND_THROW (" Failed to open file '" , FilePath, " '." );
479479
480- auto pFileData = DataBlobImpl::Create ();
480+ RefCntAutoPtr<DataBlobImpl> pFileData = DataBlobImpl::Create (TexLoadInfo. pAllocator );
481481 File->Read (pFileData);
482482
483483 RefCntAutoPtr<ITextureLoader> pTexLoader{
@@ -504,7 +504,7 @@ void CreateTextureLoaderFromMemory(const void* pData,
504504 RefCntAutoPtr<IDataBlob> pDataCopy;
505505 if (MakeDataCopy)
506506 {
507- pDataCopy = DataBlobImpl::Create (Size, pData);
507+ pDataCopy = DataBlobImpl::Create (TexLoadInfo. pAllocator , Size, pData);
508508 pData = pDataCopy->GetConstDataPtr ();
509509 }
510510 RefCntAutoPtr<ITextureLoader> pTexLoader{MakeNewRCObj<TextureLoaderImpl>()(TexLoadInfo, reinterpret_cast <const Uint8*>(pData), Size, std::move (pDataCopy))};
0 commit comments