Commit graph

677 commits

Author SHA1 Message Date
Jason Ekstrand
002e7b0cc3 anv: Remove the GLSL -> SPIR-V scraper/converter
This was very useful to get us up-and-going.  However, now that we can use
NIR directly for meta shaders, we don't need this anymore and we might as
well drop the glslc dependency.
2015-10-02 16:20:04 -07:00
Jason Ekstrand
f5ffb0e0cb anv/meta: Use NIR directly for blit shaders 2015-10-02 16:18:44 -07:00
Jason Ekstrand
7851a4392a anv/meta: Use NIR directly for clear shaders 2015-10-02 16:18:32 -07:00
Jason Ekstrand
add99c4beb anv: Add a back-door for passing NIR shaders directly into the pipeline
This will allow us to use NIR directly for meta operations rather than
having to go through SPIR-V.
2015-10-02 16:16:57 -07:00
Jason Ekstrand
b68805f83c anv: Add some NIR builder helpers
These should all eventually be up-streamed.  However, since they currently
have no upstream users, they would just bitrot there.  We'll keep them
local for the time being.
2015-10-02 16:15:53 -07:00
Jason Ekstrand
c1553653a2 vk/wsi/x11: Send OUT_OF_DATE if the X drawable goes away 2015-10-02 13:44:53 -07:00
Kristian Høgsberg Kristensen
005c8e0106 Merge branch 'master' of ../mesa into vulkan 2015-10-01 14:24:29 -07:00
Jason Ekstrand
337caee910 anv/wsi_x11: Properly report BadDrawable errors to the client 2015-09-28 20:18:41 -07:00
Jason Ekstrand
f06bc45b0c anv/batch_chain: Use the surface state pool for binding tables 2015-09-28 16:01:14 -07:00
Jason Ekstrand
d93f6385a7 anv/batch_chain: Add helpers for fixing up block_pool relocations 2015-09-28 16:01:14 -07:00
Jason Ekstrand
8c00f9ab56 anv/gen8: Do a render cache flush prior to changing state base address 2015-09-28 16:01:14 -07:00
Jason Ekstrand
0e94446b25 anv/device: Use a 4K block size for surface state blocks
We want to start using the surface state block pool for binding tables and
binding tables.  In order to do this, we need to be able to set surface
state base address to the address of a block and surface state base address
has a 4K alignment requriement.
2015-09-28 16:01:01 -07:00
Jason Ekstrand
737e89bc8d anv/meta: Use the dynamic state stream for temporary buffers 2015-09-28 16:01:01 -07:00
Jason Ekstrand
219a1929f7 anv/util: Add helpers for getting the first and last elements of a vector 2015-09-28 16:01:01 -07:00
Jason Ekstrand
95487668df anv/batch_chain: Add a _alloc_binding_table function 2015-09-28 16:01:01 -07:00
Jason Ekstrand
d517de6126 anv: Make anv_state.offset an int32_t
Binding tables will have a negative offset and we need a way to express
that.  Besides, the chances of a state offset being larger than 2 GB is so
remote it's not worth thinking about.
2015-09-28 16:01:01 -07:00
Jason Ekstrand
9ac3dde3a0 anv/wsi_wayland: Fix FIFO mode
Previously, there were a number of things we were doing wrong:

 1) We weren't flushing the wl_display so dead-looping clients weren't
    guaranteed to work.
 2) We were sending the frame event after calling wl_surface.commit() so it
    wasn't getting assigned to the correct frame
 3) We weren't actually setting fifo_ready to false.

Unfortunately, we never noticed because (3) was hiding the other two.  This
commit fixes all three and clients that use FIFO mode are now properly
refresh-rate limited.
2015-09-28 15:58:34 -07:00
Chad Versace
ddcedb979a vk: Implement vkGetPhysicalDeviceImageFormatProperties()
The implementation is incomplete because we lie about
VkImageFormatProperties::maxResourceSize, hardcoding it to UINT32_MAX
for all supported cases.
2015-09-28 11:53:39 -07:00
Chad Versace
9f3122db0e vk: Refactor anv_GetPhysicalDeviceFormatProperties()
Move the bulk of the function body to a new function
anv_physical_device_get_format_properties(). This allows us to reuse the
function when implementing anv_GetPhysicalDeviceImageFormatProperties()
without calling into the public entry point.
2015-09-28 11:53:39 -07:00
Chad Versace
c15ce5c834 vk: Advertise that depthstencil formats support sampling
Let vkGetPhysicalDeviceFormatProperties() set
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT for tiled depthstencil images.
2015-09-28 11:53:39 -07:00
Jason Ekstrand
4e48f94469 anv/device: Wrap a couple valgrind calls in the VG macro
This fixes the build for systems that don't have valgrind devel packages
installed.
2015-09-28 11:18:52 -07:00
Chad Versace
97636345da vk: Fix vkGetPhysicalDeviceSparseImageFormatProperties()
The driver does not yet support sparse images, so return zero properties for
all formats.
2015-09-28 10:17:48 -07:00
Kristian Høgsberg Kristensen
164f08c255 vk: Add anv_icd.json to .gitignore 2015-09-25 15:16:56 -07:00
Kristian Høgsberg Kristensen
850cfcad3e vk: Also define vk_errorf in non-debug builds 2015-09-25 15:15:37 -07:00
Jason Ekstrand
e9dff5bb99 vk: Add an ICD declaration file 2015-09-24 14:45:58 -07:00
Jason Ekstrand
39cd3783a4 anv: Add support for the ICD loader 2015-09-24 14:45:58 -07:00
Jason Ekstrand
a95f51c1d7 anv: Add a global dispatch table for use in meta operations 2015-09-24 14:45:58 -07:00
Jason Ekstrand
00d18a661f anv/entrypoints: Expose the anv_resolve_entrypoint function 2015-09-24 14:45:58 -07:00
Jason Ekstrand
f5e72695e0 anv/entrypoints: Rename anv_layer to anv_dispatch_table 2015-09-24 14:45:58 -07:00
Jason Ekstrand
913a9b76f7 anv/batch_chain: Remove the current_surface_bo helper
It's no longer used outside anv_batch_chain so we certainly don't need to
be exporting.  Inside anv_batch_chain, it's only used twice and it can be
replaced by a single line so there's really no point.
2015-09-24 08:46:41 -07:00
Jason Ekstrand
bc17f9c9d7 anv/cmd_buffer: Add a helper for getting the surface state base address 2015-09-24 08:42:38 -07:00
Jason Ekstrand
e1a7c721d3 anv/allocator: Don't ever call mremap
This has always been a bit sketchy and neither Kristian nor I have ever
really liked it.
2015-09-24 08:42:14 -07:00
Jason Ekstrand
99e62f5ce8 anv/allocator: Delete the unused center_fd_offset from anv_block_pool 2015-09-24 08:41:56 -07:00
Jason Ekstrand
429665823d anv/allocator: Do a better job of centering bi-directional block pools 2015-09-24 08:41:47 -07:00
Jason Ekstrand
76be58efce anv/batch_chain: Clean up the reloc list swapping code 2015-09-24 08:41:38 -07:00
Jason Ekstrand
041f5ea089 anv/meta: Add location specifiers to meta shaders 2015-09-21 16:21:56 -07:00
Jason Ekstrand
a788e7c659 anv/device: Move mutex initialization to befor block pools 2015-09-17 18:23:21 -07:00
Jason Ekstrand
595e6cacf1 meta: Initial support for packing parameters
Probably incomplete but it should do for now
2015-09-17 18:21:05 -07:00
Jason Ekstrand
d616493953 anv/meta: Pass the depth through the clear vertex shader
It shouldn't matter since we shut off the VS but it's at least clearer.
2015-09-17 18:09:21 -07:00
Jason Ekstrand
3b8aa26b8e anv/formats: Properly report depth-stencil formats 2015-09-17 17:44:20 -07:00
Jason Ekstrand
b5f6889648 vk/device: Don't allow device or instance creation with invalid extensions 2015-09-17 17:44:20 -07:00
Jason Ekstrand
dcf424c98c anv/tests: Add some asserts for data integrity in block_pool_no_free 2015-09-17 17:44:20 -07:00
Jason Ekstrand
5f57ff7e18 anv/allocator: Make the block pool double-ended
This allows us to allocate from either side of the block pool in a
consistent way.  If you use the previous block_pool_alloc function, you
will get offsets from the start of the pool as normal.  If you use the new
block_pool_alloc_back function, you will get a negative index that
corresponds to something in the "back" of the pool.
2015-09-17 17:44:20 -07:00
Jason Ekstrand
15624fcf55 anv/tests: Refactor the block_pool_no_free test
This simply breaks the monotonicity check out into its own function
2015-09-17 17:44:20 -07:00
Jason Ekstrand
55daed947d vk/allocator: Split block_pool_alloc into two functions 2015-09-17 17:44:20 -07:00
Jason Ekstrand
c55fa89251 anv/allocator: Use a signed 32-bit offset for the free list
This has the unfortunate side-effect of making it so that we can't have a
block pool bigger than 1GB.  However, that's unlikely to happen and, for
the sake of bi-directional block pools, we need to negative offsets.
2015-09-17 17:44:20 -07:00
Jason Ekstrand
8c6bc1e85d anv/allocator: Create 2GB memfd up-front for the block pool 2015-09-17 17:44:20 -07:00
Jason Ekstrand
74bf7aa07c anv/allocator: Take the device mutex when growing a block pool
We don't have any locking issues yet because we use the pool size itself as
a mutex in block_pool_alloc to guarantee that only one thread is resizing
at a time.  However, we are about to add support for growing the block pool
at both ends.  This introduces two potential races:

 1) You could have two block_pool_alloc() calls that both try to grow the
    block pool, one from each end.

 2) The relocation handling code will now have to think about not only the
    bo that we use for the block pool but also the offset from the start of
    that bo to the center of the block pool.  It's possible that the block
    pool growing code could race with the relocation handling code and get
    a bo and offset out of sync.

Grabbing the device mutex solves both of these problems.  Thanks to (2), we
can't really do anything more granular.
2015-09-17 17:44:20 -07:00
Jason Ekstrand
222ddac810 anv: Document the index and offset parameters of anv_bo 2015-09-17 17:44:20 -07:00
Chad Versace
85520aa070 vk/image: Remove stale FINISHME for non-2D image views
gen8_image_view_init() now supports 1D, 2D, and 3D image views.
2015-09-14 15:16:57 -07:00