# SyncStrategy

Artifact: [androidx.graphics:graphics-core](https://developer.android.com/jetpack/androidx/releases/graphics) [View Source](https://cs.android.com/search?q=file:androidx/graphics/opengl/FrameBufferRenderer.kt+class:androidx.graphics.opengl.SyncStrategy) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

*** ** * ** ***


```
public interface SyncStrategy
```

<br />

Known direct subclasses [FrontBufferSyncStrategy](https://developer.android.com/reference/androidx/graphics/lowlatency/FrontBufferSyncStrategy)

|---|---|
| `https://developer.android.com/reference/androidx/graphics/lowlatency/FrontBufferSyncStrategy` | `https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy` implementation that optimizes for front buffered rendering use cases. |

*** ** * ** ***

A strategy class for deciding how to utilize `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` within `https://developer.android.com/reference/androidx/graphics/opengl/FrameBufferRenderer.RenderCallback`. SyncStrategy provides default strategies for usage:

`https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy#ALWAYS()` will always create a `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` to pass into the render callbacks for `https://developer.android.com/reference/androidx/graphics/opengl/FrameBufferRenderer`

## Summary

| ### Public fields |
|---|---|
| `default static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy` | `https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy#ALWAYS()` `https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy` that will always create a `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` object |

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` | `https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy#createSyncFence(androidx.graphics.opengl.egl.EGLSpec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/graphics/opengl/egl/EGLSpec eglSpec)` Conditionally generates a `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` based upon implementation. |

## Public fields

### ALWAYS

```
default static final @NonNull SyncStrategy ALWAYS
```

`https://developer.android.com/reference/androidx/graphics/opengl/SyncStrategy` that will always create a `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` object

## Public methods

### createSyncFence

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

```
abstract SyncFenceCompat createSyncFence(@NonNull EGLSpec eglSpec)
```

Conditionally generates a `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` based upon implementation.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/graphics/opengl/egl/EGLSpec eglSpec` | an `https://developer.android.com/reference/androidx/graphics/opengl/egl/EGLSpec` object to dictate the version of EGL and make EGL calls. |