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(glBufferData) /* OpenGL 1.5 */
USE_GL_FUNC(glBufferSubData) /* OpenGL 1.5 */ USE_GL_FUNC(glBufferSubData) /* OpenGL 1.5 */
USE_GL_FUNC(glColorMaski) /* OpenGL 3.0 */ 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(glDeleteBuffers) /* OpenGL 1.5 */
USE_GL_FUNC(glGenBuffers) /* OpenGL 1.5 */ USE_GL_FUNC(glGenBuffers) /* OpenGL 1.5 */
USE_GL_FUNC(glGetBufferSubData) /* 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(glMapBuffer) /* OpenGL 1.5 */
USE_GL_FUNC(glUnmapBuffer) /* OpenGL 1.5 */ USE_GL_FUNC(glUnmapBuffer) /* OpenGL 1.5 */
#undef USE_GL_FUNC #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(glBufferData, glBufferDataARB);
MAP_GL_FUNCTION(glBufferSubData, glBufferSubDataARB); MAP_GL_FUNCTION(glBufferSubData, glBufferSubDataARB);
MAP_GL_FUNCTION(glColorMaski, glColorMaskIndexedEXT); 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(glDeleteBuffers, glDeleteBuffersARB);
MAP_GL_FUNCTION(glGenBuffers, glGenBuffersARB); MAP_GL_FUNCTION(glGenBuffers, glGenBuffersARB);
MAP_GL_FUNCTION(glGetBufferSubData, glGetBufferSubDataARB); MAP_GL_FUNCTION(glGetBufferSubData, glGetBufferSubDataARB);
MAP_GL_FUNCTION(glGetCompressedTexImage, glGetCompressedTexImageARB);
MAP_GL_FUNCTION(glMapBuffer, glMapBufferARB); MAP_GL_FUNCTION(glMapBuffer, glMapBufferARB);
MAP_GL_FUNCTION(glUnmapBuffer, glUnmapBufferARB); MAP_GL_FUNCTION(glUnmapBuffer, glUnmapBufferARB);
#undef MAP_GL_FUNCTION #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) 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); surface, surface->texture_level, format->glFormat, format->glType, data.addr);
if (data.buffer_object) if (data.buffer_object)
{ {
GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, data.buffer_object)); GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, data.buffer_object));
checkGLcall("glBindBuffer"); checkGLcall("glBindBuffer");
GL_EXTCALL(glGetCompressedTexImageARB(surface->texture_target, surface->texture_level, NULL)); GL_EXTCALL(glGetCompressedTexImage(surface->texture_target, surface->texture_level, NULL));
checkGLcall("glGetCompressedTexImageARB"); checkGLcall("glGetCompressedTexImage");
GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, 0)); GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, 0));
checkGLcall("glBindBuffer"); checkGLcall("glBindBuffer");
} }
else else
{ {
GL_EXTCALL(glGetCompressedTexImageARB(surface->texture_target, GL_EXTCALL(glGetCompressedTexImage(surface->texture_target,
surface->texture_level, data.addr)); surface->texture_level, data.addr));
checkGLcall("glGetCompressedTexImageARB"); checkGLcall("glGetCompressedTexImage");
} }
} }
else else
@ -1515,30 +1515,30 @@ void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct w
else else
internal = format->glInternal; 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, "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); dst_point->x, dst_point->y, update_w, update_h, internal, row_count * row_length, addr);
if (row_length == src_pitch) 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)); dst_point->x, dst_point->y, update_w, update_h, internal, row_count * row_length, addr));
} }
else else
{ {
UINT row, y; UINT row, y;
/* glCompressedTexSubImage2DARB() ignores pixel store state, so we /* glCompressedTexSubImage2D() ignores pixel store state, so we
* can't use the unpack row length like below. */ * can't use the unpack row length like for glTexSubImage2D. */
for (row = 0, y = dst_point->y; row < row_count; ++row) 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)); dst_point->x, y, update_w, format->block_height, internal, row_length, addr));
y += format->block_height; y += format->block_height;
addr += src_pitch; addr += src_pitch;
} }
} }
checkGLcall("glCompressedTexSubImage2DARB"); checkGLcall("glCompressedTexSubImage2D");
} }
else 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) 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)); internal, width, height, 0, surface->resource.size, mem));
checkGLcall("glCompressedTexImage2DARB"); checkGLcall("glCompressedTexImage2D");
} }
else else
{ {