blob: 8d8a7f506806f980ba647615be90255c360da33a [file] [log] [blame]
Chad Versace7965fe72015-10-14 13:56:48 -07001Intel's Open Source Vulkan Driver
Jason Ekstrand8f722c22015-12-04 11:08:37 -08002Vulkan API Version: 0.210.1
3SPIR-V Version: 1.0
Chad Versace7965fe72015-10-14 13:56:48 -07004
5Intro
6=====
7The Open Source Technology Center 3D graphics team at Intel has
8been working on a Vulkan implementation based on the Mesa open source
9OpenGL implementation. At this point we're ready to share what we have
10with our Khronos friends, in the hope that an early preview will be
11useful.
12
13When the Vulkan specification goes public, we will continue the work
14in the Mesa public git repository, but in the interim we will share
15our progress on the 'vulkan' branch in the 'mesa' repository in
16Khronos gitlab.
17
18The Mesa project source and our driver implementation is under the MIT
19license [1], but is also covered by the Khronos IP framework as it
20pertains to a specification under construction [2].
21
22We welcome all feedback and contibutions, as long as the contributions
23are MIT licensed and can be open sourced with the driver.
24
25[1] https://opensource.org/licenses/MIT
26[2] https://www.khronos.org/members/ip-framework
27
28
29Maintainers
30===========
31Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
32Jason Ekstrand <jason.ekstrand@intel.com>
33Chad Versace <chad.versace@intel.com>
34
35
36Supported Hardware
37==================
38- Broadwell, main development focus
Jason Ekstrand8f722c22015-12-04 11:08:37 -080039- Ivybridge
40- Sky Lake
41- Haswell
42- Bay Trail
43- Cherryview
44- Broxton
Chad Versace7965fe72015-10-14 13:56:48 -070045
46
47Supported OS Platforms
48======================
49 - Linux, tested on Fedora 22 with kernel >= 4.1
50 - X11 with DRI3
51 - Wayland
52 - Android
53 - TODO
54
55
56Building and Installing
57=======================
58This driver is intended to be used directly from the build tree. Installing the
59driver into a system location is not yet fully supported. If you require support
60for system-wide installation, please contact a maintainer.
61
62Throughout the instructions, MESA_TOP refers to the top of the Mesa repository.
63
64First, install the usual dependencies needed to build Mesa.
65
66 Fedora:
67 $ sudo yum builddep mesa
68 Ubunutu:
69 $ FINISHME
70
71Next, configure and build. The below commands will build Mesa in release mode.
72If you wish to build Mesa in debug mode, add option '--enable-debug' to the
73configure command.
74
75 $ cd $MESA_TOP
76 $ autoreconf -vfi
77 $ ./configure --with-dri-drivers=i965 --with-gallium-drivers=
78 $ make
79
80To use the driver's libvulkan.so directly, without LunarG's loader, you must set
81an environment variable before running your Vulkan application:
82
83 $ export LD_LIBRARY_PATH="$MESA_TOP/lib"
84 $ your-vk-app
85
86Alternatively, to use the driver with LunarG's loader:
87
88 $ export VK_ICD_FILENAMES="$MESA_TOP/src/vulkan/anv_icd.json"
89 $ your-vk-app
90
91
92File Structure and Naming
93=========================
94The core code of Intel's Mesa Vulkan driver lives in src/vulkan. Files prefixed
95with "gen8" support Broadwell; files prefixed with "gen7" support Ivybridge;
96files prefixed with "anv" are common to all hardware generations.
97
98Mesa is an umbrella open source project containing many drivers for multiple
99APIs. The codename for Intel's Mesa Vulkan driver is "Anvil", hence the filename
100prefix "anv".
101
102
103Feature Status
104==============
105The driver is still a work-in-progress. We do our best to keep the below list of
106features up-to-date.
107
108Supported Features:
109 - Index buffers, instanced draw, indirect draw
110 - Nested command buffers
111 - Consumes SPIR-V (no GLSL "backdoor")
Jason Ekstrand8f722c22015-12-04 11:08:37 -0800112 - Fragment, vertex, geometry, and compute shaders
Chad Versace7965fe72015-10-14 13:56:48 -0700113 - Uniform buffers, sampled images, dynamic uniform buffers
Jason Ekstrand8f722c22015-12-04 11:08:37 -0800114 - Shader storage buffers
115 - Push constants (VS and FS only)
Chad Versace7965fe72015-10-14 13:56:48 -0700116 - Color, depth and stencil attachments
117 - 1D, 2D, 3D textures, texture arrays
118 - Memory barrier
119 - Optionally integrates with LunarGs loader
120 - WSI extension for X11
121 - Fences
122 - Most copy/blit commands for color and depth buffers,
123 vkCmdCopyImageToBuffer for stencil buffers
124 - Occlution query and timestamps
Kristian Høgsberg Kristensenec8e2612016-01-09 00:48:41 -0800125 - VkkSemaphore and VkEvent
Chad Versace7965fe72015-10-14 13:56:48 -0700126
127Unsupported Features:
Chad Versace7965fe72015-10-14 13:56:48 -0700128 - Shader specialization
129 - Storage images
Jason Ekstrand8f722c22015-12-04 11:08:37 -0800130 - Tesselation shaders
131 - Push constants in GS and CS (and VS on HSW and prior)
Chad Versace7965fe72015-10-14 13:56:48 -0700132 - Sparse resources
133 - MSAA
Chad Versace7965fe72015-10-14 13:56:48 -0700134 - vkCmdClear commands
135 - Input attachments