瀏覽代碼

st/egl/wayland: Deal with wayland visual changes

Since wayland 4bde293ff8 we cant
lookup visuals, as we dont receive the visual token events.

The format for pixmap-images thus has to default to argb for now.
tags/mesa-7.11-rc1
Benjamin Franzke 14 年之前
父節點
當前提交
ca79036fe8
共有 1 個文件被更改,包括 21 次插入17 次删除
  1. 21
    17
      src/gallium/state_trackers/egl/wayland/native_wayland.c

+ 21
- 17
src/gallium/state_trackers/egl/wayland/native_wayland.c 查看文件

@@ -61,31 +61,35 @@ wayland_display_get_configs (struct native_display *ndpy, int *num_configs)
{
struct wayland_display *display = wayland_display(ndpy);
const struct native_config **configs;
int i;

if (!display->config) {
struct native_config *nconf;
enum pipe_format format;
display->config = CALLOC(1, sizeof(*display->config));
display->config = CALLOC(2, sizeof(*display->config));
if (!display->config)
return NULL;
nconf = &display->config->base;

nconf->buffer_mask =
(1 << NATIVE_ATTACHMENT_FRONT_LEFT) |
(1 << NATIVE_ATTACHMENT_BACK_LEFT);

format = PIPE_FORMAT_B8G8R8A8_UNORM;
for (i = 0; i < 2; ++i) {
nconf = &display->config[i].base;
nconf->buffer_mask =
(1 << NATIVE_ATTACHMENT_FRONT_LEFT) |
(1 << NATIVE_ATTACHMENT_BACK_LEFT);
nconf->window_bit = TRUE;
nconf->pixmap_bit = TRUE;
}

nconf->color_format = format;
nconf->window_bit = TRUE;
nconf->pixmap_bit = TRUE;
display->config[0].base.color_format = PIPE_FORMAT_B8G8R8A8_UNORM;
display->config[1].base.color_format = PIPE_FORMAT_B8G8R8X8_UNORM;
}

configs = MALLOC(sizeof(*configs));
configs = MALLOC(2 * sizeof(*configs));
if (configs) {
configs[0] = &display->config->base;
configs[0] = &display->config[0].base;
configs[1] = &display->config[1].base;
if (num_configs)
*num_configs = 1;
*num_configs = 2;
}

return configs;
@@ -368,9 +372,9 @@ wayland_create_pixmap_surface(struct native_display *ndpy,
surface->type = WL_PIXMAP_SURFACE;
surface->pix = egl_pixmap;

if (surface->pix->visual == wl_display_get_rgb_visual(display->dpy))
surface->color_format = PIPE_FORMAT_B8G8R8X8_UNORM;
else
if (nconf)
surface->color_format = nconf->color_format;
else /* FIXME: derive format from wl_visual */
surface->color_format = PIPE_FORMAT_B8G8R8A8_UNORM;

surface->attachment_mask = (1 << NATIVE_ATTACHMENT_FRONT_LEFT);

Loading…
取消
儲存