# Introduction to Vulkan hardware profiles

> Learn about Vulkan hardware profiles and how Unity interacts with them.

Use Vulkan hardware profiles to control hardware capabilities and driver workarounds directly from C#.

Vulkan hardware profiles let you control how your app uses Vulkan across classes of Android devices:

* Configure used Graphics API across targeted devices.
* Configure driver workarounds.
* Target profiles to exact device types.
* Support high-end devices.

> **Note:**
>
> You can’t use Vulkan hardware profiles and [Vulkan Device Filtering Assets](/engine/6000.7/manual/platform-specific/android/developing/graphics/vulkanapi-graphics-jobs-configuration.md) at the same time. If both are present, Vulkan hardware profiles override the filtering assets. Use Vulkan hardware profiles as the primary method for device filtering.

## Unity's default behavior without profiles

Without Vulkan hardware profiles, the Unity Engine auto selects between OpenGL ES and Vulkan backends with no transparency. Also, Unity often prioritizes compatibility with entry-level hardware so that applications function across all devices.

These choices can limit your ability to target high-end devices. Profiles give you explicit, testable rules per device class, so you can target high‑end hardware.

## Hardware profile configurations

The following topics describe the main configurations you use to define hardware profiles and fine-tune behavior for specific devices:

| **Data model**                                                                                                                       | **Description**                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
| **[Workarounds](/engine/6000.7/manual/platform-specific/android/developing/graphics/vulkan-hardware-profiles/workarounds.md)**       | Control whether devices use specific workarounds for known bugs and issues.    |
| **[Device filters](/engine/6000.7/manual/platform-specific/android/developing/graphics/vulkan-hardware-profiles/device-filters.md)** | Target individual devices or groups of devices that match criteria you define. |
| **[Graphics APIs](/engine/6000.7/manual/platform-specific/android/developing/graphics/vulkan-hardware-profiles/graphics-api.md)**    | Choose which graphics API your application uses on matching devices.           |

## Build or export your project with hardware profiles

The following information explains how Unity handles hardware profiles when you build or export your Unity project.

### Use Build and Run

When you use **Build and Run** (menu: **File** > **Build And Run**), Unity translates the profile into a data file and appends to the Gradle project. Unity uses an incremental build pipeline so changes don't invoke a total rebuild- it only affects modified data files.

### Use Export Project

When you use [Export Project](/engine/6000.7/manual/platform-specific/android/building-and-delivering/export-process.md), Unity appends the profile data file into the Gradle project in the following directory:

`<gradle-project>/unityLibrary/src/main/assets/bin/Data/Profile.json`

If you modify this raw data file, it doesn’t invoke a total rebuild. If you rebuild the app after modifying the profile, the rebuild only adds a new file to the `.apk`.

## Additional resources

* [Vulkan hardware profiles](/engine/6000.7/manual/platform-specific/android/developing/graphics/vulkan-hardware-profiles.md)
* [Enable Vulkan hardware profiles in your project](/engine/6000.7/manual/platform-specific/android/developing/graphics/vulkan-hardware-profiles/instructions.md)
