i965/screen: Refactor query_dma_buf_formats
This reworks it to work like query_dma_buf_modifiers and, in particular, makes it more flexible so that we can disallow a non-static set of formats. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
@@ -1266,22 +1266,23 @@ static GLboolean
|
|||||||
intel_query_dma_buf_formats(__DRIscreen *screen, int max,
|
intel_query_dma_buf_formats(__DRIscreen *screen, int max,
|
||||||
int *formats, int *count)
|
int *formats, int *count)
|
||||||
{
|
{
|
||||||
int i, j = 0;
|
int num_formats = 0, i;
|
||||||
|
|
||||||
if (max == 0) {
|
for (i = 0; i < ARRAY_SIZE(intel_image_formats); i++) {
|
||||||
/* Note, sRGB formats not included. */
|
if (intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
|
||||||
*count = ARRAY_SIZE(intel_image_formats) - 2;
|
intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SABGR8888)
|
||||||
return true;
|
continue;
|
||||||
|
|
||||||
|
num_formats++;
|
||||||
|
if (max == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
formats[num_formats - 1] = intel_image_formats[i].fourcc;
|
||||||
|
if (num_formats >= max)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < (ARRAY_SIZE(intel_image_formats)) && j < max; i++) {
|
*count = num_formats;
|
||||||
if (intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
|
|
||||||
intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SABGR8888)
|
|
||||||
continue;
|
|
||||||
formats[j++] = intel_image_formats[i].fourcc;
|
|
||||||
}
|
|
||||||
|
|
||||||
*count = j;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user