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