Skip to content
This repository has been archived by the owner on Jan 7, 2023. It is now read-only.

DONOTMERGE: use the private drm lib name #109

Open
wants to merge 220 commits into
base: master
Choose a base branch
from

Conversation

strassek
Copy link
Contributor

Change-Id: I567da1c48e588b1a65c883323e92c2a34822b5d8
Signed-off-by: Yong Yao [email protected]
Signed-off-by: Ren Chenglei [email protected]

evelikov-work and others added 30 commits November 5, 2018 22:16
eglQueryDevicesEXT (unlike the other three functions) does not depend
on the display. It is implemented in GLVND, which calls into each
driver collecting the list of devices and presenting it to the user.

For the other entrypoints, GLVND acts as pass through stub calling into
the vendor library. The vendor implementation calls back into GLVND to
get the vendor dispatch. Then the driver proceeds to call itself via
the said dispatch.

This design makes is possible to keep using "old" GLVND with newer
vendor drivers. Since effectively all the extension code is within the
latter itself.

Without said entrypoints, any user will outright crash - as reported in
the bug report.

Note: there's a follow-up fix needed to our GLVND code, to make piglit
happy.

v2: add some beefy documentation in the commit message.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108635
Fixes: 7552fcb ("egl: add base EGL_EXT_device_base implementation")
Reported-by: [email protected]
Cc: [email protected]
Acked-by: Eric Engestrom <[email protected]>
Signed-off-by: Emil Velikov <[email protected]>
Tested-by: Emil Velikov <[email protected]>
(cherry picked from commit 2a8fefd)
If the user provides an invalid display or device the ToVendor lookup
will fail.

In this case, the local [Mesa vendor] error code will be set. Thus on
sequential eglGetError(), the error will be EGL_SUCCESS.

To be more specific, GLVND remembers the last vendor and calls back
into it's eglGetError, although there's no guarantee to ever have had
one.

v2:
 - Add _eglError call, so the debug callback is executed (Kyle)
 - Drop XXX comment.

Piglit: tests/egl/spec/egl_ext_device_query
Fixes: ce562f9 ("EGL: Implement the libglvnd interface for EGL (v3)")
Cc: Eric Engestrom <[email protected]>
Signed-off-by: Emil Velikov <[email protected]>
Reviewed-by: Kyle Brenneman <[email protected]>
(cherry picked from commit b3ade65)
In order to handle pause/resume properly, the offset should
be added to the buffer binding not to the begin/end paths.

v2: don't add offset to size
Fixes ext_transform_feedback-alignment* under zink

Fixes: b4eb029 (radv: implement VK_EXT_transform_feedback)
Reviewed-by: Samuel Pitoiset <[email protected]>
(cherry picked from commit 7f37a52)
If the user gives 0 counterBuffers then the driver should still
enable transform feedback on all targets. This changes the
driver to always enable xfb, and use counter buffers where
one is defined for the target in question.

Fixes: b4eb029 (radv: implement VK_EXT_transform_feedback)
Reviewed-by: Samuel Pitoiset <[email protected]>
(cherry picked from commit 677b496)
To avoid build error in u_debug_stack_android.cpp
due to now missing u_debug.h header:

external/mesa/src/gallium/auxiliary/util/u_debug_stack_android.cpp:26:10:
fatal error: 'u_debug.h' file not found
#include "u_debug.h"
         ^
1 error generated.

Fixes: 37db383 ("util: Move u_debug to utils")
Signed-off-by: Mauro Rossi <[email protected]>
Reviewed-by: Dylan Baker <[email protected]>
(cherry picked from commit b9dec21)
Shader-db results Skylake:

total instructions in shared programs: 13109035 -> 13109024 (<.01%)
instructions in affected programs: 4777 -> 4766 (-0.23%)
helped: 11
HURT: 0

total cycles in shared programs: 332090418 -> 332090443 (<.01%)
cycles in affected programs: 19474 -> 19499 (0.13%)
helped: 6
HURT: 4

Reviewed-by: Jason Ekstrand <[email protected]>
(cherry picked from commit c7bdda8)
We cannot use nir_build_alu() to create the new alu as it has no
way to know how many components of the src we will use. This
results in it guessing the max number of components from one of
its inputs.

Fixes the following CTS tests:

dEQP-VK.spirv_assembly.instruction.graphics.selection_block_order.out_of_order_frag
dEQP-VK.spirv_assembly.instruction.graphics.selection_block_order.out_of_order_geom
dEQP-VK.spirv_assembly.instruction.graphics.selection_block_order.out_of_order_tessc
dEQP-VK.spirv_assembly.instruction.graphics.selection_block_order.out_of_order_vert

Fixes: 2975422 ("nir: propagates if condition evaluation down some alu chains")

Reviewed-by: Jason Ekstrand <[email protected]>
(cherry picked from commit 769ae9f)
In some cases (not building with llvm, which automatically pulls in
pthreads) nine needs to be directly linked with pthreads. Fixes building
on x86 (32 bit) without llvm.

Distro bug: https://bugs.gentoo.org/670094
Fixes: 6b4c704
       ("meson: build gallium nine state_tracker")
Tested-by: Rafal Lalik <[email protected]>
Reviewed-by: Matt Turner <[email protected]>

(cherry picked from commit 7652931)
libmesa_git_sha1 whole static dependency is added to get git_sha1.h header
and avoid following building error:

external/mesa/src/amd/vulkan/radv_device.c:46:10:
fatal error: 'git_sha1.h' file not found
         ^
1 error generated.

Fixes: 9d40ec2 ("radv: Add support for VK_KHR_driver_properties.")
Signed-off-by: Mauro Rossi <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
(cherry picked from commit 5c0cff8)
Fixes: da977ad ("r600/sb: start adding GDS support")
Signed-off-by: Vinson Lee <[email protected]>
Reviewed-By: Gert Wollny <[email protected]>
(cherry picked from commit 64a9ed8)
Cc: 18.3 <[email protected]>
Fixes: b4eb029 ("radv: implement VK_EXT_transform_feedback")
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
(cherry picked from commit b1b2dd0)
Signed-off-by: Eric Engestrom <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
(cherry picked from commit dcee22a)
Fixes: 4369102 "vulkan/wsi/wayland: Stop caching Wayland displays"
Signed-off-by: Eric Engestrom <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
(cherry picked from commit d515ded)
Fixes: 4373dd3 ("st/va: Support YUV formats in vaCreateSurfaces")
Cc: Drew Davenport <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Michel Dänzer <[email protected]>
(cherry picked from commit 04298a2)
Signed-off-by: Lionel Landwerlin <[email protected]>
Fixes: 00103db ("intel: Fix decoding for partial STATE_BASE_ADDRESS updates.")
Reviewed-by: Kenneth Graunke <[email protected]>
(cherry picked from commit b47a69e)
After commit a9fb331 ("wayland/egl: update surface size on window
resize"), the surface size is updated as soon as the resize is done, and
`update_buffers()` would resize only if the surface size differs from
the attached size.

However, in the case of swrast, there is no resize callback and the
attached size is updated in `dri2_wl_swrast_commit_backbuffer()` prior
to the `swrast_update_buffers()` so the attached size is always up to
date when it reaches `swrast_update_buffers()` and the surface is never
resized.

This can be observed with "totem" using the GDK backend on Wayland (the
default) when running on software rendering:

  $ LIBGL_ALWAYS_SOFTWARE=true CLUTTER_BACKEND=gdk totem

Resizing the window would leave the EGL surface size unchanged.

To avoid the issue, partially revert the part of commit a9fb331 for
`swrast_update_buffers()` and resize on the win size and not the
attached size.

Fixes: a9fb331 - wayland/egl: update surface size on window resize
Signed-off-by: Olivier Fourdan <[email protected]>
CC: Daniel Stone <[email protected]>
CC: Juan A. Suarez Romero <[email protected]>
CC: [email protected]
Reviewed-by: Juan A. Suarez <[email protected]>
(cherry picked from commit 55af17f)
Allocating through Gralloc implies buffers are going to be used
outside the driver. We have special MOCS settings for external BOs and
we probably want to use them here too.

Signed-off-by: Lionel Landwerlin <[email protected]>
Fixes: a1220e7 ("anv/android: Set the BO flags in bo_cache_import (v2)")
Reviewed-by: Tapani Pälli <[email protected]>
(cherry picked from commit 421fa01)
A while back we agreed that having a live/staging branch is beneficial.
Sadly we forgot to document that, so here is my first attempt.

Document the caveat that the branch history is not stable.

CC: Andres Gomez <[email protected]>
CC: Dylan Baker <[email protected]>
CC: Juan A. Suarez Romero <[email protected]>
Signed-off-by: Emil Velikov <[email protected]>
(cherry picked from commit 0a60708870e256432bdef1a22c98b09f83d8a440)
Fixes: d7e0d47 ("nir: Add a bunch of b2[if] optimizations")

Reviewed-by: Dave Airlie <[email protected]>
(cherry picked from commit 9aa3c19)
VK_EXT_conditional_rendering says that copy commands should not be
affected by conditional rendering.

Cc: 18.2 18.3 <[email protected]>
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
(cherry picked from commit 0a0aa2b)

Conflicts:
	src/amd/vulkan/radv_query.c
Building of 32bit Mesa may fail if __SSE__ is not specified.
Added missed dependency from libm.

v2: avoided dependecy on any flag, just link

v3: meson doesn't fail, but have added dependency on libm

CC: Dylan Baker <[email protected]>
CC: Lionel G Landwerlin <[email protected]>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108560
Signed-off-by: Sergii Romantsov <[email protected]>
Reviewed-by: Dylan Baker <[email protected]>
(cherry picked from commit ce837a5)
The GLSL 4.6 specification (section 4.1.14. "Implicit Conversions")
says:

  "There are no implicit array or structure conversions. For
   example, an array of int cannot be implicitly converted to an
   array of float."

So let's add a check in place when assigning array initializers to
implicitly sized arrays, to avoid incorrectly allowing code on the
form:

int[] foo = float[](1.0, 2.0, 3.0)

This fixes the following dEQP test-cases:
- dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.arrays.int_to_float_vertex
- dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.arrays.int_to_float_fragment
- dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.arrays.int_to_uint_vertex
- dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.arrays.int_to_uint_fragment
- dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.arrays.uint_to_float_vertex
- dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.arrays.uint_to_float_fragment
- dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.arrays.int_to_float_vertex
- dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.arrays.int_to_float_fragment
- dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.arrays.int_to_uint_vertex
- dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.arrays.int_to_uint_fragment
- dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.arrays.uint_to_float_vertex
- dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.arrays.uint_to_float_fragment

Signed-off-by: Erik Faye-Lund <[email protected]>
Reviewed-by: Tapani Pälli <[email protected]>
(cherry picked from commit 742dace)
The bind flags defined by mesa/gallium might not always be in sync
with the ones copied to virglrenderer/gallium. Therefore, use the
flags defined in virgl like it is done for all the other calls to
create resources.

Signed-off-by: Gert Wollny <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
(cherry picked from commit b710680)
Inclusive and exclusives scan are missing because older chips
don't have llvm.amdgcn.update.dpp.

This fixes crashes with dEQP-VK.subgroups.arithmetic.*.

CC: [email protected]
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
(cherry picked from commit 0dcd99c)
This fixes various crashes and hangs when using nine's 'thread_submit'
feature.

On 64bit, the thread function's data argument would just be NULL.
On 32bit, the data argument would be garbage depending on the compiler
flags (in my case -march>=core2).

Fixes: f3fa7e3 ("st/nine: Use WINE thread for threadpool")
Cc: [email protected]
Signed-off-by: Andre Heider <[email protected]>
Reviewed-by: Axel Davy <[email protected]>
(cherry picked from commit 10598c9)
Fixes: 1c9c42d ("nir: add varying component packing helpers")

Reviewed-by: Jason Ekstrand <[email protected]>
(cherry picked from commit 9dd737b)
Fixes: 1c9c42d ("nir: add varying component packing helpers")

Reviewed-by: Jason Ekstrand <[email protected]>
(cherry picked from commit a068958)
strassek and others added 13 commits January 22, 2019 10:39
Jira: None.
Test: Android CTS should PASS for below
      android.view.cts.PixelCopyTest#testWideGamutWindowProducerCopyToRGBA16F
Signed-off-by: Kevin Strasser <[email protected]>
Signed-off-by: Kishore Kadiyala <[email protected]>
…ls""

This reverts commit 6b21391.

Andriod ask GL_HALF_FLOAT as supported type to readpixels. This patch
help fix CTS test android.view.cts.PixelCopyTest. However, it may cause
KHR-GLES3.packed_pixels.* regression on Linux. As CTS test is "Must Pass"
on Android, let's keep this patch as specific fix for Android.

Tracked-On: https://jira01.devtools.intel.com/browse/OAM-63305
GLSL ES 320 technically allows #line to have arbitrary expression trees
rather than integer literal constants, unlike the C and C++ preprocessor.
This is likely a completely unused feature that does not make sense.

However, Android irritatingly mandates this useless behavior, so this
patch implements a hack to try and support it.

We handle a single expression:

    #line <line number expression>

but we avoid handling the double expression:

    #line <line number expression> <source string expression>

because this is an ambiguous grammar.  Instead, we handle the case that
wraps both in parenthesis, which is actually well defined:

    #line (<line number expression>) (<source string expression>)

With this change following tests pass:

   dEQP-GLES3.functional.shaders.preprocessor.builtin.line_expression_vertex
   dEQP-GLES3.functional.shaders.preprocessor.builtin.line_expression_fragment
   dEQP-GLES3.functional.shaders.preprocessor.builtin.line_and_file_expression_vertex
   dEQP-GLES3.functional.shaders.preprocessor.builtin.line_and_file_expression_fragment

Signed-off-by: Tapani Pälli <[email protected]>
Signed-off-by: Kenneth Graunke <[email protected]>

BUG=b:33352633
BUG=b:33247335
TEST=affected tests passing on CTS 7.1_r1 sentry

Change-Id: I7afbbb386bd4a582e3f241014a83eaccad1d50d9
Reviewed-on: https://chromium-review.googlesource.com/427305
Tested-by: Haixia Shi <[email protected]>
Reviewed-by: Ilja H. Friedel <[email protected]>
Commit-Queue: Haixia Shi <[email protected]>
Trybot-Ready: Haixia Shi <[email protected]>
GPA requires a null renderer query which disables all rendering. This
feels fairly at odds with the spirit of the INTEL_performance_query
extension.

Note:

Considering the INTEL_blackhole_render implementation(https://www.
khronos.org/registry/OpenGL/extensions/INTEL/INTEL_blackhole_render
.txt, https://patchwork.freedesktop.org/series/40035/)need test case
changes, and also need time to review in upstream, we keep this patch
firstly for urgent project milestone.

Test: Pass mdapi test_GfxDrv_DriverAcceptance test case
      GfxDrv_DriverAcceptanceQuery.GL_NULL_HARDWARE and has no reg issue
Signed-off-by: Landwerlin, Lionel <[email protected]>
This change makes following test pass:
	dEQP-VK.api.info.device.extensions

Test: dEQP-VK.api.info.device.extensions
Signed-off-by: Tapani Pälli <[email protected]>

[strassek: carry this patch until the extensions are whitelisted in CTS]
…UsageANDROID

Android P and earlier expect that the surface supports storage images, and
so many of the tests fail when the framework checks for that support. The
framework also includes various image format and usage combinations that are
invalid for the hardware.

Drop the STORAGE restriction from the HAL and whitelist a pair of
formats so that existing versions of Android can pass these tests.

Fixes:
   dEQP-VK.wsi.android.*

Signed-off-by: Kevin Strasser <[email protected]>

(am from https://patchwork.freedesktop.org/patch/247681/)
Set bit when initializing a device.

Signed-off-by: Rafael Antognolli <[email protected]>
(am from https://patchwork.freedesktop.org/patch/210949/)
Set bit when initializing context.

Signed-off-by: Rafael Antognolli <[email protected]>
(am from https://patchwork.freedesktop.org/patch/210950/)
Gen9 hardware requires some workarounds to disable preemption depending
on the type of primitive being emitted.

We implement this by adding a new atom that tracks BRW_NEW_PRIMITIVE.
Whenever it happens, we check the current type of primitive and
enable/disable object preemption.

For now, we just ignore blorp.  The only primitive it emits is
3DPRIM_RECTLIST, and since it's not listed in the workarounds, we can
safely leave preemption enabled when it happens. Or it will be disabled
by a previous 3DPRIMITIVE, which should be fine too.

Signed-off-by: Rafael Antognolli <[email protected]>
Cc: Kenneth Graunke <[email protected]>
(am from https://patchwork.freedesktop.org/patch/210952/)
…pport

Fixes Skqp's unitTest_EGLImageTest test.

For Intel platforms, we support external textures only for EGLImages
created with EGL_EXT_image_dma_buf_import. This restriction seems to
be Intel specific and not present for other platforms.

While running SKQP test - unitTest_EGLImageTest, GL_INVALID is sent
to the test because of this restriction.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105301
Signed-off-by: Aditya Swarup <[email protected]>
Reviewed-by: Tapani Pälli <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
(cherry picked from commit a5c39ed)
(cover letter https://patchwork.freedesktop.org/series/51006/)

FROMLIST: i965: SIMD32 heuristics debug flag

Added a new DEBUG_HEUR32 flag to INTEL_DEBUG flags for enabling SIMD32
selection heuristics.

(am from https://patchwork.freedesktop.org/patch/256764/)

FROMLIST: i965: SIMD32 heuristics control data

Added a new structure for holding SIMD32 heuristics control data. The
control data itself will be fetched from drirc.

(am from https://patchwork.freedesktop.org/patch/256806/)

FROMLIST: i965: SIMD32 heuristics control data from drirc

To be able to test the heuristics with different parameters, they can be
controlled via environment variables through drirc.

(am from https://patchwork.freedesktop.org/patch/256788/)

FROMLIST: mesa: Helper functions for counting set bits in a mask

(am from https://patchwork.freedesktop.org/patch/256765/)

FROMLIST: i965/fs: Save the instruction count of each dispatch width

The SIMD32 selection heuristics will use this information for deciding whether
SIMD32 shaders should be used.

(am from https://patchwork.freedesktop.org/patch/256793/)

FROMLIST: i965/fs: SIMD32 selection heuristic based on grouped texture fetches

The function goes through the compiled shader and checks how many grouped
texture fetches there are. This is a simple heuristic which gets rid of most
of the regressions when enabling SIMD32 shaders but still retains some of
the benefits.

(am from https://patchwork.freedesktop.org/patch/256798/)

FROMLIST: i965/fs: Enable all SIMD32 heuristics

There are three simple heuristics for SIMD32 shader enabling:

- How many MRTs does the shader write into?
- How many grouped texture fetches does the shader have?
- How many instructions does the SIMD32 shader have compared to the SIMD16
   shader?

For testing purposes, the heuristics can be controlled via these environment
variables:

simd32_heuristic_mrt_check
- Enables MRT write check
- Default: true

simd32_heuristic_max_mrts
- How many MRT writes the heuristic allows
- Default: 1

simd32_heuristic_grouped_check
- Enables grouped texture fetch check
- Default: true

simd32_heuristic_grouped_sends
- How many grouped texture fetches the heuristic allows
- Default: 6

simd32_heuristic_inst_check
- Enables SIMD32 vs. SIMD16 instruction count check
- Default: true

simd32_heuristic_inst_ratio
- SIMD32 vs. SIMD16 instruction count ratio the heuristic allows
- Default: 2.3

SIMD32 shaders will not be compiled also when SIMD16 compilation fails or
spills.

(am from https://patchwork.freedesktop.org/patch/256766/)
Change-Id: I567da1c48e588b1a65c883323e92c2a34822b5d8
Signed-off-by: Yong Yao <[email protected]>
Signed-off-by: Ren Chenglei <[email protected]>
@strassek
Copy link
Contributor Author

@renchenglei Do you have any context on this patch? Does Celadon install 2 versions of libdrm or can we get this name changed back? In general we should find some resolution that works upstream.

Copy link

@sysopenci sysopenci left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Autobuild started from pull-request-changes on this PR.

FAILURE: CheckBug Bad comments/Bugs

For more information, see: /absp/builders/celadon-autobuild/builds/559

@renchenglei
Copy link
Contributor

@strassek, On Android, we have enabled "Treble". It ask to separate system framework and vendor. Some of repo depends on google libdrm and our GFX repo depends on our internal libdrm. So, there are two "libdrm" in Android project. And we have to rename our libdrm to another name.
We would not suggest keeping this changes in our github, not only mesa, there are also other repo need use internal libdrm, and they all keep one bsp patch for this changes. We also could keep this mesa changes with a bsp changes. :)

@strassek
Copy link
Contributor Author

Interesting, thanks for the explanation. If this is a general change to Android that all vendors have to deal with I wonder if we can propose some general fix to the upstream build scripts. Like a configuration option that changes the target to libdrm_vendor.

@tpalli
Copy link
Contributor

tpalli commented Mar 18, 2019

Yeah I had the same thought, ideally it would come from some upper-level like product.mk, USE_CUSTOM_LIBDRM or LIBDRM_PATH. Not sure if there would be other users though :|

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.