Iago Toral Quiroga
98697e1fb5
v3dv: precompute more tiling info at framebuffer creation time
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
3b8aeb7f50
v3dv: plug leak when destroying device
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
e6a7d88b53
v3dv: make v3dv_layer_offset public
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
14f72ee4f6
v3dv: implement vkDestroyImage and vkDestroyImageView
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
4075f8e221
v3dv: revert the decision that the command buffer takes ownership of BOs
...
The CLs in the command buffer will reference BOs allocated by the application
such as images and buffers, that will be destroyed by the application, so
destroying them with the command buffer won't be correct.
For now, let's just assume that the comman buffer only owns the BOs
it explicitly allocates and that other abstractions own their own
BOs and are responsible from freeing them.
In the future, we might consider a ref/unref system similar to v3d's, but
for now this should work.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
ec1d7e453e
v3dv: add the tile state and alloc BOs to the command buffer BO list
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
ae235e0f22
v3dv: store base mip level in the image view
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
52d9b8c05b
v3dv: add a few more API stubs
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
bab28ab1e8
v3dv: make the command buffer own the command list BOs
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
0020eb4f90
v3dv: implement vkCmdBeginRenderPass
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
51705fc015
v3dv: compute tile size for framebuffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
cd24292fca
v3dv: make v3dv_bo_alloc allocate memory for the bo struct
...
This is just going to be more convenient going forward.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
291cd6e77b
v3dv: implement vkGetPhysicalDeviceImageFormatProperties
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
3cf527ab7a
v3dv: start handling command buffer status
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
9bb6d6f1ba
v3dv: implement vkBeginCommandBuffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
9ac3261076
v3dv: add a concept of a command list
...
Just barebones for now, will expand as necessary as we start emitting
actual commands into command lists.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
dc005f2677
v3dv: create a v3dv_bo struct and reference it from v3dv_device_memory
...
So we have a lower level representation of a buffer object that we can
manipulate that is not tied to a Vulkan representation of memory. This
will be useful as we start allocating driver internal buffers, such as
command lists.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
d9a7ba317c
v3dv: implement vk{Allocate,Free}CommandBuffers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
1d8d8c06b8
v3dv: implement vkCreateCommandPool
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
e07b657f01
v3dv: implement vk{Create,Destroy}Framebuffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
c95904f83e
v3dv: implement vk{Create,Destroy}RenderPass
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
cdba5361fe
v3dv: implement vkCreateRenderPass
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
582ebb040c
v3dv: implement vkBindBufferMemory
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
5ee155043d
v3dv: implement vkGetBufferMemoryRequirements
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
b478e8c53c
v3dv: implement vk{Create,Destroy}Buffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
dee9976200
v3dv: implement vkCreateImageView
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
16ec12b740
v3dv: implement vkBindImageMemory
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
e06831454a
v3dv: implement vkUnmapMemory
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
cff9f08d31
v3dv: implement vkMapMemory
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
d1d97ea746
v3dv: implement vkFreeMemory
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
85632e4685
v3dv: implement vkAllocateMemory
...
Removed MAX_MEMORY_ALLOCATION_SIZE definition because that comes from
VK_KHR_maintenance3 which we don't support yet. We can care about that
when we iplement it.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
33bb395621
v3dv: initialize mememory heaps in the physical device
...
When we allocate memory we will be referring to memory types by index
so this is more convenient.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
4c80097756
v3dv: implement vkGetImageMemoryRequirements
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Alejandro Piñeiro
dc1fbeb0f4
v3dv: Create/DestroyShaderModule implementation
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Alejandro Piñeiro
a201c45000
v3dv: stubs for graphics pipeline methods
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Alejandro Piñeiro
46fa01f431
v3dv/debug: add v3dv_debug
...
Note that for the Vulkan driver we are also reusing v3d_debug.h. This
file is for debug utilities exclusive to the Vulkan driver.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Alejandro Piñeiro
ccdc5a7bd4
v3dv/debug: plug v3d_debug
...
Right now there is not a big reason/difference to implement the
utilities present at v3d_debug for the vulkan driver, so lets just
reuse it.
The other advantage is that is the debug utilities used by common
parts of the driver, like broadcom/compiler
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
0fcce6c319
v3dv: implement vkCreateImage
...
This relies heavily in infrastructure taken from the v3d driver. We should
probably look for ways to share the code between both drivers by creating
a surface layout library that we can use from both, or at least moving
parts of the v3d driver to broadcom/common. Specifically:
We take v3d_tiling.c, which requires gallium's pipe_box type for some
helper functions that we don't quite need yet.
We copied and adapted bits of v3d_resource.c into v3dv_image.c, however,
it should be possible to look for ways to reuse the code instead of
duplicating it.
Pre-compute UIF padding into the slice setup. This is different from
what we do in v3d (we do this at cerate_surface time), but it is
more convenient for us to pre-calculate it here for all mipmap
slices.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
d5dd157775
v3dv: add stub for vkDeviceWaitIdle
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
7a045cf5b3
v3dv: implement vkEnumerate{Instance,Device}LayerProperties
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
871ac1ed33
v3dv: add some basic support for format properties
...
This takes a subset of vk_format_info.h from Anvil which has some
Intel specific elements. At some point we might want to discuss
if we want to make the file reusable and move the intel bits to
some other place, but it is not a lot of code and for now this works,
so we keep going.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
63e23a9b2a
v3dv: add stubs for the format table and vkGetPhysicalDeviceFormatProperties
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
9cc736f5aa
v3dv: add dummy implementations for the packet definition generator
...
For now we are only interested in being able to include the header
file for format definitions, so this is enough. When we start actually
emitting packets we will need to provide proper hooks.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
8d9772f6a7
v3dv: implement vkGetDeviceQueue
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
41a5719927
v3dv: implement vkCreateDevice
...
We will probably have to amend this as we make progress with the
implementation, but for now this is enough.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
1c9f9d8fcb
v3dv: implement vkGetPhysicalDeviceQueueFamilyProperties
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
37472a6aa3
v3dv: amend vkEnumerateInstanceExtensionProperties to handle layers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
c2dd7bf634
v3dv: implement vkEnumerateDeviceExtensionProperties
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
10e8967b9b
v3dv: implement vkGetPhysicalDeviceFeatures
...
For now we don't support any optional feature, we will turn them on
as they get implemented.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
e75d462950
v3dv: implement vkGetPhysicalDeviceMemoryProperties
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00