mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-09 11:20:56 +00:00
MYST3, TINYGL: fixed endian issue
This commit is contained in:
parent
7a3e61a9b7
commit
c2a9a394c3
@ -54,7 +54,7 @@ TinyGLTexture::TinyGLTexture(const Graphics::Surface *surface, bool nonPoTSuppor
|
|||||||
|
|
||||||
if (format.bytesPerPixel == 4) {
|
if (format.bytesPerPixel == 4) {
|
||||||
internalFormat = TGL_RGBA;
|
internalFormat = TGL_RGBA;
|
||||||
sourceFormat = TGL_UNSIGNED_BYTE;
|
sourceFormat = TGL_UNSIGNED_INT_8_8_8_8_REV;
|
||||||
} else if (format.bytesPerPixel == 2) {
|
} else if (format.bytesPerPixel == 2) {
|
||||||
internalFormat = TGL_RGB;
|
internalFormat = TGL_RGB;
|
||||||
sourceFormat = TGL_UNSIGNED_BYTE; // UNSIGNED_SHORT_5_6_5 not provided
|
sourceFormat = TGL_UNSIGNED_BYTE; // UNSIGNED_SHORT_5_6_5 not provided
|
||||||
|
@ -585,6 +585,10 @@ enum {
|
|||||||
TGL_RGB10_A2 = 0x8059,
|
TGL_RGB10_A2 = 0x8059,
|
||||||
TGL_RGBA12 = 0x805A,
|
TGL_RGBA12 = 0x805A,
|
||||||
TGL_RGBA16 = 0x805B,
|
TGL_RGBA16 = 0x805B,
|
||||||
|
TGL_UNSIGNED_SHORT_5_6_5 = 0x8363,
|
||||||
|
TGL_UNSIGNED_SHORT_5_6_5_REV = 0x8364,
|
||||||
|
TGL_UNSIGNED_INT_8_8_8_8 = 0x8035,
|
||||||
|
TGL_UNSIGNED_INT_8_8_8_8_REV = 0x8367,
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
TGL_VENDOR = 0x1F00,
|
TGL_VENDOR = 0x1F00,
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
// Texture Manager
|
// Texture Manager
|
||||||
|
|
||||||
|
#include "common/endian.h"
|
||||||
|
|
||||||
#include "graphics/tinygl/zgl.h"
|
#include "graphics/tinygl/zgl.h"
|
||||||
|
|
||||||
namespace TinyGL {
|
namespace TinyGL {
|
||||||
@ -177,7 +179,12 @@ void glopTexImage2D(GLContext *c, GLParam *p) {
|
|||||||
pixels = temp.getRawBuffer();
|
pixels = temp.getRawBuffer();
|
||||||
do_free_after_rgb2rgba = true;
|
do_free_after_rgb2rgba = true;
|
||||||
}
|
}
|
||||||
} else if ((format != TGL_RGBA && format != TGL_RGB && format != TGL_BGR) || type != TGL_UNSIGNED_BYTE) {
|
} else if ((format != TGL_RGBA &&
|
||||||
|
format != TGL_RGB &&
|
||||||
|
format != TGL_BGR &&
|
||||||
|
format != TGL_BGRA) ||
|
||||||
|
(type != TGL_UNSIGNED_BYTE &&
|
||||||
|
type != TGL_UNSIGNED_INT_8_8_8_8_REV)) {
|
||||||
error("tglTexImage2D: combination of parameters not handled");
|
error("tglTexImage2D: combination of parameters not handled");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,6 +198,17 @@ void glopTexImage2D(GLContext *c, GLParam *p) {
|
|||||||
} else {
|
} else {
|
||||||
memcpy(pixels1, pixels, c->_textureSize * c->_textureSize * bytes);
|
memcpy(pixels1, pixels, c->_textureSize * c->_textureSize * bytes);
|
||||||
}
|
}
|
||||||
|
#if defined(SCUMM_BIG_ENDIAN)
|
||||||
|
if (type == TGL_UNSIGNED_INT_8_8_8_8_REV) {
|
||||||
|
for (int y = 0; y < height; y++) {
|
||||||
|
for (int x = 0; x < width; x++) {
|
||||||
|
uint32 offset = (y * width + x) * 4;
|
||||||
|
byte *data = pixels1 + offset;
|
||||||
|
WRITE_BE_UINT32(data, READ_LE_UINT32(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
c->current_texture->versionNumber++;
|
c->current_texture->versionNumber++;
|
||||||
|
Loading…
Reference in New Issue
Block a user