| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
AFAICT, it is supported. We don't need to handle any of the new
structs because our BOs can always be exported.
|
|
|
|
| |
AFAICT, it is supported.
|
|
|
|
|
| |
Add tu_bo_init_dmabuf, tu_bo_export_dmabuf, tu_gem_import_dmabuf,
and tu_gem_export_dmabuf.
|
|
|
|
|
|
|
|
| |
If the handle type is unsupported, then the spec requires us to return
VK_ERROR_FORMAT_NOT_SUPPORTED.
Reviewed-by: Chia-I Wu <[email protected]>
Closes: https://gitlab.freedesktop.org/bnieuwenhuizen/mesa/merge_requests/17
|
|
|
|
|
|
|
|
|
|
|
|
| |
A format table is an array of tu_native_format. Table lookup is
done through array indexing.
This commit defines a single format table for core VkFormat. It is
derived from the table in the gallium driver. There might be errors
introduced in the process of the conversion.
When an extension that defines new VkFormat is supported, we need to
add a new table for the extension.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- create tile_load_ib and tile_store_ib at the beginning of each
subpass
- execute the IBs at the end of each subpass
- no DONT_CARE support
- no subpass dependency analysis and subpass merging
- no zs support
- no true VkImageView support
- assume VK_FORMAT_B8G8R8A8_UNORM
- no tiling
- no MSAA
This also removes cur_cs from tu_cmd_buffer.
|
|
|
|
|
|
|
| |
When in TU_CS_MODE_SUB_STREAM, tu_cs_begin_sub_stream (or
tu_cs_end_sub_stream) should be called instead of tu_cs_begin (or
tu_cs_end). It gives the caller a TU_CS_MODE_EXTERNAL cs to emit
commands to.
|
|
|
|
|
|
|
|
|
| |
Add tu_cs_mode and TU_CS_MODE_EXTERNAL. When in
TU_CS_MODE_EXTERNAL, tu_cs wraps an external buffer and can not
grow.
This also moves tu_cs* up in tu_private.h, such that other structs
can embed tu_cs_entry.
|
|
|
|
|
| |
tu_cs_emit_ib emits a CP_INDIRECT_BUFFER for a BO. tu_cs_emit_call
emits a CP_INDIRECT_BUFFER for each entry of a target cs.
|
|
|
|
|
| |
It replaces tu_cs_reserve_space_assert and can be called at any
time to sanity check tu_cs.
|
|
|
|
|
|
| |
Error checking tu_cs_begin/tu_cs_end is too tedious for the callers.
Move tu_cs_add_bo and tu_cs_reserve_entry to tu_cs_reserve_space
such that tu_cs_begin/tu_cs_end never fails.
|
|
|
|
|
| |
We will drop size parameter from tu_cs_begin shortly, such that
tu_cs_begin never fails.
|
|
|
|
|
| |
We will stop calling tu_cs_reserve_entry in tu_cs_end shortly, such
that tu_cs_end never fails.
|
|
|
|
|
| |
Add tu_cs_get_offset, tu_cs_get_size, tu_cs_get_space, and
tu_cs_is_empty.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need the current color/depth/stencil attachments and the current
render area to compute the tiling config.
We compute the tiling config at the beginning of each subpass for
the moment. We should change that when the driver can reorder/merge
subpasses.
It is very common that the render area is the entire framebuffer.
We might want to optimize for the case and compute the tiling config
in tu_framebuffer ctor.
|
|
|
|
| |
Set it to tile alignments, 32x32 on 6xx.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Being the first commit that emits meaningful command packets, there
are many things included in this commit
- tu6_emit_xxx are low-level helpers that emit command packets
without boundary checks
- tu6_xxx are high-level helpers that emit command packets with
boundary checks
- cmdbuf->cs is a pointer to the current CS, so that we can use the
helpers above to emit to other CS
- use cmd as the variable name of tu_cmd_buffer
- there is a per-cmdbuf scratch bo for CP_EVENT_WRITE writeback
- there is a per-cmdbuf debug marker, using scratch reg 7 or 6
depending on whether the cmdbuf is primary or secondary
(olv, after rebase) REG_A6XX_SP_UNKNOWN_AB20 is renamed
|
|
|
|
|
|
|
|
|
|
|
| |
They are used like
tu_cs_reserve_space(...);
tu_cs_emit(...);
...;
tu_cs_reserve_space_assert();
to make sure we reserved enough space at the beginning.
|
|
|
|
|
| |
Reviewed-by: Chia-I Wu <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
tu_bo_list_merge adds an entire list to the current list.
|
|
|
|
|
|
|
|
|
| |
Build drm_msm_gem_submit_bo array directly in tu_bo_list. We might
change this again, but this is good enough for now.
There are other issues as well, such as not using
VkAllocationCallbacks and sloppy error checking. We should revisit
this in the near future. Same to tu_cs.
|
| |
|
|
|
|
| |
This allows the fast path (size check) to be inlined.
|
|
|
|
|
| |
This allows us to assert that there is no dangling command in
tu_cs_begin, rather than discarding them silently.
|
|
|
|
| |
Add comments and error checking.
|
|
|
|
| |
Refactor BO allocation code out of tu_cs_begin. Add error checking.
|
| |
|
| |
|
|
|
|
|
| |
The offset we get from MSM_INFO_GET_OFFSET is an offset into the drm fd
for the purpose of mmaping the buffer.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a radv-style check_space functions + emit functions.
Also puts them in a header as a bunch of inlines, so
(1) we can use them from meta code.
(2) they are inline for performance as these are common and small.
Did not put them in tu_private.h as a bunch of inlines only
clutters up that huge headerfile.
Precise error propagation for memory allocation failures is still
todo.
|
|
|
|
|
|
|
| |
This creates a new fd on each queue submit. I do not go with
DRM_IOCTL_MSM_WAIT_FENCE solely because the path is marked legacy.
Otherwise, we can use the fence id rather than requesting a fence
fd until external fences are supported and enabled.
|
| |
|
|
|
|
| |
Add tu_drm_submitqueue_new and tu_drm_submitqueue_close.
|
|
|
|
| |
Add tu_drm_get_gpu_id and tu_drm_get_gmem_size.
|
|
|
|
| |
Remove libfreedreno_drm dep and unused fd_device.
|
|
|
|
|
| |
The recent change to msm_drm.h changed the APIs in an incompatible
way.
|
|
|
|
| |
It really is too long.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|