Jason Ekstrand [Mon, 25 May 2015 19:42:59 +0000 (12:42 -0700)]
vk/compiler: Fix up the binding hack and make it work in NIR
Jason Ekstrand [Fri, 22 May 2015 22:15:08 +0000 (15:15 -0700)]
vk: Actually implement some sort of destructor for all object types
Jason Ekstrand [Thu, 21 May 2015 23:49:55 +0000 (16:49 -0700)]
vk/pipeline: Track VB's that are actually used by the pipeline
Previously, we just blasted out whatever VB's we had marked as "dirty"
regardless of which ones were used by the pipeline. Given that the stride
of the VB is embedded in the pipeline this can cause problems. One problem
is if the pipeline doesn't use the given VB binding we emit a bogus stride.
Another problem is that we weren't properly resetting the dirty bits when
the pipeline changed.
Jason Ekstrand [Thu, 21 May 2015 23:33:04 +0000 (16:33 -0700)]
vk/device: Memset descriptor sets to 0 and handle descriptor set holes
Jason Ekstrand [Thu, 21 May 2015 22:55:27 +0000 (15:55 -0700)]
vk: Do relocations in surface states when they are created
Previously, we waited until later and did a pass through the used surfaces
and did the relocations then. This lead to doing double-relocations which
was causing us to get bogus surface offsets.
Jason Ekstrand [Thu, 21 May 2015 18:59:29 +0000 (11:59 -0700)]
vk/test: Use the glsl_scraper for building shaders
Jason Ekstrand [Thu, 21 May 2015 19:19:24 +0000 (12:19 -0700)]
vk/glsl_scraper: Use the LunarG back-door for GLSL source
Jason Ekstrand [Thu, 21 May 2015 18:40:24 +0000 (11:40 -0700)]
vk/glsl_scraper: Use a fake GLSL version that glslang will accept
Jason Ekstrand [Thu, 21 May 2015 18:31:43 +0000 (11:31 -0700)]
vk: Bake the GLSL_VK_SHADER macro into the scraper output file
Jason Ekstrand [Tue, 19 May 2015 18:28:08 +0000 (11:28 -0700)]
vk/meta: Use glsl_scraper for our GLSL source
We are not yet using SPIR-V for meta but this is a first step.
Jason Ekstrand [Thu, 21 May 2015 18:28:40 +0000 (11:28 -0700)]
vk: More out-of-tree build fixes
Jason Ekstrand [Thu, 21 May 2015 17:23:18 +0000 (10:23 -0700)]
vk: Fix for out-of-tree builds
Kristian Høgsberg [Wed, 20 May 2015 23:42:11 +0000 (16:42 -0700)]
vk: Remove render pass stub call
This isn't really a stub.
Kristian Høgsberg [Sat, 16 May 2015 05:04:52 +0000 (22:04 -0700)]
vk: Add WSI implementation
Kristian Høgsberg [Sat, 16 May 2015 05:04:15 +0000 (22:04 -0700)]
vk: Add debug stubs
Kristian Høgsberg [Wed, 20 May 2015 21:38:11 +0000 (14:38 -0700)]
vk: Mark remaining unsupported formats as such
Kristian Høgsberg [Wed, 20 May 2015 21:36:11 +0000 (14:36 -0700)]
vk: Mark VK_FORMAT_UNDEFINED as 1 cpp, 1 channel
Kristian Høgsberg [Tue, 19 May 2015 21:14:24 +0000 (14:14 -0700)]
vk: Stream surface state instead of using the surface pool
Since the binding table pointer is only 16 bits, we can only have 64kb
of binding table state allocated at any given time. With a block size of
1kb, that amounts to just 64 command buffers, which is not enough.
Kristian Høgsberg [Tue, 19 May 2015 05:08:55 +0000 (22:08 -0700)]
vk: Use surface_format_info from dri driver for vkGetFormatInfo
Chad Versace [Thu, 21 May 2015 02:51:10 +0000 (19:51 -0700)]
vk: Fix result of vkCreateInstance
When fill_physical_device() fails, don't return VK_SUCCESS.
Jason Ekstrand [Thu, 21 May 2015 00:05:38 +0000 (17:05 -0700)]
vk/compiler: Add shader language detection
This commit adds support for the LunarG GLSL back-door as well as detecting
regular GLSL and SPIR-V. The SPIR-V path doesn't exist yet, so that will
cause an assert-fail.
Jason Ekstrand [Wed, 20 May 2015 22:11:08 +0000 (15:11 -0700)]
vk/test: Add a test for testing buffer copies
Jason Ekstrand [Wed, 20 May 2015 23:17:59 +0000 (16:17 -0700)]
vk/meta: Add support for copying arbitrary size buffers
Jason Ekstrand [Wed, 20 May 2015 22:38:11 +0000 (15:38 -0700)]
vk/meta: Use the biggest format possible for buffer copies
This should substantially improve throughput of buffer copies.
Jason Ekstrand [Wed, 20 May 2015 22:11:21 +0000 (15:11 -0700)]
vk/meta: Fix buffer copy extents
Jason Ekstrand [Tue, 19 May 2015 19:43:13 +0000 (12:43 -0700)]
vk/meta: Use texture() instead of texture2D()
Jason Ekstrand [Tue, 19 May 2015 19:42:21 +0000 (12:42 -0700)]
vk: Use binding instead of index in uniform layout qualifiers
This more closely matches what the Vulkan docs say to do.
Jason Ekstrand [Tue, 19 May 2015 18:27:20 +0000 (11:27 -0700)]
vk/glsl_scraper: Add a --glsl-only option
Jason Ekstrand [Tue, 19 May 2015 18:26:35 +0000 (11:26 -0700)]
vk/glsl_scraper: Use the line number from the end of the macro
We used to use the line number from the start of the macro but this doesn't
seem to match the c preprocessor
Jason Ekstrand [Tue, 19 May 2015 17:44:59 +0000 (10:44 -0700)]
vk/glsl_scraper: Don't open files until needed
This prevents us from writing an empty file when the compile failed.
Kristian Høgsberg [Tue, 19 May 2015 04:11:40 +0000 (21:11 -0700)]
vk: Call finish for binding table state stream
Jason Ekstrand [Tue, 19 May 2015 03:56:58 +0000 (20:56 -0700)]
vk/meta: Use the new *view_init functions and stack-allocated views
This should save us a good deal of the leakage that meta currently has.
Jason Ekstrand [Tue, 19 May 2015 03:42:03 +0000 (20:42 -0700)]
vk/image: Factor view creation out into separate *_init functions
The *_init functions work basically the same as the Vulkan entrypoints
except that they act on an already-created view and take an optional
command buffer option. If a command buffer is given, the surface state is
allocated out of the command buffer's state stream.
Jason Ekstrand [Tue, 19 May 2015 03:22:51 +0000 (20:22 -0700)]
Revert "vk/allocator: Don't use memfd when valgrind is detected"
This reverts commit
b6ab076d6b7dd91ce0dda8741ba974b2402fa726.
It turns out setting USE_MEMFD to 0 is really bad because it means we can't
resize the pool. Besides, valgrind SVN handles memfd so we really don't
need this fallback for valgrind anymore.
Jason Ekstrand [Tue, 19 May 2015 02:56:32 +0000 (19:56 -0700)]
vk: Use a separate block pool and state stream for binding tables
The binding table pointers packet only allows for a 16-bit binding table
address so all binding tables have to be in the first 64 KB of the surface
state BO. We solve this by adding a slave block pool that pulls off the
first 64 KB worth of blocks and reserves them for binding tables.
Jason Ekstrand [Tue, 19 May 2015 02:55:34 +0000 (19:55 -0700)]
vk/allocator: Add a concept of a slave block pool
We probably need a better name but this will do for now.
Kristian Høgsberg [Tue, 19 May 2015 03:44:37 +0000 (20:44 -0700)]
vk/test: Add test that prints format features
Kristian Høgsberg [Tue, 19 May 2015 00:05:36 +0000 (17:05 -0700)]
vk/test: Test timestamps and occlusion queries
Kristian Høgsberg [Tue, 19 May 2015 00:04:32 +0000 (17:04 -0700)]
vk: Make timestamp command work correctly
This was using the wrong timestamp register and needs to write a 64 bit
value.
Kristian Høgsberg [Tue, 19 May 2015 00:03:58 +0000 (17:03 -0700)]
vk: Make occlusion query work, both copy and get functions
Kristian Høgsberg [Tue, 19 May 2015 00:00:52 +0000 (17:00 -0700)]
vk: Update generated header files
This fixes a problem where register addresses where incorrectly shifted.
Kristian Høgsberg [Mon, 18 May 2015 17:39:14 +0000 (10:39 -0700)]
vk: Only fill render targets for meta clear
Clear inherits the render targets from the current render pass. This
means we need to fill out the binding table after switching to meta
bindings. However, meta copies etc happen outside a render pass and
break when we try to fill in the render targets. This change fills the
render targets only for meta clear.
Jason Ekstrand [Mon, 18 May 2015 22:47:28 +0000 (15:47 -0700)]
vk/pipeline: Use a state_stream for storing programs
Previously, we were effectively using a state_stream, it was just
hand-rolled based on a block pool. Now we actually use the data structure.
Jason Ekstrand [Mon, 18 May 2015 19:06:02 +0000 (12:06 -0700)]
vk/allocator: Add support for valgrind tracking of state pools and streams
We leave the block pool untracked so that reads/writes to freed blocks
will get caught and do the tracking at the state pool/stream level. We
have to do a few extra gymnastics for streams because valgrind works in
terms of poitners and we work in terms of separate map and offset.
Fortunately, the users of the state pool and stream should always be using
the map pointer provided in the anv_state structure. We just have to
track, per block, the map that was used when we initially got the block.
Then we can make sure we always use that map and valgrind should stay
happy.
Jason Ekstrand [Mon, 18 May 2015 22:58:02 +0000 (15:58 -0700)]
vk/allocator: Don't use memfd when valgrind is detected
Jason Ekstrand [Mon, 18 May 2015 22:46:42 +0000 (15:46 -0700)]
vk/allocator: Assert that block_pool_grow succeeds
Jason Ekstrand [Mon, 18 May 2015 19:05:17 +0000 (12:05 -0700)]
vk/gem: VG_CLEAR the padding for the gem_mmap struct
Jason Ekstrand [Mon, 18 May 2015 17:41:09 +0000 (10:41 -0700)]
vk/meta: Rework the indentation style
No functional change.
Kristian Høgsberg [Mon, 18 May 2015 17:17:53 +0000 (10:17 -0700)]
vk: Provide more realistic values for device info
Kristian Høgsberg [Mon, 18 May 2015 16:05:11 +0000 (09:05 -0700)]
vk: Use a temporary buffer for formatting in finishme
This is more likely to avoid breaking up the message when racing with
other threads.
Jason Ekstrand [Mon, 18 May 2015 16:42:09 +0000 (09:42 -0700)]
vk/meta: Add an initial implementation of vkCmdCopyBuffer
Compile-tested only
Jason Ekstrand [Mon, 18 May 2015 16:16:04 +0000 (09:16 -0700)]
vk/meta: Add an initial implementation of vkCmdCopyBufferToImage
Compile-tested only
Jason Ekstrand [Mon, 18 May 2015 16:06:06 +0000 (09:06 -0700)]
vk/meta: Add an initial implementation of vkCmdBlitImage
Compile-tested only
Jason Ekstrand [Mon, 18 May 2015 16:03:27 +0000 (09:03 -0700)]
vk/meta: Add an initial implementation of vkCmdCopyImage
Compile-tested only
Jason Ekstrand [Mon, 18 May 2015 16:59:08 +0000 (09:59 -0700)]
vk/gem: Set the gem_mmap.flags parameter to 0 if it exists
Jason Ekstrand [Mon, 18 May 2015 16:57:12 +0000 (09:57 -0700)]
vk/gem: Only VK_CLEAR the addr_ptr in gen_mmap
Kristian Høgsberg [Mon, 18 May 2015 15:52:22 +0000 (08:52 -0700)]
vk: Add a logger wrapper for the generated entrypoint
Kristian Høgsberg [Mon, 18 May 2015 15:50:56 +0000 (08:50 -0700)]
vk/gem: Just return -1 from anv_gem_wait() on error
We were returning -errno, unlike all the other gem functions.
Kristian Høgsberg [Mon, 18 May 2015 15:50:04 +0000 (08:50 -0700)]
vk: Fix vkGetOjectInfo return values
We weren't properly returning the allocation count.
Kristian Høgsberg [Mon, 18 May 2015 15:49:15 +0000 (08:49 -0700)]
vk: Implement fences
This basic implementation uses a throw-away bo for synchronization.
Kristian Høgsberg [Mon, 18 May 2015 02:30:27 +0000 (19:30 -0700)]
vk/meta: Use anv_* internal entrypoints
Kristian Høgsberg [Mon, 18 May 2015 02:25:28 +0000 (19:25 -0700)]
vk: Implement allocation count query
Kristian Høgsberg [Mon, 18 May 2015 02:22:52 +0000 (19:22 -0700)]
vk: Change pData/pDataSize semantics
We now always copy the entire struct unless pData is NULL and
unconditionally write back the struct size. It's not clear this is
useful if the structs may grow over time, but it seems to be the
expected behaviour for now.
Kristian Høgsberg [Mon, 18 May 2015 01:39:12 +0000 (18:39 -0700)]
vk: Return VK_SUCCESS from vkAllocDescriptorSets
This should've been returning VK_SUCCESS all along.
Kristian Høgsberg [Mon, 18 May 2015 01:38:34 +0000 (18:38 -0700)]
vk: Return VK_SUCCESS for all descriptor pool entry points
Kristian Høgsberg [Mon, 18 May 2015 04:35:34 +0000 (21:35 -0700)]
vk: Start Implementing vkGetFormatInfo()
We move the format table and vkGetFormatInfo to their own file in the
process.
Kristian Høgsberg [Sun, 17 May 2015 23:33:48 +0000 (16:33 -0700)]
vk: Add script for generating ifunc entry points
This lets us generate a hash table for vkGetProcAddress and lets us call
public functions internally without the public entrypoint overhead.
Kristian Høgsberg [Sun, 17 May 2015 23:40:10 +0000 (16:40 -0700)]
vk: Fix vulkan header inconsistency
The function pointer typedef and the function prototype for
vkCmdClearColorImage() didn't agree. Fix the typedef to match the
prototype.
Kristian Høgsberg [Sun, 17 May 2015 23:39:20 +0000 (16:39 -0700)]
vk: Add function pointer typedef for intel extension
Also guard function prototype by VK_PROTOTYPES.
Kristian Høgsberg [Sat, 16 May 2015 05:05:09 +0000 (22:05 -0700)]
vk: Add missing VKAPI for vkQueueRemoveMemReferences
Jason Ekstrand [Sat, 16 May 2015 19:43:16 +0000 (12:43 -0700)]
Merge remote-tracking branch 'fdo-personal/wip/nir-vtn' into vulkan
This adds the SPIR-V -> NIR translator.
Jason Ekstrand [Sat, 16 May 2015 19:34:32 +0000 (12:34 -0700)]
nir/spirv: Don't assert that the current block is empty
It's possible that someone will give us SPIR-V code in which someone
needlessly branches to new blocks. We should handle that ok now.
Jason Ekstrand [Sat, 16 May 2015 19:34:15 +0000 (12:34 -0700)]
nir/spirv: Add initial support for samplers
Jason Ekstrand [Sat, 16 May 2015 19:33:29 +0000 (12:33 -0700)]
nir/spirv: Move Exp and Log to the list of currently unhandled ALU ops
NIR doesn't have the native opcodes for them anymore
Jason Ekstrand [Sat, 16 May 2015 19:32:58 +0000 (12:32 -0700)]
nir/types: Add support for sampler types
Jason Ekstrand [Wed, 6 May 2015 22:36:54 +0000 (15:36 -0700)]
nir/spirv: Make the global constants in spirv.h static
I've been promissed in a bug that this will be fixed in a future version of
the header. However, in the interest of my branch building, I'm adding
these changes in myself for the moment.
Jason Ekstrand [Wed, 6 May 2015 22:33:21 +0000 (15:33 -0700)]
nir/spirv: Handle jump-to-loop in a more general way
Jason Ekstrand [Wed, 6 May 2015 19:54:02 +0000 (12:54 -0700)]
nir/spirv: Handle boolean uniforms correctly
Jason Ekstrand [Wed, 6 May 2015 19:37:10 +0000 (12:37 -0700)]
nir/spirv: Handle control-flow with loops
Jason Ekstrand [Wed, 6 May 2015 19:36:31 +0000 (12:36 -0700)]
nir/spirv: Set a name on temporary variables
Jason Ekstrand [Wed, 6 May 2015 19:36:09 +0000 (12:36 -0700)]
nir/spirv: Use the correct length for copying string literals
Jason Ekstrand [Wed, 6 May 2015 19:35:30 +0000 (12:35 -0700)]
nir/spirv: Make vtn_ssa_value handle constants as well as ssa values
Jason Ekstrand [Mon, 4 May 2015 22:17:56 +0000 (15:17 -0700)]
nir/spirv: Add initial support for GLSL 4.50 builtins
Jason Ekstrand [Mon, 4 May 2015 19:25:09 +0000 (12:25 -0700)]
nir/spirv: Split the core datastructures into a header file
Jason Ekstrand [Mon, 4 May 2015 19:12:23 +0000 (12:12 -0700)]
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.
Jason Ekstrand [Mon, 4 May 2015 19:04:02 +0000 (12:04 -0700)]
nir/spirv: Add support for a bunch of ALU operations
Jason Ekstrand [Mon, 4 May 2015 19:02:57 +0000 (12:02 -0700)]
nir/spirv: Add support for indirect array accesses
Jason Ekstrand [Mon, 4 May 2015 19:02:24 +0000 (12:02 -0700)]
nir/spirv: Explicitly type constants and SSA values
Jason Ekstrand [Mon, 4 May 2015 17:23:09 +0000 (10:23 -0700)]
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.
Jason Ekstrand [Mon, 4 May 2015 17:22:52 +0000 (10:22 -0700)]
nir/spirv: Add a helper for getting a value as an SSA value
Jason Ekstrand [Fri, 1 May 2015 21:00:57 +0000 (14:00 -0700)]
nir/spirv: Split instruction handling into preamble and body sections
Jason Ekstrand [Fri, 1 May 2015 18:28:18 +0000 (11:28 -0700)]
nir/spirv: Implement load/store instructiosn
Jason Ekstrand [Mon, 4 May 2015 17:19:24 +0000 (10:19 -0700)]
nir: Add a helper for getting the tail of a deref chain
Jason Ekstrand [Fri, 1 May 2015 18:28:01 +0000 (11:28 -0700)]
nir/spirv: Actaully add variables to the funciton or shader
Jason Ekstrand [Fri, 1 May 2015 18:27:44 +0000 (11:27 -0700)]
nir/spirv: Add a vtn_untyped_value helper
Jason Ekstrand [Fri, 1 May 2015 18:27:21 +0000 (11:27 -0700)]
nir/spirv: Use vtn_value in the types code and fix a off-by-one error
Jason Ekstrand [Fri, 1 May 2015 18:26:40 +0000 (11:26 -0700)]
nir/types: Add an is_vector_or_scalar helper
Jason Ekstrand [Thu, 30 Apr 2015 03:56:36 +0000 (20:56 -0700)]
nir/spirv: Add support for deref chains
Jason Ekstrand [Thu, 30 Apr 2015 03:56:17 +0000 (20:56 -0700)]
nir/types: Add a scalar type constructor
Jason Ekstrand [Thu, 30 Apr 2015 03:19:34 +0000 (20:19 -0700)]
nir/spirv: Add support for OpLabel