Mesa (main): st/texture: refactor get_src_format() to be more useful

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 28 17:31:53 UTC 2021


Module: Mesa
Branch: main
Commit: d2b4a5947491d993270fb93ff2b663620fa21716
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2b4a5947491d993270fb93ff2b663620fa21716

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Tue Jul 20 12:23:35 2021 -0400

st/texture: refactor get_src_format() to be more useful

take more params in order to enable better reuse

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11982>

---

 src/mesa/state_tracker/st_cb_texture.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index d77c578cf30..0da1264acec 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -130,10 +130,8 @@ gl_target_to_pipe(GLenum target)
 }
 
 static enum pipe_format
-get_src_format(struct pipe_screen *screen, struct st_texture_object *stObj)
+get_src_format(struct pipe_screen *screen, enum pipe_format src_format, struct pipe_resource *src)
 {
-   struct pipe_resource *src = stObj->pt;
-   enum pipe_format src_format;
    /* Convert the source format to what is expected by GetTexImage
     * and see if it's supported.
     *
@@ -142,10 +140,7 @@ get_src_format(struct pipe_screen *screen, struct st_texture_object *stObj)
     * - Luminance alpha must be returned as (L,0,0,A).
     * - Intensity must be returned as (I,0,0,1)
     */
-   if (stObj->surface_based)
-      src_format = util_format_linear(stObj->surface_format);
-   else
-      src_format = util_format_linear(src->format);
+   src_format = util_format_linear(src_format);
    src_format = util_format_luminance_to_red(src_format);
    src_format = util_format_intensity_to_red(src_format);
 
@@ -2343,7 +2338,7 @@ st_GetTexSubImage(struct gl_context * ctx,
       goto fallback;
    }
 
-   src_format = get_src_format(screen, stObj);
+   src_format = get_src_format(screen, stObj->surface_based ? stObj->surface_format : src->format, src);
    if (src_format == PIPE_FORMAT_NONE)
       goto fallback;
 



More information about the mesa-commit mailing list