* update mesa to 1:24.1.4-1

This commit is contained in:
Alexander Baldeck 2024-07-23 11:24:02 +02:00
parent 74315c7deb
commit eff193c980
4 changed files with 814 additions and 951 deletions

View File

@ -0,0 +1,106 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: David Rosca <david.rosca@amd.com>
Date: Thu, 18 Jul 2024 19:15:13 +0200
Subject: [PATCH] Revert "frontends/va: Fix AV1 slice_data_offset with multiple
slice data buffers"
This commit is fixing an issue where all AV1 slice data offsets always point
into the first slice data buffer, even when multiple slice data buffers
are submitted. However, after b0d6e58d88f ("Reapply "radeonsi/vcn: AV1 skip the redundant bs resize"")
only the first slice data buffer will be sent to decoder and the incorrect
behavior is required, so this commit also needs to be reverted.
This reverts commit 6746d4df6eac83d048e88c2d54aa19e7c1a0a696.
---
src/gallium/frontends/va/picture.c | 11 +++--------
src/gallium/frontends/va/picture_av1.c | 4 ++--
src/gallium/frontends/va/va_private.h | 2 +-
3 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/src/gallium/frontends/va/picture.c b/src/gallium/frontends/va/picture.c
index 59692aeee91c..a2bb608ec96a 100644
--- a/src/gallium/frontends/va/picture.c
+++ b/src/gallium/frontends/va/picture.c
@@ -299,7 +299,7 @@ handleIQMatrixBuffer(vlVaContext *context, vlVaBuffer *buf)
}
static void
-handleSliceParameterBuffer(vlVaContext *context, vlVaBuffer *buf, unsigned num_slices, unsigned slice_offset)
+handleSliceParameterBuffer(vlVaContext *context, vlVaBuffer *buf, unsigned num_slices)
{
switch (u_reduce_video_profile(context->templat.profile)) {
case PIPE_VIDEO_FORMAT_MPEG12:
@@ -331,7 +331,7 @@ handleSliceParameterBuffer(vlVaContext *context, vlVaBuffer *buf, unsigned num_s
break;
case PIPE_VIDEO_FORMAT_AV1:
- vlVaHandleSliceParameterBufferAV1(context, buf, num_slices, slice_offset);
+ vlVaHandleSliceParameterBufferAV1(context, buf, num_slices);
break;
default:
@@ -968,7 +968,6 @@ vlVaRenderPicture(VADriverContextP ctx, VAContextID context_id, VABufferID *buff
unsigned i;
unsigned slice_idx = 0;
- unsigned slice_offset = 0;
vlVaBuffer *seq_param_buf = NULL;
if (!ctx)
@@ -1024,17 +1023,13 @@ vlVaRenderPicture(VADriverContextP ctx, VAContextID context_id, VABufferID *buff
slice_idx is the zero based number of total slices received
before this call to handleSliceParameterBuffer
-
- slice_offset is the slice offset in bitstream buffer
*/
- handleSliceParameterBuffer(context, buf, slice_idx, slice_offset);
+ handleSliceParameterBuffer(context, buf, slice_idx);
slice_idx += buf->num_elements;
} break;
case VASliceDataBufferType:
vaStatus = handleVASliceDataBufferType(context, buf);
- if (slice_idx)
- slice_offset += buf->size;
break;
case VAProcPipelineParameterBufferType:
diff --git a/src/gallium/frontends/va/picture_av1.c b/src/gallium/frontends/va/picture_av1.c
index c014b0b1168c..e6f2652e3623 100644
--- a/src/gallium/frontends/va/picture_av1.c
+++ b/src/gallium/frontends/va/picture_av1.c
@@ -396,18 +396,18 @@ void vlVaHandlePictureParameterBufferAV1(vlVaDriver *drv, vlVaContext *context,
context->desc.av1.slice_parameter.slice_count = 0;
}
-void vlVaHandleSliceParameterBufferAV1(vlVaContext *context, vlVaBuffer *buf, unsigned num_slices, unsigned slice_offset)
+void vlVaHandleSliceParameterBufferAV1(vlVaContext *context, vlVaBuffer *buf, unsigned num_slices)
{
for (uint32_t buffer_idx = 0; buffer_idx < buf->num_elements; buffer_idx++) {
uint32_t slice_index =
/* slices obtained so far from vaRenderPicture in previous calls*/
num_slices +
/* current slice index processing this VASliceParameterBufferAV1 */
buffer_idx;
VASliceParameterBufferAV1 *av1 = &(((VASliceParameterBufferAV1*)buf->data)[buffer_idx]);
context->desc.av1.slice_parameter.slice_data_size[slice_index] = av1->slice_data_size;
- context->desc.av1.slice_parameter.slice_data_offset[slice_index] = slice_offset + av1->slice_data_offset;
+ context->desc.av1.slice_parameter.slice_data_offset[slice_index] = av1->slice_data_offset;
context->desc.av1.slice_parameter.slice_data_row[slice_index] = av1->tile_row;
context->desc.av1.slice_parameter.slice_data_col[slice_index] = av1->tile_column;
context->desc.av1.slice_parameter.slice_data_anchor_frame_idx[slice_index] = av1->anchor_frame_idx;
diff --git a/src/gallium/frontends/va/va_private.h b/src/gallium/frontends/va/va_private.h
index 007ed95ce7f7..ad30f3bad2a9 100644
--- a/src/gallium/frontends/va/va_private.h
+++ b/src/gallium/frontends/va/va_private.h
@@ -540,7 +540,7 @@ void vlVaHandlePictureParameterBufferVP9(vlVaDriver *drv, vlVaContext *context,
void vlVaHandleSliceParameterBufferVP9(vlVaContext *context, vlVaBuffer *buf);
void vlVaDecoderVP9BitstreamHeader(vlVaContext *context, vlVaBuffer *buf);
void vlVaHandlePictureParameterBufferAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
-void vlVaHandleSliceParameterBufferAV1(vlVaContext *context, vlVaBuffer *buf, unsigned num_slices, unsigned slice_offset);
+void vlVaHandleSliceParameterBufferAV1(vlVaContext *context, vlVaBuffer *buf, unsigned num_slices);
void getEncParamPresetH264(vlVaContext *context);
void getEncParamPresetH265(vlVaContext *context);
void getEncParamPresetAV1(vlVaContext *context);

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +0,0 @@
From f5078cd9198e0d50814a66ecd4a96f105b2d36d5 Mon Sep 17 00:00:00 2001
From: Yukari Chiba <i@0x7f.cc>
Date: Thu, 21 Mar 2024 16:42:11 +0800
Subject: [PATCH] llvmpipe: make unnamed global have internal linkage
---
src/gallium/drivers/llvmpipe/lp_state_fs.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index af7f8c4378d18..03ea7327ef27c 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -3310,6 +3310,7 @@ generate_fragment(struct llvmpipe_context *lp,
LLVMValueRef glob_sample_pos =
LLVMAddGlobal(gallivm->module,
LLVMArrayType(flt_type, key->coverage_samples * 2), "");
+ LLVMSetLinkage(glob_sample_pos, LLVMInternalLinkage);
LLVMValueRef sample_pos_array;
if (key->multisample && key->coverage_samples == 4) {
--
GitLab

File diff suppressed because it is too large Load Diff