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