From 8af22719d0c98e24104d01089ecb0cff840df7e8 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Mon, 17 Jan 2022 18:24:25 +0100 Subject: Cleanup: Remove now redundant performance workaround for asset previews Not needed anymore after aa0ecd179. The removed function was identical to `icon_draw_rect()` now. Reverts ab7214ca2ef9. --- source/blender/editors/interface/interface_icons.c | 76 +--------------------- 1 file changed, 1 insertion(+), 75 deletions(-) (limited to 'source/blender/editors/interface/interface_icons.c') diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 085b7d04be9..18018461ac2 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -1478,78 +1478,6 @@ PreviewImage *UI_icon_to_preview(int icon_id) return NULL; } -/** - * Version of #icon_draw_rect() that uses the GPU for scaling. This is only used for - * #ICON_TYPE_IMBUF because it's a back-ported fix for performance issues, see T92922. Only - * File/Asset Browser use #ICON_TYPE_IMBUF right now, which makes implications more predictable. - * - * TODO(Julian): This code is mostly duplicated. #icon_draw_rect() should be ported to use the GPU - * instead (D13144). - */ -static void icon_draw_rect_fast(float x, - float y, - int w, - int h, - float UNUSED(aspect), - int rw, - int rh, - uint *rect, - float alpha, - const float desaturate) -{ - int draw_w = w; - int draw_h = h; - int draw_x = x; - /* We need to round y, to avoid the icon jittering in some cases. */ - int draw_y = round_fl_to_int(y); - - /* sanity check */ - if (w <= 0 || h <= 0 || w > 2000 || h > 2000) { - printf("%s: icons are %i x %i pixels?\n", __func__, w, h); - BLI_assert_msg(0, "invalid icon size"); - return; - } - /* modulate color */ - const float col[4] = {alpha, alpha, alpha, alpha}; - - float scale_x = 1.0f; - float scale_y = 1.0f; - /* rect contains image in 'rendersize', we only scale if needed */ - if (rw != w || rh != h) { - /* preserve aspect ratio and center */ - if (rw > rh) { - draw_w = w; - draw_h = (int)(((float)rh / (float)rw) * (float)w); - draw_y += (h - draw_h) / 2; - } - else if (rw < rh) { - draw_w = (int)(((float)rw / (float)rh) * (float)h); - draw_h = h; - draw_x += (w - draw_w) / 2; - } - scale_x = draw_w / (float)rw; - scale_y = draw_h / (float)rh; - /* If the image is squared, the `draw_*` initialization values are good. */ - } - - /* draw */ - eGPUBuiltinShader shader; - if (desaturate != 0.0f) { - shader = GPU_SHADER_2D_IMAGE_DESATURATE_COLOR; - } - else { - shader = GPU_SHADER_2D_IMAGE_COLOR; - } - IMMDrawPixelsTexState state = immDrawPixelsTexSetup(shader); - - if (shader == GPU_SHADER_2D_IMAGE_DESATURATE_COLOR) { - immUniform1f("factor", desaturate); - } - - immDrawPixelsTexScaledFullSize( - &state, draw_x, draw_y, rw, rh, GPU_RGBA8, true, rect, scale_x, scale_y, 1.0f, 1.0f, col); -} - static void icon_draw_rect(float x, float y, int w, @@ -1867,9 +1795,7 @@ static void icon_draw_size(float x, ImBuf *ibuf = icon->obj; GPU_blend(GPU_BLEND_ALPHA_PREMULT); - /* These icons are only used by the File/Asset Browser currently. Without this `_fast()` - * version, there may be performance issues, see T92922. */ - icon_draw_rect_fast(x, y, w, h, aspect, ibuf->x, ibuf->y, ibuf->rect, alpha, desaturate); + icon_draw_rect(x, y, w, h, aspect, ibuf->x, ibuf->y, ibuf->rect, alpha, desaturate); GPU_blend(GPU_BLEND_ALPHA); } else if (di->type == ICON_TYPE_VECTOR) { -- cgit v1.2.3