From 748223b8961e3ed2aa4a98b6747de995e5734bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 9 Feb 2018 13:54:22 +0100 Subject: [PATCH] cogl-texture: Remove unused function Commit d8f2f583e69f removed the only caller. --- cogl/cogl/cogl-texture.c | 279 --------------------------------------- 1 file changed, 279 deletions(-) diff --git a/cogl/cogl/cogl-texture.c b/cogl/cogl/cogl-texture.c index 55104e531..e2d37e225 100644 --- a/cogl/cogl/cogl-texture.c +++ b/cogl/cogl/cogl-texture.c @@ -542,285 +542,6 @@ cogl_texture_set_data (CoglTexture *texture, error); } -/* Reads back the contents of a texture by rendering it to the framebuffer - * and reading back the resulting pixels. - * - * It will perform multiple renders if the texture is larger than the - * current glViewport. - * - * It assumes the projection and modelview have already been setup so - * that rendering to 0,0 with the same width and height of the viewport - * will exactly cover the viewport. - * - * NB: Normally this approach isn't normally used since we can just use - * glGetTexImage, but may be used as a fallback in some circumstances. - */ -static CoglBool -do_texture_draw_and_read (CoglFramebuffer *fb, - CoglPipeline *pipeline, - CoglTexture *texture, - CoglBitmap *target_bmp, - float *viewport, - CoglError **error) -{ - float rx1, ry1; - float rx2, ry2; - float tx1, ty1; - float tx2, ty2; - int bw, bh; - CoglBitmap *rect_bmp; - unsigned int tex_width, tex_height; - CoglContext *ctx = fb->context; - - tex_width = cogl_texture_get_width (texture); - tex_height = cogl_texture_get_height (texture); - - ry2 = 0; - ty2 = 0; - - /* Walk Y axis until whole bitmap height consumed */ - for (bh = tex_height; bh > 0; bh -= viewport[3]) - { - /* Rectangle Y coords */ - ry1 = ry2; - ry2 += (bh < viewport[3]) ? bh : viewport[3]; - - /* Normalized texture Y coords */ - ty1 = ty2; - ty2 = (ry2 / (float) tex_height); - - rx2 = 0; - tx2 = 0; - - /* Walk X axis until whole bitmap width consumed */ - for (bw = tex_width; bw > 0; bw-=viewport[2]) - { - int width; - int height; - - /* Rectangle X coords */ - rx1 = rx2; - rx2 += (bw < viewport[2]) ? bw : viewport[2]; - - width = rx2 - rx1; - height = ry2 - ry1; - - /* Normalized texture X coords */ - tx1 = tx2; - tx2 = (rx2 / (float) tex_width); - - /* Draw a portion of texture */ - cogl_framebuffer_draw_textured_rectangle (fb, - pipeline, - 0, 0, - rx2 - rx1, - ry2 - ry1, - tx1, ty1, - tx2, ty2); - - /* Read into a temporary bitmap */ - rect_bmp = _cogl_bitmap_new_with_malloc_buffer - (ctx, - width, height, - COGL_PIXEL_FORMAT_RGBA_8888_PRE, - error); - if (!rect_bmp) - return FALSE; - - if (!_cogl_framebuffer_read_pixels_into_bitmap - (fb, - viewport[0], viewport[1], - COGL_READ_PIXELS_COLOR_BUFFER, - rect_bmp, - error)) - { - cogl_object_unref (rect_bmp); - return FALSE; - } - - /* Copy to target bitmap */ - if (!_cogl_bitmap_copy_subregion (rect_bmp, - target_bmp, - 0, 0, - rx1, ry1, - width, - height, - error)) - { - cogl_object_unref (rect_bmp); - return FALSE; - } - - /* Free temp bitmap */ - cogl_object_unref (rect_bmp); - } - } - - return TRUE; -} - -/* Reads back the contents of a texture by rendering it to the framebuffer - * and reading back the resulting pixels. - * - * NB: Normally this approach isn't normally used since we can just use - * glGetTexImage, but may be used as a fallback in some circumstances. - */ -static CoglBool -_cogl_texture_draw_and_read (CoglTexture *texture, - CoglBitmap *target_bmp, - GLuint target_gl_format, - GLuint target_gl_type, - CoglError **error) -{ - CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer (); - CoglContext *ctx = framebuffer->context; - float save_viewport[4]; - float viewport[4]; - CoglBool status = FALSE; - - viewport[0] = 0; - viewport[1] = 0; - viewport[2] = cogl_framebuffer_get_width (framebuffer); - viewport[3] = cogl_framebuffer_get_height (framebuffer); - - cogl_framebuffer_get_viewport4fv (framebuffer, save_viewport); - _cogl_framebuffer_push_projection (framebuffer); - cogl_framebuffer_orthographic (framebuffer, - 0, 0, - viewport[2], - viewport[3], - 0, 100); - - cogl_framebuffer_push_matrix (framebuffer); - cogl_framebuffer_identity_matrix (framebuffer); - - /* Direct copy operation */ - - if (ctx->texture_download_pipeline == NULL) - { - ctx->texture_download_pipeline = cogl_pipeline_new (ctx); - cogl_pipeline_set_blend (ctx->texture_download_pipeline, - "RGBA = ADD (SRC_COLOR, 0)", - NULL); - } - - cogl_pipeline_set_layer_texture (ctx->texture_download_pipeline, 0, texture); - - cogl_pipeline_set_layer_combine (ctx->texture_download_pipeline, - 0, /* layer */ - "RGBA = REPLACE (TEXTURE)", - NULL); - - cogl_pipeline_set_layer_filters (ctx->texture_download_pipeline, 0, - COGL_PIPELINE_FILTER_NEAREST, - COGL_PIPELINE_FILTER_NEAREST); - - if (!do_texture_draw_and_read (framebuffer, - ctx->texture_download_pipeline, - texture, target_bmp, viewport, - error)) - return FALSE; - - /* XXX: As an alleged PowerVR driver bug workaround where the driver - * is apparently not maintaining the alpha component of some - * framebuffers we render the alpha component of the texture - * separately to be sure we retrieve all components of the texture. - * - * TODO: verify if this is still an issue - */ - if ((_cogl_texture_get_format (texture) & COGL_A_BIT)/* && a_bits == 0*/) - { - uint8_t *srcdata; - uint8_t *dstdata; - uint8_t *srcpixel; - uint8_t *dstpixel; - int target_width = cogl_bitmap_get_width (target_bmp); - int target_height = cogl_bitmap_get_height (target_bmp); - int target_rowstride = cogl_bitmap_get_rowstride (target_bmp); - int bpp = _cogl_pixel_format_get_bytes_per_pixel (COGL_PIXEL_FORMAT_RGBA_8888); - int alpha_rowstride = bpp * target_width; - CoglBitmap *alpha_bmp; - int x,y; - - if ((dstdata = _cogl_bitmap_map (target_bmp, - COGL_BUFFER_ACCESS_WRITE, - COGL_BUFFER_MAP_HINT_DISCARD, - error)) == NULL) - goto EXIT; - - /* Create temp bitmap for alpha values */ - alpha_bmp = - _cogl_bitmap_new_with_malloc_buffer (ctx, - target_width, - target_height, - COGL_PIXEL_FORMAT_RGBA_8888, - error); - if (!alpha_bmp) - { - _cogl_bitmap_unmap (target_bmp); - goto EXIT; - } - - - /* Draw alpha values into RGB channels */ - cogl_pipeline_set_layer_combine (ctx->texture_download_pipeline, - 0, /* layer */ - "RGBA = REPLACE (TEXTURE[A])", - NULL); - - if (!do_texture_draw_and_read (framebuffer, - ctx->texture_download_pipeline, - texture, alpha_bmp, viewport, - error)) - { - cogl_object_unref (alpha_bmp); - _cogl_bitmap_unmap (target_bmp); - goto EXIT; - } - - /* Copy temp R to target A */ - - /* Note: we don't try to catch errors since "mapping" an - * malloc buffer should never fail */ - srcdata = _cogl_bitmap_map (alpha_bmp, - COGL_BUFFER_ACCESS_READ, - 0 /* hints */, - NULL); - - for (y=0; y