mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-22 05:20:37 +02:00
dri: Convert DRI_IMAGE_FORMAT to pipe_format
No functional change. Signed-off-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36081>
This commit is contained in:
parent
3fcf63f364
commit
b6332eb43b
3 changed files with 50 additions and 53 deletions
|
|
@ -1386,7 +1386,7 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int fourcc,
|
|||
{
|
||||
struct loader_dri3_buffer *buffer;
|
||||
struct dri_image *pixmap_buffer = NULL, *linear_buffer_display_gpu = NULL;
|
||||
int format = loader_fourcc_to_image_format(fourcc);
|
||||
enum pipe_format format = loader_fourcc_to_pipe_format(fourcc);
|
||||
xcb_pixmap_t pixmap;
|
||||
xcb_sync_fence_t sync_fence;
|
||||
struct xshmfence *shm_fence;
|
||||
|
|
@ -2166,7 +2166,7 @@ loader_dri3_get_buffers(struct dri_drawable *driDrawable,
|
|||
{
|
||||
struct loader_dri3_drawable *draw = loaderPrivate;
|
||||
struct loader_dri3_buffer *front, *back;
|
||||
int fourcc = loader_image_format_to_fourcc(format);
|
||||
int fourcc = loader_pipe_format_to_fourcc(format);
|
||||
int buf_id;
|
||||
|
||||
buffers->image_mask = 0;
|
||||
|
|
|
|||
|
|
@ -31,61 +31,58 @@
|
|||
#include "util/driconf.h"
|
||||
|
||||
|
||||
/* the DRIimage createImage function takes __DRI_IMAGE_FORMAT codes, while
|
||||
* the createImageFromDmaBufs call takes DRM_FORMAT codes. To avoid
|
||||
* complete confusion, just deal in __DRI_IMAGE_FORMAT codes for now and
|
||||
* translate to DRM_FORMAT codes in the call to createImageFromDmaBufs
|
||||
*/
|
||||
int
|
||||
loader_fourcc_to_image_format(int fourcc)
|
||||
/* Creating a DRIImage accepts a pipe_format, whilst DRM-based platforms
|
||||
* like GBM, Wayland, and X11, all deal strictly in DRM FourCCs. Map
|
||||
* between the two worlds. */
|
||||
enum pipe_format
|
||||
loader_fourcc_to_pipe_format(uint32_t fourcc)
|
||||
{
|
||||
/* Convert from DRM_FORMAT to __DRI_IMAGE_FORMAT (sigh) */
|
||||
switch (fourcc) {
|
||||
case __DRI_IMAGE_FOURCC_SARGB8888: return __DRI_IMAGE_FORMAT_SARGB8;
|
||||
case __DRI_IMAGE_FOURCC_SABGR8888: return __DRI_IMAGE_FORMAT_SABGR8;
|
||||
case __DRI_IMAGE_FOURCC_SXRGB8888: return __DRI_IMAGE_FORMAT_SXRGB8;
|
||||
case DRM_FORMAT_RGB565: return __DRI_IMAGE_FORMAT_RGB565;
|
||||
case DRM_FORMAT_ARGB1555: return __DRI_IMAGE_FORMAT_ARGB1555;
|
||||
case DRM_FORMAT_XRGB8888: return __DRI_IMAGE_FORMAT_XRGB8888;
|
||||
case DRM_FORMAT_ARGB8888: return __DRI_IMAGE_FORMAT_ARGB8888;
|
||||
case DRM_FORMAT_ABGR8888: return __DRI_IMAGE_FORMAT_ABGR8888;
|
||||
case DRM_FORMAT_XBGR8888: return __DRI_IMAGE_FORMAT_XBGR8888;
|
||||
case DRM_FORMAT_XRGB2101010: return __DRI_IMAGE_FORMAT_XRGB2101010;
|
||||
case DRM_FORMAT_ARGB2101010: return __DRI_IMAGE_FORMAT_ARGB2101010;
|
||||
case DRM_FORMAT_XBGR2101010: return __DRI_IMAGE_FORMAT_XBGR2101010;
|
||||
case DRM_FORMAT_ABGR2101010: return __DRI_IMAGE_FORMAT_ABGR2101010;
|
||||
case DRM_FORMAT_ABGR16161616: return __DRI_IMAGE_FORMAT_ABGR16161616;
|
||||
case DRM_FORMAT_XBGR16161616: return __DRI_IMAGE_FORMAT_XBGR16161616;
|
||||
case DRM_FORMAT_XBGR16161616F: return __DRI_IMAGE_FORMAT_XBGR16161616F;
|
||||
case DRM_FORMAT_ABGR16161616F: return __DRI_IMAGE_FORMAT_ABGR16161616F;
|
||||
case __DRI_IMAGE_FOURCC_SARGB8888: return PIPE_FORMAT_B8G8R8A8_SRGB;
|
||||
case __DRI_IMAGE_FOURCC_SABGR8888: return PIPE_FORMAT_R8G8B8A8_SRGB;
|
||||
case __DRI_IMAGE_FOURCC_SXRGB8888: return PIPE_FORMAT_B8G8R8X8_SRGB;
|
||||
case DRM_FORMAT_RGB565: return PIPE_FORMAT_B5G6R5_UNORM;
|
||||
case DRM_FORMAT_ARGB1555: return PIPE_FORMAT_B5G5R5A1_UNORM;
|
||||
case DRM_FORMAT_XRGB8888: return PIPE_FORMAT_B8G8R8X8_UNORM;
|
||||
case DRM_FORMAT_ARGB8888: return PIPE_FORMAT_B8G8R8A8_UNORM;
|
||||
case DRM_FORMAT_ABGR8888: return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
case DRM_FORMAT_XBGR8888: return PIPE_FORMAT_R8G8B8X8_UNORM;
|
||||
case DRM_FORMAT_XRGB2101010: return PIPE_FORMAT_B10G10R10X2_UNORM;
|
||||
case DRM_FORMAT_ARGB2101010: return PIPE_FORMAT_B10G10R10A2_UNORM;
|
||||
case DRM_FORMAT_XBGR2101010: return PIPE_FORMAT_R10G10B10X2_UNORM;
|
||||
case DRM_FORMAT_ABGR2101010: return PIPE_FORMAT_R10G10B10A2_UNORM;
|
||||
case DRM_FORMAT_ABGR16161616: return PIPE_FORMAT_R16G16B16A16_UNORM;
|
||||
case DRM_FORMAT_XBGR16161616: return PIPE_FORMAT_R16G16B16X16_UNORM;
|
||||
case DRM_FORMAT_XBGR16161616F: return PIPE_FORMAT_R16G16B16X16_FLOAT;
|
||||
case DRM_FORMAT_ABGR16161616F: return PIPE_FORMAT_R16G16B16A16_FLOAT;
|
||||
default: return PIPE_FORMAT_NONE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
loader_image_format_to_fourcc(int format)
|
||||
uint32_t
|
||||
loader_pipe_format_to_fourcc(enum pipe_format pipe)
|
||||
{
|
||||
/* Convert from __DRI_IMAGE_FORMAT to DRM_FORMAT (sigh) */
|
||||
switch (format) {
|
||||
case __DRI_IMAGE_FORMAT_SARGB8: return __DRI_IMAGE_FOURCC_SARGB8888;
|
||||
case __DRI_IMAGE_FORMAT_SABGR8: return __DRI_IMAGE_FOURCC_SABGR8888;
|
||||
case __DRI_IMAGE_FORMAT_SXRGB8: return __DRI_IMAGE_FOURCC_SXRGB8888;
|
||||
case __DRI_IMAGE_FORMAT_RGB565: return DRM_FORMAT_RGB565;
|
||||
case __DRI_IMAGE_FORMAT_XRGB8888: return DRM_FORMAT_XRGB8888;
|
||||
case __DRI_IMAGE_FORMAT_ARGB8888: return DRM_FORMAT_ARGB8888;
|
||||
case __DRI_IMAGE_FORMAT_ABGR8888: return DRM_FORMAT_ABGR8888;
|
||||
case __DRI_IMAGE_FORMAT_XBGR8888: return DRM_FORMAT_XBGR8888;
|
||||
case __DRI_IMAGE_FORMAT_XRGB2101010: return DRM_FORMAT_XRGB2101010;
|
||||
case __DRI_IMAGE_FORMAT_ARGB2101010: return DRM_FORMAT_ARGB2101010;
|
||||
case __DRI_IMAGE_FORMAT_XBGR2101010: return DRM_FORMAT_XBGR2101010;
|
||||
case __DRI_IMAGE_FORMAT_ABGR2101010: return DRM_FORMAT_ABGR2101010;
|
||||
case __DRI_IMAGE_FORMAT_ABGR16161616: return DRM_FORMAT_ABGR16161616;
|
||||
case __DRI_IMAGE_FORMAT_XBGR16161616: return DRM_FORMAT_XBGR16161616;
|
||||
case __DRI_IMAGE_FORMAT_XBGR16161616F: return DRM_FORMAT_XBGR16161616F;
|
||||
case __DRI_IMAGE_FORMAT_ABGR16161616F: return DRM_FORMAT_ABGR16161616F;
|
||||
case __DRI_IMAGE_FORMAT_ARGB1555: return DRM_FORMAT_ARGB1555;
|
||||
switch (pipe) {
|
||||
case PIPE_FORMAT_B8G8R8A8_SRGB: return __DRI_IMAGE_FOURCC_SARGB8888;
|
||||
case PIPE_FORMAT_R8G8B8A8_SRGB: return __DRI_IMAGE_FOURCC_SABGR8888;
|
||||
case PIPE_FORMAT_B8G8R8X8_SRGB: return __DRI_IMAGE_FOURCC_SXRGB8888;
|
||||
case PIPE_FORMAT_B5G6R5_UNORM: return DRM_FORMAT_RGB565;
|
||||
case PIPE_FORMAT_B5G5R5A1_UNORM: return DRM_FORMAT_ARGB1555;
|
||||
case PIPE_FORMAT_B8G8R8X8_UNORM: return DRM_FORMAT_XRGB8888;
|
||||
case PIPE_FORMAT_B8G8R8A8_UNORM: return DRM_FORMAT_ARGB8888;
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM: return DRM_FORMAT_ABGR8888;
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM: return DRM_FORMAT_XBGR8888;
|
||||
case PIPE_FORMAT_B10G10R10X2_UNORM: return DRM_FORMAT_XRGB2101010;
|
||||
case PIPE_FORMAT_B10G10R10A2_UNORM: return DRM_FORMAT_ARGB2101010;
|
||||
case PIPE_FORMAT_R10G10B10X2_UNORM: return DRM_FORMAT_XBGR2101010;
|
||||
case PIPE_FORMAT_R10G10B10A2_UNORM: return DRM_FORMAT_ABGR2101010;
|
||||
case PIPE_FORMAT_R16G16B16A16_UNORM: return DRM_FORMAT_ABGR16161616;
|
||||
case PIPE_FORMAT_R16G16B16X16_UNORM: return DRM_FORMAT_XBGR16161616;
|
||||
case PIPE_FORMAT_R16G16B16X16_FLOAT: return DRM_FORMAT_XBGR16161616F;
|
||||
case PIPE_FORMAT_R16G16B16A16_FLOAT: return DRM_FORMAT_ABGR16161616F;
|
||||
default: return DRM_FORMAT_INVALID;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_X11_PLATFORM
|
||||
|
|
|
|||
|
|
@ -104,11 +104,11 @@ struct loader_screen_resources {
|
|||
#define __DRI_IMAGE_FORMAT_ABGR1555 PIPE_FORMAT_R5G5B5A1_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_XBGR1555 PIPE_FORMAT_R5G5B5X1_UNORM
|
||||
|
||||
int
|
||||
loader_image_format_to_fourcc(int format);
|
||||
uint32_t
|
||||
loader_pipe_format_to_fourcc(enum pipe_format pipe);
|
||||
|
||||
int
|
||||
loader_fourcc_to_image_format(int format);
|
||||
enum pipe_format
|
||||
loader_fourcc_to_pipe_format(uint32_t fourcc);
|
||||
|
||||
#ifdef HAVE_X11_PLATFORM
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue