Alejandro Piñeiro
15fb14ca1e
v3dv/cmd_buffer: add shader source bos to cmd_buffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
8431196eb0
v3dv/cmd_buffer: start to emit draw packets
...
Starting using only the packet VERTEX_ARRAY_PRIMS
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
67aa8029a8
v3dv/cmd_buffer: emit shader_state packets
...
Values still doesn't take into account having vertex elements data,
but keeps some of that half-done code in comments. It would be better
to do that when we get an example using it.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Iago Toral Quiroga
746cfff3a6
v3dv: flush at the end of each subpass
...
We can't start a new BCL if we haven't flushed the current one, so
make sure we do that at the end of each subpass for now.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Iago Toral Quiroga
e163ea1118
v3dv: emit tile loads
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
29b6e29378
v3dv/cmd_buffer: emit Viewport packets
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
7bfe1db93c
v3dv/cmd_buffer: emit Scissor packets
...
As this is done as part of CmdDraw, we also add the initial stub of
such function here
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
d479f86284
v3dv/cmd_buffer: init command buffer dynamic state during pipeline bind
...
So copying it from the pipeline to the cmd_buffer if defined.
Starting with Viewport/Scissor dynamic state.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
f752cdbab1
v3dv/pipeline: start to track dynamic state
...
Starting with Viewport/Scissor data from VkGraphicsPipelineCreateInfo.
Note that initially this can be somewhat counter-intuitive. What we
are really doing it is filling up the structs with the dynamic stuff
from the pipeline, when such is not defined as dynamic. This is what
anv/radv does, and basically means that we treat both in the same way,
so easier after that.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
5285d83974
v3dv: CmdSetViewport and CmdSetScissor implementation
...
This commit also introduces adding dynamic state definitions, dirty
flags, and setting them on such methods, although this commit still
doesn't use all that info yet.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
fca4dcee9f
v3dv: initial stub for CmdBindPipeline
...
Right now it only sets the pipeline to the command buffer state.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
60145629a2
v3dv: initial CreateGraphicsPipeline/DestroyPipeline implementation
...
The basic to get the spirv built to nir, including calling some common
nir passes. Pending deep review if all those are needed or if we miss
some, but for that it would be better to be able to run existing
tests.
Enough to get assembly generated for simple tests.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:26 +00:00
Alejandro Piñeiro
6cb24a3b39
v3dv/format: add v3dv_get_format_swizzle
...
Heavily based on the equivalent v3d v3d_get_formar_swizzle.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Alejandro Piñeiro
62ca997476
v3d/compiler: num_tex_used on v3d_key
...
We would need on OpenGL to update values for all the textures used. On
OpenGL that value can be always took from the context or the nir
shader, but there are cases on Vulkan that it is not the case, or
would force up to recompute it.
Acked-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
3f00638cff
v3dv: setup color clear values at subpass setup time
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
9e6bf4eebc
v3dv: be more conservative resetting command buffer state
...
We don't want to reset everything, but setting some pointer fields
to NULL should help debug issues better.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
cdc9660662
v3dv: implement vkQueueSubmit
...
For now this only supports a single command buffer submit without any kind
of sempaphores or fences involved.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
570ff24d3f
v3dv: clear set of BOs in the command buffer on reset
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
bd3c28bf69
v3dv: keep track of the numbre of BOs in a command buffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
bb727684e8
v3dv: create the command buffer BO set before we init CLs
...
The init of the CLs doesn't create any BOs for now, but this looks
like a sensible decision to future-proof things.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
6e4471c14c
v3dv: implement vkEndCommandBuffer
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
e6e80d3f9b
v3dv: emit the render command list
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
Iago Toral Quiroga
61399b21c0
v3dv: emit scissor to render area and precompute hw color clear values
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766 >
2020-10-13 21:21:25 +00:00
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