Merged update from upstream sources
This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/mesa.git#e4ffbf1534bd0a054a08e25890336740f0568756
This commit is contained in:
parent
9dff04f959
commit
50c2fd9e41
89
fix-egl.patch
Normal file
89
fix-egl.patch
Normal file
@ -0,0 +1,89 @@
|
||||
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
|
||||
index 8747ef4aa8a..3b34e32cd21 100644
|
||||
--- a/src/gallium/drivers/iris/iris_resource.c
|
||||
+++ b/src/gallium/drivers/iris/iris_resource.c
|
||||
@@ -1125,6 +1125,20 @@ iris_flush_resource(struct pipe_context *ctx, struct pipe_resource *resource)
|
||||
0, INTEL_REMAINING_LAYERS,
|
||||
mod ? mod->aux_usage : ISL_AUX_USAGE_NONE,
|
||||
mod ? mod->supports_clear_color : false);
|
||||
+
|
||||
+ if (!res->mod_info && res->aux.usage != ISL_AUX_USAGE_NONE) {
|
||||
+ /* flush_resource may be used to prepare an image for sharing external
|
||||
+ * to the driver (e.g. via eglCreateImage). To account for this, make
|
||||
+ * sure to get rid of any compression that a consumer wouldn't know how
|
||||
+ * to handle.
|
||||
+ */
|
||||
+ for (int i = 0; i < IRIS_BATCH_COUNT; i++) {
|
||||
+ if (iris_batch_references(&ice->batches[i], res->bo))
|
||||
+ iris_batch_flush(&ice->batches[i]);
|
||||
+ }
|
||||
+
|
||||
+ iris_resource_disable_aux(res);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/src/gallium/frontends/dri/dri_helpers.c b/src/gallium/frontends/dri/dri_helpers.c
|
||||
index 01a1fb3d96c..5e87df35a55 100644
|
||||
--- a/src/gallium/frontends/dri/dri_helpers.c
|
||||
+++ b/src/gallium/frontends/dri/dri_helpers.c
|
||||
@@ -258,7 +258,9 @@ dri2_create_image_from_renderbuffer2(__DRIcontext *context,
|
||||
int renderbuffer, void *loaderPrivate,
|
||||
unsigned *error)
|
||||
{
|
||||
- struct gl_context *ctx = ((struct st_context *)dri_context(context)->st)->ctx;
|
||||
+ struct st_context *st_ctx = (struct st_context *)dri_context(context)->st;
|
||||
+ struct gl_context *ctx = st_ctx->ctx;
|
||||
+ struct pipe_context *p_ctx = st_ctx->pipe;
|
||||
struct gl_renderbuffer *rb;
|
||||
struct pipe_resource *tex;
|
||||
__DRIimage *img;
|
||||
@@ -299,6 +301,13 @@ dri2_create_image_from_renderbuffer2(__DRIcontext *context,
|
||||
|
||||
pipe_resource_reference(&img->texture, tex);
|
||||
|
||||
+ /* If the resource supports EGL_MESA_image_dma_buf_export, make sure that
|
||||
+ * it's in a shareable state. Do this now while we still have the access to
|
||||
+ * the context.
|
||||
+ */
|
||||
+ if (dri2_get_mapping_by_format(img->dri_format))
|
||||
+ p_ctx->flush_resource(p_ctx, tex);
|
||||
+
|
||||
*error = __DRI_IMAGE_ERROR_SUCCESS;
|
||||
return img;
|
||||
}
|
||||
@@ -326,7 +335,9 @@ dri2_create_from_texture(__DRIcontext *context, int target, unsigned texture,
|
||||
void *loaderPrivate)
|
||||
{
|
||||
__DRIimage *img;
|
||||
- struct gl_context *ctx = ((struct st_context *)dri_context(context)->st)->ctx;
|
||||
+ struct st_context *st_ctx = (struct st_context *)dri_context(context)->st;
|
||||
+ struct gl_context *ctx = st_ctx->ctx;
|
||||
+ struct pipe_context *p_ctx = st_ctx->pipe;
|
||||
struct gl_texture_object *obj;
|
||||
struct pipe_resource *tex;
|
||||
GLuint face = 0;
|
||||
@@ -376,6 +387,13 @@ dri2_create_from_texture(__DRIcontext *context, int target, unsigned texture,
|
||||
|
||||
pipe_resource_reference(&img->texture, tex);
|
||||
|
||||
+ /* If the resource supports EGL_MESA_image_dma_buf_export, make sure that
|
||||
+ * it's in a shareable state. Do this now while we still have the access to
|
||||
+ * the context.
|
||||
+ */
|
||||
+ if (dri2_get_mapping_by_format(img->dri_format))
|
||||
+ p_ctx->flush_resource(p_ctx, tex);
|
||||
+
|
||||
*error = __DRI_IMAGE_ERROR_SUCCESS;
|
||||
return img;
|
||||
}
|
||||
@@ -547,6 +565,9 @@ dri2_get_mapping_by_fourcc(int fourcc)
|
||||
const struct dri2_format_mapping *
|
||||
dri2_get_mapping_by_format(int format)
|
||||
{
|
||||
+ if (format == __DRI_IMAGE_FORMAT_NONE)
|
||||
+ return NULL;
|
||||
+
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(dri2_format_table); i++) {
|
||||
if (dri2_format_table[i].dri_format == format)
|
||||
return &dri2_format_table[i];
|
11
mesa.spec
11
mesa.spec
@ -54,7 +54,7 @@ Name: mesa
|
||||
Summary: Mesa graphics libraries
|
||||
%global ver 20.3.3
|
||||
Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)}
|
||||
Release: 5%{?dist}
|
||||
Release: 7%{?dist}
|
||||
License: MIT
|
||||
URL: http://www.mesa3d.org
|
||||
|
||||
@ -69,6 +69,9 @@ Patch0: 0001-device-select-layer-update-for-vulkan-1.2.patch
|
||||
# fix lvp extension missing
|
||||
Patch1: 0001-lavapipe-fix-missing-piece-of-VK_KHR_get_physical_de.patch
|
||||
|
||||
# fix qemu/egl issue
|
||||
Patch2: fix-egl.patch
|
||||
|
||||
BuildRequires: meson >= 0.45
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
@ -602,6 +605,12 @@ popd
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Jan 29 2021 Dave Airlie <airlied@redhat.com> - 20.3.3-7
|
||||
- Backport upstream fix for EGL issues with qemu
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20.3.3-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Jan 22 2021 Tom Stellard <tstellar@redhat.com> - 20.3.3-5
|
||||
- Rebuild for clang-11.1.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user