Commit Graph

76771 Commits

Author SHA1 Message Date
Jason Ekstrand 4e22cd2e32 nir/spirv: Add support for switch statements 2015-12-29 12:50:31 -08:00
Jason Ekstrand cf555dc1c2 nir/spirv: A couple simple loop fixes 2015-12-29 12:50:31 -08:00
Jason Ekstrand 303d095f58 nir/spirv: Add an actual CFG data structure
The current data structure doesn't handle much that we couldn't handle
before.  However, this will be absolutely crucial for doing swith
statements.  Also, this should fix structured continues.
2015-12-29 12:50:31 -08:00
Jason Ekstrand bbf99511d0 gen7/8/pipeline: s/vb_used/elements in emit_vertex_input 2015-12-29 09:40:22 -08:00
Kristian Høgsberg Kristensen fc03723bcd vk: Fill out buffer surface state when updating descriptor set
We can do this when we update the descriptor set instead of on the
fly.
2015-12-28 21:57:56 -08:00
Kristian Høgsberg Kristensen a00524a216 vk: Unstub VkSemaphore implementation
There really is nothing to do for us here, at least with the current
kernel interface.
2015-12-28 21:57:56 -08:00
Jason Ekstrand 5fab35d090 gen7/pipeline: Actually use inputs_read from the VS for laying out inputs 2015-12-28 18:21:11 -08:00
Jason Ekstrand b090f9dce1 gen8/pipeline: Actually use inputs_read from the VS for laying out inputs 2015-12-28 18:21:11 -08:00
Jason Ekstrand 3eb108ef87 anv/meta: Fix the pos_out location for the vertex shader 2015-12-28 18:21:11 -08:00
Jason Ekstrand b005fd62f9 nir/spirv: Add GLSL.std.450.h
It accidentally got removed during the mass rename.
2015-12-28 15:46:22 -08:00
Jason Ekstrand 9c84b6cce0 anv/device: Set device->info sooner in CreateDevice
anv_block_pool_init calls anv_block_pool_grow which checks
device->info.has_llc to see if it needs to set caching parameters.
If we don't set device->info early enough, this reads an undefined value
which is probably 0 and not what we want on llc platforms.

Found with valgrind.
2015-12-28 13:29:01 -08:00
Jason Ekstrand 763176a3e2 nir/lower_returns: Fix a bug in loop lowering 2015-12-28 13:22:09 -08:00
Jason Ekstrand 7aaed91581 nir/spirv: Move to its own directory 2015-12-28 11:49:39 -08:00
Jason Ekstrand d5fa51bdee Merge remote-tracking branch 'mesa-public/master' into vulkan
This pulls in the removal of nir_function_overload
2015-12-28 10:56:31 -08:00
Jason Ekstrand d9dcfafacc nir/spirv: Use nir_build_alu for alu instructions 2015-12-28 10:35:31 -08:00
Jason Ekstrand 237f2f2d8b nir: Get rid of function overloads
When Connor originally drafted NIR, he copied the same function+overload
system that GLSL IR had with a few names changed.  However, this
double-indirection is not really needed and has only served to confuse
people.  Instead, let's just have functions which may not have unique names
and may or may not have an implementation.  If someone wants to do overload
resolving, they can hav a hash table based function+overload system in the
overload resolving pass.  There's no good reason to keep it in core NIR.

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>

ir3 bits are

Reviewed-by: Rob Clark <robclark@gmail.com>
2015-12-28 09:59:53 -08:00
Jason Ekstrand ea77b384e8 Merge remote-tracking branch 'mesa-public/master' into vulkan
This pulls in tessellation and the store_var changes that go with it.
2015-12-27 23:23:05 -08:00
Jason Ekstrand f948767471 nir/lower_returns: Better algorithm as per connor 2015-12-27 22:50:45 -08:00
Jason Ekstrand 3489f66056 nir: Add a cursor helper for getting a cursor after any phi nodes 2015-12-27 22:50:14 -08:00
Ilia Mirkin 109c348284 nvc0: don't forget to reset VTX_TMP bufctx slot after blit completion
Also release the scratch allocation if any.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0 11.1" <mesa-stable@lists.freedesktop.org>
2015-12-27 21:33:36 -05:00
Ilia Mirkin 28e07fdd4a nv50,nvc0: add a note when converting vertex elements using CPU
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-12-27 19:49:44 -05:00
Jason Ekstrand c60456dfaa nir/gather_info: Handle multi-slot variables in io bitfields 2015-12-24 00:47:20 -08:00
Jason Ekstrand bbebd2de13 nir: Add a helper for getting the bitmask for a variable's location 2015-12-24 00:47:20 -08:00
Jason Ekstrand 4ff4310a78 nir/types: Expose glsl_type::count_attribute_slots() 2015-12-24 00:47:19 -08:00
Jason Ekstrand 0bc1b0fd23 nir/lower_return: Do it for real this time 2015-12-24 00:47:19 -08:00
Jason Ekstrand e1b1d58bec nir/cf: Make extracting or re-inserting nothing a no-op 2015-12-23 23:46:04 -08:00
Jason Ekstrand eae352e75c nir: Add a function for comparing cursors 2015-12-23 18:09:42 -08:00
Connor Abbott 41c7912d04 gallium/auxiliary: don't build NIR sources with MSVC2008 flags
NIR has never been built with MSVC2008, so we shouldn't add
MSVC2008_COMPAT_CFLAGS to anything that uses it. This allows us to get
rid of the pragma in tgsi_to_nir.c.

Build tested with freedreno.

v2: Use MSVC2013_COMPAT_CLFAGS instead.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
2015-12-23 20:46:48 -05:00
Jason Ekstrand 54c870ff61 nir/spirv: Add support for undefs in vtn_ssa_value() 2015-12-23 14:14:39 -08:00
Jason Ekstrand 2e823d5754 nir/spirv: Properly handle vector times matrix 2015-12-23 13:49:56 -08:00
Jason Ekstrand 452ba4db2b nir/spirv: Create the correct type if a matrix-vector multiply produces a vector 2015-12-23 13:49:56 -08:00
Jason Ekstrand 5b30132388 nir/spirv: Fix some mem_ctx issues with create_vec 2015-12-23 13:49:56 -08:00
Jason Ekstrand 66168a798b nir/spirv: Better document vtn_ssa_value.transposed 2015-12-23 13:49:56 -08:00
Jason Ekstrand 3b391892aa anv/descriptor_set: Use anv_foreach_stage 2015-12-23 13:49:56 -08:00
Jason Ekstrand 72ceb99bab anv: Mask out invalid stages in foreach_stage 2015-12-23 13:49:56 -08:00
Jason Ekstrand 5644b1cece nir/spirv: Handle LogicalNot 2015-12-23 13:49:56 -08:00
Jason Ekstrand 6219a69589 nir/spirv: Handle derefs in vtn_ssa_value
This is kind of a hack, but it makes vtn_ssa_value insert a load if the
value requested is actually a deref.  This shouldn't happen normally but,
thanks to the impedence mismatch of the NIR function parameter model vs.
the SPIR-V model, this can happen for function arguments.
2015-12-23 13:49:56 -08:00
Jason Ekstrand 3ab1b7afa8 nir/spirv: Do boolean fixup on block loads
We used to do it for variable loads on things of type "uniform" but that
never got ported to block loads.
2015-12-23 13:49:56 -08:00
Jason Ekstrand af74ce5a19 spirv/nir: Handle non-vector extractions in vtn_composite_extract 2015-12-23 13:49:56 -08:00
Jason Ekstrand 79b8b42081 nir/spirv: Handle function calls 2015-12-23 13:49:56 -08:00
Jason Ekstrand 95990c96cc nir: Create the params array in function_impl_create 2015-12-23 13:49:56 -08:00
Jason Ekstrand a7f3e113ad i965/nir: Remove return handling
This was added because we were getting spurrious returns coming out of
SPIR-V.  Now that we're calling lower_returns, we don't need this.
2015-12-23 13:49:56 -08:00
Jason Ekstrand ac975b73cf anv/pipeline: Run lower_returns and inline_functions after spirv_to_nir 2015-12-23 13:49:56 -08:00
Jason Ekstrand 8fba4bf79f nir: Add a function inlining pass 2015-12-23 13:49:56 -08:00
Jason Ekstrand b21db9cea5 nir/builder: Add a copy_deref_var helper 2015-12-23 13:49:56 -08:00
Jason Ekstrand 23cfa683d5 nir: move nir_copy_var from anv_nir_builder to nir_builder 2015-12-23 13:49:56 -08:00
Jason Ekstrand 4aac03fe61 nir/clone: Add support for cloning a single function_impl
This will be useful for things such as function inlining.
2015-12-23 13:49:56 -08:00
Jason Ekstrand 98291b8f2c nir: Add a helper for creating a "bare" nir_function_impl
This is useful if you want to clone a single function_impl if, for
instance, you wanted to do function inlining.
2015-12-23 13:49:56 -08:00
Jason Ekstrand 86772c2488 nir/control_flow: Handle relinking top-level blocks
This can happen if a function ends in a return instruction and you remove
the return.
2015-12-23 13:49:56 -08:00
Jason Ekstrand 1749e667ea nir: Add a stub function inlining pass
All it does is remove the return at the end, but it's good enough for
simple functions.
2015-12-23 13:49:56 -08:00