summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Stone <[email protected]>2018-02-06 17:42:03 +0000
committerDaniel Stone <[email protected]>2018-02-09 16:17:16 +0000
commit314714ac5311c39785d16c0f03484dbaf482c52b (patch)
treecd52b8b949017c3e0b7a67cc356ce19d7b85852a /src
parent2ed344645d65f379f819ffff6596b1b77534e28c (diff)
gbm/dri: Expose visuals table through gbm_dri_device
Signed-off-by: Daniel Stone <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Tested-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gbm/backends/dri/gbm_dri.c21
-rw-r--r--src/gbm/backends/dri/gbm_driint.h9
2 files changed, 19 insertions, 11 deletions
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 7e2423e935f..0d088bd62b6 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -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);
diff --git a/src/gbm/backends/dri/gbm_driint.h b/src/gbm/backends/dri/gbm_driint.h
index db9038a623a..84a98533c79 100644
--- a/src/gbm/backends/dri/gbm_driint.h
+++ b/src/gbm/backends/dri/gbm_driint.h
@@ -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 {