freedreno/fdl: Add STRUCTSIZETEXELS arg

Turnip needs this for accel structures.

Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39141>
This commit is contained in:
Rob Clark 2026-01-06 08:58:49 -08:00 committed by Marge Bot
parent 6db51151b5
commit 34944f85cd
3 changed files with 9 additions and 5 deletions

View file

@ -537,7 +537,8 @@ FD_GENX(fdl6_view_init);
template <chip CHIP>
void
fdl6_buffer_view_init(uint32_t *descriptor, enum pipe_format format,
const uint8_t *swiz, uint64_t iova, uint32_t size)
const uint8_t *swiz, uint64_t iova, uint32_t size,
uint32_t struct_size_texels)
{
unsigned elem_size = util_format_get_blocksize(format);
unsigned elements = size / elem_size;
@ -561,7 +562,7 @@ fdl6_buffer_view_init(uint32_t *descriptor, enum pipe_format format,
COND(util_format_is_srgb(format), A6XX_TEX_CONST_0_SRGB);
descriptor[1] = A6XX_TEX_CONST_1_WIDTH(elements & ((1 << 15) - 1)) |
A6XX_TEX_CONST_1_HEIGHT(elements >> 15);
descriptor[2] = A6XX_TEX_CONST_2_STRUCTSIZETEXELS(1) |
descriptor[2] = A6XX_TEX_CONST_2_STRUCTSIZETEXELS(struct_size_texels) |
A6XX_TEX_CONST_2_STARTOFFSETTEXELS(texel_offset) |
A6XX_TEX_CONST_2_TYPE(A6XX_TEX_BUFFER);
descriptor[4] = base_iova;
@ -570,7 +571,7 @@ fdl6_buffer_view_init(uint32_t *descriptor, enum pipe_format format,
descriptor[0] = A8XX_TEX_MEMOBJ_0_INSTANCE_DESC_BASE_LO(iova);
descriptor[1] = A8XX_TEX_MEMOBJ_1_BASE_HI(iova >> 32) |
A8XX_TEX_MEMOBJ_1_TYPE(A6XX_TEX_BUFFER) |
A8XX_TEX_MEMOBJ_1_STRUCTSIZETEXELS(1);
A8XX_TEX_MEMOBJ_1_STRUCTSIZETEXELS(struct_size_texels);
descriptor[2] = A8XX_TEX_MEMOBJ_2_WIDTH(elements & ((1 << 15) - 1)) |
A8XX_TEX_MEMOBJ_2_HEIGHT(elements >> 15) |
A8XX_TEX_MEMOBJ_2_SAMPLES(MSAA_ONE);

View file

@ -475,7 +475,8 @@ fdl6_view_init(struct fdl6_view *view, const struct fdl_layout **layouts,
template <chip CHIP>
void
fdl6_buffer_view_init(uint32_t *descriptor, enum pipe_format format,
const uint8_t *swiz, uint64_t iova, uint32_t size);
const uint8_t *swiz, uint64_t iova, uint32_t size,
uint32_t struct_size_texels = 1);
#endif
#endif /* FREEDRENO_LAYOUT_H_ */

View file

@ -9,6 +9,7 @@
#include "tu_device.h"
#include "tu_formats.h"
template <chip CHIP>
VKAPI_ATTR VkResult VKAPI_CALL
tu_CreateBufferView(VkDevice _device,
const VkBufferViewCreateInfo *pCreateInfo,
@ -28,7 +29,7 @@ tu_CreateBufferView(VkDevice _device,
uint8_t swiz[4] = { PIPE_SWIZZLE_X, PIPE_SWIZZLE_Y, PIPE_SWIZZLE_Z,
PIPE_SWIZZLE_W };
TU_CALLX(device, fdl6_buffer_view_init)(
fdl6_buffer_view_init<CHIP>(
view->descriptor, vk_format_to_pipe_format(view->vk.format),
swiz, vk_buffer_address(&buffer->vk, view->vk.offset), view->vk.range);
@ -36,6 +37,7 @@ tu_CreateBufferView(VkDevice _device,
return VK_SUCCESS;
}
TU_GENX(tu_CreateBufferView);
VKAPI_ATTR void VKAPI_CALL
tu_DestroyBufferView(VkDevice _device,