summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanley Chery <nanley.g.chery@intel.com>2020-07-24 18:20:52 -0700
committerEric Engestrom <eric@engestrom.ch>2020-09-02 21:50:44 +0200
commita8be21017051f1b8a5d0c459bda0dd33a7159b2f (patch)
tree367f491935633db3798fefcd567965ee2c53f54e
parent2b58168de03f2944723bc01a024f78ed5f485fe3 (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.json2
-rw-r--r--src/gallium/state_trackers/dri/dri2.c18
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;