gbm/dri: Expose visuals table through gbm_dri_device
Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Tested-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -543,11 +543,7 @@ dri_screen_create_sw(struct gbm_dri_device *dri)
|
||||
return dri_screen_create_swrast(dri);
|
||||
}
|
||||
|
||||
static const struct {
|
||||
uint32_t gbm_format;
|
||||
int dri_image_format;
|
||||
uint32_t rgba_masks[4];
|
||||
} gbm_to_dri_image_formats[] = {
|
||||
static const struct gbm_dri_visual gbm_dri_visuals_table[] = {
|
||||
{
|
||||
GBM_FORMAT_R8, __DRI_IMAGE_FORMAT_R8,
|
||||
{ 0x000000ff, 0x00000000, 0x00000000, 0x00000000 },
|
||||
@@ -608,9 +604,9 @@ gbm_format_to_dri_format(uint32_t gbm_format)
|
||||
int i;
|
||||
|
||||
gbm_format = gbm_format_canonicalize(gbm_format);
|
||||
for (i = 0; i < ARRAY_SIZE(gbm_to_dri_image_formats); i++) {
|
||||
if (gbm_to_dri_image_formats[i].gbm_format == gbm_format)
|
||||
return gbm_to_dri_image_formats[i].dri_image_format;
|
||||
for (i = 0; i < ARRAY_SIZE(gbm_dri_visuals_table); i++) {
|
||||
if (gbm_dri_visuals_table[i].gbm_format == gbm_format)
|
||||
return gbm_dri_visuals_table[i].dri_image_format;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -621,9 +617,9 @@ gbm_dri_to_gbm_format(int dri_format)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(gbm_to_dri_image_formats); i++) {
|
||||
if (gbm_to_dri_image_formats[i].dri_image_format == dri_format)
|
||||
return gbm_to_dri_image_formats[i].gbm_format;
|
||||
for (i = 0; i < ARRAY_SIZE(gbm_dri_visuals_table); i++) {
|
||||
if (gbm_dri_visuals_table[i].dri_image_format == dri_format)
|
||||
return gbm_dri_visuals_table[i].gbm_format;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1418,6 +1414,9 @@ dri_device_create(int fd)
|
||||
|
||||
dri->base.name = "drm";
|
||||
|
||||
dri->visual_table = gbm_dri_visuals_table;
|
||||
dri->num_visuals = ARRAY_SIZE(gbm_dri_visuals_table);
|
||||
|
||||
mtx_init(&dri->mutex, mtx_plain);
|
||||
|
||||
force_sw = env_var_as_boolean("GBM_ALWAYS_SOFTWARE", false);
|
||||
|
||||
@@ -40,6 +40,12 @@
|
||||
struct gbm_dri_surface;
|
||||
struct gbm_dri_bo;
|
||||
|
||||
struct gbm_dri_visual {
|
||||
uint32_t gbm_format;
|
||||
int dri_image_format;
|
||||
uint32_t rgba_masks[4];
|
||||
};
|
||||
|
||||
struct gbm_dri_device {
|
||||
struct gbm_device base;
|
||||
|
||||
@@ -97,6 +103,9 @@ struct gbm_dri_device {
|
||||
void *loaderPrivate);
|
||||
|
||||
struct wl_drm *wl_drm;
|
||||
|
||||
const struct gbm_dri_visual *visual_table;
|
||||
int num_visuals;
|
||||
};
|
||||
|
||||
struct gbm_dri_bo {
|
||||
|
||||
Reference in New Issue
Block a user