## GEM Submission GEM Submission — Helpers for determining submission method |

## Functions

unsigned | gem_submission_method ()
void | gem_submission_print_method ()
bool | gem_has_semaphores ()
bool | gem_has_execlists ()
bool | gem_has_guc_submission ()
void | gem_test_engine ()

## Types and Values

#define | GEM_SUBMISSION_SEMAPHORES
#define | GEM_SUBMISSION_EXECLISTS
#define | GEM_SUBMISSION_GUC

## Description

This helper library contains functions used for getting information on currently used hardware submission method. Different generations of hardware support different submission backends, currently we're distinguishing 3 different methods: legacy ringbuffer submission, execlists, GuC submission. For legacy ringbuffer submission, there's also a variation where we're using semaphores for synchronization between engines.

## Functions

### gem_submission_method ()

    unsigned
    gem_submission_method (int fd);

#### Parameters

fd | open i915 drm file descriptor |

#### Returns

Submission method bitmap.

### gem_submission_print_method ()

    void
    gem_submission_print_method (int fd);

Helper for pretty-printing currently used submission method

#### Parameters

fd | open i915 drm file descriptor |

### gem_has_semaphores ()

    bool
    gem_has_semaphores (int fd);

Feature test macro to query whether the driver is using semaphores for synchronization between engines.

#### Parameters

fd | open i915 drm file descriptor |

### gem_has_execlists ()

    bool
    gem_has_execlists (int fd);

Feature test macro to query whether the driver is using execlists as a hardware submission method.

#### Parameters

fd | open i915 drm file descriptor |

### gem_has_guc_submission ()

    bool
    gem_has_guc_submission (int fd);

Feature test macro to query whether the driver is using the GuC as a hardware submission method.

#### Parameters

fd | open i915 drm file descriptor |

### gem_test_engine ()

    void
    gem_test_engine (int fd,
                     unsigned int engine);

Execute a nop batch on the specified, or -1 for all, and check it executes.

#### Parameters

i915 | open i915 drm file descriptor |
engine | the engine (I915_EXEC_RING id) to exercise |

## Types and Values

### GEM_SUBMISSION_SEMAPHORES

    #define GEM_SUBMISSION_SEMAPHORES (1 << 0)

### GEM_SUBMISSION_EXECLISTS

    #define GEM_SUBMISSION_EXECLISTS (1 << 1)

### GEM_SUBMISSION_GUC

    #define GEM_SUBMISSION_GUC		(1 << 2)