wined3d: Use the core gl*CompressedTex* functions.

This commit is contained in:
Matteo Bruni 2015-01-20 15:47:05 +01:00 committed by Alexandre Julliard
parent 5883c9ece3
commit 6bb32e47ff
3 changed files with 23 additions and 13 deletions

View File

@ -2878,9 +2878,14 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
USE_GL_FUNC(glBufferData) /* OpenGL 1.5 */
USE_GL_FUNC(glBufferSubData) /* OpenGL 1.5 */
USE_GL_FUNC(glColorMaski) /* OpenGL 3.0 */
USE_GL_FUNC(glCompressedTexImage2D) /* OpenGL 1.3 */
USE_GL_FUNC(glCompressedTexImage3D) /* OpenGL 1.3 */
USE_GL_FUNC(glCompressedTexSubImage2D) /* OpenGL 1.3 */
USE_GL_FUNC(glCompressedTexSubImage3D) /* OpenGL 1.3 */
USE_GL_FUNC(glDeleteBuffers) /* OpenGL 1.5 */
USE_GL_FUNC(glGenBuffers) /* OpenGL 1.5 */
USE_GL_FUNC(glGetBufferSubData) /* OpenGL 1.5 */
USE_GL_FUNC(glGetCompressedTexImage) /* OpenGL 1.3 */
USE_GL_FUNC(glMapBuffer) /* OpenGL 1.5 */
USE_GL_FUNC(glUnmapBuffer) /* OpenGL 1.5 */
#undef USE_GL_FUNC
@ -2907,9 +2912,14 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
MAP_GL_FUNCTION(glBufferData, glBufferDataARB);
MAP_GL_FUNCTION(glBufferSubData, glBufferSubDataARB);
MAP_GL_FUNCTION(glColorMaski, glColorMaskIndexedEXT);
MAP_GL_FUNCTION(glCompressedTexImage2D, glCompressedTexImage2DARB);
MAP_GL_FUNCTION(glCompressedTexImage3D, glCompressedTexImage3DARB);
MAP_GL_FUNCTION(glCompressedTexSubImage2D, glCompressedTexSubImage2DARB);
MAP_GL_FUNCTION(glCompressedTexSubImage3D, glCompressedTexSubImage3DARB);
MAP_GL_FUNCTION(glDeleteBuffers, glDeleteBuffersARB);
MAP_GL_FUNCTION(glGenBuffers, glGenBuffersARB);
MAP_GL_FUNCTION(glGetBufferSubData, glGetBufferSubDataARB);
MAP_GL_FUNCTION(glGetCompressedTexImage, glGetCompressedTexImageARB);
MAP_GL_FUNCTION(glMapBuffer, glMapBufferARB);
MAP_GL_FUNCTION(glUnmapBuffer, glUnmapBufferARB);
#undef MAP_GL_FUNCTION

View File

@ -1334,23 +1334,23 @@ static void surface_download_data(struct wined3d_surface *surface, const struct
if (format->flags & WINED3DFMT_FLAG_COMPRESSED)
{
TRACE("(%p) : Calling glGetCompressedTexImageARB level %d, format %#x, type %#x, data %p.\n",
TRACE("(%p) : Calling glGetCompressedTexImage level %d, format %#x, type %#x, data %p.\n",
surface, surface->texture_level, format->glFormat, format->glType, data.addr);
if (data.buffer_object)
{
GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, data.buffer_object));
checkGLcall("glBindBuffer");
GL_EXTCALL(glGetCompressedTexImageARB(surface->texture_target, surface->texture_level, NULL));
checkGLcall("glGetCompressedTexImageARB");
GL_EXTCALL(glGetCompressedTexImage(surface->texture_target, surface->texture_level, NULL));
checkGLcall("glGetCompressedTexImage");
GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, 0));
checkGLcall("glBindBuffer");
}
else
{
GL_EXTCALL(glGetCompressedTexImageARB(surface->texture_target,
GL_EXTCALL(glGetCompressedTexImage(surface->texture_target,
surface->texture_level, data.addr));
checkGLcall("glGetCompressedTexImageARB");
checkGLcall("glGetCompressedTexImage");
}
}
else
@ -1515,30 +1515,30 @@ void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct w
else
internal = format->glInternal;
TRACE("glCompressedTexSubImage2DARB, target %#x, level %d, x %d, y %d, w %d, h %d, "
TRACE("glCompressedTexSubImage2D, target %#x, level %d, x %d, y %d, w %d, h %d, "
"format %#x, image_size %#x, addr %p.\n", surface->texture_target, surface->texture_level,
dst_point->x, dst_point->y, update_w, update_h, internal, row_count * row_length, addr);
if (row_length == src_pitch)
{
GL_EXTCALL(glCompressedTexSubImage2DARB(surface->texture_target, surface->texture_level,
GL_EXTCALL(glCompressedTexSubImage2D(surface->texture_target, surface->texture_level,
dst_point->x, dst_point->y, update_w, update_h, internal, row_count * row_length, addr));
}
else
{
UINT row, y;
/* glCompressedTexSubImage2DARB() ignores pixel store state, so we
* can't use the unpack row length like below. */
/* glCompressedTexSubImage2D() ignores pixel store state, so we
* can't use the unpack row length like for glTexSubImage2D. */
for (row = 0, y = dst_point->y; row < row_count; ++row)
{
GL_EXTCALL(glCompressedTexSubImage2DARB(surface->texture_target, surface->texture_level,
GL_EXTCALL(glCompressedTexSubImage2D(surface->texture_target, surface->texture_level,
dst_point->x, y, update_w, format->block_height, internal, row_length, addr));
y += format->block_height;
addr += src_pitch;
}
}
checkGLcall("glCompressedTexSubImage2DARB");
checkGLcall("glCompressedTexSubImage2D");
}
else
{

View File

@ -885,9 +885,9 @@ static void texture2d_prepare_texture(struct wined3d_texture *texture, struct wi
if (format->flags & WINED3DFMT_FLAG_COMPRESSED && mem)
{
GL_EXTCALL(glCompressedTexImage2DARB(surface->texture_target, surface->texture_level,
GL_EXTCALL(glCompressedTexImage2D(surface->texture_target, surface->texture_level,
internal, width, height, 0, surface->resource.size, mem));
checkGLcall("glCompressedTexImage2DARB");
checkGLcall("glCompressedTexImage2D");
}
else
{