- remove the old incomplete VkHardwareTexture implementation

This commit is contained in:
Magnus Norddahl 2019-03-17 22:10:49 +01:00
parent 40ee32a0ce
commit 2429eba8f6
2 changed files with 0 additions and 261 deletions

View file

@ -346,200 +346,3 @@ void VkHardwareTexture::CreateWipeTexture(int w, int h, const char *name)
fb->GetPostprocess()->BlitCurrentToImage(mImage.get(), &mImageLayout);
}
#if 0
//===========================================================================
//
// Creates the low level texture object
//
//===========================================================================
VkResult VkHardwareTexture::CreateTexture(unsigned char * buffer, int w, int h, bool mipmap, int translation)
{
int rh,rw;
bool deletebuffer=false;
auto tTex = GetTexID(translation);
// We cannot determine if the old texture is still needed, so if something is trying to recreate a still existing texture this must fail.
// Normally it should never occur that a texture needs to be recreated in the middle of a frame.
if (tTex->vkTexture != nullptr) return VK_ERROR_INITIALIZATION_FAILED;
tTex->vkTexture = new VkTexture(vDevice);;
rw = vDevice->GetTexDimension(w);
rh = vDevice->GetTexDimension(h);
if (rw < w || rh < h)
{
// The texture is larger than what the hardware can handle so scale it down.
unsigned char * scaledbuffer=(unsigned char *)calloc(4,rw * (rh+1));
if (scaledbuffer)
{
ResizeTexture(w, h, rw, rh, buffer, scaledbuffer);
deletebuffer=true;
buffer=scaledbuffer;
}
}
auto res = tTex->vkTexture->Create(buffer, w, h, mipmap, vkTextureBytes);
if (res != VK_SUCCESS)
{
delete tTex->vkTexture;
tTex->vkTexture = nullptr;
}
return res;
}
//===========================================================================
//
// Creates a texture
//
//===========================================================================
VkHardwareTexture::VkHardwareTexture(VulkanDevice *dev, bool nocompression)
{
forcenocompression = nocompression;
vkDefTex.vkTexture = nullptr;
vkDefTex.translation = 0;
vkDefTex.mipmapped = false;
vDevice = dev;
}
//===========================================================================
//
// Deletes a texture id and unbinds it from the texture units
//
//===========================================================================
void VkHardwareTexture::TranslatedTexture::Delete()
{
if (vkTexture != nullptr)
{
delete vkTexture;
vkTexture = nullptr;
mipmapped = false;
}
}
//===========================================================================
//
// Frees all associated resources
//
//===========================================================================
void VkHardwareTexture::Clean(bool all)
{
int cm_arraysize = CM_FIRSTSPECIALCOLORMAP + SpecialColormaps.Size();
if (all)
{
vkDefTex.Delete();
}
for(unsigned int i=0;i<vkTex_Translated.Size();i++)
{
vkTex_Translated[i].Delete();
}
vkTex_Translated.Clear();
}
//===========================================================================
//
// Deletes all allocated resources and considers translations
// This will only be called for sprites
//
//===========================================================================
void VkHardwareTexture::CleanUnused(SpriteHits &usedtranslations)
{
if (usedtranslations.CheckKey(0) == nullptr)
{
vkDefTex.Delete();
}
for (int i = vkTex_Translated.Size()-1; i>= 0; i--)
{
if (usedtranslations.CheckKey(vkTex_Translated[i].translation) == nullptr)
{
vkTex_Translated[i].Delete();
vkTex_Translated.Delete(i);
}
}
}
//===========================================================================
//
// Destroys the texture
//
//===========================================================================
VkHardwareTexture::~VkHardwareTexture()
{
Clean(true);
}
//===========================================================================
//
// Gets a texture ID address and validates all required data
//
//===========================================================================
VkHardwareTexture::TranslatedTexture *VkHardwareTexture::GetTexID(int translation)
{
if (translation == 0)
{
return &vkDefTex;
}
// normally there aren't more than very few different
// translations here so this isn't performance critical.
// Maps only start to pay off for larger amounts of elements.
for (auto &tex : vkTex_Translated)
{
if (tex.translation == translation)
{
return &tex;
}
}
int add = vkTex_Translated.Reserve(1);
vkTex_Translated[add].translation = translation;
vkTex_Translated[add].vkTexture = nullptr;
vkTex_Translated[add].mipmapped = false;
return &vkTex_Translated[add];
}
//===========================================================================
//
//
//
//===========================================================================
VkTexture *VkHardwareTexture::GetVkTexture(FTexture *tex, int translation, bool needmipmap, int flags)
{
int usebright = false;
if (translation <= 0)
{
translation = -translation;
}
else
{
auto remap = TranslationToTable(translation);
translation = remap == nullptr ? 0 : remap->GetUniqueIndex();
}
TranslatedTexture *pTex = GetTexID(translation);
if (pTex->vkTexture == nullptr)
{
int w, h;
auto buffer = tex->CreateTexBuffer(translation, w, h, flags | CTF_ProcessData);
auto res = CreateTexture(buffer, w, h, needmipmap, translation);
delete[] buffer;
}
return pTex->vkTexture;
}
#endif

View file

@ -65,67 +65,3 @@ private:
VkImageLayout mImageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
int mTexelsize = 4;
};
#if 0
class FCanvasTexture;
class AActor;
class VkTexture;
class VkRenderTexture;
class VulkanDevice;
class VkHardwareTexture : public IHardwareTexture
{
public:
enum
{
MAX_TEXTURES = 16
};
private:
struct TranslatedTexture
{
VkTexture *vkTexture;
int translation;
bool mipmapped;
void Delete();
};
VulkanDevice *vDevice;
private:
bool forcenocompression;
TranslatedTexture vkDefTex;
TArray<TranslatedTexture> vkTex_Translated;
int vkTextureBytes = 4;
TranslatedTexture * GetTexID(int translation);
public:
VkHardwareTexture(VulkanDevice *dev, bool nocompress);
~VkHardwareTexture();
//static void Unbind(int texunit);
//static void UnbindAll();
//void BindToFrameBuffer(int w, int h);
//unsigned int Bind(int texunit, int translation, bool needmipmap);
//bool BindOrCreate(FTexture *tex, int texunit, int clampmode, int translation, int flags);
//void AllocateBuffer(int w, int h, int texelsize);
//uint8_t *MapBuffer();
VkResult CreateTexture(unsigned char * buffer, int w, int h, bool mipmap, int translation);
void Clean(bool all);
void CleanUnused(SpriteHits &usedtranslations);
VkTexture *GetVkTexture(FTexture *tex, int translation, bool needmipmap, int flags);
};
#endif