diff options
author | Nanley Chery <nanley.g.chery@intel.com> | 2020-07-24 18:20:52 -0700 |
---|---|---|
committer | Eric Engestrom <eric@engestrom.ch> | 2020-09-02 21:50:44 +0200 |
commit | a8be21017051f1b8a5d0c459bda0dd33a7159b2f (patch) | |
tree | 367f491935633db3798fefcd567965ee2c53f54e | |
parent | 2b58168de03f2944723bc01a024f78ed5f485fe3 (diff) |
gallium/dri2: Report correct YUYV and UYVY plane count
Return the actual number of planes in these formats (one) instead of the
number of planes used for lowering (two).
Fixes: d5c857837aa ("gallium/dri2: Fix creation of multi-planar modifier images")
Acked-by: Anuj Phogat <anuj.phogat@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6449>
(cherry picked from commit 36bd3e986830bbf7435389cdd68e593b8b43f234)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/dri2.c | 18 |
2 files changed, 5 insertions, 15 deletions
diff --git a/.pick_status.json b/.pick_status.json index 743e2c5d22c..4df2086fc5f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2560,7 +2560,7 @@ "description": "gallium/dri2: Report correct YUYV and UYVY plane count", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "d5c857837aae205c0e1fddee30300b4419e2bb3f" }, diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index ec78d0985ed..d2032dc1e12 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -868,7 +868,7 @@ dri2_get_modifier_num_planes(uint64_t modifier, int fourcc) case I915_FORMAT_MOD_X_TILED: case I915_FORMAT_MOD_Y_TILED: case DRM_FORMAT_MOD_INVALID: - return map->nplanes; + return util_format_get_num_planes(map->pipe_format); default: return 0; } @@ -885,24 +885,14 @@ dri2_create_image_from_fd(__DRIscreen *_screen, const struct dri2_format_mapping *map = dri2_get_mapping_by_fourcc(fourcc); __DRIimage *img = NULL; unsigned err = __DRI_IMAGE_ERROR_SUCCESS; - int i, expected_num_fds; - int num_handles = dri2_get_modifier_num_planes(modifier, fourcc); + int i; + const int expected_num_fds = dri2_get_modifier_num_planes(modifier, fourcc); - if (!map || num_handles == 0) { + if (!map || expected_num_fds == 0) { err = __DRI_IMAGE_ERROR_BAD_MATCH; goto exit; } - switch (fourcc) { - case DRM_FORMAT_YUYV: - case DRM_FORMAT_UYVY: - expected_num_fds = 1; - break; - default: - expected_num_fds = num_handles; - break; - } - if (num_fds != expected_num_fds) { err = __DRI_IMAGE_ERROR_BAD_MATCH; goto exit; |