Package: beignet / 1.3.2-8

Metadata

Package Version Patches format
beignet 1.3.2-8 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
Debian compliant compiler flags handling.patch | (download)

CMakeLists.txt | 5 2 + 3 - 0 !
backend/src/sys/platform.hpp | 9 0 + 9 - 0 !
utests/CMakeLists.txt | 4 2 + 2 - 0 !
3 files changed, 4 insertions(+), 14 deletions(-)

 set compiler flags

Respect CFLAGS,CXXFLAGS,LDFLAGS (security hardening etc.)
Be verbose
Disable non-policy-compliant instruction set assumptions (slows the
OpenCL compiler by ~few%, no effect on OpenCL execution speed)

support kfreebsd.patch | (download)

src/cl_device_id.c | 20 19 + 1 - 0 !
src/cl_event.c | 1 1 + 0 - 0 !
2 files changed, 20 insertions(+), 1 deletion(-)

 don't try to use sysinfo or clock_monotonic_raw on non-linux

Fixes two FTBFS on kfreebsd due to use of Linux-specific features:
https://buildd.debian.org/status/fetch.php?pkg=beignet&arch=kfreebsd-amd64&ver=1.0.1-3&stamp=1425101150
https://buildd.debian.org/status/fetch.php?pkg=beignet&arch=kfreebsd-amd64&ver=1.1.1-1&stamp=1445338350

reduce notfound output.patch | (download)

src/cl_device_id.c | 4 2 + 2 - 0 !
src/intel/intel_driver.c | 2 0 + 2 - 0 !
2 files changed, 2 insertions(+), 4 deletions(-)

 reduce error spew on unsupported hardware

Loading beignet on unsupported hardware produces ~20 errors, even
if another ICD is also installed that does support the hardware.
Replace these with one message that explicitly says what to do.

update docs.patch | (download)

docs/Beignet.mdwn | 56 30 + 26 - 0 !
docs/Beignet/Backend.mdwn | 4 1 + 3 - 0 !
docs/index.mdwn | 1 1 + 0 - 0 !
src/cl_device_id.c | 2 1 + 1 - 0 !
4 files changed, 33 insertions(+), 30 deletions(-)

 update documentation

Reflect #767148 fix, high precision now being default, and releases.
Clarify what hardware is supported.
Add Debian specific information; recommend the Debian BTS rather than
mostly-inactive upstream contact points.

ship test tool.patch | (download)

CMakeLists.txt | 3 1 + 2 - 0 !
utests/CMakeLists.txt | 5 3 + 2 - 0 !
utests/utest_helper.cpp | 34 29 + 5 - 0 !
3 files changed, 33 insertions(+), 9 deletions(-)

 ship utest_run testing tool

Use ICD mode (to allow testing any ICD, not just beignet), but
include builtin_kernel_block_motion_estimate_intel when testing beignet.

Allow testing CPU devices (the "only GPU device is supported right now"
comment appears to refer to beignet-the-ICD, not this test tool).

Give meaningful errors when there is nothing to test.

find python35.patch | (download)

CMakeLists.txt | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 find python 3.5

Workaround for
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802826
https://bugs.launchpad.net/ubuntu/+source/cmake/+bug/1515419

docs broken links.patch | (download)

docs/Beignet.mdwn | 21 11 + 10 - 0 !
docs/howto/video-motion-estimation-howto.mdwn | 6 3 + 3 - 0 !
2 files changed, 14 insertions(+), 13 deletions(-)

 fix broken links and list syntax in documentation

The upstream documentation is meant to be a part of a larger wiki,
and does not work properly when built as-is on its own

cl_accelerator_intel.patch | (download)

include/CL/cl_intel.h | 109 109 + 0 - 0 !
src/cl_accelerator_intel.h | 1 1 + 0 - 0 !
src/cl_driver.h | 1 1 + 0 - 0 !
3 files changed, 111 insertions(+)

 move cl_intel_accelerator to cl_intel.h

Beignet's own headers define cl_intel_accelerator etc directly in
cl_ext.h, but khronos-opencl-headers 2.2~ places these in a separate
file cl_ext_intel.h, and older versions do not include it at all.

add appstream metadata.patch | (download)

CMakeLists.txt | 4 4 + 0 - 0 !
com.intel.beignet.metainfo.xml.in | 17 17 + 0 - 0 !
update_metainfo_xml.py | 33 33 + 0 - 0 !
3 files changed, 54 insertions(+)

 add appstream metadata listing supported hardware

http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html
https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#sect-Metadata-GenericComponent

Upstream agreed in
https://lists.freedesktop.org/archives/beignet/2017-February/008597.html
that this metadata (including parts automatically extracted from
src/cl_device_data.h) can be MIT licensed.

static llvm.patch | (download)

CMake/FindLLVM.cmake | 16 16 + 0 - 0 !
1 file changed, 16 insertions(+)

 statically link to libllvm

When multiple ICDs are installed, libopencl1 needs to dlopen() them all
to find out which one works on the available hardware.  If they are
dynamically linked, this leads to them sharing a libllvm, which has
enough global state that this is likely to error out.  (This is a known
LLVM bug, https://bugs.llvm.org/show_bug.cgi?id=22952 , but currently
has no real fix.)

grammar.patch | (download)

docs/Beignet/Backend.mdwn | 24 12 + 12 - 0 !
1 file changed, 12 insertions(+), 12 deletions(-)

 fix grammar in documentation

clearer type errors.patch | (download)

backend/src/backend/gen_insn_selection.cpp | 24 12 + 12 - 0 !
1 file changed, 12 insertions(+), 12 deletions(-)

 more user-friendly "type not supported" errors

(It would be even better if these returned build failure
rather than asserting, but that's not as easy)
     
885423.patch | (download)

backend/src/backend/gen_insn_selection_optimize.cpp | 32 4 + 28 - 0 !
1 file changed, 4 insertions(+), 28 deletions(-)

 fix self-test fail in some conditions

Reverts upstream 81755054c4c19d821e58456a1a7d601806e60e92

Known triggers are Darktable and the GEGL test suite

Note that this does *not* fix the other Darktable issue
(https://gitlab.freedesktop.org/beignet/beignet/issues/60): beignet still
needs to be blacklisted in Darktable (which it is by default).

disable wayland warning.patch | (download)

src/intel/intel_driver.c | 2 0 + 2 - 0 !
1 file changed, 2 deletions(-)

 disable expected-under-wayland warning

eventchain memory leak.patch | (download)

src/cl_event.c | 31 24 + 7 - 0 !
src/cl_event.h | 2 1 + 1 - 0 !
2 files changed, 25 insertions(+), 8 deletions(-)

 don't leak memory on long chains of events

Delete event->depend_events when no longer needed to avoid keeping
the whole dependency tree in memory as long as the final event exists

llvm6 support.patch | (download)

backend/src/llvm/llvm_to_gen.cpp | 4 4 + 0 - 0 !
backend/src/llvm/llvm_unroll.cpp | 5 4 + 1 - 0 !
2 files changed, 8 insertions(+), 1 deletion(-)

 support llvm 6

LLVMContext::setDiagnosticHandler is renamed
LoopInfo::markAsRemoved is partly replaced by LoopInfo::erase,
but that doesn't remove the loop from the queue

llvm7 support.patch | (download)

CMake/FindLLVM.cmake | 2 1 + 1 - 0 !
backend/src/backend/gen_program.cpp | 8 8 + 0 - 0 !
backend/src/backend/program.cpp | 4 4 + 0 - 0 !
backend/src/llvm/ExpandLargeIntegers.cpp | 2 1 + 1 - 0 !
backend/src/llvm/llvm_bitcode_link.cpp | 4 4 + 0 - 0 !
backend/src/llvm/llvm_includes.hpp | 4 4 + 0 - 0 !
6 files changed, 22 insertions(+), 2 deletions(-)

 add llvm 7 support

1.Change linking order, as clangCodeGen now links to clangFrontend
2.Pass references not pointers to WriteBitcodeToFile and CloneModule
3.Add the headers that LoopSimplifyID, LCSSAID and
some create*Pass have moved to
4.Define our DEBUG whether or not we just undefined LLVM's
(theirs is now LLVM_DEBUG, but we never actually use it)

accept old create queue.patch | (download)

src/cl_api_command_queue.c | 34 5 + 29 - 0 !
1 file changed, 5 insertions(+), 29 deletions(-)

 allow clcreatecommandqueue to create out-of-order queues

reduce notfound output2.patch | (download)

src/intel/intel_driver.c | 30 30 + 0 - 0 !
1 file changed, 30 insertions(+)

 reduce error spew on unsupported or hybrid hardware

Explicitly check if the device is i915 before calling random ioctl()s
to avoid triggering pointless user-visible error messages if it is not.

coffeelake.patch | (download)

backend/src/backend/gen_program.cpp | 5 5 + 0 - 0 !
src/cl_device_data.h | 54 53 + 1 - 0 !
src/cl_device_id.c | 97 95 + 2 - 0 !
3 files changed, 153 insertions(+), 3 deletions(-)

 enable coffee lake support

Little change is needed here because the graphics core is the same as
Kaby Lake.  Includes all PCI IDs currently supported by the kernel driver
in the drm-intel tree (Coffee Lake S, H and U devices in GT 1, 2 and 3
configurations).

in order queue.patch | (download)

src/cl_api.c | 9 6 + 3 - 0 !
src/cl_api_kernel.c | 3 2 + 1 - 0 !
src/cl_api_mem.c | 58 41 + 17 - 0 !
src/cl_command_queue.h | 5 5 + 0 - 0 !
src/cl_command_queue_enqueue.c | 26 15 + 11 - 0 !
src/cl_gl_api.c | 4 2 + 2 - 0 !
6 files changed, 71 insertions(+), 34 deletions(-)

 make in-order command queues actually be in-order

When beignet added out-of-order execution support (7fd45f15),
it made *all* queues use it, even ones that are nominally in-order.

While using out-of-order queues is probably a good idea when possible
(for performance), the OpenCL spec does not allow it to be the default.

reproducibility.patch | (download)

backend/src/libocl/CMakeLists.txt | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 make .h timestamps in .pch file reproducible

Full reproducibility also requires a fixed build path
and the LLVM/Clang patch in the referenced bug.

accept ignore g.patch | (download)

backend/src/backend/program.cpp | 6 6 + 0 - 0 !
1 file changed, 6 insertions(+)

 don't error out when -g is passed

llvm8 support.patch | (download)

backend/src/CMakeLists.txt | 1 1 + 0 - 0 !
backend/src/backend/gen_register.hpp | 1 1 + 0 - 0 !
backend/src/libocl/tmpl/ocl_integer.tmpl.cl | 9 5 + 4 - 0 !
backend/src/llvm/llvm_gen_backend.cpp | 8 8 + 0 - 0 !
4 files changed, 15 insertions(+), 4 deletions(-)

 fix build with llvm/clang 8

llvm9 support.patch | (download)

CMake/FindLLVM.cmake | 3 3 + 0 - 0 !
backend/src/llvm/llvm_device_enqueue.cpp | 5 5 + 0 - 0 !
backend/src/llvm/llvm_intrinsic_lowering.cpp | 4 4 + 0 - 0 !
backend/src/llvm/llvm_profiling.cpp | 16 16 + 0 - 0 !
backend/src/llvm/llvm_sampler_fix.cpp | 8 8 + 0 - 0 !
5 files changed, 36 insertions(+)

 fix build with llvm/clang 9

cometlake.patch | (download)

backend/src/backend/gen_program.cpp | 10 10 + 0 - 0 !
src/cl_device_data.h | 65 64 + 1 - 0 !
src/cl_device_id.c | 102 100 + 2 - 0 !
3 files changed, 174 insertions(+), 3 deletions(-)

 add comet lake/amber lake/more coffee lake support

Minimally tested, I suggest using intel-opencl-icd instead if possible