diff -Nru mesa-19.2.8/Android.common.mk mesa-20.0.8/Android.common.mk
--- mesa-19.2.8/Android.common.mk 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/Android.common.mk 2020-06-12 01:21:16.000000000 +0000
@@ -39,7 +39,7 @@
-Wno-initializer-overrides \
-Wno-mismatched-tags \
-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \
- -DPACKAGE_BUGREPORT=\"https://gitlab.freedesktop.org/mesa/mesa/issues\"
+ -DPACKAGE_BUGREPORT=\"https://gitlab.freedesktop.org/mesa/mesa/-/issues\"
# XXX: The following __STDC_*_MACROS defines should not be needed.
# It's likely due to a bug elsewhere, but let's temporarily add them
@@ -103,12 +103,9 @@
LOCAL_CFLAGS += -DHAVE_SYS_SHM_H
endif
-ifeq ($(strip $(MESA_ENABLE_ASM)),true)
ifeq ($(TARGET_ARCH),x86)
LOCAL_CFLAGS += \
-DUSE_X86_ASM
-
-endif
endif
ifeq ($(ARCH_ARM_HAVE_NEON),true)
LOCAL_CFLAGS_arm += -DUSE_ARM_ASM
diff -Nru mesa-19.2.8/Android.mk mesa-20.0.8/Android.mk
--- mesa-19.2.8/Android.mk 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/Android.mk 2020-06-12 01:21:16.000000000 +0000
@@ -24,7 +24,7 @@
# BOARD_GPU_DRIVERS should be defined. The valid values are
#
# classic drivers: i915 i965
-# gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv iris lima
+# gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv iris lima panfrost
#
# The main target is libGLES_mesa. For each classic driver enabled, a DRI
# module will also be built. DRI modules will be loaded by libGLES_mesa.
@@ -43,6 +43,7 @@
MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
MESA_PYTHON2 := python
+MESA_PYTHON3 := python3
# Lists to convert driver names to boolean variables
# in form of .
@@ -61,7 +62,8 @@
virgl.HAVE_GALLIUM_VIRGL \
etnaviv.HAVE_GALLIUM_ETNAVIV \
iris.HAVE_GALLIUM_IRIS \
- lima.HAVE_GALLIUM_LIMA
+ lima.HAVE_GALLIUM_LIMA \
+ panfrost.HAVE_GALLIUM_PANFROST
ifeq ($(BOARD_GPU_DRIVERS),all)
MESA_BUILD_CLASSIC := $(filter HAVE_%, $(subst ., , $(classic_drivers)))
@@ -83,33 +85,20 @@
$(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true))
-# host and target must be the same arch to generate matypes.h
-ifeq ($(TARGET_ARCH),$(HOST_ARCH))
-MESA_ENABLE_ASM := true
-else
-MESA_ENABLE_ASM := false
-endif
-
ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),)
MESA_ENABLE_LLVM := true
endif
define mesa-build-with-llvm
- $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5), \
+ $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \
$(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \
- $(if $(filter 6,$(MESA_ANDROID_MAJOR_VERSION)), \
- $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0307 -DMESA_LLVM_VERSION_STRING=\"3.7\")) \
- $(if $(filter 7,$(MESA_ANDROID_MAJOR_VERSION)), \
- $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0308 -DMESA_LLVM_VERSION_STRING=\"3.8\")) \
- $(if $(filter 8,$(MESA_ANDROID_MAJOR_VERSION)), \
- $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0309 -DMESA_LLVM_VERSION_STRING=\"3.9\")) \
- $(if $(filter P,$(MESA_ANDROID_MAJOR_VERSION)), \
- $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0309 -DMESA_LLVM_VERSION_STRING=\"3.9\")) \
+ $(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DMESA_LLVM_VERSION_STRING=\"3.9\") \
$(eval LOCAL_SHARED_LIBRARIES += libLLVM)
endef
# add subdirectories
SUBDIRS := \
+ src/etnaviv \
src/freedreno \
src/gbm \
src/loader \
diff -Nru mesa-19.2.8/.appveyor/appveyor_msvc.bat mesa-20.0.8/.appveyor/appveyor_msvc.bat
--- mesa-19.2.8/.appveyor/appveyor_msvc.bat 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/.appveyor/appveyor_msvc.bat 2020-06-12 01:21:16.000000000 +0000
@@ -0,0 +1,66 @@
+goto %1
+
+:install
+rem Check pip
+if "%buildsystem%" == "scons" (
+ python --version
+ python -m pip --version
+ rem Install Mako
+ python -m pip install Mako==1.0.7
+ rem Install pywin32 extensions, needed by SCons
+ python -m pip install pypiwin32
+ rem Install python wheels, necessary to install SCons via pip
+ python -m pip install wheel
+ rem Install SCons
+ python -m pip install scons==3.0.1
+ call scons --version
+) else (
+ python --version
+ python -m pip install Mako meson
+ meson --version
+
+ rem Install pkg-config, which meson requires even on windows
+ cinst -y pkgconfiglite
+)
+
+rem Install flex/bison
+set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip
+if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%"
+7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
+set Path=%CD%\winflexbison;%Path%
+win_flex --version
+win_bison --version
+rem Download and extract LLVM
+if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%"
+7z x -y "%LLVM_ARCHIVE%" > nul
+if "%buildsystem%" == "scons" (
+ mkdir llvm\bin
+ set LLVM=%CD%\llvm
+) else (
+ move llvm subprojects\
+ copy .appveyor\llvm-wrap.meson subprojects\llvm\meson.build
+)
+goto :eof
+
+:build_script
+if "%buildsystem%" == "scons" (
+ call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1
+) else (
+ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=x86
+ rem We use default-library as static to affect any wraps (such as expat and zlib)
+ rem it would be better if we could set subprojects buildtype independently,
+ rem but I haven't written that patch yet :)
+ call meson builddir --backend=vs2017 --default-library=static -Dbuild-tests=true -Db_vscrt=mtd --buildtype=release -Dllvm=true -Dgallium-drivers=swrast -Dosmesa=gallium
+ pushd builddir
+ call msbuild mesa.sln /m
+ popd
+)
+goto :eof
+
+:test_script
+if "%buildsystem%" == "scons" (
+ call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check
+) else (
+ call meson test -C builddir
+)
+goto :eof
diff -Nru mesa-19.2.8/.appveyor/llvm-wrap.meson mesa-20.0.8/.appveyor/llvm-wrap.meson
--- mesa-19.2.8/.appveyor/llvm-wrap.meson 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/.appveyor/llvm-wrap.meson 2020-06-12 01:21:16.000000000 +0000
@@ -0,0 +1,36 @@
+# A meson.build file for binary wrapping the LLVM used in the appvyeor CI
+project('llvm', ['cpp'])
+
+cpp = meson.get_compiler('cpp')
+
+_deps = []
+_search = join_paths(meson.current_source_dir(), 'lib')
+foreach d : ['LLVMAnalysis', 'LLVMAsmParser', 'LLVMAsmPrinter',
+ 'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter',
+ 'LLVMCodeGen', 'LLVMCore', 'LLVMCoroutines', 'LLVMCoverage',
+ 'LLVMDebugInfoCodeView', 'LLVMDebugInfoDWARF',
+ 'LLVMDebugInfoMSF', 'LLVMDebugInfoPDB', 'LLVMDemangle',
+ 'LLVMDlltoolDriver', 'LLVMExecutionEngine', 'LLVMGlobalISel',
+ 'LLVMInstCombine', 'LLVMInstrumentation', 'LLVMInterpreter',
+ 'LLVMipo', 'LLVMIRReader', 'LLVMLibDriver', 'LLVMLineEditor',
+ 'LLVMLinker', 'LLVMLTO', 'LLVMMCDisassembler', 'LLVMMCJIT',
+ 'LLVMMC', 'LLVMMCParser', 'LLVMMIRParser', 'LLVMObjCARCOpts',
+ 'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMOrcJIT',
+ 'LLVMPasses', 'LLVMProfileData', 'LLVMRuntimeDyld',
+ 'LLVMScalarOpts', 'LLVMSelectionDAG', 'LLVMSupport',
+ 'LLVMSymbolize', 'LLVMTableGen', 'LLVMTarget',
+ 'LLVMTransformUtils', 'LLVMVectorize', 'LLVMX86AsmParser',
+ 'LLVMX86AsmPrinter', 'LLVMX86CodeGen', 'LLVMX86Desc',
+ 'LLVMX86Disassembler', 'LLVMX86Info', 'LLVMX86Utils',
+ 'LLVMXRay']
+ _deps += cpp.find_library(d, dirs : _search)
+endforeach
+
+dep_llvm = declare_dependency(
+ include_directories : include_directories('include'),
+ dependencies : _deps,
+ version : '5.0.1',
+)
+
+has_rtti = false
+irbuilder_h = files('include/llvm/IR/IRBuilder.h')
diff -Nru mesa-19.2.8/appveyor.yml mesa-20.0.8/appveyor.yml
--- mesa-19.2.8/appveyor.yml 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/appveyor.yml 2020-06-12 01:21:16.000000000 +0000
@@ -38,6 +38,7 @@
- '%LOCALAPPDATA%\pip\Cache -> appveyor.yml'
- win_flex_bison-2.5.15.zip
- llvm-5.0.1-msvc2017-mtd.7z
+- subprojects\packagecache -> subprojects\*.wrap
os: Visual Studio 2017
@@ -49,41 +50,21 @@
environment:
WINFLEXBISON_VERSION: 2.5.15
LLVM_ARCHIVE: llvm-5.0.1-msvc2017-mtd.7z
+ matrix:
+ - compiler: msvc
+ buildsystem: scons
+ - compiler: msvc
+ buildsystem: meson
+ path: C:\Python38-x64;C:\Python38-x64\Scripts;%path%
install:
-# Check git config
-- git config core.autocrlf
-# Check pip
-- python --version
-- python -m pip --version
-# Install Mako
-- python -m pip install Mako==1.0.7
-# Install pywin32 extensions, needed by SCons
-- python -m pip install pypiwin32
-# Install python wheels, necessary to install SCons via pip
-- python -m pip install wheel
-# Install SCons
-- python -m pip install scons==3.0.1
-- scons --version
-# Install flex/bison
-- set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip
-- if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%"
-- 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
-- set Path=%CD%\winflexbison;%Path%
-- win_flex --version
-- win_bison --version
-# Download and extract LLVM
-- if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%"
-- 7z x -y "%LLVM_ARCHIVE%" > nul
-- mkdir llvm\bin
-- set LLVM=%CD%\llvm
+- cmd: .appveyor\appveyor_msvc.bat install
build_script:
-- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1
-
-after_build:
-- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check
+- cmd: .appveyor\appveyor_msvc.bat build_script
+test_script:
+- cmd: .appveyor\appveyor_msvc.bat test_script
# It's possible to setup notification here, as described in
# http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but
diff -Nru mesa-19.2.8/bin/.cherry-ignore mesa-20.0.8/bin/.cherry-ignore
--- mesa-19.2.8/bin/.cherry-ignore 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/bin/.cherry-ignore 1970-01-01 00:00:00.000000000 +0000
@@ -1,51 +0,0 @@
-# warnings that are not useful
-da5ebe30105f70e3520ce3ae145793b755552569
-6b8cb087568699ca9a6e9e8b7bf49179e622b59f
-
-# Jason doesn't want this applied to 19.2 (it's a revert)
-d15fe8ca8262d502435c4f83985ac414f950bc5f
-
-# This doesn't apply to 19.2
-f833b4cada07b746a10ffa4d93fcd821920c3cb1
-d2db43fcad6a2ea2070ff5f7884411f4b7d3925c
-66f2aa6ccd0b226eebe2c1a46281160b0a54d522
-
-# The author requested that this not be applied to 19.2
-dcc0e23438f3e5929c2ef74d57e8207be25ecb41
-
-# This doesn't apply cleanly, and no one really cares about this file on stable
-# branches anyway.
-bcd9224728dcb8d8fe4bcddc4bd9b2c36fcfe9dd
-
-# De-nominated by its author due to alternate fix not being backported
-43041627445540afda1a05d11861935963660344
-
-# This is immediately reverted, so just don't apply
-19546108d3dd5541a189e36df4ea83b3f519e48f
-
-# The authors requested these not be applied to 19.2
-869e32593a9096b845dd6106f8f86e1c41fac968
-a2c3c65a31de90fdb55f76f2894860dfbafe2043
-bb0c5c487e63e88acbb792f092dd8f392bad8540
-937b9055698be0dfdb7d2e0673a989e2ecc05912
-21376cffb37018160ad3eef38b5a640ba1675a4f
-
-# This is reverted shortly after it was landed
-4432a2d14d80081d062f7939a950d65ea3a16eed
-
-# These aren't relevant for 19.2
-1a05811936dd8d0c3a367c6f00629624ef39d537
-911a8261419f48dcd756f78832fa5a5f4c5b8d93
-
-# This was manually backported
-2afeed301010917c4eae55dcd2544f9d329df934
-4b392ced2d744fccffe95490ff57e6b41033c266
-
-# This is not being backported to 19.2 due to causing build regressions for
-# downstream projects
-eaf43966027cf9654e91ca57aecc8f5a65b58f49
-
-# Invalid sha warnings
-023282a4f667695ea1dbbe9fbe1cd3a9d550a426
-2fca325ea65f068043d4c18c9cd0fe7f25bde8f7
-7564c5fc6d79a2ddec49a19f67183fb3be799fe5
diff -Nru mesa-19.2.8/bin/gen_release_notes.py mesa-20.0.8/bin/gen_release_notes.py
--- mesa-19.2.8/bin/gen_release_notes.py 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/bin/gen_release_notes.py 2020-06-12 01:21:16.000000000 +0000
@@ -35,8 +35,8 @@
from mako import exceptions
-CURRENT_GL_VERSION = '4.5'
-CURRENT_VK_VERSION = '1.1'
+CURRENT_GL_VERSION = '4.6'
+CURRENT_VK_VERSION = '1.2'
TEMPLATE = Template(textwrap.dedent("""\
<%!
@@ -64,7 +64,7 @@
%if not bugfix:
Mesa ${next_version} is a new development release. People who are concerned
with stability and reliability should stick with a previous release or
- wait for Mesa ${version[:-1]}1.
+ wait for Mesa ${next_version[:-1]}1.
%else:
Mesa ${next_version} is a bug fix release which fixes bugs found since the ${version} release.
%endif
@@ -125,7 +125,7 @@
async def gather_commits(version: str) -> str:
p = await asyncio.create_subprocess_exec(
- 'git', 'log', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*',
+ 'git', 'log', '--oneline', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*',
stdout=asyncio.subprocess.PIPE)
out, _ = await p.communicate()
assert p.returncode == 0, f"git log didn't work: {version}"
diff -Nru mesa-19.2.8/bin/get-pick-list.sh mesa-20.0.8/bin/get-pick-list.sh
--- mesa-19.2.8/bin/get-pick-list.sh 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/bin/get-pick-list.sh 2020-06-12 01:21:16.000000000 +0000
@@ -92,7 +92,7 @@
}
# Use the last branchpoint as our limit for the search
-latest_branchpoint=`git merge-base upstream/master HEAD`
+latest_branchpoint=`git merge-base origin/master HEAD`
# List all the commits between day 1 and the branch point...
git log --reverse --pretty=%H $latest_branchpoint > already_landed
@@ -103,7 +103,7 @@
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
# Grep for potential candidates
-git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\\|\\|This reverts commit' $latest_branchpoint..upstream/master |\
+git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\\|\\|This reverts commit' $latest_branchpoint..origin/master |\
while read sha
do
# Check to see whether the patch is on the ignore list.
diff -Nru mesa-19.2.8/bin/install_megadrivers.py mesa-20.0.8/bin/install_megadrivers.py
--- mesa-19.2.8/bin/install_megadrivers.py 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/bin/install_megadrivers.py 2020-06-12 01:21:16.000000000 +0000
@@ -1,5 +1,6 @@
+#!/usr/bin/env python3
# encoding=utf-8
-# Copyright © 2017-2018 Intel Corporation
+# Copyright 2017-2018 Intel Corporation
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
diff -Nru mesa-19.2.8/bin/meson.build mesa-20.0.8/bin/meson.build
--- mesa-19.2.8/bin/meson.build 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/bin/meson.build 2020-06-12 01:21:16.000000000 +0000
@@ -20,3 +20,4 @@
git_sha1_gen_py = files('git_sha1_gen.py')
symbols_check = find_program('symbols-check.py')
+install_megadrivers_py = find_program('install_megadrivers.py')
diff -Nru mesa-19.2.8/bin/pick/core.py mesa-20.0.8/bin/pick/core.py
--- mesa-19.2.8/bin/pick/core.py 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/bin/pick/core.py 2020-06-12 01:21:16.000000000 +0000
@@ -0,0 +1,367 @@
+# Copyright © 2019-2020 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+"""Core data structures and routines for pick."""
+
+import asyncio
+import enum
+import json
+import pathlib
+import re
+import typing
+
+import attr
+
+if typing.TYPE_CHECKING:
+ from .ui import UI
+
+ import typing_extensions
+
+ class CommitDict(typing_extensions.TypedDict):
+
+ sha: str
+ description: str
+ nomintated: bool
+ nomination_type: typing.Optional[int]
+ resolution: typing.Optional[int]
+ master_sha: typing.Optional[str]
+
+IS_FIX = re.compile(r'^\s*fixes:\s*([a-f0-9]{6,40})', flags=re.MULTILINE | re.IGNORECASE)
+# FIXME: I dislike the duplication in this regex, but I couldn't get it to work otherwise
+IS_CC = re.compile(r'^\s*cc:\s*["\']?([0-9]{2}\.[0-9])?["\']?\s*["\']?([0-9]{2}\.[0-9])?["\']?\s*\ None:
+ """Commit the .pick_status.json file."""
+ f = pathlib.Path(__file__).parent.parent.parent / '.pick_status.json'
+ async with COMMIT_LOCK:
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'add', f.as_posix(),
+ stdout=asyncio.subprocess.DEVNULL,
+ stderr=asyncio.subprocess.DEVNULL,
+ )
+ v = await p.wait()
+ if v != 0:
+ return False
+
+ if amend:
+ cmd = ['--amend', '--no-edit']
+ else:
+ cmd = ['--message', f'.pick_status.json: {message}']
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'commit', *cmd,
+ stdout=asyncio.subprocess.DEVNULL,
+ stderr=asyncio.subprocess.DEVNULL,
+ )
+ v = await p.wait()
+ if v != 0:
+ return False
+ return True
+
+
+@attr.s(slots=True)
+class Commit:
+
+ sha: str = attr.ib()
+ description: str = attr.ib()
+ nominated: bool = attr.ib(False)
+ nomination_type: typing.Optional[NominationType] = attr.ib(None)
+ resolution: Resolution = attr.ib(Resolution.UNRESOLVED)
+ master_sha: typing.Optional[str] = attr.ib(None)
+ because_sha: typing.Optional[str] = attr.ib(None)
+
+ def to_json(self) -> 'CommitDict':
+ d: typing.Dict[str, typing.Any] = attr.asdict(self)
+ if self.nomination_type is not None:
+ d['nomination_type'] = self.nomination_type.value
+ if self.resolution is not None:
+ d['resolution'] = self.resolution.value
+ return typing.cast('CommitDict', d)
+
+ @classmethod
+ def from_json(cls, data: 'CommitDict') -> 'Commit':
+ c = cls(data['sha'], data['description'], data['nominated'], master_sha=data['master_sha'], because_sha=data['because_sha'])
+ if data['nomination_type'] is not None:
+ c.nomination_type = NominationType(data['nomination_type'])
+ if data['resolution'] is not None:
+ c.resolution = Resolution(data['resolution'])
+ return c
+
+ async def apply(self, ui: 'UI') -> typing.Tuple[bool, str]:
+ # FIXME: This isn't really enough if we fail to cherry-pick because the
+ # git tree will still be dirty
+ async with COMMIT_LOCK:
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'cherry-pick', '-x', self.sha,
+ stdout=asyncio.subprocess.DEVNULL,
+ stderr=asyncio.subprocess.PIPE,
+ )
+ _, err = await p.communicate()
+
+ if p.returncode != 0:
+ return (False, err)
+
+ self.resolution = Resolution.MERGED
+ await ui.feedback(f'{self.sha} ({self.description}) applied successfully')
+
+ # Append the changes to the .pickstatus.json file
+ ui.save()
+ v = await commit_state(amend=True)
+ return (v, '')
+
+ async def abort_cherry(self, ui: 'UI', err: str) -> None:
+ await ui.feedback(f'{self.sha} ({self.description}) failed to apply\n{err}')
+ async with COMMIT_LOCK:
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'cherry-pick', '--abort',
+ stdout=asyncio.subprocess.DEVNULL,
+ stderr=asyncio.subprocess.DEVNULL,
+ )
+ r = await p.wait()
+ await ui.feedback(f'{"Successfully" if r == 0 else "Failed to"} abort cherry-pick.')
+
+ async def denominate(self, ui: 'UI') -> bool:
+ self.resolution = Resolution.DENOMINATED
+ ui.save()
+ v = await commit_state(message=f'Mark {self.sha} as denominated')
+ assert v
+ await ui.feedback(f'{self.sha} ({self.description}) denominated successfully')
+ return True
+
+ async def backport(self, ui: 'UI') -> bool:
+ self.resolution = Resolution.BACKPORTED
+ ui.save()
+ v = await commit_state(message=f'Mark {self.sha} as backported')
+ assert v
+ await ui.feedback(f'{self.sha} ({self.description}) backported successfully')
+ return True
+
+ async def resolve(self, ui: 'UI') -> None:
+ self.resolution = Resolution.MERGED
+ ui.save()
+ v = await commit_state(amend=True)
+ assert v
+ await ui.feedback(f'{self.sha} ({self.description}) committed successfully')
+
+
+async def get_new_commits(sha: str) -> typing.List[typing.Tuple[str, str]]:
+ # TODO: config file that points to the upstream branch
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'log', '--pretty=oneline', f'{sha}..master',
+ stdout=asyncio.subprocess.PIPE,
+ stderr=asyncio.subprocess.DEVNULL)
+ out, _ = await p.communicate()
+ assert p.returncode == 0, f"git log didn't work: {sha}"
+ return list(split_commit_list(out.decode().strip()))
+
+
+def split_commit_list(commits: str) -> typing.Generator[typing.Tuple[str, str], None, None]:
+ if not commits:
+ return
+ for line in commits.split('\n'):
+ v = tuple(line.split(' ', 1))
+ assert len(v) == 2, 'this is really just for mypy'
+ yield typing.cast(typing.Tuple[str, str], v)
+
+
+async def is_commit_in_branch(sha: str) -> bool:
+ async with SEM:
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'merge-base', '--is-ancestor', sha, 'HEAD',
+ stdout=asyncio.subprocess.DEVNULL,
+ stderr=asyncio.subprocess.DEVNULL,
+ )
+ await p.wait()
+ return p.returncode == 0
+
+
+async def full_sha(sha: str) -> str:
+ async with SEM:
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'rev-parse', sha,
+ stdout=asyncio.subprocess.PIPE,
+ stderr=asyncio.subprocess.DEVNULL,
+ )
+ out, _ = await p.communicate()
+ if p.returncode:
+ raise PickUIException(f'Invalid Sha {sha}')
+ return out.decode().strip()
+
+
+async def resolve_nomination(commit: 'Commit', version: str) -> 'Commit':
+ async with SEM:
+ p = await asyncio.create_subprocess_exec(
+ 'git', 'log', '--pretty=medium', '-1', commit.sha,
+ stdout=asyncio.subprocess.PIPE,
+ stderr=asyncio.subprocess.DEVNULL,
+ )
+ _out, _ = await p.communicate()
+ assert p.returncode == 0, f'git log for {commit.sha} failed'
+ out = _out.decode()
+
+ # We give presedence to fixes and cc tags over revert tags.
+ # XXX: not having the wallrus operator available makes me sad :=
+ m = IS_FIX.search(out)
+ if m:
+ # We set the nomination_type and because_sha here so that we can later
+ # check to see if this fixes another staged commit.
+ try:
+ commit.because_sha = fixed = await full_sha(m.group(1))
+ except PickUIException:
+ pass
+ else:
+ commit.nomination_type = NominationType.FIXES
+ if await is_commit_in_branch(fixed):
+ commit.nominated = True
+ return commit
+
+ m = IS_CC.search(out)
+ if m:
+ if m.groups() == (None, None) or version in m.groups():
+ commit.nominated = True
+ commit.nomination_type = NominationType.CC
+ return commit
+
+ m = IS_REVERT.search(out)
+ if m:
+ # See comment for IS_FIX path
+ try:
+ commit.because_sha = reverted = await full_sha(m.group(1))
+ except PickUIException:
+ pass
+ else:
+ commit.nomination_type = NominationType.REVERT
+ if await is_commit_in_branch(reverted):
+ commit.nominated = True
+ return commit
+
+ return commit
+
+
+async def resolve_fixes(commits: typing.List['Commit'], previous: typing.List['Commit']) -> None:
+ """Determine if any of the undecided commits fix/revert a staged commit.
+
+ The are still needed if they apply to a commit that is staged for
+ inclusion, but not yet included.
+
+ This must be done in order, because a commit 3 might fix commit 2 which
+ fixes commit 1.
+ """
+ shas: typing.Set[str] = set(c.sha for c in previous if c.nominated)
+ assert None not in shas, 'None in shas'
+
+ for commit in reversed(commits):
+ if not commit.nominated and commit.nomination_type is NominationType.FIXES:
+ commit.nominated = commit.because_sha in shas
+
+ if commit.nominated:
+ shas.add(commit.sha)
+
+ for commit in commits:
+ if (commit.nomination_type is NominationType.REVERT and
+ commit.because_sha in shas):
+ for oldc in reversed(commits):
+ if oldc.sha == commit.because_sha:
+ # In this case a commit that hasn't yet been applied is
+ # reverted, we don't want to apply that commit at all
+ oldc.nominated = False
+ oldc.resolution = Resolution.DENOMINATED
+ commit.nominated = False
+ commit.resolution = Resolution.DENOMINATED
+ shas.remove(commit.because_sha)
+ break
+
+
+async def gather_commits(version: str, previous: typing.List['Commit'],
+ new: typing.List[typing.Tuple[str, str]], cb) -> typing.List['Commit']:
+ # We create an array of the final size up front, then we pass that array
+ # to the "inner" co-routine, which is turned into a list of tasks and
+ # collected by asyncio.gather. We do this to allow the tasks to be
+ # asyncrounously gathered, but to also ensure that the commits list remains
+ # in order.
+ commits = [None] * len(new)
+ tasks = []
+
+ async def inner(commit: 'Commit', version: str, commits: typing.List['Commit'],
+ index: int, cb) -> None:
+ commits[index] = await resolve_nomination(commit, version)
+ cb()
+
+ for i, (sha, desc) in enumerate(new):
+ tasks.append(asyncio.ensure_future(
+ inner(Commit(sha, desc), version, commits, i, cb)))
+
+ await asyncio.gather(*tasks)
+ assert None not in commits
+
+ await resolve_fixes(commits, previous)
+
+ for commit in commits:
+ if commit.resolution is Resolution.UNRESOLVED and not commit.nominated:
+ commit.resolution = Resolution.NOTNEEDED
+
+ return commits
+
+
+def load() -> typing.List['Commit']:
+ p = pathlib.Path(__file__).parent.parent.parent / '.pick_status.json'
+ if not p.exists():
+ return []
+ with p.open('r') as f:
+ raw = json.load(f)
+ return [Commit.from_json(c) for c in raw]
+
+
+def save(commits: typing.Iterable['Commit']) -> None:
+ p = pathlib.Path(__file__).parent.parent.parent / '.pick_status.json'
+ commits = list(commits)
+ with p.open('wt') as f:
+ json.dump([c.to_json() for c in commits], f, indent=4)
+
+ asyncio.ensure_future(commit_state(message=f'Update to {commits[0].sha}'))
diff -Nru mesa-19.2.8/bin/pick/core_test.py mesa-20.0.8/bin/pick/core_test.py
--- mesa-19.2.8/bin/pick/core_test.py 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/bin/pick/core_test.py 2020-06-12 01:21:16.000000000 +0000
@@ -0,0 +1,470 @@
+# Copyright © 2019-2020 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+"""Tests for pick's core data structures and routines."""
+
+from unittest import mock
+import textwrap
+import typing
+
+import attr
+import pytest
+
+from . import core
+
+
+class TestCommit:
+
+ @pytest.fixture
+ def unnominated_commit(self) -> 'core.Commit':
+ return core.Commit('abc123', 'sub: A commit', master_sha='45678')
+
+ @pytest.fixture
+ def nominated_commit(self) -> 'core.Commit':
+ return core.Commit('abc123', 'sub: A commit', True,
+ core.NominationType.CC, core.Resolution.UNRESOLVED)
+
+ class TestToJson:
+
+ def test_not_nominated(self, unnominated_commit: 'core.Commit'):
+ c = unnominated_commit
+ v = c.to_json()
+ assert v == {'sha': 'abc123', 'description': 'sub: A commit', 'nominated': False,
+ 'nomination_type': None, 'resolution': core.Resolution.UNRESOLVED.value,
+ 'master_sha': '45678', 'because_sha': None}
+
+ def test_nominated(self, nominated_commit: 'core.Commit'):
+ c = nominated_commit
+ v = c.to_json()
+ assert v == {'sha': 'abc123',
+ 'description': 'sub: A commit',
+ 'nominated': True,
+ 'nomination_type': core.NominationType.CC.value,
+ 'resolution': core.Resolution.UNRESOLVED.value,
+ 'master_sha': None,
+ 'because_sha': None}
+
+ class TestFromJson:
+
+ def test_not_nominated(self, unnominated_commit: 'core.Commit'):
+ c = unnominated_commit
+ v = c.to_json()
+ c2 = core.Commit.from_json(v)
+ assert c == c2
+
+ def test_nominated(self, nominated_commit: 'core.Commit'):
+ c = nominated_commit
+ v = c.to_json()
+ c2 = core.Commit.from_json(v)
+ assert c == c2
+
+
+class TestRE:
+
+ """Tests for the regular expressions used to identify commits."""
+
+ class TestFixes:
+
+ def test_simple(self):
+ message = textwrap.dedent("""\
+ etnaviv: fix vertex buffer state emission for single stream GPUs
+
+ GPUs with a single supported vertex stream must use the single state
+ address to program the stream.
+
+ Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)
+ Signed-off-by: Lucas Stach
+ Reviewed-by: Jonathan Marek
+ """)
+
+ m = core.IS_FIX.search(message)
+ assert m is not None
+ assert m.group(1) == '3d09bb390a39'
+
+ class TestCC:
+
+ def test_single_branch(self):
+ """Tests commit meant for a single branch, ie, 19.1"""
+ message = textwrap.dedent("""\
+ radv: fix DCC fast clear code for intensity formats
+
+ This fixes a rendering issue with DiRT 4 on GFX10. Only GFX10 was
+ affected because intensity formats are different.
+
+ Cc: 19.2
+ Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1923
+ Signed-off-by: Samuel Pitoiset
+ Reviewed-by: Bas Nieuwenhuizen
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+ assert m.group(1) == '19.2'
+
+ def test_multiple_branches(self):
+ """Tests commit with more than one branch specified"""
+ message = textwrap.dedent("""\
+ radeonsi: enable zerovram for Rocket League
+
+ Fixes corruption on game startup.
+ Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1888
+
+ Cc: 19.1 19.2
+ Reviewed-by: Pierre-Eric Pelloux-Prayer
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+ assert m.group(1) == '19.1'
+ assert m.group(2) == '19.2'
+
+ def test_no_branch(self):
+ """Tests commit with no branch specification"""
+ message = textwrap.dedent("""\
+ anv/android: fix images created with external format support
+
+ This fixes a case where user first creates image and then later binds it
+ with memory created from AHW buffer.
+
+ Cc:
+ Signed-off-by: Tapani Pälli
+ Reviewed-by: Lionel Landwerlin
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+
+ def test_quotes(self):
+ """Tests commit with quotes around the versions"""
+ message = textwrap.dedent("""\
+ anv: Always fill out the AUX table even if CCS is disabled
+
+ Cc: "20.0" mesa-stable@lists.freedesktop.org
+ Reviewed-by: Kenneth Graunke
+ Tested-by: Marge Bot
+ Part-of:
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+ assert m.group(1) == '20.0'
+
+ def test_multiple_quotes(self):
+ """Tests commit with quotes around the versions"""
+ message = textwrap.dedent("""\
+ anv: Always fill out the AUX table even if CCS is disabled
+
+ Cc: "20.0" "20.1" mesa-stable@lists.freedesktop.org
+ Reviewed-by: Kenneth Graunke
+ Tested-by: Marge Bot
+ Part-of:
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+ assert m.group(1) == '20.0'
+ assert m.group(2) == '20.1'
+
+ def test_single_quotes(self):
+ """Tests commit with quotes around the versions"""
+ message = textwrap.dedent("""\
+ anv: Always fill out the AUX table even if CCS is disabled
+
+ Cc: '20.0' mesa-stable@lists.freedesktop.org
+ Reviewed-by: Kenneth Graunke
+ Tested-by: Marge Bot
+ Part-of:
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+ assert m.group(1) == '20.0'
+
+ def test_multiple_single_quotes(self):
+ """Tests commit with quotes around the versions"""
+ message = textwrap.dedent("""\
+ anv: Always fill out the AUX table even if CCS is disabled
+
+ Cc: '20.0' '20.1' mesa-stable@lists.freedesktop.org
+ Reviewed-by: Kenneth Graunke
+ Tested-by: Marge Bot
+ Part-of:
+ """)
+
+ m = core.IS_CC.search(message)
+ assert m is not None
+ assert m.group(1) == '20.0'
+ assert m.group(2) == '20.1'
+
+ class TestRevert:
+
+ def test_simple(self):
+ message = textwrap.dedent("""\
+ Revert "radv: do not emit PKT3_CONTEXT_CONTROL with AMDGPU 3.6.0+"
+
+ This reverts commit 2ca8629fa9b303e24783b76a7b3b0c2513e32fbd.
+
+ This was initially ported from RadeonSI, but in the meantime it has
+ been reverted because it might hang. Be conservative and re-introduce
+ this packet emission.
+
+ Unfortunately this doesn't fix anything known.
+
+ Cc: 19.2
+ Signed-off-by: Samuel Pitoiset
+ Reviewed-by: Bas Nieuwenhuizen
+ """)
+
+ m = core.IS_REVERT.search(message)
+ assert m is not None
+ assert m.group(1) == '2ca8629fa9b303e24783b76a7b3b0c2513e32fbd'
+
+
+class TestResolveNomination:
+
+ @attr.s(slots=True)
+ class FakeSubprocess:
+
+ """A fake asyncio.subprocess like classe for use with mock."""
+
+ out: typing.Optional[bytes] = attr.ib(None)
+ returncode: int = attr.ib(0)
+
+ async def mock(self, *_, **__):
+ """A dirtly little helper for mocking."""
+ return self
+
+ async def communicate(self) -> typing.Tuple[bytes, bytes]:
+ assert self.out is not None
+ return self.out, b''
+
+ async def wait(self) -> int:
+ return self.returncode
+
+ @staticmethod
+ async def return_true(*_, **__) -> bool:
+ return True
+
+ @staticmethod
+ async def return_false(*_, **__) -> bool:
+ return False
+
+ @pytest.mark.asyncio
+ async def test_fix_is_nominated(self):
+ s = self.FakeSubprocess(b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
+ await core.resolve_nomination(c, '')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.FIXES
+
+ @pytest.mark.asyncio
+ async def test_fix_is_not_nominated(self):
+ s = self.FakeSubprocess(b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_false):
+ await core.resolve_nomination(c, '')
+
+ assert not c.nominated
+ assert c.nomination_type is core.NominationType.FIXES
+
+ @pytest.mark.asyncio
+ async def test_cc_is_nominated(self):
+ s = self.FakeSubprocess(b'Cc: 16.2 ')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ await core.resolve_nomination(c, '16.2')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.CC
+
+ @pytest.mark.asyncio
+ async def test_cc_is_nominated2(self):
+ s = self.FakeSubprocess(b'Cc: mesa-stable@lists.freedesktop.org')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ await core.resolve_nomination(c, '16.2')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.CC
+
+ @pytest.mark.asyncio
+ async def test_cc_is_not_nominated(self):
+ s = self.FakeSubprocess(b'Cc: 16.2 ')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ await core.resolve_nomination(c, '16.1')
+
+ assert not c.nominated
+ assert c.nomination_type is None
+
+ @pytest.mark.asyncio
+ async def test_revert_is_nominated(self):
+ s = self.FakeSubprocess(b'This reverts commit 1234567890123456789012345678901234567890.')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
+ await core.resolve_nomination(c, '')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.REVERT
+
+ @pytest.mark.asyncio
+ async def test_revert_is_not_nominated(self):
+ s = self.FakeSubprocess(b'This reverts commit 1234567890123456789012345678901234567890.')
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_false):
+ await core.resolve_nomination(c, '')
+
+ assert not c.nominated
+ assert c.nomination_type is core.NominationType.REVERT
+
+ @pytest.mark.asyncio
+ async def test_is_fix_and_cc(self):
+ s = self.FakeSubprocess(
+ b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)\n'
+ b'Cc: 16.1 '
+ )
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
+ await core.resolve_nomination(c, '16.1')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.FIXES
+
+ @pytest.mark.asyncio
+ async def test_is_fix_and_revert(self):
+ s = self.FakeSubprocess(
+ b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)\n'
+ b'This reverts commit 1234567890123456789012345678901234567890.'
+ )
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
+ await core.resolve_nomination(c, '16.1')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.FIXES
+
+ @pytest.mark.asyncio
+ async def test_is_cc_and_revert(self):
+ s = self.FakeSubprocess(
+ b'This reverts commit 1234567890123456789012345678901234567890.\n'
+ b'Cc: 16.1 '
+ )
+ c = core.Commit('abcdef1234567890', 'a commit')
+
+ with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
+ with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
+ await core.resolve_nomination(c, '16.1')
+
+ assert c.nominated
+ assert c.nomination_type is core.NominationType.CC
+
+
+class TestResolveFixes:
+
+ @pytest.mark.asyncio
+ async def test_in_new(self):
+ """Because commit abcd is nominated, so f123 should be as well."""
+ c = [
+ core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
+ core.Commit('abcd', 'desc', True),
+ ]
+ await core.resolve_fixes(c, [])
+ assert c[1].nominated
+
+ @pytest.mark.asyncio
+ async def test_not_in_new(self):
+ """Because commit abcd is not nominated, commit f123 shouldn't be either."""
+ c = [
+ core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
+ core.Commit('abcd', 'desc'),
+ ]
+ await core.resolve_fixes(c, [])
+ assert not c[0].nominated
+
+ @pytest.mark.asyncio
+ async def test_in_previous(self):
+ """Because commit abcd is nominated, so f123 should be as well."""
+ p = [
+ core.Commit('abcd', 'desc', True),
+ ]
+ c = [
+ core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
+ ]
+ await core.resolve_fixes(c, p)
+ assert c[0].nominated
+
+ @pytest.mark.asyncio
+ async def test_not_in_previous(self):
+ """Because commit abcd is not nominated, commit f123 shouldn't be either."""
+ p = [
+ core.Commit('abcd', 'desc'),
+ ]
+ c = [
+ core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
+ ]
+ await core.resolve_fixes(c, p)
+ assert not c[0].nominated
+
+
+class TestIsCommitInBranch:
+
+ @pytest.mark.asyncio
+ async def test_no(self):
+ # Hopefully this is never true?
+ value = await core.is_commit_in_branch('ffffffffffffffffffffffffffffff')
+ assert not value
+
+ @pytest.mark.asyncio
+ async def test_yes(self):
+ # This commit is from 2000, it better always be in the branch
+ value = await core.is_commit_in_branch('88f3b89a2cb77766d2009b9868c44e03abe2dbb2')
+ assert value
+
+
+class TestFullSha:
+
+ @pytest.mark.asyncio
+ async def test_basic(self):
+ # This commit is from 2000, it better always be in the branch
+ value = await core.full_sha('88f3b89a2cb777')
+ assert value
+
+ @pytest.mark.asyncio
+ async def test_invalid(self):
+ # This commit is from 2000, it better always be in the branch
+ with pytest.raises(core.PickUIException):
+ await core.full_sha('fffffffffffffffffffffffffffffffffff')
diff -Nru mesa-19.2.8/bin/pick/ui.py mesa-20.0.8/bin/pick/ui.py
--- mesa-19.2.8/bin/pick/ui.py 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/bin/pick/ui.py 2020-06-12 01:21:16.000000000 +0000
@@ -0,0 +1,259 @@
+# Copyright © 2020-2020 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+"""Urwid UI for pick script."""
+
+import asyncio
+import functools
+import itertools
+import textwrap
+import typing
+
+import attr
+import urwid
+
+from . import core
+
+if typing.TYPE_CHECKING:
+ WidgetType = typing.TypeVar('WidgetType', bound=urwid.Widget)
+
+PALETTE = [
+ ('a', 'black', 'light gray'),
+ ('b', 'black', 'dark red'),
+ ('bg', 'black', 'dark blue'),
+ ('reversed', 'standout', ''),
+]
+
+
+class RootWidget(urwid.Frame):
+
+ def __init__(self, *args, ui: 'UI' = None, **kwargs):
+ super().__init__(*args, **kwargs)
+ assert ui is not None
+ self.ui = ui
+
+ def keypress(self, size: int, key: str) -> typing.Optional[str]:
+ if key == 'q':
+ raise urwid.ExitMainLoop()
+ elif key == 'u':
+ asyncio.ensure_future(self.ui.update())
+ elif key == 'a':
+ self.ui.add()
+ else:
+ return super().keypress(size, key)
+ return None
+
+
+class CommitWidget(urwid.Text):
+
+ # urwid.Text is normally not interactable, this is required to tell urwid
+ # to use our keypress method
+ _selectable = True
+
+ def __init__(self, ui: 'UI', commit: 'core.Commit'):
+ super().__init__(commit.description)
+ self.ui = ui
+ self.commit = commit
+
+ async def apply(self) -> None:
+ result, err = await self.commit.apply(self.ui)
+ if not result:
+ self.ui.chp_failed(self, err)
+ else:
+ self.ui.remove_commit(self)
+
+ async def denominate(self) -> None:
+ await self.commit.denominate(self.ui)
+ self.ui.remove_commit(self)
+
+ async def backport(self) -> None:
+ await self.commit.backport(self.ui)
+ self.ui.remove_commit(self)
+
+ def keypress(self, size: int, key: str) -> typing.Optional[str]:
+ if key == 'c':
+ asyncio.ensure_future(self.apply())
+ elif key == 'd':
+ asyncio.ensure_future(self.denominate())
+ elif key == 'b':
+ asyncio.ensure_future(self.backport())
+ else:
+ return key
+ return None
+
+
+@attr.s(slots=True)
+class UI:
+
+ """Main management object.
+
+ :previous_commits: A list of commits to master since this branch was created
+ :new_commits: Commits added to master since the last time this script was run
+ """
+
+ commit_list: typing.List['urwid.Button'] = attr.ib(factory=lambda: urwid.SimpleFocusListWalker([]), init=False)
+ feedback_box: typing.List['urwid.Text'] = attr.ib(factory=lambda: urwid.SimpleFocusListWalker([]), init=False)
+ header: 'urwid.Text' = attr.ib(factory=lambda: urwid.Text('Mesa Stable Picker', align='center'), init=False)
+ body: 'urwid.Columns' = attr.ib(attr.Factory(lambda s: s._make_body(), True), init=False)
+ footer: 'urwid.Columns' = attr.ib(attr.Factory(lambda s: s._make_footer(), True), init=False)
+ root: RootWidget = attr.ib(attr.Factory(lambda s: s._make_root(), True), init=False)
+ mainloop: urwid.MainLoop = attr.ib(None, init=False)
+
+ previous_commits: typing.List['core.Commit'] = attr.ib(factory=list, init=False)
+ new_commits: typing.List['core.Commit'] = attr.ib(factory=list, init=False)
+
+ def _make_body(self) -> 'urwid.Columns':
+ commits = urwid.ListBox(self.commit_list)
+ feedback = urwid.ListBox(self.feedback_box)
+ return urwid.Columns([commits, feedback])
+
+ def _make_footer(self) -> 'urwid.Columns':
+ body = [
+ urwid.Text('[U]pdate'),
+ urwid.Text('[Q]uit'),
+ urwid.Text('[C]herry Pick'),
+ urwid.Text('[D]enominate'),
+ urwid.Text('[B]ackport'),
+ urwid.Text('[A]pply additional patch')
+ ]
+ return urwid.Columns(body)
+
+ def _make_root(self) -> 'RootWidget':
+ return RootWidget(self.body, self.header, self.footer, 'body', ui=self)
+
+ def render(self) -> 'WidgetType':
+ asyncio.ensure_future(self.update())
+ return self.root
+
+ def load(self) -> None:
+ self.previous_commits = core.load()
+
+ async def update(self) -> None:
+ self.load()
+ with open('VERSION', 'r') as f:
+ version = f.read().strip()[:4]
+ if self.previous_commits:
+ sha = self.previous_commits[0].sha
+ else:
+ sha = f'{version}-branchpoint'
+
+ new_commits = await core.get_new_commits(sha)
+
+ if new_commits:
+ pb = urwid.ProgressBar('a', 'b', done=len(new_commits))
+ o = self.mainloop.widget
+ self.mainloop.widget = urwid.Overlay(
+ urwid.Filler(urwid.LineBox(pb)), o, 'center', ('relative', 50), 'middle', ('relative', 50))
+ self.new_commits = await core.gather_commits(
+ version, self.previous_commits, new_commits,
+ lambda: pb.set_completion(pb.current + 1))
+ self.mainloop.widget = o
+
+ for commit in reversed(list(itertools.chain(self.new_commits, self.previous_commits))):
+ if commit.nominated and commit.resolution is core.Resolution.UNRESOLVED:
+ b = urwid.AttrMap(CommitWidget(self, commit), None, focus_map='reversed')
+ self.commit_list.append(b)
+ self.save()
+
+ async def feedback(self, text: str) -> None:
+ self.feedback_box.append(urwid.AttrMap(urwid.Text(text), None))
+
+ def remove_commit(self, commit: CommitWidget) -> None:
+ for i, c in enumerate(self.commit_list):
+ if c.base_widget is commit:
+ del self.commit_list[i]
+ break
+
+ def save(self):
+ core.save(itertools.chain(self.new_commits, self.previous_commits))
+
+ def add(self) -> None:
+ """Add an additional commit which isn't nominated."""
+ o = self.mainloop.widget
+
+ def reset_cb(_) -> None:
+ self.mainloop.widget = o
+
+ async def apply_cb(edit: urwid.Edit) -> None:
+ text: str = edit.get_edit_text()
+
+ # In case the text is empty
+ if not text:
+ return
+
+ sha = await core.full_sha(text)
+ for c in reversed(list(itertools.chain(self.new_commits, self.previous_commits))):
+ if c.sha == sha:
+ commit = c
+ break
+ else:
+ raise RuntimeError(f"Couldn't find {sha}")
+
+ await commit.apply(self)
+
+ q = urwid.Edit("Comit sha\n")
+ ok_btn = urwid.Button('Ok')
+ urwid.connect_signal(ok_btn, 'click', lambda _: asyncio.ensure_future(apply_cb(q)))
+ urwid.connect_signal(ok_btn, 'click', reset_cb)
+
+ can_btn = urwid.Button('Cancel')
+ urwid.connect_signal(can_btn, 'click', reset_cb)
+
+ cols = urwid.Columns([ok_btn, can_btn])
+ pile = urwid.Pile([q, cols])
+ box = urwid.LineBox(pile)
+
+ self.mainloop.widget = urwid.Overlay(
+ urwid.Filler(box), o, 'center', ('relative', 50), 'middle', ('relative', 50)
+ )
+
+ def chp_failed(self, commit: 'CommitWidget', err: str) -> None:
+ o = self.mainloop.widget
+
+ def reset_cb(_) -> None:
+ self.mainloop.widget = o
+
+ t = urwid.Text(textwrap.dedent(f"""
+ Failed to apply {commit.commit.sha} {commit.commit.description} with the following error:
+
+ {err}
+
+ You can either cancel, or resolve the conflicts, commit the
+ changes and select ok."""))
+
+ can_btn = urwid.Button('Cancel')
+ urwid.connect_signal(can_btn, 'click', reset_cb)
+ urwid.connect_signal(
+ can_btn, 'click', lambda _: asyncio.ensure_future(commit.commit.abort_cherry(self, err)))
+
+ ok_btn = urwid.Button('Ok')
+ urwid.connect_signal(ok_btn, 'click', reset_cb)
+ urwid.connect_signal(
+ ok_btn, 'click', lambda _: asyncio.ensure_future(commit.commit.resolve(self)))
+ urwid.connect_signal(
+ ok_btn, 'click', lambda _: self.remove_commit(commit))
+
+ cols = urwid.Columns([ok_btn, can_btn])
+ pile = urwid.Pile([t, cols])
+ box = urwid.LineBox(pile)
+
+ self.mainloop.widget = urwid.Overlay(
+ urwid.Filler(box), o, 'center', ('relative', 50), 'middle', ('relative', 50)
+ )
diff -Nru mesa-19.2.8/bin/pick-ui.py mesa-20.0.8/bin/pick-ui.py
--- mesa-19.2.8/bin/pick-ui.py 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/bin/pick-ui.py 2020-06-12 01:21:16.000000000 +0000
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+# Copyright © 2019-2020 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import asyncio
+
+import urwid
+
+from pick.ui import UI, PALETTE
+
+if __name__ == "__main__":
+ u = UI()
+ evl = urwid.AsyncioEventLoop(loop=asyncio.get_event_loop())
+ loop = urwid.MainLoop(u.render(), PALETTE, event_loop=evl)
+ u.mainloop = loop
+ loop.run()
diff -Nru mesa-19.2.8/bin/symbols-check.py mesa-20.0.8/bin/symbols-check.py
--- mesa-19.2.8/bin/symbols-check.py 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/bin/symbols-check.py 2020-06-12 01:21:16.000000000 +0000
@@ -19,9 +19,10 @@
]
-def get_symbols(nm, lib):
+def get_symbols_nm(nm, lib):
'''
List all the (non platform-specific) symbols exported by the library
+ using `nm`
'''
symbols = []
platform_name = platform.system()
@@ -39,7 +40,35 @@
assert symbol_name[0] == '_'
symbol_name = symbol_name[1:]
symbols.append(symbol_name)
+ return symbols
+
+def get_symbols_dumpbin(dumpbin, lib):
+ '''
+ List all the (non platform-specific) symbols exported by the library
+ using `dumpbin`
+ '''
+ symbols = []
+ output = subprocess.check_output([dumpbin, '/exports', lib],
+ stderr=open(os.devnull, 'w')).decode("ascii")
+ for line in output.splitlines():
+ fields = line.split()
+ # The lines with the symbols are made of at least 4 columns; see details below
+ if len(fields) < 4:
+ continue
+ try:
+ # Making sure the first 3 columns are a dec counter, a hex counter
+ # and a hex address
+ _ = int(fields[0], 10)
+ _ = int(fields[1], 16)
+ _ = int(fields[2], 16)
+ except ValueError:
+ continue
+ symbol_name = fields[3]
+ # De-mangle symbols
+ if symbol_name[0] == '_':
+ symbol_name = symbol_name[1:].split('@')[0]
+ symbols.append(symbol_name)
return symbols
@@ -55,12 +84,21 @@
help='path to library')
parser.add_argument('--nm',
action='store',
- required=True,
+ help='path to binary (or name in $PATH)')
+ parser.add_argument('--dumpbin',
+ action='store',
help='path to binary (or name in $PATH)')
args = parser.parse_args()
try:
- lib_symbols = get_symbols(args.nm, args.lib)
+ if platform.system() == 'Windows':
+ if not args.dumpbin:
+ parser.error('--dumpbin is mandatory')
+ lib_symbols = get_symbols_dumpbin(args.dumpbin, args.lib)
+ else:
+ if not args.nm:
+ parser.error('--nm is mandatory')
+ lib_symbols = get_symbols_nm(args.nm, args.lib)
except:
# We can't run this test, but we haven't technically failed it either
# Return the GNU "skip" error code
@@ -109,6 +147,10 @@
continue
if symbol in optional_symbols:
continue
+ if symbol[:2] == '_Z':
+ # Ignore random C++ symbols
+ #TODO: figure out if there's any way to avoid exporting them in the first place
+ continue
unknown_symbols.append(symbol)
missing_symbols = [
diff -Nru mesa-19.2.8/common.py mesa-20.0.8/common.py
--- mesa-19.2.8/common.py 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/common.py 2020-06-12 01:21:16.000000000 +0000
@@ -112,6 +112,7 @@
opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no'))
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
+ opts.Add(BoolOption('force_scons', 'Force enable scons on deprecated platforms', 'false'))
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
'no'))
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
diff -Nru mesa-19.2.8/debian/changelog mesa-20.0.8/debian/changelog
--- mesa-19.2.8/debian/changelog 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/changelog 2020-07-13 13:21:27.000000000 +0000
@@ -1,3 +1,343 @@
+mesa (20.0.8-0ubuntu1~18.04.1) bionic; urgency=medium
+
+ * Backport to bionic.
+ * control: Relax libclc-dev build-dep for bionic.
+ * Revert-meson-Use-dependency.partial_dependency.patch: Don't use a special
+ meson feature not in bionic.
+
+ -- Timo Aaltonen Fri, 12 Jun 2020 14:51:05 +0300
+
+mesa (20.0.8-0ubuntu1~20.04.1) focal; urgency=medium
+
+ * Backport to focal.
+ - migrate to LLVM 10 (LP: #1882901)
+ - fix zwp_linux_dmabuf_v1 on wayland (LP: #1868520)
+ * control: Relax libclc-dev build-dep for the backport.
+
+ -- Timo Aaltonen Fri, 12 Jun 2020 09:05:27 +0300
+
+mesa (20.0.8-0ubuntu1) groovy; urgency=medium
+
+ * New upstream release.
+ * fix-build-with-llvm-10.diff: Dropped, upstream.
+
+ -- Timo Aaltonen Fri, 12 Jun 2020 09:04:34 +0300
+
+mesa (20.0.7-1ubuntu1) groovy; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Mon, 25 May 2020 13:02:32 +0300
+
+mesa (20.0.7-1) unstable; urgency=medium
+
+ * New upstream release.
+ * src_glx_dri_common.h.diff: A new attempt to fix hurd ftbfs. (Closes:
+ #960197)
+
+ -- Timo Aaltonen Fri, 22 May 2020 08:36:18 +0300
+
+mesa (20.0.6-3ubuntu1) groovy; urgency=medium
+
+ * Merge from Debian.
+ * control: Build with llvm-10.
+
+ -- Timo Aaltonen Fri, 08 May 2020 12:50:14 +0300
+
+mesa (20.0.6-3) unstable; urgency=medium
+
+ * src_glx_dri_common.h.diff: Dropped, breaks the build.
+
+ -- Timo Aaltonen Fri, 08 May 2020 12:44:12 +0300
+
+mesa (20.0.6-2) unstable; urgency=medium
+
+ [ Timo Aaltonen ]
+ * control: Bump libdrm-dev build-dep.
+
+ [ Svante Signell ]
+ * src_glx_dri_common.h.diff: Fix build on Hurd. (Closes: #959975)
+
+ [ Frédéric Bonnard ]
+ * Fix ppc64el FTBFS. (Closes: #959943)
+
+ -- Timo Aaltonen Fri, 08 May 2020 11:00:10 +0300
+
+mesa (20.0.6-1) unstable; urgency=medium
+
+ * New upstream release.
+ * patches: Drop upstreamed patches, refresh llvm-10 build-fix.
+
+ -- Timo Aaltonen Tue, 05 May 2020 10:37:18 +0300
+
+mesa (20.0.4-2ubuntu1~18.04.2) bionic; urgency=medium
+
+ * rules: Disable zink, it adds libvulkan1 dependency to libgl1-mesa-
+ dri, and it's in universe.
+
+ -- Timo Aaltonen Tue, 26 May 2020 12:11:32 +0300
+
+mesa (20.0.4-2ubuntu1~18.04.1) bionic; urgency=medium
+
+ * Backport for 18.04.5 HWE stack update. (LP: #1876882).
+ * Install EGL/GL/GLES header files again, migration to libglvnd doesn't
+ concern bionic.
+ * control: Relax debhelper requirement.
+ * patches: Refreshed.
+ * patches: Revert more things for old libglvnd/meson.
+ * control: Bump libdrm-dev build-dep.
+ * rules: Don't prefer iris over i965 on Intel to avoid needing a newer
+ libepoxy.
+
+ -- Timo Aaltonen Thu, 14 May 2020 22:07:49 +0300
+
+mesa (20.0.4-2ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+ * disable-intel-ccs-compression.diff: Dropped, we use iris by default.
+ (LP: #1863874)
+ * Don't build with llvm-10 until ppc64el ftbfs is fixed.
+
+ -- Timo Aaltonen Thu, 16 Apr 2020 09:22:34 +0300
+
+mesa (20.0.4-2) unstable; urgency=medium
+
+ * fix-build-with-llvm-10.diff: Add a patch to fix build with Polly,
+ and build with llvm-10 again. (Closes: #956004)
+ * iris-drop-cache-coherent-cpu-mapping.diff: Fix corruption with iris
+ (Closes: #954311) (LP: #1864274)
+ * gallium-fix-bob-compute-shaders.diff: Fix vaapi with bob
+ deinterlacing. (LP: #1867188)
+
+ -- Timo Aaltonen Wed, 15 Apr 2020 10:16:24 +0300
+
+mesa (20.0.4-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Mon, 06 Apr 2020 08:55:45 +0300
+
+mesa (20.0.4-1) unstable; urgency=medium
+
+ * New upstream release.
+ * path_max.diff, libglx-mesa0.symbols.hurd: Fix build on Hurd.
+ (Closes: #955351)
+ * upstream/signing-key.asc: Added Eric Engestrom's key.
+ * source/local-options: Update extend-diff-ignore.
+
+ -- Timo Aaltonen Sun, 05 Apr 2020 23:39:55 +0300
+
+mesa (20.0.2-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Wed, 25 Mar 2020 16:37:30 +0200
+
+mesa (20.0.2-1) unstable; urgency=medium
+
+ * New upstream release.
+ * control: Revert to building with llvm/clang-9, until it builds with
+ 10.
+
+ -- Timo Aaltonen Thu, 19 Mar 2020 16:03:53 +0200
+
+mesa (20.0.1-2) experimental; urgency=medium
+
+ * control: Fix clang build-dep to actually use libclang-10-dev.
+
+ -- Timo Aaltonen Mon, 09 Mar 2020 23:20:30 +0200
+
+mesa (20.0.1-1) experimental; urgency=medium
+
+ * New upstream release.
+
+ -- Timo Aaltonen Mon, 09 Mar 2020 17:40:08 +0200
+
+mesa (20.0.0-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Thu, 20 Feb 2020 11:09:59 +0200
+
+mesa (20.0.0-1) experimental; urgency=medium
+
+ * New upstream release.
+ * control: Use debhelper-compat, bump to 12.
+
+ -- Timo Aaltonen Thu, 20 Feb 2020 10:46:06 +0200
+
+mesa (20.0.0~rc3-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+ * dont-enable-10bpc-by-default.diff: Dropped, gnome is fixed long ago.
+
+ -- Timo Aaltonen Wed, 19 Feb 2020 11:39:27 +0200
+
+mesa (20.0.0~rc3-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+ * rules: Fix dh_auto_test accepting failure.
+
+ -- Timo Aaltonen Fri, 14 Feb 2020 14:07:05 +0200
+
+mesa (20.0.0~rc2-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+ * rules: Make running tests non-fatal, until they're actually expected
+ to pass on each arch.
+
+ -- Timo Aaltonen Mon, 10 Feb 2020 15:02:10 +0200
+
+mesa (20.0.0~rc1-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+ * control: Add libzstd-dev to build-depends for zstd compressed shader
+ cache support.
+ * rules, fix-python-shebang.diff: Enable tests again to see where we
+ are now.
+
+ -- Timo Aaltonen Tue, 04 Feb 2020 15:46:02 +0200
+
+mesa (20.0.0~git20200129-1) experimental; urgency=medium
+
+ * New upstream snapshot.
+ * mesa-vulkan-drivers.install: Include overlay control script.
+
+ -- Timo Aaltonen Wed, 29 Jan 2020 09:29:20 +0200
+
+mesa (19.3.3-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Tue, 28 Jan 2020 21:57:20 +0200
+
+mesa (19.3.3-1) unstable; urgency=medium
+
+ * New upstream release.
+ * rules: Build zink on x86.
+ * control: Add libglvnd-dev to libegl1-mesa-dev/libgles2-mesa-
+ dev/libgl1-mesa-dev Depends to ease the transition. (Closes: #949677)
+ * drisw-fix-depth-for-ximage.diff: Dropped, upstream.
+
+ -- Timo Aaltonen Tue, 28 Jan 2020 21:45:02 +0200
+
+mesa (19.3.2-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Wed, 15 Jan 2020 15:24:05 +0200
+
+mesa (19.3.2-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Timo Aaltonen Wed, 15 Jan 2020 14:55:29 +0200
+
+mesa (19.3.1-4ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+
+ -- Timo Aaltonen Wed, 08 Jan 2020 14:17:39 +0200
+
+mesa (19.3.1-4) unstable; urgency=medium
+
+ [ Julien Cristau ]
+ * Ensure strict dependencies on libglapi-mesa (closes: #947813).
+
+ [ Timo Aaltonen ]
+ * control: Add libgl{,x}-dev to mesa-common-dev Depends. (Closes:
+ #947392)
+ * drisw-fix-depth-for-ximage.diff: Fix sw driver rgbBits/depth calculation.
+ (Closes: #947196)
+
+ -- Timo Aaltonen Wed, 08 Jan 2020 11:38:56 +0200
+
+mesa (19.3.1-3) unstable; urgency=medium
+
+ * control, rules: Actually build radv on mipsel, drop mips from
+ everywhere since it's not an arch anymore. (Closes: #947310)
+
+ -- Timo Aaltonen Wed, 25 Dec 2019 22:05:01 +0200
+
+mesa (19.3.1-2) unstable; urgency=medium
+
+ * rules: Build radv on mips/mipsel again.
+
+ -- Timo Aaltonen Thu, 19 Dec 2019 23:17:58 +0200
+
+mesa (19.3.1-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+ * patches: Refreshed, i965-sync-pciids.diff dropped as it's applied
+ upstream.
+
+ -- Timo Aaltonen Thu, 19 Dec 2019 21:00:23 +0200
+
+mesa (19.3.1-1) unstable; urgency=medium
+
+ * New upstream release.
+ * fix-radv-secure-compile.diff: Dropped, upstream.
+
+ -- Timo Aaltonen Thu, 19 Dec 2019 16:45:25 +0200
+
+mesa (19.3.0-1) experimental; urgency=medium
+
+ * New upstream release.
+ * fix-radv-secure-compile.diff: Fix radv build where __NR__newselect
+ isn't defined.
+ * rules: Restore radv build on non-x86 archs.
+
+ -- Timo Aaltonen Fri, 13 Dec 2019 01:39:02 +0200
+
+mesa (19.3.0~rc6-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+ * control, rules: Don't build radv on non-x86.
+ * generate-pc-files-for-gles-and-gles2.diff: Dropped, not needed anymore.
+ * rules: Update clean target.
+
+ -- Timo Aaltonen Mon, 09 Dec 2019 13:29:49 +0200
+
+mesa (19.3.0~rc5-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+ * generate-pc-files-for-gles-and-gles2.diff: This is needed until we
+ have glvnd 1.2 in the archive.
+
+ -- Timo Aaltonen Fri, 29 Nov 2019 21:56:04 +0200
+
+mesa (19.2.6-1) unstable; urgency=medium
+
+ * New upstream release.
+ * create-gles-pc-files-with-old-glvnd.diff: Dropped, upstream.
+
+ -- Timo Aaltonen Fri, 29 Nov 2019 21:08:25 +0200
+
+mesa (19.2.4-1ubuntu1) focal; urgency=medium
+
+ * Merge from Debian.
+ * revert-set-full-thread-affinity.diff: Dropped, qemu is fixed now in
+ eoan and up. (LP: #1815889)
+
+ -- Timo Aaltonen Wed, 20 Nov 2019 20:17:00 +0200
+
+mesa (19.2.4-1) unstable; urgency=medium
+
+ * New upstream release. (Closes: #944880)
+
+ -- Timo Aaltonen Mon, 18 Nov 2019 15:25:12 +0200
+
+mesa (19.2.3-1) unstable; urgency=medium
+
+ * New upstream release.
+ * create-gles-pc-files-with-old-glvnd.diff: Drop the revert with a
+ proposed patch to fix creating gles pc files with old glvnd.
+ * rules: GLESv2 libs aren't built anymore, drop removing the libs.
+ * mesa-common-dev: Drop mangled GL/GLX headers, they're not generated
+ anymore.
+
+ -- Timo Aaltonen Thu, 07 Nov 2019 14:01:26 +0200
+
mesa (19.2.8-0ubuntu0~18.04.3) bionic; urgency=medium
* i965-sync-pciids.diff: Add back three pci-id's for CML that were
diff -Nru mesa-19.2.8/debian/control mesa-20.0.8/debian/control
--- mesa-19.2.8/debian/control 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/control 2020-07-13 13:21:27.000000000 +0000
@@ -7,11 +7,11 @@
Standards-Version: 4.1.4
Build-Depends:
debhelper (>= 11),
-# glslang-tools [amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32],
+# glslang-tools [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32],
meson (>= 0.45),
quilt (>= 0.63-8.2~),
pkg-config,
- libdrm-dev (>= 2.4.99) [!hurd-any],
+ libdrm-dev (>= 2.4.101) [!hurd-any],
libx11-dev,
libxxf86vm-dev,
libexpat1-dev,
@@ -21,7 +21,7 @@
libxext-dev,
libva-dev (>= 1.6.0) [linux-any kfreebsd-any] ,
libvdpau-dev (>= 1.1.1) [linux-any kfreebsd-any],
- libvulkan-dev [amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32],
+ libvulkan-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32],
x11proto-dev,
linux-libc-dev (>= 2.6.31) [linux-any],
libx11-xcb-dev,
@@ -34,17 +34,18 @@
libxcb-sync-dev,
libxrandr-dev,
libxshmfence-dev (>= 1.1),
+ libzstd-dev,
python3,
python3-mako,
python3-setuptools,
flex,
bison,
- llvm-9-dev (>= 1:9~+rc3-1~exp3) [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
- libelf-dev [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
+ libelf-dev [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
libwayland-dev (>= 1.15.0) [linux-any],
libwayland-egl-backend-dev (>= 1.15.0) [linux-any],
- libclang-9-dev (>= 1:9~+rc3-1~exp3) [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
- libclc-dev (>= 0.2.0+git20190827-1~) [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
+ llvm-10-dev (>= 1:10.0.0-4~) [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
+ libclang-10-dev (>= 1:10.0.0-4~) [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
+ libclc-dev (>= 0.2.0+git20190827-1ubuntu0.18.04.3) [amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64],
wayland-protocols (>= 1.9),
zlib1g-dev,
libglvnd-core-dev,
@@ -270,7 +271,6 @@
Depends:
${shlibs:Depends},
${misc:Depends},
- libglapi-mesa (= ${binary:Version}),
libgl1-mesa-dri,
Provides: libglx-vendor
Breaks:
@@ -383,7 +383,6 @@
Depends:
${shlibs:Depends},
${misc:Depends},
- libglapi-mesa (= ${binary:Version}),
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: Mesa Off-screen rendering extension
@@ -455,7 +454,7 @@
Package: mesa-vulkan-drivers
Section: libs
-Architecture: amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32
+Architecture: amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32
Pre-Depends: ${misc:Pre-Depends}
Depends:
libvulkan1,
@@ -469,7 +468,7 @@
Package: mesa-opencl-icd
Section: libs
-Architecture: amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64
+Architecture: amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64
Pre-Depends: ${misc:Pre-Depends}
Depends:
libclc-r600 (>= 0.2.0+git20180312-1~),
diff -Nru mesa-19.2.8/debian/libglx-mesa0.symbols.hurd mesa-20.0.8/debian/libglx-mesa0.symbols.hurd
--- mesa-19.2.8/debian/libglx-mesa0.symbols.hurd 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/libglx-mesa0.symbols.hurd 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,6 @@
+libGLX_mesa.so.0 libglx-mesa0
+ __glx_Main@Base 17.0.0~
+ glAreTexturesResidentEXT@Base 0
+ glDeleteTexturesEXT@Base 0
+ glGenTexturesEXT@Base 0
+ glIsTextureEXT@Base 0
diff -Nru mesa-19.2.8/debian/mesa-vulkan-drivers.install mesa-20.0.8/debian/mesa-vulkan-drivers.install
--- mesa-19.2.8/debian/mesa-vulkan-drivers.install 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/mesa-vulkan-drivers.install 2020-07-13 13:21:27.000000000 +0000
@@ -1,3 +1,4 @@
+#usr/bin/mesa-overlay-control.py
#usr/share/vulkan/explicit_layer.d/*.json
usr/share/vulkan/icd.d/*.json
usr/lib/*/libvulkan_*.so
diff -Nru mesa-19.2.8/debian/patches/build-glesv2-pc.diff mesa-20.0.8/debian/patches/build-glesv2-pc.diff
--- mesa-19.2.8/debian/patches/build-glesv2-pc.diff 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/build-glesv2-pc.diff 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,11 @@
+--- a/src/mapi/meson.build
++++ b/src/mapi/meson.build
+@@ -35,7 +35,7 @@ if with_shared_glapi
+ else
+ libglapi = []
+ endif
+-if not with_glvnd
++if not glvnd_has_headers_and_pc_files
+ if with_gles1
+ subdir('es1api')
+ endif
diff -Nru mesa-19.2.8/debian/patches/disable-intel-ccs-compression.diff mesa-20.0.8/debian/patches/disable-intel-ccs-compression.diff
--- mesa-19.2.8/debian/patches/disable-intel-ccs-compression.diff 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/patches/disable-intel-ccs-compression.diff 1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-Description: Disable i965 CCS renderbuffer compression
- It's a new optimization introduced in Mesa 18.0.0, however is presently
- causing framebuffer corruption when logging into Xorg sessions. This
- corruption is actually expected for now, until the kernel and Xorg are
- extended to query and understand the CCS modifier properly.
- .
- Presently upstream would rather have CCS _and_ the corruption in Xorg
- sessions than remove it. However that's not good enough for the Ubuntu
- user experience so we're just disabling CCS while the corruption is still
- a problem. It was just an optional optimization anyway.
-Author: Daniel van Vugt
-Bug-Ubuntu: https://launchpad.net/bugs/1753776
-Bug: https://bugs.freedesktop.org/show_bug.cgi?id=105518
-Forwarded: no
-Last-Update: 2018-03-21
-
---- a/src/mesa/drivers/dri/i965/intel_screen.c
-+++ b/src/mesa/drivers/dri/i965/intel_screen.c
-@@ -333,7 +333,11 @@ static const struct {
- { .modifier = DRM_FORMAT_MOD_LINEAR , .since_gen = 1 },
- { .modifier = I915_FORMAT_MOD_X_TILED , .since_gen = 1 },
- { .modifier = I915_FORMAT_MOD_Y_TILED , .since_gen = 6 },
-- { .modifier = I915_FORMAT_MOD_Y_TILED_CCS , .since_gen = 9 },
-+/* Disable CCS to work around Xorg login corruption (LP: #1753776).
-+ * Longer-term, upstream or someone needs to extend the kernel (and Xorg?)
-+ * to fix it properly: https://bugs.freedesktop.org/show_bug.cgi?id=105518
-+ * { .modifier = I915_FORMAT_MOD_Y_TILED_CCS , .since_gen = 9 },
-+ */
- };
-
- static bool
diff -Nru mesa-19.2.8/debian/patches/dont-enable-10bpc-by-default.diff mesa-20.0.8/debian/patches/dont-enable-10bpc-by-default.diff
--- mesa-19.2.8/debian/patches/dont-enable-10bpc-by-default.diff 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/patches/dont-enable-10bpc-by-default.diff 2020-07-13 13:21:27.000000000 +0000
@@ -1,9 +1,10 @@
--- a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
+++ b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
-@@ -37,5 +37,5 @@ DRI_CONF_SECTION_END
- DRI_CONF_SECTION_MISCELLANEOUS
+@@ -39,6 +39,6 @@ DRI_CONF_SECTION_MISCELLANEOUS
DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER("false")
DRI_CONF_GLSL_ZERO_INIT("false")
+ DRI_CONF_VS_POSITION_ALWAYS_INVARIANT("false")
- DRI_CONF_ALLOW_RGB10_CONFIGS("true")
+ DRI_CONF_ALLOW_RGB10_CONFIGS("false")
+ DRI_CONF_ALLOW_FP16_CONFIGS("false")
DRI_CONF_SECTION_END
diff -Nru mesa-19.2.8/debian/patches/fix-ppc64el.patch mesa-20.0.8/debian/patches/fix-ppc64el.patch
--- mesa-19.2.8/debian/patches/fix-ppc64el.patch 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/fix-ppc64el.patch 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,41 @@
+Description: Fix FTBFS on ppc64el
+gnu++11 used to let mesa compile on ppc64el but with the use of C++14
+compilation now fails.
+Let's not force gnu++11 and use defaults like on other arches but
+fix the issue that happens then, that is, the collision of altivec and
+c++ symbols.
+For that we undefine bool, vector, pixel as advised by altivec.h .
+Author: Frédéric Bonnard
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/meson.build
++++ b/meson.build
+@@ -724,14 +724,6 @@
+ dep_spirv_tools = null_dep
+ dep_llvmspirvlib = null_dep
+ endif
+-
+- if host_machine.cpu_family().startswith('ppc') and cpp.compiles('''
+- #if !defined(__VEC__) || !defined(__ALTIVEC__)
+- #error "AltiVec not enabled"
+- #endif''',
+- name : 'Altivec')
+- clover_cpp_std += ['cpp_std=gnu++11']
+- endif
+ else
+ dep_clc = null_dep
+ dep_spirv_tools = null_dep
+--- a/include/CL/cl_platform.h
++++ b/include/CL/cl_platform.h
+@@ -356,6 +356,11 @@
+ /* Define basic vector types */
+ #if defined( __VEC__ )
+ #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
++ #if defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__)
++ #undef vector
++ #undef pixel
++ #undef bool
++ #endif
+ typedef __vector unsigned char __cl_uchar16;
+ typedef __vector signed char __cl_char16;
+ typedef __vector unsigned short __cl_ushort8;
diff -Nru mesa-19.2.8/debian/patches/fix-python-shebang.diff mesa-20.0.8/debian/patches/fix-python-shebang.diff
--- mesa-19.2.8/debian/patches/fix-python-shebang.diff 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/fix-python-shebang.diff 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,8 @@
+--- a/bin/symbols-check.py
++++ b/bin/symbols-check.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ import argparse
+ import os
diff -Nru mesa-19.2.8/debian/patches/i965-sync-pciids.diff mesa-20.0.8/debian/patches/i965-sync-pciids.diff
--- mesa-19.2.8/debian/patches/i965-sync-pciids.diff 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/patches/i965-sync-pciids.diff 1970-01-01 00:00:00.000000000 +0000
@@ -1,42 +0,0 @@
---- a/include/pci_ids/i965_pci_ids.h
-+++ b/include/pci_ids/i965_pci_ids.h
-@@ -205,10 +205,13 @@ CHIPSET(0x9BC0, cfl_gt2, "Intel(R) UHD G
- CHIPSET(0x9BC2, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x9BC4, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x9BC5, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
-+CHIPSET(0x9BC6, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x9BC8, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x9BCA, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x9BCB, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x9BCC, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
-+CHIPSET(0x9BE6, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
-+CHIPSET(0x9BF6, cfl_gt2, "Intel(R) UHD Graphics (Comet Lake 3x8 GT2)")
- CHIPSET(0x5A49, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)")
- CHIPSET(0x5A4A, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)")
- CHIPSET(0x5A41, cnl_3x8, "Intel(R) HD Graphics (Cannonlake 3x8 GT1)")
-@@ -222,17 +225,17 @@ CHIPSET(0x5A51, cnl_5x8, "Intel(R) HD Gr
- CHIPSET(0x5A52, cnl_5x8, "Intel(R) HD Graphics (Cannonlake 5x8 GT2)")
- CHIPSET(0x5A54, cnl_5x8, "Intel(R) HD Graphics (Cannonlake 5x8 GT2)")
- CHIPSET(0x8A50, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)")
--CHIPSET(0x8A51, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)")
--CHIPSET(0x8A52, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)")
--CHIPSET(0x8A53, icl_8x8, "Intel(R) HD Graphics (Ice Lake 8x8 GT2)")
--CHIPSET(0x8A54, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)")
--CHIPSET(0x8A56, icl_4x8, "Intel(R) HD Graphics (Ice Lake 4x8 GT1)")
-+CHIPSET(0x8A51, icl_8x8, "Intel(R) Iris(R) Plus Graphics (Ice Lake 8x8 GT2)")
-+CHIPSET(0x8A52, icl_8x8, "Intel(R) Iris(R) Plus Graphics (Ice Lake 8x8 GT2)")
-+CHIPSET(0x8A53, icl_8x8, "Intel(R) Iris(R) Plus Graphics (Ice Lake 8x8 GT2)")
-+CHIPSET(0x8A54, icl_6x8, "Intel(R) Iris(R) Plus Graphics (Ice Lake 6x8 GT1.5)")
-+CHIPSET(0x8A56, icl_4x8, "Intel(R) UHD Graphics (Ice Lake 4x8 GT1)")
- CHIPSET(0x8A57, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)")
--CHIPSET(0x8A58, icl_4x8, "Intel(R) HD Graphics (Ice Lake 4x8 GT1)")
-+CHIPSET(0x8A58, icl_4x8, "Intel(R) UHD Graphics (Ice Lake 4x8 GT1)")
- CHIPSET(0x8A59, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)")
--CHIPSET(0x8A5A, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)")
-+CHIPSET(0x8A5A, icl_6x8, "Intel(R) Iris(R) Plus Graphics (Ice Lake 6x8 GT1.5)")
- CHIPSET(0x8A5B, icl_4x8, "Intel(R) HD Graphics (Ice Lake 4x8 GT1)")
--CHIPSET(0x8A5C, icl_6x8, "Intel(R) HD Graphics (Ice Lake 6x8 GT1.5)")
-+CHIPSET(0x8A5C, icl_6x8, "Intel(R) Iris(R) Plus Graphics (Ice Lake 6x8 GT1.5)")
- CHIPSET(0x8A5D, icl_4x8, "Intel(R) HD Graphics (Ice Lake 4x8 GT1)")
- CHIPSET(0x8A71, icl_1x8, "Intel(R) HD Graphics (Ice Lake 1x8 GT0.5)")
- CHIPSET(0x4500, ehl_4x8, "Intel(R) HD Graphics (Elkhart Lake 4x8)")
diff -Nru mesa-19.2.8/debian/patches/path_max.diff mesa-20.0.8/debian/patches/path_max.diff
--- mesa-19.2.8/debian/patches/path_max.diff 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/path_max.diff 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,21 @@
+--- a/src/compiler/glsl/tests/cache_test.c 2020-03-18 22:24:18.000000000 +0100
++++ b/src/compiler/glsl/tests/cache_test.c 2020-03-30 12:09:05.000000000 +0200
+@@ -132,8 +132,8 @@
+ {
+ bool sub_dirs_created = false;
+
+- char buf[PATH_MAX];
+- if (getcwd(buf, PATH_MAX)) {
++ char *buf = getcwd(NULL, 0);
++ if (buf) {
+ char *full_path = NULL;
+ if (asprintf(&full_path, "%s%s", buf, ++cache_dir) != -1 ) {
+ struct stat sb;
+@@ -142,6 +142,7 @@
+
+ free(full_path);
+ }
++ free(buf);
+ }
+
+ expect_true(sub_dirs_created, "create sub dirs");
diff -Nru mesa-19.2.8/debian/patches/Revert-meson-drop-Wno-foo-bug-workaround.diff mesa-20.0.8/debian/patches/Revert-meson-drop-Wno-foo-bug-workaround.diff
--- mesa-19.2.8/debian/patches/Revert-meson-drop-Wno-foo-bug-workaround.diff 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/patches/Revert-meson-drop-Wno-foo-bug-workaround.diff 2020-07-13 13:21:27.000000000 +0000
@@ -8,66 +8,55 @@
meson.build | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
-diff --git a/meson.build b/meson.build
-index db94f85f04e..4936f17e674 100644
--- a/meson.build
+++ b/meson.build
-@@ -867,8 +867,6 @@ foreach a : ['-Werror=implicit-function-declaration',
- '-Werror=incompatible-pointer-types',
- '-Werror=format',
- '-Wformat-security',
-- '-Wno-missing-field-initializers',
-- '-Wno-format-truncation',
- '-fno-math-errno',
- '-fno-trapping-math', '-Qunused-arguments']
- if cc.has_argument(a)
-@@ -876,6 +874,12 @@ foreach a : ['-Werror=implicit-function-declaration',
- endif
- endforeach
+@@ -953,8 +953,6 @@ else
+ '-Werror=empty-body',
+ '-Werror=incompatible-pointer-types',
+ '-Werror=int-conversion',
+- '-Wno-missing-field-initializers',
+- '-Wno-format-truncation',
+ '-fno-math-errno',
+ '-fno-trapping-math',
+ '-Qunused-arguments',
+@@ -969,12 +967,15 @@ else
+ endif
+ endforeach
-+foreach a : ['missing-field-initializers', 'format-truncation']
-+ if cc.has_argument('-W' + a)
-+ c_args += '-Wno-' + a
-+ endif
-+endforeach
++ foreach a : ['missing-field-initializers', 'format-truncation']
++ if cc.has_argument('-W' + a)
++ c_args += '-Wno-' + a
++ endif
++ endforeach
+
- c_vis_args = []
- if cc.has_argument('-fvisibility=hidden')
- c_vis_args += '-fvisibility=hidden'
-@@ -886,9 +890,6 @@ cpp_args = []
- foreach a : ['-Werror=return-type',
- '-Werror=format',
- '-Wformat-security',
-- '-Wno-non-virtual-dtor',
-- '-Wno-missing-field-initializers',
-- '-Wno-format-truncation',
- '-fno-math-errno', '-fno-trapping-math',
- '-Qunused-arguments']
- if cpp.has_argument(a)
-@@ -896,11 +897,19 @@ foreach a : ['-Werror=return-type',
- endif
- endforeach
+ _trial = [
+ '-Werror=return-type',
+ '-Werror=empty-body',
+- '-Wno-non-virtual-dtor',
+- '-Wno-missing-field-initializers',
+- '-Wno-format-truncation',
+ '-fno-math-errno',
+ '-fno-trapping-math',
+ '-Qunused-arguments',
+@@ -989,9 +990,18 @@ else
+ endif
+ endforeach
-+# For some reason, the test for -Wno-foo always succeeds with gcc, even if the
-+# option is not supported. Hence, check for -Wfoo instead.
+- foreach a : ['-Wno-override-init', '-Wno-initializer-overrides']
+- if cc.has_argument(a)
+- no_override_init_args += a
++ # For some reason, the test for -Wno-foo always succeeds with gcc, even if the
++ # option is not supported. Hence, check for -Wfoo instead.
+
-+foreach a : ['non-virtual-dtor', 'missing-field-initializers', 'format-truncation']
-+ if cpp.has_argument('-W' + a)
-+ cpp_args += '-Wno-' + a
-+ endif
-+endforeach
++ foreach a : ['non-virtual-dtor', 'missing-field-initializers', 'format-truncation']
++ if cpp.has_argument('-W' + a)
++ cpp_args += '-Wno-' + a
++ endif
++ endforeach
+
- no_override_init_args = []
--foreach a : ['-Wno-override-init',
-- '-Wno-initializer-overrides']
-- if cc.has_argument(a)
-- no_override_init_args += a
-+foreach a : ['override-init', 'initializer-overrides']
-+ if cc.has_argument('-W' + a)
-+ no_override_init_args += '-Wno-' + a
- endif
- endforeach
++ foreach a : ['no-override-init', 'no-initializer-overrides']
++ if cc.has_argument('-W' + a)
++ no_override_init_args += '-Wno-' + a
+ endif
+ endforeach
---
-2.20.1
-
diff -Nru mesa-19.2.8/debian/patches/Revert-meson-revert-glvnd-workaround.patch mesa-20.0.8/debian/patches/Revert-meson-revert-glvnd-workaround.patch
--- mesa-19.2.8/debian/patches/Revert-meson-revert-glvnd-workaround.patch 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/Revert-meson-revert-glvnd-workaround.patch 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,103 @@
+From 6840f6b5c1a8bab4959bb60000249753f2765850 Mon Sep 17 00:00:00 2001
+From: Timo Aaltonen
+Date: Thu, 7 May 2020 14:15:11 +0300
+Subject: [PATCH] Revert "meson: revert glvnd workaround"
+
+This reverts commit 6e21dcc5a31634232660eff1a83052c2ebb4816c.
+---
+ include/meson.build | 2 +-
+ meson.build | 4 ++++
+ src/egl/meson.build | 13 +++++++++++--
+ src/meson.build | 14 ++++++++++++--
+ 4 files changed, 28 insertions(+), 5 deletions(-)
+
+diff --git a/include/meson.build b/include/meson.build
+index bddbd67d328..4d73aef9ce3 100644
+--- a/include/meson.build
++++ b/include/meson.build
+@@ -22,7 +22,7 @@ inc_include = include_directories('.')
+ inc_d3d9 = include_directories('D3D9')
+ inc_haikugl = include_directories('HaikuGL')
+
+-if not with_glvnd
++if not glvnd_has_headers_and_pc_files
+ if with_gles1 or with_gles2 or with_opengl or with_egl
+ install_headers('KHR/khrplatform.h', subdir : 'KHR')
+ endif
+diff --git a/meson.build b/meson.build
+index c48945b3c48..879426d212d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1469,8 +1469,12 @@ else
+ endif
+
+ dep_glvnd = null_dep
++glvnd_has_headers_and_pc_files = false
+ if with_glvnd
+ dep_glvnd = dependency('libglvnd', version : '>= 1.2.0')
++ # GLVND before 1.2 was missing its pkg-config and header files, forcing every
++ # vendor to provide them and the distro maintainers to resolve the conflict.
++ glvnd_has_headers_and_pc_files = dep_glvnd.version().version_compare('>= 1.2.0')
+ pre_args += '-DUSE_LIBGLVND=1'
+ endif
+
+diff --git a/src/egl/meson.build b/src/egl/meson.build
+index 12d74ec37fa..693de9c8c05 100644
+--- a/src/egl/meson.build
++++ b/src/egl/meson.build
+@@ -174,12 +174,21 @@ libegl = shared_library(
+ version : egl_lib_version,
+ )
+
+-if not with_glvnd
++# If using glvnd the pkg-config header should not point to EGL_mesa, it should
++# point to EGL. glvnd is only available on unix like platforms so adding -l
++# should be safe here
++if not with_glvnd or not glvnd_has_headers_and_pc_files
++ if not glvnd_has_headers_and_pc_files
++ _egl = '-L${libdir} -lEGL'
++ else
++ _egl = libegl
++ endif
++
+ pkg.generate(
+ name : 'egl',
+ description : 'Mesa EGL Library',
+ version : meson.project_version(),
+- libraries : libegl,
++ libraries : _egl,
+ libraries_private: gl_priv_libs,
+ requires_private : gl_priv_reqs,
+ extra_cflags : gl_pkgconfig_c_flags,
+diff --git a/src/meson.build b/src/meson.build
+index 53b999ad22a..1463d7b261f 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -114,12 +114,22 @@ endif
+
+ # This must be after at least mesa, glx, and gallium, since libgl will be
+ # defined in one of those subdirs depending on the glx provider.
+-if with_glx != 'disabled' and not with_glvnd
++if with_glx != 'disabled' and (not with_glvnd or not glvnd_has_headers_and_pc_files)
++ # If using glvnd the pkg-config header should not point to GL_mesa, it should
++ # point to GL. glvnd is only available on unix like platforms so adding -l
++ # should be safe here
++ # TODO: in the glvnd case glvnd itself should really be providing this.
++ if not glvnd_has_headers_and_pc_files
++ _gl = '-L${libdir} -lGL'
++ else
++ _gl = libgl
++ endif
++
+ pkg.generate(
+ name : 'gl',
+ description : 'Mesa OpenGL Library',
+ version : meson.project_version(),
+- libraries : libgl,
++ libraries : _gl,
+ libraries_private : gl_priv_libs,
+ requires_private : gl_priv_reqs,
+ variables : ['glx_tls=yes'],
+--
+2.25.1
+
diff -Nru mesa-19.2.8/debian/patches/Revert-meson-Test-for-Wl-build-id-sha1.diff mesa-20.0.8/debian/patches/Revert-meson-Test-for-Wl-build-id-sha1.diff
--- mesa-19.2.8/debian/patches/Revert-meson-Test-for-Wl-build-id-sha1.diff 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/Revert-meson-Test-for-Wl-build-id-sha1.diff 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,30 @@
+From dfed42b838cdb31041e16594a7c86558509ff5f4 Mon Sep 17 00:00:00 2001
+From: Timo Aaltonen
+Date: Thu, 7 May 2020 13:42:00 +0300
+Subject: [PATCH] Revert "meson: Test for -Wl,--build-id=sha1"
+
+This reverts commit c0330461c9a8fcc86227489b35ff143e5d7ee2ab.
+---
+ meson.build | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index c48945b3c48..bea95b55fb7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1230,8 +1230,10 @@ if cc.links('int main() { return 0; }',
+ name : 'dynamic-list')
+ with_ld_dynamic_list = true
+ endif
+-
+-ld_args_build_id = cc.get_supported_link_arguments('-Wl,--build-id=sha1')
++ld_args_build_id = []
++if build_machine.system() != 'darwin'
++ ld_args_build_id += '-Wl,--build-id=sha1'
++endif
+
+ # check for dl support
+ dep_dl = null_dep
+--
+2.25.1
+
diff -Nru mesa-19.2.8/debian/patches/Revert-meson-Use-dependency.partial_dependency.patch mesa-20.0.8/debian/patches/Revert-meson-Use-dependency.partial_dependency.patch
--- mesa-19.2.8/debian/patches/Revert-meson-Use-dependency.partial_dependency.patch 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/Revert-meson-Use-dependency.partial_dependency.patch 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,72 @@
+From 12eae7c2b8f12a70063a49e1d1a09c68dae7d232 Mon Sep 17 00:00:00 2001
+From: Timo Aaltonen
+Date: Mon, 15 Jun 2020 13:26:50 +0300
+Subject: [PATCH] Revert "meson: Use dependency.partial_dependency()"
+
+This reverts commit a2776c24c7bb3a203b94b4c8e31864263c63bfc4.
+---
+ .pick_status.json | 2 +-
+ meson.build | 13 ++++++++++---
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/.pick_status.json b/.pick_status.json
+index ca9b2c0492c..2999c4b318e 100644
+--- a/.pick_status.json
++++ b/.pick_status.json
+@@ -18067,7 +18067,7 @@
+ "description": "meson: Use dependency.partial_dependency()",
+ "nominated": true,
+ "nomination_type": 1,
+- "resolution": 1,
++ "resolution": 0,
+ "master_sha": null,
+ "because_sha": "53f9131205a63fa8b282ab2a7e96c48209447da0"
+ },
+diff --git a/meson.build b/meson.build
+index eaaca7f13aa..d98cff3100d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -455,6 +455,8 @@ if with_dri
+ endif
+ endif
+
++prog_pkgconfig = find_program('pkg-config')
++
+ _vdpau = get_option('gallium-vdpau')
+ if not system_has_kms_drm
+ if _vdpau == 'true'
+@@ -481,7 +483,9 @@ with_gallium_vdpau = false
+ if _vdpau != 'false'
+ dep_vdpau = dependency('vdpau', version : '>= 1.1', required : _vdpau == 'true')
+ if dep_vdpau.found()
+- dep_vdpau = dep_vdpau.partial_dependency(compile_args : true)
++ dep_vdpau = declare_dependency(
++ compile_args : run_command(prog_pkgconfig, ['vdpau', '--cflags']).stdout().split()
++ )
+ with_gallium_vdpau = true
+ endif
+ endif
+@@ -631,7 +635,9 @@ dep_va = null_dep
+ if _va != 'false'
+ dep_va = dependency('libva', version : '>= 0.38.0', required : _va == 'true')
+ if dep_va.found()
+- dep_va_headers = dep_va.partial_dependency(compile_args : true)
++ dep_va_headers = declare_dependency(
++ compile_args : run_command(prog_pkgconfig, ['libva', '--cflags']).stdout().split()
++ )
+ with_gallium_va = true
+ endif
+ endif
+@@ -1563,7 +1569,8 @@ if with_platform_wayland
+ dep_wayland_server = dependency('wayland-server', version : '>=1.11')
+ if with_egl
+ dep_wayland_egl = dependency('wayland-egl-backend', version : '>= 3')
+- dep_wayland_egl_headers = dep_wayland_egl.partial_dependency(compile_args : true)
++ dep_wayland_egl_headers = declare_dependency(
++ compile_args : run_command(prog_pkgconfig, ['wayland-egl-backend', '--cflags']).stdout().split())
+ endif
+ wayland_dmabuf_xml = join_paths(
+ dep_wl_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable',
+--
+2.25.1
+
diff -Nru mesa-19.2.8/debian/patches/revert-requiring-new-libglvnd.diff mesa-20.0.8/debian/patches/revert-requiring-new-libglvnd.diff
--- mesa-19.2.8/debian/patches/revert-requiring-new-libglvnd.diff 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/revert-requiring-new-libglvnd.diff 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,11 @@
+--- a/meson.build
++++ b/meson.build
+@@ -1483,7 +1483,7 @@ endif
+ dep_glvnd = null_dep
+ glvnd_has_headers_and_pc_files = false
+ if with_glvnd
+- dep_glvnd = dependency('libglvnd', version : '>= 1.2.0')
++ dep_glvnd = dependency('libglvnd', version : '>= 0.2.0')
+ # GLVND before 1.2 was missing its pkg-config and header files, forcing every
+ # vendor to provide them and the distro maintainers to resolve the conflict.
+ glvnd_has_headers_and_pc_files = dep_glvnd.version().version_compare('>= 1.2.0')
diff -Nru mesa-19.2.8/debian/patches/revert-set-full-thread-affinity.diff mesa-20.0.8/debian/patches/revert-set-full-thread-affinity.diff
--- mesa-19.2.8/debian/patches/revert-set-full-thread-affinity.diff 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/patches/revert-set-full-thread-affinity.diff 1970-01-01 00:00:00.000000000 +0000
@@ -1,73 +0,0 @@
-commit d72507cb400c2ef8940ee194e46818d9ebf4187f
-Author: Timo Aaltonen
-Date: Mon Mar 4 11:32:22 2019 +0200
-
- Revert "util/u_queue: add UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY"
-
- This reverts commit d877451b48a59ab0f9a4210fc736f51da5851c9a.
-
---- a/src/gallium/drivers/radeonsi/si_pipe.c
-+++ b/src/gallium/drivers/radeonsi/si_pipe.c
-@@ -1019,8 +1019,7 @@ radeonsi_screen_create_impl(struct radeo
-
- if (!util_queue_init(&sscreen->shader_compiler_queue, "sh",
- 64, num_comp_hi_threads,
-- UTIL_QUEUE_INIT_RESIZE_IF_FULL |
-- UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY)) {
-+ UTIL_QUEUE_INIT_RESIZE_IF_FULL)) {
- si_destroy_shader_cache(sscreen);
- FREE(sscreen);
- return NULL;
-@@ -1030,7 +1029,6 @@ radeonsi_screen_create_impl(struct radeo
- "shlo",
- 64, num_comp_lo_threads,
- UTIL_QUEUE_INIT_RESIZE_IF_FULL |
-- UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY |
- UTIL_QUEUE_INIT_USE_MINIMUM_PRIORITY)) {
- si_destroy_shader_cache(sscreen);
- FREE(sscreen);
---- a/src/util/disk_cache.c
-+++ b/src/util/disk_cache.c
-@@ -377,8 +377,7 @@ disk_cache_create(const char *gpu_name,
- */
- util_queue_init(&cache->cache_queue, "disk$", 32, 1,
- UTIL_QUEUE_INIT_RESIZE_IF_FULL |
-- UTIL_QUEUE_INIT_USE_MINIMUM_PRIORITY |
-- UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY);
-+ UTIL_QUEUE_INIT_USE_MINIMUM_PRIORITY);
-
- cache->path_init_failed = false;
-
---- a/src/util/u_queue.c
-+++ b/src/util/u_queue.c
-@@ -241,20 +241,6 @@ util_queue_thread_func(void *input)
-
- free(input);
-
--#ifdef HAVE_PTHREAD_SETAFFINITY
-- if (queue->flags & UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY) {
-- /* Don't inherit the thread affinity from the parent thread.
-- * Set the full mask.
-- */
-- cpu_set_t cpuset;
-- CPU_ZERO(&cpuset);
-- for (unsigned i = 0; i < CPU_SETSIZE; i++)
-- CPU_SET(i, &cpuset);
--
-- pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset);
-- }
--#endif
--
- if (strlen(queue->name) > 0) {
- char name[16];
- snprintf(name, sizeof(name), "%s%i", queue->name, thread_index);
---- a/src/util/u_queue.h
-+++ b/src/util/u_queue.h
-@@ -48,7 +48,6 @@ extern "C" {
-
- #define UTIL_QUEUE_INIT_USE_MINIMUM_PRIORITY (1 << 0)
- #define UTIL_QUEUE_INIT_RESIZE_IF_FULL (1 << 1)
--#define UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY (1 << 2)
-
- #if defined(__GNUC__) && defined(HAVE_LINUX_FUTEX_H)
- #define UTIL_QUEUE_FENCE_FUTEX
diff -Nru mesa-19.2.8/debian/patches/series mesa-20.0.8/debian/patches/series
--- mesa-19.2.8/debian/patches/series 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/patches/series 2020-07-13 13:21:27.000000000 +0000
@@ -1,9 +1,15 @@
07_gallium-fix-build-failure-on-powerpcspe.diff
+fix-python-shebang.diff
+path_max.diff
+fix-ppc64el.patch
+src_glx_dri_common.h.diff
# Ubuntu patches.
dont-enable-10bpc-by-default.diff
-disable-intel-ccs-compression.diff
-revert-set-full-thread-affinity.diff
-i965-sync-pciids.diff
Revert-meson-drop-Wno-foo-bug-workaround.diff
Revert-meson-bump-required-version-to-0.46.diff
+Revert-meson-revert-glvnd-workaround.patch
+Revert-meson-Test-for-Wl-build-id-sha1.diff
+revert-requiring-new-libglvnd.diff
+build-glesv2-pc.diff
+Revert-meson-Use-dependency.partial_dependency.patch
diff -Nru mesa-19.2.8/debian/patches/src_glx_dri_common.h.diff mesa-20.0.8/debian/patches/src_glx_dri_common.h.diff
--- mesa-19.2.8/debian/patches/src_glx_dri_common.h.diff 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/patches/src_glx_dri_common.h.diff 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1,13 @@
+--- a/src/glx/dri_common.h 2020-04-30 00:48:24.000000000 +0200
++++ b/src/glx/dri_common.h 2020-05-10 15:22:44.000000000 +0200
+@@ -55,6 +55,10 @@
+
+ extern void driDestroyConfigs(const __DRIconfig **configs);
+
++#ifndef __GLXDRIdrawable
++typedef struct __GLXDRIdrawableRec __GLXDRIdrawable;
++#endif
++
+ extern __GLXDRIdrawable *
+ driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable);
+
diff -Nru mesa-19.2.8/debian/rules mesa-20.0.8/debian/rules
--- mesa-19.2.8/debian/rules 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/rules 2020-07-13 13:21:27.000000000 +0000
@@ -78,6 +78,7 @@
ifneq (,$(filter $(DEB_HOST_ARCH),amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32))
DRI_DRIVERS += i915, i965,
GALLIUM_DRIVERS += iris,
+ confflags_GALLIUM += -Dprefer-iris=false
endif
DRI_DRIVERS += r200, r100,
@@ -85,7 +86,7 @@
# LLVM is required for building r300g, radeonsi and llvmpipe drivers.
# It's also required for building OpenCL support.
- ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64))
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64))
GALLIUM_DRIVERS += radeonsi, swrast,
confflags_GALLIUM += -Dllvm=true
confflags_GALLIUM += -Dgallium-opencl=icd
@@ -103,13 +104,13 @@
# radv needs LLVM and the Vulkan loader, so only build on the subset of
# arches where we have LLVM enabled and where the Vulkan loader is built.
- ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64))
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64))
VULKAN_DRIVERS += amd,
endif
# build vulkan overlay where Vulkan loader is available
# needs meson 0.46 which 18.04 lacks
-# ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32))
+# ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64 x32))
# confflags_VULKAN += -Dvulkan-overlay-layer=true
# endif
@@ -138,6 +139,7 @@
-Dgallium-xvmc=false \
-Dgallium-omx=disabled \
-Db_ndebug=true \
+ -Dbuild-tests=true \
$(confflags_DIRECT_RENDERING) \
$(confflags_GBM) \
$(confflags_DRI3) \
@@ -154,6 +156,7 @@
rm -rf $$(find -name Makefile.in)
rm -rf bin/install-sh bin/ltmain.sh
for file in debian/*.in; do rm -f $${file%%.in}; done
+ rm -rf src/amd/compiler/__pycache__/ src/amd/registers/__pycache__
rm -rf src/amd/vulkan/*.pyc src/amd/vulkan/__pycache__/
rm -rf src/compiler/nir/*.pyc src/compiler/nir/__pycache__/
rm -rf src/egl/generate/*.pyc src/egl/generate/__pycache__/
@@ -175,7 +178,10 @@
$${file} > $${file%%.in}; \
done
+# some tests are expected to fail for now, drop this when upstream has
+# better cross-build testing in place and expected failures fixed
override_dh_auto_test:
+ -dh_auto_test
allpkg = $(shell dh_listpackages -a)
@@ -193,6 +199,9 @@
rm debian/tmp/usr/lib/*/libEGL_mesa.so
rm debian/tmp/usr/lib/*/libGLX_mesa.so
+ # we only need the pkgconfig file
+ rm debian/tmp/usr/lib/*/libGLESv2*
+
# Copy the hardlinked *_dri.so correctly.
install -m755 -d debian/libgl1-mesa-dri/usr/lib/${DEB_HOST_MULTIARCH}/dri/
mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/dri/*_dri.so \
diff -Nru mesa-19.2.8/debian/shlibs.local mesa-20.0.8/debian/shlibs.local
--- mesa-19.2.8/debian/shlibs.local 1970-01-01 00:00:00.000000000 +0000
+++ mesa-20.0.8/debian/shlibs.local 2020-07-13 13:21:27.000000000 +0000
@@ -0,0 +1 @@
+libglapi 0 libglapi-mesa (= ${binary:Version})
diff -Nru mesa-19.2.8/debian/upstream/signing-key.asc mesa-20.0.8/debian/upstream/signing-key.asc
--- mesa-19.2.8/debian/upstream/signing-key.asc 2020-07-13 13:21:26.000000000 +0000
+++ mesa-20.0.8/debian/upstream/signing-key.asc 2020-07-13 13:21:27.000000000 +0000
@@ -818,3 +818,21 @@
tgA=
=37PC
-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBF5i1J4BCACsKVBDxUpz0m03D6ojiR4zZTuLJuI8qrc5HivZiJOKBWvKUm8/
+SUSCCbJ5ka7zwfEQMepm0rdQfFj6BDqAqEAmG/WU9TTbNx3TBDtT3CBBXSDaiWjO
+BFlglWKXJeUfHYpfIB1sC6aIIdSnPlU57Fs7jA9FtHbJM3SSwab/492udHZY/bKV
+s53Z7KcZDKPMtuZCnGbOZ1+lu8EMHuw9TfqQZODUOvDPYjpzqZAjsTJwdNtOeyWv
+dafED7PTpuod6eQnvgUKFlj6aqoZhZa9/hWdGDhexLzRGM4pwZcUMEb+1pd1TBko
+wqXJbW3XLs5B/cGiEbqHyDVoaI6J/JleDY1RABEBAAG0IkVyaWMgRW5nZXN0cm9t
+IDxlcmljQGVuZ2VzdHJvbS5jaD6JAU4EEwEIADgWIQRXVR3hW5aPY0HCSPaNjjGv
+wyQopgUCXmLUngIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCNjjGvwyQo
+puKwCACTeD0Eh+M8IIEAuGVtPgy3jCDIoOnNg+QI6VAh9qNB4Yx0uPzvOwmvAODY
+fUdPbBxn9CIU1X3buJmI1G75c2ZT+ZXJbkute6oif+f2E6vLe+Ox0GeGIBNQK4iZ
++pV0JPn3seqhDJAekRBWXNJszuVNxSDFsVi+qEoTPJZze7yOcc1QMcRsnJ+S7YFg
+jf/5aRrqdnLxVbph53Vrawas3rQk97Ln+vNd/Ca1HMv8vXMPtEFLk5JQI+gmdVv3
+xcpz2ss3mMU5+YnY69T1EBemZIMcE17wPo7ROvT8x1fG2fnPwHqJieQFCMGKLW29
+5peUY2OiHdLgaepbqWrB2Xxy+BY+
+=rSFv
+-----END PGP PUBLIC KEY BLOCK-----
diff -Nru mesa-19.2.8/docs/bugs.html mesa-20.0.8/docs/bugs.html
--- mesa-19.2.8/docs/bugs.html 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/docs/bugs.html 2020-06-12 01:21:16.000000000 +0000
@@ -24,7 +24,7 @@
To file a Mesa bug, go to
-
+
GitLab on freedesktop.org
diff -Nru mesa-19.2.8/docs/codingstyle.html mesa-20.0.8/docs/codingstyle.html
--- mesa-19.2.8/docs/codingstyle.html 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/docs/codingstyle.html 2020-06-12 01:21:16.000000000 +0000
@@ -41,11 +41,11 @@
Opening braces go on the same line as the if/for/while statement.
For example:
- if (condition) {
- foo;
- } else {
- bar;
- }
+if (condition) {
+ foo;
+} else {
+ bar;
+}
Put a space before/after operators. For example, a = b + c;
@@ -53,7 +53,7 @@
This GNU indent command generally does the right thing for formatting:
- indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
+indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
@@ -63,47 +63,47 @@
Single-line comments:
- /* null-out pointer to prevent dangling reference below */
- bufferObj = NULL;
+/* null-out pointer to prevent dangling reference below */
+bufferObj = NULL;
Or,
- bufferObj = NULL; /* prevent dangling reference below */
+bufferObj = NULL; /* prevent dangling reference below */
Multi-line comment:
- /* If this is a new buffer object id, or one which was generated but
- * never used before, allocate a buffer object now.
- */
+/* If this is a new buffer object id, or one which was generated but
+ * never used before, allocate a buffer object now.
+ */
We try to quote the OpenGL specification where prudent:
- /* Page 38 of the PDF of the OpenGL ES 3.0 spec says:
- *
- * "An INVALID_OPERATION error is generated for any of the following
- * conditions:
- *
- * * <length> is zero."
- *
- * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec
- * (30.10.2014) also says this, so it's no longer allowed for desktop GL,
- * either.
- */
+/* Page 38 of the PDF of the OpenGL ES 3.0 spec says:
+ *
+ * "An INVALID_OPERATION error is generated for any of the following
+ * conditions:
+ *
+ * * <length> is zero."
+ *
+ * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec
+ * (30.10.2014) also says this, so it's no longer allowed for desktop GL,
+ * either.
+ */
Function comment example:
- /**
- * Create and initialize a new buffer object. Called via the
- * ctx->Driver.CreateObject() driver callback function.
- * \param name integer name of the object
- * \param type one of GL_FOO, GL_BAR, etc.
- * \return pointer to new object or NULL if error
- */
- struct gl_object *
- _mesa_create_object(GLuint name, GLenum type)
- {
- /* function body */
- }
+/**
+ * Create and initialize a new buffer object. Called via the
+ * ctx->Driver.CreateObject() driver callback function.
+ * \param name integer name of the object
+ * \param type one of GL_FOO, GL_BAR, etc.
+ * \return pointer to new object or NULL if error
+ */
+struct gl_object *
+_mesa_create_object(GLuint name, GLenum type)
+{
+ /* function body */
+}
Put the function return type and qualifiers on one line and the function
@@ -113,11 +113,11 @@
Function names follow various conventions depending on the type of function:
- glFooBar() - a public GL entry point (in glapi_dispatch.c)
- _mesa_FooBar() - the internal immediate mode function
- save_FooBar() - retained mode (display list) function in dlist.c
- foo_bar() - a static (private) function
- _mesa_foo_bar() - an internal non-static Mesa function
+glFooBar() - a public GL entry point (in glapi_dispatch.c)
+_mesa_FooBar() - the internal immediate mode function
+save_FooBar() - retained mode (display list) function in dlist.c
+foo_bar() - a static (private) function
+_mesa_foo_bar() - an internal non-static Mesa function
Constants, macros and enum names are ALL_UPPERCASE
, with _
diff -Nru mesa-19.2.8/docs/devinfo.html mesa-20.0.8/docs/devinfo.html
--- mesa-19.2.8/docs/devinfo.html 2019-12-18 19:04:21.000000000 +0000
+++ mesa-20.0.8/docs/devinfo.html 2020-06-12 01:21:16.000000000 +0000
@@ -77,9 +77,6 @@
-
-
-