VideoBackends: add a way to load data into a specific level AND layer, default to layer 0

This commit is contained in:
iwubcode
2023-01-27 18:46:53 -06:00
parent 41272dc5f1
commit 7bea39b39e
15 changed files with 43 additions and 42 deletions

View File

@ -92,16 +92,13 @@ void SWTexture::ResolveFromTexture(const AbstractTexture* src, const MathUtil::R
}
void SWTexture::Load(u32 level, u32 width, u32 height, u32 row_length, const u8* buffer,
size_t buffer_size)
size_t buffer_size, u32 layer)
{
for (u32 layer = 0; layer < m_config.layers; layer++)
u8* data = GetData(layer, level);
for (u32 y = 0; y < height; y++)
{
u8* data = GetData(layer, level);
for (u32 y = 0; y < height; y++)
{
memcpy(&data[width * y * sizeof(Pixel)], &buffer[y * row_length * sizeof(Pixel)],
width * sizeof(Pixel));
}
memcpy(&data[width * y * sizeof(Pixel)], &buffer[y * row_length * sizeof(Pixel)],
width * sizeof(Pixel));
}
}

View File

@ -26,8 +26,8 @@ public:
u32 dst_layer, u32 dst_level) override;
void ResolveFromTexture(const AbstractTexture* src, const MathUtil::Rectangle<int>& rect,
u32 layer, u32 level) override;
void Load(u32 level, u32 width, u32 height, u32 row_length, const u8* buffer,
size_t buffer_size) override;
void Load(u32 level, u32 width, u32 height, u32 row_length, const u8* buffer, size_t buffer_size,
u32 layer) override;
const u8* GetData(u32 layer, u32 level) const;
u8* GetData(u32 layer, u32 level);