Exemplo n.º 1
0
MirPixelFormat MirDisplayConnection::default_pixel_format() const {
  MirPixelFormat format;
  unsigned int nformats;
  mir_connection_get_available_surface_formats(connection_, &format, 1,
                                               &nformats);
  return format;
}
Exemplo n.º 2
0
static void
get_pixel_formats (MirConnection *connection,
                   MirPixelFormat *sw_pixel_format,
                   MirPixelFormat *hw_pixel_format)
{
  MirPixelFormat formats[mir_pixel_formats];
  unsigned int n_formats, i;

  mir_connection_get_available_surface_formats (connection, formats,
                                                mir_pixel_formats, &n_formats);

  if (sw_pixel_format)
    {
      *sw_pixel_format = mir_pixel_format_invalid;

      for (i = 0; i < n_formats && *sw_pixel_format == mir_pixel_format_invalid; i++)
        {
          switch (formats[i])
            {
            case mir_pixel_format_abgr_8888:
            case mir_pixel_format_xbgr_8888:
            case mir_pixel_format_argb_8888:
            case mir_pixel_format_xrgb_8888:
            case mir_pixel_format_rgb_565:
              *sw_pixel_format = formats[i];
              break;
            default:
              break;
            }
        }
    }

  if (hw_pixel_format)
    {
      *hw_pixel_format = mir_pixel_format_invalid;

      for (i = 0; i < n_formats && *hw_pixel_format == mir_pixel_format_invalid; i++)
        {
          switch (formats[i])
            {
            case mir_pixel_format_abgr_8888:
            case mir_pixel_format_xbgr_8888:
            case mir_pixel_format_argb_8888:
            case mir_pixel_format_xrgb_8888:
            case mir_pixel_format_rgb_565:
              *hw_pixel_format = formats[i];
              break;
            default:
              break;
            }
        }
    }
}
Exemplo n.º 3
0
/* FIXME Soon to be changed upstream mir! So we can use an egl config to figure out
         the best pixel format!
*/
static MirPixelFormat findValidPixelFormat(void)
{
    unsigned int i, validFormats, mirPixelFormats = 32;
    MirPixelFormat formats[mir_pixel_formats];

    mir_connection_get_available_surface_formats(_glfw.mir.connection, formats,
                                                 mirPixelFormats, &validFormats);

    for (i = 0;  i < validFormats;  i++)
    {
        if (formats[i] == mir_pixel_format_abgr_8888 ||
            formats[i] == mir_pixel_format_xbgr_8888 ||
            formats[i] == mir_pixel_format_argb_8888 ||
            formats[i] == mir_pixel_format_xrgb_8888)
        {
            return formats[i];
        }
    }

    return mir_pixel_format_invalid;
}
Exemplo n.º 4
0
int Mir_VideoInit(_THIS, SDL_PixelFormat *vformat)
{
    this->hidden->connection = mir_connect_sync(NULL, __PRETTY_FUNCTION__);

    if (!mir_connection_is_valid(this->hidden->connection))
    {
        SDL_SetError("Failed to connect to the Mir Server: %s",
                     mir_connection_get_error_message(this->hidden->connection));
        mir_connection_release(this->hidden->connection);
        return -1;
    }

    MirPixelFormat formats[mir_pixel_formats];
    Uint32 n_formats;

    mir_connection_get_available_surface_formats (this->hidden->connection, formats,
                                                  mir_pixel_formats, &n_formats);

    if (n_formats == 0 || formats[0] == mir_pixel_format_invalid)
    {
        SDL_SetError("No valid pixel formats found");
        mir_connection_release(this->hidden->connection);
        return -1;
    }

    this->hidden->pixel_format = formats[0];
    vformat->BitsPerPixel = MIR_BYTES_PER_PIXEL(this->hidden->pixel_format) * 8;

    Mir_InitQueue(this->hidden->buffer_queue);
    Mir_ModeListUpdate(this);
    mir_connection_set_display_config_change_callback(this->hidden->connection,
                                                      Mir_DisplayConfigChanged, this);

    this->info.wm_available = 1;

    return 0;
}