Remove anv_color_attachment_view and anv_depth_stencil_view, merging
them into anv_attachment_view. This prepares for merging
VkAttachmentView into VkImageView.
Push the members of struct anv_surface_view into anv_image_view and
anv_buffer_view, then remove struct anv_surface_view. Observe that
anv_surface_view::range is not needed for anv_image_view, and so was
dropped there.
This prepares for the merge of VkAttachmentView into VkImageView. Remove
the common parent of anv_buffer_view and anv_image_view (that is,
anv_surface_view) will make the merge easier.
Rename all anv_*_view variables to follow this convention:
- sview -> anv_surface_view
- bview -> anv_buffer_view
- iview -> anv_image_view
- aview -> anv_attachment_view
- cview -> anv_color_attachment_view
- ds_view -> anv_depth_stencil_attachment_view
This clarifies existing code. And it will reduce noise in the upcoming
commits that merge VkAttachmentView into VkImageView.
For a given struct anv_descriptor, all members are NULL (in which case
the descriptor is empty) or exactly one member is non-NULL.
To make struct anv_descriptor better reflect its set of valid states,
convert the struct into a tagged union.
anv_meta no longer uses GLSL shaders, and the build system no longer
converts them to SPIR-V. So remove anv_meta_spirv_autogen.h from
Makefile.am.
(cherry picked from commit 2fc8122f66)
We assert that the block offset we got while walking the list of blocks is
actually a multiple of the block size. If something goes wrong and the GPU
decides to stomp on the surface state buffer we can end up getting
corruptions in our list of blocks. This assertion makes such corruptions a
crash with a meaningful message rather than an infinite loop.
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.
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.
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.
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.
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.
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.