review texture format + fix copy
This commit is contained in:
parent
5b46c6e66f
commit
7ec3a5fe6e
83
src/external/rlsw.h
vendored
83
src/external/rlsw.h
vendored
|
|
@ -566,17 +566,6 @@ typedef enum {
|
||||||
SW_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float)
|
SW_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float)
|
||||||
SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float)
|
SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float)
|
||||||
SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float)
|
SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float)
|
||||||
SW_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha)
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha)
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp
|
|
||||||
SW_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp
|
|
||||||
} sw_pixelformat_e;
|
} sw_pixelformat_e;
|
||||||
|
|
||||||
typedef void (*sw_factor_f)(
|
typedef void (*sw_factor_f)(
|
||||||
|
|
@ -1778,36 +1767,25 @@ static inline int sw_get_pixel_format(SWformat format, SWtype type)
|
||||||
return -1; // Unsupported format
|
return -1; // Unsupported format
|
||||||
}
|
}
|
||||||
|
|
||||||
int sw_get_pixel_bpp(sw_pixelformat_e format)
|
int sw_get_pixel_bytes(sw_pixelformat_e format)
|
||||||
{
|
{
|
||||||
int bpp = 0;
|
int bpp = 0;
|
||||||
|
|
||||||
switch (format)
|
switch (format)
|
||||||
{
|
{
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 1; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA:
|
case SW_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA:
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R5G6B5:
|
case SW_PIXELFORMAT_UNCOMPRESSED_R5G6B5:
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1:
|
case SW_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1:
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 2; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 4; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 3; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 4; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 4*3; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 4*4; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R16: bpp = 16; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R16: bpp = 2; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16: bpp = 16*3; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16: bpp = 2*3; break;
|
||||||
case SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: bpp = 16*4; break;
|
case SW_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: bpp = 2*4; break;
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC1_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break;
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT3_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT5_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break;
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break;
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1998,19 +1976,6 @@ static inline void sw_get_pixel(float* color, const void* pixels, uint32_t offse
|
||||||
sw_get_pixel_rgba_16161616(color, pixels, offset);
|
sw_get_pixel_rgba_16161616(color, pixels, offset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT3_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT5_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC1_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA:
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3973,17 +3938,7 @@ void swCopyFramebuffer(int x, int y, int w, int h, SWformat format, SWtype type,
|
||||||
sw_framebuffer_copy_to_R16G16B16A16(x, y, w, h, pixels);
|
sw_framebuffer_copy_to_R16G16B16A16(x, y, w, h, pixels);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGB:
|
default:
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT3_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT5_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC1_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA:
|
|
||||||
RLSW.errCode = SW_INVALID_ENUM;
|
RLSW.errCode = SW_INVALID_ENUM;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -4057,17 +4012,7 @@ void swBlitFramebuffer(int xDst, int yDst, int wDst, int hDst,
|
||||||
sw_framebuffer_blit_to_R16G16B16A16(xDst, yDst, wDst, hDst, xSrc, ySrc, wSrc, hSrc, pixels);
|
sw_framebuffer_blit_to_R16G16B16A16(xDst, yDst, wDst, hDst, xSrc, ySrc, wSrc, hSrc, pixels);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGB:
|
default:
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT1_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT3_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_DXT5_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC1_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGB:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_PVRT_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA:
|
|
||||||
case SW_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA:
|
|
||||||
RLSW.errCode = SW_INVALID_ENUM;
|
RLSW.errCode = SW_INVALID_ENUM;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -5025,7 +4970,7 @@ void swTexImage2D(int width, int height, SWformat format, SWtype type, bool copy
|
||||||
sw_texture_t* texture = &RLSW.loadedTextures[id];
|
sw_texture_t* texture = &RLSW.loadedTextures[id];
|
||||||
|
|
||||||
if (copy) {
|
if (copy) {
|
||||||
int bpp = sw_get_pixel_bpp(pixelFormat);
|
int bpp = sw_get_pixel_bytes(pixelFormat);
|
||||||
int size = bpp * width * height;
|
int size = bpp * width * height;
|
||||||
texture->pixels.ptr = SW_MALLOC(size);
|
texture->pixels.ptr = SW_MALLOC(size);
|
||||||
if (texture->pixels.ptr == NULL) {
|
if (texture->pixels.ptr == NULL) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user