From 7ec6bb71b88e66b5aba332e60bf4c9c6112b6399 Mon Sep 17 00:00:00 2001 From: h4570 Date: Thu, 28 Jul 2022 23:54:53 +0200 Subject: [PATCH] temporary fix for texture system --- .../renderer/core/texture/models/texture_bpp.hpp | 6 ------ .../src/renderer/core/texture/models/texture.cpp | 14 ++++++++++++++ .../core/texture/renderer_core_texture.cpp | 5 +++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/engine/inc/renderer/core/texture/models/texture_bpp.hpp b/engine/inc/renderer/core/texture/models/texture_bpp.hpp index 32c748f..60f6202 100644 --- a/engine/inc/renderer/core/texture/models/texture_bpp.hpp +++ b/engine/inc/renderer/core/texture/models/texture_bpp.hpp @@ -14,29 +14,23 @@ namespace Tyra { enum TextureBpp { - // Tyra has 2.27MB~ free VRAM for textures. - /** * @brief 32-bit RGBA - Slowest - * Tyra can cache about 8~ of these textures (256x256) */ bpp32 = 32, /** * @brief 24-bit RGB - Slow - * Tyra can cache about 11~ of these textures (256x256) */ bpp24 = 24, /** * @brief 8-bit palletized (indexed) - Super fast - * Tyra can cache about 34~ of these textures (256x256) */ bpp8 = 8, /** * @brief 4-bit palletized (indexed) - Super, super fast - * Tyra can cache about 69~ of these textures (256x256) */ bpp4 = 4, }; diff --git a/engine/src/renderer/core/texture/models/texture.cpp b/engine/src/renderer/core/texture/models/texture.cpp index a4ab27b..d3155e4 100644 --- a/engine/src/renderer/core/texture/models/texture.cpp +++ b/engine/src/renderer/core/texture/models/texture.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include "renderer/core/texture/models/texture.hpp" @@ -23,6 +24,19 @@ Texture::Texture(TextureBuilderData* t_data) { name = t_data->name; + TYRA_ASSERT(t_data->width <= 256 && t_data->height <= 256, + "Tyra supports only 256x256 textures max!"); + + TYRA_ASSERT(t_data->width == 8 || t_data->width == 16 || + t_data->width == 32 || t_data->width == 64 || + t_data->width == 128 || t_data->width == 256, + "Texture width/height should be 8/16/32/64/128/256!"); + + TYRA_ASSERT(t_data->height == 8 || t_data->height == 16 || + t_data->height == 32 || t_data->height == 64 || + t_data->height == 128 || t_data->height == 256, + "Texture width/height should be 8/16/32/64/128/256!"); + core = new TextureData(t_data->data, t_data->bpp, t_data->gsComponents, t_data->width, t_data->height); diff --git a/engine/src/renderer/core/texture/renderer_core_texture.cpp b/engine/src/renderer/core/texture/renderer_core_texture.cpp index 3d37c72..6d3db64 100644 --- a/engine/src/renderer/core/texture/renderer_core_texture.cpp +++ b/engine/src/renderer/core/texture/renderer_core_texture.cpp @@ -44,8 +44,9 @@ RendererCoreTextureBuffers RendererCoreTexture::useTexture(Texture* t_tex) { auto allocated = getAllocatedBuffersByTextureId(t_tex->getId()); if (allocated.id != 0) return allocated; - // TODO: Dont like this..., but it works for now. - if (t_tex->getSizeInMB() > sender.getFreeVRamInMB()) { + // TODO: FIXME! + if (currentAllocations.size()) { + // if (t_tex->getSizeInMB() > sender.getFreeVRamInMB()) { for (int i = currentAllocations.size() - 1; i >= 0; i--) { sender.deallocate(currentAllocations[i]); }