* update mesa to 1:24.1.4-1
This commit is contained in:
parent
74315c7deb
commit
eff193c980
@ -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
@ -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
|
|
||||||
|
|
864
mesa/PKGBUILD
864
mesa/PKGBUILD
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user