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