## Features

Features — Run-time detection of Clutter features

## Synopsis

    enum                ClutterFeatureFlags;
    gboolean            clutter_feature_available           (ClutterFeatureFlags feature);
    ClutterFeatureFlags  clutter_feature_get_all            (void);

## Description

Parts of Clutter depend on the underlying platform, including the capabilities of the backend used and the OpenGL features exposed through the Clutter and COGL API.

It is possible to ask whether Clutter has support for specific features at run-time.

See also `cogl_get_features()` and CoglFeatureFlags

## Details

### enum ClutterFeatureFlags

    typedef enum
    {
      CLUTTER_FEATURE_TEXTURE_NPOT           = (1 << 2),
      CLUTTER_FEATURE_SYNC_TO_VBLANK         = (1 << 3),
      CLUTTER_FEATURE_TEXTURE_YUV            = (1 << 4),
      CLUTTER_FEATURE_TEXTURE_READ_PIXELS    = (1 << 5),
      CLUTTER_FEATURE_STAGE_STATIC           = (1 << 6),
      CLUTTER_FEATURE_STAGE_USER_RESIZE      = (1 << 7),
      CLUTTER_FEATURE_STAGE_CURSOR           = (1 << 8),
      CLUTTER_FEATURE_SHADERS_GLSL           = (1 << 9),
      CLUTTER_FEATURE_OFFSCREEN              = (1 << 10),
      CLUTTER_FEATURE_STAGE_MULTIPLE         = (1 << 11),
      CLUTTER_FEATURE_SWAP_EVENTS            = (1 << 12)
    } ClutterFeatureFlags;

Runtime flags indicating specific features available via Clutter window sysytem and graphics backend.

`CLUTTER_FEATURE_TEXTURE_NPOT` | Set if NPOTS textures supported.
`CLUTTER_FEATURE_SYNC_TO_VBLANK` | Set if vblank syncing supported.
`CLUTTER_FEATURE_TEXTURE_YUV` | Set if YUV based textures supported.
`CLUTTER_FEATURE_TEXTURE_READ_PIXELS` | Set if texture pixels can be read.
`CLUTTER_FEATURE_STAGE_STATIC` | Set if stage size if fixed (i.e framebuffer)
`CLUTTER_FEATURE_STAGE_USER_RESIZE` | Set if stage is able to be user resized.
`CLUTTER_FEATURE_STAGE_CURSOR` | Set if stage has a graphical cursor.
`CLUTTER_FEATURE_SHADERS_GLSL` | Set if the backend supports GLSL shaders.
`CLUTTER_FEATURE_OFFSCREEN` | Set if the backend supports offscreen rendering.
`CLUTTER_FEATURE_STAGE_MULTIPLE` | Set if multiple stages are supported.
`CLUTTER_FEATURE_SWAP_EVENTS` | Set if the GLX_INTEL_swap_event is supported.

Since 0.4

### clutter_feature_available ()

    gboolean            clutter_feature_available           (ClutterFeatureFlags feature);

Checks whether `feature` is available. `feature` can be a logical OR of ClutterFeatureFlags.

`feature` : | a ClutterFeatureFlags
Returns : | `TRUE` if a feature is available

Since 0.1.1

### clutter_feature_get_all ()

    ClutterFeatureFlags  clutter_feature_get_all            (void);

Returns all the supported features.

Returns : | a logical OR of all the supported features.

Since 0.1.1