summaryrefslogtreecommitdiff
path: root/src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c')
-rw-r--r--src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c67
1 files changed, 64 insertions, 3 deletions
diff --git a/src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c b/src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c
index 6917197b..41d96125 100644
--- a/src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c
+++ b/src/VBox/GuestHost/OpenGL/state_tracker/state_teximage.c
@@ -245,7 +245,7 @@ crStateGetTextureObjectAndImage(CRContext *g, GLenum texTarget, GLint level,
return;
default:
/* fall-through */
- ;
+ ;
}
#ifdef CR_NV_texture_rectangle
@@ -308,6 +308,7 @@ crStateGetTextureObjectAndImage(CRContext *g, GLenum texTarget, GLint level,
}
#endif
+ crWarning("unexpected texTarget 0x%x", texTarget);
*obj = NULL;
*img = NULL;
}
@@ -971,6 +972,13 @@ crStateTexSubImage1D(GLenum target, GLint level, GLint xoffset,
return; /* GL error state already set */
}
+#ifdef DEBUG_misha
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
#ifndef CR_STATE_NO_TEXTURE_IMAGE_STORE
xoffset += tl->border;
@@ -1024,6 +1032,13 @@ crStateTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
CRASSERT(tobj);
CRASSERT(tl);
+#ifdef DEBUG_misha
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
#ifndef CR_STATE_NO_TEXTURE_IMAGE_STORE
xoffset += tl->border;
yoffset += tl->border;
@@ -1109,6 +1124,14 @@ crStateTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
return; /* GL error state already set */
}
+#ifdef DEBUG_misha
+ CRASSERT(target == GL_TEXTURE_3D);
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
#ifndef CR_STATE_NO_TEXTURE_IMAGE_STORE
xoffset += tl->border;
yoffset += tl->border;
@@ -1416,6 +1439,14 @@ crStateCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset,
return; /* GL error state already set */
}
+#ifdef DEBUG_misha
+ CRASSERT(target == GL_TEXTURE_1D);
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
#ifndef CR_STATE_NO_TEXTURE_IMAGE_STORE
xoffset += tl->border;
@@ -1456,11 +1487,19 @@ crStateCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset,
CRStateBits *sb = GetCurrentBits();
CRTextureBits *tb = &(sb->texture);
CRTextureUnit *unit = t->unit + t->curTextureUnit;
- CRTextureObj *tobj = unit->currentTexture1D;
+ CRTextureObj *tobj = unit->currentTexture2D;
CRTextureLevel *tl = tobj->level[0] + level;
FLUSH();
+#ifdef DEBUG_misha
+ CRASSERT(target == GL_TEXTURE_2D);
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
if (ErrorCheckTexSubImage(2, target, level, xoffset, yoffset, 0,
width, height, 1)) {
return; /* GL error state already set */
@@ -1510,11 +1549,19 @@ crStateCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
CRStateBits *sb = GetCurrentBits();
CRTextureBits *tb = &(sb->texture);
CRTextureUnit *unit = t->unit + t->curTextureUnit;
- CRTextureObj *tobj = unit->currentTexture1D;
+ CRTextureObj *tobj = unit->currentTexture3D;
CRTextureLevel *tl = tobj->level[0] + level;
FLUSH();
+#ifdef DEBUG_misha
+ CRASSERT(target == GL_TEXTURE_3D);
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
if (ErrorCheckTexSubImage(3, target, level, xoffset, yoffset, zoffset,
width, height, depth)) {
return; /* GL error state already set */
@@ -1580,6 +1627,13 @@ crStateGetCompressedTexImageARB(GLenum target, GLint level, GLvoid * img)
return;
}
+#ifdef DEBUG_misha
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
#ifndef CR_STATE_NO_TEXTURE_IMAGE_STORE
crMemcpy(img, tl->img, tl->bytes);
#else
@@ -1616,6 +1670,13 @@ crStateGetTexImage(GLenum target, GLint level, GLenum format,
return;
}
+#ifdef DEBUG_misha
+ CRASSERT(tl->bytes);
+ CRASSERT(tl->height);
+ CRASSERT(tl->width);
+ CRASSERT(tl->depth);
+#endif
+
switch (format)
{
case GL_RED: