diff options
Diffstat (limited to 'video/out/gpu/ra.c')
-rw-r--r-- | video/out/gpu/ra.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/video/out/gpu/ra.c b/video/out/gpu/ra.c index c4d3b53284..2874cf1ad2 100644 --- a/video/out/gpu/ra.c +++ b/video/out/gpu/ra.c @@ -283,11 +283,10 @@ static const struct ra_format *find_plane_format(struct ra *ra, int bytes, // Returns false (and *out is not touched) if no format found. bool ra_get_imgfmt_desc(struct ra *ra, int imgfmt, struct ra_imgfmt_desc *out) { - struct ra_imgfmt_desc res = {0}; + struct ra_imgfmt_desc res = {.component_type = RA_CTYPE_UNKNOWN}; struct mp_regular_imgfmt regfmt; if (mp_get_regular_imgfmt(®fmt, imgfmt)) { - enum ra_ctype ctype = RA_CTYPE_UNKNOWN; res.num_planes = regfmt.num_planes; res.component_bits = regfmt.component_size * 8; res.component_pad = regfmt.component_pad; @@ -305,9 +304,10 @@ bool ra_get_imgfmt_desc(struct ra *ra, int imgfmt, struct ra_imgfmt_desc *out) res.component_pad < 0) return false; // Renderer restriction, but actually an unwanted corner case. - if (ctype != RA_CTYPE_UNKNOWN && ctype != res.planes[n]->ctype) + if (res.component_type != RA_CTYPE_UNKNOWN && + res.component_type != res.planes[n]->ctype) return false; - ctype = res.planes[n]->ctype; + res.component_type = res.planes[n]->ctype; } res.chroma_w = 1 << regfmt.chroma_xs; res.chroma_h = 1 << regfmt.chroma_ys; @@ -330,6 +330,16 @@ supported: return true; } +static const char *ctype_to_str(enum ra_ctype ctype) +{ + switch (ctype) { + case RA_CTYPE_UNORM: return "unorm"; + case RA_CTYPE_UINT: return "uint "; + case RA_CTYPE_FLOAT: return "float"; + default: return "unknown"; + } +} + void ra_dump_tex_formats(struct ra *ra, int msgl) { if (!mp_msg_test(ra->log, msgl)) @@ -338,12 +348,7 @@ void ra_dump_tex_formats(struct ra *ra, int msgl) MP_MSG(ra, msgl, " NAME COMP*TYPE SIZE DEPTH PER COMP.\n"); for (int n = 0; n < ra->num_formats; n++) { const struct ra_format *fmt = ra->formats[n]; - const char *ctype = "unknown"; - switch (fmt->ctype) { - case RA_CTYPE_UNORM: ctype = "unorm"; break; - case RA_CTYPE_UINT: ctype = "uint "; break; - case RA_CTYPE_FLOAT: ctype = "float"; break; - } + const char *ctype = ctype_to_str(fmt->ctype); char cl[40] = ""; for (int i = 0; i < fmt->num_components; i++) { mp_snprintf_cat(cl, sizeof(cl), "%s%d", i ? " " : "", @@ -382,9 +387,10 @@ void ra_dump_imgfmt_desc(struct ra *ra, const struct ra_imgfmt_desc *desc, mp_snprintf_cat(pl, sizeof(pl), "%s", t); mp_snprintf_cat(pf, sizeof(pf), "%s", desc->planes[n]->name); } - MP_MSG(ra, msgl, "%d planes %dx%d %d/%d [%s] (%s)\n", + MP_MSG(ra, msgl, "%d planes %dx%d %d/%d [%s] (%s) [%s]\n", desc->num_planes, desc->chroma_w, desc->chroma_h, - desc->component_bits, desc->component_pad, pf, pl); + desc->component_bits, desc->component_pad, pf, pl, + ctype_to_str(desc->component_type)); } void ra_dump_img_formats(struct ra *ra, int msgl) |