Jason Ekstrand
a28f8ad9f1
nir/spirv: Use the correct length for copying string literals
2015-05-16 11:16:34 -07:00
Jason Ekstrand
7b9c29e440
nir/spirv: Make vtn_ssa_value handle constants as well as ssa values
2015-05-16 11:16:33 -07:00
Jason Ekstrand
b0d1854efc
nir/spirv: Add initial support for GLSL 4.50 builtins
2015-05-16 11:16:33 -07:00
Jason Ekstrand
1da9876486
nir/spirv: Split the core datastructures into a header file
2015-05-16 11:16:33 -07:00
Jason Ekstrand
98d78856f6
nir/spirv: Use the builder for all instructions
...
We don't actually use it to create all the instructions but we do use it
for insertion always. This should make things far more consistent for
implementing extended instructions.
2015-05-16 11:16:33 -07:00
Jason Ekstrand
ff828749ea
nir/spirv: Add support for a bunch of ALU operations
2015-05-16 11:16:33 -07:00
Jason Ekstrand
d2a7972557
nir/spirv: Add support for indirect array accesses
2015-05-16 11:16:33 -07:00
Jason Ekstrand
683c99908a
nir/spirv: Explicitly type constants and SSA values
2015-05-16 11:16:33 -07:00
Jason Ekstrand
c5650148a9
nir/spirv: Handle OpBranchConditional
...
We do control-flow handling as a two-step process. The first step is to
walk the instructions list and record various information about blocks and
functions. This is where the acutal nir_function_overload objects get
created. We also record the start/stop instruction for each block. Then
a second pass walks over each of the functions and over the blocks in each
function in a way that's NIR-friendly and actually parses the instructions.
2015-05-16 11:16:33 -07:00
Jason Ekstrand
ebc152e4c9
nir/spirv: Add a helper for getting a value as an SSA value
2015-05-16 11:16:33 -07:00
Jason Ekstrand
f23afc549b
nir/spirv: Split instruction handling into preamble and body sections
2015-05-16 11:16:33 -07:00
Jason Ekstrand
ae6d32c635
nir/spirv: Implement load/store instructiosn
2015-05-16 11:16:33 -07:00
Jason Ekstrand
88f6fbc897
nir: Add a helper for getting the tail of a deref chain
2015-05-16 11:16:33 -07:00
Jason Ekstrand
06acd174f3
nir/spirv: Actaully add variables to the funciton or shader
2015-05-16 11:16:33 -07:00
Jason Ekstrand
5045efa4aa
nir/spirv: Add a vtn_untyped_value helper
2015-05-16 11:16:33 -07:00
Jason Ekstrand
01f3aa9c51
nir/spirv: Use vtn_value in the types code and fix a off-by-one error
2015-05-16 11:16:33 -07:00
Jason Ekstrand
6ff0830d64
nir/types: Add an is_vector_or_scalar helper
2015-05-16 11:16:33 -07:00
Jason Ekstrand
5acd472271
nir/spirv: Add support for deref chains
2015-05-16 11:16:33 -07:00
Jason Ekstrand
7182597e50
nir/types: Add a scalar type constructor
2015-05-16 11:16:32 -07:00
Jason Ekstrand
eccd798cc2
nir/spirv: Add support for OpLabel
2015-05-16 11:16:32 -07:00
Jason Ekstrand
a6cb9d9222
nir/spirv: Add support for declaring functions
2015-05-16 11:16:32 -07:00
Jason Ekstrand
8ee23dab04
nir/types: Add accessors for function parameter/return types
2015-05-16 11:16:32 -07:00
Jason Ekstrand
707b706d18
nir/spirv: Add support for declaring variables
...
Deref chains and variable load/store operations are still missing.
2015-05-16 11:16:32 -07:00
Jason Ekstrand
b2db85d8e4
nir/spirv: Add support for constants
2015-05-16 11:16:32 -07:00
Jason Ekstrand
3f83579664
nir/spirv: Add basic support for types
2015-05-16 11:16:32 -07:00
Jason Ekstrand
e9d3b1e694
nir/types: Add more helpers for creating types
2015-05-16 11:16:32 -07:00
Jason Ekstrand
fe550f0738
glsl/types: Expose the function_param and struct_field structs to C
...
Previously, they were hidden behind a #ifdef __cplusplus so C wouldn't find
them. This commit simpliy moves the ifdef.
2015-05-16 11:16:32 -07:00
Jason Ekstrand
053778c493
glsl/types: Add support for function types
2015-05-16 11:16:32 -07:00
Jason Ekstrand
7b63b3de93
glsl: Add GLSL_TYPE_FUNCTION to the base types enums
2015-05-16 11:16:32 -07:00
Jason Ekstrand
2b570a49a9
nir/spirv: Rework the way values are added
...
Instead of having functions to add values and set various things, we just
have a function that does a few asserts and then returns the value. The
caller is then responsible for setting the various fields.
2015-05-16 11:16:32 -07:00
Jason Ekstrand
f9a31ba044
nir/spirv: Add stub support for extension instructions
2015-05-16 11:16:32 -07:00
Jason Ekstrand
4763a13b07
REVERT: Add a simple helper program for testing SPIR-V -> NIR translation
2015-05-16 11:16:32 -07:00
Jason Ekstrand
cae8db6b7e
glsl/compiler: Move the error_no_memory stub to standalone_scaffolding.cpp
2015-05-16 11:16:32 -07:00
Jason Ekstrand
98452cd8ae
nir: Add the start of a SPIR-V to NIR translator
...
At the moment, it can handle the very basics of strings and can ignore
debug instructions. It also has basic support for decorations.
2015-05-16 11:16:32 -07:00
Jason Ekstrand
573ca4a4a7
nir: Import the revision 30 SPIR-V header from Khronos
2015-05-16 11:16:31 -07:00
Jason Ekstrand
057bef8a84
vk/device: Use bias rather than layers for computing binding table size
...
Because we statically use the first 8 binding table entries for render
targets, we need to create a table of size 8 + surfaces.
2015-05-16 10:42:53 -07:00
Jason Ekstrand
22e61c9da4
vk/meta: Make clear a no-op if no layers need clearing
...
Among other things, this prevents recursive meta.
2015-05-16 10:30:05 -07:00
Jason Ekstrand
120394ac92
vk/meta: Save and restore the old bindings pointer
...
If we don't do this then recursive meta is completely broken. What happens
is that the outer meta call may change the bindings pointer and the inner
meta call will change it again and, when it exits set it back to the
default. However, the outer meta call may be relying on it being left
alone so it uses the non-meta descriptor sets instead of its own.
2015-05-16 10:28:04 -07:00
Jason Ekstrand
4223de769e
vk/device: Simplify surface_count calculation
2015-05-16 10:23:09 -07:00
Jason Ekstrand
eb1952592e
vk/glsl_helpers: Fix GLSL_VK_SHADER with respect to commas
...
Previously, the GLSL_VK_SHADER macro didn't work if the shader contained
commas outside of parentheses due to the way the C preprocessor works.
This commit fixes this by making it variadic again and doing it correctly
this time.
2015-05-15 22:17:07 -07:00
Kristian Høgsberg
3b9f32e893
vk: Make cmd_buffer->bindings a pointer
...
This lets us save and restore efficiently by just moving the pointer to
a temporary bindings struct for meta.
2015-05-15 18:12:07 -07:00
Kristian Høgsberg
9540130c41
vk: Move vertex buffers into struct anv_bindings
2015-05-15 16:34:31 -07:00
Kristian Høgsberg
0cfc493775
vk: Fix GLSL_VK_SHADER macro
...
Stringify doesn't work with __ARGV__. The last macro argument swallows
up excess arguments and as such we can just stringify that.
2015-05-15 16:15:04 -07:00
Kristian Høgsberg
af45f4a558
vk: Fix warning from missing initializer
...
Struct initializers need to be { 0, } to zero out the variable they're
initializing.
2015-05-15 16:07:17 -07:00
Kristian Høgsberg
bf096c9ec3
vk: Build binding tables at bind descriptor time
...
This changes the way descriptor sets and layouts work so that we fill
out binding table contents at the time we bind descriptor sets. We
manipulate the binding table contents and sampler state in a shadow-copy
in anv_cmd_buffer. At draw time, we allocate the actual binding table
and sampler state and flush the anv_cmd_buffer copies.
2015-05-15 16:05:31 -07:00
Kristian Høgsberg
1f6c220b45
vk: Update the bind map length to reflect MAX_SETS
2015-05-15 15:22:29 -07:00
Kristian Høgsberg
b806e80e66
vk: Flip back to using memfd for the allocators
2015-05-15 15:22:29 -07:00
Kristian Høgsberg
0a775e1eab
vk: Rename dyn_state_pool to dynamic_state_pool
...
Given that we already tolerate surface_state_pool and the even longer
instruction_state_pool, there's no reason to arbitrarily abbreviate
dynamic.
2015-05-15 15:22:29 -07:00
Kristian Høgsberg
f5b0f1351f
vk: Consolidate image, buffer and color attachment views
...
These are all just surface state, offset and a bo.
2015-05-15 15:22:29 -07:00
Jason Ekstrand
41db8db0f2
vk: Add a GLSL scraper utility
...
This new utility, glsl_scraper.py scrapes C files for instances of the
GLSL_VK_SHADER macro, pulls out the shader source, and compiles it to
SPIR-V. The compilation is done using glslValidator. The result is then
placed into another C file as arrays of dwords that can be easiliy handed
to a Vulkan driver.
2015-05-14 19:18:57 -07:00