On Thu, Jan 4, 2018 at 8:36 PM, Ian Romanick <i...@freedesktop.org> wrote: > If nobody uses this method, removing it seems fine. Does this imply > that nobody implements an accelerated glGetCompressedTexSubImage, or is > the acceleration just implemented differently (in a way that I don't > recall off the top of my head)?
Driver.MapTextureImage is used to implement accelerated GetCompressedTexSubImage. Marek > > On 01/03/2018 01:50 PM, Marek Olšák wrote: >> From: Marek Olšák <marek.ol...@amd.com> >> >> --- >> src/mesa/drivers/common/driverfuncs.c | 1 - >> src/mesa/main/dd.h | 10 ---------- >> src/mesa/main/texgetimage.c | 23 +++++++++++------------ >> src/mesa/main/texgetimage.h | 8 -------- >> src/mesa/state_tracker/st_cb_texture.c | 1 - >> 5 files changed, 11 insertions(+), 32 deletions(-) >> >> diff --git a/src/mesa/drivers/common/driverfuncs.c >> b/src/mesa/drivers/common/driverfuncs.c >> index ddb4bb6..94dc0e6 100644 >> --- a/src/mesa/drivers/common/driverfuncs.c >> +++ b/src/mesa/drivers/common/driverfuncs.c >> @@ -94,21 +94,20 @@ _mesa_init_driver_functions(struct dd_function_table >> *driver) >> driver->QueryInternalFormat = _mesa_query_internal_format_default; >> driver->TexImage = _mesa_store_teximage; >> driver->TexSubImage = _mesa_store_texsubimage; >> driver->GetTexSubImage = _mesa_meta_GetTexSubImage; >> driver->ClearTexSubImage = _mesa_meta_ClearTexSubImage; >> driver->CopyTexSubImage = _mesa_meta_CopyTexSubImage; >> driver->GenerateMipmap = _mesa_meta_GenerateMipmap; >> driver->TestProxyTexImage = _mesa_test_proxy_teximage; >> driver->CompressedTexImage = _mesa_store_compressed_teximage; >> driver->CompressedTexSubImage = _mesa_store_compressed_texsubimage; >> - driver->GetCompressedTexSubImage = _mesa_GetCompressedTexSubImage_sw; >> driver->BindTexture = NULL; >> driver->NewTextureObject = _mesa_new_texture_object; >> driver->DeleteTexture = _mesa_delete_texture_object; >> driver->NewTextureImage = _swrast_new_texture_image; >> driver->DeleteTextureImage = _swrast_delete_texture_image; >> driver->AllocTextureImageBuffer = _swrast_alloc_texture_image_buffer; >> driver->FreeTextureImageBuffer = _swrast_free_texture_image_buffer; >> driver->MapTextureImage = _swrast_map_teximage; >> driver->UnmapTextureImage = _swrast_unmap_teximage; >> driver->DrawTex = _mesa_meta_DrawTex; >> diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h >> index 4e4d2a6..3455ddb 100644 >> --- a/src/mesa/main/dd.h >> +++ b/src/mesa/main/dd.h >> @@ -330,30 +330,20 @@ struct dd_function_table { >> >> /** >> * Called by glCompressedTexSubImage[123]D(). >> */ >> void (*CompressedTexSubImage)(struct gl_context *ctx, GLuint dims, >> struct gl_texture_image *texImage, >> GLint xoffset, GLint yoffset, GLint >> zoffset, >> GLsizei width, GLsizei height, GLsizei >> depth, >> GLenum format, >> GLsizei imageSize, const GLvoid *data); >> - >> - /** >> - * Called by glGetCompressedTexImage. >> - */ >> - void (*GetCompressedTexSubImage)(struct gl_context *ctx, >> - struct gl_texture_image *texImage, >> - GLint xoffset, GLint yoffset, >> - GLint zoffset, GLsizei width, >> - GLsizei height, GLsizei depth, >> - GLvoid *data); >> /*@}*/ >> >> /** >> * \name Texture object / image functions >> */ >> /*@{*/ >> >> /** >> * Called by glBindTexture() and glBindTextures(). >> */ >> diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c >> index 26cf3e5..c61842e 100644 >> --- a/src/mesa/main/texgetimage.c >> +++ b/src/mesa/main/texgetimage.c >> @@ -754,30 +754,29 @@ _mesa_GetTexSubImage_sw(struct gl_context *ctx, >> } >> >> if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { >> ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj, MAP_INTERNAL); >> } >> } >> >> >> >> /** >> - * This is the software fallback for Driver.GetCompressedTexSubImage(). >> - * All error checking will have been done before this routine is called. >> + * This function assumes that all error checking has been done. >> */ >> -void >> -_mesa_GetCompressedTexSubImage_sw(struct gl_context *ctx, >> - struct gl_texture_image *texImage, >> - GLint xoffset, GLint yoffset, >> - GLint zoffset, GLsizei width, >> - GLint height, GLint depth, >> - GLvoid *img) >> +static void >> +get_compressed_texsubimage_sw(struct gl_context *ctx, >> + struct gl_texture_image *texImage, >> + GLint xoffset, GLint yoffset, >> + GLint zoffset, GLsizei width, >> + GLint height, GLint depth, >> + GLvoid *img) >> { >> const GLuint dimensions = >> _mesa_get_texture_dimensions(texImage->TexObject->Target); >> struct compressed_pixelstore store; >> GLint slice; >> GLubyte *dest; >> >> _mesa_compute_compressed_pixelstore(dimensions, texImage->TexFormat, >> width, height, depth, >> &ctx->Pack, &store); >> @@ -1654,23 +1653,23 @@ get_compressed_texture_image(struct gl_context *ctx, >> firstFace = _mesa_tex_target_to_face(target); >> numFaces = 1; >> } >> >> _mesa_lock_texture(ctx, texObj); >> >> for (i = 0; i < numFaces; i++) { >> texImage = texObj->Image[firstFace + i][level]; >> assert(texImage); >> >> - ctx->Driver.GetCompressedTexSubImage(ctx, texImage, >> - xoffset, yoffset, zoffset, >> - width, height, depth, pixels); >> + get_compressed_texsubimage_sw(ctx, texImage, >> + xoffset, yoffset, zoffset, >> + width, height, depth, pixels); >> >> /* next cube face */ >> pixels = (GLubyte *) pixels + imageStride; >> } >> >> _mesa_unlock_texture(ctx, texObj); >> } >> >> >> void GLAPIENTRY >> diff --git a/src/mesa/main/texgetimage.h b/src/mesa/main/texgetimage.h >> index 63c75eb..3928e7a 100644 >> --- a/src/mesa/main/texgetimage.h >> +++ b/src/mesa/main/texgetimage.h >> @@ -37,28 +37,20 @@ extern GLenum >> _mesa_base_pack_format(GLenum format); >> >> extern void >> _mesa_GetTexSubImage_sw(struct gl_context *ctx, >> GLint xoffset, GLint yoffset, GLint zoffset, >> GLsizei width, GLsizei height, GLint depth, >> GLenum format, GLenum type, GLvoid *pixels, >> struct gl_texture_image *texImage); >> >> extern void >> -_mesa_GetCompressedTexSubImage_sw(struct gl_context *ctx, >> - struct gl_texture_image *texImage, >> - GLint xoffset, GLint yoffset, >> - GLint zoffset, GLsizei width, >> - GLint height, GLint depth, >> - GLvoid *data); >> - >> -extern void >> _mesa_get_compressed_texture_image( struct gl_context *ctx, >> struct gl_texture_object *texObj, >> struct gl_texture_image *texImage, >> GLenum target, GLint level, >> GLsizei bufSize, GLvoid *pixels, >> bool dsa ); >> >> >> extern void GLAPIENTRY >> _mesa_GetTexImage( GLenum target, GLint level, >> diff --git a/src/mesa/state_tracker/st_cb_texture.c >> b/src/mesa/state_tracker/st_cb_texture.c >> index 7766273..98f2443 100644 >> --- a/src/mesa/state_tracker/st_cb_texture.c >> +++ b/src/mesa/state_tracker/st_cb_texture.c >> @@ -3173,21 +3173,20 @@ st_init_texture_functions(struct dd_function_table >> *functions) >> functions->TexImage = st_TexImage; >> functions->TexSubImage = st_TexSubImage; >> functions->CompressedTexSubImage = st_CompressedTexSubImage; >> functions->CopyTexSubImage = st_CopyTexSubImage; >> functions->GenerateMipmap = st_generate_mipmap; >> >> functions->GetTexSubImage = st_GetTexSubImage; >> >> /* compressed texture functions */ >> functions->CompressedTexImage = st_CompressedTexImage; >> - functions->GetCompressedTexSubImage = _mesa_GetCompressedTexSubImage_sw; >> >> functions->NewTextureObject = st_NewTextureObject; >> functions->NewTextureImage = st_NewTextureImage; >> functions->DeleteTextureImage = st_DeleteTextureImage; >> functions->DeleteTexture = st_DeleteTextureObject; >> functions->AllocTextureImageBuffer = st_AllocTextureImageBuffer; >> functions->FreeTextureImageBuffer = st_FreeTextureImageBuffer; >> functions->MapTextureImage = st_MapTextureImage; >> functions->UnmapTextureImage = st_UnmapTextureImage; >> >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev