mesa.inc: potentially enable texture float for gallium
PATCH v2 1/1 mesa.inc: potentially enable texture float for gallium
Following the lead from Fedora (as suggested by Rob Clark) always enable --enable-texture-float for all gallium drivers, but then modify the code to not enable it where the implementation isn't backed by hardware.
Somewhere along the path from OpenGL ES 2.0 to OpenGL ES 3.0 are some algorithms that are encumbered by patents. These algorithms are enabled with mesa's --enable-texture-float configure flag. However, if hardware acceleration is being used and the hardware supports --enable-texture-float, it means the hardware vendor has paid for the patents.
Note that with this solution, non-hardware gallium drivers (e.g. swrast) can't --enable-texture-float, which might cause issues with some piglit tests.
This solution was disgussed and agreed-to on the mailing list:
http://lists.openembedded.org/pipermail/openembedded-core/2017-May/137233.html
--- .../mesa/files/0002-hardware-gloat.patch | 50 ++++++++++++++++++++++ meta/recipes-graphics/mesa/mesa.inc | 2 +- meta/recipes-graphics/mesa/mesa_17.1.1.bb | 1 + 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch
meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch new file +50 -0
@@ -0,0 +1,50 @@ +From 00bcd599310dc7fce4fe336ffd85902429051a0c Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko <[email protected]> +Date: Sun, 20 Mar 2016 13:27:04 +0100 +Subject: [PATCH 2/4] hardware gloat + +Signed-off-by: Igor Gnatenko <[email protected]> +--- + src/gallium/drivers/llvmpipe/lp_screen.c | 7 +++++++ + src/gallium/drivers/softpipe/sp_screen.c | 7 +++++++ + 2 files changed, 14 insertions(+) + +diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c +index 4f61de8..3b0ec77 100644 +--- a/src/gallium/drivers/llvmpipe/lp_screen.c ++++ b/src/gallium/drivers/llvmpipe/lp_screen.c +@@ -411,6 +411,13 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen, + if (!format_desc) + return FALSE; + ++ if ((bind & PIPE_BIND_RENDER_TARGET) && ++ format != PIPE_FORMAT_R9G9B9E5_FLOAT && ++ format != PIPE_FORMAT_R11G11B10_FLOAT && ++ util_format_is_float(format)) { ++ return FALSE; ++ } ++ + assert(target == PIPE_BUFFER || + target == PIPE_TEXTURE_1D || + target == PIPE_TEXTURE_1D_ARRAY || +diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c +index 031602b..c279120 100644 +--- a/src/gallium/drivers/softpipe/sp_screen.c ++++ b/src/gallium/drivers/softpipe/sp_screen.c +@@ -358,6 +358,13 @@ softpipe_is_format_supported( struct pipe_screen *screen, + if (!format_desc) + return FALSE; + ++ if ((bind & PIPE_BIND_RENDER_TARGET) && ++ format != PIPE_FORMAT_R9G9B9E5_FLOAT && ++ format != PIPE_FORMAT_R11G11B10_FLOAT && ++ util_format_is_float(format)) { ++ return FALSE; ++ } ++ + if (sample_count > 1) + return FALSE; + +-- +2.7.4 +
meta/recipes-graphics/mesa/mesa.inc +1 -1
@@ -64,7 +64,7 @@ GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALL GALLIUMDRIVERS_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" # keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers -PACKAGECONFIG[gallium] = "--with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers" +PACKAGECONFIG[gallium] = "--enable-texture-float --with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers" MESA_LLVM_RELEASE ?= "3.3" PACKAGECONFIG[gallium-llvm] = "--enable-gallium-llvm --enable-llvm-shared-libs, --disable-gallium-llvm, llvm${MESA_LLVM_RELEASE} \ ${@'elfutils' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}"
meta/recipes-graphics/mesa/mesa_17.1.1.bb +1 -0
@@ -5,6 +5,7 @@ SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/mesa-${PV}.tar.xz \ file://disable-asm-on-non-gcc.patch \ file://0001-Use-wayland-scanner-in-the-path.patch \ file://0001-util-rand_xor-add-missing-include-statements.patch \ + file://0002-hardware-gloat.patch \ " SRC_URI[md5sum] = "a4844bc6052578574f9629458bcbb749"
Signature · 1 line
2.13.0
✗ patchtest: failure for mesa.inc: potentially enable texture float for gallium
== Series Details ==
Series: mesa.inc: potentially enable texture float for gallium
Revision: 1
URL : https://patchwork.openembedded.org/series/7177/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Added patch file is missing Upstream-Status in the header [test_upstream_status_presence]
Suggested fix Add Upstream-Status: <status> to the header of meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch (possible values: Pending, Submitted, Accepted, Backport, Denied, Inappropriate)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe
Re: ✗ patchtest: failure for mesa.inc: potentially enable texture float for gallium
Quoted 2 lines · Patchwork
* Issue Added patch file is missing Upstream-Status in the header [
test_upstream_status_presence]
Suggested fix Add Upstream-Status: <status> to the header ofmeta/recipes-graphics/mesa/files/0002-hardware-gloat.patch(possible values: Pending, Submitted, Accepted, Backport, Denied, Inappropriate)
If I didn't write the patch, how am I responsible for its upstream status?
Re: ✗ patchtest: failure for mesa.inc: potentially enable texture float for gallium
Quoted 7 lines · Trevor Woerner
Quoted 2 lines · Patchwork
* Issue Added patch file is missing Upstream-Status in the header [
test_upstream_status_presence]
Suggested fix Add Upstream-Status: <status> to the header ofmeta/recipes-graphics/mesa/files/0002-hardware-gloat.patch(possible values: Pending, Submitted, Accepted, Backport, Denied, Inappropriate)If I didn't write the patch, how am I responsible for its upstream status?
https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations
Re: ✗ patchtest: failure for mesa.inc: potentially enable texture float for gallium
Quoted 10 lines · Denys Dmytriyenko
Quoted 7 lines · Trevor Woerner
Quoted 2 lines · Patchwork
* Issue Added patch file is missing Upstream-Status in the header [
test_upstream_status_presence]
Suggested fix Add Upstream-Status: <status> to the header ofmeta/recipes-graphics/mesa/files/0002-hardware-gloat.patch(possible values: Pending, Submitted, Accepted, Backport, Denied, Inappropriate)If I didn't write the patch, how am I responsible for its upstream status?
https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations
Ah ok, thanks :-)